Saltar al contenido

Imprima PDF directamente desde JavaScript

Solución:

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 el <embed> etiqueta para incrustar el PDF en el documento:

<embed
    type="application/pdf"
    src="https://foroayuda.es/path_to_pdf_document.pdf"
    id="pdfDocument"
    width="100%"
    height="100%" />

Entonces 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 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é).

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;
}

Descargue Print.js desde http://printjs.crabbly.com/

$http({
    url: "",
    method: "GET",
    headers: {
        "Content-type": "application/pdf"
    },
    responseType: "arraybuffer"
}).success(function (data, status, headers, config) {
    var pdfFile = new Blob([data], {
        type: "application/pdf"
    });
    var pdfUrl = URL.createObjectURL(pdfFile);
    //window.open(pdfUrl);
    printJS(pdfUrl);
    //var printwWindow = $window.open(pdfUrl);
    //printwWindow.print();
}).error(function (data, status, headers, config) {
    alert("Sorry, something went wrong")
});
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *