我想知道是否有人有任何编程与.pdf文件工作的经验.我有一个.pdf文件,我需要将每个页面裁剪到一定的大小.
快速搜索谷歌后,我找到了python的pyPdf库,但我的实验失败了.当我更改页面对象上的cropBox和trimBox属性时,结果不是我预期的,并且看起来非常随机.
有没有人有这方面的经验?代码示例将非常受欢迎,最好是在python中.
dan*_*nio 28
pypdf做了我在这方面的期望.使用以下脚本:
#!/usr/bin/python
#
from pyPdf import PdfFileWriter, PdfFileReader
with open("in.pdf", "rb") as in_f:
input1 = PdfFileReader(in_f)
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)
with open("out.pdf", "wb") as out_f:
output.write(out_f)
Run Code Online (Sandbox Code Playgroud)
生成的文档有一个200x200点的修剪框,从媒体框内的25,25点开始.裁剪框内有25个点.
以下是使用上述代码处理后,我的示例文档在acrobat professional中的外观:

在Acrobat Reader中加载时,此文档将显示为空白.
感谢上面所有的回答。
步骤1. 运行以下代码获取(x1, y1)。
from PyPDF2 import PdfWriter, PdfReader
reader = PdfReader("test.pdf")
page = reader.pages[0]
print(page.cropbox.upper_right)
Run Code Online (Sandbox Code Playgroud)
步骤2.以全屏模式查看pdf文件。
步骤 3. 将屏幕捕获为图像文件 screen.jpg。
步骤 4. 通过 MS Paint 或 GIMP 打开 screen.jpg。这些应用程序显示光标的坐标。
步骤 5. 记住以下坐标,(x2, y2)、(x3, y3)、(x4, y4) 和 (x5, y5),其中 (x4, y4) 和 (x5, y5) 确定您想要的矩形庄稼。
步骤6.通过以下公式获取page.cropbox.upper_left和page.cropbox.lower_right。这里有一个计算工具。
page.cropbox.upper_left = (x1*(x4-x2)/(x3-x2),(1-y4/y3)*y1)
page.cropbox.lower_right = (x1*(x5-x2)/(x3-x2),(1-y5/y3)*y1)
Run Code Online (Sandbox Code Playgroud)
步骤 7. 运行以下代码来裁剪 pdf 文件。
from PyPDF2 import PdfWriter, PdfReader
reader = PdfReader('test.pdf')
writer = PdfWriter()
for page in reader.pages:
page.cropbox.upper_left = (100,200)
page.cropbox.lower_right = (300,400)
writer.add_page(page)
with open('result.pdf','wb') as fp:
writer.write(fp)
Run Code Online (Sandbox Code Playgroud)
小智 5
用它来获取pdf的尺寸
from PyPDF2 import PdfFileWriter,PdfFileReader,PdfFileMerger
pdf_file = PdfFileReader(open("/Users/user.name/Downloads/sample.pdf","rb"))
page = pdf_file.getPage(0)
print(page.cropBox.getLowerLeft())
print(page.cropBox.getLowerRight())
print(page.cropBox.getUpperLeft())
print(page.cropBox.getUpperRight())
Run Code Online (Sandbox Code Playgroud)
获得页面参考之后,然后应用裁剪命令
page.mediaBox.lowerRight = (lower_right_new_x_coordinate, lower_right_new_y_coordinate)
page.mediaBox.lowerLeft = (lower_left_new_x_coordinate, lower_left_new_y_coordinate)
page.mediaBox.upperRight = (upper_right_new_x_coordinate, upper_right_new_y_coordinate)
page.mediaBox.upperLeft = (upper_left_new_x_coordinate, upper_left_new_y_coordinate)
#for example :- my custom coordinates
#page.mediaBox.lowerRight = (611, 500)
#page.mediaBox.lowerLeft = (0, 500)
#page.mediaBox.upperRight = (611, 700)
#page.mediaBox.upperLeft = (0, 700)
Run Code Online (Sandbox Code Playgroud)