LaserJet 4000 及其较差的 PostScript 解释器

LaserJet 4000 及其较差的 PostScript 解释器

我有一台 HP 的旧款 LaserJet 打印机(具体来说,型号为 4000)。它应该可以理解 PostScript,但它经常拒绝打印其他打印机、evince 和 ghostscript 都完全可以接受的内容。我以前可以通过将ps2ps输出语言级别强制为 1 来解决这个问题,但这周我有一份文档,即使这样也不够好;它打印了两页 11 页然后就放弃了。如果我手动将文档送入 TCP 端口 9100 上的打印机以便查看错误(而不是使用打印后台处理程序),我会得到以下信息:

%%[ Error: undefined; OffendingCommand: ⬜ ]%%
%%[ Flushing: rest of job (to end of file) will be ignored ]%%

其中 ⬜ 应该是“此字体中没有此字符”的提示。不用说,文件中任何地方都没有非 ASCII 字符。立即出现问题的文档是 pdfTeX 输出,但我在从 Firefox、Inkscape 和 OpenOffice 打印时也遇到了这些问题(如果我没记错的话,所有这些程序都使用 cairo 来生成 PostScript,因此可能样本没有人们想象的那么大)。这是不是打印后台处理程序问题,我使用 netcat 手动给打印机供纸时也遇到同样的问题。

有人能建议针对此类问题的一般故障排除策略吗,以及/或者重新连接该死的东西以使其对输入不那么挑剔的方法吗?

答案1

您说 Ghostscript 对文件没有问题?好的,然后尝试这个:

第一个选项

  1. 首先将其转换为 PDF,然后
  2. 然后打印 PDF(通过后台处理程序的正常方式)。

这是一个 Ghostscript 命令行(适用于 Windows),它将创建 PDF:

gswin32c.exe ^
     -dBATCH ^
     -dNOPAUSE ^
     -sDEVICE=pdfwrite ^
     -dSAFER ^
     -r600x600 ^
     -dFIXEDMEDIA ^
     -sDEFAULTPAPERSIZE=a4 ^
     -dPDFSETTINGS=/printer ^
     -sOutputFile=problematic.pdf ^
     c:/path/to/your/problematic.ps

检查 stdout 和 stderr 输出,看看 Ghostscript 在转换时是否给出任何警告或错误。获得 PDF 后,检查使用了哪些字体(以及是否嵌入了这些字体)。

第二种选择:

  1. 首先将有问题的文件转换为 PCL,然后
  2. 然后打印 PCL(绕过后台处理程序,使用netcat)。

这是一个 Ghostscript 命令行(适用于 Windows),它将创建一个 PCL:

gswin32c.exe ^
     -dBATCH ^
     -dNOPAUSE ^
     -sDEVICE=ljet4d ^
     -dSAFER ^
     -r600x600 ^
     -dFIXEDMEDIA ^
     -sDEFAULTPAPERSIZE=a4 ^
     -sOutputFile=problematic.pcl ^
     c:/path/to/your/problematic.ps

相关内容