เพิ่มลายเซ็นบาร์โค้ดลงใน PDF ด้วย GroupDocs.Signature Java

ในแอปพลิเคชันที่เน้นเอกสารสมัยใหม่, การเพิ่มลายเซ็นบาร์โค้ด เป็นวิธีที่รวดเร็วและเชื่อถือได้ในการทำให้ PDF สามารถอ่านได้โดยมนุษย์และสแกนได้โดยเครื่อง. บทแนะนำนี้จะพาคุณผ่านทุกขั้นตอน—ตั้งแต่การกำหนดค่า Maven, การจัดรูปแบบบาร์โค้ด, จนถึงการจัดการกรณีไฟล์ขนาดใหญ่—เพื่อให้คุณสามารถผสานลายเซ็นบาร์โค้ดเข้าในโครงการ Java ของคุณได้อย่างมั่นใจ.

คำตอบด่วน

  • บรรทัดแรกของโค้ดเพื่อเริ่มการเซ็นคืออะไร? Signature signature = new Signature("sample.pdf");
  • ต้องใช้ Maven artifact ใด? com.groupdocs:groupdocs-signature:23.10 (เปลี่ยนเป็นเวอร์ชันล่าสุด)
  • ฉันสามารถเซ็น PDF ที่มีการป้องกันด้วยรหัสผ่านได้หรือไม่? ใช่—ส่งรหัสผ่านเมื่อสร้างอ็อบเจ็กต์ Signature.
  • บาร์โค้ดรูปแบบใดบ้างที่รองรับ? มากกว่า 30 รูปแบบ รวมถึง Code128, QR, DataMatrix, และ Aztec.
  • ขนาด heap ที่แนะนำสำหรับ PDF ขนาด 100 MB คือเท่าไหร่? อย่างน้อย -Xmx2g (2 GB) เพื่อหลีกเลี่ยง OutOfMemoryError.

ลายเซ็นบาร์โค้ดคืออะไร?

ลายเซ็นบาร์โค้ด คือบาร์โค้ดที่เครื่องอ่านได้ซึ่งฝังอยู่ใน PDF ทำหน้าที่เป็นเครื่องหมายบ่งชี้การปลอมแปลงและสามารถบรรจุข้อมูลที่กำหนดเอง เช่น รหัสประจำตัว, เวลาประทับ, หรือ URL. มันผสานการตรวจสอบด้วยภาพกับการสแกนอัตโนมัติ ทำให้เหมาะสำหรับการจัดการสินค้าคงคลัง, การปฏิบัติตามกฎระเบียบ, และการอัตโนมัติงานที่มีปริมาณสูง.

ทำไมต้องเพิ่มลายเซ็นบาร์โค้ดด้วย GroupDocs.Signature Java?

GroupDocs.Signature รองรับ กว่า 50 รูปแบบการนำเข้าและส่งออก, ประมวลผล PDF หลายร้อยหน้าโดยไม่ต้องโหลดไฟล์ทั้งหมดเข้าสู่หน่วยความจำ, และมี Java API ที่ใช้งานง่ายซึ่งให้คุณปรับแต่งรายละเอียดภาพของบาร์โค้ดได้อย่างละเอียด. ในการทดสอบเบนช์มาร์ค, การเซ็น PDF 150 หน้าโดยใช้บาร์โค้ด Code128 ใช้เวลา น้อยกว่า 1.2 วินาที บนอินสแตนซ์คลาวด์มาตรฐานที่มี 2 vCPU.

ข้อกำหนดเบื้องต้น

ก่อนที่เราจะเริ่ม, โปรดตรวจสอบว่าคุณมีสิ่งต่อไปนี้:

  • Java Development Kit (JDK) 8 หรือใหม่กว่า (แนะนำ JDK 11 หรือ 17 สำหรับการสนับสนุนระยะยาว)
  • IDE (IntelliJ IDEA, Eclipse, หรือ VS Code พร้อมส่วนขยาย Java)
  • เครื่องมือสร้าง (Maven 3.6+ หรือ Gradle 7.0+)
  • ไลบรารี GroupDocs.Signature Java (เราจะอธิบายการตั้งค่า Maven & Gradle ด้านล่าง)
  • ความคุ้นเคยพื้นฐานกับแนวคิด OOP ของ Java และโครงสร้างโปรเจกต์ Maven/Gradle

ไลบรารีและการพึ่งพาที่จำเป็น

GroupDocs.Signature ผสานรวมได้อย่างราบรื่นกับ Maven หรือ Gradle. เลือกเครื่องมือสร้างที่คุณใช้อยู่แล้ว:

Maven Setup

```xml
<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-signature</artifactId>
    <version>23.12</version>
</dependency>

Gradle Setup

```gradle
implementation 'com.groupdocs:groupdocs-signature:23.12'

หากคุณต้องการจัดการ JAR ด้วยตนเอง, ดาวน์โหลดเวอร์ชันล่าสุดจาก GroupDocs.Signature for Java releases แล้วเพิ่มลงใน classpath ของคุณ.

ขั้นตอนการรับใบอนุญาต

GroupDocs มีโมเดลใบอนุญาตสามแบบ:

  • Free Trial – การเข้าถึงคุณสมบัติเต็มรูปแบบเป็นเวลา 30 วัน (ใส่ลายน้ำบน PDF ที่เซ็นแล้ว)
  • Temporary License – การทดลองต่ออายุโดยไม่มีข้อจำกัดคุณสมบัติ (เหมาะสำหรับสายงานการพัฒนา)
  • Full License – พร้อมใช้งานในการผลิต, รวมการสนับสนุนระดับสูงและไม่มีลายน้ำ

รับใบอนุญาตที่เหมาะสมได้ที่ GroupDocs Licensing. แม้ในช่วงทดลองคุณก็สามารถรันโค้ดได้ในเครื่องของคุณ; เพียงจำไว้ว่าให้เปลี่ยนคีย์ทดลองเป็นคีย์ถาวรก่อนเปิดใช้งานจริง.

วิธีเพิ่มลายเซ็นบาร์โค้ดลงใน PDF ด้วย GroupDocs.Signature Java?

คลาส Signature เป็นจุดเริ่มต้นหลักสำหรับการทำงานกับเอกสารใน GroupDocs.Signature.
คลาส BarcodeSignOptions ระบุข้อมูล, ประเภท, และลักษณะการแสดงผลของบาร์โค้ด.

โหลด PDF ต้นฉบับของคุณด้วย new Signature("source.pdf"), ตั้งค่าอ็อบเจ็กต์ BarcodeSignOptions ด้วยข้อมูลและสไตล์ที่ต้องการ, จากนั้นเรียก signature.sign("output.pdf", options). รูปแบบสามขั้นตอนนี้จัดการ I/O ของไฟล์, การสร้างบาร์โค้ด, และการเขียน PDF ในการเรียกเดียวที่ปลอดภัยต่อเธรด, และทำงานกับ PDF ตั้งแต่หลายกิโลไบต์จนถึงหลายร้อยเมกะไบต์.

ขั้นตอนที่ 1: เริ่มต้นอ็อบเจ็กต์ Signature

คลาส Signature เป็นจุดเริ่มต้นของ GroupDocs.Signature สำหรับการดำเนินการเซ็นทั้งหมด. มันแสดงถึงเอกสาร PDF หนึ่งไฟล์ในหน่วยความจำและใช้การโหลดแบบ lazy เพื่อรักษาการใช้หน่วยความจำให้ต่ำ.

