日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Atitit.java swing打印功能 api  attilax总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Atitit.java?swing打印功能?api??attilax總結(jié)

?

?

1.?打印方式有三種:2

1.1.?一是不經(jīng)過任何修改,直接調(diào)用javascript中的window.print()打印。2

1.2.?二根據(jù)客戶要求的報表格式,編寫相應(yīng)格式的html,裝載數(shù)據(jù)打印,同樣調(diào)用window.print()打印,只是對html的格式要求比較高。2

1.3.?三是通過客戶提供的word格式,通過xml配置文件與數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行關(guān)聯(lián),自動裝載數(shù)據(jù)到word中打印,這里是利用客戶端的word進(jìn)行打印。?2

1.4.?使用lang?api2

2.?打印模式?單頁模式?與多頁模式3

3.?虛擬打印測試4

4.?Java?打印api4

4.1.?通過PrinterJob接口??(?不推薦@depeart4

4.2.?通過PrintService(推薦)4

5.?Java?jpos?打印框架5

5.1.?Ati?print?----DevicePrinterPrinter5

6.?Code??實現(xiàn)打印Graphics??drawImage?drawString5

6.1.?PrinterJob??setPrintable6

6.2.?PrinterJob??.setPageable6

7.?獲取打印機(jī)列表7

8.?使用指定打印機(jī)打印8

9.?參考8

?

1.?打印方式有三種:

1.1.?一是不經(jīng)過任何修改,直接調(diào)用javascript中的window.print()打印。

1.2.?二根據(jù)客戶要求的報表格式,編寫相應(yīng)格式的html,裝載數(shù)據(jù)打印,同樣調(diào)用window.print()打印,只是對html的格式要求比較高。

1.3.?三是通過客戶提供的word格式,通過xml配置文件與數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行關(guān)聯(lián),自動裝載數(shù)據(jù)到word中打印,這里是利用客戶端的word進(jìn)行打印。?

?

1.4.?使用lang?api

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

轉(zhuǎn)載請注明來源:?http://www.cnblogs.com/attilax/

?

第一種幾乎不用編寫程序,最簡單快捷,這里會遇到幾個問題,只能打印表單內(nèi)容,按鈕不希望打印出來;頁眉頁腳不想打印出來;IEtitile不想打印出來。

解決辦法:把button放在一個table或者div里,打印的時候隱藏,完成后顯示就可以。系統(tǒng)中的javascript打印代碼如下:

?

?

第三種方案利用word強(qiáng)大的排版、打印功能,把排版和打印的需求扔到word中,OA軟件要做的僅僅是讓數(shù)據(jù)導(dǎo)到word中去。JAVA讀取WORD模板,通過XML讀取相關(guān)的數(shù)據(jù)庫數(shù)據(jù),自動轉(zhuǎn)載數(shù)據(jù)到WORD模板中,最終展現(xiàn)給客戶打印的是WORD

?

完成此方案后,有幾個特點:打印格式由現(xiàn)有的word格式提供,不需要再花時間開發(fā)調(diào)試程序;實施人員只需要花一點時間就完成標(biāo)簽和XML文件的設(shè)置;在報表中自動加入審批意見,領(lǐng)導(dǎo)印章等,直觀跟現(xiàn)實一致;打印的格式和效果完全由word決定,而word強(qiáng)大并且被大眾而熟悉,在打印的時候可以調(diào)整,所見即所得!

???????小結(jié):這幾種方案不僅僅應(yīng)用于OA的打印,任何web系統(tǒng)CRMERPHR等打印都可以處理。而且也不僅僅是java打印、jsp打印,用PHPASP等語言開發(fā)的WEB打印也一樣適用。這幾種打印方案廣泛應(yīng)用,特別是第三種,有效解決了政務(wù)OA的紅頭文件,此文僅做思路的總結(jié),具體實現(xiàn)方法有很多。

?

?

2.?打印模式?單頁模式?與多頁模式?

?

3.?虛擬打印測試

?

直接打印的時候,會彈出存為pdf文件。。。

貌似win7?PDF-XChange?Printer?2012

?

?

4.?Java?打印api

4.1.?通過PrinterJob接口??(?不推薦@depeart

?

比如,這兩種機(jī)制使用java.awt.Graphics這個類的一個接口來展現(xiàn)打印內(nèi)容,意味著所有要打印的東西都必須用一張圖片表示。另外,完善的PrinterJob提供了很有限的工程相關(guān)屬性的設(shè)置;這兩種機(jī)制都沒有辦法通過程序來選擇目標(biāo)打印機(jī)。

?

PrintService內(nèi)部也是使用PrintService

4.2.?通過PrintService(推薦)

Java打印最大的改變來自于J2SE的發(fā)布帶來的Java打印服務(wù)API。這個第三代Java打印支持接口突破了先前提到的使用javax.print包的PrintServiceDocPrintJob接口的局限性。因為新的API就是以前兩種舊的打印機(jī)制定義的功能函數(shù)的一個父集,它是目前我們常用的方法并且是這篇文章的焦點。

  更深入來說,以下的步驟包含了怎么使用這個新的Java打印服務(wù)API

  1.定義打印機(jī),限制那些返回到提供你要實現(xiàn)功能的函數(shù)的列表。打印服務(wù)實現(xiàn)了PrintService接口.

  2.通過調(diào)用接口中定義的createPrintJob()方法創(chuàng)建一個打印事件,作為DocPrintJob的一個實例。

  3.創(chuàng)建一個實現(xiàn)Doc接口的類來描述你想要打印的數(shù)據(jù)?,?你也可以創(chuàng)建一個PrintRequestAttributeSet的實例來定義你想要的打印選項。

  4.通過DocPrintJob接口定義的printv()方法來初始化打印,指定你先前創(chuàng)建的Doc,指定PrintRequestAttributeSet或者設(shè)為空值。

  現(xiàn)在你可以檢查每一步并且試著完成它們。

?

?

5.?Java?jpos?打印框架

?

參考

jpos_examples_圖文_百度文庫.htm

?

5.1.?Ati?print?----DevicePrinterPrinter

6.?Code??實現(xiàn)打印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

????????//獲取打印服務(wù)對象

?

??????????PrinterJob??job??=??PrinterJob.getPrinterJob();??????????

?

?????//?????PageFormat??pageFormat??=??job.defaultPage();//得到默認(rèn)頁格式????

?

??????????job.setPrintable(new??PrintTest1());//設(shè)置打印類

?

?

6.2.?PrinterJob??.setPageable

?

?

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

?

????????//????????設(shè)置成豎打

?

????????PageFormat??pf??=??new??PageFormat();

?

????????pf.setOrientation(PageFormat.PORTRAIT);

?

????????//????????通過Paper設(shè)置頁面的空白邊距和可打印區(qū)域。必須與實際打印紙張大小相符。

?

????????Paper??p??=??new??Paper();

?

????????p.setSize(590,840);//紙張大小??

?

????????p.setImageableArea(10,10,??590,840);//A4(595??X??842)設(shè)置打印區(qū)域,其實0,0應(yīng)該是72,72,因為A4紙的默認(rèn)X,Y邊距是72

?

????????pf.setPaper(p);

?

????????//????????把??PageFormat??和??Printable??添加到書中,組成一個頁面

????????

????????

????????//????????通俗理解就是書、文檔

?

????????Book??book??=??new??Book();???

?

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

?

?

?

??????????//獲取打印服務(wù)對象

?

??????????PrinterJob??job??=??PrinterJob.getPrinterJob();????????????

?

??????????//??設(shè)置打印類

?

??????????job.setPageable(book);

?

?

7.?獲取打印機(jī)列表

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;

??}

8.?使用指定打印機(jī)打印

?

接口?PrintService?是?DocPrintJob?的工廠。PrintService?描述了打印機(jī)的功能,并可查詢它來了解打印機(jī)支持的屬性。

示例:

???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技術(shù)網(wǎng)站.htm

impt?)打印--學(xué)習(xí)如何使用打印服務(wù)api.htm

Java高級編程?使用打印服務(wù)API()?-?3P代碼.htm

?

轉(zhuǎn)載于:https://www.cnblogs.com/attilax/p/5099572.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的Atitit.java swing打印功能 api  attilax总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。