透かしなしで本番環境でテストしてください。
必要な場所で動作します。
30日間、完全に機能する製品をご利用いただけます。
数分で稼働させることができます。
製品トライアル期間中にサポートエンジニアリングチームへの完全アクセス
デジタル署名は、電子文書の真正性と完全性を検証する数学的技術です。 それは、いくつかの管轄区域で文書をデジタル署名するための電子署名として使用され、優れたセキュリティと法的有効性を確保します。
署名者のみに知られている秘密鍵は、ユニークなデジタル署名を確立し、デジタル署名される際にドキュメントにそれを結びつけるために使用されます。 署名者の名前、メールアドレス、その他の個人情報がこの署名に含まれています。 デジタル署名されたドキュメントの真正性は、受取人が署名者の公開鍵にアクセスできる場合にのみ確認できます。 署名の正当性は、公開鍵を使用してそれを復号化することによって確認されます。
このチュートリアルでは、PDFドキュメントにデジタル署名を追加する方法を比較します[PDFSharp
](https://docs.pdfsharp.net)以下のコンテンツを日本語に翻訳してください:[**IronPDF**](https://ironpdf.com). デジタル署名は文書の真正性を確認するために不可欠であり、PDFファイルはそのような操作のための一般的な形式です。
PDFsharpはPDFの作成と操作のためのよく知られたオープンソースライブラリであり、一方、IronPDFは同様の機能に加え、追加の高度な機能を提供する堅牢な.NET PDFライブラリです。
このガイドでは、プライベートキーでPDFドキュメントに署名し、署名を検証する方法を、両方のライブラリのサンプルソースコードとともに説明します。
デジタル署名はドキュメントの完全性を保証し、強力なセキュリティを提供します。 それらは通常、契約書、合意書、およびその他の法律文書に使用されます。
主な利点:
PDFSharpは、PDFドキュメントの作成と操作を主に目的としたオープンソースのC#ライブラリです。 これは、基本的なPDFタスク、たとえばシンプルなPDFファイルの生成、既存のドキュメントの編集、グラフィックのレンダリングなどに広く使用されています。 しかし、デジタル署名のような高度な機能に対するネイティブサポートは限定的であり、開発者はそのような機能を統合するために、BouncyCastleのようなサードパーティのライブラリに頼る必要があることが多いです。 PDFsharpはオープンソースであり、MITライセンスの下にあるため、コストと柔軟性が優先されるプロジェクトに適した選択肢です。
IronPDFは、PDFの生成、編集、操作のためのシンプルで強力なAPIを提供する堅牢な.NET PDFライブラリです。 その目立った機能の1つは、開発者が文書の真正性を確認するために不可欠なデジタル署名を簡単に実装できることです。 デジタル署名に加えて、IronPDFは次のような高度な機能をサポートしていますHTMLからPDFへの変換、ウォーターマーキング、およびフォーム処理。 商業プロジェクトに取り組む開発者にとって、迅速な実装と堅牢な機能が優先される場合に特に価値があります。
PDFsharpは、C#でPDFの作成と操作を行うために設計されたオープンソースライブラリです。 しかし、署名を追加するサポートを提供しているものの、PDFドキュメントの安全で正確なデジタル署名を確保するためには、BouncyCastleのようなサードパーティツールを統合する必要があります。
PDFsharpとBouncyCastleをNuGetでインストール。
X509Certificate2 を使用してデジタル証明書を作成
using System.Security.Cryptography.X509Certificates;
using PdfSharp.Drawing;
using PdfSharp.Pdf.Signatures;
using BouncyCastleSigner;
using PdfSharp.Quality;
class Program
{
static void Main(string[] args)
{
var font = new XFont("Verdana", 10.0, XFontStyleEx.Regular);
var document = new PdfSharp.Pdf.PdfDocument();
var pdfPage = document.AddPage();
var xGraphics = XGraphics.FromPdfPage(pdfPage);
var layoutRectangle = new XRect(0.0, 0.0, pdfPage.Width.Point, pdfPage.Height.Point);
xGraphics.DrawString("Signed sample document", font, XBrushes.Black, layoutRectangle, XStringFormats.TopCenter);
var options = new DigitalSignatureOptions
{
ContactInfo = "John Doe",
Location = "Seattle",
Reason = "License Agreement",
Rectangle = new XRect(36.0, 700.0, 400.0, 50.0),
AppearanceHandler = new SignatureAppearanceHandler()
};
var pdfSignatureHandler = DigitalSignatureHandler.ForDocument(document,
new PdfSharp.Snippets.Pdf.BouncyCastleSigner(GetCertificate(), PdfMessageDigestType.SHA256), options);
document.Save("PdfSharpSignature.pdf");
}
static (X509Certificate2, X509Certificate2Collection) GetCertificate()
{
var certFolder = IOUtility.GetAssetsPath("C:\\Users\\kyess\\AppData\\Roaming\\Adobe\\Acrobat\\DC\\Security");
var pfxFile = Path.Combine(certFolder, "IronSoftware.pfx");
var rawData = File.ReadAllBytes(pfxFile);
// This code is for demonstration only. Do not use password literals for real certificates in source code.
var certificatePassword = "Passw0rd";
var certificate = new X509Certificate2(rawData,
certificatePassword,
X509KeyStorageFlags.MachineKeySet
X509KeyStorageFlags.PersistKeySet
X509KeyStorageFlags.Exportable);
var collection = new X509Certificate2Collection();
collection.Import(rawData, certificatePassword,
X509KeyStorageFlags.MachineKeySet
X509KeyStorageFlags.PersistKeySet
X509KeyStorageFlags.Exportable);
return (certificate, collection);
}
}
using System.Security.Cryptography.X509Certificates;
using PdfSharp.Drawing;
using PdfSharp.Pdf.Signatures;
using BouncyCastleSigner;
using PdfSharp.Quality;
class Program
{
static void Main(string[] args)
{
var font = new XFont("Verdana", 10.0, XFontStyleEx.Regular);
var document = new PdfSharp.Pdf.PdfDocument();
var pdfPage = document.AddPage();
var xGraphics = XGraphics.FromPdfPage(pdfPage);
var layoutRectangle = new XRect(0.0, 0.0, pdfPage.Width.Point, pdfPage.Height.Point);
xGraphics.DrawString("Signed sample document", font, XBrushes.Black, layoutRectangle, XStringFormats.TopCenter);
var options = new DigitalSignatureOptions
{
ContactInfo = "John Doe",
Location = "Seattle",
Reason = "License Agreement",
Rectangle = new XRect(36.0, 700.0, 400.0, 50.0),
AppearanceHandler = new SignatureAppearanceHandler()
};
var pdfSignatureHandler = DigitalSignatureHandler.ForDocument(document,
new PdfSharp.Snippets.Pdf.BouncyCastleSigner(GetCertificate(), PdfMessageDigestType.SHA256), options);
document.Save("PdfSharpSignature.pdf");
}
static (X509Certificate2, X509Certificate2Collection) GetCertificate()
{
var certFolder = IOUtility.GetAssetsPath("C:\\Users\\kyess\\AppData\\Roaming\\Adobe\\Acrobat\\DC\\Security");
var pfxFile = Path.Combine(certFolder, "IronSoftware.pfx");
var rawData = File.ReadAllBytes(pfxFile);
// This code is for demonstration only. Do not use password literals for real certificates in source code.
var certificatePassword = "Passw0rd";
var certificate = new X509Certificate2(rawData,
certificatePassword,
X509KeyStorageFlags.MachineKeySet
X509KeyStorageFlags.PersistKeySet
X509KeyStorageFlags.Exportable);
var collection = new X509Certificate2Collection();
collection.Import(rawData, certificatePassword,
X509KeyStorageFlags.MachineKeySet
X509KeyStorageFlags.PersistKeySet
X509KeyStorageFlags.Exportable);
return (certificate, collection);
}
}
ご覧のように、ここではデジタル署名フィールドを作成し、新しい文書に証明書を適用することができましたが、このプロセスは広範囲で手動であり、IronPDFのようなライブラリと比較すると、実装するのにそれほど効率的ではありません。
IronPDFは、開発者に対して簡潔な方法を提供します電子署名PDFドキュメント。
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
public class Program
{
static void Main(string[] args)
{
// Create PdfSignature object
var sig = new PdfSignature("IronSoftware.pfx", "your-password");
// Add granular information
sig.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256;
sig.TimeStampUrl = "http://timestamp.digicert.com";
sig.SignatureImage = new PdfSignatureImage("IronPdf.png", 0, new Rectangle(150, 100, 200, 200));
// Sign and save PDF document
sig.SignPdfFile("output.pdf");
}
}
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
public class Program
{
static void Main(string[] args)
{
// Create PdfSignature object
var sig = new PdfSignature("IronSoftware.pfx", "your-password");
// Add granular information
sig.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256;
sig.TimeStampUrl = "http://timestamp.digicert.com";
sig.SignatureImage = new PdfSignatureImage("IronPdf.png", 0, new Rectangle(150, 100, 200, 200));
// Sign and save PDF document
sig.SignPdfFile("output.pdf");
}
}
このコードは、IronPDFのPdfSignatureクラスを使用してPDF文書に署名する方法を示しています。 プログラムは最初にPdfSignatureオブジェクトを作成し、.pfx証明書ファイルの場所とそのパスワードを指定します。 その後、ハッシュアルゴリズムなどの追加の署名プロパティを設定します。(SHA256), timestamp URL (http://timestamp.digicert.com)、署名用のカスタム画像(IronPdf.png).
最後に、SignPdfFileメソッドが呼び出されて、デジタル署名をPDFドキュメントに適用し、output.pdfとして保存します。 このプロセスは、タイムスタンプと視覚的画像とともにデジタル署名を埋め込むことにより、PDFの整合性と信頼性を確保します。
PDFSharp
外部ライブラリが必要(例:BouncyCastle)デジタル署名のような高度な機能のために。
IronPDF:
IronPDFとPDFsharpを比較する際にデジタル署名C#でPDFに変換する場合、どちらのライブラリもプロジェクトのニーズに応じて異なる利点を提供します。
PDFsharp は基本的なPDFの作成や操作に優れていますが、IronPDFが提供する高度な機能やデジタル署名への直接サポートは欠けています。 PDFsharpはオープンソースで無料で使用できますが、デジタル署名を扱うためのAPIはIronPDFに比べて直感的ではなく、開発者はこれらの機能を処理するために追加のソリューションやサードパーティ製のライブラリを使用する必要があるかもしれません。
まとめると、IronPDF商業環境で特に、デジタル署名や関連するPDFタスクに対するシンプルで高速な解決策を求めている開発者にとって、最適な選択です。 PDFsharpは、基本的なPDFタスクには適しているが、デジタル署名の使いやすさや機能セットが同じではないため、よりシンプルなプロジェクトや追加のカスタマイズが必要なプロジェクトに適しています。