2

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 に変換する方法を教えていただければ幸いです。

さらに情報が必要な場合は、お知らせください。

4

0 に答える 0