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 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 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 = PrintServiceLookup.lookupDefaultPrintService();
//设置打印内容
Doc doc = new SimpleDoc(fin,dof, null);
//出现设置对话框
PrintService service = ServiceUI .printDialog(null, 50, 50, pss, ps,dof, pras);
System.out.println("Printing image..........." + ps);
//获得打印工作
DocPrintJob job = service.createPrintJob();
if(service!=null)
{
//开始打印
job.print(doc, pras);
fin.close();
}
}
catch (IOException ie) {
//捕获io异常
ie.printStackTrace();
}
catch (PrintException pe)
{
//捕获打印异常
pe.printStackTrace();
}
}
}