[java] PDF 파일에서 텍스트 상자 추가하기(Java Apache PDFBox 사용)

PDF 파일에서 텍스트 상자를 추가하는 작업은 빈번하게 발생하는 작업 중 하나입니다. 이를 위해 Java Apache PDFBox 라이브러리를 사용하여 PDF 파일에 텍스트 상자를 추가하는 방법에 대해 알아보겠습니다.

사전 준비

PDFBox 라이브러리를 사용하기 위해 먼저 의존성을 추가해야 합니다. Maven 기반의 프로젝트라면 pom.xml 파일에 다음 의존성을 추가하세요.

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.24</version>
</dependency>

그리고 PDF 파일을 읽고 쓰기 위해 PDFDocument 객체를 생성해야 합니다. 다음 코드를 사용하여 PDFBox 객체를 생성합니다.

PDDocument document = new PDDocument();

텍스트 상자 추가하기

PDF 파일에 텍스트 상자를 추가하기 위해서는 아래 단계를 따르면 됩니다.

  1. PDPage 객체 생성: 페이지를 생성하고 PDFDocument 객체에 추가합니다.
  2. PDPageContentStream 객체 생성: 페이지에 컨텐츠를 기록하기 위한 스트림을 생성합니다.
  3. 텍스트 상자 생성: PDRectangle 객체를 사용하여 텍스트 상자의 위치와 크기를 지정합니다.
  4. 상자 내부 수정: beginText 메서드를 호출하여 상자 내부의 텍스트를 수정합니다.
  5. 컨텐츠 스트림 종료: endText 메서드를 호출하여 컨텐츠 스트림을 종료합니다.

다음은 예제 코드입니다.

// 페이지 생성
PDPage page = new PDPage();
document.addPage(page);

// 컨텐츠 스트림 생성
PDPageContentStream contentStream = new PDPageContentStream(document, page);

// 텍스트 상자 생성
PDRectangle rect = new PDRectangle();
rect.setLowerLeftX(100);
rect.setLowerLeftY(500);
rect.setUpperRightX(300);
rect.setUpperRightY(550);

// 텍스트 상자 내부 수정
contentStream.beginText();
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.newLineAtOffset(rect.getLowerLeftX(), rect.getLowerLeftY());
contentStream.showText("Hello, World!");
contentStream.endText();

// 컨텐츠 스트림 종료
contentStream.close();

// PDF 파일 저장
document.save("output.pdf");

// PDF 문서 종료
document.close();

위 코드에서 rect 객체는 텍스트 상자의 위치와 크기를 지정하기 위해 사용됩니다. PDType1Font.HELVETICA_BOLD는 사용할 폰트를 지정합니다. 이를 적절히 변경하여 원하는 폰트를 사용할 수 있습니다.

결론

위 예제 코드를 사용하여 Java Apache PDFBox 라이브러리를 사용하여 PDF 파일에 텍스트 상자를 추가하는 방법을 알아보았습니다. 이를 활용하여 PDF 파일을 수정하거나 보완할 수 있습니다. 추가로 필요한 자세한 정보는 Apache PDFBox 문서를 참조하세요.