2013-08-30 18 views
7

Jeder, der jemals unbeaufsichtigt vom Browser aus drucken wollte, weiß, dass dies keine einfache Aufgabe ist und andererseits für jede Back-Office-Anwendung sehr nützlich ist. Dann kam Google, um uns mit GCP zu retten.Druckereinstellungen mit Google Cloud Print

Also habe ich es eingerichtet und in ein paar Minuten hatte ich ein Dokument gedruckt. Aber dann wollte ich einige Einstellungen auf den Drucker anwenden. Und das ist der Moment, in dem Sie feststellen, dass die Dokumentation dazu völlig fehlt. Es wird nicht einmal erklärt, wie man etwas so einfach macht, wie die Seite auf Landschaft zu stellen.

Die documentation sagt nur, dass Sie eine Fähigkeiten Parameter im XPS oder PPD-Format senden müssen. Selbst wenn Sie die Fähigkeiten Ihres Druckers abrufen können, stellen Sie fest, dass er, wie der Name schon sagt, alle Druckerfunktionen beschreibt und nicht die Einstellungen für einen bestimmten Druckauftrag.

Wie legen Sie die Druckauftragseinstellungen fest?

Antwort

16

Zunächst gibt die GCP-Dokumentation fälschlicherweise an, dass Sie die Druckerfunktionen über die/list Service-Schnittstelle abrufen können. Das funktioniert nicht. Sie müssen den Druckerdienst aufrufen, der die Druckerfunktionen zurückgibt. Die Funktionen sind einfach eine Liste von JSONs, die jeweils einen Druckerparameter und die möglichen Werte beschreiben, die dieser Parameter annehmen kann. Manchmal kann es auch einige zusätzliche Informationen enthalten. Hier ist zum Beispiel ein kleiner Auszug der Seitengrößen von meinem HP unterstützt:

"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" 
    } 
    ] 

Durch an der POST-Anfrage suchen, Chrome aus dem GCP-Dialog senden Ich habe herausgefunden, dass der/die Unterbreitung von Service keine Fähigkeit nicht verwendet Parameter überhaupt. Es verwendet tatsächlich den Parameter Ticket, um die Druckauftragseinstellungen anzugeben. Das Format des Parameters ist ganz einfach, es ist ein JSON, das wie folgt aussieht:

{ 
"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. 
    ] 
    } 
} 

Der erste Teil des Parameters entspricht die Grundeinstellungen im Druckdialog und sie sind ziemlich selbsterklärend und die Werte sind einfach zu ändern. Das vendor_ticket_item Array ist ein bisschen komplizierter. Es enthält ID/Wert-Paare, die von den zuvor abgerufenen Druckerfunktionen beschrieben werden. Die id enthält die Namen des Parameters von den Fähigkeiten und dem Wert wird dem Namen eines der Datensätze in den Parameteroptionen oder einen numerischen Wert usw. enthalten, wie sie in den Fähigkeiten beschrieben.

Das sollte für die meisten Parameter gut funktionieren, aber wenn Sie nicht weiterkommen und die korrekten Werte nicht ermitteln können, können Sie immer ein Beispieldokument in Chrome öffnen und es ausdrucken. Wählen Sie einen GCP-Drucker aus und klicken Sie dann auf "Mit dem Google Cloud Print-Dialogfeld drucken ..." und nehmen Sie die gewünschten Einstellungen aus den "Erweiterten Optionen" vor. Mit etwas wie Fiddler extrahieren Sie den Wert des Ticketparameters aus der POST-Anforderung, die Chrome für den Dienst/cloudprint/submit durchführt.

+0

Wie haben Sie den POST erfasst, der vom GCP-Dialog gesendet wurde? Ich schaffe es nicht. Ich benutzte einen Proxy, nicht Fiddler, aber es gab keine POST-Anfrage, die gesendet wurde, als ich auf "Drucken" klickte. –

+0

Können Sie das Eingabefach auswählen? Wenn ja, welche Art von Drucker verwenden Sie? Ich kann nicht herausfinden, wie GCP ein Fach auf meinem Drucker auswählt, und es fällt mir schwer, Informationen über Drucker zu finden, auf denen es verfügbar wäre. – TimSum