JAVA 通过 itext,wkhtmltopdf 等,将 HTML 转成 PDF。
这里通过 wkhtmltopdf 实现HTML转PDF

wkhtmltopdf 是一个开源的,使用Qt WebKit 渲染引擎,把 html 转换为 pdf 文件的命令行工具。

wkhtmltopdf官网地址

wkhtmltopdf

下载

下载地址:https://wkhtmltopdf.org/downloads.html根据系统选择相应的版本
这里以Linux为例:
版本:wkhtmltox-0.12.6-1.centos7.x86_64.rpm

安装

  1. 上传rpm文件到安装目录 /usr/local
cd /usr/local
  1. 安装 rpm
rpm -ivh wkhtmltox-0.12.6-1.centos7.x86_64.rpm
  1. 查看安装路径
whereis wkhtmltopdf
  1. 字体安装(Linux)
    将 simsum.ttc 字体上传至 /usr/share/fonts/chinese/TrueType
    注:没有该路径就 mkdir 创建,字体也可以去windows系统 C:\Windows\Fonts 目录下找

卸载

rpm -qa |grep wkhtmlto
rpm -e wkhtmltox-0.12.6-1.centos7.x86_64

wkhtmltopdf自动生成文档

方式一:通过wkhtmltopdf -H查看自动生成文档

wkhtmltopdf -H

方式二:访问官方查看自动生成文档
https://wkhtmltopdf.org/usage/wkhtmltopdf.txt

JAVA集成wkhtmltopdf

HtmlToPdf拦截器

/*** HtmlToPdf拦截器*/
public class HtmlToPdfInterceptor extends Thread {private InputStream inputStream;public HtmlToPdfInterceptor(InputStream is){this.inputStream = inputStream;}public void run(){InputStreamReader inputStreamReader = null;BufferedReader bufferedReader = null;try{inputStreamReader = new InputStreamReader(inputStream, "utf-8");bufferedReader = new BufferedReader(inputStreamReader);String line = null;while ((line = bufferedReader.readLine()) != null) {//打印内容System.out.println(line.toString());}}catch (IOException e){e.printStackTrace();}finally {try{if(null != inputStreamReader){inputStreamReader.close();}if(null != bufferedReader){bufferedReader.close();}}catch (IOException e){e.printStackTrace();}}}}

wkhtmlltopdf操作类

public class HtmlToPdfOperator {/*** html转pdf* @param fromPath html路径,可以是磁盘路径,也可以是网络路径* @param toPath pdf保存路径* @return 转换成功返回true*/public void convert(String fromPath, String toPath){File file = new File(toPath);File parent = file.getParentFile();//如果pdf保存路径不存在,则创建路径if(!parent.exists()){parent.mkdirs();}StringBuilder cmd = new StringBuilder();//加载wkhtmltopdfcmd.append(getWkhtmltopdfPath());//将纸张大小设置为自定义宽高的A4cmd.append(" --print-media-type");cmd.append(" --page-size A4");cmd.append(" --page-width 270mm");cmd.append(" --page-height 382mm");cmd.append(" ");cmd.append(fromPath);cmd.append(" ");cmd.append(toPath);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){e.printStackTrace();}}/*** 获取wkhtmltopdf路径* @return*/private String getWkhtmltopdfPath() {String wkhtmltopdfPath = "D:\\applocation\\wkhtmltopdf\\bin\\wkhtmltopdf.exe";return wkhtmltopdfPath;}}

JAVA HTML 转 PDF相关推荐

  1. 230套java web开发PDF书籍和CHM参考手册资料大全 免费下载

    230套java web开发PDF书籍和CHM参考手册资料大全 免费下载 下载地址:http://yun.baidu.com/s/169jYH 文章来源:HTML5星空http://www.html5 ...

  2. java itext 导出pdf文件_【Java,PDF】使用Itext实现PDF文件生成

    重要声明:本文章仅仅代表了作者个人对此观点的理解和表述.读者请查阅时持自己的意见进行讨论. 前言 有时候,业务系统要求提供一个PDF文件导出的功能,这时候我们就需要将数据库的对应数据查询出来,然后生成 ...

