Imprima PDF directamente desde JavaScript
Estoy creando una lista de archivos PDF en HTML. En la lista me gustaría incluir un enlace de descarga y un botón/enlace de impresión. ¿Hay alguna forma de abrir directamente el cuadro de diálogo Imprimir para el PDF sin que el usuario vea el PDF o abra un visor de PDF?
¿Alguna variación de descargar el PDF en un iframe oculto y activarlo para imprimir con JavaScript?
Según los comentarios a continuación, ya no funciona en los navegadores modernos.
Esta pregunta demuestra un enfoque que podría resultarle útil: Impresión silenciosa de un PDF incrustado.
Utiliza la <embed>
etiqueta para incrustar el PDF en el documento:
<embed
type="application/pdf"
src="path_to_pdf_document.pdf"
id="pdfDocument"
width="100%"
height="100%" />
Luego llamas al .print()
método en el elemento en Javascript cuando se carga el PDF:
function printDocument(documentId) {
var doc = document.getElementById(documentId);
//Wait until PDF is ready to print
if (typeof doc.print === 'undefined') {
setTimeout(function(){printDocument(documentId);}, 1000);
} else {
doc.print();
}
}
Puede colocar la inserción en un iframe oculto e imprimirla desde allí, lo que le brindará una experiencia perfecta.
Aquí hay una función para imprimir un PDF desde un iframe.
Sólo necesitas pasar la URL del PDF a la función. Creará un iframe y activará la impresión una vez que se cargue el PDF.
Tenga en cuenta que la función no destruye el iframe. En cambio, lo reutiliza cada vez que se llama a la función. Es difícil destruir el iframe porque es necesario hasta que finalice la impresión y el método de impresión no admite devolución de llamada (hasta donde yo sé).
printPdf = function (url) {
var iframe = this._printIframe;
if (!this._printIframe) {
iframe = this._printIframe = document.createElement('iframe');
document.body.appendChild(iframe);
iframe.style.display = 'none';
iframe.onload = function() {
setTimeout(function() {
iframe.focus();
iframe.contentWindow.print();
}, 1);
};
}
iframe.src = url;
}