快速业务通道

在Java中轻松打印文档 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23

在Java中轻松打印文档

时间:2010-12-13

有关在Java中实现文档打印的典型说法描述了一个复杂的过程,它要求对字 体进行测定、对文本进行解析并将结果绘制到一个Graphics对象中。这个过程似 乎执行起来相当困难,并且它和用于文档视频显示的高级编程方法不一致。如果 你想要花费大量的精力来完成这个过程,那么你就不会首先想到要在Java中编程 。

你一定不想自己完成测定、解析和绘制过程,而是希望通过简单地将文档发 送到一个能为你处理所有事情的对象中来完成这个任务。本文就将介绍这样一个 对象――DocumentRenderer,它将一个文档作为方法中的一个参数并处理指定任 务来完成打印。比如,用这个类来显示一个HTML文档需要两个步骤:构造一个 DocumentRenderer类的实例并将HTML文档作为参数发送到print(HTMLDocument) 方法中。DocumentRenderer类用于处理打印该文档所必需的开销,包括显示一个 打印对话框以及格式化文本。

我们设计了这个DocumentRenderer类以便利用这个已经在Java中可用的高级 文本性能。 根据可重用和可扩展类的原则,我们使用了一些现有的对象 (Java.Swing.Text Package用它来对显示结果进行格式化)使打印结果能够显 示在纸上。用这种方法设计DocumentRenderer使我们能够用比前面讨论过的方法 少写近200行的代码来建立这个类。

除了能少写代码之外,使用DocumentRenderer 实现中的现有对象还提供了一 些额外的功能使得该类更加通用。在最初设计这个类的时候,我们只是打算将 HTML文档打印出来。而添加一些功能来打印其他类型的文档则是后来的想法。当 我们发现只需在用于HTML 打印类的代码中加上约6行的额外代码就可以打印一个 Rich Text Format文档时,便在这个项目的后期添加了这个功能。

显示文档

DocumentRenderer能够用来打印几类包含在JEditorPane中的文档。我们用三 种类型的文档(JEditorPane能够缺省识别的)测试了这个printer类: HTMLDocuments、PlainDocuments和Rich Text Format文档。只需要做一些很小 的改动,这个类就应该可以将包含在JEditorPane中的其他类型文档打印出来了 。

DocumentRenderer类将一个文档的打印形式从其视频显示中区分出来了。这 就使你能够针对特定的打印结果进行文本格式化,而会不影响其屏幕显示。 DocumentRenderer采用所有打印页面的实际大小来显示文本并计算出行间距 (line break)。当文档的宽度不足以显示在打印页面上时,该类会允许使用缩 放(scaling)。

DocumentRenderer相当智能。分页符不会将一行单一语句分放到两个页面上 。字符也不会被切成两半,不会象浏览器在处理一般打印时会在这一页末尾显示 一句话的上半部分而在下一页的顶部显示这句话的下半部分。这个类能够处理大 量字体、颜色和小图标。分栏文本的显示也没有问题。对于每一个JEditorPane 能够显示的文本特性,通常DocumentRenderer都可以将这种性能呈现到纸上。

你只需使用两行代码便可以将DocumentRenderer结合到你的程序中去了。用 一个不带参数的构造器创建这个类的实例,再调用一个合适的打印方法来处理其 他事情。比如,以下代码将打印这个htmlDocument,它是HTMLDocument类的一个 有效实例:

DocumentRenderer DocumentRenderer = new DocumentRenderer(); DocumentRenderer.print(htmlDocument);

它给用户显示一个打印对话框,允许用户选择打印机、打印数量等,同时还 有一个取消打印的选项。

PlainDocuments使用了print(PlainDocument)方法,采用和HTMLDocuments相 同的方式执行打印。由于在Java中不能直接访问Rich Text Format文档,所以你 必须将这种类型的文档发送到DocumentRenderer中(通过将它封装到一个 JEditorPane里),就象这样:DocumentRenderer.pr

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号