Перенос слов в сгенерированный 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 убегать со страницы

4 ответов


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

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

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

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

    }

}

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