Skip to content

导入与导出

福昕 PDF SDK 安卓版支持通过 FDF 和 XFDF 格式导入和导出注释数据,方便在不同文档或系统间交换注释。此外,SDK 还提供注释扁平化功能,可将注释内容永久合并到页面中。

FDF 与 XFDF 格式

格式常量说明
FDFFDFDoc.e_FDFForms Data Format,PDF 规范定义的二进制格式
XFDFFDFDoc.e_XFDFXML 版本的 FDF,基于 XML 文本格式,便于解析和集成

FDFDoc 是操作 FDF/XFDF 文件的核心类:

方法说明
FDFDoc(int type)创建空 FDF 文档(FDFDoc.e_FDFFDFDoc.e_XFDF
FDFDoc(String path)从文件路径加载 FDF 文档
getType()获取格式类型
isEmpty()判断是否为空
saveAs(String filePath)保存到文件

导出注释

导出全部注释

使用 PDFDoc.exportToFDF() 将文档中的注释导出到 FDF/XFDF 文件:

java
import com.foxit.sdk.fdf.FDFDoc;
import com.foxit.sdk.pdf.PDFDoc;

PDFDoc doc = new PDFDoc("path/to/Sample.pdf");
doc.load(null);

// 导出为 XFDF 格式
FDFDoc fdfDoc = new FDFDoc(FDFDoc.e_XFDF);
doc.exportToFDF(fdfDoc, PDFDoc.e_Annots, null);
fdfDoc.saveAs("path/to/annotations.xfdf");

备注

exportToFDF() 的第二个参数为导出类型,PDFDoc.e_Annots 表示导出注释。第三个参数为页面范围(Range 对象),传 null 表示导出所有页面。

导出单个注释

使用 PDFDoc.exportAnnotToFDF() 导出指定注释:

java
import com.foxit.sdk.fdf.FDFDoc;
import com.foxit.sdk.pdf.PDFDoc;
import com.foxit.sdk.pdf.PDFPage;
import com.foxit.sdk.pdf.annots.Annot;

PDFDoc doc = new PDFDoc("path/to/Sample.pdf");
doc.load(null);
PDFPage page = doc.getPage(0);

// 获取页面上的第一个注释
Annot annot = page.getAnnot(0);

// 导出为 FDF 格式
FDFDoc fdfDoc = new FDFDoc(FDFDoc.e_FDF);
doc.exportAnnotToFDF(annot, fdfDoc);
fdfDoc.saveAs("path/to/single_annot.fdf");

导入注释

使用 PDFDoc.importFromFDF() 从 FDF/XFDF 文件导入注释到文档中:

java
import com.foxit.sdk.fdf.FDFDoc;
import com.foxit.sdk.pdf.PDFDoc;

PDFDoc doc = new PDFDoc("path/to/Sample.pdf");
doc.load(null);

// 从 XFDF 文件加载注释数据
FDFDoc fdfDoc = new FDFDoc("path/to/annotations.xfdf");

// 导入注释到文档
doc.importFromFDF(fdfDoc, PDFDoc.e_Annots, null);

doc.saveAs("path/to/output.pdf", PDFDoc.e_SaveFlagNormal);

注释扁平化

扁平化(Flatten)将注释的视觉外观合并到页面内容中,注释本身被移除,内容变为页面的一部分(不可再编辑或选中)。

扁平化整个页面的注释

java
import com.foxit.sdk.pdf.PDFDoc;
import com.foxit.sdk.pdf.PDFPage;

PDFDoc doc = new PDFDoc("path/to/Sample.pdf");
doc.load(null);
PDFPage page = doc.getPage(0);

// 扁平化页面上的所有注释
page.flattenAnnots(true);

doc.saveAs("path/to/flattened.pdf", PDFDoc.e_SaveFlagNormal);

备注

flattenAnnots(boolean) 参数为 true 时扁平化所有注释,为 false 时仅扁平化表单字段。

扁平化单个注释

java
import com.foxit.sdk.pdf.PDFPage;
import com.foxit.sdk.pdf.annots.Annot;

PDFPage page = doc.getPage(0);
Annot annot = page.getAnnot(0);

if (annot != null && !annot.isEmpty()) {
    page.flattenAnnot(annot);
}

典型应用场景

场景推荐方案
团队协作审阅 — 在成员间传递注释导出为 XFDF 后分发,各成员导入到本地文档
服务端集中处理注释使用 XFDF(XML 格式)便于解析和数据库存储
生成最终发布文档 — 注释不可编辑先导出注释备份,再扁平化所有注释
归档保存 — 确保一致呈现扁平化所有注释和表单字段