我想把内存中的数据通过打印机输出,但JAVA的打印试了好久都不成功.String str1 = "Test1";
String str2 = "Test2";
String str3 = "Test3";
以上在内存的数据,用的是JDK1.4新增的API.现在要求是打印机放入一张纸,上面有三个方框.要把这3个字符串准确的打印在方框内.
以上实现试了总是不行.内存的字符串数据是不是一定要像以下这样才可以作为SimpleDoc类的参数?
ByteArrayInputStream input = new ByteArrayInputStream(str1.getBytes());那位有JAVA的打印程序也能发给小弟.
[email protected]
问题搞定立马结贴.

解决方案 »

  1.   

    PrinterJob printJob = PrinterJob.getPrinterJob();
        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;
      }
      

  2.   

    fool_leave()谢你回复我.
    你用的是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图片
    程序最后就列出了我的打印机.
    有点搞不懂了,问题出在那里呢?
      

  3.   

    DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
    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,提法文档打印错误.
      

  4.   

    我将DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
    改为
    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");
    我的喷墨打印机就正常打印.图片到是没问题.
    有那位高人说明一下吗?