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>11.10.3</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 天的临时许可证。
 



 
					



