PlusMagi's Blog By Pitt Phunsanit Technology Virtual Printer คืออะไร และจำลองการทำงานของเครื่องพิมพ์ฮาร์ดแวร์อย่างไร

Virtual Printer คืออะไร และจำลองการทำงานของเครื่องพิมพ์ฮาร์ดแวร์อย่างไร

Virtual Printer (เครื่องพิมพ์เสมือน) คือ ซอฟต์แวร์ที่ติดตั้งตัวเองและลงทะเบียนในระบบปฏิบัติการ (OS) ให้มีสถานะ หน้าตา และคุณสมบัติเหมือนกับ เครื่องพิมพ์ฮาร์ดแวร์จริง (Physical Printer) ทุกประการ

เมื่อผู้ใช้งานหรือโปรแกรมสั่งพิมพ์ (ผ่านคำสั่ง Ctrl + P หรือ Print API) ระบบจะมองเห็น Virtual Printer อยู่ในรายการเลือกเครื่องพิมพ์ แต่แทนที่ข้อมูลจะถูกส่งผ่านสายเคเบิลหรือเครือข่ายไปควบคุมลูกกลิ้ง ฉีดหมึก หรือยิงเลเซอร์ลงบนแผ่นกระดาษจริง ซอฟต์แวร์ Virtual Printer จะ “ดักจับคำสั่งพิมพ์” เหล่านั้นไว้ แล้วนำชุดข้อมูลกราฟิกและข้อความไปประมวลผลต่อในรูปแบบดิจิทัล เช่น:

  • แปลงเป็นไฟล์เอกสาร (PDF, XPS)
  • แปลงเป็นไฟล์ภาพ (PNG, TIFF, JPEG)
  • ส่งต่อไปยัง API, Webhook หรือเก็บเข้าฐานข้อมูล/ระบบจัดการเอกสาร (DMS)
  • ส่งข้ามเครือข่ายไปยังระบบ Fax หรือคิวพิมพ์ส่วนกลาง (Follow-Me Print)

กลไกการจำลองการทำงานของเครื่องพิมพ์ฮาร์ดแวร์

การที่ระบบปฏิบัติการและแอปพลิเคชันต่างๆ สามารถสั่งพิมพ์งานมายัง Virtual Printer ได้อย่างแนบเนียน เกิดจากการที่ Virtual Printer เข้าไปแทนที่ขั้นตอนใน Print Subsystem / Print Pipeline ของ OS ในจุดที่เหมาะสม


เปรียบเทียบกระบวนการทำงาน (Physical vs. Virtual)

Plain Text

Plain Text

[ Application ] (เช่น Word, Chrome, ERP)
       │
       ▼  (ส่งคำสั่งวาดภาพ: ข้อความ, เวกเตอร์, สี)
[ Graphic Engine ของ OS ] (Windows GDI/Direct2D หรือ CUPS บน Linux/macOS)
       │
       ▼  (แปลงเป็นข้อมูลขั้นกลาง: EMF, XPS, PostScript)
[ Print Spooler Service ] (คิวพักและจัดการงานพิมพ์)
       │
       ├─────────────────────────────────────────┐
       ▼ (กรณีเครื่องพิมพ์จริง)                     ▼ (กรณี Virtual Printer)
[ Hardware Printer Driver ]               [ Virtual Printer Driver / Pipeline ]
  • แปลงข้อมูลเป็น Page Description         • ดักจับข้อมูลดิบ (RAW / EMF / PostScript)
    Language (PDL) เช่น PCL, ESC/P          • ไม่ต้องสร้างคำสั่งควบคุมกลไกมอเตอร์
       │                                         │
       ▼                                         ▼
[ Port Monitor (USB / TCP/IP) ]           [ Virtual Port Monitor / Redirection ]
  • ส่ง Data Stream ไปที่สายเคเบิล/IP      • เขียนข้อมูลลง Memory Buffer หรือ Temp File
       │                                         │
       ▼                                         ▼
[ Physical Hardware ]                     [ Software Processing Core ]
  • ลูกกลิ้งดึงกระดาษ, ฉีดหมึก/ยิงเลเซอร์     • แปลงเป็น PDF, เรียก OCR, ยิงเข้า Webhook

ส่วนประกอบสำคัญที่ใช้จำลองการทำงาน

