在Java中轻松打印文档 - 编程入门网
int(jeditorPane);
这里的jeditorPane是JEditorPane的一个有效实例,其中包含一个Rich Text Format文档。 为了给用户提供方便,你可以调用DocumentRenderer的pageDialog方法来显 示一个打印对话框以便用户可以调整页面大小、页边设置和纸的打印方向 (orientation)。DocumentRenderer还提供了一种方法使开发人员可以选择是 否对那些无法在打印宽度内完全显示的文档进行按比例缩放。我们认为能够进行 缩放通常是比较好的选择,因为它能够防止文本在正确的页边处被分开,但它似 乎比较适合让用户去选择。这种名为setScaleWidthToFit(boolean)的方法提供 了按比例缩放的选项。你必须确定在调用打印方法之前调用这个scaling和 pageDialog方法。 了解DocumentRenderer DocumentRenderer用于执行显示一个打印对话框并通过使用在Java Swing Printing API中可用的标准化工具开始打印操作。由于在使用这个 DocumentRenderer类时无需完全了解这个API,而且该API已经在很多地方被详细 描述过,因此这里我们就不再介绍它了。这个用于DocumentRenderer类的源代码 中还包括了这个打印逻辑的完整文档。 然而我们或许应该解释一下DocumentRenderer用来在单独打印页面中定位文 本的过程,以便你了解这个类所提供的改进功能,这会帮你回顾这个Java打印过 程通常遵循的显示文档的逻辑。 文档通常是以一种简单的方式进行打印的。首先,文档会被放入JEditorPane 。你可以将打印过程想象为在JEditorPane 的上面放置一个矩形框(其大小和页 面打印区的大小相等),并对其中的内容进行打印而无需关心外面的部分。 这个矩形的上沿与JEditorPane 顶部齐平,矩形框内部的区域会被绘制 (paint)。如果矩形的下沿穿过文本,不用去管它;字符会在打印页面的底部 被分开。打印第二页时,矩形的上沿被向下移至前面被下沿所占据的那一行,该 过程被重复执行。由于第二页正好在第一页结束的地方开始,因此在第一页底部 被分开的字符会出现在第二页的顶部。后面几页也是一样。 为了避免从行中断开,DocumentRenderer会仔细检侧文档以测定是否一个单 独文本和页面完整契合。这样会比只是在JEditorPane中放一个矩形框并打印其 中内容的效果更佳。 在Java中轻松打印文档(2)时间:2010-12-13绘制视图(View) 如果将JEditorPane看作仅包含了一个文档的方法,你就不能测定所有文本的 位置或大小了。一个文档对于这个任务来说太大了,文档或许会契合于一个单一 页面,或许不会。为了使文档能够完整契合于打印纸,你必须将它分成一些小的 部分以便对每个部分的位置进行检测。 幸运的是,Java Swing Text Package提供了一个View类,它能使你将文档分 成单一的、适于绘制的部分。你可以将JEditorPane想象成是由几个视图部分组 成的;现在你就可以完全基于这些小部分的大小和位置来打印文档了。 View类的子类用于处理可视性组件(visual component)中的显示和打印文 本的任务。然而,处理打印文本的许多程序员没有意识到的是视图可以在显示到 纸上时提供这些相同的功能。尽管对视图问题进行详细讨论是本文以外的话题, 但在讨论文档打印时对它有一个大致的了解还是很有必要的。 在Swing中,视图被当作处理文本显示的容器。在树型目录中一个根视图可以 有多个视图分支。在这些分支的端部会显示代表真实文本的叶视图(leaf view )。 将这个视图的树型结构当作一个由单一的、大的、包含整个文本的视图来考 虑。这个文档视图被分成几个段落视图,它被依次分成几个单独的行。尽管真实 工作中的视图情况要比这个简单的描述复杂的多,但该例子中显示了如何通过视 图来将一个文档分成契合于打印纸的小的部分。通过查看每一行,你可以测定它 是否完全契合于打印纸 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |