Editar uma assinatura digital após um PDF ter sido assinado é uma necessidade frequente, especialmente quando as regras de negócios mudam ou quando uma assinatura precisa ser reposicionada. GroupDocs.Signature Cloud SDK for .NET fornece uma biblioteca robusta que permite editar programaticamente assinaturas em arquivos PDF assinados sem comprometer a validade do documento. Este guia orienta você passo a passo, cobrindo tudo, desde a configuração até o download do arquivo atualizado, para que possa integrar a edição de assinaturas em suas aplicações C# com confiança.
Exemplo de Código Completo: Editar Assinaturas em PDF Assinado
O exemplo a seguir demonstra como editar assinaturas em PDF assinado usando o 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: Este exemplo de código demonstra a funcionalidade principal. Antes de usá‑lo em seu projeto, certifique‑se de atualizar quaisquer caminhos de arquivo e valores de configuração para corresponder ao seu ambiente real, verifique se todas as dependências necessárias estão instaladas corretamente e teste minuciosamente em seu ambiente de desenvolvimento. Se encontrar algum problema, consulte a documentação oficial ou entre em contato com a equipe de suporte para obter assistência.
Comandos cURL para Edição de Assinaturas via API REST
A seguir está um conjunto de comandos cURL que executam a mesma operação de edição de Assinaturas em PDF Assinado usando a API REST.
Primeiro, obtenha um token de acesso.
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"
}'
Carregue o PDF de origem no armazenamento em nuvem.
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"
Atualize a primeira assinatura (exemplo modifica uma assinatura de texto).
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"
}
}'
Baixe o PDF atualizado.
curl -X GET "https://api.groupdocs.cloud/v2.0/storage/file/output.pdf" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o output.pdf
Para mais detalhes, consulte a documentação oficial da API.
Entendendo a Modificação de Assinatura em C#
A seguir está uma explicação concisa de como o código C# fornecido realiza a edição de Assinaturas em um fluxo de trabalho de PDF assinado.
- Configurar Autenticação - O objeto
Configurationé preenchido comClientIdeClientSecret. Isso estabelece uma sessão segura com o serviço em nuvem.
var config = new Configuration { ClientId = "YOUR_CLIENT_ID", ClientSecret = "YOUR_CLIENT_SECRET" };
- Criar Instâncias da API -
SignatureApieStorageApisão instanciados usando a configuração, proporcionando acesso aos endpoints relacionados a assinatura e armazenamento.
var signatureApi = new SignatureApi(config);
var storageApi = new StorageApi(config);
- Upload se Ausente - O código verifica se
input.pdfexiste no armazenamento em nuvem; caso contrário, ele faz o upload do arquivo usandoUploadFile. Isso garante que as operações subsequentes tenham um documento de origem.
storageApi.UploadFile(new UploadFileRequest(new UploadFile { Path = inputFilePath, File = fileStream }));
Recuperar Assinaturas Existentes -
GetSignaturesbusca todas as assinaturas no documento. A primeira assinatura é selecionada para edição, e seuSignatureIdé armazenado.var signaturesResponse = signatureApi.GetSignatures(getSignaturesRequest); var signatureToEdit = signaturesResponse.Signatures[0];Preparar Opções Atualizadas - Um novo objeto
SignTextOptionscopia as propriedades existentes e altera o texto, a posição e a fonte. OSignatureIde oPageNumbersão preservados para direcionar a assinatura correta.var textOptions = new SignTextOptions { Text = "Edited Signature Text", Left = signatureToEdit.Left + 10, /* ... */ };Executar Atualização -
UpdateSignatureenvia as opções modificadas ao servidor, que reescreve a assinatura enquanto deixa o resto do PDF intacto.var updateResponse = signatureApi.UpdateSignature(updateSignatureRequest);Resultado do Download - Finalmente, o PDF atualizado é baixado do armazenamento para o sistema de arquivos local.
using (var downloadStream = storageApi.DownloadFile(downloadRequest))
Para obter uma lista completa de classes e métodos, consulte a referência da API.
Preparando o Ambiente
Prepare seu ambiente de desenvolvimento antes de escrever qualquer código.
- Instale o SDK via NuGet
dotnet add package GroupDocs.signature-Cloud
Você também pode baixar o pacote mais recente na página de lançamentos.
Configurar o Runtime .NET - A biblioteca requer .NET 6.0 ou posterior. Certifique‑se de que seu projeto tenha como alvo uma estrutura compatível.
Crie uma Conta GroupDocs Cloud - Registre-se no portal GroupDocs e obtenha seu
ClientIdeClientSecret. Essas credenciais são necessárias para cada chamada de API.Configurar Credenciais - Armazene as credenciais com segurança, por exemplo em
appsettings.jsonou variáveis de ambiente, e faça referência a elas ao construir o objetoConfiguration.Verificar Conectividade - Execute uma solicitação simples (por exemplo,
storageApi.ObjectExists) para confirmar que suas credenciais são válidas e que o serviço está acessível.
Com estas etapas concluídas, você está pronto para executar o exemplo de código e começar a editar assinaturas.
Conclusão
Editar assinaturas em documentos PDF assinados é simples com o GroupDocs.Signature Cloud SDK for .NET. Seguindo os passos acima, você pode localizar uma assinatura existente, modificar suas propriedades visuais e preservar a integridade do documento, tudo a partir de uma aplicação C#. Lembre‑se de obter uma licença adequada para uso em produção; você pode adquirir uma licença completa ou obter uma licença temporária na página de licença temporária. Comece a integrar a edição de assinaturas hoje mesmo e otimize seus fluxos de trabalho de documentos.
Perguntas Frequentes
Posso editar assinaturas em PDF assinado sem quebrar a validade da assinatura?
Sim. O SDK atualiza apenas a representação visual mantendo o hash criptográfico intacto, de modo que o documento permanece válido.Qual é a diferença entre editar Signatures em Signed PDF e editar Signatures em Signed PDF em .NET?
O primeiro descreve a operação genérica, enquanto o segundo enfatiza que a implementação usa a versão .NET do GroupDocs.Signature Cloud SDK.Preciso assinar novamente o PDF após editar uma assinatura?
Não. O SDK modifica a aparência do objeto de assinatura existente; a assinatura digital original permanece inalterada.Existe um projeto de exemplo que eu possa baixar?
Sim, um exemplo completo está disponível no repositório do GitHub: https://github.com/groupdocs-signature-cloud/groupdocs-signature-cloud-dotnet
