MyApiLibraryDemo 0.1.5

MyApiLibraryDemo 0.1.5

TangChao维护。



  • TangChao

Swift 中的 ComPDFKit API

ComPDFKit API 提供了一系列 Java API 工具,允许您通过单个 API 调用创建高效的文档处理工作流程。免费试用我们的各种 API —— 无需信用卡。

要求

编程环境:iOS/MacOS。

依赖:Xcode。

安装

将以下依赖项添加到您的 "pom.xml"

<dependency>
    <groupId>com.compdf</groupId>
    <artifactId>compdfkit-api-java</artifactId>
    <version>1.2.4</version>
</dependency>

创建 API 客户端

您可以使用您的 公钥私钥 完成认证。您需要登录您的 ComPDFKit API 账户以在 此处 获取您的 公钥私钥,并在 控制台 中操作。如果您是 ComPDFKit 新用户,请点击此处 注册 以获取免费试用资格。

  • 项目公钥:您可以在 管理面板 中找到公钥。

  • 项目私钥:您可以在 管理面板 中找到私钥。

var client: CPDFClient = CPDFClient(publicKey: public_key, secretKey: secret_key)

创建任务

系统将自动为您生成一个任务 ID,该 ID 基于您选择的 PDF 工具类型。您可以提供回调通知 URL。任务处理完成后,我们将通过回调界面通知您任务结果。您可以根据请求结果执行其他操作,例如检查任务状态、上传文件、开始任务或下载结果文件。

// Create a client
var client: CPDFClient = CPDFClient(publicKey: public_key, secretKey: secret_key)

// Create a task
client.createTask(url: CPDFConversion.PDF_TO_WORD) { taskModel in
    guard let taskId = taskModel?.taskId else {
        Swift.debugPrint(taskModel?.errorDesc ?? "")
        return
    }
}

async version(macOS 10.15/iOS 13 Later)
Task { @MainActor in
    // Create a task
    let taskModel = await self.client.createTask(url: CPDFConversion.PDF_TO_WORD)
    let taskId = taskModel?.taskId ?? ""
}

上传文件

上传原始文件并绑定至任务 ID。字段参数用于传递 JSON 字符串以设置文件的处理参数。每个文件都将自动生成一个唯一的文件标识。请注意,每个任务 ID 最多可以上传五个文件,且一旦开始任务则无法再上传文件。

// Create a client
var client: CPDFClient = CPDFClient(publicKey: public_key, secretKey: secret_key)

// Create a task
client.createTask(url: CPDFConversion.PDF_TO_WORD) { taskModel in
    guard let taskId = taskModel?.taskId else {
        Swift.debugPrint(taskModel?.errorDesc ?? "")
        return
    }
            
    // upload File
    let group = DispatchGroup()
    group.enter()
    let path = Bundle.main.path(forResource: "test", ofType: "pdf")
    client.uploadFile(filepath: path!, password: "", params: [
        CPDFFileUploadParameterKey.isContainAnnot.string() : "1",
        CPDFFileUploadParameterKey.isContainImg.string() : "1",
        CPDFFileUploadParameterKey.isFlowLayout.string() : "1"
    ], taskId: taskId) { uploadFileModel in
        if let errorInfo = uploadFileModel?.errorDesc {
            Swift.debugPrint(errorInfo)
        }
        group.leave()
    }
}

async version(macOS 10.15/iOS 13 Later)
Task { @MainActor in
    // Create a task
    let taskModel = await self.client.createTask(url: CPDFConversion.PDF_TO_WORD)
    let taskId = taskModel?.taskId ?? ""

    // upload File
    let path = Bundle.main.path(forResource: "test", ofType: "pdf")
    let uploadFileModel = await self.client.uploadFile(filepath: path ?? "", password: "", params: [
        CPDFFileUploadParameterKey.isContainAnnot.string() : "1",
        CPDFFileUploadParameterKey.isContainImg.string() : "1",
        CPDFFileUploadParameterKey.isFlowLayout.string() : "1"
    ], taskId: taskId)
}

执行任务

文件上传完成后,请用任务 ID 调用此接口处理文件。

// Create a client
var client: CPDFClient = CPDFClient(publicKey: public_key, secretKey: secret_key)

