GroupDocs.Merger for Java를 사용한 DOCX 페이지 분할

이 튜토리얼에서는 GroupDocs.Merger for Java를 사용하여 DOCX 페이지를 효율적으로 분할하는 방법을 알아봅니다. 대규모 계약서를 개별 페이지로 나누거나 특정 섹션을 메모리 내 스트림으로 추출해야 할 경우, 설정, 코드 및 실제 팁을 단계별로 안내하여 몇 분 안에 솔루션을 구현할 수 있도록 도와드립니다.

빠른 답변

  • Java에서 DOCX 분할을 처리하는 라이브러리는 무엇인가요? GroupDocs.Merger for Java.
  • DOCX를 개별 파일로 분할할 수 있나요? 예 – 원하는 페이지 번호로 SplitOptions를 구성합니다.
  • 파일 대신 스트림으로 페이지를 가져올 수 있나요? 물론입니다. 사용자 정의 SplitStreamFactory를 제공하면 됩니다.
  • 라이선스가 필요합니까? 평가용으로 임시 체험 라이선스를 사용할 수 있으며, 프로덕션에서는 정식 라이선스가 필요합니다.
  • 지원되는 Java 버전은 무엇인가요? 최신 GroupDocs.Merger 릴리스는 JDK 8 이상에서 모두 작동합니다.

DOCX 페이지 분할이란 무엇인가요?

Split docx pages는 다중 페이지 Word 문서에서 하나 이상의 페이지를 추출하여 각 선택을 별도의 파일 또는 메모리 내 스트림으로 저장하는 것을 의미합니다. 이를 통해 모듈식 제공, 규정 준수 기반 워크플로우, 또는 전체 문서를 한 번에 처리하지 않고 실시간으로 처리할 수 있습니다.

왜 GroupDocs.Merger for Java를 사용하나요?

GroupDocs.Merger는 문서를 순수 Java로 처리합니다—네이티브 바이너리나 Office 설치가 필요 없습니다. 50개 이상의 입력 및 출력 형식을 지원하며, 일반적인 2.5 GHz 서버에서 200페이지 DOCX를 2초 미만에 분할할 수 있어 스트림 기반 아키텍처 덕분에 메모리 사용량을 100 MB 이하로 유지합니다.

전제 조건

필수 라이브러리 및 종속성

  • Java Development Kit (JDK): JDK 8 이상.
  • GroupDocs.Merger for Java: 문서 조작을 위한 핵심 라이브러리.

종속성 추가

Maven 또는 Gradle을 통해 라이브러리를 포함합니다 (코드 블록은 변경되지 않음):

<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-merger</artifactId>
    <version>latest-version</version>
</dependency>
implementation 'com.groupdocs:groupdocs-merger:latest-version'

공식 사이트에서 최신 릴리스를 다운로드할 수도 있습니다: GroupDocs.Merger for Java releases.

라이선스 획득

GroupDocs.Merger for Java 설정

Merger는 분할, 병합 및 변환 작업을 조정하는 중심 클래스입니다.

import com.groupdocs.merger.Merger;

public class DocumentSetup {
    public static void main(String[] args) {
        // Initialize a Merger object with the path of the input document
        Merger merger = new Merger("path/to/your/document.docx");
        
        // Perform operations on your document...
        
        merger.close();
    }
}

환경이 준비되면, DOCX 페이지를 파일이나 스트림으로 분할하는 두 가지 주요 방법을 살펴보겠습니다.

GroupDocs.Merger를 사용하여 DOCX를 파일로 분할하는 방법

소스 DOCX를 로드하고 원하는 페이지 범위를 지정한 뒤 split 메서드를 호출합니다—이 한 번의 호출로 선택된 각 구간에 대해 별도의 출력 파일이 생성됩니다. split 메서드는 제공된 SplitOptions에 따라 문서를 처리하고 생성된 파일 경로를 반환합니다. 다음 단계에서는 완전한 프로덕션 준비 구현을 보여줍니다.

1단계 – 입력 및 출력 경로 지정

원본 DOCX의 위치와 분할 파일이 기록될 폴더를 정의합니다.

String filePath = "YOUR_DOCUMENT_DIRECTORY/SAMPLE_DOCX_10_PAGES";
String filePathOut = new File("YOUR_OUTPUT_DIRECTORY", 
    "SplitToSinglePages-" +
    Paths.get(filePath).getFileName().toString()
).getPath();

2단계 – SplitOptions 구성 (split options java)

SplitOptions는 API에 정확히 어떤 페이지를 추출하고 결과를 어디에 배치할지 알려줍니다.

import com.groupdocs.merger.domain.options.SplitOptions;

SplitOptions splitOptions = new SplitOptions(filePathOut, new int[] { 3, 6, 8 });
  • filePathOut – 각 페이지 파일이 배치될 폴더.
  • new int[]{3,6,8} – 분할하려는 페이지 번호(페이지 번호는 1부터 시작).

3단계 – 분할 수행

Merger 인스턴스를 생성하고 split을 호출합니다. 이 메서드는 생성된 파일 경로 목록을 반환합니다.

import com.groupdocs.merger.Merger;

Merger merger = new Merger(filePath);
merger.split(splitOptions);

프로 팁: 출력 디렉터리가 존재하고 애플리케이션에 쓰기 권한이 있는지 확인하세요; 그렇지 않으면 분할이 실패합니다.

일반적인 함정

  • Missing output folder: API가 디렉터리를 자동으로 생성하지 않습니다.
  • Incorrect page numbers: 페이지 인덱스는 1부터 시작합니다; 0을 지정하면 오류가 발생합니다.

DOCX 페이지를 스트림(메모리 내)으로 분할하는 방법

임시 접근이 필요할 때—예를 들어 웹 서비스로 페이지를 전송하거나 메모리 내 분석을 수행할 경우—각 추출된 페이지를 스트림으로 캡처하면 디스크에 쓰는 오버헤드를 없앨 수 있습니다. 사용자 정의 SplitStreamFactory를 사용하면 라이브러리가 분할된 내용을 직접 ByteArrayOutputStream 객체에 기록하므로 중간 파일 없이 전송, 저장 또는 추가 처리할 수 있습니다.

1단계 – 입력 경로 정의 및 스트림 목록 준비

소스 파일을 설정하고 생성된 스트림을 보관할 컨테이너를 만듭니다.

import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.List;

String filePath = "YOUR_DOCUMENT_DIRECTORY/SAMPLE_DOCX_10_PAGES";
final List<OutputStream> resultStreams = new ArrayList<>();

2단계 – 사용자 정의 SplitStreamFactory로 SplitOptions 구성

각 페이지에 대해 새로운 OutputStream을 제공하고 완료된 스트림을 저장하도록 SplitStreamFactory를 구현합니다.

import com.groupdocs.merger.domain.common.SplitStreamFactory;
import com.groupdocs.merger.domain.options.SplitMode;

SplitOptions splitOptions = new SplitOptions(new SplitStreamFactory() {
    @Override
    public OutputStream createSplitStream(int pageNumber) {
        return new ByteArrayOutputStream(); // Create a stream for each page
    }
    
    @Override
    public void closeSplitStream(int pageNumber, OutputStream pageStream) {
        resultStreams.add(pageStream); // Collect the streams
    }
}, new int[] { 3, 4 }, SplitMode.Pages);
  • createSplitStream – 요청된 각 페이지에 대한 새로운 OutputStream을 생성합니다.
  • closeSplitStream – 완료된 스트림을 나중에 사용할 수 있도록 저장합니다.

3단계 – 분할 실행 및 스트림 가져오기

분할 작업을 실행한 후 필요에 따라 메모리 내 스트림을 사용합니다(예: 이메일에 첨부하거나 클라우드 스토리지에 업로드).

Merger merger = new Merger(filePath);
merger.split(splitOptions);

return resultStreams; // Retrieve streams for processing

문제 해결 팁

  • 소스 DOCX 경로가 정확한지 확인하세요; 오타가 있으면 FileNotFoundException이 발생합니다.
  • 작업이 끝난 후에는 항상 스트림을 닫아 메모리를 해제하고 누수를 방지하세요.

실용적인 적용 사례

  1. Legal contracts: 전체 계약서를 공개하지 않고 개별 조항을 추출하여 별도로 검토합니다.
  2. E‑learning platforms: 필요에 따라 장별 Word 파일을 제공하여 전체 교재를 보호합니다.
  3. Business reporting: 분기 보고서의 재무 섹션만 CFO에게 전송하여 대역폭을 절감하고 기밀성을 향상시킵니다.

성능 고려 사항

  • Memory‑efficient streams: 50 MB 이상 문서의 경우 스트림 방식을 선호하여 힙 사용량을 낮게 유지합니다.
  • Batch processing: 하나의 JVM 세션에서 여러 분할 작업을 그룹화하여 시작 오버헤드를 상쇄합니다.
  • Resource cleanup: merger.close()를 호출하고 모든 스트림을 닫아 메모리 누수를 방지합니다.
  • Speed metric: 표준 8코어 서버에서 300페이지 DOCX를 개별 페이지로 분할하는 데 약 1.8 초가 소요됩니다.

자주 묻는 질문

Q: GroupDocs.Merger for Java란 무엇인가요?
A: Java 라이브러리로, Microsoft Office 없이도 DOCX, PDF, PPTX, HTML 등 50가지 이상의 문서 형식을 병합, 분할 및 변환할 수 있습니다.

Q: GroupDocs.Merger의 라이선스를 어떻게 얻나요?
A: 평가용으로 GroupDocs 웹사이트에서 임시 체험 라이선스를 획득하세요. 프로덕션에서는 동일 사이트에서 정식 라이선스를 구매합니다.

Q: 동일 API로 PDF 파일도 분할할 수 있나요?
A: 예, split 메서드는 PDF, DOCX, PPTX 및 기타 지원 형식에서도 작동합니다.

Q: 디스크에 쓰지 않고 문서를 분할할 수 있나요?
A: 물론입니다—위에서 보여준 스트림 기반 접근 방식을 사용하면 모든 작업을 메모리 내에서 처리할 수 있습니다.

Q: 어떤 버전의 GroupDocs.Merger를 사용해야 하나요?
A: 항상 최신 안정 버전을 사용하여 성능 향상 및 버그 수정의 이점을 누리세요.


Last Updated: 2026-07-25
Tested With: GroupDocs.Merger for Java 최신 버전
Author: GroupDocs

관련 튜토리얼