当前位置: 首页 > 面试题库 >

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

谭敏学
2023-03-14
问题内容
我想使用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();
}

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

有什么办法只能设置一次打印机吗?

对于打印机选择,我可以使用以下代码作为示例:

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

提前致谢

解:

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);
}

问题答案:

PDDocument除无参数外,还提供其他打印方法print()

public void print(PrinterJob printJob) throws PrinterException;
public void silentPrint() throws PrinterException;
public void silentPrint(PrinterJob printJob) throws PrinterException;

这些silentPrint方法不显示对话框。

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



 类似资料:
  • 问题内容: 我只想在不选择用户的情况下打印JasperReport。我进行了搜索,但是没有有效的解决方案。这是我的代码的相关部分: 我想选择一台打印机,而不是简单的printReport。有什么办法吗? 问题答案: 这是应该的样子:

  • 我目前的工作是创建机械图纸,用于发送给客户和作为施工图。当我的绘图完成后,我导出一个. pdf文件,并将其发送给客户端。 我们的客户非常喜欢黑白画,所以我试着提供他们。但是我用来画画的软件效果不好。它只有一个选项“所有颜色都是黑色”,我的画上有一些白色的“隐藏线”。当然,这些显示使用所有颜色作为黑色选项。 我找到了一个解决方案,那就是使用pdf打印机。效果很好,效果也很好。 现在我想打印这个。pd

  • 这是一个我甚至无法在我们的测试环境中重现的错误——到目前为止,它只发生在生产环境中,需要运行一段时间才能发生(重启一段时间后就可以了)。 在打印PDF文件时,上述异常被抛出,在打印机队列中,我可以看到作业挂在错误状态。让我有点困扰的是,我打印的文件大小约为40 kb,打印队列显示它们约为1.4 MB,但也许这是正常的,我不知道。无论如何,我读了一两件关于这个异常的事情,但是有些事情不太对——应用程

  • 问题内容: 当前正在检索机器上安装的默认打印机以进行打印。我希望能够选择文档要使用的打印机。最好的方法是什么? 码: 问题答案: 在下面创建类,将其导入,然后在知道打印机名称的情况下尝试调用;如果您不知道可以访问哪些打印机,请调用一个包含所有可行的注册打印机名称的。 也可以查看我对这个SO问题的答案以获取更多详细信息:

  • 问题内容: Java中有什么方法可以打印到特定的IPP打印机?我发现所有示例代码和教程都集中在如何使用以下类似内容打印特定类型的文档上: 此代码段仅打印到找到的第一台能够打印文档的打印机。就我而言,我想通过其URI查找打印机,但似乎不支持此功能。我尝试使用,而不是,并添加了一个属性,但这不会返回任何打印机。我怀疑查找服务正在寻找可以更改其目标URI的打印机,而不是寻找具有该URI的打印机。 作为最

  • 我是新的PDFBox,我有一个要求发送PDF到打印机时,它是打开的。我们使用PDFBox api生成PDF。我使用下面的代码尝试在打开时设置操作,但没有任何效果。请帮帮忙。我使用过不同的javascript,如window.print();this.print();打印();