Convert JSON เป็น PDF ง่ายนิดเดียวโดยใช้ iText library
สวัสดีครับทุกคน👋🏻 ผมเชื่อว่าเกือบทุกคนน่าจะรู้จักกับ PDF แต่ทุกคนเคยสงสัยกันไหมครับว่าเราจะแปลงโปรแกรมที่เราเขียนออกมาให้อยู่ในรูปแบบไฟล์ PDF ได้ยังไง😲😲😲
วันนี้ผมเลยมานำเสนอวิธีสำหรับสาวก Java Spring Boot มาแปลง JSON ให้ออกมาในรูปแบบไฟล์ PDF ง่ายนิดเดียวเพียงแค่คุณรู้จักกับ iText library 😙😙😙
Step 1 : Dependency
🔑 เพิ่ม dependency ของตัว itextpdf เพื่อให้สามารถใช้งาน library ของ itextpdf ได้
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.x.x</version>
</dependency>
Step 2: JSON
🔑 หน้าตาของ JSON ที่เราจะทำการเปลี่ยนให้เป็น PDF
ใน Json ประกอบไปด้วย 5 องค์ประกอบ คือ 👇🏻
- alignment คือ การจัดตำแหน่งของตัวอักษรหลักๆที่ใช้มีอยู่ 3 รูปแบบคือ ALIGN_LEFT (0) , ALIGN_CENTER (1) , ALIGN_RIGHT (2)
- data คือ ตัวอักษรที่เราจะวางลงไปบน PDF
- fontSize คือ ขนาดความใหญ่ของ Font ที่เรากำหนด
- positionX คือ ตำแหน่งแกน X ที่เราจะทำการวาง Data ลงไปบน PDF
- positionY คือ ตำแหน่งแกน Y ที่เราจะทำการวาง Data ลงไปบน PDF
STEP 3 : สร้าง Class ใหม่เพื่อเตรียม Map JsonArray ให้เป็น List ของ Object
🔑 สร้าง Class JsonDetails และใช้ @JsonProperty ของ fasterxml.jackson ช่วยในการ Map JsonArray ให้เป็น List ของ Object ซึ่งตัว library ของ fasterxml.jackson ต่างๆจะถูกเพิ่มอัตโนมัติจาก Spring Boot
STEP 4 : สร้าง Pdf Generator
🔑 เป็น Function ที่เอาไว้แปลง JSON ใน Step 2 ให้ออกมาเป็น PDF
🔑 ส่วนประกอบหลักๆของ Function pdfGenerator จะประกอบไปด้วย
- ObjectMapper
ที่ใช้ในการช่วย Map JsonArray ให้เป็น List ของ Object ที่เราสร้างไว้ในที่นี้คือจะทำการ Map JsonArray ให้ออกมาในรูปแบบ List<JsonDetails> โดยจะทำงานคู่กับ @JsonProperty ของ Class JsonDetails - Document
เป็น library ของ iText ไว้กำหนดขนาดของ PDF ว่าเป็นขนาดแบบใด เช่น A0 , A1 , A4 - PdfWriter
เป็น library ของ iText ใช้เป็น Doc Writer ของ PDF ซึ่งจะออกมาในรูปแบบ ByteArrayOutputStream - iTextPdfService
เป็น Function ที่สร้างขึ้นมาเพื่อนำข้อมูลจาก list ของ jsonDetails มาเขียนลงบน pdfWriter ตามตำแหน่งและข้อมูลที่เรากำหนดไว้ใน JSON Step ที่ 2
- byteArrayToPdf
เป็น Function ที่สร้างขึ้นมาโดยการนำ ByteArrayOutputStream ที่ได้จาก iTextPdfService มาแปลงเป็น ByteArray เพื่อมาเขียนเป็นไฟล์ PDF
STEP 5 : Main Class
🔑 สร้าง Main Class เพื่อ run pdfGenerator ที่เราสร้างขึ้นมา
Result
หน้าตาของ PDF ที่เราได้ออกมาจากการใช้ iText library เป็นตามที่เราต้องการเลยเยี่ยมสุดๆๆๆๆๆๆ🎉🎉🎉🎉🎉
💡💡 ในโอกาสหน้า ผมจะมาเล่าให้ฟังเกี่ยวกับสิ่งที่เพิ่มขึ้นใน iText version 7 ซึ่งเป็น version ล่าสุดของ iText รวมถึง feature ใหม่ๆที่น่าสนใจครับ อย่าลืมรอติดตามกันนะะะะ🧸🧸