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();
  }

 }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值