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

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

fxlepub3のJava版を作ってみる

 JavaScript版やブラウザ版があるが使っているとEPUB化に時間がかかりすぎる気がするし、設定が保存できないのがストレスになっている。なのでこれをJavaで作れないかなと試してみる。jsの時にjsonで設定ファイルを書いていたのでJavaでもjsonデータを読み込んで処理をさせたい。また、テンプレートエンジンはejsをvelocityに書き換える。jsonパーサーにJacksonを使うという説明が多いが、org.jsonで練習してみる。

必要なもの

  • velocity
  • uuid4 
  • ISO 8601 拡張形式の日時
  • MIMEタイプ
  • 画像サイズ
  • zip圧縮
  • jsonパーサー

 

var epub = require('fxlepub3'); 

var data={
"url":"C:/Users/user/Downloads/comic/testdata/",
"output":'C:/Users/user/Downloads/comic/fxlsample/out.epub',
"title": "タイトル",
"author1": "著者名1",
"author2": "著者名2",
"index": [
    ["cover.jpg", "表紙"],
    ["00001.jpg", "目次"],
    ["00005.jpg", "最終ページ"]
    ],
"page_direction": "rtl",
"panel_view": "horizontal-rl",
//"width": 800,
//"height": 1200,
"cover_file": {},
"files": []
}

epub.gen(data)

www.site24x7.com

入力するjsonデータを利用しようとすると、jsのコード量の10倍になっている。ほぼコードジェネレーターを使えばいいのだけど。このjsonで、入れ子クラスが必要でファイル数が増えた。ファイル数が増えることで全体が見通しにくくなった。

{
"url":"C:/Users/user/Downloads/comic/testdata/",
"output":"C:/Users/user/Downloads/comic/fxlsample/out.epub",
"title": "タイトル",
"author1": "著者名1",
"author2": "著者名2",
"index": [
   ['cover.jpg', '表紙'],
  ['i-003.jpg', '目次']
    ],
"page_direction": "rtl",
"panel_view": "horizontal-rl",
"width": 800,
"height": 1200,
"cover_file": {

file_id:"cover"
file_name:"cover.jpg"

},
"files": [

[{file_name:"i-003.jpg"}],[

{file_name"i-002.jpg"}],

]
}

多次元配列のjsonの場合はこの方法では無理っぽい。どうやらjacksonを使ったほうがよさそう。

適当に作ったオブジェクトに代入しようとすると、書き方が間違っていたらしく変換ができなかった。なのでオブジェクトを作ったうえでjson

data =mapper.readValue(jsonText, Data.class);

itsakura.com

stackoverflow.com

GSONとJacksonがあって、Jacksonのほうがいいらしい。

itsakura.com

 

qiita.com

//テンプレートファイルの読み込み
var containerXML = fs.readFileSync(__dirname + '/templete/container.xml', 'utf-8');
var css_style = fs.readFileSync(__dirname + '/templete/fixed-layout-jp.css', 'utf-8');
var pagetemplete = fs.readFileSync(__dirname + '/templete/page.ejs', 'utf-8');
var opftemplete = fs.readFileSync(__dirname + '/templete/opf.ejs', 'utf-8');
var navtemplete = fs.readFileSync(__dirname + '/templete/nav.ejs', 'utf-8');
var toctemplete = fs.readFileSync(__dirname + '/templete/tocncx.ejs', 'utf-8');
var covertemplete = fs.readFileSync(__dirname + '/templete/cover.ejs', 'utf-8');

Javaでリソースフォルダのテキストをどう読み込むか

 

stackoverflow.com

 

以前にnode.jsで固定レイアウトのEPUBが作れるfxlepub3というのを作ったが、利用者があまりいなかった。

github.com

 

 その後、ブラウザで固定レイアウトのEPUBが作れるようにするとある程度利用者ができた。

github.com

kyukyunyorituryo.github.io