Frage

Ich muß in der Lage sein zu erkennen, dass eine bestimmte Datei eine ODF-Datei auf dem Inhalt der Datei, und nicht auf der Dateierweiterung basiert.

ODF-Dateien wirklich eine Sammlung von XML-Dateien in einem Zip-Containern sind, was bedeutet, dass ich nicht die Datei magische Zahl verwenden kann, da sie nur zeigen, dass es sich um eine ZIP-Datei ist.

Also, was ich wirklich bin gefragt ist gibt es irgendwelche Dateien, die erforderlich in einem ODF Behälter vorhanden sein? Wenn ja das Vorhandensein dieser Datei in einem Zip Behälter zeigen an, dass es wahrscheinlich ist, zeigt eine ODF-Datei, und das Fehlen dieser Datei sein, dass es auf jeden Fall ist nicht eine ODF-Datei.

War es hilfreich?

Lösung

Beachten Sie auch die ODF Technische Daten ? Die Mimetype-Datei aufgelistet es wahrscheinlich ein idealer Weg (Blick nur für die vnd.oasis.opendocument Zeichenfolge im MIME-Typ) zu prüfen wäre.

Andere Tipps

Wie ich es verstehe, wird es immer .xml-Datei (en) in der Wurzel des Archivs sein, und diese / diese XML-Dateien werden immer die Zeichenfolge <office:document sehr in der Nähe von Anfang an enthalten.

Alle, die ich gesehen habe, scheinen eine Datei namens „content.xml“ in der Wurzel enthalten, die diese Zeichenfolge enthält.

Es gibt nicht so viele Anwendungen ODF-Dokumente zu schreiben, und in der Vergangenheit gibt es im Grunde nur ein. So soll es nicht allzu schwierig sein, eine alte Version von Openoffice zu installieren, ein paar Dateien speichern, und prüfen, ob diese Regel gilt, wie es funktioniert auf aktuellen ODF-Dateien.

Ich mag diese auf einer Charge mit etwas testen Know ODF-Dateien, um zu überprüfen, ob es zuverlässig ist:

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

die Build-ID Lesen -., Wenn sie fehlt, wird das Dokument nicht ODF ist

oDoc = ThisComponent
If oDoc.BuildID = "" Then
    bIsNotODF = TRUE
Endif
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top