簡體   English   中英

未應用 Postscript 剪切路徑

[英]Postscript clipping path not being applied

我正在嘗試在 EPS 邊界框周圍應用剪切路徑,以便有效地剪切其內容。 EPS 被命名為out-pdf.eps (這樣命名是因為它來自 PDF 到 EPS 的轉換),您可以在這里下載(大約 54MB)。 EPS 是 PDF 到 EPS 轉換的結果,並且其BoundingBox修改,因為它需要具有特定大小。

當我在一個簡單的 EPS 查看器上打開這個 EPS 時,它使用BoundingBox來呈現 EPS 大小,它顯示如下:

在此處輸入圖片說明

大小為 1740x842pts,這正是我想要的,但是,當我在 Adob​​e Illustrator 或 Inkscape 上打開它時, BoundingBox被忽略,我看到了整個 EPS:

在此處輸入圖片說明

因此,我嘗試在BoundingBox周圍應用剪切路徑,以便像這樣裁剪 EPS:

gswin32c.exe -q -dNOPAUSE -dBATCH -dSAFER -sDEVICE=eps2write -dDEVICEWIDTHPOINTS="1740" -dDEVICEHEIGHTPOINTS="842" -o "clip.eps" -c "0 0 1740 842 rectclip" -f "out-pdf.eps"

但這不起作用( 結果),EPS 看起來完全一樣! 但是,如果我使用較小的rectclip進行測試,它會起作用:

gswin32c.exe -q -dNOPAUSE -dBATCH -dSAFER -sDEVICE=eps2write -dDEVICEWIDTHPOINTS="1740" -dDEVICEHEIGHTPOINTS="842" -o "clip.eps" -c "0 0 1000 400 rectclip" -f "out-pdf.eps"

為什么rectclip在第一種情況下不起作用? 我一定遺漏了一些非常微不足道的東西,但我已經掙扎了 2 天,我找不到解決方案!

嗯,這是與設備 (eps2write) 工作方式有關的一個微妙點。 盡管您沒有這么說,但也已使用 eps2write 設備完成了 PDF 到 EPS 的轉換。 順便說一句,你應該升級,9.21是3歲。

請注意,EPS 文件只不過是一個巨大的圖像,我假設原始 PDF 文件包含透明度,這導致整個頁面以 720 dpi 呈現為位圖。

處理提供的 EPS 文件時,最初將剪輯設置為媒體大小; 如果您的文件(使用 -dEPSCropt)為 1740x842。

然后您使用 rectclip 將剪輯設置為相同的路徑。

寫出內容時,設備會忽略初始剪輯,因此它最終不會向輸出發出虛假剪輯。 由於您的剪輯與初始剪輯完全相同,因此設備無法將其檢測為不同,因此會忽略它。

在第二種情況下,剪輯與初始剪輯不同,因此設備實際上將剪輯路徑寫入 EPS 輸出文件。

所以 rectclip 所做的就是添加一個剪輯路徑,剪輯出圖像的一部分。 它不會使文件變小。

你還沒說你如何建立從PDF EPS文件,但它可能是能夠在點添加rectclip,由此產生的EPS你想要的大小,並包含要剪輯。 否則,您可以使 rectclip 與 EPS BoundingBox 略有不同,它最終會被應用。

或者您可以接受這樣一個事實,即您在 Illustrator 和 Inkscape 中看到的內容實際上就是文件中的內容。 雖然 BoundingBox 注釋告訴導入應用程序打算如何放置文件,但它畢竟只是一個注釋。

哦,最后您可以將原始 PDF 文件渲染為圖像,按照您想要的方式剪輯,然后使用 ImageMagick 或您選擇的圖像處理包,將其轉換為 EPS。

編輯

好的,我認為你可以解決這個問題。 因為您生成的是 EPS 文件,而不是完整的 PostScript 程序,所以您實際上並不關心媒體大小是多少。 eps2write 設備計算 BoundingBox,它根本不使用實際的媒體大小。

所以你可以做的是將媒體大小設置為高於 BoundingBox,然后應用你真正想要的剪輯。 生成的 EPS 文件仍將具有正確的 BoundingBox 注釋,並將包含您想要的剪輯。 它也將有一個 MediaBox,但因為這是一個永遠不會實際使用的 EPS 文件。

我使用了這個命令行:

gswin64c -sDEVICE=eps2write -dDEVICEWIDTHPOINTS="2000" -dDEVICEHEIGHTPOINTS="842" -o "clip.eps" -c "0 0 1740 842 rectclip" -f "out-pdf.eps"

生成包含您想要的剪輯的新 EPS 文件 (clip.eps)。 請注意, -o開關包括-dBATCH-dNOPAUSE因此如果使用-o則不需要這兩個開關。 如果您使用最新版本的 Ghostscript,則也不需要-dSAFER ,因為它現在是默認設置。

我也試過這個:

gswin64c -sDEVICE=eps2write -dDEVICEWIDTHPOINTS="1740" -dDEVICEHEIGHTPOINTS="842" -o "clip.eps" -c "0 0 1740 841.9 rectclip" -f "out-pdf.eps"

並且創建了一個包含剪輯的EPS文件,所以看起來即使與初始剪輯的微小偏差也會導致它被寫入輸出,正如我所想的那樣。 然而,941.91沒有,所以看起來0.1點左右是模糊的。

當然,我使用的是 Ghostscript 的當前版本 (9.53.0),早期版本的行為可能有所不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM