Html2canvas: Les zones de texte n'ont pas de sauts de ligne utilisateur lors de la capture d'écran

Créé le 26 mars 2012  ·  6Commentaires  ·  Source: niklasvh/html2canvas

Salut -

Si je mets du texte avec des retours dedans, la capture d'écran ne contient pas les retours [il semble juste réduit dans une chaîne avec les retours chariot]. J'ai duré tiré ce code il y a quelques mois [disons 3]. Cela a-t-il été corrigé ou est-ce toujours un problème?

Bug

Commentaire le plus utile

peut-être ne pouvons-nous remplacer que textarea par div avant d'utiliser html2canvas? et après cela, changer le div en arrière

Tous les 6 commentaires

C'est toujours un problème, il n'y a pas eu de correctif pour positionner les textes dans les input s ou textarea s avec plus de précision. Aurait soit besoin de créer du texte Range s et de trouver leurs positions (solution plus précise), soit simplement une solution paresseuse de conversion de nouvelles lignes en nouvelles lignes réelles.

Le problème est évident sur https://github.com/niklasvh/html2canvas/blob/master/src/Parse.js#L717

Ok merci - qu'est-ce que la solution paresseuse impliquerait? Je n'ai pas examiné en détail la possibilité de modifier votre code, alors pardonnez-moi si c'est une question stupide. J'ai essayé de convertir les caractères de fin de ligne /n/r en caractères de saut de ligne unicode qui peuvent être transmis à createTextNode(), mais cela ne semble pas faire de différence.

Vous auriez probablement besoin de mesurer la position de chaque ligne et de les rendre en conséquence.

J'ai trouvé une solution ici : http://stackoverflow.com/questions/22317823/html2canvas-remove-multiple-spaces-and-line-break
Il utilise <div contenteditable="true"></div> pour remplacer textarea .

Mais j'utilise angulaire et je dois découvrir le problème ng-model .

UPD
J'ai trouvé la solution concernant l'utilisation de ng-model sur un `div' ici : http://mehrantm.blogspot.com/2013/10/how-make-two-way-binding-to-your.html
J'espère que ça pourra aider quelqu'un~

peut-être ne pouvons-nous remplacer que textarea par div avant d'utiliser html2canvas? et après cela, changer le div en arrière

J'ai résolu ce problème en utilisant cette fonction :

        $('textarea').each(function() {
            if(!$(this).hasClass('d-none')){
                $(this).replaceWith("<div contenteditable=\"true\">"+$(this).html()+"</div>")
            }
        });

Collez la fonction avant d'appeler html2canvas et votre problème sera résolu :)

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

yasergh picture yasergh  ·  5Commentaires

celik75 picture celik75  ·  4Commentaires

stevencherry1 picture stevencherry1  ·  3Commentaires

koreanman picture koreanman  ·  4Commentaires

arzyu picture arzyu  ·  3Commentaires