<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>csharp pdf signature on Document Processing REST APIs | GroupDocs Cloud</title>
    <link>https://blog-qa.groupdocs.cloud/es/tag/csharp-pdf-signature/</link>
    <description>Recent content in csharp pdf signature on Document Processing REST APIs | GroupDocs Cloud</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>es</language>
    <lastBuildDate>Wed, 16 Sep 2026 12:53:38 +0000</lastBuildDate><atom:link href="https://blog-qa.groupdocs.cloud/es/tag/csharp-pdf-signature/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Editar firmas en C#</title>
      <link>https://blog-qa.groupdocs.cloud/es/signature/edit-signatures-in-csharp/</link>
      <pubDate>Wed, 16 Sep 2026 12:53:38 +0000</pubDate>
      
      <guid>https://blog-qa.groupdocs.cloud/es/signature/edit-signatures-in-csharp/</guid>
      <description>Aprenda cómo editar firmas en PDF firmado usando GroupDocs.Signature Cloud SDK for .NET en C#. Guía paso a paso con código, cURL e instrucciones de configuración.</description>
      <content:encoded><![CDATA[<p>Editar una firma digital después de que un <a href="https://docs.fileformat.com/pdf">PDF</a> haya sido firmado es un requisito frecuente, especialmente cuando cambian las reglas de negocio o cuando una firma necesita ser reposicionada. <a href="https://products.groupdocs.cloud/signature/net/">GroupDocs.Signature Cloud SDK for .NET</a> ofrece una biblioteca robusta que le permite editar programáticamente firmas en archivos PDF firmados sin comprometer la validez del documento. Esta guía le lleva paso a paso a través de una implementación completa, cubriendo todo, desde la configuración hasta la descarga del archivo actualizado, para que pueda integrar la edición de firmas en sus aplicaciones C# con confianza.</p>
<h2 id="ejemplo-de-código-completo-editar-firmas-en-pdf-firmado">Ejemplo de Código Completo: Editar Firmas en PDF Firmado</h2>
<p>El siguiente ejemplo muestra cómo editar firmas en PDF firmado usando el GroupDocs.Signature Cloud SDK for .NET.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">using</span> System;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> System.Collections.Generic;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> System.IO;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> GroupDocs.Signature.Cloud.Sdk.Api;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> GroupDocs.Signature.Cloud.Sdk.Client;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> GroupDocs.Signature.Cloud.Sdk.Model;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> GroupDocs.Signature.Cloud.Sdk.Model.Requests;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Program</span>
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> Main()
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>        <span style="color:#75715e">// Configuration</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">var</span> config = <span style="color:#66d9ef">new</span> Configuration
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>            ClientId = <span style="color:#e6db74">&#34;YOUR_CLIENT_ID&#34;</span>,
</span></span><span style="display:flex;"><span>            ClientSecret = <span style="color:#e6db74">&#34;YOUR_CLIENT_SECRET&#34;</span>
</span></span><span style="display:flex;"><span>        };
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// API instances</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">var</span> signatureApi = <span style="color:#66d9ef">new</span> SignatureApi(config);
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">var</span> storageApi = <span style="color:#66d9ef">new</span> StorageApi(config);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// File paths</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">string</span> inputFilePath = <span style="color:#e6db74">&#34;input.pdf&#34;</span>;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">string</span> outputFilePath = <span style="color:#e6db74">&#34;output.pdf&#34;</span>;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Ensure file exists in storage (upload if needed)</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> (!storageApi.ObjectExists(<span style="color:#66d9ef">new</span> ObjectExistsRequest(<span style="color:#66d9ef">new</span> StorageExist
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>            Path = inputFilePath,
</span></span><span style="display:flex;"><span>            StorageName = <span style="color:#66d9ef">null</span>
</span></span><span style="display:flex;"><span>        })).Exists)
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">using</span> (<span style="color:#66d9ef">var</span> fileStream = File.OpenRead(inputFilePath))
</span></span><span style="display:flex;"><span>            {
</span></span><span style="display:flex;"><span>                storageApi.UploadFile(<span style="color:#66d9ef">new</span> UploadFileRequest(<span style="color:#66d9ef">new</span> UploadFile
</span></span><span style="display:flex;"><span>                {
</span></span><span style="display:flex;"><span>                    Path = inputFilePath,
</span></span><span style="display:flex;"><span>                    File = fileStream
</span></span><span style="display:flex;"><span>                }));
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Get list of signatures in the document</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">var</span> fileInfo = <span style="color:#66d9ef">new</span> FileInfo
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>            FilePath = inputFilePath,
</span></span><span style="display:flex;"><span>            StorageName = <span style="color:#66d9ef">null</span>,
</span></span><span style="display:flex;"><span>            Password = <span style="color:#66d9ef">null</span>
</span></span><span style="display:flex;"><span>        };
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">var</span> getSignaturesRequest = <span style="color:#66d9ef">new</span> GetSignaturesRequest(<span style="color:#66d9ef">new</span> GetSignaturesOptions
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>            FileInfo = fileInfo
</span></span><span style="display:flex;"><span>        });
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">var</span> signaturesResponse = signatureApi.GetSignatures(getSignaturesRequest);
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> (signaturesResponse.Signatures == <span style="color:#66d9ef">null</span> || signaturesResponse.Signatures.Count == <span style="color:#ae81ff">0</span>)
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>            Console.WriteLine(<span style="color:#e6db74">&#34;No signatures found.&#34;</span>);
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span>;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Choose first signature to edit</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">var</span> signatureToEdit = signaturesResponse.Signatures[<span style="color:#ae81ff">0</span>];
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">string</span> signatureId = signatureToEdit.SignatureId;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Prepare new options (example: change text signature)</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">var</span> textOptions = <span style="color:#66d9ef">new</span> SignTextOptions
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>            <span style="color:#75715e">// Keep existing properties, modify as needed</span>
</span></span><span style="display:flex;"><span>            Text = <span style="color:#e6db74">&#34;Edited Signature Text&#34;</span>,
</span></span><span style="display:flex;"><span>            Left = signatureToEdit.Left + <span style="color:#ae81ff">10</span>,
</span></span><span style="display:flex;"><span>            Top = signatureToEdit.Top + <span style="color:#ae81ff">10</span>,
</span></span><span style="display:flex;"><span>            Width = signatureToEdit.Width,
</span></span><span style="display:flex;"><span>            Height = signatureToEdit.Height,
</span></span><span style="display:flex;"><span>            Font = <span style="color:#66d9ef">new</span> SignatureFont
</span></span><span style="display:flex;"><span>            {
</span></span><span style="display:flex;"><span>                FontFamily = <span style="color:#e6db74">&#34;Arial&#34;</span>,
</span></span><span style="display:flex;"><span>                FontSize = <span style="color:#ae81ff">12</span>,
</span></span><span style="display:flex;"><span>                Bold = <span style="color:#66d9ef">true</span>,
</span></span><span style="display:flex;"><span>                Italic = <span style="color:#66d9ef">false</span>,
</span></span><span style="display:flex;"><span>                Underline = <span style="color:#66d9ef">false</span>,
</span></span><span style="display:flex;"><span>                Color = <span style="color:#e6db74">&#34;FF0000&#34;</span>
</span></span><span style="display:flex;"><span>            },
</span></span><span style="display:flex;"><span>            <span style="color:#75715e">// Preserve other required fields</span>
</span></span><span style="display:flex;"><span>            SignatureId = signatureId,
</span></span><span style="display:flex;"><span>            PageNumber = signatureToEdit.PageNumber,
</span></span><span style="display:flex;"><span>            <span style="color:#75715e">// Set output file path</span>
</span></span><span style="display:flex;"><span>            OutputFilePath = outputFilePath
</span></span><span style="display:flex;"><span>        };
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">var</span> updateSignatureRequest = <span style="color:#66d9ef">new</span> UpdateSignatureRequest(<span style="color:#66d9ef">new</span> UpdateSignatureOptions
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>            FileInfo = fileInfo,
</span></span><span style="display:flex;"><span>            SignatureId = signatureId,
</span></span><span style="display:flex;"><span>            Options = textOptions
</span></span><span style="display:flex;"><span>        });
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">var</span> updateResponse = signatureApi.UpdateSignature(updateSignatureRequest);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Download updated file</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">var</span> downloadRequest = <span style="color:#66d9ef">new</span> DownloadFileRequest(<span style="color:#66d9ef">new</span> DownloadFile
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>            Path = outputFilePath,
</span></span><span style="display:flex;"><span>            StorageName = <span style="color:#66d9ef">null</span>
</span></span><span style="display:flex;"><span>        });
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">using</span> (<span style="color:#66d9ef">var</span> downloadStream = storageApi.DownloadFile(downloadRequest))
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">using</span> (<span style="color:#66d9ef">var</span> fileStream = File.Create(outputFilePath))
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>            downloadStream.CopyTo(fileStream);
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Console.WriteLine(<span style="color:#e6db74">&#34;Signature edited and saved to &#34;</span> + outputFilePath);
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><blockquote>
<p><strong>Nota:</strong> Este ejemplo de código demuestra la funcionalidad principal. Antes de usarlo en su proyecto, asegúrese de actualizar cualquier ruta de archivo y valores de configuración para que coincidan con su entorno real, verifique que todas las dependencias requeridas estén instaladas correctamente y realice pruebas exhaustivas en su entorno de desarrollo. Si encuentra algún problema, consulte la <a href="https://docs.groupdocs.cloud/signature/">documentación oficial</a> o póngase en contacto con el <a href="https://forum.groupdocs.cloud/c/signature/13">equipo de soporte</a> para obtener ayuda.</p>
</blockquote>
<h2 id="comandos-curl-para-la-edición-de-firmas-mediante-la-api-rest">Comandos cURL para la edición de firmas mediante la API REST</h2>
<p>A continuación se muestra un conjunto de comandos cURL que realizan la misma operación de editar firmas en un PDF firmado utilizando la API REST.</p>
<p>Primero, obtenga un token de acceso.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -X POST <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v2.0/oauth2/token&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Content-Type: application/json&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -d <span style="color:#e6db74">&#39;{
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;grant_type&#34;:&#34;client_credentials&#34;,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;client_id&#34;:&#34;YOUR_CLIENT_ID&#34;,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;client_secret&#34;:&#34;YOUR_CLIENT_SECRET&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">         }&#39;</span>
</span></span></code></pre></div><p>Cargue el PDF de origen en el almacenamiento en la nube.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -X PUT <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v2.0/storage/file/input.pdf&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Authorization: Bearer YOUR_ACCESS_TOKEN&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Content-Type: application/octet-stream&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     --data-binary <span style="color:#e6db74">&#34;@input.pdf&#34;</span>
</span></span></code></pre></div><p>Actualiza la primera firma (el ejemplo modifica una firma de texto).</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -X POST <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v2.0/signature/update&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Authorization: Bearer YOUR_ACCESS_TOKEN&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Content-Type: application/json&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -d <span style="color:#e6db74">&#39;{
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;fileInfo&#34;: {
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;filePath&#34;: &#34;input.pdf&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           },
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;signatureId&#34;: &#34;SIGNATURE_ID_FROM_GET&#34;,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;options&#34;: {
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;text&#34;: &#34;Edited Signature Text&#34;,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;left&#34;: 120,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;top&#34;: 150,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;font&#34;: {
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">                   &#34;fontFamily&#34;: &#34;Arial&#34;,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">                   &#34;fontSize&#34;: 12,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">                   &#34;bold&#34;: true,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">                   &#34;color&#34;: &#34;FF0000&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               },
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;outputFilePath&#34;: &#34;output.pdf&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           }
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">         }&#39;</span>
</span></span></code></pre></div><p>Descargue el PDF actualizado.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -X GET <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v2.0/storage/file/output.pdf&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Authorization: Bearer YOUR_ACCESS_TOKEN&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -o output.pdf
</span></span></code></pre></div><p>Para obtener más detalles, consulte la <a href="https://docs.groupdocs.cloud/signature/">documentación oficial de la API</a>.</p>
<h2 id="comprensión-de-la-modificación-de-firmas-en-c">Comprensión de la Modificación de Firmas en C#</h2>
<p>A continuación se muestra un resumen conciso de cómo el código C# proporcionado lleva a cabo la edición de firmas en el flujo de trabajo de PDF firmado.</p>
<ol>
<li><strong>Configurar autenticación</strong> - El objeto <code>Configuration</code> se completa con <code>ClientId</code> y <code>ClientSecret</code>. Esto establece una sesión segura con el servicio en la nube.</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">var</span> config = <span style="color:#66d9ef">new</span> Configuration { ClientId = <span style="color:#e6db74">&#34;YOUR_CLIENT_ID&#34;</span>, ClientSecret = <span style="color:#e6db74">&#34;YOUR_CLIENT_SECRET&#34;</span> };
</span></span></code></pre></div><ol start="2">
<li><strong>Crear instancias de API</strong> - <code>SignatureApi</code> y <code>StorageApi</code> se instancian usando la configuración, lo que brinda acceso a los puntos finales relacionados con firmas y almacenamiento.</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">var</span> signatureApi = <span style="color:#66d9ef">new</span> SignatureApi(config);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">var</span> storageApi = <span style="color:#66d9ef">new</span> StorageApi(config);
</span></span></code></pre></div><ol start="3">
<li>
<p><strong>Cargar si falta</strong> - El código verifica si <code>input.pdf</code> existe en el almacenamiento en la nube; si no, carga el archivo usando <code>UploadFile</code>. Esto garantiza que las operaciones posteriores tengan un documento fuente.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span>storageApi.UploadFile(<span style="color:#66d9ef">new</span> UploadFileRequest(<span style="color:#66d9ef">new</span> UploadFile { Path = inputFilePath, File = fileStream }));
</span></span></code></pre></div></li>
<li>
<p><strong>Recuperar firmas existentes</strong> - <code>GetSignatures</code> recupera todas las firmas en el documento. La primera firma se selecciona para editar y su <code>SignatureId</code> se almacena.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">var</span> signaturesResponse = signatureApi.GetSignatures(getSignaturesRequest);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">var</span> signatureToEdit = signaturesResponse.Signatures[<span style="color:#ae81ff">0</span>];
</span></span></code></pre></div></li>
<li>
<p><strong>Preparar Opciones Actualizadas</strong> - Un nuevo objeto <code>SignTextOptions</code> copia las propiedades existentes y cambia el texto, la posición y la fuente. Los <code>SignatureId</code> y <code>PageNumber</code> se conservan para apuntar a la firma correcta.</p>
</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">var</span> textOptions = <span style="color:#66d9ef">new</span> SignTextOptions { Text = <span style="color:#e6db74">&#34;Edited Signature Text&#34;</span>, Left = signatureToEdit.Left + <span style="color:#ae81ff">10</span>, <span style="color:#75715e">/* ... */</span> };
</span></span></code></pre></div><ol start="6">
<li>
<p><strong>Ejecutar actualización</strong> - <code>UpdateSignature</code> envía las opciones modificadas al servidor, que reescribe la firma mientras deja el resto del PDF sin cambios.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">var</span> updateResponse = signatureApi.UpdateSignature(updateSignatureRequest);
</span></span></code></pre></div></li>
<li>
<p><strong>Resultado de la descarga</strong> - Finalmente, el PDF actualizado se descarga del almacenamiento al sistema de archivos local.</p>
</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">using</span> (<span style="color:#66d9ef">var</span> downloadStream = storageApi.DownloadFile(downloadRequest))
</span></span></code></pre></div><p>Para obtener una lista completa de clases y métodos, consulte la <a href="https://reference.groupdocs.cloud/signature/">referencia de la API</a>.</p>
<h2 id="preparando-el-entorno">Preparando el Entorno</h2>
<p>Prepare su entorno de desarrollo antes de escribir cualquier código.</p>
<ol>
<li><strong>Instale el SDK a través de NuGet</strong></li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>dotnet add package GroupDocs.signature-Cloud
</span></span></code></pre></div><p>También puede descargar el paquete más reciente desde la <a href="https://releases.groupdocs.cloud/signature/net/">página de lanzamiento</a>.</p>
<ol start="2">
<li>
<p><strong>Configurar .NET Runtime</strong> - La biblioteca requiere .NET 6.0 o posterior. Asegúrese de que su proyecto apunte a un framework compatible.</p>
</li>
<li>
<p><strong>Crear una cuenta de GroupDocs Cloud</strong> - Regístrese en el portal de GroupDocs y obtenga su <code>ClientId</code> y <code>ClientSecret</code>. Estas credenciales son necesarias para cada llamada a la API.</p>
</li>
<li>
<p><strong>Configurar credenciales</strong> - Almacene las credenciales de forma segura, por ejemplo en <code>appsettings.json</code> o variables de entorno, y haga referencia a ellas al construir el objeto <code>Configuration</code>.</p>
</li>
<li>
<p><strong>Verificar conectividad</strong> - Ejecute una solicitud simple (p. ej., <code>storageApi.ObjectExists</code>) para confirmar que sus credenciales son válidas y que el servicio es accesible.</p>
</li>
</ol>
<p>Con estos pasos completados, estás listo para ejecutar el ejemplo de código y comenzar a editar firmas.</p>
<h2 id="conclusión">Conclusión</h2>
<p>Editar firmas en documentos PDF firmados es sencillo con el <a href="https://products.groupdocs.cloud/signature/net/">GroupDocs.Signature Cloud SDK for .NET</a>. Siguiendo los pasos anteriores, puedes localizar una firma existente, modificar sus propiedades visuales y preservar la integridad del documento, todo desde una aplicación C#. Recuerda obtener una licencia adecuada para uso en producción; puedes comprar una licencia completa u obtener una licencia temporal desde la <a href="https://purchase.groupdocs.cloud/temporary-license/">página de licencia temporal</a>. Comienza a integrar la edición de firmas hoy y optimiza tus flujos de trabajo de documentos.</p>
<h2 id="preguntas-frecuentes">Preguntas frecuentes</h2>
<ul>
<li>
<p><strong>¿Puedo editar firmas en un PDF firmado sin romper la validez de la firma?</strong><br>
Sí. El SDK actualiza solo la representación visual mientras mantiene intacto el hash criptográfico, por lo que el documento sigue siendo válido.</p>
</li>
<li>
<p><strong>¿Cuál es la diferencia entre edit Signatures in Signed PDF y edit Signatures in Signed PDF en .NET?</strong><br>
El primero describe la operación genérica, mientras que el segundo enfatiza que la implementación utiliza la versión .NET del GroupDocs.Signature Cloud SDK.</p>
</li>
<li>
<p><strong>¿Necesito volver a firmar el PDF después de editar una firma?</strong><br>
No. El SDK modifica la apariencia del objeto de firma existente; la firma digital original permanece sin cambios.</p>
</li>
<li>
<p><strong>¿Hay un proyecto de ejemplo que pueda descargar?</strong><br>
Sí, un ejemplo completo está disponible en el repositorio de GitHub: <a href="https://github.com/groupdocs-signature-cloud/groupdocs-signature-cloud-dotnet">https://github.com/groupdocs-signature-cloud/groupdocs-signature-cloud-dotnet</a>.</p>
</li>
</ul>
<h2 id="read-more">Read More</h2>
<ul>
<li><a href="https://blog.groupdocs.cloud/es/signature/build-custom-electronic-signature-workflows-in-your-asp-net-csharp-vb-net-apps/">Cree flujos de trabajo personalizados de firma electrónica en sus aplicaciones ASP.NET, C#, VB.NET</a></li>
<li><a href="https://blog.groupdocs.cloud/es/signature/edit-signatures-in-signed-pdf-documents-using-python/">Edite firmas en documentos PDF firmados usando Python</a></li>
<li><a href="https://blog.groupdocs.cloud/es/signature/digitally-sign-a-word-document-online/">Cómo firmar digitalmente un documento Word en línea</a></li>
</ul>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
