使用itext将html转成PDF,PDF空白的问题。

发布于 2022-09-04 04:06:08 字数 1556 浏览 27 评论 0

我将一个html转换成Pdf,结果转出的PDF是空白的。

经过排查,导致的原因是里面有一个最外层的div设置了CSS样式为width: 800px;

这个数字如果设置成660px就没有问题,再大就会空白。

我使用的itext是5.5.6版本。请问各位大神,这是为什么?或者,能否帮忙分析一下?

Java代码如下

public static byte[] htmlToPdf(String html) throws Exception {

        ByteArrayInputStream htmlin = null;
        Document document = null;
        PdfWriter writer = null;
        ByteArrayOutputStream pdfout = null;

        CloudSignFontProvider fontProvider = new CloudSignFontProvider();

        try {

            pdfout = new ByteArrayOutputStream();
            htmlin = new ByteArrayInputStream(html.getBytes());
            document = new Document(PageSize.A4, 50, 50, 50, 50);
            writer = PdfWriter.getInstance(document, pdfout);
            document.open();
            XMLWorkerHelper.getInstance().parseXHtml(writer, document, htmlin, null, fontProvider);
            writer.flush();
            pdfout.flush();

            document.close();
            document = null;

            byte[] pdfdata = pdfout.toByteArray();
            return pdfdata;
        } catch (Exception ex) {
            logger.error(ex.getMessage(), ex);
            throw ex;
        } finally {
            if (writer != null) {
                writer.close();
            }
            if (document != null) {
                document.close();
            }
            if (htmlin != null) {
                htmlin.close();
            }
            if (pdfout != null) {
                pdfout.close();
            }
        }
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

高速公鹿 2022-09-11 04:06:08

楼主可以试试Free Spire.PDF for Java免费控件,它支持将html转换成pdf,代码简单易懂,转换效果很好。以下代码供参考。

import com.spire.pdf.graphics.PdfMargins;
import com.spire.pdf.htmlconverter.qt.HtmlConverter;
import com.spire.pdf.htmlconverter.qt.Size;

public class HtmltoPDF {
    public static void main(String[] args) {
        //定义需要转换的HTML 
        String url = "https://www.e-iceblue.cn/";
        String fileName = "Result.pdf";
        //设置插件本地地址
        String pluginPath = "D:/Qt/plugins_32";
        HtmlConverter.setPluginPath(pluginPath);
        //转换到PDF并设置PDF尺寸
        HtmlConverter.convert(url, fileName, true, 1000000, new Size(600f, 900f), new PdfMargins(0));
    }
}

产品包获取链接:https://www.e-iceblue.cn/Down...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文