İmzalanmış bir PDF dosyasına dijital imza ekledikten sonra imzayı düzenlemek, özellikle iş kuralları değiştiğinde veya imzanın konumunun yeniden ayarlanması gerektiğinde sıkça ihtiyaç duyulan bir durumdur. GroupDocs.Signature Cloud SDK for .NET programatik olarak İmzalanmış PDF dosyalarındaki İmzaları, belgenin geçerliliğini bozmadan düzenlemenizi sağlayan sağlam bir kütüphane sunar. Bu kılavuz, yapılandırmadan güncellenmiş dosyanın indirilmesine kadar her şeyi kapsayan eksiksiz, adım adım bir uygulamayı size gösterir, böylece C# uygulamalarınıza imza düzenlemeyi güvenle entegre edebilirsiniz.

Tam Kod Örneği: İmzalı PDF’de İmzaları Düzenleme

Aşağıdaki örnek, GroupDocs.Signature Cloud SDK for .NET kullanarak İmzalı PDF’de imzaları nasıl düzenleyeceğinizi gösterir.

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);
    }
}

Not: Bu kod örneği temel işlevselliği gösterir. Projenizde kullanmadan önce, dosya yollarını ve yapılandırma değerlerini gerçek ortamınıza uygun şekilde güncellediğinizden, tüm gerekli bağımlılıkların doğru şekilde yüklendiğinden emin olun ve geliştirme ortamınızda kapsamlı bir şekilde test edin. Herhangi bir sorunla karşılaşırsanız, lütfen resmi belgeler adresine bakın veya destek ekibi ile iletişime geçin.

REST API üzerinden İmza Düzenleme için cURL Komutları

Aşağıda, REST API’yi kullanarak İmzalı PDF’de İmzaları düzenleme işlemini aynı şekilde gerçekleştiren bir dizi cURL komutu bulunmaktadır.

İlk olarak, bir erişim belirteci alın.

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

Kaynak PDF’yi bulut depolamaya yükleyin.

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"

İlk imzayı güncelle (örnek bir metin imzasını değiştirir).

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

Güncellenmiş PDF’yi indirin.

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

Daha fazla ayrıntı için, resmi API belgelerine bakın.

C#‘da İmza Değişikliğini Anlamak

Aşağıda, sağlanan C# kodunun İmzalı PDF iş akışında İmzaları düzenleme sürecini nasıl gerçekleştirdiğine dair kısa bir özet bulunmaktadır.

  1. Kimlik Doğrulamayı Yapılandır - Configuration nesnesi ClientId ve ClientSecret değerleriyle doldurulur. Bu, bulut hizmetiyle güvenli bir oturum oluşturur.
var config = new Configuration { ClientId = "YOUR_CLIENT_ID", ClientSecret = "YOUR_CLIENT_SECRET" };
  1. API Örneklerini Oluşturun - SignatureApi ve StorageApi yapılandırma kullanılarak örneklenir, imza‑ile ilgili ve depolama‑ile ilgili uç noktalara erişim sağlar.
var signatureApi = new SignatureApi(config);
var storageApi = new StorageApi(config);
  1. Eksikse Yükle - Kod, input.pdf dosyasının bulut depolamada mevcut olup olmadığını kontrol eder; eğer yoksa, dosyayı UploadFile kullanarak yükler. Bu, sonraki işlemlerin bir kaynak belgeye sahip olmasını sağlar.
storageApi.UploadFile(new UploadFileRequest(new UploadFile { Path = inputFilePath, File = fileStream }));
  1. Mevcut İmzaları Al - GetSignatures belgedeki tüm imzaları alır. İlk imza düzenleme için seçilir ve SignatureId saklanır.
