2017-08-06 90 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