```java
import com.groupdocs.signature.Signature;

public class InitializeSignature {
    public static void main(String[] args) {
        Signature signature = new Signature("YOUR_DOCUMENT_DIRECTORY/sample.pdf");
        System.out.println("GroupDocs.Signature initialized successfully.");
    }
}

คำอธิบาย:

  • filePath ชี้ไปยัง PDF ต้นฉบับที่คุณต้องการเซ็น.
  • outputFilePath คือที่ที่ PDF ที่เซ็นแล้วจะถูกบันทึก, รักษาไฟล์ต้นฉบับไว้.
  • บล็อก try‑catch ทำให้การจัดการข้อผิดพลาด I/O, ไฟล์หาย, หรือปัญหาการอนุญาตเป็นไปอย่างราบรื่น.

ขั้นตอนที่ 2: ตั้งค่า Barcode Sign Options

BarcodeSignOptions ให้คุณกำหนดคุณลักษณะทั้งหมดของบาร์โค้ด—ประเภท, ข้อมูล, ตำแหน่ง, สี, เส้นขอบ, และแม้กระทั่งว่าจะคืนภาพบาร์โค้ดดิบหรือไม่.

```java
import com.groupdocs.signature.Signature;
import com.groupdocs.signature.exception.GroupDocsSignatureException;
import java.nio.file.Paths;
import java.io.File;

public class Feature1 {
    public static void run() throws Exception {
        String filePath = "YOUR_DOCUMENT_DIRECTORY/sample.pdf";
        String outputFilePath = new File("YOUR_OUTPUT_DIRECTORY", "SignedOutputSample.pdf").getPath();

        try {
            Signature signature = new Signature(filePath);
            System.out.println("Signature initialized and paths set.");
        } catch (Exception e) {
            throw new GroupDocsSignatureException(e.getMessage());
        }
    }
}

สรุปการตั้งค่าหลัก:

  • Data & Type – "12345678" คือข้อมูลที่ฝัง; BarcodeTypes.Code128 ทำงานกับสตริงอัลฟานูเมอริกและได้รับการสนับสนุนอย่างกว้างขวางโดยสแกนเนอร์.
  • Positioning – setLeft(100) และ setTop(100) เลื่อนบาร์โค้ด 100 px จากมุมบน‑ซ้าย; VerticalAlignment.Top + HorizontalAlignment.Right ปรับการจัดตำแหน่งตามออฟเซ็ตเหล่านั้น.
  • Margins & Padding – วัตถุ Padding เพิ่มบัฟเฟอร์ 20 px เพื่อหลีกเลี่ยงการตัดขอบที่ขอบหน้า.
  • Styling – เส้นขอบ, ฟอนต์, และแปรงพื้นหลังสามารถปรับแต่งได้ทั้งหมด; ในการผลิตคุณอาจละเว้นการใช้ gradient เพื่อเพิ่มความเร็วการเรนเดอร์.
  • Return Content – การเปิดใช้งาน setReturnContent(true) จะให้บาร์โค้ดเป็น byte[], มีประโยชน์สำหรับการเก็บภาพในฐานข้อมูลหรือแสดงใน UI.

การกำหนดค่าที่พร้อมใช้งานในสภาพแวดล้อมการผลิต

สำหรับเอกสารทางกฎหมายที่เรียบง่าย คุณมักต้องการบาร์โค้ดสีดำบนพื้นขาวโดยไม่มีเส้นขอบเพิ่มเติม:

