Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何使用 Swift 开发 iOS PDF 查看器或编辑器

如何使用 Swift 开发 iOS PDF 查看器或编辑器

作者头像
ComPDFKit
修改于 2024-05-23 02:48:30
修改于 2024-05-23 02:48:30
6501
举报
文章被收录于专栏:PDF 开发PDF 开发

在当今移动网络时代,iOS 应用程序的开发对于企业和开发人员至关重要。随着对于PDF 文件协作的需求不断增加,构建 iOS PDF viewer 和编辑器可让终端用户轻松查看和编辑 PDF 文档。在本篇文章中,我们将首先讨论整合 ComPDFKit PDF SDK 并探究如何使用它开发 iOS PDF 阅读器

ComPDFKit iOS PDF SDK 入门

此部分介绍了安装要求、安装包结构以及如何使用 ComPDFKit PDF SDK 在 Swift 中制作 iOS PDF 阅读器。

安装要求

使用ComPDFKit PDF SDK进行开发需要在指定的开发环境下进行。如果您的开发环境不符合要求,ComPDFKit PDF SDK 可能无法正常工作。

  • 设备系统:iOS 10.0或更高版本。
  • IDE 版本:Xcode 12.0 或更高版本。在本篇文章中,我们将以 Xcode 14.0.1 为例。
  • 目前,Mac 的 M 系列芯片不支持在 Apple Silicon 模拟器上运行。

对于早期版本的 Xcode(如 Xcode 13),Bitcode 选项可能被设置成默认打开,这需要关闭它才能运行。执行此操作的具体步骤如下图所示:

iOS 安装包结构

您可以自行从 Github上下载 iOS PDF SDK安装包并解压。您将在 SDK 包中看到以下的文件。

ComPDFKit PDF SDK for iOS 的安装包包含以下文件:

  • ComPDFKit.xcframework - 包含 ComPDFKit.xcframework 动态库 (arm64_armv7, x86_64-simulator,arm64_x86_64-maccatalyst) 和相关的头文件。
  • PDFViewer - 一个集成了以上所有功能的多功能 PDF 程序。
  • PDFViewer-Swift - 一个集成了以上所有功能 Swift 语言的多功能 iOS PDF 程序。
  • api_reference_ios - API 接口参考文档。
  • developer_guide_ios.pdf - 开发者指南。
  • release_notes.txt - 版本跟新信息。
  • legal.txt - 法律和版权申明。

在 Swift 中开发 iOS PDF 查看器或编辑器

在此部分,我们分步说明了如何在 Swift 中开发 iOS 应用程序。这将帮助您快速学会使用 ComPDFKit PDF SDK,完成所有步骤,您将可以获得一个简单的应用程序,可以显示指定PDF文件的内容。在本篇文章中,我们将以 Xcode 14.0.1 为例。

第 1 步:创建一个新项目

  1. 启动 Xcode,然后选择File -> New -> Project。然后,在iOS中选择App ->应用程序。然后,单击“Next”。
  1. 为新项目填写相关信息:
  • 输入产品名称,例如 PDFViewer。
  • 选择并输入您要发布的应用程序的Apple开发者帐户
  • 输入您的组织标识符的名称 (com.example.pdfviewer)。
  • 为界面选择情节提要。
  • 选择编程语言“Swift”。
  • 单击“下一步”按钮。
  • 将项目放置到所需的位置。然后,单击“创建”。

第 2 步:添加ComPDFKit PDF SDK包

  1. 在ComPDFKit PDF SDK包中找到ComPDFKit.xcframework 。它包括架构的所有二进制文件。
  2. 打开新建的iOS项目,在右侧面板中选择General。然后找到FrameworksLibrariesEmbedded Content部分,并将ComPDFKit.xcframework直接拖到此部分中,并将Embed选项设置为Embed & Sign
  3. 使用快捷方式“Command_B”构建项目。如果没有报错,则说明配置正确,可以进行下一步。如果报错,需要检查错误原因。如果您无法识别错误,您可以联系我们的技术团队来解决问题。

第 3 步:将 Objective-C 导入 Swift

由于 ComPDFKit PDF SDK for iOS 是基于 Objective-C 开发的,因此它与 Swift 项目兼容。因此,在 Swift 项目中,您需要同时导入ComPDFKit.xcframework 和 头文件。我们提供了两种在 Swift 项目中导入 SDK 的方法:

  1. 第一种:添加一个名为 MyProjectName-Bridging-Header.h 的头文件。这将是您导入任何 Objective-C 代码所需要的唯一的头文件,以便您的 Swift 代码可以访问。然后,在项目构建设置中找到 Swift Compiler - Code Generation 部分。将您的桥接头文件的路径添加到 Objective-C Bridging Header 旁边,路径从项目根文件夹开始。它应该是:MyProject/MyProject-Bridging-Header.h。

