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.

  1. Configura l’autenticazione - L’oggetto Configuration viene popolato con ClientId e ClientSecret. Questo stabilisce una sessione sicura con il servizio cloud.
var config = new Configuration { ClientId = "YOUR_CLIENT_ID", ClientSecret = "YOUR_CLIENT_SECRET" };
  1. Creare istanze API - SignatureApi e StorageApi vengono istanziati utilizzando la configurazione, fornendo l’accesso agli endpoint relativi a firme e archiviazione.

    var signatureApi = new SignatureApi(config);
    var storageApi = new StorageApi(config);
    
  2. Carica se mancante - Il codice verifica se input.pdf esiste nello storage cloud; in caso contrario, carica il file usando UploadFile. Questo garantisce che le operazioni successive abbiano un documento di origine.

storageApi.UploadFile(new UploadFileRequest(new UploadFile { Path = inputFilePath, File = fileStream }));
  1. Recupera firme esistenti - GetSignatures recupera tutte le firme nel documento. La prima firma è selezionata per la modifica e il suo SignatureId viene memorizzato.

    var signaturesResponse = signatureApi.GetSignatures(getSignaturesRequest);
    var signatureToEdit = signaturesResponse.Signatures[0];
    
  2. Prepara Opzioni Aggiornate - Un nuovo oggetto SignTextOptions copia le proprietà esistenti e modifica il testo, la posizione e il carattere. Il SignatureId e il PageNumber vengono conservati per puntare alla firma corretta.

    var textOptions = new SignTextOptions { Text = "Edited Signature Text", Left = signatureToEdit.Left + 10, /* ... */ };
    
  3. Esegui Aggiornamento - UpdateSignature invia le opzioni modificate al server, che riscrive la firma lasciando intatto il resto del PDF.

    var updateResponse = signatureApi.UpdateSignature(updateSignatureRequest);
    
  4. 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.

  1. Installa l’SDK via NuGet
dotnet add package GroupDocs.signature-Cloud

Puoi anche scaricare l’ultimo pacchetto dalla pagina di rilascio.

  1. Configura .NET Runtime - La libreria richiede .NET 6.0 o versioni successive. Assicurati che il tuo progetto punti a un framework compatibile.

  2. Crea un account GroupDocs Cloud - Registrati al portale GroupDocs e ottieni il tuo ClientId e ClientSecret. Queste credenziali sono necessarie per ogni chiamata API.

  3. Configurare le credenziali - Memorizza le credenziali in modo sicuro, ad esempio in appsettings.json o nelle variabili d’ambiente, e fai riferimento a esse quando costruisci l’oggetto Configuration.

  4. 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.

Read More