Google Cloud Print from Web -


i wrote script prints test pages url on web-site, , every time press print button, dialog frame choosing printer appears . want avoid because account synchronized printer.

window.onload = function() { var gadget = new cloudprint.gadget(); gadget.setprintbutton(     cloudprint.gadget.createdefaultprintbutton("print_button_container")); // div id contain button     gadget.setprintdocument("url", "test page", "https://www.google.com/landing/cloudprint/testpage.pdf"); } 

you use oath , html button rather gadget accomplish this. requires using google developer console oauth permissions.

then need authorize cloud print service.

the following set of functions use in google apps scripts, can adapted. first thing log url link can go in order authorize cloud print service.

function showurl() {   var cpservice = getcloudprintservice();   if (!cpservice.hasaccess()) {   logger.log(cpservice.getauthorizationurl());   } }  

in following component of set of functions, make sure replace client id , secret.

function getcloudprintservice() {   return oauth2.createservice('print')   .setauthorizationbaseurl('https://accounts.google.com/o/oauth2/auth')   .settokenurl('https://accounts.google.com/o/oauth2/token')   .setclientid('**your client id google developer console**')   .setclientsecret('**your client secret**')   .setcallbackfunction('authcallback')   .setpropertystore(propertiesservice.getuserproperties())   .setscope('https://www.googleapis.com/auth/cloudprint')   .setparam('login_hint', session.getactiveuser().getemail())   .setparam('access_type', 'offline')   .setparam('approval_prompt', 'force'); }  function authcallback(request) {   var isauthorized = getcloudprintservice().handlecallback(request);   if (isauthorized) {    return htmlservice.createhtmloutput('you can use google cloud print apps script.');   } else {   return htmlservice.createhtmloutput('cloud print error: access denied');   } } 

next, id of cloud print printer want use. can obtained in settings menu of chrome. settings --> show advanced settings --> under cloud print " manage" --> select printer want use "manage" -->advanced details

to initiate cloud print, need add details ticket:

var ticket = {   version: "1.0",   print: {     color: {       type: "standard_color",       vendor_id: "color"     },     duplex: {       type: "long_edge"     },     copies: {copies: 1},     media_size: {        width_microns: 215900,        height_microns:279400     },     page_orientation: {       type: "portrait"       },     margins: {       top_microns:0,       bottom_microns:0,       left_microns:0,       right_microns:0     },     page_range: {       interval:          [{start:1,         end:????}]     }   } }; 

there many options can add ticket. see documentation

finally, need initiate cloud print service. here define specific printer want.

var payload = { "printerid" : '**copy printer id here**', "title"     : "prep print", "content"   : put content here...(e.g. if of using google apps script...htmlservice.createhtmloutput(variable).getas('application/pdf')), "contenttype": 'text/html', "ticket"    : json.stringify(ticket) }; var response = urlfetchapp.fetch('https://www.google.com/cloudprint/submit',     {  method: "post",  payload: payload,  headers: {   authorization: 'bearer ' + getcloudprintservice().getaccesstoken()  },  "mutehttpexceptions": true  });    response = json.parse(response);   if (response.success) {   logger.log("%s", response.message);  } else {   logger.log("error code: %s %s", response.errorcode, response.message);}    var outcome = response.message;  } 

Comments

Popular posts from this blog

ruby on rails - RuntimeError: Circular dependency detected while autoloading constant - ActiveAdmin.register Role -

c++ - OpenMP unpredictable overhead -

javascript - Wordpress slider, not displayed 100% width -