입찰과 신청 서류 보관
사업자등록증, 자격 증명서, 위임장은 보통 따로 스캔한 PDF입니다. 공고 문서가 「목차 순서대로 PDF 하나」를 요구할 때, 전부 스튜디오로 끌어다 놓고 목차대로 정렬한 뒤 가로로 스캔된 페이지를 먼저 썸네일에서 세워 병합합니다.
Guide
PDF 병합은 두 개 이상의 PDF 파일을 지정한 순서대로 이어 붙여 새 PDF 하나로 만듭니다. 전 과정이 브라우저 안에서 돌아가고 파일은 내 컴퓨터를 떠나지 않습니다.
2026-09-09 업데이트5 sources11 min read
PDF 병합은 두 개 이상의 PDF 파일을 지정한 순서대로 이어 붙여 새 PDF 하나로 만듭니다. 전 과정이 브라우저 안에서 돌아가고 파일은 내 컴퓨터를 떠나지 않습니다.
이런 순간을 위한 도구입니다. 입찰 전에 표지, 본문, 자격 증명 스캔본을 한 부로 내야 할 때, 지도교수가 논문과 부록을 한 파일로 합치라고 할 때, 지출 결의 때 영수증 PDF 열몇 장을 하나로 합쳐 인쇄할 때, 장마다 따로 내보낸 강의 자료를 한 권으로 묶을 때. 공통점은 내용이 이미 PDF라서, 하나로 합치고 순서만 맞추면 된다는 것입니다.
온라인 병합 사이트 대부분과 달리 여기서는 「업로드—대기—다운로드」가 아니라, 브라우저가 파일을 읽어 메모리에서 곧바로 새 PDF를 다시 만듭니다. 그래서 한계도 분명합니다. 처리 속도는 쓰는 기기 성능에, 다룰 수 있는 크기는 서버 할당량이 아니라 브라우저가 쓸 수 있는 메모리에 달려 있습니다.
병합은 PDF 스튜디오의 패널 하나일 뿐입니다. 같은 스튜디오 안에서 병합 전에 어느 파일이든 페이지를 회전·삭제·재배치할 수 있고, 합친 결과를 다시 「스튜디오에 추가하고 계속 작업」으로 워터마크, 페이지 번호, 압축까지 같은 화면에서 이어서 처리할 수 있습니다.
이 페이지 위쪽에 PDF 스튜디오 본체가 있습니다. PDF 몇 개를 추가하고 왼쪽 목록에서 순서를 맞춘 뒤 「병합」 패널에서 실행하면 됩니다.
아래는 실제로 한 번 돌린 기록입니다. 입력 세 파일은 각각 1페이지 세로 표지, 8페이지 세로 본문, 2페이지 가로 부록이고, 병합할 때 각자의 페이지 크기와 방향을 유지했습니다:
입력(목록 순서)
cover.pdf 1페이지 A4 세로 1.6 KB
report.pdf 8페이지 A4 세로 7.9 KB
appendix.pdf 2페이지 A4 가로 2.6 KB
출력
병합된 문서.pdf 11페이지 10.7 KB
1페이지 ← cover 1페이지
2–9페이지 ← report 1–8페이지
10–11페이지 ← appendix 1–2페이지(여전히 가로)
출력 용량이 입력 세 개의 합보다 조금 작은 것은 새 파일이 내부 구조를 「객체 스트림」으로 다시 압축했기 때문입니다(원리 절 참고). 입력에 이미지가 많으면 출력 용량은 대체로 입력 합계와 비슷해집니다. 병합 자체는 이미지를 압축하지 않습니다.

