Impresión silenciosa un PDF incrustado
-
13-09-2019 - |
Pregunta
Tengo una página web con PDF integrado. Mi código se ve así:
<embed
type="application/pdf"
src="path_to_pdf_document.pdf"
id="pdfDocument"
width="100%"
height="100%">
</embed>
Tengo este código JavaScript para imprimir mi PDF:
function printDocument(documentId) {
//Wait until PDF is ready to print
if (typeof document.getElementById(documentId).print == 'undefined') {
setTimeout(function(){printDocument(documentId);}, 1000);
} else {
var x = document.getElementById(documentId);
x.print();
}
}
Cuando se ejecuta este código, el complemento Acrobat abre el conocido diálogo de impresión. Algo como esto:
Dos preguntas:
- ¿Cómo mejorar la forma de detectar que el PDF está cargado y listo para la impresión?
- ¿Cómo evitar mostrar diálogo de impresión?
Un poco más de información sobre mi sistema:
OS: Windows XP
Navegador: Internet Explorer 7
Complemento PDF: Acrobat Reader 9
Solución
No podrá imprimir en silencio con JavaScript antiguo. ¿Cómo le gustaría que su impresora comience a imprimir 100000000 páginas de All Black? No es algo bueno. Si desea imprimir en silencio y hacer que funcione solo para Internet Explorer, hay controles ActiveX que pueden hacerlo. Esto requiere una mayor configuración de seguridad para su página y para que sus usuarios realmente confíen en su sitio.
Otros consejos
Esto es posible en un entorno de confianza e intranet.
<object id="pdfDoc" style="position:absolute;z-index:-1;" name="pdfDoc" classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="900px" height="100%">
<param name="SRC" value="yourdoc.pdf" />
</object>
<input type="button" ... onclick="pdfDoc.printAll();" />
Esto omitirá el cuadro de diálogo de impresión y enviará directamente a la impresora predeterminada.
Me pregunto si realmente necesita esperar antes de imprimir, ¿no lo maneja el trabajo de impresión para usted? Y realmente espero que ningún navegador moderno le permita (o cualquier sitio web) imprimir sin ese diálogo de confirmación (algunos navegadores antiguos solían hacerlo, hace mucho tiempo).
Puedes hacer esto en Firefox cambiando about:config
. Agregar print.always_print_silent
y establecerlo en true
.