我有一个 Web 项目,我必须从用户提供的文档中导入文本和图像,其中一种可能的格式是 Microsoft Office 2007。还需要生成这种格式的文档。
服务器运行 CentOS 5.2 并安装了 PHP/Perl/Python。如果必须,我可以执行本地二进制文件和 shell 脚本。我们使用 Apache 2.2,但一旦上线就会切换到 Nginx。
我有哪些选择?有人有这方面的经验吗?
我有一个 Web 项目,我必须从用户提供的文档中导入文本和图像,其中一种可能的格式是 Microsoft Office 2007。还需要生成这种格式的文档。
服务器运行 CentOS 5.2 并安装了 PHP/Perl/Python。如果必须,我可以执行本地二进制文件和 shell 脚本。我们使用 Apache 2.2,但一旦上线就会切换到 Nginx。
我有哪些选择?有人有这方面的经验吗?
Office 2007 文件格式是开放的并且有据可查。粗略地说,所有以“x”结尾的新文件格式都是 zip 压缩的 XML 文档。例如:
打开 Word 2007 XML 文件 创建一个临时文件夹,用于存储文件及其部分。
将包含文本、图片和其他元素的 Word 2007 文档另存为 .docx 文件。
在文件名末尾添加 .zip 扩展名。
双击该文件。它将在 ZIP 应用程序中打开。您可以看到组成文件的部分。
将部件提取到您之前创建的文件夹中。
其他文件格式大致相似。我还不知道有任何开源库可以与它们进行交互——但根据您的具体要求,阅读和编写简单的文档看起来并不难。当然,它应该比旧格式容易得多。
如果您需要阅读较旧的格式,OpenOffice 有一个 API,可以读取和写入 Office 2003 和较旧的文档,或多或少成功。
python docx 模块可以从纯 Python 生成格式化的 Microsoft Office docx 文件。开箱即用,它处理标题、段落、表格和项目符号,但 makeelement() 模块可以扩展为处理任意元素,如图像。
from docx import *
document = newdocument()
# This location is where most document content lives
docbody = document.xpath('/w:document/w:body',namespaces=wordnamespaces)[0]
# Append two headings
docbody.append(heading('Heading',1) )
docbody.append(heading('Subheading',2))
docbody.append(paragraph('Some text')
我已在项目中成功使用OpenXML 格式 SDK通过代码修改 Excel 电子表格。这将需要 .NET,我不确定它在 Mono 下的效果如何。
您可能可以检查Sphider的代码。他们提供文档和 pdf,所以我相信他们可以阅读。也可能会引导您走向其他 Office 格式的正确方向。