(5)パスワードの設定、PDFファイルのプロパティ情報の設定
最後に、セキュリティやプロパティなどPDFファイル全体に関する設定について紹介します。
パスワードを設定する
重要な文書を生成するときには、PDFファイルにパスワードを設定することができます。また、ユーザーに複製させたくなかったり、印刷させたくないといったセキュリティの設定を行うこともできます。
このような場合には、PdfWirterのGetInstanceにて、PdfWriterのインスタンスを取得し、SetEncryptionメソッドを呼び出します。
//ファイル出力用のストリームを取得 PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream("05_Security.pdf", FileMode.Create)); //暗号化の設定(強度,ユーザパスワード,オーナーパスワード,印刷/保存設定) writer.SetEncryption(PdfWriter.STRENGTH128BITS, "pass", "opass", PdfWriter.AllowPrinting | PdfWriter.AllowCopy);
SetEncryptionメソッドを呼び出すときに、引数に、「暗号化強度/ユーザーパスワード/オーナーパスワード/セキュリティ設定」という順で設定をすることができます。
暗号化の強度は「STRENGTH40BITS(40bit暗号化:Acrobat Reader3.0以降対応)」か「STRENGTH128BITS(128bit暗号化:Acrobat Reader5.0以降対応)」を選択できます。このメソッドを呼び出して生成したPDFファイルは、次のようにPDFファイルを開くときにパスワードを入力するダイアログが表示されます。ここでは「pass」と入力しなければ、PDF文書を開くことができません。

また、設定したセキュリティの内容は、プロパティの[セキュリティ]タブから確認することができます。ここでは、印刷とコピーを許可しています。
セキュリティで許可する項目は次の列挙子を「|」でつなぐことで定義できます。(すべて禁止にする場合は0と入力します。)
| 設定内容 | PdfWriterクラスの列挙子 |
| 印刷 | AllowPrinting |
| 文書の変更 | AllowModifyContents |
| 内容のコピーと抽出 | AllowCopy |
| 注釈 | AllowModifyAnnotations |
| フォームフィールドの入力と署名 | AllowFillIn |
| アクセシビリティを有効にする | AllowScreenReaders |
| 文章アセンブリ | AllowAssembly |
なお、暗号化された文書を生成するときには、DocumentのOpenメソッドを呼び出す前に、setEncryptionメソッドを呼び出す必要があります。
作成者などのメタ情報を設定する。
PDFの文書には、誰がどのような目的で作成したのかといった「メタ情報」を設定することができます。
| メソッド | 説明 |
addTitle() | タイトルを設定 |
addAuthor() | 作成者を設定 |
addSubject() | サブタイトルを設定 |
addKeywords() | キーワードを設定 |
addCreator() | アプリケーションを設定 |
これらを次のコードのように実行すると、PDF文書に属性を設定することができます。
//PDFドキュメントのメタ情報を設定 doc.AddTitle("タイトルです"); doc.AddAuthor("アイテキスト 太郎"); doc.AddSubject("サブタイトルです"); doc.AddKeywords(".NET, iTextSharp"); doc.AddCreator("iTextSharpSample.exe");
この結果は、プロパティの[概要]タブから確認することができます。
まとめ
これまで説明してきたようにiTextSharpでは、文字、フォント、表の部品を表すクラスを組み合わせてPDFドキュメントを作成します。
最後に登場したクラスについて整理します。

Documentクラスは、PDF文書そのものを表すクラスです。PdfWriterクラスは、PDFを書き出すクラスです。Paragraphクラス、Phraseクラス、Chunkクラスはコンテンツを表すクラスです。Fontクラスは、フォントを定義するクラスです。Tableクラスは表を、Cellクラスはマス目を表すクラスです。- PDFファイルのメタ情報やセキュリティ設定も行うことができます。
以上、駆け足でしたが、iTextSharpを使って、PDFを生成する方法について紹介しました。今後、.NETからPDFを生成する場合にはiTextSharpの利用を検討してみてはいかがでしょうか。
参考資料
- SourceForge 『iTextSharp』
- WikiPedia 『PDF(Portable Document Format)』
- PDFなんでも情報ブログ 『PDF千夜一夜』
- どっとねっとふぁん 『iTextSharpを利用したPDF作成(Web編)』
- 河端善博の.TEXTでウェブログ 『iTextSharp:ASP.NETからPDF出力』
- iText.NET 『チュートリアル』※
- iText.NET 『サンプル(C#)』※
- iText.NET 『サンプル(VB)』※
- @IT 『iText.NETでPDF文書に表を追加するには?』※
- iText Homepage(英語)※
- CodeZine 『iTextを利用してJavaからPDF形式の帳票を出力する』※


