<p>html2canvas não funciona quando o html contém um elemento canvas</p>

Criado em 13 dez. 2017  ·  29Comentários  ·  Fonte: niklasvh/html2canvas

Relatório de erros:

Estou usando o html2canvas em um projeto react. Descobri que html2canvas não funciona quando o html contém um elemento de tela. A área da tela ficará vazia.

Especificações:

esta é a imagem html
image

esta é a conversão para imagem de tela

image

na área da tela, eu uso 'echarts-for-react' para desenhar um mapa de radar。Mas quando clico no botão Gerar imagens, a imagem de download não está completa

  • Versão html2canvas testada com: 1.0.0-alpha.4
  • Navegador e versão: Chrome 60.0.3112.7
  • Sistema operacional: windows
Bug

Comentários muito úteis

Eu tentei adicionar removeContainer: false, mas o problema ainda existe no Chrome para celular

Todos 29 comentários

Eu tenho o mesmo problema.

Você poderia compartilhar um exemplo no jsfiddle?

mesmo problema. tenho gráficos chartjs na página, eles não são mais renderizados. usado para renderizar na versão anterior

Eu criei um violino para mostrar o problema
https://jsfiddle.net/outerbound/v7p71wzr/

Isso não está funcionando no Chrome :(, posso confirmar no Safari que está funcionando :)

o problema é remover o recipiente do DOM antes de render

Eu tenho o mesmo problema. marcador...

Talvez o html2canvas não funcione com o gridstack.js

Tive o mesmo problema ao usar chart.js com vue (vue-chart.js) e isso só acontece no Chrome

Eu tenho o mesmo problema, html2canvas não pode funcionar com gridstack.js, quando eu uso html2canvans com gridstack, todos os elementos ficam empilhados no topo.
image

@ Nemo0915 Eu construí um jsfiddle com gridstack.js, mas funciona bem. Então talvez esse não seja o problema do gridstack.js, mas não tenho muita certeza.

mesmo problema, o Firefox está ok, mas o Chorme não pode funcionar

@bigfacewo obrigado pela sua resposta, é a imagem do seu jsfiddle, o botão foi empilhado para cima também, e o resultado é o mesmo no FF ou no Chrome.
image

@ Nemo0915 Achei a versão 0.5.0-beta4 funcionando normalmente, jsfiddle . a imagem é:
qq 20171220150328
A versão 1.0.0-alpha4, jsfiddle , não pode funcionar no Chrome, mas não achei o problema de os elementos estarem empilhados no topo. esta é a captura de tela no Firefox:
qq 20171220150946

Versão do Chrome: 63.0.3239.108
Versão do Firefox: 57.0.2

você pode adicionar a opção: removeContainer: false para corrigir este problema temporariamente ....

Obrigado @IxAres , resolve o meu problema.

Eu tentei adicionar removeContainer: false, mas o problema ainda existe no Chrome para celular

@niklasvh não funciona de todo. Estou usando a versão 1.0.0-rc.5 deste aplicativo.
Screenshot 2020-02-17 at 10 54 42 AM

ei, que solução?

2020, o problema ainda está aqui.

1 Também estou vendo esse comportamento.

O problema ainda existe

O problema ainda existe com os navegadores Chart.js e Firefox 76.0 (64 bits)

Olá, estou tendo o mesmo problema com o Mapbox dentro do elemento, você pode ajudar aqui.
Eu também tentei removeContainer: false, mas não funcionou para mim.

@Rajeshgtstpl Tive um problema semelhante com o mapbox. Eu resolvi isso definindo preserveDrawingBuffer: true nas opções da caixa de mapas.

Não estou usando Chart.js, mas tive o mesmo problema com telas onde usei drawImage. Resolvido o problema colocando image.crossOrigin = 'anonymous' no elemento de imagem antes de passá-lo para drawImage, assim:

image.crossOrigin = 'anonymous'

Espero que possa ajudar alguém :)

Oi pessoal, estou tendo um problema de exportação de tela semelhante, mas com uma cena de threejs, alguma recomendação? Eu tentei com o v1.0.0-rc.7, mas ele exporta tudo, exceto a tela do threejs.

EDITAR: tentei adicionar a tela do threejs assim:

image

Mas tenho este erro:

image

@AchoArnold preserveDrawingBuffer: true funcionou para mim no Mapbox, obrigado.

Pergunta: você notou um impacto no desempenho?

Não estou usando Chart.js, mas tive o mesmo problema com telas onde usei drawImage. Resolvido o problema colocando image.crossOrigin = 'anonymous' no elemento de imagem antes de passá-lo para drawImage, assim:

image.crossOrigin = 'anonymous'

Espero que possa ajudar alguém :)

salvou minha vida, obrigado

Esta página foi útil?
0 / 5 - 0 avaliações