2014-06-17 13 views
16

quello che sto facendo è usare jsPDF per creare un PDF del grafico che ho generato. Tuttavia, non sono sicuro di come avvolgere il titolo (aggiunto usando la funzione text()). La lunghezza del titolo varierà da un grafico all'altro. Attualmente i miei titoli stanno uscendo dalla pagina. Qualsiasi aiuto sarebbe apprezzato!Word wrap nel PDF generato (utilizzando jsPDF)?

Questo è il codice che ho finora:

var doc = new jsPDF(); 
doc.setFontSize(18); 
doc.text(15, 15, reportTitle); 
doc.addImage(outputURL, 'JPEG', 15, 40, 180, 100); 
doc.save(reportTitle); 

Nulla di mantenere il reportTitle di correre fuori dalla pagina

+0

Benvenuti a SO! Dovresti espandere un po 'la tua domanda: mostraci cosa hai provato, qual è il tuo risultato previsto e cosa stai ottenendo. – Kryten

+0

Ho aggiunto il bit di codice che sto usando per creare il documento. E come ho affermato, a volte il reportTitle è troppo lungo e scorre sul lato destro del PDF. Invece, voglio farlo avvolgere in qualche modo. – user3749946

risposta

40

Ok ho risolto questo. Ho usato la funzione jsPDF, splitTextToSize (text, maxlen, options). Questa funzione restituisce una serie di stringhe. Fortunatamente, la funzione jsPDF text(), che è usata per scrivere nel documento, accetta sia stringhe che matrici di stringhe.

var splitTitle = doc.splitTextToSize(reportTitle, 180); 
doc.text(15, 20, splitTitle); 
+1

Grazie, mi ha aiutato. Solo un commento, nel metodo testo di jsPDF, splitTitle dovrebbe essere il primo parametro. – Guy

+0

reportTitle: cosa devo sostituire per questo .... Ho ricevuto questo errore Uncaught ReferenceError: reportTitleis non definito –

+0

@MonickaAkilan reportTitle è una variabile che avevo usato. Probabilmente è solo una stringa. Probabilmente devi prima impostare la variabile – user3749946

0

Se avete bisogno di aggiungere dinamicamente nuove linee si desidera accedere alla matrice restituita da doc.splitTextToSize e quindi aggiungere lo spazio più verticale come si passa attraverso ogni riga:

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

Quando usiamo linebreak in jsPDF si ottiene un errore che dichiara che b.match non è definito, per risolvere questo errore è sufficiente annullare il js e sostituire b.match con String (b) .match e si otterrà questo errore due volte basta sostituire entrambi e quindi otteniamo c.split non è definito basta fare lo stesso in questo caso sostituirlo con String (c) .match e abbiamo finito. Ora puoi vedere le interruzioni di riga nel tuo pdf. Grazie

0

Auto-paginazione e il testo problema involucro in JSPDF può raggiungere con il seguente codice

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');