การแก้ไขลายเซ็นดิจิทัลหลังจากที่ 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 ที่มีลายเซ็น

  1. กำหนดค่าการรับรองตัวตน - Configuration object ถูกกำหนดค่าโดยใช้ ClientId และ ClientSecret. สิ่งนี้ทำให้สร้างเซสชันที่ปลอดภัยกับบริการคลาวด์.
var config = new Configuration { ClientId = "YOUR_CLIENT_ID", ClientSecret = "YOUR_CLIENT_SECRET" };
  1. Create API Instances - SignatureApi และ StorageApi ถูกสร้างขึ้นโดยใช้การกำหนดค่า ทำให้เข้าถึง endpoint ที่เกี่ยวข้องกับลายเซ็นและการจัดเก็บได้
var signatureApi = new SignatureApi(config);
var storageApi = new StorageApi(config);
  1. Upload If Missing - โค้ดตรวจสอบว่า 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];
  1. เตรียมตัวเลือกที่อัปเดต - อ็อบเจ็กต์ SignTextOptions ใหม่จะคัดลอกคุณสมบัติที่มีอยู่และเปลี่ยนข้อความ, ตำแหน่ง, และแบบอักษร. SignatureId และ PageNumber จะถูกเก็บไว้เพื่อระบุลายเซ็นที่ถูกต้อง.

    var textOptions = new SignTextOptions { Text = "Edited Signature Text", Left = signatureToEdit.Left + 10, /* ... */ };
    
  2. ดำเนินการอัปเดต - UpdateSignature ส่งตัวเลือกที่แก้ไขแล้วไปยังเซิร์ฟเวอร์ ซึ่งเขียนลายเซ็นใหม่โดยไม่กระทบส่วนที่เหลือของ PDF.

    var updateResponse = signatureApi.UpdateSignature(updateSignatureRequest);
    
  3. ผลลัพธ์การดาวน์โหลด - สุดท้าย ไฟล์ PDF ที่อัปเดตจะถูกดาวน์โหลดจากที่เก็บไปยังระบบไฟล์ในเครื่อง.

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

สำหรับรายการคลาสและเมธอดทั้งหมด โปรดดูที่ API reference.

เตรียมสภาพแวดล้อมให้พร้อม

เตรียมสภาพแวดล้อมการพัฒนาของคุณก่อนเขียนโค้ดใด ๆ.

  1. ติดตั้ง SDK ผ่าน NuGet
dotnet add package GroupDocs.signature-Cloud

คุณยังสามารถดาวน์โหลดแพคเกจล่าสุดจาก หน้า release.

  1. ตั้งค่า .NET Runtime - ไลบรารีต้องการ .NET 6.0 หรือใหม่กว่า. ตรวจสอบให้แน่ใจว่าโครงการของคุณตั้งเป้าหมายเป็นเฟรมเวิร์กที่เข้ากันได้.

  2. Create a GroupDocs Cloud Account - ลงทะเบียนที่พอร์ทัลของ GroupDocs และรับ ClientId และ ClientSecret ของคุณ คำรับรองเหล่านี้จำเป็นสำหรับทุกการเรียก API

  3. Configure Credentials - จัดเก็บข้อมูลประจำตัวอย่างปลอดภัย เช่น ใน appsettings.json หรือ ตัวแปรสภาพแวดล้อม และอ้างอิงพวกมันเมื่อสร้างอ็อบเจกต์ Configuration

  4. ตรวจสอบการเชื่อมต่อ - เรียกคำขออย่างง่าย (เช่น storageApi.ObjectExists) เพื่อยืนยันว่าข้อมูลประจำตัวของคุณถูกต้องและบริการสามารถเข้าถึงได้.

เมื่อทำขั้นตอนเหล่านี้เสร็จแล้ว คุณพร้อมที่จะรันตัวอย่างโค้ดและเริ่มแก้ไขลายเซ็น.

สรุป

การแก้ไขลายเซ็นในเอกสาร PDF ที่มีลายเซ็นเป็นเรื่องง่ายด้วย GroupDocs.Signature Cloud SDK for .NET. โดยทำตามขั้นตอนข้างต้น คุณสามารถค้นหาลายเซ็นที่มีอยู่ ปรับเปลี่ยนคุณสมบัติดีไซน์ของมัน และรักษาความสมบูรณ์ของเอกสารทั้งหมดจากแอปพลิเคชัน C#. อย่าลืมจัดหาลิขสิทธิ์ที่เหมาะสมสำหรับการใช้งานในสภาพแวดล้อมการผลิต; คุณสามารถซื้อไลเซนส์เต็มรูปแบบหรือรับไลเซนส์ชั่วคราวจาก หน้าลิขสิทธิ์ชั่วคราว. เริ่มผสานการแก้ไขลายเซ็นวันนี้และทำให้กระบวนการทำงานกับเอกสารของคุณเป็นระเบียบมากขึ้น.

คำถามที่พบบ่อย

  • ฉันสามารถแก้ไขลายเซ็นใน PDF ที่ลงนามแล้วโดยไม่ทำให้ความถูกต้องของลายเซ็นเสียหายได้หรือไม่?
    ได้. SDK จะอัปเดตเฉพาะการแสดงผลภาพเท่านั้นในขณะที่รักษาแฮชเชิงคริปโตให้คงที่ ดังนั้นเอกสารจะยังคงเป็นที่ถูกต้อง.

  • ความแตกต่างระหว่าง edit Signatures in Signed PDF กับ 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

อ่านเพิ่มเติม