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

我将一个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();
            }
        }
    }
阅读 11.2k
1 个回答

楼主可以试试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...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