1、由于在开发一个导出pdf的功能,在之前已经写过一篇所遇到的错误记录文档,文章链接如下:https://blog.csdn.net/u012561176/article/details/83655247
但是下载出来的pdf有样式问题,即没加载进去样式文件,pdfkit有提供一个from_file的方法,可以加载多个样式和一个样式,即如下简单的代码:
# 单个 CSS 文件
css = 'example.css'
pdfkit.from_file('file.html', options=options, css=css)
# Multiple CSS files
css = ['example.css', 'example2.css']
pdfkit.from_file('file.html', options=options, css=css)
2、不过如果你写多了一点代码,或者写错了就会出现不同的错误,而我遇到的错误是expected str, bytes or os.PathLike object, not _io.TextIOWrapper,翻译过来的含义是:期望的STR、字节或OS.路径型对象,而不是_io.TextIOWrapper,出现这个错误的代码如下:
css = ['base.css', 'front.css']
with open(path + id + '.html', encoding='utf-8') as f:
pdfkit.from_file(f, path + id + '.pdf', configuration=config, options=options, css=css)
这里,我通过打开一个html文件,在根据打开的这个html文件来生成pdf,如果没有加css属性倒是可以导出pdf的,这是不是很郁闷,加了就报expected str, bytes or os.PathLike object, not _io.TextIOWrapper错误,最后终于知道什么情况了,示例代码写得很清楚了,而且报错信息也很清楚,io.TextIOWrapper就是一个文件打开来只读时候的类型,css属性这样指定就不是那个方法所需要的类型了。
3、修改代码如下即可,直接把html的页面转换成pdf便不会报错了:
css = ['base.css', 'front.css']
pdfkit.from_file(path + id + '.html', path + id + '.pdf', configuration=config, options=options, css=css)
以上内容仅供大家学习参考,谢谢!