← 블로그 목록
이미지작성 · 8분 읽기

HEIC PDF 변환 — 아이폰 사진 여러 장을 윈도우에서 설치 없이 PDF 하나로 (용량이 2배가 되는 이유까지)

아이폰 카메라가 '고효율성' 포맷이면 사진이 HEIC 로 저장돼서, 서류 제출용 PDF 를 만들려고 하면 'JPG 로 먼저 바꿔야 하나' 부터 막힙니다. HEIF 이미지 확장이 있는 윈도우 11 에서는 HEIC 를 바로 PDF 로 만들 수 있습니다 — 다만 JPG 와 같은 함정(가장자리 잘림·세로 사진 눕힘)에 더해, HEIC 에만 생기는 일이 두 가지 있습니다. JPG 용 스크립트가 '메모리가 부족합니다' 로 멈추고, PDF 가 원래 HEIC 보다 1.3~2.3배 커집니다. 휴대폰 크기 HEIC 3장으로 세 가지 방법을 시험했습니다.

PDF 용량 줄이기 — 실제 실행 화면
실제 실행 화면
이 글에서 소개하는 무료 도구
PDF 용량 줄이기

HEIC 로 만든 PDF 가 원본보다 커져 업로드 제한에 걸릴 때 브라우저 안에서 줄입니다. 파일을 서버로 보내지 않고, 정해 둔 크기에 맞추거나 여러 개로 나눌 수 있습니다.

  • ✓ 무료
  • ✓ 설치·회원가입 없음
  • ✓ 브라우저에서 바로 실행
  • ✓ 파일이 서버로 올라가지 않음
  • ✓ 소스 공개

🔒 파일을 서버나 다른 어떤 곳으로도 보내지 않습니다 — 내 컴퓨터의 브라우저 안에서만 처리합니다.

이동할 주소 — 지금 보고 있는 이 사이트(coding-now.com) 안의 페이지입니다
🔒 https://www.coding-now.com/pdf-compressor

먼저 알아 둘 것 — PDF 안에는 HEIC 가 그대로 들어가지 않는다

HEIC 는 아이폰 7 이후 기기가 HEIF 형식으로 찍은 사진 파일입니다(카메라 포맷 '고효율성'). 애플 지원 문서는 이 형식을 권장하면서, HEIF·HEVC 가 JPEG·H.264 보다 압축률이 높아 같은 화질에 저장 공간을 덜 쓴다고 설명합니다. 이번 시험에서도 같은 휴대폰 크기 사진 3장이 JPG(품질 92)로는 4,192,795바이트, HEIC 로는 1,661,018바이트(40%)였습니다.

문제는 PDF 쪽입니다. PDF 표준 ISO 32000-1:2008 의 '표준 필터' 표(표 6)에 있는 그림 압축 방식은 JPEG(DCTDecode), JPEG 2000(JPXDecode), JBIG2, CCITT 팩스, Flate 같은 것들이고, HEIC 가 쓰는 HEVC 는 없습니다. 실제로 이 글의 세 방법이 만든 PDF 를 열어 그림을 꺼내 보니 모두 JPEG 였습니다. 그러니 어떤 방법을 쓰든 HEIC 를 한 번 풀어서 JPEG 로 다시 압축하는 과정이 들어가고, 파일은 원래 HEIC 보다 커집니다.

HEIC → PDF 세 갈래 (실측)

시험 파일은 앞서 JPG → PDF 글에서 쓴 휴대폰 크기 사진 3장을 HEIC 로 저장한 것입니다: 가로 4032×3024 두 장(239,755 · 915,084바이트)과 세로 사진 한 장(506,179바이트). 세로 사진은 휴대폰을 세워 찍은 것처럼 픽셀은 가로로 두고 '90도 돌려서 보여라' 는 회전 정보(irot, EXIF 방향 6)를 붙였습니다. 윈도우 11, HEIF 이미지 확장 1.2.48.0 · HEVC 비디오 확장 2.5.33.0 이 있는 PC 에서 2026-10-22 에 시험했습니다.

