关于java打印功能的最简单实现的学习笔记


<script type="text/javascript"> document.body.oncopy = function() { if (window.clipboardData) { setTimeout(function() { var text = clipboardData.getData(&quot;text&quot;); if (text &amp;&amp; text.length&gt;300) { text = text + &quot;\r\n\n本文来自CSDN博客,转载请标明出处:&quot; + location.href; clipboardData.setData(&quot;text&quot;, text); } }, 100); } } </script><script class="blogstory">function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&amp;u='+escape(d.location.href)+'&amp;c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>

/*
关于java打印功能的最简单实现的学习笔记
*/

import javax.print.*;
import javax.print.attribute.*;
import javax.print.attribute.standard.*;
import javax.print.event.*;

import java.net.URL;

public class PrintDemo{
 public static void main(String[] args){

//第一步:定位打印服务(打印机)

  //定义打印机支持的文档类型
  DocFlavor fr = DocFlavor.URL.GIF;
  /*
  创建DocFlavor实例需要两个参数(String),
  一个是表示MIME类型,一个是表示类的名称
  */
  //很多情况下,不一定要创建DocFlavor实例
  PrintService[] allps = PrintServiceLookup.lookupPrintServices(null,null);
   //检索所有的可用打印机服务
    for(int i=0;i<allps.length;i++){
   System.out.println(allps[i].getName());  
  }
  //通常情况下只要获取默认的打印服务就ok了
  PrintService defaultps = PrintServiceLookup.lookupDefaultPrintService();
  System.out.println(defaultps.getName());
  //定义属性(javax.print.attribute包)
  PrintRequestAttributeSet attrs = new HashPrintRequestAttributeSet();
  //这里的属性不能为null,否则,IIlegalArgumentException
  PrintService select = ServiceUI.printDialog(null,100,100,allps,defaultps,null,attrs);
  
//第二步:创建打印任务
  
  DocPrintJob job = defaultps.createPrintJob();//?这里的services是调用哪个对象,需要进一步验证
//第三步:获取打印数据
 try{
  URL url = new URL("http://localhost:8080/demo/printtest.gif ");
  DocFlavor flavor = DocFlavor.URL.GIF;
  SimpleDoc doc = new SimpleDoc(url,flavor,null);

//第四步:初始化打印
  //javax.print.attribute.standard包中有很多有用的实现!
  //attrs.add(new Copies(2));
  attrs.add(OrientationRequested.LANDSCAPE);
  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、付费专栏及课程。

余额充值