【发布时间】:2013-04-16 06:17:26
【问题描述】:
我正在尝试使用 Python 将几个 PDF 文件合并为一个 PDF 文件。我已经尝试过 PyPDF 和 PyPDF2 - 在某些文件上,它们都抛出了同样的错误:
PdfReadError: EOF 标记未找到
这是我的代码 (page_files) 是要组合的 PDF 文件路径列表:
# use pypdf to combine pdf pages
output = PdfFileWriter()
for pf in page_files:
filestream = file(pf, "rb")
pdf = PdfFileReader(filestream)
for num in range(pdf.getNumPages()):
output.addPage(pdf.getPage(num))
# write final file
outputStream = file(pdf_full_path, "wb")
output.write(outputStream)
outputStream.close()
我已经阅读了一些关于该主题的 StackOverflow 线程,但没有一个包含有效的解决方案。如果您已经使用 Python 成功组合了 PDF 文件,我很想听听如何。谢谢!
【问题讨论】:
-
你是否有一个堆栈跟踪告诉哪一行代码导致
PdfReadError被提升?另外,您确定要合并的 PDF 文件格式正确吗? Adobe/Acrobat Reader 可以正常阅读吗? -
@martineau 好主意 - PDF 文件是由 Docraptor 生成的,而后者又使用 PrinceXML,它引发 htmlEntities 错误,导致这些文档在 PyPDF 中出现意外的 EOF。
-
我猜这是个好消息。听起来加强脚本中的错误处理以尽可能优雅地处理错误的输入文件可能是个好主意。
-
稍微不相关的评论 - 因为它是搜索引擎上的早期链接而在此处发布:如果忘记以二进制模式打开读取文件流,则会收到相同的错误。因此,如果您遇到错误并且是 PyPDF 的新用户,请确保您使用
'rb'打开输入文件以“读取二进制文件”。 -
@nerburn,你有没有试过这个解决方案codedprojects.wordpress.com/2017/06/09/…我自己也需要一个解决方案,但我现在可以解决错误,稍后再纠正。