Редагування цифрового підпису після підписання PDF є поширеною вимогою, особливо коли змінюються бізнес‑правила або коли підпис потрібно перемістити. GroupDocs.Signature Cloud SDK for .NET надає потужну бібліотеку, яка дозволяє програмно редагувати підписи у підписаних PDF‑файлах без шкоди для дійсності документа. Цей посібник крок за кроком проводить вас через повну реалізацію, охоплюючи все від налаштування до завантаження оновленого файлу, щоб ви могли впевнено інтегрувати редагування підписів у ваші C# застосунки.
Повний приклад коду: редагування підписів у підписаному PDF
Наступний приклад демонструє, як редагувати підписи у підписаному PDF за допомогою 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);
}
}
Примітка: Цей приклад коду демонструє основну функціональність. Перш ніж використовувати його у вашому проєкті, переконайтеся, що оновили всі шляхи до файлів та значення конфігурації відповідно до вашого реального середовища, перевірте, що всі необхідні залежності правильно встановлені, і ретельно протестуйте у вашому середовищі розробки. Якщо ви зіткнетеся з будь‑якими проблемами, будь ласка, зверніться до офіційної документації або до команди підтримки за допомогою.
cURL Команди для редагування підписів через REST API
Нижче наведено набір команд cURL, які виконують ту ж операцію редагування підписів у підписаному PDF за допомогою REST API.
Спочатку отримайте токен доступу.
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);
- Download Result - Нарешті оновлений PDF завантажується зі сховища у локальну файлову систему.
using (var downloadStream = storageApi.DownloadFile(downloadRequest))
Для повного переліку класів і методів зверніться до довідки API.
Підготовка середовища
Підготуйте середовище розробки перед написанням коду.
- Встановіть SDK через NuGet
dotnet add package GroupDocs.signature-Cloud
Ви також можете завантажити останній пакет зі сторінки випуску.
Налаштування .NET Runtime - Бібліотека вимагає .NET 6.0 або новішу. Переконайтеся, що ваш проєкт націлений на сумісну платформу.
Create a GroupDocs Cloud Account - Зареєструйтесь у порталі GroupDocs і отримайте ваші
ClientIdтаClientSecret. Ці облікові дані потрібні для кожного виклику API.Налаштування облікових даних - Зберігайте облікові дані безпечно, наприклад у
appsettings.jsonабо змінних середовища, і посилайтеся на них під час створення об’єктаConfiguration.Перевірте підключення - Виконайте простий запит (наприклад,
storageApi.ObjectExists), щоб підтвердити, що ваші облікові дані дійсні і сервіс доступний.
Після завершення цих кроків ви готові запустити приклад коду та розпочати редагування підписів.
Висновок
Редагування підписів у підписаних PDF‑документах просте за допомогою GroupDocs.Signature Cloud SDK for .NET. Дотримуючись наведених вище кроків, ви можете знайти існуючий підпис, змінити його візуальні властивості та зберегти цілісність документа безпосередньо з програми C#. Пам’ятайте про необхідність отримання належної ліцензії для використання у продакшн‑середовищі; ви можете придбати повну ліцензію або отримати тимчасову ліцензію на сторінці тимчасової ліцензії. Почніть інтегрувати редагування підписів вже сьогодні та оптимізуйте свої документообігові процеси.
Питання та відповіді
Чи можу я редагувати підписи у підписаному PDF, не порушуючи дійсність підпису?
Так. SDK оновлює лише візуальне представлення, зберігаючи криптографічний хеш без змін, тому документ залишається дійсним.What is the difference between edit Signatures in Signed PDF and edit Signatures in Signed PDF in .NET?
Перше описує загальну операцію, тоді як друге підкреслює, що реалізація використовує .NET-версію GroupDocs.Signature Cloud SDK.Чи потрібно повторно підписувати PDF після редагування підпису?
Ні. SDK змінює вигляд існуючого об’єкта підпису; оригінальний цифровий підпис залишається незмінним.Чи є зразковий проєкт, який я можу завантажити?
Так, повний зразок доступний у репозиторії GitHub: https://github.com/groupdocs-signature-cloud/groupdocs-signature-cloud-dotnet.
