在jdk1.4之前的版本,必须要实现java.awt.print.Printable接口
或通过Toolkit.getDefaultToolkit().getPrintJob来获取打印服务对象;
在jdk1.4中则还可以通过javax.print.PrintSerivceLookup来查找定位一个打印服务对象。
2、需要开始一个打印工作。这也有几种实现方法:在jdk1.4之前可以通过java.awt.print.PrintJob
(jdk1.1提供的,现在已经很少用了)调用print或printAll方法开始打印工作;
也可以通过java.awt.print.PrinterJob的printDialog显示打印对话框,
然后通过print方法开始打印;在jdk1.4中则可以通过javax.print.ServiceUI的printDialog显示打印对话框,
然后调用print方法开始一个打印工作。
设置打印属性
使用如下方法可以获得PrintJob的实例用于控制打印 *** 作: Toolkit.getPrintJob(Frame f, String jobtitle, Properties prop) 那么对于打印属性的设置可以通过对prop的属性设置来实现,打印属性包括: awt.print.destination: 可以是"printer"或"file" awt.print.printer: 打印机名 awt.print.fileName: 打印文件名 awt.print.numCopies: 打印份数 awt.print.options: 打印命令的打印选项 awt.print.orientation: 打印方向,可以是"portrait"或"landscape" awt.print.paperSize: 纸张大小,可以是"letter","legal","executive"或"a4"
接口 PrintService 是 DocPrintJob 的工厂。PrintService 描述了打印机的功能,并可查询它来了解打印机支持的属性
1 package com.tj.print2 3 import java.io.File4 import java.io.FileInputStream5 6 import javax.print.Doc7 import javax.print.DocFlavor8 import javax.print.DocPrintJob9 import javax.print.PrintService10 import javax.print.PrintServiceLookup11 import javax.print.ServiceUI12 import javax.print.SimpleDoc13 import javax.print.attribute.DocAttributeSet14 import javax.print.attribute.HashDocAttributeSet15 import javax.print.attribute.HashPrintRequestAttributeSet16 import javax.swing.JFileChooser17 18 public class PrintDemo1 {19 public static void main(String[] args) {20 JFileChooser fileChooser = new JFileChooser()// 创建打印作业21 int state = fileChooser.showOpenDialog(null)22 if (state == fileChooser.APPROVE_OPTION) {23 File file = fileChooser.getSelectedFile()// 获取选择的文件24 // 构建打印请求属性集25 HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet()26 // 设置打印格式,因为未确定类型,所以选择autosense27 DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE28 // 查找所有的可用的打印服务29 PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras)30 // 定位默认的打印服务31 PrintService defaultService = PrintServiceLookup32 .lookupDefaultPrintService()33 // 显示打印对话框34 PrintService service = ServiceUI.printDialog(null, 200, 200,35 printService, defaultService, flavor, pras)36 if (service != null) {37 try {38 DocPrintJob job = service.createPrintJob()// 创建打印作业39 FileInputStream fis = new FileInputStream(file)// 构造待打印的文件流40 DocAttributeSet das = new HashDocAttributeSet()41 Doc doc = new SimpleDoc(fis, flavor, das)42 job.print(doc, pras)43 } catch (Exception e) {44 e.printStackTrace()45 }46 }47 }48 }49 }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)