5

我正在尝试为 Ruby on Rails 3.2 中的打印文档实现某种邮件合并。我在 Microsoft Word 中有大约 8000 个收件人和模板来源。模板包括图像(照片),包含大约 10-20 页。

实际情况是,我将原始模板重写为 Textile (redcloth),并且图片是从互联网 (http 地址) 插入的。我做了所有的个性化等。所以我生成了 HTML 文件,并且必须将它分成许多小文件,每个文件 1000 页。我总共需要打印大约 8000 x 20 页 = 160.000 页。

任何人都知道如何将其从 HTML 打印为 PDF?或者如何在每 20 页后插入更改纸盘(第一页和最后一页)或装订的命令等?

谢谢你的任何想法:-)

4

1 回答 1

0

这是一个想法:在您的 Rails 应用程序中,将其设置为每个用户返回一个 html。另外,有一个很好的 /users/ index 方法,它可以方便地返回用户列表,可能是 json 格式。

现在,您需要一个用 ruby​​、bash 等方便的方式编写的本地脚本:

  • 从该 /users/ 方法获取用户列表,可能将其保存到文件中
  • 遍历用户列表(从文件中,所以他们并不都在内存中),并获取电子邮件的 HTML
  • 从每个下载的 HTML 生成 pdf,无论是在循环内,还是在您保存 HTML 的目录中循环文件。使用 wkhtmltopdf 或类似的。
  • 将每个 pdf 发送到打印机,再次在同一个循环内,或者在保存的 pdf 上循环。

如果你想变得花哨,更高效,你可以使用像 resque 这样的队列系统,并将这些要点中的每一个都放入一个队列中,每个队列运行一个工作人员。这将让您开始打印一些 pdf,而其他人仍在下载和转换,因此总体上应该更少时间。但是,如果您还不熟悉这样的排队系统,那么一个简单的脚本也应该可以完成。

于 2012-10-10T20:28:20.690 回答