위에서 파일을 고르면 바로 열립니다.준비됨 — 인터넷을 끊어도 이대로 동작합니다.이 브라우저에서는 쓸 수 없습니다 (나머지는 그대로 동작합니다).오프라인 저장에는 https:// 또는 localhost가 필요합니다.여기서는 저장할 수 없지만, 어느 쪽이든 올라가는 것은 없습니다.파일은 어디로도 가지 않았습니다. 파일 {total}개를 불러왔고 모두 이 사이트의 것입니다. {platform}무언가가 {hosts}에 접속했는데, 이 도구는 절대 그러지 않습니다. 살펴볼 만합니다. {platform}광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 파일이나 그 1바이트도 받지 않았습니다.광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 파일이나 그 1바이트도 받지 않았습니다.문제가 생겼습니다: {detail}. 처음부터 다시 하려면 페이지를 새로 고치세요.파일 {count}개를 읽는 중…파일 {count}개를 읽는 중…예시로 해 보기예시를 만드는 중…이 브라우저에서는 예시를 만들지 못했습니다. 대신 파일을 골라 주세요.
문서를 열고 뜯어내고 다시 쓰는 일은 모두 이 기기의 메모리 안에서, 이 주소에서 받아 온 코드가 합니다. 여기에는 업로드를 할 만한 것이 없고, 이 페이지 반대편에 그것을 받아 줄 서버도 없습니다.
✗ 업로드 없음
✗ 가입 없음
✓ 오프라인 동작
✓ 오픈 소스
✓ 파일은 기기에 그대로
실시간 확인:확인 중…
오프라인:확인 중…
그냥 믿지 마시고 직접 확인해 보세요. 개발자 도구의 '네트워크' 탭을 켜 놓고 파일을 압축해 보십시오. 페이지도, 사진도, 파일 이름도 실려 나가는 요청이 없습니다. 아니면 인터넷을 끊고 그냥 압축해 보셔도 됩니다.
이 약속을 직접 확인하는 방법
문서는 나갈 곳이 없습니다. 이 페이지가 연결해도 되는 주소는 Content-Security-Policy에 모두 적혀 있는데, 그중 이 사이트 것은 하나도 없습니다. 이 도구는 그 목록에 아무것도 더하지 않습니다. 선택 기능으로도 네트워크 기능이 없어요. 파일이 모일 만한 수신 지점이 없고, 설령 있더라도 거기로 파일을 보낼 코드가 없습니다.
형식 전체가 이 저장소 안에 있습니다. PDF는 객체의 목록과, 각 객체가 어디서 시작하는지 적어 둔 표입니다. src/objects.js가 그 문법을 읽고, src/reader.js가 표를 따라가고, src/writer.js가 새 표를 씁니다. 셋 중 어느 것도 요청을 보낼 수 있는 무언가를 불러오지 않습니다. 라이브러리를 내려받지도, 서버에서 그려 오지도 않습니다.
암호가 걸린 파일은 열지 않고 돌려보냅니다. 암호가 걸린 PDF는 거부합니다. 스캐너가 빈 암호로 만들어 기술적으로는 열리는 종류까지 포함해서요. 문서의 보호를 벗기는 일은 문서를 작게 만드는 일과 다른 일이고, 그걸 말없이 해 버리는 도구는 놀라운 도구입니다.
무언가를 넣는 게 아니라 빼냅니다. 완성된 파일에는 생성 날짜도, 제작 프로그램 줄도, 이걸 만든 도구의 이름도 들어가지 않습니다. 해당 항목을 켜면 XMP 패킷과 편집 프로그램이 남긴 비공개 블록까지 사라집니다. EXIF 도구가 하는 일을 컨테이너만 바꿔 그대로 하는 셈이에요.
구글이 불러오는 것과, 구글에게 주지 않는 것. 광고와 측정 스크립트는 구글에서 옵니다. 어느 쪽에도 내 문서에 관한 것은 넘어가지 않습니다. 파일도, 페이지도, 이름도, 용량도, 쪽수도요. PDF를 읽고 디코딩하고 쓰는 코드는 한 줄도 빠짐없이 이 출처에서 제공되고 저장소에 공개되어 있습니다.
후원 버튼이 불러오는 것과, 후원 버튼이 받지 못하는 것. 헤더의 "Buy me a coffee" 버튼은 cdnjs.buymeacoffee.com의 스크립트가 그리고, 글꼴은 Google Fonts에서 가져옵니다. 그저 링크일 뿐이에요. 방문을 보고하지도, 나에 관한 것이나 내 문서에 관한 것을 받아 가지도 않습니다. 누르지 않으면 아무 일도 일어나지 않고, 눌러서 가게 되는 곳은 남의 사이트입니다.
오프라인에서도 동작합니다. 네트워크를 끊어도 이 페이지의 기능이 전부 그대로 돌아갑니다. 가장 간단한 증거예요. 문서를 어딘가로 보내서 압축하는 도구라면 그 자리에서 멈출 테니까요.
직접 확인해 보세요. 위에 적은 어느 것도 그냥 믿으실 필요는 없습니다. 이 페이지는 저장소 안의 템플릿과 설정을 빌드 스크립트가 찍어 낸 결과이고, 그 스크립트는 누구나 읽고 직접 돌려 볼 수 있습니다. 결과물은 dist 브랜치에 그대로 올라가 있고요. 그래서 실제로 제공되는 파일과 소스를 빌드한 결과를 나란히 놓고 비교해 보실 수 있습니다:
먼저 읽어 볼 파일을 꼽자면, Content-Security-Policy는 config/site.toml, 읽고 다시 쓰는 과정 전부는 src/reader.js와 src/writer.js에 있습니다. 둘 다 네트워크에는 손이 닿지 않습니다.
회사 보안 소프트웨어가 업로드를 경고한다면. 그것은 브라우저에서 파일이 선택되는 순간을 지켜보며, 페이지가 그것을 보낼 생각인지는 알 수 없습니다 — 그래서 고르는 순간에 경고합니다. 여기서는 아무것도 보내지 않습니다. 브라우저 개발자 도구를 열고 네트워크 탭으로 옮긴 뒤 파일을 골라 보세요. 그것을 실어 나르는 요청은 없고, 이 페이지 자체의 로컬 미리보기 말고는 요청 자체가 없습니다. 같은 확인을 IT 팀도 삼십 초면 할 수 있습니다.
1 PDF 고르기
비밀번호는 아무것도 업로드하지 않고 이 브라우저에서 없앨 수 있습니다. 이 사이트의 PDF 잠금 해제를 쓴 다음, 잠금이 풀린 사본을 여기로 다시 가져오세요.
2 용량이 어디에 있는지 보기
"PDF 압축"은 이름 하나를 나눠 쓰는 서로 다른 두 가지 일입니다. 스캔한 문서는 사진 더미라, 그것만 다시 인코딩해도 파일 대부분을 건집니다. 계약서는 글자와 글꼴인데 이건 만든 프로그램이 이미 압축해 두었습니다. 안에 80%가 숨어 있지 않고, 어떤 도구를 가져와도 찾아낼 수 없어요. 둘 중 어느 쪽인지는 의견으로 갈릴 문제가 아니라서, 무엇에도 손대기 전에 여기 먼저 보여 드립니다.
3 얼마나 세게 짤지 정하기
PDF에는 각 이미지가 얼마나 크게 그려지는지가 기록되어 있습니다. 그래서 지면이 실제로 쓰는 몫을 짐작하지 않고 잴 수 있어요. 4000픽셀짜리 스캔을 종이 8인치 폭에 놓았다면 인치당 500픽셀을 싣고 있는 셈인데, 150이어도 인쇄 결과는 같고 화면에서도 똑같아 보입니다. 그래서 아무도 볼 수 없는 픽셀부터 씁니다. 치를 대가가 없는 몫이니까요.
이 파일이 기억하고 있는 출신 정보를 빼내기 이 파일을 만든 프로그램의 이름과 버전, 만든 날짜와 마지막으로 고친 날짜, XMP 패킷, 그리고 편집 프로그램이 자기 작업을 다시 불러오려고 남겨 둔 비공개 덩어리까지. 이 덩어리는 가끔 몇 메가바이트나 됩니다. 문서를 보여 주는 데 필요한 것은 하나도 없습니다.
Flate 스트림이 풀리지 않았습니다({detail})이 브라우저에는 CompressionStream이 없습니다LZW 스트림이 정의되지 않은 코드로 시작합니다이 스트림은 암호화되어 있습니다알 수 없는 필터, /{name}너무 깊이 중첩되었습니다끝을 넘어갔습니다{at}에 예상하지 못한 {found}{at}에 예상하지 못한 바이트 0x{hex}endstream이 없는 스트림{at}에 obj 키워드가 없습니다startxref가 없습니다xref 구역이 아닙니다/W가 없는 xref 스트림너비가 0인 필드를 가진 xref 스트림{amount}바이트{amount} KB{amount} MB{n}쪽{n}쪽이미지 {n}개이미지 {n}개항목 {n}개항목 {n}개크기가 거의 그대로{percent}% 작아짐{percent}% 커짐이미지는 JPEG 품질 {quality}로 다시 인코딩되고 원래 크기를 그대로 유지합니다.이미지는 그려지는 자리 기준으로 인치당 최대 {dpi}픽셀까지 줄인 뒤 JPEG 품질 {quality}로 인코딩됩니다.이미지내장 글꼴페이지 내용메타데이터 및 비공개 데이터기타 스트림구조와 부대 정보대체되고 참조되지 않는 것이 파일의 {percent}%가 이미지이고, 압축이 되는 것이 바로 그것입니다. 크게 줄어들 것으로 보입니다.이 파일의 약 {percent}%가 이미지입니다. 다시 인코딩하면 도움이 됩니다. 나머지 부분이 얼마나 작아질 수 있는지의 바닥을 정합니다.이 파일의 {percent}%만 이미지라서 이미지 압축기가 할 일이 많지 않습니다. 줄어드는 양은 대부분 문서를 다시 포장하고 더 이상 참조되지 않는 것을 빼는 데서 나옵니다.이 파일에는 이미지가 없습니다. 텍스트와 벡터 그림과 글꼴뿐이고 모두 이미 압축되어 있어서, 잘해야 한 자릿수 정도로 보시면 됩니다.{pages}에 걸쳐 {size}.{images} 내장.그중 {size}는 이제 아무것도 가리키지 않습니다. 이전 편집에서 남은 것이고, 그냥 옮겨 담지 않습니다.내장 글꼴이 이 파일에서 큰 몫을 차지합니다. 글꼴은 통째로 남깁니다. 글꼴을 쓰는 글자만 남기고 잘라 내면, 다른 사람이 열었을 때 글자가 빠지는 문서가 됩니다.그건 PDF가 아닙니다. 이 도구는 PDF 파일에만 씁니다.이 PDF는 암호화되어 있습니다. 암호가 비어 있더라도 그 보호를 걷어 내는 일은 파일을 작게 만드는 일과 다른 일이고, 이 도구는 그것을 몰래 하지 않습니다.이 파일에는 문서 카탈로그가 없어서 다시 쓸 것이 없습니다. PDF가 아니거나, 여기서 고칠 수 있는 정도를 넘어 손상된 것입니다.PDF처럼 시작하지 않습니다. %PDF- 헤더가 없습니다.이 PDF를 읽지 못했습니다: {detail}이 파일의 상호 참조 표가 내용과 맞지 않아서, 객체를 하나씩 훑어 읽었습니다. 이것은 복구이고 잘 되었지만, 어딘가로 보내기 전에 결과를 확인해 보세요.이 문서는 적어도 한 번 편집되고 다시 저장되어서, 이제 아무것도 가리키지 않는 예전 객체 사본을 안고 있습니다. 그것들은 다시 쓸 때 빠집니다.문서를 읽는 중이미지가 얼마나 크게 그려지는지 재는 중이미지를 다시 압축하는 중파일이 기억하는 출처 정보를 걷어 내는 중문서를 쓰는 중확인하려고 다시 읽는 중취소했습니다.취소했습니다. 바뀐 것은 없습니다. 다시 시작하려면 압축을 누르세요.확인: {found}이번 작업은 검증을 통과하지 못했습니다. {found}. 원본을 그대로 두세요.메모리에서 다시 열었습니다. 1쪽으로, 원본과 같습니다.메모리에서 다시 열었습니다. {pages}쪽으로, 원본과 같습니다.다시 쓴 파일이 {expected}쪽이 아니라 {pages}쪽으로 나왔습니다다시 쓴 파일이 깨끗하게 읽히지 않았습니다다시 쓴 파일이 다시 열리지 않았습니다 ({detail}){change}, {size} 절약.{size} — 시작할 때보다 작지 않습니다이 파일의 모든 것이 이미 더 줄일 여지가 거의 없었습니다. 원본이 보관하기에 더 나은 파일입니다.이 문서에는 이미지가 없어서 다시 인코딩한 것이 없습니다. 줄어든 양은 문서를 다시 포장하고 아무도 참조하지 않던 것을 뺀 데서 나왔습니다.이미지 {total}개 중 {touched}개를 다시 인코딩했습니다.이미지 {total}개 중 {touched}개를 다시 인코딩했고, 그중 {shrunk}개는 픽셀 수도 줄였습니다.{images}는 그대로 두었습니다: {reason}.응용 프로그램 메타데이터 {entries}를 지웠습니다.이전 편집에서 남은 오래되고 대체된 객체 사본은 옮겨 담지 않았습니다.원본의 상호 참조 표가 깨져 있어서 훑어 가며 다시 만들어야 했습니다. 이 파일을 넘기기 전에 확인해 보세요.그대로 둠: {why}{size}로 다시 압축{size}로 다시 압축 ({dpi}){size}로 축소{size}로 축소 ({dpi})이전 {dpi}JPEG 2000 — 어떤 브라우저도 디코딩하지 못합니다JBIG2 — 어떤 브라우저도 디코딩하지 못하고, 이미 촘촘하게 눌려 있습니다팩스 방식(CCITT) — 흑백 이미지가 작아질 수 있는 한계에 이미 와 있습니다CMYK — 다시 인코딩하면 인쇄 색이 틀어질 위험이 있습니다스텐실 마스크 — 이미 픽셀당 1비트입니다이미 작아서 다시 인코딩하면 화질만 깎입니다이 도구가 넘겨짚지 않을 낯선 색 공간입니다이미지 데이터가 디코딩되지 않았습니다어느 쪽에도 그려지지 않습니다이 브라우저가 이미지를 디코딩하지 못했습니다이 브라우저가 다시 인코딩해 주지 않았습니다여기서 만들어 낼 수 있는 어떤 것보다 이미 작습니다문서는 어디로도 가지 않았습니다. 파일 {total}개를 불러왔고 모두 이 사이트의 것입니다. {platform}무언가가 {hosts}에 접속했는데, 이 도구는 절대 그러지 않습니다. 살펴볼 만합니다. {platform}광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 문서나 그 1바이트도 받지 않았습니다.광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 문서나 그 1바이트도 받지 않았습니다.
원하는 결과가 나왔나요?
무엇이 잘못됐나요?
고맙습니다 — 큰 도움이 됩니다.
보내지는 것은 답변뿐이고, 그것도 버튼을 눌렀을 때만입니다. 파일도, 파일 이름도, 파일에 관한 어떤 정보도 보내지 않습니다.
# PDF 압축 — 문서 용량 줄이기
문서를 어디에도 보내지 않고 가볍게 만듭니다.
> PDF를 업로드하지 않고 작게 만듭니다. 파일을 읽고 다시 압축하고 새로 쓰는 일을 브라우저가 전부 처리합니다. 손대기 전에 용량이 실제로 어디에 쏠려 있는지부터 보여 줍니다.
이 페이지는 브라우저 안에서만 동작하는 대화형 도구입니다(https://abox.tools/ko/pdf-용량-줄이기/). 도구에 넘긴 어떤 것도 업로드되지 않습니다. 아래는 이 페이지가 도구에 대해 글로 설명하는 내용 전부입니다. 도구를 쓰려면 이 주소를 여세요.
## PDF 파일은 **절대 업로드되지 않습니다**. 서버가 아예 없으니까요.
문서를 열고 뜯어내고 다시 쓰는 일은 모두 이 기기의 메모리 안에서, 이 주소에서 받아 온 코드가 합니다. 여기에는 업로드를 할 만한 것이 없고, 이 페이지 반대편에 그것을 받아 줄 서버도 없습니다.
- ✗ 업로드 없음
- ✗ 가입 없음
- ✓ 오프라인 동작
- ✓ 오픈 소스
- ✓ 파일은 기기에 그대로
## PDF를 작게 만드는 방법
1. **PDF를 고릅니다.** 선택 영역에 끌어다 놓거나 직접 골라 주세요. 브라우저가 디스크에서 곧바로 읽습니다. 그동안 어디로도 아무것도 나가지 않습니다.
2. **용량이 어디에 있는지 봅니다.** 두 번째 단계의 요점이 이 분석입니다. 막대가 대부분 이미지라면 이 도구가 손댈 것이 있습니다. 대부분 글꼴과 페이지 내용이라면 그렇다고 말해 줄 텐데, 그럴 때 정직한 절감폭은 몇 퍼센트입니다. 1분을 쓰기 전에 알아 두는 편이 낫지요.
3. **얼마나 세게 짤지 정합니다.** 이름 붙은 설정들은 막연한 등급이 아니라 해상도입니다. 화면에서 읽을 용도면 96 DPI, 메일로 보낼 용도면 130, 그래도 인쇄해야 한다면 220. 각 값은 그 이미지가 지면에 실제로 얼마나 크게 그려지는지를 기준으로 잽니다. 그래서 작게 넣은 사진이 전면 스캔과 같은 취급을 받지 않습니다.
4. **압축하고, 검사했다고 적힌 줄을 확인합니다.** 다시 쓰기가 끝나면 완성된 파일을 이 페이지의 같은 리더가 다시 열어 쪽수를 셉니다. 그 수가 원본과 다르면 실패로 보고하고 내려받기를 내주지 않습니다.
## 자세한 설명
[PDF를 작게 만드는 방법, 그리고 어떤 것은 왜 줄지 않는지](https://abox.tools/ko/가이드/pdf-용량-줄이는-법/): PDF의 용량이 실제로 어디에 있는지, 스캔은 80% 줄고 계약서는 꿈쩍도 하지 않는 이유, 여기서 DPI가 무슨 뜻인지, 그리고 압축 도구가 남의 문서에 절대 해서는 안 되는 일.
## 상자 속 다른 도구
- [PDF 가리기](https://abox.tools/ko/pdf-가리기/): 글자를 파일에서 지우고, 지운 뒤에 파일을 검색해서 증명합니다.
- [이미지를 PDF로](https://abox.tools/ko/이미지-pdf-변환/): 사진을 문서 하나에 담습니다.
- [문서 스캐너](https://abox.tools/ko/문서-스캔/): 종이를 찍으십시오. 스캔한 것처럼 생긴 것이 돌아옵니다.
- [동영상에서 오디오 추출](https://abox.tools/ko/동영상-오디오-추출/): 동영상을 놓으면 소리만 가져갑니다. 화면은 한 번도 디코딩되지 않고, 아무것도 업로드되지 않습니다.
## 자주 묻는 질문
### 제 PDF가 어딘가로 업로드되나요?
아닙니다. 파일을 읽고 다시 압축하고 쓰는 일은 내 기기에서 도는 내 브라우저가 합니다. 이 도구에는 서버 쪽이라는 것이 없고, 이 페이지의 `Content-Security-Policy`에 연결해도 되는 주소가 전부 적혀 있는데 그중 이 사이트 것은 하나도 없습니다. 선택 기능으로도 네트워크 기능이 아예 없습니다.
### 제 PDF는 얼마나 작아지나요?
안에 무엇이 들었느냐에 전적으로 달렸습니다. 그래서 무엇이든 압축하기 전에 먼저 재서 보여 드리는 것입니다. 스캔한 문서는 거의 전부가 사진이라 흔히 60–90% 작아집니다. 계약서나 논문은 글자와 벡터 도형과 내장 글꼴로 이루어져 있고, 전부 그것을 만든 프로그램이 이미 압축해 둔 것들입니다. 이런 파일에서 절감폭은 보통 몇 퍼센트에 그치는데, 파일을 다시 묶고 더 이상 참조되지 않는 것을 버려서 얻는 몫입니다. 파일을 보지도 않고 몇 퍼센트를 약속하는 도구는 그냥 찍는 것입니다.
### PDF를 압축하면 품질이 떨어지나요?
안에 든 이미지는 다시 인코딩되니 그 부분은 떨어집니다. 나머지는 손대지 않습니다. 글자는 글자로 남아 선택도 검색도 되고, 글꼴은 통째로 보존되며, 벡터 도형은 그대로 복사됩니다. 게다가 아무 이득 없이 이미지를 망가뜨리는 일은 하지 않습니다. 다시 인코딩한 결과가 원본보다 작지 않으면 원본 바이트를 그대로 문서에 되돌려 놓습니다.
### 여기서 DPI가 무엇이고, 왜 물어보나요?
PDF에는 각 이미지가 지면에 얼마나 크게 그려지는지가 기록되어 있어서, 실효 해상도를 계산할 수 있습니다. 4000픽셀짜리 스캔을 종이 8인치 폭에 놓았다면 인치당 500픽셀을 싣고 있는 셈입니다. 화면에서는 그만큼을 쓸 수 없고 종이에서도 거의 못 씁니다. 그래서 정해 주신 값을 넘는 픽셀부터 버립니다. 아무도 볼 수 없는 품질에 값을 치르고 있으니까요. 작게 놓인 로고가 전면 스캔과 다르게 다뤄지는 것도 이 측정 덕분입니다.
### 암호가 걸린 PDF도 열 수 있나요?
열지 않습니다. 일부러 그렇게 했습니다. 암호화된 문서는 그렇다는 메시지와 함께 거부합니다. 암호가 비어 있을 때도 마찬가지인데, 많은 스캐너와 복합기가 그렇게 저장하거든요. 파일의 보호를 벗기는 일은 압축하는 일과 다른 일이고, 그걸 말없이 해 버리는 도구는 부탁하지도 않은 일을 하는 도구입니다.
### 압축되지 않는 PDF도 있나요?
안에 든 일부 이미지는 그렇습니다. JPEG 2000, JBIG2, 팩스 코딩(CCITT) 이미지는 어느 브라우저에도 디코더가 없어서 손대지 않고 통과시키고 그 사실을 알려 드립니다. 뒤의 둘은 흑백 2치 코덱이라 대개 이미 가장 작은 상태에 가깝고요. CMYK 이미지도 그대로 둡니다. 다시 인코딩하면 인쇄기가 뽑을 색이 틀어질 위험이 있기 때문입니다. 건너뛴 것은 전부 결과에 이유와 함께 적힙니다.
### 압축한 파일이 어디서나 열리나요?
열립니다. 결과는 PDF 1.5로 쓰는데, 2003년 이후에 나온 리더라면 다 이해하는 버전입니다. 게다가 그 사실을 내 기기에서 증명해 보입니다. 완성된 파일을 다시 열어 쪽수를 센 다음에야 건네주니까요. 양식, 링크, 북마크, 접근성 구조, 첨부된 파일은 모두 그대로 옮겨집니다. 남겨 두고 오는 것은 문서 안의 어떤 것도 더 이상 참조하지 않는 자료뿐입니다.
### 무료인가요? 가입해야 하나요?
무료이고 계정도, 로그인도, 체험판도 없습니다. 파일 용량 제한도 내 기기의 메모리가 허락하는 선까지입니다. 이 사이트는 광고로 유지되는데, 그 광고에도 내 문서에 관한 것은 넘어가지 않습니다.
### 오프라인에서도 되나요?
됩니다. 페이지를 한 번 불러온 다음 인터넷을 끊어도 계속 동작합니다. 아무것도 업로드되지 않는다는 가장 간단한 증명이기도 하고요. 문서를 어딘가로 보내서 압축하는 도구라면 선을 뽑는 순간 멈춰 버릴 테니까요.
## 이 약속을 직접 확인하는 방법
- **문서는 나갈 곳이 없습니다.** 이 페이지가 연결해도 되는 주소는 Content-Security-Policy에 모두 적혀 있는데, 그중 이 사이트 것은 하나도 없습니다. 이 도구는 그 목록에 아무것도 더하지 않습니다. 선택 기능으로도 네트워크 기능이 없어요. 파일이 모일 만한 수신 지점이 없고, 설령 있더라도 거기로 파일을 보낼 코드가 없습니다.
- **형식 전체가 이 저장소 안에 있습니다.** PDF는 객체의 목록과, 각 객체가 어디서 시작하는지 적어 둔 표입니다. `src/objects.js`가 그 문법을 읽고, `src/reader.js`가 표를 따라가고, `src/writer.js`가 새 표를 씁니다. 셋 중 어느 것도 요청을 보낼 수 있는 무언가를 불러오지 않습니다. 라이브러리를 내려받지도, 서버에서 그려 오지도 않습니다.
- **암호가 걸린 파일은 열지 않고 돌려보냅니다.** 암호가 걸린 PDF는 거부합니다. 스캐너가 빈 암호로 만들어 기술적으로는 열리는 종류까지 포함해서요. 문서의 보호를 벗기는 일은 문서를 작게 만드는 일과 다른 일이고, 그걸 말없이 해 버리는 도구는 놀라운 도구입니다.
- **무언가를 넣는 게 아니라 빼냅니다.** 완성된 파일에는 생성 날짜도, 제작 프로그램 줄도, 이걸 만든 도구의 이름도 들어가지 않습니다. 해당 항목을 켜면 XMP 패킷과 편집 프로그램이 남긴 비공개 블록까지 사라집니다. EXIF 도구가 하는 일을 컨테이너만 바꿔 그대로 하는 셈이에요.
- **구글이 불러오는 것과, 구글에게 주지 않는 것.** 광고와 측정 스크립트는 구글에서 옵니다. 어느 쪽에도 내 문서에 관한 것은 넘어가지 않습니다. 파일도, 페이지도, 이름도, 용량도, 쪽수도요. 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/reader.js`와 `src/writer.js`에 있습니다. 둘 다 네트워크에는 손이 닿지 않습니다.
PDF를 작게 만드는 방법
PDF를 고릅니다. 선택 영역에 끌어다 놓거나 직접 골라 주세요. 브라우저가 디스크에서 곧바로 읽습니다. 그동안 어디로도 아무것도 나가지 않습니다.
용량이 어디에 있는지 봅니다. 두 번째 단계의 요점이 이 분석입니다. 막대가 대부분 이미지라면 이 도구가 손댈 것이 있습니다. 대부분 글꼴과 페이지 내용이라면 그렇다고 말해 줄 텐데, 그럴 때 정직한 절감폭은 몇 퍼센트입니다. 1분을 쓰기 전에 알아 두는 편이 낫지요.
얼마나 세게 짤지 정합니다. 이름 붙은 설정들은 막연한 등급이 아니라 해상도입니다. 화면에서 읽을 용도면 96 DPI, 메일로 보낼 용도면 130, 그래도 인쇄해야 한다면 220. 각 값은 그 이미지가 지면에 실제로 얼마나 크게 그려지는지를 기준으로 잽니다. 그래서 작게 넣은 사진이 전면 스캔과 같은 취급을 받지 않습니다.
압축하고, 검사했다고 적힌 줄을 확인합니다. 다시 쓰기가 끝나면 완성된 파일을 이 페이지의 같은 리더가 다시 열어 쪽수를 셉니다. 그 수가 원본과 다르면 실패로 보고하고 내려받기를 내주지 않습니다.
아닙니다. 파일을 읽고 다시 압축하고 쓰는 일은 내 기기에서 도는 내 브라우저가 합니다. 이 도구에는 서버 쪽이라는 것이 없고, 이 페이지의 Content-Security-Policy에 연결해도 되는 주소가 전부 적혀 있는데 그중 이 사이트 것은 하나도 없습니다. 선택 기능으로도 네트워크 기능이 아예 없습니다.
제 PDF는 얼마나 작아지나요?
안에 무엇이 들었느냐에 전적으로 달렸습니다. 그래서 무엇이든 압축하기 전에 먼저 재서 보여 드리는 것입니다. 스캔한 문서는 거의 전부가 사진이라 흔히 60–90% 작아집니다. 계약서나 논문은 글자와 벡터 도형과 내장 글꼴로 이루어져 있고, 전부 그것을 만든 프로그램이 이미 압축해 둔 것들입니다. 이런 파일에서 절감폭은 보통 몇 퍼센트에 그치는데, 파일을 다시 묶고 더 이상 참조되지 않는 것을 버려서 얻는 몫입니다. 파일을 보지도 않고 몇 퍼센트를 약속하는 도구는 그냥 찍는 것입니다.
PDF를 압축하면 품질이 떨어지나요?
안에 든 이미지는 다시 인코딩되니 그 부분은 떨어집니다. 나머지는 손대지 않습니다. 글자는 글자로 남아 선택도 검색도 되고, 글꼴은 통째로 보존되며, 벡터 도형은 그대로 복사됩니다. 게다가 아무 이득 없이 이미지를 망가뜨리는 일은 하지 않습니다. 다시 인코딩한 결과가 원본보다 작지 않으면 원본 바이트를 그대로 문서에 되돌려 놓습니다.
여기서 DPI가 무엇이고, 왜 물어보나요?
PDF에는 각 이미지가 지면에 얼마나 크게 그려지는지가 기록되어 있어서, 실효 해상도를 계산할 수 있습니다. 4000픽셀짜리 스캔을 종이 8인치 폭에 놓았다면 인치당 500픽셀을 싣고 있는 셈입니다. 화면에서는 그만큼을 쓸 수 없고 종이에서도 거의 못 씁니다. 그래서 정해 주신 값을 넘는 픽셀부터 버립니다. 아무도 볼 수 없는 품질에 값을 치르고 있으니까요. 작게 놓인 로고가 전면 스캔과 다르게 다뤄지는 것도 이 측정 덕분입니다.
암호가 걸린 PDF도 열 수 있나요?
열지 않습니다. 일부러 그렇게 했습니다. 암호화된 문서는 그렇다는 메시지와 함께 거부합니다. 암호가 비어 있을 때도 마찬가지인데, 많은 스캐너와 복합기가 그렇게 저장하거든요. 파일의 보호를 벗기는 일은 압축하는 일과 다른 일이고, 그걸 말없이 해 버리는 도구는 부탁하지도 않은 일을 하는 도구입니다.
압축되지 않는 PDF도 있나요?
안에 든 일부 이미지는 그렇습니다. JPEG 2000, JBIG2, 팩스 코딩(CCITT) 이미지는 어느 브라우저에도 디코더가 없어서 손대지 않고 통과시키고 그 사실을 알려 드립니다. 뒤의 둘은 흑백 2치 코덱이라 대개 이미 가장 작은 상태에 가깝고요. CMYK 이미지도 그대로 둡니다. 다시 인코딩하면 인쇄기가 뽑을 색이 틀어질 위험이 있기 때문입니다. 건너뛴 것은 전부 결과에 이유와 함께 적힙니다.
압축한 파일이 어디서나 열리나요?
열립니다. 결과는 PDF 1.5로 쓰는데, 2003년 이후에 나온 리더라면 다 이해하는 버전입니다. 게다가 그 사실을 내 기기에서 증명해 보입니다. 완성된 파일을 다시 열어 쪽수를 센 다음에야 건네주니까요. 양식, 링크, 북마크, 접근성 구조, 첨부된 파일은 모두 그대로 옮겨집니다. 남겨 두고 오는 것은 문서 안의 어떤 것도 더 이상 참조하지 않는 자료뿐입니다.
무료인가요? 가입해야 하나요?
무료이고 계정도, 로그인도, 체험판도 없습니다. 파일 용량 제한도 내 기기의 메모리가 허락하는 선까지입니다. 이 사이트는 광고로 유지되는데, 그 광고에도 내 문서에 관한 것은 넘어가지 않습니다.
오프라인에서도 되나요?
됩니다. 페이지를 한 번 불러온 다음 인터넷을 끊어도 계속 동작합니다. 아무것도 업로드되지 않는다는 가장 간단한 증명이기도 하고요. 문서를 어딘가로 보내서 압축하는 도구라면 선을 뽑는 순간 멈춰 버릴 테니까요.