ANN: TIFFRenderer for FOP

Hello!

For the people interested in faxing using xsl-fo and FOP I'm happy to announce
TIFFRenderer for FOP. The homepage is at
http://www.tkachenko.com/fop/tiffrenderer.html and here is some info:


TIFFRenderer for FOP, version 0.9

TIFFRenderer is a small Java library extending Apache's FOP by providing
possibility to output multi-page TIFF (Tagged Image File Format) images. [TIFF
is one of the most popular and flexible of the current public domain raster
file formats, which was primarily designed for raster data interchange and is
standard format in faxing applications.] TIFFRenderer is not a real renderer
on its own, it just extends org.apache.fop.render.awt.AWTRenderer class and
encodes generated by that renderer AWT images to TIFF format. To actual
encoding TIFFRenderer uses slightly modified free of charge open source TIFF
codec [1] by Sun Microsystems, Inc. (Actually, a very similar TIFF codec is
included in Batik distribution, but unfortunately it has very limited support
for TIFF compression methods). TIFFRenderer has no dependencies on JAI, JIMI
or other image processing libraries.

For demonstration of using TIFFRenderer in a web application see TIFFRenderer
Demo [2].


Features

* Supported TIFF compression methods:
         o Raw uncompressed data
         o Byte-oriented run-length encoding "PackBits" compression
         o Modified Huffman Compression (CCITT Group 3 1D facsimile compression)
         o CCITT T.4 bilevel compression (CCITT Group 3 2D facsimile compression)
         o CCITT T.6 bilevel compression (CCITT Group 4 facsimile compression)
         o JPEG-in-TIFF compression
         o DEFLATE lossless compression (also known as "Zip-in-TIFF")
* Ability to add extra images before/after those generated by FOP.


Requirements

Not sure yet. Tested with FOP 0.20.3 under Sun JRE 1.3.1, 1.4. Definitely
doesn't work under IBM JDK1.2.2 (WebShere 3.5) because of some bug in AWT
implementation.


Download and Installation

* Compiled version: tifferenderer-0.9.jar (140 Kb) [3].
* Sources: tifferenderer-0.9-src.jar (180 Kb) [4].

Just put tiffrenderer-0.9.jar into the CLASSPATH.
Testing: run TIFFRendererTest class with two arguments - xsl-fo file and tiff
file to be generated (having fop related jars and tiffrenderer-0.9.jar in the
CLASSPATH):

java com.multiconn.fop.TIFFRendererTest table.fo table.tif
			

Documentation

See TIFFRenderer Javadoc [5].
Main pattern of using TIFFRenderer is a very primitive one:

//Creates TIFFRenderer instance
TIFFRenderer tiffRenderer = TIFFRendererFactory.newTIFFRenderer();
//Creates render/encode params collection
TIFFRendererParams params = new TIFFRendererParams();
//Sets up params
params.setCompression(TIFFRendererParams.COMPRESSION_GROUP3_1D);
//Sets params to the renderer
tiffRenderer.setRenderParams(params);
//Sets renderer to the FOP driver
driver.setRenderer(tiffRenderer);
//Runs FOP
driver.run();
		
See also TIFFRendererDemo servlet source [6] as example of using TIFFRenderer
in a servlet.


Licence issues

TIFFRenderer is subject to the Mozilla Public License Version 1.0 and is
distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
or implied. Original TIFF codec source code licence by Sun Microsystems, Inc.:
JAI_1.1.1_sample_io_sourcecodelic.10_23_01.txt [7].


To be done

* Diminish library size by eliminating duplicate classes, which are
already in Batik jar.


Feedback

Any comments and suggestions would be greatly appreciated, feel free to
contact me: <olegt@multiconn.com>.

Links:

[1] http://developer.java.sun.com/developer/sampsource/jai
[2] http://www.tkachenko.com/fop/TIFFRendererDemo
[3] http://www.tkachenko.com/fop/tiffrenderer-0.9.jar
[4] http://www.tkachenko.com/fop/tiffrenderer-0.9-src.jar
[5] http://www.tkachenko.com/fop/tiffrenderer-doc/index.html
[6] http://www.tkachenko.com/fop/TIFFRendererDemo/src/TIFFRendererDemoServlet.java
[7] http://www.tkachenko.com/fop/JAI_1.1.1_sample_io_sourcecodelic.10_23_01.txt

-- 
Oleg Tkachenko
Multiconn International, Israel

Received on Sunday, 12 May 2002 05:10:26 UTC