2014-02-11 141 views
0

我在使用Ghostscript 9.10煩惱顯然刪除裁剪框以外的內容(特別是裁切標記我已經把那裏)Ghostscript刪除裁剪框外的內容?

這是使用ghostscript的前PDF:with_cropbox_before_optimize.pdf

$ pdfinfo -box with_cropbox_before_optimize.pdf 
    MediaBox:   0.00  0.00 651.97 898.58 
    CropBox:   28.35 28.35 623.62 870.24 

設置按預期顯示整個媒體框的查看器會在裁剪框外顯示裁切標記。 (黑色邊框有說明,其中裁剪框會)

然後我打電話:

gs -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -dCompatibilityLevel=1.7 \ 
-dNOPAUSE -dQUIET -dBATCH -dAutoRotatePages=/None -sOutputFile=<out.pdf> <in.pdf> 

其產生下列文件:with_cropbox_after_optimize.pdf

現在裁切標記丟失或至少他們不再被顯示 - 頁面尺寸仍然很好,但它沒有裁剪它或什麼...

$ pdfinfo -box with_cropbox_after_optimize.pdf 
    MediaBox:   0.00  0.00 651.97 898.58 
    CropBox:   28.35 28.35 623.62 870.24 

因此:我是做錯了還是這是一個錯誤?

+0

這裏是相同的PDF沒有裁剪框,​​它工作正常[no_cropbox_after_optimize.pdf](http://rakudave.ch/files/stackoverflow/no_cropbox_after_optimize.pdf)(他們不會讓我發佈3鏈接,所以我把最不重要的一個放在這裏^^) – user3297862

回答

0

要理解的第一件事(我知道我一直提到這一點,但人們不理解它)是Ghostscript和pdfwrite不是簡單地用你的PDF文件來搞砸。

解釋輸入的PDF文件,並將PDF標記操作轉換爲內部圖形原語,然後通過Ghostscript設備接口傳遞。一般來說,這些基元被渲染成位圖。在pdfwrite的情況下,原語被重新轉換爲PDF標記操作,並由它們彙編成一個全新的PDF文件。輸出與輸入無關,除視覺外觀外。

所以當你用Ghostscript處理你的PDF文件時,你並沒有'優化'它,你正在創建一個全新的PDF文件。

在你的情況下,CropBox外部的對象沒有被解釋(因爲它們在CropBox之外,所以它們被裁剪掉)。作爲一個明顯的結果,它們不通過設備接口,因此不會出現在輸出PDF文件中。

請注意,雖然Ghostscript裁剪到CropBox,即不影響媒體框,所以媒體仍然是相同的,但裁剪的對象被裁剪掉。您可以使用-dUseCropBox將媒體更改爲與CropBox相同,但這不是您想要的。

此刻我看不到CropBox被轉換成剪輯的位置,所以你最好的解決方案可能是在沒有剪裁框的情況下創建文件(或者將其刪除或設置爲MediaBox),然後添加它在處理文件時使用pdfmark。

+0

謝謝澄清 - 我認爲這可能是問題所在。仍然有一個-dDontRemoveStuff選項或其他... – user3297862