2016-09-01 2 views
6

Я скачал jspdf 1.2.60, чтобы создать pdf-файл, содержащий текст из моей таблицы html. Один из столбцов содержит примечания, введенные пользователем, поэтому может быть очень большим, в результате чего текст выполняется на странице.Как обернуть слово в jsPDF?

На чистящими я нашел this однако

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

не более доступны в API. (Я заглянул в файл jspdf.js).

Как это решить?

Любая идея оценивается.

+0

Почему вы не используете jspdf 1.2.61 вместо этого? – Lotus91

+0

Можете ли вы разместить сообщение об ошибке, которое вы получили? –

+0

@ Lotus91 На своем официальном сайте они предлагают загрузить 1.2.60, в то время как ** CDN ** s дают 1.2.61 в настоящее время, но это не делает большой diff для 'splitTextToSize' –

ответ

2

Это просто работает без каких-либо недостатков. Доказательство:

function createPdf() { 
 
\t var doc = new jsPDF('p','in','letter') 
 
\t var loremipsum = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus id eros turpis. Vivamus tempor urna vitae sapien mollis molestie. Vestibulum in lectus non enim bibendum laoreet at at libero. Etiam malesuada erat sed sem blandit in varius orci porttitor. Sed at sapien urna. Fusce augue ipsum, molestie et adipiscing at, varius quis enim. Morbi sed magna est, vel vestibulum urna. Sed tempor ipsum vel mi pretium at elementum urna tempor. Nulla faucibus consectetur felis, elementum venenatis mi mollis gravida. Aliquam mi ante, accumsan eu tempus vitae, viverra quis justo.\n\nProin feugiat augue in augue rhoncus eu cursus tellus laoreet. Pellentesque eu sapien at diam porttitor venenatis nec vitae velit. Donec ultrices volutpat lectus eget vehicula. Nam eu erat mi, in pulvinar eros. Mauris viverra porta orci, et vehicula lectus sagittis id. Nullam at magna vitae nunc fringilla posuere. Duis volutpat malesuada ornare. Nulla in eros metus. Vivamus a posuere libero.' 
 

 
     // This line works. Try generating PDF. 
 
\t lines = doc.splitTextToSize(loremipsum, 7.5) 
 

 
\t doc.text(0.5, 0.5, lines) 
 
\t doc.save('Test.pdf') 
 
}
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
\t <title>PDF Test</title> 
 
</head> 
 
<body> 
 
\t <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.2.60/jspdf.min.js"></script> 
 
\t <button onclick="createPdf()">Create PDF</button> 
 
</body> 
 
</html>

Вы можете увидеть те же результаты в последней версии 1.2.61 тоже. Итак, ясно, что-то еще вызывает ошибку .

EDIT: Здесь я использовал in так вот она оборачивает, если текст выходит за пределы 7.5in. Если вы используете другое устройство, справляйтесь с ним должным образом или можете создавать проблемы

13

Ниже приведенный ниже код будет полезен для вашей проблемы. Он будет отлично работать для вашего требования.

var lMargin=15; //left margin in mm 
 
    var rMargin=15; //right margin in mm 
 
    var pdfInMM=210; // width of A4 in mm 
 
    function getPDF() { 
 
\t var doc = new jsPDF("p","mm","a4"); 
 
\t var paragraph="Apple's iPhone 7 is officially upon us. After a week of pre-orders, the latest in the iPhone lineup officially launches today.\n\nEager Apple fans will be lining up out the door at Apple and carrier stores around the country to grab up the iPhone 7 and iPhone 7 Plus, while Android owners look on bemusedly.\n\nDuring the Apple Event last week, the tech giant revealed a number of big, positive changes coming to the iPhone 7. It's thinner. The camera is better. And, perhaps best of all, the iPhone 7 is finally water resistant.\n\nStill, while there may be plenty to like about the new iPhone, there's plenty more that's left us disappointed. Enough, at least, to make smartphone shoppers consider waiting until 2017, when Apple is reportedly going to let loose on all cylinders with an all-glass chassis design."; 
 
\t \t 
 
     var lines =doc.splitTextToSize(paragraph, (pdfInMM-lMargin-rMargin)); 
 
\t doc.text(lMargin,20,lines); 
 
\t doc.save('Generated.pdf'); 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.0.272/jspdf.debug.js"></script> 
 
<button id="getPDF" onclick="getPDF()">Get PDF</button>

Для splitTextToSize:

Как вы сказали doc.splitTextToSize(text,size) нет в jspdf 1.2.60 апи.

Причина: Это doc.splitTextToSize(text,size) присутствует в jspdf 1.2.60 Lib но не в jspdf.js. Он представлен в jspdf.debug.js и в его миниатюре vesion jspdf.min.js. Вот почему вы не находите splitTextToSize в своем jspdf.js. Вы искали его в неправильном файле. Вы можете заменить jspdf.js на jspdf.debug.js, и ваш код будет работать отлично.

jspdf.debug.js и jspdf.min.js присутствуют в \jsPDF-master\dist месте в апи почтовый файл.

Примечание: я предоставил вам код для разделения своего длинного абзаца на нескольких строках. Здесь я разделил линию после 180 мм (210 мм-15 мм-15 мм), если текст выходит за пределы 180 мм, тогда текст будет идти в новой строке. Вы можете изменить параметры в соответствии с вашим использованием.

Ниже приведен снимок экрана для справки, который содержит splitTextToSize определение функции в jspdf.debug.js.

enter image description here Дайте мне знать, если вам нужна помощь. Счастливое кодирование ...!

+0

Я изменил 'var rMargin = 150; // правый край в мм' от 15, теперь ширина столбца мала, текст должен перейти на страницу 2, но его не происходит, то, что когда-либо могло появиться в тексте, появляется, и отдых теряется, я хочу, чтобы его продолжали следующая страница, вы можете помочь? – user2828442

+0

@ user2828442 Можете ли вы поделиться одним примером. Не получая именно то, что вы говорите, что именно вы хотите (создайте новый вопрос, если хотите) – Abhijeet

Смежные вопросы