PDFBox:如何使用指定的打印机打印pdf?

Fir*_*zen 14 java printing pdf pdfbox

我想使用PDFBox打印 iText创建的PDF文件.我已经使用PDDocument类及其方法print()成功地尝试了这个.您可以在此处找到文档:http://pdfbox.apache.org/apidocs/.

(我正在使用此代码:)

public static void printPDF(String fileName)
        throws IOException, PrinterException {
    PDDocument doc = PDDocument.load(fileName);
    doc.print();
}
Run Code Online (Sandbox Code Playgroud)

方法print()效果很好,但有一个问题:当我需要打印多个文件时,该方法要求我为每个文件选择打印机.

有没有办法如何只设置一次打印机?

对于打印机选择,我可以使用此代码,例如:

public static PrintService choosePrinter() {
    PrinterJob printJob = PrinterJob.getPrinterJob();
    if(printJob.printDialog()) {
        return printJob.getPrintService();          
    }
    else {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢


解:

public static PrintService choosePrinter() {
    PrinterJob printJob = PrinterJob.getPrinterJob();
    if(printJob.printDialog()) {
        return printJob.getPrintService();          
    }
    else {
        return null;
    }
}

public static void printPDF(String fileName, PrintService printer)
        throws IOException, PrinterException {
    PrinterJob job = PrinterJob.getPrinterJob();
    job.setPrintService(printer);
    PDDocument doc = PDDocument.load(fileName);
    doc.silentPrint(job);
}
Run Code Online (Sandbox Code Playgroud)

mkl*_*mkl 12

PDDocument还提供了除无参数之外的其他打印方法print():

public void print(PrinterJob printJob) throws PrinterException;
public void silentPrint() throws PrinterException;
public void silentPrint(PrinterJob printJob) throws PrinterException;
Run Code Online (Sandbox Code Playgroud)

silentPrint方法不显示对话框.

您可以通过首先选择打印机然后silentPrint使用相应PrinterJob初始化的实例进行调用来获得所需的内容.