当前位置:首页 > Java

如何java打印pdf

2026-03-22 08:28:39Java

使用 Apache PDFBox 打印 PDF

Apache PDFBox 是一个开源的 Java 库,支持 PDF 文档的创建、操作和打印。

确保在项目中添加 PDFBox 依赖:

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.27</version>
</dependency>

打印 PDF 的代码示例:

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

import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import java.awt.print.PrinterJob;
import java.io.File;

public class PDFPrinter {
    public static void printPDF(String filePath) throws Exception {
        PDDocument document = PDDocument.load(new File(filePath));
        PrinterJob job = PrinterJob.getPrinterJob();

        PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
        if (services.length > 0) {
            job.setPrintService(services[0]);
            job.setPageable(new PDFPageable(document));
            job.print();
        }
        document.close();
    }
}

使用 iText 打印 PDF

iText 是另一个流行的 Java PDF 库,支持 PDF 打印功能。

如何java打印pdf

添加 iText 依赖:

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13</version>
</dependency>

打印代码示例:

import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfWriter;

import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import java.awt.print.PrinterJob;

public class PDFPrinter {
    public static void printPDF(String filePath) throws Exception {
        PdfReader reader = new PdfReader(filePath);
        PrinterJob job = PrinterJob.getPrinterJob();

        PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
        if (services.length > 0) {
            job.setPrintService(services[0]);
            Document document = new Document();
            PdfWriter writer = PdfWriter.getInstance(document, job.getPrintService().createPrintJob());
            document.open();
            document.newPage();
            document.close();
            writer.close();
        }
        reader.close();
    }
}

使用 Java 原生打印 API

Java 提供了原生的打印 API,可以直接用于打印 PDF 文件。

如何java打印pdf

代码示例:

import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import java.io.FileInputStream;

public class PDFPrinter {
    public static void printPDF(String filePath) throws Exception {
        FileInputStream fis = new FileInputStream(filePath);
        DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
        Doc doc = new SimpleDoc(fis, flavor, null);

        PrintService[] services = PrintServiceLookup.lookupPrintServices(flavor, null);
        if (services.length > 0) {
            DocPrintJob job = services[0].createPrintJob();
            job.print(doc, new HashPrintRequestAttributeSet());
        }
        fis.close();
    }
}

使用外部工具打印 PDF

可以通过命令行调用外部工具(如 Adobe Reader)打印 PDF。

代码示例:

import java.io.IOException;

public class PDFPrinter {
    public static void printPDF(String filePath) throws IOException {
        String command = "cmd /c start acrord32 /p /h " + filePath;
        Runtime.getRuntime().exec(command);
    }
}

注意事项

  • 确保打印机已正确安装并配置。
  • 检查 PDF 文件路径是否正确。
  • 处理可能出现的异常,如文件未找到或打印服务不可用。
  • 在打印前确认用户权限,避免因权限不足导致打印失败。

标签: javapdf
分享给朋友:

相关文章

java如何输入

java如何输入

使用Scanner类进行输入 Scanner类是Java中最常用的输入工具,适用于从控制台或文件读取数据。需要导入java.util.Scanner包。 基本语法: Scanner sca…

如何学java

如何学java

学习Java的基础知识 Java是一门面向对象的编程语言,掌握基础语法是入门的关键。需要了解变量、数据类型、运算符、控制结构(如if-else、for循环、while循环)、数组等概念。可以通过官方文…

java如何自学

java如何自学

确定学习目标和路径 自学Java需要明确目标,例如开发Web应用、Android应用或后端服务。根据目标选择学习重点,如Java基础、Spring框架或Android开发。制定阶段性计划,从基础语法到…

java如何输入数组

java如何输入数组

输入数组的方法 在Java中,可以通过多种方式输入数组,具体取决于输入源(如控制台、文件等)和数组类型(如基本类型或对象类型)。以下是几种常见的方法: 使用Scanner从控制台输入 对于基本数据类…

如何学好java

如何学好java

理解基础概念 掌握Java的核心概念是学习的基础。包括数据类型、变量、运算符、控制流(如循环和条件语句)、数组等。理解面向对象编程(OOP)的四大特性:封装、继承、多态和抽象。 实践编程练习 通过实…

java如何创建数组

java如何创建数组

创建数组的基本方法 在Java中,数组是固定大小的同类型元素集合。创建数组需要声明数组类型并初始化。 声明数组 语法格式为 数据类型[] 数组名 或 数据类型 数组名[]: int[] arr1;…