리눅스 cairosvg 완벽 가이드: 터미널에서 SVG를 PNG·PDF로 초고속 변환하기

개요

리눅스 환경에서 SVG 벡터 이미지를 PNG나 PDF 등의 래스터 이미지로 손쉽게 변환할 수 있는 cairosvg CLI 도구의 사용법을 소개합니다. Ubuntu 환경에서의 패키지 설치부터 기본 변환 옵션, 해상도 조절 및 일괄 자동화 스크립트 작성까지 실무 중심 예제로 알아봅니다.

1. cairosvg 설치 및 테스트용 샘플 SVG 생성

Ubuntu 시스템에서 SVG 변환 실습을 진행하기 위해 sudo apt-get update -qq && sudo apt-get install -y python3-cairosvg 명령어로 cairosvg 패키지를 설치합니다.

sudo apt-get update -qq && sudo apt-get install -y python3-cairosvg

cairosvg는 SVG 벡터 그래픽 파일을 PNG, PDF, PS 등의 포맷으로 고속 변환해 주는 커맨드라인 도구입니다.
cairosvg --version 명령어를 실행하여 설치된 버전을 확인하고 도구가 정상 동작하는지 점검합니다.
⚙️ [주요 옵션]

-f, --format : 출력할 파일의 포맷(png, pdf, ps, svg)을 지정합니다.
-o, --output : 변환된 결과를 저장할 출력 파일 경로를 지정합니다.
-w, --width : 출력 이미지의 가로 너비를 픽셀 단위로 지정합니다.
-h, --height : 출력 이미지의 세로 높이를 픽셀 단위로 지정합니다.
-s, --scale : 원본 크기를 기준으로 확대 또는 축소할 배율을 설정합니다.
-d, --dpi : 래스터화 과정에 적용할 해상도(DPI)를 설정합니다.
-b, --background : 투명 배경 대신 적용할 배경 색상을 지정합니다.

cairosvg –version

변환 실습에 사용할 샘플 SVG 그래픽을 준비하기 위해 cat 명령어와 히어독(Here Document) 구문으로 기본 도형이 포함된 sample.svg 파일을 생성합니다.

cat « ‘EOF’ > sample.svg



SVG

EOF

생성된 sample.svg 파일의 크기와 상세 파일 정보를 확인하기 위해 ls -lh sample.svg 명령어를 실행합니다.

ls -lh sample.svg

2. SVG 파일을 PNG 및 PDF 포맷으로 기본 변환하기

sample.svg 벡터 그래픽을 래스터 이미지인 PNG 파일로 변환하기 위해 cairosvg sample.svg -o sample.png 명령어를 실행합니다.
-o 옵션에 지정된 파일 확장자(.png)를 인식하여 별도의 포맷 옵션 없이도 PNG 형식으로 자동 변환됩니다.

cairosvg sample.svg -o sample.png

변환된 sample.png 파일이 정상적인 이미지 규격으로 생성되었는지 확인하기 위해 file sample.png 명령어를 실행합니다.
파일의 데이터 유형과 이미지 해상도, 색상 사양 등을 확인할 수 있습니다.

file sample.png

sample.svg 벡터 그래픽을 인쇄 및 문서 규격인 PDF 파일로 변환하기 위해 cairosvg sample.svg -o sample.pdf 명령어를 실행합니다.
벡터 그래픽의 선명도를 유지한 채 독립된 PDF 문서 파일로 생성됩니다.

cairosvg sample.svg -o sample.pdf

생성된 sample.pdf 파일의 형식과 문서 정보를 확인하기 위해 file sample.pdf 명령어를 실행합니다.
파일이 표준 PDF 규격에 맞추어 정상적으로 생성되었는지 검증할 수 있습니다.

file sample.pdf

3. 해상도(DPI) 및 크기(너비·높이·배율) 맞춤 변환

출력 이미지의 가로 및 세로 크기를 지정하여 변환하기 위해 cairosvg sample.svg -o sample_800px.png -W 800 -H 800 명령어를 실행합니다.
-W와 -H 옵션으로 너비와 높이를 각각 800픽셀로 고정하여 규격에 맞춘 PNG 이미지를 생성합니다.

cairosvg sample.svg -o sample_800px.png -W 800 -H 800

원본 비율을 유지하며 크기를 2배로 확대 변환하기 위해 cairosvg sample.svg -o sample_scale2x.png -s 2.0 명령어를 실행합니다.
스케일 배율을 지정하는 -s 옵션에 2.0을 부여하여 벡터 품질 손실 없이 2배 크기의 PNG 이미지를 얻을 수 있습니다.

cairosvg sample.svg -o sample_scale2x.png -s 2.0

인쇄 및 고화질 출력용 해상도로 래스터화하기 위해 cairosvg sample.svg -o sample_300dpi.png -d 300 명령어를 실행합니다.
-d 옵션으로 300 DPI를 적용하여 정밀하고 선명한 품질의 PNG 파일로 렌더링합니다.

cairosvg sample.svg -o sample_300dpi.png -d 300

옵션별로 생성된 PNG 파일들의 목록과 용량을 확인하기 위해 ls -lh sample*.png 명령어를 실행합니다.
설정한 너비, 배율, DPI 값에 따라 달라진 파일 용량과 생성 결과를 한눈에 비교할 수 있습니다.

ls -lh sample*.png

4. 셸 스크립트를 활용한 다중 SVG 파일 일괄 변환 자동화

다중 파일 일괄 변환 실습을 위한 테스트 디렉터리를 생성하고 샘플 SVG 파일들을 복사하기 위해 mkdir -p svg_batch && cp sample.svg svg_batch/icon1.svg && cp sample.svg svg_batch/icon2.svg 명령어를 실행합니다.

mkdir -p svg_batch && cp sample.svg svg_batch/icon1.svg && cp sample.svg svg_batch/icon2.svg

Bash for 반복문과 매개변수 확장 구문(${f%.svg}.png)을 활용하여 디렉터리 내의 모든 SVG 파일을 PNG 포맷으로 일괄 변환하기 위해 for f in svg_batch/*.svg; do cairosvg "$f" -o "${f%.svg}.png"; done 명령어를 실행합니다.
각 파일의 확장자를 자동으로 치환하면서 순차적으로 렌더링 작업을 수행합니다.

for f in svg_batch/*.svg; do cairosvg “$f” -o “${f%.svg}.png”; done

svg_batch 디렉터리 내 원본 파일과 새로 생성된 PNG 이미지 파일들의 목록을 확인하기 위해 ls -lh svg_batch/ 명령어를 실행합니다.
일괄 변환 작업이 정상적으로 처리되어 원본 파일명에 대응하는 변환 결과물들이 생성되었는지 한눈에 파악할 수 있습니다.

ls -lh svg_batch/

지금까지 리눅스 터미널에서 cairosvg를 활용해 SVG 파일을 PNG와 PDF로 초고속 변환하는 방법을 간단하게 살펴보았습니다.
대량의 벡터 그래픽 변환이나 자동화 스크립트 작성 시 가볍고 강력한 cairosvg를 유용하게 활용해 보시기 바랍니다.