เครื่องมือ PDF แบบ server-side จะอัปโหลดไฟล์ของคุณไปยังคอมพิวเตอร์ของผู้ให้บริการ ประมวลผลที่นั่น แล้วส่งผลลัพธ์กลับมา ส่วนเครื่องมือแบบ client-side จะดาวน์โหลดโปรแกรมมาที่เบราว์เซอร์ของคุณแทน และโปรแกรมนั้นประมวลผลไฟล์บนอุปกรณ์ของคุณเอง แบบแรกเอกสารของคุณต้องเดินทาง แบบที่สองมีแค่โค้ดที่เดินทาง

ความต่างข้อเดียวนี้เป็นตัวกำหนดว่าใครจะมีโอกาสเห็นไฟล์ของคุณได้บ้าง และยังอธิบายด้วยว่าทำไมเครื่องมือสองแบบนี้ให้ความรู้สึกต่างกัน ล้มเหลวคนละแบบ และเหมาะกับงานคนละอย่าง บทความนี้จะไล่ให้ดูทีละขั้นว่าแต่ละแบบเกิดอะไรขึ้นจริงๆ

เกิดอะไรขึ้นในเครื่องมือแบบ server-side

  1. คุณเลือกไฟล์ หน้าเว็บส่งไฟล์ผ่านอินเทอร์เน็ตไปยังเซิร์ฟเวอร์ของผู้ให้บริการ ซึ่งมักเป็นการอัปโหลดผ่าน HTTPS
  2. เซิร์ฟเวอร์จัดเก็บไฟล์ไว้ อย่างน้อยก็บนดิสก์หรือในหน่วยความจำตลอดเวลาที่ทำงาน และมักอยู่ในคิวร่วมกับไฟล์ของคนอื่น
  3. โปรแกรมบนเซิร์ฟเวอร์ เช่น ไลบรารี PDF ตัวแปลงไฟล์ หรือระบบรู้จำข้อความ เป็นตัวทำงาน
  4. ผลลัพธ์ก็ถูกจัดเก็บไว้เช่นกัน และหน้าเว็บให้ลิงก์คุณไว้ดาวน์โหลด
  5. ไฟล์ทั้งสองถูกลบในภายหลัง ตามกฎการเก็บรักษาข้อมูลของผู้ให้บริการเอง

เมื่อก่อนนี่เป็นวิธีเดียวที่ใช้ได้จริง เบราว์เซอร์ยังช้า และไลบรารีที่อ่านและเขียน PDF ใหม่ได้ก็ทำงานได้แค่บนเซิร์ฟเวอร์ เบราว์เซอร์ทุกวันนี้รันโค้ดซับซ้อนได้เร็ว และไลบรารี PDF โอเพนซอร์สที่เขียนด้วย JavaScript ก็ทำงานประจำวันส่วนใหญ่ได้ในแท็บเดียว

HTTPS ปกป้องขั้นที่ 1 จากการดักฟัง ส่วนขั้นที่ 2 ถึง 5 ขึ้นอยู่กับผู้ให้บริการ ทั้งระบบความปลอดภัย การเข้าถึงของพนักงาน ข้อมูลสำรอง และภาระทางกฎหมายในประเทศที่เซิร์ฟเวอร์ตั้งอยู่ ผู้ให้บริการส่วนใหญ่จัดการเรื่องนี้อย่างรับผิดชอบ แต่คุณต้องไว้ใจให้เขาทำเช่นนั้น

