【问题标题】:How to print halftone from ghostscript?如何从ghostscript打印半色调?
【发布时间】:2019-08-12 19:02:52
【问题描述】:

我有一个带有图像和文本的 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 文件已生成,但图像似乎不是圆形半色调格式。我看不出图像有什么变化。

This is the original Image

我希望打印输出如下所示:Required output

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

【问题讨论】:

    标签: ghostscript postscript


    【解决方案1】:

    pdfwrite 不会创建单色输出,所以不,输出不会是半色调。 pdfwrite 设备的重点是保持输出的质量尽可能接近输入。

    没有办法从 pdfwrite 获取单色输出,除非输入中有单色。

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

    [添加]

    您所要求的就是我通常所说的难题,可能比您预期的要困难得多。

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

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

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

    显然,在你定义了你自己的半色调之后你会这样做。或者您可以编辑 PostScript 文件并删除半色调定义,通常不难找到。

    问题 2 是打印机制造商有时会“调整”解释器以始终使用他们喜欢的半色调并防止您在 PostScript 中覆盖它。找出是否发生这种情况的唯一方法是尝试快速测试;使用默认屏幕打印一个简单的图像,然后设置一个非常粗糙的屏幕,比如 10 lpi 并打印相同的图像。如果没有区别,那么您知道这不是一个可行的选择。如果有,那么你可以设置你想要的屏幕。

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

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

    更微妙的是,打印机中介质的可打印区域可能与介质的尺寸不同。纸张处理可能意味着纸张的某些区域无法打印,并且进纸的可变性可能意味着打印机无论如何都会拒绝打印到边缘。因为如果确实如此,并且在纸张处理中存在 1 毫米的偏差,那么 1 毫米的边缘会“脱落”,并且在另一边缘会有 1 毫米的白色间隙......

    【讨论】:

    • 您好 KenS 感谢您的回复。好的,我将跳过 pdf 输出。如何使用半色调直接输出到激光打印机?我在 Coreldraw 中有一个灰度图像。我从 Coreldraw 创建了 ps 文件,并在命令提示符下创建了什么命令,以便输出以 53 的频率以半色调输出。
    • 添加到我的答案太长,无法发表评论
    • 您好 KenS,感谢您的回复。我尝试从 Coreldraw 应用程序直接打印到打印机,我给的频率是 50,但它不打印半色调。我使用了 HP Universal PS 驱动程序和股票驱动程序。我已在以下链接中上传了 test.ps ps 文件:link 如果有可行的方法,我将不胜感激。我的要求是我想将此 PS 文件直接打印到半色调频率为 50 lpi 的激光打印机上。我所有的图像都是灰度的。粗屏幕 10 lpi 提供相同的输出。没有变化。
    • 好吧,PostScript 文件不包含 Hlftone 定义,也不执行 initgraphics,因此只需将半色调粘贴在文件前面即可。我不确定您为什么认为您的打印机没有对输出进行半色调处理,它确实必须是。当然,它可能使用不同的筛选方法,它可能使用随机筛选或其他东西。无论如何,如果打印机不执行 PostScript 半色调,那么您只能使用 Ghostscript 渲染它以获取图像,然后使用某些应用程序打开图像并打印它。您可能会为此使用 Corel。
    • 您好 KenS,感谢您的回复。这次我创建了一个 EPS 文件,我看到生成它的代码完全不同。是否可以对其进行编辑以将 Halftone 类型更改为 round 并将 Frequency 更改为 45-50 ?我已经上传了文件。我 pr link 我在 gsview 中打开了文件,然后给 pdf 一个打印命令,输出看起来很糟糕。我在这里唯一想要的是我想将半色调图案从线更改为圆形或点。这是pdf文件链接link
    猜你喜欢
    • 2017-11-24
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    相关资源
    最近更新 更多