방법 1: 탐색기 인쇄 → Microsoft Print to PDF (설치 없음)

  1. 1파일 탐색기에서 .heic 사진들을 선택합니다(Ctrl 을 누른 채 클릭).
  2. 2마우스 오른쪽 → 인쇄 를 누릅니다. 메뉴에 없으면 '추가 옵션 표시' 안에 있습니다.
  3. 3'사진 인쇄' 창 왼쪽 위 프린터 를 Microsoft Print to PDF 로 바꿉니다.
  4. 4용지 A4, 레이아웃 '전체 페이지 사진' 을 확인하고 그림을 프레임에 맞춤 을 켤지 정합니다.
  5. 5인쇄 → '다음 이름으로 프린터 출력 저장' 창에서 위치와 이름을 정하고 저장.

이 PC 의 레지스트리에는 .heic 에도 .jpg 와 같은 사진 인쇄 마법사가 '인쇄' 메뉴로 등록돼 있었고, HEIC 3장이 3쪽 PDF(3,404,115바이트)로 저장되는 데 10.1초 걸렸습니다. HEIC 를 읽는 일은 윈도우의 HEIF 이미지 확장이 맡습니다 — 탐색기에서 .heic 미리보기가 안 보이는 PC 라면 이 방법도 안 될 가능성이 큽니다(확장 설치는 HEIC 를 JPG 로 바꾸는 글에 정리했습니다).

⚠️

사진 인쇄 창은 처음에 PC 의 기본 프린터 로 열립니다. 이 PC 의 기본 프린터는 실제 레이저 프린터라, 프린터를 바꾸지 않고 인쇄를 누르면 종이로 나갑니다. 전에 한 번 PDF 프린터로 바꿨다면 그 선택이 남아 있었습니다.

기본값이 HEIC 사진에 하는 일

  • 쪽이 모두 A4 가로이고 세로 사진은 눕는다. 3쪽 모두 297×210mm 였고, 세로 사진은 반시계 방향으로 90도 누운 채 들어갔습니다(원본과 픽셀 차이 3.50, 시계 방향이면 51.19). 회전 정보 자체는 제대로 읽었습니다 — 세운 사진을 가로 쪽에 맞추려고 다시 눕힌 것입니다.
  • 가장자리가 잘린다. '그림을 프레임에 맞춤' 이 기본으로 켜져 있어 4:3 사진을 A4 에 꽉 채우느라 위아래를 잘랐습니다. 가로 사진 두 장 모두 3,024줄 중 가운데 2,846줄(94.1%)만 남았습니다(원본과 픽셀 차이: 가운데 자르기 3.61·2.98, 늘리기 11.74·10.09).
  • 사진은 띠로 나뉘어 JPEG 로 다시 압축된다. PDF 안에서 사진 한 장은 4032×500 띠 6개와 4032×24 띠 1개, 모두 JPEG 였습니다.

방법 2: PowerShell 스크립트 — HEIC 를 윈도우 디코더로 읽어서

JPG → PDF 글의 PowerShell 스크립트에 .heic 를 넣으면 첫 장에서 멈춥니다. 오류는 OutOfMemoryException, 메시지는 '메모리가 부족합니다.' 입니다. 메모리가 모자란 게 아니라 그 스크립트가 쓰는 System.Drawing(GDI+)이 HEIC 를 읽지 못하는 것인데, 오류 문구가 원인을 말해 주지 않아 헤매기 쉽습니다.

아래 스크립트는 그림 읽기만 바꿨습니다. 윈도우에 들어 있는 WPF 이미지 기능으로 .heic 를 열면 HEIF 이미지 확장의 디코더(이름 'Microsoft HEIF Decoder')가 읽어 주고, 그것을 메모리 안에서 JPEG 로 저장한 뒤 같은 방식으로 Microsoft Print to PDF 에 그립니다. 프린터를 이름으로 지정하므로 종이로 갈 일이 없습니다.

powershell
Add-Type -AssemblyName System.Drawing, PresentationCore
$folder = "C:\Users\내이름\Pictures\아이폰사진"   # PDF 로 만들 HEIC 가 든 폴더(전체 경로)
$out    = "C:\Users\내이름\Pictures\사진모음.pdf"  # 만들 PDF(전체 경로)
$q      = 92                                       # JPEG 품질. 낮추면 PDF 가 작아진다(80 이면 약 2/3)
$files  = @(Get-ChildItem "$folder\*" -Include *.heic, *.heif | Sort-Object Name | ForEach-Object { $_.FullName })

