最近搜索

打印机设置,选择打印机。和选择A4 A5 纸 输出打印列表

浏览:413
管理员 2022-10-25 02:31

输出打印机列表


import java.awt.print.PrinterJob;
import java.util.Date;
import java.util.Scanner;

import javax.print.PrintService;

import net.sf.json.JSONObject;


public static void out_print_list() {
		// TODO Auto-generated method stub
				PrinterJob job = PrinterJob.getPrinterJob();
		        // 遍历查询打印机名称
		        boolean flag = false;
		        int i=1;
		        for (PrintService ps : PrinterJob.lookupPrintServices()) {
		            String psName = ps.toString();
		            System.out.println(i+":"+psName);
		            i++;
		            /*
		            if (psName.contains("导出为WPS PDF")) {
		            	System.out.println("就是这个");
		            	 job.setPrintService(ps);
		            }
		            */
		        }
	}
  	


	import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.Random;
import java.util.Scanner;

import javax.print.PrintService;
import javax.xml.stream.events.EndDocument;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.printing.PDFPageable;
import org.apache.pdfbox.printing.PDFPrintable;

import net.sf.json.JSONObject;
	
	/**
	 * #接受文件路径,本地路径 ,执行打印操作。 #打印指定位置的pdf文件。
	 * 
	 * @author 作者微信 xiaomao0055
	 */
	public static void print(String path, String printName, String paperA4_A5) throws Exception {
		File filePath = new File(path);
		/**
		 * 判断根据path获取的filePath是否为文件夹,如果是则循环打印,如果不是则认为是文件路径,直接打印
		 */
		if (filePath.isDirectory()) {
			File[] array = getFile(filePath);
			String fileName = null;
			for (int i = 0; i < array.length; i++) {
				fileName = array[i].getPath();
				PDDocument document = PDDocument.load(new File(fileName));
				printWithPaper(document, printName, paperA4_A5);
			}
		} else {
			PDDocument document = PDDocument.load(new File(path));
			printWithPaper(document, printName, paperA4_A5);
		}
	}
	
	
		/**
	 * 打印功能
	 * 
	 * @author 作者微信 xiaomao0055
	 */
	public static void printWithPaper(PDDocument document, String printName, String paperA4_A5)
			throws IOException, PrinterException {
		PrinterJob job = PrinterJob.getPrinterJob();
		job.setPageable(new PDFPageable(document));

		// 根据名子设置打印机
		if (StringUtil.isNotEmpty(printName)) {
			for (PrintService ps : PrinterJob.lookupPrintServices()) {
				String psName = ps.toString();
				if (psName.contains(printName)) {
					// System.out.println("就是这个");
					job.setPrintService(ps);
				}
			}
		}
		// 根据名子设置打印机

		// define custom paper
		Paper paper = new Paper();
		// 纸张大小设置为A4
		/*
		 * A4纸张尺寸:210mm * 297mm A5 148mm×210mm 2.8476 1英寸:2.54cm 假设屏幕DPI(Dots per
		 * inch)为72像素(pixels)每英寸,计算一下,结果为72px/2.54 = 28.34px 下面给出常见分辨率下,A4纸张大小在屏幕上的像素尺寸:
		 * DPI:72px/inch,A4 size(598 * 842); DPI:96px/inch,A4 size(794* 1123);(default)
		 * DPI:120px/inch,A4 size(1487* 2105); DPI:150px/inch,A4 size(1240* 1754);
		 */
		if (paperA4_A5.equals("A4")) {
			paper.setSize(598, 842); // 1/72 inch
		}
		if (paperA4_A5.equals("A5")) {
			paper.setSize(422, 598); // 1/72 inch A5 148mm×210mm
		}
		paper.setImageableArea(0, 0, paper.getWidth(), paper.getHeight()); // no margins

		// custom page format
		PageFormat pageFormat = new PageFormat();
		// PageFormat.PORTRAIT竖向
		// PageFormat.REVERSE_LANDSCAPE纵向
		pageFormat.setOrientation(PageFormat.REVERSE_LANDSCAPE);

		pageFormat.setPaper(paper);

		// override the page format
		Book book = new Book();
		// append all pages
		book.append(new PDFPrintable(document), pageFormat, document.getNumberOfPages());
		job.setPageable(book);
		job.print();

	}
	


联系站长

站长微信:xiaomao0055

站长QQ:14496453