javascript - print - Extensiones de Chrome para impresión silenciosa?
javascript print without dialog (3)
Finalmente llegué a una solución aceptable para este problema, ya que no pude encontrarlo allí, pero leí en muchas publicaciones con el mismo problema. Dejaré mi solución aquí.
Entonces, primero debe agregar su impresora a Google Cloud Print y luego deberá agregar un proyecto a Google Developers Console.
A continuación, agregue este script y cada vez que necesite imprimir algo ejecute la función print (). Este método imprimirá el documento indicado en el contenido
La aplicación le pedirá permiso una vez para administrar sus impresoras.
function auth() {
gapi.auth.authorize({
''client_id'': ''YOUR_GOOGLE_API_CLIENT_ID'',
''scope'': ''https://www.googleapis.com/auth/cloudprint'',
''immediate'': true
});
}
function print() {
var xhr = new XMLHttpRequest();
var q = new FormData()
q.append(''xsrf'', gapi.auth.getToken().access_token);
q.append(''printerid'', ''YOUR_GOOGLE_CLOUD_PRINTER_ID'');
q.append(''jobid'', '''');
q.append(''title'', ''silentPrintTest'');
q.append(''contentType'', ''url'');
q.append(''content'',"http://www.pdf995.com/samples/pdf.pdf");
q.append(''ticket'', ''{ "version": "1.0", "print": {}}'');
xhr.open(''POST'', ''https://www.google.com/cloudprint/submit'');
xhr.setRequestHeader(''Authorization'', ''Bearer '' + gapi.auth.getToken().access_token);
xhr.onload = function () {
try {
var r = JSON.parse(xhr.responseText);
console.log(r.message)
} catch (e) {
console.log(xhr.responseText)
}
}
xhr.send(q)
}
window.addEventListener(''load'', auth);
<script src="https://apis.google.com/js/client.js"></script>
De todos modos, este script arroja un error de ''Access-Control-Allow-Origin'', aunque esto aparece en la documentación ... No pude hacer que funcione :(
Las API de Google admiten solicitudes y respuestas utilizando Cross-origin Resource Sharing (CORS). No necesita cargar la biblioteca de cliente de JavaScript completa para usar CORS. Sin embargo, si desea que su aplicación acceda a la información personal de un usuario, debe funcionar con el mecanismo OAuth 2.0 de Google. Para que esto sea posible, Google proporciona el cliente de autenticación independiente, un subconjunto del cliente de JavaScript.
Así que para lanzar esto tuve que instalar esta extensión de cromo CORS . Estoy seguro de que alguien mejorará este script para evitar esta extensión de Chrome.
He hecho una aplicación web de impresión silenciosa que imprime un archivo PDF. La clave era agregar JavaScript al archivo PDF que se imprime silenciosamente.
Para hacer esto, abro el PDF con Acrobat Reader en Chrome, que me permite ejecutar el script (con los permisos adecuados).
Pero como se anunció, esta solución no funcionará después de Chrome 45 porque el problema de npapi.
Supongo que una posible solución podría ser utilizar el producto de impresión de versiones de Chrome recientemente publicado.
Sin embargo, no puedo imaginar cómo activar cualquiera de los eventos printProvider. Entonces la pregunta es: está bien pensar en extensiones chrome para hacer una aplicación web de impresión silenciosa, y cómo puedo disparar y manejar un trabajo de impresión para un PDF incrustado de una página HTML.
Después de la eliminación de npapi, no creo que esto sea posible únicamente mediante programación. La única forma actual que conozco para hacer que Chrome se imprima en silencio es usando el modo quiosco de Chrome, que es un indicador (modo) que debe establecer al iniciar Chrome.
Eche un vistazo a estas publicaciones de SO:
Impresión silenciosa (directa) usando el modo KIOSK en Google Chrome
Puede registrar una Aplicación en un Esquema de URI para activar la aplicación local para que se imprima de forma silenciosa. La configuración es bastante fácil y directa. Es una experiencia perfecta. He publicado la solución aquí con un ejemplo completo:
https://.com/a/37601807/409319