</p>
<section id="pcl">
<title>PCL</title>
- <warning>The PCL Renderer is in the sandbox and not yet functional in FOP Trunk!!! Please help us ressurrect this feature.</warning>
+ <warning>The PCL Renderer is currently in the process of being revived. This is work in progress.</warning>
<p>
- This format is for the Hewlett-Packard PCL printers.
- It should produce output as close to identical as possible to the
- printed output of the PDFRenderer within the limitations of the
+ This format is for the Hewlett-Packard PCL printers and other printers
+ supporting PCL. It should produce output as close to identical as possible
+ to the printed output of the PDFRenderer within the limitations of the
renderer, and output device.
</p>
- <!--p>
- The output created by the PCLRenderer is generic PCL 5 as documented
- in the "HP PCL 5 Printer Language Technical Reference Manual" (copyright 1990).
+ <p>
+ The output created by the PCLRenderer is generic PCL 5, HP GL/2 and PJL.
This should allow any device fully supporting PCL 5 to be able to
- print the output generated by the PCLRenderer.
+ print the output generated by the PCLRenderer. PJL is used to control the
+ print job and switch to the PCL language. PCL 5 is used for text, raster
+ graphics and rectangular fill graphics. HP GL/2 is used for more complex
+ painting operations.
</p>
+ <section id="pcl-references">
+ <title>References</title>
+ <ul>
+ <li><a href="http://en.wikipedia.org/wiki/Printer_Control_Language">WikiPedia entry on PCL</a></li>
+ <li><a href="http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=bpl04568">Technical reference documents on PCL from Hewlett-Packard</a></li>
+ </ul>
+ </section>
<section id="pcl-limitations">
<title>Limitations</title>
<ul>
- <li>Text or graphics outside the left or top of the printable area are not rendered properly. In general things that should print to the left of the printable area are shifted to the right so that they start at the left edge of the printable area and an error message is generated.</li>
- <li>The Helvetica and Times fonts are not well supported among PCL printers so Helvetica is mapped to Arial and Times is mapped to Times New. This is done in the PCLRenderer, no changes are required in the FO's. The metrics and appearance for Helvetica/Arial and Times/Times New are nearly identical, so this has not been a problem so far.</li>
- <li>Only the original fonts built into FOP are supported.</li>
- <li>For the non-symbol fonts, the ISO 8859/1 symbol set is used (PCL set "0N").</li>
+ <li>
+ Text or graphics outside the left or top of the printable area are not
+ rendered properly. This is a limitation of PCL, not FOP. In general,
+ things that should print to the left of the printable area are shifted
+ to the right so that they start at the left edge of the printable area.
+ </li>
+ <li>
+ The Helvetica and Times fonts are not well supported among PCL printers
+ so Helvetica is mapped to Arial and Times is mapped to Times New. This
+ is done in the PCLRenderer, no changes are required in the FO's. The
+ metrics and appearance for Helvetica/Arial and Times/Times New are
+ nearly identical, so this has not been a problem so far.
+ </li>
+ <li>
+ Only the original fonts built into FOP are supported. Support for
+ TrueType fonts will be added later.
+ </li>
+ <li>For the non-symbol fonts, the ISO 8859-1 symbol set is used (PCL set "0N").</li>
<li>Multibyte characters are not supported.</li>
- <li>SVG is not supported.</li>
- <li>Images print black and white only (not dithered). When the renderer prints a color image it uses a threshold value, colors above the threshold are printed as white and below are black. If you need to print a non-monochrome image you should dither it first.</li>
- <li>Image scaling is accomplished by modifying the effective resolution of the image data. The available resolutions are 75, 100, 150, 300, and 600 DPI.</li>
- <li>Color printing is not supported. Colors are rendered by mapping the color intensity to one of the PCL fill shades (from white to black in 9 steps).</li>
+ <li>
+ At the moment, only monochrome output is supported. PCL5c color extensions
+ will only be implemented on demand. Color and grayscale images are converted
+ to monochrome bitmaps (1-bit). Dithering only occurs if the JAI image library
+ is available.
+ </li>
+ <li>
+ Images are scaled up to the next resolution level supported by PCL (75,
+ 100, 150, 200, 300, 600 dpi). For color and grayscale images an even
+ higher PCL resolution is selected to give the dithering algorithm a chance
+ to improve the bitmap quality.
+ </li>
+ <li>
+ Color printing is not supported. Colors are rendered by mapping the color
+ intensity to one of the PCL fill shades (from white to black in 9 steps).
+ </li>
</ul>
</section>
- <section id="pcl-additional">
+ <!--section id="pcl-additional">
<title>Additional Features</title>
<p>There are some special features that are controlled by some public variables on the PCLRenderer class.</p>
<dl>
<dt>orientation</dt>
- <dd>The logical page orientation is controlled by the public orientation variable. Legal values are:-->
- <!--ul>
+ <dd>The logical page orientation is controlled by the public orientation variable. Legal values are:>
+ <ul>
<li>0 Portrait</li>
<li>1 Landscape</li>
<li>2 Reverse Portrait</li>
<li>3 Reverse Landscape</li>
- </ul-->
- <!--/dd>
+ </ul>
+ </dd>
<dt>curdiv, paperheight</dt>
<dd>The curdiv and paperheight variables allow multiple virtual pages to be printed on a piece of paper. This allows a standard laser printer to use perforated paper where every perforation will represent an individual page. The paperheight sets the height of a piece of paper in decipoints. This will be divided by the page.getHeight() to determine the number of equal sized divisions (pages) that will fit on the paper. The curdiv variable may be read/written to get/set the current division on the page (to set the starting division and read the ending division for multiple invocations).</dd>
<dt>topmargin, leftmargin</dt>