2017-02-09 32 views
0

我目前使用phantomjs呈現特定的網頁,其中包含兩個重疊的圖像。生成PDF後,我將生成的PDF重新縮放到適當的大小 - 目前縮小到原始大小的三分之一。當比較轉換後的phantomjs PDF和縮小的PDF時,我可以清楚地看到圖像不再被對齊(它們在轉換後的圖像中)使用ghostscript縮小PDF導致圖像不被alinged

看看放大的圖像(3200%詳細顯示問題)區域,問題發生在哪裏。藍色圖像(SVG)是覆蓋較深的一個(PNG) - 兩者都在右側完全一致(白色區域是PDF的一部分)) Converted

但是,使用ghostscript的縮放此圖像時:gs -o /path/to/output.pdf -sDEVICE=pdfwrite -dPDFFitPage -r300x300 -g2676x2676 /path/to/input.pdf (即使它得到下來縮放,而不是縮放,圖像不再對齊: enter image description here

(兩個圖像都放置position:absolute; right: 0;,所以無論在右側很好地對齊)

什麼會導致這種行爲,以及如何避免這種行爲?

回答

0

這種行爲可能在PDF使用者中,而不是在Ghostscript中。

首先,您需要注意的是,當你運行通過Ghostscript的PDF文件,並通過pdfwrite裝置產生一個PDF文件,你是絕對「調整大小」,「縮減」,「合併」或這意味着任何其他條款輸出PDF文件的內容與輸入內容有任何關係。

'概述'here解釋了爲什麼,我建議你閱讀它。

現在我不能確定沒有看到PDF文件(您沒有給我們),但是..絕大多數可能的原因是算術中舍入誤差意味着輸出PDF文件中的圖像不在精確地與輸入相同的位置(並且不,無法避免)。

當您「放大」時,您正在修改當前變換矩陣,座標的算術精度的微小差異會乘以「縮放因子」。如果對象覆蓋超過1/2像素,通常像素是「開」,如果縮放正好合適,它可能很容易意味着頂層圖像中的像素(假設它是*圖像)幾乎沒有超過1/2像素,而下面的圖像剛剛低於1/2像素。導致你看到的不匹配。

即使沒有您正在進行的轉換,這類問題也可能存在,經過培訓的圖形設計人員會意識到這一點,並以防止問題發生的方式創建內容。要麼沒有需要精確對齊的圖像,或者如果必須,則圖像都要延伸到您希望它們結束的位置,然後在兩個圖像周圍放置一個剪切矩形。這樣,無論如何縮放剪切矩形,圖像將始終在同一點剪切。