<?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>dotnet pdf manipulation on Document Processing REST APIs | GroupDocs Cloud</title>
    <link>https://blog-qa.groupdocs.cloud/zh-hant/tag/dotnet-pdf-manipulation/</link>
    <description>Recent content in dotnet pdf manipulation on Document Processing REST APIs | GroupDocs Cloud</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-hant</language>
    <lastBuildDate>Wed, 16 Sep 2026 12:53:38 +0000</lastBuildDate><atom:link href="https://blog-qa.groupdocs.cloud/zh-hant/tag/dotnet-pdf-manipulation/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>在 C# 中編輯簽名</title>
      <link>https://blog-qa.groupdocs.cloud/zh-hant/signature/edit-signatures-in-csharp/</link>
      <pubDate>Wed, 16 Sep 2026 12:53:38 +0000</pubDate>
      
      <guid>https://blog-qa.groupdocs.cloud/zh-hant/signature/edit-signatures-in-csharp/</guid>
      <description>了解如何使用 GroupDocs.Signature Cloud SDK for .NET 在 C# 中編輯已簽署 PDF 的簽名。一步步指南，包含程式碼、cURL 以及設定說明。</description>
      <content:encoded><![CDATA[<p>在 <a href="https://docs.fileformat.com/pdf">PDF</a> 已簽署後編輯數位簽名是常見需求，尤其在業務規則變更或需要重新定位簽名時。<a href="https://products.groupdocs.cloud/signature/net/">GroupDocs.Signature Cloud SDK for .NET</a> 提供了強大的函式庫，讓您能以程式方式編輯已簽署 PDF 檔案中的簽名，同時不影響文件的有效性。本指南將逐步帶您完成完整實作，涵蓋從配置到下載更新檔案的所有步驟，讓您能自信地將簽名編輯整合到 C# 應用程式中。</p>
<h2 id="完整程式碼範例編輯已簽署-pdf-中的簽名">完整程式碼範例：編輯已簽署 PDF 中的簽名</h2>
<p>以下範例示範如何使用 GroupDocs.Signature Cloud SDK for .NET 編輯已簽署 PDF 中的簽名。</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>注意：</strong> 此代碼示例展示了核心功能。 在將其用於您的項目之前，請確保更新所有文件路徑和配置值以匹配實際環境，驗證所有必需的依賴項已正確安裝，並在開發環境中徹底測試。 如果遇到任何問題，請參閱<a href="https://docs.groupdocs.cloud/signature/">官方文檔</a>或聯繫<a href="https://forum.groupdocs.cloud/c/signature/13">支持團隊</a>尋求幫助。</p>
</blockquote>
<h2 id="用於簽名編輯的-curl-命令透過-rest-api">用於簽名編輯的 cURL 命令（透過 REST API）</h2>
<p>以下是一組 cURL 命令，用於透過 REST API 執行相同的「在已簽署的 PDF 中編輯簽名」操作。</p>
<p>首先，獲取訪問令牌。</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>將來源 PDF 上傳至雲端儲存。</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>更新第一個簽名（示例修改文字簽名）。</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>下載更新的 PDF。</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>欲了解更多詳情，請參閱<a href="https://docs.groupdocs.cloud/signature/">官方 API 文件</a>。</p>
<h2 id="了解-c-中的簽名修改">了解 C# 中的簽名修改</h2>
<p>以下是對提供的 C# 代碼如何實現已簽署 PDF 工作流中編輯簽名的簡要說明。</p>
<ol>
<li><strong>配置身份驗證</strong> - <code>Configuration</code> 物件已使用 <code>ClientId</code> 和 <code>ClientSecret</code> 進行填充。這會在雲服務中建立安全會話。</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>建立 API 實例</strong> - <code>SignatureApi</code> 和 <code>StorageApi</code> 使用配置實例化，從而訪問與簽名相關和與存儲相關的端點。</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>如果缺少則上傳</strong> - 程式碼會檢查雲端儲存中是否存在 <code>input.pdf</code>；如果不存在，則使用 <code>UploadFile</code> 上傳檔案。這確保後續操作有來源文件。</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>檢索現有簽名</strong> - <code>GetSignatures</code> 會取得文件中的所有簽名。第一個簽名被選取以進行編輯，並將其 <code>SignatureId</code> 儲存。</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> 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><ol start="5">
<li>
<p><strong>準備更新選項</strong> - 新的 <code>SignTextOptions</code> 物件會複製現有屬性，並更改文字、位置和字型。<code>SignatureId</code> 與 <code>PageNumber</code> 會被保留，以定位正確的簽章。</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> 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></li>
<li>
<p><strong>執行更新</strong> - <code>UpdateSignature</code> 將修改過的選項發送到伺服器，伺服器會重新寫入簽名，同時保持 PDF 其餘部分不變。</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>下載結果</strong> - 最後，已更新的 PDF 從存儲下載到本地檔案系統。</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>如需完整的類別和方法清單，請參閱 <a href="https://reference.groupdocs.cloud/signature/">API 參考</a>。</p>
<h2 id="準備開發環境">準備開發環境</h2>
<p>在編寫任何程式碼之前，先準備好您的開發環境。</p>
<ol>
<li><strong>通過 NuGet 安裝 SDK</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>您也可以從<a href="https://releases.groupdocs.cloud/signature/net/">發佈頁面</a>下載最新的套件。</p>
<ol start="2">
<li>
<p><strong>設定 .NET 執行環境</strong> - 此庫需要 .NET 6.0 或更高版本。確保您的專案目標為相容的框架。</p>
</li>
<li>
<p><strong>Create a GroupDocs Cloud Account</strong> - 在 GroupDocs 入口網站註冊並取得您的 <code>ClientId</code> 和 <code>ClientSecret</code>。這些憑證在每次 API 呼叫時都需要。</p>
</li>
<li>
<p><strong>配置憑證</strong> - 安全地存儲憑證，例如在 <code>appsettings.json</code> 或環境變數中，並在構建 <code>Configuration</code> 物件時引用它們。</p>
</li>
<li>
<p><strong>驗證連接性</strong> - 執行簡單請求（例如 <code>storageApi.ObjectExists</code>）以確認您的憑證有效且服務可訪問。</p>
</li>
</ol>
<p>完成這些步驟後，您已準備好執行程式碼範例並開始編輯簽名。</p>
<h2 id="結論">結論</h2>
<p>使用 <a href="https://products.groupdocs.cloud/signature/net/">GroupDocs.Signature Cloud SDK for .NET</a> 編輯已簽署的 PDF 文件中的簽名非常簡單。按照上述步驟，您可以定位現有簽名、修改其視覺屬性，並從 C# 應用程式中保持文件的完整性。請務必為生產環境獲取合適的授權；您可以購買完整授權或從 <a href="https://purchase.groupdocs.cloud/temporary-license/">臨時授權頁面</a> 獲取臨時授權。立即開始整合簽名編輯，簡化您的文件工作流程。</p>
<h2 id="常見問題">常見問題</h2>
<ul>
<li>
<p><strong>我可以在已簽署的 PDF 中編輯簽名而不破壞簽名的有效性嗎？</strong><br>
是的。SDK 只會更新視覺呈現，同時保持加密雜湊不變，因而文件仍然有效。</p>
</li>
<li>
<p><strong>在 Signed PDF 中編輯簽名 與 在 .NET 中的 Signed PDF 編輯簽名 有何不同？</strong><br>
前者描述通用操作，而後者強調實作使用的是 GroupDocs.Signature Cloud SDK 的 .NET 版本。</p>
</li>
<li>
<p><strong>編輯簽名後，我需要重新簽署 PDF 嗎？</strong><br>
不需要。SDK 只會修改現有簽名物件的外觀；原始的數位簽名保持不變。</p>
</li>
<li>
<p><strong>是否有可下載的示例專案？</strong><br>
是的，完整的示例可在 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="閱讀更多">閱讀更多</h2>
<ul>
<li><a href="https://blog.groupdocs.cloud/zh-hant/signature/build-custom-electronic-signature-workflows-in-your-asp-net-csharp-vb-net-apps/">在您的 ASP.NET、C#、VB.NET 應用程式中構建自訂電子簽名工作流程</a></li>
<li><a href="https://blog.groupdocs.cloud/zh-hant/signature/edit-signatures-in-signed-pdf-documents-using-python/">使用 Python 編輯已簽署 PDF 文件中的簽名</a></li>
<li><a href="https://blog.groupdocs.cloud/zh-hant/signature/digitally-sign-a-word-document-online/">如何在線上對 Word 文件進行數位簽署</a></li>
</ul>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
