【问题标题】:What are limitations of PostScript 'image' command on HP LaserJet printers?HP LaserJet 打印机上的 PostScript 'image' 命令有哪些限制?
【发布时间】:2013-08-25 05:28:51
【问题描述】:

我尝试将手工制作的 PostScript 代码注入到由 pscript5.dll 生成的较大文档中。

我使用取自 http://paulbourke.net/dataformats/postscript/ 的方法(出于某种奇怪 原因,我之前使用相同转换矩阵打印 4 位单十六进制字符 (0..f) 的代码 - 停止工作)。

所以,示例代码是:

100 200 translate
26 34 scale
26 34 8 [26 0 0 -34 0 34]
{<
ffffffffffffffffffffffffffffffffffffffffffffffffffff
ff000000000000000000000000000000000000ffffffffffffff
ff00efefefefefefefefefefefefefefefef0000ffffffffffff
ff00efefefefefefefefefefefefefefefef00ce00ffffffffff
ff00efefefefefefefefefefefefefefefef00cece00ffffffff
ff00efefefefefefefefefefefefefefefef00cecece00ffffff
ff00efefefefefefefefefefefefefefefef00cececece00ffff
ff00efefefefefefefefefefefefefefefef00000000000000ff
ff00efefefefefefefefefefefefefefefefefefefefefef00ff
ff00efefefefefefefefefefefefefefefefefefefefefef00ff
ff00efefefefefefefefefefefefefefefefefefefefefef00ff
ff00efef000000ef000000ef000000ef0000ef0000efefef00ff
ff00efefefefefefefefefefefefefefefefefefefefefef00ff
ff00efefefefefefefefefefefefefefefefefefefefefef00ff
ff00efef000000ef00000000ef00000000ef000000efefef00ff
ff00efefefefefefefefefefefefefefefefefefefefefef00ff
ff00efefefefefefefefefefefefefefefefefefefefefef00ff
ff00efef0000ef00000000000000ef000000ef0000efefef00ff
ff00efefefefefefefefefefefefefefefefefefefefefef00ff
ff00efefefefefefefefefefefefefefefefefefefefefef00ff
ff00efefefefefefefefefefefefefefefefefefefefefef00ff
ff00efefefefefefefefefefefefefefefefefefefefefef00ff
ff00efefefefefefefefefefefefefefefefefefefefefef00ff
ff00efefefefefefefefefefefefefefefefefefefefefef00ff
ff00efefefefefefefefefefefefefefefefefefefefefef00ff
ff00efefefefefefefefefefefefefefefefefefefefefef00ff
ff00efefefefefefefefefefefefefefefefefefefefefef00ff
ff00efefefefefefefefefefefefefefefefefefefefefef00ff
ff00efefefefefefefefefefefefefefefefefefefefefef00ff
ff00efefefefefefefefefefefefefefefefefefefefefef00ff
ff00efefefefefefefefefefefefefefefefefefefefefef00ff
ff00efefefefefefefefefefefefefefefefefefefefefef00ff
ff000000000000000000000000000000000000000000000000ff
ffffffffffffffffffffffffffffffffffffffffffffffffffff
>}
image
showpage

接着,在 HP LaserJet 1320 上将源图像 (png) 转换为 1 位(因此将每个像素打印为“00”或“FF”),我偶然发现了一个奇怪的问题:在图像大小达到某个值之间128x128 和 300x450,打印机打印白色矩形而不是预期的图像。总测试文档大小为 2..9 MB。

Ghostscript-9.07 解释器正确显示较大的插入图像,但它似乎与 HP 的嵌入式解释器在实现上有所不同 - 它仍然可以与我之前提到的代码一起正常工作,并且软件解释器的许可是一个事实

除了暴力破解打印机来确定最大值之外,还有哪些可能的方法来解决白方问题。使用“图像”方法的可打印数据大小?


更新:300x300 确认可打印,但随机 500x500 图像不可打印:( 在 280 多个字符处换行 - 没有帮助。

【问题讨论】:

  • 尝试一些已建立的代码,例如 pnmtops。

标签: postscript


【解决方案1】:

对于非常大的图像,您将开始遇到各种实施限制。常见的限制是字符串、数组和字典中的 65535 个元素。如果您的图像数据大于 64k,则需要将其切成 64k 块并分别提供给image(为此,image 采用过程参数而不仅仅是字符串数据源)。

如果您只是嵌入数据以供一次性使用,您可以使用标准的成语进行预读 进入缓冲区。

/buf 100 string
26 34 8 [26 0 0 -34 0 34]
{ currentfile buf readhexstring }
image
%hex data starts here

image 可以被认为是一个循环运算符,它将不断调用提供的过程以获取更多数据。该过程甚至不需要返回完整的行,只需要返回一小段字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-04
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多