2

我正在使用 itextsharp 5.3.5 和 xml worker 从我的 html 页面生成 PDF。在我的 html 页面中,我有一个富文本编辑器,它使用 div 标签和字体标签生成 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 worker 代替,那么它将上面的 html 完美地转换为 pdf。但不是 xml 工作者。它只是没有用。

我还发现,如果我更改一些标签并像下面那样更新我的 html,那么 xml worker 会将其转换为 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 worker 将上述 html 转换为 pdf 格式。

如果您需要任何进一步的信息,请告诉我。

4

0 回答 0