Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
O trecho de código a seguir também funciona com a biblioteca Aspose.PDF.Drawing.
Aspose.PDF for .NET oferece o recurso de assinar digitalmente arquivos PDF usando a classe SignatureField e, ao assinar o documento, você também pode definir uma imagem para SignatureAppearance. Agora, esta API também fornece a capacidade de extrair informações da assinatura, bem como a imagem associada ao campo de assinatura.
Para extrair informações da assinatura, introduzimos o método ExtractImage na classe SignatureField. Veja o trecho de código a seguir que demonstra as etapas para extrair uma imagem do objeto 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 oferece o recurso de assinar digitalmente arquivos PDF usando a classe SignatureField. Atualmente, também podemos determinar a validade do certificado, mas não podemos extrair o certificado completo. As informações que podem ser extraídas são a chave pública, impressão digital, emissor, etc.
Para extrair informações da assinatura, introduzimos o método ExtractCertificate na classe SignatureField. Veja o trecho de código a seguir que demonstra as etapas para extrair o certificado do objeto 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);
}
}
}
}
}
Você pode usar o método PdfFileSignature.TryExtractCertificate para extrair um fluxo de certificado ou um objeto X509Certificate2.
Você pode obter informações sobre os algoritmos de assinatura do documento.
// 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);
}
}
}
}
Saída de exemplo para o exemplo acima:
Sha256
Rsa
Pkcs7
Signature1
Você pode usar a classe SignaturesCompromiseDetector para verificar se assinaturas digitais foram comprometidas. Chame o método Check() para verificar as assinaturas do documento. Se nenhum comprometimento de assinatura for detectado, o método retornará true. Se o método retornar false, você pode verificar se há assinaturas comprometidas usando a propriedade HasCompromisedSignatures e obter a lista de assinaturas comprometidas através da propriedade CompromisedSignatures.
Para verificar se as assinaturas existentes cobrem todo o documento, use a propriedade SignaturesCoverage. Esta propriedade pode ter os seguintes valores:
Aqui está a tradução com preservação do markdown:
Você pode extrair conteúdo não assinado de um documento usando a classe UnsignedContentAbsorber.
Se um documento assinado foi modificado não incrementalmente, os objetos na estrutura PDF podem ser reorganizados, tornando impossível determinar quais partes foram originalmente assinadas e quais não foram.
Nesses casos, o absorvedor indicará que o documento foi modificado não‑incrementalmente.
Se o documento foi modificado incrementalmente, podemos detectar o que mudou. Infelizmente, como os fluxos de conteúdo das páginas são comprimidos, é impossível determinar qual parte exata do texto de uma página foi alterada, portanto o absorvedor marcará a página inteira como modificada.
Outras alterações que são rastreadas:
Se anotações, campos ou XForms forem modificados de forma que impacte sua aparência, o absorvedor também relatará essas alterações.
O resultado do processamento é representado pela classe UnsignedContentAbsorber.Result.
UnsignedContentAbsorber.ResultRepresenta o resultado da tentativa de obter conteúdo não assinado de um documento PDF.
| Propriedade | Tipo | Descrição |
|---|---|---|
| Success | bool |
true se a operação foi concluída com sucesso e o conteúdo não assinado foi identificado (ou se o documento não possui assinaturas). |
| UnsignedContent | UnsignedContentAbsorber.UnsignedContent |
Um objeto contendo coleções de páginas detectadas, campos de formulário, XForms e anotações que não estão cobertos pela assinatura. |
| Message | string |
Uma mensagem textual descrevendo o resultado. |
| Coverage | SignaturesCoverage |
O nível de cobertura da assinatura: Undefined, EntirelySigned, PartiallySigned. |
UnsignedContentAbsorber.UnsignedContentUm contêiner que contém todos os elementos do documento PDF não cobertos pela assinatura digital.
Esta classe é usada dentro de Result e fornece acesso conveniente aos objetos detectados.
| Propriedade | Tipo | Descrição |
|---|---|---|
| Pages | List<Page> |
Uma lista de páginas cujo conteúdo não está coberto pela assinatura (ou foi modificado após a assinatura). Se uma página for considerada modificada, seus XForms não são verificados e não aparecem na lista de XForms. |
| Forms | List<WidgetAnnotation> |
Uma lista de campos de formulário (campos de texto, caixas de seleção, etc.) que foram adicionados ou modificados sem uma assinatura. |
| XForms | Dictionary<int, XForm> |
Um dicionário onde a chave é o número da página e o valor é um objeto XForm que foi modificado após a assinatura. |
| Annotations | Dictionary<int, Annotation> |
Um dicionário de anotações, onde a chave é o número da página e o valor é uma anotação modificada sem assinatura. |
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.