それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

pdf で逆向きの画像をまとめて回転させる(qpdf編

スキャンして、上下逆さに入れちゃったPDFをまとめて回転させる

スキャンした画像が上下逆の場合にどうするんだろうか。1ページずつ切出して jpeg 取り出して、pdftk 回転させたけど、すごく時間がかかってi7 6700 でも400ページ処理するのが辛かった。qpdf を調べることにした。

こういうPDFを回転させたい

中身はJPEGが埋まったPDFなのですが、逆になったらそれはそれで辛い。

f:id:takuya_1st:20170417223524p:plain:w200

適当にスキャンしてると、結構やらかして天地逆転することがある。

PDF だけで180度転換する。

原理としては、中身のJPEGを180度回転させずに、PDF側で埋め込み表示するときJPEGを180度回転させて表示する感じ。なのでJPEGは一切触らない。

回転方法

pdf-rotate.cc という qpdf のサンプルコマンドがあるのでそれをぱぱっと取り出して使う。

qpdf を用意する

brew install qpdf 

ソースを取ってくる

mkdir work$(date -I)
cd work$(date -I)
wget https://raw.githubusercontent.com/Quasilyte/qpdf\
/74618e7b337537706204e83e05f27493fa6d6eb2/examples/pdf-rotate.cc

ソースを持ってきたらコンパイルする。

$ g++ -L/usr/local/lib  -lqpdf pdf-rotate.cc -std=c++11  -o pdf-rotate

回転する。

./pdf-rotate in.pdf 180 out.pdf

楽ちんですね。

1ページずつメタデータを書き換えても良いんだけどさすがにPDFの構造を知らないと難しいのでおすすめしない。

スキャンされた画像データは触ってない

繰り返しになりますが、スキャンされた画像データは一切触ってないです。PDFが画像をページに埋め込むときに回転しています。これはHTMLに画像を埋め込んでスタイルシートで translate rotate してるのと同じです。

参考資料