python利用wkhtmltopdf生成的pdf,并添加水印、书签

您所在的位置:网站首页 pdf书签转化为目录 python利用wkhtmltopdf生成的pdf,并添加水印、书签

python利用wkhtmltopdf生成的pdf,并添加水印、书签

2024-01-21 08:54| 来源: 网络整理| 查看: 265

近些日子做了一个将html转pdf的活计,各中原因吧,也是大费周折,前面有两篇文章已经介绍了些许过程。这里就来絮叨一下目录、封面及添加水印后书签消失的解决办法。(办法有点笨,且当一种思路吧。)

工具:python3、pdfkit模块、wkhtmltopdf

1.生成目录配置

关于pdfkit配合wkhtmltopdf工具使用,官方也有介绍(也是最简单的介绍)Python pdfkit包_程序模块 - PyPI - Python中文网

在pdfkit的api方法中包含(url, output_path, options=None, toc=None, cover=None, configuration=None, cover_first=False)等参数,其中toc便是目录配置。

toc = { 'xsl-style-sheet': 'catalog.xsl', }

具体其他目录配置请参考wkhtmltopdf文档 

其中‘xsl-style-sheet’对应xsl文件为生成目录使用,可调整目录样式。

catalog.xsl文件内容:

目录 h1 { text-align: center; font-size: 20px; font-family: arial; line-height: 30px; } div {border-bottom: 1px dashed rgb(200,200,200);} span {float: right;} li {list-style: none;} ul { font-size: 20px; font-family: arial; line-height: 30px; } ul ul {font-size: 100%; } ul {padding-left: 0em;} ul ul {padding-left: 1em;} a {text-decoration:none; color: black;} 目录 added to prevent self-closing tags in QtXmlPatterns

2.生成封面配置

同样的封面也是单独的cover配置,cover对应封面页面的url

例如:cover='https://www.baidu.com'

因为要生成目录,所以封面要置顶,cover_first参数就要设置为True。

3.添加水印后添加书签(该方法只能定位到书签对应页,不能准确定位到书签位置)

因为本次采用的添加水印方式是,首先生成水印pdf,然后利用PyPDF2模块生成的带水印pdf(很容易搜到方法的介绍)

生成后pdf原本的书签会消失,只能后期处理添加,那下边就简单介绍下思路方法:

1)首先在生成无水印pdf之前,在options参数中添加配置项'--dump-outline': '导出文件名.xsl'。该文件即为目录导出文件

2)读取文件,采用正则表达式匹配出目录中标题及对应页码

pat_title = re.compile(r'


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3