휴대폰으로 스캔한 계약서를 상대에게 보내기
스캔 앱이 내보낸 20쪽 계약서가 40 MB라 메일 첨부 한도를 넘습니다. 균형 프리셋으로 압축하면 약 5–6 MB이고 화면에서 읽는 데는 차이가 없습니다. 상대가 인쇄해야 하면 인쇄 프리셋 약 12 MB도 대부분의 메일 한도 안입니다.
Guide
PDF 압축은 파일의 각 페이지를 브라우저에서 비트맵으로 렌더링하고, 고른 선명도로 JPEG로 다시 인코딩한 뒤, 그 JPEG들을 페이지 크기가 그대로인 새 PDF로 다시 조립합니다. 파일은 업로드되지 않고, 결과는 보통 원본의 몇 분의 1에서 수십 분의 1로 줄어듭니다.
2026-09-09 업데이트4 sources8 min read
PDF 압축은 파일의 각 페이지를 브라우저에서 비트맵으로 렌더링하고, 고른 선명도로 JPEG로 다시 인코딩한 뒤, 그 JPEG들을 페이지 크기가 그대로인 새 PDF로 다시 조립합니다. 파일은 업로드되지 않고, 결과는 보통 원본의 몇 분의 1에서 수십 분의 1로 줄어듭니다.
가장 잘 맞는 대상은 스캔본과 이미지 위주 파일입니다. 휴대폰 스캔 앱이 만든 PDF, 복사기에서 바로 나온 계약서, 카메라로 찍은 영수증 같은 파일은 원래 페이지마다 큰 이미지 하나라서, 합리적인 해상도와 품질로 다시 인코딩하면 용량이 흔히 70% 이상 줄고 화면에서는 차이를 거의 느끼지 못합니다.
맞지 않는 대상은 글자가 중심이고 원래 용량이 크지 않은 파일입니다. 페이지를 통째로 이미지화하면 원래 몇 KB였던 벡터 글자가 100–200 KB짜리 이미지가 되어, 파일이 작아지기는커녕 "선택·검색·복사 가능"이라는 성질을 잃습니다. 도구 패널의 노란 안내가 바로 이 이야기이고, 이 글의 동작 원리에서 이유를 설명합니다.
세 프리셋은 세 조합의 고정 매개변수에 대응합니다. 화면(72 DPI, JPEG 품질 0.55), 균형(110 DPI, 0.70, 기본값), 인쇄(150 DPI, 0.82). 압축 전에 파일이 어디로 갈지 먼저 정하세요. WeChat으로 보낼 거면 화면, 보관하면서 인쇄도 고려하면 균형이나 인쇄를 고르는 편이 나중에 여러 번 시도하는 것보다 시간을 아낍니다.
scan_압축_87%절감.pdf. 출력이 원본보다 크면 이름에 "절감"이 들어가지 않는데, 이 파일은 이미지화 압축에 맞지 않는다는 신호입니다. 결과 카드에서 "다시 내려받기"나 "작업 공간에 추가해 계속 처리"를 할 수 있습니다.6쪽 스캔본으로, 각 페이지가 2480×3508 픽셀(A4 300 DPI 상당) JPEG이고 원본이 2.41 MB인 경우. 세 프리셋의 실제 결과:
프리셋 렌더링 해상도 페이지당 픽셀 페이지당 JPEG 6쪽 합계 절감
화면 72 DPI · 품질 0.55 595×841 ≈ 20 KB 120 KB 95%
균형 110 DPI · 품질 0.70 909×1286 ≈ 51 KB 302 KB 87%
인쇄 150 DPI · 품질 0.82 1240×1753 ≈ 109 KB 642 KB 73%
대조로, 벡터 글자만 있는 12쪽 계약서(11.7 KB)를 균형 프리셋으로 압축하면 1.65 MB가 됩니다. 페이지마다 약 137 KB짜리 이미지가 되고 글자도 더는 선택할 수 없습니다.

PDF 자체가 이미 압축 형식입니다. 글자는 폰트 윤곽선으로 표현하고, 이미지 내부는 대개 JPEG나 Flate로 압축되어 있습니다. 이른바 "PDF 압축"은 도구마다 완전히 다른 세 가지를 뜻할 수 있습니다.
이 도구는 3번을 씁니다. 이 점을 이해하면 어떤 파일에서 효과가 있고 어떤 파일에서 역효과가 나는지 예측할 수 있습니다.
PDF의 페이지 크기는 **포인트(pt)**로 재고, 1 pt = 1/72인치이며 A4는 595.28 × 841.89 pt입니다. 렌더링할 때 도구는 pdf.js로 페이지를 캔버스에 그리는데, 축척은 DPI ÷ 72입니다.
이 단계가 리샘플링입니다. 원본 스캔본이 300 DPI라면 110 DPI 출력에서는 픽셀의 약 87%를 버립니다((110/300)² ≈ 0.13). 픽셀이 줄면 JPEG 인코딩 전 데이터도 줄어듭니다. 이것이 용량 감소의 첫 번째 원천이고 되돌릴 수 없습니다.
렌더링할 때 페이지의 모든 요소(글자, 벡터 도형, 이미지, 주석 모양)가 같은 비트맵에 합성되고 배경은 흰색으로 채워집니다(JPEG는 투명을 지원하지 않음).
비트맵은 이어서 브라우저의 JPEG 인코더로 인코딩되고, 품질 매개변수(0–1)는 캔버스의 toBlob() 인터페이스에서 옵니다. JPEG는 이미지를 8×8 블록으로 나눠 이산 코사인 변환을 한 뒤 양자화 테이블에 따라 고주파 세부를 버립니다. 품질이 낮을수록 양자화 간격이 커지고 남는 고주파가 줄어 파일이 작아지며, 가장자리 근처의 "링잉"과 블록 모양 열화가 뚜렷해집니다.
세 프리셋의 품질 값 0.55 / 0.70 / 0.82는 "스캔한 글자를 여전히 읽을 수 있는" 기준으로 맞춘 것입니다. 0.5 아래에서는 획 가장자리에 잡티가 뚜렷해지고, 0.85 위로는 용량이 빠르게 늘어나는 데 비해 눈으로 느끼는 이득은 작습니다. 인코딩 세부(색차 샘플링 여부, 어떤 양자화 테이블을 쓰는지)는 브라우저가 정하므로 같은 프리셋이라도 브라우저에 따라 출력 용량이 10~20% 차이 날 수 있습니다.
PDF에서 벡터 글자 한 페이지의 비용은 폰트 1회 임베드(수십 KB, 문서 전체 공유) + 글자마다 몇 바이트의 위치 지정 명령입니다. A4 한 페이지를 빽빽하게 채운 글자도 2–5 KB에 그칠 수 있습니다.
같은 페이지를 이미지화하면 110 DPI에서 117만 픽셀입니다. 글자 가장자리는 JPEG가 가장 서투른 고주파 콘텐츠라 품질 0.7이라도 흑백 가장자리를 그럴듯하게 인코딩하려면 100–150 KB가 필요합니다. 그래서 12쪽 계약서가 11.7 KB에서 1.65 MB로, 100배 넘게 늘어납니다. 버그가 아니라 이미지화 방식의 고유한 성질입니다. 원본의 각 페이지가 이미 그보다 큰 그림일 때만 이득이 있습니다.
출력은 완전히 새 PDF입니다. 각 페이지는 원래 페이지와 시각적 크기가 같은 빈 페이지이고 그 위에 페이지를 덮는 JPEG(PDF에서는 DCTDecode 필터 이미지 객체)가 깔립니다. 원본의 폰트, 벡터, 텍스트 레이어, 북마크, 폼, 링크, 메타데이터는 새 파일에 들어가지 않습니다. 작업 공간에서 삽입한 빈 페이지는 벡터 빈 페이지로 남아 이미지화되지 않고, 스캔본에 원래 있던 빈 페이지는 다른 페이지와 똑같이 이미지로 렌더링됩니다.
새 파일이 순수 이미지라 어떤 PDF 뷰어로도 열려 호환성은 매우 좋습니다. 다만 "찾기"는 아무것도 못 찾고 화면 낭독기도 아무 글자도 읽지 못합니다.
스캔 앱이 내보낸 20쪽 계약서가 40 MB라 메일 첨부 한도를 넘습니다. 균형 프리셋으로 압축하면 약 5–6 MB이고 화면에서 읽는 데는 차이가 없습니다. 상대가 인쇄해야 하면 인쇄 프리셋 약 12 MB도 대부분의 메일 한도 안입니다.
영수증 수십 장을 찍어 만든 PDF는 보관·조회용입니다. 화면 프리셋이 용량을 원래의 5% 정도로 줄이고 글자는 여전히 알아볼 수 있습니다.
온라인 접수 시스템이 첨부 하나당 5 MB를 넘지 못하게 하는데 학력 증명 스캔본이 18 MB입니다. 균형을 고르고 그래도 넘으면 화면을 시도한 뒤, 마지막으로 파일 이름의 절감 비율을 확인하세요.
선생님이 스캔한 유인물을 반 단체 채팅방에 올리고 학생 대부분은 휴대폰으로 봅니다. 화면 프리셋으로 압축하면 로딩이 빠르고 데이터도 아낍니다. 인쇄할 학생은 원본을 따로 받으면 됩니다.
원본이 벡터 글자 위주라 원래 작았기 때문입니다. 이미지화하면 페이지마다 100–200 KB 이미지가 됩니다. 이런 파일은 압축이 필요 없고, 정말 줄여야 한다면 문제는 대개 안에 박힌 큰 이미지 몇 장이니 "PDF 이미지 추출"로 확인하세요.
용도를 먼저 정하세요. 화면에서만 보면 화면, 모르겠으면 균형, 인쇄할 수도 있으면 인쇄입니다. 세 프리셋의 용량은 대략 1 : 2.5 : 5이고 선명도가 그에 따라 올라갑니다.
아니요. 새 파일의 각 페이지 크기는 원래 페이지(작업 공간에서 한 회전 포함)와 완전히 같고 내용만 이미지가 됩니다.
현재 압축은 선택한 파일의 모든 페이지에 적용됩니다. "PDF 분할"로 압축할 부분을 먼저 떼어 내고 압축한 뒤 "PDF 병합"으로 다시 합치면 됩니다.
바로 되돌릴 수는 없습니다. 이미지화는 되돌릴 수 없습니다. 글자가 필요하면 압축본에 OCR을 돌리는 수밖에 없고 인식 정확도는 프리셋에 달려 있습니다. 화면 프리셋의 72 DPI는 OCR에는 보통 너무 낮습니다.
페이지마다 큰 비트맵으로 렌더링한 뒤 인코딩하므로 페이지가 많고 원본 해상도가 높으면 시간이 눈에 띄게 늘고, 휴대폰에서는 더 심합니다. "PDF 분할"로 나눠 처리하거나 데스크톱 브라우저로 옮기세요.
압축의 모든 단계가 — pdf.js로 페이지 렌더링, 캔버스로 JPEG 인코딩, pdf-lib으로 파일 재구성 — 내 브라우저 안에서 이루어지고 파일은 어떤 서버로도 업로드되지 않습니다. 중간에 생기는 비트맵은 메모리에만 있다가 페이지를 닫으면 해제됩니다. 오프라인에서도 쓸 수 있습니다.
HTMLCanvasElement.toBlob() — quality 매개변수의 정의와 값 범위: https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLCanvasElement/toBlob(访问日期:2026-09-08)getViewport({ scale }) 의미(scale = 1은 72 DPI): https://mozilla.github.io/pdf.js/(访问日期:2026-09-08)2026-09-09 업데이트
이미지를 재인코딩해 용량을 줄입니다. 화면·균형·인쇄 3단계 프리셋
모든 처리는 브라우저 로컬에서 완료되며 파일은 어떤 서버에도 업로드되지 않습니다