我们正在使用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();
在这个库中有这么多的utils的例子,https://github.com/itext/i5js-sandbox/tree/e53379c073e55def4fb0736778177efd8d0932c9 看的src/main/JAVA/sandbox.xmlworker –
找不到任何例子明确使无线电/复选框从HTML被正确渲染到生成的pdf – Ashish