Según los comentarios a continuación, ya no funciona en los navegadores modernos.Esta
pregunta demuestra un enfoque que podría serle ú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 llama 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 el incrustado en un iframe oculto e imprimirlo desde allí, lo que le brinda una experiencia perfecta.
Aquí hay una función para imprimir un PDF desde un iframe.
Solo necesita 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 se realiza la impresión y el método de impresión no tiene soporte de devolución de llamada (hasta donde yo sé).
fuente
setTimeout
, la función de impresión fallará a veces. No tengo idea de por qué y espero que alguien lo descubra.onafterprint
. Me preocupa un poco que reutilizar un iframe pueda introducir condiciones de carrera en las que alguien hace clic en dos botones rápidamente y termina imprimiendo el segundo PDF dos veces porque la URL del iframe ya se había intercambiado antes de que apareciera el primer cuadro de diálogo de impresión.Descargue Print.js desde http://printjs.crabbly.com/
fuente
https://github.com/mozilla/pdf.js/
para una demostración en vivo http://mozilla.github.io/pdf.js/
es probablemente lo que quieres, pero no veo el sentido de esto, ya que los navegadores modernos incluyen dicha funcionalidad, también funcionará terriblemente lento en dispositivos de baja potencia como dispositivos móviles que, por cierto, tienen sus propios complementos y aplicaciones optimizados. .
fuente
Usé esta función para descargar la secuencia de PDF desde el servidor.
fuente
Solución de navegador cruzado para imprimir pdf desde una cadena base64:
.
BONUS: abrir un archivo blob en una nueva pestaña para IE11
Si puede hacer un preprocesamiento de la cadena base64 en el servidor, puede exponerlo en alguna URL y usar el enlace en
printJS
:)fuente