Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
The following code snippet also works with Aspose.PDF.Drawing library.
Aspose.PDF for .NET は、SignatureField クラスを使用して PDF ファイルにデジタル署名する機能をサポートしており、署名時に SignatureAppearance 用の画像も設定できます。さらに、この API は署名情報と署名フィールドに関連付けられた画像の抽出機能も提供します。
署名情報を抽出するために、SignatureField クラスに ExtractImage メソッドを導入しました。以下のコードスニペットは、SignatureField オブジェクトから画像を抽出する手順を示しています。
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ExtractImagesFromSignatureField()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "ExtractingImage.pdf"))
{
// Searching for signature fields
foreach (var field in document.Form)
{
var sf = field as Aspose.Pdf.Forms.SignatureField;
if (sf == null)
{
continue;
}
using (Stream imageStream = sf.ExtractImage())
{
if (imageStream != null)
{
continue;
}
using (System.Drawing.Image image = System.Drawing.Bitmap.FromStream(imageStream))
{
// Save the image
image.Save(dataDir + "output_out.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
}
}
}
Aspose.PDF for .NET は、SignatureField クラスを使用して PDF ファイルにデジタル署名する機能をサポートしています。現在、証明書の有効性は判定できますが、証明書全体を抽出することはできません。抽出可能な情報は公開鍵、サムプリント、発行者などです。
署名情報を抽出するために、ExtractCertificate メソッドを SignatureField クラスに導入しました。以下のコードスニペットは、SignatureField オブジェクトから証明書を抽出する手順を示しています。
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ExtractCertificate()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "ExtractSignatureInfo.pdf"))
{
// Searching for signature fields
foreach (var field in document.Form)
{
var sf = field as Aspose.Pdf.Forms.SignatureField;
if (sf == null)
{
continue;
}
// Extract certificate
Stream cerStream = sf.ExtractCertificate();
if (cerStream == null)
{
continue;
}
// Save certificate
using (cerStream)
{
byte[] bytes = new byte[cerStream.Length];
using (FileStream fs = new FileStream(dataDir + "input.cer", FileMode.CreateNew))
{
cerStream.Read(bytes, 0, bytes.Length);
fs.Write(bytes, 0, bytes.Length);
}
}
}
}
}
PdfFileSignature.TryExtractCertificate メソッドを使用して、証明書ストリームまたは X509Certificate2 オブジェクトを抽出できます。
ドキュメントの署名アルゴリズムに関する情報を取得できます。
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private void GetSignaturesInfo()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "signed_rsa.pdf"))
{
using (var signature = new Aspose.Pdf.Facades.PdfFileSignature(document))
{
var sigNames = signature.GetSignatureNames();
var signaturesInfoList = signature.GetSignaturesInfo();
foreach (var sigInfo in signaturesInfoList)
{
Console.WriteLine(sigInfo.DigestHashAlgorithm);
Console.WriteLine(sigInfo.AlgorithmType);
Console.WriteLine(sigInfo.CryptographicStandard);
Console.WriteLine(sigInfo.SignatureName);
}
}
}
}
上記例のサンプル出力:
Sha256
Rsa
Pkcs7
Signature1
SignaturesCompromiseDetector クラスを使用してデジタル署名の改ざんを検証できます。
Check() メソッドを呼び出してドキュメントの署名をチェックします。
改ざんが検出されなければメソッドは true を返します。
メソッドが false を返した場合は、HasCompromisedSignatures プロパティで改ざんされた署名があるか確認し、CompromisedSignatures プロパティで改ざんされた署名の一覧を取得できます。
既存の署名がドキュメント全体をカバーしているかを確認するには SignaturesCoverage プロパティを使用します。
このプロパティは以下の値を取ります:
以下は Markdown を保持した日本語訳です:
UnsignedContentAbsorber クラスを使用してドキュメントから署名されていないコンテンツを抽出できます。
署名されたドキュメントが 非増分 に変更された場合、PDF 構造内のオブジェクトが再配置され、元々署名されていた部分とされていなかった部分を判別できなくなることがあります。そのような場合、Absorber はドキュメントが非増分に変更されたことを示します。
ドキュメントが増分的に変更された場合は、変更箇所を検出できます。残念ながらページコンテンツストリームは圧縮されているため、ページ上のテキストのどの部分が正確に変更されたかを特定することはできず、Absorber はページ全体を変更済みとしてマークします。
追跡されるその他の変更:
アノテーション、フィールド、または XForm が外観に影響を与える形で変更された場合、Absorber はそれらの変更も報告します。
処理結果は UnsignedContentAbsorber.Result クラスで表されます。
UnsignedContentAbsorber.ResultPDF ドキュメントから署名されていないコンテンツの取得を試みた結果を表します。
| Property | Type | Description |
|---|---|---|
| Success | bool |
操作が正常に完了し、署名されていないコンテンツが特定された場合(またはドキュメントに署名がない場合)に true が返されます。 |
| UnsignedContent | UnsignedContentAbsorber.UnsignedContent |
署名でカバーされていない検出されたページ、フォームフィールド、XForm、アノテーションのコレクションを含むオブジェクトです。 |
| Message | string |
結果を説明するテキストメッセージです。 |
| Coverage | SignaturesCoverage |
署名のカバレッジレベル: Undefined、EntirelySigned、PartiallySigned。 |
UnsignedContentAbsorber.UnsignedContentデジタル署名で カバーされていない PDF ドキュメント要素すべてを保持するコンテナです。
このクラスは Result 内で使用され、検出されたオブジェクトへの便利なアクセスを提供します。
| Property | Type | Description |
|---|---|---|
| Pages | List<Page> |
署名でカバーされていない(または署名後に変更された)ページのリストです。ページが変更済みと見なされた場合、その XForm はチェックされず、XForm リストには表示されません。 |
| Forms | List<WidgetAnnotation> |
署名なしで追加または変更されたフォームフィールド(テキストフィールド、チェックボックス等)のリストです。 |
| XForms | Dictionary<int, XForm> |
キーがページ番号、値が署名後に変更された XForm オブジェクトである辞書です。 |
| Annotations | Dictionary<int, Annotation> |
キーがページ番号、値が署名なしで変更されたアノテーションである辞書です。 |
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.