// Create a task
client.createTask(url: CPDFConversion.PDF_TO_WORD) { taskModel in
    guard let taskId = taskModel?.taskId else {
        Swift.debugPrint(taskModel?.errorDesc ?? "")
        return
    }
            
    // upload File
    let group = DispatchGroup()
    group.enter()
    let path = Bundle.main.path(forResource: "test", ofType: "pdf")
    client.uploadFile(filepath: path!, password: "", params: [
        CPDFFileUploadParameterKey.isContainAnnot.string() : "1",
        CPDFFileUploadParameterKey.isContainImg.string() : "1",
        CPDFFileUploadParameterKey.isFlowLayout.string() : "1"
    ], taskId: taskId) { uploadFileModel in
        if let errorInfo = uploadFileModel?.errorDesc {
            Swift.debugPrint(errorInfo)
        }
        group.leave()
    }
            
    group.notify(queue: .main) {
        // execute Task
        client.processFiles(taskId: taskId) { processFileModel in
            if let errorInfo = processFileModel?.errorDesc {
                Swift.debugPrint(errorInfo)
            }
        }
    }
}

async version(macOS 10.15/iOS 13 Later)
Task { @MainActor in
    // Create a task
    let taskModel = await self.client.createTask(url: CPDFConversion.PDF_TO_WORD)
    let taskId = taskModel?.taskId ?? ""

    // upload File
    let path = Bundle.main.path(forResource: "test", ofType: "pdf")
    let uploadFileModel = await self.client.uploadFile(filepath: path ?? "", password: "", params: [
        CPDFFileUploadParameterKey.isContainAnnot.string() : "1",
        CPDFFileUploadParameterKey.isContainImg.string() : "1",
        CPDFFileUploadParameterKey.isFlowLayout.string() : "1"
    ], taskId: taskId)
    
    // execute Task
    let _ = await self.client.processFiles(taskId: taskId)
}

获取任务信息

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

// Create a client
var client: CPDFClient = CPDFClient(publicKey: public_key, secretKey: secret_key)

// Create a task
client.createTask(url: CPDFConversion.PDF_TO_WORD) { taskModel in
    guard let taskId = taskModel?.taskId else {
        Swift.debugPrint(taskModel?.errorDesc ?? "")
        return
    }
            
    // upload File
    let group = DispatchGroup()
    group.enter()
    let path = Bundle.main.path(forResource: "test", ofType: "pdf")
    client.uploadFile(filepath: path!, password: "1234", params: [
        CPDFFileUploadParameterKey.isContainAnnot.string() : "1",
        CPDFFileUploadParameterKey.isContainImg.string() : "1",
        CPDFFileUploadParameterKey.isFlowLayout.string() : "1"
    ], taskId: taskId) { uploadFileModel in
        if let errorInfo = uploadFileModel?.errorDesc {
            Swift.debugPrint(errorInfo)
        }
        group.leave()
    }
            
    group.notify(queue: .main) {
        // execute Task
        client.processFiles(taskId: taskId) { processFileModel in
            if let errorInfo = processFileModel?.errorDesc {
                Swift.debugPrint(errorInfo)
            }
            // get task processing information
            client.getTaskInfo(taskId: taskId) { taskInfoModel in
                guard let _model = taskInfoModel else {
                    Swift.debugPrint("error:....")
                    return
                }
                if (_model.isFinish()) {
                    _model.printInfo()
                } else if (_model.isRuning()) {
                    Swift.debugPrint("Task incomplete processing")
                } else {
                    Swift.debugPrint("error: \(_model.errorDesc ?? "")")
                }
            }
        }
    }
}
        
async version(macOS 10.15/iOS 13 Later)
Task { @MainActor in
    // Create a task
    let taskModel = await self.client.createTask(url: CPDFConversion.PDF_TO_WORD)
    let taskId = taskModel?.taskId ?? ""

    // upload File
    let path = Bundle.main.path(forResource: "test", ofType: "pdf")
    let uploadFileModel = await self.client.uploadFile(filepath: path ?? "", password: "", params: [
        CPDFFileUploadParameterKey.isContainAnnot.string() : "1",
        CPDFFileUploadParameterKey.isContainImg.string() : "1",
        CPDFFileUploadParameterKey.isFlowLayout.string() : "1"
    ], taskId: taskId)
    
    // execute Task
    let _ = await self.client.processFiles(taskId: taskId)
    // get task processing information
    let taskInfoModel = await self.client.getTaskInfo(taskId: taskId)
    guard let _model = taskInfoModel else {
        Swift.debugPrint("error:....")
        return
    }
    if (_model.isFinish()) {
        _model.printInfo()
    } else if (_model.isRuning()) {
        Swift.debugPrint("Task incomplete processing")
        self.client.getTaskInfoComplete(taskId: taskId) { isFinish, params in
            Swift.debugPrint(params)
        }
    } else {
        Swift.debugPrint("error: \(taskInfoModel?.errorDesc ?? "")")
    }
}

示例

见本文件夹中的“示例”文件夹。

资源