当前位置: 首页 > 知识库问答 >
问题:

PDF卡在"打印"状态使用JavaPDFBox 2.0.21

欧阳哲
2023-03-14

我正在尝试用Java设置一个printer类,它可以使用PDFBox打印PDF文件。我的printPdf方法已成功添加。打印机队列中的pdf文件,但它根本不打印(它卡在“打印…”中)国家)。

它只发生在某些特定的PDF文件上。对于某些pdf文件,它可以完美运行,对于某些文件,问题会发生。

以下是我用来打印pdf文件的代码:

File file = new File("C:/Users/user/Desktop/Java Printing.pdf");
FilePrinter.printPdf(file, "Printer name");

FilePrinter.printPdf方法:

public static void printPdf(File pdfFile, String laserName)
{
    PDDocument document = null;
    try {
        PrintRequestAttributeSet attr = new HashPrintRequestAttributeSet();
        attr.add(MediaSizeName.ISO_A4);
        attr.add(Sides.DUPLEX);
        document = PDDocument.load(pdfFile);

        PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);
        PrintService myPrintService = PrintServiceLookup.lookupDefaultPrintService();

        for (PrintService printer : printServices) {
            if (printer.getName().equals(laserName))
                myPrintService = printer;
        }

        PrinterJob job = PrinterJob.getPrinterJob();

        job.setPageable(new PDFPageable(document));
        job.setPrintService(myPrintService);

        job.print(attr);

    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
    finally{
        if(document != null) {
            try {
                document.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

我试图打印的pdf文件有2页(没有损坏,我可以在任何web浏览器中打开),但在打印机队列的文件属性中,它显示文件大小为0,有0页(参见下一张图片)

打印机队列中的文件属性

尝试打印PDF时打印机的队列状态

这个问题与PDFBox有关吗?到我的打印机?如果我尝试从我的网络浏览器打印它,它就像一个魅力,但我真的不能用java打印它。

共有1个答案

罗乐意
2023-03-14

完全卸载和重新安装打印机驱动程序后修复。Windows告诉我它们是最新的,这是错误的!

 类似资料:
  • 我有一个连接到CUPS的打印机,它支持双面打印,如何通过java例程将其设置为单面打印或双面打印? 我曾尝试使用它的库使用ASET添加和addViewer首选项没有任何运气。 有人能提供一些建议吗?

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

  • 我通过使用PDFiumSharp将每页转换为PNG图像来打印PDF文件。接下来,我将此图像绘制为图形。 问题是打印机接收到的数据非常大,整个过程运行缓慢。我试图在Windows上使用lpr命令。它可以直接处理PDF文件,但我的应用程序需要支持双面打印、不同的纸张来源等,这在lpr中是不可用的。 如何使用System. Drawing. Printig(或其他提供类似功能的东西)打印PDF而不转换为

  • 我尝试使用PrintTicket对象(Microsoft)设置订书钉属性,但它不起作用。我已验证是否安装了正确的打印驱动程序。当我手动打印时,我能够钉上打印输出,所以我确信打印机支持它。 我编辑了这篇文章以包含完整的代码。我在这里使用的PDF库是pdfiumviewer。我没有检查这段代码中的返回值,但如果我运行它,得到的返回值给我“ConflictStatus.ConflictResolved”

  • 问题内容: 我想使用PDFBox打印 由iText创建的 PDF文件 。我已经使用PDDocument类及其方法print()成功尝试了此操作。您可以在此处找到文档: http //pdfbox.apache.org/apidocs/。 (我正在使用此代码:) 方法print()很好用,但是 有一个问题:当我需要打印多个文件时,该方法要求我为每个文档选择打印机。 有什么办法只能设置一次打印机吗?