过去,文字处理文件使用封闭的、专有的格式。在一些较旧的文字处理器中,文档文件本质上是文字处理器的内存转储。虽然这使得文档可以更快地加载到文字处理器中,但也使得文档文件格式变得不透明且混乱。
2005 年左右,结构化信息标准促进组织 (OASIS) 定义了一种用于所有类型办公文档的开放格式,即办公应用程序开放文档格式 (ODF)。您也可能看到 ODF 简称为“OpenDocument 格式”,因为它是一个基于 OpenOffice.org 的 XML 文件规范的开放标准。ODF 包括多种文件类型,包括用于 OpenDocument 文本文档的 ODT。ODT 文件中有很多内容值得探索,而一切都从 zip 文件开始。
Zip 结构
与所有 ODF 文件一样,ODT 实际上是一个 XML 文档以及包裹在 zip 文件容器中的其他文件。使用 zip 意味着文件占用更少的磁盘空间,但这也意味着您可以使用标准 zip 工具来检查 ODF 文件。
我有一篇关于 IT 领导力的文章,名为“被鸭子咬死的领导”,我将其保存为 ODT 文件。由于这是一个 ODF 文件(即 zip 文件容器),您可以使用命令行中的 unzip 来检查它
$ unzip -l 'Nibbled to death by ducks.odt'
Archive: Nibbled to death by ducks.odt
Length Date Time Name
39 07-15-2022 22:18 mimetype
12713 07-15-2022 22:18 Thumbnails/thumbnail.png
915001 07-15-2022 22:18 Pictures/10000201000004500000026DBF6636B0B9352031.png
10879 07-15-2022 22:18 content.xml
20048 07-15-2022 22:18 styles.xml
9576 07-15-2022 22:18 settings.xml
757 07-15-2022 22:18 meta.xml
260 07-15-2022 22:18 manifest.rdf
0 07-15-2022 22:18 Configurations2/accelerator/
0 07-15-2022 22:18 Configurations2/toolpanel/
0 07-15-2022 22:18 Configurations2/statusbar/
0 07-15-2022 22:18 Configurations2/progressbar/
0 07-15-2022 22:18 Configurations2/toolbar/
0 07-15-2022 22:18 Configurations2/popupmenu/
0 07-15-2022 22:18 Configurations2/floater/
0 07-15-2022 22:18 Configurations2/menubar/
1192 07-15-2022 22:18 META-INF/manifest.xml
970465 17 files
我想重点介绍 zip 文件结构的一些元素
mimetype
文件包含定义 ODF 文档的单行代码。处理 ODT 文件的程序(如文字处理器)可以使用此文件来验证文档的MIME
类型。对于 ODT 文件,这应始终为
application/vnd.oasis.opendocument.text
META-INF
目录中有一个manifest.xml
文件。此文件包含有关在哪里找到 ODT 文件其他组件的所有信息。任何读取 ODT 文件的程序都从该文件开始,以找到其他所有内容。例如,我的 ODT 文档的manifest.xml
文件包含以下行,用于定义在哪里找到主要内容
<manifest:file-entry manifest:full-path="content.xml" manifest:media-type="text/xml"/>
-
content.xml
文件包含文档的实际内容。 -
我的文档包含一个屏幕截图,该截图包含在
Pictures
目录中。
从 ODT 文件中提取文件
由于 ODT 文档只是一个具有特定结构的 zip 文件,因此您可以从中提取文件。您可以首先解压缩整个 ODT 文件,例如使用此 unzip 命令
$ unzip -q 'Nibbled to death by ducks.odt' -d Nibbled
一位同事最近要求复制我文章中包含的图片。我通过查看 META-INF/manifest.xml
文件,找到了任何嵌入图片的准确位置。grep
命令可以显示描述图片的任何行
$ cd Nibbled
$ grep image META-INF/manifest.xml
<manifest:file-entry manifest:full-path="Thumbnails/thumbnail.png" manifest:media-type="image/png"/>
<manifest:file-entry manifest:full-path="Pictures/10000201000004500000026DBF6636B0B9352031.png" manifest:media-type=" image/png”/>
我要查找的图像保存在 Pictures
文件夹中。您可以通过列出目录的内容来验证这一点
$ ls -F
Configurations2/ manifest.rdf meta.xml Pictures/ styles.xml
content.xml META-INF/ mimetype settings.xml Thumbnails/
它就在这里

(Jim Hall, CC BY-SA 40)
OpenDocument 格式
OpenDocument 格式 (ODF) 文件是一种开放文件格式,可以描述文字处理文件 (ODT)、电子表格文件 (ODS)、演示文稿 (ODP) 和其他文件类型。由于 ODF 文件基于开放标准,您可以使用其他工具来检查它们,甚至从中提取数据。您只需要知道从哪里开始。所有 ODF 文件都以 META-INF/manifest.xml
文件开头,该文件是其余 ODF 文件格式的“根”或“引导”文件。一旦您知道在哪里查找,您就可以找到其余内容。
评论已关闭。