如何在没有人为干预的情况下直接从我的rails应用程序打印PDF?

时间:2011-01-30 06:00:19

标签: ruby-on-rails pdf printing

目前,我的网络应用程序在浏览器中生成PDF文件,并手动将其发送到打印机。

我现在需要从我的rails应用程序自动发送100多种PDF文件,无需人工干预即可打印。

我该怎么做?

我的rails应用程序驻留在heroku上。我有自己的本地打印机,但不知道我的选择是什么。我研究过具有电子邮件地址的打印机,这是理想的,但想要其他想法。

3 个答案:

答案 0 :(得分:0)

如果要从服务器打印PDF,可以使用从命令行打印到PDF的程序。在Windows上,Foxit会执行此操作。他们有Linux版本,但我只在Windows上进行了服务器端打印。

答案 1 :(得分:0)

我不知道一个简单的方法,一些随机的想法...

  • 因为它是你的应用程序,你可以暂时在你的开发机器上运行它,如果没有太多的技术或法律障碍复制足够的数据库使其工作( $ heroku db:拉)然后你可以用system('...')做点什么。

  • 你可以创建一个包含每个变体的巨型pdf。这至少可以减少人为干预一次点击。

  • 您可以使用net / ssh在heroku上的应用程序和本地计算机之间建立一个ssh隧道,虽然我想不出一个简单的方法来利用它。

  • 我想你可以制作一个快速的基于http的打印服务器,你可以在本地运行(也许带有一个神奇的身份验证cookie),然后让你的应用程序通过net / http或curl或其他东西对客户端进行http POST。

  • 您可以将pdf存储在一个表中并拥有一个本地cron作业或“heroku db:pull”,然后运行一个提取pdf并打印它们的脚本。

不知怎的,我认为这些都不是你想要的。我想我们可能需要更多地了解为什么要排除人为干预,以便专注于真正的解决方案。

答案 2 :(得分:0)

我不知道如何在rails中执行此操作,但请尝试PHP :: PRINT :: IPP

http://www.nongnu.org/phpprintipp/

安装课程

然后,在一个简单的例子中:

<?php
require_once(PrintIPP.php);
$ipp = new PrintIPP();
$ipp->setHost("localhost");
$ipp->setPrinterURI("/printers/epson");
$ipp->setData("./filename.pdf"); // Path to file.
$ipp->printJob();
?>