如何使用pyPdf沿中间分割/裁剪pdf
Posted
技术标签:
【中文标题】如何使用pyPdf沿中间分割/裁剪pdf【英文标题】:How to split/crop a pdf along the middle using pyPdf 【发布时间】:2014-12-06 21:12:15 【问题描述】:我有一个看起来像 this 的 pdf,我想剪掉所有文本,几乎就在页面中间。我发现这个脚本做了类似的事情:
def splitHorizontal():
from pyPdf import PdfFileWriter, PdfFileReader
input1 = PdfFileReader(file("in.pdf", "rb"))
output = PdfFileWriter()
numPages = input1.getNumPages()
print "document has %s pages." % numPages
for i in range(numPages):
page = input1.getPage(i)
print page.mediaBox.getUpperRight_x(), page.mediaBox.getUpperRight_y()
page.trimBox.lowerLeft = (25, 25)
page.trimBox.upperRight = (225, 225)
page.cropBox.lowerLeft = (50, 50)
page.cropBox.upperRight = (200, 200)
output.addPage(page)
outputStream = file("out.pdf", "wb")
output.write(outputStream)
outputStream.close()
但是,这些裁剪尺寸已针对该特定示例进行了调整。 谁能告诉我如何找到正确的裁剪尺寸。
【问题讨论】:
getUpperLeft_x()
带给你什么?
【参考方案1】:
我最初是从这里获得脚本 --> Cropping pages of a .pdf file。
我仔细阅读了作者所说的话,终于意识到他说的是:
生成的文档有一个 200x200 点的裁切框,从媒体框内的 25,25 点开始。裁剪框在裁切框内 25 磅。
意义
page.cropBox.upperRight = (200, 200)
必须控制最终边距,因此我将语句调整为
page.cropBox.upperLeft = (290, 792)
将裁剪镜像到另一侧并确保裁剪保持完整的垂直值
【讨论】:
【参考方案2】:将每一页切成两半,例如如果来源是 以小册子形式创建,然后重新组合 用于进一步处理,例如。文本提取
导入所需的库
from PyPDF2 import PdfFileWriter,PdfFileReader,PdfFileMerger
分割左侧部分
with open("docu.pdf", "rb") as in_f:
input1 = PdfFileReader(in_f)
output = PdfFileWriter()
numPages = input1.getNumPages()
for i in range(numPages):
page = input1.getPage(i)
page.cropBox.lowerLeft = (60, 50)
page.cropBox.upperRight = (305, 700)
output.addPage(page)
with open("left.pdf", "wb") as out_f:
output.write(out_f)
分割右边部分:
with open("docu.pdf", "rb") as in_f:
input1 = PdfFileReader(in_f)
output = PdfFileWriter()
numPages = input1.getNumPages()
for i in range(numPages):
page = input1.getPage(i)
page.cropBox.lowerLeft = (300, 50)
page.cropBox.upperRight = (540, 700)
output.addPage(page)
with open("right.pdf", "wb") as out_f:
output.write(out_f)
左右结合(两栏两页)
input1 = PdfFileReader(open("left.pdf","rb"))
input2 = PdfFileReader(open("right.pdf","rb"))
output = PdfFileWriter()
numPages = input1.getNumPages()
for i in range(numPages):
l = input1.getPage(i)
output.addPage(l)
r = input2.getPage(i)
output.addPage(r)
with open("out.pdf", "wb") as out_f:
output.write(out_f)
【讨论】:
以上是关于如何使用pyPdf沿中间分割/裁剪pdf的主要内容,如果未能解决你的问题,请参考以下文章
PDF分割?有了这把魔法剪,PDF任你裁剪(PyPDF2)-
PDF分割?有了这把魔法剪,PDF任你裁剪(PyPDF2)-
PDF分割?有了这把魔法剪,PDF任你裁剪(PyPDF2)-