25 คะแนน โดย GN⁺ 2025-08-16 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • EmbedPDF คือ โปรแกรมดู PDF แบบโอเพนซอร์ส ที่เชื่อมต่อเข้ากับโปรเจกต์ JavaScript ได้อย่างง่ายดายจากทุกที่
  • รองรับ การทำงานร่วมกับเฟรมเวิร์กฟรอนต์เอนด์ ที่หลากหลาย เช่น React, Vue, Svelte, Preact และ Vanilla JS
  • มาพร้อมความสามารถครบครัน เช่น คำอธิบายประกอบ, ไฮไลต์, การลบข้อความจริง (redaction), ค้นหา, ซูมเข้า/ออก และหมุน
  • รองรับทั้งประสิทธิภาพและความสามารถในการขยายด้วย virtual scrolling และ โครงสร้างแบบปลั๊กอิน
  • ใช้งานและร่วมพัฒนาได้อย่างอิสระภายใต้ สัญญาอนุญาต MIT

ภาพรวมโปรเจกต์โปรแกรมดู PDF แบบโอเพนซอร์ส EmbedPDF

  • EmbedPDF คือ โปรแกรมดู PDF แบบโอเพนซอร์สที่เป็นอิสระจากเฟรมเวิร์ก และสามารถฝังลงในโปรเจกต์ JavaScript ได้อย่างสะดวกไม่ว่าจะที่ใดก็ตาม
  • ใช้สัญญาอนุญาต MIT และมีจุดเด่นด้าน ความเข้ากันได้กับเฟรมเวิร์กฟรอนต์เอนด์ สมัยใหม่หลากหลาย เช่น React, Vue, Svelte, Preact และ Vanilla JS
  • มอบ ประสบการณ์การอ่านที่ทันสมัย พร้อม API ที่เป็นมิตรกับนักพัฒนา

ฟีเจอร์หลัก

  • รองรับคำอธิบายประกอบ: มีฟีเจอร์ใส่คำอธิบายประกอบหลากหลาย เช่น ไฮไลต์, sticky note, free text และ ink
  • Redaction ของจริง: เมื่อใช้ฟีเจอร์ redaction จะลบเนื้อหาจริงภายในเอกสารออกอย่างสมบูรณ์ เพื่อรองรับด้านความปลอดภัย
  • มีฟีเจอร์จัดการ PDF พื้นฐานที่สำคัญ เช่น ค้นหา, เลือกข้อความ, ซูมเข้า/ออก, หมุน
  • ใช้ การเลื่อนแบบลื่นไหลและ virtualized scrolling ทำให้เปิดดูเอกสารขนาดใหญ่ได้โดยประสิทธิภาพไม่ลดลง
  • รับประกันการขยายระบบได้ง่ายและตัดโค้ดที่ไม่จำเป็นออกได้ ด้วย สถาปัตยกรรมแบบปลั๊กอิน และปลั๊กอินที่รองรับ tree-shaking

เอกสารและเดโม

  • ดู เอกสารทางการ, คู่มือการติดตั้ง, API reference และตัวอย่าง ได้ที่ https://www.embedpdf.com
  • ใน ไลฟ์เดโม สามารถอัปโหลดไฟล์ PDF ด้วยตนเองหรือทดลองฟีเจอร์ผ่านเอกสารตัวอย่างได้

โอเพนซอร์สและสัญญาอนุญาต

  • ใช้งานซอร์สโค้ดและร่วมพัฒนาได้อย่างอิสระภายใต้ สัญญาอนุญาต MIT
  • มีการรวม PDFium อยู่ด้วย และในส่วนนี้เป็นไปตาม Apache License 2.0

ชุมชนและการมีส่วนร่วม

  • เปิดรับการเข้าร่วมจากชุมชนโอเพนซอร์สและ การมีส่วนร่วม ในหลากหลายรูปแบบ
  • สามารถสื่อสารกับนักพัฒนาได้ผ่านคู่มือ Contributing และ Github Discussions

ความสำคัญและจุดแตกต่างของโปรเจกต์

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

