このページには自動翻訳されたテキストを含めることができます。
C# および VB.NET で PDF ドキュメントに署名する
デジタル署名は、ユーザーの身元と PDF ドキュメントのコンテンツを認証するために使用されます。 署名に より、PDF ドキュメントが次のことを証明できます:
- 署名されてから変更されていません。
- 特定の人によってデジタル署名されました。
PDF ドキュメントに署名するための .NET ライブラリ
Docotic.Pdf ライブラリ を使用して、.NET Framework および .NET Core アプリケー ションで PDF ドキュメントに署名します。 C# .NET PDF ライブラリをダウンロード ページでライブラリと無料の期間限定ライセンス キーを入手してください。
9.5.17573-dev 14,726人が合格 NuGet の合計ダウンロード数 4,765,230Docotic.Pdf は、さまざまなダイジェスト アルゴリズム (SHA-1、SHA-256、SHA-384、SHA-512、RIPEMD-160) およびさまざまな署名形式 (adbe.pkcs7.detached、または ETSI.CAdES.detached) を使用してデジタル署名を 作成できます。 。 このライブラリでは、PDF 署名を検証 することもできま す。
C# で PDF にデジタル署名を追加する
PDF ドキュメントに署名するには、有効な認証局 (CA) によって発行されたデジタル PKCS#12 証明書 (.pfx または .p12 ファイル) が必要です。 これは、C# で PDF ドキュメントに署名する方法を示す基本的なサンプ ルです:
using BitMiracle.Docotic.Pdf;
using (var pdf = new PdfDocument("document_to_sign.pdf"))
{
var options = new PdfSigningOptions("your_cert.p12", "your_cert_password")
{
DigestAlgorithm = PdfDigestAlgorithm.Sha256,
Format = PdfSignatureFormat.Pkcs7Detached,
Reason = "Testing digital signatures",
Location = "My workplace",
ContactInfo = "support@example.com"
};
pdf.SignAndSave(options, "signed.pdf");
}
「your_cert.p12」と「your_cert_password」を独自の .p12 または .pfx 証明書ファイルとパスワードに置き 換えます。 GitHub では、C# および VB.NET で完全な Sign PDF document サンプルを ダウンロードして試すことができます。
署名済みの文書に署名する必要がある場合があります。 または、複数の人が順番にフォームに署名する必要が あります。 これも可能です。 手順はほとんど同じです。 必ず署名して段階的に保存してください。 許可さ れた変更のみを適用する場合、増分更新によってデジタル署名は無効になりません。
これらの場合に備えて、C# および VB.NET の 署名済み PDF ドキュメントに署名す る および 複数人で PDF フォームに署名す る サンプルがあります。
上記のコードは、非表示の署名フィールドを暗黙的に PDF ドキュメントに追加し、それを署名に使用します。 PDF に署名フィールドを追加およびカスタマイズする方法を見てみましょう。
手書きの署名画像を使用して PDF ドキュメントに署名する
デジタル署名の他に、手書きの署名画像を PDF に追加する必要があることがよくあります。 このサンプル は、C# で関連画像を含むデジタル署名を追加する方法を示します:
using (var pdf = new PdfDocument("document_to_sign.pdf"))
{
var options = new PdfSigningOptions("your_cert.p12", "your_cert_password")
{
DigestAlgorithm = PdfDigestAlgorithm.Sha256,
Format = PdfSignatureFormat.Pkcs7Detached,
};
PdfSignatureField field = pdf.Pages[0].AddSignatureField(20, 20, 100, 50);
options.Field = field;
PdfImage image = pdf.AddImage("your_signature.jpg");
options.Appearance.Image = image;
options.Appearance.HideAllText();
pdf.SignAndSave(options, "signed.pdf");
}
このコードは、署名フィールドを追加し、そのフィールドを署名オプションに関連付け、フィールドの外観を カスタマイズします。 署名フィールドにはテキスト、画像、またはその両方を表示できます。 詳細について は、PdfSignatureAppearanceOptions クラス および カスタム スタイルを使用して署名フィールドに署名 のサンプ ルを参照してください。
PDF フォームフィールドを署名フィールドでロックする
署名フィールドを使用すると、署名後に PDF フォーム フィールドをロックできます。 このサンプルは、C# でサインインした後に特定のフォーム フィールドをロックする方法を示します:
var first = page.AddSignatureField("first", 100, 100, 200, 50);
// 最初のフィールドが署名されると、
//「some_text_field」および「some_checkbox」という名前のフィールドは編集のためにロックされます。
first.Lock = PdfSignatureFieldLock.CreateLockFields("some_text_field", "some_checkbox");
次のコードは、署名後にすべてのフォームフィールドをロックする方法を示しています:
var second = page.AddSignatureField("second", 100, 200, 200, 50);
// 「second」フィールドが署名されると、すべてのフィールドが編集のためにロックされます
second.Lock = PdfSignatureFieldLock.CreateLockAll();
PDF ドキュメント内の特定のフィールドを除くすべてのフォーム フィールドをロックすることもできます。 そのためには、PdfSignatureFieldLock.CreateLockAllExceptFields メソッ ド を使用します。
GitHub から C# および VB.NET で完全な ロック付き署名フィールドに署 名 サンプルをダウンロードして試してください。
デジタル署名にタイムスタンプを埋め込む
タイムスタンプを埋め込むことで、デジタル署名のセキュリティをさらに強化できます。 このためには、署名 オプションの 1 つとしてタイムスタンプ機関 URL を指定します。 必要に応じて、ユーザー名とパスワードを 指定することもできます。
署名するとき、ライブラリはタイムスタンプ認証局からタイムスタンプを取得し、それを署名に埋め込みます。
互換性の理由から、タイムスタンプ付き署名には SHA ダイジェスト アルゴリズムのいずれかを使用することをお勧めします。
// 次のテスト URL をタイムスタンプ認証局の URL に置き換えます
options.Timestamp.AuthorityUrl = new Uri("http://tsa.starfieldtech.com/");
// タイムスタンプ局で認証が必要な場合は、ユーザー名とパスワードを指定します
options.Timestamp.Username = null;
options.Timestamp.Password = null;