SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

iTextSharpを利用して.NETでPDF帳票を出力する

iTextSharpで見栄えの良い印刷帳票を作成する


(5)パスワードの設定、PDFファイルのプロパティ情報の設定

 最後に、セキュリティやプロパティなどPDFファイル全体に関する設定について紹介します。

パスワードを設定する

 重要な文書を生成するときには、PDFファイルにパスワードを設定することができます。また、ユーザーに複製させたくなかったり、印刷させたくないといったセキュリティの設定を行うこともできます。

 このような場合には、PdfWirterGetInstanceにて、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文書を開くことができません。

パスワードの入力が要求される(ここでは「pass」)
パスワードの入力が要求される(ここでは「pass」)

 また、設定したセキュリティの内容は、プロパティの[セキュリティ]タブから確認することができます。ここでは、印刷とコピーを許可しています。

セキュリティの内容
セキュリティの内容

 セキュリティで許可する項目は次の列挙子を「|」でつなぐことで定義できます。(すべて禁止にする場合は0と入力します。)

セキュリティで許可できる項目
設定内容PdfWriterクラスの列挙子
印刷AllowPrinting
文書の変更AllowModifyContents
内容のコピーと抽出AllowCopy
注釈AllowModifyAnnotations
フォームフィールドの入力と署名AllowFillIn
アクセシビリティを有効にするAllowScreenReaders
文章アセンブリAllowAssembly

 なお、暗号化された文書を生成するときには、DocumentOpenメソッドを呼び出す前に、setEncryptionメソッドを呼び出す必要があります。

作成者などのメタ情報を設定する。

 PDFの文書には、誰がどのような目的で作成したのかといった「メタ情報」を設定することができます。

メタ情報を設定するDocumentクラスの主要メソッド
メソッド説明
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の利用を検討してみてはいかがでしょうか。

参考資料

  1. SourceForge 『iTextSharp
  2. WikiPedia 『PDF(Portable Document Format)
  3. PDFなんでも情報ブログ 『PDF千夜一夜
  4. どっとねっとふぁん 『iTextSharpを利用したPDF作成(Web編)
  5. 河端善博の.TEXTでウェブログ 『iTextSharp:ASP.NETからPDF出力』
  6. iText.NET 『チュートリアル
  7. iText.NET 『サンプル(C#)
  8. iText.NET 『サンプル(VB)
  9. @IT 『iText.NETでPDF文書に表を追加するには?
  10. iText Homepage(英語)
  11. CodeZine 『iTextを利用してJavaからPDF形式の帳票を出力する
※注
 iText(Java)やiText.NETの資料です(iTextSharpの資料ではありません)

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
特集記事連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 青木 淳夫(アオキ アツオ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/462 2006/10/11 19:39

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー