Java Print 打印


 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM