2016-04-30 105 views
1

我需要將PDF文檔從一個任意頁面大小轉換爲另一個頁面大小。需要以Python(或命令行)編程方式將PDF紙張大小(例如US-Letter轉換爲A4)

例如,我可能會爲我們格式化一堆PDF文檔 - 信紙(8.5「x 11」),我需要將它轉換爲A4紙尺寸(21釐米x 29.7釐米),或者我可能需要將A3轉換爲分類帳尺寸等。

這看起來應該是一個簡單的任務,但我的Google-fu正在讓我失望。

如果我實際上可以重新流動文檔的文本以更好地利用新的大小和縱橫比,那將會很整齊,但我並不期待那樣。向上或向下縮放以適應新的頁面大小就足夠了。

我的程序的其餘部分恰好是用Python編寫的,而基於Python的解決方案會很好,但只要我可以在Linux/Unix/OSX上運行,命令行工具就可以。

關於如何最好地解決這個問題的任何建議?

+0

我並不是說要困難,但我相信「這種格式的好答案太長」顯然是錯誤的。克勞斯的答案在下面(我剛剛接受,但我沒有業力上升)是對我的問題的具體和簡潔的答案。 「如何使用python和/或linux命令行將PDF格式的信件轉換爲A4格式?」對我來說似乎是一個非常具體的問題。 –

+0

我應該補充說,ssinfod的答案也是對這個問題的直接,具體和簡潔的答案。 (但其中一個會遇到其他問題,正如對該答案的評論中討論的那樣)。 –

回答

1

你可以使用

  • Ghostscript使用-sPAPERSIZE=a4開關,見章節3.3 docsfull solution這裏SO,或
  • pdfjam(一個外殼腳本,是texlive一部分),與--paper a4paper選項,因爲unix.SE
  • described
+1

Ghostscript將完全解析輸入的PDF文件並重新壓縮位圖圖像,從而生成較低質量的PDF輸出。您想要使用將原始PDF頁面原樣嵌入輸出PDF的工具。這也會快得多。我不確定,但我懷疑這是'pdfjam'如何工作。 –

+0

@BrechtMachiels對於'gs'的默認值是正確的,但是這種行爲可以通過不同的'-dDownsampleWhatnotImages = false'選項來控制,不是嗎? –

+1

是的,但是我從來沒有能夠從中得到滿意的結果。最好完全避免重新壓縮圖像。 –

-1

在ubuntu中,我會使用命令行中的「convert」。

此行是爲我工作,從字母轉換到A4:

convert -page A4 a.pdf a2.pdf 

見ImageMagick的網站上的頁隨機參數的詳細信息:

http://www.imagemagick.org/script/command-line-options.php#page

+1

ImageMagick會將PDF頁面柵格化爲位圖,因此除了速度較慢外,還會產生較大的質量較低的PDF文件。見http://www.imagemagick.org/Usage/formats/#vector –

+0

我的解決方案至少在工作。 – ssinfod

相關問題