第 4 步:应用许可证密钥

  1. 将头文件ComPDFKit/ComPDFKit.h导入到AppDelegate中。
  2. 按照下面的代码,您需要将LICENSE_KEY和LICENSE_SECRET替换为您获得的许可证。
代码语言:swift
AI代码解释
复制
 CPDFKit.setLicenseKey("LICENSE_KEY", secret: "LICENSE_SECRET")

编译并运行该项目。如果控制台输出“版本信息”,则表示License设置成功。否则,请查看本文末尾的“故障排除”部分或查看控制台中的错误日志,以快速识别并解决问题。编译并运行该项目。

第 5 步:显示 PDF 文档

  1. 准备一个测试PDF文件,将其拖放到新创建的pdfView项目中。这样,您就可以使用NSBundle加载,并预览本地 PDF 文档了 NSBundle。下图显示了将名为“Online5”的 PDF 文档导入到项目中作为示例。
  1. 通过URL创建一个CPDFDocument对象,并创建一个CPDFView来显示它。下面的代码展示了如何使用本地 PDF 路径加载 PDF 数据并通过CPDFView显示数据示例代码
代码语言:swift
AI代码解释
复制
 let document = CPDFDocument(url: url)
        
   if let error = document?.error, error._code != CPDFDocumentPasswordError {
      return
   }  
   let pdfView = CPDFView(frame: view.bounds)  
   pdfView.document = document
  1. 将创建的 CPDFView 添加到当前控制器的视图中。示例代码如下。
代码语言:swift
AI代码解释
复制
 view.addSubview(pdfView)
  1. 连接您的设备或模拟器,然后使用快捷方式“Command+R”运行应用程序。 打开PDF 文件并显示。
  1. 如果无法显示PDF内容,请检查创建的NSURL和对象是否为空,或者创建的CPDFView的大小是否为零。它们不应该是空的。

如果文件路径中有特殊字符,你的 NSURL 将为 nil。用下面的代码来处理它。

代码语言:swift
AI代码解释
复制
 filePath.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!

如果创建的大小 CPDFView 为零,请按照下面的代码调整View的大小。

代码语言:swift
AI代码解释
复制
   pdfView.frame = self.view.bounds

创建 CPDFViewController 的所有代码如下所示:

代码语言:swift
AI代码解释
复制
import UIKit
import ComPDFKit
class ViewController: UIViewController {
    
    public var filePath: String = String()
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        let url = URL(filePath: filePath)
//        let url = URL(fileURLWithPath: fliePath)
        let document = CPDFDocument(url: url)
        
        if let error = document?.error, error._code != CPDFDocumentPasswordError {
            return
        }
        
        let pdfView = CPDFView(frame: view.bounds)
        pdfView.document = document
        view.addSubview(pdfView)
    }
}

SceneDelegate 示例代码

代码语言:swift
AI代码解释
复制
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    var window: UIWindow?
    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions)
    {
        // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
        // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
        // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
        
        let fileURL = Bundle.main.bundleURL.appendingPathComponent("xxxx.pdf")
//        let writbaleURL = copyFileURLToDocumentFolder(fileURL)
        let writbaleURL = fileURL.path()
        
        let tPDFViewController:ViewController = ViewController.init()
        tPDFViewController.fliePath = writbaleURL
        
        window!.rootViewController = UINavigationController(rootViewController: tPDFViewController)
        window!.makeKeyAndVisible()
        guard let _ = (scene as? UIWindowScene) else { return }
    }
    func sceneDidDisconnect(_ scene: UIScene) {
        // Called as the scene is being released by the system.
        // This occurs shortly after the scene enters the background, or when its session is discarded.
        // Release any resources associated with this scene that can be re-created the next time the scene connects.
        // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
    }
    func sceneDidBecomeActive(_ scene: UIScene) {
        // Called when the scene has moved from an inactive state to an active state.
        // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
    }
    func sceneWillResignActive(_ scene: UIScene) {
        // Called when the scene will move from an active state to an inactive state.
        // This may occur due to temporary interruptions (ex. an incoming phone call).
    }
    func sceneWillEnterForeground(_ scene: UIScene) {
        // Called as the scene transitions from the background to the foreground.
        // Use this method to undo the changes made on entering the background.
    }
    func sceneDidEnterBackground(_ scene: UIScene) {
        // Called as the scene transitions from the foreground to the background.
        // Use this method to save data, release shared resources, and store enough scene-specific state information
        // to restore the scene back to its current state.
    }
}

