首先,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