ลงนาม PDF ด้วยบาร์โค้ดโดยใช้ HIBC ใน Java

หากคุณกำลังพัฒนาซอฟต์แวร์โลจิสติกส์ด้านเภสัชกรรมหรือการดูแลสุขภาพ คุณอาจเคยเจอปัญหาการติดตามด้วยกระดาษ การสูญเสียลายเซ็น และความยุ่งยากในการตรวจสอบ การลงนาม PDF ด้วยบาร์โค้ด—โดยเฉพาะ HIBC Data Matrix หรือ QR code—จะสร้างเส้นทางที่ตรวจจับการปลอมแปลงได้และอ่านโดยเครื่องจักร ซึ่งคงอยู่หลังการพิมพ์ การสแกน และการตรวจสอบตามกฎระเบียบ ในบทแนะนำนี้คุณจะได้เห็นวิธีเพิ่มบาร์โค้ด Data Matrix และ QR ทั้งสองลงใน PDF ด้วย GroupDocs.Signature for Java อย่างละเอียด

คำตอบอย่างรวดเร็ว

  • ไลบรารีที่จัดการบาร์โค้ด HIBC ใน Java คืออะไร? GroupDocs.Signature for Java.
  • รูปแบบบาร์โค้ดที่กะทัดรัดที่สุดคืออะไร? Data Matrix – เหมาะสำหรับป้ายขนาดเล็ก.
  • ฉันสามารถเพิ่ม QR และ Data Matrix ทั้งสองลงใน PDF เดียวได้หรือไม่? Yes, just create separate QrCodeSignOptions.
  • จำเป็นต้องเชื่อมต่ออินเทอร์เน็ตขณะรันไทม์หรือไม่? No, the library works fully offline after installation.
  • แนะนำเวอร์ชัน Java ใด? Java 11+ for production‑grade performance.

การลงนาม PDF ด้วยบาร์โค้ด HIBC คืออะไร?

Signature คือคลาสหลักของ GroupDocs.Signature ที่แทนเอกสาร PDF และเปิดใช้งานการฝังลายเซ็นดิจิทัล คลาส Signature ใน GroupDocs.Signature for Java มีเมธอดสำหรับฝังบาร์โค้ด HIBC เป็นลายเซ็นดิจิทัล โดยการลงนาม PDF ด้วยบาร์โค้ด HIBC คุณจะสร้างบันทึกที่ตรวจสอบได้และตรวจจับการปลอมแปลงได้ ซึ่งสามารถสแกนได้ตลอดห่วงโซ่อุปทาน

ทำไมต้องใช้ Data Matrix และ QR code ร่วมกัน?

Data Matrix มีขนาดพื้นที่เล็กที่สุดในขณะที่ยังสามารถบรรจุอักขระอัลฟานูเมอริกได้สูงสุด 2,335 ตัว ทำให้เหมาะกับพื้นที่ป้ายที่แออัด QR code มีความสามารถรองรับอักขระได้สูงสุด 4,296 ตัวและอ่านได้โดยสมาร์ทโฟนทั่วโลก การรวมทั้งสองเข้าด้วยกันให้สมดุลที่ดีที่สุดระหว่างประสิทธิภาพการใช้พื้นที่และความจุข้อมูล ทำให้ผู้มีส่วนได้ส่วนเสียทุกคน—ตั้งแต่สแกนเนอร์ในคลังสินค้าไปจนถึงแอปบนมือถือ—สามารถอ่านข้อมูลที่ต้องการได้

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

  • JDK 11 หรือสูงกว่า (Java 8 ทำงานได้แต่แนะนำให้ใช้ Java 11+ เพื่อประสิทธิภาพที่ดีที่สุด).
  • IDE เช่น IntelliJ IDEA, Eclipse หรือ VS Code พร้อมส่วนขยาย Java.
  • Maven หรือ Gradle สำหรับการจัดการ dependencies (ตัวอย่างด้านล่าง).
  • PDF ตัวอย่าง (เช่น sample.pdf) เพื่อทดสอบการทำงาน.
  • ไลเซนส์ GroupDocs.Signature ที่ถูกต้อง (ทดลองใช้ฟรีสำหรับการพัฒนา, ไลเซนส์แบบชำระเงินสำหรับการผลิต).

