Ich versuche, einen Teil meiner Webseite mit iTextSharp in PDF zu konvertieren, und während die PDF-Generierung ordnungsgemäß funktioniert, keine der CSS-Stile angewendet werden. Ich habe versucht, die Stile nacheinander anzuwenden, aber das scheint nicht zu funktionieren. Das ist, was ich bisher gefunden habe:CSS-Stile nicht auf PDF mit 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();
}
Fehle ich etwas? Ich habe mit HTMLWorker angefangen und bin zu XMLWorker gewechselt, aber ich glaube, ich verwirre mich jetzt nur noch. Hilfe wäre willkommen.
attemp # 2
Danke für die Antwort! Das ist, was ich mir ausgedacht habe, aber es funktioniert nicht. Mein Inhalt erscheint jetzt überhaupt nicht mehr in der PDF und ich bin mir nicht sicher warum. Irgendwelche Gedanken?
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();
}
Bin ich nah, oder fehlt mir der Punkt vollständig?
Erste Frage, korrekt formatierter Code, zeigt, was Sie versucht haben, eine kurze genaue Beschreibung. Das ist sicher selten. – gunr2171
Sie haben es gelöst? Bitte posten Sie Ihre Antwort oder Anleitung, was zu tun ist? Ich habe die gleiche Situation wie du .... – micronyks