我正在尝试使用pyPdf从多页PDF中提取和打印页面。问题是,不能从某些页面中提取文本。我在这里放了一个示例文件:
http://www.4shared.com/document/kmJF67E4/forms.html
如果运行以下命令,前81个页面不返回任何文本,而最后11个页面正确提取。有人能帮上忙吗?
from pyPdf import PdfFileReader
input = PdfFileReader(file("forms.pdf", "rb"))
for page in input1.pages:
print page.extractText() 发布于 2010-11-17 19:04:11
请注意,extractText()仍然存在正确提取文本的问题。来自extractText()的文档
这对于一些PDF文件效果很好,但对其他文件效果不佳,这取决于所使用的生成器。这将在未来得到改进。不要依赖于这个函数的文本顺序,因为如果这个函数变得更复杂,它就会改变。
因为它是您想要的文本,所以可以使用Linux命令pdftotext。
要使用Python调用它,您可以这样做:
>>> import subprocess
>>> subprocess.call(['pdftotext', 'forms.pdf', 'output'])文本从forms.pdf中提取并保存到output。
这适用于您的PDF文件,并提取您想要的文本。
发布于 2010-11-17 20:26:57
您还可以尝试使用pdfminer库(也是Python语言),看看它在提取文本方面是否更好。然而,对于拆分,你将不得不坚持使用pyPdf,因为pdfminer不支持这一点。
发布于 2010-11-17 21:13:29
我发现有时将其转换为ps (尝试使用pdf2ps和pdftops以了解潜在差异)然后再转换回pdf (ps2pdf)是很有用的。然后再次尝试您的原始脚本。
https://stackoverflow.com/questions/4203414
复制相似问题