เกิดอะไรขึ้นในเครื่องมือแบบ client-side

  1. คุณเปิดหน้าเครื่องมือ เบราว์เซอร์ดาวน์โหลดหน้าเว็บและ JavaScript ของมัน เหมือนเว็บไซต์ทั่วไป
  2. คุณเลือกไฟล์ File API ของเบราว์เซอร์อ่านไฟล์จากดิสก์เข้าสู่หน่วยความจำของแท็บ ไม่มีอะไรถูกส่งออกไป
  3. โค้ดที่รันในแท็บเป็นตัวทำงาน ส่วนที่หนักมักรันใน Web Worker ซึ่งเป็นเธรดเบื้องหลัง หน้าเว็บจึงยังตอบสนองได้ดี
  4. ผลลัพธ์ถูกสร้างในหน่วยความจำและส่งให้คุณเป็นไฟล์ดาวน์โหลด ผ่านลิงก์ชั่วคราวที่ชี้ไปยังหน่วยความจำในเบราว์เซอร์ของคุณเอง
  5. เมื่อคุณปิดแท็บ หน่วยความจำจะถูกคืน ไม่มีอะไรต้องลบที่อื่น เพราะไม่มีอะไรถูกส่งออกไป

เครื่องมือ PDF ของ Kopitiam ทำงานแบบนี้ ใช้ pdf.js ซึ่งเป็นเอนจิน PDF โอเพนซอร์สจาก Mozilla เพื่ออ่านและวาดหน้า โดยตัวแยกวิเคราะห์ไฟล์รันอยู่ใน Web Worker และใช้ pdf-lib ซึ่งเป็นไลบรารีโอเพนซอร์สอีกตัวเพื่อสร้าง PDF ใหม่ ทั้งสองตัวรันอยู่ในแท็บของคุณ

client-side ไม่ได้แปลว่าหน้าเว็บไม่ส่งคำขอผ่านเครือข่ายเลย หน้าเว็บยังโหลดโค้ด ฟอนต์ และถ้าเป็นเว็บฟรีก็โหลดโฆษณาด้วย สิ่งที่สำคัญคือข้อมูลในไฟล์ของคุณไม่เคยอยู่ในคำขอใดๆ

ทำไมเครื่องมือแบบ client-side ทำงานออฟไลน์ได้

เมื่อโปรแกรมอยู่ในเบราว์เซอร์ของคุณแล้ว ก็ไม่ต้องใช้เครือข่ายในการทำงาน นี่คือเหตุผลที่การทดสอบแบบออฟไลน์ได้ผล เปิดเครื่องมือ ปิด Wi-Fi แล้วเครื่องมือก็ยังทำงานต่อไป ถ้ามันอัปโหลดไฟล์จริงๆ ก็จะล้มเหลวทันที

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

ข้อจำกัดจริงของการประมวลผลแบบ client-side

การทำงานบนอุปกรณ์ของคุณมีต้นทุน และเครื่องมือที่ซื่อตรงควรบอกให้คุณรู้

  • หน่วยความจำ ไฟล์ทั้งไฟล์อยู่ในหน่วยความจำของแท็บ และมักมีมากกว่าหนึ่งชุดระหว่างประมวลผล ไฟล์สแกนขนาด 200 MB อาจต้องใช้หน่วยความจำหลายเท่าของขนาดนั้น เบราว์เซอร์จำกัดหน่วยความจำต่อแท็บ และโทรศัพท์จำกัดเข้มที่สุด
  • ความเร็ว แล็ปท็อปหรือโทรศัพท์ของคุณเป็นตัวทำงาน ไม่ใช่ศูนย์ข้อมูล การแปลง 400 หน้าเป็นรูปภาพ หรือบีบอัดรูปทุกรูปในไฟล์สแกนยาวๆ ใหม่ จะใช้เวลานานขึ้นอย่างเห็นได้ชัดบนอุปกรณ์รุ่นเก่า
  • แบตเตอรี่และความร้อน งานที่ใช้เวลานานบนโทรศัพท์จะทำให้โปรเซสเซอร์ทำงานหนักอยู่พักหนึ่ง
  • งานยาก งานบางอย่างทำด้วยซอฟต์แวร์บนเซิร์ฟเวอร์ได้ง่ายกว่ามาก เช่น การรู้จำข้อความในคลังไฟล์สแกนขนาดใหญ่ หรือการแปลงไฟล์ Office ที่ซับซ้อนให้เลย์เอาต์ตรงเป๊ะ เครื่องมือหลายตัวที่ส่วนอื่นเป็นแบบ client-side จะส่งงานเฉพาะเหล่านี้ไปยังเซิร์ฟเวอร์

