2

我想实现一个浏览器内的 Microsoft Word 文档合并功能,它将合并的文档转换为 PDF 并将其提供给用户以供下载。我希望 Google Chrome 和 Firefox 支持此过程。这是我希望它的工作方式:

  1. 客户端 JavaScript 从服务器获取 docx 格式的 Word 模板文档,或者通过要求用户上传文件(然后可以使用 FileReader API 读取)
  2. JavaScript 使用其本地数据结构(例如,它通过 Ajax 获得的数据列表)将模板扩展为文档。它可以直接执行此操作,通过解压缩 docx 文件并处理其内容,或使用 DOCx.js。模板扩展只是用从本地数据结构中获得的值替换模板变量的问题。
  3. JavaScript 然后将扩展的模板转换为 PDF。
  4. JavaScript 向用户提供 PDF 文件以供下载,例如,使用 Downloadify。

我遇到的困难在于第 3 步。我的理解(基于我到目前为止所做的所有谷歌搜索)是​​我有以下选择:

  1. 要求本地机器是Windows机器,并在其上调用Word,转换为PDF。这可以通过使用 WScript.shell 编写一点脚本来完成,而且在 Internet Explorer 上看起来也是可行的。但是根据我所读到的内容,由于安全限制,我似乎无法从 Chrome 或 Firefox 中调用 WScript.shell。
  2. 我愿意尝试 Silverlight 进行转换,但我还没有找到足够的文档来说明如何做到这一点。理想情况下,如果我使用 Silverlight,我想用 JavaScript 编写 Silverlight 代码,因为 (a) 我不太了解 CSharp,并且 (b) 我认为用 JavaScript 会容易得多。
  3. 创建一个将给定 docx 文件转换为 pdf 文件的 Web 服务,并通过 Ajax 调用该服务。如果可能的话,我宁愿不这样做,原因如下: (a) 我尝试使用docx4java(我是一个相当熟练的 Java 程序员),但是转换过程太慢了,而且它不能很好地保留文档内容;(b) 我想避免呼叫网络,以避免安全问题。似乎可以在 Windows 服务器上编写一个小服务来进行转换,如果没有其他好的选择,我可能会走那条路。

如果我有什么不清楚的地方,请告诉我。我会很感激你的想法和反馈。

4

2 回答 2

2

我喜欢命令行工具。

将文档加载到您的服务器并使用 LibreOffice 通过命令行将其转换为 PDF

soffice.exe --headless --convert-to pdf --outdir E:\Docs\Out E:\Docs\In\a.doc

您可以向用户显示进度条,并在完成后为他们提供下载文档的选项。

有关 LibreOffice 命令行参数的更多信息,请访问此处

完毕。

于 2012-11-20T16:05:31.290 回答
0

现在是老问题了,但是对于任何偶然发现这个问题的人来说,网络组装(wasm)现在使这种方法成为可能。

我们刚刚发布了https://www.npmjs.com/package/@nativedocuments/docx-wasm可以在本地执行转换。

于 2019-01-22T22:22:13.940 回答