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.
- Configurer l’authentification - L’objet
Configurationest rempli avecClientIdetClientSecret. Cela établit une session sécurisée avec le service cloud.
var config = new Configuration { ClientId = "YOUR_CLIENT_ID", ClientSecret = "YOUR_CLIENT_SECRET" };
Créer des instances d’API -
SignatureApietStorageApisont 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);Télécharger si manquant - Le code vérifie si
input.pdfexiste dans le stockage cloud ; sinon, il télécharge le fichier en utilisantUploadFile. Cela garantit que les opérations suivantes disposent d’un document source.storageApi.UploadFile(new UploadFileRequest(new UploadFile { Path = inputFilePath, File = fileStream }));Récupérer les signatures existantes -
GetSignaturesrécupère toutes les signatures dans le document. La première signature est sélectionnée pour la modification, et sonSignatureIdest stocké.
var signaturesResponse = signatureApi.GetSignatures(getSignaturesRequest);
var signatureToEdit = signaturesResponse.Signatures[0];
Préparer les options mises à jour - Un nouvel objet
SignTextOptionscopie les propriétés existantes et modifie le texte, la position et la police. LesSignatureIdetPageNumbersont conservés pour cibler la signature correcte.var textOptions = new SignTextOptions { Text = "Edited Signature Text", Left = signatureToEdit.Left + 10, /* ... */ };Exécuter la mise à jour -
UpdateSignatureenvoie les options modifiées au serveur, qui réécrit la signature tout en laissant le reste du PDF intact.var updateResponse = signatureApi.UpdateSignature(updateSignatureRequest);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.
- 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.
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.
Créer un compte GroupDocs Cloud - Inscrivez‑vous sur le portail GroupDocs et obtenez votre
ClientIdetClientSecret. Ces identifiants sont nécessaires pour chaque appel d’API.Configurer les informations d’identification - Stockez les informations d’identification de manière sécurisée, par exemple dans
appsettings.jsonou des variables d’environnement, et faites‑y référence lors de la création de l’objetConfiguration.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
