La modification d’une signature numérique après qu’un PDF a été signé est une exigence fréquente, notamment lorsque les règles métier changent ou lorsqu’une signature doit être repositionnée. GroupDocs.Signature Cloud SDK for .NET fournit une bibliothèque robuste qui vous permet de modifier programmatiquement les signatures dans les fichiers PDF signés sans compromettre la validité du document. Ce guide vous accompagne pas à pas dans une implémentation complète, couvrant tout, de la configuration au téléchargement du fichier mis à jour, afin que vous puissiez intégrer la modification de signature dans vos applications C# en toute confiance.

Exemple complet de code : Modifier les signatures dans un PDF signé

L’exemple suivant montre comment modifier les signatures dans un PDF signé en utilisant le GroupDocs.Signature Cloud SDK for .NET.

using System;
using System.Collections.Generic;
using System.IO;
using GroupDocs.Signature.Cloud.Sdk.Api;
using GroupDocs.Signature.Cloud.Sdk.Client;
using GroupDocs.Signature.Cloud.Sdk.Model;
using GroupDocs.Signature.Cloud.Sdk.Model.Requests;

class Program
{
    static void Main()
    {
        // Configuration
        var config = new Configuration
        {
            ClientId = "YOUR_CLIENT_ID",
            ClientSecret = "YOUR_CLIENT_SECRET"
        };

// API instances
        var signatureApi = new SignatureApi(config);
        var storageApi = new StorageApi(config);

// File paths
        string inputFilePath = "input.pdf";
        string outputFilePath = "output.pdf";

// Ensure file exists in storage (upload if needed)
        if (!storageApi.ObjectExists(new ObjectExistsRequest(new StorageExist
        {
            Path = inputFilePath,
            StorageName = null
        })).Exists)
        {
            using (var fileStream = File.OpenRead(inputFilePath))
            {
                storageApi.UploadFile(new UploadFileRequest(new UploadFile
                {
                    Path = inputFilePath,
                    File = fileStream
                }));
            }
        }

// Get list of signatures in the document
        var fileInfo = new FileInfo
        {
            FilePath = inputFilePath,
            StorageName = null,
            Password = null
        };
        var getSignaturesRequest = new GetSignaturesRequest(new GetSignaturesOptions
        {
            FileInfo = fileInfo
        });
        var signaturesResponse = signatureApi.GetSignatures(getSignaturesRequest);
        if (signaturesResponse.Signatures == null || signaturesResponse.Signatures.Count == 0)
        {
            Console.WriteLine("No signatures found.");
            return;
        }

// Choose first signature to edit
        var signatureToEdit = signaturesResponse.Signatures[0];
        string signatureId = signatureToEdit.SignatureId;

// Prepare new options (example: change text signature)
        var textOptions = new SignTextOptions
        {
            // Keep existing properties, modify as needed
            Text = "Edited Signature Text",
            Left = signatureToEdit.Left + 10,
            Top = signatureToEdit.Top + 10,
            Width = signatureToEdit.Width,
            Height = signatureToEdit.Height,
            Font = new SignatureFont
            {
                FontFamily = "Arial",
                FontSize = 12,
                Bold = true,
                Italic = false,
                Underline = false,
                Color = "FF0000"
            },
            // Preserve other required fields
            SignatureId = signatureId,
            PageNumber = signatureToEdit.PageNumber,
            // Set output file path
            OutputFilePath = outputFilePath
        };

var updateSignatureRequest = new UpdateSignatureRequest(new UpdateSignatureOptions
        {
            FileInfo = fileInfo,
            SignatureId = signatureId,
            Options = textOptions
        });

var updateResponse = signatureApi.UpdateSignature(updateSignatureRequest);

// Download updated file
        var downloadRequest = new DownloadFileRequest(new DownloadFile
        {
            Path = outputFilePath,
            StorageName = null
        });
        using (var downloadStream = storageApi.DownloadFile(downloadRequest))
        using (var fileStream = File.Create(outputFilePath))
        {
            downloadStream.CopyTo(fileStream);
        }

Console.WriteLine("Signature edited and saved to " + outputFilePath);
    }
}

Remarque : Cet exemple de code démontre la fonctionnalité principale. Avant de l’utiliser dans votre projet, assurez-vous de mettre à jour tous les chemins de fichiers et les valeurs de configuration pour qu’ils correspondent à votre environnement réel, vérifiez que toutes les dépendances requises sont correctement installées et testez soigneusement dans votre environnement de développement. Si vous rencontrez des problèmes, veuillez consulter la documentation officielle ou contacter l’équipe de support pour obtenir de l’aide.

Commandes cURL pour la modification de signature via l’API REST

Voici un ensemble de commandes cURL qui effectuent la même opération de modification des signatures dans un PDF signé en utilisant l’API REST.

Tout d’abord, obtenez un jeton d’accès.

curl -X POST "https://api.groupdocs.cloud/v2.0/oauth2/token" \
     -H "Content-Type: application/json" \
     -d '{
           "grant_type":"client_credentials",
           "client_id":"YOUR_CLIENT_ID",
           "client_secret":"YOUR_CLIENT_SECRET"
         }'

Téléchargez le PDF source vers le stockage cloud.

curl -X PUT "https://api.groupdocs.cloud/v2.0/storage/file/input.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/octet-stream" \
     --data-binary "@input.pdf"

Mettez à jour la première signature (exemple modifiant une signature texte).