  3. Java Html转pdf实战

    Java Html转pdf实战 - 简书年尾手头没啥事,干起了打杂工作,最近帮忙解决后端项目里一个html批量转pdf速度慢的问题,项目里用到的转换工具是 wkhtmltopdf ,这货转单个html ...

  4. java中生成pdf,插入图片,页眉、页脚、表格

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java中生成pdf,插入图片,页眉.页脚.表格 import com.lowagie.text.*; import com.lowagie.te ...

  5. java面试宝典pdf下载_Java面试问答PDF电子书免费下载(250+问题,60页)

    java面试宝典pdf下载 I was getting a lot of emails and comments to create java interview questions and answ ...

  6. java itext 横线,Java itext生成pdf设置下划线,,package cn.o

    Java itext生成pdf设置下划线,,package cn.opackage cn.outofmemory.example.itextpdf;import com.itextpdf.text.C ...

  7. Java实现对PDF文件添加水印

    Java实现对PDF文件添加水印 目录 Java实现对PDF文件添加水印 导入依赖 工具方法 效果 最近项目中遇到对PDF添加水印,实现有多种,采取的是itextpdf 导入依赖 <!-- 对P ...

  8. java word转pdf 后通过 PdfReader 和 PdfStamper对pdf添加水印 通过poi等组件实现

    所需jar包地址 <!-- java 读取word文件里面的加颜色的字体 转pdf 使用 --><dependency><groupId> e-iceblue &l ...

  9. java 模板生成PDF文件 复选框勾选

    java 模板生成PDF文件 复选框勾选 // pdf填充时要有第三个参数s.setField("A", On, true);

  10. Java WORD转换PDF 并添加水印 (附赠jar提取链接)

    Java WORD转换PDF 并添加水印 直接上代码 实现功能 docx文档转换为PDF 转换之后排版不混乱 使用工具(Jar包) aspose-words-15.8.0-jdk16.jar(用于PD ...

最新文章

  1. 报错解决 :Couldn't find any package by regex 'g++-8'
  2. 5分钟掌握手动优化机器学习模型超参数
  3. 河北计算机课本初中,河北:2019-2020学年中小学教学用书有变
  4. 洛谷P1162 填涂颜色
  5. Beyond Compare 3 许可证密钥被撤销
  6. MapReduce 编程实践:统计对象中的某些属性
  7. 运用Axure6.5快速完成微信交互效果的简单办法
  8. 快来一起玩转LiteOS组件:Curl
  9. 投影html连接电脑,电脑怎么连接投影仪?投影仪的详细安装使用教程
  10. python的networkx 算法_python图算法库Networkx笔记 - Node and Centrality
  11. JAVA-初步认识-第九章-接口-定义interface
  12. sublime text 2/3 快捷键汇总
  13. MAPGIS提示请在“系统设置”里设置好系统库路径(SUVSLIB或者其他)再重新运行程序
  14. [源码和文档分享]基于QT实现的alpha-beta剪枝算法搜索的象棋人机博弈游戏
  15. javascript颜色选择器
  16. python 倒计时库_python实现倒计时小工具
  17. 顶级区块链开发人员工具:涉及框架、IDE、安全工具、测试网络、区块链预言机和节点服务
  18. Axure RP9 水平滑动效果制作
  19. 书单分享:阅读应该是一种享受
  20. 自学脚手架——《热学》 by 李椿(第一,二,三,四,五章)

热门文章

  1. sunray破解版使用方法
  2. 完成类似百度贴吧客户端tableview滑动效果
  3. ROS(ROUTEROS) 端口映射
  4. 防火墙的数据包拦截方式
  5. 值得一看!年薪50万运维安全工程师学习路线
  6. 数字图像处理·SLIC超像素分割算法C++实现
  7. leapftp注册码,不同版本的leapftp注册码
  8. mysql front 连接类型_mysql-front 怎么连接数据库
  9. mysql front登陆1045错误_解决MySQL-Front连接MySQL出现1045错误
  10. 文本时间修改器android,NewFileTime(文件时间修改器)