注意:我们在 iPhone 14 Pro iOS16.2 模拟器中运行此示例代码显示 PDF。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
可以,大佬,互粉一下
可以,大佬,互粉一下
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
试用Xcode构建iOS PDF阅读器
在当今以移动为先的世界中,为企业和开发人员创建一个iOS应用程序是必不可少的。随着对PDF文档处理需求的增加,使用强大的PDF软件开发工具包(SDK)来构建iOS PDF阅读器和编辑器可以让最终用户轻松查看和编辑PDF文档。
ComPDFKit
2023/07/27
7560
试用Xcode构建iOS PDF阅读器
iOS14开发-入门知识
iOS 是由苹果公司开发的移动操作系统 。苹果公司最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统(最初叫 iPhone runs OS X)。该系统最初是设计给 iPhone 使用的(所以后来曾命名为 iPhone OS),之后陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上(所以在 WWDC 2010 上最终宣布更名为 iOS)。
YungFan
2021/01/18
3.3K0
Flutter混合开发:在已有iOS项目中引入Flutter
在android项目中添加flutter模块比较简单,因为毕竟都是google的,但是在ios中添加flutter模块有些麻烦了,我们首先参考的是官方文档 https://flutter.cn/docs/development/add-to-app/ios/project-setup
BennuCTech
2022/02/25
4.8K0
Flutter混合开发:在已有iOS项目中引入Flutter
PDF Java库: 创建PDF阅读器和编辑器
在当今移动优先的世界中,创建 Android 应用程序是企业和开发人员的必备技能。而且,随着处理 PDF 文档的需求不断增加,使用功能强大的 PDF SDK ComPDFKit 构建 Android PDF 阅读器和编辑器,能使您的最终用户轻松查看和编辑 PDF。
Youna
2023/07/31
6680
PDF Java库: 创建PDF阅读器和编辑器
xcode11新增SceneDelegate文件
好久之前跟新到Xcode11,跟新完成后打开以前老项目并未有什么太大变化,也就没有在意,今天新建一个项目,创建完成后,发现多了个SceneDelegate的.m和.h文件,这是什么鬼?它有什么用呢?
honey缘木鱼
2019/12/11
2K0
27.Swift学习之与OC混编
在目前iOS开发语言从Objective-C到Swift的过渡时期,开发中难免会碰到两种语言同时存在的情况,如果在同一个项目中,两种语言并存,那么该项目就是一个混合项目。在混合项目中,就会存在语言相互调用的情况,那么一个是上世纪的“老人”,一个是初出茅庐的“少年”,它们的沟通是存在障碍的,如何才能在一个项目中让两种语言可以相互调用呢?Apple给我们做好了“桥接”工作,但是在Objective-C的项目中调用Swift与在Swift项目中调用Objective-C,处理的方式是不一样的,下面来进行一个简单的介绍。
YungFan
2018/12/26
1.3K0
iOS 新创建项目中的SceneDelegate适配
Xcode 11之后新建工程,默认为有SceneDelegate,但是SceneDelegate是从iOS 13之后才有的,如果最低兼容版本到iOS 13以下,需要怎么做呢?
莫空9081
2021/04/21
3.7K0
Swift 6.1 新特性
Swift 6.1 内置于 Xcode 16.3,这是 Swift 6 之后的首个小版本更新,新特性很少。
YungFan
2025/04/07
2470
Swift基础语法(四)
在Swift5之前,我们一般是采用上面的方式来处理异常,在Swift5之后,苹果推出了一个Result枚举,Result枚举可以更加优雅地去处理异常。
拉维
2020/07/06
4.3K0
Swift基础语法(四)
使用 React PDF 构建 React.js PDF 查看器的指南
在本文中,我们将重点介绍在React.js中制作 PDF 查看器的最受欢迎的开源库。具体来说,我们将利用著名的开源库react-pdf的功能,指导您完成创建 React.js PDF 查看器的过程。
Youna
2025/05/20
2820
使用 React PDF 构建 React.js PDF 查看器的指南
Swift 4.0 新特性
WWDC 2017 带来了很多惊喜,在这次大会上,Swift 4 也伴随着 Xcode 9 测试版来到了我们的面前,虽然正式版要8月底9月初才会公布,但很多强大的新特性正吸引我们去学习它。根据大会上已经开放的新特性,先一睹为快。 体验 Swift 4包含在Xcode 9中,您可以从Apple的开发者门户下载最新版本的Xcode 9(您必须拥有一个活跃的开发者帐户)。 每个Xcode测试版将在发布时捆绑最新的Swift 4快照。在阅读时,您会注意到[SE-xxxx]格式的链接。 这些链接将带您到相关的Swif
xiangzhihong
2018/02/06
1.9K0
Swift 4.0 新特性
【iOS开发】Swift、OC 混编用到的 Bridging-Header.h
现在 Github 上绝大多数的库都是用 Objective-C 语言写的,当我们使用 Swift 进行开发的时候呢,无论是用 CocoaPods 还是手动把库集成到自己的项目中,一开始都是不能直接使用的。
KyXu
2019/04/11
4.3K0
【iOS开发】Swift、OC 混编用到的 Bridging-Header.h
Swift和Objective-C混编在有赞移动的实践
随着 Xcode 11、Swift 5.1 的正式发布,Swift 目前已经实现了 ABI 稳定及模块稳定,语法及实现也比以往更加成熟稳定,所以我们在微商城和零售等业务线中尝试使用 Swift 开发部分业务,并在二方库中进行混编开发,在此我们将一些混编经验分享出来。
有赞coder
2020/08/24
2.5K0
Swift和Objective-C混编在有赞移动的实践
使用C#基于ComPDFKit SDK快速构建PDF阅读器
在当今世界,Windows 应用程序对我们的工作至关重要。随着处理 PDF 文档的需求不断增加,将 ComPDFKit PDF 查看和编辑功能集成到您的 Windows 应用程序或系统中,可以极大地为您的用户带来美妙的体验。
ComPDFKit
2023/07/27
6250
使用C#基于ComPDFKit SDK快速构建PDF阅读器
唐巧的iOS技术博客选摘
1. 那些被遗漏的objective-c保留字:http://blog.devtang.com/blog/2013/04/29/the-missing-objc-keywords/ 2. 使用crashlytics来保存应用崩溃信息:http://blog.devtang.com/blog/2013/07/24/use-crashlytics/ 3. iOS开发工具篇,AppStore统计工具:http://blog.devtang.com/blog/2013/06/16/ios-dev-tool
王大锤
2018/05/17
3.6K0
Swift引用AFNetworking
从介绍看,它是主要给 Objective-C 项目用的,但是我们可以很容易地混合 Objective-C 和 Swift 到同个项目,从而利用大量的 CocoaPods 库和 Swift 漂亮舒服的语法。
码客说
2019/10/22
2.2K0
干货 | 一波N折的携程酒店Swift-Objc混编实践
说起Swift,对iOS开发者来说那是既熟悉又陌生,虽然早在2014年苹果就发布了Swift1.0版本,但在这之后的五六年时间里,一直处于不温不火的状态。ABI的不稳定以及API的不向前兼容,更是被程序员调侃为“自从学了 Swift 之后,每年都要学一门新语言”。
携程技术
2020/05/29
1.5K0
Swift接入腾讯位置服务地图SDK
腾讯地图iOS SDK目前只提供了Objective-C版本的SDK, 因此如果是Swift项目, 则需要自己通过Bridging文件来将其引入
腾讯位置服务
2020/11/06
1.3K0
swift4.0语法杂记(精简版)
一、swift简史 1、介绍 swift是苹果公司于2014年推出用于撰写OS和iOS应用程序的语言。它由苹果开发者工具部门总监“克里斯.拉特纳”在2010年开始着手设计,历时一年完成基本的架构。到后来苹果公司大力投入swift语言的研发,于2014年发布这一语言的第一版本。swift2.0之后的语法则趋于稳定,2017年发布的swift4.0虽有改动,但也只是增添了一些新特性。这些新特性需要在Xcode9上运行才能显示出效果。值得一提的是它支持unicode9,也就是说,可以用某些图片图标来充当变量。
谦谦君子修罗刀
2018/05/02
16K0
swift4.0语法杂记(精简版)
Swift 3.0介绍
概述 我接触swift是从2.0开始,当时出于对ios的好奇,加上官方的大力推荐,于是扎入了ios的怀抱,从1.2发展到了今天的3.0.1,这期间由于Swift目前还在发展阶段并不能向下兼容,这也造成部分我们2.x开发的版本在新版本上运行的问题,不过基于最近基本版本改动比较小的原因吧,我觉得swift是为了ios的趋势。尽管对于开发人员来说Swift3.0的变化会令你的程序几乎处处报错,但是试想一下如果Apple没有追求极致的精神又怎么会做出如此多的更改。本文介绍主要以3.0为基础讲解,从Swift编译器
xiangzhihong
2018/01/26
1.4K0
相关推荐
试用Xcode构建iOS PDF阅读器
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档