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

如何从java应用程序打印PDF

孟哲
2023-03-14

我必须使用java应用程序打印PDF文件。我尝试过这样的方法:

FileInputStream psStream = new FileInputStream("<path to file>");
PrintService service = getPrinterByName("some printer name");
if (service != null) {
    DocPrintJob printJob = service.createPrintJob();
    Doc document = new SimpleDoc(psStream, DocFlavor.INPUT_STREAM.AUTOSENSE, null);
    try {
        printJob.print(document, null);
    } catch (PrintException e) {
        e.printStackTrace();
    }
}

private PrintService[] getPrintersList() {
    DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
    PrintService[] services = PrintServiceLookup.lookupPrintServices(flavor, null);

    return services;
}

private PrintService getPrinterByName(String name) {
    PrintService[] list = getPrintersList();
    if (list.length > 0) {
        for (PrintService service : list) {
            if (service.getName().contains(name)) {
                return service;
            }
        }
    }
    return null;
}

当我在假打印机上测试时(我使用PDFCreator作为打印机),一切正常,但当我尝试在物理打印机上打印时,什么都没有发生。

然后我用了PDFBox。文件是打印出来的,但文字之间有奇怪的点,在不应该的地方。

那么,也许有人有从java应用程序打印PDF的经验,可以分享这些信息?

共有1个答案

盖昊东
2023-03-14

直接向打印机发送PDF文件仅适用于本机支持PDF格式的打印机。这将得到任何虚拟PDF打印机的支持,但不受大多数硬件打印机的支持。如果要可靠地打印PDF文件,需要使用库将其内容呈现到打印机中。

然后看看SO中的这个问题:
我应该使用哪个基于Java的PDF渲染库进行打印?

更新:上面的链接已断开,但除了谷歌搜索外,没有其他替代品。不幸的是,堆栈溢出所有者决定不欢迎与库建议相关的问题。

 类似资料:
  • 问题内容: 在我的应用程序中,我有一个包含数据的JTable,我需要添加一个打印按钮,该按钮添加了在打印机纸张上的表中打印数据的功能(发送打印机作业),使用该类怎么可能?我一直在寻找示例,但是找不到一个简单的示例,该示例从JComponent打印一些数据。 这是我发现的网站之一:http : //java.sun.com/products/java- media/2D/forDevelopers/

  • 问题内容: 我有一个包含XML的Java字符串,没有换行或缩进。我想将其转换为格式正确的XML字符串。我该怎么做呢? 注意:我的输入是String。我的输出是String。 (基本)模拟结果: 问题答案: 注意:结果可能因Java版本而异。搜索特定于你的平台的解决方法。

  • 我需要在cmd上打印这个字符。其UNICODE编码为U+26C0。我尝试了这个:system.out.print(“”);但在跑步中我得到了“?”角色谢谢。

  • 我有一个flask应用程序,只有一条路线,没有复杂的事情发生,运行在docker容器中。我一辈子都不能让print语句出现在日志中(

  • 问题内容: 我有一组打印机通过网络连接,并且为每台打印机分配了静态IP。 现在,我在Linux服务器上运行了一个PHP Web应用程序,该服务器需要通过网络将打印作业发送到这些打印机。 使用lpr或杯子可以吗,我该怎么办。 问题答案: 您可以从此处使用LPR打印机类: http://www.phpclasses.org/package/2540-PHP-Abstraction-for-printi

  • 在我的项目中,客户需要使用POS打印机打印收据,这可以使用JAVA POS来完成。我在网上搜索没有任何有用的材料,但发现 1.javapos 2.jpos 可以有人请指导我应该进行JAVA POS或JPOS。 该应用程序基于Java Swing desktop而不是基于web。 真的坚持这一点,任何帮助都是非常有用的