使用ComPDFKit PDF SDK 构建iOS PDF阅读器

news2024/12/26 15:39:50

在当今以移动为先的世界中,为企业和开发人员创建一个iOS应用程序是必不可少的。随着对PDF文档处理需求的增加,使用ComPDFKit这个强大的PDF软件开发工具包(SDK)来构建iOS PDF阅读器和编辑器可以让最终用户轻松查看和编辑PDF文档。

在本博客中,我们将首先探讨整合ComPDFKit PDF SDK和使用它构建iOS PDF阅读器所需的步骤。

开始使用ComPDFKit iOS PDF SDK

ComPDFKit是一个强大的PDF软件开发工具包(SDK)。使用几行Objective-C代码,将ComPDFKit PDF SDK嵌入到您的iOS应用程序中非常简单。只需几分钟,就可以开始使用。

以下几个部分介绍了所需的要求、安装包的结构,以及如何使用ComPDFKit PDF SDK在Objective-C中创建iOS PDF阅读器

所需环境

开发使用ComPDFKit PDF SDK的程序需要以下开发环境。如果您的开发环境较低,可能无法正常使用ComPDFKit PDF SDK。

设备系统要求iOS10.0及以后的系统

IDE的版本:Xcode12及以后。在本博客中,我们使用Xcode14.0.1来演示示例

1679552888371.jpg

目前暂不支持在苹果Silicon系列上运行模拟器

对于早期版本的Xcode(如Xcode 13),默认情况下可能会打开Bitcode选项,因此需要关闭才能进行运行。具体的操作步骤如下图所示:

1679991673904.jpg

iOS包结构

您可以通过联系我们来获取我们的PDF SDK安装包。下载并解压缩ComPDFKit PDF SDK for iOS的安装包,您将在SDK包中看到以下所有文件。

ComPDFKit.xcframework - 包括ComPDFKit 动态库(arm64_armv7,x86_64-模拟器)以及相关的头文件

PDFViewer - 包含iOS(Objective-C)样例的工程

PDFViewer-Swift - 包含iOS(Swift)样例的工程

api_reference_ios - API 引用

developer_guide_ios.pdf- Developer guide

release_note - 版本发布相关的信息

legal.txt** - 法律相关的信息

165217880019320.png

使用Objective-C创建iOS预览App

这一部分将通过逐步说明,帮助您快速入门使用ComPDFKit PDF SDK以在Objective-C中制作iOS应用程序。通过以下步骤,您将获得一个能够显示指定PDF文件内容的简单应用程序。在本文中,我们以Xcode 14.0.1作为示例。

创建一个全新的项目

  1. 打开Xcode,选择File-> New -> Project,然后选择iOS app,再点过击Next按钮

1679553012143.jpg

  1. 新项目需要设置如下几个选项:
  • 输入产品的名字,例如:PDFViewer

  • 选择并登录您要发布应用的苹果开发者账号。

  • 输入组织的名称:(com.example.pdfviewer)

  • 在面版上选择故事版

  • 编程语言选择"Objective-C"

  • 点击"Next"按钮

  • 设置project的位置,然后点击创建

1679554358758.jpg

添加ComPDFKit的SDK包

  1. 在ComPDFKit PDF SDK的安装包中找到ComPDFKit.xcframework。它包含了所有支持的架构的二进制文件。

  2. 打开新创建的iOS项目,并在右侧面板中选择General。然后找到Frameworks, Libraries, and Embedded Content部分,将ComPDFKit.xcframework直接拖放到该部分,并将Embed选项设置为Embed & Sign

  3. 使用快捷键"Command_B"编译项目。如果没有报错,说明配置正确,您可以继续进行下一步。如果报告了一些错误,您需要检查错误的原因。如果您无法确定错误,可以联系我们的技术团队来解决问题

1679556806689.jpg

添加License Key

  1. 将头文件ComPDFKit/ComPDFKit.h 导入到AppDelegate中。

  2. 按照下面的代码,并在didFinishLaunchingWithOptions方法中调用CPDFKit setLicenseKey:@"LICENSE_KEY" secret:@"LICENSE_SECRET"方法。您需要用您获得的许可证替换LICENSE_KEYLICENSE_SECRET

#import <ComPDFKit/ComPDFKit.h>

@interface AppDelegate ()

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.

/*
 // Set your license key here. ComPDFKit is commercial software.
 // Each ComPDFKit license is bound to a specific app bundle id.
 
 // Notice: This is a demo project, presenting completed ComPDFKit functions.
 // The functions might be different based on the license you have purchased.
 // Please check the functions you chose work fine in this demo project.
 
 // BOOL tIsFeatureLocked = ![[CPDFKit sharedInstance] allowsFeature:CPDFKitFeatureSecurityWatermark];
 */

 // [CPDFKit setLicenseKey:@"YOUR_LICENSE_KEY_GOES_HERE" secret:@"YOUR_LICENSE_SECRET_GOES_HERE"];
  
    [CPDFKit setLicenseKey:@"" secret:@""];
    
    NSString *tAnnotateAuther = CPDFKitShareConfig.annotationAuthor;
    NSLog(@"CPDFKit Annotation Author: \t %@", tAnnotateAuther);
    
    CPDFKitShareConfig.enableAnnotationNoRotate = YES;
    
    return YES;
}


