我想知道是否有人有任何编程与.pdf文件工作的经验.我有一个.pdf文件,我需要将每个页面裁剪到一定的大小.
快速搜索谷歌后,我找到了python的pyPdf库,但我的实验失败了.当我更改页面对象上的cropBox和trimBox属性时,结果不是我预期的,并且看起来非常随机.
有没有人有这方面的经验?代码示例将非常受欢迎,最好是在python中.
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)
生成的文档有一个200x200点的修剪框,从媒体框内的25,25点开始.裁剪框内有25个点.
以下是使用上述代码处理后,我的示例文档在acrobat professional中的外观:
在Acrobat Reader中加载时,此文档将显示为空白.
用它来获取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())
获得页面参考之后,然后应用裁剪命令
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)