如何java打印pdf
使用 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。
代码示例:
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 文件路径是否正确。
- 处理可能出现的异常,如文件未找到或打印服务不可用。
- 在打印前确认用户权限,避免因权限不足导致打印失败。






