当前位置:首页 > 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 打印功能。

添加 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 文件。

代码示例:

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。

代码示例:

如何java打印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如何安装

安装Java的步骤 下载Java开发工具包(JDK) 访问Oracle官方网站或OpenJDK项目页面下载适合操作系统的JDK版本。Oracle JDK适用于商业用途,OpenJDK是开源版本。选择…

java如何读取文件

java如何读取文件

读取文件的常用方法 Java提供了多种读取文件的方式,适用于不同场景和需求。以下是几种常见的方法: 使用FileInputStream和BufferedInputStream读取二进制文件 try…

vue 实现导出pdf

vue 实现导出pdf

实现 Vue 导出 PDF 的方法 使用 html2pdf.js 库 html2pdf.js 是一个基于 jsPDF 和 html2canvas 的库,可以直接将 HTML 元素转换为 PDF。 安…

java如何避免死锁

java如何避免死锁

避免死锁的方法 固定顺序获取锁 确保所有线程按照相同的顺序获取多个锁。例如,若需要获取锁A和锁B,所有线程必须先获取A再获取B,避免交叉依赖导致的死锁。这种方式破坏了“循环等待”条件。 使用锁超时机…

如何选择java培训

如何选择java培训

评估培训机构资质 选择有正规资质的机构,查看其营业执照、办学许可证等。优先考虑具备人力资源和社会保障部或教育部认证的机构,这类机构的教学质量和课程设置通常更规范。 考察课程内容与行业需求匹配度…

java程序如何打包

java程序如何打包

打包Java程序的方法 使用JAR打包 Java程序可以通过JAR(Java Archive)格式打包,这是一种常见的压缩格式,适用于包含多个类文件和资源的项目。以下是使用JAR打包的步骤: 确保项…