Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

346
Visualizações
Cómo enviar un pdf generado a partir de una captura de pantalla en JavaScript

Objetivo : tome una captura de pantalla de la página, luego haga un pdf de eso y envíe ese pdf al backend de arranque de primavera.

Implementé la funcionalidad para tomar la captura de pantalla y convertirla en pdf usando las bibliotecas de JavaScript html2canvas y pdfmake .

Problema : no sé cómo enviar el pdf generado al backend. Llegué a saber acerca de la codificación base64 pero todavía estoy confundido.

Código -

 function takeSS() { html2canvas(document.body, { onrendered: function(canvas) { var data = canvas.toDataURL(); var docDefinition = { content: [{ image: data, width: 900, }] }; pdfMake.createPdf(docDefinition).download("test.pdf"); // to download } }); }

El código anterior está tomando la captura de pantalla de la página convirtiéndola a pdf y descargándola. En lugar de descargarlo, ¿cómo puedo enviar este pdf al backend? ¿Necesito codificar en base64 canvas.toDataURL() ?

Editar Cambié mi código - jsFiddle

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

De acuerdo con los documentos de pdfmake , puede obtener el PDF generado como un Blob con el método getBlob . El Blob será una representación binaria de su PDF que puede enviar a su servidor.

Los blobs deben envolverse dentro de un objetoFormData antes de que puedan enviarse.

Editar: cambie a la última versión (1.4.1) de html2canvas . La versión anterior no funcionaba correctamente. Las últimas versiones usan Promises, lo que nos permite usar funciones asíncronas y, en mi opinión, hace que su código sea más legible.

La versión beta de pdfmake usa Promises en lugar de una función de devolución de llamada, pero la última versión estable (0.2.5) no. Pero podemos resolver esto envolviendo la devolución de llamada con una Promesa para poder seguir usando la sintaxis async/await.

 async function takeSS() { const canvas = await html2canvas(document.body); const data = canvas.toDataURL(); const docDefinition = { content: [{ image: data, width: 900, }] }; const pdfDocGenerator = pdfMake.createPdf(docDefinition); const blob = await new Promise(resolve => { pdfDocGenerator.getBlob(resolve); }); const formData = new FormData(); formData.append('pdf', blob, 'test.pdf'); try { const response = await fetch('myapi-url', { method: 'POST', body: formData }); if (!response.ok) { throw new Error('POST request failed'); } const message = await response.text(); console.log(message); } catch (error) { console.error(error); } }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda