← 모두의 툴

PDF 이미지 추출, 사실은 페이지 전체를 사진 찍는 방식

가이드 · 2026-08-19 최종 확인

"PDF 이미지 추출"이라는 이름을 보고 PDF 안에 삽입된 사진이나 로고 파일을 원본 그대로 뽑아주는 도구라고 기대하기 쉽습니다. 하지만 실제로 브라우저에서 동작하는 대부분의 PDF 이미지 추출 도구는 그런 방식이 아닙니다. 페이지 전체를 사진 찍듯 통째로 렌더링해서 이미지 파일로 내보내는 것이지, PDF 내부에 박혀 있는 개별 이미지 객체를 골라내는 게 아닙니다. 이 둘의 차이를 모르면 "이 사진만 딱 뽑고 싶은데 왜 페이지 전체가 나오지?"라는 혼란을 겪게 됩니다.

1. 두 가지 완전히 다른 접근

PDF에서 "이미지를 얻는다"는 표현 뒤에는 사실 전혀 다른 두 가지 기술이 숨어 있습니다.

2. 이 도구가 실제로 하는 일

실제 소스 코드를 확인하면 이 도구는 PDF.js의 page.getViewport({scale})로 뷰포트를 계산하고, page.render({canvasContext, viewport})로 페이지 전체를 캔버스에 그린 뒤 canvas.toDataURL('image/png')로 PNG를 뽑아냅니다. 즉 명백히 두 번째 방식(페이지 렌더링)입니다. 도구 자체의 FAQ에도 "PDF 내 이미지만 추출할 수 있나요? 아니요. 페이지 전체를 하나의 PNG로 렌더링하는 방식"이라고 정확히 명시돼 있습니다. PDF 안에 사진 한 장만 작게 삽입돼 있어도, 결과물은 그 사진만 잘라낸 파일이 아니라 텍스트와 레이아웃까지 포함된 페이지 전체 이미지입니다.

3. 화질은 "원본 해상도"가 아니라 "렌더링 배율"이 결정한다

페이지 렌더링 방식에서는 결과물의 실질적인 화질이 PDF 안에 삽입됐던 원본 사진의 해상도와 무관하게, 렌더링할 때 지정한 배율(scale)에 의해 결정됩니다. 원본 사진이 아무리 고해상도였어도 낮은 배율로 렌더링하면 뭉개지고, 반대로 원본이 저해상도였어도 배율을 올리면 페이지 안의 다른 요소(텍스트·벡터선)는 선명해지지만 원본 사진 자체의 디테일이 늘어나지는 않습니다. 결과물의 화질 상한은 결국 "렌더링 배율"이지 "원본 임베드 이미지의 진짜 해상도"가 아닙니다.

4. 1pt = 1/72인치, 배율과 DPI의 관계

PDF 내부 좌표계는 페이지 크기를 포인트(pt) 단위로 정의하며, PDF 표준에서 1pt = 1/72인치로 고정돼 있습니다. 그래서 페이지를 픽셀 기반 캔버스로 렌더링하려면 반드시 pt→px 변환 배율이 필요합니다. 배율 1×는 그대로 72 DPI, 2×는 144 DPI, 3×는 216 DPI에 해당합니다. 이 도구가 "해상도(DPI)" 대신 "배율(scale)"이라는 용어를 쓰는 이유도 여기 있습니다 — 내부적으로는 항상 72pt 기준 배수로 계산되기 때문입니다.

예시: A4 페이지(210×297mm ≈ 595×842pt)를 3× 배율로 렌더링하면 캔버스 크기는 약 1,785×2,526px가 됩니다. 배율이 오르면 가로·세로 픽셀 수가 배율만큼 늘어나므로, 파일 용량은 대략 배율의 제곱에 비례해 커집니다.

5. 진짜 내장 이미지가 필요하다면

PDF 안에 삽입된 사진·로고 파일을 원본 그대로, 페이지 배경 없이 딱 그 이미지 객체만 뽑아야 한다면 이 방식의 도구로는 불가능합니다. PDF의 객체 스트림을 직접 파싱해 Image XObject를 찾고 압축 필터를 해제하는 전용 도구(예: 데스크톱 PDF 편집기의 "이미지 추출" 기능, 또는 pikepdf/PyMuPDF 같은 라이브러리를 쓰는 스크립트)가 필요합니다. 이 도구는 반대로 "페이지를 통째로 스크린샷처럼 저장하고 싶을 때"(프레젠테이션에 붙여넣기, 블로그·SNS 캡처 게시, PDF를 못 여는 환경의 미리보기용)에 적합합니다.

자주 묻는 질문

Q. 이 도구로 PDF 속 사진만 따로 뽑을 수 있나요?

A. 아니요. 이 도구는 페이지 전체(텍스트+벡터+이미지)를 하나의 PNG로 렌더링하므로, 페이지 안의 개별 이미지 객체만 골라낼 수는 없습니다. 결과물은 항상 페이지 전체의 스크린샷 형태입니다.

Q. 배율을 3×로 올리면 원본 사진 화질도 좋아지나요?

A. 페이지 자체의 렌더링 해상도는 올라가지만, 원본으로 삽입됐던 사진이 저해상도였다면 그 사진 부분의 실제 디테일이 늘어나지는 않습니다. 배율은 렌더링 캔버스의 픽셀 밀도를 결정할 뿐, 원본 이미지 데이터를 초고화질로 복원해주지는 않습니다.

Q. 왜 하필 1pt = 1/72인치인가요?

A. PDF의 전신인 PostScript 언어가 인쇄 업계에서 전통적으로 쓰이던 활판인쇄 포인트(1/72인치에 가까운 단위)를 표준화해 채택했고, PDF도 이 관례를 그대로 물려받았습니다. 그래서 PDF 좌표계의 기본 단위가 지금도 1pt = 1/72인치로 고정돼 있습니다.

Q. 파일이 서버로 전송되나요?

A. 아니요. PDF.js가 브라우저 안의 Canvas API로 직접 렌더링을 수행하므로 PDF 파일이 외부 서버로 전송되지 않습니다.