转 pdf


转 pdf 中使用 pdfkit 库,它可以让 web 网页直接转为 pdf 文件,多个 url 可以合并成一个文件。


安装 pdfkit 库


pip3 install pdfkit


安装 wkhtmltopdf 文件

pdfkit 是基于 wkhtmltopdf 的 python 封装库,所以需要安装 wkhtmltopdf 软件。

下载地址: https://wkhtmltopdf.org/downloads.html

36.png


在windows 系统中,需要将 wkhtmltopdf.exe 文件路径配置在系统环境变量中。

url 生成 pdf

这里使用 baidu 首页和 bing 首页作为示例


import pdfkit
# 第一个参数可以是列表,放入多个域名,第二个参数是生成的 PDF 名称
pdfkit.from_url(['www.baidu.com','www.bing.com'],'search.pdf')


37.png


本地 html 文件生成 pdf

提前将需要转换的 html 存储到本地,也可以使用 python 爬虫代码抓取 html 文件到本地。


import pdfkit
pdfkit.from_file('/Users/xx/Desktop/html/baidu.html', 'search.pdf')


转 word

使用 pypandoc 库将 html 转换为 word 文件,pypandoc 是一个支持多种文件格式转换的 Python 库,它用到了 pandoc 软件,所以需要在电脑上安装 pandoc 软件


安装 pypandoc 库


pip install pypandoc


安装 pandoc 软件


pypandoc 是基于 pandoc 软件的库,所以要安装一下 pandoc (https://github.com/jgm/pandoc/releases/tag/2.11.4),pandoc 支持多种类型转换。下图是 pandoc 的转换类型。


38.png


使用

将 html 文件提前存储在本地,也可以用爬虫将需要转换的 html 文件在代码中抓取后使用。


import pypandoc
# convert_file('原文件','目标格式','目标文件')
output = pypandoc.convert_file('/Users/xx/Desktop/html/baidu.html', 'docx', outputfile="baidu.doc")


pypandoc 无法对 word 进行排版,所以需要小伙伴们进行 2 次排版。


39.png


总结

利用好 Python 第三方库类,可以为小伙伴写出各种个性化定制的小程序

Freemarker动态模板渲染&flyingsaucer将html转PDF(多页固定头尾)
Freemarker动态模板渲染&flyingsaucer将html转PDF(多页固定头尾)
laravel6.*实现html转PDF导出下载(barryvdh/laravel-dompdf)
laravel6.*实现html转PDF导出下载(barryvdh/laravel-dompdf)
NetCore实战:基于html生成pdf文件案例讲解
WkHtmlToPdfDotNet是基于本地 wkhtmltopdf封装的.NET Core类库,主要通过webkit引擎实现html页面转换为pdf文件。并且支持在Windows、Docker、Linux、MacOSX运行。
通过html2canvas+jspdf将html页面生成PDF下载
通过jspdf ,我们可以将页面或图片生成pdf下载下来,如果是一些复杂的页面,我们可以将页面转成图片,然后把图片加入到pdf中,生成并下载。
html页面导出为pdf(jsPDF、iText、wkhtmltopdf)
html页面导出pdf,本来是一件很简单的事情,在浏览器直接打印(Mac快捷键为⌘+p;Windows快捷键为ctrl+p),就可以把页面另存为pdf文件,但对于要经常把页面导出为pdf的用户来说并不友好,一个合格程序员的标准就是:做出来的软件猪都要会用,否则你就是猪。 调研了几种html导出pdf的实现方式,这里把要点记录下来分享下。 wkhtmltopdf:wkhtmltopdf(将html转换成pdf的利器)简介、安装、使用方法详细攻略
wkhtmltopdf:wkhtmltopdf(将html转换成pdf的利器)简介、安装、使用方法详细攻略