使用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
相关产品推荐
相关产品推荐

