質問

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

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

だから私が本当に求めているのは、 ODFコンテナに存在する必要がある ファイルがありますか?その場合、zip内のそのファイルの存在コンテナは、ODFファイルである可能性が高いことを示し、そのファイルがないことは、ODFファイルではないことを示します。 ODFファイルではありません。

役に立ちましたか?

解決

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

他のヒント

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

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

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

信頼できるかどうかを確認するために、既知のODFファイルのバッチでこのようなテストを行います:

$ unzip -c $FILE content.xml | grep -q '<office:document' && echo yes || echo NO

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

oDoc = ThisComponent
If oDoc.BuildID = "" Then
    bIsNotODF = TRUE
Endif
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top