浅谈 Java Printing

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈 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 参数指定页面可以成像的区域。


































本文出自 “@coder” 博客,请务必保留此出处http://smallcoder.blog.51cto.com/11941149/1869860

以上是关于浅谈 Java Printing的主要内容,如果未能解决你的问题,请参考以下文章

浅谈Mybatis

浅谈AngularJS中的$parse和$eval

'UInt32 System.Printing.PrintQueue.GetDpiX(System.Printing.ILegacyDevice)问题解决方法

浅谈如何用JNI的代码调用java接口

浅谈Java反射

浅谈使用java代码进行操作Excel文件