Перенос слов в сгенерированном PDF (с использованием 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);

Ничто не препятствует запуску страницы reportTitle страницы

Ответы

Ответ 1

Хорошо, я решил это. Я использовал функцию jsPDF, splitTextToSize (текст, maxlen, опции). Эта функция возвращает массив строк. К счастью, функция jsPDF text(), которая используется для записи в документ, принимает как строки, так и массивы строк.

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

Ответ 2

Если вам необходимо динамически добавлять новые строки, вы хотите получить доступ к массиву, возвращаемому 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;

    }

}

Ответ 3

Когда мы используем linebreak в jsPDF, получаем ошибку, указывающую, что b.match не определен, для решения этой ошибки просто unminify js и замените b.match на String (b). match, и u получит эту ошибку дважды, просто заменив оба, а затем мы получим c.split, а не просто выполните то же самое в этом случае замените его на String (c)., и мы закончили. Теперь вы можете увидеть разрывы строк в pdf. Спасибо вам

Ответ 4

Ошибка автоматического подкачки и переноса текста в 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');