【发布时间】:2011-11-09 21:36:38
【问题描述】:
我的 PostScript 3 打印机出现问题,该打印机带有多个装有 A4 和 A3 纸的纸盘。在使用 CUPS 系统的 Linux 下,我现在通过指定 media=a4 选项或定义两台单独的打印机手动设置正确的纸张尺寸:一台用于 A4,一台用于 A3。
但是,这种情况远非最佳,因为您始终必须记住选择正确的打印机。
由于 PostScript 是一种图灵完备的语言,在阅读了 Red Book 和 Blue Book 的一些内容后,我有一个问题:
是否可以修改打印机的 PPD 文件以生成“自动选择纸张尺寸”选项,如果激活该选项,则会自动设置正确的介质尺寸?也许取决于打印输出的边界框大小?
也许是这样开始的:
PostScript 代码
% set pagesize A4
/setA4Paper {<</PageSize [595 842] >> setpagedevice} def
% set pagesize A3
/setA3Paper {<</PageSize [842 1190] >> setpagedevice} def
% decide which paper size to take based on the bounding box
% (array of two elements, width and height)
% if the bounding box is wider that A4 paper, pick A3 paper instead
boundingBox 0 get 595 gt {setA3Paper} {setA4Paper} ifelse
详细问题
- 如何获取页面边框信息?是否有我可以查看的标准文档或更多文档?
- 在我的示例代码中设置 PageSize 是否足以让打印机选择正确的纸盘?
- 有没有办法从打印机的 PPD 文件中找出切换纸盘需要哪些 PS 命令?此外,这台打印机为每种尺寸提供两个纸盘,因此如果一个纸用完,打印机可以选择装满的纸盘。
编辑
从 KenS 的回答看来,似乎没有简单的方法可以直接从 PostScript 中获取边界框。有没有办法在将 PS 文件发送回 CUPS 队列或发送到打印机之前通过自定义脚本路由 PS 文件?
【问题讨论】:
标签: postscript