AI 해결 노트 · 2026-09-18 · 실측 2026-09-18

PDF에서 필요한 쪽만 빼내기 — 이어진 쪽, 떨어진 쪽, 한 쪽씩 전부

한 줄로

10쪽짜리 PDF에서 3~5쪽만, 1·4·9쪽만, 그리고 한 쪽씩 열 개로 빼내 봤습니다. 파이썬으로 뽑은 결과는 쪽 수도 쪽에 찍힌 글자도 원본과 같았습니다. 뜻밖이었던 것은 크기입니다. 10쪽 중 1쪽만 빼냈는데 파일이 원본의 92.5%였고, 낱장 열 개를 합치면 원본의 9.3배가 됐습니다. 프로그램을 깔지 않고 엣지 인쇄로 빼내면 파일은 작아지는데 글자를 한 자도 찾을 수 없게 됩니다.

이런 분께

실측 환경

항목
OSWindows 11 Home 25H2 (10.0.26200.9457)
PowerShell 7 / Git Bash
엣지153.0.4234.32
Python3.12.10
파이썬 꾸러미pypdf 6.14.2, PyMuPDF 1.28.0
시험 파일시험용으로 만든 더미 PDF. 회사 자료는 쓰지 않았습니다

시험에 쓴 파일

10쪽짜리 PDF를 하나 만들었습니다. 뒤에 견주려고 쓴 사진 6쪽짜리도 같은 자리에서 만든 더미이고, 그 사진은 난수로 그려 낸 무늬입니다. 쪽마다 「3쪽」처럼 큰 글자, 「1장 개요」 같은 제목, 그리고 쪽표시 P03 이라는 표시를 넣었습니다. 빼낸 파일에서 이 표시를 읽으면 원본의 몇 쪽이었는지 바로 알 수 있습니다. 크기는 73,111바이트입니다.

파이썬으로 빼내기

pip install pypdf 한 줄이면 준비가 끝납니다. 원하는 쪽 번호를 적어 주는 것이 전부입니다.

from pypdf import PdfReader, PdfWriter

r = PdfReader(r"C:\경로\원본.pdf")
w = PdfWriter()
for 쪽 in [3, 4, 5]:            # 사람이 세는 번호
    w.add_page(r.pages[쪽 - 1])  # 파이썬은 0부터 세니 1을 뺍니다
with open(r"C:\경로\3-5쪽.pdf", "wb") as f:
    w.write(f)

① 이어진 쪽 3~5, ② 떨어진 쪽 1·4·9, ③ 한 쪽씩 열 개를 모두 이 방법으로 뽑았습니다. 쪽 수와 첫 쪽 글자를 원본과 견줘 봤습니다.

빼낸 것쪽 수첫 쪽들어 있는 쪽 표시크기원본 대비
① 3~5쪽33쪽 / 1장 개요P03, P04, P0569,214바이트94.7%
② 1·4·9쪽31쪽 / 표지P01, P04, P0969,206바이트94.7%
②-1 9·1·4쪽39쪽 / 별첨1 도면P09, P01, P0469,206바이트94.7%
③ 낱장 1개11쪽 / 표지P0167,629바이트92.5%
③ 낱장 10개 합10P01 ~ P10676,390바이트925%

②-1을 보시면 적어 준 차례가 그대로 결과 순서입니다. 쪽 번호를 [9, 1, 4]로 적으면 9쪽이 첫 장으로 옵니다. 떨어진 쪽을 뽑을 때 원래 순서대로 나오리라 기대하지 마시고, 적는 차례를 그대로 쓰시면 됩니다.

원본 10쪽과 세 가지로 빼낸 결과의 쪽 축소판
원본 10쪽과 세 가지로 빼낸 결과의 쪽 축소판

한 쪽씩 전부 쪼개는 것은 이렇게 돌렸습니다.

from pypdf import PdfReader, PdfWriter

r = PdfReader(r"C:\경로\원본.pdf")
for i, 쪽 in enumerate(r.pages, start=1):
    w = PdfWriter()
    w.add_page(쪽)
    with open(r"C:\경로\낱장_%02d.pdf" % i, "wb") as f:
        w.write(f)

파일 이름을 %02d로 두 자리로 맞춘 이유가 있습니다. 1, 2, 10 처럼 자릿수를 안 맞추면 나중에 이름순으로 늘어놓을 때 10_1_보다 앞에 섭니다. 글자로 견주는 정렬이라 그렇습니다.

왜 쪽을 빼내도 파일이 안 줄어드나

여기가 이 글에서 제일 놀란 자리입니다. 10쪽 중 1쪽만 남겼는데 크기는 92.5%였습니다.

글자만 든 10쪽 PDF에서 쪽을 빼내도 파일 크기가 거의 그대로인 막대 그림
글자만 든 10쪽 PDF에서 쪽을 빼내도 파일 크기가 거의 그대로인 막대 그림

낱장 파일 안을 열어 어떤 덩어리가 자리를 차지하는지 세어 봤습니다.

Y1_낱장_01.pdf   파일 67,629바이트   덩어리 6개 합 62,872바이트
   가장 큰 덩어리  50,346바이트  <</Filter/FlateDecode/Length 50346>>
      이것을 가리키는 객체: /Type/Font ... /ToUnicode 7 0 R
   그다음 덩어리   12,288바이트  <</Length1 186933/Filter/FlateDecode/Length 12288>>
      이것을 가리키는 객체: /Type/FontDescriptor ... /FontFile2 10 0 R

