我想把内存中的数据通过打印机输出,但JAVA的打印试了好久都不成功.String str1 = "Test1";
String str2 = "Test2";
String str3 = "Test3";
以上在内存的数据,用的是JDK1.4新增的API.现在要求是打印机放入一张纸,上面有三个方框.要把这3个字符串准确的打印在方框内.
以上实现试了总是不行.内存的字符串数据是不是一定要像以下这样才可以作为SimpleDoc类的参数?
ByteArrayInputStream input = new ByteArrayInputStream(str1.getBytes());那位有JAVA的打印程序也能发给小弟.
[email protected]
问题搞定立马结贴.
String str2 = "Test2";
String str3 = "Test3";
以上在内存的数据,用的是JDK1.4新增的API.现在要求是打印机放入一张纸,上面有三个方框.要把这3个字符串准确的打印在方框内.
以上实现试了总是不行.内存的字符串数据是不是一定要像以下这样才可以作为SimpleDoc类的参数?
ByteArrayInputStream input = new ByteArrayInputStream(str1.getBytes());那位有JAVA的打印程序也能发给小弟.
[email protected]
问题搞定立马结贴.
printJob.setPrintable( (Printable) yourCanvas);
if (printJob.printDialog()) {
try {
printJob.setJobName("My Canvas");
printJob.print();
}
catch (Exception ex) {
ex.printStackTrace();
}
}yourCanvas是一个实现Printable的类,实现如下方法
public int print(Graphics g, PageFormat pf, int pi) throws PrinterException {
if (pi >= 1) {
return Printable.NO_SUCH_PAGE;
}
Graphics2D g2 = (Graphics2D) g;
//在g2上绘图
return Printable.PAGE_EXISTS;
}
你用的是JDK1.4以前的API,那个我试过是否有1.4新增加的API实现的呢?//表现类
DocFlavor flavor = DocFlavor.STRING.TEXT_PLAIN;
//获得打印服务列表
PrintService[] services = PrintServiceLookup.lookupPrintServices(flavor, null);for (int i = 0; i < services.length; i++) {
System.out.println(services[i].getName());
}我想打印内存中的字符串,打印机保证正常.居然最后没有显示出我的打印机,就是说不支持.可以看帮助文档里DocFlavor.STRING.TEXT_PLAIN就是打印内存中的字符串啊...
我换成
DocFlavor flavor = DocFlavor.URL.GIF;//表现类是javav.net.url的GIF图片
程序最后就列出了我的打印机.
有点搞不懂了,问题出在那里呢?
PrintRequestAttributeSet attrs = new HashPrintRequestAttributeSet();
PrintService[] services = PrintServiceLookup.lookupPrintServices(flavor, null);
PrintService select = ServiceUI.printDialog(null,200,200,services,services[0],flavor,attrs);
DocPrintJob job = select.createPrintJob();
String str = "donbing";
ByteArrayInputStream(str.getBytes());
SimpleDoc doc = new SimpleDoc(os,flavor,null);
job.print(doc,attrs);
我写的一个测试程序
我的打印机是USB的HP Deskjet D2368,提法文档打印错误.
改为
DocFlavor flavor = DocFlavor.URL.GIF;
--------------------------------------------------------------
String str = "donbing";
ByteArrayInputStream(str.getBytes());
改为
URL os = new URL("http://community.csdn.net/logo/images/prj.210.67.gif");
我的喷墨打印机就正常打印.图片到是没问题.
有那位高人说明一下吗?