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

PDF 여러 개를 원하는 순서로 합치기 — 윈도우에서 설치 없이 되는지까지 확인했습니다

한 줄로

저희가 해 본 범위에서는 윈도우 11에 기본으로 들어 있는 것만으로 PDF 여러 개를 한 파일로 합치지 못했습니다. 탐색기가 PDF 파일에 붙여 주는 명령에 「인쇄」가 아예 없고, 엣지는 탭을 세 개 열어 놓아도 지금 보고 있는 탭 하나만 인쇄 대상으로 셉니다. 워드로 열어 이어 붙이는 길은 되기는 되는데 10쪽짜리가 13쪽이 되고 글자와 테두리가 달라졌습니다. 쪽 수와 순서를 그대로 지킨 것은 파이썬(pypdf)뿐이었습니다.

이런 분께

실측 환경

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

시험에 쓴 파일

쪽마다 어느 파일의 몇 번째 쪽인지 큼직하게 찍어 둔 PDF 세 개를 만들었습니다. 합친 뒤에 순서가 맞는지 눈으로 바로 셀 수 있게 하려고 이렇게 했습니다.

파일쪽 수쪽에 찍힌 글자크기
Y1_A_표지.pdf2A-1, A-263,924바이트
Y1_B_본문.pdf5B-1 ~ B-565,899바이트
Y1_C_별첨.pdf3C-1, C-2, C-364,879바이트

합쳐서 10쪽입니다. 이 숫자가 결과를 보는 기준입니다.

먼저 확인한 것 — 윈도우 기본 기능으로 되나

탐색기에서 여러 개 골라 「인쇄」

탐색기가 파일마다 붙여 주는 명령 목록을 그대로 뽑아 PDF와 다른 형식을 견줬습니다.

PDF : 열기(O) | Notepad++로 편집 | 즐겨찾기에 추가(F) | ... | 속성(R)
PNG : 열기(O) | 바탕 화면 배경으로 설정(B) | 인쇄(P) | 오른쪽으로 회전(T) | ...
TXT : 열기(O) | 편집 | 인쇄 | ...

PNG와 TXT에는 「인쇄」가 있고 PDF에는 없습니다. 여러 개를 골랐을 때 뜨는 메뉴는 따로 확인하지 못했습니다만, 파일 하나에도 없는 명령이 여러 개를 골랐다고 생기지는 않습니다. 이 컴퓨터에서 PDF를 여는 기본 프로그램은 엣지(MSEdgePDF)인데, 등록된 명령이 openrunas 둘뿐이라 인쇄 명령 자체가 없습니다. 명령줄로 억지로 불러도 같은 자리에서 막힙니다.

> Start-Process -FilePath Y1_A_표지.pdf -Verb Print
오류: 이 작업을 하기 위해 지정된 파일로 아무 응용 프로그램도 연결되어 있지 않습니다.

기본 프로그램을 다른 PDF 뷰어로 바꾸면 「인쇄」가 생길 수는 있습니다. 다만 그건 그 뷰어를 깐 상태라는 뜻입니다. 그쪽에서 여러 개를 골라 인쇄하면 어떻게 되는지는 저희가 시험하지 않았습니다.

엣지에서 세 개를 탭으로 열고 인쇄

엣지 창 하나에 PDF 세 개를 탭으로 띄우고 Ctrl+P를 눌렀습니다. 인쇄 창 맨 위에 「합계: 2 용지」라고 나옵니다. 지금 보고 있는 탭(A, 2쪽)만 셈에 들어갔습니다. 프린터를 「Microsoft Print to PDF」로 바꿔도 그대로였습니다.

엣지에 PDF 3개가 탭으로 열려 있는데 인쇄 창에는 합계 2 용지라고만 나온다
엣지에 PDF 3개가 탭으로 열려 있는데 인쇄 창에는 합계 2 용지라고만 나온다

명령줄로 한꺼번에 넘겨도 막힙니다.

> msedge.exe --headless --disable-gpu --print-to-pdf=C:\...\합본.pdf --no-pdf-header-footer
    file:///C:/.../Y1_A_표지.pdf file:///C:/.../Y1_B_본문.pdf file:///C:/.../Y1_C_별첨.pdf

[0918/110125.664:ERROR:chrome\app\chrome_main.cc:321] Multiple targets are not supported in headless mode.
종료코드=13   합본.pdf 는 만들어지지 않음

