简体   繁体   English

如何在jsPDF中包装单词?

[英]How to wrap word in jsPDF?

I downloaded jspdf 1.2.60 to generate pdf containing text from my html table. 我下载了jspdf 1.2.60来生成包含html表格文本的pdf。 One of the columns contains notes entered by user thus can be very large as a result of which text is running of the page. 其中一列包含用户输入的注释,因此可能非常大,因为文本正在运行页面。

On scouring I found this however the 在淘,我发现了这个

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

is no more available in the api. 在api中不再可用。 (I looked into the jspdf.js file). (我查看了jspdf.js文件)。

How do I solve this? 我该如何解决这个问题?

Any idea is appreciated. 任何想法都表示赞赏。

Below code will be useful for your problem. 下面的代码对您的问题很有用。 It will work perfectly for your requirement. 它将完美地满足您的要求。

  var lMargin=15; //left margin in mm var rMargin=15; //right margin in mm var pdfInMM=210; // width of A4 in mm function getPDF() { var doc = new jsPDF("p","mm","a4"); 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."; var lines =doc.splitTextToSize(paragraph, (pdfInMM-lMargin-rMargin)); doc.text(lMargin,20,lines); 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> 

For splitTextToSize : 对于splitTextToSize

As you were saying doc.splitTextToSize(text,size) is not present in jspdf 1.2.60 api. 正如您所说,jspdf 1.2.60 api中不存在doc.splitTextToSize(text,size)

Reason : It doc.splitTextToSize(text,size) is present in jspdf 1.2.60 lib but not in jspdf.js . 原因doc.splitTextToSize(text,size)存在于jspdf 1.2.60 lib中,但不存在jspdf.js中 It is present in jspdf.debug.js and in its minified vesion jspdf.min.js . 它存在于jspdf.debug.js及其缩小的vesion jspdf.min.js中 That's the reason you are not finding splitTextToSize in your jspdf.js . 这就是你在splitTextToSize中找不到splitTextToSizejspdf.js You were looking it in wrong file. 你在错误的文件中查找它。 You can replace your jspdf.js with jspdf.debug.js and your code will work perfectly. 您可以取代你jspdf.jsjspdf.debug.js和您的代码将很好地工作。

jspdf.debug.js and jspdf.min.js are present in \\jsPDF-master\\dist location in api zip file. jspdf.debug.js和jspdf.min.js存在于api zip文件的\\jsPDF-master\\dist位置。

Note : I have provided you code for splitting your long paragraph in multiple lines. 注意 :我已经为您提供了用于在多行中拆分长段的代码。 Here I've split line after 180mm(210mm-15mm-15mm),If text goes beyond 180mm then text will be go in newline. 这里我在180mm(210mm-15mm-15mm)后分割线,如果文字超过180mm,那么文字将以换行方式进行。 You can change the parameters according to your use. 您可以根据用途更改参数。

Below is screenshot for your reference which contains splitTextToSize function definition in jspdf.debug.js . 下面是截图,供大家参考包含splitTextToSize在函数定义jspdf.debug.js

在此输入图像描述 Let me know if you need any help. 如果您需要任何帮助,请告诉我。 Happy Coding...! 快乐的编码......!

It just works without any flaws. 它只是没有任何缺陷。 Proof: 证明:

 function createPdf() { var doc = new jsPDF('p','in','letter') 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. lines = doc.splitTextToSize(loremipsum, 7.5) doc.text(0.5, 0.5, lines) doc.save('Test.pdf') } 
 <!DOCTYPE html> <html> <head> <title>PDF Test</title> </head> <body> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.2.60/jspdf.min.js"></script> <button onclick="createPdf()">Create PDF</button> </body> </html> 

You can see the same results in the latest version 1.2.61 too. 您也可以在最新版本1.2.61中看到相同的结果。 So, clearly, something else is causing the error . 所以,显然, 还有其他因素导致错误

EDIT : Here I've used in so here it wraps if text goes beyond 7.5in . 编辑 :我in这里使用in ,如果文本超过7.5英寸,它会包装。 If you're using a different unit, deal with it properly, or that may create problems 如果您使用的是其他设备,请正确处理,否则可能会产生问题

 function createPdf() { var doc = new jsPDF('p','in','letter') 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 liberous 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 liberous 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 liberous 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 liberous 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 liberous 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. lines = doc.splitTextToSize(loremipsum, 7.5) doc.text(0.5, 0.5, lines) doc.save('Test.pdf') } 
 <!DOCTYPE html> <html> <head> <title>PDF Test</title> </head> <body> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.2.60/jspdf.min.js"></script> <button onclick="createPdf()">Create PDF</button> </body> </html> 

This dynamic solution worked for me. 这种动态解决方案对我有用。

 var para='JSPDF is the HTML5 client-side solution for generating PDFs. This is perfect for event tickets, reports, and certificates. Just include the JSPDF library in your <head>, generate your PDF using the many built-in functions'; var doc = new jsPDF(); var pageWidth = doc.internal.pageSize.width || doc.internal.pageSize.getWidth(); var ParaWidth=pageWidth*0.85; /* para width will 85% of the page width. */ var LeftMargin=(pageWidth-ParaWidth)/2;/* Left margin will be half of the remaining space*/ var TopMargin=30;/*According to your requirement*/ var lines = doc.splitTextToSize(para, ParaWidth); doc.text(LeftMargin, TopMargin , lines); doc.save('MyPage.pdf'); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.min.js"></script> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM