Signer numériquement des fichiers PDF

Les documents PDF font partie des formats de fichiers les plus utilisés pour le partage d’informations. Ils ont généralement une valeur confidentielle et légale, comme un contrat. Afin de garantir l’intégrité des fichiers et d’éviter toute contrefaçon, on y ajoute des signatures numériques. Cela permet également de s’assurer qu’un document n’a pas été modifié par une autre personne que son auteur et de vérifier que l’auteur est bien celui que l’on attend et non quelqu’un d’autre.

Une signature numérique dans un PDF est l’équivalent d’une signature manuscrite sur un document papier, mais elle est beaucoup plus sécurisée. Cette information est placée à l’intérieur d’un document et les lecteurs de PDF peuvent vérifier que le document n’a pas été modifié par une personne inconnue. Dans cet article, nous allons discuter des détails sur la façon de signer numériquement des documents PDF en ligne en PHP.

Accéder à l’API à l’aide de la commande cURL

Nos API sont construites selon les principes de l’architecture REST, elles sont donc également accessibles via des commandes cURL. Veuillez noter que nos API ne sont accessibles qu’aux personnes autorisées. Par conséquent, avant d’accéder aux API, vous devez d’abord visiter le tableau de bord Aspose.Cloud et si vous avez un compte GitHub ou Google, inscrivez-vous simplement. Sinon, cliquez sur le bouton Créer un nouveau compte et fournissez les informations requises. Connectez-vous maintenant au tableau de bord à l’aide des informations d’identification et développez la section Applications du tableau de bord et faites défiler vers le bas jusqu’à la section Informations d’identification du client pour voir les détails de l’ID client et du secret client.

L’étape suivante consiste à générer un jeton Web JSON (JWT) afin que les API soient accessibles via l’invite de commande. Le même jeton JWT est utilisé pour accéder aux API via les commandes 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"

Accéder à l’API via PHP SDK

Afin de faciliter la tâche de nos clients PHP qui souhaitent traiter des fichiers PDF par programmation via du code PHP, nous avons développé Aspose.PDF Cloud SDK pour PHP qui est un wrapper autour de l’API Aspose.PDF Cloud. Nous pouvons utiliser le même SDK pour traiter les signatures numériques et effectuer les opérations associées. Le SDK est disponible en téléchargement sur Composer et GitHub.

Nous allons maintenant aborder les étapes à suivre pour installer Aspose.PDF Cloud SDK pour PHP via Composer. Nous savons déjà que Composer est recommandé pour une utilisation avec le SDK et pour gérer les dépendances de votre projet. Une fois que nous avons configuré Composer sur votre système, essayez d’utiliser la commande suivante pour installer Aspose.PDF Cloud SDK pour PHP.

composer require aspose/pdf-sdk-php

Lire les champs de signature

L’API vous permet de lire les propriétés associées aux champs de signature déjà présents dans les documents PDF. Pour lire le champ de signature, vous avez deux options.

  • Lisez les champs de signature de la page particulière du document à l’aide de l’API GetPageSignatureFields
  • Lire le champ de signature du document par nom à l’aide de l’API GetSignatureField

Pour lire les champs de signature d’une page particulière du document, essayez d’utiliser la commande cURL suivante. Veuillez noter que dans la commande suivante, BlankWithSignature.pdf est le fichier PDF source :

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>"

Maintenant, pour lire les propriétés associées au champ de signature spécifique sur le document, essayez d’utiliser la commande suivante où nous fournissons le nom d’un champ de signature particulier comme argument.

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

Les détails et les étapes ci-dessous expliquent comment nous pouvons récupérer les détails du champ de signature à partir de certaines pages de documents PDF à l’aide du code PHP.

protected $pdfApi;
// Obtenez la clé d'application et le SID de l'application à partir de https://dashboard.aspose.cloud/
$appSid = '';
$appKey = '';
$host = 'https://api.aspose.cloud/v3.0';

// objet de configuration
$this->config = new Configuration();
$this->config->setAppKey($appKey);
$this->config->setAppSid($appSid);
$this->config->setHost($host);

// créer une instance PdfApi
$this->pdfApi = new PdfApi(null, $this->config);

// nom du document PDF d'entrée
$name = 'BlankWithSignature.pdf';
// télécharger le fichier sur le stockage cloud 
$this->uploadFile($name);

// numéro de page dans le document
$pageNumber = 1;

// appeler la méthode API pour récupérer les champs de signature du document
$response = $this->pdfApi->getPageSignatureFields($name, $pageNumber, null, $this->tempFolder);
$this->assertEquals(200, $response->getCode());

Le code donné montre comment les informations de certains champs de signature dans le fichier PDF peuvent être récupérées.

protected $pdfApi;
// Obtenez la clé d'application et le SID de l'application à partir de https://dashboard.aspose.cloud/
$appSid = '';
$appKey = '';
$host = 'https://api.aspose.cloud/v3.0';

// objet de configuration
$this->config = new Configuration();
$this->config->setAppKey($appKey);
$this->config->setAppSid($appSid);
$this->config->setHost($host);

// créer une instance PdfApi
$this->pdfApi = new PdfApi(null, $this->config);

// nom du document PDF d'entrée
$name = 'BlankWithSignature.pdf';
// télécharger un PDF sur un stockage cloud
$this->uploadFile($name);

// champ de signature pour récupérer des informations
$fieldName = 'Signature1';

// appeler l'API pour récupérer les détails du champ de signature
$response = $this->pdfApi->getSignatureField($name, $fieldName, null, $this->tempFolder);
$this->assertEquals(200, $response->getCode());

Ajouter des champs de signature à l’aide de PHP

Aspose.PDF Cloud SDK pour PHP offre également la possibilité d’ajouter des champs de signature au document PDF. L’extrait de code ci-dessous vous permet d’ajouter le champ de signature au fichier PDF.

Signer le fichier PDF
 protected $pdfApi;
// Obtenez la clé d'application et le SID de l'application à partir de https://dashboard.aspose.cloud/
$appSid = '';
$appKey = '';
$host = 'https://api.aspose.cloud/v3.0';

// objet de configuration
$this->config = new Configuration();
$this->config->setAppKey($appKey);
$this->config->setAppSid($appSid);
$this->config->setHost($host);

// créer une instance PdfApi
$this->pdfApi = new PdfApi(null, $this->config);

// nom du document PDF d'entrée
$name = 'BlankWithSignature.pdf';

// télécharger le fichier vers le stockage cloud
$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');
// index de page où le champ de signature doit être ajouté
$field->setPageIndex(1);
$field->setSignature($signature);
// spécifier la région rectangulaire pour le champ Signature
$field->setRect(new Aspose\PDF\Model\Rectangle(['llx' => 100, 'lly' => 100, 'urx' => 160, 'ury' => 140]));

// appeler l'API pour ajouter un champ de signature
$response = $this->pdfApi->postSignatureField($name, $field, null, $this->tempFolder);
$this->assertEquals(200, $response->getCode());

Conclusion

Dans ce blog, nous avons abordé les concepts de travail avec les signatures numériques dans les documents PDF. Nous avons appris comment récupérer les informations liées aux champs de signature existants ainsi que comment ajouter de nouveaux champs de signature dans le document. Veuillez noter qu’Aspose.PDF Cloud SDK pour PHP est open source et que le code source complet peut être téléchargé à partir du référentiel GitHub.

Veuillez essayer d’utiliser nos API et si vous rencontrez un problème, n’hésitez pas à nous contacter via les [forums d’assistance client] gratuits12.