You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Pdfium获取Acrobat Reader中PDF页面的批注文本?

用Pdfium提取PDF批注文本的解决方案

核心逻辑:区分注释类型处理

HIGHLIGHT是高亮注释,本身不存储批注文本,批注内容通常关联在对应的POPUP注释中;POPUP注释的/Contents字段就是你要提取的批注文本。

具体实现步骤

1. 匹配HIGHLIGHT与对应的POPUP注释

每个HIGHLIGHT注释都带有/Popup关联项,指向对应的POPUP注释引用:

  • 用FPDFPage_GetAnnotCount获取当前页面的注释总数
  • 循环调用FPDFPage_GetAnnot遍历所有注释对象
  • 对HIGHLIGHT类型的注释,调用FPDFAnnot_GetString读取其/Popup字段,找到关联的POPUP注释对象

2. 从POPUP注释提取文本

找到目标POPUP注释后,调用FPDFAnnot_GetString(或Unicode版本FPDFAnnot_GetStringW)读取Contents关键字对应的值:

// C++示例代码
wchar_t contentBuffer[2048];
FPDFAnnot_GetStringW(popupAnnot, L"Contents", contentBuffer, sizeof(contentBuffer)/sizeof(wchar_t));

3. 处理特殊场景

  • 如果/Contents为空,检查POPUP注释是否有/RC字段(富文本内容),读取后剥离<>标签提取纯文本
  • 若PDF加密,需先调用FPDF_SetPassword完成解密,否则无法读取注释内容
  • 调用FPDFAnnot_IsValid验证注释对象有效性,避免无效指针操作

针对你提供的注释结构的补充检查

核对你给出的注释结构数据:

  • 确认HIGHLIGHT注释的/Popup条目指向正确的POPUP对象
  • 检查POPUP注释的/Contents字段是否存在且包含内容

内容的提问来源于stack exchange,提问作者OM PRAKASH SEERVI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 14:17:35