[java] Apache PDFBox를 사용한 PDF 파일 제목 및 소제목 추가

Apache PDFBox는 Java로 작성된 오픈 소스 라이브러리로, PDF 파일을 생성 및 조작하는 데 사용됩니다. 이 라이브러리를 사용하여 PDF 파일에 제목과 소제목을 추가하는 방법에 대해 알아보겠습니다.

PDF 파일에 제목 추가

PDF 파일에 제목을 추가하기 위해서는 PDDocument 클래스로부터 생성된 PDDocumentInformation 객체에서 setTitle() 메서드를 사용하면 됩니다. 아래는 이를 구현한 예제 코드입니다.

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
import org.apache.pdfbox.pdmodel.common.PDRectangle;

import java.io.File;
import java.io.IOException;

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

            // PDF 파일 정보 객체 가져오기
            PDDocumentInformation documentInfo = document.getDocumentInformation();

            // 제목 설정
            documentInfo.setTitle("샘플 PDF 파일");

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

            // 메모리 해제
            document.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 예제 코드에서 “input.pdf”로 지정된 입력 파일에 제목을 추가하고 “output.pdf”로 지정된 출력 파일에 결과를 저장합니다. PDDocument.load() 메서드를 사용하여 PDF 파일을 로드하고, getDocumentInformation() 메서드를 사용하여 정보 객체를 가져옵니다. 그런 다음 setTitle() 메서드를 사용하여 제목을 설정하고, save() 메서드를 사용하여 수정된 PDF 파일을 저장합니다.

PDF 파일에 소제목 추가

PDF 파일에 소제목을 추가하기 위해서는 PDDocument 클래스로부터 생성된 PDOutlineItem 객체를 사용해야 합니다. 아래는 이를 구현한 예제 코드입니다.

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDDocumentOutline;
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem;
import org.apache.pdfbox.pdmodel.PDPage;

import java.io.File;
import java.io.IOException;

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

            // 새로운 소제목 생성
            PDOutlineItem subtitle = new PDOutlineItem();
            subtitle.setTitle("첫 번째 소제목");

            // 현재 페이지 가져오기
            PDPage currentPage = document.getPage(0);

            // 페이지 소제목 추가
            PDDocumentOutline outline = new PDDocumentOutline();
            outline.appendChild(subtitle);
            document.getDocumentCatalog().setDocumentOutline(outline);
            currentPage.getAnnotations().add(subtitle.createAnnotation());

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

            // 메모리 해제
            document.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 예제 코드에서는 “input.pdf”로 지정된 입력 파일을 로드하고, PDOutlineItem 클래스를 사용하여 subtitle 객체를 만듭니다. setTitle() 메서드를 사용하여 소제목을 설정합니다. getPage() 메서드를 사용하여 현재 페이지를 가져온 다음, PDDocumentOutline 객체를 생성하여 소제목을 추가합니다. 마지막으로 수정된 PDF 파일을 저장하고, close() 메서드를 사용하여 메모리를 해제합니다.

위의 예제 코드에서는 단일 소제목을 추가하는 방법을 보여주었지만, 여러 소제목을 추가하기 위해서는 위의 과정을 반복하면 됩니다.

Apache PDFBox를 사용하면 Java에서 PDF 파일을 조작하는 데 유용한 기능을 제공합니다. 제목과 소제목을 추가하여 PDF 파일을 더욱 구조적으로 만들 수 있습니다. 자세한 정보는 Apache PDFBox 공식 문서를 참조하십시오.