HTML5 canvas, convertir toile au format PDF avec jspdf.js
Je suis en train de convertir HTML5 canvas PDF en JavaScript mais j'obtiens un fond noir PDF. J'ai essayé de changer la couleur d'arrière-plan, mais encore obtenir du noir. Voici le code que j'essaie:
Canvas = document.getElementById("chart");
Context = Canvas.getContext("2d");
var imgData = Canvas.toDataURL('image/jpeg');
var pdf = new jsPDF('landscape');
pdf.addImage(imgData, 'JPEG', 0, 0, 1350, 750);
pdf.save('download.pdf');
Si vous avez une idée, je l'apprécierais beaucoup.
OriginalL'auteur user3289230 | 2014-11-04
Vous devez vous connecter pour publier un commentaire.
Une bonne approche est d'utiliser la combinaison de jspdf.js et html2canvas. J'ai fait un jsfiddle pour vous.
'
jsfiddle: http://jsfiddle.net/rpaul/p4s5k59s/5/
C'est une bonne question. C'était juste une expérience. Il ya quelques mois, quand je travaillais sur ce, j'ai trouvé que jspdf.js lui-même ne donne pas de résultat uniforme pour les graphes de Flot. À l'aide de html2canvas résolu mon problème. Pour être honnête, je n'ai pas étudier le code interne de ces bibliothèques. Oh je me souviens, Flot des graphiques a été l'ajout d'autres éléments HTML avec la Toile. Si c'est uniquement de toile, puis Jspdf est probablement suffisant.
OriginalL'auteur Razan Paul
Une solution très simple est que vous êtes l'enregistrement de l'image jpeg. L'épargne au lieu png fonctionne très bien pour mon application. De note, Blizzard's réponse comprend également l'impression que png, et produit également de la non-remplissage noir pour les couches transparentes dans le canevas.
au lieu de
OriginalL'auteur Scott Close
Au premier abord, vous devez ensemble l'arrière-plan de couleur sur le
canvas
avant d'obtenir ledata
. Ensuite, vous devez dessinerjpeg
image sur lecanvas
.OriginalL'auteur John Stephen
J'ai eu le même problème, par exemple, la première fois quand j'ai créer un fichier pdf à la toile, l'image est ok, mais tous les autres à côté, est venu de noir. Pas de photo!
La solution de contournement que j'ai trouvé est la suivante: après chaque appel au format pdf.addImage() je le rafraîchissement de l'image dans le canevas. Il fonctionne maintenant très bien pour moi.
EDIT: Comme demandé, voici quelques détails:
Disons que j'ai une toile fonction de dessin comme ça (juste un exemple, il n'a pas d'importance):
J'ai dû réparer ma fonction d'impression comme suit:
Je l'avoue, je n'ai pas poursuivre l'enquête, content que cela fonctionne.
after each call to pdf.addImage() i redraw the picture in the canvas
? Il serait très utile si vous pouviez partager du code.ajouté mon exemple de code
OriginalL'auteur deblocker
Il suffit de changer JPEG PNG
pdf.addImage(imgData, 'PNG', 0, 0, 1350, 750);
OriginalL'auteur Raj Prabhu