最近做项目碰到需要打印条码的部分,用了下面代码尝试了一下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/barcode.jpeg"); 条形码的图片
} }
一般的打印机,比如epson,canon直接用A4打印没有问题。但是用标签打印机(纸张尺寸是52mm*29mm)就报错
错误:Paper's imageable width is too small请教这是什么原因,懂得兄弟指点一下呗,谢谢!
Java图片职场
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/barcode.jpeg"); 条形码的图片
} }
一般的打印机,比如epson,canon直接用A4打印没有问题。但是用标签打印机(纸张尺寸是52mm*29mm)就报错
错误:Paper's imageable width is too small请教这是什么原因,懂得兄弟指点一下呗,谢谢!
Java图片职场
哪里出问题了吗?