美文网首页收藏ios
iOS加载签章pdf——pdf.js

iOS加载签章pdf——pdf.js

作者: _feiyu_2100 | 来源:发表于2018-10-22 12:04 被阅读621次
    pdf.jpg

    加载pdf文件一般我们会使用UIWebView、WKWebView来加载pdf,但是当pdf内含有签名以及电子章的时候,电子签章和签名将无法显示出来。原因是:在PDF文件中看到的签名是签名字段小部件的外观。字段小部件是特定的PDF注释。iOS中的默认PDF呈现引擎(由UIDocumentInteractionController,QuickLook框架等使用)仅显示主页面内容,它不显示PDF页面上的注释。这时候就需要我们使用其他第三方PDF渲染引擎了。

    pdf.js在 HTML5 平台上展示 PDF 文档。支持web、iOS、Android端(android 手机微信端不支持)。
    1.创建iOS工程,将minified复制到工程目录中。


    minified复制到工程目录.png

    2.拖拽复制的文件目录到工程中,选择folder references(亲测选择groups没有效果,原因未知):

    拖拽复制的文件目录到工程中.png

    3.新建PdfLoadWebView继承自UIWebView,添加如下代码:

    - (void)loadPDFFile:(NSString*)filePath {
        _filePath = filePath;
      
        NSString *viwerPath = [[NSBundle mainBundle] pathForResource:@"viewer" ofType:@"html" inDirectory:@"minified/web"];
        NSString *urlStr = [NSString stringWithFormat:@"%@?file=%@#page=1",viwerPath,filePath];
        urlStr = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
        NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]];
        [self loadRequest:request];
    }
    

    在控制器里添加如下代码:

      webView = [[PdfLoadWebView alloc] initWithFrame:self.view.bounds];
        [self.view addSubview:webView];
        NSString *pdfFilePath = [[NSBundle mainBundle] pathForResource:@"git搭建" ofType:@"pdf"];
        [webView loadPDFFile:pdfFilePath];
    

    运行后效果如图:


    运行后效果.png

    注释:
    1.因为项目中我只需要展示pdf,所以就将对pdf的操作按钮隐藏掉了。如果需要按钮将minified->web->viewer.html 中

    <div class="toolbar" style="display: none;">
    

    代码修改成

    <div class="toolbar">
    
    
    viewer.png

    2.项目中需要用到pdf滚到到底部或者头部,所以我在viewer.html写了两个js方法以供oc进行调用。
    viewer.html文件中

    <script type="text/javascript">
            function lastPage() {
                document.getElementById("lastPage").click();
            }
        function firstPage() {
            document.getElementById("firstPage").click();
        }
    

    在PdfLoadWebView.m中进行oc调用js方法

            
    [self stringByEvaluatingJavaScriptFromString:@"lastPage()"];
    
    

    因为我实在页面加载完成后立即进行页面跳转。所以加了一个延时操作

    现在加载的是本地pdf,加载网络pdf还需要继续研究。
    DEMO
    iOS展示pdf签名时遇到的问题及解决办法
    iOS使用pdf.js打开PDF文件
    iOS 加载PDF问题无法显示电子章问题

    相关文章

      网友评论

        本文标题:iOS加载签章pdf——pdf.js

        本文链接:https://www.haomeiwen.com/subject/arvwzftx.html