한글 글꼴 한 벌(12,288바이트)과 글자와 유니코드를 잇는 대응표(50,346바이트)가 합쳐 62,634바이트입니다. 파일의 92.6%가 글꼴 쪽 살림입니다. 원본과 낱장 파일에 같은 크기로 들어 있었습니다. 그래서 쪽을 10분의 1로 줄여도 파일은 10분의 1이 되지 않았습니다.

사진이 든 PDF는 이야기가 다릅니다. 앞의 것과 나란히 놓고 보시면 차이가 분명합니다.

원본빼낸 쪽결과 크기원본 대비쪽 수로 따진 몫
사진 6쪽 (39,305,252바이트)1쪽6,619,981바이트16.8%16.7%
사진 6쪽1·2쪽13,161,255바이트33.5%33.3%
글자 10쪽 (73,111바이트)1쪽67,629바이트92.5%10.0%

사진이 무게를 지고 있는 이 문서에서는 쪽을 빼는 것만으로 용량이 쪽 수 몫만큼 줄었습니다. 글자 문서에서는 그렇지 않았습니다. 「쪽을 반으로 줄였는데 왜 그대로냐」는 물음의 답이 여기 있을 수 있습니다. 시험한 것은 이 두 파일뿐입니다. 손에 든 파일이 어느 쪽에 가까운지는 사진이 들었는지로 짐작하시되, 정확한 몫은 한 번 빼내 크기를 재 보셔야 압니다.

PyMuPDF로 빼낼 때 — 저장 옵션을 같이 줘야 합니다

PyMuPDF(fitz)에는 필요한 쪽만 남기는 select가 있습니다. 옵션 없이 저장하면 쪽은 3쪽으로 줄었는데 크기가 원본의 99.9%였습니다.

import fitz

d = fitz.open(r"C:\경로\원본.pdf")
d.select([2, 3, 4])                       # 0부터 세므로 3~5쪽
d.save(r"C:\경로\3-5쪽.pdf", garbage=4, deflate=True)
d.close()
save(옵션 없음)               73,030바이트  (원본의 99.9%)
save(garbage=4, deflate=True) 68,657바이트  (원본의 93.9%)
pypdf                         69,214바이트  (원본의 94.7%)

garbage=4, deflate=True를 같이 주면 93.9%까지 내려갔습니다. 옵션을 빼먹으면 쪽만 사라지고 크기는 그대로인 파일이 나옵니다.

프로그램을 안 깔고 빼내기 — 엣지 인쇄

파이썬이 없어도 쪽을 빼낼 수는 있습니다. 엣지에서 PDF를 열고 Ctrl+P, 프린터를 「Microsoft Print to PDF」로 고른 뒤 페이지에서 맨 아래 칸에 3-5를 적습니다. 인쇄 창 맨 위 숫자가 「합계: 3 용지」로 바뀌고 미리보기도 3쪽부터 나옵니다.

엣지 인쇄 창에서 페이지 범위에 3-5를 넣어 합계 3 용지가 된 화면
엣지 인쇄 창에서 페이지 범위에 3-5를 넣어 합계 3 용지가 된 화면

「인쇄」를 누르면 저장할 이름을 묻습니다. 나온 파일을 재 봤습니다.

항목원본pypdf로 뽑은 3~5쪽엣지 인쇄로 뽑은 3~5쪽
쪽 수1033
크기73,111바이트69,214바이트11,219바이트
뽑히는 글자있음있음 (P03·P04·P05)0자
쪽 크기595.0000 x 842.0000pt595.0000 x 842.0000pt595.3200 x 841.9200pt

크기는 6분의 1로 줄었는데 글자를 한 자도 못 찾습니다. 파일 속을 들여다보니 글자도 그림도 없고 선·면 그림만 있었습니다.

엣지 인쇄로 뽑은 3~5쪽, 1쪽
   글자 수 0 / 글자 상자 0개 / 그림 0개 / 선·면 그림 13개

저희가 확인한 것은 뽑히는 글자가 0자라는 것까지입니다. 검색이나 복사를 직접 눌러 보지는 않았습니다. 다만 파일 안에 글자가 없으면 검색도 복사도 걸릴 것이 없고, 나중에 표를 뽑아내려 해도 뽑을 것이 없습니다. 눈으로 보여 주기만 하면 되는 자료라면 상관없지만, 받은 쪽이 글자를 찾을 문서라면 이 방법은 피하시는 편이 낫습니다. 쪽 크기도 가로 0.32pt, 세로 0.08pt 달라졌습니다.

결과

하고 싶은 일방법결과
이어진 쪽 몇 장만 (3~5쪽)pypdf 또는 엣지 인쇄 범위둘 다 3쪽. pypdf 쪽은 P03·P04·P05가 그대로, 엣지 쪽은 뽑히는 글자 0자
떨어진 쪽 (1·4·9쪽)pypdf 에 [1, 4, 9]적은 차례가 그대로 순서가 됩니다
한 쪽씩 전부pypdf 로 반복, 이름은 %02d10개 파일. 합치면 원본의 9.3배
용량까지 줄이고 싶을 때PyMuPDF select + garbage=4, deflate=True글자 문서는 그래도 93.9%까지만
파이썬이 없을 때엣지 Ctrl+P, 페이지 범위, Microsoft Print to PDF3쪽이 맞게 나왔지만 첫 쪽 기준 글자 0자, 선·면 그림 13개
회사 자료위 모두 내 컴퓨터 안에서 끝납니다어디에도 올리는 단계가 없습니다

실패한 것

확인하지 않은 것

함께 보기