pdfkit html转pdf
pdfkit的通用option选项
参考:https://cloud.tencent.com/developer/ask/202116
https://www.cnblogs.com/taceywong/p/5643978.html(cover)
options = {
'page-size': 'A4',
'header-html':'http://localhost:8080/static/data/pdfHeader.html', #设置页眉数据,作为页眉的html页面必须有<!DOCTYPE html>
'header-spacing':'3', #设置页眉与正文之间的距离,单位是毫米
'header-right':'Quality Report', #设置页眉右侧数据
'header-font-size':10, #设置页眉字体大小
'footer-font-size':10, #设置页脚字体大小
'footer-right':'[page]/[topage]',
'margin-top': '0.75in',
'margin-right': '0.75in',
'margin-bottom': '0.5in',
'margin-left': '0.75in',
'encoding': "UTF-8",
# 'no-outline': None, #为None时表示确定,则不生成目录
'header-line':None, #为None时表示确定,生成页眉下的线
}
生成pdf:pdfkit.from_file('report.html', 'report.pdf',options=options,cover='http://localhost:8080/static/data/pdfHeader.html') ,可以使用参数cover来设置pdf封面
pdfkit可以使用wkhtmltopdf 选项,移除选项名字前面的 '--' ,如果选项没有值, 使用 None,False或者 *作为字典值
1.使用html标签控制pdf分页
参考:https://my.oschina.net/yifanxiang/blog/1797678
https://github.com/wkhtmltopdf/wkhtmltopdf/issues/1551
1.使用css来控制分页,这个也是浏览器支持的打印时自动换页的class(写个html,用浏览器打印看下就明白),感觉很有用。
1 <p>Text page 1</p>
2 <div style="page-break-after:always; border:1px solid blue;"></div>
3 <div style="page-break-before:always; border:1px solid red;"></div>
4 <p>Text page 2</p>
2.Ubuntu安装Python pdfkit
安装pdfkit sudo pip install pdfkit ,使用python -c 'import pdfkit'检查是否安装成功
下载对应版本的wkhtmltopdf deb包,并安装 https://github.com/wkhtmltopdf/wkhtmltopdf/releases/tag/0.12.5
1 sudo dpkg -i *.deb
2 #如果报依赖错误执行下面语句再试
3 sudo apt-get -f --fix-missing install
使用which wkhtmltopdf检查是否安装成功,输出结果为:/usr/local/bin/wkhtmltopdf
使用pdfkit将html转化为pdf
1 import pdfkit
2 ul1 = "http://10.10.162.60/qaweb/Vpu/index"
3 pdf_file = "url.pdf" pdfkit.from_url(ul1, 'test_600.pdf')
4 pdfkit.from_file('./report_verisilicon_fpga.rdoL3.html', 'test_text.pdf')
3.wkhtmltopdf 生成带封面、页眉、页脚、目录的pdf
参考:https://my.oschina.net/bobbob/blog/360946
https://blog.csdn.net/qq_24331363/article/details/84993321
wkhtmltopdf -T 15mm --header-spacing 5 --outline cover http://image.baidu.com --header-html file:///C:/Program%20Files/wkhtmltopdf/bin/a.html --header-line --footer-center "[page]/[topage]" --footer-line http://www.yaolan.com/zhishi/tinglishaicha/ t2.pdf
--header-html file:///C:/Program%20Files/wkhtmltopdf/bin/a.html或者 http://localhost:8080/static/data/pdfHeader.html在每一个pdf页面设置页眉数据,作为页眉的html页面必须有<!DOCTYPE html>,否则会导致生成的pdf为空白的
--outline显示目录
4.wkhtmltopdf 术语定义
参考: https://blog.csdn.net/chuoliang2040/article/details/100902718
文档对象 “文档对象”是指PDF文档中的文档对象,共有三种类型的“文档对象”,他们分别是“页面对象”,“封面对象”和“目录对象”。
页面对象 “页面对象”是指以页面的形式在PDF文档中呈现的对象,这个是相对于“封面对象”和“目录对象”来讲的。此类对象会成为PDF文档中内容。
封面对象 “封面对象”是指以封面的形式在PDF文档中呈现的对象。这类对象会成为PDF文档中的封面。
目录对象 “目录对象”是以目录的形式在PDF文档中呈现的对象,又叫“TOC对象”。这类对象会成为PDF文档中的目录。
大纲 “大纲”是指阅读PDF文档时的书签导航。
外链 “外链”是指所有在这个页面中且不指向它自身页面中锚点的超链接。
内链 “内链”是指在这个页面中且指向的目标页面是这个页面本身中的一个锚点的超链接。
5. wkhtmltopdf 中文参数详解
参考:https://blog.csdn.net/zhangkezhi_471885889/java/article/details/52184744
常规选项 |
–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* (设置页眉和内容的距离,默认0mm) –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 |
* [page] 由当前正在打印的页的数目代替 * [frompage] 由要打印的第一页的数量取代 * [topage] 由最后一页要打印的数量取代 * [webpage] 通过正在打印的页面的URL替换 * [section] 由当前节的名称替换 * [subsection] 由当前小节的名称替换 * [date] 由当前日期系统的本地格式取代 * [time] 由当前时间,系统的本地格式取代 ./wkhtmltopdf –footer-right ‘[page]/[topage]’ http://www.baidu.com baidu.pdf ./wkhtmltopdf –header-center ‘报表’ –outline –header-line –margin-top 2cm –header-line http://www.hao123.com/ hao123.pdf ./wkhtmltopdf –header-left ‘[webpage]’ –footer-center ‘测试([page]/[toPage])’ http://www.baidu.com baidu.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) |
6.其他
1.PDF文件对应的HTML页面的宽度为【820px】。
2.一页PDF文件对应的HTML页面的高度为【1160px】,多页类推。
3.记得要将【body】元素的外边距【margin】清零。
如:
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8">
5 <title></title>
6 <style type="text/css">
7 body {margin: 0;}
8 .content {width: 820px;height: 1160px;margin: 0 auto;background-color: #006DCC;}
9 </style>
10 </head>
11 <body>
12 <div class="content"></div>
13 </body>
14 </html>
参考:https://blog.csdn.net/Mr_28/article/details/78508600
pdfkit html转pdf的更多相关文章
- python pdfkit html转pdf响应式轮子 django例
pip install pdfkit 本例用django做的请求,换成对应框架即可 此方法可将html页面转成pdf下载 #!/usr/bin/env python # coding:utf-8 im ...
- itext 生成pdf文件添加页眉页脚
原文来自:https://www.cnblogs.com/joann/p/5511905.html 我只是记录所有jar版本,由于版本冲突及不兼容很让人头疼的,一共需要5个jar, 其中itextpd ...
- rails应用页面导出为pdf文档
1.下载安装wkhtmltox https://wkhtmltopdf.org/downloads.html 2.gemfile添加 gem 'pdfkit' #页面导出pdf gem 'wkht ...
- Python pdfkit
序言 住在地下室的人,依然有仰望星空的权利. pdfkit python使用pdfkit中,如果使用pdfkit.fromurl 或者pdfkit.fromstring等,就会出现上述错误.而且如果你 ...
- pdfkit
官方文档 0.准备 需要引入两个包,首先要npm install pdfkit安装pdfkit包 const PDF = require('pdfkit'); const fs = require(' ...
- 最新 iOS 框架整体梳理(三)
这一篇得把介绍框架这个系列终结了,不能超过三篇了,不然太长了..... 还是老规矩,前面两篇的机票在下方: 最新 iOS 框架整体梳理(一) 最新 iOS 框架整体梳理(二) Part - 3 ...
- 使用webdriver + phantomjs + pdfkit 生成PDF文件
实例 #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on Dec 6, 2013 @author: Jay <smile665@gm ...
- PDF之pdfkit
说起pdf就想到了一款很适用的工具,那就是pdfkit,在前几天的项目中,有一个功能要实现,为了实现这一个功能,于是我大海茫茫中查询各种百科,不负众望的让我找到了我心怡的工具,想必也就是它了.好了废话 ...
- python之使用 wkhtmltopdf 和 pdfkit 批量加载html生成pdf,适用于博客备份和官网文档打包
0. 1.参考 Python 爬虫:把廖雪峰教程转换成 PDF 电子书 https://github.com/lzjun567/crawler_html2pdf wkhtmltopdf 就是一个非常好 ...
随机推荐
- 9.4-6 kill & killall & pkill
kill:终止进程 能够终止你希望停止的进程. kill 命令的参数选项及说明 -l 列出全部的信号名称 -p 指定kill命令只打印相关进程的进程号,而不发送任何信号 -s 指定要 ...
- Python3冒泡排序
练习:将路径为 D:\data.txt 的文件读取,并取出数字部分进行排序(不能使用内置排序方法),这里我们使用冒泡排序法 文件读取并取出数字部分(略) 一:什么叫冒泡排序 冒泡排序(Bubble S ...
- STM32的ADC精度提高方法
1.精度稳定低一点参考电压VREF稳定: 2.通过设置不同的ADC时钟 和 采样周期 来确定出最适合自己系统的参数: 3.测试思路: 在同样SMPx下,设定不同的时钟得到不同采样时间值: 在同样时钟下 ...
- CSS(2)盒子模型、定位浮动
盒子模型 盒子模型:一个盒子中主要的属性就5个.width与height.padding.border.margin.盒子模型标准有两种为标准盒模型和IE盒模型.学习上以标准盒子模型为主 width和 ...
- 阿里云AIoT云端一体:迎接云原生+低代码时代的到来
距上次2019年参加上海阿里云开发者大会已经近2年的时间了,也许因为疫情的原因,这一两年线下大型活动基本很少了,这次在北京国家会议中心举办的阿里云开发者大会,无论是参会人员的规模,还有演讲嘉宾的级别和 ...
- Your branch and 'origin/master' have diverged, and have 1 and 1 different commits each, respectively
On branch master Your branch and 'origin/master' have diverged, and have 1 and 1 different commits e ...
- xtrabackup(innobackupex)使用详解
innobackupex实际上是percona-xtrabackup的perl整合脚本,功能当然更强大一些. xtrabackup备份实际上是在线的物理热备,为什么和么说呢,因为实际上他是以拷贝mys ...
- 工作流中的数据持久化详解!Activiti框架中JPA的使用分析
Activiti中JPA简介 可以使用JPA实体作为流程变量, 并进行操作: 基于流程变量更新已有的JPA实体,可以在用户任务的表单中填写或者由服务任务生成 重用已有的领域模型,不需要编写显示的服务获 ...
- NVIDIA GPU上的Tensor线性代数
NVIDIA GPU上的Tensor线性代数 cuTENSOR库是同类中第一个GPU加速的张量线性代数库,提供张量收缩,归约和逐元素运算.cuTENSOR用于加速在深度学习训练和推理,计算机视觉,量子 ...
- NVIDIA DRIVE AGX开发工具包
NVIDIA DRIVE AGX开发工具包 英伟达drive AGX开发工具包提供了开发生产级自主车辆(AV)所需的硬件.软件和示例应用程序.NVIDIA DRIVE AGX系统建立在汽车产品级芯片上 ...