PDF Securityは、PDF文書への電子署名と暗号化の機能をアプリケーションに追加します。
電子署名・タイムスタンプ
PDF Securityは、電子署名を適用します。PDF/Aに準拠した電子証明書失効情報の埋め込みや、RFC3161タイムスタンプを追加します。
証明書のルート証明書や失効情報をチェックすることで電子署名の有効性を検証します。また、タイムスタンプによる検証も行います。
タイムスタンプだけを埋め込めます。
暗号化・セキュリティ フラグ
PDF文書はそれが重要な場面で利用される場合、データの不正なアクセスや改竄から保護するために暗号化やセキュリティ(アクセス許可)フラグなどを設定します。
ライブラリ(評価版API)は
無償でダウンロード(試用)できます。
ファイルをダウンロードしてから、インストールもしくは適当なフォルダーに解凍します。以下のようなフォルダーができあがりますので、適宜ご利用ください。
bin | ライブラリやライセンスマネージャーなど |
doc | 使用説明書やjavadocなど |
include | C/C++用のヘッダー(.h)ファイル |
jar | SECA.jar(Javaのラッパー) |
lib | C/C++用のlibファイル |
samples | 各種開発言語のサンプル |
サンプルの実行前に、bin/PdfSecureAPI.dllをサンプル実行イメージと同じフォルダーにコピーしてください。また、無償評価版と共にダウンロードしたライセンスキーはbin/LicenseManager.exeを使って登録してください。
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
署名に使う電子証明書のシリアル番号を指定
電子証明書をシリアル番号で指定する場合は、必須です。
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ファイル
サンプル・コード
その他の情報