You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 16:09:34