개요
리눅스 환경에서 SVG 벡터 이미지를 PNG나 PDF 등의 래스터 이미지로 손쉽게 변환할 수 있는 cairosvg CLI 도구의 사용법을 소개합니다. Ubuntu 환경에서의 패키지 설치부터 기본 변환 옵션, 해상도 조절 및 일괄 자동화 스크립트 작성까지 실무 중심 예제로 알아봅니다.
1. cairosvg 설치 및 테스트용 샘플 SVG 생성
Ubuntu 시스템에서 SVG 변환 실습을 진행하기 위해 sudo apt-get update -qq && sudo apt-get install -y python3-cairosvg 명령어로 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 : 투명 배경 대신 적용할 배경 색상을 지정합니다.

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

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

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

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

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

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

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

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

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

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

4. 셸 스크립트를 활용한 다중 SVG 파일 일괄 변환 자동화
다중 파일 일괄 변환 실습을 위한 테스트 디렉터리를 생성하고 샘플 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 명령어를 실행합니다.
각 파일의 확장자를 자동으로 치환하면서 순차적으로 렌더링 작업을 수행합니다.

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

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