วิธีสร้างลายเซ็นบาร์โค้ดใน 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);