```java
import com.groupdocs.signature.domain.enums.*;
import com.groupdocs.signature.domain.Padding;
import com.groupdocs.signature.domain.Border;
import com.groupdocs.signature.domain.DashStyle;
import com.groupdocs.signature.domain.extensions.LinearGradientBrush;
import com.groupdocs.signature.domain.font.SignatureFont;
import java.awt.Color;
import com.groupdocs.signature.options.sign.BarcodeSignOptions;

public class Feature2 {
    public static void configureBarcodeOptions() throws Exception {
        BarcodeSignOptions signOptions = new BarcodeSignOptions("12345678");
        signOptions.setEncodeType(BarcodeTypes.Code128);
        signOptions.setLeft(100);
        signOptions.setTop(100);
        signOptions.setVerticalAlignment(VerticalAlignment.Top);
        signOptions.setHorizontalAlignment(HorizontalAlignment.Right);

        Padding padding = new Padding();
        padding.setLeft(20);
        padding.setTop(20);
        signOptions.setMargin(padding);

        Border border = new Border();
        border.setColor(Color.GREEN);
        border.setDashStyle(DashStyle.DashLongDashDot);
        border.setWeight(2);
        border.setTransparency(0.5);
        border.setVisible(true);
        signOptions.setBorder(border);

        signOptions.setForeColor(Color.RED);
        SignatureFont font = new SignatureFont();
        font.setSize(12);
        font.setFamilyName("Comic Sans MS");
        signOptions.setFont(font);

        signOptions.setCodeTextAlignment(CodeTextAlignment.Above);

        Background background = new Background();
        background.setColor(Color.GREEN);
        background.setTransparency(0.5);
        background.setBrush(new LinearGradientBrush(Color.GREEN, Color.DARK_GRAY, 0));
        signOptions.setBackground(background);

        signOptions.setReturnContent(true);
        signOptions.setReturnContentType(FileType.PNG);
    }
}

ขั้นตอนที่ 3: เซ็นเอกสาร

เมธอด sign จะนำบาร์โค้ดที่กำหนดไว้ไปใส่ใน PDF และเขียนผลลัพธ์ไปยังเส้นทางเป้าหมาย.

```java
signOptions.setEncodeType(BarcodeTypes.QR); // QR codes for more data
signOptions.setForeColor(Color.BLACK);
signOptions.setBackgroundColor(Color.WHITE);
// Remove border and fancy styling for professional appearance

ภายใต้การทำงาน:

  • signature.sign(outputFilePath, signOptions) เขียนบาร์โค้ดลงบน PDF ในขณะที่ไฟล์ต้นฉบับยังคงไม่เปลี่ยน.
  • SignResult รายงานจำนวนลายเซ็นที่เพิ่ม, หน้าใดที่ถูกแก้ไข, และคำเตือนใด ๆ ที่เกิดขึ้น.
  • สำหรับงานแบบแบตช์, ห่อการเรียกนี้ใน ExecutorService เพื่อทำงานแบบขนานบนคอร์ของ CPU.

ปัญหาทั่วไปและวิธีแก้

ปัญหา 1: FileNotFoundException ขณะเริ่มต้น

อาการ: แอปพลิเคชันโยน FileNotFoundException เมื่อสร้างอ็อบเจ็กต์ Signature.

สาเหตุหลัก:

  • เส้นทางไฟล์ไม่ถูกต้อง (relative vs. absolute)
  • ขาดสิทธิ์การอ่าน
  • ไฟล์ถูกล็อกโดยกระบวนการอื่น (เช่น เปิดอยู่ใน Acrobat)

วิธีแก้:

