最近项目需要导出企业风险报告,文件格式为pdf,于是搜了一大批文章都是什么Jasper Report,iText ,flying sauser ,都尝试了一遍,感觉不是我想要的效果,

需要自己调整好多东西,样式,字体等等,好麻烦,毕竟博主这么懒的人,哈哈。-------jstarseven

言归正传:

java生成pdf文件,方式很多,以上提到的哪几种方式具体可以参考这篇文章<讲解很详细>:http://blog.csdn.net/ouyhong123/article/details/26401967

本文说一下博主认为比较好用一个工具:wkhtmltopdf

wkhtmltopdf是一个使用webkit网页渲染引擎开发的用来将 html转成 pdf的工具,可以跟多种脚本语言进行集成来转换文档,好用还方便,至少我的pdf没有超级复杂,哈哈

下载地址:https://wkhtmltopdf.org/downloads.html

下载之后安装一下,博主的安装目录:E:\software\wkhtmltopdf

首先测试一下:

[转载请注明原文出处]:http://www.cnblogs.com/jstarseven/p/7251711.html,这么多字,博主码的也挺累的,谢谢合作。

进入cmd,cd E:\software\wkhtmltopdf\bin

执行wkhtmltopdf.exe http://www.jstarseven.com/  E:\data\pdf\jstarseven.pdf

打开E:\data\pdf\jstarseven.pdf 看一下效果还可以,至少没有很麻烦。

然后就是写个小程序,封装一下,调一下dos命令就可以了。

博主的思路是:事先准备好一个需要生成pdf的html模板,数据全用占位符占位,等到需要生成pdf的时候,首先向文件里面写入数据,然后调用wkhtmltopdf生成pdf文件。

文件那部分就不说了,直接看pdf这部分吧,代码很简单。

代码: HtmlToPdf.java

 1 package com.server.wkhtmltopdf;
 2
 3 import java.io.*;
 4
 5 /**
 6  * Created by jstarseven on 2017/7/25.
 7  */
 8 public class HtmlToPdf {
 9     //wkhtmltopdf在系统中的路径
10     private static final String toPdfTool = "D:\\software-dev\\wkhtmltopdf\\bin\\wkhtmltopdf.exe";
11
12     /**
13      * html转pdf
14      *
15      * @param srcPath  html路径,可以是硬盘上的路径,也可以是网络路径
16      * @param destPath pdf保存路径
17      * @return 转换成功返回true
18      */
19     public static boolean convert(String srcPath, String destPath) {
20         File file = new File(destPath);
21         File parent = file.getParentFile();
22         //如果pdf保存路径不存在,则创建路径
23         if (!parent.exists())
24             parent.mkdirs();
25         StringBuilder cmd = new StringBuilder();
26         cmd.append(toPdfTool);
27         cmd.append(" ");
28         cmd.append(srcPath);
29         cmd.append(" ");
30         cmd.append(destPath);
31
32         boolean result = true;
33         try {
34             Process proc = Runtime.getRuntime().exec(cmd.toString());
35             HtmlToPdfInterceptor error = new HtmlToPdfInterceptor(proc.getErrorStream());
36             HtmlToPdfInterceptor output = new HtmlToPdfInterceptor(proc.getInputStream());
37             error.start();
38             output.start();
39             proc.waitFor();
40         } catch (Exception e) {
41             result = false;
42             e.printStackTrace();
43         }
44
45         return result;
46     }
47
48     public static void main(String[] args) {
49         convert("http://www.jstarseven.com/", "E:\\data\\pdf\\jstarseven.pdf");
50     }
51 }
52
53 class HtmlToPdfInterceptor extends Thread {
54     private InputStream is;
55
56     public HtmlToPdfInterceptor(InputStream is) {
57         this.is = is;
58     }
59
60     public void run() {
61         try {
62             InputStreamReader isr = new InputStreamReader(is, "utf-8");
63             BufferedReader br = new BufferedReader(isr);
64             String line;
65             while ((line = br.readLine()) != null) {
66                 System.out.println(line); //输出内容
67             }
68         } catch (IOException e) {
69             e.printStackTrace();
70         }
71     }
72 }

View Code

效果测试图:

最后达成的效果,其实就和采用phantomjs截了图差不多,个人感觉还不错,不知道会不会有其他的问题,尚待发现。。。

[转载请注明原文出处]:http://www.cnblogs.com/jstarseven/p/7251711.html,这么多字,博主码的也挺累的,谢谢合作。

注意事项:

执行./wkhtmltoimage 出现如下错误:./wkhtmltoimage: error while loading shared libraries: libXext.so.6: cannot open shared object file安装:    yum -y install  libXrender*    yum -y install libXext*    yum -y install libX11*    yum -y install freetype*    yum -y install fontconfig*    yum -y install zlib*

    使用:./wkhtmltopdf html_path pdf_path