function Load-Photo($path) {   # System.Drawing 은 HEIC 를 못 읽는다 → 윈도우 HEIF 확장(WIC)으로 읽어 JPEG 로 메모리에 옮긴다
  $src = [System.Windows.Media.Imaging.BitmapDecoder]::Create([Uri]$path, 'None', 'OnLoad').Frames[0]
  $enc = New-Object System.Windows.Media.Imaging.JpegBitmapEncoder
  $enc.QualityLevel = $q
  $enc.Frames.Add([System.Windows.Media.Imaging.BitmapFrame]::Create($src))
  $ms = New-Object System.IO.MemoryStream
  $enc.Save($ms)
  [System.Drawing.Image]::FromStream($ms)
}

$pd = New-Object System.Drawing.Printing.PrintDocument
$pd.PrinterSettings.PrinterName = "Microsoft Print to PDF"   # 종이 프린터로 가지 않게 PDF 프린터를 직접 지정
$pd.PrinterSettings.PrintToFile = $true
$pd.PrinterSettings.PrintFileName = $out
$pd.DefaultPageSettings.PaperSize = $pd.PrinterSettings.PaperSizes | Where-Object { $_.Kind -eq "A4" } | Select-Object -First 1
$pd.DefaultPageSettings.Margins = New-Object System.Drawing.Printing.Margins 40, 40, 40, 40   # 여백 약 1cm
$i = 0
$pd.add_QueryPageSettings({                         # 사진이 가로면 쪽도 가로, 세로면 세로
  $img = Load-Photo $files[$script:i]
  $_.PageSettings.Landscape = ($img.Width -gt $img.Height)
  $img.Dispose()
})
$pd.add_PrintPage({                                 # 자르지 않고 여백 안에 맞춰 가운데
  $img = Load-Photo $files[$script:i]
  $m = $_.MarginBounds
  $k = [Math]::Min($m.Width / $img.Width, $m.Height / $img.Height)
  $w = $img.Width * $k; $h = $img.Height * $k
  $_.Graphics.DrawImage($img, [single]($m.X + ($m.Width - $w) / 2), [single]($m.Y + ($m.Height - $h) / 2), [single]$w, [single]$h)
  $img.Dispose()
  $script:i++
  $_.HasMorePages = ($script:i -lt $files.Count)
})
if (-not $pd.PrinterSettings.IsValid) { "Microsoft Print to PDF 가 없습니다" } else { $pd.Print(); "저장: $out" }
  1. 1PDF 로 만들 .heic 를 한 폴더에 모읍니다. 쪽 순서는 파일 이름 순서입니다(아이폰 사진 IMG_0001, IMG_0002 … 는 그대로 찍은 순서).
  2. 2시작 메뉴에서 Windows PowerShell 을 엽니다(관리자 권한 필요 없음).
  3. 3$folder 와 $out 경로를 바꾸고 통째로 붙여 넣은 뒤 Enter. '저장:' 이 나오면 끝입니다.

결과: 3장이 쪽 방향 가로 · 세로 · 가로 인 A4 PDF 가 됐고 3.5초 걸렸습니다. 세로 사진은 회전 정보대로 3024×4032 로 세워져 세로 쪽에 똑바로 들어갔고(디코더가 회전을 적용한 뒤 방향 값을 1 로 돌려줌), 잘린 곳 없이 여백 1cm 안에 맞춰졌습니다. 크기는 품질 92 에서 3,878,114바이트로, 메모리에서 만든 JPEG 합계(3,885,093)와 거의 같습니다 — 만든 JPEG 를 다시 압축하지 않고 넣은 것으로 보입니다. 품질 80 이면 2,468,833바이트였습니다.

ℹ️

이 코드는 .heic·.heif 전용입니다. JPG 가 섞여 있으면 JPG 는 JPG → PDF 글의 스크립트로 따로 만드는 편이 낫습니다 — 이 방식으로 JPG 를 읽으면 원본 JPG 를 한 번 더 압축하게 됩니다. .ps1 파일로 저장해 실행할 때는 한글 주석이 깨지지 않게 UTF-8(BOM) 으로 저장하세요.

방법 3: 파이썬 Pillow + pillow-heif

