1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315
|
<html>
<head>
<title>foo2zjs: a linux printer driver for ZjStream protocol</title>
<link REL=STYLESHEET TYPE="text/css" HREF="style.css">
</head>
<body>
<font SIZE="+1"><b>foo2zjs: a linux printer driver for ZjStream protocol
(e.g. Minolta magicolor 2300 DL)
</b></font><br>
<p><font SIZE="-1">Tarball last modified: <i>${MODtarball}</i>
- <a href=ChangeLog>ChangeLog</a>
</font> <br>
<blockquote>
<img src=arch.gif>
<p>
<b>foo2zjs</b> is an open source printer driver for printers that use the
Zenographics
<a href="http://oem.zeno.com/public/?SDK/0_SuperPrint%20SDK/4_Reference/File%20and%20Stream%20Formats/ZjStream.htm">
ZjStream wire protocol</a> for their print data, such as the
<a href=http://www.minolta-qms.com/products/color/mc2300DL/index.html>
Minolta/QMS magicolor 2300 DL</a>. These printers are often erroneously
referred to as winprinters or GDI printers. However, Microsoft GDI only
mandates the API between an application and the printer driver, not the
protocol
on the wire between the printer driver and the printer.
In fact, ZjStream printers
are raster printers which happen to use a very efficient wire protocol
which was developed by
<a href=http://www.zeno.com>Zenographics</a>
and licensed by most major printer
manufacturers for at least some of their product lines. ZjStream is
just one of many wire protocols that are in use today, such as Postscript,
PCL, Epson, etc.
<p>
This driver uses <a href=http://www.ghostscript.com>Ghostscript</a>
to perform all of the heavy lifting (image processing).
There are five major components to the <b>foo2zjs</b> printer driver.
<ul>
<li><b>foo2zjs</b> - the page image to protocol conversion engine of the driver.
<li><b>foo2zjs-wrapper</b> - a shell script (compatible with foomatic)
which runs <b>ghostscript</b> and <b>foo2zjs</b> in a pipeline.
<li><b>icc2ps</b> - converts an ICM color profile to a Postscript CRD,
which is then fed into Ghostscript before the users Postscript program.
<li><b>foomatic-db</b> - <a href=http://www.linuxprinting.org>foomatic</a>
database entries which describe the supported printers and their options so that
printer spoolers know how to access the printer using <b>foo2zjs-wrapper</b>.
<li><b>zjsdecode</b> - a tool for developers to inspect ZjStreams.
</ul>
<p>
You can read the <a href=manual.pdf>manual pages</a> for more information.
<p>
With the <b>foo2zjs</b> driver, you can print to some Minolta/QMS,
HP and possibly other ZjStream printers:
<blockquote>
<table border>
<tr> <th> Supported Printer</th> <th>B/W</th> <th>Color</th> <th>Driver</th><th>Notes</th> </tr>
<tr> <td>Minolta/QMS magicolor 2300 DL</td> <td>Yes</td> <td>Yes</td>
<td>foo2zjs</td>
<td>This is the printer owned by the author.</td> </tr>
<tr> <td>Minolta/QMS magicolor 2200 DL</td> <td>Yes</td> <td>Yes</td>
<td>foo2zjs</td>
<td>Tested by Adam Erickson.</td> </tr>
<tr> <td>Minolta Color PageWorks/Pro L</td> <td>Yes</td> <td>Yes</td>
<td>foo2zjs</td>
<td>Tested by tekknogenius.</td> </tr>
<tr> <td>HP LaserJet 1005</td> </td> <td>Yes</td> <td>No</td>
<td>foo2zjs</td>
<td>Tested by Brian Batey</td> </tr>
<tr> <td>HP LaserJet 1000</td> </td> <td>Yes</td> <td>No</td>
<td>foo2zjs</td>
<td>Tested by Andrew Schretter</td> </tr>
</table>
</blockquote>
<p>
These printers are not ZjStream printers, and are not supported by this driver:
<blockquote>
<table border>
<tr> <th>Unsupported Printer</th> <th>Notes</th> </tr>
<tr> <td>Minolta/QMS magicolor 2300W</td>
<td>Try the <a href=http://m2300w.sf.net/>m2300w driver</a></td> </tr>
<tr> <td>Minolta/QMS PagePro 1[23]xxW</td>
<td>Try <a href=http://sweb.cz/beetman>Beetman's 1200W driver</a>
or <a href=http://www.hinterbergen.de/mala/min12xxw>Schiller's 1[23]xxW driver</a>
</td> </tr>
</table>
</blockquote>
<p>
You might also be interested in my <a href=${URLOAK}/>foo2oak</a> driver for
OAKT protocol printers such as the HP Color LaserJet 1500.
</blockquote>
<h3>Contribute (MUST READ)</h3>
<blockquote>
<table>
<tr>
<td>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="linuxtrade@mn.rr.com">
<input type="hidden" name="undefined_quantity" value="1">
<input type="hidden" name="item_name" value="foo2zjs printer driver">
<input type="hidden" name="item_number" value="donation">
<input type="hidden" name="amount" value="">
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="return"
value="${URLZJS}/">
<input type="hidden" name="cancel_return"
value="${URLZJS}/">
<input type="image"
src="http://images.paypal.com/images/x-click-butcc-donate.gif"
border="0" name="submit"
alt="Contribute to foo2zjs development">
</form>
</td>
<td>
<-- Click here to support the development of this and other printer
drivers. Any amount is appreciated. Also desired: Minolta 2300 DL
lower paper tray, HP LaserJet 1500, HP LaserJet 1000, Apple Mac OS X system.
</td>
</tr>
</table>
<p>
I keep a record of everyone who has contributed to this driver,
in terms of 1) money or equipment, 2) <i>usable</i> bug reports,
3) code and advice.
<p>
There are over 1000 unique IP addresses that have downloaded
this driver. There are only a handful of people who have ever
contributed to this project (and my thanks go out to them).
<p>
Before you email me, make sure you have contributed something.
<p>
And if you work for <b>Kyocera-Minolta</b> or <b>HP</b>,
you <b>should be embarrased</b> for your company.
Neither company has ever offered any kind of support for this driver.
</blockquote>
<h3>Download and Install</h3>
<blockquote>
Click the link, or cut and paste the whole command line below to download
the driver.
<p>
<blockquote><pre>
$ wget <a href=${URLZJS}/foo2zjs.tar.gz>${URLZJS}/foo2zjs.tar.gz</a>
</pre></blockquote>
<p>Now unpack it:
<blockquote><pre>
Unpack:
$ tar zxf foo2zjs.tar.gz
$ cd foo2zjs
</pre></blockquote>
<p>
Now compile and install it.
The <a href=INSTALL>INSTALL</a> file contains more detailed instructions;
please read it now.
<blockquote><pre>
Compile:
$ make
(Optional) Get extra files from the web, such as .ICM profiles for color
correction, and firmware:
$ ./getweb 2300 # Get Minolta 2300 DL .ICM files
$ ./getweb 2200 # Get Minolta 2200 DL .ICM files
$ ./getweb cpwl # Get Minolta Color PageWorks/Pro L .ICM files
$ ./getweb 1005 # Get HP LJ1005 firmware file
$ ./getweb 1000 # Get HP LJ1000 firmware file
$ ./getweb all # Get all of the above
Install driver, foomatic XML files, and extra files:
$ su
# make install
</pre></blockquote>
<p>Now create printer entries for your spooler.
Create at least one queue for monochrome, and another
queue for color printing. Create the queues first, then edit them
and set the device options as desired. See your
operating system documentation for further details on creating
a printer queue. Click any hyperlinks below for sample screenshots.
<blockquote>
For Redhat 7.2/7.3/8.0/9.0 and Fedora Core 1 users:
<blockquote><pre>
# <a href=redhat/>printconf-gui</a>
</pre></blockquote>
For Mandrake users:
<blockquote><pre>
# printerdrake
</pre></blockquote>
For Suse 9.0 users:
<blockquote><pre>
# yast
</pre></blockquote>
</blockquote>
<p>For a networked Minolta/QMS 2300 DL, I used a "Queue Type"
of "Unix Printer (LPD)", and set the "Server" to the IP address
of the printer, and the "Queue" to "lp".
<p>For low level testing, you can also create a "raw queue", which will accept
ZjStream files as-is and send them directly to the printer.
</blockquote>
<h3>Color Correction</h3>
<blockquote>
There are now two methods for color correction available in foo2zjs:
the original ICM-based method and Gerhard Fuernkranz and Leif Birkenfeld's
CRD-based method. Each method has advantages and disadvantages, which
is why both methods are still included.
<p>
The original ICM-based method uses the manufacturer-supplied ICM color
profiles and converts those to CRD's on the fly. This method is the
fastest. However it suffers from two problems. First, the manufacturer
profiles are tuned for their Windows driver, not foo2zjs. So the colors
aren't great. Second, Ghostscript has serious issues with its dithering
(halftoning) alogorithms.
With Ghostscript 7.05, the dithering is highly visible and
attempting to tune it to be less visibile (with, say, -dDITHERPPI=150)
results in areas of color blotches. With Ghostscript 8.00, the dithering
results in highly visible banding. The advantages of the ICM method
are that its the fastest of the two methods, and it often allows the
foo2zjs engine to optimize monochrome output on a color queue to printing
just the K plane.
<p>
The CRD-based method was tuned for Ghostscript and the foo2zjs engine,
and produces better colors. It also uses thresholding to make up
for the halftoning issues in Ghostscript. The drawbacks of this
method are that it is very slow, it requires Ghostscript 8.14 for
best results, and it currently cannot optimize
pure monochrome text printed on a color queue to printing just the K plane.
It is expected that this latter deficiency will be fixed soon. It
is unknown when Ghostscript 8.14 will generally be available in
Linux distros.
<p>
So, pick your poison.
</blockquote>
<h3>History</h3>
<blockquote>
The <b>foo2zjs</b> engine began life as Robert Szalai's
<a href="http://www.linuxprinting.org/download/printing/pbmtozjs.c">
pbmtozjs</a> program.
It also uses Markus Kuhn's
<a href=http://www.cl.cam.ac.uk/~mgk25/jbigkit/>
JBIG-KIT compression library</a> (included), and Marti Maria's
<a href=http://www.littlecms.com>icc2ps program</a> (included).
<p>The <b>foo2zjs</b> engine was overhauled by Rick Richardson to
add color support for the Minolta/QMS 2300DL,
add command line options,
limit data chunk size to 65536 bytes,
and other miscellaneous features. Rick also contributed the <b>zjsdecode</b>
program and the foomatic database entries for the Minolta/QMS magicolor
2300 DL.
<p>Gerhard Fuernkranz and Leif Birkenfeld created the CRD-based
color correction methods.
</blockquote>
<h3>Resources</h3>
<blockquote>
<ul>
<li>
<a href=http://www.linuxprinting.org>www.linuxprinting.org</a>
- Home of foomatic
<li>
<a href=http://ddk.zeno.com/Reference/ZjStream/Default.htm>ZjStream Reference</a>
- Overview of ZjS data format
<li>
<a href=http://www.freecolormanagement.com/color/links.htm>freecolormanagement.com</a>
- CMS Links
<li>
<a href=http://www.aim-dtp.net/index.htm>www.aim-dtp.net/index.htm</a>
- Accurate Image Manipulation for Desktop Publishing
<li>
<a href=http://www.color.org/>http://www.color.org/</a>
- The International Color Consortium
<li>
<a href=http://web.access.net.au/argyll/color.html>web.access.net.au/argyll/color.html</a>
- icclib - ICC (.icm) file format I/O library
<li>
<a href=http://www.fho-emden.de/~hoffmann/howww41a.html>Gernot Hoffmann</a>
- Color printer test pages
<li>
<a href=http://www.drycreekphoto.com/custom/customprofiles.htm>Dry Creek Photo</a>
- Possible source for buying a custom .ICM color profile ($50)
<li>
<a href=http://www.chromix.com/ColorValet/Print/>ColorValet</a>
- Possible source for buying a custom .ICM color profile ($100)
<li>
<a href=http://www.icscolor.com/profilecity1.asp>ProfileCity</a>
- Possible source for buying a custom .ICM color profile ($100)
<li>
<a href=http://digitaldog.net/services.html>The Digital Dog</a>
- Possible source for buying a custom .ICM color profile ($100)
<li>
<a href=http://www.network-theory.co.uk/articles/booklet.html>Printing booklets</a>
- ... with PSUTILS -- support for creep (shingling)
</ul>
</blockquote>
<hr WIDTH="100%">
Please <a HREF="mailto:rickr@mn.rr.com">E-mail</a>
<a href=http://home.mn.rr.com/richardsons/>Rick Richardson</a> with any
questions, comments or corrections.
I do not read or reply to HTML email or messages sent under an alias.
Use your real name in any correspondence.
<br>
<img src="http://rkkda.com/tinc?key=G4NgRyQ9&no=1">
<font SIZE="-1">Last modified: <i>${MODindex}</i></font>
<br>
</body>
</html>
|