裁剪.pdf fi的页面

2024-04-19 00:51:33 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
3条回答

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中的外观: crop pages screenshot

当加载到acrobat reader中时,此文档将显示为空白。

你可能在寻找一个免费的解决方案,但如果你有钱花,PDFlib是一个极好的图书馆。从来没有让我失望过。

使用此项获取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)

相关问题 更多 >