当前位置: 首页 > 知识库问答 >
问题:

使用iText将HTML转换为PDF时出现空指针异常

祁烨
2023-03-14

当HTML代码适合正在生成的一个页面时,我使用iText HTML到pdf,但当HTML代码太大时,它无法工作使用Java代码HTMLConverter.ConvertTopDF(htmlFile,PDFile);使用itext7 HTML2PDF-2.1.6是版本
Java代码

package com.test;

import java.io.File;

import com.itextpdf.html2pdf.HtmlConverter;

public class html2pdf {
    public static void main(String[] args) throws Exception {
        String ws = "/workspace/wintmp/u02/ffsdev/templates/";
        File htmlFile = new File(ws+"QUOTE001.html.tpl.html");
        
        File pdfFile = new File(ws+"QUOTE001.pdf");
        
        HtmlConverter.convertToPdf(htmlFile, pdfFile);

    }
}

下面是工作的HTML代码

   
https://jsfiddle.net/praveenrk/L0nzbu7y/
   https://jsfiddle.net/praveenrk/0rvL2gx9/

例外情况是

Exception in thread "main" java.lang.NullPointerException
    at com.itextpdf.layout.renderer.AbstractRenderer.getOccupiedAreaBBox(AbstractRenderer.java:1010)
    at com.itextpdf.layout.renderer.AbstractRenderer.getBorderAreaBBox(AbstractRenderer.java:1020)
    at com.itextpdf.layout.renderer.AbstractRenderer.drawBorder(AbstractRenderer.java:883)
    at com.itextpdf.layout.renderer.TableRenderer.drawBorder(TableRenderer.java:1345)
    at com.itextpdf.layout.renderer.TableRenderer.draw(TableRenderer.java:1093)
    at com.itextpdf.layout.renderer.AbstractRenderer.drawChildren(AbstractRenderer.java:855)
    at com.itextpdf.layout.renderer.BlockRenderer.draw(BlockRenderer.java:580)
    at com.itextpdf.layout.renderer.DocumentRenderer.flushSingleRenderer(DocumentRenderer.java:147)
    at com.itextpdf.layout.renderer.RootRenderer.addChild(RootRenderer.java:290)
    at com.itextpdf.html2pdf.attach.impl.layout.HtmlDocumentRenderer.addChild(HtmlDocumentRenderer.java:185)
    at com.itextpdf.layout.RootElement.createAndAddRendererSubTree(RootElement.java:377)
    at com.itextpdf.layout.RootElement.add(RootElement.java:106)
    at com.itextpdf.layout.Document.add(Document.java:160)
    at com.itextpdf.html2pdf.attach.impl.tags.HtmlTagWorker.processBlockChild(HtmlTagWorker.java:188)
    at com.itextpdf.html2pdf.attach.impl.tags.HtmlTagWorker.processTagChild(HtmlTagWorker.java:154)
    at com.itextpdf.html2pdf.attach.impl.tags.BodyTagWorker.processTagChild(BodyTagWorker.java:111)
    at com.itextpdf.html2pdf.attach.impl.DefaultHtmlProcessor.visit(DefaultHtmlProcessor.java:353)
    at com.itextpdf.html2pdf.attach.impl.DefaultHtmlProcessor.visit(DefaultHtmlProcessor.java:337)
    at com.itextpdf.html2pdf.HtmlConverter.convertToPdf(HtmlConverter.java:209)
    at com.itextpdf.html2pdf.HtmlConverter.convertToPdf(HtmlConverter.java:183)
    at com.itextpdf.html2pdf.HtmlConverter.convertToPdf(HtmlConverter.java:161)
    at com.test.html2pdf.main(html2pdf.java:14)

共有1个答案

汪跃
2023-03-14

这里有问题的CSS是style=“position:absolute;top:100px;”。对于一个元素定位在一个页面上来说,您的身体是相当大的,并且使用分页符的绝对定位是基于意见的事情。虽然iText本可以更优雅地处理这种情况,但您仍可以尝试添加一些间距(例如边距)的不同方法,这将为您提供诀窍。

当删除上面指出的有问题的CSS时,我得到的视觉结果是:

 类似资料:
  • 我想用iText将带有图像的html文件转换成pdf格式。我在这里提供我的消息来源。 请帮助我如何使用iText将带有图像的html文件转换为pdf格式。如果没有图像或者硬编码图像路径,我可以转换html文件。提前致谢

  • 当尝试使用将文件转换为文件时,会出现以下异常: RuntimeException:Scanline必须以EOL代码字开头。在com.itextpdf.text.pdf.codec.tifffaxdecoder.readeol(tifffaxdecoder.java:1303),在com.itextpdf.text.pdf.codec.tifffaxdecoder.decode2d(tifffaxd

  • 将html文件转换为pdf文件。我有html文件,css文件和js文件在一个文件夹,我如何转换index.html创建pdf使用Java的itext。有谁能帮我解决这个问题。有没有样本项目?

  • 我正在尝试将HTML转换为PDF。首先,我从下面的链接将我的HTML代码转换为XHTML。http://www.cruto.com/resources/code-generators/code-converters/html-to-xhtml.asp 然后,为了测试它,我用生成的XHTML代码创建了一个HTML文件,并成功地显示在浏览器上。之后,我尝试用下面的java代码将HTML文件转换为PDF

  • > 单击 受保护得空onPrepareDialog(int id,Dialog Dialog) 受保护的对话框onCreateDialog(int id) 如果我对timepickerdialog代码做了什么错误,请告诉我。

  • 我想使用itext 2.1.7将一个html页面转换为pdf。我已经使用HTMLWorker来转换html文件,但它没有采用我在html中使用的内联css。下面是我的代码片段。谁能帮助解决这个问题… 提前道谢!