Linux中國

開放文檔格式 ODT 文件格式解析

開放文檔格式(ODF)基於開放標準,你可以使用其它工具檢查它們,甚至從中提取數據。你只需要知道從哪裡開始。

過去,文字處理文件是封閉的專有格式。在一些較舊的文字處理軟體中,文檔文件本質上是該軟體的內存轉儲。雖然這樣可以讓載入文件更快,但也使文檔文件格式變得不透明。

2005 年左右, 結構化信息標準促進組織 Organization for the Advancement of Structured Information Standards (OASIS)為所有類型的辦公文檔定義了一種開放格式,即 辦公應用程序開放文檔格式 Open Document Format for Office Applications ODF)。由於 ODF 是基於 OpenOffice.org 的 XML 文件規範的開放式標準,因此你也可以將其簡稱為 「開放文檔格式」。ODF 包括幾種文件類型,包括用於 開放文檔文本OpenDocument Text 文檔的 ODTODT 文件中有很多值得探索的內容,它的本質是一個 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 文件包含這一行,它定義了在哪裡可以找到主要內容:
<manifest:file-entry manifest:full-path="content.xml" manifest:media-type="text/xml"/>
  1. content.xml 文件包含文檔的實際內容。
  2. 我的文檔中只有一張截圖,它位於 Pictures 目錄中。

從 ODT 中提取文件

由於 ODT 文檔是一個具有特定結構的 Zip 文件,因此可以從中提取文件。你可以先解壓縮整個 ODT 文件,例如使用 unzip 命令:

$ unzip -q &apos;Nibbled to death by ducks.odt&apos; -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/

就是這張圖片:

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中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國