我正在编写一个脚本,以从PDF中提取一些数据。PDF本身很复杂,因为它具有多个列。因此,我想出了应该裁剪每列并将其连接起来以创建新的PDF的方法,该PDF更适合使用pyPdf进行解析。这是我的代码:
for i in range(numPages):
page1 = input1.getPage(i)
page1.trimBox.lowerLeft=(0,550)
page1.trimBox.upperRight = (480, 842)
page1.cropBox.lowerLeft = (0, 550)
page1.cropBox.upperRight = (480, 842)
output.addPage(page1)
page2= input2.getPage(i)
print page1.mediaBox.getUpperRight_x(), page1.mediaBox.getUpperRight_y()
page2.trimBox.lowerLeft=(0,280)
page2.trimBox.upperRight = (480, 550)
page2.cropBox.lowerLeft = (0, 280)
page2.cropBox.upperRight = (480, 550)
output.addPage(page2)
page3 = input3.getPage(i)
page3.trimBox.lowerLeft=(0,0)
page3.trimBox.upperRight = (480, 280)
page3.cropBox.lowerLeft = (0, 0)
page3.cropBox.upperRight = (480, 280)
output.addPage(page3)
outputStream = file("out.pdf", "wb")
output.write(outputStream)
outputStream.close()
然后,我将此PDF发送到PHP服务器以对其进行解析并获取文本。没想到,那没有帮助。cropBox原来是在更改PDF的可见部分。其他部分在那里,但它们根本无法查看。当我使用PHP处理新PDF时,得到了相同的结果。我的问题是:有没有一种方法可以使cropBox真正裁剪框并忽略PDF页面的其余部分?
我在Python中尝试了多个其他库,但它们没有帮助。后来,我偶然发现了pdfBox,它被证明是一个非常有用的库。在文本提取方面,比PDFMiner和pyPdf好得多。我可以使用具有高度和宽度的矩形的x和y位置提取文本,唯一的缺点是我没有找到它的Python包装器,所以我不得不用Java编写应用程序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句