使用 javascript 和/或 php 生成 pdf 的更好方法是啥?

Posted

技术标签:

【中文标题】使用 javascript 和/或 php 生成 pdf 的更好方法是啥?【英文标题】:What's the better way to generate pdf using javascript and/or php?使用 javascript 和/或 php 生成 pdf 的更好方法是什么? 【发布时间】:2011-12-24 13:21:17 【问题描述】:

我有一个网络应用程序,我需要将数据打印成 pdf。 在后端我使用 php,而在前端使用 javascript MVC 框架(backbone.js)。

我不知道是仅使用 javascript 生成 pdf(..然后使用数据缓存)还是使用 ajax 将调用将生成 pdf 的 php 页面...更好的解决方案是什么?

当然,我需要能够打印、保存和使用 pdf 的样式表。

谢谢。

【问题讨论】:

Javascript:用户的计算机将完成这项工作; PHP:您自己的服务器执行作业,如果有大约 100 个用户同时生成 PDF,这可能会出现问题。 相关? ***.com/questions/742271/… 【参考方案1】:

我更喜欢mPDF 来生成 PDF:

您可以使用 PHP 生成 PDF 并通过执行 AJAX 调用来获取它,这是唯一的好方法。当然,在 mPDF 中,您可以使用 CSS 设置文档样式。

如果您想使用 javascript 阅读 PDF,请阅读:Open Source Javascript PDF viewer

编辑: 现在是 2016 年,mPDF 肯定是不推荐的,已弃用的软件。有很多更好的,看看 GitHub:

PHP:https://github.com/search?l=PHP&o=desc&q=pdf&ref=searchresults&s=stars&type=Repositories&utf8=%E2%9C%93

JavaScript:https://github.com/search?utf8=%E2%9C%93&q=node+pdf&type=Repositories&ref=searchresults

【讨论】:

根据您的建议,我发现:code.google.com/p/dompdf 也许比 mpdf 更好,试试吧。【参考方案2】:

如果您需要精确的格式,请查看 DocRaptor。它们是围绕 Prince XML 构建的 SaaS。

https://docraptor.com/

这是一个使用 PHP 的示例(输出到 Excel 电子表格而不是 PDF)

https://docraptor.com/documentation#php_example

<?php

$api_key = "YOUR_API_KEY_HERE";
$url = "https://docraptor.com/docs?user_credentials=$api_key";

$document_content = "<table><tr><td>Cell</td></tr></table>";

$request = new HTTPRequest($url, HTTP_METH_POST);
$request->setPostFields(array('doc[document_content]' => $document_content, 
                              'doc[document_type]'    => 'xls',
                              'doc[name]'             => 'my_doc.xls',
                              'doc[test]'             => 'true'));
$request->send();

$file = fopen ("my_excel_doc.xls", "w"); 
fwrite($file, $request->getResponseBody()); 
fclose ($file);

?>

【讨论】:

【参考方案3】:

这是 PHP 中 PDF 扩展的 PHP 手册:

http://php.net/manual/en/book.pdf.php

此外,本文还准确展示了在 PHP 中生成 PDF 所需的操作:

http://www.sitepoint.com/generate-pdfs-php/

【讨论】:

【参考方案4】:

有几种纯js的解决方案,但都不是很可靠,并不是在所有浏览器中都有效。你可以看看这里:

http://andreasgal.com/2011/06/15/pdf-js/

这是他们很酷的例子: http://mozilla.github.com/pdf.js/web/viewer.html

还有这个项目: http://code.google.com/p/jspdf/

了解限制,如果它们对您的项目来说太多,请按照人们的建议使用 PHP。

如果您知道客户端安装了 flash/acrobat 插件,您可以在客户端上使用它们来生成 PDF,请查看此处了解详细信息: http://www.adobe.com/devnet/acrobat.html

【讨论】:

太棒了!我的应用不会是多平台的,我会尝试【参考方案5】:

您可能希望使用 PHP 来构建 PDF。 不确定是否有任何 javascript 库可以做这样的事情。 正如@Sn0opy 所说,如果很多人正在生成 PDF(特别是如果它们很大),这可能会成为服务器问题。

那里有许多用于 PHP 的 PDF 构建器。我已经成功使用了 html2ps 和 tcpdf。

【讨论】:

【参考方案6】:

我非常喜欢这个 php:html2pdf

【讨论】:

以上是关于使用 javascript 和/或 php 生成 pdf 的更好方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用 JavaScript 或 PHP 动态生成 CSS 网格

如何使 PHP 或 JavaScript 生成 HTML 表单

使用 Javascript 和 PHP 使用 TTF 生成图像

使用包含 php 和 ifs 的 javascript 生成 HTML [关闭]

具有多个父项的 Javascript/PHP 家谱生成器 [关闭]

PHP:使用javascript生成的数据(ES6)