ในทางปฏิบัติ ขีดจำกัดขนาดไฟล์ของเครื่องมือแบบ client-side คืออุปกรณ์ของคุณ ไม่ใช่ตัวเลขบนหน้าราคา Kopitiam ไม่มีการจำกัดขนาดไฟล์ในโค้ด ไฟล์ที่ใหญ่มากจึงจะทำงานได้หรือไม่ก็หน่วยความจำไม่พอ การแยกไฟล์ใหญ่ก่อน หรือใช้เบราว์เซอร์บนคอมพิวเตอร์แทนโทรศัพท์ มักช่วยให้ผ่านได้

ลองนึกถึงไฟล์สแกนขนาด 40 MB ที่คุณต้องลดขนาดเพื่อส่งอีเมล บนเครือข่ายมือถือที่ช้า เครื่องมือแบบ server-side ต้องอัปโหลดทั้ง 40 MB ก่อนจะเริ่มได้ แล้วคุณก็ต้องดาวน์โหลดผลลัพธ์ เวลารอส่วนใหญ่จึงหมดไปกับเครือข่าย เครื่องมือแบบ client-side ข้ามการรับส่งทั้งสองขั้น แต่โทรศัพท์ของคุณต้องบีบอัดเอง ซึ่งอาจใช้เวลาพักหนึ่งกับไฟล์สแกนยาวๆ ไม่มีแบบไหนเร็วกว่าเสมอ ขึ้นอยู่กับการเชื่อมต่อและอุปกรณ์ของคุณ

แบบผสม และคำกล่าวอ้างที่ต้องอ่านให้ดี

ไม่ใช่ทุกเครื่องมือที่เป็นแบบใดแบบหนึ่งล้วนๆ คุณจะเจออยู่ไม่กี่รูปแบบ

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

วิธีตรวจว่าคุณกำลังใช้แบบไหน

เปิดเครื่องมือสำหรับนักพัฒนาของเบราว์เซอร์ (กด F12 ในเบราว์เซอร์บนคอมพิวเตอร์ส่วนใหญ่) ไปที่แท็บ Network แล้วลองใช้เครื่องมือกับไฟล์ทดสอบ เครื่องมือแบบ server-side จะแสดงคำขอขนาดใกล้เคียงกับไฟล์ของคุณส่งออกไปตอนเริ่มทำงาน เครื่องมือแบบ client-side จะแสดงแค่คำขอเล็กๆ เช่น โฆษณาหรือการส่งข้อมูลให้ระบบวิเคราะห์ และไม่มีคำขอไหนที่ใหญ่ขึ้นตามไฟล์ของคุณ การทำงานเดียวกันโดยปิด Wi-Fi คือการทดสอบเดียวกันแบบรวบรัด

ควรเลือกแบบไหน

สำหรับสัญญา สลิปเงินเดือน จดหมายทางการแพทย์ และสแกนบัตรประชาชน แบบ client-side เป็นตัวเลือกเริ่มต้นที่ดีกว่า เพราะไม่มีสำเนาที่อื่นให้รั่วไหลหรือถูกเก็บไว้ สำหรับโบรชัวร์สาธารณะหรือเมนู แบบไหนก็ได้ เมื่อคุณต้องการสิ่งที่เบราว์เซอร์ทำได้ไม่ดี เช่น การรู้จำข้อความในคลังเอกสาร 2,000 หน้า เครื่องมือแบบ server-side ที่น่าเชื่อถือและมีนโยบายการเก็บรักษาที่ชัดเจนก็เป็นตัวเลือกที่สมเหตุสมผล ใช้กับไฟล์นั้น ไม่ใช่ใช้จนเป็นนิสัย