我目前正在使用 Ruby on Rails 3.2 开发一个管理套件。
它需要执行的任务之一是生成合同和发票。
因为应用程序需要容纳多个客户,我希望每个客户都能够上传某种模板,这些模板决定了他们的个人风格和布局。(即:徽标、公司名称、地址等)。
我正在考虑让客户使用变量和占位符创建自己的 .docx 合同模板,当生成特定合同/发票时,我的应用程序应替换这些模板。请注意,创建模板的人不会精通技术。
我应该如何才能做到这一点?请注意,将有可以直接替换的占位符以及应该包含在表格中的重复元素。这些元素的数量可能因合同而异。
在考虑了许多可用的解决方案、宝石和示例之后,我无法找到适合我情况的解决方案。这是我到目前为止所尝试的:
- 通过提取 document.xml 并替换占位符来操作 Docx。这不是非常健壮和可靠的,因为拼写检查或换行会拆分包含占位符的 XML 节点。
- wicked_pdf 和其他 html > pdf 生成器:不可行,因为我不能期望我的客户提供自定义 css 来设置文档样式。
- Prawn:更适合从头开始创建文档。模板功能根本无法满足我的需求,也不支持替换占位符数据和重复元素
- Google Drive:将模板移交给 Google,并使用 Drive API 修改文档并在完成后提取 PDF:增加外部服务的额外可靠性。更多的是最后的手段。真的希望找到一个我可以在本地运行的解决方案。
我觉得我错过了一些明显的东西。我无法想象在使用 Ruby on Rails 时,像文档生成这样平凡的任务会如此复杂。