# PDF 합치기 — 나누고 페이지 순서도 바꾸기

서버를 한 바퀴 돌지 않고 페이지를 옮깁니다.

> PDF를 합치고, 하나를 여럿으로 나누고, 페이지를 끌어서 원하는 순서로 놓습니다. 전부 내 브라우저 안에서 일어납니다. 업로드도 계정도 없고, 완성된 파일은 건네기 전에 한 번 더 열어서 페이지를 세어 봅니다.

이 페이지는 브라우저 안에서만 동작하는 대화형 도구입니다(https://abox.tools/ko/pdf-합치기/). 도구에 넘긴 어떤 것도 업로드되지 않습니다. 아래는 이 페이지가 도구에 대해 글로 설명하는 내용 전부입니다. 도구를 쓰려면 이 주소를 여세요.

## 문서는 **절대 업로드되지 않습니다**. 서버가 아예 없으니까요.

고른 문서는 모두 이 주소에서 제공된 코드가 이 기기의 메모리 안에서 열고, 뜯고, 다시 써 냅니다. 여기에는 업로드를 일으킬 수 있는 것이 없고, 이 페이지 반대편에는 그걸 받아 줄 서버도 없습니다.

- ✗ 업로드 없음
- ✗ 가입 없음
- ✓ 오프라인 동작
- ✓ 오픈 소스
- ✓ 파일은 기기 밖으로 나가지 않음

## PDF를 합치거나 나누거나 순서를 바꾸는 방법

1. **PDF를 고릅니다.** 선택 영역에 끌어다 놓거나 직접 찾아 주시고, 나중에 더 넣으셔도 됩니다. 파일마다의 페이지는 지금까지의 순서 뒤에 붙습니다. 폴더 두 개를 따로따로 합칠 수 있는 이유가 그것입니다. 브라우저가 디스크에서 바로 읽습니다.
2. **페이지를 원하는 순서로 놓습니다.** 손잡이를 잡고 페이지를 끌거나, 화살표로 한 칸씩 밉니다. 옆으로 스캔된 페이지를 돌리고, 한 장을 빼고, 아니면 칸에 `1-3, 8, 12-`라고 적어 한 무리를 한꺼번에 남기거나 빼거나 돌리십시오. 번호는 움직일 때마다 다시 매겨지므로, 보이는 것이 곧 완성될 파일입니다.
3. **한 문서로 낼지, 여러 개로 낼지 정합니다.** 보통은 하나입니다. 나머지는 자르는 방식입니다. 몇 페이지마다, 지정한 페이지 번호에서, 한 페이지에 한 파일, 아니면 페이지가 나온 원래 파일별로. 파일이 여러 개가 되면 하나의 ZIP으로 건네므로, 저장 확인이 쉰 번이 아니라 한 번입니다.
4. **만들고, 확인했다는 줄을 읽으십시오.** 문서가 다 쓰이면, 이 페이지의 같은 판독기가 각각을 다시 열어 페이지를 셉니다. 그것이 요청한 내용과 어긋나면 그 작업은 실패로 보고되고 다운로드도 제공되지 않습니다.

## 자세한 설명

[PDF 페이지를 합치고 나누고 순서 바꾸는 법](https://abox.tools/ko/가이드/pdf-합치기와-나누기/): 여러 PDF를 하나로 묶고, 하나를 여럿으로 자르고, 페이지를 옮기는 법. 순서를 바꾸면 무엇이 살아남고 어떤 도구도 못 가져가는 것은 무엇인지, 그리고 왜 문서를 어디에도 올릴 필요가 없는지.

## 상자 속 다른 도구

- [PDF 압축](https://abox.tools/ko/pdf-용량-줄이기/): 문서를 어디에도 보내지 않고 가볍게 만듭니다.
- [PDF 가리기](https://abox.tools/ko/pdf-가리기/): 글자를 파일에서 지우고, 지운 뒤에 파일을 검색해서 증명합니다.
- [이미지를 PDF로](https://abox.tools/ko/이미지-pdf-변환/): 사진을 문서 하나에 담습니다.
- [문서 스캐너](https://abox.tools/ko/문서-스캔/): 종이를 찍으십시오. 스캔한 것처럼 생긴 것이 돌아옵니다.

## 자주 묻는 질문

### 제 PDF가 어딘가로 업로드되나요?

아닙니다. 읽고 복사하고 쓰는 일은 내 브라우저가 내 하드웨어에서 합니다. 이 도구에는 서버 쪽이 없고, 페이지의 `Content-Security-Policy`에는 연결할 수 있는 주소가 전부 적혀 있는데 그중 이 사이트 것은 없습니다. 이 도구에는 선택적인 네트워크 기능조차 아예 없습니다.

### 몇 개까지 합칠 수 있고, 얼마나 큰 파일까지 되나요?

도구에 적어 둔 제한은 없습니다. 제한은 내 기기입니다. 문서는 작업하는 동안 메모리에 올라가 있으니, 노트북이라면 수백 메가바이트는 군말 없이 합치고 그 위 어딘가에서 버거워집니다. 요금도, 속도 제한도, 워터마크도, 대기열도 없습니다. 그런 일을 할 상대가 반대편에 없으니까요.

### 합치거나 나누면 품질이 떨어지나요?

아닙니다. 페이지 위의 것은 다시 인코딩되지도, 다시 그려지지도, 다시 압축되지도 않습니다. 각 페이지의 내용 스트림과 그것이 참조하는 글꼴, 이미지, 벡터 그림이 바이트 단위로 그대로 복사됩니다. 그래서 글자는 여전히 선택되고 검색되며, 사진은 같은 사진입니다. 바뀌는 것은 페이지의 순서와 그 주변 구조뿐입니다.

### 북마크와 링크는 어떻게 되나요?

둘 다 버리는 대신 다시 만듭니다. 가리키던 페이지가 결과에 남아 있는 북마크는 그 페이지가 옮겨 간 자리를 가리킵니다. 페이지를 빼 버린 북마크는 사라지되, 아래에 살아남은 항목이 있으면 제목으로 남습니다. 여러 파일을 합치면 파일마다의 북마크가 그 파일 이름을 단 제목 아래로 들어갑니다. 페이지 사이의 링크도 같은 방식으로 따라가고, 워드와 LaTeX이 쓰는 이름 붙은 목적지도 포함됩니다. 목적지가 함께 오지 못한 링크는, 읽는 사람을 엉뚱한 곳으로 보내느니 아무 일도 하지 않는 채로 남습니다. 웹 주소로 가는 링크는 그대로 유지됩니다.

### 따라오지 않는 것은 무엇인가요?

네 가지이고, 도구는 그것을 작은 글씨가 아니라 결과 화면에서 말해 줍니다. 스크린 리더가 쓰는 태그된 읽기 순서 트리, 페이지 라벨('iii, iv, 1, 2' 같은 번호 매기기), 내장된 첨부 파일, 그리고 '페이지로 이동'도 '웹 주소 열기'도 아닌 모든 동작, 문서 자바스크립트를 포함해서입니다. 앞의 둘은 페이지가 움직인 순간 더 이상 존재하지 않는 순서를 적어 둔 것이고, 마지막은 새 파일로 가져가 달라고 부탁한 적 없는 것입니다. 문서의 태그가 중요하다면 원본도 함께 보관하십시오.

### 작성한 양식은 살아남나요?

살아남습니다. 양식 필드와 거기에 입력한 내용이 페이지와 함께 옮겨 오고, 새 문서도 양식으로 등록되어 뷰어들이 양식으로 다룹니다. 합칠 때 알아 둘 것이 하나 있습니다. 이름이 같은 필드 두 개는 어떤 뷰어에게나 한 필드입니다. 그래서 같은 양식의 사본 두 부를 합치면, 한쪽 페이지에서 칸을 채우면 다른 쪽도 함께 채워집니다. 도구는 그런 경우를 알아채고 알려 줍니다.

### 비밀번호가 걸린 PDF도 열 수 있나요?

아닙니다. 일부러 그렇게 했습니다. 암호화된 문서는 그렇다고 알려 주며 거절합니다. 비밀번호가 비어 있어도 마찬가지인데, 스캐너와 복합기가 그렇게 저장하는 경우가 많습니다. 파일의 보호를 벗기는 것은 페이지를 옮기는 것과 다른 일이고, 그것을 조용히 해 버리는 도구는 시키지 않은 일을 하는 셈입니다.

### 왜 페이지 미리보기가 없나요?

페이지를 그리려면 글꼴, 그러데이션, 투명 그룹, 혼합 모드까지 다루는 완전한 PDF 렌더러가 필요하기 때문입니다. 썸네일 몇 장을 위해 1메가바이트가 넘는 엔진을 받아서 돌려야 한다는 뜻입니다. 대신 타일이 보여 주는 것은 순서를 바꿀 때 실제로 다루는 정보입니다. 페이지 번호, 종이의 모양과 크기, 어떤 회전으로 쓰일지, 그리고 어느 파일에서 왔는지. 세로 페이지 더미 속에 섞인 가로 스캔은 이것만으로도 한눈에 보입니다.

### 완성된 파일은 어디서나 열리나요?

열립니다. 결과물은 PDF 1.5로, 또는 넣은 파일 중 하나가 요구한 가장 높은 버전으로 쓰입니다. 1.5는 2003년 이후 나온 모든 뷰어가 이해합니다. 도구는 그것을 내 기기에서 실제로 확인하기도 합니다. 완성된 파일을 다시 열고 페이지 트리를 따라가며 페이지를 센 다음에야 건네줍니다.

### 무료인가요? 가입해야 하나요?

무료이고 계정도, 로그인도, 체험판도 없으며, 내 기기의 메모리가 허락하는 것 말고는 크기 제한도 없습니다. 이 사이트는 광고로 유지되는데, 그 광고에도 내 문서에 관한 것은 넘어가지 않습니다.

### 오프라인에서도 되나요?

됩니다. 페이지를 한 번 불러온 다음 인터넷을 끊어도 계속 동작합니다. 아무것도 업로드되지 않는다는 가장 간단한 증명이기도 하고요. 합치려고 문서를 어딘가로 보내는 도구라면 선을 뽑는 순간 멈춰 버릴 테니까요.

## 이 약속을 직접 확인하는 방법

- **내 문서는 나갈 곳이 없습니다.** Content-Security-Policy에는 이 페이지가 연결할 수 있는 주소가 전부 적혀 있고, 그중 이 사이트 것은 하나도 없습니다. 이 도구는 거기에 아무것도 보태지 않습니다. 제 몫의 네트워크 기능이, 선택적인 것조차 없으니까요. 파일이 모일 수 있는 수신처가 여기엔 없고, 있다 한들 그리로 보낼 코드도 없습니다.
- **합치기야말로 올리지 않는 편이 가장 나은 작업입니다.** 사람들이 붙이는 문서는 대개 어딘가에서 온 것들입니다. 계약서와 그 서명 장, 여권 스캔과 거래 내역서, 진단서와 신청서. 온라인 병합 서비스는 그것들을 한자리에, 이미 정리된 채로 쥐게 됩니다. 이 도구가 가진 것은 브라우저 속 페이지 하나뿐이고, 나머지 절반이 없습니다.
- **포맷 전체가 이 저장소에 있습니다.** PDF는 객체 목록과, 각 객체가 어디서 시작하는지 적은 표입니다. `src/objects.js`가 그 문법을 읽고, `src/reader.js`가 표를 따라가고, `src/assemble.js`가 문서 사이로 페이지를 복사하고, `src/writer.js`가 결과를 씁니다. 넷 중 어느 것도 요청을 보낼 수 있는 것을 들여오지 않습니다. 라이브러리를 받아 오지도 않고, 서버에서 렌더링되는 것도 없습니다.
- **암호화된 파일은 열지 않고 돌려보냅니다.** 비밀번호가 걸린 PDF는 거절합니다. 스캐너가 빈 비밀번호로 만들어 기술적으로는 열리는 종류도 마찬가지입니다. 문서의 보호를 벗기는 것은 페이지를 옮기는 것과는 다른 일이고, 그것을 조용히 해 버리는 도구는 시키지 않은 일을 하는 셈입니다.
- **완성된 파일은 어디서 만들어졌는지 말하지 않습니다.** 생성기 줄도, 만든 날짜도, 도구 이름도 없습니다. 편집 프로그램이 남기는 XMP 패킷이나 사설 블록도 함께 옮기지 않습니다. 그것들은 예전에 있던 문서의 것이지, 방금 만든 문서의 것이 아니니까요. 페이지 안의 내용은 그대로 복사됩니다. 이 도구는 페이지를 옮길 뿐, 거기 적힌 것을 고쳐 쓰지 않습니다.
- **'페이지로 이동'이 아닌 동작은 복사되지 않습니다.** PDF에는 열릴 때 실행되는 지시가 들어갈 수 있습니다. 이것을 재생하라, 이 양식을 저 주소로 보내라, 이 자바스크립트를 실행하라. 이 도구를 지나온 페이지는 다른 페이지와 웹 주소로 가는 링크를 지키고 나머지는 잃습니다. 남의 페이지 순서를 바꾼다는 것이, 그 문서의 스크립트를 내 새 파일로 들여올 이유는 되지 않습니다.
- **구글이 불러오는 것과, 구글에게 주지 않는 것.** 광고와 측정 스크립트는 구글에서 옵니다. 둘 중 어느 쪽에도 내 문서에 관한 것은 넘어가지 않습니다. 파일도, 페이지도, 이름도, 크기도, 페이지 수도 마찬가지입니다. PDF를 읽고 복사하고 쓰는 코드는 한 줄도 빠짐없이 이 출처에서 제공되고 저장소에 공개되어 있습니다.
- **후원 버튼이 불러오는 것과, 거기에 주지 않는 것.** 머리글의 'Buy me a coffee' 버튼은 cdnjs.buymeacoffee.com의 스크립트가 그리고 글꼴은 Google Fonts에서 가져옵니다. 그것은 링크 이상은 아닙니다. 방문을 알리지도 않고, 나에 대해서도 내 문서에 대해서도 건네받는 것이 없습니다. 누르지 않으면 아무 일도 일어나지 않고, 눌러서 가는 곳은 남의 사이트입니다.
- **오프라인에서도 동작합니다.** 네트워크를 끊어도 이 페이지의 모든 것이 그대로 동작합니다. 가장 간단한 증거입니다. 합치려고 문서를 어딘가로 보내는 도구라면 거기서 멈출 테니까요.

**직접 확인해 보세요.** 위에 적은 어느 것도 그냥 믿으실 필요는 없습니다. 이 페이지는 저장소 안의 템플릿과 설정을 빌드 스크립트가 찍어 낸 결과이고, 그 스크립트는 누구나 읽고 직접 돌려 볼 수 있습니다. 결과물은 `dist` 브랜치에 그대로 올라가 있고요. 그래서 실제로 제공되는 파일과 소스를 빌드한 결과를 나란히 놓고 비교해 보실 수 있습니다: https://github.com/A-Box-of-Tools/website

먼저 읽어 볼 파일을 꼽자면, Content-Security-Policy는 `config/site.toml`, 그리고 복사 전체, 즉 한 문서에서 페이지를 들어내 다른 문서에 넣는 방식과 일부러 두고 오는 것들에 대해서는 `src/assemble.js`를 보십시오. 그 파일은 네트워크에 닿을 수 없고, 그 옆의 판독기와 기록기도 마찬가지입니다.
