使用wkhtmltopdf将html转换成pdf

  • 安装wkhtmltopdf
    • windows下载
    • window安装
    • linux安装
  • 使用java调用wkhtmltopdf
  • 注意

安装wkhtmltopdf

wkhtmltopdf是一个类似于插件的应用程序,windows和linux都支持,只是要安装对应的程序就行。

windows下载

下载wkhtmltopdf可以去官网直接下载。官方链接:https://wkhtmltopdf.org/downloads.html

window安装

1.下载对应的windows版本
2.将下载的软件包解压到你自己的目录下
3.配置系统环境变量,配置到D:\Program Files\wkhtmltopdf\bin\即可,这是wkhtmltopdf的安装目录,应用程序就在这里。【也可以不配】
4.测试
在命令行输入:

wkhtmltopdf http://www.baidu.com/ D:website1.pdf

如果能生成pdf就成功了,
对于没有配置环境变量的就需要使用全路径了

D:\Program Files\wkhtmltopdf\bin\wkhtmltopdf http://www.baidu.com/ D:website1.pdf

linux安装

linux安装和windows不同,需要根据系统内核下载对应的版本
1.查看系统版本
查看版本可以使用uname -a

[root@centos7 ~]# uname -a
Linux centos7.kjun 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

这里可以看到系统是centos7 x86_64的,下载对应版本的安装包

2.安装
上面下载完毕之后得到一个rpm的安装包,放到系统目录下之后使用rpm -ivh wkhtmltox-1:0.12.6-1.centos7.x86_64.rpm进行安装
注意: 安装的时候可能会遇到缺少依赖安装失败的情况,如下:

每个人缺少的依赖不一定相同。然后,使用yum把所有依赖全部安装之后在重新安装wkhtmltopdf的安装包。
以防万一:可以再将下列依赖安装一遍
  yum -y install libXrender*
  yum -y install libfontconfig*
  yum -y install libXext
  yum -y install libXext.i686
3.配置环境变量
在/etc/profile文件中添加

#修改wkhtmltopdf运行环境
export WKHTMLTOPDF_HOME="/usr/local/bin/wkhtmltopdf"
export PATH="$PATH:$WKHTMLTOPDF_HOME/bin"

使用rpm一般安装完毕会放在/usr/local/bin/wkhtmltopdf,如果没在,可以使用

whereis wkhtmltopdf

查一下在哪。
4.测试
和windows一样

wkhtmltopdf http://www.baidu.com/ website1.pdf
或者
/usr/local/bin/wkhtmltopdf http://www.baidu.com/ website1.pdf
没有配置环境变量使用第二种

5.中文乱码问题
下载一下字体库解压到 Linux 系统这个目录即可 /usr/share/fonts
链接:下载链接

使用java调用wkhtmltopdf

