From 5de02b61041c61b404eca0906c97dd2627fe0b08 Mon Sep 17 00:00:00 2001 From: toknow-gh Date: Sat, 28 Oct 2023 19:14:39 +0800 Subject: [PATCH] Translated tech/20220815 How ODT files are structured.md --- .../20220815 How ODT files are structured.md | 117 ------------------ .../20220815 How ODT files are structured.md | 117 ++++++++++++++++++ 2 files changed, 117 insertions(+), 117 deletions(-) delete mode 100644 sources/tech/20220815 How ODT files are structured.md create mode 100644 translated/tech/20220815 How ODT files are structured.md diff --git a/sources/tech/20220815 How ODT files are structured.md b/sources/tech/20220815 How ODT files are structured.md deleted file mode 100644 index 2d039e5fcc..0000000000 --- a/sources/tech/20220815 How ODT files are structured.md +++ /dev/null @@ -1,117 +0,0 @@ -[#]: subject: "How ODT files are structured" -[#]: via: "https://opensource.com/article/22/8/odt-files" -[#]: author: "Jim Hall https://opensource.com/users/jim-hall" -[#]: collector: "lkxed" -[#]: translator: "toknow-gh" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -How ODT files are structured -====== -Because OpenDocument Format (ODF) are based on open standards, you can use other tools to examine them and even extract data from them. You just need to know where to start. - -Word processing files used to be closed, proprietary formats. In some older word processors, the document file was essentially a memory dump from the word processor. While this made for faster loading of the document into the word processor, it also made the document file format an opaque mess. - -Around 2005, the Organization for the Advancement of Structured Information Standards (OASIS) group defined an open format for office documents of all types, the Open Document Format for Office Applications (ODF). You may also see ODF referred to as simply "OpenDocument Format" because it is an open standard based on the [OpenOffice.org's][4] XML file specification. ODF includes several file types, including ODT for OpenDocument Text documents. There's a lot to explore in an ODT file, and it starts with a zip file. - -### Zip structure - -Like all ODF files, ODT is actually an XML document and other files wrapped in a zip file container. Using zip means files take less room on disk, but it also means you can use standard zip tools to examine an ODF file. - -I have an article about IT leadership called "Nibbled to death by ducks" that I saved as an ODT file. Since this is an ODF file, which is a zip file container, you can use unzip from the command line to examine it: - -``` -$ 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 -``` - -I want to highlight a few elements of the zip file structure: - -1. The `mimetype` file contains a single line that defines the ODF document. Programs that process ODT files, such as a word processor, can use this file to verify the `MIME` type of the document. For an ODT file, this should always be: - -``` -application/vnd.oasis.opendocument.text -``` - -1. The `META-INF` directory has a single `manifest.xml` file in it. This file contains all the information about where to find other components of the ODT file. Any program that reads ODT files starts with this file to locate everything else. For example, the `manifest.xml` file for my ODT document contains this line that defines where to find the main content: - -``` - -``` - -1. The `content.xml` file contains the actual content of the document. -2. My document includes a single screenshot, which is contained in the `Pictures` directory. - -### Extracting files from an ODT file - -Because the ODT document is just a zip file with a specific structure to it, you can extract files from it. You can start by unzipping the entire ODT file, such as with this unzip command: - -``` -$ unzip -q 'Nibbled to death by ducks.odt' -d Nibbled -``` - -A colleague recently asked for a copy of the image that I included in my article. I was able to locate the exact location of any embedded image by looking in the `META-INF/manifest.xml` file. The `grep` command can display any lines that describe an image: - -``` -$ cd Nibbled -$ grep image META-INF/manifest.xml - -结构化信息标准促进组织 Organization for the Advancement of Structured Information Standards(OASIS)为所有类型的办公文档定义了一种开放格式,即办公应用程序开放文档格式Open Document Format(ODF)。你也可以将 ODF 称为“OpenDocument Format”,因为它是基于[OpenOffice.org][4] 的 XML 文件规范制定的。ODF 包括几种文件类型,包括用于 OpenDocument Text 文档的 ODT。ODT 文件中有很多东西可以讲的,它的本质是一个 zip 文件。 + +### ODT 文件结构 + +跟所有 ODF 文件一样,ODT 文件实际上是一个 XML 文档和其它文件的 zip 压缩包。使用zip 可以占用更少的磁盘空间,同时也意味着可以用标准 zip 工具来检查它。 + +我有一篇关于 IT 领导力的文章,名为“Nibbled to death by ducks”,我将其保存为 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 文件结构的以下几个元素: + +1. `mimetype` 文件用于定义 ODF 文档。处理 ODT 文件的程序,如文字处理程序,可以使用该文件来验证文档的 MIME 类型。对于 ODT 文件,它应该总是: + +``` +application/vnd.oasis.opendocument.text +``` + +1. `META-INF` 目录中有一个 `manifest.xml` 文件。它包含查找 ODT 文件其它组件的所有信息。任何读取 ODT 文件的程序都从这个文件开始定位其它内容。例如,我的 ODT 文档的 `manifest.xml` 文件包含这一行,它定义了在哪里可以找到主要内容: + +``` + +``` + +1. `content.xml` 文件包含文档的实际内容。 +2. 我的文档中只有一张截图,它位于 `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 + +