编译并运行项目。如果控制台输出了"version information"(版本信息),则表示许可证已成功设置。否则,请查看本博客末尾的"故障排除"部分或检查控制台中的错误日志,以快速确定并解决问题。

展示pdf文档

准备一个测试的PDF文件,将其拖放到新创建的 pdfView 项目中。通过这种方式,您可以使用 NSBundle 加载和预览本地的PDF文档。下面的图片展示了将名为“Online5”的PDF文档导入项目的示例。

1680714636385.jpg

  1. 准备一个测试的PDF文件,将其拖放到新创建的 pdfView 项目中。通过这种方式,您可以使用 NSBundle 加载和预览本地的PDF文档。下面的图片展示了将名为“Online5”的PDF文档导入项目的示例。
    NSString *pdfPath= [bunle pathForResource:@"Online5" ofType:@"pdf"];
    NSURL *url = [NSURL fileURLWithPath:pdfPath];
    CPDFDocument *document = [[[CPDFDocument alloc] initWithURL:url] autorelease];

    CGRect rect = self.view.bounds;
    CPDFView *pdfView = [[[CPDFView alloc] initWithFrame:rect] autorelease];
    pdfView.document = document;
  1. 将创建的 CPDFView 添加到当前控制器的视图中。示例代码如下:
 [self.view addSubview:pdfView];
  1. 连接您的设备或模拟器,并使用快捷键"Command_R"运行应用程序。PDF文件将被打开并显示在屏幕上。

1680715626618.jpg

  1. 如果无法显示PDF内容,请检查创建的NSURL和"CPDFDocument"对象是否为空,或者创建的"CPDFView"的大小是否为零。它们不应该为空。

如果文件路径中包含特殊字符,您的NSURL将会为nil。请使用以下代码进行处理。

[pdfPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

如果创建的CPDFView的大小为零,按照以下代码调整pdfview的大小。

pdfview.frame = self.view.frame.bounds

所有代码如下所示:

    NSString *pdfPath= [bunle pathForResource:@"Online5" ofType:@"pdf"];

    NSURL *url = [NSURL fileURLWithPath:pdfPath];
    CPDFDocument *document = [[[CPDFDocument alloc] initWithURL:url] autorelease];
    if (document.error && document.error.code != CPDFDocumentPasswordError) {
        return;
    }
    
    // Initialize a CPDFView object with the size of the entire screen
    CPDFView *pdfView = [[[CPDFView alloc] initWithFrame:self.view.bounds] autorelease];
    
    // Set the document to display
    pdfView.document = document;
    
    // Add the pdfView to the root view
    [self.view addSubview:pdfView];

问题排查

  1. 位码

    即使所有配置都正确,仍可能出现编译错误。首先,请检查是否禁用了位码(bitcode)。在较旧的Xcode版本(如Xcode 13)中,默认情况下可能启用了位码选项。为了运行应用程序,需要将其设置为“否”。

  2. License(许可证)

    如果出现许可设置错误,请确保“通用设置”中的身份(Bundle ID)设置与您联系我们以获取许可时提供的Bundle ID匹配。如果出现已过期的许可消息,请联系ComPDFKit团队以获取最新的许可和密钥。

  3. PDF无法展示

    请检查我们传入的路径是否需要特殊编码,或者我们传入的本地路径是否存在

  4. 其他问题

    如果在集成我们的ComPDFKit PDF SDK for iOS时遇到其他问题,请随时联系ComPDFKit团队
    在当今以移动为先的世界中,为企业和开发人员创建一个iOS应用程序是必不可少的。随着对PDF文档处理需求的增加,使用ComPDFKit这个强大的PDF软件开发工具包(SDK)来构建iOS PDF阅读器和编辑器可以让最终用户轻松查看和编辑PDF文档。

在本博客中,我们将首先探讨整合ComPDFKit PDF SDK和使用它构建iOS PDF阅读器所需的步骤。

开始使用ComPDFKit iOS PDF SDK

ComPDFKit是一个强大的PDF软件开发工具包(SDK)。使用几行Objective-C代码,将ComPDFKit PDF SDK嵌入到您的iOS应用程序中非常简单。只需几分钟,就可以开始使用。

以下几个部分介绍了所需的要求、安装包的结构,以及如何使用ComPDFKit PDF SDK在Objective-C中创建iOS PDF阅读器

所需环境

开发使用ComPDFKit PDF SDK的程序需要以下开发环境。如果您的开发环境较低,可能无法正常使用ComPDFKit PDF SDK。

设备系统要求iOS10.0及以后的系统

IDE的版本:Xcode12及以后。在本博客中,我们使用Xcode14.0.1来演示示例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vJRtAPYZ-1690448461859)(https://developer-private-1258344699.cos.ap-guangzhou.myqcloud.com/column/article/10679850/20230727-f12f15ef.jpg?x-cos-security-token=BJdJsHEW9tRdV4U1c2UC8j4hz1AQDOiad9eabc3fe036a764ae609698273ee434ELpcYO4-9LL7ugDY7fTqEzBaRJKrOsDTkDtXM7zGLaKwHKL2sAHtn3_6b6bBiHmb8QXsDi2ZSk4Mfij6vE6wrklmlNqWFKH6KdMOHGq0KHPxiL5SFiK0pzMJTc8Nl9m0YENqdo-fm7Hr_Rn9xhNTN5yvFRQgPJqSVSM72uOFS37MXhTfHBVUL3nORH5Vg_Til5TF8XdIoOYTVx3Ks1P5nPe_6aG3UASiZU_1E-9pjeDKpCweKAvgji3ETHiFjEjuKjOz2H0-4eWcFDDYYY3q9vbyD83V3BxwgoXRoFwAVmIJXWnJG2d1RBRO3sj-40Skgrs81_udF8paUXEPlEkrsoY5-7GeTE4JY2ROVS3RaHjyAm6I0szTNCikbbU3LO2PGVMH46Hw6PcqvNc92dyplg&q-sign-algorithm=sha1&q-ak=AKIDANg5dNM5f9D8uxxwgM3dVxpc5tfCPYqPpHqqYMKsHsXGLcIfh7r_y3gFkNRi1S9q&q-sign-time=1690448075%3B1690455270&q-key-time=1690448075%3B1690455270&q-header-list=host&q-url-param-list=x-cos-security-token&q-signature=c24998cfc572398f422139639a7ffb755bafb6d6)]

目前暂不支持在苹果Silicon系列上运行模拟器

对于早期版本的Xcode(如Xcode 13),默认情况下可能会打开Bitcode选项,因此需要关闭才能进行运行。具体的操作步骤如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Ez2lkrs-1690448461860)(https://developer-private-1258344699.cos.ap-guangzhou.myqcloud.com/column/article/10679850/20230727-24aefc53.jpg?x-cos-security-token=2DvTlaTJkqLbUbKZEwEcLA7IMp51aNyaaf7adb55df5d8a1f6c416b6163835df8zpMHRHzjIezKVlcXhhCVpkroW1dNVtfYRN64iO0cGWgQPHbi0tnfSw76g15p5LXDQugdqEk1f8Zuzwka9VdrrLd3h2I0ev_eiZW-YiqR-Mwp0IO_vL6CkCoUOj5uREp6LzqBRVtrwuwf4n2-6PkYycz9Sl_wpw7Hww-t4J9sbwaz2hFF2gMxi577Tv2MOc8Odg6SUzW5ktFwCO5PsPKXEMtEkW7T2AEiyfBnSFqczblBpec7lKaOJvzRItVPBMb8JJaGybvhwgTg3oSwdcLMSFPYDM-Tpe9vz61GR52MIHLUf1cFGSsJfQfpv_XUVm6livJgKT93kQ_qJL4fLwTmjNysRYh36UWQNglUH8FegUM9cQz6QNOVDvGdTG9UupgqCuXOazgj_RxsfI47JEmizw&q-sign-algorithm=sha1&q-ak=AKIDVKhQ4uBgkTq_t-2pdw1vZhsOn1wlTJFx3kTUGaufm5AW6X8r635Sk3aIVZBoNpAg&q-sign-time=1690448083%3B1690455278&q-key-time=1690448083%3B1690455278&q-header-list=host&q-url-param-list=x-cos-security-token&q-signature=5ee26126e198659ceb1f68f6ceaeee27ccc75f35)]

iOS包结构

您可以通过联系我们来获取我们的PDF SDK安装包。下载并解压缩ComPDFKit PDF SDK for iOS的安装包,您将在SDK包中看到以下所有文件。

ComPDFKit.xcframework - 包括ComPDFKit 动态库(arm64_armv7,x86_64-模拟器)以及相关的头文件

PDFViewer - 包含iOS(Objective-C)样例的工程

PDFViewer-Swift - 包含iOS(Swift)样例的工程

api_reference_ios - API 引用

developer_guide_ios.pdf- Developer guide

release_note - 版本发布相关的信息

legal.txt** - 法律相关的信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A7PbvvGE-1690448461860)(https://developer-private-1258344699.cos.ap-guangzhou.myqcloud.com/column/article/10679850/20230727-688f1f3f.png?x-cos-security-token=2DvTlaTJkqLbUbKZEwEcLA7IMp51aNyacfd929f7e17b74f145b4f4dde7f09d42zpMHRHzjIezKVlcXhhCVplbHw0ZQcgA_4HcvHxN8DRIAqFbV0f5Txnup13H3GeRVFwmdWWTET8fQtCtNmCR-n70DqR_9PImNJ3K7loOjAa2fmhrn5_l0hZBFD2CjKoJHyz8A0HYmQpYJ-JWmBpjxZcEDJtCTkyAyW_EXW62AVvJSKgLmxiqUF-FRuohbDuqf52xHAG8c6k_-E0IYomA-LxCZvIF-ptmG-nrv6q27xjY_5RVmlHqae1fPicYoGnSeHBp4j2Gf-JFxDy0LcAJ1p18noTdtasSt3uZo9DJh–ThmZSa-3E1p6WiKxwRN33d3S10KzGsKsY6yMVXgBHUVT-ZiYaylN7f-KUxUkpoO8lCCq2UL_xisHcvPzTlNXeTU8OJkpoeWGptLZ605dSV9w&q-sign-algorithm=sha1&q-ak=AKIDocT-i4cCmMYCeVFuuP6orCVqxeplyXV8zkKP8tpCINHKTtbpqXg35hVYy9H0g59a&q-sign-time=1690448162%3B1690455357&q-key-time=1690448162%3B1690455357&q-header-list=host&q-url-param-list=x-cos-security-token&q-signature=f5e247a6504c506f70966825c97998e032d285db)]

使用Objective-C创建iOS预览App

这一部分将通过逐步说明,帮助您快速入门使用ComPDFKit PDF SDK以在Objective-C中制作iOS应用程序。通过以下步骤,您将获得一个能够显示指定PDF文件内容的简单应用程序。在本文中,我们以Xcode 14.0.1作为示例。

创建一个全新的项目

  1. 打开Xcode,选择File-> New -> Project,然后选择iOS app,再点过击Next按钮

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uNts5Iiz-1690448461860)(https://developer-private-1258344699.cos.ap-guangzhou.myqcloud.com/column/article/10679850/20230727-cf9b59e6.jpg?x-cos-security-token=2DvTlaTJkqLbUbKZEwEcLA7IMp51aNya146e45b438f870507952cf1569723a15zpMHRHzjIezKVlcXhhCVpo30aiDycHEY02_aUaUvPMfQEg-fu7kZAlZ1LesPkfSi8skn2c7mbrLHrDspb87loy4gbJtsJnckY1qepYw8PISzAi8gr95KeR_khbV2mwxofAThAsRccASCfWFtC3iRtvHjzEz39zwN5KPjv_6kjluBoYS-IjMvLjFEHt3BZ02I-A6t3YQ1t6VbuL95FcyFl_Jm6iKOQNNrlGUFwoR3d0g_XFeflmKouIrWHSSBrWZNsE1SHeepCWDxdH1PucjGlyTzm_U-DtSynqxaI780X72xTUF0kX4ND9IZZL9zEzCRRieoTYu93zuVYBbxZbm84aSEn4jTC_iiZzNlYO21utIongDUuP3MiJB1x4g2BjAi-E9Cvec7hdEqQe0B6ipTUg&q-sign-algorithm=sha1&q-ak=AKIDx0q6-e8XcN1zd5GPHfiLg9HS50q-mojLOv0XMcShRWclbfgwCe893KheHsQkvMI2&q-sign-time=1690448187%3B1690455382&q-key-time=1690448187%3B1690455382&q-header-list=host&q-url-param-list=x-cos-security-token&q-signature=6ae5611027a8965f209577e560e0d90a417dc2ef)]

  1. 新项目需要设置如下几个选项:
  • 输入产品的名字,例如:PDFViewer

  • 选择并登录您要发布应用的苹果开发者账号。

  • 输入组织的名称:(com.example.pdfviewer)

  • 在面版上选择故事版

  • 编程语言选择"Objective-C"

  • 点击"Next"按钮

  • 设置project的位置,然后点击创建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OEUihjG6-1690448461861)(https://developer-private-1258344699.cos.ap-guangzhou.myqcloud.com/column/article/10679850/20230727-59e4b3f0.jpg?x-cos-security-token=BJdJsHEW9tRdV4U1c2UC8j4hz1AQDOiaf4da32f8919a94517467ce57d6293e84ELpcYO4-9LL7ugDY7fTqEz6HgKIR9E1tig4O2Hpa8ErIROWyBrsRqzGudlEyg002RH7qvCHahg5tnJEUbyE6tsLB7tThV4Yvjh7cHGsjzgBExgIXW_G2peaMnEm3QJkHrMcu40a7S46coZk-BSj7AGRuAYTRZM9fkYR8NpJ56g-m8z5XsAN6ixX5TW5v6Hi9KL9SdTCgnn00LbJstCtTtYHrPf-Hj8jZN_CNc-JBvcvfTeViJ5qI4Bovp6QLYQuTU7F0mv8veXIUzHcvicDF-jxLSMDb9PQ5QxOTFjM-t-NBTgfFZtjeQsYTVQEQwfE3WtN4VBpd34t3-7MzFTtKEKwVsNBf7_uNaBvLNdIR_3KKCBfy2aBRyEFjdwgfREd8m9UOc_56WUwD05yDC014wA&q-sign-algorithm=sha1&q-ak=AKIDZx89zje9_yf8xTTwuOooH-ipJK7t0694fEoNqh0LmIXoEeX3RUSdwoBYcKW9jya6&q-sign-time=1690448310%3B1690455505&q-key-time=1690448310%3B1690455505&q-header-list=host&q-url-param-list=x-cos-security-token&q-signature=4fc1f7bea6722715fa978559a2f96cf3c8bf33b6)]

添加ComPDFKit的SDK包

  1. 在ComPDFKit PDF SDK的安装包中找到ComPDFKit.xcframework。它包含了所有支持的架构的二进制文件。

  2. 打开新创建的iOS项目,并在右侧面板中选择General。然后找到Frameworks, Libraries, and Embedded Content部分,将ComPDFKit.xcframework直接拖放到该部分,并将Embed选项设置为Embed & Sign

  3. 使用快捷键"Command_B"编译项目。如果没有报错,说明配置正确,您可以继续进行下一步。如果报告了一些错误,您需要检查错误的原因。如果您无法确定错误,可以联系我们的技术团队来解决问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RoEW9p2b-1690448461861)(https://developer-private-1258344699.cos.ap-guangzhou.myqcloud.com/column/article/10679850/20230727-13b47eaa.jpg?x-cos-security-token=BJdJsHEW9tRdV4U1c2UC8j4hz1AQDOia4510ee2f0b75adf0638ee2ff43d58be2ELpcYO4-9LL7ugDY7fTqE1DAu7so_hZ0d-KTMmMc8lrqP391U9YzIcudjry39U1uWLThzIfs8tSw2i0Nm9Vh5A6fJp3pkQWB8F6XOYhaKcPAxdWzcrkqeaoPY1ujghnhWLnXv4FkmKN7Hoe6qvIw-POOvu5o3x9WqYNSoLv4X-vlDowv623Y5N4kyjvXt23meXofzR4QU7V8ZqAPzjTLZh9HaWkHbe9WnhrU9yq2pkNtqbic6h0kjQlYXRZzUjptO5-G5i3M3PXIFS36di7g9LbMYl4evcRSJeYzBwKsKIgylmf_Vom_eoFdKhTYdJ3emUqUfE1v6yQhkv7BlnFJEAMGg2inzAGiZ0UdLeZPhPJQg8lW006myeSby4SBhQ-LbvNyPmo-SiuHcy6y7udiNA&q-sign-algorithm=sha1&q-ak=AKIDVUWFagSBfmdFsbkPHxU2L5M4LgEks9yAJ3GqWiifcRnTKEaO3lgwmHwtCh0vjKwz&q-sign-time=1690448341%3B1690455536&q-key-time=1690448341%3B1690455536&q-header-list=host&q-url-param-list=x-cos-security-token&q-signature=384f6e4c7385b8732a6471578cb3fdc5ba383eba)]

添加License Key

  1. 将头文件ComPDFKit/ComPDFKit.h 导入到AppDelegate中。

  2. 按照下面的代码,并在didFinishLaunchingWithOptions方法中调用CPDFKit setLicenseKey:@"LICENSE_KEY" secret:@"LICENSE_SECRET"方法。您需要用您获得的许可证替换LICENSE_KEYLICENSE_SECRET

#import <ComPDFKit/ComPDFKit.h>

@interface AppDelegate ()

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.

/*
 // Set your license key here. ComPDFKit is commercial software.
 // Each ComPDFKit license is bound to a specific app bundle id.
 
 // Notice: This is a demo project, presenting completed ComPDFKit functions.
 // The functions might be different based on the license you have purchased.
 // Please check the functions you chose work fine in this demo project.
 
 // BOOL tIsFeatureLocked = ![[CPDFKit sharedInstance] allowsFeature:CPDFKitFeatureSecurityWatermark];
 */

 // [CPDFKit setLicenseKey:@"YOUR_LICENSE_KEY_GOES_HERE" secret:@"YOUR_LICENSE_SECRET_GOES_HERE"];
  
    [CPDFKit setLicenseKey:@"" secret:@""];
    
    NSString *tAnnotateAuther = CPDFKitShareConfig.annotationAuthor;
    NSLog(@"CPDFKit Annotation Author: \t %@", tAnnotateAuther);
    
    CPDFKitShareConfig.enableAnnotationNoRotate = YES;
    
    return YES;
}


