1. 程式人生 > >Java Print 打印

Java Print 打印

整理 dup job getclass col led imp tap 文件

Java 原生的API中有Print,使用Print可以操作打印機進行打印操作,獲取打印機屬性,下面是代碼

打印程序(靜默打印)

package com.boci.PrintPDF; 

import java.io.File;

import java.io.FileInputStream;

import javax.print.Doc;

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.Attribute; import javax.print.attribute.AttributeSet; import javax.print.attribute.DocAttributeSet; import javax.print.attribute.HashDocAttributeSet; import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.standard.Chromaticity; import javax.print.attribute.standard.Copies; import javax.print.attribute.standard.Finishings; import javax.print.attribute.standard.MediaSizeName; import javax.print.attribute.standard.NumberUp; import javax.print.attribute.standard.OrientationRequested;
import javax.print.attribute.standard.SheetCollate; import javax.print.attribute.standard.Sides; /** * *@author Clare [email protected] * *Print file by javax * */ public class PrintPdfJavax { public static void main(String[] args) { File file = new File("D:/Archive/A2.pdf"); // 獲取選擇的文件 // 構建打印請求屬性集 HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); // 設置打印格式,因為未確定類型,所以選擇autosense DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE; // 查找所有的可用的打印服務 PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras); System.out.println("-------------------All services-------------------"); for(int i=0;i<printService.length;i++){ System.out.println(printService[i]); } // 定位默認的打印服務 //PrintService service1 = PrintServiceLookup.lookupDefaultPrintService(); if(printService.length>0){ System.out.println("-------------------Choose Printer-------------------"); System.out.println(printService[0]); //指定使用 Microsoft XPS Document Writer PrintService service = printService[0]; //獲取打印機屬性 AttributeSet attributes = service.getAttributes(); for (Attribute a : attributes.toArray()) { String name = a.getName(); String value = attributes.get(a.getClass()).toString(); System.out.println(name + " : " + value); } // 顯示打印對話框 //PrintService service = ServiceUI.printDialog(null, 200, 200, printService, // service1, flavor, pras); if (service != null) { try { System.out.println("Begin Print PDF: "+file.getName()); DocPrintJob job = service.createPrintJob(); // 創建打印作業 FileInputStream fis = new FileInputStream(file); // 構造待打印的文件流 DocAttributeSet das = new HashDocAttributeSet(); //請求一個彩色打印機 pras.add(Chromaticity.COLOR); //請求橫向模式 pras.add(OrientationRequested.LANDSCAPE); //美國Letter大小的紙質屬性 pras.add(MediaSizeName.NA_LETTER); // European A4 paper pras.add(MediaSizeName.ISO_A4); //請求裝訂 pras.add(Finishings.STAPLE); //整理多個副本 pras.add(SheetCollate.COLLATED); //請求雙面 pras.add(Sides.DUPLEX); // 2頁到一個工作表 pras.add(new NumberUp(2)); //多少個副本 pras.add(new Copies(2)); Doc doc = new SimpleDoc(fis, flavor, das); job.print(doc, pras); } catch (Exception e) { e.printStackTrace(); } } } } }

Java Print 打印