─━ IT ━─

Java를 사용하여 PDF 파일을 상하 반전하는 방법

DKel 2024. 11. 5. 09:57
반응형
PDF 파일을 상하 반전(뒤집기)하는 작업은 Java에서 라이브러리를 사용하여 쉽게 구현할 수 있습니다. 이 예제에서는 Apache PDFBox 라이브러리를 사용하여 PDF 페이지를 뒤집는 방법을 단계별로 설명하겠습니다. PDFBox는 Java로 작성된 PDF 문서의 생성 및 조작을 위한 오픈 소스 라이브러리입니다.

 
1. **PDFBox 설치 및 의존성 추가**
 
   먼저, Apache PDFBox 라이브러리를 프로젝트에 추가해야 합니다. Maven 프로젝트에서는 `pom.xml` 파일에 다음 의존성을 추가하여 PDFBox를 사용할 수 있습니다.
 
   ```xml
   <dependency>
       <groupId>org.apache.pdfbox</groupId>
       <artifactId>pdfbox</artifactId>
       <version>2.0.27</version> <!-- PDFBox의 최신 버전을 사용하세요 -->
   </dependency>
   ```
 
2. **PDF 문서 열기 및 페이지 접근**
 
   다음으로 PDF 문서를 열고 각 페이지에 접근하여 상하 반전을 구현하겠습니다.
 
   ```java
   import org.apache.pdfbox.pdmodel.PDDocument;
   import org.apache.pdfbox.pdmodel.PDPage;
   import org.apache.pdfbox.pdmodel.common.PDRectangle;
 
   import java.io.File;
   import java.io.IOException;
 
   public class PDFInvert {
       public static void main(String[] args) {
           File file = new File("example.pdf");
           try (PDDocument document = PDDocument.load(file)) {
               for (PDPage page : document.getPages()) {
                   invertPage(page);
               }
               document.save("inverted_example.pdf");
           } catch (IOException e) {
               e.printStackTrace();
           }
       }
 
       private static void invertPage(PDPage page) {
           PDRectangle mediaBox = page.getMediaBox();
           float pageHeight = mediaBox.getHeight();
 
           // 페이지 상하 반전을 위해 Y축 좌표를 뒤집어줌
           page.setRotation(180);  // PDFBox의 setRotation을 사용하여 회전 가능
 
           float translateY = pageHeight;
 
           // 이전에 매 도형을 변형하려는 경우 필요
           page.setCropBox(new PDRectangle(
                   0,
                   -translateY,
                   mediaBox.getWidth(),
                   mediaBox.getHeight()));
       }
   }
   ```
 
3. **상하 반전을 위한 페이지 변환**
 
   각 페이지의 내용은 좌표를 기반으로 배치됩니다. 이를 위해 페이지의 Y축을 기준으로 반전하여 페이지를 회전하고, 새로운 위치로 변환합니다. `setRotation` 메서드를 사용하면 페이지를 회전할 수 있습니다.
 
   위 코드에서는 `page.setRotation(180)`을 사용하여 페이지를 180도로 회전시켰고, `setCropBox` 메서드를 통해 페이지의 뷰포트 위치를 조정했습니다.
 
4. **결과 저장**
 
   `document.save("inverted_example.pdf")` 코드는 변경된 PDF 문서를 새로운 파일로 저장합니다. 이로써 원본은 그대로 두고 새로운 PDF 파일에만 변경사항이 적용되도록 합니다.
 
이 방법을 통해 Java와 Apache PDFBox를 사용해서 PDF 파일의 페이지를 상하 반전할 수 있습니다. PDF 문서를 조작할 때는 파일 시스템을 변경하지 않도록 주의하세요. 항상 원본 파일은 백업하고 작업하는 것을 권장합니다.

반응형