2

一位客户要求我为他正在运行的 web 应用程序构建一个模块,该模块可以加载 docx 文件并根据文档中的标题提取数据。我知道 docx 只是一个 zip 文件,我需要的大部分内容都可以在 word/document.xml 中找到,尽管我不期待解析列表/样式/图像/表格以及其他需要翻译的内容OOXML 到 HTML。

有这种格式的 PHP 库吗?不过,我确实需要某种灵活性:只是一个 OOXML 到 HTML 转换器并不能解决它,我需要将文档分成几部分。

4

4 回答 4

4

如果是纯docx,可以试试phpdocx ……不知道是读还是只写。PHPWord还没有读,只能写(虽然我正在研究它)。

如果您只需要属性信息,那么您可以在 zip 中的 /docProps/core.xml 文件中找到所有信息(可能在 /docProps/app.xml 中,具体取决于您需要的属性),因此您可以绕过大多数包含文本、样式、图像等的文件。为了验证文件名,[Content_Types].xml 将核心和应用程序属性文件的文件名保存为 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+ xml 和 application/vnd.openxmlformats-officedocument.extended-properties+xml

编辑: 如果您需要标题,那么您将需要解析文档,而不仅仅是属性。这将意味着识别标题样式,并为具有这些样式的实体解析文本。

于 2010-06-30T07:49:57.173 回答
2

OpenTBS可以使用模板技术读取和修改 PHP 中的 DOCX(和其他 OpenXML 文件)文档。无需临时文件,无需命令行,全部在 PHP 中。

但如果您只需要读取 DOCX 文件的一部分,则可以使用TbsZip类。它可以读取 zip 存档(与任何 OpenXML 文件一样,DOCX 是一个主要包含 XML 文件的 zip 存档)。

在 DOCX 文件中,页眉和页脚子文件通常是“/word/header1.xml”和“/word/footer1.xml”。它们仅在定义了页眉/页脚时才存在。奇数页也可能有一对可选的 XML 子文件(通常是“/word/header2.xml”和“/word/footer2.xml”)。第一页还有一对可选的子文件(通常是“/word/header3.xml”和“/word/footer3.xml”)。

http://www.tinybutstrong.com/opentbs.php

于 2011-03-31T22:59:24.873 回答
2

Codeplex 有许多可以处理 MS Office 文档的库:

除了PHPExcel,我不知道那些项目有多成熟。如果没有什么可以帮助您,您仍然可以使用DOM

于 2010-06-30T07:47:48.037 回答
0

您也可以使用这个库https://poi.apache.org/ 并通过 php java bridge http://php-java-bridge.sourceforge.net/pjb/连接它们 - 安装一个 tomcat 服务器 - 将 java bridge 放在webapps 文件夹并添加 poi 库 - 然后您可以使用此库来提取标题样式。API 有据可查,您有很多选择。执行此操作的 PHP 库会更好,但如果它适用于您或其他人,您可以尝试这种方法

于 2015-08-25T14:56:52.733 回答