Modificare una firma digitale dopo che un PDF è stato firmato è una necessità frequente, soprattutto quando le regole aziendali cambiano o quando è necessario riposizionare una firma. GroupDocs.Signature Cloud SDK for .NET fornisce una libreria robusta che consente di modificare programmaticamente le firme nei file PDF firmati senza compromettere la validità del documento. Questa guida ti accompagna passo‑passo attraverso un’implementazione completa, coprendo tutto, dalla configurazione al download del file aggiornato, così potrai integrare la modifica delle firme nelle tue applicazioni C# con fiducia.
Esempio di codice completo: Modifica delle firme in PDF firmato
Il seguente esempio dimostra come modificare le firme in PDF firmato utilizzando il 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);
}
}
Nota: Questo esempio di codice dimostra la funzionalità principale. Prima di usarlo nel tuo progetto, assicurati di aggiornare tutti i percorsi dei file e i valori di configurazione per corrispondere al tuo ambiente reale, verifica che tutte le dipendenze richieste siano installate correttamente e testa accuratamente nel tuo ambiente di sviluppo. Se incontri problemi, consulta la documentazione ufficiale o contatta il team di supporto per assistenza.
Comandi cURL per la modifica delle firme tramite REST API
Di seguito è riportato un insieme di comandi cURL che esegue la stessa operazione di modifica delle firme in PDF firmato utilizzando l’API REST.
Per prima cosa, ottieni un token di accesso.
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"
}'
Carica il PDF di origine nello storage 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"
Aggiorna la prima firma (l’esempio modifica una firma di testo).
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"
}
}'
Scarica il PDF aggiornato.
curl -X GET "https://api.groupdocs.cloud/v2.0/storage/file/output.pdf" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o output.pdf
Per ulteriori dettagli, consulta la documentazione ufficiale dell’API.
Comprendere la modifica delle firme in C#
Di seguito è una sintesi di come il codice C# fornito realizza la modifica delle firme nel flusso di lavoro di PDF firmati.
- Configura l’autenticazione - L’oggetto
Configurationviene popolato conClientIdeClientSecret. Questo stabilisce una sessione sicura con il servizio cloud.
var config = new Configuration { ClientId = "YOUR_CLIENT_ID", ClientSecret = "YOUR_CLIENT_SECRET" };
Creare istanze API -
SignatureApieStorageApivengono istanziati utilizzando la configurazione, fornendo l’accesso agli endpoint relativi a firme e archiviazione.var signatureApi = new SignatureApi(config); var storageApi = new StorageApi(config);Carica se mancante - Il codice verifica se
input.pdfesiste nello storage cloud; in caso contrario, carica il file usandoUploadFile. Questo garantisce che le operazioni successive abbiano un documento di origine.
storageApi.UploadFile(new UploadFileRequest(new UploadFile { Path = inputFilePath, File = fileStream }));
Recupera firme esistenti -
GetSignaturesrecupera tutte le firme nel documento. La prima firma è selezionata per la modifica e il suoSignatureIdviene memorizzato.var signaturesResponse = signatureApi.GetSignatures(getSignaturesRequest); var signatureToEdit = signaturesResponse.Signatures[0];Prepara Opzioni Aggiornate - Un nuovo oggetto
SignTextOptionscopia le proprietà esistenti e modifica il testo, la posizione e il carattere. IlSignatureIde ilPageNumbervengono conservati per puntare alla firma corretta.var textOptions = new SignTextOptions { Text = "Edited Signature Text", Left = signatureToEdit.Left + 10, /* ... */ };Esegui Aggiornamento -
UpdateSignatureinvia le opzioni modificate al server, che riscrive la firma lasciando intatto il resto del PDF.var updateResponse = signatureApi.UpdateSignature(updateSignatureRequest);Risultato del download - Infine, il PDF aggiornato viene scaricato dallo storage al file system locale.
using (var downloadStream = storageApi.DownloadFile(downloadRequest))
Per un elenco completo di classi e metodi, fare riferimento al riferimento API.
Preparare l’ambiente
Prepara il tuo ambiente di sviluppo prima di scrivere qualsiasi codice.
- Installa l’SDK via NuGet
dotnet add package GroupDocs.signature-Cloud
Puoi anche scaricare l’ultimo pacchetto dalla pagina di rilascio.
Configura .NET Runtime - La libreria richiede .NET 6.0 o versioni successive. Assicurati che il tuo progetto punti a un framework compatibile.
Crea un account GroupDocs Cloud - Registrati al portale GroupDocs e ottieni il tuo
ClientIdeClientSecret. Queste credenziali sono necessarie per ogni chiamata API.Configurare le credenziali - Memorizza le credenziali in modo sicuro, ad esempio in
appsettings.jsono nelle variabili d’ambiente, e fai riferimento a esse quando costruisci l’oggettoConfiguration.Verifica della connettività - Esegui una semplice richiesta (ad es.,
storageApi.ObjectExists) per confermare che le tue credenziali siano valide e che il servizio sia raggiungibile.
Con questi passaggi completati, sei pronto per eseguire l’esempio di codice e iniziare a modificare le firme.
Conclusione
Modificare le firme nei documenti PDF firmati è semplice con il GroupDocs.Signature Cloud SDK for .NET. Seguendo i passaggi descritti sopra, è possibile individuare una firma esistente, modificarne le proprietà visive e preservare l’integrità del documento, il tutto da un’applicazione C#. Ricorda di ottenere una licenza adeguata per l’uso in produzione; puoi acquistare una licenza completa o ottenere una licenza temporanea dalla pagina della licenza temporanea. Inizia oggi a integrare la modifica delle firme e ottimizza i flussi di lavoro dei tuoi documenti.
Domande frequenti
Posso modificare le firme in un PDF firmato senza compromettere la validità della firma?
Sì. L’SDK aggiorna solo la rappresentazione visiva mantenendo intatto l’hash crittografico, quindi il documento rimane valido.Qual è la differenza tra edit Signatures in Signed PDF e edit Signatures in Signed PDF in .NET?
Il primo descrive l’operazione generica, mentre il secondo sottolinea che l’implementazione utilizza la versione .NET di GroupDocs.Signature Cloud SDK.Devo ri‑firmare il PDF dopo aver modificato una firma?
No. L’SDK modifica l’aspetto dell’oggetto firma esistente; la firma digitale originale rimane invariata.È disponibile un progetto di esempio che posso scaricare?
Sì, un esempio completo è disponibile nel repository GitHub: https://github.com/groupdocs-signature-cloud/groupdocs-signature-cloud-dotnet.
