2009-01-19 76 views
11

我在想如果有人有任何使用.pdf文件編程工作的經驗。我有一個.pdf文件,我需要裁剪每一頁到一定大小。修剪.pdf文件的頁面

經過Google的快速搜索,我找到了Python的pyPdf庫,但是我的實驗失敗了。當我改變頁面對象上的cropBox和trimBox屬性時,結果並不是我所期望的,而且看起來很隨意。

有沒有人有這方面的經驗?代碼示例將很好理解,最好在python中。

+0

偉大的問題,但有點驚訝它尚未關閉過於寬泛。 – 2017-06-02 00:48:17

回答

19

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) 

生成的文檔具有200 x 200點的修剪框,並在媒體框內的25,25點處開始。 修剪框內的修剪框是25點。

這裏是我的示例文件看起來如何在Acrobat與上面的代碼後加工的專業:在Acrobat Reader軟件加載時 crop pages screenshot

這份文件將顯示爲空白。

+0

此代碼與我正在試驗的代碼具有相同的效果;結果文檔的頁面肯定會被裁剪,但都是空白的。任何想法,爲什麼這可能是? – johannth 2009-01-22 20:26:46

1

你可能正在尋找一個免費的解決方案,但如果你有錢花,PDFlib是一個神話般的圖書館。它從未讓我失望。

0

您可以將PDF轉換爲Postscript(pstopdf或ps2pdf),並在Postscript文件上使用文本處理。之後,您可以將輸出轉換回PDF。

如果您想要處理的PDF全部由相同的應用程序生成並且有點類似,這很好地工作。如果它們來自不同的來源,通常很難處理Postscript文件 - 結構變化很大。但是,即使你使用一些正則表達式,migt也能夠修正頁面大小等。

0

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