背景
使用python抓取某平台公告信息,需将该平台的页面公告信息批量的以pdf的形式抓取回来。
使用第三方库
- Spire.Doc
- 官方文档
该库是一个功能强大且易于使用的 Word 文档处理库。它使开发人员能够在 Python 应用程序中创建、阅读、修改和转换 Word 、Doc、XLS、PDF文档等等,而无需 Microsoft Word 或任何其他第三方软件。具体功能可自行查看官方文档。
安装
pip install Spire.Doc
使用
- html字符串转pdf
# 引入第三方库
from spire.doc import *
from spire.doc.common import *
# 创建一个 Document 类的对象
doc = Document()
# 向文档添加一个节(section)
sec = doc.AddSection()
# 向节添加一个段落(paragraph)
par = sec.AddParagraph()
# 在文档中渲染 HTML 字符串 html_string替换为需要转换html字符串
par.AppendHTML(html_string)
# 将文档保存为 PDF 文件 filt_name替换为生成pdf的文件名称
doc.SaveToFile(filt_name, FileFormat.PDF)
# 关闭 Document 对象
doc.Close()
注意: 1.变量html_string为需要解析html字符串(可直接转换服务端返回的html不需要再进行二次解析)
- 变量filt_name为生成的pdf文件名称(需要加.pdf后缀)
- html文件转pdf文件
# 引入第三方库
from spire.doc import *
from spire.doc.common import *
# 创建一个 Document 类的对象
doc = Document()
# 引入需要转换的html文件进行解析转换 html_position替换为需要转换的html文件
document.LoadFromFile(html_position, FileFormat.Html, XHTMLValidationType.none)
# 保存转换生成的pdf文件位置 filt_name替换为生成pdf的文件名称
document.SaveToFile(filt_name, FileFormat.PDF)
# 关闭 Document 对象
doc.Close()
注意: 1.变量html_position为需要解析html文件
- 变量filt_name为生成的pdf文件名称(需要加.pdf后缀)
缺点
- 生成的pdf文件中,每一页会出现Evaluation Warning: The document was created with Spire.Doc for Python. 的警告。
不影响整体查看的效果,如果非要去除该警告的话,需要付费使用或者寻找破解版Spire.Doc才能去除该警告。具体可查看我上面的官方文档链接查看。
- html内容可完整显示,但html样式效果会有些差异,并且外层会套一层边框。 暂未找到解决办法,可能还是需要氪金吧,如果有小伙伴能有好的解决办法,也欢迎一起讨论!