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數據庫
3. 虛擬打印測試4app
4.1. 經過PrinterJob接口 ( 不推薦@depeart)4jsp
5.1. Ati print ----DevicePrinterPrinter5
6. Code 實現打印Graphics drawImage drawString5
6.1. PrinterJob 。setPrintable6
做者:: 老哇的爪子 Attilax 艾龍, EMAIL:1466519819@qq.com
轉載請註明來源: http://www.cnblogs.com/attilax/
第一種幾乎不用編寫程序,最簡單快捷,這裏會遇到幾個問題,只能打印表單內容,按鈕不但願打印出來;頁眉頁腳不想打印出來;IE的titile不想打印出來。
解決辦法:把button放在一個table或者div裏,打印的時候隱藏,完成後顯示就能夠。系統中的javascript打印代碼以下:
第三種方案利用word強大的排版、打印功能,把排版和打印的需求扔到word中,OA軟件要作的僅僅是讓數據導到word中去。JAVA讀取WORD模板,經過XML讀取相關的數據庫數據,自動轉載數據到WORD模板中,最終展示給客戶打印的是WORD。
完成此方案後,有幾個特色:打印格式由現有的word格式提供,不須要再花時間開發調試程序;實施人員只須要花一點時間就完成標籤和XML文件的設置;在報表中自動加入審批意見,領導印章等,直觀跟現實一致;打印的格式和效果徹底由word決定,而word強大而且被大衆而熟悉,在打印的時候能夠調整,所見即所得!
小結:這幾種方案不單單應用於OA的打印,任何web系統CRM、ERP、HR等打印均可以處理。並且也不單單是java打印、jsp打印,用PHP、ASP等語言開發的WEB打印也同樣適用。這幾種打印方案普遍應用,特別是第三種,有效解決了政務OA的紅頭文件,此文僅作思路的總結,具體實現方法有不少。
直接打印的時候,會彈出存爲pdf文件。。。
貌似win7 PDF-XChange Printer 2012
好比,這兩種機制使用java.awt.Graphics這個類的一個接口來展示打印內容,意味着全部要打印的東西都必須用一張圖片表示。另外,完善的PrinterJob提供了頗有限的工程相關屬性的設置;這兩種機制都沒有辦法經過程序來選擇目標打印機。
PrintService內部也是使用PrintService
Java打印最大的改變來自於J2SE的發佈帶來的Java打印服務API。這個第三代Java打印支持接口突破了先前提到的使用javax.print包的PrintService和DocPrintJob接口的侷限性。由於新的API就是之前兩種舊的打印機制定義的功能函數的一個父集,它是目前咱們經常使用的方法而且是這篇文章的焦點。
更深刻來講,如下的步驟包含了怎麼使用這個新的Java打印服務API:
1.定義打印機,限制那些返回到提供你要實現功能的函數的列表。打印服務實現了PrintService接口.
2.經過調用接口中定義的createPrintJob()方法建立一個打印事件,做爲DocPrintJob的一個實例。
3.建立一個實現Doc接口的類來描述你想要打印的數據 , 你也能夠建立一個PrintRequestAttributeSet的實例來定義你想要的打印選項。
4.經過DocPrintJob接口定義的printv()方法來初始化打印,指定你先前建立的Doc,指定PrintRequestAttributeSet或者設爲空值。
如今你能夠檢查每一步而且試着完成它們。
參考
jpos_examples_圖文_百度文庫.htm
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
//獲取打印服務對象
PrinterJob job = PrinterJob.getPrinterJob();
// PageFormat pageFormat = job.defaultPage();//獲得默認頁格式
job.setPrintable(new PrintTest1());//設置打印類
//------------------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);
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.PRINTABLE, null);
String[] arrayOfString = new String[arrayOfPrintService.length];
for (int i = 0; i < arrayOfPrintService.length; i++)
arrayOfString[i] = arrayOfPrintService[i].getName();
return arrayOfString;
}
接口 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) {
}
}
Java web 打印方案 - tanksyg的專欄 - 博客頻道 - CSDN.NET.htm
Java打印-Print Swing component - dontsan - ITeye技術網站.htm
(impt )打印--學習如何使用打印服務api.htm
Java高級編程 使用打印服務API一(圖) - 3P代碼.htm