【问题标题】:How to place printer driver parameters in postscript print file?如何将打印机驱动程序参数放在 postscript 打印文件中?
【发布时间】:2020-04-02 18:47:24
【问题描述】:

我有一个 postscript 文件,该文件具有严重的打印机驱动程序设置依赖性。我正在尝试将打印机设置捆绑到我的 postscript 打印文件中并将其传递给打印机。直通与 `lpr -l 一起工作得很好。但我无法将 ppd 中的一些选项直接带入 postscript 文件中。

Xerox pdd 文件被截断

*OpenUI *OutputMode/Print Quality: PickOne
*OrderDependency: 46.0 AnySetup *OutputMode
*DefaultOutputMode: HighSpeed
*OutputMode HighSpeed/High Speed: "
    <</PostRenderingEnhance true
    /PostRenderingEnhanceDetails currentpagedevice
    1 index get 1 dict copy
    dup /Type 33 put
    dup /OutputMode (high-speed) put
    >> setpagedevice
"
*End
*OutputMode HighQuality/High Quality: "
    <</PostRenderingEnhance true
    /PostRenderingEnhanceDetails currentpagedevice
    1 index get 1 dict copy
    dup /Type 33 put
    dup /OutputMode (highest-quality) put
    >> setpagedevice
"
*End
*OutputMode HighResolution/High Resolution: "
    <</PostRenderingEnhance true
    /PostRenderingEnhanceDetails currentpagedevice
    1 index get 1 dict copy
    dup /Type 33 put
    dup /OutputMode (highest-resolution) put
    >> setpagedevice
"
*End
*CloseUI: *OutputMode

当我将最高分辨率的部分放在 %%BeginPrelog 部分的开头时,我得到一个无效文件:

<</PostRenderingEnhance true
/PostRenderingEnhanceDetails currentpagedevice
1 index get 1 dict copy
dup /Type 33 put
dup /OutputMode (highest-resolution) put
>> setpagedevice

当我通过 ps2pdf 评估文件的正确性时,我收到以下错误:

Error: /undefined in --get--
Operand stack:
   --nostringval--   PostRenderingEnhance   true   PostRenderingEnhanceDetails   --dict:210/309(ro)(L)--   PostRenderingEnhanceDetails
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1990   1   3   %oparray_pop   1989   1   3   %oparray_pop   1977   1   3   %oparray_pop   1833   1   3   %oparray_pop   --nostringval--   %errorexec_pop   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--
Dictionary stack:
   --dict:731/1123(ro)(G)--   --dict:0/20(G)--   --dict:75/200(L)--
Current allocation mode is local
Current file position is 308
GPL Ghostscript 9.50: Unrecoverable error, exit code 1

不过,这篇文章中的 setpagedevice 选项可以正常工作: How to select PostScript printer output tray

所以我不知道如何将 ppd 选项转换为有效的 postscript 代码。有没有人有线索,如何获得一个有效的后记文件?

【问题讨论】:

    标签: printing driver ghostscript postscript ppd


    【解决方案1】:

    您正在尝试将特定于设备的控件 (/OutputMode) 应用于不支持该控件的设备。不仅如此,您包含的代码还会访问当前页面设备字典并假定其中会有 PostRenderingEnhanceDetails 字典。该代码不会尝试检查所需数据是否存在,这意味着它只能在页面设备字典中具有 /PostRenderingEnhanceDetails 条目的设备上工作。 pdfwrite 设备(这是 ps2pdf 使用的)没有这样的条目,这就是您收到错误的原因。

    您的 PostScript 可能没有任何问题,只是您无法将其应用于该设备。请注意,您链接到的问题中的所有键都是标准页面设备字典条目,OutputMode 不是,也没有 PostRenderingEnhanceDetails 条目。

    您只需要使用 PPD(PostScript 打印机描述)中的 PostScript 代码,但 PPD 的观点是包含将在其预期的打印机上可靠工作的 PostScript .您不能使用 Ghostscript 来测试为非 Ghostscript 设备配置的特定设备 PostScript 的正确性。

    【讨论】:

    • 哦,是的,感谢您的澄清,我对“有效”文件的测试是问题所在。你是对的,打印机能够处理文件并且打印机设置也正确设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    相关资源
    最近更新 更多