裁剪.pdf文件的页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了裁剪.pdf文件的页面相关的知识,希望对你有一定的参考价值。

我想知道是否有人有任何编程与.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中的外观:crop pages screenshot

在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)
另一答案

你可能正在寻找一个免费的解决方案,但如果你有钱可以花钱,PDFlib是一个神话般的图书馆。它从未让我失望过。

另一答案

您可以将PDF转换为Postscript(pstopdf或ps2pdf),然后在Postscript文件上使用文本处理。之后,您可以将输出转换回PDF。

如果您要处理的PDF都是由同一个应用程序生成并且有些类似,那么这很有效。如果它们来自不同的来源,通常很难处理Postscript文件 - 结构变化很大。但是,即使你可以使用一些正则表达式来修复页面大小等。

另一答案

Acrobat javascript API有一个setPageBoxes方法,但Adobe不提供任何Python代码示例。只有C ++,C#和VB。

以上是关于裁剪.pdf文件的页面的主要内容,如果未能解决你的问题,请参考以下文章

如何修改PDF文件,PDF页面怎么裁剪

iText - 裁剪出 pdf 文件的一部分

如何快速裁剪pdf中的页面

PDF如何修改,怎么裁剪页面

PyPdf2无法添加多个裁剪页面

用于拆分和自动裁剪 PDF 文件的 Bash