niszetの日記

アナログCMOS系雑用エンジニアが頑張る備忘録系日記

ODT形式のzipがちょっと特殊なので気を付けること…

根本的な解決をまだしていない…。

LibreOffice6.0のころから、下記のページにあるようにODTファイルをunzipしてzipしなおすとLOWで開けないよ~という話があったようです。

ask.libreoffice.org

これは、ドキュメント内のmimetypeというファイルがStoreで他はDeflateでないといけないということから来ているようです。しかし、適当なzip系のツールを使ってうまくこれを制御して再作成することが出来ませんでした。

当面の解決方法として、unzipしてzipする場合はcontent.xmlを修正するケースでしょうから、これを更新したファイルとして対象のzipファイルの中身を入れ替える、という形でコマンドを実行すれば良いわけです。

上記サイトの解答にあるコマンド例を引用すると、

zip -f ./decompresslib/X.odt ./decompresslib/content.xml

という形で、zip -fで対象のodtファイルに対して、修正したファイルを入れ替える形で使います。

PandocはODTファイルを開ける形で生成しているので、当然、無からODTを作る方法はあるわけですが、今はODTのファイルをいじって挙動がどうなるのか?が気になるので後回しとします。

なお、普通にzipで生成すると壊れたODTファイルとなりますが、MS Wordは無理やりこれを開きます。しかし、MS WordはODTファイルを開いてもレイアウトが崩れているわけですが、これをMS Word上で保存…とすると、この壊れたレイアウトがLibreOfficeWriter上で再現します。つまり、レイアウトが書き変わってしまいます。

基本的にはMS WordでODTファイル形式を開いてもそれを保存はしない方が良いでしょう。MS Officeで生成されたODTファイルはLibreOfficeで同じように表示はされるので、その方向だけで使うなら良いとは思いますが…。