美文网首页
iOS--H5界面生成PDF格式进行输出

iOS--H5界面生成PDF格式进行输出

作者: 子小每文 | 来源:发表于2017-12-29 10:21 被阅读0次

    当时在开发新版本,领导告诉我们,需要实现一个读取H5界面内容,进行本地保存PDF格式进行观看.进行研究这个东西.

    H5界面生成PDF需要的俩中形式:

      1:图片的形式的保存.
    

    主要是截取H5界面的所有内容,是图片形式的,然后生成PDF格式.

       2:截取H5界面字符串和图片
    

    保存的所有的字和图片,进行拼装,然后以不同样式进行保存PDF格式

    第一种方法很只是简单的操作就可以,但是满足不了需求,只能选择第二个.

    但是第2个截取保存数据和图片,自己写一套的话,工作量很大的.

          利用系统里面的UIWebView
    
           iOS开发人员都太熟悉不过了吧,哈哈,都是用这个方法
    
          [UIWebView loadHTMLString:@"" baseURL:@""]; 
           进行加载H5界面所有文字和图片.
    
           然后进行下面的方法进行保存数据到本地
    
    这个是UIWebVIew扩展类,自己写就行
    - (NSData *)converToPDF{
    
        UIViewPrintFormatter *fmt = [self viewPrintFormatter];
    
        UIPrintPageRenderer *render = [[UIPrintPageRenderer alloc] init];
    
        [render addPrintFormatter:fmt startingAtPageAtIndex:0];
    
        CGRect page;
    
        page.origin.x=0;
    
        page.origin.y=0;
    
        page.size.width=600;
    
        page.size.height=768;
    
        CGRect printable=CGRectInset( page, 50, 50 );
    
        [render setValue:[NSValue valueWithCGRect:page] forKey:@"paperRect"];
    
        [render setValue:[NSValue valueWithCGRect:printable] forKey:@"printableRect"];
    
        NSMutableData * pdfData = [NSMutableData data];
    
        UIGraphicsBeginPDFContextToData( pdfData, CGRectZero, nil );
    
        for (NSInteger i=0; i < [render numberOfPages]; i++)
    
        {
    
            UIGraphicsBeginPDFPage();
    
            CGRect bounds = UIGraphicsGetPDFContextBounds();
    
            [render drawPageAtIndex:i inRect:bounds];
    
        }
    
        UIGraphicsEndPDFContext();
    
        return pdfData;
    
    }
    
    //点击保存进行调用上面的方法
    - (void)savePDF
     {
        NSData *data = [_webView converToPDF]; 调用上面的方法
        NSString *path = [NSHomeDirectory()    stringByAppendingPathComponent:[NSString stringWithFormat:@"Documents/testFile.pdf"]];
        BOOL result = [data writeToFile:path atomically:YES];
        [MBProgressHUD hideHUD];
    
        if (result) {
           "保存成功"
        }else{
          "保存失败";
        }
        从本地获取路径进行显示PDF
        NSURL *pdfURL = [NSURL fileURLWithPath:path];
        NSURLRequest *request = [NSURLRequest requestWithURL:pdfURL];
        [self.webView setScalesPageToFit:YES];
        [self.webView loadRequest:request];
    }
    
    

    接着从本地打开就ok了.

    相关文章

      网友评论

          本文标题:iOS--H5界面生成PDF格式进行输出

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