วิธีสร้างลายเซ็นบาร์โค้ดใน PDF ด้วย Java

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

คำตอบสั้น ๆ

  • ลายเซ็นบาร์โค้ดคืออะไร? บาร์โค้ดที่ฝังใน PDF ซึ่งเก็บข้อมูลโครงสร้างและสามารถอ่านได้โดยสแกนเนอร์หรือซอฟต์แวร์
  • บาร์โค้ดประเภทใดที่แนะนำ? Code128 เพราะจัดการข้อมูลอักขระและตัวเลขได้อย่างกะทัดรัด
  • ต้องมีไลเซนส์หรือไม่? ทดลองใช้ฟรีสำหรับการทดสอบ; ต้องมีไลเซนส์เต็มสำหรับการใช้งานจริง
  • สามารถวางบาร์โค้ดบนหน้าใดก็ได้หรือไม่? ได้—ใช้การกำหนดตำแหน่งแบบเปอร์เซ็นต์เพื่อปรับขนาดอัตโนมัติ
  • บาร์โค้ดเป็นเวกเตอร์หรือไม่? ใช่, เพิ่มขนาดไฟล์เพียงไม่กี่กิโลไบต์และคมชัดที่ความละเอียดใดก็ได้

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

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

ทำไมลายเซ็นบาร์โค้ดจึงสำคัญสำหรับ PDF ของคุณ

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

นี่คือความท้าทายที่คุณอาจเคยเจอ: คุณต้องเพิ่มตัวระบุตัวตนที่เป็นเอกลักษณ์ลงใน PDF ซึ่งทั้งเครื่องอ่านได้และปลอดการดัดแปลง บางทีคุณอาจกำลังทำระบบจัดการเอกสาร ประมวลผลใบรับรอง หรือจัดการสัญญาที่ต้องการการตรวจสอบในอนาคต

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

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

สิ่งที่คุณจะเชี่ยวชาญ:

  • ตั้งค่า GroupDocs.Signature for Java ภายในไม่กี่นาที
  • สร้างลายเซ็นบาร์โค้ด Code128 (และเหตุผลที่มักเป็นตัวเลือกที่ดีที่สุด)
  • กำหนดตำแหน่งบาร์โค้ดด้วยการจัดวางแบบเปอร์เซ็นต์ที่ทำงานกับ PDF ขนาดใดก็ได้
  • หลีกเลี่ยงข้อผิดพลาดทั่วไปที่ทำให้นักพัฒนาตกหลุมพราง
  • ทดสอบการทำงานของคุณอย่างเหมาะสม

วิธีสร้างลายเซ็นบาร์โค้ดใน Java

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

ความต้องการเบื้องต้นและรายการตรวจสอบสภาพแวดล้อม

ก่อนเริ่มทำงาน ตรวจสอบว่าคุณมีสิ่งต่อไปนี้พร้อมใช้งาน:

  • Java Development Kit (JDK) 8 หรือใหม่กว่า – จำเป็นสำหรับไลบรารี GroupDocs Java ทั้งหมด
  • Maven หรือ Gradle – เพื่อจัดการการพึ่งพา GroupDocs.Signature
  • IDE เช่น IntelliJ IDEA, Eclipse หรือ VS Code พร้อมส่วนขยาย Java
  • GroupDocs.Signature for Java (แนะนำเวอร์ชัน 23.12 หรือใหม่กว่า)
  • ความรู้พื้นฐาน Java – คุณควรคุ้นเคยกับการสร้างคลาส การจัดการข้อยกเว้น และการทำงานกับ I/O ของไฟล์

การตั้งค่า GroupDocs.Signature ในโปรเจกต์ของคุณ

การนำไลบรารีเข้ามาในโปรเจกต์นั้นง่ายมาก เลือกเครื่องมือสร้างของคุณ:

สำหรับผู้ใช้ Maven ให้เพิ่ม dependency นี้ลงใน pom.xml ของคุณ:

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

ใช้ Gradle? เพิ่มบรรทัดนี้ลงใน build.gradle:

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

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

การจัดการไลเซนส์ของคุณ

