iTextSharpを使用してWebページの一部をpdfに変換しようとしていますが、pdf生成が正しく機能している間にCSSスタイルが適用されていません。私はスタイルを一度に1つずつ適用しようとしましたが、それはうまくいかないようです。これはこれまで私が思い付いたことです:iTextSharpでCSSスタイルが適用されない
//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();
}
私には何かが欠けていますか?私はHTMLWorkerを使い始め、XMLWorkerに切り替えましたが、今は自分自身を混乱させるだけです。ヘルプをいただければ幸いです。返信用
ATTEMP#2
ありがとう!これは私が思いついたものですが、うまくいきません。私のコンテンツは今のところpdfには表示されません。理由はわかりません。何かご意見は?
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();
}
私は閉じるか、ポイントを完全に紛失していますか?
最初の質問、正しくフォーマットされたコード、試したことを示す、正確な短い説明。これはまれです。 – gunr2171
あなたはそれを解決しましたか?あなたの答えを投稿したり、何をすべきか指導してください。私はあなたのような状況にあります.... – micronyks