자바 인쇄 PDF 파일

26950 단어 javaprintpdfjar
PDF 문서 인쇄는 일상 생활에서 가장 일반적인 작업 중 하나입니다. Java 언어를 사용하여 다양한 시나리오에 대해 프로그래밍 방식으로 PDF 파일을 쉽게 인쇄할 수 있습니다. Spire.PDF에는 프린터 이름 지정, 인쇄 범위 설정, 양면 인쇄 및 사용자 정의 용지 크기 인쇄와 같은 PDF 문서를 인쇄하는 강력한 기능이 있습니다. 이 기사에서는 다음 네 부분에서 PDF 문서를 인쇄하는 방법을 배웁니다.
  • Print PDF with a Print Dialog
  • Print PDF in a Custom Paper Size
  • Print PDF in Duplex Mode
  • Print Page Ranges with a Specified Printer

  • Java용 Spire.PDF 설치



    먼저 Spire.Pdf.jar 파일을 Java 프로그램의 종속성으로 추가해야 합니다. JAR 파일은 this link에서 다운로드할 수 있습니다. 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>5.5.0</version>
        </dependency>
    </dependencies>
    


    인쇄 대화 상자로 PDF 인쇄



    Java용 Spire.PDF는 java.awt.print 패키지를 사용하여 프로그래밍 방식으로 PDF 파일을 인쇄합니다. 기본 인쇄 여백 제거, 매수 설정 등과 같은 일부 인쇄 설정을 사용자 지정할 수도 있습니다.
  • PdfDocument 객체를 만들고 PdfDocument.LoadFromFile() 메서드를 사용하여 PDF 문서를 로드합니다.
  • PrinterJob 클래스의 인스턴스를 만들고 이 클래스의 메서드를 호출하여 인쇄 작업을 설정합니다.
  • PrinterJob.setPrintable() 메서드를 사용하여 지정된 형식으로 문서의 각 페이지를 렌더링합니다.
  • PrinterJob.setCopies(int)를 호출하여 인쇄 매수를 설정합니다.
  • PrinterJob.print() 메서드를 호출하여 인쇄 대화 상자와 함께 PDF 페이지를 인쇄합니다.

  • import com.spire.pdf.*;
    
    import java.awt.print.*;
    
           public class PrintPDF {
               public static void main(String[] args) throws Exception {
                   //Create a PdfDocument object
                   PdfDocument pdf = new PdfDocument();
                   //Load a PDF file
                   pdf.loadFromFile("Sample.pdf");
    
                   //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);
    
                   //Set the copies
                   printerJob.setCopies(3);
    
                   //Call painter to render the pages in the specified format
                   printerJob.setPrintable(pdf,pageFormat);
    
                   //Display the print dialog
                   if (printerJob.printDialog()) {
                       try {
                           printerJob.print();
                       } catch (PrinterException e) {
                           e.printStackTrace();
                       }
                   }
               }
           }
    


    사용자 정의 용지 크기로 PDF 인쇄



    다음은 사용자 정의 페이지 크기로 PDF 문서를 인쇄하는 단계입니다.
  • 샘플 PDF 파일을 로드합니다.
  • PrinterJob 클래스의 인스턴스를 만들고 이 클래스의 메서드를 호출하여 인쇄 작업을 설정합니다.
  • PrinterJob.setPrintable() 메서드를 사용하여 지정된 형식으로 문서의 각 페이지를 렌더링합니다.
  • Paper.setSize() 메서드를 사용하여 Paper 객체의 with 및 height를 설정합니다.
  • PrinterJob.print() 메서드를 호출하여 인쇄 대화 상자 없이 PDF 페이지를 인쇄합니다.

  • import com.spire.pdf.*;
    import java.awt.print.*;
    
           public class PrintPDF{
               public static void main(String[] args) throws Exception {
    
                   //Create a PdfDocument object
                   PdfDocument pdf = new PdfDocument();
                   //Load a PDF file
                   pdf.loadFromFile("Sample.pdf");
    
                   //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 width and height of this Paper object
                   paper.setSize(500,600);
    
                   //Print the document without the print dialog
                       try {
                           printerJob.print();
                       } catch (PrinterException e) {
                           e.printStackTrace();
                       }
                   }
               }
    
    


    양면 모드에서 PDF 인쇄



    다음은 양면 모드에서 PDF 문서를 인쇄하는 단계입니다.
  • 샘플 PDF 파일을 로드합니다.
  • PrinterJob 클래스의 인스턴스를 만들고 이 클래스의 메서드를 호출하여 인쇄 작업을 설정합니다.
  • PrinterJob.setPrintable() 메서드를 사용하여 지정된 형식으로 문서의 각 페이지를 렌더링합니다.
  • PrintRequestAttributeSet 객체를 만들고 PDF를 양면 인쇄하도록 설정된 속성에 add(Sides.TWO_SIDED_SHORT_EDGE) 메서드를 사용합니다.
  • PrinterJob.print() 메서드를 호출하여 인쇄 대화 상자 없이 PDF 페이지를 인쇄합니다.

  • import com.spire.pdf.*;
    
    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 duplexPrint {
               public static void main(String[] args) throws Exception {
                   //Create a PdfDocument object
                   PdfDocument pdf = new PdfDocument();
                   //Load a PDF file
                   pdf.loadFromFile("Sample.pdf");
    
                   //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();
    
                   //Remove the default printing margins
                   paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());
                   pageFormat.setPaper(paper);
                   printerJob.setPrintable(pdf, pageFormat);
    
                   //Duplex print
                   PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
                   //Two sides short edge
                   aset.add(Sides.TWO_SIDED_SHORT_EDGE);
    
                   try {
                       printerJob.print(aset);
                   } catch (PrinterException e) {
                       e.printStackTrace();
                   }
               }
    
           }
    


    지정된 프린터로 페이지 범위 인쇄



    다음은 지정된 프린터로 PDF 문서를 인쇄하고 인쇄할 PDF 페이지 범위를 선택하는 단계입니다.
  • 샘플 PDF 파일을 로드합니다.
  • PrinterJob 클래스의 인스턴스를 만들고 이 클래스의 메서드를 호출하여 인쇄 작업을 설정합니다.
  • PrinterJob.setPrintable() 메서드를 사용하여 지정된 형식으로 문서의 각 페이지를 렌더링합니다.
  • 사용자 정의 메서드 findPrintService()를 사용하여 사용 가능한 인쇄 서비스를 찾고 PrinterJob.setPrintService() 메서드를 사용하여 프린터 이름을 지정합니다.
  • PrintRequestAttributeSet 객체를 만들고 속성 세트에 인쇄 범위를 추가합니다.
  • PrinterJob.print() 메서드를 호출하여 인쇄 대화 상자 없이 PDF 페이지를 인쇄합니다.

  • import com.spire.pdf.*;
    
    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 setPrinter {
               public static void main(String[] args) throws Exception {
                   //Create a PdfDocument object
                   PdfDocument pdf = new PdfDocument();
                   //Load a PDF file
                   pdf.loadFromFile("Test.pdf");
    
                   //Create a PrinterJob object which is initially associated with the default printer
                   PrinterJob printerJob = PrinterJob.getPrinterJob();
    
                   //Specify printer name
                   PrintService myPrintService = findPrintService("HP ColorLaserJet MFP M278-M281 PCL-6");
                   printerJob.setPrintService(myPrintService);
    
                   //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();
    
                   //Remove the default printing margins
                   paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());
                   pageFormat.setPaper(paper);
                   printerJob.setPrintable(pdf, pageFormat);
    
                   //Set print range
                   PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
                   aset.add(new PageRanges(1,2));
    
                   try {
                       printerJob.print(aset);
                   } 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;
               }
           }
    


    결론



    이 기사에서는 Spire.PDF for Java의 도움으로 PDF 파일을 인쇄하는 방법을 배웠습니다. 기타 문의 사항이 있으시면 언제든지 Free PDF forums 을 확인하시기 바랍니다.

    좋은 웹페이지 즐겨찾기