Word wrap in generated PDF (utilisant jsPDF)?
ce que je fais est d'utiliser jsPDF pour créer un PDF du graphique que j'ai généré. Cependant, je ne suis pas sûr de savoir comment envelopper le titre (ajouté en utilisant la fonction text ()). La longueur du titre varient d'un graphique pour graphique. En ce moment, mes titres sortent de la page. Toute aide serait appréciée!
C'est le code que j'ai pour l'instant:
var doc = new jsPDF();
doc.setFontSize(18);
doc.text(15, 15, reportTitle);
doc.addImage(outputURL, 'JPEG', 15, 40, 180, 100);
doc.save(reportTitle);
rien pour empêcher le titre du rapport de s'échapper de la page
4 réponses
Ok j'ai résolu ce problème. J'ai utilisé la fonction jsPDF, splitTextToSize (text, maxlen, options). Cette fonction renvoie un tableau de chaînes. Heureusement, la fonction jspdf text (), qui est utilisée pour écrire sur le document, accepte à la fois les chaînes et les tableaux de chaînes.
var splitTitle = doc.splitTextToSize(reportTitle, 180);
doc.text(15, 20, splitTitle);
auto-paging et l'enveloppement de texte question dans JSPDF peut atteindre avec le code suivant
var splitTitle = doc.splitTextToSize($('#textarea').val(), 270);
var pageHeight = doc.internal.pageSize.height;
doc.setFontType("normal");
doc.setFontSize("11");
var y = 7;
for (var i = 0; i < splitTitle.length; i++) {
if (y > 280) {
y = 10;
doc.addPage();
}
doc.text(15, y, splitTitle[i]);
y = y + 7;
}
doc.save('my.pdf');
si vous avez besoin d'ajouter dynamiquement de nouvelles lignes, vous voulez accéder au tableau retourné par doc.splitTextToSize puis ajouter plus d'espace vertical que vous allez à travers chaque ligne:
var y = 0, lengthOfPage = 500, text = [a bunch of text elements];
//looping thru each text item
for(var i = 0, textlength = text.length ; i < textlength ; i++) {
var splitTitle = doc.splitTextToSize(text[i], lengthOfPage);
//loop thru each line and output while increasing the vertical space
for(var c = 0, stlength = splitTitle.length ; c < stlength ; c++){
doc.text(y, 20, splitTitle[c]);
y = y + 10;
}
}
lorsque nous utilisons linebreak dans jsPDF nous obtenons une erreur indiquant B. match n'est pas défini, pour résoudre cette erreur, il suffit de dé-minifier le js et de remplacer b.match String(B).match et u obtiendra cette erreur deux fois il suffit de remplacer les deux et ensuite nous obtenons c.split n'est pas défini faites juste la même chose dans ce cas, remplacez-le par String(C).match et nous avons fini. Maintenant, vous pouvez voir les sauts de ligne dans vous pdf. Je vous remercie