การตั้งค่า GroupDocs.Signature สำหรับ Java

การกำหนดค่า Maven

เพิ่ม dependency นี้ในไฟล์ pom.xml ของคุณ:

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

การกำหนดค่า Gradle

สำหรับโครงการ Gradle ให้เพิ่มส่วนนี้ในไฟล์ build.gradle ของคุณ:

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

ตัวเลือกการดาวน์โหลดโดยตรง

คุณสามารถดาวน์โหลดไฟล์ JAR โดยตรงจาก GroupDocs.Signature for Java releases แล้วเพิ่มลงใน classpath ของโครงการด้วยตนเอง วิธีนี้ทำงานได้ดีในสภาพแวดล้อมที่มีเครือข่ายจำกัด.

การรับไลเซนส์

ขอรับการทดลองใช้ฟรีหรือไลเซนส์ชั่วคราวจาก GroupDocs เพื่อเอา watermark ออกและเปิดใช้งานฟีเจอร์ทั้งหมด การใช้งานในสภาพแวดล้อมการผลิตต้องมีไลเซนส์ที่ซื้อแล้ว.

การเริ่มต้นพื้นฐาน

Signature คือจุดเริ่มต้นสำหรับการดำเนินการลงนามทั้งหมด มันโหลด PDF, ใส่บาร์โค้ด, และเขียนไฟล์ที่ลงนามแล้ว.

import com.groupdocs.signature.Signature;

class InitializeSignature {
    public static void main(String[] args) {
        Signature signature = new Signature("sample.pdf");
        // Proceed with signing operations...
    }
}

วิธีสร้าง PDF Data Matrix ด้วยบาร์โค้ด HIBC?

สร้างอินสแตนซ์ Signature ด้วย PDF ต้นฉบับของคุณ, ตั้งค่า QrCodeSignOptions เป็นรูปแบบ Data Matrix, ให้สตริง HIBC ที่จัดรูปแบบถูกต้อง, แล้วเรียก sign() ไลบรารีจะเขียน PDF ที่ลงนามไปยังปลายทาง, รักษาเลย์เอาต์และฝังบาร์โค้ดเป็นลายเซ็นที่ตรวจจับการปลอมแปลงได้.

QrCodeSignOptions ระบุประเภทบาร์โค้ด, เนื้อหา, ขนาด, และตำแหน่งสำหรับลายเซ็น.

  1. นำเข้าคลาสที่จำเป็น – เพื่อให้คุณเข้าถึงเอนจินลายเซ็นและตัวเลือก Data Matrix.
import com.groupdocs.signature.Signature;
import com.groupdocs.signature.options.sign.QrCodeSignOptions;
import com.groupdocs.signature.domain.qrcodes.QrCodeTypes;
  1. สร้างอ็อบเจกต์ Signature ด้วยเส้นทางแบบ absolute สำหรับไฟล์ต้นฉบับและไฟล์ปลายทาง.
String sourceFilePath = "YOUR_DOCUMENT_DIRECTORY";
String destinFilePath = "YOUR_OUTPUT_DIRECTORY/SignWithHIBCLICQR.pdf";

final Signature signature = new Signature(sourceFilePath);
  1. กำหนดค่าตัวเลือก Data Matrix – ตั้งสตริง HIBC, เลือก QrCodeTypes.HIBCLICDataMatrix, และกำหนดพิกัดตำแหน่ง QrCodeTypes แสดงรายการรูปแบบบาร์โค้ดที่รองรับสำหรับลายเซ็น HIBC.
