public static void printJPG() throws FileNotFoundException, PrintException, InterruptedException {
//image file
String filename = "abc.jpg";
// PrintRequestAttributeSet实例。
// 这用来弹出显示的对话框,并在对话框消失之前返回用户所作的任何更改。
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
DocFlavor flavor = DocFlavor.INPUT_STREAM.JPEG;
PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);// 用户可选用的PrintService实例数组。
PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService(); // 默认的PrintService
/*
* 为用户提供一个选择 PrintService(打印机)的对话框。
* gc - 用于选择屏幕。null 意味着主屏幕或默认屏幕。
* x - 对话框在屏幕坐标中的位置,包括边框
* y - 对话框在屏幕坐标中的位置,包括边框
* services - 可浏览的服务,必须不为 null。
* defaultService - 要显示的初始 PrintService。
* flavor - 要打印的 flavor,或者为 null。
* attributes - 输入时为应用程序最初提供的首选项。这不能为 null,但可以为空。输出时为反映用户所作的更改的属性。
*/
PrintService service = ServiceUI.printDialog(null, 200, 200, printService, defaultService, flavor, pras);
if (service != null) {
DocPrintJob job = service.createPrintJob(); // 创建打印任务
FileInputStream fis = new FileInputStream(filename);
DocAttributeSet das = new HashDocAttributeSet();
/*
* 定义要打印的文档,SimpleDoc(,,)里有三个参数:
* ·Object 代表要打印的内容
* ·DocFlavor的一个实例描述数据类型
* ·可选的DocAttributeSet 包含打印时的属性
*/
Doc doc = new SimpleDoc(fis, flavor, das);
/*
* 启动打印 job.print( , )
* doc - 要打印的文档。如果必须是一个 flavor,则此 PrintJob 必须支持它。
* attributes - 应用到此 PrintJob 的作业属性。如果此参数为 null,则使用默认属性。
*/
job.print(doc, pras);
Thread.sleep(10000);
}
}
public static void printPDF() throws Exception{
//pdf file
String filename = "abc.pdf";
// PrintRequestAttributeSet实例。
// 这用来弹出显示的对话框,并在对话框消失之前返回用户所作的任何更改。
PrintService printService[] = PrinterJob.lookupPrintServices();// 用户可选用的PrintService实例数组。
PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService(); // 默认的PrintService
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
/*
* 为用户提供一个选择 PrintService(打印机)的对话框。
* gc - 用于选择屏幕。null 意味着主屏幕或默认屏幕。
* x - 对话框在屏幕坐标中的位置,包括边框
* y - 对话框在屏幕坐标中的位置,包括边框
* services - 可浏览的服务,必须不为 null。
* defaultService - 要显示的初始 PrintService。
* flavor - 要打印的 flavor,或者为 null。
* attributes - 输入时为应用程序最初提供的首选项。这不能为 null,但可以为空。输出时为反映用户所作的更改的属性。
*/
PrintService service = ServiceUI.printDialog(null, 200, 200, printService, defaultService, null, pras);
if (service != null) {
//创建PDFDocument
PDDocument document = PDDocument.load( filename );
//创建打印Job
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setJobName(new File(filename).getName());
printJob.setPrintService(service);
//开始打印
document.silentPrint( printJob );
Thread.sleep(10000);
}
}
public static void printPDF() throws Exception{
// pdf file
String filename = "abc.pdf";
// PrintRequestAttributeSet实例。
// 这用来弹出显示的对话框,并在对话框消失之前返回用户所作的任何更改。
PrintService printService[] = PrinterJob.lookupPrintServices();// 用户可选用的PrintService实例数组。
PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService(); // 默认的PrintService
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
/*
* 为用户提供一个选择 PrintService(打印机)的对话框。 gc - 用于选择屏幕。null 意味着主屏幕或默认屏幕。 x -
* 对话框在屏幕坐标中的位置,包括边框 y - 对话框在屏幕坐标中的位置,包括边框 services - 可浏览的服务,必须不为 null。
* defaultService - 要显示的初始 PrintService。 flavor - 要打印的 flavor,或者为 null。
* attributes - 输入时为应用程序最初提供的首选项。这不能为 null,但可以为空。输出时为反映用户所作的更改的属性。
*/
PrintService service = ServiceUI.printDialog(null, 200, 200, printService, defaultService, null, pras);
if (service != null) {
PdfDecoder pdfDecoder = new PdfDecoder(true); // Set to true as I don't want to render it to screen
try {
pdfDecoder.openPdfFile(filename);
pdfDecoder.setPageParameters(1, 1); //values scaling (1=100%). page number
//setup print job and objects
PrinterJob printerJob = PrinterJob.getPrinterJob();
PageFormat pf = printerJob.defaultPage();
printerJob.setPrintService(service);
/*
* default page size
*/
Paper paper = new Paper();
paper.setSize(595, 842); // in pixels. For A4 paper (21 cm x 29.7 cm) at 72 dpi (java default)
paper.setImageableArea(0, 0, 595, 842);
pf.setPaper(paper);
printerJob.setPageable(pdfDecoder);
//setup default values to padd into JPS
PageRanges fullPageRange = new PageRanges(1, pdfDecoder.getPageCount());
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(fullPageRange);
pdfDecoder.setPageFormat(pf);
pdfDecoder.setPagePrintRange(fullPageRange);
printerJob.setCopies(1);
printerJob.print();
} finally {
// cleanup temporary files (%TMP%/jpedal)
pdfDecoder.closePdfFile();
}
}
}