使用 pypdf 提取 PDF 页面始终创建没有任何页面的 PDF

问题描述 投票:0回答:1

我正在尝试以编程方式将包含多篇文章的 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

python python-3.x pypdf
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.