如何使用 SwiftUI 构建 iOS PDF 查看器

SwiftUI是 Apple 最新的用户界面框架,旨在彻底改变开发者为 iOS、macOS、watchOS 和 tvOS 创建 UI 的方式。SwiftUI 在 WWDC 2019 上推出,它提供了一种现代的声明式语法,让开发者能够以更少的代码和更直观的开发流程构建复杂的 UI。

它广泛用于 Apple 应用程序,包括 PDF 应用程序。在本文中,您将看到 Swift 教程示例,并学习如何使用 ComPDFKit iOS PDF 库构建 SwiftUI PDF 查看器。

 

 

步骤 1:Swift UI PDF 库集成的要求

通过 SwiftUI 集成 ComPDFKit iOS PDF 库需要满足以下要求。

  • iOS 10.0 或更高版本。
  • 适用于 Swift 的 Xcode 13.0 或更新版本。
  • ComPDFKit iOS PDF 库:访问 GitHub 上的 ComPDFKit iOS PDF 库以获取您的 SwiftUI PDF 程序。
  • ComPDFKit iOS PDF 库许可证:在 ComPDFKit 网站上申请即可获得 30 天试用许可证。它将通过电子邮件发送。

注意:ComPDFKit 要求使用发布时可用的最新稳定版 Xcode。这是一项硬性要求,因为每个版本的 Xcode 都与特定版本的 iOS Base SDK 捆绑在一起,后者通常定义 UIKit 和其他各种框架的行为方式。

 

 

步骤 2:为你的 SwiftUI PDF Viewer 获取 iOS 库包

要使用 Swift 学习 SwiftUI 教程示例,必须下载 Swift 版 ComPDFKit iOS PDF 库。此库可让您将 PDF 查看功能无缝集成到您的 SwiftUI 应用程序中。

访问GitHub上适用于您的 SwiftUI 项目的 iOS PDF 

 

 

 

步骤 3:获取 ComPDFKit PDF 库的试用许可证

只需在 ComPDFKit 网站上单击几下即可轻松获得ComPDFKit iOS 库 30 天许可证。无需销售。只需申请适当的许可证,您就会自动收到包含许可证的电子邮件。将 Swift PDF 库无缝集成到您的项目中。

 

 

 

步骤 4:为您的 Swift UI PDF APP 应用许可证密钥

 

1. 查找许可证密钥

以下是分步教程,可帮助您找到正确的许可证密钥,以将 PDF 查看器库集成到您的 SwiftUI 项目中。

 

在您收到的电子邮件中,找到包含许可证密钥的XML文件。

 

打开XML文件,通过online字段判断许可证类型,如果存在则为在线许可证,如果不存在或者存在offline则为离线许可证。

在线许可:
 

xmlCopy code
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<license version="1">
    <platform>ios</platform>
    <starttime>xxxxxxxx</starttime>
    <endtime>xxxxxxxx</endtime>
    <type>online</type>
    <key>LICENSE_KEY</key>
</license>

 

离线许可证:
 

xmlCopy code
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<license version="1">
    <platform>ios</platform>
    <starttime>xxxxxxxx</starttime>
    <endtime>xxxxxxxx</endtime>
    <key>LICENSE_KEY</key>
</license>
Copy the LICENSE_KEY from the <key>LICENSE_KEY</key> field.

 

2. 应用许可证密钥

前往 ComPDFKit 官方网站的在线销售页面提交试用申请,即可获得 iOS 平台的即时免费试用许可证,有效期为 30 天。在使用任何 ComPDFKit PDF SDK 类之前,您必须执行以下步骤将许可证应用于您的应用程序:

 

  • AppDelegate.swift中,导入头文件 ComPDFKit。
  • 根据上一步获得的身份验证类型(无论是在线还是离线),根据您的要求使用相应的方法初始化许可证。
  • 初始化许可证:

 

在线许可:

按照以下代码,在func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool中调用方法CPDFKit.verify(withOnlineLicense: "LICENSE_KEY") { code, message in }。您需要将LICENSE_KEY替换为您获得的许可证。
 

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
  // Set your online license key here. ComPDFKit is commercial software.
  // Each ComPDFKit license is bound to a specific app bundle id.
  // com.compdfkit.pdfviewe

    CPDFKit.verify(withOnlineLicense: "YOUR_LICENSE_KEY_GOES_HERE") { code, message in
    }
}

 

离线许可证:

按照以下代码,在func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool中调用方法CPDFKit.verifyWithKey:"LICENSE_SECRET"。您需要将LICENSE_KEY替换为您获得的许可证。
 

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
  // Set your license key here. ComPDFKit is commercial software.
  // Each ComPDFKit license is bound to a specific app bundle id.
  // com.compdfkit.pdfviewer

    CPDFKit.verify(withKey: "YOUR_LICENSE_KEY_GOES_HERE")
    return true
}

 

 

第 5 步:集成 ComPDFKit iOS PDF 库 — SwiftUI 教程

