<p>La promesa html2canvas se devuelve antes de que se complete el procesamiento.</p>

Creado en 1 oct. 2019  ·  3Comentarios  ·  Fuente: niklasvh/html2canvas

Asegúrese de realizar la prueba con la última versión de html2canvas .
Las versiones antiguas no son compatibles y los problemas informados para ellas se cerrarán.

Primero siga los pasos generales de solución de problemas:

  • [X] Estás usando la última versión
  • [X] Está probando con la versión no minimizada de html2canvas y verificó cualquier problema potencial informado en la consola.

Informes de errores:

Tengo una página con varios divs. Cada uno de estos divs tiene varios elementos de tabla de reacciones . Quiero tomar una captura de pantalla de cada div y luego crear un archivo zip y descargarlos todos a la vez (como una especie de pseudo presentación de diapositivas en PowerPoint). Esto funciona perfectamente en Mac, sin embargo, cuando uso Google Chrome en Windows, los divs con varias tablas de reacción parecen no terminar de renderizarse cuando se toma la captura de pantalla. Al activar el registro, he confirmado que el renderizado se completa en ~ 1000ms, pero el canvas que devuelve html2canvas parece como si no hubiera terminado de renderizarse. Se renderizan las tablas de reacción, pero el resto del texto de la página es algo transparente, como si estuviera a la mitad de la carga.

Todavía no tengo una reproducción jsfiddle, pero trabajaré en eso para agregar una aquí.

Especificaciones:

  • Versión html2canvas probada con:
  • Navegador y versión: último Chrome - 77.0.3865.90
  • Sistema operativo: Windows (importante, no se puede reproducir en una Mac)

Comentario más útil

También me encontré con este problema y causó un error bastante grave de nuestra parte. ¡Me gustaría arreglarlo!

Todos 3 comentarios

He podido hacer que esto funcione, aunque no es óptimo.

html2canvas(div, {
    letterRendering: true,
    onclone: (doc) => {
        // onclone logic to resize div

        return new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve()
            }, 400)
        })
    }
}).then((obj) => {
    let img = obj.toDataURL()
    // save image to zip file
})

Llegué al tiempo de espera de 400ms a través de prueba y error. Algo menos, y observé el problema de que el div no se procesaba por completo cuando html2canvas toma la captura de pantalla.

Estoy de acuerdo, tuve un problema muy similar, donde las imágenes generadas por Html2Canvas estaban siendo cortadas. Esto solo sucedió en las compilaciones de producción. En entornos de desarrollo funcionó bien. La solución alternativa anterior resuelve mi problema. Estoy de acuerdo en que no es ideal y se necesita una solución adecuada para esto, pero por ahora resuelve mi problema. Gracias @ tjchambers32 por esta

También me encontré con este problema y causó un error bastante grave de nuestra parte. ¡Me gustaría arreglarlo!

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

Loki180 picture Loki180  ·  4Comentarios

koreanman picture koreanman  ·  4Comentarios

AlphaDu picture AlphaDu  ·  4Comentarios

ABHIKSINGHH picture ABHIKSINGHH  ·  3Comentarios

AviYafe picture AviYafe  ·  5Comentarios