客户要求我为他正在运行的webapp构建一个模块,该模块可以加载docx文件并根据文档中的标题提取数据。我知道docx只是一个zip文件,我需要的大部分内容都可以在word / document.xml中找到,虽然我不期待解析列表/样式/图像/表以及其他需要翻译的东西。 OOXML到HTML。
这种格式有没有PHP库?我确实需要某种灵活性:只是OOXML到HTML转换器不会削减它,我需要将文档分成几部分。
答案 0 :(得分: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
修改强> 如果需要标题,则需要解析文档,而不仅仅是属性。这将意味着识别标题样式,并解析具有这些样式的实体的文本。
答案 1 :(得分:2)
Codeplex有许多库可以使用MS Office文档:
除了PHPExcel,我不知道这些项目有多成熟。如果没有什么可以帮助你,你仍然可以使用DOM。
答案 2 :(得分: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”)。
答案 3 :(得分:0)
你也可以使用这个库https://poi.apache.org/ 并通过php java bridge http://php-java-bridge.sourceforge.net/pjb/连接它们 - 安装tomcat服务器 - 将java bridge放在webapps文件夹中并添加poi库 - 然后你可以使用这个库来提取标题样式。 API已有详细记录,您有很多选择。 执行此操作的PHP库会更好,但如果它适用于您或其他人,您可以尝试此方法