對於裝有A4和A3紙的多個紙盒的PostScript 3打印機,我遇到了問題。在使用CUPS系統的Linux下,我現在通過指定media = a4選項或定義兩個單獨的打印機來手動設置正確的紙張大小:一個用於A4,一個用於A3。使用PostScript自動選擇紙張
但是,這種情況遠未達到最佳狀態,因爲您必須始終記住選擇合適的打印機。
爲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
細節問題
- 我如何獲得頁面邊框的信息?有沒有一個標準或更多的文件,我可以看看?
- 在我的示例代碼中設置頁面大小是否足以讓打印機選擇正確的紙盒?
- 有沒有辦法從打印機的PPD文件中找出哪些PS命令是切換紙盒所必需的?此外,該打印機每個尺寸都有兩個托盤,所以如果打印機在紙張用完時將拾取滿紙盤,那將會很不錯。
編輯
從KENS的回答似乎有越來越直接邊界框出的PostScript的沒有簡單的方法。有沒有辦法通過自定義腳本路由PS文件,然後將其發送回CUPS隊列或發送到打印機之前?
感謝您的見解。如果在PPD中有托盤切換代碼,我認爲我需要進行反向工程。我認爲應該有一些,因爲可以在打印機的CUPS設置中選擇紙張尺寸。此外還指定了每個紙盒中的介質。在我看來,這比我想象的要複雜一點。 – GorillaPatch