"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo generar un PDF a partir de una respuesta binaria de servicio web en JavaScript en los navegadores?

¿Cómo generar un PDF a partir de una respuesta binaria de servicio web en JavaScript en los navegadores?

Publicado el 2025-03-22
Navegar:629

How to Generate a PDF from a Binary Web-Service Response in JavaScript Across Browsers?

construyendo pdf de respuesta binaria de servicio web en javascript

antecedentes:

Este desafío de generar un archivo PDF de un archivo binario retrisado a través de una solicitud de AJ. La corriente binaria proporcionada consta del encabezado y contenido PDF. While the data-uri method works in some browsers, it fails in Internet Explorer 9 and Firefox.

The Issue:

The concern lies in finding a cross-browser solution that allows building a PDF file from the binary response without relying on editing the web-service Implementación.

SOLUCIÓN:

Para resolver este problema, se sugiere el siguiente enfoque:

aprovechando las blobs y descargar atributas:

al establecer el contenedor de la responsabilidad del xmlhtttttttttttttttttttttttttttttttttttttho ser recibido como un objeto Blob. Este blob representa el archivo PDF. Posteriormente, puede crear un enlace de descarga utilizando el método CreateObjectUrl para permitir a los usuarios descargar el pdf.

para demostrar esta solución, se puede emplear el siguiente fragmento de código:

var request = new XMLHttpRequest();
request.open("GET", "/path/to/pdf", true); 
request.responseType = "blob";
request.onload = function (e) {
    if (this.status === 200) {
        // `blob` response
        console.log(this.response);
        // create `objectURL` of `this.response` : `.pdf` as `Blob`
        var file = window.URL.createObjectURL(this.response);
        var a = document.createElement("a");
        a.href = file;
        a.download = this.response.name || "detailPDF";
        document.body.appendChild(a);
        a.click();
        // remove `a` following `Save As` dialog, 
        // `window` regains `focus`
        window.onfocus = function () {                     
          document.body.removeChild(a)
        }
    };
};
request.send();

beneficios:

Este método ofrece las siguientes ventajas:

    compatibilidad con todos los navegadores principales, incluidos IE9, Firefox, Opera, Chrome y Safari
  • las deficiences de Deficiencias Data-uri enfoque en algunos navegadores
  • permite a los usuarios descargar convenientemente el archivo pdf
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3