当前位置: 首页 > Web前端 > HTML5

关于wkhtmltopdf:html转pdf命令行工具

时间:2023-04-05 10:54:26 HTML5

1.什么是wkhtmltopdf?wkhtmltopdf是一个开源命令行工具,用于使用QtWebKit渲染引擎将html转换为pdf文件。wkhtmltopdf还有一个孪生兄弟wkhtmltoimage,顾名思义,可以将html转为image图片。简单的说,wkhtmltopdf就是用来将网页转成pdf文件的。具体可参考:官网github地址二、简单使用1、下载下载对应操作系统的安装文件:下载地址2、安装成功后,直接使用命令即可。它的命令格式是wkhtmltopdf[GLOBALOPTION]。..[OBJECT]...[GLOBALOPTION]是用来添加全局参数的区域,[OBJECT]是用来添加wkhtmltopdf对象(wkhtmltopdf将对象分为3类,后面会详细介绍)的区域,如果有多个对象,请将它们按顺序排列。用于指定输出PDF文件。3、示例使用默认参数,将csdn网页转pdf的示例如下:?~wkhtmltopdfhttps://www.csdn.net/Users/kevin/Desktop/csdn.pdfLoadingpages(1/6)QFont::setPixelSize:像素大小<=0(0)]61%计数页面(2/6)解析链接(4/6)加载页眉和页脚(5/6)打印页面(6/6)完成?~3.对象及参数详解wkhtmltopdf的三种对象命令[GLOBALOPTION]...[OBJECT]...中,OBJECT表示一个对象。在wkhtmltopdf中,wkhtmltopdf可以输出多个对象到文件中,其中每个对象可以是页面对象、封面对象和轮廓对象。对象按照命令行的顺序输出到pdf结果文件。1、页面对象页面对象使用如下方法将单个网页的内容放入输出文档(页面)中?[PAGEOPTION]...(页面)?表示page可以省略,即在不指定的时候,默认为page对象。为页面对象设置的参数可以放在全局参数域([GLOBALOPTIONS])和页面参数域([PAGEOPTIONS])中,程序会根据实际情况在所有参数中寻找合适的参数并将其应用于页面、页眉和页脚。2.封面对象封面对象可以简单理解为一个特殊的页面对象,可以用在页面对象上的参数也可以用在封面对象上。区别在于:封面对象的输出页面不会出现在TOC输出页面不会包含页眉和页脚封面对象的使用是封面<输入url/文件名>[PAGEOPTION]...3。大纲对象toc是tableofcontent的缩写,意思是目录,这个对象会在输出文档中添加目录。它的用法是toc[TOCOPTION]...所有在page对象中可以使用的参数都可以在outline对象中使用,outline对象中有很多参数可以应用于outline对象。大纲是通过XSLT生成的,这意味着它可以定义为任何你想要的样子。通过命令行参数--dump-default-toc-xsl可以输出默认的XSLT文档,通过--dump-outline命令行参数可以将当前处理文档的目录输出到XML格式的指定文件中.下面五类参数中会有详细的参数介绍。注:以下参数信息基于2018年6月11日发布的wkhtmltopdf0.12.5版本,其他版本可到官网查看具体信息。命令行选项有两种:选项可以基于每个对象,也可以全局指定选项区域。“全局选项”部分中的选项只能放在“全局选项”部分中,并且可以在“全局选项”部分中按对象或全局指定其他命令行选项。下面介绍的全局选项只能放在Global区1。全局参数参数说明--collat??e输出多份时进行校验(默认设置)--no-collat??e输出多份时不校验--cookie-jar来自提供的cookiejar在文件中读取和写入cookie--copies打印到PDF文件的份数(默认为1)-d,--dpi显式更改dpi(dpi是分辨率,但此参数对基于x11的系统没有影响,默认值为96)-H,--extended-help显示更详细的帮助,即-h命令的更详细版本-g,--grayscale生成灰度PDF(彩色的比较占空间,另外一些特殊需求可能只需要灰度PDF)-h,--help显示帮助文档--htmldoc以html格式输出帮助文档--image-dpi当页面嵌入图片时当使用指定的dpi大小时(默认值600)--image-quality当使用jpeg算法压缩图片时,使用指定的图像质量(默认值94)--license输出授权信息和exit--log-level指定日志级别,有以下级别:none,error,warn,info(default)-l,--lowquality生成低质量的PDF/PS,有利于减小文件大小结果文件和节省空间帮助--manpage输出程序的手册页-B,--margin-bottom设置页面底部边距-L,--margin-left设置页面左边距(默认10mm)-R,--margin-right设置页面的右边距(默认10mm)-T,--margin-top设置页面的上边距-O,--orientation设置方向到“横向”或“垂直”(Portrait)”模式,默认为纵向(Portrait)--page-height页面高度-s,--page-size设置页面大小为A4(默认值)、Letter等--page-width页面宽度--no-pdf-compression不对PDF使用无损压缩算法(无损压缩不会对文件造成很大损失,这个参数不是必须的)-q,--quiet减少冗长并保持向后兼容性;同使用--loglevelnone,即静态模式,不在标准输出中打印任何信息--read-args-from-stdin从stdin1读取命令行参数--readme输出程序的readmedocument--title生成的PDF文件的标题(不指定则使用第一个文件的标题)-V,--version输出版本信息并退出2.outline参数注:PDF的大纲会自动根据HTML的标题和标签生成参数描述--dump-default-toc-xsl将默认的TOCxsl样式“大纲”输出到标准输出(文件内容为xml)2--dump-outline输出“大纲”到指定文件(文件内容也是xml)--outline在生成的PDF文档中输出“大纲”(默认)--no-outline不输出PDF中的“大纲”--outline-depth设置生成轮廓的深度(默认值4)3。页面参数参数说明--allow允许加载指定文件夹下的一个或多个文件(可重复3个)--background输出页面背景到PDF文档(默认设置)--no-background与-background相反--bypass-proxy-for绕过主机代理(可重复3)--cache-dir网页的缓存目录--checkbox-checked-svg使用指定的SVG文件渲染选中的复选框--checkbox-svg使用指定的SVG文件渲染未选中的复选框--cookie设置访问网页时的cookie(可重复3),值要经过URL编码--custom-header设置访问网页时的HTTP头信息(可重复3)--custom-header-propagation将--custom-header指定的HTTPheader添加到每个要加载的资源中--no-custom-header-propagation与--custom-header-propagation相反--debug-javascript显示javascript调试输出信息--no-debug-javascript与--debug-javascript(默认)相反--default-header添加一个默认的“标题”,在左侧显示页面名称,在右侧显示页码4--encoding设置输入文本的默认编码--disable-external-links禁止页面中的外部链接生成超链接--enable-external-links与`--disable-external-links`相反(这是默认设置)--disable-forms不将HTML表单转换为PDF表单(这是默认设置)--enable-forms与--disable-forms相反--images加载图像并将它们输出到PDF文档(这是是默认设置)--no-images与--images相反--disable-internal-links禁止页面中的内部链接生成超链接--enable-internal-links与`--disable-internal相反-links`(这是默认设置)-n,--disable-javascript禁止WEB页面执行javascript--enable-javascript允许WEB页面执行javascript(这是默认设置)--javascript-delay延迟一定的毫秒数等待javascript执行完成(默认值为200)--keep-relative-links保持相对外部链接为相对外部链接--load-error-handling指定页面失败时加载最后的动作可以指定为:abort(中止,默认值),ignore(忽略),skip(跳过)--load-media-error-handling指定媒体文件加载失败时的动作,可以指定为:abort(中止)、ignore(忽略,默认值)、skip(跳过)--disable-local-file-access不允许一个本地文件加载其他本地文件,使用命令行参数指定的目录--allow除了--enable-local-file-access与--disable-local-file-access相反(这是默认设置)--minimum-font-size设置最小字体大小,不推荐使用该参数unlessnecessary--exclude-from-outline拒绝将当前页面加载到PDF文档的目录和大纲中--include-in-outline与--exclude-from-outline相反(这是默认设置)--page-offset设置页码起始值(默认0)--passwordHTTP认证密码--disable-plugins禁用插件(这是默认设置)--enable-plugins允许插件,但插件可能无法工作--post添加一个POST5字段(可重复3)--post-file添加一个POST5文件(可重复3)--print-media-type使用显示媒体类型而不是屏幕--no-print-media-type与--print-media-type(默认)相反-p,--proxy使用代理--proxy-hostname-lookup使用代理解析主机名--radiobutton-checked-svg使用指定的SVG文件渲染选中的单选按钮--radiobutton-svg使用指定的SVG文件渲染未选中的单选按钮--resolve-relative-linksresolverelativeexternallinks绝对链接(默认)--run-sript页面加载完成后额外执行一个js文件6,可以复用该参数指定页面加载完成后执行多个js文件(可重复3)--disable-smart-shrinking禁用WebKit使用智能收缩策略,使像素/dpi(分辨率)比率非常量--enable-smart-shrinking与--disable-smart-shrinking相反(这是默认)--ssl-crt-pathopenssl-pem格式的ssl客户端证书公钥的路径,可选地后跟中间CA和受信任的证书--ssl-key-passwordSSL客户端证书私钥的密码--ssl-key-pathopensslpem格式的ssl客户端证书私钥路径--stop-slow-scripts停止运行慢速javascript代码(这是默认的)--no-stop-slow-scripts和--stop-slow-scripts相反--disable-toc-back-links禁用从标题到目录(toc)的链接(这是默认设置)--enable-toc-back-links相反--disable-toc-back-links--user-style-sheet设置一个用户定义的样式表加载到每个页面--username用于HTTP认证的用户名--viewport-size<>如果有自定义滚动条或者CSS属性溢出模拟窗口大小时,需要设置窗口大小--window-status渲染页面前,等待window.status等于指定字符串--zoom设置页面转PDF时的缩放比例(默认值为1)4.页眉页脚参数header参数说明--header-center在header的中心部分显示header文本--header-font-name设置的字体header(defaultisArial)--header-font-size设置header的字体大小(defaultis12)--header-html添加一个html作为header--header-left在header的左边部分显示header文本--header-line在header下方显示一行来分隔文本--no-header-line与--header-line相反(这是默认设置)--header-right在页眉右侧显示页眉文本--header-spacing页眉与文本之间的距离(默认为零)页脚参数说明--footer-center显示footertextinthecenterpartoffooter--footer-font-name设置页脚的字体(默认为Arial)--footer-font-size设置页脚的字体大小(默认为12)--footer-html添加一个html作为页脚--footer-left在页脚左侧显示页脚文本--footer-line在上面显示一行用于分隔文本的页脚行--no-footer-line与--footer-line相反(这是默认设置)--footer-right在页脚的右侧显示页脚文本--footer-spacing页脚与文本的距离(默认为零)常用参数参数说明--replace将[name]替换为页眉和页脚中的值(可重复3)5.TOC参数toc是tableofcontent的缩写,可以理解为directory-level-indentation目录中每个标题级别按这个长度缩进的意思(默认1em)--disable-toc-links不要生成指向目录中内容锚点的超链接--toc-text-size-shrink目录中每一级标题的缩放比例(默认为0.8)--xsl-style-sheet使用自定义的XSL样式表来显示目录stdin的内容?试试看,你会看到命令行中看到的?可以重复表示参数可以设置多次来指定多个参数值?这相当于以下四种设置:--header-left='[网页]'--header-right='[page]/[toPage]'--top2cm--header-line?5?6?