PDF Security(暗号化・電子署名) VB6.0サンプル
「PDF Security」ソフトは、PDF文書への電子署名と暗号化の機能をアプリケーションに追加します。
電子署名 ・ タイムスタンプ
PDF Securityは、電子署名の様々なタイプを適用します。PDF Securityは、PDF/Aに準拠した電子証明書失効情報(CRLやOCSPのデータ)の埋め込みや、RFC3161タイムスタンプを追加します。
PDF Securityは、証明書のルート(CA、中間)証明書や失効情報をチェックすることで電子署名の有効性を検証します。また、タイムスタンプによる検証も行います。
電子署名しないでタイムスタンプだけを埋め込めます。
PDF Securityは、証明書のルート(CA、中間)証明書や失効情報をチェックすることで電子署名の有効性を検証します。また、タイムスタンプによる検証も行います。
電子署名しないでタイムスタンプだけを埋め込めます。
暗号化・セキュリティ フラグ
PDF文書は、それが重要な場面で利用される場合、データの不正なアクセスや改竄から保護するために、暗号化やセキュリティ(アクセス許可)フラグなどを設定します。
機能概要はこちらです。
無償評価版のダウンロードとインストール
ライブラリ(評価版API)は無償でダウンロード(試用)できますので、PDF Security ダウンロード手順を参照してダウンロードください。
ファイルをダウンロードしてから、インストールもしくは適当なフォルダーに解凍します。以下のようなフォルダーができあがりますので、適宜ご利用ください。
サンプルの実行前に、bin/PdfSecureAPI.dllをサンプル実行イメージと同じフォルダーにコピーしてください。また、無償評価版と共にダウンロードしたライセンスキーをbin/LicenseManager.exeを使って登録してください。
ライセンスキーの登録方法はこちらです。
ファイルをダウンロードしてから、インストールもしくは適当なフォルダーに解凍します。以下のようなフォルダーができあがりますので、適宜ご利用ください。
bin | ライブラリやライセンスマネージャーなど |
doc | 使用説明書やjavadocなど |
include | C/C++用のヘッダー(.h)ファイル |
jar | SECA.jar(Javaのラッパー) |
lib | C/C++用のlibファイル |
samples | 各種開発言語のサンプル |
Visual Basic6.0のサンプルと解説
この文書は、PDF/A規格に準拠していて変更ができません。 (署名前のPDF文書、署名後のPDF文書) |
PDF Tools 「PDF Security」電子署名ライブラリ(API)を使って、左図のようにPDF/A文書に電子署名します。 PDF/A規格の参考文献 |
電子署名はAdobe Acrobat(無償版)リーダーで検証できます。検証の方法はこちらです。
「PDF Security」では印影付きの電子署名やタイムスタンプを適用できます。さらに背景の署名者や理由の文字を非表示にできます。 詳しくは、複数の電子署名を適用するを参照してください。
PDF文書からPDF/A文書への変換や、簡単にPDF/A文書へ電子署名やタイムスタンプを追加する場合は、「PDF to PDF/A Converter」を利用してください。 「PDF Security」では、標準のPDF文書に署名した場合は、電子署名した文書もPDF文書になります。
「PDF Security」では印影付きの電子署名やタイムスタンプを適用できます。さらに背景の署名者や理由の文字を非表示にできます。 詳しくは、複数の電子署名を適用するを参照してください。
PDF文書からPDF/A文書への変換や、簡単にPDF/A文書へ電子署名やタイムスタンプを追加する場合は、「PDF to PDF/A Converter」を利用してください。 「PDF Security」では、標準のPDF文書に署名した場合は、電子署名した文書もPDF文書になります。
プロジェクトの作成と参照設定
- 標準 EXEプロジェクトを新規に作成します。
- PDF to PDF Converterライブラリを参照する設定をします。
Visual Basic6.0のメインメニューで、「プロジェクト(P)」→「参照設定(N)...」を選択します。
以下のようなダイアログが表示されますので、「3-Heights(TM) PDF Security〜」を探して、チェックをします。この項目が見つからない場合は、ダイアログの参照ボタンを押下して、「PDF to PDF Converter」をインストールもしくは展開したフォルダー内の Pdf2PdfAPI.dll を指定します。
- フォームにボタンを貼り付け、そのClickハンドラーに以下を追加します。
PDF文書への電子署名
PDF文書に指定の電子証明書で電子署名します。
署名される文書がPDFの場合は、署名された文書もPDFです。同様にPDF/Aに電子署名すると、署名されたPDF/Aができます。
結果は、以下のようになります。
「PDF Security」電子署名ライブラリ(API)では、開く文書がPDFの場合は、結果がPDF文書になります。PDF/A文書を開けば、結果もPDF/A文書になります。
PDF文書をPDF/Aに変換する場合は、「PDF to PDF/A Converter」ライブラリを使います。
署名される文書がPDFの場合は、署名された文書もPDFです。同様にPDF/Aに電子署名すると、署名されたPDF/Aができます。
Private Sub Command1_Click() Dim doc As New PDFSECUREAPILib.PdfSecure '入力ファイルを開く done = doc.Open("Receipt2a.pdf") If Not done Then If doc.ErrorCode = PDF_E_PASSWORD Then MsgBox "Input file is encrypted and password not correct." Else MsgBox "Couldn't open input file." & vbNewLine & "Error: " & doc.ErrorCode End If Exit Sub End If '電子署名 'インスタンス生成 Dim sig As New PDFSECUREAPILib.PdfSignature Dim rect(3) As Variant '指定フォント sig.FontName1 = "C:\\Windows\\Fonts\\msgothic.ttc" sig.FontName2 = "C:\\Windows\\Fonts\\msmincho.ttc" '電子証明書情報(電子証明書検索情報) sig.Name = "Taro Yamada" sig.Issuer = "CA21-5" sig.SerialNumber = "15 A3" '電子署名表示内容 sig.Reason = "Received" sig.Location = "Tokyo" '表示位置 rect(0) = CSng(470) rect(1) = CSng(590) rect(2) = CSng(500) rect(3) = CSng(620) sig.rect = rect '電子署名追加 If Not doc.AddSignature(sig) Then MsgBox "Could not add signature." End If 'ファイル格納 If Not doc.SaveAs("Receipt2s.pdf") Then MsgBox "Output file could not be created." End If End Sub
New PDFSECUREAPILib.PdfSignature | PDF文書を扱うインスタンスを生成 | ||||||||||||||
Open() | 署名を追加するPDF文書を開く (インターネット上のPDF文書を開く場合) | ||||||||||||||
New PDFSECUREAPILib.PdfSignature | 電子署名を施すためのインスタンスを生成 | ||||||||||||||
FontName1 | 署名領域1のフォントを指定 フォントファイル名を指定します。日本語を表示させるには、日本語フォントを指定しなければなりません。 |
||||||||||||||
FontName2 | 署名領域2のフォントを指定 フォントファイル名を指定します。日本語を表示させるには、日本語フォントを指定しなければなりません。 |
||||||||||||||
Name | 署名者の名前(CN:CommonName)を指定 電子証明書がこの名称で検索されます。なお、証明書を発行者とシリアル番号で指定する場合は、署名者としてPDFに挿入されるのみとなります。そのため、この場合は任意の名称を指定できます。 |
||||||||||||||
Issuer | 署名に使う電子証明書の発行者(Issuer)を指定 電子証明書をシリアル番号で指定する場合は必須です。電子証明書を名前(CN:CommonName)で指定する場合は必要ありませんが、同じ名前の電子証明書がある場合は、発行者を指定して希望の証明書が選択されるようにします。 |
||||||||||||||
SerialNumber | 署名に使う電子証明書のシリアル番号を指定 電子証明書をシリアル番号で指定する場合は、必須です。 |
||||||||||||||
Reason | 署名の「理由」を指定 | ||||||||||||||
Location | 署名の「場所」を指定 | ||||||||||||||
rect | 署名の領域を指定 署名する領域の左下(x1,Y1)と右上(x2,y2)をx1,Y1,x2,y2の順で指定します。 |
||||||||||||||
AddSignature() | 指定の署名をPDFインスタンスに追加 このメソッドを実行することで、指定した署名がPDFに追加されます。 |
||||||||||||||
SaveAs() | 署名したPDFインスタンス(データ)をファイルに出力
|
結果は、以下のようになります。
署名したPDF文書はこちらです。 |
署名時にWeb上のファイルを指定する方法
入力のPDFファイル指定では以下の形式で指定すると、インターネット上のPDFファイルを直接変換できます。
http://[username:password@]domain[:port][/resource]"username"および"password"は基本認証(Basic Authentication)のユーザー名とパスワード指定です。
先のサンプルで"doc.Open( )"のコードを以下のように変更すると、Web上のPDF文書に署名しローカルにファイルを作成します。
'入力ファイルを開く done = doc.Open("http://www.pdf-tools.trustss.jp/data/Receipt2a.pdf")
電子署名領域への印影追加
印影を追加する場合は、印影の画像ファイル名を署名インスタンスに指定してから、電子署名を適用します。以下のコードをAddSignature( )を実行する前に指定します。(この印影は、「電子印鑑」や「電子押印」などと同じ意味になります。)
結果は、以下のようになります。
sig.ImageFileName = "Hanko.png"ここに印影画像のファイル名を指定します。
結果は、以下のようになります。
署名したPDF文書はこちらです。 |
タイムスタンプ追加
タイムスタンプを追加する場合は、タイムスタンプのURLを署名インスタンスに指定してから、電子署名を適用します。以下のコードをAddSignature( )を実行する前に指定します。
指定したタイムスタンプのURLは、テスト用のタイムスタンプを発行するTSAです。このTSAは無償・無登録で自由に使えますが、負荷によってはレスポンスが低下します。
結果は、以下のようになります。
sig.TimeStampURL = "http://tsa.trustss.jp/tsa/"タイムスタンプ局(TSA)のURLを指定します。
指定したタイムスタンプのURLは、テスト用のタイムスタンプを発行するTSAです。このTSAは無償・無登録で自由に使えますが、負荷によってはレスポンスが低下します。
結果は、以下のようになります。
署名したPDF文書はこちらです。 |
署名領域の名前や時刻などを非表示にする
名前や時刻などを非表示にするには、電子署名を適用する前にその部分をNULL文字に置き換えます。以下のコードをAddSignature( )を実行する前に指定します。
特定の文字を表示させる場合は、以下の形式で指定します。
結果は、以下のようになります。
sig.Text1 = vbTab & "0,0 " sig.Text2 = vbTab & "0,0 "sig.Text1で署名者情報を、sig.Text2で理由や署名場所及び署名時刻の文字列をNULL文字にします。
特定の文字を表示させる場合は、以下の形式で指定します。
<署名領域内のx座標><署名領域内のx座標><空白><表示する文字列>
結果は、以下のようになります。
署名したPDF文書はこちらです。 |
PDF文書に複数の署名を追加する
複数の署名をPDFに施すためには、まず署名を指定したPDFのインスタンスをメモリ上に出力します。次にそのメモリ上のPDFから新たなPDFインスタンスを作成し、追加する署名を指定します。
さらに署名が必要であれば、メモリへの出力→PDFインスタンス作成→署名指定を繰り返します。
最後に、PDFインスタンスを指定のファイル名で出力することで複数の署名が施されたPDF文書ファイルが作成されます。
詳細は、「PDFに複数の署名を適用する」を参照してください。
最後に、PDFインスタンスを指定のファイル名で出力することで複数の署名が施されたPDF文書ファイルが作成されます。
詳細は、「PDFに複数の署名を適用する」を参照してください。
サンプル
Visual Basic6.0のサンプルは、こちらです。 このサンプルを実行するには電子証明書が必要です。
ご質問、お問い合わせ
(記載の会社名および製品名は、各社の登録商標および商標です。)