Pillow 만으로는 HEIC 를 열지 못합니다. 이 PC 의 Pillow 13.0.0 은 cannot identify image file (UnidentifiedImageError)를 냈습니다. pillow-heif 플러그인(1.8.1)을 설치하고 등록하면 됩니다.

python
from glob import glob
from PIL import Image
import pillow_heif                               # pip install pillow pillow-heif
pillow_heif.register_heif_opener()               # 이 줄이 없으면 UnidentifiedImageError

files = sorted(glob("*.heic"))
pages = [Image.open(f).convert("RGB") for f in files]
pages[0].save("사진모음.pdf", save_all=True, append_images=pages[1:],
              resolution=300, quality=92)        # resolution 이 없으면 쪽이 1.4m 가 된다
  • 회전 정보는 알아서 반영된다. pillow-heif 로 연 세로 사진은 3024×4032 로 바로 섰습니다. JPG 때처럼 exif_transpose 를 따로 부를 필요가 없었습니다.
  • resolution 을 빼면 쪽이 거대해진다. 기본값 저장은 픽셀을 72dpi 로 쳐서 쪽이 1,422×1,067mm 였습니다. resolution=300 이면 341×256mm.
  • 기본값은 품질 75 로 다시 압축한다. PDF 안 그림이 같은 사진을 품질 75 JPEG 로 저장한 것과 바이트까지 같았습니다(487,575). 기본 저장은 2,172,718바이트(HEIC 의 1.31배)로 세 방법 중 가장 작았고 0.64초 걸렸습니다. quality=92 로 주면 3,874,080바이트.

결과 비교 — 왜 PDF 가 HEIC 보다 커지나

같은 HEIC 3장으로 만든 PDF 크기 (실측)
방법설치쪽 방향가장자리PDF 안 그림3장 PDF 크기
인쇄 → PDF 프린터(기본값)없음(HEIF 확장)모두 A4 가로(세로 사진 눕힘)위아래 약 6% 잘림JPEG 띠 7개씩3,404,115바이트
PowerShell 스크립트(품질 92)없음(HEIF 확장)사진마다 가로/세로전체 · 여백 1cmJPEG 한 장씩3,878,114바이트
PowerShell 스크립트(품질 80)없음(HEIF 확장)사진마다 가로/세로전체 · 여백 1cmJPEG 한 장씩2,468,833바이트
파이썬 Pillow + pillow-heif(기본값)파이썬 + 2개사진 비율대로(쪽 1.4m)전체JPEG(품질 75)2,172,718바이트

HEIC 원본은 3장 합계 1,661,018바이트였으니, 가장 작게 나온 경우에도 PDF 가 1.3배입니다. 같은 화질을 더 적은 바이트로 담는 HEVC 압축을 PDF 가 쓸 수 없어서 JPEG 로 바꾸는 순간 그만큼 커지는 것입니다. 업로드 제한이 있다면 처음부터 품질을 많이 낮추기보다, 품질 92 정도로 만든 PDF 를 PDF 용량 줄이기 도구로 제한에 맞추는 편이 결과를 보면서 조절하기 쉽습니다.

아이폰·맥에서는

앞으로 찍을 사진 이라면 원인을 없애는 게 가장 간단합니다. 애플 지원 문서(HEIF 또는 HEVC 미디어 사용하기)의 경로는 설정 → 카메라 → 포맷 → 높은 호환성 이고, 그 뒤 새 사진은 JPEG 로 찍힙니다. 같은 문서는 아이폰을 USB 로 PC 에 연결해 사진을 가져올 때 JPEG 로 바뀔 수 있다고 안내합니다(설정 → 앱 → 사진의 '원본 유지' 를 켜면 바뀌지 않음). 에어드롭·메시지·이메일로 보낼 때도 받는 기기가 HEIF 를 지원하지 않으면 자동으로 JPEG 로 공유될 수 있다고 합니다.

맥 에서는 애플 설명서 'Mac에서 여러 파일을 PDF로 결합하기' 대로 Finder 에서 사진들을 선택하고 Control-클릭 → 빠른 동작 → PDF 생성 을 고르면 됩니다. 파일은 선택한 순서대로 PDF 에 들어갑니다. 이 글을 쓴 곳에는 맥이 없어 크기·방향은 실측하지 못했습니다.

