itextsharp 5.3.5 と xml ワーカーを使用して、html ページから PDF を生成しています。私の html ページには、div タグと font タグを使用して html を生成するリッチ テキスト エディターがあります。私のフィールドによって生成された以下の html をご覧ください。
<html xml:space="preserve" xmlns="http://www.w3.org/1999/xhtml">
<div>
this text is not <strong>working</strong>
</div>
<div>
<font color="#ff0000">text in Red now</font>.
</div>
<div>
<font face="Tahoma" size="5">a font thoma and size 5.</font>
</div>
<div>
<font face="Tahoma" size="5">
<font face="Arial" size="3">here is a link to </font>
<a href="http://www.google.co.uk/">
<font face="Arial" size="3">Google</font>
</a>.
</font>
</div>
</html>
代わりに html ワーカーを使用すると、上記の html が完全に pdf に変換されることがわかりました。しかし、xml ワーカーではありません。うまくいきませんでした。
また、いくつかのタグを変更して以下のように html を更新すると、xml ワーカーがそれを pdf に変換することもわかりました。
<p>this text is not <strong>working</strong></p>
<span style="color:#ff0000">text in Red now</span>.
<br />
<span style="font-family:Tahoma; font-size:5">a font thoma and size 5.</span>
<br/>
<span style="font-family:Tahoma; font-size:5">
<span style="font-family:Arial; font-size:3">here is a link to </span><a href="http://www.google.co.uk/">
<span style="font-family:Arial; font-size:3">Google</span>
</a>.
</span>
<br />
明らかに、実行時にhtmlタグを変更することはできません。それは大きな混乱になります。私のコードは以下の通りです。
StringReader html = new StringReader(htmlString);
var xmlWorkerFontProvider = new XMLWorkerFontProvider();
var cssAppliers = new CssAppliersImpl(xmlWorkerFontProvider);
CssFilesImpl cssFiles = new CssFilesImpl();
cssFiles.Add(XMLWorkerHelper.GetInstance().GetDefaultCSS());
StyleAttrCSSResolver cssRevolver = new StyleAttrCSSResolver();
HtmlPipelineContext htmlContext = new HtmlPipelineContext(cssAppliers);
htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory());
PdfWriterPipeline pdfWriterPipeline = new PdfWriterPipeline(document, writer);
IPipeline pipeline = new CssResolverPipeline(cssRevolver, new HtmlPipeline(htmlContext, pdfWriterPipeline));
XMLWorker worker = new XMLWorker(pipeline, true);
XMLParser xmlParser = new XMLParser(worker);
xmlParser.Parse(html);
xml ワーカーを使用して上記の html を pdf に変換する方法を教えていただければ幸いです。
さらに情報が必要な場合は、お知らせください。