使用 pyPdf 在 Python 中裁剪页面
Posted
技术标签:
【中文标题】使用 pyPdf 在 Python 中裁剪页面【英文标题】:Crop a Page in Python Using pyPdf 【发布时间】:2015-01-31 15:53:34 【问题描述】:我正在编写一个脚本来从 PDF 中提取一些数据。 PDF 本身非常复杂,因为它有多个列。所以我想我应该裁剪每一列并连接这些列以制作一个更适合使用 pyPdf 解析的新 PDF。这是我的代码:
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页面的其余部分?
【问题讨论】:
Cropping pages of a .pdf file的可能重复 【参考方案1】:我在 Python 中尝试了多个其他库,但它们没有帮助。后来,我偶然发现了pdfBox,它被证明是一个非常有用的库。在文本提取方面比 PDFMiner 和 pyPdf 好得多。我可以使用具有高度和宽度的矩形的 x 和 y 位置来提取文本。它唯一的缺点是我没有找到它的 Python 包装器,所以我不得不用 Java 编写应用程序。
【讨论】:
以上是关于使用 pyPdf 在 Python 中裁剪页面的主要内容,如果未能解决你的问题,请参考以下文章
PDF分割?有了这把魔法剪,PDF任你裁剪(PyPDF2)-