2014-06-17 10 views
16

was ich mache ist mit jsPDF, um eine PDF des Diagramms zu erstellen, die ich erstellt habe. Ich bin mir jedoch nicht sicher, wie man den Titel umschließt (hinzugefügt mit der Funktion text()). Die Länge des Titels variiert von Diagramm zu Diagramm. Momentan laufen meine Titel nicht auf der Seite. Jede Hilfe wäre willkommen!Zeilenumbruch in generiertem PDF (mit jsPDF)?

Dies ist der Code, den ich bisher habe:

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

Nichts den Report zu halten von der Seite

Ablaufen
+0

Willkommen erreichen kann SO! Sie sollten Ihre Frage ein wenig erweitern - zeigen Sie uns, was Sie versucht haben, was Ihr erwartetes Ergebnis ist und was Sie tatsächlich bekommen. – Kryten

+0

Ich habe den Code hinzugefügt, den ich zum Erstellen des Dokuments verwende. Und wie gesagt, manchmal ist der reportTitle zu lang und läuft von der rechten Seite der PDF ab. Stattdessen möchte ich es irgendwie wickeln lassen. – user3749946

Antwort

40

Okay, ich dieses Problem gelöst habe. Ich habe die Funktion jsPDF, splitTextToSize (text, maxlen, options) verwendet. Diese Funktion gibt ein Array von Strings zurück. Glücklicherweise akzeptiert die Funktion jsPDF text(), die zum Schreiben in das Dokument verwendet wird, sowohl Strings als auch Arrays von Strings.

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

Danke, es hat mir geholfen. Nur ein Kommentar, in der Textmethode von jsPDF, sollte splitTitle der erste Parameter sein. – Guy

+0

reportTitle: was soll ich dafür ersetzen .... Habe diesen Fehler gefunden Uncaught ReferenceError: reportTitleis nicht definiert –

+0

@MonickaAkilan reportTitle ist eine Variable die ich benutzt habe. Es ist wahrscheinlich nur eine Zeichenfolge. Wahrscheinlich müssen Sie die Variable zuerst setzen – user3749946

0

Wenn Sie dynamisch neue Zeilen hinzufügen, die Sie wollen das Array von doc.splitTextToSize zurück zuzugreifen und dann mehr vertikalen Raum hinzufügen, wie Sie durch jede Zeile gehen:

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

Wenn wir Zeilenumbrüche verwenden in jsPDF erhalten wir einen Fehler, der besagt, dass b.match nicht definiert ist, um diesen Fehler zu beheben, entfernen Sie einfach die js und ersetzen Sie b.match durch String (b) .match und Sie erhalten diesen Fehler zweimal nur ersetzen beide und dann wir bekommen c.split ist nicht definiert, nur das gleiche tun in diesem Fall ersetzen Sie es mit String (c) .match und wir sind fertig. Jetzt können Sie in Ihrem PDF Zeilenumbrüche sehen. Danke

0

Auto-Paging und Textumbruch Ausgabe in JSPDF mit folgendem Code

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