```java
import com.groupdocs.signature.Signature;
import com.groupdocs.signature.exception.GroupDocsSignatureException;
import com.groupdocs.signature.options.sign.BarcodeSignOptions;
import com.groupdocs.signature.domain.BaseSignature;

public class Feature3 {
    public static void signDocument(String filePath, BarcodeSignOptions signOptions) throws Exception {
        Signature signature = new Signature(filePath);
        String outputFilePath = filePath.replace(".pdf", "_Signed.pdf");

        try {
            com.groupdocs.signature.domain.signatures.SignResult signResult = signature.sign(outputFilePath, signOptions);
            System.out.println("Document signed successfully.");
        } catch (Exception e) {
            throw new GroupDocsSignatureException(e.getMessage());
        }
    }
}

ตรวจสอบให้แน่ใจว่าเส้นทางใช้เครื่องหมายทับหน้า (C:/Docs/sample.pdf) หรือหนีอักขระ backslash (C:\\Docs\\sample.pdf). ตรวจสอบสิทธิ์ของระบบปฏิบัติการและปิดโปรแกรมใด ๆ ที่อาจล็อกไฟล์.

ปัญหา 2: บาร์โค้ดไม่ปรากฏในผลลัพธ์

อาการ: การเซ็นเสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด, แต่บาร์โค้ดไม่ปรากฏ.

สาเหตุทั่วไป:

  • การจัดตำแหน่งทำให้บาร์โค้ดอยู่นอกพื้นที่ที่พิมพ์ได้.
  • ความโปร่งใสตั้งเป็น 1.0 (โปร่งใสเต็มที่).
  • ขนาดฟอนต์ตั้งเป็น 0.

วิธีแก้:

  • รักษาค่า setLeft/setTop ให้อยู่ในขนาดหน้ากระดาษ (0‑600 px สำหรับ A4 มาตรฐาน).
  • ใช้ค่าความโปร่งใสระหว่าง 0.0 (ทึบ) ถึง 0.9.
  • ตั้งขนาดฟอนต์ที่อ่านได้, เช่น 12pt.

ปัญหา 3: Out of Memory Errors กับเอกสารขนาดใหญ่

อาการ: OutOfMemoryError เมื่อประมวลผล PDF ที่ใหญ่กว่า ~50 MB.

วิธีแก้:

  • เพิ่ม heap ของ JVM: -Xmx2g หรือสูงกว่า ขึ้นกับขนาดเอกสาร.
  • ประมวลผล PDF ทีละหน้าโดยใช้ Streaming API ของ Signature.
  • ปิดอ็อบเจ็กต์ Signature อย่างชัดเจนหลังการดำเนินการแต่ละครั้งเพื่อปลดปล่อยทรัพยากรเนทีฟ.
```java
import java.nio.file.Files;
import java.nio.file.Path;

Path filePath = Path.of("YOUR_DOCUMENT_DIRECTORY/sample.pdf");
if (!Files.exists(filePath)) {
    throw new IllegalArgumentException("PDF file not found: " + filePath);
}
if (!Files.isReadable(filePath)) {
    throw new SecurityException("Cannot read PDF file: " + filePath);
}
// Now safe to initialize
Signature signature = new Signature(filePath.toString());

ปัญหา 4: Invalid Barcode Data Error

อาการ: API โยนข้อยกเว้นที่บ่นเกี่ยวกับอักขระที่ไม่รองรับ.

สาเหตุ: มาตรฐานบาร์โค้ดต่างกันรับชุดอักขระที่แตกต่างกัน. Code128 รองรับอัลฟานูเมอริก; QR รองรับ Unicode; บาร์โค้ด 1D บางประเภทรับเฉพาะตัวเลข.

วิธีแก้: เลือกประเภทบาร์โค้ดที่ตรงกับชุดข้อมูลของคุณ, หรือทำความสะอาดสตริงก่อนกำหนดให้กับ BarcodeSignOptions.

```java
String barcodeData = "ABC123"; // Your data
BarcodeTypes type = BarcodeTypes.Code128; // Alphanumeric support

// For numeric-only barcodes, validate first:
if (type == BarcodeTypes.EAN13 && !barcodeData.matches("\\d+")) {
    throw new IllegalArgumentException("EAN13 requires numeric data only");
}

แนวทางปฏิบัติที่ดีที่สุดสำหรับการผลิต

1. ตรวจสอบ PDF ก่อนเซ็น

ตรวจสอบเสมอว่าไฟล์เป็น PDF ที่มีรูปแบบถูกต้องเพื่อหลีกเลี่ยงข้อผิดพลาดการพาร์สในขณะรัน.

```java
try (Signature signature = new Signature(filePath)) {
    // If this succeeds, file is valid
    signature.getDocumentInfo();
} catch (Exception e) {
    // Handle invalid PDF
}

2. ใช้การประมวลผลแบบอะซิงโครนัสสำหรับงานปริมาณสูง

ย้ายการเซ็นไปยัง thread pool เบื้องหลัง; นี้จะป้องกัน UI ค้างและเพิ่มอัตราการทำงาน.

