1.安装wkhtmltopdf

官网地址:https://wkhtmltopdf.org/

根据自己的系统来选择对应的安装包

2.下载之后安装,然后将其配置到环境变量中

3.做个小测试

命令:wkhtmltopdf 需要转化为pdf的html地址  导出位置

4.下面附上JAVA代码

主要工具类:

public class HtmlToPdf {// wkhtmltopdf在系统中的路径private static final String toPdfTool = "D:\\developTool\\wkhtmltopdf\\bin\\wkhtmltopdf.exe";/*** html转pdf* * @param srcPath*            html路径,可以是硬盘上的路径,也可以是网络路径* @param destPath*            pdf保存路径* @return 转换成功返回true*/public static boolean convert(String srcPath, String destPath) {File file = new File(destPath);File parent = file.getParentFile();// 如果pdf保存路径不存在,则创建路径if (!parent.exists()) {parent.mkdirs();}StringBuilder cmd = new StringBuilder();if (System.getProperty("os.name").indexOf("Windows") == -1) {// 非windows 系统//toPdfTool = FileUtil.convertSystemFilePath("/home/ubuntu/wkhtmltox/bin/wkhtmltopdf");}cmd.append(toPdfTool);cmd.append(" ");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);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) {HtmlToPdf.convert("http://www.baidu.html", "E:/baidu.pdf");}
}

辅助代码

public class HtmlToPdfInterceptor extends Thread {private InputStream is;public HtmlToPdfInterceptor(InputStream is){this.is = is;}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.toString()); //输出内容}}catch (IOException e){e.printStackTrace();}}
}

5. wkhtmltopdf 一些命令

