现在我在HRMS中完成生成合同函的任务。 我已经在使用CKEditor,但结果却截然不同,因为CKEditor的目的不像Microsoft Word或Google Docs。
所以我知道我在Microsoft Word中首先制作模板并使用PHP函数str_replace将数据传递到Microsoft Word模板。
问题是: 有了这个流程,有可能这样做吗? 2.如果问题1可能,你能不能给我打样?
非常感谢, 亨德拉
答案 0 :(得分:1)
有几个类可以完成至少部分你想要做的事情:
其中前4个至少部分是开源的,调查代码将帮助您理解这个过程,这不是一件轻而易举的事。此外,您可以查看http://officeopenxml.com以了解格式详情。
我看到的主要问题是使用适当的HTML进行openXML转换。将样式从CKEditor(可能是HTML)转换为正确的XML样式的意义,它的功能完全不同,直接翻译并不简单。查看https://github.com/wrklst/docxmustache/blob/master/src/WrkLst/DocxMustache/HtmlConversion.php,以便在粗体,斜体和带下划线的文本的单一运行中查看一些基本的HTML转换。
据我所知,没有维护的开源软件包可以为openxml转换提供正确的html。如果您需要这个并且不能自己编写,那么您可能会选择其中一种付费解决方案。
祝你好运。答案 1 :(得分:0)
Docx是一种包含一些xml的压缩格式。如果您想通过值系统构建一个简单的替换{tag},它可能已经变得复杂,因为{tag}在内部被分为
<w:t>{</w:t><w:t>tag</w:t><w:t>}</w:t>
。如果你想嵌入循环迭代一个数组,那就变得非常麻烦了。
来源:https://docxtemplater.readthedocs.io/en/latest/goals.html
您可以使用我在回答此问题时创建的库:https://github.com/open-xml-templating/docxtemplater,它可以在浏览器中使用JS,也可以使用node.js。