サイトアイコン CAD日記

PDFアレコレはiTextSharp7も組み込むことにする

PDFiumViewerを使ってPDFアレコレという名のフリーソフトを作ってみたわけだが、PDFiumViewerの限界が見えてきた。

PDFiumで何ができるって、大きくとらえるとPDFファイルのロード(Load)・セーブ(Save)・テキスト抽出(GetPdfText)・描画(Render)・ページ削除(DeletePage)といったところ。描画した結果としてImageを取得できるからJpegやBmpに変換できるところが注目したポイントだった。ページ削除ができるんならば、ページごとの処理としての回転(RotatePage)もできるだろうと実装しはじめてはまった。

RotatePageは実質使えない。実行直後にPdfDocumentに反映しないから、わざわざMemoryStreamに保存してからLoadしなければならなかったことをクリアしたら、今度は
Rotate90による1回目の処理は動くが2回目が動かなかった。第2引数の角度指定は、現在の角度から相対的に回転するものだと勘違いしていたことが原因。Rotate0/Rotate90/Rotate180/Rotate270という4つのパラメータの中にRotate0があることから、絶対的な角度を指定するものだと気付いた。であれば、現在の角度を把握できないと、時計回りに90度回転させるなんてことができない。PdfDocumentでそんなプロパティがあるかと探すも存在せず。MemoryStreamの処理も複雑怪奇になってきて、こりゃいかんとやめることにした。PDFiumで使えるのは描画(画像変換含む)とテキスト抽出だけ。

PDFのページ削除/回転/追加/分解なんてところは、iTextSharpでやるのがよい。iTextSharpはライセンスが厳しいということを聞いていたので軽く調べた。バージョン4はゆるいからよく商用利用されているが、開発がストップしていてこの先しぼむばかりだから却下。バージョン5以降はAGPLv3なる相当キビシいライセンスが適用される。ようするに、ソース公開を要求されたら公開する義務を負うということ。ソースの入手先や手段を書いておけばいいらしい。おいらの場合、フリーソフトでやっているものだからソース公開しても何も問題はない。逆にソースを共有する誰かがいれば、協調して進化していけるという可能性が広がる。バージョン5は2017年に開発がストップして、今はバージョン7になっている。ということで、使うのはバージョン7とする。PDFimu同様、VisualStudioのNuGetで取得できる。

PDFiumとiTextShapを組み込んだ版としてPDFアレコレをバージョン2にするつもり。PDFの描画してわかりやすいようにした上で、画像変換/テキスト出力/もろもろページ処理をしてみようじゃないか。そうすると、有料版Acrobatの機能に近づいて、人気が出ると予想。ページ処理については、フリーソフトとして人気が高いpdf_asの機能を参考にする。

おもしろくなってきたぞ。会社でやらされているクソアプリケーション開発なんてテキトーに受け流しておいて、趣味としてプログラミングをやるってわけだ。本当はやりたいことが仕事になればいいんだけど、現実はそうならないからねぇ。

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