3

ファイルの拡張子ではなく、ファイルの内容に基づいて、特定のファイルが ODF ファイルであることを識別できる必要があります。

ODF ファイルは、実際には zip コンテナー内の XML ファイルのコレクションです。つまり、ファイルのマジック ナンバーは単に zip ファイルであることを示しているだけなので、使用できません。

では、ODF コンテナーに存在する必要のあるファイルはありますか? その場合、そのファイルが zip コンテナーに存在することは、それが ODF ファイルである可能性が高いことを示し、そのファイルが存在しないことは、それが明らかに ODF ファイルではないことを示しています。

4

3 に答える 3

2

ODF 技術仕様をチェックしてみませんか? そこにリストされている mimetype ファイルは、おそらくチェックする理想的な方法です (mimetype で文字列を探すだけvnd.oasis.opendocumentです)。

于 2009-11-30T04:55:10.520 に答える
0

私が理解しているように、アーカイブのルートには常に.xmlファイルがあり、この/これらのxmlファイルには常に<office:document先頭近くに文字列が含まれます。

私が見たものはすべて、この文字列を含む「content.xml」というファイルがルートに含まれているようです。

ODF ドキュメントを作成するアプリケーションはそれほど多くなく、以前は基本的に 1 つしかありませんでした。そのため、古いバージョンの OpenOffice をインストールし、いくつかのファイルを保存して、現在の ODF ファイルと同様にこのルールが適用されることを確認することはそれほど難しくありません。

既知のODFファイルのバッチで次のようなものをテストして、信頼できるかどうかを確認します。

$ unzip -c $FILE content.xml | grep -q '<office:document' && echo yes || echo NO
于 2010-12-15T23:21:56.457 に答える
-1

ビルド ID を読み取ります。欠落している場合、ドキュメントは ODF ではありません。

oDoc = ThisComponent
If oDoc.BuildID = "" Then
    bIsNotODF = TRUE
Endif
于 2015-05-15T10:56:33.170 に答える