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

如何使用Python pdfminer将PDF转HTML?报AttributeError如何解决?

报错原因

  • AttributeError: 'str' object has no attribute 'write' 是因为HTMLConverter/TextConverter的第二个参数要求传入可写的文件对象,你传的是字符串格式的存储路径,字符串本身没有write方法,所以触发报错。
  • 你现有代码还存在其他逻辑问题:输入输出路径搞反、Windows路径未转义、同时混用了pdfminer和pdftohtml两套转换逻辑,没有必要。

可运行的PDF转HTML代码(pdfminer实现)

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.converter import HTMLConverter, TextConverter
from pdfminer.layout import LAParams

# 配置参数
convert_format = 'html'  # 可改成text对应纯文本转换
pdf_path = r"A:\folder\insurance.pdf"  # 原始PDF路径,加r避免反斜杠转义问题
output_path = r"A:\folder\pyhtml.html"  # 输出HTML文件路径
convert_pages = [0]  # 转换的页码,pdfminer页码从0开始计数

# 初始化转换资源
rsrcmgr = PDFResourceManager()
laparams = LAParams()
converter = HTMLConverter if convert_format == 'html' else TextConverter

# 以写模式打开输出文件,传入文件对象
with open(output_path, 'wb') as out_fp:
    device = converter(rsrcmgr, out_fp, codec='utf-8', laparams=laparams)
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    # 读取待转换的PDF文件
    with open(pdf_path, 'rb') as in_fp:
        for page in PDFPage.get_pages(in_fp, pagenos=convert_pages, maxpages=1):
            interpreter.process_page(page)
    device.close()

如果你倾向用pdftohtml命令行的简化实现

import os

pdf_filename = r"A:\folder\insurance.pdf"
output_html_path = r"A:\folder\pyhtml.html"

# 直接输出HTML无需中转XML,Windows系统将>/dev/null改成>nul即可
cmd = f'pdftohtml -nodrm -zoom 1.5 -enc UTF-8 -noframes "{pdf_filename}" "{output_html_path}"'
os.system(cmd + " >nul 2>&1")

# 如需读取转换后的HTML内容
with open(output_html_path, 'r', encoding='utf-8') as f:
    result = f.read()

内容的提问来源于stack exchange,提问作者jerin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:18:03