如何使用 Java 将 HTML 内容转换为 PDF 而不丢失格式?

2024-05-12

我有一些 HTML 内容(包括格式化标签,例如strong、图像等)。在我的 Java 代码中,我想将此 HTML 内容转换为 PDF 文档,而不丢失 HTML 格式。

有没有办法用 Java 来实现(使用 iText 或任何其他库)?


I used ITextRenderer来自飞碟 https://code.google.com/archive/p/flying-saucer/项目。

这是一个简短的、独立的、有效的示例。 就我而言,我想稍后将字节流式传输到电子邮件附件中。

因此,在示例中,我将其写入文件纯粹是为了演示这个问题。这是Java 8。

import com.lowagie.text.DocumentException;
import org.apache.commons.io.FileUtils;
import org.xhtmlrenderer.pdf.ITextRenderer;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;

public class So4712641 {

  public static void main(String... args) throws DocumentException, IOException {
    FileUtils.writeByteArrayToFile(new File("So4712641.pdf"), toPdf("<b>You gotta walk and don't look back</b>"));
  }

  /**
   * Generate a PDF document
   * @param html HTML as a string
   * @return bytes of PDF document
   */
  private static byte[] toPdf(String html) throws DocumentException, IOException {
    final ITextRenderer renderer = new ITextRenderer();
    renderer.setDocumentFromString(html);
    renderer.layout();
    try (ByteArrayOutputStream fos = new ByteArrayOutputStream(html.length())) {
      renderer.createPDF(fos);
      return fos.toByteArray();
    }
  }
}

这给了我

为了完整起见,这里是我的 Maven 的相关部分pom.xml

<dependencies>
    <dependency>
        <groupId>org.xhtmlrenderer</groupId>
        <artifactId>flying-saucer-pdf</artifactId>
        <version>9.0.8</version>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
    </dependency>
</dependencies>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Java 将 HTML 内容转换为 PDF 而不丢失格式? 的相关文章

随机推荐