QrCodeSignOptions hibcLic_QR = new QrCodeSignOptions("A123PROD30917/75#422011907#GP293", QrCodeTypes.HIBCLICQR);
hibcLic_QR.setLeft(1); // Set the position from left
hibcLic_QR.setTop(1);   // Set the position from top
hibcLic_QR.setReturnContent(true); // Return content after signing
hibcLic_QR.setReturnContentType(FileType.PNG); // Specify return content type as PNG
  1. ใช้ลายเซ็น กับ PDF.
signature.sign(destinFilePath, hibcLic_QR);
  1. ปล่อยทรัพยากร เพื่อปลดปล่อยไฟล์แฮนด์เลและป้องกันการรั่วของหน่วยความจำ.
finally {
    if (signature != null) signature.dispose();
}

ตัวอย่างการทำงานเต็มรูปแบบ

นี่คือกระบวนการทั้งหมดในบล็อกเดียว (ตัวแทนที่อยู่เป็นโค้ดที่คุณจะวางจากส่วนก่อนหน้า):

import com.groupdocs.signature.Signature;
import com.groupdocs.signature.options.sign.QrCodeSignOptions;
import com.groupdocs.signature.domain.qrcodes.QrCodeTypes;

public class HibcQrSigning {
    public static void main(String[] args) {
        String sourceFilePath = "sample.pdf";
        String destinFilePath = "output/SignWithHIBCLICQR.pdf";
        
        Signature signature = null;
        try {
            signature = new Signature(sourceFilePath);
            
            QrCodeSignOptions hibcLic_QR = new QrCodeSignOptions(
                "A123PROD30917/75#422011907#GP293", 
                QrCodeTypes.HIBCLICQR
            );
            hibcLic_QR.setLeft(1);
            hibcLic_QR.setTop(1);
            hibcLic_QR.setReturnContent(true);
            hibcLic_QR.setReturnContentType(FileType.PNG);
            
            signature.sign(destinFilePath, hibcLic_QR);
            System.out.println("PDF signed successfully with HIBC QR code");
            
        } catch (Exception e) {
            System.err.println("Error signing PDF: " + e.getMessage());
            e.printStackTrace();
        } finally {
            if (signature != null) signature.dispose();
        }
    }
}

คำตอบโดยตรง (40–70 คำ)

เพื่อ สร้าง PDF Data Matrix, สร้างอินสแตนซ์ Signature ด้วย PDF ต้นฉบับของคุณ, ตั้งค่า QrCodeSignOptions เป็น QrCodeTypes.HIBCLICDataMatrix และให้สตริง HIBC ที่จัดรูปแบบถูกต้อง, จากนั้นเรียก signature.sign(outputPath, options) ไลบรารีจะเขียน PDF ที่ลงนามไปยังปลายทาง, รักษาเลย์เอาต์และฝังบาร์โค้ดเป็นลายเซ็นที่ตรวจจับการปลอมแปลงได้.

วิธีเพิ่ม QR code ลงใน PDF ด้วย GroupDocs.Signature?

โหลด PDF, กำหนดค่า QrCodeSignOptions สำหรับรูปแบบ QR, และเรียก sign() ไลบรารีจะปรับขนาดภาพ QR เพื่อความอ่านง่ายและวางตำแหน่งตามพิกัดที่คุณตั้ง, ป้องกันการทับซ้อนกับเนื้อหาที่มีอยู่ ทำให้บาร์โค้ดยังคงสแกนได้หลังการพิมพ์และสอดคล้องกับมาตรฐาน HIBC.

QrCodeSignOptions กำหนดเนื้อหา, ขนาด, และตำแหน่งของ QR barcode.

  1. นำเข้าคลาสที่เฉพาะสำหรับ QR
