es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

datos: aplicación / pdf; base64, undefined (problema de generación de PDF)

Estaba creando un generador de PDF siguiendo las pautas de este sitio web “https://www.wix.com/velo/forum/coding-with-velo/pdf-generator-api-npm-demo”.

Capturé todo el código de las pautas, pero cuando hago clic en el botón de enviar, aparece un error [data:application/pdf;base64,undefined] y no se guarda ningún registro en el generador de PDF.

Verifica el enlace del sitio web aquí: enlace del sitio web

Creo que algo debe estar mal en el siguiente código.

// Código de inicio
import { pdf } from ‘backend/pdf.jsw’;

$w.onReady(function () {
var base64;

$w('#btnSubmit').onClick(() => {
    let name = $w('#inName').value;
    let detail = $w('#inDetail').value;
    pdf(name, detail).then( e => {
        base64 = e;
        base64 = 'data:application/pdf;base64,' + base64;
        let msg = {
            "conv": true,
            "dataUrl": base64
        };
        $w('#html1').postMessage(msg);
    });
});

});

// Código de fin

Busqué en internet y algunas personas mencionaron que la función de abrir una URL de datos directamente no es compatible desde 2020 (ver sitio web). Soy nuevo en programación o códigos, sería de gran ayuda si alguien pudiera proporcionarme el código ajustado.

Lamento las molestias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución:

    Según la información proporcionada y el enlace al sitio web, parece que el problema radica en la función directa de la URL de datos abiertos, que ya no es compatible. Por lo tanto, se necesita ajustar el código para solucionar el problema.

    Aquí está el código ajustado que debería funcionar:

    //inicio del código
        import { pdf } from 'backend/pdf.jsw';
    
        $w.onReady(function () {
            var base64;
    
            $w('#btnSubmit').onClick(() => {
                let name = $w('#inName').value;
                let detail = $w('#inDetail').value;
                pdf(name, detail).then( e => {
                    base64 = e;
                    base64 = 'data:application/pdf;base64,' + base64;
    
                    // crear una nueva ventana para mostrar el PDF
                    let newWindow = window.open('', '_blank');
                    newWindow.document.write('<iframe width="100%" height="100%" src="' + base64 + '"></iframe>');
    
                });
            });
        });
    //fin del código
    

    En el código ajustado, en lugar de abrir el PDF en una nueva ventana utilizando la URL de datos directamente, estamos creando una nueva ventana y utilizando un iframe para mostrar el PDF. Esto debería funcionar en los navegadores modernos.

    Espero que esto ayude a solucionar el problema con el generador de PDF. Avíseme si tiene alguna pregunta o inquietud adicional.

Comments are closed.