クライアントサイドJavaScriptで画像ファイルをzip圧縮はできるようなのでEPUBもできるんじゃないかなと思って調べてみることに。
サーバサイドでEPUBを作れるサービスはよくあるが、漫画の場合はアップロード時間がかかる。ならばローカルで出来れば時間短縮になるが、他のOSでは動かないと対象は狭そう。別にjavascriptではなくてもjavaでも良さそうだが、MacだとかWindowsやスマホなどを考えるとブラウザで動ければ、大抵の端末で動くだろう。コマンドラインで操作しないだけでとっつきやすいと思う。さて、javascriptでEPUB作成は可能なのだろうか。
ググったら、EPUBを作るjavascriptを見つけたがどうも規格が古そうだ。
d.hatena.ne.jp
気になる問題点
- javascriptでzip圧縮
- フォルダの階層化
- 画像ファイルの読み込みと保存
調べているとJSZipでできそうかなと思った。試しに下のようなコードをJSZipのサイトのサンプルに入れるとepubみたいなファイルになる。当然中身は作っていないがファイル構造だけはできる。
var zip = new JSZip();
zip.file("mimetype", "application/epub+zip");
var meta = zip.folder("META-INF");
var container = zip.folder("OPS");
var img = zip.folder("OPS/images");
img.file("smile.gif", imgData, {base64: true});
zip.generateAsync({type:"blob"})
.then(function(content) {
// see FileSaver.js
saveAs(content, "example.epub");
});
stuk.github.io
ローカルファイルをいったんブラウザに読み込んで、jszipを使ってアーカイブする方法を考えると。FileAPIを使って読み込ませるとそれらしくなる。こういう方向性で作ってみようと思う。
Make KMZ
nt-book.com