Sto tentando di convertire una parte della mia pagina Web in pdf utilizzando iTextSharp e mentre la generazione di PDF funziona correttamente, nessuno degli stili CSS viene applicato. Ho provato ad applicare gli stili uno alla volta, ma non sembra funzionare. Questo è quello che ho inventato finora:Gli stili CSS non vengono applicati a PDF con iTextSharp
//Get the portion of the page to convert.
StringBuilder sb = new StringBuilder();
print_div.RenderControl(new HtmlTextWriter(new StringWriter(sb)));
string html = sb.ToString();
//Generate a random filename to use for the pdf
Guid random_guid;
random_guid = Guid.NewGuid();
string fileName = random_guid.ToString() + ".pdf";
string filename_with_folder = @"pdf\sl_" + fileName;
string fullFilePath = System.IO.Path.Combine(Request.PhysicalApplicationPath, filename_with_folder);
using (Document doc = new Document())
{
// Create the pdf
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(fullFilePath, FileMode.Create));
doc.Open();
try
{
//Set the font size for all elements
StyleSheet styles = new StyleSheet();
styles.LoadStyle("body", "fontsize", "8px");
//Write the content to the pdf document
StringReader sr = new StringReader(html);
XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, sr);
}
catch (Exception ex)
{
}
doc.Close();
}
Mi manca qualcosa? Ho iniziato a utilizzare HTMLWorker e sono passato a XMLWorker, ma ora mi sto confondendo. L'aiuto sarebbe apprezzato
attemp # 2
Grazie per la risposta! Questo è quello che ho trovato, ma non funziona. Il mio contenuto non appare nel pdf a tutti ora, e non sono sicuro del perché. qualche idea?
using (Document doc = new Document())
{
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(fullFilePath, FileMode.Create));
doc.Open();
// CSS
var cssResolver = new StyleAttrCSSResolver();
var cssFile = XMLWorkerHelper.GetCSS(new FileStream(HttpContext.Current.Server.MapPath("~/css/print.css"), FileMode.Open));
cssResolver.AddCss(cssFile);
// HTML
CssAppliers ca = new CssAppliersImpl();
HtmlPipelineContext hpc = new HtmlPipelineContext(ca);
hpc.SetTagFactory(Tags.GetHtmlTagProcessorFactory());
// PIPELINES
PdfWriterPipeline pdf = new PdfWriterPipeline(doc, writer);
HtmlPipeline htmlPipe = new HtmlPipeline(hpc, pdf);
CssResolverPipeline css = new CssResolverPipeline(cssResolver, htmlPipe);
XMLWorker worker = new XMLWorker(css, true);
XMLParser p = new XMLParser(worker);
StringReader sr = new StringReader(html);
p.Parse(sr);
doc.Close();
}
Sono chiuso o mi manca completamente il punto?
Prima domanda, codice formattato correttamente, che mostra ciò che hai provato, una descrizione breve e accurata. Questo è raro. – gunr2171
Hai risolto? Per favore pubblica la tua risposta o guida cosa fare? Sto avendo la stessa situazione come te .... – micronyks