画像と署名情報を抽出
Contents
[
Hide
]
以下のコードスニペットは、Aspose.PDF.Drawing ライブラリでも動作します。
署名フィールドから画像を抽出する
Aspose.PDF for .NET は、SignatureField クラスを使用して PDF ファイルにデジタル署名する機能をサポートしており、ドキュメントに署名する際に SignatureAppearance 用の画像も設定できます。現在、この API は署名情報と署名フィールドに関連付けられた画像を抽出する機能も提供しています。
署名情報を抽出するために、SignatureField クラスに ExtractImage メソッドを導入しました。次のコードスニペットをご覧ください。これは、SignatureField オブジェクトから画像を抽出する手順を示しています:
// 完全な例とデータファイルについては、https://github.com/aspose-pdf/Aspose.PDF-for-.NET をご覧ください。
// ドキュメントディレクトリへのパス。
string dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();
string input = dataDir+ @"ExtractingImage.pdf";
using (Document pdfDocument = new Document(input))
{
foreach (Field field in pdfDocument.Form)
{
SignatureField sf = field as SignatureField;
if (sf != null)
{
string outFile = dataDir+ @"output_out.jpg";
using (Stream imageStream = sf.ExtractImage())
{
if (imageStream != null)
{
using (System.Drawing.Image image = Bitmap.FromStream(imageStream))
{
image.Save(outFile, System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
}
}
}
}
署名画像の置換
PDFファイル内に既に存在する署名フィールドの画像のみを置き換える必要がある場合があります。この要件を達成するために、まずPDFファイル内のフォームフィールドを検索し、署名フィールドを特定し、署名フィールドの寸法(矩形の寸法)を取得してから、同じ寸法に画像をスタンプします。
署名情報の抽出
Aspose.PDF for .NETは、SignatureFieldクラスを使用してPDFファイルにデジタル署名する機能をサポートしています。現在、証明書の有効性を判断することもできますが、証明書全体を抽出することはできません。抽出可能な情報には、公開鍵、サムプリント、発行者などがあります。
署名情報を抽出するために、SignatureField クラスに ExtractCertificate メソッドを導入しました。 署名情報を抽出するために、SignatureField クラスに ExtractCertificate メソッドを導入しました。
// 完全な例とデータファイルについては、https://github.com/aspose-pdf/Aspose.PDF-for-.NET をご覧ください。
// ドキュメントディレクトリへのパス。
string dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();
string input = dataDir + "ExtractSignatureInfo.pdf";
using (Document pdfDocument = new Document(input))
{
foreach (Field field in pdfDocument.Form)
{
SignatureField sf = field as SignatureField;
if (sf != null)
{
Stream cerStream = sf.ExtractCertificate();
if (cerStream != null)
{
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);
}
}
}
}
}
}