2013-08-30 177 views
7

任何想從瀏覽器進行無人值守打印的人都知道,這不是一件容易的事情,另一方面它對於任何後臺應用程序都非常有用。然後谷歌用GCP來拯救我們。使用Google雲打印的打印機設置

因此,我安裝了它,並在幾分鐘內打印了一份文檔。但之後我想將一些設置應用到打印機。這是你意識到文檔完全缺乏的時刻。它甚至沒有解釋如何做一些簡單的事情,比如將頁面設置爲橫向。

documentation只是說,你必須在發送或XPS格式PPD一個能力參數。即使您能夠檢索打印機的功能,您也會意識到,顧名思義,它描述了打印機的所有功能,而不是特定打印作業的設置。

那麼您如何真正指定打印作業設置?

回答

16

首先,GCP文檔錯誤地指出您可以使用/ list服務界面檢索打印機功能。這是行不通的。您必須打電話給確實能夠返回打印機功能的打印機服務。這些功能僅僅是一個JSON列表,每個JSON描述一個打印機參數以及參數可以使用的可能值。有時它也可以包含一些附加信息。這是例如通過我的HP支持的頁面大小的一小摘錄:

"name": "psk:PageMediaSize", 
"psf:SelectionType": "psk:PickOne", 
"psk:DisplayName": "Paper Size", 
"type": "Feature", 
"options": [ 
    { 
    "psk:MediaSizeWidth": "215900", 
    "name": "psk:NorthAmericaLetter", 
    "psk:MediaSizeHeight": "279400", 
    "psk:DisplayName": "Letter" 
    }, 
    { 
    "psk:MediaSizeWidth": "215900", 
    "name": "psk:NorthAmericaLegal", 
    "psk:MediaSizeHeight": "355600", 
    "psk:DisplayName": "Legal" 
    } 
    ] 

通過查看瀏覽器從GCP對話框發送POST請求我發現了/提交服務不使用功能參數。它實際上使用名爲票證的參數來指定打印作業設置。該參數的格式很簡單,它是一個JSON看起來像這樣:

{ 
"version":"1.0", 
"print":{ 
    "color":{"vendor_id":"psk:Color","type":0}, 
    "duplex":{"type":0}, 
    "page_orientation":{"type":1}, 
    "copies":{"copies":1}, 
    "dpi":{"horizontal_dpi":600,"vertical_dpi":600}, 
    "media_size":{"width_microns":148000,"height_microns":210000,"is_continuous_feed":false}, 
    "collate":{"collate":true}, 
    "vendor_ticket_item":[ 
     //Printer specific settings here, from the capabilities: 
     {"id":"psk:JobInputBin","value":"ns0000:Tray3"}, 
     {"id":"psk:PageICMRenderingIntent","value":"psk:Photographs"}, 
     {"id":"psk:PageMediaType","value":"ns0000:Auto"}, 
     {"id":"psk:JobOutputBin","value":"ns0000:Auto"}, 
     //etc. 
    ] 
    } 
} 

參數的第一部分對應於從打印對話框的基本設置和他們是相當不言自明的和值很容易改變。 vendor_ticket_item數組有點複雜。它包含我們之前檢索的打印機功能所描述的id /值對。該ID將包含從功能參數和將包含名在參數選項中的記錄,或數值等一個,如功能描述。

這應該對大多數參數都適用,但如果卡住了,無法找出正確的值,則可以隨時在Chrome中打開示例文檔並打印出來。選擇一臺GCP打印機,然後單擊「使用Google雲打印對話框打印...」,然後從「高級選項」中進行所需的確切設置。使用類似Fiddler的東西,將Chrome請求的POST請求中的ticket參數的值提取到/ cloudprint/submit服務。

+0

您是如何捕獲從GCP對話框提交的POST的?我無法做到這一點。我使用的是代理服務器,而不是提琴手,但是當點擊「打印」時沒有提交POST請求。 –

+0

您能夠選擇輸入托盤嗎?如果是這樣,您使用的是哪種打印機?我無法弄清楚如何讓GCP在我的打印機上選擇一個托盤,而且我很難找到關於打印機的信息。 – TimSum