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

iOS端SwiftUI开发如何从iPhone的Files应用提取PDF导入自有应用

iOS 从系统Files应用导入PDF到自有App实现方案

你需要的就是iOS系统原生提供的UIDocumentPickerViewController组件,它可以完美实现和Mail应用添加附件完全一致的交互效果,点击后唤起系统标准文档浏览器,支持读取iCloud Drive、本地存储及其他接入系统文件能力的第三方云盘中的文件。

前置配置

  • 如果需要访问iCloud Drive内的文件,需要在Xcode项目的「Signing & Capabilities」中开启iCloud能力,勾选「iCloud Documents」选项并配置对应容器。
  • 仅读取本地Files、第三方云盘文件的场景,无需额外配置iCloud权限,直接使用组件即可。

核心实现代码

1. 引入依赖框架

Swift项目直接引入UIKit和CoreServices即可,Objective-C项目引入对应头文件。

2. 唤起文档选择器

import UIKit
import CoreServices
import UniformTypeIdentifiers // iOS14+ 引入UTType需要

func openFilePicker() {
    // 配置仅允许选择PDF文件,需要支持其他类型可在数组内新增
    let supportedTypes = [UTType.pdf]
    let picker = UIDocumentPickerViewController(forOpeningContentTypes: supportedTypes)
    picker.delegate = self
    // 按需配置是否允许多选
    picker.allowsMultipleSelection = false
    present(picker, animated: true)
}

3. 处理选中的文件

实现UIDocumentPickerDelegate协议方法,获取并处理选中的PDF文件:

extension YourViewController: UIDocumentPickerDelegate {
    func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
        guard let pdfUrl = urls.first else { return }
        // 外部文件需要先申请安全域访问权限
        let canAccess = pdfUrl.startAccessingSecurityScopedResource()
        defer {
            if canAccess {
                pdfUrl.stopAccessingSecurityScopedResource()
            }
        }
        do {
            // 读取PDF数据,也可直接将文件拷贝到App沙盒做持久化存储
            let pdfData = try Data(contentsOf: pdfUrl)
            // 此处写入你的业务处理逻辑
        } catch {
            // 处理文件读取异常
        }
    }

    func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
        dismiss(animated: true)
    }
}

注意事项

  • 选中的外部文件URL属于安全隔离资源,必须调用startAccessingSecurityScopedResource()获取访问权限,使用完成后要及时调用stopAccessingSecurityScopedResource()释放权限,否则会出现读取失败的问题。
  • 如果需要长期使用选中的PDF文件,建议拿到文件后直接拷贝到App沙盒的Documents/Library目录下,后续访问沙盒内的副本无需重复申请外部访问权限。
  • 组件默认展示的就是和Mail应用完全一致的系统文档浏览器界面,无需额外自定义UI。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:45:04