Django 遇到的错误:expected str, bytes or os.PathLike object, not _io.TextIOWrapper

本文分享了在使用PDFKit导出PDF时遇到的样式加载问题及解决方案。详细介绍了如何正确加载单个或多个CSS文件,避免出现expectedstr,bytesoros.PathLikeobject,not_io.TextIOWrapper错误。
摘要由CSDN通过智能技术生成

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)

以上内容仅供大家学习参考,谢谢!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值