2009-02-13 65 views
13

我一直抨擊我的頭對此無濟於事。使用ImageMagick或Ghostscript(或其他)來縮放PDF以適合頁面?

我需要縮小一些大的PDF以在8.5x11英寸(標準字母)頁面上打印。 ImageMagick/Ghostscript能處理這類事情,還是我有很多麻煩,因爲我使用了錯誤的工具來完成這項工作?

僅僅依靠客戶端打印對話框中的「縮小到頁面」選項不是一種選擇,因爲我們希望這對最終用戶來說很容易使用。

回答

7

使用ImageMagick的問題在於,您正在轉換爲光柵圖像格式,從而增加了頁面上任何矢量元素的文件大小和質量。

Multivalent將保留PDF的矢量信息。 嘗試:

java -cp Multivalent.jar tool.pdf.Impose -dim 1x1 -paper "8.5x11in" myFile.pdf 

創建一個輸出文件MYFILE-up.pdf

+0

哦,我會試試看。謝謝! – ceejayoz 2009-02-18 02:00:53

8

ImageMagick的mogrify/convert命令確實可以完成這項工作。 Stephen Page的想法正好,但您也需要設置文件的dpi,否則您將無法完成工作。

假設你有一個文件,該文件是300 dpi和已經相同的縱橫比爲8.5×11的命令是:

// 300dpi x 8.5 -2550, 300dpi x 11 -3300 
convert original.pdf -density "300" -resize "2550x3300" resized.pdf 

如果縱橫比是不同的,那麼你就需要做一些稍微棘手的裁剪。

+0

對我不起作用。轉換後PDF已損壞(v.7.0.7-Q16) – Unicco 2018-01-18 10:38:47

18

我不會用convert。它在後臺使用Ghostscript,但速度要慢得多。我會直接使用Ghostscript,因爲它給了我更多的直接控制權(還有一些對設置的控制,使用convert更難實現)。而對於轉換爲PDF到PDF轉換工作,你就必須安裝反正Ghostscript的:

gs \ 
    -o /path/to/resized.pdf \ 
    -sDEVICE=pdfwrite \ 
    -dPDFFitPage \ 
    -r300x300 \ 
    -g2550x3300 \ 
    /path/to/original.pdf 
6

的Ghostscript的方式工作很適合我。 (我將我的文件從Windows PC移動到Linux計算機並在那裏運行。)我對Ghostscript命令做了一個小改動,因爲上面的Ghostscript resize命令完全填充了8.5 x 11英寸的頁面。但是,我的打印機無法打印到邊緣,因此每個頁面邊緣的幾個釐米都丟失了。爲了解決這個問題,我將PDF文檔的比例調整爲0.92,大小爲8.5英寸,寬度爲11英寸。這樣,我看到所有內容都集中在頁面上,並有微小的餘量。因爲0.92 *(2550x3300)=(2346x3036),我運行了下面的Ghostscript命令:

gs -sDEVICE=pdfwrite \ 
    -dPDFFitPage \ 
    -r300x300 \ 
    -g2346x3036 \ 
    /home/user/path/original.pdf \ 
    -o /home/user/path/resized.pdf 
相關問題