ruby-on-rails - 邮件在 ruby​​ on rails 中合并,但数量很多

标签 ruby-on-rails ruby pdf printing mailmerge

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

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

有人知道如何将它从 HTML 打印成 PDF 吗?或者如何在每 20 页后插入更换纸盒(第一页和最后一页)或装订等命令?

谢谢你的任何想法:-)

最佳答案

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

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

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

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

关于ruby-on-rails - 邮件在 ruby​​ on rails 中合并,但数量很多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12304310/

相关文章:

ruby-on-rails - 将 rails 部署到 heroku - 未经授权的公钥访问

ruby-on-rails - 功能规范和系统规范之间的区别

jquery - 在rails中将数据转换为json格式

ruby-on-rails - Rails 4.0 存储临时 CSV 文件

ruby-on-rails - 使用角色掩码查找具有特定角色的所有用户

objective-c - 解析pdf文件并转换

c# - 将表格保存在一张 MigraDoc/PDFsharp 中

ruby 没有从终端正确执行

ruby-on-rails - 名称错误 : uninitialized constant

jquery - 使用 Ajax 调用在新窗口中打开 pdf