2014-06-17 131 views
16

我正在做的是使用jsPDF來創建我生成的圖形的PDF。但是,我不知道如何包裝標題(使用text()函數添加)。標題的長度因圖表而異。目前,我的標題正在離開頁面。任何幫助,將不勝感激!生成PDF中的Word換行(使用jsPDF)?

這是我的代碼至今:

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

沒有從運行關閉頁面

+0

歡迎SO實現!你應該擴展你的問題 - 告訴我們你已經嘗試了什麼,你的預期結果是什麼,以及你實際得到了什麼。 – Kryten

+0

我已經添加了我用來創建文檔的代碼位。正如我所說的,有時報告標題太長,並且在PDF的右側運行。相反,我想以某種方式進行換行。 – user3749946

回答

40

好吧,我已經解決了這個保持reportTitle。我使用了jsPDF函數splitTextToSize(text,maxlen,options)。這個函數返回一個字符串數組。幸運的是,用於寫入文檔的jsPDF text()函數接受字符串和字符串數組。

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

謝謝,它幫助了我。只有一個評論,在jsPDF的文本方法中,splitTitle應該是第一個參數。 – Guy

+0

reportTitle:我應該替換這個....得到這個錯誤Uncaught ReferenceError:reportTitleis沒有定義 –

+0

@MonickaAkilan reportTitle是我用過的一個變量。這可能只是一個字符串。您可能必須首先設置變量 – user3749946

0

如果您需要動態地添加新行要訪問由doc.splitTextToSize返回的數組,然後你通過每行添加更多的垂直空間:

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

當我們使用換行符在jsPDF我們得到一個錯誤說明b.match沒有定義,解決這個錯誤只是unminify js和取代b.match字符串(b).match和你會得到這個錯誤兩次只是替換兩個,然後我們得到c.split沒有定義,只是在這種情況下做相同的替換String(c).match,我們完成了。現在你可以在你的pdf中看到換行符。謝謝

0

自動尋呼和文本換行問題JSPDF可以用下面的代碼

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