Redian新闻
>
开放文档格式 ODT 文件格式解析 | Linux 中国

开放文档格式 ODT 文件格式解析 | Linux 中国

科技
 
导读:开放文档格式(ODF)基于开放标准,你可以使用其它工具检查它们,甚至从中提取数据。你只需要知道从哪里开始。
本文字数:3266,阅读时长大约:4分钟

开放文档格式(ODF)基于开放标准,你可以使用其它工具检查它们,甚至从中提取数据。你只需要知道从哪里开始。

过去,文字处理文件是封闭的专有格式。在一些较旧的文字处理软件中,文档文件本质上是该软件的内存转储。虽然这样可以让加载文件更快,但也使文档文件格式变得不透明。

2005 年左右,结构化信息标准促进组织(Organization for the Advancement of Structured Information Standards)(OASIS)为所有类型的办公文档定义了一种开放格式,即办公应用程序开放文档格式(Open Document Format for Office Applications)(ODF)。由于 ODF 是基于 OpenOffice.orgOpenOffice.org 的 XML 文件规范的开放式标准,因此你也可以将其简称为 “开放文档格式”。ODF 包括几种文件类型,包括用于 开放文档文本OpenDocument Text 文档的 ODT。ODT 文件中有很多值得探索的内容,它的本质是一个 Zip 文件。

ODT 文件结构

跟所有 ODF 文件一样,ODT 文件实际上是一个 XML 文档和其它文件的 Zip 压缩包。使用 Zip 可以占用更少的磁盘空间,同时也意味着可以用标准 Zip 工具来检查它。

我有一篇关于 IT 领导力的文章,名为“Nibbled to death by ducks”,我将其保存为 ODT 文件。由于 ODF 文件是一个 zip 容器,你可以用 unzip 命令来检查它:

  1. $ unzip -l 'Nibbled to death by ducks.odt'
  2. Archive: Nibbled to death by ducks.odt
  3. Length Date Time Name
  4. 39 07-15-2022 22:18 mimetype
  5. 12713 07-15-2022 22:18 Thumbnails/thumbnail.png
  6. 915001 07-15-2022 22:18 Pictures/10000201000004500000026DBF6636B0B9352031.png
  7. 10879 07-15-2022 22:18 content.xml
  8. 20048 07-15-2022 22:18 styles.xml
  9. 9576 07-15-2022 22:18 settings.xml
  10. 757 07-15-2022 22:18 meta.xml
  11. 260 07-15-2022 22:18 manifest.rdf
  12. 0 07-15-2022 22:18 Configurations2/accelerator/
  13. 0 07-15-2022 22:18 Configurations2/toolpanel/
  14. 0 07-15-2022 22:18 Configurations2/statusbar/
  15. 0 07-15-2022 22:18 Configurations2/progressbar/
  16. 0 07-15-2022 22:18 Configurations2/toolbar/
  17. 0 07-15-2022 22:18 Configurations2/popupmenu/
  18. 0 07-15-2022 22:18 Configurations2/floater/
  19. 0 07-15-2022 22:18 Configurations2/menubar/
  20. 1192 07-15-2022 22:18 META-INF/manifest.xml
  21. 970465 17 files

我想强调 Zip 文件结构的以下几个元素:

1.

mimetype 文件用于定义 ODF 文档。处理 ODT 文件的程序,如文字处理程序,可以使用该文件来验证文档的 MIME 类型。对于 ODT 文件,它应该总是:

  1. application/vnd.oasis.opendocument.text
2.

META-INF 目录中有一个 manifest.xml 文件。它包含查找 ODT 文件其它组件的所有信息。任何读取 ODT 文件的程序都从这个文件开始定位其它内容。例如,我的 ODT 文档的 manifest.xml 文件包含这一行,它定义了在哪里可以找到主要内容:

  1. <manifest:file-entry manifest:full-path="content.xml" manifest:media-type="text/xml"/>
3.

content.xml 文件包含文档的实际内容。

4.

我的文档中只有一张截图,它位于 Pictures 目录中。

从 ODT 中提取文件

由于 ODT 文档是一个具有特定结构的 Zip 文件,因此可以从中提取文件。你可以先解压缩整个 ODT 文件,例如使用 unzip 命令:

  1. $ unzip -q 'Nibbled to death by ducks.odt' -d Nibbled

