Vector Driver API Update

Osamu MIHARA OpenPrinting WG Japan/Asia Fuji Printing Systems Co. Ltd. 15-17 November 2004 What is a Vector Printer Driver?

V Called by render engine, such as or X print server, to convert spool data to PDL. V Generates PDL using higher level graphics commands, instead of rasterized bitmap image. Objectives

V Performance Optimization V Achieve full speed printing on fast laser printers V Utilizes graphical acceleration feature supported by printer controllers V Data Size Optimization V Reduces size of print data using high level graphics commands. V Contributes to reduce network bandwidth and increase through-put V Print Quality Optimization V Utilizes printer’s graphics quality enhancement technology by sending vector graphics command V Color Optimization • Driver can recognize the kind of graphics primitives and switch color scheme – natural color for bitmaps and vivid colors for graphics and text. V Independent Design from Rendering Engine V Single driver architecture can be adopted to various printing environment V Free from Free License Woe V Vendor drivers can be provided without making source code open Various Configuration for Vector Printer Driver

(1) (2) (3)

ApplicationApplication GUI Call ApplicationApplication ApplicationApplication GUI Tool Kit Vector API GUI Tool Kit Metafile (PostScript, PDF, ...) Vector API Renderer PrinterPrinter Driver Driver Renderer Printer Driver PDL Printer Driver Vector API PrintPrint System. System. PDL PrinterPrinter Driver Driver PrintPrint System. System. -Static Link PDL Print System. -Dynami Link Print System. -IPC Wrapper PDL PDL Current Status

V Current Specification Version - Version 0.2 V ftp://ftp.pwg.org/pub/pwg/fsg/vector/ V opfc implementation based on v0.2 V Project funded by IPA V HP PCL5, ESC/Page, Canon LIPS IV V Support on Ghostscript and Xprint V Easily ported to BSD platform V https://sourceforge.jp/projects/opfc/ V Current Activity V Device Font & Font downloading support V To-Dos V Generalize Job Property and Device Capability Parameter definition V Small Memory Device Support (binary encoding of parameters) V Multiple Job for Single Driver V Dynamic APIEntry V Architecture independent data types V (Color Issue) V (formalize IPC Protocol) Ghostscript+Raster Printer Driver

CUPS Modules control/status data OpenPrinting Modules printing data Printer Specific Modules Postscript data stream BerkeleyBerkeley commands commands ApplicationApplication SystemSystem V V comm commandsands Ghostscript Parameter Printer Configuration IPP I/F Lib Printer Option Information CUPS API Lib. CUPS API Lib. PPDPPD files files

Scheduler Scheduler ccoonnfigfig files files Operation environment settings

filters filter invoking drivers Postscript data stream filters

Ghostscript option parameters PDL stream (Raster) zSource code of printer GhostscriptGhostscript driver should be open. RasterRaster Printer Printer Driver Driver zRaster only: slow!

I/O manager (USB, Parallell, lpd, etc.) backendbackend

printerprinter IPA Implementation (1): Ghostscript+Vector Printer Driver CUPS Modules control/status data OpenPrinting Modules printing data Printer Specific Modules Postscript data stream BerkeleyBerkeley commands commands ApplicationApplication SystemSystem V V comm commandsands Ghostscript Parameter Printer Configuration IPP I/F Lib Printer Option Information CUPS API Lib. CUPS API Lib. PPDPPD files files

Scheduler Scheduler ccoonnfigfig files files Operation environment settings filtersfilters filter invoking drivers Postscript data stream Ghostscript option parameters zDriver can be closed. It PDL stream Ghostscript can handles vector data Ghostscript with some overhead of PDL Data Stream glglueue code code glue code/IPC. Vector Printer Driver API PDL stream

VectorVector Printer Printer Driver Driver backendbackend I/O manager (USB, Parallell, lpd, etc.)

printerprinter IPA Implementation (2): Xprint+Vector Printer Driver CUPS Modules control/status data OpenPrinting Modules printing data ApplicationApplication Printer Specific Modules XX lib/Xp lib/Xpliblib

X Protocol

X Print Server Berkeley commands X Print Server PDL Data Berkeley commands glglueue code code Stream Vector Printer Driver API PDL stream Vector Printer Driver Vector Printer Driver Parameter Printer Configuration IPP I/F Lib Printer Option Information CUPS API Lib. CUPS API Lib. PPDPPD files files

Scheduler Scheduler ccoonnfigfig files files Operation environment settings filtersfilters filter invoking drivers

I/O manager (USB, Parallell, lpd, etc.) backendbackend

printerprinter URLs

V Specification V V0.2: ftp://ftp.pwg.org/pub/pwg/fsg/vector/ V V0.3pre (work in progress) • http://omihara.hp.infoseek.co.jp/unixprint/vector/VectorPrinterDriver API-20040906.sxw V Source Code (IPA Sample Implementation) V https://sourceforge.jp/projects/opfc/ V Official Drivers (sites in Japanese) V http://cweb.canon.jp/drv-upd/lasershot/drv_linux.html V http://www.epkowa.co.jp/linux/dl_OPFC.html V IPA Project V http://www.epkowa3.on.arena.ne.jp/OpenPrintingProject/index_e .html