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 就是一个非常好 ...
随机推荐
- MyBatis 高级查询之一对一查询(九)
高级查询之一对一查询 查询条件:根据游戏角色ID,查询账号信息 我们在之前创建的映射器接口 GameMapper.java 中添加接口方法,如下: /** * 根据角色ID查询账号信息 * @para ...
- STM32自己的封装库
以前一直使用STM32的标准库,需要一步步地将代码加进去,将编译选项设置好,然后再编译整个工程. 这个编译过程是一个相当慢的过程!完全编译大约需要一支烟的时间.每次建立工程都这么编译,是一个相当浪费时 ...
- JDK5.0新特性 (Day_07)
JDK5.0新特性 目录 静态导入 自动装箱/拆箱 for-each循环 可变参数 枚举 JDK 5.0 新特性简介 JDK 5.0 的一个重要主题就是通过新增一些特性来简化开发,这些特性包括 ...
- java基础之8种基本数据类型
简单往往是最重要的,在刚刚学java的时候老师会给我们先讲这8种基本数据类型,今天再来做一个温习,[本文大部分参考了 https://zhuanlan.zhihu.com/p/25439066,在上面 ...
- K8s之二进制安装高可用集群
1.环境准备 #二进制部署安装文档# https://github.com/easzlab/kubeasz/blob/master/docs/setup/00-planning_and_overall ...
- 面试官问我:如何在 Python 中解析和修改 XML
摘要:我们经常需要解析用不同语言编写的数据.Python提供了许多库来解析或拆分用其他语言编写的数据.在此 Python XML 解析器教程中,您将学习如何使用 Python 解析 XML. 本文分享 ...
- SpringBoot 实现整合log4j2日志
关于日志级别 共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF. ...
- 4,java数据结构和算法:双向链表 ,有序添加,正向遍历,反向遍历, 增删改查
直接上代码 //节点 class HeroNodeD{ int no; String name; String nickName; HeroNodeD pre;//前一节点 HeroNodeD nex ...
- Python编解码问题与文本文件处理
编解码器 在字符与字节之间的转换过程称为编解码,Python自带了超过100种编解码器,比如: ascii(英文体系) gb2312(中文体系) utf-8(全球通用) latin1 utf-16 编 ...
- 《Docker基础与实战,看这一篇就够了》
什么是Docker? Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术 ...