CAD日記

主にAutoCADのことについて書いているけど、近頃は投資系ネタに注力している。自動売買、仮想通貨、PC関係、プログラミングなど。@caddiary

ソフト開発

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

投稿日:2015年9月12日 更新日:

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を使っている。近いうちにこのあたりのことを調べてみようと思っている。

-ソフト開発
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

プログラムっておもしろいなぁとつくづく思うなり

ここんところぜんぜんプログラムを書いてなくて仕事がつまんなくなってきたところに、トラブル対応があってプログラムをじっくりと書いてみた。いやはやおもしろい。余計な仕事が飛び込んでこない環境で、スピッツ聞 …

インストーラ作成ツール調査(VisualStudio Installerと簡単インストーラ)

まずは20年ほど前に書いた記事「簡単インストーラ」を読み返してみた。当時はInstallShieldをよく知らんかったが、今はよくわかっているほうで、さらにはInstallShieldに慣れきってしま …

PDFへのなんちゃって捺印ではつまらんのでデジタル署名とタイムスタンプを付けてみることを検討中

PDFアレコレで捺印できるようにしたのはいいけど、しょせんはなんちゃって捺印。だって、好きな印影が作れてヒョっと捺印できちゃうわけで、なりすましができてしまうから。そんなこと言ったら、アナログな印鑑だ …

no image

レイヤ付きPDFを出力する弊害

Illustratorという高価なアプリを使ってPDFを出力すると、PDFにレイヤが付いてしまって非表示にしたはずのレイヤが表示されて困ったなという事象に2回遭遇したので以下に記録。共通しているのが、 …

no image

暗号

こんな本を買った。 『RSA 暗号技術の基礎からC++による実装まで』 ソフトの認証を行うのに、シリアル番号とパスワードを使いたいから。 シリアルは、一定の桁数のランダムな数値とする。 パスワードは、 …