使用pyPdf在Python中裁剪页面

时间:2015-01-31 15:53:34

标签: python pdf pypdf

我正在编写一个脚本来从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页面的剩余部分?

1 个答案:

答案 0 :(得分:2)

我在Python中尝试了多个其他库,但它们没有帮助。后来,我偶然发现了pdfBox,这被证明是一个非常有用的库。在文本提取方面比PDFMiner和pyPdf好多了。我可以使用高度和宽度的矩形的x和y位置来提取文本。唯一的缺点是我没有找到它的Python包装器,所以我不得不用Java编写应用程序。