安装库
pip install pdfkit
第二步
下载程序wkhtmltopdf
https://wkhtmltopdf.org/downloads.html
下载7z压缩包 解压即可, 无需安装
解压后结构应该是这样, 我喜欢放在项目里, 相对路径引用(也可以使用绝对路径, 放其他地方)
import pdfkit # 将 wkhtmltopdf.exe程序 路径 path_wkthmltopdf = './wkhtmltox/bin/wkhtmltopdf.exe' config = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf) def url_to_pdf(url, to_file): # 生成pdf文件,to_file为文件路径 pdfkit.from_url(url, to_file, configuration=config, options={'encoding': 'utf-8'}) print('完成') # 这里传入我知乎专栏文章url,转换为pdf # url_to_pdf(r'https://m.zhijiao.cn/newsmini/detail/102201', './招生简章/102201.pdf') # html文件转pdf def file_to_pdf(path, to_file): # 生成pdf文件,to_file为文件路径 pdfkit.from_file(path, to_file, configuration=config, options={'encoding': 'utf-8'}) print('完成') # file_to_pdf('./123.html', './xxx/123.pdf') pdf_err_counts = 0 # html字符串转pdf def string_to_pdf(string, to_file): global pdf_err_counts # 生成pdf文件,to_file为文件路径 try: pdfkit.from_string(string, to_file, configuration=config, options={'encoding': 'utf-8'}) except Exception as e: pdf_err_counts += 1 print('生成pdf失败', pdf_err_counts, e)
最好每个都像string_to_pdf
函数一样, 捕获一下错误, 可以使程序更健壮, 避免转换失败导致程序停止(其他没写因为我没用, 懒得写)
参考: https://www.zhihu.com/tardis/zm/art/94608155?source_id=1005