아이폰 안에서 바로 PDF 를 만드는 방법은 애플 공식 설명서에서 절차를 찾지 못해 다루지 않았습니다.

결과가 이상할 때 확인 순서

HEIC → PDF 가 이상할 때 위에서부터
  1. 1'메모리가 부족합니다' 또는 UnidentifiedImageError — HEIC 를 못 읽는 도구입니다. 이 글의 HEIC 용 스크립트나 pillow-heif 를 쓰세요. 인쇄 창에서 사진이 안 보이면 HEIF 이미지 확장부터 확인합니다.
  2. 2세로 사진이 누웠다 — 사진 인쇄 창은 쪽 방향을 사진마다 바꾸지 않습니다. PowerShell 스크립트를 씁니다.
  3. 3가장자리가 잘렸다 — 그림을 프레임에 맞춤을 끄고 다시 저장합니다.
  4. 4PDF 가 원본보다 크다 — 정상입니다(위 비교). 업로드 제한이 있으면 스크립트의 $q 를 낮추거나 PDF 용량 줄이기로 맞춥니다.

자주 묻는 질문

Q. HEIC 를 먼저 JPG 로 바꾼 다음 PDF 로 만들어야 하나요?

HEIF 이미지 확장이 있는 윈도우 11 이라면 그럴 필요가 없었습니다. 탐색기 인쇄와 이 글의 스크립트 모두 .heic 를 바로 받았습니다. 어차피 PDF 안에서는 JPEG 로 바뀌므로, 따로 JPG 를 만들면 압축만 한 번 더 하게 됩니다.

Q. PDF 가 왜 HEIC 보다 커지나요?

PDF 표준의 그림 압축 방식에 HEIC 의 HEVC 가 없어서 JPEG 로 다시 압축하기 때문입니다. 이 글의 시험에서 HEIC 3장 1,661,018바이트가 PDF 2,172,718~3,878,114바이트가 됐습니다.

Q. 세로로 찍은 사진이 옆으로 누워요.

사진 인쇄 창의 '전체 페이지 사진' 은 쪽을 모두 A4 가로로 만들어 세로 사진을 눕힙니다. 이 글의 PowerShell 스크립트는 쪽 방향을 사진마다 정해 세로 사진을 세로 쪽에 똑바로 넣습니다.

Q. 온라인 변환 사이트를 써도 되나요?

크롬에는 HEIC 디코더가 들어 있지 않아(HEIC 를 JPG 로 바꾸는 글에서 실측), 변환 사이트는 대개 사진을 서버로 올려서 처리합니다. 신분증·서류 사진이라면 PC 안에서 만드는 이 글의 방법이 안전합니다.

Q. 갤럭시 사진도 HEIC 인데 같은 방법이 되나요?

.heic 파일이라면 윈도우에서 다루는 방법은 같습니다. 이 글의 시험 파일은 윈도우에서 만든 HEIC 라, 휴대폰 기종별 파일 구조 차이는 확인하지 않았습니다.

이 글에서 소개하는 무료 도구
PDF 용량 줄이기

HEIC 로 만든 PDF 가 원본보다 커져 업로드 제한에 걸릴 때 브라우저 안에서 줄입니다. 파일을 서버로 보내지 않고, 정해 둔 크기에 맞추거나 여러 개로 나눌 수 있습니다.

  • ✓ 무료
  • ✓ 설치·회원가입 없음
  • ✓ 브라우저에서 바로 실행
  • ✓ 파일이 서버로 올라가지 않음
  • ✓ 소스 공개

🔒 파일을 서버나 다른 어떤 곳으로도 보내지 않습니다 — 내 컴퓨터의 브라우저 안에서만 처리합니다.

이동할 주소 — 지금 보고 있는 이 사이트(coding-now.com) 안의 페이지입니다
🔒 https://www.coding-now.com/pdf-compressor

댓글 0

아직 댓글이 없습니다. 첫 댓글을 남겨 주세요.

댓글은 회원만 쓸 수 있습니다.

광고·욕설·비방·개인정보·불법 내용이 담긴 댓글은 숨기거나 지웁니다. 댓글은 닉네임과 함께 공개됩니다. 개인정보처리방침

다른 글