电竞比分网-中国电竞赛事及体育赛事平台

java 后臺調(diào)用指定打印機并打印文件(支持PDF打?。?/span>

 hncdman 2023-02-14 發(fā)布于湖南

Robert·Ran

訂閱專欄

package com.xxx.wxzf.util;

import org.apache.pdfbox.pdmodel.PDDocument;

import org.apache.pdfbox.printing.PDFPageable;

import org.apache.pdfbox.printing.PDFPrintable;

import org.apache.pdfbox.printing.Scaling;

import javax.print.DocFlavor;

import javax.print.PrintService;

import javax.print.PrintServiceLookup;

import javax.print.attribute.HashPrintRequestAttributeSet;

import java.awt.print.Book;

import java.awt.print.PageFormat;

import java.awt.print.Paper;

import java.awt.print.PrinterJob;

import java.io.InputStream;

import java.net.URL;

fileUrl 文件鏈接

printService 指定打印機

@Author: Robert·Ran

 @CreateTime: 2019/5/17 11:59

@Description: 打印方法

public class Print {

public static void printFile(String fileUrl, PrintService printService, String jobName) throws Exception {

URL url = new URL(fileUrl);

InputStream is = url.openStream();

 讀取pdf文件

PDDocument document = PDDocument.load(is);

創(chuàng)建打印任務

PrinterJob job = PrinterJob.getPrinterJob();

job.setJobName("文件_" + jobName);

job.setPrintService(printService);

job.setPageable(new PDFPageable(document));

Paper paper = new Paper();

設置打印紙張大小

paper.setSize(595, 842); // 值為點 1 = 1/72 inch

設置打印位置與坐標

paper.setImageableArea(0, 0, paper.getWidth(), paper.getHeight()); // no margins

PageFormat pageFormat = new PageFormat();

pageFormat.setPaper(paper);

Book book = new Book();

實際大小 ACTUAL_SIZE,

縮小     SHRINK_TO_FIT,

拉伸     STRETCH_TO_FIT,

適應     SCALE_TO_FIT;

book.append(new PDFPrintable(document, Scaling.SCALE_TO_FIT), pageFormat, 1);

job.setPageable(book);

job.print();

printerName 指定打印機名稱

@Author: Robert·Ran

@CreateTime: 2019/5/17 11:59

@Description: 指定打印機, 若無指定打印機則調(diào)用默認打印機

public static PrintService specifyPrinter(String printerName) {

DocFlavor psInFormat = DocFlavor.INPUT_STREAM.AUTOSENSE;

HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();

PrintService printService[] = PrintServiceLookup.lookupPrintServices(psInFormat, pras);

PrintService myPrinter = null;

遍歷所有打印機如果沒有選擇打印機或找不到該打印機則調(diào)用默認打印機

for (PrintService printService2 : printService) {

String svcName = printService2.toString();

if (svcName.contains(printerName)) {

myPrinter = printService2;

break;

if (myPrinter == null) {

myPrinter = PrintServiceLookup.lookupDefaultPrintService();

return myPrinter;

版權聲明:本文為CSDN博主「Robert·Ran」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權協(xié)議,轉載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/qq_38022616/article/details/90296045

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多