Atitit.java swing打印功能 api attilax總結

Atitit.java swing打印功能 api  attilax總結javascript

 

 

1打印方式有三種:2html

1.1. 一是不通過任何修改,直接調用javascript中的window.print()打印。2java

1.2. 二根據客戶要求的報表格式,編寫相應格式的html,裝載數據打印,一樣調用window.print()打印,只是對html的格式要求比較高。2web

1.3. 三是經過客戶提供的word格式,經過xml配置文件與數據庫的數據進行關聯,自動裝載數據到word中打印,這裏是利用客戶端的word進行打印。 2數據庫

1.4. 使用lang api2編程

2打印模式 單頁模式 與多頁模式3api

3虛擬打印測試4app

4Java 打印api4框架

4.1. 經過PrinterJob接口  ( 不推薦@depeart4jsp

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

相關文章
相關標籤/搜索