QrCodeSignOptions hibcLic_AZ = new QrCodeSignOptions("A123PROD30917/75#422011907#GP293", QrCodeTypes.HIBCLICAztec);
hibcLic_AZ.setLeft(1); // Set the position from left
hibcLic_AZ.setTop(200); // Set the position from top
hibcLic_AZ.setReturnContent(true); // Return content after signing
hibcLic_AZ.setReturnContentType(FileType.PNG); // Specify return content type as PNG
  1. สร้างและกำหนดค่า QR options – สังเกตการใช้ QrCodeTypes.HIBCLICQR.
signature.sign(destinFilePath, hibcLic_AZ);
  1. ลงนามเอกสาร
QrCodeSignOptions hibcLic_DM = new QrCodeSignOptions("A123PROD30917/75#422011907#GP293", QrCodeTypes.HIBCLICDataMatrix);
hibcLic_DM.setLeft(1); // Set the position from left
hibcLic_DM.setTop(400); // Set the position from top
hibcLic_DM.setReturnContent(true); // Return content after signing
hibcLic_DM.setReturnContentType(FileType.PNG); // Specify return content type as PNG

คำตอบโดยตรง: ใช้ QrCodeTypes.HIBCLICQR ใน QrCodeSignOptions, ตั้งสตริงเนื้อหา HIBC, กำหนดตำแหน่งโค้ดด้วย setLeft() และ setTop(), จากนั้นเรียก signature.sign(outputPath, options) QR barcode จะถูกฝังทันที พร้อมสำหรับการจับภาพด้วยสมาร์ทโฟนหรือสแกนเนอร์.

ข้อผิดพลาดทั่วไปที่ควรหลีกเลี่ยง

1. ลืมปล่อยทรัพยากร

ผิด:

Signature signature = new Signature("sample.pdf");
signature.sign(destinFilePath, options);
// Oops, no dispose() call

แก้ไข: ห่อการใช้ Signature ด้วยบล็อก try‑with‑resources หรือเรียก close() อย่างชัดเจนในบล็อก finally.

2. ใช้สตริงรูปแบบ HIBC ที่ไม่ถูกต้อง

ผิด: ใช้สตริงทั่วไปเช่น “12345”.
แก้ไข: ปฏิบัติตามมาตรฐาน HIBCC (เช่น A123PROD30917/75#422011907#GP293). ตรวจสอบด้วย HIBCC online validator.

3. กำหนดค่าเส้นทางไฟล์แบบฮาร์ดโค้ด

ผิด:

String sourceFilePath = "C:/Users/John/Documents/test.pdf";

แก้ไข: เก็บเส้นทางในไฟล์การกำหนดค่า หรือในตัวแปรสภาพแวดล้อมและอ่านค่าในเวลารัน.

4. เพิกเฉยต่อความขัดแย้งของตำแหน่งบาร์โค้ด

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

5. ไม่ทดสอบกับสแกนเนอร์จริง

พิมพ์ PDF ที่ลงนามและสแกนด้วยฮาร์ดแวร์เดียวกับที่ใช้ในกระบวนการของคุณ ตรวจสอบความอ่านได้ที่คุณภาพการพิมพ์ต่าง ๆ.

การประยุกต์ใช้ในด้านสุขภาพ

สถานการณ์บาร์โค้ดที่แนะนำเหตุผลที่เหมาะสม
การจัดจำหน่ายยาQR Codeความจุข้อมูลสูง, สแกนได้โดยสมาร์ทโฟนอย่างกว้างขวาง
การจัดการสินค้าคงคลังData Matrixขนาดเล็ก, เหมาะกับป้ายชั้นวางที่แออัด
การปฏิบัติตามกฎระเบียบ (FDA 21 CFR Part 11)QR + Data Matrixรูปแบบคู่ให้ความซ้ำซ้อนและตรวจสอบได้
การติดตามอุปกรณ์การแพทย์Aztec Codeขนาดกะทัดรัดทำงานได้บนบรรจุภัณฑ์ที่มีพื้นที่จำกัด

การพิจารณาประสิทธิภาพและแนวปฏิบัติที่ดีที่สุด

รูปแบบการประมวลผลเป็นชุด

List<String> filesToSign = getFileList();
for (String filePath : filesToSign) {
    Signature signature = null;
    try {
        signature = new Signature(filePath);
        // Sign and save
    } finally {
        if (signature != null) signature.dispose();
    }
}
  • สร้างอินสแตนซ์ Signature ใหม่ต่อไฟล์เพื่อให้การใช้หน่วยความจำน้อย.
  • ใช้ fixed thread pool (Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() - 1)) สำหรับการประมวลผลแบบขนาน, แต่ต้องตรวจสอบขนาด heap เนื่องจากแต่ละ Signature เก็บ PDF ทั้งไฟล์ในหน่วยความจำ.

