我正在尝试以编程方式将包含多篇文章的 PDF 拆分为每篇文章的 PDF。 根据 Adobe Reader 的说法,读取和页面提取似乎有效,文件已创建,但似乎只包含 PDF 标题信息的 311 字节,没有任何 PDF 页面。
我创建了一个新的约132KB的一页PDF和一个简单的测试程序。 文本长度看起来正确,但输出的 PDF 也只有 311 字节。
from pypdf import PdfReader, PdfWriter
input_pdf = PdfReader('testpdf.pdf')
page = input_pdf.pages[0]
print(len(page.extract_text()))
output = PdfWriter()
output.add_page = page
with open('testpdf_1.pdf', 'wb') as output_stream:
output.write(output_stream)
如果我在 python 交互式会话中运行代码,我会看到:
False, <_io.BufferedWriter name='testpdf_1.pdf'>)
我不确定这是一个错误,或者至少我无法找到该消息的含义。
我正在 venv 中跑步
pypdf 5.0.1
和 python 3.8.0
。
根据您的要求,我认为“页面”不应该像您那样添加到 PdfWriter 对象中。 你应该直接用output.add_page(page)调用add_page方法。我认为你分配的方式 output.add_page 实际上并不添加页面,而是用页面对象覆盖该方法。这就是导致此问题的原因。 请尝试下面的代码并让我知道它是否有效..否则我们将尝试其他方法。
from pypdf import PdfReader, PdfWriter
input_pdf = PdfReader('testpdf.pdf')
page = input_pdf.pages[0]
print(len(page.extract_text()))
output = PdfWriter()
output.add_page(page)
with open('testpdf_1.pdf', 'wb') as output_stream:
output.write(output_stream)