在 Java 中使用 PrinterJob 打印 PDF 文件

2024-03-24

我在尝试使用 Java 打印 PDF 文件时遇到问题。这是我的代码:

PdfReader readFtp = new PdfReader();    // This class is used for reading a PDF file
PDDocument document = readFtp.readFTPFile(documentID);

printRequestAttributeSet.add(new PageRanges(1, 10));

job.setPageable(document);
job.print(printRequestAttributeSet);    // calling for print

document.close()


I use document.silentPrint(job); and job.print(printRequestAttributeSet);- 效果很好。如果我使用document.silentPrint(job);- 我无法设置PrintRequestAttributeSet.

谁能告诉我如何设置打印请求属性集?


我的打印机不支持本机 PDF 打印。

我使用了开源库 Apache PDFBoxhttps://pdfbox.apache.org https://pdfbox.apache.org打印 PDF。打印本身仍然由Java的PrinterJob处理。

import java.awt.print.PrinterJob;
import java.io.File;

import javax.print.PrintService;
import javax.print.PrintServiceLookup;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.printing.PDFPageable;

public class PrintingExample {

    public static void main(String args[]) throws Exception {

        PDDocument document = PDDocument.load(new File("C:/temp/example.pdf"));

        PrintService myPrintService = findPrintService("My Windows printer Name");

        PrinterJob job = PrinterJob.getPrinterJob();
        job.setPageable(new PDFPageable(document));
        job.setPrintService(myPrintService);
        job.print();

    }       

    private static PrintService findPrintService(String printerName) {
        PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);
        for (PrintService printService : printServices) {
            if (printService.getName().trim().equals(printerName)) {
                return printService;
            }
        }
        return null;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Java 中使用 PrinterJob 打印 PDF 文件 的相关文章

随机推荐

  • CDI @Produces 具有多个属性文件

    感谢这篇文章 https stackoverflow com a 28047512 1227941 https stackoverflow com a 28047512 1227941我现在使用 CDI 使 msg 在我的 Named be
  • 在 C# windows 服务中捕获键盘事件

    我用 C 创建了一个 Windows 服务 如何在按下某个键时调用一个函数 并在该函数中获取该键的值 我需要它来按下键和按下键 我的目标是在按下特定系列的键时发送电子邮件 例如 如果您按 h e l l o 无论您在桌面上的哪个位置键入 程
  • TFS 2017 发布管理:如何显示发布下任务的父 PBI

    有没有办法在 TFS2017 下的列表中显示发布下的任务工作项的父 PBI The screenshot below shows two tasks associated with Release 3 Here I wish to be a
  • cipher 中 update() 和 dofinal() 方法之间的区别

    我读过一篇关于密码中 update 和 dofinal 方法之间差异的文章 这是关于如果我们想要加密 4 字节数组 当密码的块大小为 8 字节 时会发生什么 如果我们在这里调用 update 它将返回 null 我的问题是 如果我们用 4
  • 使用 Maven 和 IntelliJ 在 tomcat 中运行应用程序

    如果不使用 maven 要从 Intellij IDE 在 tomcat 上运行应用程序 您所要做的就是创建一个工件和指向该工件的 tomcat 运行配置 这样您就可以看到 tomcat 输出 重新启动服务器等就在 IDE 中 现在使用ma
  • 过渡状态图 R

    我的数据看起来像这样 输出dput sequence data structure list Obs 1 13 Seq 1 structure c 1L 1L 1L 1L 2L 2L 2L 2L 2L 2L 3L 3L 3L Label c
  • 使用 FFMPEG 将音频(带有偏移量)添加到视频

    我有一个 10 分钟的视频和一个 50 分钟的音频 mp3 视频从音频第 500 秒开始 使用 FFMPEG 如何将音频添加到视频但指定500 秒音频偏移 以便他们同步 EDIT 在这个底部page http howto pages org
  • 灰度图像到 NumPy 数组进行傅里叶变换

    目前我正在使用 PIL 和 NumPy 我有一个彩色的png图像 我想要 以灰度读取 转换为 NumPy 数组 对阵列执行 FFT 显示图像 这就是我正在尝试的 在 IPython w pylab flag In 1 import Imag
  • 如何使用多处理模块杀死进程?

    我有一个进程本质上只是一个无限循环 我有第二个进程是一个计时器 定时器完成后如何终止循环进程 def action x 0 while True if x lt 1000000 x x 1 else x 0 def timer time t
  • 如何通过另一种方法动态地将元素添加到反应器热通量中?

    我有一个数据源服务 它接受观察者作为参数 void subscribe Consumer onEventConsumer 我想使用 Flux 作为 RSocket 的响应流 我怎样才能做到这一点 我现在看到的应该是这样的 Flux
  • C# 中文字的算术运算是否在编译时计算?

    非常简短的问题 但我现在无法在网上找到解决方案 int test 1 2 Will 1 2在运行时或编译时执行 询问原因 我认为大多数人有时会使用文字而不指定其使用原因或含义 因为他们不想通过运行计算来浪费一点性能 并且我相信计算发生在编译
  • 无法访问 Azure 文件共享 |端口 445

    我已经设置了 Azure 存储文件 并在我的开发计算机中添加了一些防火墙规则来打开端口 445 但我现在无法访问我的文件共享 它也不响应 ping 命令 但我可以从 Azure VM IaaS 服务器访问相同的文件共享 有什么我错过的吗 不
  • ASP.NET MVC 3 - 如何从数据库填充单选按钮列表

    在 Asp net MVC 3 中 我的单选按钮设置如下 div class editor label Html LabelFor m gt m Roles div div class editor field Html RadioButt
  • 从 iOS 14 小部件的 CoreData 获取数据

    我想在小部件中显示从核心数据获取的数据 但 FetchRequest不适用于小部件 据我了解 我们必须创建一个应用程序组并创建一个共享的持久容器 我想知道的是如何从共享的持久容器中读取 获取 小部件上的数据 或者简单地 如何在小部件中显示从
  • Sublime Text 3 控制台中的 Unicode 编码错误

    我总是得到一个 UnicodeEncodeError ascii 编解码器无法对位置 0 处的字符 xf6 进行编码 序号不在范围 128 中 当尝试打印非 ASCII 字符时 在 Sublime Text 3 控制台中 我正在使用 Ana
  • 如何使用 NetworkX 获得加权图中的最短路径?

    我试图在定义为的加权图中获得最短路径 import networkx as nx import matplotlib pyplot as plt g nx Graph g add edge 131 673 weight 673 g add
  • Sugar ORM for Android 找不到我的列名

    好吧 我正在尝试选择所有实体entitie id some id 我用这个规则来做到这一点 List
  • TinyMCE 4 与 elFinder

    有人已经尝试将 elFinder 集成到新的 4b1 版本的 TinyMCE 中吗 看起来像previous http www tinymce com wiki php how to implement a custom file brow
  • 按特定顺序对(数组)列表进行排序

    我有一个对象列表 我想按照定义的顺序对其进行排序 对于前 我有一个带有字段的对象String color 我想在颜色字段上对我的列表进行排序 以便它总是首先是白色 然后是蓝色 然后是黄色 然后是所有其他 如果可能的话 alpha order
  • 在 Java 中使用 PrinterJob 打印 PDF 文件

    我在尝试使用 Java 打印 PDF 文件时遇到问题 这是我的代码 PdfReader readFtp new PdfReader This class is used for reading a PDF file PDDocument d