打印PDF文档是我们日常生活中的关键功能。您可以对PDF文件进行切实的重复,该文件可以通过打印文档来离线读取和使用。这对于需要手动填写或签名的文书工作特别有用,例如合同,报告和表格。
您可以在spire.pdf的帮助下轻松地在Java应用程序中以编程方式打印PDF文件。
Java的Spire.pdf是PDF API,它使Java应用程序无需使用Adobe Acrobat即可读取,写作,保存和打印PDF文档。使用此Java PDF组件,开发人员和程序员可以实现富裕功能以从头开始或处理现有PDF文件创建PDF文件。让我们向您展示如何从以下方面打印PDF文件:
- Print PDF with the Default Printer Without a Print Dialog
- Print Specific Pages or Range of Pages in Java
- Print PDF in Duplex Mode
为Java安装Spire.pdf
首先,您需要将spire.pdf.jar文件添加为Java程序中的依赖项。可以从此链接下载JAR文件。如果使用Maven,则可以通过将以下代码添加到项目的pom.xml文件中轻松地导入JAR文件。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>9.6.2</version>
</dependency>
</dependencies>
用默认打印机默默打印PDF
PDF文件的打印可以在您的Java应用程序中自动化。 java的spire.pdf使用 java.awt.print 用默认打印机静静地打印PDF文件。
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) {
//Create a PrinterJob object which is initially associated with the default printer
PrinterJob printerJob = PrinterJob.getPrinterJob();
// Create a PageFormat object and set it to a default size and orientation
PageFormat pageFormat = printerJob.defaultPage();
//Return a copy of the Paper object associated with this PageFormat
Paper paper = pageFormat.getPaper();
//Set the imageable area of this Paper
paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());
//Set the Paper object for this PageFormat
pageFormat.setPaper(paper);
//Create a PdfDocument object
PdfDocument pdf = new PdfDocument();
//Load a PDF file
pdf.loadFromFile("C:\\Users\\Administrator\\Desktop\\sample.pdf");
//Call painter to render the pages in the specified format
printerJob.setPrintable(pdf, pageFormat);
//Execute printing
try {
printerJob.print();
} catch (PrinterException e) {
e.printStackTrace();
}
}
}
打印页面范围有指定的打印机
您只能通过打印页面范围来打印文档的特定页面,而不是整个文件。以下是用指定打印机打印页面范围的步骤。
- 创建一个Printerjob类的实例,并在此类中调用方法来设置作业。
- 使用自定义方法FindPrintService()查找可用的打印服务,并使用Printerjob.setPrintService()方法指定打印机名称。
- 创建一个pdfdocument对象,并使用pdfdocument.loadfromfile()方法加载PDF文档。
- 使用Printerjob.setPrintable()方法。
- 创建一个printrequestattributeset对象,然后将打印范围添加到属性集。
- 调用Printerjob.print()方法打印所选页面。
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 {
//Create a PrinterJob object which is initially associated with the default printer
PrinterJob printerJob = PrinterJob.getPrinterJob();
//Specify printer name
PrintService myPrintService = findPrintService("\\\\192.168.1.104\\HP LaserJet P1007");
printerJob.setPrintService(myPrintService);
//Create a PageFormat instance and set it to a default size and orientation
PageFormat pageFormat = printerJob.defaultPage();
//Return a copy of the Paper object associated with this PageFormat.
Paper paper = pageFormat.getPaper();
//Set the imageable area of this Paper.
paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());
//Set the Paper object for this PageFormat.
pageFormat.setPaper(paper);
//Create a PdfDocument object
PdfDocument pdf = new PdfDocument();
//Load a PDF file
pdf.loadFromFile("C:\\Users\\Administrator\\Desktop\\sample.pdf");
//Call painter to render the pages in the specified format
printerJob.setPrintable(pdf, pageFormat);
//Create a PrintRequestAttributeSet object
PrintRequestAttributeSet attributeSet = new HashPrintRequestAttributeSet();
//Set print range
attributeSet.add(new PageRanges(1,7));
//Execute printing
try {
printerJob.print(attributeSet);
} catch (PrinterException e) {
e.printStackTrace();
}
}
//Find print service
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文件。通过节省纸张,它可以最大程度地减少打印成本。这是使用spire.pdf以双工模式打印PDF的过程。
- 创建一个Printerjob类的实例,并在此类中调用方法来设置作业。
- 创建一个pdfdocument对象,并使用pdfdocument.loadfromfile()方法加载PDF文档。
- 使用Printerjob.setPrintable()方法。
- 创建一个printrequestattributeset对象,然后将双面打印模式添加到属性集。
- 调用Printerjob.print()方法打印PDF页面。
- spire.pdf for 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) {
//Create a PrinterJob object which is initially associated with the default printer
PrinterJob printerJob = PrinterJob.getPrinterJob();
//Create a PageFormat object and set it to a default size and orientation
PageFormat pageFormat = printerJob.defaultPage();
//Return a copy of the Paper object associated with this PageFormat
Paper paper = pageFormat.getPaper();
//Set the imageable area of this Paper
paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());
//Set the Paper object for this PageFormat
pageFormat.setPaper(paper);
//Create a PdfDocument object
PdfDocument pdf = new PdfDocument();
//Load a PDF file
pdf.loadFromFile("C:\\Users\\Administrator\\Desktop\\sample.pdf");
//Call painter to render the pages in the specified format
printerJob.setPrintable(pdf, pageFormat);
//Create a PrintRequestAttributed object
PrintRequestAttributeSet attributeSet = new HashPrintRequestAttributeSet();
//Set to duplex printing mode
attributeSet.add(Sides.TWO_SIDED_SHORT_EDGE);
//Execute printing
try {
printerJob.print(attributeSet);
} catch (PrinterException e) {
e.printStackTrace();
}
}
}
结论
总而言之,使用java使用spire.pdf打印PDF文件很容易。打印PDF文件时,Spire.pdf Java还允许您指定页面大小和要打印的副本数量。