.NET TIPS [ASP.NET]PDF文書のセキュリティ情報やヘッダ/フッタを設定するには?山田 祥寛2005/06/17 |
![]() |
|
「TIPS:[ASP.NET]Webフォームから動的にPDF文書を作成するには?」でも紹介したように、オープンソース・ライブラリであるiText.NETを利用することで、ASP.NETアプリケーションからPDF文書を動的に生成できる。
前掲のTIPSでは、ごく基本的なPDF文書の生成方法についてのみ紹介したが、iText.NETを利用すれば、PDFの特徴的な機能であるセキュリティ設定やメタ情報の定義、透かし(Watermark)、ヘッダ/フッタの設定なども自由に行うことができる。本稿では、前掲のTIPSで紹介したサンプル・プログラムpdf_cs.aspx/pdf_vb.aspxをベースに、これらの機能を追加してみたい。
それでは、さっそく具体的なサンプル・コードを見ていくことにしよう。以下のコードでは、PDF文書に対してセキュリティ情報やヘッダ/フッタなどを追加する。なお、本稿のサンプルを実行するには、前掲のTIPSの手順に従って、iText.NETの展開とweb.configの設定を行っておく必要がある。
|
|
PDF文書に対してセキュリティ情報やヘッダ/フッタなどを追加するWebフォーム(C#版:pdf_meta_cs.aspx) |
|
|
PDF文書に対してセキュリティ情報やヘッダ/フッタなどを追加するWebフォーム(VB.NET版:pdf_meta_vb.aspx) |
それでは、上記のサンプル・プログラムでポイントとなる部分について解説していこう。なお、ソース・コード中のコメントに含まれる番号と以下の番号とは対応関係にあるので、適宜、コードを参照しつつご覧いただきたい。
(1)セキュリティ設定
ビジネス・ドキュメントのフォーマットとして、PDFフォーマットが重宝される理由の1つとして、文書に対するセキュリティ機能が標準で実装されている点が挙げられる。iText.NETでPDFのセキュリティ機能を設定するには、PdfWriterオブジェクトのsetEncryptionメソッドを利用すればよい。
setEncryptionメソッドの構文は以下のとおりだ。
|
|
setEncryptionメソッドの構文 |
暗号化の強度としては、「PdfWriter.STRENGTH40BITS」(40bit暗号)か「PdfWriter.STRENGTH128BITS」(128bit暗号)を選択できるが、128bit暗号を選択した場合、Adobe Reader 5.0より前のバージョンでは読み込むことができないので、注意していただきたい。
第2パラメータと第3パラメータを指定することで、文書をパスワードで保護できる。もしもパスワードが不要である場合には、これらのパラメータにはnull値を指定すること。
次の画面は、文章をパスワード保護した場合に表示される[パスワード]ダイアログの例である。
![]() |
[パスワード]ダイアログ |
パスワードを設定すると、文書アクセス時にパスワード・ダイアログが表示される。 |
このようにして設定した文書のセキュリティは、Adobe Readerの[文書のプロパティ]−[セキュリティ]タブから確認することができる。
![]() |
[文書のセキュリティ]ダイアログ |
このダイアログから、PDF文書に対して設定されたセキュリティ情報を確認できる。 |
本稿のセキュリティ設定では、印刷と文書のコピーを許可しているが、これらを禁止することもできる。これらの許可設定を変更するには、以下のような定数を指定すればよい。
定数 | 概要 |
AllowPrinting | 印刷 |
AllowCopy | 内容のコピーと抽出 |
AllowModifyContents | 文書の変更 |
AllowModifyAnnotations | 注釈の入力 |
AllowFillIn | フォーム・フィールドの入力と署名 |
AllowScreenReaders | アクセシビリティのための内容抽出 |
AllowAssembly | 文書アセンブリ |
![]() |
|
PDF文書に対して設定可能な主なセキュリティ定数 |
(2)メタ情報の定義
PDF文書にメタ情報を追加するのは、Documentオブジェクト(com.lowagie.text名前空間)のaddXxxxxメソッド(addTitleメソッドやaddSubjectメソッドなど)の役割だ(「Xxxxx」の部分はメタ情報の種類によって変化する)。PDF文書に対して設定されたメタ情報は、セキュリティ情報と同様、[文書のプロパティ]から[概要]タブを選択することで確認できる。
次の画面は実際にメタ情報を確認しているところだ。
![]() |
[文書のプロパティ]ダイアログの[概要]タブを開いたところ |
ここでPDF文書に設定したメタ情報を確認できる。 |
(3)ヘッダ/フッタの追加
PDF文書のヘッダ/フッタを管理するのは、HeaderFooterクラス(com.lowagie.text名前空間)の役割だ。そのクラスのコンストラクタの第1パラメータに追加したい文字列を、第2パラメータにページ番号を挿入するかどうかを指定する。生成されたHeaderFooterオブジェクトは、setHeaderメソッドやsetFooterメソッドで実際のPDF文書内に追加できる。
次の画面はヘッダを追加したPDF文書の例である。
![]() |
PDF文書に追加されたヘッダ |
(4)透かしの設定
ビジネス文書を作成していると、各ページに企業ロゴや「マル秘」「案」「見本」のような透かし(Watermark)を入れたいケースがある。iText.NETで透かしを管理するのは、Watermarkクラス(com.lowagie.text名前空間)の役割だ。
Watermarkクラスのコンストラクタには、第1パラメータから順に、挿入するImageオブジェクト(com.lowagie.text名前空間)、挿入位置(横)、挿入位置(縦)を指定すること。ここではPDF文書の右端にロゴイメージを追加する。なお、このImageクラスは、System.Web.UI.WebControls名前空間などのImageクラスとクラス名が重複するため、完全修飾名で記述する必要がある。
![]() |
PDF文書に追加された透かし |
PDF文書の右端に「Wings」というロゴが透かしとして追加されている。 |
なお、本稿で紹介した情報を設定する場合には、必ずDocumentオブジェクトのopenメソッドを呼び出す前に行う必要があるので、注意していただきたい。
カテゴリ:Webフォーム 処理対象:PDF 使用ライブラリ:PdfWriterクラス(com.lowagie.text.pdf名前空間) 使用ライブラリ:Documentクラス(com.lowagie.text名前空間) 使用ライブラリ:HeaderFooterクラス(com.lowagie.text名前空間) 使用ライブラリ:Watermarkクラス(com.lowagie.text名前空間) 使用ライブラリ:Imageクラス(com.lowagie.text名前空間) 関連TIPS:[ASP.NET]Webフォームから動的にPDF文書を作成するには? |
![]() |
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
![]() |
|
|
|
![]() |