Trước hết tài liệu GCP không chính xác cho biết bạn có thể truy xuất các khả năng của máy in bằng giao diện dịch vụ/danh sách. Điều đó không hiệu quả. Bạn phải gọi dịch vụ/máy in để trả lại các khả năng của máy in. Các khả năng chỉ đơn giản là một danh sách các JSON mỗi mô tả một tham số máy in và các giá trị có thể có tham số có thể thực hiện. Đôi khi nó có thể chứa một số thông tin bổ sung là tốt. Dưới đây là ví dụ một chiết xuất nhỏ kích thước trang được hỗ trợ bởi HP của tôi:
"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"
}
]
Bằng cách nhìn vào yêu cầu POST mà Chrome gửi đi từ hộp thoại GCP Tôi đã phát hiện ra rằng các dịch vụ/trình không sử dụng một khả năng ở tất cả. Nó thực sự sử dụng tham số được gọi là vé để chỉ định cài đặt lệnh in. Định dạng của tham số là khá đơn giản, đó là một JSON trông như thế này:
{
"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.
]
}
}
Phần đầu của các thông số tương ứng với các thiết lập cơ bản từ hộp thoại in ấn và họ đang khá tự giải thích và các giá trị dễ thay đổi. Các mảng vendor_ticket_item phức tạp hơn một chút. Nó chứa các cặp id/giá trị được mô tả bởi các khả năng của máy in mà chúng tôi đã truy xuất trước đó. Các id sẽ chứa tên của tham số từ các khả năng và giá trị sẽ chứa tên của một trong những hồ sơ trong các tùy chọn tham số, hoặc một giá trị số vv, như mô tả trong khả năng.
Điều đó sẽ chỉ hoạt động tốt với hầu hết các thông số, nhưng nếu bạn gặp khó khăn và không thể tìm ra giá trị chính xác, bạn luôn có thể mở tài liệu mẫu trong Chrome và in. Chọn máy in GCP và sau đó nhấp vào "In bằng hộp thoại Google Cloud Print ..." và từ "Tùy chọn nâng cao", hãy thực hiện cài đặt chính xác mà bạn cần. Sử dụng một cái gì đó như Fiddler trích xuất giá trị của thông số vé từ yêu cầu POST mà Chrome thực hiện cho dịch vụ/cloudprint/submit.
Làm cách nào bạn nắm bắt POST đã được gửi từ hộp thoại GCP? Tôi không thể làm được. Tôi đã sử dụng Proxy, không phải Fiddler, nhưng không có yêu cầu POST nào được gửi khi tôi nhấp vào "In". –
Bạn có thể chọn Khay tiếp giấy không? Nếu vậy, bạn đang sử dụng loại máy in nào? Tôi không thể tìm ra cách để GCP chọn một khay trên máy in của tôi và tôi đang gặp khó khăn trong việc tìm kiếm thông tin về các máy in mà nó có sẵn trên đó. – TimSum