Edycja cyfrowego podpisu po podpisaniu pliku PDF jest częstym wymogiem, szczególnie gdy zmieniają się zasady biznesowe lub gdy podpis musi zostać przemiesiony. GroupDocs.Signature Cloud SDK for .NET udostępnia solidną bibliotekę, która pozwala programowo edytować podpisy w podpisanych plikach PDF bez naruszania ważności dokumentu. Ten przewodnik przeprowadzi Cię przez kompletną, krok po kroku implementację, obejmując wszystko od konfiguracji po pobranie zaktualizowanego pliku, abyś mógł z pewnością zintegrować edycję podpisów w swoich aplikacjach C#.

Pełny przykład kodu: Edytowanie podpisów w podpisanym pliku PDF

Poniższy przykład pokazuje, jak edytować podpisy w podpisanym pliku PDF przy użyciu 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);
    }
}

Uwaga: Ten przykład kodu demonstruje podstawową funkcjonalność. Przed użyciem go w swoim projekcie upewnij się, że zaktualizowałeś wszystkie ścieżki plików i wartości konfiguracyjne, aby odpowiadały rzeczywistemu środowisku, zweryfikuj, że wszystkie wymagane zależności są poprawnie zainstalowane, oraz dokładnie przetestuj w środowisku deweloperskim. Jeśli napotkasz jakiekolwiek problemy, odwołaj się do oficjalnej dokumentacji lub skontaktuj się z zespołem wsparcia w celu uzyskania pomocy.

Polecenia cURL do edycji podpisów za pomocą REST API

Poniżej znajduje się zestaw poleceń cURL, które wykonują tę samą operację edycji podpisów w podpisanym pliku PDF przy użyciu REST API.

Najpierw uzyskaj token dostępu.

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"
         }'

Prześlij źródłowy plik PDF do pamięci w chmurze.

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"

Zaktualizuj pierwszy podpis (przykład modyfikuje podpis tekstowy).

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"
           }
         }'

Pobierz zaktualizowany plik PDF.

curl -X GET "https://api.groupdocs.cloud/v2.0/storage/file/output.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o output.pdf

Aby uzyskać więcej szczegółów, zobacz oficjalną dokumentację API.

Understanding Signature Modification in C#

Poniżej znajduje się zwięzłe omówienie, jak dostarczony kod C# realizuje edycję podpisów w podpisanym dokumencie PDF.

  1. Skonfiguruj uwierzytelnianie - Obiekt Configuration jest wypełniany wartościami ClientId i ClientSecret. To ustanawia bezpieczną sesję z usługą w chmurze.
var config = new Configuration { ClientId = "YOUR_CLIENT_ID", ClientSecret = "YOUR_CLIENT_SECRET" };
  1. Utwórz instancje API - SignatureApi i StorageApi są tworzone przy użyciu konfiguracji, zapewniając dostęp do endpointów związanych z podpisami i przechowywaniem.
var signatureApi = new SignatureApi(config);
var storageApi = new StorageApi(config);
  1. Upload If Missing - Kod sprawdza, czy input.pdf istnieje w pamięci chmurowej; jeśli nie, przesyła plik przy użyciu UploadFile. Zapewnia to, że kolejne operacje mają dokument źródłowy.
storageApi.UploadFile(new UploadFileRequest(new UploadFile { Path = inputFilePath, File = fileStream }));
  1. Pobierz istniejące podpisy - GetSignatures pobiera wszystkie podpisy w dokumencie. Pierwszy podpis jest wybierany do edycji, a jego SignatureId jest przechowywany.

    var signaturesResponse = signatureApi.GetSignatures(getSignaturesRequest);
    var signatureToEdit = signaturesResponse.Signatures[0];
    
  2. Przygotuj Zaktualizowane Opcje - Nowy obiekt SignTextOptions kopiuje istniejące właściwości i zmienia tekst, pozycję oraz czcionkę. SignatureId i PageNumber są zachowane, aby skierować się do właściwego podpisu.

    var textOptions = new SignTextOptions { Text = "Edited Signature Text", Left = signatureToEdit.Left + 10, /* ... */ };
    
  3. Wykonaj aktualizację - UpdateSignature wysyła zmodyfikowane opcje do serwera, który nadpisuje podpis, pozostawiając resztę pliku PDF nietkniętą.

    var updateResponse = signatureApi.UpdateSignature(updateSignatureRequest);
    
  4. Pobierz wynik - W końcu zaktualizowany plik PDF jest pobierany z magazynu do lokalnego systemu plików.

using (var downloadStream = storageApi.DownloadFile(downloadRequest))

Aby uzyskać pełną listę klas i metod, odwołaj się do referencji API.

Przygotowanie środowiska

Przygotuj swoje środowisko programistyczne przed napisaniem jakiegokolwiek kodu.

  1. Zainstaluj SDK za pomocą NuGet
dotnet add package GroupDocs.signature-Cloud

Możesz także pobrać najnowszy pakiet ze strony wydania.

  1. Skonfiguruj środowisko .NET - Biblioteka wymaga .NET 6.0 lub nowszego. Upewnij się, że Twój projekt celuje w kompatybilny framework.

  2. Utwórz konto GroupDocs Cloud - Zarejestruj się w portalu GroupDocs i uzyskaj swój ClientId oraz ClientSecret. Te dane uwierzytelniające są potrzebne przy każdym wywołaniu API.

  3. Skonfiguruj poświadczenia - Przechowuj poświadczenia w bezpieczny sposób, na przykład w appsettings.json lub zmiennych środowiskowych, i odwołuj się do nich przy tworzeniu obiektu Configuration.

  4. Sprawdź łączność - Uruchom proste żądanie (np. storageApi.ObjectExists), aby potwierdzić, że Twoje poświadczenia są ważne i usługa jest dostępna.

Po wykonaniu tych kroków jesteś gotowy uruchomić przykład kodu i rozpocząć edycję podpisów.

Podsumowanie

Edycja podpisów w podpisanych dokumentach PDF jest prosta dzięki GroupDocs.Signature Cloud SDK for .NET. Postępując zgodnie z powyższymi krokami, możesz zlokalizować istniejący podpis, zmodyfikować jego właściwości wizualne i zachować integralność dokumentu, wszystko z poziomu aplikacji C#. Pamiętaj, aby zapewnić odpowiednią licencję do użytku produkcyjnego; możesz zakupić pełną licencję lub uzyskać tymczasową licencję ze strony tymczasowej licencji. Rozpocznij integrację edycji podpisów już dziś i usprawnij przepływy pracy z dokumentami.

FAQ

  • Czy mogę edytować podpisy w podpisanym pliku PDF bez naruszania ważności podpisu?
    Tak. SDK aktualizuje tylko wizualną reprezentację, zachowując niezmieniony kryptograficzny hash, dzięki czemu dokument pozostaje ważny.

  • Jaka jest różnica między edytowaniem podpisów w podpisanym PDF a edytowaniem podpisów w podpisanym PDF w .NET?
    Pierwsze opisuje ogólną operację, natomiast drugie podkreśla, że implementacja używa wersji .NET SDK GroupDocs.Signature Cloud.

  • Czy muszę ponownie podpisać plik PDF po edycji podpisu?
    Nie. SDK modyfikuje wygląd istniejącego obiektu podpisu; oryginalny podpis cyfrowy pozostaje niezmieniony.

  • Czy istnieje przykładowy projekt, który mogę pobrać?
    Tak, kompletny przykład jest dostępny w repozytorium GitHub: https://github.com/groupdocs-signature-cloud/groupdocs-signature-cloud-dotnet.

Read More