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

如何在PDFTron中点击按钮保存已编辑的PDF文件及XFDF格式注释

手动保存PDF注释并导出XFDF的实现方案

核心逻辑

无需额外自定义开发,直接调用PDFTron原生接口即可在按钮点击事件中完成手动保存、导出XFDF的需求,具体步骤如下:

    1. 拿到当前正在编辑的PTPDFDoc实例
      如果你使用PTDocumentViewController加载PDF,直接读取实例的document属性即可;如果是自己加载的PDF,就用你初始化时创建的PTPDFDoc对象。
    1. 从PDF中导出所有注释对应的FDF文档
    // 第二个参数传nil代表导出全部页面的注释,也可以传入指定页码数组导出部分注释
    guard let fdfDoc = pdfDoc.fdfExtract(PTSDFDoc.e_annots, pageList: nil) else {
        // 导出失败的异常处理逻辑
        return
    }
    
    1. 将FDF转为XFDF格式上传服务端
      如果你需要直接拿XFDF字符串上传,用以下代码:
    guard let xfdfString = fdfDoc.saveAsXFDFString() else {
        return
    }
    // 此处调用你自己的服务端上传接口,传入xfdfString即可
    
    如果你需要先把XFDF存为本地文件,用以下代码:
    let savePath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] + "/current_annotations.xfdf"
    fdfDoc.saveAsXFDF(savePath)
    

可选操作

关闭自动保存

如果你不需要PDFTron的间隔自动保存逻辑,使用PTDocumentViewController时将autoSaveEnabled属性设置为false即可,后续只会在你点击按钮时触发保存。

保存完整PDF文件

如果你需要同时把修改后的完整PDF保存到本地,添加以下代码:

// e_incremental为增量保存,执行速度快;如果需要清理无用资源可以替换为e_remove_unused等其他枚举值
try? pdfDoc.save(toFile: yourLocalSavePath, flags: PTSaveOptions.e_incremental.rawValue)

XFDF导入说明

你贴出的代码是XFDF导入逻辑,和上述导出流程为反向操作:后续如果需要把服务端返回的XFDF同步到本地PDF,直接使用你现有导入合并代码即可。

内容的提问来源于stack exchange,提问作者bhaumik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:06:03