当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:14:00  来源:本站整理

在Java中轻松打印文档[Java编程]

赞助商链接



  本文“在Java中轻松打印文档[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

有关在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.print(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中轻松打印文档[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 在java中产生切确的行为
  • rtti在java造型前的查抄
  • <b>如安在Java编程中操纵线程</b>
  • cookie技术在Java ME平台的操纵与实现
  • 在Java中操纵VC++组件
  • 在Java中操纵SQLite的教程
  • 在Java中读取写入XML文件(DEMO_004)
  • 在Java操纵程序中成立图象
  • 在Java中操纵Factory Method筹划情势
  • <b>在Java中操纵筹划情势之Singleton</b>
  • <b>在Java中操作UDP</b>
  • 在Java中举行事件处理的办法
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .