#1 楼
我刚刚编写了一个名为jsPDF的库,该库仅使用Javascript即可生成PDF。它仍然很年轻,我将很快添加功能和错误修复。还为不支持数据URI的浏览器中的解决方法提供了一些建议。它是根据MIT的宽松许可证获得许可的。在开始写这个问题之前,我曾遇到过这个问题,并以为我会回来告诉你:)
用Javascript生成PDF
示例创建“ Hello World” PDF文件。
// Default export is a4 paper, portrait, using milimeters for units
var doc = new jsPDF()
doc.text('Hello world!', 10, 10)
doc.save('a4.pdf')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.5/jspdf.debug.js"></script>
#2 楼
另一个值得一提的javascript库是pdfmake。pdfmake游乐场
github上的makemake
浏览器支持似乎不如jsPDF强大,似乎也没有形状的选项,但是用于格式化文本的选项比jsPDF中当前可用的选项更高级。
评论
这个答案应该更多,pdfmake比jspdf更健壮。但是,仅需注意,它是PDFKit库的包装。
–vittore
15年4月19日在19:27
另一个说明,jspdf不支持utf-8,而pdfmake仅默认字体支持utf-8。
–狮子座
16-4-5在7:21
“ pdfmake.min.js-0.1.22-9小时前”它尚未死,今天已更新。
– zenbeni
16/12/23在15:43
通过比较这两个方面,对我来说,似乎jsPDF更加针对“图形” PDF创建,而pdfmake更加针对于生成格式正确的“普通”文档,它似乎有更多的通用文本格式选择。
–cslotty
17年12月17日在10:31
这是IE友好的吗?
–蛮锤
19年6月27日在18:33
#3 楼
我维护PDFKit,它也为pdfmake提供支持(已在此处提及)。它可以在Node和浏览器中运行,并支持其他库无法提供的功能:嵌入子字体,并支持unicode。
许多高级文本布局内容(列,分页符,完整的unicode换行符,基本的RTF文本等)。
为高级字体(OpenType / AAT连字,上下文替换等)处理更多字体内容。即将推出:如有兴趣,请访问fontkit分支。
更多图形功能:渐变等。
内置了现代工具,例如browserify和stream。在浏览器和节点中均可使用。
查看http://pdfkit.org/以获得完整的教程,亲自了解PDFKit可以做什么。并举例说明可以生成哪些类型的文档,请使用PDFKit本身,将某些Markdown文件生成的PDF格式的文档签出:http://pdfkit.org/docs/guide.pdf。
您也可以在以下浏览器中以交互方式进行尝试:http://pdfkit.org/demo/browser.html。
评论
这不是服务器端库吗?我认为讨论是在客户端js库上进行的。
– Ash Catchem
15年3月16日在15:53
如答案中所述,PDFKit在Node和浏览器中均可使用。请参阅浏览器演示的链接。
– devongovett
15年3月17日在10:06
这会压缩图像吗?我正在开发一个功能与camscanner相似的Web应用程序,并且正在寻找通过JavaScript创建PDF以利用压缩和多页格式的功能。
–特雷弗
17年7月4日在14:47
@devongovett您可以看看我有关您的图书馆的问题吗?
–ninbit
19 Mar 15 '19在20:41
#4 楼
另一个有趣的项目是texlive.js。它允许您在浏览器中将(La)TeX编译为PDF。
评论
hello world示例可以很好地渲染,但是大约需要30秒钟才能完成。
– Sam Sippe
17年7月1日在5:01
#5 楼
您可以通过添加从任何URL创建pdf的链接(例如http://www.phys.org)来使用此免费服务:http://freehtmltopdf.com/?convert=http% 3A%2F%2Fwww.phys.org&size = US_Letter&orientation = portrait&framesize = 800&language = zh-CN
评论
更新:当我去检查这个freehtmltopdf.com服务时,它说它不再可用。听起来真是太神奇了!
–马克·杜克(Mark Duiker)
16年8月10日在19:36
现在检查-有效。令人惊讶的是,我使用的服务是我为每个pdf付费,并且需要编写代码,这是一个解决问题的方法。
–谢尔盖·索布
16 Dec 26'在17:16
#6 楼
即使可以使用JavaScript生成PDF内存中的内存,也仍然存在如何将数据传输给用户的问题。 JavaScript很难仅向用户推送文件。要向用户获取文件,您需要进行服务器提交,以使浏览器显示保存对话框。
话虽如此,生成PDF确实并不难。只需阅读规格。
评论
这一点都不困难,例如,它似乎可以与Data-URIs一起使用en.wikipedia.org/wiki/Data_URI_scheme(我以前做过,但是我不记得我是否使用过Data-URIs)。
–比约恩
13年10月31日在13:37
这些天,您可以轻松地使用JavaScript创建文件。 (我来自未来)
–德里克·朕会功夫
2014年3月3日,下午2:06
如今真的很简单..例如:github.com/ChenWenBrian/FileSaver.js
–罗伊·里奥哈斯(roy riojas)
2014年10月1日,9:45
@FrankKrueger如果您删除答案,您将获得6分:P
–卡米尔(KamilKiełczewski)
16年8月24日在9:34
@FrankKreuger,“阅读规范”几乎永远不是正确的答案。
–克里希南(Krishnan Venkiteswaran)
18-10-30在6:18
评论
我是否部分启发了jsPDF?在您宣布jsPDF的那一天,我就了解了它。到目前为止看起来很棒。我最终选择了Prawn,因为它很容易满足我的需求,是最好的PDF生成库。我仍然很乐意在浏览器中完成所有工作,因为我不太肯定会在要部署到的系统上安装Ruby。我正在密切关注jsPDF。我很乐意提供帮助,但是我的时间非常有限。将来可能会改变。
–amoeba
09年5月4日19:40
您确实激发了它:),我在Internet上四处看看是否已经存在,并发现有些人会发现它很有用。让我知道您是否想帮忙。我是Twitter上的@MrRio。
–詹姆斯·霍尔(James Hall)
09年5月7日在9:22
它仍然非常活跃。 0.9.0rc2今天发布。
–詹姆斯·霍尔(James Hall)
2013年4月7日22:00
@JamesHall,我要感谢您为编写此书必须付出的所有工作,并感谢MIT许可它使您可以为自己的利益进行商品化而使世界变得更美好。
–查尔斯·伯恩斯
2013年9月26日14:58
下选民可以为我们提供“更好”的想法或解决方案吗?这是一项出色的工作。
– OnurYıldırım
15年4月28日在21:20