風柳メモ

ソフトウェア・プログラミング関連の覚書が中心。

本当にかゆいところは手が届かないんだよ

複数の画像をまとめてPDF化するときに…

  • 右綴じにする(ViewerPreferencesのDirectionにR2Lとセットしたいだけ…)
  • 初期状態を見開きにする(PageLayoutにTwoColumnRightとセットしたいだけ…)

たったこれだけのことを Linux の CUI でやりたいだけなのに、簡単な方法が見つからないのはなぜだ…。
できればPythonでやりたかったが……可能性がありそうなのは、Java(iText)かなぁ。
いくらなんでも、右綴じにするのに

pdf_chg = re.sub('/Type\s*/Catalog',r'/Type/Catalog/ViewerPreferences<</Direction/R2L>>', pdf_bin, 1)

は乱暴に過ぎるしなぁ……。
Pythonで使ってみたのはPythonMagickpyPdfあたり。ReportLabは複雑そうでまだ試していない。

【追記】右綴じにする方はReportLabを使えばできた模様

from reportlab.pdfgen import canvas
fpdf = canvas.Canvas("sample.pdf")
// : (略)
fpdf.setViewerPreference('Direction', 'R2L')
// : (略)

みたいにやればできるらしい。
ただ、ReportLabで作成したPDFはサイズがやたらと大きくなるなぁ。元画像をまとめたZIPの3割増しくらい。Canvas()引数にpageCompression=1としてみても、それ程小さくはならないし…。