でんでんコンバーターでEPUBを作っているが、たまに変換できないことがある。
 症状としては「変換」ボタンを押してからしばらくクルクル待っているのだが、そのうち真っ白な画面が表示されて変換が終了する。
 時間をおいて、また変換してみると、今度はうまくいったりするから、うまくいかない時はサーバーが混んでいるか、サーバー側に何らかの一時ファイルが想定外に溜まっているのかと思っていた。
 しかし、そのうち、変換できない確率が急に上がってきた。

 どうもこちらに原因があるようである。
 というのは、昨日も既報の通り、EPUBが10MBを越えて、<idpf>EPUB Validatorの制限を超えてきたことと、この変換失敗が、同時期に起きるようになったからだ。
 画像ファイルの入れ過ぎで、EPUBが大きくなったので、変換に失敗するようになったのではないか。

 いろいろ紆余曲折したが、結果をまとめると、以下のやり方で乗り切ることができた。
 (1)マークダウンファイル(文章)だけで極小のEPUBを作るとうまくいく
 (2)その拡張子をzipに変えてunzipし、できたフォルダーに画像を追加して、またzipすれば、10MBを超えるEPUBができる
 (3)ただしその場合、OEBPS/content.opfというファイルの<manifest>というセクションに<item>タグを画像の数だけ追加する必要がある

 以下解説。

(1)マークダウンファイル(文章)だけで極小のEPUBを作るとうまくいく

 でんでんコンバーターに渡すファイルは、でんでんマークダウンで書いた文章のファイル(テキストファイル)と画像ファイル(JPEG、PNGなど)、そしてオプションで設定を入れたYMLファイル(テキストファイル)を同じフォルダーに入れる必要がある。
 この場合、でんでんマークダウンから「!!」というタグを使って(HTMLの<img>に相当)、どの画像を文章のどこに挿入するかを指定する。
 でんでんコンバーターおよび<idpf>EPUB Validatorがうまくいかない、巨大なEPUBは、この画像が多すぎるので、とりあえず別のワークフォルダーに移動してしまう。
 マークダウンの「!!」タグは放りっぱなしでいい。必要な画像ファイルが存在しない、不正なEPUBになるが、この時点では放置してよい。

(2)その拡張子をzipに変えてunzipし、できたフォルダーに画像を追加して、またzipすれば、10MBを超えるEPUBができる

 昨日も、昔にも書いたが、EPUBファイルは拡張子が.epubなだけの.zipファイルであって、拡張子を.zipに変換するとunzipすることが出来る。
 ただし、unzipしたフォルダーを単純にzipしても正当なEPUBにはならない。その件は過去記事を参照されたい。
 さて、拡張子を.zipに変えてunzipすると、中身は以下のようなフォルダー構成になっている。

20160127epub1

 この中のOEBPSというフォルダーに、さきほど除けておいた画像ファイルを放り込めば良い。

(3)ただしその場合、OEBPS/content.opfというファイルの<manifest>というセクションに<item>タグを画像の数だけ追加する必要がある

 画像を放り込んだら、OEBPSフォルダーの中のcontent.opfというテキスト ファイルを変更する必要がある。
 具体的に言うと、<manifest>というタグの中に、<item>というタグを、以下の書式で追加する。

<item media-type="image/jpeg" href="画像ファイル名" id="_画像ファイル名" />

 idアトリビュートにおいて、画像ファイル名の最初にアンダースコアを書くのが面白い。<item>タグの書式は、でんでんコンバーター変換を、画像ファイルを1〜2個残した状態で行うと分かった。

20160127epub2

 あとはフォルダーを昨日言った方法でzipすると出来上がり。
 <idpf>EPUB Validatorでは巨大EPUBは検証できないが、やはり昨日言ったようにpagina EPUB-Checkerというデスクトップ アプリを使うと検証できる。上の方法で見事、ValidなEPUBを作ることができた!

20160127epub3

 たらたら書いてきたが、ぼくは実際にはすべての手順をWindowsのバッチファイルとPerlを使って自動化した。それも詳しくここに書こうと思ったが、書くのけっこう大変だし、それぐらいみんな苦労して自分でやってもいいんじゃないかと思ってあえて書かないw