Estoy usando html2pdf para generar y guardar pdf. Luego estoy usando fetch para obtener datos en pdf. El problema es que mi espera no funciona en la línea html2pdf(). Si uso settimeout en fetch, entonces funciona correctamente. Usar await me está dando un error 404. El siguiente es mi código.
(async () => { var element = document.getElementById('canvas_div_pdf'); var opt = { pagebreak: { before: '.beforeClass' }, image: { type: 'jpeg', quality: 1 }, }; let pdfData; let timestamp = +new Date(); await html2pdf() .set(opt) .from(element) .toPdf() .get('pdf') .then(function (pdf) { var totalPages = pdf.internal.getNumberOfPages(); // page numbers for (i = 1; i <= totalPages; i++) { pdf.setPage(i); pdf.setFontSize(10); pdf.setTextColor(150); pdf.text( 'Page ' + i + ' of ' + totalPages, pdf.internal.pageSize.getWidth() - 30, pdf.internal.pageSize.getHeight() - 10 ); } }) .save(timestamp + '.pdf'); await fetch(timestamp + '.pdf') .then((response) => response.text()) .then((text) => { console.log(text); pdfData = text; }); const rawResponse = await fetch('api/pdf', { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, body: pdfData, }); const content = await rawResponse.json(); console.log(content); })();No ejecuté este código, pero la primera idea que puede intentar es:
const pdf = await html2pdf().set(opt).from(element).toPdf().get('pdf'); var totalPages = pdf.internal.getNumberOfPages(); // page numbers for (i = 1; i <= totalPages; i++) { pdf.setPage(i); pdf.setFontSize(10); pdf.setTextColor(150); pdf.text( 'Page ' + i + ' of ' + totalPages, pdf.internal.pageSize.getWidth() - 30, pdf.internal.pageSize.getHeight() - 10 ); } pdf.save(); Lo que quiero decir es que usas await y then juntos, lo que no funcionará. Lo que debe hacer es usar async en promesa y luego operar en el resultado.