|
From: Robert L K. <rl...@al...> - 2001-12-28 00:17:07
|
From: Michael Sweet <mi...@ea...>
Date: Wed, 26 Dec 2001 19:05:00 -0500
Ultimately, you *really* want a static snapshot of what a driver
can do. This ideally should be a data file that can be read by a
driver/ filter (using a standard API of course) to handle any
printer/job specific setup. For devices whose options depend on,
say, what kind of ink cartridge is installed, a background driver
process can monitor the printer and update the static snapshot as
needed (and obviously any driver would need to reject/stop a job
that won't print on the current configuration)
I'm generally in favor of a dynamic view of what the driver can do,
because the constraints might be very complex, but this is an
interesting thought. However, why do we need an actual file in the
filesystem (as opposed to some virtualized way of getting a handle to
a PPD file)? Do applications rely on open()/fopen() of PPD files, or
is there some more abstract way of getting this information?
> The capabilities subgroup needs to query the printer driver at
> runtime and not though a static file (like a PPD). Also, I
> believe that applications will want to be able to select between
> different print paths based on the printer's capabilities.
This isn't Windows or OS/2. Applications will almost universally
produce PostScript until another format is universally supported.
Also, many PostScript apps already support PPD files, so it makes
sense to try to support it (even if you add your own extended
attributes which the standard apps ignore)
Extensions like this don't scale very well either; everybody will
define their own extensions (look at what Cups-o-matic does; it uses
structured comments in the PPD file to encode a perl data
structure!).
Also, trying to get printer drivers and applications to talk to
each other directly is a mistake. It doesn't scale. Better to
have the driver maintain a snapshot of the current configuration
than to introduce potentially long round-trip times which may
require UI intervention ("your printer is not connected or turned
off") or have to be postponed because the device is busy.
I don't think we should think in terms of a single-threaded
server-based driver, but having some way of querying the driver (even
if it's a different process) would be useful. I'm not convinced that
we need to address this in the first go-round, but ultimately we
will.
> While inkjets may not need acceleration, there are other printers
> that do. It is much more efficient to transfer a high level call
> like drawing a rounded box than it is to transfer a bitmap image
> of that box. Some examples of high level languages are: HP-GL/2,
> PCL6, and even Postscript. Should there be two different code
> paths for printing to an inkjet printer vs printing to a
> Postscript printer?
PostScript, with all its weaknesses, is still the defacto standard
printing format for UNIX apps. Any printing solution will have to
support it to be accepted, which is why CUPS includes a version of
GNU Ghostscript for non-PS printers, and why we use PPDs.
I agree wholeheartedly with this. Applications normally shouldn't
generate raw printer data; Postscript is no worse of an IL than
anything else.
--
Robert Krawitz <rl...@al...> http://www.tiac.net/users/rlk/
Tall Clubs International -- http://www.tall.org/ or 1-888-IM-TALL-2
Member of the League for Programming Freedom -- mail lp...@uu...
Project lead for Gimp Print/stp -- http://gimp-print.sourceforge.net
"Linux doesn't dictate how I work, I dictate how Linux works."
--Eric Crampton
|