栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何获得要打印的总页数?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何获得要打印的总页数?

我设法找到了解决方案。

printDialog()
方法显示一个本机打印对话框,但是该
printDialog(PrintRequestAttributeSetattributes)
方法显示一个跨平台对话框。
PrintRequestAttributeSet
用用户的选择填充该参数,包括选择打印的页面范围。因此,从
printDialog
方法返回后,可以查询页面范围,如以下代码序列所示:

PrinterJob job = PrinterJob.getPrinterJob();job.setPrintable(new HelloWorldPrinter());HashPrintRequestAttributeSet printParams = new HashPrintRequestAttributeSet();boolean ok = job.printDialog(printParams);if (ok) {    PageRanges pageRanges = (PageRanges) printParams.get(PageRanges.class);    int pagesToBePrinted = getNumberOfPages(pageRanges);    try {        job.print(printParams);    } catch (PrinterException e) {            }}

注意,该方法

printParams
也必须给予
print()
。从
PageRanges
对象可以以数组格式获得页面范围,即1长度数组的数组表示每个页面为单个页面,或2长度数组的数组表示连续的页面范围。有关更多详细信息,请参见javadoc。要计算总页数很简单:

int getNumberOfPages(PageRanges pageRanges) {    int pages = 0;    int[][] ranges = pageRanges.getMembers();    for (int i = 0; i < ranges.length; i++) {        pages += 1;        if (ranges[i].length == 2) { pages += ranges[i][1] - ranges[i][0];        }    }    pages = Math.min(pages, totalPagesOfdocument);    return pages;}

如果用户未选择页面范围,而是选择“所有页面”选项,则

PageRanges
将会包含范围(1,Integer.MAX_VALUE)。所以我说,如果计算值超过文档的页数,那么要打印的页数就是文档的总页数(希望您从某处知道)。

该算法可能是过大的,因为可能

PageRanges
只会是一个简单的 n - m 范围,但是比后悔更安全。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/438409.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号