打印 PostScript 文件时出现纹理条纹

Texture stripe appears when printing a PostScript file

我正在使用 PostScript 语言描述一页均匀排列的点。这些点是600dpi,也就是说一英寸有600个点。我用一位来表示 PostScript 中的每个点,1 表示空白,0 表示黑点。

我的以点为单位的 PostScript 文件:

%% SetPageSize
/setPageSize {<</PageSize [595 842] >> setpagedevice} def
setPageSize
%% Dot Code
gsave
/mm {2.834645 mul} def
1 mm 1 mm translate
5.76 5.76 scale
48 48 1 [48 0 0 -48 0 48]
{<
fff7ff7ff7ff
ffffffffffff
ffffffffffff
fdffffffffff
ffffffffff7f
ffffffffffff
ffffffffffff
ffffffffffff
fffff7ffffff
fffffffdffff
ffffffffffff
ffffffffffff
7ff7ff7ff7ff
ffffffffffff
ffffffffffff
ffffffffffff
ffffffffffff
ffffffffffff
fffefffffeff
ffffffffffff
f7ffffff7fff
ffffffffffff
ffffffffffff
ffffffffffff
7ff7ff7ff7ff
ffffffffffff
ffffffffffff
fffffffdffff
fffff7ffffff
ffffffffffff
ffbfffffffff
ffffffffffff
fffffffffff7
ffffffffffff
ffffffffffff
ffffffffffff
7ff7ff7ff7ff
ffffffffffff
ffffffffffff
ffffffffffff
f7ffffffffff
ffffffffffff
fffffffffffb
ffffffffffff
ffffffff7fff
7fffdfffffff
ffffffffffff
ffffffffffff
>}
image
grestore

这些点可以用GhostScript或者Adobe-Illustrator打开,在显示器上显示的非常清晰。

样本点在 AI 中放大了 4800%。

然而打印的点出现纹理条纹。我使用的打印机是喷墨打印机Cannon ip2780和激光打印机FX DocuPrint CP105b。

600dpi(激光)打印结果。垂直纹理条纹不如800dpi明显。

800dpi(激光)打印结果。垂直纹理条纹更明显。 2、4、6 号线比 1、3、5 号线轻。但是点的密度应该是一样的。

800dpi(喷墨)的打印结果。出现水平和垂直纹理条纹。

谁能帮忙解释一下打印机的奇怪行为是如何发生的?或者我组成点单位的方式是错误的。

  1. 可以用translate频繁移动用户space吗,尤其是位置是float值(精度够不够)?

  2. 我可以用scale手动把dpi改成600吗,有什么方法可以改输入dpi吗?

提前致谢!

您看到的是信号混叠,更准确地说是 moiré pattern。发生的事情是您打印的点不完全与打印机点阵(屏幕)对齐。

不同的打印机有不同的屏幕,您的像素与它们的对齐方式也不同。因此,有时您的点会分布在 2 个打印机像素上,有时则不会。如果你真的想这样做,那么如果你使用这种方法,每个设备都应该需要它自己的半色调图案。

进一步阅读:

joojaa 是对的,它是 600 到 800 dpi 之间的干涉图案。您需要找到更高分辨率的打印机或降低点阵图案的分辨率。尝试将图像数组 [48 0 0 -48 0 48] 中的数字 48 减少 5 或 10 左右,然后再次打印直到图案消失,这将是您的打印机所能做的最好的事情。