ระวัง! pdf-lib อาจแอบลบข้อมูลลูกค้าคุณทิ้งโดยไม่แจ้งเตือน
ทำไม pdf-lib ถึงลบข้อมูลของคุณทิ้ง
ถ้าคุณใช้ pdf-lib ในการสร้างเอกสาร PDF คุณต้องระวังให้ดี เพราะไลบรารี (ชุดคำสั่งที่เขียนไว้แล้วเพื่อช่วยให้ทำงานง่ายขึ้น) ตัวนี้อาจแอบลบตัวอักษรบางตัวในชื่อลูกค้าทิ้งไปโดยไม่บอกคุณเลย ผลคือคุณจะได้ PDF ที่เปิดอ่านได้ปกติ แต่ชื่อบริษัทหรือข้อมูลลูกค้าจะถูกตัดทอนจนผิดเพี้ยนไปโดยที่คุณไม่รู้ตัว
ปัญหามาจากฟอนต์มาตรฐานที่จำกัดเกินไป
PDF มีฟอนต์มาตรฐาน 14 แบบที่ทุกเครื่องอ่านได้โดยไม่ต้องฝังฟอนต์ลงไป แต่ฟอนต์พวกนี้รองรับแค่ภาษาอังกฤษและยุโรปตะวันตกเท่านั้น หากชื่อลูกค้ามีตัวอักษรพิเศษ เช่น Ł หรือ ź ระบบจะเกิดข้อผิดพลาดทันที
หลายคนแก้ปัญหาด้วยการเขียนโค้ดสั่งให้ลบตัวอักษรที่ระบบอ่านไม่ได้ทิ้งไป เพื่อให้โปรแกรมทำงานต่อได้โดยไม่พัง ซึ่งนี่คือจุดที่อันตรายที่สุด เพราะมันทำให้ข้อมูลลูกค้าหายไปโดยไม่มีการแจ้งเตือนใดๆ ในบันทึกการทำงาน (Log) เลย
วิธีแก้ปัญหาที่ถูกต้อง
ทางออกที่ดีที่สุดคือการฝังฟอนต์ (Embedding) เข้าไปในไฟล์ PDF เอง เพื่อให้คุณไม่ถูกจำกัดอยู่แค่ฟอนต์มาตรฐานยุคเก่า คุณควรใช้ @pdf-lib/fontkit เพื่อช่วยจัดการเรื่องฟอนต์ และเลือกใช้การทำ Subset (การดึงเฉพาะตัวอักษรที่ใช้จริงมาเก็บไว้) เพื่อไม่ให้ไฟล์มีขนาดใหญ่เกินความจำเป็น
นอกจากนี้ ใน Serverless Function (ระบบที่รันโค้ดเมื่อมีคำสั่งเข้ามาโดยไม่ต้องเปิดเซิร์ฟเวอร์ทิ้งไว้) คุณควรเก็บข้อมูลฟอนต์ไว้ในหน่วยความจำ (Cache) แทนการโหลดไฟล์ใหม่ทุกครั้ง เพื่อลดความหน่วงและประหยัดเวลาในการทำงาน
ตรวจสอบด้วยการแปลงเป็นภาพ
การดูแค่โค้ดไม่เพียงพอ เพราะปัญหาเรื่องข้อความล้นหน้ากระดาษหรือการวางตำแหน่งผิดพลาดมักไม่แสดงในบันทึกการทำงาน แนะนำให้ลองเขียนเทส (การทดสอบระบบ) โดยการแปลงหน้า PDF เป็นรูปภาพ (Rasterizer) แล้วเปิดดูด้วยตาตัวเอง วิธีนี้จะช่วยให้คุณเห็นข้อผิดพลาดที่ระบบตรวจไม่พบก่อนส่งงานให้ลูกค้าจริง
สรุปสั้นๆ
- ฟอนต์มาตรฐานของ PDF รองรับแค่ตัวอักษรภาษาอังกฤษทั่วไป
- การสั่งลบตัวอักษรที่อ่านไม่ได้ทิ้ง จะทำให้ข้อมูลลูกค้าหายไปแบบไม่มีร่องรอย
- ควรฝังฟอนต์ที่รองรับภาษาต่างๆ ลงในเอกสารและใช้การทำ Subset เพื่อคุมขนาดไฟล์
- ควรทำเทสโดยการแปลง PDF เป็นภาพ เพื่อตรวจหาความผิดปกติของข้อความที่ล้นหรือวางผิดตำแหน่ง
เรียบเรียงจากข่าวของ DEV Community อ่านข่าวต้นฉบับ ↗