中文乱码或者空白解决方法(如果wkhtmltopdf中文显示空白或者乱码方框):    打开windows c:\Windows\fonts\simsun.ttc拷贝到linux服务器/usr/share/fonts/目录下,再次生成pdf中文显示正常

转载于:https://www.cnblogs.com/jstarseven/p/7251711.html

java调用wkhtmltopdf生成pdf文件,美观,省事相关推荐

  1. java用itextPDF生成PDF文件保存至本地并上传至ftp服务器

    标题java用itextPDF生成PDF文件保存至本地并上传至ftp服务器 所需jar :itext-asian-5.2.0.jar,itextpdf-5.5.5.jar,commons-net-3. ...

  2. java 生成字体文件,java使用itext生成pdf文件-设置字体,itextpdf,import com.l

    java使用itext生成pdf文件-设置字体,itextpdf,import com.limport com.lowagie.text.Document;import com.lowagie.tex ...

  3. java根据模板生成pdf文件并导出(iText)

    java根据模板生成pdf文件并导出 首先你的制作一个pdf模板: 1.先用word做出模板界面 2.文件另存为pdf格式文件 3.通过Adobe Acrobat pro软件打开刚刚用word转换成的 ...

  4. java在linux生成pdf文件,从 Java 应用程序动态生成 PDF 文件

    简介: 如果您的应用程序需要动态生成 PDF 文档,那么您需要 iText 库.开源的 iText 库使得 PDF 的创建变得轻松易行.本文介绍了 iText 并提供了一个使用它从 Java 技术应用 ...

  5. Java使用itextpdf生成PDF文件,用浏览器下载

    浏览器下载生成PDF文件 1.引入jar包 <dependency><groupId>com.itextpdf</groupId><artifactId> ...

  6. Java根据模板生成pdf文件并导出

    原文地址:http://blog.csdn.net/TOP__ONE/article/details/65442390 首先你的制作一个pdf模板: 1.先用word做出模板界面 2.文件另存为pdf ...

  7. Java通过freemarker生成pdf文件并盖章

    Java代码生成pdf回执文件,直接上代码: package com.pdf;import java.io.BufferedWriter; import java.io.File; import ja ...

  8. java调用pdfbox转pdf文件为图片文件,有中文时在windows上正常,部署到linux下乱码

    最近遇到了一个很头疼的问题,我们的项目移动端需要一个读pdf的功能,但是手机端开发人员说移动端是用jquerymobile做的,不能直接甩pdf文件过去(原因是pdf文件太大),于是乎我们想到了2个解 ...

  9. JAVA 调用打印机输出PDF文件

    想利用java程序打印一些文件.做以下测试: 一.环境 要调用打印机输出文件,首先本地得有一个能正常使用的打印机.我电脑安装的是虚拟打印机. 二.java代码 一).打印输出的实体类 import j ...

最新文章

  1. 常用的开始→运行→输入命令集锦
  2. 查询自己OpenGL的版本信息
  3. Java 基础之java运算符
  4. Docker的常用操作
  5. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_13-webpack研究-webpack入门程序...
  6. 2012年中国系统架构师大会 即将开幕
  7. 新创建虚拟机如何配置ip地址
  8. 从零开始系统学习区块链
  9. 大学群管机器人的建设畅想
  10. SQL SERVER数据库中勒索病毒 SQL数据库中病毒恢复数据
  11. mysql怎么设置id自动编号_MySQL中实现ID编号自动增加的方法
  12. vue引入TweenMax.js
  13. Android 性能优化之——高性能使用图片全面总结
  14. 一串文字检测被删和被拉黑的好友!
  15. Arduino IDE+_Attiny13/85实践(四) Mind+ 与Attiny85
  16. AutoCAD参照编辑期间不允许使用 SAVE 命令怎么办
  17. 2019,你不知道的大厂薪酬
  18. 服务器系统浏览器打不开,W7系统浏览器打不开怎么办
  19. html+css实例
  20. 微信公众号菜单点击发送天气预报

热门文章

  1. jquery在当前页面打印页面div内容实例
  2. css字体样式代码大全_这都2020年了,还没了解CSS?
  3. SSH连接Linux CentOS7-Putty篇
  4. H5 输入框text和number切换
  5. 环信SDK 踩坑记webIM篇(二)
  6. Qt学习笔记-编写简易的音乐播放器
  7. syslog 华为 服务器_删除华为云服务器自带的探针
  8. 动力环境监控系统论文_动力环境监控系统现状及在电源维护中的作用
  9. ccf推荐期刊和会议目录_重磅快讯:大数据入选CCF推荐中文科技期刊目录!
  10. 怎样在计算机中创建d盘,我在电脑D盘内新建了一个文件夹,怎么才能给 – 手机爱问...