扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:builder.com.cn 2007年1月23日
关键字:
PrintService printService =
PrintServiceLookup.lookupDefaultPrintService();
DocPrintJob job = printService.createPrintJob();
一旦你指定了服务,你还必须指定你打印的文档的格式。DocFlavor类用来确定你希望打印的对象的多用途网际邮件扩充协议(MIME)类型。MIME类型说明应当如何解释电子数据。当你使用电子邮件和附件时,你可能遇到过MIME类型,但MIME规范描述了一种确定数据形式的更常用机制。
DocFlavor有几个子类,它们可以分成三个MIME类型子集:面向字节集(byte-oriented)、面向字符集(character-oriented)和面向服务集(service-oriented)。每种风格类型支持它自己的一组MIME类型。这些类型再次作为DocFlavor子类的内部类进行定义(DocFlavor子类也是内部类,因此它们是内部类的内部类)。
例如,要打印一幅PNG图片,可以这样进行配置:
DocFlavor flavor = DocFlavor.INPUT_STREAM.PNG;
你还可以指定属性,说明你希望如何打印一份文档。这些属性包括:份数、打印哪一页、以及文档图片类型(例如,山水画或肖像)。要指定属性,你需要使用下面两个类中的一个:
下面的例子说明如何打印一个对象,并打印两份:
?PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
?pras.add(new Copies(2));
你可以查看javax.print.attribute包中的有效属性完整列表。
Doc界面为打印工作提供数据。界面的执行程序为SimpleDoc类。用一个单独的构造器,你以提供的内容为第一个参数,风格为第二个参数,属性为第三个参数。内容以对象的形式接受,因此你必须在实际数据中补充一个适当的对象类型。如果你指定一个DocFlavor.INPUT_STREAM风格,那么数据将由它的InputStream确定。如果你的风格为DocFlavor.BYTE_ARRAY,那么数据将为一个字节序列(byte [])。
要从文件中打印一幅PNG图片,使用下列代码:
DocFlavor flavor = DocFlavor.INPUT_STREAM.PNG;
?String filename = ...;
?FileInputStream fis = new FileInputSteam(filename);
?DocAttributeSet das = new HashDocAttributeSet();
?Doc doc = new SimpleDoc(fis, flavor, das);
最后,你可以使用DocPrintJob对象的print()方法进行打印,我已经从PrintService中将它找回,如上:
job. print(doc, pras);
通过调用print(),你触发打印机制,将打印内容以一个独立线程的形式送交打印服务。
欲了解更多在J2SE平台上进行打印的信息,请访问Sun Developer Network。
Peter V. Mikhalenko是一名通过Sun认证的专家,现在任德意志银行商业顾问。
责任编辑:德东
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者