淺談 Java Printing


淺談 Java  Printing

  

   其實怎麼說呢?在寫這篇博文之前,我對java printing 可以說是一無所知的。以至於我在敲文字時,


基本上是看着api文檔翻譯過來的。這雖然看起來非常的吃力,但是我相信,有道大哥不會辜負我的。嘻


嘻!


    Java Printing 技術,也就是我們平時所接觸的打印,只不過是說可以用Java實現而已。


一、Java Printing 打印簡介


    Java Printing API能夠使java應用程序實現相關的打印功能,如:


    1、打印所有 Java 2D 和 AWT 圖形,包括複合的圖形圖像。

    

    2、控制文檔(如word文檔)組成功能,如:柔軟整理、反序打印 和 小冊子打印。

    

    3、調用打印機特定的功能,如:雙面打印裝訂


    4、能在所有平臺上進行打印,如:windows、Solaris(我想這也是Java具有跨平臺的優點體現


二、Java Printing 相關類和接口



1、接口


    Printable :該接口由每一個頁面 painter 實現,應用程序通過打印系統調用print方法,以呈現一個頁面


     Pageable :該接口由即將被答打印系統打印的文檔(document)實現,通過該接口,系統能夠知道文檔的頁面 及每頁


即將以什麼格式打印


     PrinterGraphics :一個用來呈現頁面的 painter  的Graphics2D 對象,需要實現該接口。同時,通過該接


口,還可以獲得控制打印的PrinterJob對象。



2、類


    Book :實現了Pageable接口,代表一個擁有不同頁面格式和頁面painter的文檔,該類通過Pageable接


口和PrintJob進行交互。


    PageFormat :描述了打印頁面的大小(如:A4,A3)及打印方向


    Paper :描述了每一張紙的物理特性


    PrintJob :控制打印的主要類。應用調用PrintJob方法去啓動一個任務,向用戶展示打印框,並打印。



三、Java打印的相關概念



    Java 打印是基於一個回調打印模型的。即當頁面被打印時,由打印系統(非應用程序)控制。應用程


序只是提供打印文檔的相關信息,而當打印系統需要呈現頁面時,打印系統就會嚮應用程序索取。


.......



實現打印,需要做些什麼?



一個應用程序向支持打印功能,有以下2點需要實現:



    1、任務控制 ----- 初始化(啓動)、管理打印任務

    2、成像 ----- 當打印系統請求時,要能呈現一個頁面




什麼是任務控制?



    在一個應用程序中,用戶通常是通過點擊一個按鈕或者一個菜單來啓動一個打印任務。當一個打印操作


被用戶觸發,應用程序就會創建一個 PrintJob 對象並用該對象管理打印進程。

    

    應用程序 負責設置打印任務,向用戶展示打印窗格並啓動打印任務。



什麼是成像?


    當一個文檔被打印時,當打印系統請求時,應用程序必須呈現每一頁面。爲了實現這個機制,應用程序


提供一個實現Printable接口的 page painter ,當打印系統需要呈現一個頁面時,它就會調用 page painter


的print 方法。


    當 page painter 的print 方法被調用時,該方法是通過傳遞一個圖形上下文來呈現圖像頁面。該方法


同時也傳遞一個 PageFormat 對象來指定頁面的幾何佈局 和 一個 整型數 來指定頁面在打印任務中的下標,即頁碼。



    打印系統支持Graphics和Graphics2D呈現。如果想打印 Graphics 2D形狀,文本,圖形等,可以在


print方法中將 Graphics 對象強制轉換爲 Graphics 2D 對象。



什麼是Page Painter?



    Page Painter 的主要任務就是通過 打印系統提供的 Graphics 上下文對象 去呈現每個頁面。一個


Page Painter 實現Printable接口的print方法。



    因爲許多打印機無法打印整個頁面的所有地方,顧print方法pageFormate 參數指定頁面可以成像的區域。


































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章