`
tiansoft
  • 浏览: 174141 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

java实现图片的打印

    博客分类:
  • java
 
阅读更多
打印图片,支持打印gif,jpg,png等格式图片的
package com.gyhq.soft;

import java.io.*;
import javax.print.*;
import javax.print.attribute.*;
import javax.print.attribute.standard.*;
/**
* 打印图片的类
* @author tianmaochun
*
*/
public class PrintImage {
/**
* 画图片的方法
* @param fileName[图片的路径]
*/
public void drawImage(String fileName){
try {
DocFlavor dof = null;
//根据用户选择不同的图片格式获得不同的打印设备
if(fileName.endsWith(".gif")){
//gif
dof = DocFlavor.INPUT_STREAM.GIF;
}else if(fileName.endsWith(".jpg")){
//jpg
dof = DocFlavor.INPUT_STREAM.JPEG;
}else if(fileName.endsWith(".png")){
    //png
dof = DocFlavor.INPUT_STREAM.PNG;
}
//字节流获取图片信息
FileInputStream fin = new FileInputStream(fileName);
//获得打印属性
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
//每一次默认打印一页
pras.add(new Copies(1));
//获得打印设备 ,字节流方式,图片格式
PrintService pss[] = PrintServiceLookup.lookupPrintServices(dof,pras);
//如果没有获取打印机
if (pss.length == 0){
//终止程序
return;
}
//获取第一个打印机
PrintService ps = pss[0];
System.out.println("Printing image..........." + ps);
//获得打印工作
DocPrintJob job = ps.createPrintJob();

//设置打印内容
Doc doc = new SimpleDoc(fin,dof, null);
//出现设置对话框
PrintService service =ServiceUI .printDialog(null, 50, 50, pss, ps,dof, pras);
if(service!=null){
//开始打印
job.print(doc, pras);
fin.close();
}
}
catch (IOException ie) {
//捕获io异常
ie.printStackTrace();
}
catch (PrintException pe) {
//捕获打印异常
pe.printStackTrace();
}
}
/**
* 主函数
* @param args
*
*/
public static void main(String args[]){
PrintImage dp = new PrintImage();
dp.drawImage("img/11.png");
    }

}
分享到:
评论
2 楼 2047699523 2015-04-19  
1 楼 lionios 2012-12-16  
请问为什么一定要有PrintService service =ServiceUI .printDialog(null, 50, 50, pss, ps,dof, pras);的判断?如果注释掉打印出来就是一片空白,我看API明明说打印对话框现在是默认不显示了。

相关推荐

Global site tag (gtag.js) - Google Analytics