在 PDF 已簽署後編輯數位簽名是常見需求,尤其在業務規則變更或需要重新定位簽名時。GroupDocs.Signature Cloud SDK for .NET 提供了強大的函式庫,讓您能以程式方式編輯已簽署 PDF 檔案中的簽名,同時不影響文件的有效性。本指南將逐步帶您完成完整實作,涵蓋從配置到下載更新檔案的所有步驟,讓您能自信地將簽名編輯整合到 C# 應用程式中。
完整程式碼範例:編輯已簽署 PDF 中的簽名
以下範例示範如何使用 GroupDocs.Signature Cloud SDK for .NET 編輯已簽署 PDF 中的簽名。
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);
}
}
注意: 此代碼示例展示了核心功能。 在將其用於您的項目之前,請確保更新所有文件路徑和配置值以匹配實際環境,驗證所有必需的依賴項已正確安裝,並在開發環境中徹底測試。 如果遇到任何問題,請參閱官方文檔或聯繫支持團隊尋求幫助。
用於簽名編輯的 cURL 命令(透過 REST API)
以下是一組 cURL 命令,用於透過 REST API 執行相同的「在已簽署的 PDF 中編輯簽名」操作。
首先,獲取訪問令牌。
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"
}'
將來源 PDF 上傳至雲端儲存。
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"
更新第一個簽名(示例修改文字簽名)。
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"
}
}'
下載更新的 PDF。
curl -X GET "https://api.groupdocs.cloud/v2.0/storage/file/output.pdf" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o output.pdf
欲了解更多詳情,請參閱官方 API 文件。
了解 C# 中的簽名修改
以下是對提供的 C# 代碼如何實現已簽署 PDF 工作流中編輯簽名的簡要說明。
- 配置身份驗證 -
Configuration物件已使用ClientId和ClientSecret進行填充。這會在雲服務中建立安全會話。
var config = new Configuration { ClientId = "YOUR_CLIENT_ID", ClientSecret = "YOUR_CLIENT_SECRET" };
- 建立 API 實例 -
SignatureApi和StorageApi使用配置實例化,從而訪問與簽名相關和與存儲相關的端點。
var signatureApi = new SignatureApi(config);
var storageApi = new StorageApi(config);
如果缺少則上傳 - 程式碼會檢查雲端儲存中是否存在
input.pdf;如果不存在,則使用UploadFile上傳檔案。這確保後續操作有來源文件。storageApi.UploadFile(new UploadFileRequest(new UploadFile { Path = inputFilePath, File = fileStream }));檢索現有簽名 -
GetSignatures會取得文件中的所有簽名。第一個簽名被選取以進行編輯,並將其SignatureId儲存。
var signaturesResponse = signatureApi.GetSignatures(getSignaturesRequest);
var signatureToEdit = signaturesResponse.Signatures[0];
準備更新選項 - 新的
SignTextOptions物件會複製現有屬性,並更改文字、位置和字型。SignatureId與PageNumber會被保留,以定位正確的簽章。var textOptions = new SignTextOptions { Text = "Edited Signature Text", Left = signatureToEdit.Left + 10, /* ... */ };執行更新 -
UpdateSignature將修改過的選項發送到伺服器,伺服器會重新寫入簽名,同時保持 PDF 其餘部分不變。var updateResponse = signatureApi.UpdateSignature(updateSignatureRequest);下載結果 - 最後,已更新的 PDF 從存儲下載到本地檔案系統。
using (var downloadStream = storageApi.DownloadFile(downloadRequest))
如需完整的類別和方法清單,請參閱 API 參考。
準備開發環境
在編寫任何程式碼之前,先準備好您的開發環境。
- 通過 NuGet 安裝 SDK
dotnet add package GroupDocs.signature-Cloud
您也可以從發佈頁面下載最新的套件。
設定 .NET 執行環境 - 此庫需要 .NET 6.0 或更高版本。確保您的專案目標為相容的框架。
Create a GroupDocs Cloud Account - 在 GroupDocs 入口網站註冊並取得您的
ClientId和ClientSecret。這些憑證在每次 API 呼叫時都需要。配置憑證 - 安全地存儲憑證,例如在
appsettings.json或環境變數中,並在構建Configuration物件時引用它們。驗證連接性 - 執行簡單請求(例如
storageApi.ObjectExists)以確認您的憑證有效且服務可訪問。
完成這些步驟後,您已準備好執行程式碼範例並開始編輯簽名。
結論
使用 GroupDocs.Signature Cloud SDK for .NET 編輯已簽署的 PDF 文件中的簽名非常簡單。按照上述步驟,您可以定位現有簽名、修改其視覺屬性,並從 C# 應用程式中保持文件的完整性。請務必為生產環境獲取合適的授權;您可以購買完整授權或從 臨時授權頁面 獲取臨時授權。立即開始整合簽名編輯,簡化您的文件工作流程。
常見問題
我可以在已簽署的 PDF 中編輯簽名而不破壞簽名的有效性嗎?
是的。SDK 只會更新視覺呈現,同時保持加密雜湊不變,因而文件仍然有效。在 Signed PDF 中編輯簽名 與 在 .NET 中的 Signed PDF 編輯簽名 有何不同?
前者描述通用操作,而後者強調實作使用的是 GroupDocs.Signature Cloud SDK 的 .NET 版本。編輯簽名後,我需要重新簽署 PDF 嗎?
不需要。SDK 只會修改現有簽名物件的外觀;原始的數位簽名保持不變。是否有可下載的示例專案?
是的,完整的示例可在 GitHub 存儲庫中獲取: https://github.com/groupdocs-signature-cloud/groupdocs-signature-cloud-dotnet
