壊れたKeynoteファイルを修復する

作業をしていたところ、Keynoteが突然落ちてファイルが壊れてしまいました。

みたところKeynoteのファイルの実体はzipファイルのようです。フォルダを作ってからその中に展開します。

このうちの index.apxl が本体で、実体はXMLファイル。壊れるとしたらこのファイルの可能性が高いです。
ためしに拡張子をxmlに変更してWebブラウザで開いてみます。(Safariが速くておすすめ)

するとXMLが壊れていることがわかります。
index.apxl には改行が入っていないので、エディタで開く前に編集しやすいよう改行を入れます。ターミナルで次のコマンドを実行します。

% perl -i.bak -pe 's/>/>\n/g' index.xml

ブラウザでエラー箇所を特定しつつ、ファイルを直していきます。
画像を使っている場合、ファイル名の文字コードで問題が起こる場合があるので英数字のものに変更しておきます。index.apxl の中の sf:path も修正します。(.jpg/.png/.pdf などで検索する)
そして拡張しをapxlに戻し、ふたたびzipで圧縮します。

% zip -r repaired.key ./*

これで repaired.key を開くと……

いくつか画像ファイルが見つからないと言われましたがほぼ修復できました。あとスペースが一部消えていることがあるのでそこも直します。
直ってよかったよう!