[java] PDF 파일에 태그 추가하기(Java Apache PDFBox 사용)

PDF 파일은 주로 문서 형식으로 사용되는데, 때로는 특정 부분을 태그로 표시하여 더 나은 접근성과 검색성을 제공해야 할 때가 있습니다. 이를 위해 Java Apache PDFBox 라이브러리를 사용하여 PDF 파일에 태그를 추가하는 방법을 알아보겠습니다.

1. Maven 프로젝트 구성

먼저, Maven 프로젝트를 구성합니다. Maven을 사용하여 PDFBox 라이브러리를 의존성으로 추가합니다.

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

2. PDF 파일 로드하기

PDF 파일을 로드하여 작업하기 위해 PDDocument 클래스를 사용합니다.

import org.apache.pdfbox.pdmodel.PDDocument;

PDDocument document = PDDocument.load(new File("path/to/pdf/file.pdf"));

3. 페이지에 태그 추가하기

PDF 파일의 페이지에 태그를 추가하기 위해 PDPage 클래스를 사용합니다. 예를 들어, 첫 번째 페이지에 태그를 추가하는 방법은 다음과 같습니다.

import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.documentinterchange.markedcontent.PDMarkedContent;
import org.apache.pdfbox.pdmodel.documentinterchange.logicalstructure.PDMarkedContentReference;
import org.apache.pdfbox.pdmodel.graphics.form.PDTransparencyGroup;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationLink;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDBorderStyleDictionary;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDColor;
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDDocumentOutline;
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem;

PDPage page = document.getPage(0);
PDDocumentOutline outline = new PDDocumentOutline();
PDOutlineItem outlineItem = new PDOutlineItem();
outlineItem.setTitle("Test Tag");
PDRectangle rect = new PDRectangle();
rect.setLowerLeftX(100);
rect.setLowerLeftY(100);
rect.setUpperRightX(200);
rect.setUpperRightY(200);
PDAnnotationLink link = new PDAnnotationLink();
link.setBorderStyle(new PDBorderStyleDictionary());
link.setRect(rect);
PDColor cyan = new PDColor(new float[] { 0, 1, 1 }, PDDeviceCMYK.INSTANCE);
link.setHighlightingMode(PDAnnotation.HIGHLIGHT_MODE_INVERT);
link.setColor(cyan);
PDMarkedContent markedContent = PDContentStream.createMarkedContent(COSName.TR);
markedContent.addContent(link);
PDMarkedContentReference linkRef = new PDMarkedContentReference(document);
linkRef.setMarkedContentSequence(markedContent);
outlineItem.setDestination(linkRef);
outline.addLast(outlineItem);
document.getDocumentCatalog().setDocumentOutline(outline);

4. 수정된 파일 저장하기

태그를 추가한 후에는 수정된 PDF 파일을 저장해야 합니다.

document.save(new File("path/to/modified/file.pdf"));

5. 리소스 해제하기

작업이 완료되었으면 PDDocument 객체를 닫아 리소스를 해제합니다.

document.close();

결론

Java Apache PDFBox를 사용하여 PDF 파일에 태그를 추가하는 방법을 알아보았습니다. 이를 통해 PDF 파일의 특정 부분을 태그로 표시하여 접근성과 검색성을 높일 수 있습니다. PDF 파일을 다루는 작업에서 태그 추가 기능을 활용해보세요!


참고 문서: