PDF Security 署名 VB6.0サンプル

PDF Securityは、PDF文書への電子署名と暗号化の機能をアプリケーションに追加します。

電子署名・タイムスタンプ

PDF Securityは、電子署名を適用します。PDF/Aに準拠した電子証明書失効情報の埋め込みや、RFC3161タイムスタンプを追加します。
証明書のルート証明書や失効情報をチェックすることで電子署名の有効性を検証します。また、タイムスタンプによる検証も行います。
タイムスタンプだけを埋め込めます。

暗号化・セキュリティ フラグ

PDF文書はそれが重要な場面で利用される場合、データの不正なアクセスや改竄から保護するために暗号化やセキュリティ(アクセス許可)フラグなどを設定します。

無償評価版インストール

ライブラリ(評価版API)は無償でダウンロード(試用)できます。
ファイルをダウンロードしてから、インストールもしくは適当なフォルダーに解凍します。以下のようなフォルダーができあがりますので、適宜ご利用ください。
binライブラリやライセンスマネージャーなど
doc使用説明書やjavadocなど
includeC/C++用のヘッダー(.h)ファイル
jarSECA.jar(Javaのラッパー)
libC/C++用のlibファイル
samples各種開発言語のサンプル
サンプルの実行前に、bin/PdfSecureAPI.dllをサンプル実行イメージと同じフォルダーにコピーしてください。また、無償評価版と共にダウンロードしたライセンスキーはbin/LicenseManager.exeを使って登録してください。

プロジェクトの作成と参照設定

  1. 標準 EXEプロジェクトを新規に作成します。
  2. PDF to PDF Converterライブラリを参照する設定をします。
    Visual Basic6.0のメインメニューで、「プロジェクト(P)」→「参照設定(N)...」を選択します。
    ダイアログが表示されますので、「3-Heights(TM) PDF Security〜」を探して、チェックをします。この項目が見つからない場合は、ダイアログの参照ボタンを押下して、「PDF to PDF Converter」をインストールもしくは展開したフォルダー内の Pdf2PdfAPI.dll を指定します。
  3. フォームにボタンを貼り付け、そのClickハンドラーに以下を追加します。

電子署名 VB6.0サンプル

PDF Securityでは印影が追加された電子署名やタイムスタンプを施すことができます。さらに背景の署名者や理由の文字を非表示にできます。 複数の電子署名を適用できますので、こちらを参照してください。

なお、PDF to PDF/A Converterでは、PDFからPDF/Aへの変換と同時にPDF/A文書へ電子署名やタイムスタンプを追加できます。

PDFへの電子署名

PDF文書に指定の電子証明書で電子署名します。  署名される文書がPDFの場合は、署名された文書もPDFです。同様にPDF/Aに電子署名すると、署名されたPDF/Aができます。

VB6.0ソースコード

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

署名の領域を指定
署名する領域を指定します。

AddSignature( )

指定の署名をPDFインスタンスに追加
このメソッドを実行することで、指定した署名がPDFに追加されます。

SaveAs( )

署名したPDFインスタンス(データ)をファイルに出力
以下の値を指定します。
第一引数:結果を格納するPDFファイル名
第二引数:出力PDFデータのユーザーパスワード
指定しない場合は、空の文字列(又は、NULL)を指定します。
第三引数:出力PDFデータのオーナーパスワード
空の文字列を指定すると、ユーザーパスワードが使われます。
第四引数:パーミッション フラグ
規定値は、ePermNoEncryptionです。そのためPDFデータを暗号化する場合は、指定しなければなりません。なお、データがPDF/Aの場合は、暗号化を指定できません。
第五引数:暗号化の鍵長
規定値は、128です。
第六引数:暗号化のフィルター
規定値は、"V2"です。
第七引数:ストリーム暗号化のフィルター
規定値は、"V2"です。
なお、第二引数以降は省略可能です。

電子署名領域への印影追加

印影を追加する場合は、印影の画像ファイル名を署名インスタンスに指定してから、電子署名を適用します。以下のコードをAddSignature( )を実行する前に指定します。
sig.ImageFileName = "Hanko.png"
ここに印影画像ファイル名を指定します。

タイムスタンプ追加

タイムスタンプを追加する場合は、タイムスタンプのURLを署名インスタンスに指定してから、電子署名を適用します。以下のコードをAddSignature( )を実行する前に指定します。
sig.TimeStampURL = "http://ca21.trustss.jp/tsa/"
タイムスタンプ局(TSA)のURLをします。
指定したタイムスタンプのURLは、テスト用のタイムスタンプを発行するTSAです。このTSAは無償・無登録で自由に使えます。

署名領域の名前や時刻などを非表示にする

名前や時刻などを非表示にするには、電子署名を適用する前にその部分をNULL文字に置き換えます。以下のコードをAddSignature( )を実行する前に指定します。
sig.Text1 = vbTab & "0,0 "
sig.Text2 = vbTab & "0,0 "
Text1で署名者情報を、Text2で理由や署名場所及び署名時刻の文字をNULLにします。 指定の文字を表示させる場合は、以下の形式を使います。
<TABコード><署名領域内のX座標>,<署名領域内のY座標><SPコード><表示する文字列>

PDF文書に複数の署名を追加する

複数の署名をPDFに追加するためには、まず署名を指定したPDFのインスタンスをメモリ上に出力します。次にそのメモリ上のPDFから新たなPDFインスタンスを作成し、追加する電子証明書を指定します。 さらに署名が必要であれば、メモリへの出力→PDFインスタンス作成→署名指定を繰り返します。
最後に、PDFインスタンスを指定のファイル名で出力することで複数の署名が追加されたPDF文書ファイルが生成されます。
詳細は、PDFに複数の署名を適用するを参照してください。

PDFファイル

サンプル・コード

Visual Basic6.0のサンプルはこちらです。このサンプルを実行するには電子証明書が必要です。

その他の情報

PDF/Aについて
PDFの構文解説