从ghostscript打印半色调

时间:2019-07-11 17:22:37

标签: ghostscript postscript

我有一个带图片和文字的ps文件。我想将其打印到激光打印机上,以使图像以半色调圆形图案打印。

我正在尝试从命令行打印它。我希望先输出PDF,然后再打印到激光打印机。

我在Windows 10中安装了HP Laserjet P2015打印机。

gswin64c.exe -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=output.pdf test.ps -c "<< /HalftoneType 1 /Frequency 37 /Angle 45 /SpotFunction {180 mul cos exch 180 mul cos add 2 div} >> sethalftone"

已生成PDF文件,但是图像似乎不是Round Halftone格式。我没有看到图像的变化。

This is the original Image

我希望打印输出看起来像这样:Required output

由于某种原因,输出结果与原始结果相同。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

pdfwrite不会创建单色输出,因此不会,输出不会被色调化。 pdfwrite设备的重点是保持输出在质量上与输入尽可能接近。

除非输入中包含单色,否则无法从pdfwrite获取单色输出。

如果您改用单色输出设备(例如tiffg3或tiffg4),则应该会有所不同,除非输入文件(您未提供)也设置了一个屏幕,在这种情况下,遇到的最后一个将生效。也就是说,如果PostScript输入文件指定了一个半色调屏幕,那么它将被使用。

[添加]

您要问的是我通常形容为一个难题,可能比您预期的要困难得多。

最好的选择是将PostScript直接发送到打印机,因为它支持PostScript。

问题1;您的PostScript文件中可能已经包含一个半色调,该半色调将覆盖您要使用的半色调。通常,您可以通过重新定义sethalftone和setscreen运算符来避免这种情况:

/ sethalftone {pop}绑定定义 / setscreen {pop pop pop}绑定定义

很明显,您在定义了自己的半色调之后就可以这样做。或者,您也可以只编辑PostScript文件并删除半色调定义,通常很难找到它。

问题2是打印机制造商有时会“调整”解释程序以始终使用其首选的半色调,并阻止您在PostScript中覆盖它。找出是否正在发生的唯一方法是尝试快速测试。使用默认屏幕打印一个简单的图像,然后设置一个非常粗糙的屏幕(例如10 lpi)并打印相同的图像。如果没有区别,那么您知道这不是一个可行的选择。如果有,那么您可以只设置所需的屏幕。

现在,如果打印机不允许您更改半色调,那么唯一的解决方案是使用Ghostscript将PostScript渲染为图像(这将使您更改半色调),然后将生成的图像发送到打印机。您将需要使用1bpp设备,像tiffg3或tiffg4之类的东西应该可以正常工作。

这里的问题是,您需要确保图像适合打印机的介质,因为如果不适合,则可能是打印机会稍微缩小图像以使其适合,从而挤压图像半色调单元。

更巧妙的是,打印机中介质的可打印区域可能与介质的大小不同。纸张处理可能意味着纸张的某些区域无法被打印,进纸的可变性可能意味着打印机无论如何都会拒绝直接打印到边缘。因为如果这样做的话,比如说在纸张处理中有1mm的偏差,那么1mm的边缘就会掉落,而另一边缘会有1mm的白色缝隙.....