PS转矢量EPS问题:ps2eps输出光栅化的原因及解决方法
问题原因与解决方案
为什么输出是光栅化格式?
- 你的源文件
asdf.ps本身已经是符合EPS规范的文件(开头包含%!PS-Adobe-3.0 EPSF-3.0和%%BoundingBox声明),ps2eps默认处理流程中,可能调用了Ghostscript的光栅化设备(而非矢量输出设备)来处理文件,导致输出被光栅化。 - 另外,你的PostScript代码中存在颜色设置顺序问题:
1 setgray在fill之前执行,会覆盖之前的0 0 0 setrgbcolor设置,但这不会直接导致光栅化,只是会让圆形填充为白色,可能间接影响ps2eps的处理逻辑。
如何获取非光栅化的EPS输出?
方法1:直接使用源文件
你的asdf.ps已经是合法的EPS文件,只需将文件名后缀改为.eps即可,无需额外转换。
方法2:调整ps2eps参数强制矢量输出
使用-f参数强制ps2eps保留矢量数据,命令如下:
ps2eps -f asdf.ps
该参数会让ps2eps调用Ghostscript的矢量输出设备(如eps2write),避免光栅化处理。
方法3:修正PostScript代码的逻辑问题(可选)
代码中颜色设置顺序会导致填充颜色不符合预期,修正后代码如下:
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 400 400 % Draw a line 1 setlinewidth 0 0 moveto 200 200 lineto 0 0 1 setrgbcolor stroke % Draw a circle 100 100 40 0 360 arc 1 setlinewidth 0 0 0 setrgbcolor % 先设置填充颜色 fill stroke
修正后圆形会被填充为黑色,同时保持完整的矢量属性。
内容的提问来源于stack exchange,提问作者Mathew
相关产品推荐
相关产品推荐

