Agregar Firma en Archivo PDF
Agregar Firma Digital en un Archivo PDF
PdfFileSignature class permite agregar firma en un archivo PDF. Necesitas crear un objeto de la clase PdfFileSignature usando archivos PDF de entrada y salida. También necesitas crear un objeto Rectangle en el cual deseas agregar la firma y para establecer la apariencia puedes especificar una imagen usando la propiedad SignatureAppearance del objeto PdfFileSignature. Aspose.Pdf.Facades también proporciona diferentes tipos de firmas como PKCS#1, PKCS#7 y PKCS#7Detached. Para crear una firma de un tipo específico, necesitas crear un objeto de la clase particular como PKCS1, PKCS7 o PKCS7Detached usando el archivo de certificado y la contraseña.
Una vez que se crea el objeto de un tipo de firma particular, puedes usar el método Sign de la clase PdfFileSignature para firmar el PDF y pasar el objeto de firma particular a esta clase. Puedes especificar otros atributos para este método. Finalmente, necesitas guardar el PDF firmado usando el método Save de la clase PdfFileSignature. El siguiente fragmento de código te muestra cómo agregar una firma en un archivo PDF.
public static void AddPdfFileSignature()
{
PdfFileSignature pdfSign = new PdfFileSignature();
pdfSign.BindPdf(_dataDir + "sample01.pdf");
// Crear un rectángulo para la ubicación de la firma
System.Drawing.Rectangle rect = new System.Drawing.Rectangle(10, 10, 300, 50);
// Establecer apariencia de la firma
pdfSign.SignatureAppearance = _dataDir + "aspose-logo.png";
// Crear cualquiera de los tres tipos de firma
PKCS1 signature = new PKCS1(_dataDir + "test01.pfx", "Aspose2021"); // PKCS#1
pdfSign.Sign(1, "Soy el autor del documento", "test01@aspose-pdf-demo.local", "Aspose Pdf Demo, Australia", true, rect, signature);
// Guardar el archivo PDF de salida
pdfSign.Save(_dataDir + "DigitallySign.pdf");
}
El siguiente ejemplo de código nos muestra la capacidad de firmar un documento con dos firmas. En nuestro ejemplo, colocamos la primera firma en la primera página y la segunda en la segunda página. Puedes especificar las páginas que necesitas.
public static void AddTwoSignature()
{
PdfFileSignature pdfSign = new PdfFileSignature();
// Firmar con la 1ª firma
pdfSign.BindPdf(_dataDir + "sample01.pdf");
// Crear un rectángulo para la ubicación de la 1ª firma
System.Drawing.Rectangle rect1 = new System.Drawing.Rectangle(10, 10, 300, 50);
// Crear el objeto de la 1ª firma
PKCS1 signature1 = new PKCS1(_dataDir + "test01.pfx", "Aspose2021"); // PKCS#1
pdfSign.Sign(1, "Soy el autor del documento", "test@aspose-pdf-demo.local", "Aspose Pdf Demo, Australia", true, rect1, signature1);
pdfSign.Save(_dataDir + "DigitallySign.pdf");
// Firmar con la 2ª firma
pdfSign.BindPdf(_dataDir + "DigitallySign.pdf");
// Crear un rectángulo para la ubicación de la 2ª firma
System.Drawing.Rectangle rect2 = new System.Drawing.Rectangle(10, 10, 300, 50);
// Crear el objeto de la 2ª firma
PKCS1 signature2 = new PKCS1(_dataDir + "test02.pfx", "Aspose2021"); // PKCS#1
pdfSign.Sign(2, "Soy el revisor del documento", "test02@aspose-pdf-demo.local", "Aspose Pdf Demo, Australia", true, rect2, signature2);
// Guardar el archivo PDF de salida
pdfSign.Save(_dataDir + "DigitallySign.pdf");
}
For a document with forms or acroforms that needs to be signed, see the following example. You need to create an object of PdfFileSignature class using input and output PDF files. Use BindPdf for binding. Create a signature with the ability to add the required properties. In our example they are ‘Reason’ and ‘CustomAppearance’.
Para un documento con formularios o acroformularios que necesita ser firmado, vea el siguiente ejemplo. Necesita crear un objeto de la clase PdfFileSignature utilizando archivos PDF de entrada y salida. Use BindPdf para la vinculación. Cree una firma con la capacidad de agregar las propiedades requeridas. En nuestro ejemplo, son ‘Reason’ y ‘CustomAppearance’.
public static void AddPdfFileSignatureField()
{
PdfFileSignature pdfSign = new PdfFileSignature();
pdfSign.BindPdf(_dataDir + "sample02.pdf");
// Crear cualquiera de los tres tipos de firma
PKCS1 signature = new PKCS1(_dataDir + "test02.pfx", "Aspose2021")
{
Reason = "Firmar como Autor",
CustomAppearance = new SignatureCustomAppearance
{
FontSize = 6,
FontFamilyName = "Calibri"
}
}; // PKCS#1
pdfSign.Sign("Signature1", signature);
// Guardar el archivo PDF de salida
pdfSign.Save(_dataDir + "DigitallySign.pdf");
}
Si nuestro documento tiene dos campos, el algoritmo para firmarlo es similar al primer ejemplo.
public static void AddPdfFileSignatureField2()
{
PdfFileSignature pdfSign = new PdfFileSignature();
pdfSign.BindPdf(_dataDir + "sample03.pdf");
// Crear cualquiera de los tres tipos de firma
PKCS1 signature1 = new PKCS1(_dataDir + "test01.pfx", "Aspose2021")
{
Reason = "Firmar como Autor",
CustomAppearance = new SignatureCustomAppearance
{
FontSize = 6
}
}; // PKCS#1
pdfSign.Sign("Signature1", signature1);
// Guardar el archivo PDF de salida
pdfSign.Save(_dataDir + "DigitallySign.pdf");
pdfSign.BindPdf(_dataDir + "DigitallySign.pdf");
// Crear cualquiera de los tres tipos de firma
PKCS1 signature2 = new PKCS1(_dataDir + "test02.pfx", "Aspose2021")
{
Reason = "Firmar como Revisor",
CustomAppearance = new SignatureCustomAppearance
{
FontSize = 6
}
}; // PKCS#1
pdfSign.Sign("Signature2", signature2);
// Guardar el archivo PDF de salida
pdfSign.Save(_dataDir + "DigitallySign.pdf");
}