파일 하나만 넘기면 종료코드 0으로 끝나고 파일이 생기기는 합니다. 그 파일은 1쪽에 1,101바이트이고, 뽑히는 글자 0자, 그림 0개, 선 1개였습니다. 원본 2쪽이 담기지 않았습니다. 왜 그런지는 캐지 않았습니다.

하나씩 「Microsoft Print to PDF」로 인쇄하면

창을 띄워 놓고 「인쇄」를 누르면 「다른 이름으로 프린터 출력 저장」 창이 떠서 이름을 묻고, 경로를 적으면 그 자리에 파일이 하나 생깁니다. 저희가 이 절차를 두 번 밟아 본 결과가 그랬습니다. 10쪽짜리에서 3~5쪽만 인쇄해 11,219바이트 파일 하나, 사진 문서를 전부 인쇄해 1,641,339바이트 파일 하나입니다. 한 번 인쇄에 한 파일이고, 여러 파일을 이어 붙이는 자리가 이 절차 안에 없습니다.

되기는 되는 길 — 워드로 열어 이어 붙이기

워드는 PDF를 편집할 수 있는 문서로 바꿔 줍니다. 빈 문서에 PDF 세 개를 차례로 끼워 넣고 PDF로 다시 내보내면 한 파일이 됩니다. 저희는 화면 메뉴를 누르지 않고 자동화(COM)로 파일 끼워 넣기(Selection.InsertFile)와 내보내기(ExportAsFixedFormat)를 시켜 시간과 쪽 수를 쟀습니다.

InsertFile Y1_A_표지.pdf -> 성공, 1.1초, 누적 쪽수=5
InsertFile Y1_B_본문.pdf -> 성공, 0.7초, 누적 쪽수=10
InsertFile Y1_C_별첨.pdf -> 성공, 0.7초, 누적 쪽수=13
저장한 합본 크기=62,721바이트, 쪽수=13

10쪽이 13쪽이 됐습니다. 1쪽, 3쪽, 5쪽이 빈 쪽입니다.

워드로 이어 붙인 결과 13쪽. 1·3·5쪽이 빈 쪽이고 테두리가 사라진 쪽이 있다
워드로 이어 붙인 결과 13쪽. 1·3·5쪽이 빈 쪽이고 테두리가 사라진 쪽이 있다

쪽마다 글자를 뽑아 원본과 견줬더니 이렇게 달라져 있었습니다.

본 것원본워드를 거친 뒤
첫 쪽 글자줄「A 표지」 / 「A-1」 두 줄「A 표지 A-」 한 줄 + 「1」 다음 줄
B·C 쪽 위의 제목 줄「B 본문」·「C 별첨」 있음사라짐
A 1쪽의 선·면 그림 개수1개A 내용이 든 쪽 12개, B·C 내용이 든 쪽 0개
쪽에서 가장 큰 글자재지 않음B-1~B-4 쪽 72pt, B-5·C-3 쪽만 16pt

쪽 수를 세는 일, 「몇 쪽의 무슨 항목」을 가리키는 일이 걸려 있다면 이 길은 위험합니다. 반대로 합친 뒤 어차피 글을 고쳐야 하는 문서라면 워드에서 손보고 다시 PDF로 내보내는 편이 편할 수 있습니다.

쪽 수와 순서를 지키려면 — pypdf

파이썬이 깔려 있다면 이쪽이 확실합니다. 설치는 한 줄입니다.

pip install pypdf

합치는 코드도 짧습니다. append는 파일을 통째로 뒤에 붙입니다.

from pypdf import PdfWriter

w = PdfWriter()
for p in [r"C:\경로\표지.pdf", r"C:\경로\본문.pdf", r"C:\경로\별첨.pdf"]:
    w.append(p)
with open(r"C:\경로\합본.pdf", "wb") as f:
    w.write(f)

목록에 적은 차례가 그대로 결과 순서입니다. 10쪽이 나왔고 쪽에 찍힌 글자도 그대로였습니다.

A -> B -> C : 10쪽, 196,998바이트
  A-1, A-2, B-1, B-2, B-3, B-4, B-5, C-1, C-2, C-3
C -> A -> B : 10쪽
  C-1, C-2, C-3, A-1, A-2, B-1, B-2, B-3, B-4, B-5
