1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Java使用wkhtmltox实现HTML代码生成PDF文档或者图片

Java使用wkhtmltox实现HTML代码生成PDF文档或者图片

时间:2024-01-29 05:52:19

相关推荐

Java使用wkhtmltox实现HTML代码生成PDF文档或者图片

Java|java教程

Java

Java-java教程

由于项目需要,把HTML代码转为PDF或者图片进行保存。最开始使用Flying Saucer来把HTML代码生成为PDF文档,功能已经开发出来了,也能够完成转换功能,期间也遇到了中文支持以及图片路径的问题,也解决了,本来以为这样就可以了,但是在测试期间发现有些PDF文档生成的样式有问题,搜索了一下发现,Flying Saucer是比较老的技术,现在也没人搞了,所以对于CSS3.0的支持很不友好。

matlab 图像处理 源码,vscode 浏览,系统环境 ubuntu,会tomcat一般找什么工作,linq访问sqlite,美国最快vps服务器,云的大漠插件辅助支持库2.3版,国内 前端开发框架,扎克伯格爬虫人,php包管理,seo破解,仿商城版淘宝客网站源码,商务静态网页模板源码,dedecms 5.7 通用企业网站模板,html5页面制作,开发管理系统 的语言,图像中值滤波程序lzw

功能要实现啊,让别人改HTML代码也不现实,那就尝试着别的技术呗。后来想着能生成图片也行,就找了一下,发现使用CSSBOX可以把HTML代码生成为图片,然后就试了一下,果然可以,然后就开心的把这个功能集成到系统里面了。一直没出什么问题,结果悲剧又发生了,有一个页面使用CSS3渲染了一条斜着的直线,结果CSSBOX无法转换。

mvc4 权限管理源码下载,vscode 新建cpp,西门子博图软件ubuntu版本,tomcat 附件下载,sqlite写入阻塞线程,人人商城秒杀插件,杭州用的什么前端框架,爬虫如何抓取商品定价,php $_get乱码,seo优化核心,表白类网站源码,静态网页 发送邮箱,w0rdpress模板lzw

其实开始的时候就知道有wkhtmltopdf可以把HTML代码生成为PDF文档,但是这个实际上是要安装一个软件,在Java代码中调用这个软件执行转换,当时觉得没有别的技术直接引入jar包方便,就没有尝试,现在实在是没有办法了,就尝试一下吧。因为我现在是要把HTML代码生成为图片,所以我使用的是wkhtmltoimage,其实没什么差别,在安装wkhtmltox软件时,会同时安装wkhtmltopdf和wkhtmltoimage。

微博网站源码,vscode 绘图插件,vbox ubuntu,tomcat部署小说,sqlite3汉化,wordpress 评论回复邮件通知插件,阿特兹前端框架总成,什么叫网络爬虫数据,php入门到精通 下载,seo刹车盘,音乐网站设计模板,手机端的网页模板下载失败,网页样式模板lzw

使用wkhtmltoimage的时候也没少走弯路,主要是对Linux不熟悉吧,在安装的时候遇到了不少问题。现在把我自己摸索的知识分享给大家,大家可以参考一下,只是个人观点,不正确的地方望大家见谅。下面就来介绍在Java调用这个软甲的详细用法。具体分为Windows环境和Linux环境。

1、软件下载地址:

官网下载地址首页:/downloads.html

可以在这个页面下载到最新版本的wkhtmltox。

我没有使用最新版的,我使用的是0.12.2版本,下载地址为:/wkhtmltopdf/0.12/0.12.2/

2、Windows环境安装

Windows环境安装软件我就不多说了,我是在/wkhtmltopdf/0.12/0.12.2/这个网址,下载的wkhtmltox-0.12.2_msvc-win64.exe这个版本,32位的可以选择32位的版本下载,下载完成后就是双击安装了。安装完成后在安装目录能找到wkhtmltopdf.exe和wkhtmltoimage.exe,这两个执行程序就是我们用来转换PDF和转换图片的,后面会说到如何进行调用。

3、Linux环境安装

我是在/wkhtmltopdf/0.12/0.12.2/地址下载的wkhtmltox-0.12.2_linux-centos6-i386.rpm这个版本的RPM包,由于我虚拟机安装的是CentOS6.5的32位,所以下载的是这个版本,你们可以根据实际情况,这个网址上有Linux的版本和32位64位对应的版本下载,根据实际情况选择即可。

下载方式,可以在Linux上直接使用wget /wkhtmltopdf/0.12/0.12.2/wkhtmltox-0.12.2_linux-centos6-i386.rpm 进行下载,如果像我一样使用的是虚拟机,也可以先下载到本机上,然后在Linux上使用rz -be进行上传,注意使用rz命令上传大文件时,一定要加这个-be命令,否则上传不成功。若你的Linux中没有rz命令,那么可以使用yum -y install lrzsz命令来安装rz和sz命令。

下面开始安装:

1)进入到RPM包下载的目录下,执行rpm -ivh wkhtmltox-0.12.2_linux-centos6-i386.rpm命令,结果出现如下所示:

失败原因是缺少xorg-x11-fonts-Type1和xorg-x11-fonts-75dpi依赖,那么我们要先装依赖。

2)安装xorg-x11-fonts-Type1依赖:yum -y install xorg-x11-fonts-Type1。

3)安装xorg-x11-fonts-75dpi依赖:yum -y install xorg-x11-fonts-75dpi。

4)再次安装wkhtmltox:rpm -ivh wkhtmltox-0.12.2_linux-centos6-i386.rpm,OK,安装成功。如果大家在安装时还缺少其他依赖,那么需要先把缺少的依赖安装之后再安装wkhtmltox。查询缺少的依赖方法是 yum search xxxx,xxxx是缺少的依赖关键字,然后从查询结果中找到正确的yum源进行安装。

5)安装完成后,我们可以使用wkhtmltoimage 1.jpg或者wkhtmltopdf 1.pdf来测试是否安装成功。

4、Java程序调用

Java调用时,不需要添加额外的Jar包。

Java调用代码:

public class CustomWKHtmlToPdfUtil { public String getCommand(String sourceFilePath, String targetFilePath) { String system = System.getProperty("os.name"); if(system.contains("Windows")) { return "D:\\Program Files\\wkhtmltopdf\\wkhtmltoimage.exe " + sourceFilePath + " " + targetFilePath; }else if(system.contains("Linux")) { return "wkhtmltoimage " + sourceFilePath + " " + targetFilePath; } return ""; } public static void main(String[] args) throws Exception{ CustomWKHtmlToPdfUtil util = new CustomWKHtmlToPdfUtil(); String command = util.getCommand("e:/html/result.html", "e:/html/result.jpg"); Process process = Runtime.getRuntime().exec(command); process.waitFor(); //这个调用比较关键,就是等当前命令执行完成后再往下执行 System.out.println("执行完成"); }}

其实就是使用Java调用cmd的执行命令,但是调用要区分Windows和Linux系统,如果是Windows系统,则必须要指定wkhtmltoimage或者wkhtmltopdf的位置,我在Windows的安装位置是D:\Program Files\wkhtmltopdf,因此我在上面调用wkhtmltoimage时使用的路径是D:\Program Files\wkhtmltopdf\wkhtmltoimage.exe。在Linux环境下,由于软件在安装时,会把wkhtmltopdf和wkhtmlimage安装到系统命令中,因此不需要指定安装路径,直接调用就可以了。

我比较推荐使用wkhtmltoimage生成JPG图片,我调用wkhtmltopdf生成PDF时会有点问题。以上是我的一些经历,希望对大家有用!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。