เพื่อให้ OS ยอมรับว่าเป็นเครื่องพิมพ์จริงๆ ซอฟต์แวร์ Virtual Printer ต้องจำลองและควบคุม 3 ส่วนประกอบหลักของระบบการพิมพ์


ก. การจำลอง Driver และความสามารถของอุปกรณ์ (Capabilities & UI)

  • จำลองคุณสมบัติกระดาษ
    เครื่องพิมพ์จริงจะต้องรายงานว่ารองรับกระดาษขนาดไหนบ้าง (A4, Letter, A3), พิมพ์สองหน้าได้ไหม, รองรับสีกี่บิต หรือมีความละเอียดกี่ DPI
  • จำลองผ่านไฟล์คอนฟิก
    • บน Windows
      Virtual Printer จะใช้ไฟล์ .GPD (Generic Printer Description) หรือกำหนดค่าใน V4 Print Driver Manifest
    • บน Linux/macOS
      ใช้ไฟล์ .PPD (PostScript Printer Description)
  • ผลลัพธ์คือ เมื่อผู้ใช้กดดูหน้าต่าง “Printer Properties” หรือ “Preferences” จะเห็นหน้าต่างตั้งค่าหน้ากระดาษ การวางแนว (Portrait/Landscape) เหมือนเครื่องพิมพ์จริงทุกประการ

ข. การจำลอง Driver Rendering (Graphics Processing)

  • เมื่อกดพิมพ์ แอปพลิเคชันจะไม่ส่งรูปภาพสำเร็จรูปไป แต่จะส่ง “คำสั่งวาดภาพ” (เช่น วาดเส้นตรงจากจุด A ไป B ด้วยความหนา 2px, พิมพ์ตัวอักษร Font Cordia ขนาด 16pt ที่พิกัด X, Y)
  • Driver ของเครื่องพิมพ์จริงจะต้องมีชิป/ซอฟต์แวร์แปลงคำสั่งเหล่านี้ให้เป็นภาษาเครื่อง (PDL เช่น PCL6 หรือ PostScript)
  • Virtual Printer จะทำหน้าที่เป็น Renderer รับคำสั่งเหล่านั้น แล้วเรนเดอร์กลับมาเป็น Bitmap บนหน่วยความจำ (In-Memory Canvas) หรือแปลงโครงสร้างเวกเตอร์เหล่านั้นให้อยู่ในฟอร์แมตเอกสารดิจิทัลโดยตรง (เช่น คำสั่งวาดข้อความ ถูกแปลงเป็น Object Text ในสเปกของ PDF)

ค. การจำลอง Port Monitor (I/O Redirection)

  • เครื่องพิมพ์จริงต้องการพอร์ตในการสื่อสาร เช่น USB001, LPT1 หรือพอร์ตเครือข่าย Standard TCP/IP Port (Raw 9100 / LPR)
  • Virtual Printer จะติดตั้ง Virtual Port Monitor (เช่น พอร์ตแบบซอฟต์แวร์ที่ไม่มีฮาร์ดแวร์รองรับ)
  • เมื่อ Print Spooler ส่ง Data Stream มายังพอร์ตนี้ แทนที่ข้อมูลจะวิ่งออกการ์ดแลนหรือพอร์ต USB พอร์ตจำลองจะเปลี่ยนเส้นทางข้อมูล (Redirect) ไปยัง:
    • Named Pipe หรือ Local Socket เพื่อส่งต่อให้ Service ของโปรแกรมเมอร์ประมวลผล
    • Local File System เพื่อเขียนเป็นไฟล์ชั่วคราว (Temp File)
    • ส่งต่อเป็น Argument ให้กับเครื่องมือแปลงไฟล์เบื้องหลัง (เช่น Ghostscript)

สรุป

Virtual Printer คือการนำมาตรฐานการพิมพ์ของ OS ที่มีอยู่แล้วมาทำ Abstraction Layer โดย “หลอก” OS ว่ามีเครื่องพิมพ์ เพื่อให้ได้รับข้อมูลเอกสารในฟอร์แมตมาตรฐานที่มีความสมบูรณ์สูง (WYSIWYG – What You See Is What You Get) แล้วเปลี่ยนปลายทางจากการพ่นหมึกลงกระดาษ ไปเป็นการส่งไฟล์หรือส่งข้อมูลเข้าสู่กระบวนการดิจิทัลแทน