Snowbound Software’s RasterMasterTM for the JavaTM Platform includes the ability to print multi-page file formats such as TIFF files. You can use the code sample below to print a multi-page file. The key step to include is to create the PrintJob outside of the loop and call PrintJob.end() after the loop.
/**
* Copyright (C) 2002-2007 by Snowbound Software Corp.
* All rights reserved.
*/
package com.snowbound.test;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.JobAttributes;
import java.awt.PrintJob;
import java.awt.Toolkit;
import Snow.Snowbnd;
public class PrintSample
{
public static void printDocument(String fileName, Frame parentFrame)
{
Snowbnd snow = new Snowbnd();
JobAttributes job = new JobAttributes();
PrintJob pjob = Toolkit.getDefaultToolkit().getPrintJob(parentFrame,
“Snowbound”,
job,
null);
int pageCount = snow.IMGLOW_get_pages(fileName);
for (int pageIndex = 0; pageIndex < pageCount; pageIndex++)
{
snow.IMG_decompress_bitmap(fileName, pageIndex);
printImage(snow, 300, pjob);
}
pjob.end();
}
public static void printImage(Snowbnd simage, int dpi, PrintJob pjob)
{
int width, height, x, y;
int imageHeight, imageWidth;
PrintJob printJob;
Graphics printGraphics;
if (pjob != null && simage != null)
{
printGraphics = pjob.getGraphics();
if (printGraphics != null)
{
Dimension pd = pjob.getPageDimension();
if (simage.dis_rotate == 90 || simage.dis_rotate == 270)
{
imageWidth = simage.getHeight();
imageHeight = simage.getWidth();
}
else
{
imageWidth = simage.getWidth();
imageHeight = simage.getHeight();
}
System.out.println(“imageWidth: ” + imageWidth);
width = (pd.width / 72) * dpi;
height = (imageHeight * width) / imageWidth;
if (height > ((pd.height / 72) * dpi))
{
x = (((pd.width / 72) * dpi) – width) / 2;
y = 0;
}
else
{
x = 0;
y = (((pd.height / 72) * dpi) – height) / 2;
}
simage
.IMG_print_bitmap(printGraphics, x, y, width, height, dpi);
printGraphics.dispose();
}
}
return;
}
public static void main (String args[])
{
printDocument(“c:/imgs/6-pages.tif”, new Frame());
}
}