[java] PDF 파일에서 텍스트 정렬 변경하기(Java Apache PDFBox 사용)

PDF 파일을 다루는 프로젝트에서 종종 텍스트 정렬을 변경해야 할 때가 있습니다. 이번 포스트에서는 Java Apache PDFBox 라이브러리를 사용하여 PDF 파일에서 텍스트 정렬을 변경하는 방법에 대해 알아보겠습니다.

1. Apache PDFBox 라이브러리 추가하기

PDF 파일을 다루기 위해 Apache PDFBox 라이브러리를 사용해야 합니다. 프로젝트의 빌드 패스에 다음 의존성을 추가해주세요.

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

의존성을 추가한 후에는 해당 라이브러리를 사용할 수 있게 됩니다.

2. PDF 파일에서 텍스트 정렬 변경하기

PDF 파일에서 텍스트 정렬을 변경하려면 다음과 같은 단계를 따르면 됩니다.

2.1. PDF 파일 로드하기

PDF 파일을 로드하기 위해 PDDocument 클래스를 사용해야 합니다. 다음 예제에서는 filename.pdf 파일을 로드합니다.

File file = new File("filename.pdf");
PDDocument document = PDDocument.load(file);

2.2. 페이지 가져오기

페이지를 가져오기 위해 PDPage 클래스를 사용해야 합니다. 기본적으로 첫 번째 페이지를 가져옵니다.

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

2.3. 페이지의 텍스트 정렬 변경하기

페이지의 텍스트 정렬을 변경하려면 PDPageContentStream 클래스를 사용해야 합니다. 다음 예제에서는 페이지의 텍스트를 중앙 정렬로 변경합니다.

PDPageContentStream contentStream = new PDPageContentStream(document, page, AppendMode.APPEND, true);
contentStream.setTextMatrix(Matrix.getTranslateInstance(0, page.getMediaBox().getHeight() / 2)); // 페이지의 가운데로 텍스트 이동
contentStream.showTextAligned("새로운 텍스트", page.getMediaBox().getWidth() / 2, 0, TextAlignment.CENTERED); // 텍스트 중앙 정렬
contentStream.close();

2.4. 변경된 내용을 저장하기

텍스트 정렬을 변경한 후에는 변경된 내용을 저장해야 합니다. 다음 예제에서는 변경된 내용을 output.pdf 파일에 저장합니다.

document.save("output.pdf");

3. 전체 예제 코드

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDMatrix;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.util.Matrix;
import org.apache.pdfbox.util.TextAlignment;
import java.io.File;
import java.io.IOException;

public class PdfTextAlignmentExample {
    public static void main(String[] args) {
        try {
            // PDF 파일 로드
            File file = new File("filename.pdf");
            PDDocument document = PDDocument.load(file);

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

            // 페이지의 텍스트 정렬 변경
            PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true);
            contentStream.setTextMatrix(Matrix.getTranslateInstance(0, page.getMediaBox().getHeight() / 2));
            contentStream.showTextAligned("새로운 텍스트", page.getMediaBox().getWidth() / 2, 0, TextAlignment.CENTERED);
            contentStream.close();

            // 변경된 내용을 저장
            document.save("output.pdf");

            // 리소스 정리
            document.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 코드를 실행하면 원하는 텍스트 정렬이 적용된 PDF 파일이 생성됩니다.

Apache PDFBox 라이브러리의 다른 기능을 활용하여 더 복잡한 작업을 수행할 수도 있습니다. 자세한 내용은 Apache PDFBox 공식 웹사이트를 참조해주세요.