PDFBox-이미지 삽입

이전 장에서 기존 PDF 문서에서 텍스트를 추출하는 방법을 살펴 보았습니다. 이 장에서는 PDF 문서에 이미지를 삽입하는 방법에 대해 설명합니다.

PDF 문서에 이미지 삽입

PDF 문서에 이미지를 삽입 할 수 있습니다. createFromFile()drawImage() 수업 방법 PDImageXObjectPDPageContentStream 각기.

다음은 기존 PDF 문서에서 텍스트를 추출하는 단계입니다.

1 단계 : 기존 PDF 문서로드

정적 방법을 사용하여 기존 PDF 문서로드 load()PDDocument수업. 이 메서드는 파일 개체를 매개 변수로 받아들입니다. 이것은 정적 메서드이므로 아래와 같이 클래스 이름을 사용하여 호출 할 수 있습니다.

File file = new File("path of the document")
PDDocument doc = PDDocument.load(file);

2 단계 : 페이지 검색

PDF 문서에서 페이지를 선택하고 getPage() 방법은 아래와 같습니다.

PDPage page = doc.getPage(0);

3 단계 : PDImageXObject 개체 만들기

클래스 PDImageXObjectPDFBox 라이브러리에서 이미지를 나타냅니다. 이미지 삽입, 높이 설정, 너비 설정 등 이미지와 관련된 작업을 수행하는 데 필요한 모든 방법을 제공합니다.

메서드를 사용하여이 클래스의 객체를 만들 수 있습니다. createFromFile(). 이 메서드에는 문자열 형태로 추가하려는 이미지의 경로와 이미지를 추가해야하는 문서 객체를 전달해야합니다.

PDImageXObject pdImage = PDImageXObject.createFromFile("C:/logo.png", doc);

4 단계 : 콘텐츠 스트림 준비

다음과 같은 클래스의 객체를 사용하여 다양한 종류의 데이터 요소를 삽입 할 수 있습니다. PDPageContentStream. 문서 객체와 페이지 객체를이 클래스의 생성자에 전달해야합니다. 따라서 아래와 같이 이전 단계에서 만든이 두 객체를 전달하여이 클래스를 인스턴스화합니다.

PDPageContentStream contentStream = new PDPageContentStream(doc, page);

5 단계 : PDF 문서에 이미지 그리기

PDF 문서에 이미지를 삽입 할 수 있습니다. drawImage()방법. 이 방법에는 위의 단계에서 생성 된 이미지 객체와 아래와 같이 이미지의 필요한 크기 (너비 및 높이)를 추가해야합니다.

contentstream.drawImage(pdImage, 70, 250);

6 단계 : PDPageContentStream 닫기

닫기 PDPageContentStream 개체를 사용하여 close() 방법은 아래와 같습니다.

contentstream.close();

7 단계 : 문서 저장

필요한 내용을 추가 한 후 다음을 사용하여 PDF 문서를 저장하십시오. save() 의 방법 PDDocument 다음 코드 블록에 표시된 클래스.

doc.save("Path");

8 단계 : 문서 닫기

마지막으로 close() 의 방법 PDDocument 아래와 같이 클래스.

doc.close();

다음과 같은 PDF 문서가 있다고 가정합니다. sample.pdf, 경로 C:/PdfBox_Examples/ 아래와 같이 빈 페이지가 있습니다.

이 예제는 위에서 언급 한 PDF 문서의 빈 페이지에 이미지를 추가하는 방법을 보여줍니다. 여기에서 이름이 지정된 PDF 문서를로드합니다.sample.pdf이미지를 추가합니다. 이 코드를 이름이있는 파일에 저장InsertingImage.java.

import java.io.File;
  
import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;

public class InsertingImage {

   public static void main(String args[]) throws Exception {
      //Loading an existing document
      File file = new File("C:/PdfBox_Examples/sample.pdf");
      PDDocument doc = PDDocument.load(file);
        
      //Retrieving the page
      PDPage page = doc.getPage(0);
       
      //Creating PDImageXObject object
      PDImageXObject pdImage = PDImageXObject.createFromFile("C:/PdfBox_Examples/logo.png",doc);
       
      //creating the PDPageContentStream object
      PDPageContentStream contents = new PDPageContentStream(doc, page);

      //Drawing the image in the PDF document
      contents.drawImage(pdImage, 70, 250);

      System.out.println("Image inserted");
      
      //Closing the PDPageContentStream object
      contents.close();		
		
      //Saving the document
      doc.save("C:/PdfBox_Examples/sample.pdf");
            
      //Closing the document
      doc.close();
     
   }
}

다음 명령을 사용하여 명령 프롬프트에서 저장된 Java 파일을 컴파일하고 실행합니다.

javac InsertingImage.java 
java InsertingImage

실행시 위 프로그램은 주어진 PDF 문서의 지정된 페이지에 이미지를 삽입하여 다음 메시지를 표시합니다.

Image inserted

문서를 확인하는 경우 sample.pdf, 아래 그림과 같이 이미지가 삽입 된 것을 볼 수 있습니다.