我们正在使用Itext和xmlworker 5.5.5将HTML转换为PDF。以下是代码。问题是我们无法看到pdf上呈现的广播或复选框。复选框和收音机盒还需要哪些其他东西?
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 :(得分:2)
我也尝试了pdfHtml的试用许可证的itext 7。广播电台复选框或基本上HTML的任何输入元素都不会被渲染。以下代码
LicenseKey.loadLicenseFile(" /用户/与Ashish /服务器WS / workspac E /测试/ LIB / itextkey-0.xml&#34); HtmlConverter.convertToPdf(新文件(HTML),新文件(DEST));
答案 1 :(得分:0)
除非您有充分的理由使用XMLWorker,否则我建议您尝试使用pdfHtml。它是我们为iText7发布的插件,它支持HTML5和CSS3。
可以在iText网站免费获得试用许可证。 pdfHtml的下一个版本应该是AGPL许可和开源(我们目前正在做一些最终的代码清理)。