curl -X POST "https://api.groupdocs.cloud/v2.0/signature/update" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
           "fileInfo": {
               "filePath": "input.pdf"
           },
           "signatureId": "SIGNATURE_ID_FROM_GET",
           "options": {
               "text": "Edited Signature Text",
               "left": 120,
               "top": 150,
               "font": {
                   "fontFamily": "Arial",
                   "fontSize": 12,
                   "bold": true,
                   "color": "FF0000"
               },
               "outputFilePath": "output.pdf"
           }
         }'

Téléchargez le PDF mis à jour.

curl -X GET "https://api.groupdocs.cloud/v2.0/storage/file/output.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o output.pdf

Pour plus de détails, consultez la documentation officielle de l’API.

Comprendre la modification des signatures en C#

Voici une brève explication de la façon dont le code C# fourni réalise la modification des signatures dans le flux de travail des PDF signés.

  1. Configurer l’authentification - L’objet Configuration est rempli avec ClientId et ClientSecret. Cela établit une session sécurisée avec le service cloud.
var config = new Configuration { ClientId = "YOUR_CLIENT_ID", ClientSecret = "YOUR_CLIENT_SECRET" };
  1. Créer des instances d’API - SignatureApi et StorageApi sont instanciés en utilisant la configuration, ce qui donne accès aux points de terminaison liés aux signatures et au stockage.

    var signatureApi = new SignatureApi(config);
    var storageApi = new StorageApi(config);
    
  2. Télécharger si manquant - Le code vérifie si input.pdf existe dans le stockage cloud ; sinon, il télécharge le fichier en utilisant UploadFile. Cela garantit que les opérations suivantes disposent d’un document source.

    storageApi.UploadFile(new UploadFileRequest(new UploadFile { Path = inputFilePath, File = fileStream }));
    
  3. Récupérer les signatures existantes - GetSignatures récupère toutes les signatures dans le document. La première signature est sélectionnée pour la modification, et son SignatureId est stocké.

var signaturesResponse = signatureApi.GetSignatures(getSignaturesRequest);
var signatureToEdit = signaturesResponse.Signatures[0];
  1. Préparer les options mises à jour - Un nouvel objet SignTextOptions copie les propriétés existantes et modifie le texte, la position et la police. Les SignatureId et PageNumber sont conservés pour cibler la signature correcte.

    var textOptions = new SignTextOptions { Text = "Edited Signature Text", Left = signatureToEdit.Left + 10, /* ... */ };
    
  2. Exécuter la mise à jour - UpdateSignature envoie les options modifiées au serveur, qui réécrit la signature tout en laissant le reste du PDF intact.

    var updateResponse = signatureApi.UpdateSignature(updateSignatureRequest);
    
  3. Résultat du téléchargement - Enfin, le PDF mis à jour est téléchargé depuis le stockage vers le système de fichiers local.

using (var downloadStream = storageApi.DownloadFile(downloadRequest))

Pour une liste complète des classes et des méthodes, consultez la référence API.

Préparer l’environnement

Préparez votre environnement de développement avant d’écrire du code.

  1. Installez le SDK via NuGet
dotnet add package GroupDocs.signature-Cloud

Vous pouvez également télécharger le dernier package depuis la page de publication.

  1. Configurer l’environnement d’exécution .NET - La bibliothèque nécessite .NET 6.0 ou une version ultérieure. Assurez‑vous que votre projet cible un framework compatible.

  2. Créer un compte GroupDocs Cloud - Inscrivez‑vous sur le portail GroupDocs et obtenez votre ClientId et ClientSecret. Ces identifiants sont nécessaires pour chaque appel d’API.

  3. Configurer les informations d’identification - Stockez les informations d’identification de manière sécurisée, par exemple dans appsettings.json ou des variables d’environnement, et faites‑y référence lors de la création de l’objet Configuration.

  4. Vérifier la connectivité - Exécutez une requête simple (par ex., storageApi.ObjectExists) pour confirmer que vos identifiants sont valides et que le service est accessible.

Une fois ces étapes terminées, vous êtes prêt à exécuter l’exemple de code et à commencer à modifier les signatures.

Conclusion

Modifier les signatures dans les documents PDF signés est simple avec le GroupDocs.Signature Cloud SDK for .NET. En suivant les étapes ci‑dessus, vous pouvez localiser une signature existante, modifier ses propriétés visuelles et préserver l’intégrité du document, le tout depuis une application C#. N’oubliez pas d’obtenir une licence appropriée pour une utilisation en production ; vous pouvez acheter une licence complète ou obtenir une licence temporaire depuis la page de licence temporaire. Commencez dès aujourd’hui à intégrer la modification de signatures et rationalisez vos flux de travail documentaires.

FAQ

  • Puis-je modifier les signatures dans un PDF signé sans compromettre la validité de la signature ?
    Oui. Le SDK met à jour uniquement la représentation visuelle tout en conservant le hachage cryptographique intact, de sorte que le document reste valide.

  • Quelle est la différence entre edit Signatures in Signed PDF et edit Signatures in Signed PDF in .NET ?
    Le premier décrit l’opération générique, tandis que le second souligne que l’implémentation utilise la version .NET du GroupDocs.Signature Cloud SDK.

  • Dois‑je re‑signer le PDF après avoir modifié une signature ?
    Non. Le SDK modifie l’apparence de l’objet de signature existant ; la signature numérique originale reste inchangée.

  • Existe-t-il un projet d’exemple que je peux télécharger ?
    Oui, un exemple complet est disponible dans le référentiel GitHub : https://github.com/groupdocs-signature-cloud/groupdocs-signature-cloud-dotnet

Read More