2017-08-06 83 views
0

我正在尋找能讓我閱讀,編輯和保存.eps文件的解決方案。我發現ghostscript可以提供所有這些機會。我需要的算法很簡單:讀取幾個.eps文件,將它們連接成一個大文件並保存新的.eps文件。我可以做到這一點,但有一個問題:新生成和保存的文件不保留漸變。漸變被光柵化,使用該漸變的形狀被轉換爲剪裁蒙版。有沒有辦法告訴ghostscript不要柵格化eps中的漸變?我如何告訴ghostscript不要光柵化eps文件中的漸變?

雖然我的Windows是64位(在64位版本的ghostscript上運行解決方案時出現問題),但我正在使用最新的32位版本的ghostscript庫。其實這並不重要,但我正在使用C#和Ghostscript.Net寫作。

這是示例代碼:

using (GhostscriptProcessor processor = new GhostscriptProcessor(lastInstalledVersion, true)) 
{ 
    List<string> switches = new List<string>(); 
    switches.Add("-o"); 
    switches.Add(@"-sOutputFile=" + outputFile); 
    switches.Add("-sDEVICE=eps2write"); 
    switches.Add("-dUseCIEColor=true"); 
    switches.Add("-c"); 
    switches.Add("<</Install {0.5 0.5 scale}>> setpagedevice"); 
    switches.Add("-f"); 
    switches.Add(inputFile); 

    processor.Process(switches.ToArray()); 
} 

回答

0

這個問題的答案你問的問題很簡單;你不能。該eps2write裝置被稱爲其是有原因的,它僅產生2級PostScript和shfill操作者,或2型圖案(PDF陰影字典)是一個3級的PostScript原語。

但是,無論如何,似乎沒有理由通過Ghostscript運行退出的文件。你說你已經有了一些EPS文件。的EPS文件的整點是,它們可以被視爲一個「黑盒子」,你不需要知道什麼是在他們爲了將它們連接起來,重新排列等

你要做的就是寫一些「包裝'在整個包含EPS文件之前改變CTM的PostScript。你可以制定出什麼樣的參數,以規模和翻譯應該是,因爲EPS文件將有%% BoundingBox的評論,告訴你它坐落在用戶空間。所有你需要做的是改變比例,並使用平移來抵消0,0原點(左下角)。

注意,eps2write設備,因爲它僅限於生產水平2的PostScript,也不支持PostScript的一些其它特徵超出了原來的2級規範,諸如CID字體小節。

+0

哇!感謝您的有用答案!我會盡力照你說的去做。 – Rustam

相關問題