Ekstrak Informasi Gambar dan Tanda Tangan

Potongan kode berikut juga bekerja dengan pustaka Aspose.PDF.Drawing.

Mengekstrak Gambar dari Bidang Tanda Tangan

Aspose.PDF for .NET mendukung fitur untuk menandatangani file PDF secara digital menggunakan kelas SignatureField dan saat menandatangani dokumen, Anda juga dapat menetapkan gambar untuk SignatureAppearance. Sekarang, API ini juga menyediakan kemampuan untuk mengekstrak informasi tanda tangan serta gambar yang terkait dengan bidang tanda tangan.

Untuk mengekstrak informasi tanda tangan, kami telah memperkenalkan metode ExtractImage ke kelas SignatureField. Silakan lihat potongan kode berikut yang menunjukkan langkah-langkah untuk mengekstrak gambar dari objek 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);
                }
            }
        }
    }
}

Ganti Gambar Tanda Tangan

Terkadang Anda mungkin memiliki kebutuhan untuk hanya mengganti gambar dari bidang tanda tangan yang sudah ada di dalam file PDF. Untuk memenuhi kebutuhan ini, pertama-tama, kita perlu mencari bidang formulir di dalam file PDF, mengidentifikasi bidang Tanda Tangan, mendapatkan dimensi (dimensi persegi panjang) dari bidang tanda tangan dan kemudian menempelkan gambar di atas dimensi yang sama.

Ekstrak Informasi Tanda Tangan

Aspose.PDF for .NET mendukung fitur untuk menandatangani file PDF secara digital menggunakan kelas SignatureField. Saat ini, kita juga dapat menentukan keabsahan sertifikat tetapi kita tidak dapat mengekstrak seluruh sertifikat. Informasi yang dapat diekstrak adalah kunci publik, sidik jari, penerbit, dll.

Untuk mengekstrak informasi tanda tangan, kami telah memperkenalkan metode ExtractCertificate ke kelas SignatureField. Silakan lihat potongan kode berikut yang menunjukkan langkah-langkah untuk mengekstrak sertifikat dari objek 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);
                }
            }
        }
    }
}

Anda dapat mendapatkan informasi tentang algoritma tanda tangan dokumen.

// 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);
            }
        }
    }
}

Contoh output untuk contoh di atas:

Sha256
Rsa
Pkcs7
Signature1

Memeriksa tanda tangan untuk kompromi

Anda dapat menggunakan kelas SignaturesCompromiseDetector untuk memverifikasi tanda tangan digital untuk kompromi. Panggil metode Check() untuk memeriksa tanda tangan dokumen. Jika tidak ada kompromi tanda tangan yang terdeteksi, metode ini akan mengembalikan true. Jika metode ini mengembalikan false, Anda dapat memeriksa apakah tanda tangan yang dikompromikan menggunakan properti HasCompromisedSignatures dan mengambil daftar tanda tangan yang dikompromikan melalui properti CompromisedSignatures.

Untuk memverifikasi apakah tanda tangan yang ada mencakup seluruh dokumen, gunakan properti SignaturesCoverage. Properti ini dapat memiliki nilai berikut:

  • Undefined – jika salah satu tanda tangan secara eksplisit dikompromikan atau pemeriksaan cakupan gagal.
  • EntirelySigned – jika tanda tangan mencakup seluruh dokumen.
  • PartiallySigned – jika tanda tangan tidak mencakup seluruh dokumen dan ada konten yang tidak ditandatangani.