순서가 틀렸다고 파일을 다시 추가할 필요는 없습니다. 왼쪽 목록에서 위로, 아래로 옮기면 됩니다. 아래 비교는 「부록」을 첫 자리에서 마지막 자리로 옮기기 전후의 목록 상태를 보여 줍니다:
조정 전에는 부록이 첫 자리에 있었고, 목록 끝으로 옮기면 출력 순서가 표지, 본문, 부록이 됩니다.
텍스트 파일은 그대로 이어 붙일 수 있지만 PDF는 안 됩니다. PDF는 객체 참조 그래프입니다. 파일이 번호가 붙은 객체들로 이루어지고, 끝의 상호 참조 표가 객체마다 바이트 오프셋을 기록합니다. 뷰어는 문서 카탈로그에서 시작해 참조를 따라 페이지 트리를 찾아가고, 「몇 번째 페이지」는 파일 안의 물리적 위치가 아니라 페이지 트리를 순회한 순서입니다. 두 파일이 각자 객체 번호(둘 다 1부터 시작합니다)와 상호 참조 표를 갖는데 그대로 이어 붙이면 번호가 충돌하고 오프셋이 전부 어긋나서, 뷰어가 아예 열지 못하거나 두 번째 %%EOF 앞부분까지만 인식합니다. 객체 모델, 페이지 트리, 증분 업데이트 전반은 PDF 파일 구조 입문(사이트 안내, 아직 비공개)에서 다루고, 여기서는 병합과 곧바로 관련된 부분만 짚습니다.
이 도구는 pdf-lib로 브라우저 안에서 병합하며 순서는 이렇습니다.
/Page 객체와 그것이 참조하는 모든 것(콘텐츠 스트림, 글꼴, 이미지, 주석)을 새 문서로 깊은 복사하고, 새 객체 번호를 붙이며 모든 참조를 고칩니다./Rotate 속성에 더합니다(PDF 규정상 이 값은 90의 정수 배여야 하므로 스튜디오의 회전도 90° 단위만 제공합니다).스튜디오에서 하는 회전, 삭제, 재배치는 모두 이 「페이지 목록」을 조작하는 일이고, 실제로 실행할 때 목록대로 원본에서 페이지를 꺼내므로 병합 전에 아무리 많이 정리해도 비용이 들지 않습니다.
「페이지 복사」는 자원을 페이지 단위로 복사합니다. 입력 세 파일이 같은 글꼴을 넣고 있다면 새 문서에는 그 글꼴이 세 벌 들어갑니다. pdf-lib은 파일을 가로질러 「이 두 글꼴 객체가 사실 같다」를 알아보고 중복을 제거하지 않습니다. 이미지도 마찬가지로 각 이미지가 자기가 있던 페이지를 따라 들어옵니다. 그래서 병합한 용량은 적어도 각 파일의 합 이상이 됩니다.
더 알아 둘 점은, 페이지별 회전과 재배치를 지원하려고 스튜디오가 한 번에 한 페이지씩 「페이지 복사」를 호출한다는 사실입니다. 자원 중복 제거는 같은 호출 안에서만 유효합니다. 그래서 한 파일에서 8페이지가 함께 쓰는 임베디드 글꼴 하나가 8번 복사됩니다. 실제로 Arial 서브셋을 넣은 8페이지 문서(17.5 KB)를 1페이지 표지와 병합해 보니 출력이 121 KB였습니다. 글꼴이 여덟 번 복사된 것입니다. 임베디드 글꼴 위주의 텍스트 문서라면 출력이 입력 합계보다 몇 배 커지고, 페이지마다 이미지가 다른 스캔본이라면 이미지가 원래부터 그 페이지에만 속해 있으므로 거의 영향이 없습니다.
반대로 출력이 입력 합계보다 조금 작아질 때도 있습니다. 직렬화할 때 PDF 1.5에서 도입된 객체 스트림(Object Streams)이 기본으로 켜져서, 작은 객체를 한데 묶어 스트림 하나로 Deflate 압축하기 때문입니다. 위 예시에서 12.1 KB가 10.7 KB가 된 것이 그 효과입니다(예시는 PDF 내장 표준 14 글꼴을 써서 임베디드 글꼴 파일이 없었기에 위의 부풀림이 일어나지 않았습니다). 이 기능은 이미지 용량에는 아무 영향을 주지 않습니다.
「페이지 복사」는 페이지 수준의 것만 가져갑니다. 문서 수준 구조는 문서 카탈로그에 매달려 어느 페이지에도 속하지 않으므로 새 파일에 들어가지 않습니다(판별법은 안내서의 「페이지 밖의 것들」 절 참고).
페이지를 가로지르는 내부 링크(예: 목차 페이지의 「5장으로 이동」)가 이름 있는 대상으로 구현되어 있으면 병합 후 동작하지 않습니다. 페이지 객체를 직접 가리키는 링크는 같은 파일 안이라면 보통 그대로 살아 있습니다.
PDF의 표준 보안 처리기는 암호에서 파생한 키로 모든 문자열과 스트림을 암호화합니다. pdf.js는 암호를 받으면 렌더링을 위해 복호화할 수 있지만, pdf-lib의 로더에는 복호화 구현이 없어 /Encrypt 사전을 만나면 그냥 거부합니다. 그래서 스튜디오에서 암호를 입력해도 썸네일을 볼 수만 있고, 병합할 때는 「암호화되어 있어 직접 편집할 수 없습니다」라는 안내가 나옵니다. 올바른 방법은 「PDF 잠금 해제」에서 암호로 암호 없는 사본을 만든 뒤 그 사본을 병합하는 것입니다. 이 단계 역시 로컬에서 끝납니다.
2-를 입력하세요.사업자등록증, 자격 증명서, 위임장은 보통 따로 스캔한 PDF입니다. 공고 문서가 「목차 순서대로 PDF 하나」를 요구할 때, 전부 스튜디오로 끌어다 놓고 목차대로 정렬한 뒤 가로로 스캔된 페이지를 먼저 썸네일에서 세워 병합합니다.
지도교수나 학술지가 본문, 도표 부록, 심의 승인 스캔본을 한 파일로 내라고 합니다. 병합 후 「페이지 번호」 패널에서 모든 페이지에 연속 번호를 넣고, 「메타데이터」에서 제목과 작성자를 채웁니다.
전자 영수증 열몇 장을 각각 내려받은 뒤 한 부로 합치면 한 번에 인쇄하고 보관하기 편합니다. 영수증 PDF에 디지털 서명이 있으면 병합이 파일 구조를 다시 쓰면서 서명이 무효가 되니, 보관용은 원본을, 인쇄용은 병합본을 쓰세요.
장별로 내보낸 강의 파일을 한 권으로 합치고, 장 사이에 빈 페이지를 간지로 넣은 다음 「N-up」으로 A4 한 장에 두 페이지씩 배치해 종이를 아낍니다.
개수 제한은 없습니다. 용량은 브라우저 메모리가 정합니다. 일반 데스크톱에서는 수백 MB짜리 스캔본 병합이 가능하고, 휴대폰 브라우저는 쓸 수 있는 메모리가 확실히 적어 한 번에 100 MB 안쪽을 권합니다. 200 MB를 넘는 파일은 안내가 나오지만 거부되지는 않습니다.
필요 없습니다. 페이지가 다 로드된 뒤에는 연결을 끊고도 쓸 수 있습니다. PDF 분석, 썸네일 렌더링, 새 파일 생성이 모두 로컬에서 이뤄지고 글꼴 매핑 표 같은 자원도 사이트와 함께 배포되어 외부 서비스에 기대지 않습니다.
북마크는 문서 수준 구조라 병합할 때 복사되지 않습니다. 목차 페이지의 이동 링크도 이름 있는 대상에 기대고 있으면 동작하지 않습니다. 「페이지 단위 복사」라는 구현 방식이 치르는 대가이며 파일이 손상된 것은 아닙니다.
가능합니다. 「PDF 분할」로 범위를 정해 나누면 내용 손실은 없습니다. 다만 나눠진 파일에 원본의 북마크와 속성이 되살아나지는 않습니다.
두 가지가 겹칩니다. 서로 다른 원본에 있는 같은 글꼴이 중복 제거되지 않고, 같은 파일 안에서 여러 페이지가 공유하는 임베디드 글꼴이 페이지마다 복사됩니다(스튜디오가 페이지 단위 회전과 재배치를 지원하려고 페이지마다 복사합니다). 임베디드 글꼴이 있는 텍스트 문서는 그래서 몇 배로 부풀 수 있고 스캔본은 거의 영향이 없습니다. 지금으로서 대안은 병합 후 더 손대지 않거나, 아주 작은 용량이 필요할 때 「PDF 압축」을 쓰는 것입니다. 다만 후자는 페이지를 이미지로 바꿔 글자를 다시 선택할 수 없게 하니 저울질이 필요합니다.
가능합니다. 파일을 클릭한 뒤 가운데 영역에서 필요 없는 페이지를 삭제하거나(또는 선택한 페이지만 남기거나) 하고 병합을 실행하세요. 삭제는 이번 출력에만 영향을 주고 원본 파일은 바뀌지 않습니다.
모든 처리가 브라우저 안에서 끝납니다. 파일은 브라우저의 File API로 메모리에 읽히고, pdf.js가 썸네일을 그리며, pdf-lib이 새 파일을 다시 만듭니다. 모두 이 기기에서 돕니다. 어떤 바이트도 서버로 전송되지 않고, 사이트는 어떤 파일을 처리했는지도 기록하지 않습니다. 페이지를 닫거나 새로 고치면 메모리 속 파일이 곧바로 해제됩니다.
PDFDocument.copyPages API: https://pdf-lib.js.org/(访问日期:2026-09-08)2026-09-09 업데이트
여러 PDF를 원하는 순서로 하나의 파일로 병합합니다
모든 처리는 브라우저 로컬에서 완료되며 파일은 어떤 서버에도 업로드되지 않습니다