CJET - HP Laserjet Emulation for Canon CaPSL (level III+) laser printers
Copyright (c) 1996 Michael Huijsmans    

email: mgh@sbox.tu-graz.ac.at

--------------------------------------------------------------------------
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should also have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
--------------------------------------------------------------------------
Contents of this file:

0. What is Cjet?
1. Supported machines
2. Usage
3. Features
4. Notes & Bugs

See file INSTALL for compilation instructions.

See file TODO for missing features


0. What is it?
--------------

CJET filters printer data from stdin to stdout, converting HP PCL
(Printer Command Language) escape sequences and data structures,
e.g. font headers, to their CaPSL equivalents. CaPSL is short for
`Canon Printing Systems Language'. Whereas PCL is a de-facto
world-wide standard as a laser and inkjet printer control language (if
you can call a bunch of escape sequences a `language'), CaPSL is
limited to Canon laser printers. Newer laser printers from Canon come
with PCL emulation, so CaPSL may well be facing extinction.



1. Supported machines:
----------------------

The program itself should compile on any UNIX or UNIX-like system.
It even compiles under MS-DOS. (BC 3.1 and DJGPP). 

A Canon laser printer with CaPSL level III is required. 


2. Current usage:
-----------------

	cjet [options] <PCL-input >CaPSL-output

  Current options:
  ----------------

	-f      set CaPSL paint mode to 'full'. Default is 'partial'. 
		Full paint mode requires at least 1.5MB printer memory.
		Not very useful right now.

	-p	ignore paper size commands. Useful for printing files 
		formatted for paper size X on printers with paper size Y.
	
	-q	quiet mode. Suppresses all warning messages

	-x X 	shift output on paper by X dots horizontally. Positive values
		of X shift to the right; negative values to the left.
		Dots are 1/300 in.

	-y Y	shift output on paper by Y dots vertically. Positive values 
		of Y shift downwards; negative values shift upwards.


3. Features:
------------

Cjet currently `emulates' a LaserJet II and supports some PCL features
found on later LaserJet models like the LaserJet IIp, IIIp, 4l.  Not all
PCL commands are supported or fully functional; see the Missing / TODO
file TODO. The emulation is fairly complete; I emphasized the font
download and raster graphics stuff in favor of the plain text stuff 
because I needed a TeX DVI driver ASAP. Among other things, Cjet
supports the following:

- PCL Laserjet download fonts: auto-rotating and old-style landscape
  types

- PCL 5 raster compression modes 1, 2 and 3

- Roman-8, ISO Latin 1, Windows, PC-8, PC-850, PC-8D/N, and various other
  symbol sets for text - mode printing 

- PJL sequences for newer LaserJet models are parsed and ignored (dvilj4l)


Cjet was "tested" with:

- PCL output from dvilj, dvilj2p, dvilj4l: TeX DVI drivers for various
  LaserJet models:  LJII / LJIIp / LJ4l

- PCL output from misc. software, e.g. the ljet3 driver in GhostScript
  version 3.12, the LJIIIP driver in Windoze 3.1 (Note: see TODO on this)



4. Notes: 
---------

PJL (Printer job language) sequences (in output from dvilj4l) are now ignored. 

I mainly use `cjet' under Linux to convert PCL output from dvilj2p, a
TeX DVI driver for various flavours of LaserJet printers. It seems to work
(I can read what the Canon prints), at least for the 128-character fonts.
The newer 256-character fonts shouldn't pose any problems, except for the
fact that then only 16 download fonts are possible. This leads to
unpredictable results when more fonts get downloaded. 
A workaround for this of course is to split the printing job into 
smaller chunks.
I also prefer using GhostScript with the ljet3 driver and cjet instead
of the lbp8 driver because the lbp8 output gets shifted down and to
the right for some reason; with cjet I can shift it right back...
Caution: PCL mode 3 compressed raster data usually produces HUGE
amounts of CaPSL raster data, as CaPSL level III does not support any
compression. 

My printer is a Canon LBP-8 III+ with 1.5Mb memory. `Cjet' should(?)
also work for other Canon printers with less memory (LBP-4, LBP-4U),
except for full-page raster graphics, but I couldn't test this.
Anyway, enough paper was wasted already...

The printers must support CaPSL level III or higher.


Bugs:
-----
Version 0.8.9:
A quasi-bug involving missing download characters in control code positions
has been fixed.
Selection of nonexistent download fonts (dvilj) is now ignored.


----
Email bug reports, suggestions, remarks etc. to me at:

 mgh@sbox.tu-graz.ac.at

However, I can't promise prompt reaction, as I *really* have other
things to do...




