BrissでPDFの読み込みが失敗するときの対処

スマホ電子書籍リーダーで読むために、PDFの余白を切り取ろうとした話です。 Brissを使えば良いことは調べればすぐに分かったのですが、相性とかでやたらと時間がかかったのでメモしておきます。

どういう状況だったかというと、PDFを読ませても真っ黒な画面しか出てきませんでした。コマンドライン側でも何やらエラーを吐いていました。BrissのREADMEには、PDFのファイルサイズが大きい場合には java -Xms128m -Xmx1024m -jar briss-0.9.jarを使えと書いてありますが、これも上手くいきませんでした。

結論から言うと、pdfjamに食わせることで解消しました。pdfjamは、主にページの抜き出しや結合等を行えるコマンドラインツールです。何もオプションを指定せずに

pdfjam input.pdf

とすれば、全く同じ内容のPDF"input-pdfjam.pdf"が作成されます。こちらをBrissに食わせることで、今度は問題なく余白を切り取ることができました。

その他

pdfjamは内部でpdflatexを使用するので、TeX環境が必要なことに注意が必要です。

同じようなことができるqpdfはBrissと相性が悪いようで、こちらが出力したものは受け付けてくれませんでした。 嘘だったので訂正。qpdfがダメなのではなく、元のPDFに問題があるだけだった。pdfjamはLaTeXを介して変換するので、その過程でいい感じにしてくれるらしい。

他にPDFの余白切り取りのようなことができるツールとしては、k2pdfoptもあります。こちらはもう少し高機能で、Kindle用に読みやすくレイアウト変更などもしてくれます。もしも切り取りだけしたいなら、出てくるメニューでmoと入れて、cropを選べば同じようなことができます。ただしこちらは1ページごとに余白を切り取るため、ページ毎にサイズが変わってしまうのが難しいところです。