java.awt.print 包提供了一般打印所需的类和方法,可以用于指定文档类型及管理打印选项,如指定打印机名、设置打印范围、设置双面打印和设置以自定义纸张大小打印等。本文将讲解如何使用 Spire.PDF for Java 类库和 java.awt.print 包来打印 PDF 文档。
安装 Spire.PDF for Java
首先,您需要在 Java 程序中添加 Spire.Pdf.jar 文件作为依赖项。JAR 文件可以从此链接下载。如果您使用 Maven,则可以将以下代码添加到项目的 pom.xml 文件中,从而在应用程序中导入 JAR 文件。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>10.11.2</version>
</dependency>
</dependencies>
使用默认打印机打印 PDF 文档
如果打印时没有指定打印机的名称,程序会使用默认的打印机打印文档。以下是使用 java.awt.print 和 Spire.PDF for Java 在默认打印机上打印 PDF 文档的操作步骤:
- 创建一个 PrinterJob 类的对象。
- 创建一个 PdfDocument 类的对象,并用 PdfDocument.LoadFromFile() 方法载入 PDF文档。
- 用 PrinterJob.setPrintable() 方法以设定的格式渲染文档页面。
- 用 PrinterJob.print() 方法来打印 PDF 页面。
- Java
import com.spire.pdf.PdfDocument;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
public class printWithDefaultPrinter {
public static void main(String[] args) {
//创建一个PrinterJob类的对象
PrinterJob printerJob = PrinterJob.getPrinterJob();
//创建一个PageFormat类的对象,并将页面设置为默认尺寸和方向
PageFormat pageFormat = printerJob.defaultPage();
//创建Paper类的对象并获取纸张设置
Paper paper = pageFormat.getPaper();
//设置纸张的可绘制区域
paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());
//应用纸张设置
pageFormat.setPaper(paper);
//创建一个PdfDocument类的对象
PdfDocument pdf = new PdfDocument();
//载入PDF文档
pdf.loadFromFile("计划书.pdf");
//以设置的格式渲染文档页面
printerJob.setPrintable(pdf, pageFormat);
//执行打印
try {
printerJob.print();
} catch (PrinterException e) {
e.printStackTrace();
}
}
}
用指定打印机打印指定页面范围
如果需要用指定的打印机打印 PDF 文档,可以先找到要使用的打印机,再通过 PrinterJob.setPrintService() 方法来指定使用该打印机打印。以下是使用 java.awt.print 和 Spire.PDF for Java 在指定打印机上打印 PDF 文档的指定页面范围的操作步骤:
- 创建一个 PrinterJob 类的对象。
- 用自定义的 findPrintService() 方法找到要使用的打印机,再使用 PrinterJob.setPrintService() 指定使用该打印机进行打印。
- 创建一个 PdfDocument 类的对象,并用 PdfDocument.LoadFromFile() 方法载入 PDF文档。
- 用 PrinterJob.setPrintable() 方法以设定的格式渲染页面。
- 创建一个 PrintRequestAttributeSet 类的对象并设置要打印的页面范围。
- 用 PrinterJob.print() 方法打印选择的页面。
- Java
import com.spire.pdf.PdfDocument;
import javax.print.PrintService;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.PageRanges;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
public class printWithSpecifiedPrinter {
public static void main(String[] args) throws PrinterException {
//创建一个PrinterJob类的对象
PrinterJob printerJob = PrinterJob.getPrinterJob();
//指定打印机
PrintService myPrintService = findPrintService("\\\\192.168.1.104\\HP LaserJet P1007");
printerJob.setPrintService(myPrintService);
//创建一个PageFormat类的对象,并将页面设置为默认大小和方向
PageFormat pageFormat = printerJob.defaultPage();
//创建一个Paper类的对象并获取纸张设置
Paper paper = pageFormat.getPaper();
//设置纸张的可绘制区域
paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());
//应用纸张设置
pageFormat.setPaper(paper);
//创建一个PdfDocument类的对象
PdfDocument pdf = new PdfDocument();
//载入PDF文档
pdf.loadFromFile("计划书.pdf");
//以指定的格式渲染文档页面
printerJob.setPrintable(pdf, pageFormat);
//创建一个PrintRequestAttributeSet类的对象
PrintRequestAttributeSet attributeSet = new HashPrintRequestAttributeSet();
//设置打印范围
attributeSet.add(new PageRanges(1,7));
//执行打印
try {
printerJob.print(attributeSet);
} catch (PrinterException e) {
e.printStackTrace();
}
}
//查找打印服务
private static PrintService findPrintService(String printerName) {
PrintService[] printServices = PrinterJob.lookupPrintServices();
for (PrintService printService : printServices) {
if (printService.getName().equals(printerName)) {
System.out.print(printService.getName());
return printService;
}
}
return null;
}
}
通过打印对话框打印 PDF 文档
打印 PDF 文档时也可在打印对话框中对打印进行设置。下面是使用 java.awt.print 和 Spire.PDF for Java 通过打印对话框打印 PDF 文档的操作步骤:
- 创建一个 PrinterJob 类的对象。
- 创建一个 PdfDocument 类的对象,并用 PdfDocument.LoadFromFile() 方法载入 PDF 文档。
- 用 PrinterJob.setPrintable() 方法以设定的格式渲染文档页面。
- 用 PrinterJob.printDialog() 方法来显示打印对话框。
- 用 PrinterJob.print() 方法来打印 PDF 页面。
- Java
import com.spire.pdf.PdfDocument;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
public class printWithPrintDialog {
public static void main(String[] args) {
//创建一个PrinterJob类的对象
PrinterJob printerJob = PrinterJob.getPrinterJob();
//创建一个PageFormat类的对象,并将页面设置为默认尺寸和方向
PageFormat pageFormat = printerJob.defaultPage();
//创建Paper类的对象并获取纸张设置
Paper paper = pageFormat.getPaper();
//设置纸张的可绘制区域
paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());
//应用纸张设置
pageFormat.setPaper(paper);
//创建一个PdfDocument类的对象
PdfDocument pdf = new PdfDocument();
//载入PDF文档
pdf.loadFromFile("计划书.pdf");
//以设置的格式渲染文档页面
printerJob.setPrintable(pdf, pageFormat);
//显示打印对话框
if (printerJob.printDialog()) {
try {
printerJob.print();
} catch (PrinterException e) {
e.printStackTrace();
}
}
}
}
以双面打印模式打印 PDF 文档
以下是使用 java.awt.print 和 Spire.PDF for Java 以双面打印的模式打印 PDF 文档的操作步骤:
- 创建一个 PrinterJob 类的对象。
- 创建一个 PdfDocument 类的对象,并用 PdfDocument.LoadFromFile() 方法载入 PDF文档。
- 用 PrinterJob.setPrintable() 方法以设定的格式渲染文档页面。
- 创建一个 PrintRequestAttributeSet 类的对象,并将打印模式设置为双面打印。
- 用 PrinterJob.print() 方法来打印 PDF 页面。
- Java
import com.spire.pdf.PdfDocument;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Sides;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
public class printInDuplexMode {
public static void main(String[] args) {
//创建一个PrinterJob类的对象
PrinterJob printerJob = PrinterJob.getPrinterJob();
//创建一个PageFormat类的对象,并将页面设置为默认尺寸和方向
PageFormat pageFormat = printerJob.defaultPage();
//创建Paper类的对象并获取纸张设置
Paper paper = pageFormat.getPaper();
//设置纸张的可绘制区域
paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());
//应用纸张设置
pageFormat.setPaper(paper);
//创建一个PdfDocument类的对象
PdfDocument pdf = new PdfDocument();
//载入PDF文档
pdf.loadFromFile("计划书.pdf");
//以设定的格式绘制文档页面
printerJob.setPrintable(pdf, pageFormat);
//创建一个PrintRequestAttributed类的对象
PrintRequestAttributeSet attributeSet = new HashPrintRequestAttributeSet();
//将打印模式设置为双面打印
attributeSet.add(Sides.TWO_SIDED_SHORT_EDGE);
//执行打印
try {
printerJob.print(attributeSet);
} catch (PrinterException e) {
e.printStackTrace();
}
}
}
以自定义的纸张大小打印 PDF 文档
Paper 类下的方法可以对打印纸张进行设置,我们可以用 Paper.setSize() 方法自定义纸张大小。以下是使用 java.awt.print 和 Spire.PDF for Java 以自定义纸张尺寸打印 PDF 文档的操作步骤。
- 创建一个 PrinterJob 类的对象。
- 用 Paper 类下的 Paper.setSize() 方法设置纸张的高度和宽度。
- 创建一个 PdfDocument 类的对象,并用 PdfDocument.LoadFromFile() 方法载入 PDF 文档。
- 用 PrinterJob.setPrintable() 方法以设定的格式渲染文档页面。
- 用 PrinterJob.print() 方法来打印 PDF 页面。
- Java
import com.spire.pdf.PdfDocument;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
public class printInCustomPaperSize {
public static void main(String[] args) {
//创建一个PrinterJob类的对象
PrinterJob printerJob = PrinterJob.getPrinterJob();
//创建一个PageFormat类的对象,并将页面设置为默认尺寸和方向
PageFormat pageFormat = printerJob.defaultPage();
//创建Paper类的对象并获取纸张设置
Paper paper = pageFormat.getPaper();
//设置纸张的高度和宽度
paper.setSize(500,600);
//应用纸张设置
pageFormat.setPaper(paper);
//创建一个PdfDocument类的对象
PdfDocument pdf = new PdfDocument();
//载入PDF文档
pdf.loadFromFile("计划书.pdf");
//以设定的格式绘制页面
printerJob.setPrintable(pdf, pageFormat);
//执行打印
try {
printerJob.print();
} catch (PrinterException e) {
e.printStackTrace();
}
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。