2017-05-04 48 views
0

我们正在使用Itext和xmlworker 5.5.5将HTML转换为PDF。以下是代码。问题在于我们无法看到用pdf呈现的广播或复选框。复选框和收音机盒需要额外的东西吗?HTML to PDF使用Itext(复选框,无线电)未呈现

cssStr - 包含所有的CSS类。它的字符串。

 // step 1 
     Document document = new Document(); 
     // step 2 
     PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(destFile)); 
     writer.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 

     // step 3 
     document.open(); 
     // step 4 - Styles 
     CSSResolver cssResolver = new StyleAttrCSSResolver(); 
     CssFile cssFile = XMLWorkerHelper.getCSS(new ByteArrayInputStream(cssStr.getBytes())); 
     cssResolver.addCss(cssFile); 

     XMLWorkerFontProvider fontProvider = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS); 
     fontProvider.register(OLTContext.getWebappDir()+"/bs/fonts/ARIALUNI.TTF", BaseFont.IDENTITY_H); 
     CssAppliers cssAppliers = new CssAppliersImpl(fontProvider); 
     HtmlPipelineContext htmlContext = new HtmlPipelineContext(cssAppliers); 
     htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory()); 

     // Pipelines 
     PdfWriterPipeline pdf = new PdfWriterPipeline(document, writer); 
     HtmlPipeline html = new HtmlPipeline(htmlContext, pdf); 
     CssResolverPipeline css = new CssResolverPipeline(cssResolver, html); 

     // XML Worker 
     XMLWorker worker = new XMLWorker(css, true); 
     XMLParser p = new XMLParser(worker); 
     ByteArrayInputStream stream = new ByteArrayInputStream(printable.getBytes("UTF-8")); 
     p.parse(stream, Charset.forName("UTF-8")); 

     // step 5 
     document.close(); 
+0

在这个库中有这么多的utils的例子,https://github.com/itext/i5js-sandbox/tree/e53379c073e55def4fb0736778177efd8d0932c9 看的src/main/JAVA/sandbox.xmlworker –

+0

找不到任何例子明确使无线电/复选框从HTML被正确渲染到生成的pdf – Ashish

回答

0

除非您有很好的理由使用XMLWorker,否则我建议您尝试pdfHtml。这是我们为iText7发布的一款插件,它支持HTML5和CSS3。

试用许可证可以免费在iText网站上获得。而且,pdfHtml的下一个版本应该是AGPL许可和开源(我们目前正在做一些最终的代码清理)。

+0

是Addon可用于itext5? – Ashish

+1

pdfHtml(据我所知)仅适用于iText7。 –

+0

- 我们需要支持RTL语言的i18支持。 – Ashish

1

另外我尝试了pdfHtml的试用许可的itext 7。收音机&复选框或基本上HTML的任何输入元素都不会被渲染。以下代码

LicenseKey.loadLicenseFile(“/ Users/ashish/server-ws/workspac e/Test/lib/itextkey-0.xml”); HtmlConverter.convertToPdf(新文件(HTML),新文件(DEST));