ก่อนจะเข้าสู่การผลิตเต็มรูปแบบ คุณควรจัดการเรื่องไลเซนส์:

  • ทดลองใช้ฟรี: เหมาะสำหรับการทดสอบ — รับได้จากเว็บไซต์ GroupDocs เพื่อสำรวจฟีเจอร์หลัก
  • ไลเซนส์ชั่วคราว: ต้องการเวลาประเมินเพิ่ม? ขอไลเซนส์ชั่วคราว 30 วัน
  • ไลเซนส์เต็ม: พร้อมใช้งานจริง? ซื้อไลเซนส์ไม่จำกัดการใช้

นี่คือตัวตรวจสอบอย่างเร็วเพื่อให้แน่ใจว่าทุกอย่างทำงานได้:

Signature signature = new Signature("sample.pdf");
System.out.println("Signature object created successfully.");

หากรันโดยไม่มีข้อผิดพลาด คุณก็พร้อมแล้ว!

วิธีสร้างลายเซ็นบาร์โค้ดใน Java

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

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

Definition anchor: คลาส Signature เป็นจุดเริ่มต้นของ GroupDocs.Signature สำหรับการโหลด แก้ไข และบันทึกเอกสาร PDF

ก่อนอื่นคุณต้องบอก GroupDocs ว่า PDF ใดที่คุณกำลังทำงานด้วย:

Signature signature = new Signature("input.pdf");

สิ่งที่เกิดขึ้น: อ็อบเจกต์ Signature โหลด PDF ของคุณเข้าสู่หน่วยความจำและเตรียมพร้อมสำหรับการแก้ไข ตรวจสอบให้แน่ใจว่าเส้นทางไฟล์ถูกต้อง — ข้อผิดพลาดทั่วไปคือการใช้ backslash บน Windows โดยไม่ escape (\\) หรือใช้ slash ไปข้างหน้า ซึ่งทำงานได้ข้ามแพลตฟอร์ม

ขั้นตอนที่ 2: กำหนดตัวเลือกบาร์โค้ดของคุณ (วิธีเพิ่มบาร์โค้ด)

Definition anchor: BarcodeSignOptions รวมการตั้งค่าทั้งหมดที่จำเป็นสำหรับการเรนเดอร์บาร์โค้ดใน PDF

ตอนนี้มาสร้างลายเซ็นบาร์โค้ดด้วยข้อมูลของคุณ:

BarcodeSignOptions options = new BarcodeSignOptions("12345678");
options.setEncodeType(BarcodeEncodeType.Code128);
  • "12345678" คือข้อมูลบาร์โค้ดของคุณ — อาจเป็นหมายเลขออเดอร์ หมายเลขใบรับรอง หรือรหัสใด ๆ ที่ต้องการ
  • Code128 คือประเภทการเข้ารหัส (ดูรายละเอียดการเลือกประเภทที่เหมาะสมด้านล่าง)

เคล็ดลับ: Code128 รองรับทั้งตัวเลขและตัวอักษร ทำให้ใช้งานได้หลากหลายกรณี หากคุณต้องการเพียงตัวเลข Code39 อาจง่ายกว่า แต่ Code128 ให้ความยืดหยุ่นมากกว่า

ขั้นตอนที่ 3: กำหนดตำแหน่งบาร์โค้ด (วิธีลงนาม PDF ด้วยบาร์โค้ด)

Definition anchor: SignatureOptions ให้คุณกำหนดคุณสมบัติตำแหน่ง เช่น หมายเลขหน้า ขนาด และการจัดแนว

นี่คือจุดที่ GroupDocs ส่องแสง — การกำหนดตำแหน่งแบบเปอร์เซ็นต์ทำให้บาร์โค้ดดูดีบน PDF ขนาดใดก็ได้:

options.setLeft(10);   // 10% from the left edge
options.setTop(90);    // 90% from the bottom edge (near the footer)
options.setWidth(30);  // 30% of page width
options.setHeight(10); // 10% of page height
options.setPageNumber(1);

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

ตัวอย่างจริง: บนหน้า A4 (595 × 842 points) บาร์โค้ดกว้าง 30% จะประมาณ 180 points บนหน้า legal (612 × 1008 points) จะประมาณ 184 points — สัดส่วนคงที่