อัปเดตไลบรารีอย่างสม่ำเสมอ

การปล่อยอัปเดตของ GroupDocs ปรับปรุงความเร็วการประมวลผลได้ถึง 20 % และเพิ่มฟีเจอร์การปฏิบัติตาม HIBC ใหม่ ๆ กำหนดการตรวจสอบ dependencies ทุกไตรมาส.

แคชเทมเพลต

โหลดเทมเพลต PDF ครั้งเดียว, ทำสำเนาให้แต่ละรูปแบบบาร์โค้ด, แล้วลงนามสำเนาเหล่านั้น วิธีนี้ลด I/O และเร่งความเร็วของกระบวนการทำงานปริมาณมาก.

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

Q: GroupDocs.Signature สามารถลงนามไฟล์ประเภทอื่นนอกจาก PDF ได้หรือไม่?
A: ใช่, ยังรองรับ DOCX, XLSX, PPTX, PNG, JPEG, และ TIFF ด้วย API การลงนามบาร์โค้ดเดียวกัน.

Q: ฉันจะแก้ไขข้อผิดพลาด “Invalid barcode content” อย่างไร?
A: ตรวจสอบว่าสตริง HIBC ของคุณตรงตามไวยากรณ์ HIBCC, ใช้ตัวตรวจสอบออนไลน์, และตรวจสอบว่าคุณใช้ค่าคงที่ QrCodeTypes ที่ถูกต้องสำหรับรูปแบบที่เลือก.

Q: ความจุข้อมูลสูงสุดของแต่ละรูปแบบ HIBC คือเท่าไหร่?
A: QR ≈ 4,296 ตัวอักษรอัลฟานูเมอริก, Aztec ≈ 3,832 ตัวเลข / 3,067 ตัวอักษรอัลฟานูเมอริก, Data Matrix ≈ 3,116 ตัวเลข / 2,335 ตัวอักษรอัลฟานูเมอริก. ควรทำบาร์โค้ดไม่เกิน 200 ตัวอักษรเพื่อความน่าเชื่อถือในการสแกนสูงสุด.

Q: สามารถฝังบาร์โค้ดหลายประเภทใน PDF เดียวได้หรือไม่?
A: แน่นอน. สร้างอ็อบเจกต์ QrCodeSignOptions แยกกันโดยกำหนดตำแหน่งต่าง ๆ แล้วเรียก signature.sign() สำหรับแต่ละอ็อบเจกต์. เพียงตรวจสอบว่าไม่ทับซ้อนกัน.

Q: จำเป็นต้องเชื่อมต่ออินเทอร์เน็ตสำหรับการลงนามขณะรันไทม์หรือไม่?
A: ไม่จำเป็น. หลังจากที่ JAR อยู่ใน classpath และไลเซนส์ถูกเปิดใช้งาน, การดำเนินการทั้งหมดทำงานในเครื่อง.

แหล่งข้อมูลเพิ่มเติม


อัปเดตล่าสุด: 2026-09-15
ทดสอบด้วย: GroupDocs.Signature 23.12 for Java
ผู้เขียน: GroupDocs

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