JPEG画像をパスワード機能付きPDFに変換する処理
画像をRasterImageViewerコントロールで表示したら、この画像をPDFに変換します。PDFへの変換と保存の処理はRasterCodecsクラスのSaveメソッドで行います。
その前に、次の3つの操作制限と2つのパスワードを設定しておきます。これらは、PDFに対するコピー/印刷/編集操作を禁止し、パスワードを入力しないと文書の閲覧とこれらの属性の変更ができないようにします。
この処理はCodecsPdfSaveOptionsクラスの次のメンバプロパティを使用します。
-
ExtractTextGraphics
グラフィックスのコピーの許可/禁止を設定。Falseでユーザーはコピーができなくなる
-
PrintDocument
印刷の許可/禁止を設定。Falseでユーザーは印刷ができなくなる
-
ModifyDocument
文書編集の許可/禁止を設定。Falseでユーザーは文書の編集ができなくなる
-
UserPassword
PDF文書閲覧に際して使用するパスワード。暗号化ファイルの保存時に設定
-
OwnerPassword
PDF文書のアクセス設定や保護設定をする際に設定するパスワード。パスワードを入力しないとこれらの機能にアクセスできない。
Saveメソッドにはオーバーロードメソッドがいくつか用意されています。今回の処理には、次の書式のメソッドを使用します。
Save(RasterImage,String,RasterImageFormat,Int32)
-
RasterImage
画像データを含むRasterImageオブジェクト
-
fileName
出力ファイル名を表すString
-
RasterImageFormat
出力ファイル形式。PDF形式に変換する場合は、RasterImageFormatクラスの次のメンバ(定数)を使用する
PDF変換時のRasterImageFormatクラスの定数定数 説明 ビット数 RasPdf ラスタPDF、圧縮なし 1、2、4、8、24ビット RasPdfCmyk ラスタPDF、CMYKサポート 24ビット RasPdfG31Dim ラスタPDF、G3 1次元圧縮 1ビット RasPdfG32Dim ラスタPDF、G3 2次元圧縮 1ビット RasPdfG4 ラスタPDF、G4圧縮 1ビット RasPdfLzw ラスタPDF、LZW圧縮 1、2、4、8、24ビット RasPdfLzwCmyk ラスタPDF、CMYKサポート、LZW圧縮 24ビット RasPdfJpeg ラスタPDF、JPEG 4:4:4圧縮 8ビット(グレースケール)、24ビット RasPdfJpeg422 ラスタPDF、JPEG 4:2:2圧縮 24ビット RasPdfJpeg411 ラスタPDF、JPEG 4:1:1圧縮 24ビット RasPdfJbig2 ラスタPDF、JBIG2圧縮 1ビット -
bitsPerPixel
出力ファイルのビット数
今回は、JPEG画像をPDFに変換するため、RasterImageFormatクラスの「RasPdfJpeg」を使用します。また、フルカラー画像を扱うので出力ビット数は「24」に設定します。
codecs.Save(RasterImageViewer1.Image, "C:\pdf\" + TextBox2.Text, RasterImageFormat.RasPdfJpeg, 24)
codecs.Save(rasterImageViewer1.Image, @"c:\pdf\" + textBox2.Text, RasterImageFormat.RasPdfJpeg, 24);
以上でできあがりです。
Private Sub create_pdf_btn_Click(sender As System.Object, e As System.EventArgs) Handles create_pdf_btn.Click If RasterImageViewer1.Image IsNot Nothing Then ' グラフィックスのコピーを禁止する codecs.Options.Pdf.Save.ExtractTextGraphics = False ' 印刷を禁止する codecs.Options.Pdf.Save.PrintDocument = False ' 文書の編集を禁止する codecs.Options.Pdf.Save.ModifyDocument = False ' 暗号化ファイルの保存時に使用するオーナーパスワードを設定 'オーナーパスワードを入力しないとユーザーがアクセス設定や保護設定を変更できない codecs.Options.Pdf.Save.OwnerPassword = "lead2012" ' 暗号化ファイルの保存時に使用するユーザーパスワードを設定 'ユーザーパスワードは文書閲覧に際して使用するパスワード codecs.Options.Pdf.Save.UserPassword = TextBox1.Text ' 画像をPDFで保存します。 codecs.Save(RasterImageViewer1.Image, "C:\pdf\" + TextBox2.Text, RasterImageFormat.RasPdfJpeg, 24) MessageBox.Show("PDFファイルを保存しました。") Else MessageBox.Show("PDF化する画像がありません", "PDF作成エラー", MessageBoxButtons.OK, MessageBoxIcon.Error) End If End Sub Private Sub Form1_FormClosing(sender As System.Object, e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing RasterCodecs.Shutdown() End Sub
private void create_pdf_btn_Click(object sender, EventArgs e) { if(rasterImageViewer1.Image != null) { // グラフィックスのコピーを禁止する codecs.Options.Pdf.Save.ExtractTextGraphics = false; // 印刷を禁止する codecs.Options.Pdf.Save.PrintDocument = false; // 文書の編集を禁止する codecs.Options.Pdf.Save.ModifyDocument = false; // 暗号化ファイルの保存時に使用するオーナーパスワードを設定 //オーナーパスワードを入力しないとユーザーがアクセス設定や保護設定を変更できない codecs.Options.Pdf.Save.OwnerPassword = "lead2012"; // 暗号化ファイルの保存時に使用するユーザーパスワードを設定 //ユーザーパスワードは文書閲覧に際して使用するパスワード codecs.Options.Pdf.Save.UserPassword = textBox1.Text; // 画像をPDFで保存します。 codecs.Save(rasterImageViewer1.Image, @"c:\pdf\" + textBox2.Text, RasterImageFormat.RasPdfJpeg, 24); MessageBox.Show("PDFファイルを保存しました。"); }else { MessageBox.Show("PDF化する画像がありません", "PDF作成エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { RasterCodecs.Shutdown(); }
動作確認
では、プログラムを実行し、PDF化した画像を開いてみます(※PDF閲覧には、Adobe社のAcrobat Readerが必要)。
最初に、閲覧用のパスワードの入力が求められるため、パスワードを入力します。メニューを見ると、印刷やコピー、編集メニューがグレー表示で使用できなくなっています。また、文書のプロパティを開くと、機能制限がかかっていることもわかります。
まとめ
画像といえども重要なデータに変わりはないので、きちんとセキュリティをかけることも大切です。LEADTOOLS 16.5J Document Imagingは、このように画像をセキュリティ制限付きPDF文書に変換してくれます。今の時代、情報の保護が厳しく問われていますので、データにセキュリティ設定のできるアプリケーションはより求められていると言えるでしょう。