pypdf 로 합친 결과 10쪽. A-1부터 C-3까지 순서가 그대로다
pypdf 로 합친 결과 10쪽. A-1부터 C-3까지 순서가 그대로다

책갈피는 어떻게 되나

합치기 전 세 파일에는 책갈피가 하나도 없었고, append로 합친 결과에도 없었습니다. 없던 것이 생기지는 않습니다.

원본에 책갈피가 있으면 이야기가 다릅니다. B 파일에 「B 1장」(1쪽), 「B 3장」(3쪽) 두 개를 달아 놓고 A 뒤에 붙였더니, 합본에서 각각 3쪽과 5쪽을 가리켰습니다. A가 2쪽이니 두 쪽씩 밀린 자리입니다. 쪽 번호를 알아서 고쳐 줍니다.

합치면서 파일 이름으로 책갈피를 달아 두면 뒤에 찾기가 편합니다.

from pypdf import PdfReader, PdfWriter
import os

w, 시작 = PdfWriter(), 0
for p in [r"C:\경로\표지.pdf", r"C:\경로\본문.pdf", r"C:\경로\별첨.pdf"]:
    r = PdfReader(p)
    for pg in r.pages:
        w.add_page(pg)
    w.add_outline_item(os.path.splitext(os.path.basename(p))[0], 시작)
    시작 += len(r.pages)
with open(r"C:\경로\합본.pdf", "wb") as f:
    w.write(f)
합본 10쪽, 197,715바이트
책갈피 : Y1_A_표지 -> 1쪽 / Y1_B_본문 -> 3쪽 / Y1_C_별첨 -> 8쪽

이 코드는 add_page로 한 쪽씩 옮기는 방식이라 원본에 달려 있던 책갈피는 따라오지 않습니다. 책갈피 두 개가 달린 B를 add_page로만 옮겨 봤더니 합본은 10쪽인데 책갈피가 하나도 없었습니다. 둘 다 살리려면 append에 이름을 같이 넘기면 됩니다. 파일별 책갈피 아래에 원본 책갈피가 한 단 들어간 모양으로 나왔습니다.

w.append(r"C:\경로\Y1_A_표지.pdf", outline_item="표지")
w.append(r"C:\경로\Y1_B_본문_책갈피.pdf", outline_item="본문")  # 「B 1장」·「B 3장」이 달린 파일
w.append(r"C:\경로\Y1_C_별첨.pdf", outline_item="별첨")
합본 10쪽, 198,133바이트
  표지 -> 1쪽
  본문 -> 3쪽
      B 1장 -> 3쪽
      B 3장 -> 5쪽
  별첨 -> 8쪽

폴더째 합칠 때 순서가 꼬이는 자리

「폴더에 있는 PDF를 이름순으로 다 합쳐라」로 짜면 한 군데서 걸립니다.

>>> sorted(["10_열번째.pdf", "2_두번째.pdf", "1_첫번째.pdf"])
['10_열번째.pdf', '1_첫번째.pdf', '2_두번째.pdf']

숫자가 아니라 글자로 견주기 때문에 10_1_보다 앞에 섭니다. 이름을 자릿수에 맞춰 다시 붙이면 제자리를 찾습니다.

>>> sorted(["10_열번째.pdf", "02_두번째.pdf", "01_첫번째.pdf"])
['01_첫번째.pdf', '02_두번째.pdf', '10_열번째.pdf']

어느 방법으로 합치든 합친 뒤 쪽 수와 첫 쪽·마지막 쪽은 세어 보시는 편이 안전합니다.

결과

방법설치 필요쪽 수순서내용
탐색기에서 여러 개 골라 인쇄PDF에는 「인쇄」 명령 자체가 없습니다
엣지에서 탭 여러 개 열고 Ctrl+P없음보고 있는 탭 하나만 인쇄됩니다(합계 2 용지)
하나씩 Microsoft Print to PDF없음한 번 인쇄에 파일 하나. 이어 붙이는 자리가 없습니다
워드에 끼워 넣고 PDF로 저장워드10 → 13지켜짐빈 쪽 3개, 제목 줄 사라짐, 테두리·글자 크기 달라짐
pypdf파이썬 + pypdf10 → 10지켜짐쪽에 찍힌 글자 그대로. 책갈피는 따로 달 수 있습니다

실패한 것

확인하지 않은 것

함께 보기