邮件在轨道上合并红宝石,但数量很多

dom*_*orm 5 ruby printing pdf ruby-on-rails mailmerge

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

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

有谁知道如何从HTML打印到PDF?或者如何插入更换纸盘(第一页和最后一页)或每20页后装订等命令?

谢谢你的任何想法:-)

soc*_*onk 0

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

现在,您需要一个用 ruby​​、bash 或任何方便的语言编写的本地脚本,以便:

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

如果您想要更花哨并且更高效,您可以使用像 resque 这样的排队系统,并将每个要点放入一个队列中,并为每个队列运行一个工作程序。这样您就可以开始打印一些 pdf,而其他 pdf 仍在下载和转换,因此总体时间应该更短。但如果您还不熟悉这样的排队系统,一个简单的脚本也应该可以完成它。