创建Web应用程序的可打印/可下载PDF

时间:2014-02-10 21:21:43

标签: javascript html5 perl css3 pdf

我几个星期以来一直在寻找这个问题的答案。几年前我也曾试图研究这个,但无济于事。

问题摘要:

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

当前技术堆栈:

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

尝试的解决方案摘要:

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

我查看了pdfmachine和pdfbox,甚至直接联系了Adobe的acrobat开发团队,看看他们是否有我们公司可以购买的现成解决方案。我被告知这样的产品与他们在每台客户端计算机而不是单个服务器端应用程序上放置acrobat订阅所需的商业模式相反。

我已经广泛搜索了堆栈文章,但并不觉得我发现的文章涵盖了我所寻找的内容。

目前,我完全没有想法,我希望那里的人比我有更好的运气。

tl; dr =我需要复杂报告应用的渲染输出的pdf版本。

感谢你的时间叠加,我很感激。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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