ขั้นตอนที่ 4: ลงนามและบันทึกเอกสารของคุณ (วิธีเพิ่มบาร์โค้ด PDF)

ตอนนี้ให้ทำการลงนามจริงและบันทึกไฟล์:

signature.sign(outputPath, options);

หมายเหตุสำคัญ: โฟลเดอร์ผลลัพธ์ต้องมีอยู่ก่อนที่คุณจะรันโค้ด GroupDocs จะไม่สร้างโฟลเดอร์ย่อยให้คุณ ดังนั้นสร้างโฟลเดอร์ล่วงหน้าหรือจัดการในโค้ดของคุณ:

new File("output").mkdirs();

เกิดข้อผิดพลาดอะไรขึ้น? ให้ห่อโค้ดด้วยบล็อก try‑catch:

try {
    signature.sign("signed.pdf", options);
} catch (Exception e) {
    e.printStackTrace();
}

การเลือกประเภทบาร์โค้ดที่เหมาะสมสำหรับคุณ (สร้างบาร์โค้ด Code128)

GroupDocs รองรับหลายรูปแบบบาร์โค้ด และการเลือกประเภทที่เหมาะสมมีความสำคัญ นี่คือการเปรียบเทียบเชิงปฏิบัติ:

Code128 (ตัวเลือกเริ่มต้นของเรา):

  • เหมาะสำหรับ: ข้อมูลอักขระผสม (เช่น “INV2024-001”)
  • ความจุ: สูงสุด 128 ตัวอักษร ASCII
  • ทำไมถึงดี: กะทัดรัด รองรับหลายอักษรและตัวเลขอย่างกว้างขวาง
  • ใช้เมื่อ: ต้องการความยืดหยุ่นและไม่แน่ใจว่าข้อมูลจะเป็นแบบใด

Code39:

  • เหมาะสำหรับ: รหัสอักขระง่าย ๆ
  • ความจุ: 43 ตัวอักษร (A‑Z, 0‑9, และสัญลักษณ์บางอย่าง)
  • ทำไมถึงพิจารณา: สแกนเนอร์รุ่นเก่ามักรองรับได้ดีกว่า
  • ใช้เมื่อ: ทำงานกับระบบเก่าหรือความเรียบง่ายสำคัญกว่า ความหนาแน่นของข้อมูล

QR Code:

  • เหมาะสำหรับ: ข้อมูลจำนวนมาก (URL, JSON)
  • ความจุ: สูงสุด 3 KB ของข้อมูล
  • ทำไมถึงทรงพลัง: เก็บโครงสร้างข้อมูลซับซ้อน มีการแก้ไขข้อผิดพลาดในตัว
  • ใช้เมื่อ: ต้องฝังข้อมูลโครงสร้างหรือ URL

EAN/UPC:

  • เหมาะสำหรับ: การระบุสินค้า
  • ความจุ: รหัสตัวเลขความยาวคงที่ (8‑13 หลัก)
  • ใช้เมื่อ: ทำงานกับระบบค้าปลีกหรือสินค้าคงคลัง

ไกด์การตัดสินใจอย่างรวดเร็ว:

  • ต้องการอักษรและตัวเลข? → Code128
  • มีแค่ตัวเลขและต้องการความง่าย? → Code39
  • มีข้อมูลหรือ URL มาก? → QR Code
  • รหัสสินค้า/ค้าปลีก? → EAN/UPC

ข้อผิดพลาดทั่วไปและวิธีหลีกเลี่ยง (บาร์โค้ดที่ปลอดการดัดแปลง)

นี่คือปัญหาที่นักพัฒนามักเจอบ่อย (เพื่อให้คุณไม่ต้องเจอ):

ปัญหา 1: ตำแหน่งบาร์โค้ดแสดงผลไม่ถูกต้อง

