我正在尝试在 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/