让我们讨论如何在 SwiftUI 框架中集成ComPDFKit for iOS并构建一个 iOS PDF 查看器来显示 PDF。

 

  1. 将CPDFViewController桥接到 SwiftUI

首先,声明符合UIViewControllerRepresentable协议的CPDFSwiftViewController结构,以便您可以从 UIKit 桥接到 SwiftUI。之后,添加CPDFConfiguration类型的属性并实现协议,如下所示:
 

import ComPDFKit

struct CPDFSwiftViewController: UIViewControllerRepresentable {
    @Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>

    class Coordinator: NSObject,CPDFViewBaseControllerDelete {
        var myview: CPDFSwiftViewController
        init(_ myview: CPDFSwiftViewController) {
            self.myview = myview
        }

        // MARK: - CPDFViewBaseControllerDelete
        func PDFViewBaseControllerDissmiss(_ baseControllerDelete: CPDFViewBaseController) {
            baseControllerDelete.dismiss(animated: true)
        }

    }

    func makeCoordinator() -> Coordinator {
        Coordinator(self)
    }

    func makeUIViewController(context: Context) -> CNavigationController {
        CPDFKit.verify(withKey: "LICENSE_KEY")

        let filePath = Bundle.main.path(forResource: "developer_guide_ios", ofType: "pdf")  ?? ""

        let configuration = CPDFConfiguration()

        let vc = CPDFViewController(filePath: filePath, password: nil, configuration: configuration)
        vc.delegate = context.coordinator;
        let navController = CNavigationController(rootViewController: vc)
        navController.modalPresentationStyle = .fullScreen

        return navController
    }

    func updateUIViewController(_ uiViewController: CNavigationController, context: UIViewControllerRepresentableContext<CPDFSwiftViewController>) {

    }

}

 

2. 在 SwiftUI 中使用ComPDFKitView

在你的 SwiftUI 内容视图中使用CPDFViewController:
 

struct ContentView: View {
    @State var isPresented: Bool = false

    var body: some View {
        VStack {
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundColor(.accentColor)
            Text("Hello, world!")

            .toolbar {

                ToolbarItem(placement: .bottomBar) {
                    Button("Click to open the sample PDF") {
                        isPresented = true
                    }
                }
            }
            .fullScreenCover(isPresented: $isPresented) {
                CPDFSwiftViewController()

            }
        }
        .padding()
    }
}

 

本指南以 iPad 14 设备为例,成功编译 demo 后会打开并显示“developer_guide_ios.pdf”文件。

 

 

 

关于 SwiftUI 和 ComPDFKit 的常见问题解答

 

  1. 如何获取 SwiftUI 更新?

SwiftUI 中的新功能 - WWDC24:SwiftUI 引入了许多新 API,使使用该框架更加方便。这包括对核心组件的增强、使用基础 API 的新方法以及易用性的改进。您现在可以创建自定义容器视图。

 

2. 什么是 UIKit 和 SwiftUI?

SwiftUI 和 UIKit 是用于在 iOS 开发中设计用户界面的框架。SwiftUI 提供了一种现代、简化的 UI 开发方法,而 UIKit 则提供了稳健性和多功能性。

 

3. Swift 和 SwiftUI 有什么区别?

Swift 是 Apple Inc. 创建的一种编程语言。它是一种功能强大且快速的语言,可使 Apple 产品的开发更加愉快和高效。SwiftUI
是一个用于在 Apple 平台上构建用户界面的声明性框架。

 

4. 为什么 SwiftUI 更好?

SwiftUI 的优势在于更快的 UI 开发、控制声明式语法、Swift 集成和跨平台兼容性。该框架提供了一组丰富的过渡和动画,增强了用户体验。

 

5. SwiftUI 有什么缺点?

部署受限:SwiftUI 仅支持 iOS 13+、macOS 10.15+、watchOS 6+ 和 tvOS 13+。
成熟阶段:作为较新的框架,SwiftUI 仍在不断发展和成熟。

 

6. 为什么选择适用于 iOS 的 ComPDFKit PDF SDK?

ComPDFKit PDF SDK for iOS 旨在使 PDF 处理变得无缝且高效。它提供用于查看、注释、编辑和转换 PDF 文件的强大功能。它的高性能和灵活性使其成为希望将PDF 功能集成到 iOS 应用程序中的开发人员的绝佳选择。

 

7. 在哪里可以找到所有 ComPDFKit iOS PDF 库开发人员指南?

所有开发人员指南均可在文档页面上找到。

 

8. 我可以在哪里下载 ComPDFKit PDF 库?

在 GitHub 上下载

 

9. 我可以在哪里获得 ComPDFKit for iOS 的试用许可证?

可以在定价页面上直接获得许可证(无需销售)。

 

10. 我可以免费试用 iOS 版 ComPDFKit 多长时间?

您可以在 30 天内集成适用于 iOS 的 ComPDFKit。如果您需要更多天数的免费试用,可以联系销售团队

posted @ 2024-08-21 17:25  ComPDFKit  阅读(29)  评论(0编辑  收藏  举报