PDF 안에는 ‘문서에 대한 문서’가 하나 더 있습니다
PDF에는 페이지 말고도 문서 속성이 들어 있습니다. 제목, 작성자, 주제, 키워드, 문서를 쓴 앱, PDF를 만든 소프트웨어, 처음 만든 시각과 마지막으로 저장한 시각입니다. 많은 파일이 같은 내용을 XMP라는 XML 블록에 한 번 더 저장합니다. 이 정보는 페이지 어디에도 보이지 않고, 대부분의 PDF 뷰어에서 파일 → 속성(문서 정보)에 들어가야 보이기 때문에 잊히기 쉽습니다.
아무도 일부러 입력하지 않은 PDF에도 일부는 들어갑니다. Chromium 151.0.7922.34에서 평범한 웹 페이지를 설정 변경 없이 PDF로 인쇄해 보니, 제목에는 페이지 제목인 Riverside Station Report, 작성 앱에는 Chromium, PDF 생성기에는 브라우저의 주 버전이 드러나는 Skia/PDF m151가 기록되었고, 인쇄한 시각도 초 단위로 남았습니다.
실험 방법
그렇게 Chromium으로 인쇄한 4쪽짜리 보고서에, 오피스 프로그램이 흔히 남기는 속성을 넣었습니다. 작성자, 초안 제목, 주제, 키워드, 작성 앱 이름, 몇 달 전으로 된 작성·수정 날짜, 그리고 작성자를 한 번 더 적은 XMP입니다. 여기에 속성보다 훨씬 자주 잊히는 것을 하나 더 넣었습니다. 1쪽에 붙은 검토자의 메모(스티커 노트)입니다. 이름과 값은 모두 영어로 된 가상의 것입니다.
이 파일을 PDF 병합·분할 도구에 들어 있는 바로 그 코드로 세 가지 방법으로 처리했습니다. 다른 PDF와 병합, 1-2쪽 추출, 한 쪽씩 분할입니다. 또 PDF → 이미지 변환기와 같은 PDF.js 렌더링과 캔버스 인코딩도 거쳤습니다. 그리고 결과물을 하나씩 열어 다시 읽었습니다.
병합·추출·분할: 문서 속성은 사라졌습니다
| 속성 | 정보를 넣은 원본 | 병합·추출·분할 후 |
|---|---|---|
제목 (Title) 작업용 제목이나 파일 이름이 그대로 들어가는 경우가 많고, '초안', 버전 번호도 함께 남습니다 | Riverside Station - Q3 maintenance (DRAFT v4) | 사라짐 |
작성자 (Author) 대개 파일을 저장한 계정의 이름이 자동으로 들어갑니다 | Jordan Example | 사라짐 |
주제 (Subject) 잘 보지 않는 칸이라 오히려 내부 사정이 드러나기도 합니다 | Internal - pump replacement costs | 사라짐 |
키워드 (Keywords) 작성자나 서식 파일이 넣은 자유 문구 | budget confidential pump 2 failure | 사라짐 |
작성 앱 (Creator) 문서를 쓴 프로그램 | ExampleWriter 7.2 (Windows) | 바뀜: pdf-lib (https://github.com/Hopding/pdf-lib) |
PDF 생성기 (Producer) PDF를 만든 소프트웨어, 버전까지 남는 경우가 많습니다 | Skia/PDF m151 | 바뀜: pdf-lib (https://github.com/Hopding/pdf-lib) |
만든 날짜 PDF가 처음 만들어진 시각 | 2026-05-11 08:42:00 UTC | 바뀜: 2026-11-08 11:07:23 UTC |
수정한 날짜 마지막으로 저장한 시각 | 2026-06-02 17:15:30 UTC | 바뀜: 2026-11-08 11:07:23 UTC |
XMP 패킷 작성자와 앱 정보의 XML 사본 | 있음, Jordan Example 기록 | 사라짐 |
메모는 매번 살아남았습니다
가장 중요한 결과입니다. 메모, 형광펜, 스티커 노트는 ‘주석(annotation)’이고, 주석은 자기가 붙어 있는 페이지에 딸려 있습니다. 페이지를 복사하면 주석도 함께 복사됩니다.
| 결과물 | 메모 작성자 | 메모 내용 |
|---|---|---|
| 다른 PDF와 병합 | Sam Reviewer | “Remove the supplier quote before this goes outside the company.” |
| 1-2쪽 추출 | Sam Reviewer | “Remove the supplier quote before this goes outside the company.” |
| 쪽별 분할, 첫 쪽 | Sam Reviewer | “Remove the supplier quote before this goes outside the company.” |
메모 내용은 “외부로 나가기 전에 공급업체 견적은 빼 주세요”라는 뜻의 가상 문구입니다.
속성에서 작성자 이름은 지워졌는데 1쪽에는 검토자 이름과 내부 지시가 그대로 붙어 있는, 이렇게 '반쯤 정리된' 파일이 실제로 곤란한 일을 만듭니다. 파일을 보내기 전에, PDF를 만든 프로그램에서 메모를 지우거나 아래처럼 페이지를 이미지로 바꾸세요.
검은 상자로 덮는 것은 가리기가 아닙니다
이름을 ‘검게 칠할’ 때 흔히 하듯, 1쪽 제목 위에 검은 사각형을 그린 뒤 그 쪽을 추출했습니다. 제목 “Riverside Station Report”는 가린 원본에서 여전히 텍스트로 추출되었고, 추출한 쪽에서도 그대로 추출되었습니다. 상자는 위에 그려졌을 뿐 아래 글자는 여전히 페이지의 일부라서, 드래그해 복사하거나 텍스트 추출 도구를 쓰면 그대로 나옵니다. 페이지 도구는 페이지에 있는 것을 상자와 숨은 글자까지 통째로 복사합니다.
페이지를 이미지로 바꾸면: 픽셀만 남습니다
정보를 넣은 파일의 1쪽을 변환기와 같은 방식으로 1191×1685 픽셀로 렌더링해 PNG와 JPG로 저장한 뒤, 각 이미지 파일 안의 블록을 전부 나열했습니다.
| 결과물 | 파일 안에 든 것 | 문서 속성·메모 내용 |
|---|---|---|
| PNG | 청크: IHDR, IDAT, IEND — 헤더, 픽셀 데이터, 끝 표시뿐입니다. 텍스트, EXIF, XMP 청크는 없습니다. | 사라짐 |
| JPG | JFIF 헤더, ICC 색상 프로필, 압축된 이미지. EXIF나 XMP 세그먼트는 없습니다. | 사라짐 |
페이지 이미지에는 물려받을 속성도, 주석 층도, 텍스트 층도 없습니다. 보이는 것이 전부입니다. 그래서 이번 실험에서 상자 아래 숨은 글자까지 실제로 없애 주는 결과물은 이것 하나뿐입니다. 보이는 픽셀만 남기 때문입니다. 대가도 분명합니다. 글자를 선택하거나 검색할 수 없고, 1191×1685는 인쇄보다 화면용에 맞는 해상도입니다. 이 장단점은 PDF → 이미지 가이드(영문)에 수치로 정리해 두었습니다.
이 실험이 다루지 않은 것
- 페이지에 인쇄된 내용. 머리글·바닥글의 이름, 서명, 각주에 찍힌 파일 경로, PDF로 인쇄되면서 함께 찍힌 변경 내용 추적은 페이지 내용이라 어떤 페이지 도구를 거쳐도 남습니다.
- PDF가 데이터를 숨길 수 있는 모든 방법. PDF에는 첨부 파일, 양식 입력값, 자바스크립트, 이전 편집에서 남은 객체도 들어갈 수 있습니다. 이번에는 흔한 경우인 속성, XMP, 메모만 시험했습니다.
- 암호가 걸린 PDF. 이 도구들로는 아예 열 수 없습니다.
PDF를 보내기 전 확인할 것
- PDF 뷰어에서 파일 → 속성(문서 정보)을 열어 제목과 작성자를 확인합니다.
- 메모(주석) 패널을 열어, 보낼 생각이 없던 메모, 형광펜, 노트를 지웁니다.
- 글자를 덮어서 가리지 마세요. 제대로 된 가리기(교정, redaction) 기능을 쓰거나, 해당 쪽을 PDF → 이미지 변환기로 이미지로 바꿉니다.
- 일부 쪽만 보낼 때는 해당 쪽만 추출하세요. 새 파일에는 원본의 제목, 작성자, XMP가 따라가지 않습니다. 다만 메모 패널은 한 번 더 확인하세요.
정보를 넣은 샘플을 내려받아 아무 PDF 뷰어에서나 속성과 메모를 열어 본 뒤, 도구로 한 쪽을 추출해서 비교해 보세요.
pdf-metadata-sample.pdf (30 KB)문서가 아니라 사진을 보내시나요? 사진 EXIF와 개인정보 가이드는 사진의 위치와 카메라 정보로 같은 실험을 했고, EXIF 뷰어로 공유 전에 사진을 확인할 수 있습니다.