【问题标题】:Creating a printable/downloadable PDF of a web application创建 Web 应用程序的可打印/可下载 PDF
【发布时间】:2014-03-08 10:23:02
【问题描述】:

几周以来,我一直在寻找这个问题的答案。几年前我也曾尝试对此进行研究,但无济于事。

问题总结:

我的公司为一家大型饮料经销商开发了一个基于网络的数据分析套件。他们最近要求提供一种功能,允许用户打印或下载视觉上令人愉悦的呈现应用程序的 PDF 版本。我没有找到可靠的、可控的或可靠的方法来做到这一点。我希望堆栈社区能够为我指明正确的方向。

当前技术栈:

  • Plack 服务器
  • Perl 基于 Dancer 框架
  • 标准网络开发前端:HTML5、CSS3、Javascript、Jquery/UI
  • 客户端使用的是 IE9/10 和 Chrome。

尝试的解决方案总结:

显然我从 window.print() 开始并尝试使用类和专门的 print.css 控制打印的内容,但输出仍然很糟糕。

我查看了 pdfmachine 和 pdfbox,甚至直接联系了 Adob​​e 的 acrobat 开发团队,看看他们是否有我们公司可以购买的开箱即用解决方案。我被告知,这样的产品会与他们期望的将 acrobat 订阅放在每台客户端计算机上而不是单个服务器端应用程序上的商业模式背道而驰。

我已经广泛搜索了堆栈文章,但并不认为我找到的文章涵盖了我正在寻找的内容。

目前,我完全没有想法,希望有人在这方面比我有更好的运气。

tl;dr = 我需要一个复杂报告应用程序的呈现输出的 pdf 版本。

感谢您的时间堆栈,我很感激。

【问题讨论】:

  • 也许this SO question,以及它作为副本链接的问题,可能会有所帮助。原始问题的答案建议使用WWW::Mechanize::Firefox 连接到该站点并生成PNG。然后,您可以将其转换为 PDF。
  • 这些故事看起来很有帮助。我将开始调查并报告。感谢您的及时回复!

标签: javascript html perl css pdf


【解决方案1】:

我过去使用的一个解决方案是使用在服务器上运行的 PhantomJS 来生成 PDF 以供下载/发送电子邮件。通常,如果内容是敏感的,服务器(处理身份验证)会提供一个一次性查看令牌,然后将其传递给 PhantomJS 进程。它使用查看令牌加载 URL,然后保存为 PDF。

可以在 GitHub 上找到有关 Phantoms screen cap API 的更多信息。 https://github.com/ariya/phantomjs/wiki/Screen-Capture

【讨论】:

  • 我现在也在研究 PhantomJS。感谢您指出!
  • 我使用的方法基本上是使用 Phantoms Server 模块来接受请求。就我而言,我想根据 GUID 创建一个报告。然后它请求一个不需要身份验证的内部 URL 来加载报告并将其保存为 PDF 以通过电子邮件发送。您也可以将其发送回浏览器(或链接)以供下载。
【解决方案2】:

您可以使用PDF::API2PDF::Create 在Perl 中创建它吗?您可以加载和修改现有的 PDF(如果您需要标准页眉和页脚,则很方便),然后插入相关内容。学习曲线可能有点陡峭,但简单的报告应该很容易。

也见 PDF::TextBlockPDF::Table - 他们是很棒的小帮手。

【讨论】:

    【解决方案3】:

    考虑这项服务http://pdfmyurl.com/。我尝试使用许多 perl 模块,但它们不能满足我的问题。

    【讨论】:

    • 我发现了几项与此类似的服务。问题是它需要我的用户将 API 输出到第 3 方系统。应用程序中显示的数据是专有信息并且是机密的,因此我们需要将转换系统保留在内部。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    相关资源
    最近更新 更多