目前我找到html转pdf页面样式错乱最少的工具,可以直接将html页面转pdf。
因为我的html页面需要动态数据,所以我是先生成html字符串,将字符串转html页面再导出pdf。
一:下载安装wkhtmltopdf工具
官网下载地址:https://wkhtmltopdf.org/downloads.html
二:JAVA后台代码
创建HtmlToPdfInterceptor.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class HtmlToPdfInterceptor extends Thread {
private InputStream is;
public HtmlToPdfInterceptor(InputStream is) {
this.is = is;
}
@Override
public void run() {
try {
InputStreamReader isr = new InputStreamReader(is, "utf-8");
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line.toString()); // 输出内容
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
创建HtmlToPdfUtil.java
import java.io.File;
public class HtmlToPdfUtil {
private static Logger logger = LoggerFactory.getLogger(HtmlToPdfUtil1.class);
// wkhtmltopdf在windows系统中的路径
private static String WKHTMLTOPDF_WINDOWS_URL = "E:\\wkhtmltopdf\\bin\\wkhtmltopdf.exe";
// wkhtmltopdf在linux系统中的路径
private static String WKHTMLTOPDF_LINUX_URL= "/usr/local/bin/wkhtmltopdf";
/**
* 生成PDF文件
* @param htmlFilePath html地址
* @param destPath 保存pdf地址
* @return
*/
public static boolean convert(String htmlFilePath, String destPath) {
File file = new File(destPath);
File parent = file.getParentFile();
// 如果pdf保存路径不存在,则创建路径
if (!parent.exists()) {
parent.mkdirs();
}
StringBuilder cmd = new StringBuilder();
String toPdfTool = ""</