อาการ: บาร์โค้ดปรากฏในตำแหน่งที่ไม่คาดคิดหรือถูกตัดออก

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

  • ใช้ค่าพิกเซลบนหน้า PDF ขนาดต่างกัน
  • ลืมว่าโค้ดพิกัด PDF เริ่มจากมุมล่างซ้าย ไม่ใช่มุมบนซ้าย
  • ระยะขอบผลักเนื้อหาออกนอกพื้นที่มองเห็น

วิธีแก้: ใช้การกำหนดตำแหน่งแบบเปอร์เซ็นต์เสมอเพื่อความสม่ำเสมอ:

options.setLeft(5);
options.setTop(95);
options.setWidth(40);
options.setHeight(12);

ปัญหา 2: ข้อความบาร์โค้ดอ่านไม่ออก

อาการ: ข้อความที่เข้ารหัสแสดงได้แต่สแกนเนอร์ไม่สามารถอ่าน

สาเหตุ:

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

วิธีแก้: ปรับขนาดบาร์โค้ดให้เหมาะกับความยาวข้อมูล สำหรับ Code128 ที่มี 10‑15 ตัวอักษร ควรมีความกว้างอย่างน้อย 8‑10% ของหน้า

ปัญหา 3: ข้อผิดพลาดเส้นทางไฟล์

อาการ: FileNotFoundException หรือข้อผิดพลาดคล้ายกัน

สาเหตุ:

  • เส้นทาง Windows ที่เขียนด้วย backslash เพียงตัวเดียว
  • โฟลเดอร์ผลลัพธ์ไม่มีอยู่จริง
  • ปัญหาการอนุญาตไฟล์

วิธีแก้: ใช้ slash ไปข้างหน้า (ทำงานได้ทุกที่) และสร้างโฟลเดอร์ล่วงหน้า:

Path output = Paths.get("output/signed.pdf");
Files.createDirectories(output.getParent());

ปัญหา 4: ปัญหาหน่วยความจำกับ PDF ขนาดใหญ่

อาการ: เกิดข้อผิดพลาด Out of Memory ขณะประมวลผลเอกสารขนาดใหญ่

วิธีแก้: ปิดอ็อบเจกต์ Signature เมื่อเสร็จเพื่อปล่อยทรัพยากร:

signature.close();

การทดสอบการทำงานของบาร์โค้ดของคุณ

ก่อนนำไปใช้งานจริง ตรวจสอบให้แน่ใจว่าบาร์โค้ดทำงานได้จริง นี่คือเช็คลิสต์การทดสอบที่เป็นประโยชน์:

1. การตรวจสอบด้วยสายตา

เปิด PDF ที่ลงนามแล้วตรวจสอบ:

  • บาร์โค้ดปรากฏและอยู่ในตำแหน่งที่ถูกต้องหรือไม่?
  • ดูคมชัด (ไม่เบลอหรือพิกเซล) หรือไม่?
  • มีพื้นที่สีขาวรอบบาร์โค้ดเพียงพอหรือไม่?

2. การทดสอบสแกน

ใช้แอปสแกนบาร์โค้ดบนมือถือ (เช่น “Barcode Scanner” หรือ “QR & Barcode Reader”) เพื่อตรวจสอบ:

  • สแกนเนอร์อ่านบาร์โค้ดได้หรือไม่
  • ข้อมูลที่ถอดรหัสตรงกับที่คุณใส่ไว้หรือไม่
  • ทำงานได้จากหลายมุมและระยะห่างหรือไม่

3. การทดสอบข้ามแพลตฟอร์ม

เปิด PDF บนอุปกรณ์ต่าง ๆ:

  • Windows (Adobe Reader, Chrome)
  • Mac (Preview, Chrome)
  • อุปกรณ์มือถือ (iOS, Android)

ตรวจสอบว่าบาร์โค้ดแสดงผลถูกต้องทุกที่

4. โค้ดทดสอบอัตโนมัติ

นี่คือตัวอย่างโค้ดทดสอบง่าย ๆ ที่คุณสามารถรันได้:

Signature testSignature = new Signature("signed.pdf");
List<BarcodeSignature> signatures = testSignature.search(BarcodeSignature.class);
if (signatures.size() > 0) {
    System.out.println("Barcode found: " + signatures.get(0).getText());
}

