Firmar digitalmente archivos PDF

Los documentos PDF se encuentran entre los formatos de archivo más utilizados para compartir información. Suelen tener un valor confidencial y legal, como un contrato. Para garantizar la integridad de los archivos y evitar falsificaciones, añadimos firmas digitales. También garantizamos que un documento no haya sido modificado por alguien que no sea su autor y verificamos que el autor es quien esperamos y no otra persona.

Una firma digital en un PDF es el equivalente a una firma con tinta en un documento en papel, pero es mucho más segura. Esta información se coloca dentro de un documento y los lectores populares de PDF pueden comprobar que el documento no ha sido modificado por una persona desconocida. En este artículo, vamos a analizar los detalles sobre cómo firmar digitalmente documentos PDF en línea en PHP.

Acceda a la API mediante el comando cURL

Nuestras API están diseñadas según los principios de la arquitectura REST, por lo que también se puede acceder a ellas mediante comandos cURL. Tenga en cuenta que nuestras API solo son accesibles para personas autorizadas, por lo que antes de acceder a ellas, primero debe visitar el panel de control de Aspose.Cloud y, si tiene una cuenta de GitHub o Google, simplemente regístrese. De lo contrario, haga clic en el botón Crear una nueva cuenta y proporcione la información requerida. Ahora inicie sesión en el panel de control con credenciales y expanda la sección Aplicaciones desde el panel de control y desplácese hacia abajo hasta la sección Credenciales del cliente para ver los detalles de ID de cliente y Secreto de cliente.

Ahora, el siguiente paso es generar un token web JSON (JWT) para que las API sean accesibles a través del símbolo del sistema. El mismo token JWT se utiliza para acceder a las API a través de comandos cURL.

curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4&client_secret=d87269aade6a46cdc295b711e26809af" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"

Acceda a la API a través del SDK de PHP

Para facilitar a nuestros clientes PHP que desean procesar archivos PDF de forma programada a través de código PHP, hemos desarrollado Aspose.PDF Cloud SDK para PHP, que es un contenedor de la API de Aspose.PDF Cloud. Podemos usar el mismo SDK para procesar firmas digitales y realizar operaciones relacionadas. El SDK está disponible para descargar desde Composer y GitHub.

Ahora vamos a analizar los pasos para instalar Aspose.PDF Cloud SDK para PHP a través de Composer. Ya sabemos que se recomienda usar Composer con el SDK y para administrar las dependencias de su proyecto. Por lo tanto, una vez que hayamos configurado Composer en su sistema, intente usar el siguiente comando para instalar Aspose.PDF Cloud SDK para PHP.

composer require aspose/pdf-sdk-php

Leer campos de firma

La API le permite leer las propiedades asociadas con los campos de firma que ya están disponibles en los documentos PDF. Para leer el campo de firma, tiene dos opciones.

Para leer los campos de firma de una página en particular del documento, intente usar el siguiente comando cURL. Tenga en cuenta que en el siguiente comando, BlankWithSignature.pdf es el archivo PDF de origen:

curl -X GET "https://api.aspose.cloud/v3.0/pdf/BlankWithSignature.pdf/page/1/fields/signature" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>"

Ahora, para leer las propiedades asociadas con el campo Firma específico del documento, intente utilizar el siguiente comando donde proporcionamos el nombre de un campo de firma en particular como argumento.

curl -X GET "https://api.aspose.cloud/v3.0/pdf/BlankWithSignature.pdf/fields/signature/Signature1" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>"

Los detalles y pasos que se detallan a continuación explican cómo podemos recuperar los detalles del campo de firma de ciertas páginas de documentos PDF usando el código PHP.

protected $pdfApi;
// Obtenga la clave de la aplicación y el SID de la aplicación desde https://dashboard.aspose.cloud/
$appSid = '';
$appKey = '';
$host = 'https://api.aspose.cloud/v3.0';

// objeto de configuración
$this->config = new Configuration();
$this->config->setAppKey($appKey);
$this->config->setAppSid($appSid);
$this->config->setHost($host);

// crear una instancia de PdfApi
$this->pdfApi = new PdfApi(null, $this->config);

// nombre del documento PDF de entrada
$name = 'BlankWithSignature.pdf';
// Sube el archivo al almacenamiento en la nube 
$this->uploadFile($name);

