1

我在 XMLWorker 中使用一个非常简单的 CSS 将 HTML 渲染为 PDF。这是CSS:

body { font-family: "Times New Roman;" } 

p.testoJustify { 
text-align:justify; 
text-justify:inter-word; 
} 

问题出在“.testoJustify”选择器上。当我使用这个选择器时,生成的 PDF 没有对齐文本,而没有选择器,所以只有 p {...},它工作正常!

java代码如下:

FontFactory.registerDirectories(); 

XMLWorkerFontProvider fontProvider = new XMLWorkerFontProvider(); 
CssAppliers cssAppliers = new CssAppliersImpl(fontProvider); 
HtmlPipelineContext htmlContext = new HtmlPipelineContext(cssAppliers); 
htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory()); 

CSSResolver cssResolver =XMLWorkerHelper.getInstance().getDefaultCssResolver(true); 
cssResolver.addCss(Context.pdfCss, true); 
Pipeline<?> pipeline = new CssResolverPipeline(cssResolver, 
                                                new HtmlPipeline(htmlContext, 
                                                  new PdfWriterPipeline(pdfDocument, pdfWriter))); 

这是指向 JSFiddle 的链接,显示 CSS 已更正应用于 HTML 页面,但不是 XMLWorker:

http://jsfiddle.net/6vrMP/

4

1 回答 1

1

我一直在挖掘 XmlWorker 的源代码,不支持复杂的选择器

从技术上讲,您有两种方法:

代替

     <table class="a">
       <tr>
          <td>
          <td>
       </tr>
     </table>

因为你不会写

.a td { smth }

如果您的 html 不是太大,我会选择第二种方法。

于 2014-01-22T09:48:26.803 回答