package com.merge.rui;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.DocAttributeSet;
import javax.print.attribute.HashAttributeSet;
import javax.print.attribute.HashDocAttributeSet;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.JobName;
import javax.print.attribute.standard.MediaSizeName;

import org.apache.pdfbox.PrintPDF;

public class PrintPdf {
	public static void main(String[] args) {
		// System.out.println("Value:"+test());
		// 打印pdf的一个方法,首先安装下PDFCreator软件
		try {
//			printFile("C:\\Users\\rui\\Desktop\\test\\");
//			printBOXFileName("C:\\Users\\rui\\Desktop\\test\\8.17.pdf");
//			printBOXFiles("C:\\Users\\rui\\Desktop\\test\\");
			printFileName("C:\\Users\\rui\\Desktop\\test\\8.17.pdf");
		} catch (Exception e) {
			System.out.println("打印文件异常:" + e.getMessage());
			e.printStackTrace();
		}
	}
	/**
	 * BoX方法打印,按路径
	 * @param pathFile
	 * @throws Exception
	 */
	   public static void printBOXFiles(String pathFile) throws Exception{
	    	File file = new File(pathFile);
			File[] fies = file.listFiles();
			for (int x = 0; x < fies.length; x++) {
				if (fies[x].isDirectory()){
					
					printBOXFiles(fies[x].getPath());
				}
				else{
					if (fies[x].getName().endsWith(".pdf")) {
						String filepath = pathFile + File.separator + fies[x].getName();
						PrintPDF.main(new String[]{"-silentPrint",filepath});
						System.out.println("打印file " + fies[x].getName());
					}
					
				}
		}
	    	
	    }
	   /**
	    * BOX方法打印,按文件名
	    */
	   public static void printBOXFileName(String FileName) throws Exception {
		   PrintPDF.main(new String[]{"-silentPrint",FileName});
	   }
	   
	   /**
	    * 系统打印,按文件名
	    * @param FileName
	    * @throws Exception
	    */
		public static void printFileName(String FileName) throws Exception {
		
		File pdfFile = new File(FileName);
		// 构建打印请求属性集
		PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
		pras.add(new JobName(FileName.substring(FileName.lastIndexOf("\\")+1,FileName.length() ), null));
		pras.add(MediaSizeName.ISO_A4);

		// 设置打印格式,因为未确定文件类型,这里选择AUTOSENSE
//		DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF;//pdf打印
		DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;//自动
//		DocFlavor flavor = DocFlavor.INPUT_STREAM.POSTSCRIPT;//ps打印
		// 查找所有的可用打印服务
		HashAttributeSet has = new HashAttributeSet();
//		has.add(new PrinterName("Officejet J5500 series", null)); // 添加打印机名称
		PrintService[] printService = PrintServiceLookup
				.lookupPrintServices(flavor, has);
//		if (printService[0] != null) {
			   if (printService.length > 0) {
		       DocPrintJob pj = printService[1].createPrintJob();// 创建打印任务
		       try {
		           FileInputStream fis = new FileInputStream(pdfFile);// 构造待打印的文件流
		           DocAttributeSet das=new HashDocAttributeSet();	
//		           Doc doc = new SimpleDoc(fis, flavor, null);// 建立打印文件格式
		           Doc doc = new SimpleDoc(fis, flavor, das);// 建立打印文件格式
		           pj.print(doc, pras);// 进行文件的打印
		        } catch (FileNotFoundException fe) {
		        } catch (PrintException e) {
		        }
		   }

//		if (printService[1] != null) {
//			//获得打印服务的文档打印作业
//			DocPrintJob job = printService[1].createPrintJob(); // 创建打印任务
//			
//			DocAttributeSet das=new HashDocAttributeSet();				
//			
//			InputStream fis = new FileInputStream(pdfFile); // 构造待打印的文件流
//			Doc doc = new SimpleDoc(fis, flavor, das); // 建立打印文件格式
//			job.print(doc, pras); // 进行文件的打印
//		}
	}
/**
 * 系统打印,按路径
 * @param path
 * @throws Exception
 */
	public static void printFile(String path) throws Exception {
		File file = new File(path);
		File[] fies = file.listFiles();
		
		for (int x = 0; x < fies.length; x++) {
			if (fies[x].isDirectory()){
				
				printFile(fies[x].getPath());
			}
			else{
				
				String fileExt = fies[x].getName().substring(
						fies[x].getName().indexOf(".") + 1, fies[x].getName().length());
				if ("pdf".equalsIgnoreCase(fileExt)) {
					System.out.println("打印file " + fies[x].getName());
					String filepath = path + File.separator + fies[x].getName();
					File pdfFile = new File(filepath);
					// 构建打印请求属性集
					PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
					pras.add(new JobName(fies[x].getName(), null));
					
					HashAttributeSet has = new HashAttributeSet();
//					has.add(new PrinterName("Officejet J5500 series", null)); // 添加打印机名称

					// 设置打印格式,因为未确定文件类型,这里选择AUTOSENSE
					DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
					
					// 查找所有的可用打印服务
					PrintService printService[] = PrintServiceLookup
							.lookupPrintServices(flavor, has);

					if (printService[1] != null) {
						//获得打印服务的文档打印作业
						DocPrintJob job = printService[1].createPrintJob(); // 创建打印任务
						
						DocAttributeSet das=new HashDocAttributeSet();				
						
						InputStream fis = new FileInputStream(pdfFile); // 构造待打印的文件流
						Doc doc = new SimpleDoc(fis, flavor, das); // 建立打印文件格式
						job.print(doc, pras); // 进行文件的打印
					}
				}		
			}
		}
	
	}
}
最近下载更多
gshnlj  LV15 2022年8月24日
2252536772  LV21 2022年2月18日
thornton2011  LV2 2021年9月2日
aihui523  LV34 2021年3月23日
wupujian  LV17 2020年12月30日
18321000850  LV14 2020年6月24日
EdgarLi  LV14 2020年5月16日
kkalpha  LV5 2020年3月20日
qq371348836  LV7 2020年3月12日
xuyongff  LV24 2019年11月4日
最近浏览更多
f22m1a2b2  LV17 5月31日
syd1988  LV7 3月14日
孤留光乩 2023年12月3日
暂无贡献等级
chen影 2023年10月31日
暂无贡献等级
zj0010722  LV2 2023年3月2日
G你太美  LV9 2022年10月13日
PaymentCodeSystem  LV11 2022年8月4日
funcrit  LV2 2022年7月18日
mengfanyun  LV9 2022年7月4日
xytthy  LV3 2022年4月25日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友