```java
ExecutorService executor = Executors.newFixedThreadPool(4);
List<String> pdfFiles = Arrays.asList("doc1.pdf", "doc2.pdf", "doc3.pdf");

pdfFiles.forEach(file -> {
    executor.submit(() -> {
        try {
            signDocument(file, signOptions);
        } catch (Exception e) {
            // Log error
        }
    });
});
executor.shutdown();

3. ใช้การบันทึกแบบโครงสร้าง

บันทึกคำขอการเซ็นแต่ละรายการพร้อมเส้นทางอินพุต, เส้นทางเอาต์พุต, ข้อมูลบาร์โค้ด, และข้อยกเว้นใด ๆ. นี้ช่วยเร่งการวิเคราะห์หลังเหตุการณ์อย่างมาก.

```java
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

private static final Logger logger = LoggerFactory.getLogger(YourClass.class);

try {
    SignResult result = signature.sign(outputFilePath, signOptions);
    logger.info("Document signed successfully: {}", outputFilePath);
    logger.debug("Signatures added: {}", result.getSucceeded().size());
} catch (Exception e) {
    logger.error("Failed to sign document: {}", filePath, e);
}

4. ปรับแต่งการตั้งค่าบาร์โค้ดเพื่อความเร็ว

  • ปิด setReturnContent(true) หากคุณไม่ต้องการภาพแยก.
  • ใช้แปรงพื้นหลังแบบสีทึบแทน gradient.
  • ไม่ใช้เส้นขอบสำหรับการติดตามแบบง่าย.

5. จัดการการหมดอายุใบอนุญาตชั่วคราวอย่างราบรื่น

คลาส License โหลดและตรวจสอบไฟล์ใบอนุญาตของ GroupDocs สำหรับ API. ตรวจสอบสถานะใบอนุญาตก่อนการดำเนินการเซ็นแต่ละครั้งและหากหมดอายุให้สลับเป็นโหมดอ่านอย่างเดียวหรือแจ้งผู้ดูแลระบบ.

```java
try {
    License license = new License();
    license.setLicense(licensePath);
} catch (Exception e) {
    logger.warn("License validation failed. Using trial mode.");
    // Continue with trial limitations
}

เมื่อใดควรใช้ลายเซ็นบาร์โค้ด

สถานการณ์ที่เหมาะสม

  • Inventory & Logistics: แนบบาร์โค้ดที่สแกนได้กับใบกำกับการจัดส่ง, รายการบรรจุ, หรือแท็กสินทรัพย์.
  • Regulatory Compliance: อุตสาหกรรมเช่นเภสัชกรรมต้องการบันทึกตรวจสอบที่เครื่องอ่านได้.
  • Automated Document Pipelines: ผสานลายเซ็นบาร์โค้ดกับ OCR เพื่อให้กระบวนการทำงานแบบเริ่มต้นถึงสิ้นสุดโดยไม่ต้องป้อนข้อมูลด้วยมือ.
  • High‑Volume Batch Jobs: บาร์โค้ดตรวจสอบได้เร็วกว่าลายเซ็นดิจิทัลแบบเข้ารหัสเมื่อสแกนเอกสารกระดาษจำนวนมาก.

เมื่อควรเลือกประเภทลายเซ็นอื่น

  • Legal Contracts: ใช้ลายเซ็นดิจิทัลแบบ PKI (เช่น X.509) เพื่อความไม่ปฏิเสธ.
  • Customer‑Facing PDFs: QR code มีความคุ้นเคยมากขึ้นบนอุปกรณ์มือถือ.
  • Ultra‑Secure Documents: ผสานบาร์โค้ดกับลายเซ็นดิจิทัลที่เข้ารหัสเพื่อความปลอดภัยหลายชั้น.

เคล็ดลับ: คุณสามารถฝังหลายประเภทลายเซ็นใน PDF เดียว—เพิ่มบาร์โค้ดสำหรับการติดตามและใบรับรองดิจิทัลสำหรับความบังคับใช้ทางกฎหมาย.

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

Q: ฉันจะเพิ่มลายเซ็นบาร์โค้ดลงใน PDF ด้วย Java โดยไม่ต้องพึ่งพาไลบรารีภายนอกได้อย่างไร?
A: GroupDocs.Signature สำหรับ Java เป็นแพคเกจครบวงจร; หลังจากเพิ่ม Maven/Gradle artifact คุณจะได้การสร้างบาร์โค้ดและการเรนเดอร์ PDF อย่างเต็มรูปแบบโดยไม่ต้องใช้ไลบรารีของบุคคลที่สาม.

Q: ฉันสามารถตั้งค่า barcode sign options ใน Java เพื่อสร้าง QR code ได้หรือไม่?
A: แน่นอน. เปลี่ยนค่า enum BarcodeTypes เป็น QRCode และปรับพารามิเตอร์ขนาดตามต้องการ.

```java
signOptions.setEncodeType(BarcodeTypes.QR);

Q: การตั้งค่า Maven ที่แนะนำสำหรับการใช้งานในสภาพแวดล้อมการผลิตคืออะไร?
A: ระบุเวอร์ชันที่แน่นอนใน pom.xml (เช่น 23.10.0) เพื่อหลีกเลี่ยงการอัปเกรดโดยบังเอิญ, และเปิดใช้งานปลั๊กอิน Maven shade เพื่อสร้าง JAR ที่ทำงานได้เป็นไฟล์เดียว.

```xml
<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-signature</artifactId>
    <version>23.12</version> <!-- Don't use LATEST -->
</dependency>

Q: ไลบรารีนี้รองรับ PDF ที่มีการป้องกันด้วยรหัสผ่านหรือไม่?
A: ใช่. ให้รหัสผ่านเมื่อสร้างอ็อบเจ็กต์ Signature, จากนั้นดำเนินการเซ็นตามปกติ.

```java
LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("your_pdf_password");
Signature signature = new Signature(filePath, loadOptions);

Q: ฉันสามารถเซ็นได้กี่หน้าภายในหนึ่งการดำเนินการ?
A: GroupDocs.Signature สามารถเข้าถึงทุกหน้าของ PDF พร้อมกันหรือกำหนดหน้าเฉพาะด้วย setPageNumber(). ประสิทธิภาพเพิ่มตามขนาดเชิงเส้น; PDF 200 หน้าเซ็นได้ประมาณ 2 วินาทีบน VM คลาวด์ทั่วไป.

Q: มีรูปแบบบาร์โค้ดใดบ้างนอกจาก Code128?
A: มากกว่า 30 รูปแบบ, รวมถึง QR, DataMatrix, Aztec, UPC‑A, EAN‑13, PDF417, และอื่น ๆ. ดู enum BarcodeTypes เพื่อรายการทั้งหมด.

Q: มีขีดจำกัดความยาวของข้อมูลบาร์โค้ดหรือไม่?
A: ขีดจำกัดความยาวขึ้นอยู่กับประเภทบาร์โค้ด; สำหรับ Code128 ขีดจำกัดเชิงปฏิบัติคือ 80 อักขระ, ส่วน QR code สามารถเก็บข้อมูลได้สูงสุด 4 KB.

Q: ฉันสามารถดึงภาพบาร์โค้ดที่สร้างหลังการเซ็นได้หรือไม่?
A: ตั้งค่า setReturnContent(true) และ setReturnContentType(FileType.PNG); SignResult จะมี byte[] ที่คุณสามารถเขียนลงดิสก์หรือฐานข้อมูลได้.


อัปเดตล่าสุด: 2026-07-25
ทดสอบกับ: GroupDocs.Signature 23.10 สำหรับ Java
ผู้เขียน: GroupDocs

บทแนะนำที่เกี่ยวข้อง