一位同事最近向我要了一份我在文章中提到的图片。通过查看 META-INF/manifest.xml 文件,我找到了嵌入图像的确切位置。用 grep 命令可以找到描述图像的行:

  1. $ cd Nibbled
  2. $ grep image META-INF/manifest.xml
  3. <manifest:file-entry manifest:full-path="Thumbnails/thumbnail.png" manifest:media-type="image/png"/>
  4. <manifest:file-entry manifest:full-path="Pictures/10000201000004500000026DBF6636B0B9352031.png" manifest:media-type=" image/png”/>

我要找的图像保存在 Pictures 文件夹中。可以通过列出目录的内容来验证:

  1. $ ls -F
  2. Configurations2/ manifest.rdf meta.xml Pictures/ styles.xml
  3. content.xml META-INF/ mimetype settings.xml Thumbnails/

就是这张图片:

Image of rubber ducks in two bowls

开放文档格式

ODF 是一种开放的文件格式,它可以描述文字处理文件(ODT)、电子表格文件(ODS)、演示文稿(ODP)和其它文件类型。由于 ODF 格式基于开放标准,因此可以使用其他工具检查它们,甚至从中提取数据。你只需要知道从哪里开始。所有 ODF 文件都以 META-INF/manifest.xml 为“引导”文件,通过它你能找到其余的所有内容。

(题图:MJ/d245ab34-f0b0-452c-b29a-ece9aa78f11a)


via: https://opensource.com/article/22/8/odt-files

作者:Jim Hall 选题:lkxed 译者:toknow-gh 校对:校对者ID

本文由 LCTT 原创编译,Linux中国 荣誉推出

LCTT 译者 :Xiangbin Ma
🌟🌟🌟
翻译: 16.0 篇
|
贡献: 3406 天
2014-07-01
2023-10-28
https://linux.cn/lctt/toknow-gh
欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
小米正式发布小米澎湃OS;​腾讯混元开放文生图功能,代码能力提升20%;荣耀重返中国第三季度智能手机出货量第一……Linux 爱好者线下沙龙:LLUG 2023 深圳 - 活动预告 | Linux 中国Arch Linux 下全面使用 Wayland 的配置指南 | Linux 中国如何在 Linux 中映射 SAN LUN、磁盘和文件系统 | Linux 中国秋后的黄瓜在 Linux 文件系统中使用 attr 添加扩展属性 | Linux 中国Windows 11已原生支持11种文件存档格式,包括7-Zip和RAR日本京都的街道与名胜古迹,历史上曾努力模仿中国首款 Linux 游戏本?!Tuxedo 推出 Linux 游戏本 Sirius 16只默默爱着,就是幸福Linux 黑话解释:Linux 中的 Super 键是什么? | Linux 中国Bazzite:专为 Steam Deck 和 PC 上的 Linux 游戏打造的发行版 | Linux 中国Linux 内核动手编译实用指南 | Linux 中国Linux Lite 6.6 发布:更新了欢迎应用和图标主题 | Linux 中国Vojtux:针对视力障碍用户改造 Linux | Linux 中国在基于 Arm 的 Thinkpad X13S 笔记本上运行 Linux | Linux 中国如何在 Linux 中扩展 Veritas 文件系统(VxFS) | Linux 中国内心的风景备受欢迎的数字音频工作站 Studio One 新增了对 Linux 的支持 | Linux 中国Fedora Linux Flatpak 九月推荐应用 | Linux 中国如何在 Linux 中查找映射到 VxVM 磁盘的 SAN LUN | Linux 中国Linus Torvalds:Linux 内核中的 Rust、AI 和疲劳的维护者 | Linux 中国将手机作为你的 Linux 桌面的摄像头和麦克风 | Linux 中国DevOps 文档成熟度的四个层次 | Linux 中国Librem 11:Purism 推出注重隐私的 Linux 平板电脑 | Linux 中国Linux 爱好者线下沙龙:LLUG 2023 深圳硬核来袭 | Linux 中国rankings腾讯混元大模型开放文生图;微软AI投资重心或转向应用和业务;国产大模型10月榜单公布丨AIGC大事日报Linux 如何挽救老旧电脑(和地球) | Linux 中国如何制作一个 Linux Mint 立付 USB | Linux 中国终端基础:在 Linux 中重命名文件和目录 | Linux 中国10 个在 Linux 终端中生成有趣的 ASCII 字符画的工具 | Linux 中国在 Linux 的 VirtualBox 中从 USB 驱动器启动 | Linux 中国openKylin 推出“开明软件包格式”:一次打包多处发布、支持 Linux 存量应用等Linux 上的最佳白板应用程序 | Linux 中国
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。