微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当我尝试将 html 转换为 pdf

如何解决当我尝试将 html 转换为 pdf

我正在使用 Itext7 将 html 转换为 pdf,但是当我尝试将 html 转换为 pdf 时,这使我无法调用“com.itextpdf.layout.margincollapse.MarginsCollapse.joinMargin(float)”为空

POM:

<!-- https://mvnrepository.com/artifact/com.itextpdf/itext7-core -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itext7-core</artifactId>
        <version>7.1.15</version>
        <type>pom</type>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.itextpdf/html2pdf -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>html2pdf</artifactId>
        <version>3.0.4</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.itextpdf/layout -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>layout</artifactId>
        <version>7.1.15</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.itextpdf/styled-xml-parser -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>styled-xml-parser</artifactId>
        <version>7.1.15</version>
    </dependency>

    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>kernel</artifactId>
        <version>7.1.15</version>
    </dependency>
    <!-- always needed -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>io</artifactId>
        <version>7.1.15</version>
    </dependency>

代码

public static byte[] htmlToPdf(String html) throws IOException,DocumentException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    PdfWriter pdfWriter = new PdfWriter(baos);
    ConverterProperties converterProperties = new ConverterProperties();
    PdfDocument pdfDocument = new PdfDocument(pdfWriter);
    pdfDocument.setDefaultPageSize(new PageSize(PageSize.A3));
    Document document = HtmlConverter.convertTodocument(html,pdfDocument,converterProperties);
    document.close();

    return baos.toByteArray();

}

java.lang.NullPointerException:无法调用“com.itextpdf.layout.margincollapse.MarginsCollapse.joinMargin(float)”,因为“ownCollapseAfter”为空 在 com.itextpdf.layout.margincollapse.MarginsCollapseHandler.endMarginsCollapse(MarginsCollapseHandler.java:256) 在 com.itextpdf.layout.renderer.BlockRenderer.layout(BlockRenderer.java:359) 在 com.itextpdf.layout.renderer.RootRenderer.addChild(RootRenderer.java:136) 在 com.itextpdf.html2pdf.attach.impl.layout.HtmlDocumentRenderer.addChild(HtmlDocumentRenderer.java:176) 在 com.itextpdf.layout.RootElement.createAndAddRendererSubTree(RootElement.java:377) 在 com.itextpdf.layout.RootElement.add(RootElement.java:106) 在 com.itextpdf.layout.Document.add(Document.java:160) 在 com.itextpdf.html2pdf.attach.impl.tags.HtmlTagWorker.processBlockChild(HtmlTagWorker.java:189) 在 com.itextpdf.html2pdf.attach.impl.tags.HtmlTagWorker.processtagChild(HtmlTagWorker.java:155) 在 com.itextpdf.html2pdf.attach.impl.tags.BodyTagWorker.processtagChild(BodyTagWorker.java:127) 在 com.itextpdf.html2pdf.attach.impl.DefaultHtmlProcessor.visit(DefaultHtmlProcessor.java:356) 在 com.itextpdf.html2pdf.attach.impl.DefaultHtmlProcessor.visit(DefaultHtmlProcessor.java:338) 在 com.itextpdf.html2pdf.attach.impl.DefaultHtmlProcessor.visit(DefaultHtmlProcessor.java:338) 在 com.itextpdf.html2pdf.attach.impl.DefaultHtmlProcessor.processDocument(DefaultHtmlProcessor.java:253) 在 com.itextpdf.html2pdf.attach.Attacher.attach(Attacher.java:78) 在 com.itextpdf.html2pdf.HtmlConverter.convertTodocument(HtmlConverter.java:325) 在 utiles.PDF.htmlToPdf(PDF.java:22)

我做错了什么?

更新:

我更改了 css 并开始工作。

这个:

.header {
     display: flex; 
     flex-direction: row;
     justify-content: center;
     align-items: center;
    
    }

到:

.header {
      text-align: center;
     align-items: center;     
     margin: 0 0 20px 20px;
    
    }

解决方法

问题出在 html 中,我更改了 css 并起作用了。

这个:

.header {
  display: flex; 
  flex-direction: row;
  justify-content: center;
  align-items: center;    
}

到:

.header {
  text-align: center;
  align-items: center;     
  margin: 0 0 20px 20px;

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。