Avalados por :

Cómo validar y cargar un PDF en SAP UI5 usando sap.m.PDFViewer

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 29 Vistas
0
Cargando...
Tengo un contenido de PDF codificado en base64 y quiero verlo usando sap.m.PDFViwer. Dado que PDFViewer solo acepta URI como origen para mostrar el PDF:



Por lo tanto, primero debo crear una URL de blob o una URL de datos para mi contenido de PDF.

        var base64EncodedPDF = "JVBERi0xLjcNCiW..."; // la cadena codificada
        var decodedPdfContent = atob(base64EncodedPDF);
        var byteArray = new Uint8Array(decodedPdfContent.length);
        for (var i=0; i

Sin embargo, cuando uso esta URL de blob como origen de mi PDFViewer, mi PDF no se puede cargar en absoluto, aunque mi URL de blob es accesible.

Finalmente descubro que UI5 validaría la URL del PDF después de renderizar el diálogo del PDFViewer, solo si mi URL de blob está en la lista blanca de UI5, mi URL puede considerarse validado.

Lo que hago es lo siguiente:

        if (!this._PDFViewer){
            this._PDFViewer = new sap.m.PDFViewer({
                width: "auto",
                source: _pdfurl // mi URL de blob
            });
            jQuery.sap.addUrlWhitelist("blob"); // registrar la URL de blob en la lista blanca
        }
        this._PDFViewer.downloadPDF = function(){
            File.save(
                byteArray.buffer,
                "Hello_UI5",
                "pdf",
                "application/pdf"
            );
        };
        this._PDFViewer.open();
    

El método addUrlWhitelist tiene cuatro parámetros.
jQuery.sap.addUrlWhitelist(protocol, host, port, path);

¡Después de agregar mi URL de blob a la lista blanca, el PDF se puede cargar con éxito!

¿Qué sucede en UI5?

línea 269: PDFViewer intenta validar la URL de origen



En jQuery.sap.encoder.js, se ejecutará el método validateUrl:



Y puedo ver desde la línea 504 (todavía en el método validateUrl) por qué mi URL de blob ahora se valida después de hacer addUrlWhiteList, se verificarían el protocolo, host, puerto y ruta:



El PDFViewer carga mi PDF de la siguiente manera:

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

Sin respuestas

No hay respuestas para mostrar No hay respuestas para mostrar Se el primero en responder

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?