Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Le fragment de code suivant fonctionne également avec la bibliothèque Aspose.PDF.Drawing.
Aspose.PDF for .NET prend en charge la fonctionnalité de signature numérique des fichiers PDF à l’aide de la classe SignatureField et, lors de la signature du document, vous pouvez également définir une image pour SignatureAppearance. Cette API offre désormais la capacité d’extraire les informations de signature ainsi que l’image associée au champ de signature.
Pour extraire les informations de signature, nous avons introduit la méthode ExtractImage dans la classe SignatureField. Veuillez consulter le fragment de code suivant qui montre les étapes pour extraire une image depuis l’objet 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 prend en charge la fonctionnalité de signature numérique des fichiers PDF à l’aide de la classe SignatureField. Actuellement, nous pouvons également déterminer la validité du certificat mais nous ne pouvons pas extraire le certificat complet. Les informations pouvant être extraites sont une clé publique, une empreinte, l’émetteur, etc.
Pour extraire les informations de signature, nous avons introduit la méthode ExtractCertificate dans la classe SignatureField. Veuillez consulter le fragment de code suivant qui montre les étapes pour extraire le certificat depuis l’objet 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);
}
}
}
}
}
Vous pouvez utiliser la méthode PdfFileSignature.TryExtractCertificate pour extraire un flux de certificat ou un objet X509Certificate2.
Vous pouvez obtenir des informations sur les algorithmes de signature du document.
// 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);
}
}
}
}
Exemple de sortie pour l’exemple ci‑dessus :
Sha256
Rsa
Pkcs7
Signature1
Vous pouvez utiliser la classe SignaturesCompromiseDetector pour vérifier les signatures numériques en cas de compromission.
Appelez la méthode Check() pour vérifier les signatures du document.
Si aucune compromission de signature n’est détectée, la méthode renverra true.
Si la méthode renvoie false, vous pouvez vérifier si des signatures compromises sont présentes à l’aide de la propriété HasCompromisedSignatures et récupérer la liste des signatures compromises via la propriété CompromisedSignatures.
Pour vérifier si les signatures existantes couvrent l’intégralité du document, utilisez la propriété SignaturesCoverage.
Cette propriété peut prendre les valeurs suivantes :
Voici la traduction avec conservation du markdown :
Vous pouvez extraire le contenu non signé d’un document à l’aide de la classe UnsignedContentAbsorber.
Si un document signé a été modifié de manière non incrémentale, les objets dans la structure PDF peuvent être réarrangés, rendant impossible la détermination des parties initialement signées et de celles qui ne le sont pas. Dans ce cas, l’absorbeur indiquera que le document a été modifié de façon non incrémentale.
Si le document a été modifié de façon incrémentale, nous pouvons détecter ce qui a changé. Malheureusement, comme les flux de contenu des pages sont compressés, il est impossible de déterminer quelle portion exacte du texte d’une page a été modifiée, ainsi l’absorbeur marquera toute la page comme modifiée.
Autres changements suivis :
Si les annotations, champs ou XForms sont modifiés d’une manière qui affecte leur apparence, l’absorbeur signalera également ces changements.
Le résultat du traitement est représenté par la classe UnsignedContentAbsorber.Result.
UnsignedContentAbsorber.ResultReprésente le résultat de la tentative d’obtention du contenu non signé d’un document PDF.
| Propriété | Type | Description |
|---|---|---|
| Success | bool |
true si l’opération s’est terminée avec succès et que le contenu non signé a été identifié (ou si le document ne possède aucune signature). |
| UnsignedContent | UnsignedContentAbsorber.UnsignedContent |
Un objet contenant les collections de pages, champs de formulaire, XForms et annotations détectés qui ne sont pas couverts par la signature. |
| Message | string |
Un message texte décrivant le résultat. |
| Coverage | SignaturesCoverage |
Le niveau de couverture de la signature : Undefined, EntirelySigned, PartiallySigned. |
UnsignedContentAbsorber.UnsignedContentConteneur regroupant tous les éléments du document PDF non couverts par la signature numérique.
Cette classe est utilisée à l’intérieur de Result et fournit un accès pratique aux objets détectés.
| Propriété | Type | Description |
|---|---|---|
| Pages | List<Page> |
Liste des pages dont le contenu n’est pas couvert par la signature (ou qui ont été modifiées après la signature). Si une page est considérée comme modifiée, ses XForms ne sont pas vérifiés et n’apparaissent pas dans la liste des XForms. |
| Forms | List<WidgetAnnotation> |
Liste des champs de formulaire (zones de texte, cases à cocher, etc.) qui ont été ajoutés ou modifiés sans signature. |
| XForms | Dictionary<int, XForm> |
Dictionnaire où la clé est le numéro de page et la valeur est un objet XForm qui a été modifié après la signature. |
| Annotations | Dictionary<int, Annotation> |
Dictionnaire des annotations, où la clé est le numéro de page et la valeur est une annotation modifiée sans signature. |
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.