如何在Java中打印PDF文件?
#java #免费的 #pdf #print

打印PDF文档是我们日常生活中的关键功能。您可以对PDF文件进行切实的重复,该文件可以通过打印文档来离线读取和使用。这对于需要手动填写或签名的文书工作特别有用,例如合同,报告和表格。

您可以在spire.pdf的帮助下轻松地在Java应用程序中以编程方式打印PDF文件。
Java的Spire.pdf是PDF API,它使Java应用程序无需使用Adobe Acrobat即可读取,写作,保存和打印PDF文档。使用此Java PDF组件,开发人员和程序员可以实现富裕功能以从头开始或处理现有PDF文件创建PDF文件。让我们向您展示如何从以下方面打印PDF文件:

为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还允许您指定页面大小和要打印的副本数量。

相关话题:

  1. Java Convert HTML to PDF
  2. Java Extract Text from a PDF Document
  3. Java: Insert Text Watermarks to PDF
  4. Java: Rotate Pages in PDF
  5. Java: Add, Edit, or Delete Bookmarks in PDF