/*** @Author **** @Description 将网页转为pdf * @Date 2022/3/4 14:47* @Param [toolPath 软件位置, srcPath 资源位置(网址), destPath pdf输出路径, cookie]* @return boolean**/public static boolean convert(String toolPath, String srcPath, String destPath, Map<String, String> cookie) {File file = new File(destPath);File parent = file.getParentFile();//如果pdf保存路径不存在,则创建路径if (!parent.exists())parent.mkdirs();StringBuilder cmd = new StringBuilder();if (toolPath == null) {return false;}cmd.append(toolPath);cmd.append(" ");//设置cookie name及value 属性//cmd.append("  --cookie ");for (String s : cookie.keySet()) {cmd.append("  --cookie " + s + " " + cookie.get(s) + "");}
//        cmd.append("  --header-line");//页眉下面的线
//        cmd.append("  --header-center 这里是页眉这里是页眉这里是页眉这里是页眉 ");//页眉中间内容//cmd.append("  --margin-top 30mm ");//设置页面上边距 (default 10mm)
//        cmd.append(" --header-spacing 10 ");//    (设置页眉和内容的距离,默认0)cmd.append(" --margin-top 10 ");//    (设置页眉和内容的距离,默认0)cmd.append(" --margin-left 20 ");//    (设置页眉和内容的距离,默认0)cmd.append(" --margin-right 20 ");//    (设置页眉和内容的距离,默认0)cmd.append(" --margin-bottom 10 ");//    (设置页眉和内容的距离,默认0)
//        cmd.append(" --orientation Landscape ");//    (设置页眉和内容的距离,默认0)cmd.append(" --page-size A4 ");//    (设置页眉和内容的距离,默认0)
//        cmd.append(" ");cmd.append(srcPath);cmd.append(" ");cmd.append(destPath);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;}

调用时:

convert("/usr/local/bin/wkhtmltopdf", "http://www.baidu.com/website1.pdf", "/test/baidu.pdf",cookies);

使用这种方式可以带cookie,将需要登录的网页转化成pdf。

注意

使用wkhtmltopdf,要注意,pdf输出文件路径不能有空格,包括文件名也不能有空格

java使用wkhtmltopdf将html转换成pdf相关推荐

  1. wkhtmltopdf:wkhtmltopdf(将html转换成pdf的利器)简介、安装、使用方法详细攻略

    wkhtmltopdf:wkhtmltopdf(将html转换成pdf的利器)简介.安装.使用方法详细攻略 目录 wkhtmltopdf简介 wkhtmltopdf安装 wkhtmltopdf使用方法 ...

  2. java实现图片jpg批量转换成pdf

    java实现图片jpg批量转换成pdf package jpgTopdf; import java.awt.image.BufferedImage; import java.io.File; impo ...

  3. java编程将HTML文件转换成PDF文件

    网上有好几种方法可以将将HTML文件转换成PDF文件但是有些对HTML文件格式要求比较严格,稍微错了一些就不能生成我们所要的PDF文件,这里我推荐一个 PD4ML,它可以解决HTML文件格式不正确的问 ...

  4. java将WORD文档转换成pdf文件

    总结对jacob和Itext学习总结.本文试验的是将WORD转换成PDF文件. 实现思路 一.先将WORD文档转换成HMTL文件格式(参阅我的前一文<JAVA操作WORD文档). 二.用流读取H ...

  5. java使用itextpdf将图片转换成pdf的简单实例

    1.首先下载itextpdf包. 2.然后倒入到工程,并创建项目 源代码如下: public class Img2Pdf {public static void main(String[] args) ...

  6. java使用itextpdf将图片转换成pdf时DPI的问题

    在使用itext转换图片为PDF时,不论原文件的DPI为多少,转出的PDF的DPI均为72 使用Image类的setDpi方法也没用 解决方法如下 import com.itextpdf.text.* ...

  7. JAVA常用API或编程工具001---ITEXT把html转换成pdf的jar包,使用Java将HTML转换为PDF

    iText "XML Worker"允许开发人员以一种程序员友好的方式将XML文件转换成PDF文件.iText还可以将包含CSS样式的HTML转换为PDF格式的文档. 目标: 实现 ...

  8. Java使用aspse实现Excel文件转换成PDF文件

    使用Java代码把Excel文件转换成PDF文件 需要引用aspose包,引入操作我写了一个博客,地址如下 https://blog.csdn.net/weixin_46713508/article/ ...

  9. JAVA中将html转换成pdf

    前言 本文是采用了wkhtmltopdf插件的方式进行将html转换成pdf的,首先需要下载该插件,并进行安装(注意区分系统),此处提供windows64的安装包,本文中也是采用此安装包来实现,其他系 ...

最新文章

  1. 分别用BFS和DFS求给定的矩阵中“块”的个数
  2. 三种途径助物联网改变业务 省心省时省成本
  3. 替代还是扩展:云的下一站真是雾计算?
  4. python3官方文档 中文-Python 3.7 官方文档中文翻译召集
  5. simulink中选择开关模块的使用
  6. mysql存储过程打不开了_请问mysql存储过程的问题,我找了几个例子一个都运行不起来,...
  7. 使用 scikit-learn 实现多类别及多标签分类算法
  8. java枚举使用详解
  9. ios did receive memory warning
  10. Python的用途是什么? Python编程语言有10多种编码用途。
  11. 时区日期处理及定时 (NSDate,NSCalendar,NSTimer,NSTimeZone) -- IOS(实例)
  12. shell find命令 文件夹查询关键字 查询结果输出新文件
  13. python常用单词有多少_Python常用单词
  14. 和quicklook相似的软件_细数软件推荐上万热度出现比例较高的10款软件,看看谁出现最多...
  15. 快速突破面试算法之数组与矩阵篇
  16. FFMPEG录屏(12)---- DXGI 捕获桌面
  17. 苹果测试充电速度软件,ChargerLAB推出iPhone 8快充测试工具POWER-Z
  18. PackageManagerService安装应用流程
  19. 图片切割 - 九宫格
  20. timing lib时序弧

热门文章

  1. Google play billing Alpha / Beta 测试
  2. mysql 家谱树查询_GitHub - chenwei/FamilyTreeView: 家谱树绘制Demo
  3. PID控制的理解与具体实现
  4. fgets和fputs的使用
  5. 交换机开发(一)—— 交换机的工作原理
  6. OpenStack裸金属ironic组件web-console界面定制
  7. 福州华侨中学计算机老师,三尺讲台著妙笔 谱写侨习好韶光——记2015级福州华侨中学实习队工作检查...
  8. html5考试总结300字,期末考试总结反思300字
  9. 【JAVA虚拟机】java虚拟机
  10. matlab对图像频谱图分析,应用Matlab对图像信号进行频谱分析及滤波