/*** Input表单或JavaScript脚本支持:--enable-forms,下面这些是网友整理的参数说明* wkhtmltopdf [OPTIONS]... <input file> [More input files] <output file>* 常规选项* --allow <path>                  允许加载从指定的文件夹中的文件或文件(可重复)* --book*                         设置一会打印一本书的时候,通常设置的选项* --collate                       打印多份副本时整理* --cookie <name> <value>         设置一个额外的cookie(可重复)* --cookie-jar <path>             读取和写入的Cookie,并在提供的cookie jar文件* --copies <number>               复印打印成pdf文件数(默认为1)* --cover* <url>                  使用HTML文件作为封面。它会带页眉和页脚的TOC之前插入* --custom-header <name> <value>  设置一个附加的HTTP头(可重复)* --debug-javascript              显示的javascript调试输出* --default-header*               添加一个缺省的头部,与页面的左边的名称,页面数到右边,例如: --header-left '[webpage]' --header-right '[page]/[toPage]'  --header-line* --disable-external-links*       禁止生成链接到远程网页* --disable-internal-links*       禁止使用本地链接* --disable-javascript            禁止让网页执行JavaScript* --disable-pdf-compression*      禁止在PDF对象使用无损压缩* --disable-smart-shrinking*      禁止使用WebKit的智能战略收缩,使像素/ DPI比没有不变* --disallow-local-file-access    禁止允许转换的本地文件读取其他本地文件,除非explecitily允许用 --allow* --dpi <dpi>                     显式更改DPI(这对基于X11的系统没有任何影响)* --enable-plugins                启用已安装的插件(如Flash* --encoding <encoding>           设置默认的文字编码* --extended-help                 显示更广泛的帮助,详细介绍了不常见的命令开关* --forms*                        打开HTML表单字段转换为PDF表单域* --grayscale                     PDF格式将在灰阶产生* --help                          Display help* --htmldoc                       输出程序HTML帮助* --ignore-load-errors            忽略claimes加载过程中已经遇到了一个错误页面* --lowquality                    产生低品质的PDF/ PS。有用缩小结果文档的空间* --manpage                       输出程序手册页* --margin-bottom <unitreal>      设置页面下边距 (default 10mm)* --margin-left <unitreal>        将左边页边距 (default 10mm)* --margin-right <unitreal>       设置页面右边距 (default 10mm)* --margin-top <unitreal>         设置页面上边距 (default 10mm)* --minimum-font-size             <)* --no-background                 不打印背景* --orientation <orientation>     设置方向为横向或纵向* --page-height <unitreal>        页面高度 (default unit millimeter)* --page-offset* <offset>         设置起始页码 (default )* --page-size <size>              设置纸张大小: A4, Letter, etc.* --page-width <unitreal>         页面宽度 (default unit millimeter)* --password <password>           HTTP验证密码* --post <name> <value>           Add an additional post field (repeatable)* --post-file <name> <path>       Post an aditional file (repeatable)* --print-media-type*             使用的打印介质类型,而不是屏幕* --proxy <proxy>                 使用代理* --quiet                         Be less verbose* --read-args-from-stdin          读取标准输入的命令行参数* --readme                        输出程序自述* --redirect-delay <msec>         等待几毫秒为JS-重定向(default )* --replace* <name> <value>       替换名称,值的页眉和页脚(可重复)* --stop-slow-scripts             停止运行缓慢的JavaScripts* --title <text>                  生成的PDF文件的标题(第一个文档的标题使用,如果没有指定)* --toc*                          插入的内容的表中的文件的开头* --use-xserver*                  使用X服务器(一些插件和其他的东西没有X11可能无法正常工作)* --user-style-sheet <url>        指定用户的样式表,加载在每一页中* --username <username>           HTTP认证的用户名* --version                       输出版本信息退出* --zoom                          <)** 页眉和页脚选项* --header-center*    <text>  (设置在中心位置的页眉内容)* --header-font-name* <name>  (default Arial)(设置页眉的字体名称)* --header-font-size* <size>  (设置页眉的字体大小)* --header-html*      <url>   (添加一个HTML页眉,后面是网址)* --header-left*      <text>  (左对齐的页眉文本)* --header-line*              (显示一条线在页眉下)* --header-right*     <text>  (右对齐页眉文本)* --header-spacing*   <real>  (设置页眉和内容的距离,默认0)* --footer-center*    <text>  (设置在中心位置的页脚内容)* --footer-font-name* <name>  (设置页脚的字体名称)* --footer-font-size* <size>  (设置页脚的字体大小default )* --footer-html*      <url>   (添加一个HTML页脚,后面是网址)* --footer-left*      <text>  (左对齐的页脚文本)* --footer-line*              显示一条线在页脚内容上)* --footer-right*     <text>  (右对齐页脚文本)* --footer-spacing*   <real>  (设置页脚和内容的距离)** 页脚和页眉* [page]       由当前正在打印的页的数目代替* [frompage]   由要打印的第一页的数量取代* [topage]     由最后一页要打印的数量取代* [webpage]    通过正在打印的页面的URL替换* [section]    由当前节的名称替换* [subsection] 由当前小节的名称替换* [date]       由当前日期系统的本地格式取代* [time]       由当前时间,系统的本地格式取代** 轮廓选项* --dump-outline  <file>  转储目录到一个文件* --outline               显示目录(文章中h1,h2来定)* --outline-depth <level> 设置目录的深度(默认为4)** 表内容选项中*  --toc-depth*              <level>  Set the depth of the toc (default)*  --toc-disable-back-links*          Do not link from section header to toc*  --toc-disable-links*               Do not link from toc to sections*  --toc-font-name*          <name>   Set the font used for the toc (default Arial)*  --toc-header-font-name*   <name>   The font of the toc header (if unset use --toc-font-name)*  --toc-header-font-size*   <size>   The font size of the toc header (default)*  --toc-header-text*        <text>   The header text of the toc (default Table Of Contents)*  --toc-l1-font-size*       <size>   Set the font size on level of the toc (default)*  --toc-l1-indentation*     <num>    Set indentation on level of the toc (default)*  --toc-l2-font-size*       <size>   Set the font size on level of the toc (default)*  --toc-l2-indentation*     <num>    Set indentation on level of the toc (default)*  --toc-l3-font-size*       <size>   Set the font size on level of the toc (default)*  --toc-l3-indentation*     <num>    Set indentation on level of the toc (default)*  --toc-l4-font-size*       <size>   Set the font size on level of the toc (default)*  --toc-l4-indentation*     <num>    Set indentation on level of the toc (default)*  --toc-l5-font-size*       <size>   Set the font size on level of the toc (default)*  --toc-l5-indentation*     <num>    Set indentation on level of the toc (default)*  --toc-l6-font-size*       <size>   Set the font size on level of the toc (default)*  --toc-l6-indentation*     <num>    Set indentation on level of the toc (default)*  --toc-l7-font-size*       <size>   Set the font size on level of the toc (default)*  --toc-l7-indentation*     <num>    Set indentation on level of the toc (default)*  --toc-no-dots*                     Do not use dots, in the toc* ------------------------------------------------------------------------------------------------------------*/

