HTML转PDF代码报错求助:AttributeError: 'str' object has no attribute 'pdf'
HTML转PDF代码报错求助:AttributeError: 'str' object has no attribute 'pdf'
嗨,我来帮你揪出问题所在~
你遇到的这个报错,根源出在这行代码里:
pdfkit.from_file(name, name.pdf, configuration=config)
这里的name是一个字符串类型的文件名(比如C:\Users\Me\HTML2PDF\Help\example.html),字符串对象根本没有.pdf这个属性,Python自然会抛出AttributeError啦。
你真正需要做的是把原HTML文件的后缀替换成.pdf,作为输出的PDF文件名,给你两种靠谱的修正方式:
方式一:简单字符串替换(适合常规场景)
直接把文件名里的.html替换成.pdf:
import glob import pdfkit config = pdfkit.configuration(wkhtmltopdf=bytes("C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe", 'utf8')) data = 'C:\\Users\\Me\\HTML2PDF\\Help\\*.html' for name in glob.glob(data): print(name) # 替换后缀生成PDF文件名 pdf_output = name.replace('.html', '.pdf') pdfkit.from_file(name, pdf_output, configuration=config)
方式二:用os.path处理(更稳妥,适配复杂文件名)
如果你的文件名里可能包含多个点,或者后缀是.htm,用os.path模块分离文件名和后缀会更可靠:
import glob import pdfkit import os # 导入os模块 config = pdfkit.configuration(wkhtmltopdf=bytes("C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe", 'utf8')) data = 'C:\\Users\\Me\\HTML2PDF\\Help\\*.html' for name in glob.glob(data): print(name) # 分离文件名和后缀,拼接成PDF文件名 base_filename = os.path.splitext(name)[0] pdf_output = f"{base_filename}.pdf" pdfkit.from_file(name, pdf_output, configuration=config)
另外顺便提一句,确认一下wkhtmltopdf的路径是否正确,还有当前用户有没有读写目标文件夹的权限,避免后续出现其他问题哦~
备注:内容来源于stack exchange,提问作者DenverDave
相关产品推荐
相关产品推荐

