首页
编程随笔
Java笔记
Html/Css/Js
Android
后端笔记
服务器搭建
BUG收集
Java异常
Android异常
在线工具
Json格式化
编码/解码
Epub在线编辑
登录
发布文章
个人文章
退出登录
首页
技术教程
BUG收集
在线工具
资源下载
登录
发布文章
退出登录
搜索
当前位置:
首页
-
博客
- 正文
关闭
使用wkhtmltopdf将html转成pdf
更新时间:2022-06-26 16:20:21
阅读数:792
发布者:落幕
### 1、特点 Wkhtmltopdf可直接把浏览器中浏览的网页转换成一个pdf,他是一个把html页面转换成pdf的软件(需要安装在服务器上)。使用时可通过java代码调用cmd指令完成网页转换为pdf的功能。 官网地址: https://wkhtmltopdf.org/downloads.html ### 2、Linux下的使用 无需任何安装,现在可以开始直接使用了。 1、先将刚才下载的包解压:tar -xvf wkhtmltox-0.12.4_linux-generic-amd64.tar.xz 2、然后运行/data/wkhtmltox/bin/wkhtmltopdf www.baidu.com 1.pdf ### 3、windows下的使用 进入wkhtmltopdf安装的bin目录下,执行 wkhtmltopdf.exe www.baidu.com 1.pdf ### 4、java代码 HtmlToPdfInterceptor.java ```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); //输出内容 } } catch (IOException e) { e.printStackTrace(); } } } ``` HtmlToPdf.java ```java import java.io.File; public class HtmlToPdf { // wkhtmltopdf在系统中的路径,需要换成自己的目录地址 //private static String toPdfcmd = "wkhtmltopdf-amd64"; private static String toPdfcmd = "D:\\software\\wkhtmltopdf\\bin\\wkhtmltopdf.exe"; /** * html转pdf * * @param srcPath * html路径,可以是硬盘上的路径,也可以是网络路径 * @param destPath * pdf保存路径 * @return 转换成功返回true */ public static boolean convert(String srcPath, String destPath) { System.out.println("--------html转pdf start----------"); File file = new File(destPath); File parent = file.getParentFile(); // 如果pdf保存路径不存在,则创建路径 if (!parent.exists()) { parent.mkdirs(); } StringBuilder cmd = new StringBuilder(); cmd.append(toPdfcmd); cmd.append(" "); cmd.append(" --page-size A4 ");//默认的页面尺寸是 A4 指定你想要的页面尺寸,如:A3,Letter 和 Legal等 cmd.append(" --minimum-font-size 18 ");// 字体大小调整 // wkhtmltopdf-amd64 --page-size A3 iversion.html iversion.pdf // cmd.append(" --footer-html file:///" + "https://www.speechb.com");// (添加一个HTML页脚,后面是网址) /* cmd.append(" --header-line");// 页眉下面的线 cmd.append(" --header-center 这里是页眉这里是页眉这里是页眉这里是页眉 ");//页眉中间内容 cmd.append(" --margin-top 3cm ");// 设置页面上边距 (default 10mm) cmd.append(" --header-html file:///" + "https://blog.csdn.net/x6582026/article/details/53835835");// (添加一个HTML页眉,后面是网址) cmd.append(" --header-spacing 5 ");// (设置页眉和内容的距离,默认0) cmd.append(" --footer-center 第[page]页/共[topage]页");//设置在中心位置的页脚内容 //cmd.append(" --footer-html file:///" + "https://blog.csdn.net/x6582026/article/details/53835835");// (添加一个HTML页脚,后面是网址) cmd.append(" --footer-line");// * 显示一条线在页脚内容上) cmd.append(" --footer-spacing 5 ");// (设置页脚和内容的距离)*/ cmd.append(srcPath); cmd.append(" "); cmd.append(destPath); System.out.println("--------html转pdf cmd----------"+cmd.toString()); boolean result = true; try { Process proc = Runtime.getRuntime().exec(cmd.toString()); HtmlToPdfInterceptor error = new HtmlToPdfInterceptor(proc.getErrorStream()); HtmlToPdfInterceptor output = new HtmlToPdfInterceptor(proc.getInputStream()); error.start(); output.start(); proc.waitFor(); } catch (Exception e) { result = false; e.printStackTrace(); } return result; } public static void main(String[] args) { convert("www.blog.speechb.com", "1.pdf"); } } ```