使用 PDF API 合并 PDF 文件

内容来源: 如何在 Mac 上合并 PDF 文件

1. 注册与认证

您可以注册一个免费的 ComPDFKit API 帐户,该帐户允许您在 30 天内免费无限制地处理 1,000 多个文档。

ComPDFKit API 使用 JSON Web Tokens 方法进行安全身份验证。从控制面板获取您的公钥和密钥,并按如下方式进行身份验证。

Swift 复制代码
// 创建客户端
let client: CPDFClient  =  CPDFClient (publicKey: public_key, secretKey: secret_key)

2. 创建 PDF 合并任务

选择PDF合并工具,替换上一步获取到的accessToken,将错误信息的显示语言替换成自己想要的语言类型,然后就可以在响应数据中获取到taskId了。

复制代码
Swift 复制代码
// 创建任务
// 创建一个 PDF 合并任务的示例
    let taskModel =  await client.createTask(url: CPDFDocumentEditor . MERGE , language: .english) 
// 获取任务 id 
    let taskId = taskModel ? .taskId ??  ""

3.上传文件

上传需要合并的PDF文件,并将其与任务ID绑定。

Swift 复制代码
// 上传文件
let path =  Bundle .main.path(forResource: "test" , ofType: "pdf" ) 
    let uploadFileModel =  await client.uploadFile(filepath: path ??  "" , language: .english, params: [ CPDFFileUploadParameterKey .pageOptions.string():[ "1,2" ]], taskId: taskId) 
// 上传文件
let uploadFileModel2 =  await client.uploadFile(filepath: path ??  "" ,language: .english ,params: [ CPDFFileUploadParameterKey .pageOptions.string():[ "1,2" ]], taskId: taskId)

复制

笔记:

  • 同一个任务中,上传多个文件(最多五个)。如果不传递pageOptions,则进行多文件合并。

  • 在同一个任务中,上传多个文件(最多五个)及pageOptions,并合并多个文件的指定页码。

  • 上传接口仅支持单文件上传。

4.合并PDF文件

文件上传完成后,通过任务ID调用此接口进行文件合并。

复制代码
Swift 复制代码
// 执行任务
let  _  =  await client.processFiles(taskId: taskId, language: .english)

5.获取任务信息

根据任务ID请求任务状态和文件相关的元数据。

Swift 复制代码
// 查询 TaskInfo 
let taskInfoModel =  await client.getTaskInfo(taskId: taskId, language: .english) 
}

完成后,您的完整代码应如下所示:

Swift 复制代码
// 创建一个客户端
let client: CPDFClient  =  CPDFClient (publicKey: public_key, secretKey: secret_key) 
Task { @MainActor  in 
    // 创建一个任务
    // 创建一个 PDF 合并任务的示例
    let taskModel =  await client.createTask(url: CPDFDocumentEditor . MERGE , language: .english) 
    // 获取任务 id 
    let taskId = taskModel ? .taskId ??  "" 
    // 上传文件
    let path =  Bundle .main.path(forResource: "test" , ofType: "pdf" ) 
    let uploadFileModel =  await client.uploadFile(filepath: path ??  "" , language: .english, params: [ CPDFFileUploadParameterKey .pageOptions.string():[ "1,2" ]], taskId: taskId) 
    // 上传文件
    let uploadFileModel2 =  await client.uploadFile(filepath: path ??  "" ,language: .english ,params: [ CPDFFileUploadParameterKey .pageOptions.string():[ "1,2" ]], taskId: taskId) 

    // 执行任务
    let  _  =  await client.processFiles(taskId: taskId, language: .english) 
    // 查询任务信息
    let taskInfoModel =  await client.getTaskInfo(taskId: taskId, language: .english) 
}
相关推荐
前端一课6 小时前
第 28 题:Vue3 的 Diff 算法核心原理(双端 Diff、PatchFlags、Block Tree、静态提升)
前端·面试
前端一课6 小时前
【vue高频面试题】第 21 题:Vue3 中的 Slot(插槽)— 基础、原理、使用场景、面试必问点
前端·面试
前端一课6 小时前
第 24 题:Vue3 的组件通信方式(props / emit / v-model / provide-inject / expose / eventBus
前端·面试
前端一课6 小时前
第 22 题:Teleport 的作用、原理和使用场景
前端·面试
前端一课6 小时前
第 29 题:Vue3 的 Teleport 原理(跨层级 DOM 挂载技术)
前端·面试
国服第二切图仔6 小时前
Electron for鸿蒙pc项目实战之下拉菜单组件
javascript·electron·harmonyos·鸿蒙pc
前端一课6 小时前
第 31 题:Vue3 中 watchEffect 的原理(依赖自动追踪 + 清理机制 + ReactiveEffect 全流程)
前端·面试
前端一课6 小时前
第 256 题:Vue3 的异步组件(defineAsyncComponent)+ Suspense 原理与面试高频点
前端·面试
q***04636 小时前
[golang][MAC]Go环境搭建+VsCode配置
vscode·macos·golang
前端一课6 小时前
第 27 题:Vue3 + TS 类型推断(Props 类型推导、Emit 类型推导、Setup 返回值类型)
前端·面试