[java] PDF 파일 텍스트 교정(수정)하기(Java Apache PDFBox 사용)

PDF 파일은 주로 문서의 형식과 레이아웃을 고정시켜 텍스트 수정이 어려운 경우가 있습니다. 하지만 Java Apache PDFBox 라이브러리를 사용하면 PDF 파일의 텍스트를 교정하거나 수정할 수 있습니다. 이번 블로그 포스트에서는 Java Apache PDFBox를 사용하여 PDF 파일의 텍스트를 교정하는 방법에 대해 알아보겠습니다.

PDFBox 라이브러리 추가

PDF 파일을 교정하기 위해서는 먼저 Apache PDFBox 라이브러리를 프로젝트에 추가해야 합니다. Maven 프로젝트의 경우 pom.xml 파일에 다음과 같은 의존성을 추가합니다.

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

Gradle 프로젝트의 경우 build.gradle 파일에 다음과 같은 의존성을 추가합니다.

dependencies {
    implementation 'org.apache.pdfbox:pdfbox:2.0.24'
}

PDF 파일 열기

PDF 파일을 열기 위해서는 PDDocument 클래스를 사용합니다. 다음은 PDF 파일을 열고 PDDocument 객체를 생성하는 코드 예시입니다.

import org.apache.pdfbox.pdmodel.PDDocument;

public class PDFEditor {

    public static void main(String[] args) {
        try {
            // PDF 파일 경로
            String filePath = "example.pdf";

            // PDF 파일 열기
            PDDocument document = PDDocument.load(new File(filePath));

            // TODO: PDF 파일 텍스트 교정 작업 수행

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

            // PDDocument 객체 닫기
            document.close();

            System.out.println("PDF 파일 텍스트 교정이 완료되었습니다.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

텍스트 교정(수정)

PDF 파일의 텍스트를 교정하기 위해서는 다음과 같은 단계를 따르면 됩니다.

  1. PDPage 객체 가져오기: PDDocument 객체에서 getPages() 메서드를 호출하여 PDPage 객체의 리스트를 가져옵니다.
  2. PDStream 객체 가져오기: PDPage 객체에서 getContentStream() 메서드를 호출하여 PDStream 객체를 가져옵니다.
  3. 텍스트 교정(수정): PDStream 객체를 통해 텍스트를 교정(수정)합니다.
  4. PDPage 업데이트: PDStream 객체를 업데이트한 후에는 PDPage를 업데이트해야 합니다. PDPagesetContents() 메서드를 호출하여 업데이트한 PDStream 객체를 적용합니다.

다음은 PDF 파일에서 특정 텍스트를 교정하는 코드 예시입니다.

import org.apache.pdfbox.cos.COSString;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;

public class PDFEditor {

    public static void main(String[] args) {
        try {
            // PDF 파일 경로
            String filePath = "example.pdf";

            // PDF 파일 열기
            PDDocument document = PDDocument.load(new File(filePath));

            // 첫 번째 페이지 가져오기
            PDPage page = document.getPage(0);

            // 페이지의 컨텐츠 스트림 가져오기
            PDPageContentStream contentStream = new PDPageContentStream(document, page);

            // 텍스트 교정(수정)
            String targetText = "Hello, World!";
            String correctedText = "Hello, PDF World!";
            contentStream.beginText();
            contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
            contentStream.newLineAtOffset(100, 100);
            contentStream.showText(correctedText);
            contentStream.endText();

            // 페이지 업데이트
            contentStream.close();

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

            // PDDocument 객체 닫기
            document.close();

            System.out.println("PDF 파일 텍스트 교정이 완료되었습니다.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

결론

Java Apache PDFBox를 사용하면 PDF 파일의 텍스트를 교정하거나 수정할 수 있습니다. 이를 통해 텍스트의 수정이 필요한 PDF 파일을 간편하게 처리할 수 있습니다. 다양한 PDF 처리 작업에 필요한 추가 기능도 Apache PDFBox에서 제공하므로 참고하여 활용할 수 있습니다.

참고 자료