编译并运行项目。如果控制台输出了"version information"(版本信息),则表示许可证已成功设置。否则,请查看本博客末尾的"故障排除"部分或检查控制台中的错误日志,以快速确定并解决问题。

展示pdf文档

准备一个测试的PDF文件,将其拖放到新创建的 pdfView 项目中。通过这种方式,您可以使用 NSBundle 加载和预览本地的PDF文档。下面的图片展示了将名为“Online5”的PDF文档导入项目的示例。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ErttdG0d-1690448461861)(https://developer-private-1258344699.cos.ap-guangzhou.myqcloud.com/column/article/10679850/20230727-76d5ff81.jpg?x-cos-security-token=BJdJsHEW9tRdV4U1c2UC8j4hz1AQDOia3815c88c47721e6bb71051e0f7f0424cELpcYO4-9LL7ugDY7fTqE0S-7mQ31RaKi320guAM036P5TiVFICTdzr7OAtAtPw6pRBAjRt_g7m5VgzngXz-oaB98vh5cRIvwLenm-_p-vDNR9IiOKw5d7h5wj1zzORwopu1nLxnnkjcodCu28Qo701G44Drr34uu9WrVPrToEnybcgX5o97x17L3QAWO32n7ETsg_Qaa2YfwftpDJheb4eM6tZTXWy6RjpOlVvcGi1CTjfXJ9EXwJvZxPSJ0na0UltepeN91dqAqMwNSUqQk-NtYM55Q-YQrHD0uAT101z9rogTjxftuIcmqKs-NQuvQTCZtQX4w3-rVaaAZPE-a6a7wh32gM9jiSq42NWSK-MS8w9ujs5z5n8tmi9WmDHyDFgI6kJablZ5zYb5rvagow&q-sign-algorithm=sha1&q-ak=AKID4FR2rFJa4bCi1CHaZ3tS-XWqFCDxhlPXTnJvR5koLimvxwQCDSJtMiYiOWbWXiYw&q-sign-time=1690448414%3B1690455609&q-key-time=1690448414%3B1690455609&q-header-list=host&q-url-param-list=x-cos-security-token&q-signature=8a71af0815150afd9bb0e7af3daf927196f430e5)]

  1. 准备一个测试的PDF文件,将其拖放到新创建的 pdfView 项目中。通过这种方式,您可以使用 NSBundle 加载和预览本地的PDF文档。下面的图片展示了将名为“Online5”的PDF文档导入项目的示例。
    NSString *pdfPath= [bunle pathForResource:@"Online5" ofType:@"pdf"];
    NSURL *url = [NSURL fileURLWithPath:pdfPath];
    CPDFDocument *document = [[[CPDFDocument alloc] initWithURL:url] autorelease];

    CGRect rect = self.view.bounds;
    CPDFView *pdfView = [[[CPDFView alloc] initWithFrame:rect] autorelease];
    pdfView.document = document;
  1. 将创建的 CPDFView 添加到当前控制器的视图中。示例代码如下:
 [self.view addSubview:pdfView];
  1. 连接您的设备或模拟器,并使用快捷键"Command_R"运行应用程序。PDF文件将被打开并显示在屏幕上。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hmnkTaQL-1690448461862)(https://developer-private-1258344699.cos.ap-guangzhou.myqcloud.com/column/article/10679850/20230727-e8c1f4d9.jpg?x-cos-security-token=5k37kcaEnQva7z6hqkSrfzpVKfj5daDaf611dd67a1df9daa077c5526e075f61c0NEaMxG3eQ9Su4KDqw4KiZJKiT5Hs-LhIdOHlhJLjL8XYGJcZPRH4l_GZ2d-TU28-fbWJO5meIoHCA_FYbOqD_-oh7o7lXSl4om2WGabqJo3F79rumC4R3aLLvO0XfgcyV7kFvWA8SRhyBPAJiyeJ3NGgmw7FcbuTgjr_Vb0PjMiWZiCjZIyJcVs4zu_c20PST-fI5iugwITLnhxpUew8C7oRp02LX9K_PcLz7yFcHe_fckD23sIFicJsmxnalSkMYUdFzn5v6s-W39tT5IumTmlI3gHwrqDrELZD-mkc3ZmKvxjSq8-RHHjr9cWsDuR9hVfsTlMBgQ7vV3y99d3olRyMKvFT1RRorXE766jFwMmI6dE-E2V-LPtJWufdG-Q9Xhh0OxszfoYetvHBvPu5w&q-sign-algorithm=sha1&q-ak=AKIDUP36ZIVKSCohmvCglJKaujA6Bbfm1iRfBuCMedA23wPRaLiCbxAAtws09Yg6ubqB&q-sign-time=1690448430%3B1690455625&q-key-time=1690448430%3B1690455625&q-header-list=host&q-url-param-list=x-cos-security-token&q-signature=fa6938fb2ff06e60331f0ef583db1d319920397c)]

  1. 如果无法显示PDF内容,请检查创建的NSURL和"CPDFDocument"对象是否为空,或者创建的"CPDFView"的大小是否为零。它们不应该为空。

如果文件路径中包含特殊字符,您的NSURL将会为nil。请使用以下代码进行处理。

[pdfPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

如果创建的CPDFView的大小为零,按照以下代码调整pdfview的大小。

pdfview.frame = self.view.frame.bounds

所有代码如下所示:

    NSString *pdfPath= [bunle pathForResource:@"Online5" ofType:@"pdf"];

    NSURL *url = [NSURL fileURLWithPath:pdfPath];
    CPDFDocument *document = [[[CPDFDocument alloc] initWithURL:url] autorelease];
    if (document.error && document.error.code != CPDFDocumentPasswordError) {
        return;
    }
    
    // Initialize a CPDFView object with the size of the entire screen
    CPDFView *pdfView = [[[CPDFView alloc] initWithFrame:self.view.bounds] autorelease];
    
    // Set the document to display
    pdfView.document = document;
    
    // Add the pdfView to the root view
    [self.view addSubview:pdfView];

问题排查

  1. 位码

    即使所有配置都正确,仍可能出现编译错误。首先,请检查是否禁用了位码(bitcode)。在较旧的Xcode版本(如Xcode 13)中,默认情况下可能启用了位码选项。为了运行应用程序,需要将其设置为“否”。

  2. License(许可证)

    如果出现许可设置错误,请确保“通用设置”中的身份(Bundle ID)设置与您联系我们以获取许可时提供的Bundle ID匹配。如果出现已过期的许可消息,请联系ComPDFKit团队以获取最新的许可和密钥。

  3. PDF无法展示

    请检查我们传入的路径是否需要特殊编码,或者我们传入的本地路径是否存在

  4. 其他问题

    如果在集成我们的ComPDFKit PDF SDK for iOS时遇到其他问题,请随时联系ComPDFKit团队

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/797479.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式行业真的没前途吗?

就嵌入式而言&#xff0c;需要学的东西比较多。linux底层驱动的了解&#xff0c;单片机底层驱动开发、RTOS、bootloader、应用层开发&#xff08;MBD&#xff09;、各种标准、服务、协议等等&#xff0c;还要懂一些硬件&#xff0c;看得懂硬件原理图&#xff0c;最好自己能画板…

【业务功能篇53】Springboot 数据封装对象

Entity、VO、DTO解释 1&#xff09;Entity&#xff1a;实体&#xff0c;与数据库的每一行数据打交道的&#xff0c;它的属性对应数据库每个字段 class User{ private Long idCard; private String name; private Date birthday; ...... } 对应数据库的id&#xff0c;name&…

VMware虚拟机安装VMware tools

一、挂载光驱 执行以下命令来创建 /mnt/cdrom 目录&#xff1a; mkdir -p /mnt/cdrom-p 参数会确保如果 /mnt/cdrom 的上级目录&#xff08;例如 /mnt&#xff09;不存在的话也会被创建。 然后&#xff0c;你可以再次尝试挂载光盘&#xff1a; mount /dev/sr0 /mnt/cdrom这次…

DragGAN:用崭新的方式进行图像处理

该项目的论文被SIGGRAPH 2023 收录&#xff0c;论文以 StyleGAN2 架构为基础&#xff0c;实现了 “Drag” 关键点就能轻松 P 图的效果。 https://github.com/XingangPan/DragGAN https://vcai.mpi-inf.mpg.de/projects/DragGAN/ 目录 原图1测试一测试二测试三 原图2测试一测试…

基于Java+SpringBoot+vue前后端分离师生健康信息管理系统设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

数据结构 | 基本数据结构——栈

目录 一、线性数据结构 二、栈 2.1 何谓栈 2.2 栈抽象数据类型 2.3 用Python实现栈 2.4 匹配括号 2.5 普通情况&#xff1a;匹配符号 2.6 将十进制数转换成二进制数 3.7 前序、中序和后序表达式 3.7.1 从中序到后序的通用转换法 3.7.2 计算后序表达式 一、线性数据结…

Docker 镜像操作

Docker镜像操作 我们已经介绍了容器操作,今天来了解下 Docker镜像 以及 镜像操作 。让我们一起开启镜像之旅吧。 Docker镜像 镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库…

QML 往图表添加文字显示

需求&#xff1a; 需要在图表的某几个点上&#xff0c;添加相应的文字显示。效果如下: 主要是&#xff0c;如何将坐标进行转化为图表的相对坐标&#xff0c;然后动态创建文本后&#xff0c;将转换坐标设置到Text中。 演示demo。需要点击Text按钮后&#xff0c;图表显示。 impo…

如何为WordPress博客网站配置自己购买的域名,并且公网可访问?

文章目录 如何为WordPress博客网站配置自己购买的域名&#xff0c;并且公网可访问&#xff1f;前置条件&#xff1a;具体操作步骤如下&#xff1a;步骤1: 后台预留自定义域名步骤2: 配置您的域名DNS解析步骤3: 测试域名解析步骤4: 在前台终端测试运行步骤4: 修改cpolar配置文件…

等保测评需要做几次?做一次以后还需要做吗?

虽然我国等保政策已经严格落地执行了&#xff0c;但不少企业对于等保测评相关政策还不是很了解&#xff0c;有人在问&#xff0c;等保测评需要做几次&#xff1f;做一次以后还需要做吗&#xff1f;今天我们就来简单回答一下吧&#xff01; 等保测评需要做几次&#xff1f;做一…

【无公网IP】在公网环境下Windows远程桌面Ubuntu 18.04

文章目录 一、 同个局域网内远程桌面Ubuntu1. 更新软件仓库2. 安装支持包3. 安装XFCE4桌面环境4. 安装XRDP5. 环境设置5.1 XFCE桌面配置5.2 在配置文件中&#xff0c;加入XFCE会话 6 重启服务7. 查看IP地址8. 使用Windows远程桌面连接 二、公网环境系统远程桌面Ubuntu1. 注册cp…

如何恢复U盘数据 U盘数据恢复图文教程

u盘是我们日常生活中很常用到的存储设备&#xff0c;我们会经常用到u盘去保存重要的数据或文件&#xff0c;但是使用的频率多了&#xff0c;有时候也会因为一些原因&#xff0c;出现各种各种的异常问题&#xff0c;就比如说u盘数据丢失。那&#xff0c;当u盘数据丢失后还可以恢…

金山云与平凯星辰达成全面战略合作 技术创新模式助力企业数字化转型

在新型经济形态下&#xff0c;云计算成为数字化发展的必然方向&#xff0c;互联网、金融、医疗等行业的企业纷纷加速数字经济转型。2023 年&#xff0c;金山云与企业级开源分布式数据库厂商平凯星辰&#xff08;PingCAP&#xff09;达成战略合作&#xff0c;顺应技术创新与行业…

python 之 浮点数精度丢失例如:0.1 + 0.2,产生的原因、问题的推导、解决的方案

一、背景 计算机基本上使用二进制数字&#xff0c;即 0 或 1表示&#xff1b; 十进制&#xff1a; 1 / 3 0.3333333333… 无限循环的情况 浮点数的总数是无限且不可数的&#xff0c;浮点数在计算机占用的内存是有限的&#xff0c;如果表示计算机内存则占满 不可能用有限的内存…

Kafka 入门到起飞系列 - 到底什么是再平衡?谁来执行再平衡呢?什么是组协调器呢?

再平衡&#xff08;Rebalance&#xff09; 本质上是一种协议&#xff0c;规定了一个消费组中所有消费者如何达成一致来分配订阅主题的每个分区 其实就是建立分区和消费者映射关系的这么一个过程&#xff0c;最终主题下的一个分区只会分配给一个消费者 比如有10个分区&#xff…

个人博客系统 -- 登录页面添加图片验证码

目录 1. 功能展示 2. 前段代码 3. 后端代码 1. 功能展示 在登录页面添加验证码登录 1. 检测到没有输入验证码或者输入的验证码错误时,进行弹窗提示.并且刷新当前验证码图片 2. 点击验证码进行刷新 2. 前段代码 1. 添加验证码标签,在密码的下面,在login.html进行修改 主要…

多模态预训练 + 自监督学习 + 下游任务介绍

预训练 1&#xff09;特征提取要解决的问题是怎么分别量化文字和图像&#xff0c;进而送到模型学习? 特征抽取&#xff1a; 文本&#xff1a;倾向于bert等大模型 图像&#xff1a;神经网络&#xff0c;VIT等 2&#xff09;特征融合要解决的问题是怎么让文字和图像的表征交…

基于Java+SpringBoot+vue前后端分离社区医院信息平台设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

Hadoop_HDFS_常见的文件组织格式与压缩格式

参考资料 1. HDFS中的常用压缩算法及区别_大数据_王知无_InfoQ写作社区 2. 本文主要介绍下HDFS上的常见文件格式和压缩格式 总结 : HDFS 中常见的文件存储格式 textfile &#xff1a;行式存储格式sequencefile &#xff1a;行式存储格式orc &#xff1a;列式存储格式, 支…

Deployment 升级应用2

上次我们说到自己手动的做使用 RS 的方式来升级 pod &#xff0c;感觉还是蛮复杂的&#xff0c;并且容易弄错&#xff0c;实际生产过程中&#xff0c;肯定不会这样来弄&#xff0c;很危险 那么今天我们来分享 Deployment 的方式来显示的升级应用吧 Deployment 的方式升级应用…