1 ความคิดเห็น

 
GN⁺ 2025-08-16
ความคิดเห็นจาก Hacker News
  • งานที่สำคัญจริง ๆ เกิดขึ้นใน PDFium โดยมีการอธิบายว่า PDFium เป็นโปรเจ็กต์ที่ Google ซื้อกิจการมาจาก Foxit แล้วพัฒนาต่อเอง และปัจจุบันถูกใช้งานอยู่ใน Chrome (ไม่ได้ตั้งใจจะลดทอนคุณค่าของงานที่กำลังถูกพูดถึงอย่างมากนี้ เพียงแค่อยากชี้ว่าไม่ใช่ PDF parser ที่เขียนขึ้นใหม่ทั้งหมด)
    • คิดว่าโปรแกรมดู PDF จำนวนมาก รวมถึงผลิตภัณฑ์เชิงพาณิชย์หลายตัว ก็สร้างอยู่บนพื้นฐานของ PDFium
  • สงสัยว่าทำไมถึงพัฒนาโปรเจ็กต์นี้ขึ้นมาทั้งที่มี Mozilla PDF.js อยู่แล้ว https://github.com/mozilla/pdf.js (ไม่ใช่คำวิจารณ์ แค่สงสัยเฉย ๆ เพราะมีเหตุผลมากมายที่คนจะสร้างสิ่งที่มีอยู่แล้วขึ้นมาใหม่)
    • เป้าหมายหลักคือการสร้างโปรแกรมดู PDF ที่นักพัฒนาสามารถนำไปผสานเข้ากับเว็บไซต์ได้ง่าย โดย PDF.js ในบางกรณีใช้งานปรับแต่งและขยายความสามารถได้ยากหรือซับซ้อน
    • หากต้องการ PDF markup (คำอธิบายประกอบ, รูปร่าง, คอมเมนต์) ทางเลือกที่นึกออกมีแค่สร้างเอง หรือใช้ PDF editor แบบสมัครสมาชิกที่ราคาค่อนข้างแพง และได้ยินมาว่าทีมที่ผสาน Apryse เข้าไปต้องแบกรับต้นทุนสูงมาก เพียงแค่เพื่อรองรับการแก้ไข PDF แบบพื้นฐาน
    • แค่มองผ่าน ๆ ก็เห็นได้ว่ามีฟีเจอร์อย่างคอมเมนต์ประกอบคำอธิบายที่แตกต่างจากผลิตภัณฑ์เดิม ๆ
    • ถ้าเปิดเอกสารเดโมบน iPad หรือ iPhone จะเห็นว่าฟีเจอร์ Print Preview ใช้งานได้เฉพาะบนอุปกรณ์เดสก์ท็อป
    • แค่เห็น open issue 402 รายการก็พอจะเดาได้ถึงความซับซ้อนมหาศาลของ PDF และความพยายามที่ต้องใช้ในการรองรับฟีเจอร์ทั้งหมดนั้น
  • เคยทำ side project ที่ฝัง PDF viewer ไว้ในตัว เวอร์ชันแรกใช้ pdf.js แต่เวลา zoom เร็ว ๆ จะกระตุกและรักษาโฟกัสได้ยาก เลยลงมือทำเองด้วย C++ pdfium และการเรนเดอร์ด้วย Metal ดูได้จากวิดีโอเดโม โดยใช้วิธี tiling เพื่อบาลานซ์ระหว่างหน่วยความจำกับประสิทธิภาพ ไม่คิดว่า pdfium บน WebAssembly จะทำงานได้ดีขนาดนี้ และจริง ๆ แล้วการพัฒนา UI บนเว็บก็สะดวกกว่า C++
    • พูดตรง ๆ ว่าเดโมดูเร็วและลื่นกว่ามาก การทำงานของ zoom ลื่นจริง ๆ ดูแล้วก็ทำให้อยากกลับไปลุยพัฒนาและปรับปรุงประสิทธิภาพอีกครั้ง
  • กำลังใช้ pdf.js อยู่ (17MB, 158 หน้า, รูปภาพจำนวนมาก, บน Windows) และแชร์ปัญหาที่เจอระหว่างทดสอบ
    • ลิงก์ใช้งานไม่ได้
    • มี bookmark ให้เห็น แต่ใช้งานไม่ได้
    • ใน Firefox เลือกข้อความไม่ได้
    • ใน Chrome การคลิกปุ่มกลางเมาส์ (เพื่อสกโรล) กลับกลายเป็นการเลือกข้อความ
    • ใน pdf.js การสกโรลยังโอเค แต่ในผลิตภัณฑ์นี้ เวลาสกโรลภาพจะเบลออยู่หลายร้อยถึงพันมิลลิวินาที และคุณภาพลดลงมาก ถ้ากระโดดหลายหน้าด้วยปุ่ม End หรือวิธีคล้ายกัน จะเห็นแต่หน้าจอขาว
    • ใน FF ปุ่มขึ้น/ลง, Page Up/Down, Home/End ใช้งานไม่ได้ (แต่ซ้าย/ขวาใช้ได้)
  • ลองทดสอบแบบง่าย ๆ แล้ว พบว่าใน Firefox ฟีเจอร์ annotation ใช้งานไม่ได้เลย แต่ใน Chrome ฟีเจอร์ annotation ทั้งหมด เช่น ขีดเส้นใต้และไฮไลต์ ใช้งานได้ปกติ
    • ขอบคุณที่แจ้ง เพราะยังไม่ได้ทดสอบ annotation บน Firefox ส่วนบน Chrome ใช้งานได้ปกติก็ถือว่าโชคดี จะรีบไปตรวจสอบเร็ว ๆ นี้
  • สงสัยว่ารองรับการแก้ไข outline (สารบัญ/โครงร่าง) ที่ฝังมาในเอกสารหรือไม่ เพราะนี่เป็นฟีเจอร์ที่รู้สึกขาดหายที่สุดใน PDF viewer/editor เสมอ และทุกครั้งที่ได้รับ PDF ที่ไม่มี outline ก็จะรู้สึกว่าต้องการฟีเจอร์นี้มาก
  • บน Linux + Firefox เครื่องมือ annotation/redaction ในเดโมใช้งานไม่ได้เลย แต่บน Chromium ในเครื่องเดียวกันกลับใช้ได้ปกติ
    • เพิ่งแก้ปัญหาที่เกิดบน Firefox ไป และตอนนี้ฟีเจอร์ annotation กับ redaction ใช้งานได้ปกติแล้วทั้งบน Linux + Firefox และ Chromium
  • เอกสารประกอบก็ดีมาก และชอบแนวคิดของ headless React library เป็นพิเศษ เพราะสามารถต่อ UI และฟีเจอร์แบบกำหนดเองได้ง่าย อยากถามว่าถ้าจะทำ auto highlight/underline คำศัพท์บางคำ แล้วเมื่อคลิกหรือ hover ให้แสดง custom component จะยากแค่ไหน
    • ทำได้ง่ายมาก และมีการทำฟีเจอร์ลักษณะนี้ไว้แล้ว สามารถเรนเดอร์ selectionMenu และ custom component ได้โดยตรงใน AnnotationLayer ถ้าอยากลงลึกกว่านี้ เชิญสอบถามได้ที่ ช่อง Discord
  • ผลิตภัณฑ์ดูน่าประทับใจ แต่สงสัยว่าจะมีแผนทำให้การพัฒนา PDF viewer ฟรีที่ฟีเจอร์เยอะขนาดนี้ยั่งยืนอย่างไร มีแผนทำฟีเจอร์สำหรับองค์กร, PDF hosting หรือโมเดลหารายได้อื่นหรือไม่
    • คำตอบสำหรับทุกข้อคือ “ใช่” โดยฝั่ง PDF viewer ที่รันบนไคลเอนต์จะยังคงฟรีและใช้ไลเซนส์ MIT แต่ฟีเจอร์เสริมอย่าง PDF hosting และ analytics/access control สำหรับองค์กร จะวางขายเป็นบริการแบบเสียเงิน
  • โดยรวมทำงานได้ดี แต่พบว่าตอนสลับไปโหมดดูเอกสาร ขณะที่เครื่องมือ redaction ยังทำงานอยู่ (มีเส้นสีแดงแสดงสถานะ) จะยังคงอยู่ในโหมด redaction ทำให้สกโรลไม่ได้ ต้องรีเฟรชจึงหาย
    • เป็นฟีดแบ็กที่ดีและจะรีบแก้ไข ในมือถือ การปิดการสกโรลระหว่างอยู่ในโหมด redaction เป็นพฤติกรรมที่ตั้งใจไว้ เพราะช่วยให้เลือกพื้นที่ได้แม่นยำขึ้น แต่เมื่อสลับไปที่แท็บ View ก็ควรออกจากโหมด redaction ทันที ขอบคุณที่ช่วยพบปัญหานี้