Java 实现 Html 转 pdf

该博客介绍了使用 iTextPDF 和 XMLWorker 库将 HTML 转换成 PDF 的过程,指出在转换过程中遇到的问题,如 JS 不起作用、CSS 属性不被正确解析、表格样式丢失等。建议直接从内容生成 PDF 以获得更好的排版效果。
摘要由CSDN通过智能技术生成

本博客主要演示使用 itextpdf-5.4.3.jar 和 xmlworker-5.4.3.jar 把 Html 转换成 pdf 文件。但是效果还不如直接用内容生成的 pdf 。戳我拿 jar 包
本 Demo 涉及了 html、css、js,不过 js 并不起作用 ,所以涉及 js 赋值的 html 文件还是别转换,直接去生成吧。可参阅上篇博客 Java 生成 pdf ;另外,css 文件似乎无法很好的转换。
先看一下网页效果和 pdf 文件效果:
网页效果pdf 文件效果

  1. 第一个表的软件名称和公司名称是空的,网页是通过 js 文件赋值,所以转换时无效。
  2. 表格整体没有居中,网页是通过 margin 实现的,但 pdf 没有显示效果。
  3. css 设置的 line-height,网页是正常显示效果的。在 pdf 文件中,表格前两行可能因为内容是单行的,没有显示行高效果。在公司简介一栏,内容有两行是,显示了行高效果,但是,这也太丑了吧。

虽然通过直接转换可以更简单地生成 pdf 文件,但是效果有待商榷。我还是推荐直接把内容直接生成 pdf 文件,虽然代码多了点,排版效果却好了很多

代码如下:
html 代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"></meta>
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="html2pdf.css"></link>
<script type="text/javascript" src="html2pdf.js"></s
Java可以使用多种库或工具来实现HTML换为PDF,以下是其中一些常用的方法: 1. 使用iTextiText是一个流行的Java PDF库,可以使用它来生成PDF文档。可以使用iTextHTML换为PDF,以下是一个简单的示例: ```java import com.itextpdf.text.Document; import com.itextpdf.text.pdf.PdfWriter; import com.itextpdf.tool.xml.XMLWorkerHelper; import java.io.FileOutputStream; import java.io.StringReader; public class HtmlToPdf { public static void main(String[] args) throws Exception { // HTML内容 String html = "<html><body><h1>Hello World!</h1></body></html>"; // 创建PDF文档 Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("output.pdf")); document.open(); // 将HTML换为PDF XMLWorkerHelper.getInstance().parseXHtml(writer, document, new StringReader(html)); // 关闭文档 document.close(); } } ``` 2. 使用Flying Saucer库 Flying Saucer是一个基于iTextJava库,可以将HTML和CSS换为PDF。以下是一个简单的示例: ```java import org.xhtmlrenderer.pdf.ITextRenderer; import java.io.FileOutputStream; public class HtmlToPdf { public static void main(String[] args) throws Exception { // HTML内容 String html = "<html><body><h1>Hello World!</h1></body></html>"; // 创建PDF文档 FileOutputStream out = new FileOutputStream("output.pdf"); ITextRenderer renderer = new ITextRenderer(); renderer.setDocumentFromString(html); renderer.layout(); renderer.createPDF(out); // 关闭输出流 out.close(); } } ``` 3. 使用wkhtmltopdf工具 wkhtmltopdf是一个开源的命令行工具,可以将HTML和CSS换为PDF。可以使用Java的Runtime类或ProcessBuilder类来执行wkhtmltopdf命令。以下是一个简单的示例: ```java import java.io.File; public class HtmlToPdf { public static void main(String[] args) throws Exception { // HTML文件路径 String htmlFile = "input.html"; // PDF文件路径 String pdfFile = "output.pdf"; // 执行wkhtmltopdf命令 String[] cmd = {"wkhtmltopdf", htmlFile, pdfFile}; ProcessBuilder pb = new ProcessBuilder(cmd); pb.directory(new File(".")); Process p = pb.start(); int exitCode = p.waitFor(); // 检查命令是否执行成功 if (exitCode == 0) { System.out.println("PDF文件已生成"); } else { System.err.println("换过程出现错误"); } } } ``` 以上是几种常见的Java实现HTMLPDF的方法,具体选择哪一种取决于你的需求和偏好。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值