PDF 병합, 분할 및 정리: 완벽한 페이지 관리 가이드

· 12분 읽기

PDF 페이지 관리는 가장 흔하게 접하게 되는 문서 작업 중 하나입니다. 회계를 위해 송장을 결합하든, 방대한 보고서를 챕터별로 분할하든, 동료와 공유할 특정 페이지를 추출하든, PDF 구조를 효율적으로 조작하는 방법을 이해하면 수 시간의 수작업을 절약할 수 있습니다.

이 종합 가이드는 기본적인 병합 및 분할부터 고급 일괄 작업, CLI 자동화, Python 스크립팅까지 모든 것을 다룹니다. 이러한 작업 중에 무엇이 보존되는지 살펴보고, 인기 있는 도구들을 비교하며, 실제로 접하게 될 실제 시나리오를 안내합니다.

목차

PDF 병합: 여러 문서 결합하기

병합은 여러 PDF 파일을 순서대로 페이지를 추가하여 하나의 문서로 결합합니다. 이는 별도 섹션에서 완전한 보고서를 만들거나, 스캔한 문서를 결합하거나, 청구 기간 동안의 송장을 조립하는 데 필수적입니다.

프로세스는 간단해 보이지만, 다른 도구들은 PDF 기능을 다르게 처리합니다. 무엇이 보존되고 무엇이 손실되는지 이해하는 것은 전문적인 문서 워크플로우에 매우 중요합니다.

병합 중 보존되는 항목

기능 qpdf pdftk pikepdf 온라인 도구
페이지 콘텐츠
북마크 때때로
내부 링크 부분적 드물게
양식 필드 때때로
주석 때때로
디지털 서명 ❌ (무효화됨)
임베디드 폰트
레이어 (OCG) 부분적 드물게

중요: 디지털 서명은 문서 내용이 변경되기 때문에 병합 시 항상 무효화됩니다. 이는 의도된 것으로, 서명 후 문서가 수정되었음을 증명합니다. 서명 유효성을 유지하면서 서명된 문서를 결합해야 하는 경우 대신 PDF 포트폴리오 사용을 고려하세요.

기본 병합 명령

# qpdf: 세 개의 파일 병합
qpdf --empty --pages file1.pdf file2.pdf file3.pdf -- merged.pdf

# pdftk: 여러 파일 병합
pdftk file1.pdf file2.pdf file3.pdf cat output merged.pdf

# pdftk: 와일드카드로 병합
pdftk *.pdf cat output combined.pdf

소프트웨어 설치 없이 브라우저에서 직접 파일을 결합하려면 PDF 병합 도구를 사용하세요. 북마크, 링크 및 양식 필드를 자동으로 보존합니다.

고급 병합 기술

때로는 단순한 연결보다 더 많은 제어가 필요합니다. 다음은 선택적 병합을 위한 기술입니다:

# 여러 파일에서 특정 페이지 범위 병합
qpdf --empty --pages file1.pdf 1-10 file2.pdf 5-15 file3.pdf -- selective.pdf

# 페이지 회전과 함께 병합
pdftk A=file1.pdf B=file2.pdf cat A1-10 B1-5east output merged.pdf

# 문서 사이에 빈 페이지를 추가하여 병합
qpdf --empty --pages file1.pdf blank.pdf file2.pdf -- spaced.pdf

전문가 팁: 스캔한 문서를 병합할 때는 병합하기 전에 모든 파일이 동일한 방향과 DPI를 갖도록 하세요. 일치하지 않는 설정은 비전문적으로 보이는 일관되지 않은 페이지 크기를 만듭니다.

PDF 분할: 문서 나누기

분할은 PDF를 여러 개의 작은 파일로 나눕니다. 이는 특정 섹션을 공유하거나, 이메일용 파일 크기를 줄이거나, 컴파일된 문서에서 챕터를 분리하는 데 중요합니다.

다양한 분할 전략은 다양한 목적에 부합합니다. 워크플로우 요구 사항에 맞는 방법을 선택하세요.

일반적인 분할 방법

