サイトアイコン CAD日記

iTextSharpによるPDFファイルのページ分割

iTextSharpはフリーのPDF関連コンポーネントであり、いろんなことができるのは知っていた。ドットNET、つまりC#かVB使いであれば、けっこう簡単にPDFを操ることができるのだが、あいにくおいらはC++使いなので、これまでは触れる機会がなかった。iTextSharpを使ったプログラムでPDFをページごとに分割したら、あるPDFにおいて元通りの状態で分割されずに、回転した状態になってしまうんだが、何とかならないか。という相談を受けて解決に導いてあげられたので、そのアウトプットをここに掲載する。
VB.NETのソースコード付きプログラムと回転したPDFのサンプル。

相談を受けた直後は、ググって以下のサイトを見つけたので「ここ見れ!」って教えてあげた。
iTextSharpを使ってPDF分割アプリケーションを作成する
ところが「それやってもダメだった」とのことなので、さらにググって以下を発見。
Rotating PDF in C# using iTextSharp
英語サイトでC#なんで少々腰がひけたけれども、乗りかかった船なので最後までがんばってみた。最初のサイトでは、90度と270度のときにそれっぽい処理を行っているがこれではダメ。すべての回転角度(0度、90度、180度、270度)に対して、異なる処理をいれなきゃいかんということが上記英語サイトからわかった。うまくいくかどうか確かめるために、ほとんど使ったことのないVBプログラムをやらなければならなくて、けっこうめんどうな気持ちになったが、やってみたらけっこう簡単だった。

調査の過程で以下サイトも見つけている。
PDFファイルを分割するサンプル(VB.NET)
回転角度0度以外だったら回転させる処理になっているので、うまくいきそうに見えたが実際はダメで、高さと幅の考慮がないことでうまくいかないことがわかった。

iTextSharpによるPDFファイルのページ分割を行いたいという要求は、今後少なくない人間が持つことだろう。
その際、上の二つのサイトにたどり着いて同じ組み方で不十分なプログラムになってしまうことを避けるために、おいらが導いた解決策を両サイトには連絡しておいた。そんなこんなで、iTextSharpが簡単でおもいしろいってことを発見できた。
iTextSharpは、Ver.5からAGPLライセンスが適用されていて扱いがやっかいだ。ようするに、iTextSharp5を組み込んだアプリ全体のソースコードを公開しなきゃいかん。そんなことを知っていたので、今回はiTextSharp4を使っている。近いうちにこのあたりのことを調べてみようと思っている。

モバイルバージョンを終了