我有一个网络项目,必须从用户提供的文档中导入文本和图像,其中一种可能的格式是Microsoft Office 2007。还需要生成此格式的文档。
服务器运行CentOS 5.2,并安装了PHP / Perl / Python。如果必须执行本地二进制文件和shell脚本。我们使用Apache 2.2,但将在上线后切换到Nginx。
我的选择是什么?有人对此有经验吗?
我有一个网络项目,必须从用户提供的文档中导入文本和图像,其中一种可能的格式是Microsoft Office 2007。还需要生成此格式的文档。
服务器运行CentOS 5.2,并安装了PHP / Perl / Python。如果必须执行本地二进制文件和shell脚本。我们使用Apache 2.2,但将在上线后切换到Nginx。
我的选择是什么?有人对此有经验吗?
Office 2007文件格式是开放的,并且有很好的文档说明。大体上,所有以“x”结尾的新文件格式都是压缩的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')