首先,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服務。
您是如何捕獲從GCP對話框提交的POST的?我無法做到這一點。我使用的是代理服務器,而不是提琴手,但是當點擊「打印」時沒有提交POST請求。 –
您能夠選擇輸入托盤嗎?如果是這樣,您使用的是哪種打印機?我無法弄清楚如何讓GCP在我的打印機上選擇一個托盤,而且我很難找到關於打印機的信息。 – TimSum