กรณีใช้งานจริงของลายเซ็นบาร์โค้ด

มาดูว่าการใช้เทคนิคนี้ทำให้ระบบผลิตจริงเป็นอย่างไร:

1. การสร้างและตรวจสอบใบรับรอง

สถานการณ์: คุณกำลังสร้างแพลตฟอร์มฝึกอบรมที่ออกใบรับรองสำเร็จ
การทำ: สร้าง ID ใบรับรองที่เป็นเอกลักษณ์ (เช่น “CERT‑2024‑00123”) แล้วฝังเป็นบาร์โค้ด Code128 ที่มุมล่างขวา การสแกนบาร์โค้ดทำให้ API ดึงรายละเอียดใบรับรองได้ทันที ลดการป้อนข้อมูลด้วยมือ

2. ระบบติดตามใบแจ้งหนี้

สถานการณ์: บริษัทของคุณต้องประมวลผลใบแจ้งหนี้หลายพันฉบับต่อเดือน
การทำ: เพิ่มหมายเลขใบแจ้งหนี้และวันครบกำหนดเป็น QR Code ที่ตำแหน่งที่อุปกรณ์สแกนอ่านได้ ระบบจัดเรียงอัตโนมัติสามารถส่งใบแจ้งหนี้ต่อไปได้โดยไม่ต้องคนตรวจสอบ ลดระยะเวลาการประมวลผลจากหลายชั่วโมงเหลือไม่กี่นาที

3. การจัดการสัญญากฎหมาย

สถานการณ์: บริษัทกฎหมายต้องติดตามเวอร์ชันและการแก้ไขสัญญา
การทำ: แต่ละเวอร์ชันสัญญาได้รับบาร์โค้ดที่มี ID สัญญา, หมายเลขเวอร์ชัน, วันที่ลงนาม การสแกนระหว่างการตรวจสอบจะดึงประวัติเวอร์ชันทั้งหมดโดยอัตโนมัติ

4. ความปลอดภัยของบันทึกทางการแพทย์

สถานการณ์: โรงพยาบาลต้องป้องกันการเข้าถึงบันทึกโดยไม่ได้รับอนุญาต
การทำ: ฝัง ID ผู้ป่วยและ timestamp การสร้างบันทึกเป็นบาร์โค้ด อุปกรณ์ที่ได้รับการรับรองเท่านั้นที่สามารถถอดรหัสและเข้าถึงบันทึกได้ และทุกครั้งที่สแกนจะบันทึก log เพื่อการตรวจสอบตามกฎระเบียบ

เคล็ดลับการเพิ่มประสิทธิภาพ (ความปลอดภัยเอกสาร Java)

เมื่อคุณต้องลงนาม PDF จำนวนมาก ประสิทธิภาพเป็นเรื่องสำคัญ นี่คือเคล็ดลับเพื่อให้ระบบทำงานได้ราบรื่น:

กลยุทธ์การประมวลผลเป็นชุด

แทนที่จะลงนามเอกสารทีละไฟล์ ให้ทำเป็นชุด:

for (String filePath : pdfList) {
    Signature batchSignature = new Signature(filePath);
    batchSignature.sign(outputPath, options);
    batchSignature.close();
}

เหตุผลที่ช่วย: การใช้วัตถุตัวเลือกซ้ำและปิดทรัพยากรอย่างถูกต้องช่วยป้องกันการรั่วของหน่วยความจำ

การจัดการหน่วยความจำสำหรับ PDF ขนาดใหญ่

สำหรับ PDF ที่ใหญ่กว่า 50 MB:

  • ประมวลผลทีละไฟล์แทนการโหลดหลายไฟล์พร้อมกัน
  • ใช้ try‑with‑resources เพื่อให้แน่ใจว่าปิดทรัพยากร
  • ตรวจสอบขนาด heap และปรับพารามิเตอร์ JVM หากจำเป็น: -Xmx2g

แคชบาร์โค้ดที่ใช้บ่อย

หากคุณลงนามหลายเอกสารด้วยบาร์โค้ดเดียวกัน ให้แคชอ็อบเจกต์ BarcodeSignOptions:

BarcodeSignOptions cachedOptions = new BarcodeSignOptions("STATIC_ID");
cachedOptions.setEncodeType(BarcodeEncodeType.Code128);

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

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

  • ต้องการตัวระบุตัวตนที่เครื่องอ่านได้
  • เอกสารจะถูกสแกนหรือประมวลผลโดยอัตโนมัติ
  • ต้องการการติดตามที่ปลอดการดัดแปลงโดยไม่ต้องใช้ใบรับรองดิจิทัล
  • ต้องบูรณาการกับโครงสร้างบาร์โค้ดที่มีอยู่

ไม่เหมาะสมเมื่อ:

  • ต้องการลายเซ็นดิจิทัลที่มีผลผูกพันตามกฎหมาย (ใช้ใบรับรองดิจิทัลแทน)
  • เอกสารจะอ่านโดยมนุษย์เท่านั้น (อาจใช้ลายน้ำข้อความธรรมดา)
  • เอกสารมีขนาดเล็กมากจนบาร์โค้ดครอบคลุมหน้าได้มากเกินไป
  • ความต้องการด้านความปลอดภัยต้องการการเข้ารหัส—บาร์โค้ดเป็นภาพที่มองเห็นและสแกนได้โดยทุกคน

สามารถผสานวิธีการได้หรือไม่? แน่นอน! ระบบหลาย ๆ ระบบใช้บาร์โค้ดสำหรับการติดตามและลายเซ็นดิจิทัลสำหรับความถูกต้องตามกฎหมายพร้อมกัน

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

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

ถาม: จะจัดการบาร์โค้ดที่มีอักขระพิเศษอย่างไร?
ตอบ: Code128 รองรับอักขระ ASCII ส่วนใหญ่ สำหรับ Unicode หรือข้อมูลซับซ้อนให้ใช้ QR Code ซึ่งรองรับการเข้ารหัส UTF‑8

ถาม: ขนาดข้อมูลสูงสุดที่เก็บใน Code128 คือเท่าไหร่?
ตอบ: ทฤษฎีสูงสุด 128 ตัวอักษร แต่ความสามารถในการอ่านลดลงอย่างมีนัยสำคัญเมื่อเกิน 30‑40 ตัวอักษร สำหรับข้อมูลจำนวนมากให้ใช้ QR Code

ถาม: การเพิ่มบาร์โค้ดจะทำให้ไฟล์ PDF เพิ่มขนาดอย่างมีนัยสำคัญหรือไม่?
ตอบ: ไม่มาก—บาร์โค้ดเป็นกราฟิกเวกเตอร์ ปกติเพิ่มเพียง 5‑20 KB ต่อบาร์โค้ด ขึ้นกับขนาดและความซับซ้อน

ถาม: สามารถหมุนบาร์โค้ดหรือวางแนวตั้งได้หรือไม่?
ตอบ: ได้! ใช้ options.setRotationAngle(90) เพื่อหมุนบาร์โค้ด ซึ่งสะดวกสำหรับการวางที่ขอบกระดาษ

ถาม: จะทำให้บาร์โค้ดปรากฏบนทุกหน้าของ PDF หลายหน้าได้อย่างไร?
ตอบ: วนลูปผ่านหน้าและใช้ลายเซ็นบนแต่ละหน้า ตรวจสอบคลาส PagesSetup ในเอกสาร GroupDocs เพื่อควบคุมหน้าที่ต้องการลงนาม

ถาม: ถ้าสแกนเนอร์ของฉันอ่านบาร์โค้ดไม่ได้ควรทำอย่างไร?
ตอบ: ตรวจสอบว่าสแกนเนอร์รองรับประเภทบาร์โค้ดที่เลือกหรือไม่ แล้วเพิ่มขนาดบาร์โค้ด—ปัญหาส่วนใหญ่เกิดจากบาร์ที่เล็กเกินไป ควรมีความกว้างอย่างน้อย 1 inch (2.54 cm) เพื่อความอ่านได้เชื่อถือได้

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

เอกสาร:

ดาวน์โหลดและไลเซนส์:

