java 打印tiff及批量打印图片技术文章
java 打印tiff及批量打印图片技术文章
转载与发 2008-09-01 12:38:11 阅读772 评论3 字号:大中小 订阅
前几天老大让我做一个java print tiff格式图片的程序,而我对这个一无所知,幸好老大给我了些资料。刚开始只能做到把tiff图片分解成功,并单页打印,没办法实现多页连续打印,由于我对java Printable 这个类不是很了解,所以在哪个循环的地方控制不好,无法实现多页连续打印。但为了完成任务,我想办法把tiff图片文件转化成为了pdf文件,但是pdf文件在java中也不容易打印,所以我只好调用Adobe Reader 的打印程序打印,但是这个不是很好,需要客户装Adobe Reader 才行。后来经过老大稍微修改,实现了多页打印。后来发现其实我对哪个Printtable 里面的哪个pageIndex参数没有理解。
程序中需要的jar文件:jai_codec.jar;jai_core.jar;iText-2.1.3.jar(自己网上下吧,我也是自己找的,网址没有记下来);需要安装 jai_imageio插件(/binary-builds.html);
java 直接连续打印tiff 程序:
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.awt.image.renderable.ParameterBlock;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.File;
import java.util.Vector;
import javax.imageio.ImageReader;
import javax.imageio.spi.IIORegistry;
import javax.imageio.spi.ImageReaderSpi;
import javax.imageio.stream.FileImageInputStream;
import javax.imageio.stream.ImageInputStream;
import javax.media.jai.JAI;
import javax.media.jai.PlanarImage;
import javax.media.jai.RenderedOp;
import com.sun.media.jai.codec.FileSeekableStream;
import com.sun.media.jai.codec.SeekableStream;
import com.sun.media.jai.codec.TIFFDecodeParam;
import com.sun.media.jai.codec.TIFFDirectory;
public class PrintTiff {
private BufferedImage[] bi = null;
private File tiffFile = null;
private int pages = 0;
public static void main(String[] args) throws Exception {
PrintTiff pt = new PrintTiff("3699_001.tif");//自己的tiff文件,我是把它放在程序的同一个目录下面
pt.print();
}
public PrintTiff(String file) {
tiffFile = new File(file);
init();
}
private void init() {
try {
ImageReader tiffReader;
ImageInputStream input;
input = new FileImageInputStream(tiffFile);
//以下为读取tiff文件
IIORegistry iioreg = IIORegistry.getDefaultInstance(