วิธีใช้งาน
- วางสตริง Base64 หรือ data URI ที่ขึ้นต้นด้วย data:application/pdf;base64, ลงในช่องอินพุต
- ตรวจสอบว่าไฟล์ถูกตรวจพบว่าเป็น PDF แล้วอ่านเอกสารในตัวแสดงผล
- กด “ดาวน์โหลด” เพื่อบันทึกไฟล์ PDF ลงในอุปกรณ์ของคุณ
การคัดลอก Base64 จากการตอบกลับของ API
บริการที่สร้างใบแจ้งหนี้ ฉลากจัดส่ง รายงาน หรือสัญญาที่ลงนามแล้ว มักส่ง PDF กลับมาภายใน JSON เช่น {"filename": "label.pdf", "data": "JVBERi0..."} ให้คัดลอกเฉพาะข้อความระหว่างเครื่องหมายคำพูดที่อยู่หลังชื่อฟิลด์ และระวังรายละเอียดต่อไปนี้
- เครื่องหมายทับที่ถูก escape ตัวเข้ารหัส JSON บางตัว รวมถึง
json_encodeของ PHP จะเขียน/ทุกตัวเป็น\/เนื่องจาก/เป็นอักขระปกติของ Base64 ให้แทนที่\/ด้วย/ก่อนวาง หรือแยกวิเคราะห์ JSON ก่อนแล้วจึงคัดลอกค่า - เครื่องหมายคำพูดและจุลภาค ไม่ต้องคัดลอกเครื่องหมายคำพูดที่ครอบอยู่และจุลภาคที่ต่อท้าย
- การขึ้นบรรทัดใหม่ ช่องว่างและการขึ้นบรรทัดใหม่จริงภายใน Base64 เช่น ค่าที่ตัดบรรทัดทุก 76 อักขระ ไม่เป็นปัญหาและไม่ต้องลบออก แต่ลำดับอักขระ
\nหรือ\r\nที่เขียนไว้ตรง ๆ ใน JSON ดิบเป็นอีกเรื่องหนึ่ง เพราะเป็นอักขระแบ็กสแลชและต้องลบออก
การคัดลอกค่าจากมุมมองที่แยกวิเคราะห์แล้วในเครื่องมือสำหรับนักพัฒนาของเบราว์เซอร์จะช่วยหลีกเลี่ยงปัญหาการ escape ทั้งหมดนี้
การดึงไฟล์แนบ PDF ออกจากอีเมล
ไฟล์แนบของอีเมลถูกเก็บเป็น Base64 อยู่ภายในข้อความดิบ ให้เปิดซอร์สของข้อความ (“Show original” หรือ “แสดงต้นฉบับ” ใน Gmail, “Message Source” ใน Thunderbird, “Raw Source” ใน Apple Mail) แล้วหาส่วนที่มีส่วนหัว Content-Type: application/pdf (หรือ application/octet-stream ที่มีชื่อไฟล์ .pdf) และ Content-Transfer-Encoding: base64 คัดลอกบล็อกที่เริ่มหลังบรรทัดว่างใต้ส่วนหัวเหล่านั้น และสิ้นสุดก่อนบรรทัดถัดไปที่ขึ้นต้นด้วย -- ซึ่งเป็นเส้นแบ่งเขต MIME แล้ววางที่นี่ได้เลยตามที่เป็นอยู่ การขึ้นบรรทัดใหม่จะถูกละเว้น
การแสดง PDF แบบ Base64 ในเว็บแอปของคุณเอง
เมื่อฟรอนต์เอนด์ของคุณได้รับ PDF แบบ Base64 และต้องแสดงผล Blob URL จะเชื่อถือได้มากกว่า data URI ซึ่งเบราว์เซอร์บางตัวไม่ยอมเปิดในแท็บใหม่
const bytes = Uint8Array.from(atob(base64), c => c.charCodeAt(0));
const blob = new Blob([bytes], { type: 'application/pdf' });
const url = URL.createObjectURL(blob);
window.open(url); // หรือใช้เป็น src ของ <iframe>
เรียก URL.revokeObjectURL(url) เมื่อไม่ต้องใช้เอกสารแล้วเพื่อคืนหน่วยความจำ โปรดทราบว่า atob รับเฉพาะชุดตัวอักษร Base64 มาตรฐาน จึงต้องแปลงอินพุตแบบปลอดภัยสำหรับ URL (- และ _) ก่อน
คำถามที่พบบ่อย
ทำไม Base64 ของฉันจึงไม่ถูกตรวจพบว่าเป็น PDF
JVBERi0 ซึ่งเป็นผลการเข้ารหัสของ %PDF- หากสตริงของคุณขึ้นต้นด้วยเครื่องหมายคำพูด ชื่อฟิลด์ หรือข้อความอื่น ให้ลบส่วนนั้นออก หากขึ้นต้นด้วย SlZCRVJ แสดงว่า PDF ถูกเข้ารหัส Base64 สองครั้ง ให้ถอดรหัสหนึ่งครั้งด้วย ตัวถอดรหัส Base64 แล้วนำผลลัพธ์มาวางที่นี่ หากไม่ใช่กรณีเหล่านี้ ข้อมูลอาจเป็นไฟล์ชนิดอื่น ซึ่งเครื่องมือ แปลง Base64 เป็นไฟล์ สามารถระบุได้ดาวน์โหลด PDF ได้แต่เปิดไม่ได้ เกิดอะไรขึ้น
สาเหตุที่พบบ่อยที่สุดคือ Base64 ถูกตัดทอน ไฟล์บันทึก คอนโซล และเครื่องมือฐานข้อมูลมักตัดค่าที่ยาว และ PDF ที่ขาดส่วนท้ายจะอ่านไม่ได้ เพราะตารางอ้างอิงไขว้ (cross-reference table) ที่ใช้ระบุตำแหน่งของทุกหน้าถูกเก็บไว้ใกล้ท้ายไฟล์ ให้คัดลอกค่าทั้งหมดอีกครั้ง โดยวิธีที่ดีที่สุดคือบันทึกการตอบกลับต้นฉบับเป็นไฟล์
ตัวอย่างแสดงเป็นหน้าว่างบนมือถือ ไฟล์เสียหรือไม่
ไม่จำเป็นเสมอไป เบราว์เซอร์บนมือถือบางตัวไม่สามารถแสดง PDF ภายในหน้าเว็บได้ ให้ดาวน์โหลดไฟล์แล้วเปิดด้วยโปรแกรมอ่าน PDF เพื่อตรวจสอบ
ถอดรหัส PDF ที่มีการป้องกันด้วยรหัสผ่านได้หรือไม่
ได้ การถอดรหัสจะคืนไฟล์กลับมาครบทุกไบต์ รวมถึงการเข้ารหัสลับของไฟล์ด้วย ตัวอย่างอาจขอรหัสผ่านหรือแสดงเป็นหน้าว่าง และไฟล์ที่ดาวน์โหลดจะเปิดได้ในโปรแกรมอ่าน PDF ทุกโปรแกรมเมื่อคุณป้อนรหัสผ่าน
เอกสารถูกอัปโหลดไปที่ใดหรือไม่
ไม่ถูกอัปโหลด การถอดรหัสและการแสดงตัวอย่างเกิดขึ้นในเบราว์เซอร์ของคุณ PDF ที่เป็นความลับ เช่น สัญญา สลิปเงินเดือน หรือเวชระเบียน จึงอยู่บนอุปกรณ์ของคุณเท่านั้น