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

使用PyMuPDF向PDF添加XML数据对象时遇RuntimeError报错求助

解决PyMuPDF添加XML嵌入文件时的RuntimeError问题

错误原因很明确:你用fitz.open()去加载XML文件了,但这个方法是专门用来处理PDF格式文件的,XML不是PDF,所以触发了RuntimeError: is no PDF。之前添加PDF能成功,是因为fitz.open()可以正确解析PDF结构。

要添加XML这类非PDF的嵌入文件,不需要通过fitz.open()处理,直接读取文件的二进制字节数据即可。

修正后的代码如下:

import fitz
import os
path = r"c\temp"
namedoc = "document.pdf"
pathnamedoc = os.path.join(path, namedoc)
print(pathnamedoc)

doc = fitz.open(pathnamedoc)  # 打开主PDF文档
count = doc.embfile_count()
print("number of embedded file:", count)     # 显示当前嵌入文件数量

namedata = "data.xml"
pathnamedata = os.path.join(path, namedata)
print(pathnamedata)

# 直接读取XML文件的二进制数据,无需用fitz.open
with open(pathnamedata, "rb") as f:
    embedded_data = f.read()

doc.embfile_add("data.xml", embedded_data)
doc.saveIncr()

核心改动点:

  • 移除了embedded_doc = fitz.open(pathnamedata)这行错误代码
  • 用Python内置的open()函数以二进制模式(rb)读取XML文件内容,得到字节数据后直接传给embfile_add()

这样就能正常将XML文件作为嵌入文件添加到PDF中了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:20:17