zoukankan      html  css  js  c++  java
  • Atitit.java swing打印功能 api  attilax总结

    Atitit.java swing打印功能 api  attilax总结

     

     

    1打印方式有三种:2

    1.1. 一是不经过任何修改,直接调用javascript中的window.print()打印。2

    1.2. 二根据客户要求的报表格式,编写相应格式的html,装载数据打印,同样调用window.print()打印,只是对html的格式要求比较高。2

    1.3. 三是通过客户提供的word格式,通过xml配置文件与数据库的数据进行关联,自动装载数据到word中打印,这里是利用客户端的word进行打印。 2

    1.4. 使用lang api2

    2打印模式 单页模式 与多页模式3

    3虚拟打印测试4

    4Java 打印api4

    4.1. 通过PrinterJob接口  ( 不推荐@depeart4

    4.2. 通过PrintService(推荐)4

    5Java jpos 打印框架5

    5.1. Ati print ----DevicePrinterPrinter5

    6Code  实现打印Graphics  drawImage drawString5

    6.1. PrinterJob  setPrintable6

    6.2. PrinterJob  .setPageable6

    7获取打印机列表7

    8使用指定打印机打印8

    9参考8

     

    1. 打印方式有三种:

    1.1. 一是不经过任何修改,直接调用javascript中的window.print()打印。

    1.2. 二根据客户要求的报表格式,编写相应格式的html,装载数据打印,同样调用window.print()打印,只是对html的格式要求比较高。

    1.3. 三是通过客户提供的word格式,通过xml配置文件与数据库的数据进行关联,自动装载数据到word中打印,这里是利用客户端的word进行打印。 

     

    1.4. 使用lang api

    作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

    转载请注明来源: http://www.cnblogs.com/attilax/

     

    第一种几乎不用编写程序,最简单快捷,这里会遇到几个问题,只能打印表单内容,按钮不希望打印出来;页眉页脚不想打印出来;IEtitile不想打印出来。

    解决办法:把button放在一个table或者div里,打印的时候隐藏,完成后显示就可以。系统中的javascript打印代码如下:

     

     

    第三种方案利用word强大的排版、打印功能,把排版和打印的需求扔到word中,OA软件要做的仅仅是让数据导到word中去。JAVA读取WORD模板,通过XML读取相关的数据库数据,自动转载数据到WORD模板中,最终展现给客户打印的是WORD

     

    完成此方案后,有几个特点:打印格式由现有的word格式提供,不需要再花时间开发调试程序;实施人员只需要花一点时间就完成标签和XML文件的设置;在报表中自动加入审批意见,领导印章等,直观跟现实一致;打印的格式和效果完全由word决定,而word强大并且被大众而熟悉,在打印的时候可以调整,所见即所得!

           小结:这几种方案不仅仅应用于OA的打印,任何web系统CRMERPHR等打印都可以处理。而且也不仅仅是java打印、jsp打印,用PHPASP等语言开发的WEB打印也一样适用。这几种打印方案广泛应用,特别是第三种,有效解决了政务OA的红头文件,此文仅做思路的总结,具体实现方法有很多。

     

     

    2. 打印模式 单页模式 与多页模式 

     

    3. 虚拟打印测试

     

    直接打印的时候,会弹出存为pdf文件。。。

    貌似win7 PDF-XChange Printer 2012

     

     

    4. Java 打印api

    4.1. 通过PrinterJob接口  ( 不推荐@depeart

     

    比如,这两种机制使用java.awt.Graphics这个类的一个接口来展现打印内容,意味着所有要打印的东西都必须用一张图片表示。另外,完善的PrinterJob提供了很有限的工程相关属性的设置;这两种机制都没有办法通过程序来选择目标打印机。

     

    PrintService内部也是使用PrintService

    4.2. 通过PrintService(推荐)

    Java打印最大的改变来自于J2SE的发布带来的Java打印服务API。这个第三代Java打印支持接口突破了先前提到的使用javax.print包的PrintServiceDocPrintJob接口的局限性。因为新的API就是以前两种旧的打印机制定义的功能函数的一个父集,它是目前我们常用的方法并且是这篇文章的焦点。

      更深入来说,以下的步骤包含了怎么使用这个新的Java打印服务API

      1.定义打印机,限制那些返回到提供你要实现功能的函数的列表。打印服务实现了PrintService接口.

      2.通过调用接口中定义的createPrintJob()方法创建一个打印事件,作为DocPrintJob的一个实例。

      3.创建一个实现Doc接口的类来描述你想要打印的数据 你也可以创建一个PrintRequestAttributeSet的实例来定义你想要的打印选项。

      4.通过DocPrintJob接口定义的printv()方法来初始化打印,指定你先前创建的Doc,指定PrintRequestAttributeSet或者设为空值。

      现在你可以检查每一步并且试着完成它们。

     

     

    5. Java jpos 打印框架

     

    参考

    jpos_examples_图文_百度文库.htm

     

    5.1. Ati print ----DevicePrinterPrinter

    6. Code  实现打印Graphics  drawImage drawString

     

    import java.awt.print.PrinterJob;

     

     

    1. 
               Image src = Toolkit.getDefaultToolkit().getImage("D:\EclipseWorkSpace3.1\Kfc-wuxi\WebRoot\image\KFC.jpg");  

    1. 
              drawImage

     

    1. Graphics g) {  

    2.             if (paintable) {  

    3.                 g.setColor(Color.GRAY);  

    4.                 g.drawString

     

     

    6.1. PrinterJob  setPrintable

            //获取打印服务对象

     

              PrinterJob  job  =  PrinterJob.getPrinterJob();          

     

         //     PageFormat  pageFormat  =  job.defaultPage();//得到默认页格式    

     

              job.setPrintable(new  PrintTest1());//设置打印类

     

     

    6.2. PrinterJob  .setPageable

     

     

       //------------------add page and format

     

            //        设置成竖打

     

            PageFormat  pf  =  new  PageFormat();

     

            pf.setOrientation(PageFormat.PORTRAIT);

     

            //        通过Paper设置页面的空白边距和可打印区域。必须与实际打印纸张大小相符。

     

            Paper  p  =  new  Paper();

     

            p.setSize(590,840);//纸张大小  

     

            p.setImageableArea(10,10,  590,840);//A4(595  X  842)设置打印区域,其实0,0应该是72,72,因为A4纸的默认X,Y边距是72

     

            pf.setPaper(p);

     

            //        把  PageFormat  和  Printable  添加到书中,组成一个页面

            

            

            //        通俗理解就是书、文档

     

            Book  book  =  new  Book();   

     

            book.append(new  PrintTest(),  pf);

     

     

     

              //获取打印服务对象

     

              PrinterJob  job  =  PrinterJob.getPrinterJob();            

     

              //  设置打印类

     

              job.setPageable(book);

     

     

    7. 获取打印机列表

    package com.openbravo.pos.util;

     

    import javax.print.DocFlavor;

    import javax.print.DocFlavor.SERVICE_FORMATTED;

    import javax.print.PrintService;

    import javax.print.PrintServiceLookup;

     

    public class ReportUtils

     

      public static String[] getPrintNames()

      {

        PrintService[] arrayOfPrintService = PrintServiceLookup.lookupPrintServices(DocFlavor.SERVICE_FORMATTED.PRINTABLEnull);

        String[] arrayOfString = new String[arrayOfPrintService.length];

        for (int i = 0; i < arrayOfPrintService.lengthi++)

          arrayOfString[i] = arrayOfPrintService[i].getName();

        return arrayOfString;

      }

    8. 使用指定打印机打印

     

    接口 PrintService 是 DocPrintJob 的工厂。PrintService 描述了打印机的功能,并可查询它来了解打印机支持的属性。

    示例:

       DocFlavor flavor = DocFlavor.INPUT_STREAM.POSTSCRIPT;

       PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();

       aset.add(MediaSizeName.ISO_A4);

       PrintService[] pservices =

                     PrintServiceLookup.lookupPrintServices(flavor, aset);

       if (pservices.length > 0) {

           DocPrintJob pj = pservices[0].createPrintJob();

           try {

               FileInputStream fis = new FileInputStream("test.ps");

               Doc doc = new SimpleDoc(fis, flavor, null);

               pj.print(doc, aset);

            } catch (FileNotFoundException fe) {

            } catch (PrintException e) { 

            }

       }

     

     

    9. 参考

    Java web 打印方案 - tanksyg的专栏 博客频道 - CSDN.NET.htm

    Java打印-Print Swing component - dontsan - ITeye技术网站.htm

    impt )打印--学习如何使用打印服务api.htm

    Java高级编程 使用打印服务API() - 3P代码.htm

  • 相关阅读:
    虚拟机中硬盘扩展方法
    ubuntu postgresql install
    vim python
    oe7报表的中文乱码
    文件导入 import
    How do I list user defined types in a SQL Server database
    修改表结构
    查询数据库中所有的表和数据库架构
    Dev chartControl添加提示层信息
    最简单的日志
  • 原文地址:https://www.cnblogs.com/attilax/p/5099572.html
Copyright © 2011-2022 走看看