スキャンして、上下逆さに入れちゃったPDFをまとめて回転させる
スキャンした画像が上下逆の場合にどうするんだろうか。1ページずつ切出して jpeg 取り出して、pdftk 回転させたけど、すごく時間がかかってi7 6700 でも400ページ処理するのが辛かった。qpdf を調べることにした。
こういうPDFを回転させたい
中身はJPEGが埋まったPDFなのですが、逆になったらそれはそれで辛い。
適当にスキャンしてると、結構やらかして天地逆転することがある。
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 してるのと同じです。