// número de página en el documento
$pageNumber = 1;

// Llamar al método API para recuperar los campos de firma del documento
$response = $this->pdfApi->getPageSignatureFields($name, $pageNumber, null, $this->tempFolder);
$this->assertEquals(200, $response->getCode());

El código dado muestra cómo se puede recuperar la información de ciertos campos de firma dentro del archivo PDF.

protected $pdfApi;
// Obtenga la clave de la aplicación y el SID de la aplicación desde https://dashboard.asposecloud/
$appSid = '';
$appKey = '';
$host = 'https://api.aspose.cloud/v3.0';

// objeto de configuración
$this->config = new Configuration();
$this->config->setAppKey($appKey);
$this->config->setAppSid($appSid);
$this->config->setHost($host);

// crear una instancia de PdfApi
$this->pdfApi = new PdfApi(null, $this->config);

// nombre del documento PDF de entrada
$name = 'BlankWithSignature.pdf';
// subir PDF al almacenamiento en la nube
$this->uploadFile($name);

// campo de firma para recuperar información
$fieldName = 'Signature1';

// Llamar a la API para recuperar los detalles del campo de firma
$response = $this->pdfApi->getSignatureField($name, $fieldName, null, $this->tempFolder);
$this->assertEquals(200, $response->getCode());

Agregar campos de firma usando PHP

Aspose.PDF Cloud SDK para PHP también ofrece la posibilidad de agregar campos de firma a un documento PDF. El fragmento de código que se muestra a continuación le permite agregar el campo de firma al archivo PDF.

Firmar el archivo PDF
 protected $pdfApi;
// Obtenga la clave de la aplicación y el SID de la aplicación desde https://dashboard.aspose.cloud/
$appSid = '';
$appKey = '';
$host = 'https://api.aspose.cloud/v3.0';

// objeto de configuración
$this->config = new Configuration();
$this->config->setAppKey($appKey);
$this->config->setAppSid($appSid);
$this->config->setHost($host);

// crear una instancia de PdfApi
$this->pdfApi = new PdfApi(null, $this->config);

// nombre del documento PDF de entrada
$name = 'BlankWithSignature.pdf';

// subir archivo al almacenamiento en la nube
$this->uploadFile($name);

$signatureFileName = '33226.p12';
$this->uploadFile($signatureFileName);

$folder = $this->tempFolder;

$signature = new Aspose\PDF\Model\Signature();
$signature->setAuthority('Nayyer Shahbaz');
$signature->setContact('nayyer.shahbaz@aspose.com');
$signature->setDate('08/01/2012 12:15:00.000 PM');
$signature->setFormFieldName('Signature1');
$signature->setLocation('Australia');
$signature->setPassword('sIikZSmz');
$signature->setRectangle(new Aspose\PDF\Model\Rectangle(['llx' => 100, 'lly' => 100, 'urx' => 0, 'ury' => 0]));
$signature->setSignaturePath($folder . '/' . $signatureFileName);
$signature->setSignatureType(Aspose\PDF\Model\SignatureType::PKCS7);
$signature->setVisible(true);
$signature->setShowProperties(false);

$field = new Aspose\PDF\Model\SignatureField();
$field->setPartialName('sign1');
// Índice de la página donde se debe agregar el campo de firma
$field->setPageIndex(1);
$field->setSignature($signature);
// Especifique la región rectangular para el campo Firma
$field->setRect(new Aspose\PDF\Model\Rectangle(['llx' => 100, 'lly' => 100, 'urx' => 160, 'ury' => 140]));

// Llamar a la API para agregar el campo de firma
$response = $this->pdfApi->postSignatureField($name, $field, null, $this->tempFolder);
$this->assertEquals(200, $response->getCode());

Conclusión

En este blog, analizamos los conceptos de trabajo con firmas digitales en documentos PDF. Aprendimos a recuperar la información relacionada con los campos de firma existentes, así como a agregar nuevos campos de firma en el documento. Tenga en cuenta que Aspose.PDF Cloud SDK para PHP es de código abierto y el código fuente completo se puede descargar desde el repositorio GitHub.

Intente utilizar nuestras API y, en caso de que surja algún problema, no dude en contactarnos a través de los [foros de atención al cliente] gratuitos 12.