ชุมชนและการสนับสนุน:

  • Support Forum - ชุมชนที่มีวิศวกรของ GroupDocs คอยให้ความช่วยเหลือ

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

<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-signature</artifactId>
    <version>23.12</version>
</dependency>
implementation 'com.groupdocs:groupdocs-signature:23.12'
import com.groupdocs.signature.Signature;

public class QuickTest {
    public static void main(String[] args) {
        try {
            Signature signature = new Signature("test-document.pdf");
            System.out.println("GroupDocs.Signature is ready to go!");
        } catch (Exception e) {
            System.err.println("Setup issue: " + e.getMessage());
        }
    }
}
String filePath = "YOUR_DOCUMENT_DIRECTORY/sample.pdf";
Signature signature = new Signature(filePath);
import com.groupdocs.signature.options.sign.BarcodeSignOptions;
import com.groupdocs.signature.domain.barcodes.BarcodeTypes;

BarcodeSignOptions options = new BarcodeSignOptions("12345678");
options.setEncodeType(BarcodeTypes.Code128);
import com.groupdocs.signature.domain.enums.MeasureType;
import com.groupdocs.signature.domain.Padding;

// Use percentages instead of fixed pixels
options.setLocationMeasureType(MeasureType.Percents);
options.setLeft(5);  // 5% from the left edge
options.setTop(5);   // 5% from the top

// Size it proportionally too
options.setSizeMeasureType(MeasureType.Percents);
options.setWidth(10);  // 10% of page width
options.setHeight(5);  // 5% of page height

// Add some breathing room with margins
Padding margins = new Padding();
margins.setLeft(1);
margins.setTop(1);
margins.setRight(1);
options.setMargin(margins);
String outputFilePath = "YOUR_OUTPUT_DIRECTORY/SignWithPercents/sample_signed.pdf";
signature.sign(outputFilePath, options);
Path outputPath = Paths.get(outputFilePath);
Files.createDirectories(outputPath.getParent());
signature.sign(outputFilePath, options);
try {
    signature.sign(outputFilePath, options);
    System.out.println("PDF signed successfully at: " + outputFilePath);
} catch (Exception e) {
    System.err.println("Signing failed: " + e.getMessage());
    e.printStackTrace();
}
options.setLocationMeasureType(MeasureType.Percents);
options.setLeft(5);  // 5% from left works on any page width
options.setWidth(10);  // Give it room to breathe
options.setHeight(5);  // Maintain proper aspect ratio
String filePath = "documents/sample.pdf";  // Works on Windows, Mac, Linux
Files.createDirectories(Paths.get("output/signed"));
try (Signature signature = new Signature(filePath)) {
    signature.sign(outputFilePath, options);
} // Automatically closes and releases memory
import org.junit.Test;
import static org.junit.Assert.*;

public class BarcodeSignatureTest {
    
    @Test
    public void testBarcodeSigning() {
        String testPdf = "test-data/sample.pdf";
        String output = "test-output/signed.pdf";
        
        try (Signature signature = new Signature(testPdf)) {
            BarcodeSignOptions options = new BarcodeSignOptions("TEST123");
            options.setEncodeType(BarcodeTypes.Code128);
            
            signature.sign(output, options);
            
            // Verify output file exists
            assertTrue(new File(output).exists());
            
            // Verify file size increased (signature was added)
            long originalSize = new File(testPdf).length();
            long signedSize = new File(output).length();
            assertTrue(signedSize > originalSize);
            
        } catch (Exception e) {
            fail("Signing should not throw exception: " + e.getMessage());
        }
    }
}
List<String> pdfFiles = Arrays.asList("doc1.pdf", "doc2.pdf", "doc3.pdf");

for (String pdfFile : pdfFiles) {
    try (Signature signature = new Signature(pdfFile)) {
        BarcodeSignOptions options = createBarcodeOptions(); // Reuse options
        signature.sign(getOutputPath(pdfFile), options);
    }
}
// Create options once, reuse many times
BarcodeSignOptions templateOptions = createStandardBarcodeOptions();

// For each document, clone and customize
BarcodeSignOptions documentOptions = templateOptions.clone();
documentOptions.setText(uniqueDocumentId);

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