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?
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 :)
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