什么是 XFDF?PDF 注释 XML 格式详解
XFDF 文件是 PDF 注释(也叫批注)的 XML 表示形式。XFDF 全称是 XML Forms Data Format,由 Adobe 推出,作为一种可移植、可直接阅读的方式,将 PDF 高亮、批注和表单数据与 PDF 文档本身分开携带。XFDF 不把注释嵌入二进制 PDF 内部,而是将它们存储在纯文本 XML 结构中,任何现代工具都能解析、diff 并转换它——这正是 pdfannotations.com 把它作为 PDF 和 XML FDF 之外的受支持输入格式的原因。
如果你曾从 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 schema。
最终得到的是一个极小的 XML 文件——通常只有几 KB——它捕获了你在 PDF 中创建的每一条注释,可以重新导入 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 十六进制颜色。 |
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 分开携带。它可能使用传统二进制编码,也可能使用 XML 编码。
- 优点: 比完整 PDF 小;与 Acrobat 无损往返转换。
- 缺点: 二进制——不方便直接阅读,难以清晰对比变更,没有 Adobe 库或专用 FDF 解析器更难解析。
XFDF(XML Forms Data Format)
XFDF 是 FDF 的 XML 继任者。相同数据模型,但编码为 XML。
- 优点: 可直接阅读,在 git 中清晰对比变更,任何 XML 库都能轻松解析,多数情况下比 FDF 更小,几乎被所有现代 PDF 工具支持。
- 缺点: 由于 XML 冗长,文件略大于 FDF(但仍然很小——几 KB)。
快速对比
| 属性 | PDF 内嵌 | FDF | XFDF |
|---|---|---|---|
| 编码 | 二进制 | 二进制或 XML | XML(纯文本) |
| 可直接阅读 | 否 | 仅 XML FDF | 是 |
| 在 git 中清晰对比变更 | 否 | 仅 XML FDF | 是 |
| 包含注释数据 | 是 | 是 | 是 |
| 包含页面内容 | 是 | 否 | 否 |
| 文件大小 | 大 | 小 | 小 |
| 与 Acrobat 来回转换 | 是 | 是 | 是 |
| pdfannotations.com 支持 | 是 | 仅 XML FDF | 是 |
对几乎所有现代工作流而言,XFDF 是正确选择。它是 Adobe 推荐用于新项目的格式,也是适合手工检查且兼容性最好的文本格式。
为什么用 XFDF 而不是内嵌注释?
在以下场景中,导出 XFDF 优于将注释留在 PDF 内部:
- 分享注释而不分享文档。 你可以给同事发一个 5 KB 的 XFDF 文件,而不是 50 MB 的 PDF。他们在 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。解析器完全在你的浏览器中运行——文件绝不会被上传到服务器——它把每条注释渲染在一个可排序、可筛选的工作区中,你可以把它转换为 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 文件,你通常想把它转换成更有用的格式。pdfannotations.com 中可用的转换选项有:
- Markdown——通用、可移植,在任何 Markdown 编辑器中都可用
- Obsidian——带 Callouts、YAML Frontmatter 和
[[Page References]]的 Markdown - Notion——用于 Notion 数据库的结构化行
- CSV——用于 Excel、Google Sheets 或透视分析
- JSON——用于编程流水线
- Text——纯文本,适合粘贴到邮件或聊天
- Excel——带结构化列的
.xlsx文件 - ZIP——一次打包多种格式
- AI Context Markdown——结构化,适合粘贴到 ChatGPT、Claude 或 Gemini
- RAG JSON——为 embedding 和向量数据库入库设计的 schema
要了解如何先从 Adobe Acrobat 取出 XFDF,请参见我们的如何导出 XFDF 批注(注释)指南。
XFDF 文件大小与限制
XFDF 文件非常小。一篇 300 页、带 200 条高亮和 50 条便签的学术论文,产生的 XFDF 文件大约 20–40 KB。格式本身没有强加实际的上限——Acrobat 能从带数千条注释的文档导出 XFDF——但如果你要处理极大的注释集,可能想按文档章节拆分导出,让单个文件更易管理。
pdfannotations.com 能处理浏览器内存可容纳的任何大小的 XFDF 文件,实际意味着单次会话数万条注释也不会有明显延迟。
常见 XFDF 误区
"XFDF 只能与 Adobe Acrobat 配合使用"
错误。XFDF 是 Adobe 发布的开放 XML schema,但任何支持该标准的 PDF 阅读器都能读写它。Foxit、PDF-XChange、Nitro 和许多其他阅读器都正确处理 XFDF。pdfannotations.com 也能解析任何合规工具(不仅 Acrobat)生成的 XFDF。
"XFDF 已被弃用"
错误。XFDF 仍是 PDF 注释的推荐交换格式。被实际取代的是较老的 FDF 格式。
"XFDF 不能携带表单数据"
错误。XFDF 同时携带表单数据和注释数据。<fields> 元素保存表单字段值;<annots> 元素保存注释。Acrobat 导出的大多数 XFDF 侧重注释侧,但该格式两者都支持。
"XFDF 会丢失颜色信息"
错误。每个注释元素上的 color 属性以十六进制字符串存储 RGB 值。只要你使用 Acrobat 标准的 Highlight 或 Comment 工具,颜色通过 XFDF 能无损保留。
什么时候应该用 XFDF?
当你需要以下任一情况时,XFDF 是正确选择:
- 一种可移植的注释数据文件,独立于源 PDF 传输
- 一种可直接阅读的格式,可检查、diff 或手工编辑
- 一种可转换的输入,输入到 pdfannotations.com 这类把注释转成 Markdown、Obsidian、JSON 或 CSV 的工具
- 一种可版本控制的注释表示,纳入 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 会保留高亮颜色吗?
会。每个注释元素携带一个 color 属性,内含 RGB 十六进制值,pdfannotations.com 在每种导出格式中都保留它。
我能手工编辑 XFDF 文件吗?
能。因为 XFDF 是纯 XML,你可以在任何文本编辑器中打开它,直接修改注释文本、颜色或页码。只需以纯文本形式保存为 .xfdf 扩展名即可。
相关指南
想了解更多?请查看这些相关指南:
- 如何从 Adobe Acrobat 导出 XFDF 批注(注释) - 从 Acrobat 取出 XFDF 文件并导入转换工具的分步说明
- XFDF 到 Obsidian:把 Adobe PDF 注释转换为 Markdown - 把 XFDF 导出转成带 Callouts 和 Frontmatter 的链接化、标签化 Obsidian 笔记
- PDF 批注(注释)转 AI 与 RAG - 把 XFDF 导出的注释导入 ChatGPT、Claude、Gemini 或向量数据库
- 把 PDF 高亮导出到 Obsidian:完整工作流指南 - 适用于任何 PDF 源的完整 Obsidian 工作流
- PDF 到 Markdown 最佳实践 - 适用于 Obsidian、Notion 等的干净转换模式