java 可以取得本机上所有的打印列表吗?java 是否可以同时调用三个打印机,同时打印了,是否可以调用打印机的某些属性

解决方案 »

  1.   

    java不能直接操作打印机需要用到上面的功能,建议你用其他底层语言写,写好后通过jndi调用
      

  2.   

    好像可以吧、
    JasperReports与iReport 
     JasperReports是一款开源的报表打印组件,是开源代码组织sf.net中的一个java报表打印工程,可以以PDF, HTML或XML等多种形式产生报表,支持分页打印,并且可以制作各种类型的图表。Jasperreport是按照一个预定义的xml文档来组织报表的数据,这些数据来源多样,包括关系数据库(通过配置JDBC连接)、java容器对象(collection和arrays)。要完成报表的填充,必须先完成用于报表的xml文件,其过程是先产生报表设计对象,再序列化该对象,存储在磁盘或者网络,用于产生特定应用的表格数据。事实上,表单的设计过程就是用定义于xml文件中的java表达式来表现报表的设计。编辑过程中会有各种保证数据一致性的验证,最终会产生相关数据文档或填充数据的准备。 iReport也是开源组织sf.net中的一款免费软件,其主要作用是以可视化的方式升级生成JasperReport所使用的报表格式文件,因为JasperReport本身没有提供很好的可视化报表设计工具,iReport正好弥补了这个缺陷,因此我们常常将这两个工具结合起来使用。
      

  3.   

    你查看API中的PrinterJob类,里面有详细说明的,就是获取打印机列表,好简单的,想要看详细的例子话就就去下载一个Java™ Print Service API User Guide文档,里面有超级详细介绍,我也正在做一个打印程序,遇到一个纸张大小设置问题不能解决
      

  4.   

    推荐JCOM,是日本鬼子写的,代码调用也还蛮简单的,不过是日文文档
    打印Doc和Xls文件importjp.ne.so_net.ga2.no_ji.jcom.IDispatch;
    importjp.ne.so_net.ga2.no_ji.jcom.JComException;
    importjp.ne.so_net.ga2.no_ji.jcom.ReleaseManager;
    publicclassPrintDocument{
      /***
      * 
      *@paramdocApplicationApplication类型
      *@paramdocProperty 文档的属性
      *@paramfilePath文件的绝对路径
      */
      publicvoidprint(StringdocApplication,StringdocProperty,StringfilePath){
        ReleaseManagerrm=newReleaseManager();
        try{
          IDispatchdocApp=newIDispatch(rm,docApplication);
          docApp.put("Visible",newBoolean(false));
          IDispatchwdDocuments=(IDispatch)docApp.get(docProperty);
          Object[]arglist1=newObject[1];
          arglist1[0]=(Object)filePath;
          IDispatchdocDocument=(IDispatch)wdDocuments.method("Open",
              arglist1);
          docDocument.method("PrintOut",null);
          docApp.method("Quit",null);
        }catch(JComExceptione){
          e.printStackTrace();
        }
        rm.release();
        rm=null;
      }
      /**
      *@paramargs
      */
      publicstaticvoidmain(String[]args){
        //TODOAuto-generatedmethodstub
        PrintDocumentpd=newPrintDocument();
        Stringpath="e:  est.doc";
        pd.print("Word.Application","Documents",path);
        //Stringpath="e:  est.xls";
        //pd.print("Excel.Application","Workbooks",path);
      }
    }