`
longgangbai
  • 浏览: 7281517 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JDK1.5中的打印服务

阅读更多

package com.unutrip.print;

import java.net.URL;

import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.ServiceUI;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.ColorSupported;
import javax.print.attribute.standard.Copies;
import javax.print.attribute.standard.OrientationRequested;
import javax.print.event.PrintJobAdapter;
import javax.print.event.PrintJobEvent;

/**
 * 1.定义打印机,限制那些返回到提供你要实现功能的函数的列表。打印服务实现了PrintService接口.
 *
 * 2.通过调用接口中定义的createPrintJob()方法创建一个打印事件,作为DocPrintJob的一个实例。
 *
 * 3.创建一个实现Doc接口的类来描述你想要打印的数据 , 你也可以创建一个PrintRequestAttributeSet的实例来定义你想要的打印选项。
 *
 * 4.通过DocPrintJob接口定义的printv()方法来初始化打印,指定你先前创建的Doc,指定PrintRequestAttributeSet或者设为空值。
 *
 * @author longgangbai
 *
 */
public class UnutripPrintService {
 public static void main(String[] args) {
  // 定义打印机印服务
  /* 创建DocFlavor实例需要两个参数(String),一个是表示MIME类型,一个是表示类的名称 */

  // 定义打印机支持的文档类型
  DocFlavor flavor = DocFlavor.URL.TEXT_HTML_UTF_8;
  // 检索所有的可用的打印服务
  PrintService[] allps = PrintServiceLookup.lookupPrintServices(null,
    null);
  // PrintServiceLookup.lookupMultiDocPrintServices(flavors, attributes)
  if (allps != null) {
   for (PrintService ps : allps) {
    System.out.println("ps name =" + ps.getName());
   }
  }
  // 查找默认的服务
  PrintService dps = PrintServiceLookup.lookupDefaultPrintService();
  if (!dps.isDocFlavorSupported(flavor)) {
   System.out
     .println(" the printer does not suppport the appropriate DocFalavor...");
  }
  // System.out.println(dps.getName());
  // 定义属性(javax.print.attribute 包) 用于设置打印的各种属性
  PrintRequestAttributeSet attrs = new HashPrintRequestAttributeSet();

  PrintService select = ServiceUI.printDialog(null, 100, 100, allps, dps,
    null, attrs);

  // 第二步 创建一个打印的任务
  DocPrintJob job = dps.createPrintJob();
  // 获取打印数据
  try {
   URL url = new URL(
     "http://www.ibm.com/developerworks/cn/java/j-lo-hash/");
   // 构建打印的文档
   SimpleDoc doc = new SimpleDoc(url, flavor, null);

   // 初始化打印
   // 打印文档的分数
   attrs.add(new Copies(2));

   attrs.add(OrientationRequested.LANDSCAPE);
   // 打印文档是否打印颜色
   attrs.add(ColorSupported.SUPPORTED);
   // 开始执行打印任务
   job.print(doc, attrs);

   // 监控打印任务(可选)
   job.addPrintJobListener(new PrintJobAdapter() {
    public void printDataTransferCompleted(PrintJobEvent event) {
     System.out.println("数据传输成功!!");
    }

    public void printJobNoMoreEvents(PrintJobEvent event) {
     System.out.println("该接口中没有更多的方法可以让打印机调用!!");
    }

    public void printJobCanceled(PrintJobEvent event) {
     System.out.println("取消打印服务!!");
    }

    public void printJobCompleted(PrintJobEvent event) {
     System.out.println("打印任务完成!!");
    }

    public void printJobFailed(PrintJobEvent event) {
     System.out.println("打印任务失败!!");
    }

    public void printJobRequiresAttention(PrintJobEvent event) {
     System.out.println("可以恢复的错误,如打印机缺纸!!");
    }
   });

  } catch (Exception e) {
   e.printStackTrace();
  }

 }

}

分享到:
评论

相关推荐

    详细介绍JDK1.5的各种新特性

    以下是JDK1.5中的主要新特性及其详细解释: 1. **泛型(Generics)**:泛型是JDK1.5引入的最大变革之一。它允许在类、接口和方法中使用类型参数,提高了代码的类型安全性和重用性。泛型帮助程序员在编译时检查类型...

    JDK1.5中文API文档,html格式

    本篇将详细介绍JDK 1.5中文API文档的主要内容,以及这些API如何在实际编程中发挥作用。 ### 类与接口 JDK 1.5引入了泛型(Generics),这是一种强大的类型系统增强,允许开发者在定义类、接口和方法时指定类型参数...

    JAVA-虚拟机JDK1.5

    在JDK1.5版本中,引入了一系列重要的更新和改进,对于Java开发者来说具有里程碑式的意义。 1. **泛型(Generics)** JDK1.5引入了泛型,这是一种允许在定义类、接口和方法时使用类型参数的机制。泛型提高了代码的...

    java 开发jdk1.5

    泛型是JDK 1.5引入的一个重要特性,允许在类、接口和方法中使用类型参数,提高了代码的类型安全性和重用性。例如,可以创建一个通用的ArrayList,限制其只能存储特定类型的元素,如`ArrayList<String>`,这样在编译...

    jdk1.5 x86

    以上这些特性在JDK1.5(JDK5)中引入,极大地提升了Java开发的效率和质量。虽然随着时间的推移,更高版本的JDK已经发布,但仍有部分老项目由于兼容性原因,需要继续使用JDK5。如果你正在寻找这个版本的JDK,提供的...

    JDK1.5API_CN.rar

    1. **泛型**:泛型是JDK1.5引入的一项重大改进,它允许在类、接口和方法中使用类型参数,增强了类型安全性和代码复用性。通过泛型,程序员可以限制容器只能存储特定类型的对象,避免了强制类型转换,并减少了运行时...

    JDK1.5线程池源码及详细注释

    JDK 1.5引入了java.util.concurrent包,其中包含了线程池的实现,使得并发编程更加便捷和高效。线程池的核心在于它的设计策略,包括核心线程数、最大线程数、线程存活时间、工作队列以及拒绝策略。 线程池的主要类...

    JDK1.5简体中文版帮助文档

    JDK 1.5,也被称为Java SE 5.0,是Java发展历程中的一个重要版本,引入了许多重要的新特性和改进,极大地提升了开发效率和代码质量。本简体中文版帮助文档旨在为中文用户提供详尽的JDK 1.5使用指南。 **一、泛型** ...

    Solaris10安装配置JDK1.5

    在本文中,我们将详细探讨如何在Oracle Solaris 10操作系统上安装和配置JDK 1.5。Solaris 10是Unix家族的一员,它需要与之兼容的Java Development Kit (JDK)。我们将按照步骤指导您完成整个过程,包括下载、安装、...

    ZXing-1.5.zip 条形码 二维 一维

    在ZXing-1.5版本中,它提供了一系列的功能和优化,以提升条码扫描的准确性和速度。 一、条形码与二维码 1. **条形码**:条形码是一种光学可读的编码方式,通过黑白条纹的不同宽度来表示数字和字符,广泛应用于商品...

    jdk-1_5_0_01-windows-i586-p.rar

    在Java发展历程中,JDK 1.5是一个重要的里程碑,它在2004年9月30日正式发布,代号为“Tiger”。这个版本引入了一系列创新特性和改进,极大地提升了Java语言的效率和可读性,为后续的Java版本奠定了基础。 首先,让...

    JDK1.5新特性之注解功能(实例讲解)[文].pdf

    Java注解(Annotation)是JDK 1.5引入的一项重要特性,它的出现极大地简化了代码,特别是对于元数据的处理。元数据是关于数据的数据,它可以提供额外的信息,但不直接影响程序的运行。注解就是一种声明式编程,允许...

    Java JDK1.5、1.6、1.7新特性整理

    Java JDK 1.5、1.6 和 1.7 版本引入了许多重要的特性,极大地提升了开发效率和代码质量。下面将详细讲解这些版本的关键更新。 ### Java JDK 1.5 新特性 1. **泛型**:泛型允许在类、接口和方法声明中指定类型参数...

    jcifs:JDK 1.5 的修补 jcifs - http

    CIFS是广泛用于Windows网络共享的一种文件系统协议,使得不同操作系统之间可以进行文件共享、打印服务以及其他网络服务。jcifs库为Java开发者提供了在Java环境中访问CIFS/SMB网络资源的能力。 **JDK 1.5中的jcifs...

    linux上多版本JDK和Tomcat的配制过程

    如果 Tomcat 正确引用了 JDK,将会打印出相关信息。如果正确了,以后可以直接使用 startup.sh 命令。 五、配置 Tomcat 的不同端口 在上一步中,我们已经验证了每个 Tomcat 是否正确引用了 JDK。现在,我们需要配置...

    很全 jdk_api_1.8_ 谷歌翻译

    2. **泛型**:在JDK 1.5引入泛型后,1.8版本中进一步优化了泛型的使用,提高了代码的类型安全性和可读性。泛型允许开发者在定义类、接口和方法时指定参数类型,如`List<String>`表示一个只包含字符串的列表。 3. **...

    json2.4相关依赖jar包json-lib-2.4-jdk15.jar/ezmorph-1.0.6.jar 等6个jar包

    这个版本是针对JDK1.5编译的,意味着它可以在支持JDK1.5及以上的环境中运行。`json-lib`库支持将Java对象转换为JSON字符串,反之亦然,使得Java应用能够方便地与JSON数据交互。 另一个提到的依赖是`ezmorph-1.0.6....

    bcprov-jdk15-145.rar

    Bouncy Castle库不仅支持加密,还能够帮助开发者处理PDF文档中的安全特性,如设置访问密码、限制编辑或打印权限等。 标签“java 加密解密”进一步确认了这个库的核心功能,即在Java平台上执行加密和解密操作。...

    java SE(入门知识2)-JDK环境变量设置.docx

    2. **JDK 1.5(5.0)"Tiger"**:这个版本引入了泛型、枚举、自动装箱/拆箱、增强的for循环(foreach)等关键特性,显著提高了代码的可读性和安全性。 3. **JDK 1.6(6.0)"Mustang"**:这一版本进一步增强了性能,...

    Java语言程序设计课后习题答案

    本电子版中提到了Jbuilder 9.0和Jbuilder 2006这两个集成开发环境(IDE),它们分别内置了JDK 1.4和JDK 1.5。随着JDK版本的升级,新功能的引入,某些代码可能需要更高版本的JDK才能编译和运行。例如,JDK 1.5引入了...

Global site tag (gtag.js) - Google Analytics