其它技术点iOS PDF111

iOS PDF文档批注与修改

2017-07-05  本文已影响310人  多加辣椒

在我前几篇文章里面分别介绍了PDF文件预览的几种方法PDF文档的格式转换,今天来介绍下怎么实现PDF文档批注与修改的功能。在iOS系统下直接实现PDF批注的功能有些困难,这个时候就要借助第三方福昕来实现这些功能,大家可以点进去了解一下,废话不多说。

PDF工具包介绍

首先去官网下载工具包,比较坑爹的是要先注册个账号才能下载。需要注意的是使用工具包有以下系统要求:

打开libs文件夹是我们主要需要用到的东西


Snip20170705_5.png

UI EXTENSIONS组件基于View Control提供,支持自定义用户界面,且包括大量的内置工具,如文本选择、文本标注和绘图、表单填写、自定义文本输入、标准和动态图章、夜间模式、大纲导览和全文搜索等 。这是一套高级的带内置界面的PDF扩展工具,提供了默认的界面和交互,同时提供了组件源代码,开发人员可以通过对源代码的直接修改,来实现默认交互,以及默认界面的修改。

运行下里面的Demo,先看下效果图:![PDFDemo.gif](http:https://img.haomeiwen.com/i1786260/27d4167f138ebb61.gif?
imageMogr2/auto-orient/strip)

集成

下载好的工具包里面有一份开发文档,开发文档里面有介绍具体怎么集成,不过是一份全英文的文档,不知道为什么国内公司开发的工具包不提供一份中文文档,还好那些英文我还能看得懂,但是我不推荐大家看那份文档,很坑,一些重要的东西没讲到,我当时看了几天,踩了很多坑。所以我自己又简单封装了里面的一些主要代码。我这边来介绍一下怎么集成它的SDK。

Snip20170705_6.png Snip20170705_7.png Snip20170705_8.png Snip20170705_9.png

按照这个步骤来就算是集成成功了。

实现PDF批注功能

集成成功之后就可以写代码了,我自己写了一个Demo示例,简单实现了PDF涂鸦、PDF添加文字、PDF全文搜索的功能。先看下效果图:


PDFEdit.gif

我这边是写了一个单例类去实现一些简单的PDF批注功能,这里贴上.h代码,具体实现代码可以在文章末尾下载我的Demo:

#import <Foundation/Foundation.h>
#import <FoxitRDK/FSPDFObjC.h>
#import "FoxitRDK/FSPDFViewControl.h"
#import "../../../libs/uiextensions_src/uiextensions/UIExtensionsManager.h"

typedef NS_ENUM(NSInteger, WYPDFAnnotType){
    WYPDFAnnotTypeSelect,
    WYPDFAnnotTypeNote,         // 文字标注
    WYPDFAnnotTypeMarkup,       // 添加高亮标记
    WYPDFAnnotTypeShape,        // 添加形状选框
    WYPDFAnnotTypeFreetext,     // 添加自由文本
    WYPDFAnnotTypePencil,       // 画笔涂鸦
    WYPDFAnnotTypeEraser,       // 橡皮擦
    WYPDFAnnotTypeLine,         // 直线
    WYPDFAnnotTypeStamp,        // 图章
    WYPDFAnnotTypeInsert,       // 插入文字
    WYPDFAnnotTypeReplce,       // 替换
    WYPDFAnnotTypeAttachment,   // 附件
    WYPDFAnnotTypeSignature,    // 签名
    WYPDFAnnotTypeSearch        // 全文搜索
};

@interface WYPDFManager : NSObject


/**
 set pdfView frame
 */
@property (nonatomic, assign) CGRect pdfDocFrame;

+ (instancetype)defalutManager;

/**
 unlock Foxit MobilePDF SDK using a license before calling any APIs.
 */
+ (BOOL)applyTheLicenseKey;


/**
 打开文档
 @param filePath 文档路径
 */
- (void)openPDFDocWithFilePath:(NSString *)filePath showInView:(UIView *)view;


/**
 添加文档编辑功能
 */
- (void)addAnnotToolHandle:(WYPDFAnnotType)annotType;


/**
 取消编辑功能返回预览模式
 */
- (void)cancalAnnot;


/**
 保存修改后的文档
 */
- (BOOL)savePDFDocWithFilePath:(NSString *)filePath;

@end

这里需要注意的几个地方:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    /****************** Apply the license key ******************/
    
    [WYPDFManager applyTheLicenseKey];
    
    return YES;
}

然后是在VC里面调用单例类的方法去实现批注功能

 // 打开PDF文档
    [[WYPDFManager defalutManager] openPDFDocWithFilePath:self.pdfPath showInView:self.contentView];
    // 设置Frame
    [WYPDFManager defalutManager].pdfDocFrame = CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height - 49 - 64);

/****************** 保存 ******************/
- (void)saveClick{
    NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"123.pdf"];
    [[WYPDFManager defalutManager] savePDFDocWithFilePath:filePath];
}

/****************** 画笔涂鸦 ******************/
- (IBAction)pencilClick:(UIButton *)sender {
    [[WYPDFManager defalutManager] addAnnotToolHandle:WYPDFAnnotTypePencil];
}

/****************** 添加文字 ******************/
- (IBAction)wordClick:(UIButton *)sender {
    [[WYPDFManager defalutManager] addAnnotToolHandle:WYPDFAnnotTypeFreetext];
}

/****************** 全文搜索 ******************/
- (IBAction)searchClick:(UIButton *)sender {
     [[WYPDFManager defalutManager] addAnnotToolHandle:WYPDFAnnotTypeSearch];
}

/****************** 取消编辑动作 ******************/
- (IBAction)completClick:(UIButton *)sender {
    [[WYPDFManager defalutManager] cancalAnnot];
}


其实实现批注功能主要就是一句代码[[WYPDFManager defalutManager] addAnnotToolHandle:<#(WYPDFAnnotType)#>];然后根据枚举值选择你需要的批注功能

typedef NS_ENUM(NSInteger, WYPDFAnnotType){
    WYPDFAnnotTypeSelect,
    WYPDFAnnotTypeNote,         // 文字标注
    WYPDFAnnotTypeMarkup,       // 添加高亮标记
    WYPDFAnnotTypeShape,        // 添加形状选框
    WYPDFAnnotTypeFreetext,     // 添加自由文本
    WYPDFAnnotTypePencil,       // 画笔涂鸦
    WYPDFAnnotTypeEraser,       // 橡皮擦
    WYPDFAnnotTypeLine,         // 直线
    WYPDFAnnotTypeStamp,        // 图章
    WYPDFAnnotTypeInsert,       // 插入文字
    WYPDFAnnotTypeReplce,       // 替换
    WYPDFAnnotTypeAttachment,   // 附件
    WYPDFAnnotTypeSignature,    // 签名
    WYPDFAnnotTypeSearch        // 全文搜索
};

我这里只是封装了一些很简单的功能,还有很多功能大家可以自行研究官方Demo和开发文档。

补充

本文Demo下载地址
福昕官网
官网Demo下载地址

上一篇 下一篇

猜你喜欢

热点阅读