生成的PDF中的自动换行(使用jsPDF)?

use*_*946 31 jspdf

我正在做的是使用jsPDF创建我生成的图形的PDF.但是,我不知道如何包装标题(使用text()函数添加).标题的长度因图表而异.目前,我的标题正在运行.任何帮助,将不胜感激!

这是我到目前为止的代码:

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

没有什么能阻止reportTitle离开页面

use*_*946 78

好的,我已经解决了这个问题.我使用了jsPDF函数,splitTextToSize(text,maxlen,options).此函数返回一个字符串数组.幸运的是,用于写入文档的jsPDF text()函数接受字符串和字符串数组.

var splitTitle = doc.splitTextToSize(reportTitle, 180);
doc.text(15, 20, splitTitle);
Run Code Online (Sandbox Code Playgroud)

  • 我正在使用 jsPDF 版本 1.2.60 和 doc.splitTextToSize(reportTitle, 180); 在 api 中不再可用。我面临同样的自动换行问题。我该怎么办? (2认同)
  • @GlenSelle 我能够使用它,而无需导入 jsPDF 的缩小版本以外的任何内容,只需“doc.splitTextToSize”即可开箱即用 (2认同)

小智 23

您可以只使用文本函数maxWidth中的可选参数。

doc.text(15, 15, reportTitle, { maxWidth: 40 });
Run Code Online (Sandbox Code Playgroud)

一旦文本达到最大宽度,就会分割文本并从下一行开始。


KB1*_*788 6

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');
Run Code Online (Sandbox Code Playgroud)


小智 6

要将长文本字符串包装到页面,请使用以下代码:

var line = 25 // Line height to start text at
var lineHeight = 5
var leftMargin = 20
var wrapWidth = 180
var longString = 'Long text string goes here'

var splitText = doc.splitTextToSize(longString, wrapWidth)
for (var i = 0, length = splitText.length; i < length; i++) {
  // loop thru each line and increase
  doc.text(splitText[i], leftMargin, line)
  line = lineHeight + line
}
Run Code Online (Sandbox Code Playgroud)