var signaturesResponse = signatureApi.GetSignatures(getSignaturesRequest);
var signatureToEdit = signaturesResponse.Signatures[0];
  1. Güncellenmiş Seçenekleri Hazırla - Yeni bir SignTextOptions nesnesi mevcut özellikleri kopyalar ve metni, konumu ve yazı tipini değiştirir. SignatureId ve PageNumber doğru imzayı hedeflemek için korunur.

    var textOptions = new SignTextOptions { Text = "Edited Signature Text", Left = signatureToEdit.Left + 10, /* ... */ };
    
  2. Güncellemeyi Yürüt - UpdateSignature sunucuya değiştirilmiş seçenekleri gönderir, bu da imzayı yeniden yazar ve PDF’in geri kalanını dokunulmaz bırakır.

var updateResponse = signatureApi.UpdateSignature(updateSignatureRequest);
  1. İndirme Sonucu - Son olarak, güncellenmiş PDF depolamadan yerel dosya sistemine indirilir.
using (var downloadStream = storageApi.DownloadFile(downloadRequest))

Sınıflar ve yöntemlerin tam listesi için, API referansı adresine bakın.

Ortamı Hazır Hale Getirme

Kod yazmaya başlamadan önce geliştirme ortamınızı hazırlayın.

  1. SDK’yı NuGet aracılığıyla kurun
dotnet add package GroupDocs.signature-Cloud

Ayrıca en son paketi sürüm sayfası adresinden indirebilirsiniz.

  1. Set Up .NET Runtime - Kütüphane .NET 6.0 veya daha yenisini gerektirir. Projenizin uyumlu bir çerçeveye hedeflendiğinden emin olun.

  2. Bir GroupDocs Cloud Account oluşturun - GroupDocs portalına kaydolun ve ClientId ve ClientSecret değerlerinizi edinin. Bu kimlik bilgileri her API çağrısı için gereklidir.

  3. Kimlik Bilgilerini Yapılandırın - Kimlik bilgilerini güvenli bir şekilde depolayın, örneğin appsettings.json veya ortam değişkenlerinde, ve Configuration nesnesini oluştururken onlara referans verin.

  4. Bağlantıyı Doğrula - Kimlik bilgilerinizin geçerli olduğunu ve hizmetin erişilebilir olduğunu doğrulamak için basit bir istek çalıştırın (ör., storageApi.ObjectExists).

Bu adımları tamamladıktan sonra, kod örneğini çalıştırmaya ve imzaları düzenlemeye hazırsınız.

Sonuç

İmzalı PDF belgelerinde İmzaları düzenlemek, GroupDocs.Signature Cloud SDK for .NET ile oldukça basittir. Yukarıdaki adımları izleyerek mevcut bir imzayı bulabilir, görsel özelliklerini değiştirebilir ve belge bütünlüğünü bir C# uygulamasından koruyabilirsiniz. Üretim kullanımı için uygun bir lisans almayı unutmayın; tam bir lisans satın alabilir veya geçici bir lisansı geçici lisans sayfası üzerinden edinebilirsiniz. İmza düzenlemeyi bugün entegre etmeye başlayın ve belge iş akışlarınızı hızlandırın.

FAQs

  • İmzalı PDF’deki İmzaları, imzanın geçerliliğini bozmadan düzenleyebilir miyim?
    Evet. SDK yalnızca görsel temsili günceller ve kriptografik hash’i aynı tutar, böylece belge geçerli kalır.

  • Signed PDF’de İmzaları Düzenleme ile .NET’te Signed PDF’de İmzaları Düzenleme arasındaki fark nedir?
    İlki genel işlemi tanımlarken, ikincisi uygulamanın GroupDocs.Signature Cloud SDK’nın .NET sürümünü kullandığını vurgular.

  • PDF’yi bir imzayı düzenledikten sonra yeniden imzalamam gerekiyor mu?
    Hayır. SDK, mevcut imza nesnesinin görünümünü değiştirir; orijinal dijital imza değişmeden kalır.

  • İndirilebilecek bir örnek proje var mı?
    Evet, tam bir örnek GitHub deposunda mevcuttur: https://github.com/groupdocs-signature-cloud/groupdocs-signature-cloud-dotnet.

Read More