2014-06-17 97 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');