将html转为pdf的组件有很多,但是还没有哪一款能达到这个效果,其只要原因是wkhtmltopdf使用webkit网页渲染引擎开发的用来将 html转成 pdf的工具,可以跟多种脚本语言进行集成来转换文档。但是就使用简便性来说还是itext等组件占据优势,如果你要转换格式有比较高的要求,那么wkhtmltopdf绝对是不二之选!

下载路径

官网地址 wkhtmltopdf.org/

github地址 github.com/wkhtmltopdf…

使用方法

  1. windows直接使用:只要在windows命令行中输入c:wkhtmltopdf.exe my.oschina.net/papio/blog/… c:blog.pdf 就可以把这篇文章转成pdf,并保存到C盘根目录。
  2. java调用:java中调用wkhtmltopdf的命令Runtime.getRuntime().exec("c:wkhtmltopdf.exe my.oschina.net/papio/blog/… c:blog.pdf")就可以实现转换。

java调用demo

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(); } }}public class HtmlToPdf { //wkhtmltopdf在系统中的路径 private static final String toPdfTool = "D:wkhtmltopdfbinwkhtmltopdf.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(); cmd.append(toPdfTool); cmd.append(" "); cmd.append(" --header-line");//页眉下面的线 cmd.append(" --header-center 这里是页眉这里是页眉这里是页眉这里是页眉 ");//页眉中间内容 //cmd.append(" --margin-top 30mm ");//设置页面上边距 (default 10mm) cmd.append(" --header-spacing 10 ");//(设置页眉和内容的距离,默认0) 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("https://my.oschina.net/papio/blog/835645", "d:/wkhtmltopdf.pdf"); }}复制代码

wkhtmltopdf 参数详解

wkhtmltopdf [OPTIONS]... [More input files] 常规选项 --allow 允许加载从指定的文件夹中的文件或文件(可重复) --book* 设置一会打印一本书的时候,通常设置的选项 --collate 打印多份副本时整理 --cookie 设置一个额外的cookie(可重复) --cookie-jar 读取和写入的Cookie,并在提供的cookie jar文件 --copies 复印打印成pdf文件数(默认为1) --cover* 使用HTML文件作为封面。它会带页眉和页脚的TOC之前插入 --custom-header 设置一个附加的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(这对基于X11的系统没有任何影响) --enable-plugins 启用已安装的插件(如Flash --encoding 设置默认的文字编码 --extended-help 显示更广泛的帮助,详细介绍了不常见的命令开关 --forms* 打开HTML表单字段转换为PDF表单域 --grayscale PDF格式将在灰阶产生 --help Display help --htmldoc 输出程序HTML帮助 --ignore-load-errors 忽略claimes加载过程中已经遇到了一个错误页面 --lowquality 产生低品质的PDF/ PS。有用缩小结果文档的空间 --manpage 输出程序手册页 --margin-bottom 设置页面下边距 (default 10mm) --margin-left 将左边页边距 (default 10mm) --margin-right 设置页面右边距 (default 10mm) --margin-top 设置页面上边距 (default 10mm) --minimum-font-size 最小字体大小 (default 5) --no-background 不打印背景 --orientation 设置方向为横向或纵向 --page-height 页面高度 (default unit millimeter) --page-offset* 设置起始页码 (default 1) --page-size 设置纸张大小: A4, Letter, etc. --page-width 页面宽度 (default unit millimeter) --password HTTP验证密码 --post Add an additional post field (repeatable) --post-file Post an aditional file (repeatable) --print-media-type* 使用的打印介质类型,而不是屏幕 --proxy 使用代理 --quiet Be less verbose --read-args-from-stdin 读取标准输入的命令行参数 --readme 输出程序自述 --redirect-delay 等待几毫秒为JS-重定向(default 200) --replace* 替换名称,值的页眉和页脚(可重复) --stop-slow-scripts 停止运行缓慢的JavaScripts --title 生成的PDF文件的标题(第一个文档的标题使用,如果没有指定) --toc* 插入的内容的表中的文件的开头 --use-xserver* 使用X服务器(一些插件和其他的东西没有X11可能无法正常工作) --user-style-sheet 指定用户的样式表,加载在每一页中 --username HTTP认证的用户名 --version 输出版本信息退出 --zoom 使用这个缩放因子 (default 1) 页眉和页脚选项--header-center* (设置在中心位置的页眉内容) --header-font-name* (default Arial) (设置页眉的字体名称)--header-font-size* (设置页眉的字体大小)--header-html* (添加一个HTML页眉,后面是网址)--header-left* (左对齐的页眉文本)--header-line* (显示一条线在页眉下)--header-right* (右对齐页眉文本)--header-spacing* (设置页眉和内容的距离,默认0)--footer-center* (设置在中心位置的页脚内容) --footer-font-name* (设置页脚的字体名称) --footer-font-size* (设置页脚的字体大小default 11)--footer-html* (添加一个HTML页脚,后面是网址)--footer-left* (左对齐的页脚文本)--footer-line* 显示一条线在页脚内容上)--footer-right* (右对齐页脚文本)--footer-spacing* (设置页脚和内容的距离)./wkhtmltopdf --footer-right '[page]/[topage]' http://www.baidu.com baidu.pdf./wkhtmltopdf --header-center '报表' --header-line --margin-top 2cm --header-line http://192.168.212.139/oma/ oma.pdf表内容选项中 --toc-depth* Set the depth of the toc (default 3) --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* Set the font used for the toc (default Arial) --toc-header-font-name* The font of the toc header (if unset use --toc-font-name) --toc-header-font-size* The font size of the toc header (default 15) --toc-header-text* The header text of the toc (default Table Of Contents) --toc-l1-font-size* Set the font size on level 1 of the toc (default 12) --toc-l1-indentation* Set indentation on level 1 of the toc (default 0) --toc-l2-font-size* Set the font size on level 2 of the toc (default 10) --toc-l2-indentation* Set indentation on level 2 of the toc (default 20) --toc-l3-font-size* Set the font size on level 3 of the toc (default 8) --toc-l3-indentation* Set indentation on level 3 of the toc (default 40) --toc-l4-font-size* Set the font size on level 4 of the toc (default 6) --toc-l4-indentation* Set indentation on level 4 of the toc (default 60) --toc-l5-font-size* Set the font size on level 5 of the toc (default 4) --toc-l5-indentation* Set indentation on level 5 of the toc (default 80) --toc-l6-font-size* Set the font size on level 6 of the toc (default 2) --toc-l6-indentation* Set indentation on level 6 of the toc (default 100) --toc-l7-font-size* Set the font size on level 7 of the toc (default 0) --toc-l7-indentation* Set indentation on level 7 of the toc (default 120) --toc-no-dots* Do not use dots, in the toc轮廓选项 --dump-outline 转储目录到一个文件 --outline 显示目录(文章中h1,h2来定) --outline-depth 设置目录的深度(默认为4)页脚和页眉 * [page] 由当前正在打印的页的数目代替 * [frompage] 由要打印的第一页的数量取代 * [topage] 由最后一页要打印的数量取代 * [webpage] 通过正在打印的页面的URL替换 * [section] 由当前节的名称替换 * [subsection] 由当前小节的名称替换 * [date] 由当前日期系统的本地格式取代 * [time] 由当前时间,系统的本地格式取代
作者:曹元
链接:https://juejin.im/post/6856547881873047559
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

itext生成pdf间距_java将html转为pdf相关推荐

  1. java html5转pdf文件_Java 将Html转为PDF

    本文介绍如何在Java程序中将html文件转换成PDF文件.转换时,需要注意以下两点: 一.需要使用转换插件 二.需要使用到PDF 库,Spire.PDF for Java 版本: 3.6.6 及以后 ...

  2. php mpdf html 转pdf,使用 MPDF 将HTML转为PDF,然后将该PDF转为PNG图片的时候,中文报错... ......

    第一步: 使用 MPDF(版本6.1) 将 HTML 页面转为PDF文件,可以转成功.代码如下: $html = "对盲人初学者来说,它无需任何额外的修改."; // $html ...

  3. php mpdf html 转pdf,使用 MPDF 将HTML转为PDF,然后将该PDF转为PNG图片的时候,中文报错... ...汗血宝马...

    第一步: 使用 MPDF(版本6.1) 将 HTML 页面转为PDF文件,可以转成功.代码如下: $html = "对盲人初学者来说,它无需任何额外的修改."; // $html ...

  4. java pdf合并_Java 合并、拆分PDF文档

    本文将介绍如何在Java程序中合并及拆分PDF文档,合并文档时,包括合并多个不同PDF文档为一个文档,以及合并PDF文档的不同页面为一页:拆分文档是,包括将PDF文档按每一页拆分,以及按指定页数范围来 ...

  5. java 去掉pdf文字_Java 添加和删除PDF图层

    在PDF文档中,图层可以使部分内容选择性地被隐藏或显示.通过添加图层,我们可以将文本.图片.表格等元素精确定位于页面指定位置,并可将这些元素进行叠放.组合形成页面的最终效果.本文将介绍如何使用Spir ...

  6. java pdf 书签_Java 展开或折叠PDF中的书签

    PDF中的书签功能可快速定位到指定阅读位置.对多层书签可根据阅读喜好设置层级展开或折叠.本文将通过Java程序代码介绍如何来实现PDF书签展开或折叠. 程序环境 Spire.Pdf.jar( 免费版3 ...

  7. java pdfbox 提取pdf 标题_java – 使用pdfbox从PDF文件中提取文本

    我试图使用pdfbox从PDF文件中提取文本,但不是作为命令行工具,而是在我的 Java应用程序中.我正在使用jsoup下载pdf. res = Jsoup .connect(host+action) ...

  8. java 去掉pdf文字_java – 使用pdfbox从pdf中删除不可见的文本

    OP的示例PDF中的不可见文本通常通过定义剪辑路径(文本的边界之外)和填充路径(隐藏下面的文本)而变得不可见.因此,我们必须在文本提取期间考虑与路径相关的指令以忽略该不可见文本. 不幸的是,为这些指令 ...

  9. java 解析pdf表格_java – 使用PDFBox解析PDF文件(特别是使用表格)

    我需要解析一个包含表格数据的PDF文件.我使用 PDFBox提取文件文本来解析结果(字符串)稍后.问题是文本提取不能像我预期的表格数据那样工作.例如,我有一个文件,其中包含这样的表(7列:前两个总是有 ...

  10. python实现生成word文档并转为pdf

    python实现生成word文档,格式转为pdf 使用的是python-docx模块,在生成word文档后转为pdf格式是使用的是docx2pdf中的convert(使用convert转换时,要先创建 ...

最新文章

  1. libevent源码深度剖析
  2. 2.关于QT中的Dialog(模态窗口),文件选择器,颜色选择器,字体选择器,消息提示窗口
  3. NumPy的思考……
  4. 序列化的高阶认识-简单认识一下 Java 原生序列化
  5. 第六讲:PrintClient工具的使用
  6. Support for the experimental syntax 'dynamicImport' isn't currently enabled
  7. tomcat不重启java文件自动编译
  8. 飞鸽传书最新C++源码:这两个消息钩子
  9. 百度SEO未注册域名批量检测查询
  10. mysql with parser_三十分钟成为 Contributor | 提升 TiDB Parser 对 MySQL 8.0 语法的兼容性...
  11. 嘿!你的“苹果”已经被盯上啦
  12. 一个人开长途车旅游安全吗?
  13. 第一批鸿蒙适配手机,鸿蒙适配表确定,华为Mate 40系列率先适配,麒麟990机型紧随其后...
  14. JLink EDU v7.58 变砖修复
  15. 中国DCS品牌知名度调查
  16. 小程序-仿微信通讯录-字母导航
  17. linux 用户登陆记录,Linux查看用户登陆历史记录
  18. 如何使用Etcd来完成选举
  19. 银行贷款违约风险预测
  20. 开源项目——小Q聊天机器人V1.0

热门文章

  1. 全球网速最快的地方在哪里?中国固定宽带网速增长超美国!
  2. linux环境下给文件加密/解密的方法
  3. 2015年7月之 装订空白
  4. saltstack管理二之saltstack的安装
  5. TCP/IP协议栈中,为什么选择IP层负责分片?
  6. 占空比输出程序c语言,怎样利用c语言来实现占空比的设置?(单片机:SPCE061A)
  7. Linux vip地址通信原理,IPv6的组播地址(掌握IPv6通信原理的关键知识点)
  8. golang ide 环境搭建_新手引导 — Golang后端开发环境搭建
  9. python重写和装饰器_Python | 老司机教你 5 分钟读懂 Python 装饰器
  10. Precision、Recall、F计算:举例