[java] PDF 파일에 인덱스 추가하기(Java Apache PDFBox 사용)

PDF 파일에 인덱스를 추가하는 것은 문서를 구조화하고 빠르게 내용을 검색할 수 있도록 도와줍니다. 이번 글에서는 Java Apache PDFBox 라이브러리를 사용하여 PDF 파일에 인덱스를 추가하는 방법에 대해 알아보겠습니다.

Apache PDFBox란?

Apache PDFBox는 Java로 작성된 오픈 소스 라이브러리로, PDF 파일을 만들고 수정하는 데 사용됩니다. PDF 파일의 모든 요소를 제어할 수 있으며, 다양한 기능을 제공합니다.

Apache PDFBox 라이브러리 추가하기

Maven을 사용하여 Apache PDFBox를 프로젝트에 추가할 수 있습니다. pom.xml 파일에 다음 의존성을 추가합니다:

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

이제 Apache PDFBox를 사용할 준비가 되었습니다.

PDF 파일 열기

먼저, PDF 파일을 열고 인덱스를 추가할 준비를 해봅시다. 다음 코드를 사용하여 PDDocument 객체를 생성합니다:

import org.apache.pdfbox.pdmodel.PDDocument;

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

위 코드에서 “example.pdf”는 작업할 PDF 파일의 경로입니다. 필요에 따라 해당 경로를 수정해주세요.

인덱스 추가하기

이제 실제로 인덱스를 추가해봅시다. PDDocument 객체에는 PDDocumentCatalog에 접근할 수 있습니다. PDDocumentCatalog은 PDF 파일의 구조에 대한 정보를 저장하는 객체입니다. 다음 코드를 사용하여 PDDocumentCatalog 객체를 가져옵니다:

import org.apache.pdfbox.pdmodel.PDDocumentCatalog;

PDDocumentCatalog catalog = document.getDocumentCatalog();

이제 PDDocumentCatalog 객체에는 PDAcroForm에 접근할 수 있습니다. PDAcroForm은 PDF 파일의 양식 정보를 저장하는 객체입니다. 다음 코드를 사용하여 PDAcroForm 객체를 가져옵니다:

import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;

PDAcroForm acroForm = catalog.getAcroForm();

PDAcroForm 객체에는 PDField를 추가하여 인덱스 항목을 생성할 수 있습니다. 인덱스 항목은 평문 텍스트로 생성되므로, 필요한 텍스트를 생성한 뒤 PDField로 추가해야 합니다. 다음 코드를 사용하여 인덱스 항목을 생성하고 추가합니다:

import org.apache.pdfbox.pdmodel.interactive.form.PDTextField;
import org.apache.pdfbox.pdmodel.common.PDRectangle;

PDTextField indexField = new PDTextField(acroForm);
indexField.setPartialName("Index");
indexField.setValue("Example Index");
indexField.setMultiline(true);

PDRectangle position = new PDRectangle();
position.setLowerLeftX(50); // 인덱스 위치 x 좌표
position.setLowerLeftY(750); // 인덱스 위치 y 좌표
position.setUpperRightX(200); // 인덱스 가로 길이
position.setUpperRightY(800); // 인덱스 세로 길이

indexField.setFieldArea(position);
acroForm.getFields().add(indexField);

위 코드에서 “Example Index”는 인덱스로 표시될 텍스트입니다. 필요에 따라 텍스트를 수정해주세요.

PDF 파일 저장하기

인덱스를 추가한 뒤에는 변경된 PDF 파일을 저장해야 합니다. 다음 코드를 사용하여 변경된 PDDocument 객체를 파일로 저장합니다:

document.save(new File("output.pdf"));
document.close();

위 코드에서 “output.pdf”는 변경된 PDF 파일이 저장될 경로입니다. 필요에 따라 해당 경로를 수정해주세요.

결론

Java Apache PDFBox를 사용하여 PDF 파일에 인덱스를 추가하는 방법에 대해 알아보았습니다. 이렇게 생성된 인덱스를 사용하여 문서의 구조를 파악하고 검색할 때 유용하게 활용할 수 있습니다. Apache PDFBox에는 다양한 기능과 API가 있으며, 본인의 요구에 맞게 사용할 수 있습니다.

더 자세한 정보는 Apache PDFBox 공식 문서를 참조하세요: Apache PDFBox