[도구 요약] img2pdf: 무손실 이미지-PDF 변환 유틸리티

img2pdf는 리눅스 환경에서 이미지를 PDF로 변환할 때 가장 빠르고 효율적인 도구 중 하나입니다. 여러 장의 이미지를 하나의 PDF 문서로 병합하거나, 단일 이미지를 PDF로 변환하는 데 최적화되어 있으며 Python 기반입니다.

이번 포스트에서는 제가 개인적으로 가끔 필요할 때 쓰는 도구인데, 사용할 때마다 "이건 정말 좋다."라고 매번 생각하는 툴입니다. 압도적인 속도와 리눅스특유의 가벼움, 게다가 pipe의 연결로 굉장히 좋아하는 툴이라 소개를 해볼까 합니다.

이미지에서 pdf 로 변환되는 프로세스를 이미지화

1. 작동 원리 (Working Principle)



가장 큰 특징은 '재인코딩 없는 병합(No Re-encoding)'입니다. * 기존 방식 (예: ImageMagick): 이미지를 읽어서 픽셀 데이터를 분석한 뒤, PDF 형식에 맞춰 다시 압축(Lossy)합니다. 이 과정에서 CPU 자원을 많이 쓰고 화질 저하가 발생할 수 있습니다. * img2pdf 방식: 이미지 파일의 바이너리 데이터를 그대로(Lossless) PDF 컨테이너 안에 집어넣습니다. * 장점: 속도가 압도적으로 빠르고, 원본 화질이 100% 유지되며, 결과물 용량이 경제적입니다.

2. 설치 및 삭제 (Installation & Removal)

설치 (Ubuntu/Debian 기준)

sudo apt update
sudo apt install img2pdf

삭제

# 프로그램만 삭제
sudo apt remove img2pdf

# 설정 파일 및 의존성까지 깔끔하게 삭제
sudo apt purge img2pdf
sudo apt autoremove

3. 주요 사용법 (Usage Guide)



기본 병합

현재 디렉토리의 모든 PNG 파일을 하나의 PDF로 합칠 때 사용합니다.

img2pdf *.png -o output.pdf

특정 순서로 병합

파일명을 직접 나열하여 순서를 지정할 수 있습니다.

img2pdf image1.png image2.png image3.png -o output.pdf

페이지 크기 및 여백 설정 (고급)

이미지를 특정 규격(예: A4)에 맞추거나 여백을 주고 싶을 때 유용합니다.

# 이미지 크기를 A4에 맞추고 2cm 여백 추가
img2pdf --pagesize A4 --border 2cm *.png -o output.pdf

특정 해상도(DPI) 지정

이미지의 출력 해상도를 강제하고 싶을 때 사용합니다.

img2pdf --dpi 300 *.png -o output.pdf

4. 개발자를 위한 팁 (Developer's Note)

  • 정렬 문제: 리눅스 터미널의 와일드카드(*)는 숫자를 문자열로 인식합니다.
    • 예: 1.png, 10.png, 2.png 순으로 병합될 수 있습니다.
    • 해결책: 파일명을 01.png, 02.png ... 10.png와 같이 자릿수를 맞춰 저장하는 것이 가장 안전합니다.
  • 파이프 활용: 당연한 이야기지만 파이프 활용은 리눅스의 가장 편리한 점 중에 하나입니다. 다른 명령어의 결과를 받아 즉시 PDF로 만들 수 있습니다.
find . -name "*.png" | sort | xargs img2pdf -o output.pdf

한 줄 요약: "화질 손상 없이, 가장 빠르게, 리눅스답게 PDF를 만들고 싶을 때 쓰는 최고의 도구"