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

19
demandé sur user3749946 2014-06-17 23:42:40

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);
49
répondu user3749946 2014-06-18 18:03:52

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');
1
répondu KB1788 2017-04-25 13:05:08

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;

    }

}
0
répondu Eduardo La Hoz Miranda 2015-07-22 20:46:43

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

0
répondu Prasad Shetty 2016-10-06 14:23:16