XFDF란? PDF 주석용 XML 포맷 설명
XFDF 파일은 PDF 주석의 XML 표현입니다. XFDF는 XML Forms Data Format의 약자로, Adobe가 PDF 하이라이트, 코멘트, 폼 데이터를 PDF 문서 자체와 분리해 휴대할 수 있도록 사람이 읽을 수 있는 포맷으로 도입했습니다. 주석을 바이너리 PDF 내부에 임베드하는 대신, XFDF는 이를 일반 텍스트 XML 구조에 저장합니다. 모든 현대 도구가 파싱·diff·변환할 수 있죠. 이것이 바로 pdfannotations.com이 PDF 및 XML FDF와 함께 XFDF를 입력 포맷으로 채택한 이유입니다.
Adobe Acrobat에서 주석을 내보내 PDF 옆에 작은 .xfdf 파일이 남은 경험이 있다면, 이 가이드가 그 파일에 실제로 무엇이 들어있는지, 구형 FDF 포맷과 어떻게 다른지, 그리고 XFDF 파일을 Markdown, Obsidian 노트, JSON, CSV로 여는·보는·변환하는 방법을 설명해 드립니다.
XFDF는 무엇의 약자?
XFDF는 XML Forms Data Format으로 펼쳐집니다. 분해하면:
- XML — 파일은 일반 Extensible Markup Language로, 어떤 텍스트 에디터에서든 열고 git에서 diff하고 표준 XML 라이브러리로 파싱할 수 있습니다.
- Forms Data — 원래 폼 필드 값을 운반하도록 설계되었으나 Adobe가 주석 데이터(하이라이트, 스티커 노트, 밑줄, 취소선, 자유 텍스트)도 운반하도록 확장했습니다.
- Format — 공개된 사양이지 독점 바이너리 blob이 아닙니다. Adobe는 Acrobat SDK에서 XFDF 스키마를 문서화합니다.
그 결과 PDF에서 만든 모든 주석을 담은 아주 작은 XML 파일—보통 몇 킬로바이트—이 만들어지며, Acrobat에 다시 가져오거나 pdfannotations.com 같은 변환 도구에 넣을 수 있습니다.
XFDF 파일 안에는 무엇이 있나요?
XFDF 파일은 구조화된 XML입니다. 루트 요소는 <xfdf>이며, 그 안에 일반적으로 다음이 있습니다:
<?xml version="1.0" encoding="UTF-8"?>
<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
<f href="research-paper.pdf"/>
<ids original="abc123def456" modified="789012abc"/>
<annots>
<highlight page="0" color="#FFEB3B" opacity="1.0"
subject="Highlight" name="ann_001"
date="D:20260720120000Z" creationdate="D:20260720115900Z">
<contents>This is the key argument of the paper.</contents>
<Popup page="0" rect="100,200,300,250" open="no"/>
</highlight>
<text page="2" color="#4F46E5" opacity="1.0"
subject="Note" name="ann_002"
date="D:20260720121000Z">
<contents>Review this section carefully before citing.</contents>
<Popup page="2" rect="120,220,260,260" open="no"/>
</text>
<underline page="5" color="#FF9800"
subject="Underline" name="ann_003"
date="D:20260720121500Z">
<contents>Definition of construct validity.</contents>
<Popup page="5" rect="80,180,300,220" open="no"/>
</underline>
</annots>
</xfdf>
가장 중요한 요소는 다음과 같습니다:
| 요소 | 용도 |
|---|---|
<f href="..."/> |
원본 PDF 파일명을 가리킵니다. |
<ids> |
라운드트립에 사용되는 Acrobat 내부 식별자. |
<annots> |
모든 주석 요소의 컨테이너. |
<highlight>, <text>, <underline>, <strikeout> |
개별 주석 타입. |
page 속성 |
주석이 있는 페이지 번호(0부터 시작). |
color 속성 |
마크업의 RGB 16진수 색상. |
date / creationdate |
Adobe PDF 날짜 포맷(D:YYYYMMDDHHmmSSZ). |
<contents> |
당신이 입력한 코멘트나 노트 텍스트. |
<Popup> |
원본 PDF에서 떠 있는 코멘트 팝업의 위치. |
XFDF는 일반 XML이므로, 어떤 주석이든 직접 검사하고, 스크립트를 작성하고, 몇 줄의 코드로 다른 포맷으로 변환할 수 있습니다.
XFDF vs FDF vs PDF 주석
PDF 주석은 세 가지 다른 위치에 존재할 수 있으며, 각각 트레이드오프가 있습니다. 차이를 이해하면 워크플로에 맞는 포맷을 고를 수 있습니다.
임베디드 PDF 주석
주석은 PDF 파일 내부에 페이지의 주석 배열 일부로 존재합니다. 텍스트를 하이라이트하고 단순히 PDF를 저장할 때 이렇게 됩니다.
- 장점: 자체 완비—하나의 파일에 모두 포함.
- 단점: 매번 편집 시 (잠재적으로 거대한) PDF를 다시 씀. 주석 공유는 문서 전체 공유를 의미. diff나 버전 관리가 어려움.
FDF (Forms Data Format)
FDF는 Adobe의 오래된 보조 파일 포맷으로, 폼 데이터와 주석을 PDF와 분리해 운반합니다. 기존 형식은 PDF 스타일 객체 문법을 쓰는 바이너리이며, Acrobat은 XML FDF도 내보낼 수 있습니다.
- 장점: 전체 PDF보다 작음; Acrobat과 깔끔하게 라운드트립.
- 단점: 기존 바이너리 형식은 사람이 읽을 수 없고 깔끔한 diff도 어려우며 전용 파서가 필요함. XML FDF는 읽을 수 있지만 XFDF보다 지원 범위가 좁음.
XFDF (XML Forms Data Format)
XFDF는 FDF의 XML 후속입니다. 같은 데이터 모델이지만 XML로 인코딩됩니다.
- 장점: 사람이 읽을 수 있고, git에서 깔끔히 diff, 어떤 XML 라이브러리로도 쉽게 파싱, 대부분의 경우 FDF보다 작음, 사실상 모든 현대 PDF 도구가 지원.
- 단점: XML의 장황함으로 FDF보다 파일 크기가 약간 큼 (그래도 수 KB로 작음).
빠른 비교
| 속성 | 임베디드 PDF | FDF | XFDF |
|---|---|---|---|
| 인코딩 | 바이너리 | 바이너리 또는 XML | XML(일반 텍스트) |
| 사람이 읽을 수 있음 | 아니오 | XML FDF만 | 예 |
| git에서 깔끔한 diff | 아니오 | XML FDF만 | 예 |
| 주석 데이터 포함 | 예 | 예 | 예 |
| 페이지 내용 포함 | 예 | 아니오 | 아니오 |
| 파일 크기 | 큼 | 작음 | 작음 |
| Acrobat과 라운드트립 | 예 | 예 | 예 |
| pdfannotations.com 지원 | 예 | XML FDF만 | 예 |
거의 모든 현대 워크플로에서 XFDF가 올바른 선택입니다. Adobe가 새 프로젝트에 권장하는 포맷이며, 직접 검사하기 좋은 텍스트 포맷 중 가장 널리 지원됩니다.
임베디드 주석 대신 왜 XFDF를 쓰나요?
XFDF를 내보내는 것이 PDF에 주석을 임베드된 채로 두는 것보다 나은 몇 가지 시나리오가 있습니다:
- 문서를 공유하지 않고 주석 공유. 동료에게 50 MB PDF 대신 5 KB XFDF 파일을 보낼 수 있습니다. 그들은 Acrobat에서 자신의 PDF 사본에 적용합니다.
- 주석 버전 관리. XFDF는 일반 텍스트라 PDF와 함께 git에 커밋해 언제 어떤 하이라이트가 추가됐는지 정확히 추적할 수 있습니다.
- 다른 포맷으로 주석 변환. XFDF는 pdfannotations.com 같은 도구에 가장 쉬운 입력—XML 구조가 Markdown 제목, JSON 필드, CSV 열에 직접 매핑됩니다.
- 다수 리뷰어. 각 리뷰어가 같은 원본 PDF에서 자신의 XFDF를 내보내고, 나중에 서로의 주석을 덮어쓰지 않고 병합할 수 있습니다.
- 장기 보관. XFDF는 특정 PDF 리더보다 오래 삽니다. XML 파서가 존재하는 한(예견 가능한 미래에 계속 존재할 것입니다), 주석은 읽을 수 있는 상태로 남습니다.
XFDF 파일을 여는 방법
XFDF는 일반 XML이라 여는 방법이 많습니다:
텍스트 에디터로 열기
어떤 텍스트 에디터—VS Code, Sublime Text, Notepad, BBEdit, Vim—든 XFDF 파일을 열 수 있습니다. 아무것도 설치하지 않고 내용을 검사하는 가장 빠른 방법입니다. 요소명(위 설명)을 알면 XML 구조는 자체 문서화됩니다.
브라우저로 열기
.xfdf 파일을 현대 브라우저에 드래그하세요. 브라우저는 XML을 접을 수 있는 노드로 렌더링하며, 큰 주석 세트를 빠르게 탐색하는 데 유용합니다.
Adobe Acrobat으로 다시 가져오기
Acrobat에서 File → Import → Data(또는 Comments → Import Comments)를 선택하고 XFDF 파일을 고르면, Acrobat이 주석을 일치하는 PDF에 다시 붙입니다. 주석이 올바른 위치에 놓이려면 PDF가 같은 문서(또는 그 사본)여야 합니다.
pdfannotations.com에 불러오기
XFDF 파일을 당사의 XFDF 주석 변환 도구에 드래그하세요. 파서는 전적으로 브라우저에서 실행—파일은 서버에 업로드되지 않습니다—되며, 각 주석을 정렬·필터 가능한 워크스페이스에 렌더링해 Markdown, Obsidian, Notion, CSV, JSON, 일반 텍스트로 변환할 수 있습니다.
코드로 파싱
XFDF는 XML이라 어떤 프로그래밍 언어에서든 파싱이 몇 줄이면 됩니다. 예를 들어 Python에서는:
import xml.etree.ElementTree as ET
tree = ET.parse('annotations.xfdf')
root = tree.getroot()
ns = {'xfdf': 'http://ns.adobe.com/xfdf/'}
for annot in root.findall('.//xfdf:annots/*', ns):
page = annot.get('page')
color = annot.get('color')
contents = annot.findtext('xfdf:contents', default='', namespaces=ns)
print(f"Page {page} [{color}]: {contents}")
이 스니펫은 20줄 미만으로 파일의 모든 주석을 인쇄합니다. 같은 논리가 JavaScript, Go, Rust, Java, XML 라이브러리가 있는 어떤 언어에도 적용됩니다.
XFDF 파일을 변환하는 방법
XFDF 파일을 얻으면, 보통 더 유용한 포맷으로 변환하게 됩니다. Markdown·CSV·일반 텍스트는 무료이고 Obsidian·Notion·JSON·Excel·ZIP·AI Context Markdown·RAG JSON은 Pro입니다. 사용 가능한 대상은:
- Markdown — 범용, 휴대 가능, 어떤 Markdown 에디터에서도 동작
- Obsidian — Callouts, YAML Frontmatter,
[[Page References]]가 있는 Markdown - Notion — Notion 데이터베이스용 구조화된 행
- CSV — Excel, Google Sheets, 피벗 분석용
- JSON — 프로그래밍 파이프라인용
- 일반 텍스트 — 이메일이나 채팅에 붙여넣기에 유용
- Excel — 구조화된 열이 있는
.xlsx파일 - ZIP — 여러 포맷을 한 번에 묶음
- AI Context Markdown — ChatGPT, Claude, Gemini에 붙여넣도록 구조화
- RAG JSON — 임베딩과 벡터 데이터베이스 수집용으로 설계된 스키마
Adobe Acrobat에서 처음에 XFDF를 꺼내는 단계별 지침은 당사의 XFDF 주석 내보내기 방법 가이드를 참조하세요.
XFDF 파일 크기와 한계
XFDF 파일은 아주 작습니다. 200개 하이라이트와 50개 스티커 노트가 있는 300페이지 학술 논문도 약 20–40 KB의 XFDF 파일을 생성합니다. 포맷 자체는 실질적인 상한을 두지 않습니다—Acrobat은 수천 주석이 있는 문서에서 XFDF를 내보낼 수 있습니다—하지만 극히 큰 주석 세트를 다룰 때는 개별 파일을 관리하기 쉽게 문서 섹션별로 내보내기를 나누는 것이 좋습니다.
pdfannotations.com은 파일당 최대 200MB까지 XFDF를 처리합니다. 처리 시간은 브라우저 메모리, 주석 수, 파일 구조에 따라 달라집니다.
일반적인 XFDF 오해
"XFDF는 Adobe Acrobat에서만 동작한다"
거짓. XFDF는 Adobe가 공개한 개방 XML 스키마지만, 지원 여부는 각 PDF 리더에 따라 다릅니다. Foxit, PDF-XChange, Nitro 등 많은 리더가 XFDF를 처리하며, pdfannotations.com은 대부분의 표준 준수 도구에서 만든 XFDF를 파싱합니다.
"XFDF는 폐기됐다"
거짓. XFDF는 여전히 PDF 주석의 권장 교환 포맷입니다. 실질적으로 대체된 것은 기존 바이너리 FDF입니다. XML FDF는 FDF 주석 변환 도구, XFDF는 XFDF 주석 변환 도구로 읽을 수 있습니다.
"XFDF는 폼 데이터를 운반할 수 없다"
거짓. XFDF는 폼 데이터와 주석 데이터 모두 운반합니다. <fields> 요소가 폼 필드 값을 갖고, <annots> 요소가 주석을 갖습니다. Acrobat의 대부분 XFDF 내보내기는 주석 측에 집중하지만, 포맷은 둘 다 지원합니다.
"XFDF는 색상 정보를 잃는다"
거짓. 각 주석 요소의 color 속성은 RGB 값을 16진수 문자열로 저장합니다. 원본 앱이 표준 색상 메타데이터를 기록하면 XFDF 주고받기에서 색상이 보존됩니다.
언제 XFDF를 써야 하나요?
다음 중 하나가 필요할 때 XFDF가 올바른 선택입니다:
- 원본 PDF와 분리해 이동하는 휴대 가능한 주석 데이터
- 검사·diff·직접 편집할 수 있는 사람이 읽을 수 있는 포맷
- 주석을 Markdown, Obsidian, JSON, CSV로 바꾸는 pdfannotations.com 같은 도구에 넣을 변환 가능한 입력
- git 내 주석의 버전 관리 가능한 표현
- 각자 자신의 XFDF를 내보내고 나중에 병합하는 다중 리뷰어 워크플로
PDF를 단일 리더에서만 읽고 하이라이트를 다른 곳에서 재사용할 필요가 없다면, 임베디드 PDF 주석으로 충분합니다. 읽기 그 이상을 하고 싶은 순간, XFDF가 더 나은 선택이 됩니다.
자주 묻는 질문
.xfdf는 무엇의 약자?
XFDF는 XML Forms Data Format의 약자입니다. PDF 폼 데이터와 주석의 XML 인코딩 표현입니다.
XFDF는 FDF와 같나요?
아니오. 기존 FDF는 PDF 스타일 객체 문법을 쓰고 XFDF는 XML 후속입니다. Acrobat은 XML FDF도 내보낼 수 있지만, XFDF는 더 읽기 쉽고 더 널리 지원되며 파싱도 쉽습니다.
Adobe Acrobat 없이 XFDF 파일을 열 수 있나요?
예. XFDF는 일반 XML이라 어떤 텍스트 에디터, 브라우저, XML 파서로도 열 수 있습니다. Markdown, Obsidian, CSV, JSON으로 변환하려면 pdfannotations.com의 XFDF 변환 도구를 사용하세요.
XFDF는 하이라이트 색상을 보존하나요?
예. 각 주석 요소는 RGB 16진수 값을 담은 color 속성을 가지며, pdfannotations.com은 모든 내보내기 포맷에서 이를 보존합니다.
XFDF 파일을 직접 편집할 수 있나요?
예. XFDF는 일반 XML이라 어떤 텍스트 에디터에서든 열어 주석 텍스트, 색상, 페이지 번호를 직접 수정할 수 있습니다. .xfdf 확장자로 일반 텍스트로 저장하기만 하면 됩니다.
관련 가이드
더 알고 싶나요? 이 관련 가이드를 확인하세요:
- Adobe Acrobat에서 XFDF 주석을 내보내는 방법 - Acrobat에서 XFDF 파일을 꺼내 변환 도구에 넣는 단계별 지침
- XFDF를 Obsidian으로 변환하는 워크플로우 - XFDF 내보내기를 Callout과 Frontmatter가 있는 Obsidian 노트로 변환
- PDF 주석을 AI와 RAG로 - XFDF로 내보낸 주석을 ChatGPT, Claude, Gemini, 벡터 데이터베이스에 투입
- PDF 하이라이트를 Obsidian으로 내보내기: 완전 워크플로 가이드 - 표준 주석이 있는 PDF를 위한 Obsidian 워크플로
- PDF 주석을 Markdown으로 내보내기 - Obsidian, Notion 등에서 작동하는 깔끔한 변환 패턴