以编程方式使用 Java 打印 PDF

打印 PDF 文档通常是不同公司和组织的关键功能。您可以使用 Java 语言以编程方式轻松打印 PDF 文件。您可以通过 配置 在您的环境中使用 Aspose.PDF for Java API。让我们来看看您的 Java 应用程序中可能出现的不同 PDF 打印场景:

使用 Java 打印 PDF 文件

您可以按照以下步骤使用 Java 代码轻松打印 PDF 文件:

  1. 创建 PdfViewer 对象
  2. 加载输入 PDF 文件
  3. 打印 PDF 文件

下面的代码片段显示了如何使用 Java 以编程方式打印 PDF 文件:

//创建 PdfViewer 对象
PdfViewer viewer = new PdfViewer();
//打开输入 PDF 文件
viewer.bindPdf(dataDir + "Test.pdf");
//打印 PDF 文件
viewer.printDocument();
//关闭 PDF 文件
viewer.close();

使用 Java 打印多个 PDF 文档

使用 Java 语言打印多个文件或批量打印 PDF 文件是一个简单的过程。您可以按照以下步骤打印多个 PDF 文件:

  1. 初始化一个String类型的列表
  2. 添加多个 PDF 文件进行打印
  3. 打印 PDF 文档

以下代码展示了如何使用 Java 语言打印多个 PDF 文件:

// 初始化一个String类型的列表
List<String> files = new ArrayList<>();

// 添加要打印的多个文件
files.add(dataDir + "First.pdf");
files.add(dataDir + "Second.pdf");

// 处理要打印的每个文件
for (String file : files)
{
    //创建 PdfViewer 对象
    PdfViewer viewer = new PdfViewer();
    //打开输入 PDF 文件
    viewer.bindPdf(file);
    //打印 PDF 文件
    viewer.printDocument();
    //关闭 PDF 文件
    viewer.close();
}

使用 Java 打印特定页面或页面范围

该 API 在打印 PDF 文件时为您提供了很多控制。您可以根据需要在打印文件时使用不同的字段和方法。例如,如果您不想打印 PDF 文件的所有页面而只打印几页。它可以是一些连续的页面范围,例如从第 3 页到第 7 页,也可以是随机页面,例如第 1,5 和 6 页。您可以通过以下步骤涵盖这两种情况:

  1. 初始化 PdfViewer 对象
  2. 设置打印属性
  3. 为打印机和页面设置创建对象
  4. 指定是否要打印所有页面、特定页面或连续页面范围
  5. 使用打印机和页面设置打印 PDF 文档

以下代码显示了如何使用 Java 打印 PDF 文档中的特定页面或一系列页面:

// 创建 PdfViewer 对象
PdfViewer viewer = new PdfViewer();
// 打开输入 PDF 文件
viewer.bindPdf(dataDir + "test.pdf");
// 设置打印属性
viewer.setAutoResize(true); // Print the file with adjusted size
viewer.setAutoRotate(true); // Print the file with adjusted rotation
viewer.setPrintPageDialog(false); // Do not produce the page number dialog when printing

// 为打印机和页面设置以及 PrintDocument 创建对象
PrintPageSettings pgs = new PrintPageSettings();
PdfPrinterSettings ps = new PdfPrinterSettings();
// 设置打印机名称
ps.setPrinterName("Microsoft Print to PDF");

// ps.setPrintRange(2); // 0 = 所有页面; 1 = 选择; 2 = 一些页面
// ps.setFromPage(1);
// ps.setToPage(2);


ps.setPrintRange(1); // 0 = all pages; 1 = selection; 2 = some pages
ps.setSelectedPages(new int[]{1, 3, 5});


// 使用打印机和页面设置打印文档
viewer.printDocumentWithSettings(pgs, ps);

使用 Java 打印加密的 PDF

有时 PDF 文件会使用密码进行保护或加密,以确保对数据的授权访问。您可以使用 Java 代码轻松访问和打印受保护或加密的 PDF 文件,并根据您的要求打印文件。您需要按照以下步骤操作:

  1. 使用密码加载受密码保护的 PDF 输入文件
  2. 初始化 PdfViewer 对象
  3. 打印 PDF 文档

下面的代码基于这些步骤,解释了如何使用 Java 代码打印受保护的 PDF 文件:

//在指定用户或所有者密码时加载安全 PDF 文档
Document document = new Document(dataDir + "Password.pdf" , "userORowner");
//创建 PdfViewer 对象
PdfViewer viewer = new PdfViewer();
//打开输入 PDF 文件
viewer.bindPdf(document);
//打印 PDF 文件
viewer.printDocument();
//关闭 PDF 文件
viewer.close();

使用 Java 打印 PDF 时检查打印任务的状态

文件发送到打印机的打印队列后,您可以密切关注打印作业的状态。这让您的应用程序决定打印是否成功。 PdfViewer 类公开了 getPrintStatus 方法,可帮助您检查打印作业的状态。例如,在将 PDF 打印为 XPS 格式时,您可以按照以下步骤获取状态:

  1. 加载输入 PDF 文件
  2. 设置打印属性
  3. 为打印机和页面设置创建对象
  4. 设置打印机名称
  5. 将输出打印到文件
  6. 检查打印状态

以下代码显示了如何使用 Java 代码在 PDF 打印期间检查打印任务的状态:

// 创建 PdfViewer 对象
PdfViewer viewer = new PdfViewer();
// 打开输入 PDF 文件
viewer.bindPdf(dataDir + "test.pdf");
// 设置打印属性
viewer.setAutoResize(true); // Print the file with adjusted size
viewer.setAutoRotate(true); // Print the file with adjusted rotation
viewer.setPrintPageDialog(false); // Do not produce the page number dialog when printing

// 为打印机和页面设置以及 PrintDocument 创建对象
PrintPageSettings pgs = new PrintPageSettings();
PdfPrinterSettings ps = new PdfPrinterSettings();

// 设置打印机名称
ps.setPrinterName("Microsoft Print to PDF");


// 结果打印输出名称
ps.setPrintFileName(dataDir + "ResultantPrintout.xps");

// 将输出打印到文件
ps.setPrintToFile(true);

// 使用上面指定的设置打印文档
viewer.printDocumentWithSettings(pgs, ps);

// 检查打印状态
if (viewer.getPrintStatus() != null)
{
    // 抛出异常
    Exception ex = (Exception)viewer.getPrintStatus();
    if (ex != null)
    {
        // 获取异常消息
    }
}
else
{
    // 没有发现错误。打印作业已成功完成
    System.out.println("printing completed without any issue..");
}

结论

我们已经探索了与在 Java 应用程序中打印 PDF 文件相关的不同场景。您可以使用 Java 语言轻松地将这些功能集成到您的 Web 应用程序、控制台应用程序或您正在使用的任何其他类型的项目中。您可以通过学习 API 参考资料产品文档 进一步探索 API。与PDF打印相关的可能场景还有很多,您可以通过免费支持论坛与我们自由讨论。我们很乐意提供帮助!

也可以看看