JAVA使用wkhtmltopdf 将Html 导出PDF相关推荐

  1. JAVA零碎要点011---使用Java操作wkhtmltopdf实现Html转PDF

    JAVA技术交流QQ群:170933152 2.项目中刚开始用的ITEXT把html转换成pdf,但是itext只能转比较规整的html,如果有比如从 editor这种网页编辑的html的话,就有问题 ...

  2. Java操作wkhtmltopdf实现Html转PDF

    做java开发的都知道,java生成pdf大部分都是用itext,itext的确是java开源组件的第一选择.不过itext也有局限,就是要自己写模版,系统中的表单数量有好几百个,为每个表单做一个导出 ...

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

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

  4. Java和iText导出pdf文档

    一:工程截图: 二:项目运行截图: 三:源代码: Book.java package com.iText.bean;public class Book {private int bookId;// 图 ...

  5. java根据模板导出pdf,java开发面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

  6. Java 使用 iText5 API 根据需求导出 PDF

    iText 目前有两套版本,分别是 iText5 和 iText7.iText5 应该是网上用的比较多的一个版本.iText5 因为是很多开发者参与贡献代码,因此在一些规范和设计上存在不合理的地方.i ...

  7. Java解析PDF文件(PDFBOX、itext解析PDF)导出PDF中的子图片,去除PDF中的水印

    前段时间,为了解析PDF,花了不少时间去学习PDFbox和itext,这两个都是处理PDF的开源库,有java和C#的.作为一个刚开始学习这两个开源库的,感觉百度上的资源还是太少了.我做的是一个关于P ...

  8. java 使用itext导出PDF文件,中文不显示问题解决

    之前写的java 使用itext 导出pdf 发现有个问题,在今天使用的时候,发现一个问题,就是当单元格中写中文的时候,导出来的pdf中文不显示. java 使用itext导出PDF文件,图片文字左右 ...

  9. java使用wkhtmltopdf将html转换成pdf

    使用wkhtmltopdf将html转换成pdf 安装wkhtmltopdf windows下载 window安装 linux安装 使用java调用wkhtmltopdf 注意 安装wkhtmltop ...

最新文章

  1. 3000多种细菌大迁徙,就发生在你买菜接过钞票的一瞬间
  2. jQuery插件开发的基本形式
  3. TypePerf收集服务器性能
  4. OJ1077: 字符串加密(C语言)
  5. php字符不可选状态,php – mailto不可读的字符 – unicode
  6. 《Android游戏开发详解》一2.9 类
  7. docker基础+registry
  8. 从单机到集群会话的管理之集群模式一
  9. 直流电压前馈控制数字逆变电源设计与实现
  10. matlab 离散求极值,Matlab离散数据点,求极值,有现成的函数吗
  11. 一款好看流光风格个人主页HTML源码
  12. IOS逆向(9)DebugServer + LLDB
  13. 输出大于某个正整数n的最小质数(1除外
  14. 163邮箱手机收件服务器设置,网易邮箱全面默认开通IMAP 手机收信提速10倍
  15. 计算机函数公式相乘,excel表格数据相乘公式-如何在Excel中使用乘法函数公式
  16. tplink 2.4g弱信号剔除_路由器信号分为2.4G和5G,这两种信号有什么区别
  17. 利用“WinRAR”创建自解压文件
  18. linux中write的实例,Linux内核 down_write()
  19. 09驾校科目一考试系统——提交分数
  20. flutter开发欠揍♎

热门文章

  1. GEE学习记录~~~
  2. PHP事务数据库写法,PHP 操作 MySQL 执行数据库事务
  3. 数据挖掘综合应用:贷款产品预测案例
  4. 『Transformer』为什么1*1卷积可以替代全连接层?
  5. 微信公众号使用:微信公众平台企业类型的微信认证申请流程
  6. Matlab:FIR滤波器设计和音频信号滤波去噪
  7. 8月房价上涨城市数量增多 涨幅全线扩大
  8. 未来影像!华为P30国行版售价曝光:徕卡四摄+超级变焦,3988元起
  9. linux使用百度网盘(bypy)
  10. (一)自学java必备技能开头篇:下载哔哩哔哩文件改名