電子書籍化とちょっとしたPDF編集プログラミング
電子書籍化、主にコミックをScanSnapで読み取りPDF化しています。
ただ、コミックは基本的にカバーがあります。これは切らずに広げて一気に読み込んでいます。カバーの折り返し部分もきっちり読めるし、コミックってカバー全体で1枚のイラストになっているものが多いですから。
だけど、このままこれを先頭にして電子書籍化すると、一般的にビューワではこの1枚目を表紙として扱うので見た目が悪い。というか小さくなりすぎてわけがわからない。
よって取り込んだPDFから本来の表紙部分を切り出して先頭のページにし、2ページ目に取り込んだカバー全体を入れています。
・・・が、この作業が地味に面倒くさい。
「これまで」
1.カバー読み取り
ScanSnapで読み取ります。普通は複数カバーを一気に読み取ります。設定で表面だけ読み取りにしてそれぞれ別にPDF化にしています。
2.読み取ったカバーPDFを90度回転
そのままですね、ScanSnapOrganizerで横長にします。
3.カバーPDFから表紙画像切り出し
Acrobatを使い、左右を切り取って表紙部分だけに調整して、jpgにします。ScanSnapOrganizerだと切り取り位置をドラッグでのみ決められますが、地味に使いづらい。Acrobatはミリ単位入力やボタンで1mmずつ切り取りラインを動かせるので少し自由度が高いからこっちを使っています。
なお、jpg化しているのはPDFで切り取りしても実際は内部で全体画像持っているのでサイズが小さくなりません。カラーで300dpiで読み取りしていますのでこれで結構サイズが縮まります。
4.カバーPDFに表紙画像を挿入
今度はScanSnapOrganizerを使って挿入しています。挿入などのボタンがリボン表示で押しやすかったりするのでこっちを使っています。
というステップでした。複数カバーを読み取るのが普通ですのでこれを繰り返しますが、正直面倒だし時間がかかる。
よって、C#使って上記の2から4までを一気にまとめてできるようにしたカバー編集アプリを作成してみました。
「自作の編集アプリ」
2.対象PDF受付
読み取ったカバーPDFをまとめてドラッグ&ドロップでカバー編集アプリのフォームに送る。受け取ったカバーPDFのファイル名を保持して以下の3,4を各PDFごとに繰り返すようにする。
3.カバーPDFから表紙画像切り出し
受け取ったカバーPDFを解析して内部の画像を抜き出す。90度回転しているので横長に回転させる。ScanSnapで読み込む際に向きを決めておくので回転方向は固定。ま、間違えた場合の対処用に回転機能もつけときます。
そしてフォームに画像表示、ミリ単位入力やボタンで移動できる左右の切り取り線を表示する。Acrobatとかだと上下もできるけど今回上下はそのままだからそっちの機能はなしで!
4.新PDFに表紙画像、及びカバー画像を挿入
元のPDFは読み取った生データですので、上書きしたり消して置き換えとかはなし。なにかあったらやり直しできるように残しておきます。
終わったらまた次のPDFで3の処理。
アプリを切り替える必要がなくなりましたし、切り取り位置が前PDFでの位置を保持していますのでだいたい合いますからどんどん仕事はかどります。ほんとは人の手が入ることなく勝手に表紙の位置を決めて切り出したかったけど、微妙なずれがありますから・・・うん。
でも、手作業入ってもこれまでとは全然速度が違う。楽になった。
「C#でいろいろあったこと」
はい、C#で実現したのですが、これの際にはまったことをいくつか書きます。
1.C#でPDFの編集は難しい
使ったのはiTextSharpです。本家JavaのiTextも使ったことがなかったので手探りでしたが、本家の情報や同じく.netで使えるiText.netの資料なども捜すと、どこかに情報がありますね。やっぱり本家情報がちょっとメソッドやら違うものの、これが元ですからなにができてなにができないかがわからない時に助かりました。
いや、PDFを読んで編集するってできないんですね、どうにかして読み取ったカバーPDFに表紙画像を新ページとして入れたかったので、そこではまって時間を費やしていました。
結局は新PDF作って表紙部分、カバー部分とサイズ切り替えて入れています。あ、サイズセットしてから次ページにしないといけません。これもちょっとはまった。
2.DPIって重要なんですね
全然、画像系のPGMなんて仕事ではしないもんですから、最初なんとかPDFから画像読み出して、そのままPDF作ってみたらなぜか巨大サイズだったり。そう、妙に拡大された一部しか見えないんです。なんだ、72DPIにすればいいのかってわかるまでどういった倍率で縮小すればいいのかわからなかった。
あとは画像全体をフォームに表示してミリ単位で切るための線をその上に表示するのですが、ここも地味に単位合わせがつらかったような。それ以前にうまく表示されずに消えたりもあったけど
全然画像表示系やっていないだけだからだ。
3.ScanSnapOrganizerが受け付けない!
そうです、この編集アプリでつくったPDF、これをScanSnapOrganizerで開くと、他のアプリで作られたPDFだから編集できずに表示されるのみとなりました。
ここまできてそんなご無体な、この表紙+カバーのPDFを本文のコミック部分を読み取ったPDFの先頭に追加するだけなのです。それすら無理。
Acrobat使うよりも、ScanSnapOrganizerがメインです。やっぱりScanSnapで読み取ったらこっちが開きますのでこっちを起点にしたいです。
さあ、考えろ。というかいろいろ試せ。
これはPDFのプロパティを編集して、元々読み取ったカバーPDFのプロパティからアプリケーション部分(キー名だと"Creator")をこちらにコピーしました。そしたら、現在のScanSnapOrganizerのバージョンでは受け付けてくれるようになりました。ま、今後受け付けなくなるかもしれないけど、現状はこれで行こう。
「今後の開発?」
コミック本文部分をAcrobatで回転させています。偶数奇数で向きが違います。これはそんなに面倒ではないものの、これも独自アプリにしてやると便利かもと思っています。
が、現状このPDF編集アプリで表紙+カバーPDFをあっさりできるようになったのでScanSnapの読み取り時が暇になってしまった。これ以上の機能追加しても意味ないかな。50枚ごとの読み取り交換必要ですし、暇と言っても本格的に他の仕事するには短い。回転作業やそれに表紙+カバーを挿入する作業が丁度暇つぶしにいいのかも。
けいおん! 放課後ライブ! ! HD Ver.
映画けいおん! (Blu-ray 初回限定版)
映画けいおん! (Blu-ray 通常版)
キャラクター・ボーカル・シリーズ03 巡音ルカ 巡音ルカ Tony ver. (PVC製塗装済み完成品)
一騎当千集鍔闘士血風録 呂蒙子明 バニーVer. (1/4スケール PVC塗装済み完成品)
クイーンズブレイド リベリオン 美闘士戦記決戦編(限定版)
クイーンズブレイド リベリオン 美闘士戦記決戦編(通常版)
NEXT HATSUNE MIKU Project DIVA(仮称)予約特典:デザイン保護フィルム(PlayStation(R)Vita専用)付き
コミック発売スケジュール