방법 설명 사용 사례 예시 명령 패턴
페이지 범위별 특정 페이지 시퀀스 추출 페이지 1-10 → file1.pdf, 11-20 → file2.pdf qpdf input.pdf --pages . 1-10 -- output.pdf
N 페이지마다 동일한 크기의 청크로 분할 100페이지 문서 → 각 10페이지씩 10개 파일 스크립팅 필요
파일 크기별 크기가 제한을 초과할 때 분할 이메일 첨부를 위해 5MB에서 분할 사용자 정의 로직 필요
북마크별 챕터 경계에서 분할 각 챕터가 별도 파일이 됨 pdftk input.pdf dump_data + 스크립팅
단일 페이지 모든 페이지를 별도 파일로 100페이지 → 100개의 개별 파일 pdftk input.pdf burst

분할 명령

# pdftk: 개별 페이지로 분할
pdftk input.pdf burst output page_%04d.pdf

# qpdf: 페이지 범위별 분할
qpdf input.pdf --pages . 1-50 -- part1.pdf
qpdf input.pdf --pages . 51-100 -- part2.pdf

# pdftk: 특정 페이지에서 분할
pdftk input.pdf cat 1-25 output chapter1.pdf
pdftk input.pdf cat 26-50 output chapter2.pdf

라이브 미리보기로 시각적 페이지 선택을 하려면 PDF 분할 도구를 사용해 보세요. 범위를 선택하기 위해 드래그하고 추출하는 내용을 정확히 볼 수 있습니다.

북마크별 분할

적절한 북마크 구조가 있는 문서의 경우, 북마크별 분할은 논리적 문서 구분을 보존합니다:

# 북마크 정보 추출
pdftk input.pdf dump_data output metadata.txt

# 북마크를 파싱하고 그에 따라 분할 (스크립팅 필요)
# 레벨 1의 각 북마크가 새 파일이 됨

빠른 팁: 이메일용으로 분할할 때는 10MB 미만의 파일을 목표로 하세요. 대부분의 이메일 서버는 최대 25MB를 허용하지만, 작은 파일이 더 빠르게 전송되고 기업 방화벽을 통과할 가능성이 더 높습니다.

특정 페이지 추출하기

추출은 원본 파일을 수정하지 않고 PDF에서 특정 페이지를 가져옵니다. 이것은 가장 일반적인 PDF 작업입니다—공유할 단일 페이지를 가져오거나, 교과서에서 챕터를 추출하거나, 배치에서 특정 송장을 분리하는 것입니다.

분할과 달리 추출은 정밀도에 중점을 둡니다: 소스를 그대로 두면서 필요한 페이지를 정확히 가져오는 것입니다.

기본 추출

# qpdf: 페이지 5, 10-15, 20 추출
qpdf input.pdf --pages . 5,10-15,20 -- extracted.pdf

# pdftk: 페이지 1-3과 7 추출
pdftk input.pdf cat 1-3 7 output extracted.pdf

# qpdf: 마지막 5페이지 추출
qpdf input.pdf --pages . z-4-z -- last5.pdf

썸네일 미리보기가 있는 시각적 인터페이스를 사용하려면 PDF 페이지 추출기를 사용하세요. 개별 페이지를 클릭하거나 Shift 키를 누른 채 클릭하여 범위를 선택할 수 있습니다.

고급 추출 패턴

복잡한 추출 시나리오는 페이지 참조 구문을 이해해야 합니다:

# 모든 홀수 페이지 추출 (양면 스캔용)
pdftk input.pdf cat odd output odd_pages.pdf

# 세 번째 페이지마다 추출
qpdf input.pdf --pages . 1,4,7,10,13,16,19 -- every_third.pdf

# 역순으로 페이지 추출
pdftk input.pdf cat end-1 output reversed.pdf

전문가 팁: 대용량 PDF에서 페이지를 추출할 때 원본 파일 크기는 비례적으로 감소하지 않습니다. 100MB PDF는 폰트와 이미지가 전체로 임베드되어 있기 때문에 10페이지 추출 시 20MB가 될 수 있습니다. 파일 크기를 최적화하려면 나중에 PDF 압축을 사용하세요.

페이지 재정렬 및 회전

재정렬은 콘텐츠를 추가하거나 제거하지 않고 페이지 순서를 변경합니다. 회전은 스캔이나 모바일 사진의 방향 문제를 수정합니다. 두 작업 모두 비파괴적이며 모든 PDF 기능을 보존합니다.

페이지 재정렬

