问题描述
我正在使用在同一页面上多次使用sethalftone
的Postscript文件。在我的打印机上,我得到了预期的结果,但是当使用ghostscript时,整个页面在同一屏幕上呈现。我将其简化为以下示例:
%!PS-Adobe-3.0
<< /PageSize [99 33] >> setpagedevice
/size 33 def
/rect {
newpath
0 0 moveto
size 0 lineto
size size lineto
0 size lineto
closepath
fill
} def
0.5 0.5 0.5 0.5 setcmykcolor
rect
<< /HalftoneType 1 /Frequency 100 /Angle 60 /SpotFunction { pop } >> sethalftone
size 0 translate
rect
<< /HalftoneType 1 /Frequency 100 /Angle 45 /SpotFunction { pop } >> sethalftone
size 0 translate
rect
showpage
为此,gs -dnopAUSE -dBATCH -r600 -sDEVICE=tiffsep1 -sOutputFile=test%d.tif test.ps
(版本9.52)为我提供了以下通道图像(所有通道都相同):
在第一个sethalftone
命令之前移动第一个rect
时,我得到了这些通道图像,这些图像包含伪像,并且仍然具有相同的半色调:
很明显,半色调缓冲区中存在某种内存损坏。 在开始时只设置一个半色调(在使用默认值之前)可以正常工作。
所以标题中的问题仍然存在:是否可以在附言的同一页上使用多个不同的半色调?
PS:将每个矩形和半色调分离到自己的页面上时,我仍然会遇到内存损坏的情况,但是半色调的应用方式似乎有所不同。
解决方法
您可以在PostScript程序的任何时候更改半色调。不必在页面开头或程序开头。