디지털 서명이 된 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);
    }
}

참고: 이 코드 예제는 핵심 기능을 보여줍니다. 프로젝트에서 사용하기 전에 파일 경로와 구성 값을 실제 환경에 맞게 업데이트하고, 모든 필수 종속성이 올바르게 설치되었는지 확인하며, 개발 환경에서 충분히 테스트하십시오. 문제가 발생하면 공식 문서를 참고하거나 지원 팀에게 문의하십시오.

REST API를 사용한 서명 편집용 cURL 명령

아래는 REST API를 사용하여 서명된 PDF에서 서명을 편집하는 동일한 작업을 수행하는 cURL 명령 모음입니다.

먼저 액세스 토큰을 얻으세요.

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 워크플로우에서 서명을 편집하는 작업을 수행하는 방법에 대한 간결한 요약입니다.

  1. 인증 구성 - Configuration 객체가 ClientIdClientSecret으로 채워집니다. 이는 클라우드 서비스와의 보안 세션을 설정합니다.
var config = new Configuration { ClientId = "YOUR_CLIENT_ID", ClientSecret = "YOUR_CLIENT_SECRET" };
  1. Create API Instances - SignatureApiStorageApi는 구성(configuration)을 사용하여 인스턴스화되며, 서명 관련 및 저장소 관련 엔드포인트에 접근할 수 있습니다.
var signatureApi = new SignatureApi(config);
var storageApi = new StorageApi(config);
  1. 누락된 경우 업로드 - 코드는 input.pdf가 클라우드 스토리지에 존재하는지 확인합니다; 존재하지 않을 경우 UploadFile을 사용하여 파일을 업로드합니다. 이렇게 하면 이후 작업에 사용할 원본 문서가 확보됩니다.
storageApi.UploadFile(new UploadFileRequest(new UploadFile { Path = inputFilePath, File = fileStream }));
  1. 기존 서명 검색 - GetSignatures는 문서의 모든 서명을 가져옵니다. 첫 번째 서명이 편집을 위해 선택되고, 해당 서명의 SignatureId가 저장됩니다.

    var signaturesResponse = signatureApi.GetSignatures(getSignaturesRequest);
    var signatureToEdit = signaturesResponse.Signatures[0];
    
  2. 업데이트된 옵션 준비 - 새로운 SignTextOptions 객체는 기존 속성을 복사하고 텍스트, 위치 및 글꼴을 변경합니다. SignatureIdPageNumber는 올바른 서명을 대상으로 지정하기 위해 유지됩니다.

var textOptions = new SignTextOptions { Text = "Edited Signature Text", Left = signatureToEdit.Left + 10, /* ... */ };
  1. 업데이트 실행 - UpdateSignature는 수정된 옵션을 서버에 전송하여 서명을 다시 쓰지만 PDF의 나머지 부분은 그대로 둡니다.

    var updateResponse = signatureApi.UpdateSignature(updateSignatureRequest);
    
  2. 다운로드 결과 - 마지막으로, 업데이트된 PDF가 스토리지에서 로컬 파일 시스템으로 다운로드됩니다.

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

전체 클래스와 메서드 목록은 API 참조를 참조하십시오.

환경 준비하기

코드를 작성하기 전에 개발 환경을 준비하세요.

  1. NuGet을 통해 SDK 설치
dotnet add package GroupDocs.signature-Cloud

또한 최신 패키지를 release page에서 다운로드할 수 있습니다.

  1. .NET 런타임 설정 - 라이브러리는 .NET 6.0 이상이 필요합니다. 프로젝트가 호환 가능한 프레임워크를 대상으로 하는지 확인하십시오.

  2. Create a GroupDocs Cloud Account - GroupDocs 포털에 등록하고 ClientIdClientSecret을 얻으세요. 이 자격 증명은 모든 API 호출에 필요합니다.

  3. 자격 증명 구성 - 자격 증명을 안전하게 저장하십시오. 예를 들어 appsettings.json 또는 환경 변수에 저장하고, Configuration 객체를 구성할 때 이를 참조하십시오.

  4. 연결 확인 - 간단한 요청(e.g., storageApi.ObjectExists)을 실행하여 자격 증명이 유효하고 서비스에 접근할 수 있는지 확인합니다.

이러한 단계가 완료되면 코드 예제를 실행하고 서명을 편집할 준비가 됩니다.

결론

서명된 PDF 문서에서 서명을 편집하는 것은 GroupDocs.Signature Cloud SDK for .NET을 사용하면 간단합니다. 위 단계들을 따라 하면 기존 서명을 찾고, 시각적 속성을 수정하며, 문서 무결성을 C# 애플리케이션에서 그대로 유지할 수 있습니다. 프로덕션 사용을 위해 적절한 라이선스를 확보하는 것을 기억하세요; 전체 라이선스를 구매하거나 임시 라이선스 페이지에서 임시 라이선스를 얻을 수 있습니다. 오늘 바로 서명 편집을 통합하여 문서 워크플로를 간소화하세요.

FAQs

  • 서명된 PDF에서 서명을 편집해도 서명의 유효성이 손상되지 않나요?
    예. SDK는 암호 해시를 그대로 유지하면서 시각적 표현만 업데이트하므로 문서는 유효성을 유지합니다.

  • 편집 서명을 사용한 서명된 PDF와 .NET에서 편집 서명을 사용한 서명된 PDF의 차이는 무엇입니까?
    전자는 일반적인 작업을 설명하고, 후자는 구현이 GroupDocs.Signature Cloud SDK의 .NET 버전을 사용한다는 점을 강조합니다.

  • PDF 서명을 편집한 후 다시 서명해야 하나요?
    아니요. SDK는 기존 서명 객체의 모양만 수정합니다; 원래 디지털 서명은 변경되지 않습니다.

  • 샘플 프로젝트를 다운로드할 수 있나요?
    예, 전체 샘플은 GitHub 리포지토리에서 확인할 수 있습니다: https://github.com/groupdocs-signature-cloud/groupdocs-signature-cloud-dotnet.

Read More