# qpdf: 전체 문서 역순
qpdf input.pdf --pages . z-1 -- reversed.pdf

# pdftk: 사용자 정의 순서 (페이지 3, 그 다음 1, 그 다음 2)
pdftk input.pdf cat 3 1 2 output reordered.pdf

# pdftk: 마지막 페이지를 맨 앞으로 이동
pdftk input.pdf cat end 1-r2 output reordered.pdf

# qpdf: 두 문서 인터리브 (양면 스캔용 홀수/짝수)
qpdf --empty --pages odd.pdf even.pdf -- collated.pdf

페이지 회전

회전은 90도 단위로 지정됩니다. 다른 도구는 다른 구문을 사용합니다:

# pdftk: 페이지 1을 시계 방향으로 90도 회전
pdftk input.pdf cat 1east 2-end output rotated.pdf

# pdftk: 모든 페이지를 180도 회전
pdftk input.pdf cat 1-endsouth output flipped.pdf

# qpdf: 페이지 1-10을 시계 방향으로 90도 회전
qpdf input.pdf --rotate=+90:1-10 -- rotated.pdf

# qpdf: 홀수 페이지는 한 방향으로, 짝수 페이지는 다른 방향으로 회전
qpdf input.pdf --rotate=+90:odd --rotate=-90:even -- rotated.pdf

회전 방향:

빠른 팁: 회전 메타데이터는 실제 페이지 콘텐츠를 변경하지 않습니다—단지 PDF 리더에게 표시 방법을 알려줄 뿐입니다. 일부 오래된 PDF 뷰어는 회전 플래그를 무시하므로, 방향을 보장해야 하는 경우 페이지 콘텐츠를 다시 렌더링하는 도구를 사용하세요.

명령줄 도구 비교

올바른 CLI 도구를 선택하는 것은 운영 체제, 기능 요구 사항 및 성능 요구에 따라 달라집니다. 다음은 가장 인기 있는 옵션에 대한 자세한 비교입니다.

도구 기능 매트릭스

도구 라이선스 속도 기능 최적 용도
qpdf Apache 2.0 매우 빠름 포괄적, 구조 보존 전문 워크플로우, 자동화
pdftk GPL 빠름 간단한 구문, 양식 채우기 빠른 작업, 초보자
pikepdf MPL 2.0 빠름 Python 라이브러리, 프로그래밍 가능 사용자 정의 자동화, 통합
PyPDF2 BSD 보통 순수 Python, 종속성 없음 간단한 Python 스크립트
Ghostscript AGPL 느림 렌더링, 변환, 압축 형식 변환, 최적화

설치

# macOS
brew install qpdf pdftk-java

# Ubuntu/Debian
apt install qpdf pdftk

# Python 도구
pip install pikepdf PyPDF2

# Windows (Chocolatey를 통해)
choco install qpdf pdftk

성능 비교

500페이지, 50MB PDF에서 벤치마크 (병합 작업):

수백 개의 파일을 처리하는 일괄 작업의 경우 qpdf의 속도 이점이 크게 누적됩니다.

전문가 팁: macOS에서 pdftk가 작동하지 않는 경우 대신 pdftk-java가 필요할 수 있습니다. 원래 pdftk는 이전 macOS 버전용으로 컴파일되었으며 Apple Silicon에서 실행되지 않습니다. brew install pdftk-java를 사용하면 명령이 pdftk-java가 됩니다.

Python 자동화 예제

Python은 pikepdf 및 PyPDF2와 같은 라이브러리를 통해 강력한 PDF 조작을 제공합니다. 이 예제들은 워크플로우에 맞게 조정할 수 있는 일반적인 자동화 패턴을 보여줍니다.

pikepdf로 병합

import pikepdf
from pathlib import Path

def merge_pdfs(input_files, output_file):
    """모든 기능을 보존하면서 여러 PDF 병합."""
    pdf = pikepdf.Pdf.new()
    
    for file in input_files:
        src = pikepdf.Pdf.open(file)
        pdf.pages.extend(src.pages)
    
    pdf.save(output_file)

# 사용법
files = ['report1.pdf', 'report2.pdf', 'report3.pdf']
merge_pdfs(files, 'combined_report.pdf')

페이지 수로 분할

import pikepdf
from pathlib import Pat