HTML 使用 Itext(复选框、单选框)未呈现的 PDF

HTML to PDF using Itext (checkbox, radio ) not rendered

我们正在使用 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();

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

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

我还尝试了带有 pdfHtml 试用许可证的 itext 7。单选框和复选框或基本上 HTML 的任何输入元素根本不会呈现。以下代码

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