如何将打印机驱动程序参数放在 postscript 打印文件中?
How to place printer driver parameters in postscript print file?
我有一个 post 脚本文件,它具有严重的打印机驱动程序设置依赖性。我正在尝试将打印机设置捆绑到我的 post 脚本打印文件中并将其传递给打印机。直通与 `lpr -l 一起工作得很好。但我无法将 ppd 中的某些选项直接带入 post 脚本文件。
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
尽管如此,这个 post 中的 setpagedevice 选项工作得很好:
How to select PostScript printer output tray
所以我不知道如何将 ppd 选项转换为有效的 postscript 代码。有没有人知道如何获得有效的 post 脚本文件?
您正在尝试将特定于设备的控件 (/OutputMode) 应用到不支持该控件的设备。不仅如此,您包含的代码还会访问当前页面设备字典,并且假设其中将有一个 PostRenderingEnhanceDetails 字典。该代码不会尝试检查所需数据是否存在,这意味着它只能在页面设备字典中具有 /PostRenderingEnhanceDetails 条目的设备上运行。 pdfwrite 设备(ps2pdf 使用的设备)没有这样的条目,这就是您收到错误的原因。
您的 PostScript 可能没有任何问题,只是您无法将它应用到该设备。请注意,您 link 问题中的所有键都是标准页面设备字典条目,OutputMode 不是,也没有 PostRenderingEnhanceDetails 条目。
PPD(PostScript 打印机描述)中的 PostScript 代码是您需要使用的全部内容,但 PPD 的目的是包含 PostScript,它将仅可靠地工作打印机的用途。您不能使用 Ghostscript 测试为非 Ghostscript 设备配置的特定于设备的 PostScript 的正确性。
我有一个 post 脚本文件,它具有严重的打印机驱动程序设置依赖性。我正在尝试将打印机设置捆绑到我的 post 脚本打印文件中并将其传递给打印机。直通与 `lpr -l 一起工作得很好。但我无法将 ppd 中的某些选项直接带入 post 脚本文件。
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
尽管如此,这个 post 中的 setpagedevice 选项工作得很好: How to select PostScript printer output tray
所以我不知道如何将 ppd 选项转换为有效的 postscript 代码。有没有人知道如何获得有效的 post 脚本文件?
您正在尝试将特定于设备的控件 (/OutputMode) 应用到不支持该控件的设备。不仅如此,您包含的代码还会访问当前页面设备字典,并且假设其中将有一个 PostRenderingEnhanceDetails 字典。该代码不会尝试检查所需数据是否存在,这意味着它只能在页面设备字典中具有 /PostRenderingEnhanceDetails 条目的设备上运行。 pdfwrite 设备(ps2pdf 使用的设备)没有这样的条目,这就是您收到错误的原因。
您的 PostScript 可能没有任何问题,只是您无法将它应用到该设备。请注意,您 link 问题中的所有键都是标准页面设备字典条目,OutputMode 不是,也没有 PostRenderingEnhanceDetails 条目。
PPD(PostScript 打印机描述)中的 PostScript 代码是您需要使用的全部内容,但 PPD 的目的是包含 PostScript,它将仅可靠地工作打印机的用途。您不能使用 Ghostscript 测试为非 Ghostscript 设备配置的特定于设备的 PostScript 的正确性。