KDP(電子出版)のメモ 急急如律令

Amazon Kindleダイレクト・パブリッシングでの電子出版や電子書籍の作成販売について、文章やイラストの作成や編集方法について書いています。

fxlepub3のJava版を作ってみる2 Velocityでテンプレートに埋め込みzip圧縮

 作りながら考えるので初期設計と変わってきてしまっている。必要な要素の実験をしているので仕方がない。node.jsの場合との違いはJavaではライブラリを使わなくてもいいことがある。JSONからオブジェクトを作って、オブジェクトで必要なものを一括管理して、テンプレートに入れてZIP圧縮という手順にしている。

 JSで一度書いたものをJavaにするだけなのにものすごく時間がかかっているのは、Javaの知識が浅いのとオブジェクト指向に慣れていないのとがある。JSでZIP圧縮がjszipのライブラリが簡単だったので、Javaはどうするかなと考えていた。JavaEPUB圧縮するにはと検索してもあまりなかったので、EPUBチェックにEPUB圧縮のコードがあったので見てた。application/epub+zipを無圧縮でmimetypeというファイルにする必要がある。めんどくさいのが無圧縮の部分でそれ以外は、javaのzip圧縮ライブラリはいくつもあるので簡単だ。

 Javaのファイルの書き出しはbyte[]でstringから書き出すという形が楽そうなのでそうした。velocityテンプレートもvmファイルからではなく、テキスト・ブロックからstringに代入したほうが楽そうだった。intellijのバグか何なのかvmファイルが保存しても勝手にロールバックして何度も書き換えが必要になっていた。

 

 とりあえず画像とjsonから固定レイアウトのEPUBを出力し、EPUBチェックが通るようになった。あとはGUIの設計と精度を上げること。ただ今の方法だと、同じファイルを二回呼び出したりするとバグになる可能性がある。

 

 

99nyorituryo.hatenablog.com

 

java.akjava.com

www.techscore.com

style.potepan.com

www.techscore.com

null

stackoverflow.com

uuid

qiita.com

timezone

qiita.com

drambuie.hatenadiary.org

 

画像サイズの取得

stackoverflow.com

ファイルタイプ

waman.hatenablog.com

ファイルパス

www.javadrive.jp

Javaでオブジェクトの確認にJSONに変換してチェックしている。

        try {
            String jsonAsString = objectMapper.writeValueAsString(data);

            System.out.println(jsonAsString);
        } catch (JsonProcessingException ex) {
            throw new RuntimeException(ex);
        }

JSONビュワーで確認

 

jsonviewer.stack.hu

velocityの使い方

github.com

EPUBの圧縮方法

stackoverflow.com

m12i.hatenablog.com

mokuji配列の検索

www.fenet.jp

 

 

https://support.asteria.com/hc/ja/articles/229094007-Velocity%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88

作った文字列をzipに次々入れていく感じに入れていきたいので。

stackoverflow.com

 

関数作って一括で処理したいが、mimetypeを無圧縮でするのでmimetypeだけを別で処理した。

style.potepan.com

itsakura.com