首页 > 解决方案 > 从另一个 PDF 替换 PDF 中的至少 100 页

问题描述

这是一个代码示例,

import PyPDF2
import numpy as np
# creating a pdf file object
pdfFileObj = open('original.pdf' , 'rb')

pdfFileObj_1 = open('tutorial.pdf', 'rb')
# creating a pdf reader object
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
pdfReader_1 = PyPDF2.PdfFileReader(pdfFileObj_1)
# creating a pdf writer object for new pdf
pdfWriter = PyPDF2.PdfFileWriter()
for i in range(100):
    page= pdfReader.getPage(i)
    page_1= pdfReader_1.getPage(i)
    pdfWriter.addPage(page)
    pdfWriter.addPage(page_1)

#print(pdfWriter.getNumPages())
# new pdf file object
newFile = open('replaced_pdf_1.pdf', 'wb')


pdfWriter.write(newFile)

# closing the original pdf file object
pdfFileObj.close()
pdfFileObj_1.close()
# closing the new pdf file object
newFile.close()

我得到的错误,

PdfReadWarning:对象 321 0 未定义。[pdf.py:1629] Traceback(最近一次调用最后):文件“test.py”,第 22 行,在 pdfWriter.write(newFile) 文件“/home/ubuntu/Ritesh/working/lib/python3.5/site -packages/PyPDF2/pdf.py”,第 482 行,写入 self._sweepIndirectReferences(externalReferenceMap, self._root) 文件“/home/ubuntu/Ritesh/working/lib/python3.5/site-packages/PyPDF2/pdf. py”,第 571 行,在 _sweepIndirectReferences self._sweepIndirectReferences(externMap, realdata) 文件“/home/ubuntu/Ritesh/working/lib/python3.5/site-packages/PyPDF2/pdf.py”,第 547 行,在 _sweepIndirectReferences 值中= self._sweepIndirectReferences(externMap, value) 文件“/home/ubuntu/Ritesh/working/lib/python3.5/site-packages/PyPDF2/pdf.py”,第 571 行,

我从更改添加到PdfFileWriter对象pdfWriter的页数中了解到..如果页面超过 5 个左右,则显示上述错误..否则其工作正常。我需要替换超过 100 个页面..请任何人帮助解决这个问题。

标签: pythonpdf

解决方案


我在 Windows 10 和 Red Hat Enterprise Linux 6 上使用了这个示例代码。在这两个平台上我都使用了 python 2.7(我的工作站上没有 python 3.5)。由于您没有提供您的 original.pdf 和 tutorial.pdf 版本,我使用了 2 本 pdf 格式的电子书:分别为 686 页和 1014 页。

我无法证实你的观察:与

对于范围内的我(100):

替换为

对于我在范围内(600):

我收到了 1200 页的输出 pdf。


推荐阅读