소스 검색

提取webview,pdfview 模块化

Ray Zhang 6 년 전
부모
커밋
3e36398d72

+ 47 - 0
common/WK PDF+Web/RAPDFViewController.h

@@ -0,0 +1,47 @@
+//
+//  RAPDFViewController.h
+//  RedAnt ERP Mobile
+//
+//  Created by Ray on 14-8-7.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import <MessageUI/MessageUI.h>
+#import <WebKit/WebKit.h>
+@interface RAPDFViewController : UIViewController<UIDocumentInteractionControllerDelegate,MFMailComposeViewControllerDelegate,UIPrintInteractionControllerDelegate,WKNavigationDelegate>
+@property (weak, nonatomic) IBOutlet WKWebView *wkWebview;
+
+@property (strong, nonatomic) IBOutlet UIActivityIndicatorView *mum;
+@property (strong,nonatomic) NSString* url; //pdf 路径,可以是网络路径或文件路径
+@property (strong,nonatomic) NSString* filename; // 保存为文件时指定的名称
+@property (strong,nonatomic) NSData* content;
+@property bool isLocalfile;
+@property (strong, nonatomic) IBOutlet UIBarButtonItem *BB_action;
+@property (strong,nonatomic) UIDocumentInteractionController* fileInteractionController;
+@property (nonatomic , copy) void (^onLoadSuccess)(NSString* url );
+@property (nonatomic,copy) NSString *cachePath; //指定的保存路径
+
+@property (nonatomic , copy) void (^onSavePDF)(NSString* name,NSString* file );
+@property (strong,nonatomic) NSString* mail_subject;
+@property (strong,nonatomic) NSString* mail_content;
+@property (strong,nonatomic) NSArray* mail_to;
+@property (strong,nonatomic) NSString* save_name; // save 按钮默认保存名
+@property (strong,nonatomic) NSString* save_note;
+
+@property (strong, nonatomic)  UIBarButtonItem *btnshare;
+@property (strong, nonatomic)  UIBarButtonItem *btnPrint;
+@property (strong, nonatomic)  UIBarButtonItem *btnemail;
+@property (strong, nonatomic)  UIBarButtonItem *btnsave;
+
+
+@property bool autoPrint;
+@property bool hidenavi;
+
+@property bool canSave;
+
+@property bool defaultStyle;
+
+
+@property (strong,nonatomic) NSString* attachment_name; //email 按钮附件名称(已废弃)
+@end

+ 1135 - 0
common/WK PDF+Web/RAPDFViewController.m

@@ -0,0 +1,1135 @@
+//
+//  RAPDFViewController.m
+//  RedAnt ERP Mobile
+//
+//  Created by Ray on 14-8-7.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import "RAPDFViewController.h"
+#import "RAUtils.h"
+#import "const.h"
+#import "AppDelegate.h"
+#import "PDFUtils.h"
+#import "TextUtils.h"
+
+
+@interface RAPDFViewController ()
+
+@end
+
+@implementation RAPDFViewController
+
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
+{
+    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+    if (self) {
+        // Custom initialization
+    }
+    return self;
+}
+
+- (void)setFilename:(NSString *)filename {
+    _filename = [TextUtils legalFilename:filename];
+}
+
+- (void)viewDidLoad
+{
+    
+    NSLog(@"pdf viewer loaded");
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+    UIRefreshControl *ref = [[UIRefreshControl alloc]init];
+    ref.tag = 200 ;
+    ref.attributedTitle = [[NSAttributedString alloc]initWithString:@"drag to refresh"];
+    ref.tintColor = [UIColor colorWithRed:0.10 green:0.68 blue:0.94 alpha:0.7];
+    //    ref.hidden = true;
+    [ref addTarget:self action:@selector(changeCell) forControlEvents:UIControlEventValueChanged];
+    [self.wkWebview.scrollView addSubview:ref];
+//    self.webView.dataDetectorTypes=UIDataDetectorTypeAll;
+    self.wkWebview.navigationDelegate = self;
+    if (@available(iOS 11, *)) {
+        self.wkWebview.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
+    }
+    else {
+
+
+
+        self.automaticallyAdjustsScrollViewInsets = NO;
+    }
+
+   // self.btnsave.tintColor = UIColorFromRGB(0x996633);
+    
+    if(self.defaultStyle)
+    {
+
+        self.btnshare =[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction
+                                                                     target:self
+                                                                     action:@selector( onActionClick:)];
+
+        
+        
+        self.btnPrint =[[UIBarButtonItem alloc] initWithTitle:@"Print"
+                                                                    style:UIBarButtonItemStylePlain
+                                                                    target:self
+                                                                    action:@selector( onPrintClick:)];
+        
+        NSMutableArray * items = [[NSMutableArray alloc]init];
+        [items addObject:self.btnshare];
+        [items addObject:self.btnPrint];
+
+        self.navigationItem.rightBarButtonItems =items;
+        
+        
+       if (self.navigationController.viewControllers[0]==self )
+       {
+           UIBarButtonItem *closeButton =nil;
+           
+           
+           
+           closeButton=[[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"close"] imageWithRenderingMode:UIImageRenderingModeAutomatic]
+                                                        style:UIBarButtonItemStylePlain
+                                                       target:self
+                                                       action:@selector( onCloseClick:)];
+           //[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Close", nil) style:UIBarButtonItemStylePlain target:self action:@selector(onCloseClick:)];
+           //    closeButton.title = @"Close";
+           
+           self.navigationItem.leftBarButtonItem = closeButton;
+       }
+
+        
+    }
+    else
+    {
+        UIBarButtonItem *closeButton =nil;
+        
+        
+        
+        closeButton=[[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"back"] imageWithRenderingMode:UIImageRenderingModeAutomatic]
+                                                     style:UIBarButtonItemStylePlain
+                                                    target:self
+                                                    action:@selector( onBackClick:)];
+        //[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Close", nil) style:UIBarButtonItemStylePlain target:self action:@selector(onCloseClick:)];
+        //    closeButton.title = @"Close";
+        
+        self.navigationItem.leftBarButtonItem = closeButton;
+        
+        
+        
+        
+        self.btnshare = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"share"] imageWithRenderingMode:UIImageRenderingModeAutomatic]
+                                                         style:UIBarButtonItemStylePlain
+                                                        target:self
+                                                        action:@selector(onActionClick:)];//[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Edit", nil) style:UIBarButtonItemStylePlain target:self action:@selector(onOpenOrderClick:)];
+        
+        // self.btnshare.tintColor = UIColorFromRGB(0x996633);
+        
+        self.btnemail =[[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"mail"] imageWithRenderingMode:UIImageRenderingModeAutomatic]
+                                                        style:UIBarButtonItemStylePlain
+                                                       target:self
+                                                       action:@selector(onEmailClick:)];// [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Commit", nil) style:UIBarButtonItemStylePlain target:self action:@selector(onCommitOrderClick:)];
+        
+        //  self.btnemail.tintColor = UIColorFromRGB(0x996633);
+        
+        // self.btnSend = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Email", nil) style:UIBarButtonItemStylePlain target:self action:@selector(onSendMailClick:)];
+        
+        
+        
+        self.btnsave = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"save"] imageWithRenderingMode:UIImageRenderingModeAutomatic]
+                                                        style:UIBarButtonItemStylePlain
+                                                       target:self
+                                                       action:@selector(onSaveClick:)];        
+        UIBarButtonItem *fixedItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
+        fixedItem.width = 20.0f;
+        NSMutableArray * items = [[NSMutableArray alloc]init];
+        [items addObject:self.btnshare];
+        [items addObject:fixedItem];
+        [items addObject:self.btnemail];
+        
+        if(self.canSave)
+        {
+            [items addObject:fixedItem];
+            [items addObject:self.btnsave];
+        }
+        self.navigationItem.rightBarButtonItems=items;
+        
+        self.btnshare.enabled =false;
+        
+        
+        self.btnemail.enabled =false;
+        self.btnsave.enabled =false;
+        
+    }
+
+    
+//   self.url=@"http://192.168.1.3:8080/npd/test.pdf";
+//    NSURL* url = [NSURL URLWithString:self.url];
+//    
+//    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:self.url]        cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:2000];
+//    
+//    
+//    [self.webView loadRequest:request];
+    
+    
+    [self loadcontent];
+}
+- (void)onBackClick:(UIButton *)sender {
+    
+    
+    [self.navigationController popViewControllerAnimated:FALSE];
+}
+- (void)onCloseClick:(UIButton *)sender {
+    
+    [self dismissViewControllerAnimated:false completion:nil];
+    //[self.navigationController popViewControllerAnimated:FALSE];
+}
+-(void)ReloadData
+{
+    
+    //    Count ++ ;
+    //    [mytabelview reloadData];
+    UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200];
+    
+    [reF endRefreshing];
+    [self loadcontent];
+
+    
+}
+
+- (void)copyTmpLocalFile:(NSString *)localPath {
+    
+    NSString *path = NSTemporaryDirectory();
+    NSString *filePath = [path stringByAppendingPathComponent:self.filename];
+    NSFileManager *fileManager = [NSFileManager defaultManager];
+    if ([fileManager fileExistsAtPath:filePath]) { // 文件存在就不会拷贝
+        [fileManager removeItemAtPath:filePath error:nil];
+    }
+    [fileManager copyItemAtPath:localPath toPath:filePath error:nil];
+    self.url = filePath;
+}
+
+-(void) loadcontent
+{
+    
+    UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait..." title:@"Loading..."];
+    self.mum.hidden=false;
+    
+    if(self.isLocalfile)
+    {
+        /*
+        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
+        NSString *cachefolder = [paths objectAtIndex:0];
+        NSString *pdfFolder = [cachefolder stringByAppendingPathComponent:@"pdf_cache"];
+        self.url = [pdfFolder stringByAppendingPathComponent:self.url];
+        */
+        
+        self.content= [NSData dataWithContentsOfFile:self.url];
+        
+        [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+        
+        if (self.filename.length <= 0) {
+            self.filename=[self.url lastPathComponent];
+        } else {
+            [self copyTmpLocalFile:self.url];
+        }
+        
+        self.btnshare.enabled =true;
+        
+        
+        self.btnemail.enabled =true;
+        self.btnsave.enabled =true;
+        
+//        if(self.onLoadSuccess)
+//        self.onLoadSuccess(self.url);
+//        
+//        if(self.autoPrint)
+//        [self startAirPrintWithData:self.content];
+        
+//        NSLog(@"put file to webview");
+//        [self.webView loadData:self.content MIMEType:@"application/pdf" textEncodingName:nil baseURL:nil];
+        
+        NSURL *url = [NSURL fileURLWithPath:self.url];
+        NSURLRequest *request = [NSURLRequest requestWithURL:url];
+        [self.wkWebview loadRequest:request];
+        
+    }
+    else
+    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+        
+        
+        NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:self.url]        cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60*5];
+        
+        //设置请求方式为get
+        
+        [request setHTTPMethod:@"GET"];
+        
+        //添加用户会话id
+        
+        [request addValue:@"text/html" forHTTPHeaderField:@"Content-Type"];
+        
+        //连接发送请求
+        
+        
+        NSHTTPURLResponse* urlResponse = nil;
+        
+        NSError *error = nil;
+        
+        self.content= [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
+        
+        if(self.filename.length<=0)
+            self.filename = [urlResponse suggestedFilename];
+        
+        
+        dispatch_async(dispatch_get_main_queue(), ^{
+            [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+            
+            [[self navigationController] setNavigationBarHidden:self.hidenavi animated:NO];
+            self.navigationItem.title = self.save_name;
+            UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200];
+          //  self.content=nil;
+            if(self.content!=nil&&self.content.length>0)
+            {
+                [reF removeFromSuperview];
+                
+                
+               // NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+                NSString *path = NSTemporaryDirectory();
+                NSString *filePath = [path stringByAppendingPathComponent:self.filename];
+                //    NSError *error = nil;
+                //    BOOL bo = [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:&error];
+                //    NSAssert(bo,@"创建目录失败");
+                if (self.cachePath.length) {
+                    filePath = self.cachePath;
+                }
+                
+                [self.content writeToFile:filePath atomically:YES];
+                
+                self.url = filePath;
+                self.isLocalfile = true;
+
+                
+                self.btnshare.enabled =true;
+                
+                
+                self.btnemail.enabled =true;
+                self.btnsave.enabled =true;
+                
+                
+                
+                NSURL *url = [NSURL fileURLWithPath:filePath];
+                NSURLRequest *request = [NSURLRequest requestWithURL:url];
+                [self.wkWebview loadRequest:request];
+                
+                
+
+                
+                
+                
+ //               int a=0;
+            }
+            else
+            {
+                [RAUtils message_alert:nil  title:@"Open PDF Failed" controller:self];
+                
+                if(self.autoPrint)
+                    [self.navigationController popViewControllerAnimated:true];
+//                self.content = [self.url dataUsingEncoding:NSUTF8StringEncoding];
+            }
+            
+            ;
+//            DebugLog(@"%@",[[NSString alloc] initWithData:self.content encoding:NSASCIIStringEncoding]);
+            //
+            
+//            DebugLog(urlResponse.MIMEType);
+            
+//            [self.webView loadData:self.content MIMEType:urlResponse.MIMEType textEncodingName:nil baseURL:nil];
+            
+            
+            
+            
+        });
+    });
+    
+    
+    
+    
+}
+-(void)changeCell
+{
+    UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200];
+    reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"refreshing"];
+    if ([self respondsToSelector:@selector(ReloadData)])
+    [self performSelector:@selector(ReloadData) withObject:nil afterDelay:1];
+//    DebugLog(@"refresh!!!!!!!!");
+    
+}
+- (void)didReceiveMemoryWarning
+{
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+-(void) viewWillAppear:(BOOL)animated
+{
+    
+    
+    [super viewWillAppear:animated];
+  
+    [[self navigationController] setNavigationBarHidden:self.hidenavi animated:NO];
+}
+- (IBAction)onPrintClick:(id)sender {
+    
+    
+  //  UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait..." title:@"preparing print..."];
+    
+    UIPrintInteractionController* airPrinterController=[UIPrintInteractionController sharedPrintController];
+    UIPrintInfo *printInfo = [UIPrintInfo printInfo];
+    printInfo.outputType = UIPrintInfoOutputGeneral;
+    
+    printInfo.orientation = UIPrintInfoOrientationPortrait;
+    printInfo.jobName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"];
+    if(self.filename.length>0)
+        printInfo.jobName = self.filename;
+    airPrinterController.printInfo = printInfo;
+    airPrinterController.printingItem = self.content;
+    airPrinterController.delegate = self;
+    
+    
+    airPrinterController.showsNumberOfCopies=true;
+    airPrinterController.showsPageRange = true;
+    airPrinterController.showsPaperSelectionForLoadedPapers=true;
+    
+    
+    [airPrinterController presentFromBarButtonItem:self.btnPrint
+                                      animated:YES
+                             completionHandler:
+     ^(UIPrintInteractionController *pic, BOOL completed, NSError *error) {
+     }
+     ];
+    
+    
+//    
+//    void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
+//        if(completed && error)
+//            DebugLog(@"Printing failed due to error in domain %@ with error code %lu. Localized description: %@, and failure reason: %@", error.domain, (long)error.code, error.localizedDescription, error.localizedFailureReason);
+//    };
+//    
+//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//    
+//    UIPrinter *airPrinter = [UIPrinter printerWithURL:[NSURL URLWithString:appDelegate.printerURL] ];///*self.printer;*/
+//    
+//    
+//    
+//    
+//    [[UIPrinter printerWithURL:[NSURL URLWithString:appDelegate.printerURL]] contactPrinter:^(BOOL available)
+//     {
+//         [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+//         
+//         if (available&& appDelegate.printerURL.length>0)
+//         {
+//             
+//             
+//             [airPrinterController printToPrinter:airPrinter completionHandler:completionHandler];
+//             DebugLog(@"AIRPRINTER AVAILABLE");
+//         }
+//         else
+//         {
+//             
+//                          [airPrinterController presentFromRect:CGRectMake(0, 0, 300, 500) inView:self.view animated:YES completionHandler:
+//             
+//             
+//             
+//                           //        [printPicker presentAnimated:YES completionHandler:
+//                           ^(UIPrintInteractionController *printerController, BOOL userDidSelect, NSError *error)
+//                           {
+//                               if (userDidSelect)
+//                               {
+//                                   NSString* sid= printerController.printInfo.printerID;
+//                                   UIPrintPaper*paper=  printerController.printPaper;
+//             
+//                               }
+//                           }];
+//             
+//             
+//             DebugLog(@"AIRPRINTER NOT AVAILABLE");
+//             
+//             
+//             
+////             if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1)
+////             {
+////                 UIPrinterPickerController *printPicker = [UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:nil];
+////                 //   [printPicker presentFromBarButtonItem:self.btnSubmitOrder animated:yes completionHandler:
+////                 
+////                 
+////                 
+////                 [ printPicker presentFromBarButtonItem:self.btnPrint animated:YES completionHandler:
+////                  
+////                  
+////                  // [printPicker presentFromRect:CGRectMake(0, 0, 300, 500) inView:self.view animated:YES completionHandler:
+////                  
+////                  
+////                  
+////                  //        [printPicker presentAnimated:YES completionHandler:
+////                  ^(UIPrinterPickerController *printerPicker, BOOL userDidSelect, NSError *error)
+////                  {
+////                      if (userDidSelect)
+////                      {
+////                          //User selected the item in the UIPrinterPickerController and got the printer details.
+////                          
+////                          [UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:printerPicker.selectedPrinter];
+////                          
+////                          //Here you will get the printer and printer details.ie,
+////                          // printerPicker.selectedPrinter, printerPicker.selectedPrinter.displayName, printerPicker.selectedPrinter.URL etc. So you can display the printer name in your label text or button title.
+////                          
+////                          
+////                          
+////                          
+////                          appDelegate.printerURL =printerPicker.selectedPrinter.URL.absoluteString;
+////                          
+////                          [self startAirPrintWithData:self.content];
+////                          
+////                      }
+////                      else
+////                      {
+////                          
+////                          
+////                          //                          AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+////                          //                          if([appDelegate.mode isEqualToString:@"Trade Show Mode"]&& appDelegate.submit_order_logout)
+////                          //                          {
+////                          //
+////                          //                              [((MainViewController*)appDelegate.main_vc) Loginout:false];
+////                          //                          }
+////                          //                          [self prepareReturn:nil];
+////                          
+////                          //[self.navigationController popViewControllerAnimated:true];
+////                      }
+////                  }];
+////             }
+//         }
+//     }];
+//    
+    
+    
+}
+- (IBAction)onActionClick:(id)sender {
+   
+    //NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+    
+//    NSString *filePath = nil;
+//    if(!self.isLocalfile)
+//    {
+//    NSString *path = NSTemporaryDirectory();
+//    NSString* filename =self.filename;
+//    
+//   filePath= [path stringByAppendingPathComponent:filename];
+//    
+//    }
+//    else
+//        filePath = self.url;
+
+    
+    
+  
+    
+
+    [self openFile:self.url];
+}
+- (IBAction)onSaveClick:(id)sender {
+    
+    //UIAlertControllerStyle两种类型UIAlertControllerStyleAlert类似UIAlertView
+    //UIAlertControllerStyleActionSheet类似UIActionSheet
+    UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Save pdf" message:nil preferredStyle:UIAlertControllerStyleAlert];
+    //block代码块取代了delegate
+  
+    
+    [alertControl addTextFieldWithConfigurationHandler:^(UITextField *textField) {
+        textField.text = self.save_name;
+       
+        
+    }];
+    
+    UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Save" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
+        
+        UITextField *name = alertControl.textFields.firstObject;
+        if(name.text.length==0)
+        {
+        [RAUtils message_alert:@"Cannot save without name. Save canceled." title:@"Name is missing" controller:self];
+        }
+        else
+        {
+            self.save_name = name.text;
+                            self.btnsave.enabled =false;
+          //  NSMutableDictionary * info =
+            if(self.onSavePDF)
+                self.onSavePDF(self.save_name,self.filename);
+        }
+    }];
+
+    UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+        DebugLog(@"Cancel");
+    }];
+    [alertControl addAction:actionOne];
+
+    [alertControl addAction:alertthree];
+    
+    //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
+
+    
+    [self presentViewController:alertControl animated:YES completion:nil];
+    
+    
+    
+    
+}
+
+- (IBAction)onEmailClick:(id)sender {
+    //NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+//    NSString *path = NSTemporaryDirectory();
+    NSString* filename =self.filename;
+    
+//    NSString *filePath = [path stringByAppendingPathComponent:filename];
+
+    NSString *filePath = self.url;
+
+    
+    
+    
+    
+    MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
+    
+    if(mc==nil)
+    {
+        //[RAUtils message_alert:@"You must create an email account first."  title:@"Send Email" controller:self];
+        return;
+    }
+    mc.mailComposeDelegate = self;
+    [mc setSubject:self.mail_subject];
+    
+    
+    [mc setToRecipients:self.mail_to];
+    
+    
+    if(self.mail_content==nil)
+        self.mail_content=@"";
+    
+    NSString* htmlbody = [NSString stringWithFormat:@"<html><p>%@</p></html>",self.mail_content];
+    
+    [mc setMessageBody:htmlbody
+                isHTML:YES];
+    
+
+    
+    NSData *data = [NSData dataWithContentsOfFile:filePath];
+    
+//    if(self.attachment_name.length>0)
+//        filename = self.attachment_name;
+    [mc addAttachmentData:data mimeType:@"application/pdf" fileName:filename];
+    [self presentModalViewController:mc animated:YES];
+    
+    return;
+}
+
+
+-(void)openFile: (NSString *) file_url  {
+    
+    NSURL *file_URL = [NSURL fileURLWithPath:file_url];
+    
+    if (file_URL != nil) {
+        if (self.fileInteractionController == nil) {
+            //_fileInteractionController = [[UIDocumentInteractionController alloc] init];
+            
+            
+            _fileInteractionController = [UIDocumentInteractionController interactionControllerWithURL:file_URL];
+            _fileInteractionController.delegate = self;
+            //  [_fileInteractionController retain];//不适用ARC,记得RETAIN 使用ARC注释这一行
+        }
+        else
+        {
+            self.fileInteractionController.URL = file_URL;
+        }
+        
+        // [self.fileInteractionController presentOpenInMenuFromRect:self.view.frame inView:self.view animated:YES];
+        
+        
+        [self.fileInteractionController setName:self.mail_subject];
+        
+//        [self.fileInteractionController setAnnotation:<#(id _Nullable)#>;
+        
+        [self.fileInteractionController presentOptionsMenuFromBarButtonItem:self.btnshare animated:YES];
+       // [self.fileInteractionController presentOptionsMenuFromRect:self.view.frame inView:self.view animated:YES];
+        //        [self.fileInteractionController  presentPreviewAnimated:YES];
+        
+    }
+}
+//- (void) sendEmail:(NSString *)to cc:(NSString*)cc subject:(NSString*)subject body:(NSString*)body
+//{
+//    NSString* str = [NSString stringWithFormat:@"mailto:%@?cc=%@&subject=%@&body=%@",
+//                     to, cc, subject, body];
+//    str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+//    
+//    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
+//    
+//    
+//}
+
+#pragma mark methods for the UIDocumentInteractionControllerDelegate
+
+- (void)documentInteractionControllerDidDismissOptionsMenu:(UIDocumentInteractionController *)controller
+{
+//    if (controller == self.fileInteractionController) {
+//        self.fileInteractionController = nil;
+//    }
+}
+
+- (void)previewDocumentWithURL:(NSURL*)url
+{
+    UIDocumentInteractionController* preview = [UIDocumentInteractionController interactionControllerWithURL:url];
+    preview.delegate = self;
+    [preview presentPreviewAnimated:YES];
+    
+}
+
+- (void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController *)controller
+{
+    
+}
+
+- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller{
+    return self;
+}
+
+- (CGRect)documentInteractionControllerRectForPreview:(UIDocumentInteractionController *)controller{
+    return self.view.frame;
+}
+
+- (UIView *)documentInteractionControllerViewForPreview:(UIDocumentInteractionController *)controller{
+    return self.view;
+}
+- (void)documentInteractionController:(UIDocumentInteractionController *)controller willBeginSendingToApplication:(nullable NSString *)application	 // bundle ID
+{
+    
+}
+#pragma mark - WKNavigationDelegate
+- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
+{
+        self.mum.hidden=true;
+        if(self.onLoadSuccess)
+            self.onLoadSuccess(self.url);
+
+        if(self.autoPrint)
+            [self startAirPrintWithData:self.content];
+    
+}
+
+
+
+#pragma mark -MFMailComposeViewControllerDelegate delegate
+
+- (void)mailComposeController:(MFMailComposeViewController*)controller
+          didFinishWithResult:(MFMailComposeResult)result
+                        error:(NSError*)error {
+    switch (result)
+    {
+        case MFMailComposeResultCancelled:
+            DebugLog(@"Mail send canceled...");
+            break;
+        case MFMailComposeResultSaved:
+            DebugLog(@"Mail saved...");
+            break;
+        case MFMailComposeResultSent:
+            DebugLog(@"Mail sent...");
+            break;
+        case MFMailComposeResultFailed:
+            DebugLog(@"Mail send errored: %@...", [error localizedDescription]);
+            break;
+        default:
+            break;
+    }
+    [self dismissModalViewControllerAnimated:YES];
+}
+/*
+#pragma mark - Navigation
+
+ In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
+{
+     Get the new view controller using [segue destinationViewController].
+     Pass the selected object to the new view controller.
+}
+*/
+//- (void)startAirPrintWithData:(id )data
+//{
+//
+//
+//    UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait..." title:@"preparing print..."];
+//
+//    UIPrintInteractionController* airPrinterController=[UIPrintInteractionController sharedPrintController];
+//    UIPrintInfo *printInfo = [UIPrintInfo printInfo];
+//    printInfo.outputType = UIPrintInfoOutputGeneral;
+//    printInfo.orientation = UIPrintInfoOrientationPortrait;
+//    printInfo.jobName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"];
+//    if(self.filename.length>0)
+//        printInfo.jobName = self.filename;
+//    airPrinterController.printInfo = printInfo;
+//    airPrinterController.printingItem = data;
+//    airPrinterController.delegate = self;
+//
+//
+//    airPrinterController.showsNumberOfCopies=true;
+//    airPrinterController.showsPageRange = true;
+//    airPrinterController.showsPaperSelectionForLoadedPapers=true;
+//
+//    void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
+//        if(completed && error)
+//            DebugLog(@"Printing failed due to error in domain %@ with error code %lu. Localized description: %@, and failure reason: %@", error.domain, (long)error.code, error.localizedDescription, error.localizedFailureReason);
+//    };
+//
+//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//
+//    UIPrinter *airPrinter = [UIPrinter printerWithURL:[NSURL URLWithString:appDelegate.printerURL] ];///*self.printer;*/
+//
+//
+//
+//
+//    [[UIPrinter printerWithURL:[NSURL URLWithString:appDelegate.printerURL]] contactPrinter:^(BOOL available)
+//     {
+//         [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+//
+//         if (available&& appDelegate.printerURL.length>0)
+//         {
+//
+//
+//             [airPrinterController printToPrinter:airPrinter completionHandler:completionHandler];
+//             DebugLog(@"AIRPRINTER AVAILABLE");
+//         }
+//         else
+//         {
+//
+//             //             [airPrinterController presentFromRect:CGRectMake(0, 0, 300, 500) inView:self.view animated:YES completionHandler:
+//             //
+//             //
+//             //
+//             //              //        [printPicker presentAnimated:YES completionHandler:
+//             //              ^(UIPrintInteractionController *printerController, BOOL userDidSelect, NSError *error)
+//             //              {
+//             //                  if (userDidSelect)
+//             //                  {
+//             //                      NSString* sid= printerController.printInfo.printerID;
+//             //                      UIPrintPaper*paper=  printerController.printPaper;
+//             //
+//             //                  }
+//             //              }];
+//
+//
+//             DebugLog(@"AIRPRINTER NOT AVAILABLE");
+//
+//
+//
+//             if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1)
+//             {
+//                 UIPrinterPickerController *printPicker = [UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:nil];
+//              //   [printPicker presentFromBarButtonItem:self.btnSubmitOrder animated:yes completionHandler:
+//
+//
+//
+//                [ printPicker presentFromBarButtonItem:self.btnshare animated:YES completionHandler:
+//
+//
+//                // [printPicker presentFromRect:CGRectMake(0, 0, 300, 500) inView:self.view animated:YES completionHandler:
+//
+//
+//
+//                  //        [printPicker presentAnimated:YES completionHandler:
+//                  ^(UIPrinterPickerController *printerPicker, BOOL userDidSelect, NSError *error)
+//                  {
+//                      if (userDidSelect)
+//                      {
+//                          //User selected the item in the UIPrinterPickerController and got the printer details.
+//
+//                          [UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:printerPicker.selectedPrinter];
+//
+//                          //Here you will get the printer and printer details.ie,
+//                          // printerPicker.selectedPrinter, printerPicker.selectedPrinter.displayName, printerPicker.selectedPrinter.URL etc. So you can display the printer name in your label text or button title.
+//
+//
+//
+//
+//                          appDelegate.printerURL =printerPicker.selectedPrinter.URL.absoluteString;
+//
+//                          [self startAirPrintWithData:data];
+//
+//                      }
+//                      else
+//                      {
+//
+//
+////                          AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+////                          if([appDelegate.mode isEqualToString:@"Trade Show Mode"]&& appDelegate.submit_order_logout)
+////                          {
+////
+////                              [((MainViewController*)appDelegate.main_vc) Loginout:false];
+////                          }
+////                          [self prepareReturn:nil];
+//
+//                          //[self.navigationController popViewControllerAnimated:true];
+//                      }
+//                  }];
+//             }
+//         }
+//     }];
+//
+//
+//
+//}
+- (void)startAirPrintWithData:(id )data
+{
+    
+    
+    UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait..." title:@"preparing print..."];
+    
+    UIPrintInteractionController* airPrinterController=[UIPrintInteractionController sharedPrintController];
+    UIPrintInfo *printInfo = [UIPrintInfo printInfo];
+    printInfo.outputType = UIPrintInfoOutputGeneral;
+    printInfo.orientation = UIPrintInfoOrientationPortrait;
+    printInfo.jobName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"];
+    if(self.filename.length>0)
+        printInfo.jobName = self.filename;
+    airPrinterController.printInfo = printInfo;
+    airPrinterController.printingItem = data;
+    airPrinterController.delegate = self;
+    
+    
+    airPrinterController.showsNumberOfCopies=true;
+    airPrinterController.showsPageRange = true;
+    airPrinterController.showsPaperSelectionForLoadedPapers=true;
+    
+    void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
+        if(completed && error)
+        {
+            //                        DebugLog(@"Printing failed due to error in domain %@ with error code %lu. Localized description: %@, and failure reason: %@", error.domain, (long)error.code, error.localizedDescription, error.localizedFailureReason);
+        }
+        
+    };
+    
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    
+    
+    if(appDelegate.printerURL==nil)
+    {
+        [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+        if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1)
+        {
+            UIPrinterPickerController *printPicker = [UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:nil];
+            //   [printPicker presentFromBarButtonItem:self.btnSubmitOrder animated:yes completionHandler:
+            
+            
+            
+            //                 [ printPicker presentFromBarButtonItem:self.btnshare animated:YES completionHandler:
+            
+            
+            
+            [printPicker presentFromRect:CGRectMake(100, 100, 300, 500) inView:self.view animated:YES completionHandler:
+             
+             
+             
+             //        [printPicker presentAnimated:YES completionHandler:
+             ^(UIPrinterPickerController *printerPicker, BOOL userDidSelect, NSError *error)
+             {
+                 if (userDidSelect)
+                 {
+                     //User selected the item in the UIPrinterPickerController and got the printer details.
+                     
+                     [UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:printerPicker.selectedPrinter];
+                     
+                     //Here you will get the printer and printer details.ie,
+                     // printerPicker.selectedPrinter, printerPicker.selectedPrinter.displayName, printerPicker.selectedPrinter.URL etc. So you can display the printer name in your label text or button title.
+                     
+                     
+                     
+                     
+                     appDelegate.printerURL =printerPicker.selectedPrinter.URL.absoluteString;
+                     
+                     [self startAirPrintWithData:data];
+                     
+                 }
+                 else
+                 {
+                     
+                     
+                     //                          AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                     //                          if([appDelegate.mode isEqualToString:@"Trade Show Mode"]&& appDelegate.submit_order_logout)
+                     //                          {
+                     //
+                     //                              [((MainViewController*)appDelegate.main_vc) Loginout:false];
+                     //                          }
+                     //                          [self prepareReturn:nil];
+                     
+                     //[self.navigationController popViewControllerAnimated:true];
+                 }
+             }];
+        }
+    }
+    else
+    {
+        UIPrinter *airPrinter = [UIPrinter printerWithURL:[NSURL URLWithString:appDelegate.printerURL] ];///*self.printer;*/
+        [airPrinter contactPrinter:^(BOOL available)
+         {
+             [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+             
+             if (available&& appDelegate.printerURL.length>0)
+             {
+                 
+                 
+                 [airPrinterController printToPrinter:airPrinter completionHandler:completionHandler];
+                 DebugLog(@"AIRPRINTER AVAILABLE");
+             }
+             else
+             {
+                 appDelegate.printerURL = nil;
+                 
+                 //             [airPrinterController presentFromRect:CGRectMake(0, 0, 300, 500) inView:self.view animated:YES completionHandler:
+                 //
+                 //
+                 //
+                 //              //        [printPicker presentAnimated:YES completionHandler:
+                 //              ^(UIPrintInteractionController *printerController, BOOL userDidSelect, NSError *error)
+                 //              {
+                 //                  if (userDidSelect)
+                 //                  {
+                 //                      NSString* sid= printerController.printInfo.printerID;
+                 //                      UIPrintPaper*paper=  printerController.printPaper;
+                 //
+                 //                  }
+                 //              }];
+                 
+                 
+                 DebugLog(@"AIRPRINTER NOT AVAILABLE");
+                 
+                 
+                 
+                 if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1)
+                 {
+                     UIPrinterPickerController *printPicker = [UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:nil];
+                     //   [printPicker presentFromBarButtonItem:self.btnSubmitOrder animated:yes completionHandler:
+                     
+                     
+                     
+                     //                 [ printPicker presentFromBarButtonItem:self.btnshare animated:YES completionHandler:
+                     
+                     
+                     
+                     [printPicker presentFromRect:CGRectMake(100, 100, 300, 500) inView:self.view animated:YES completionHandler:
+                      
+                      
+                      
+                      //        [printPicker presentAnimated:YES completionHandler:
+                      ^(UIPrinterPickerController *printerPicker, BOOL userDidSelect, NSError *error)
+                      {
+                          if (userDidSelect)
+                          {
+                              //User selected the item in the UIPrinterPickerController and got the printer details.
+                              
+                              [UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:printerPicker.selectedPrinter];
+                              
+                              //Here you will get the printer and printer details.ie,
+                              // printerPicker.selectedPrinter, printerPicker.selectedPrinter.displayName, printerPicker.selectedPrinter.URL etc. So you can display the printer name in your label text or button title.
+                              
+                              
+                              
+                              
+                              appDelegate.printerURL =printerPicker.selectedPrinter.URL.absoluteString;
+                              
+                              [self startAirPrintWithData:data];
+                              
+                          }
+                          else
+                          {
+                              appDelegate.printerURL = nil;
+                              
+                              //                          AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                              //                          if([appDelegate.mode isEqualToString:@"Trade Show Mode"]&& appDelegate.submit_order_logout)
+                              //                          {
+                              //
+                              //                              [((MainViewController*)appDelegate.main_vc) Loginout:false];
+                              //                          }
+                              //                          [self prepareReturn:nil];
+                              
+                              //[self.navigationController popViewControllerAnimated:true];
+                          }
+                      }];
+                 }
+             }
+         }];
+    }
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+}
+#pragma mark - UIPrintInteractionControllerDelegate
+- (UIPrintPaper *)printInteractionController:(UIPrintInteractionController *)printInteractionController choosePaper:(NSArray<UIPrintPaper *> *)paperList
+{
+
+    ;
+
+    //    (int) width = 29700
+    //    Printing description of (*( (int *)0x7caa3a40)):
+    //    (int) height = 42000
+    //设置纸张大小
+
+    CGSize paperSize=[PDFUtils QueryPDFSizeFromData:self.content];
+    for(UIPrintPaper* paper in paperList)
+    {
+        if (CGSizeEqualToSize(paper.paperSize, paperSize))
+            return paper;
+
+    }
+    
+    UIPrintPaper * pp=[[UIPrintPaper alloc] init];
+    
+//    CGSize paperSize = CGSizeMake(612, 792);
+    UIPrintPaper * p=[UIPrintPaper bestPaperForPageSize:paperSize withPapersFromArray:paperList];
+    return p;
+}
+- (void)printInteractionControllerWillPresentPrinterOptions:(UIPrintInteractionController *)printInteractionController
+{
+
+}
+- (void)printInteractionControllerDidPresentPrinterOptions:(UIPrintInteractionController *)printInteractionController
+{
+
+}
+- (void)printInteractionControllerWillDismissPrinterOptions:(UIPrintInteractionController *)printInteractionController
+{
+
+}
+- (void)printInteractionControllerDidDismissPrinterOptions:(UIPrintInteractionController *)printInteractionController
+{
+
+}
+
+- (void)printInteractionControllerWillStartJob:(UIPrintInteractionController *)printInteractionController
+{
+
+}
+- (void)printInteractionControllerDidFinishJob:(UIPrintInteractionController *)printInteractionController
+{
+
+//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//    if([appDelegate.mode isEqualToString:@"Trade Show Mode"]&& appDelegate.submit_order_logout)
+//    {
+//
+//        [((MainViewController*)appDelegate.main_vc) Loginout:false];
+//    }
+//
+//    [self prepareReturn:nil];
+
+    if(self.autoPrint)
+    [self.navigationController popViewControllerAnimated:true];
+}
+@end

+ 31 - 0
common/WK PDF+Web/WebViewController.h

@@ -0,0 +1,31 @@
+//
+//  WebViewController.h
+//  RedAnt ERP Mobile
+//
+//  Created by Ray on 1/21/16.
+//  Copyright © 2016 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import <WebKit/WebKit.h>
+
+@interface WebViewController : UIViewController<WKNavigationDelegate>
+
+@property (weak, nonatomic) IBOutlet WKWebView *wkWebview;
+
+
+@property (strong, nonatomic) IBOutlet UIActivityIndicatorView *mum;
+@property (strong,nonatomic) NSString* url;
+//@property (strong,nonatomic) NSString* title;
+@property (strong,nonatomic) NSData* content;
+
+@property (nonatomic,assign) BOOL backItemDismiss;///<返回键响应是否为dismiss
+
+@property (nonatomic , copy) void (^onLoadSuccess)(NSString* url );
+
+
+
+
+
+
+@end

+ 215 - 0
common/WK PDF+Web/WebViewController.m

@@ -0,0 +1,215 @@
+//
+//  WebViewController.m
+//  RedAnt ERP Mobile
+//
+//  Created by Ray on 1/21/16.
+//  Copyright © 2016 United Software Applications, Inc. All rights reserved.
+//
+
+#import "WebViewController.h"
+#import "RAUtils.h"
+#import "const.h"
+@interface WebViewController ()
+
+@end
+
+@implementation WebViewController
+
+- (void)viewWillAppear:(BOOL)animated
+{
+
+        [super viewWillAppear:animated];
+        [[self navigationController] setNavigationBarHidden:NO animated:NO];
+        
+}
+
+- (void)viewDidLoad
+{
+    [super viewDidLoad];
+   // self.edgesForExtendedLayout = UIRectEdgeNone;
+    // Do any additional setup after loading the view.
+    UIRefreshControl *ref = [[UIRefreshControl alloc]init];
+    ref.tag = 200 ;
+    ref.attributedTitle = [[NSAttributedString alloc]initWithString:@"drag to refresh"];
+    ref.tintColor = [UIColor colorWithRed:0.10 green:0.68 blue:0.94 alpha:0.7];
+    //    ref.hidden = true;
+    [ref addTarget:self action:@selector(changeCell) forControlEvents:UIControlEventValueChanged];
+    [self.wkWebview.scrollView addSubview:ref];
+    self.wkWebview.navigationDelegate = self;
+    
+    
+//    self.wkWebview.dataDetectorTypes=UIDataDetectorTypeAll;
+    
+//    self.wkWebview datade
+    
+    
+    UIBarButtonItem *closeButton = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"back"] imageWithRenderingMode:UIImageRenderingModeAutomatic]
+                                                                    style:UIBarButtonItemStylePlain
+                                                                   target:self
+                                                                   action:@selector( onBackClick:)];
+    //[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Close", nil) style:UIBarButtonItemStylePlain target:self action:@selector(onCloseClick:)];
+    //    closeButton.title = @"Close";
+ //   closeButton.tintColor = UIColorFromRGB(0x996633);
+    self.navigationItem.leftBarButtonItem = closeButton;
+    
+    
+ 
+    
+    
+    //   self.url=@"http://192.168.1.3:8080/npd/test.pdf";
+    //    NSURL* url = [NSURL URLWithString:self.url];
+    //
+    //    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:self.url]        cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:2000];
+    //
+    //
+    //    [self.webView loadRequest:request];
+    
+    
+    [self loadcontent];
+}
+- (void)onBackClick:(UIButton *)sender {
+    
+    if (self.backItemDismiss)
+        [self.navigationController dismissViewControllerAnimated:YES completion:nil];
+    
+    [self.navigationController popViewControllerAnimated:FALSE];
+}
+-(void)ReloadData
+{
+    
+    //    Count ++ ;
+    //    [mytabelview reloadData];
+    UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200];
+    
+    [reF endRefreshing];
+    [self loadcontent];
+    
+    
+}
+-(void) loadcontent
+{
+    self.mum.hidden=false;
+    
+    
+    NSURL *url =[NSURL URLWithString:self.url];
+    DebugLog(self.url);
+    NSURLRequest *request =[NSURLRequest requestWithURL:url];
+    [self.wkWebview loadRequest:request];
+    
+//    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+    
+//        
+//        NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:self.url]        cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60*5];
+//        
+//        //设置请求方式为get
+//        
+//        [request setHTTPMethod:@"GET"];
+//        
+//        //添加用户会话id
+//        
+//        [request addValue:@"text/html" forHTTPHeaderField:@"Content-Type"];
+//        
+//        //连接发送请求
+//        
+//        
+//        NSHTTPURLResponse* urlResponse = nil;
+//        
+//        NSError *error = [[NSError alloc] init];
+//        
+//        self.content= [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
+//        
+//  
+//        
+//        dispatch_async(dispatch_get_main_queue(), ^{
+//            
+//            self.navigationItem.title = self.title;
+//            UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200];
+//            //  self.content=nil;
+//            if(self.content!=nil&&self.content.length>0)
+//            {
+//                [reF removeFromSuperview];
+//                
+//                
+////                // NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+////                NSString *path = NSTemporaryDirectory();
+////                NSString *filePath = [path stringByAppendingPathComponent:self.filename];
+////                //    NSError *error = [[NSError alloc] init];
+////                //    BOOL bo = [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:&error];
+////                //    NSAssert(bo,@"创建目录失败");
+////                [self.content writeToFile:filePath atomically:YES];
+////                
+////                
+////                self.btnshare.enabled =true;
+////                
+////                
+////                self.btnemail.enabled =true;
+////                self.btnsave.enabled =true;
+////                
+////                if(self.onLoadSuccess)
+////                    self.onLoadSuccess(self.url);
+//                //               int a=0;
+//            }
+//            else
+//            {
+//                [RAUtils message_alert:nil  title:@"Open URL Failed" controller:self];
+//                //                self.content = [self.url dataUsingEncoding:NSUTF8StringEncoding];
+//            }
+//            
+//            ;
+//            //            DebugLog(@"%@",[[NSString alloc] initWithData:self.content encoding:NSASCIIStringEncoding]);
+//            //
+//            
+//            
+//            [self.webView loadData:self.content MIMEType:urlResponse.MIMEType textEncodingName:nil baseURL:nil];
+//            
+//            
+//            
+//            
+//        });
+//    });
+    
+    
+    
+    
+}
+-(void)changeCell
+{
+    UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200];
+    reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"refreshing"];
+    if ([self respondsToSelector:@selector(ReloadData)])
+    [self performSelector:@selector(ReloadData) withObject:nil afterDelay:1];
+    //    DebugLog(@"refresh!!!!!!!!");
+    
+}
+- (void)didReceiveMemoryWarning
+{
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+
+
+
+
+
+
+
+#pragma mark - WKNavigationDelegate
+- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
+{
+       self.mum.hidden=true;
+        
+    
+}
+
+
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 125 - 0
common/WK PDF+Web/wkweb.storyboard

@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="ipad9_7" orientation="portrait" layout="fullscreen" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <scenes>
+        <!--RAPDFViewController-->
+        <scene sceneID="H2O-V3-If2">
+            <objects>
+                <viewController storyboardIdentifier="RAPDFViewController" title="RAPDFViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="ePT-eX-D9J" customClass="RAPDFViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="OBo-SA-79x">
+                        <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <wkWebView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="q1b-dE-lQd">
+                                <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <wkWebViewConfiguration key="configuration">
+                                    <audiovisualMediaTypes key="mediaTypesRequiringUserActionForPlayback" none="YES"/>
+                                    <wkPreferences key="preferences"/>
+                                </wkWebViewConfiguration>
+                            </wkWebView>
+                            <activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" hidesWhenStopped="YES" animating="YES" style="whiteLarge" translatesAutoresizingMaskIntoConstraints="NO" id="lfK-gG-0zF">
+                                <rect key="frame" x="365.5" y="493.5" width="37" height="37"/>
+                                <color key="color" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            </activityIndicatorView>
+                        </subviews>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstAttribute="bottom" secondItem="q1b-dE-lQd" secondAttribute="bottom" id="6eB-Wl-qGc"/>
+                            <constraint firstItem="q1b-dE-lQd" firstAttribute="top" secondItem="B4i-qp-IRq" secondAttribute="top" id="JQb-AZ-fcQ"/>
+                            <constraint firstItem="q1b-dE-lQd" firstAttribute="leading" secondItem="B4i-qp-IRq" secondAttribute="leading" id="KtU-3h-svX"/>
+                            <constraint firstItem="lfK-gG-0zF" firstAttribute="centerX" secondItem="B4i-qp-IRq" secondAttribute="centerX" id="Qg1-cB-aED"/>
+                            <constraint firstItem="lfK-gG-0zF" firstAttribute="centerY" secondItem="OBo-SA-79x" secondAttribute="centerY" id="Vel-X4-asz"/>
+                            <constraint firstItem="lfK-gG-0zF" firstAttribute="centerY" secondItem="OBo-SA-79x" secondAttribute="centerY" id="lJe-2K-oCx"/>
+                            <constraint firstItem="lfK-gG-0zF" firstAttribute="centerX" secondItem="OBo-SA-79x" secondAttribute="centerX" id="unC-29-fCv"/>
+                            <constraint firstItem="B4i-qp-IRq" firstAttribute="trailing" secondItem="q1b-dE-lQd" secondAttribute="trailing" id="yE8-dn-6rB"/>
+                        </constraints>
+                        <viewLayoutGuide key="safeArea" id="B4i-qp-IRq"/>
+                    </view>
+                    <navigationItem key="navigationItem" title="Documents" id="psR-fN-Qax">
+                        <rightBarButtonItems>
+                            <barButtonItem image="share" id="Qz7-iE-Bqw" userLabel="share">
+                                <color key="tintColor" red="0.59999999999999998" green="0.40000000000000002" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <connections>
+                                    <action selector="onActionClick:" destination="ePT-eX-D9J" id="7cs-Ks-FuD"/>
+                                </connections>
+                            </barButtonItem>
+                            <barButtonItem image="mail" id="Oam-7g-zg0" userLabel="mail">
+                                <color key="tintColor" red="0.59999999999999998" green="0.40000000000000002" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <connections>
+                                    <action selector="onEmailClick:" destination="ePT-eX-D9J" id="BlW-Di-F9R"/>
+                                </connections>
+                            </barButtonItem>
+                            <barButtonItem image="save" id="bjI-Qb-WRF" userLabel="save">
+                                <color key="tintColor" red="0.59999999999999998" green="0.40000000000000002" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <connections>
+                                    <action selector="onSaveClick:" destination="ePT-eX-D9J" id="ulh-U6-mKY"/>
+                                </connections>
+                            </barButtonItem>
+                        </rightBarButtonItems>
+                    </navigationItem>
+                    <connections>
+                        <outlet property="BB_action" destination="Qz7-iE-Bqw" id="3Qq-LO-AII"/>
+                        <outlet property="mum" destination="lfK-gG-0zF" id="op3-aw-toI"/>
+                        <outlet property="wkWebview" destination="q1b-dE-lQd" id="NgK-HV-RLM"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="xsh-h7-Cki" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="-1006.25" y="-2534.1796875"/>
+        </scene>
+        <!--WebViewController-->
+        <scene sceneID="kV1-sb-34W">
+            <objects>
+                <viewController storyboardIdentifier="WebViewController" title="WebViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="yvA-qp-1WC" customClass="WebViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="DkN-31-8fe">
+                        <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <wkWebView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Upc-GT-oIh">
+                                <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <wkWebViewConfiguration key="configuration">
+                                    <audiovisualMediaTypes key="mediaTypesRequiringUserActionForPlayback" none="YES"/>
+                                    <wkPreferences key="preferences"/>
+                                </wkWebViewConfiguration>
+                            </wkWebView>
+                            <activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" hidesWhenStopped="YES" animating="YES" style="whiteLarge" translatesAutoresizingMaskIntoConstraints="NO" id="XwE-D9-Ece">
+                                <rect key="frame" x="365.5" y="493.5" width="37" height="37"/>
+                                <color key="color" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            </activityIndicatorView>
+                        </subviews>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstItem="IkO-2L-BB7" firstAttribute="trailing" secondItem="Upc-GT-oIh" secondAttribute="trailing" id="Eka-4d-kCF"/>
+                            <constraint firstItem="XwE-D9-Ece" firstAttribute="centerY" secondItem="DkN-31-8fe" secondAttribute="centerY" id="FfN-S5-M94"/>
+                            <constraint firstAttribute="bottom" secondItem="Upc-GT-oIh" secondAttribute="bottom" id="PZV-XA-HIW"/>
+                            <constraint firstItem="XwE-D9-Ece" firstAttribute="centerX" secondItem="DkN-31-8fe" secondAttribute="centerX" id="WHI-MA-OxN"/>
+                            <constraint firstItem="Upc-GT-oIh" firstAttribute="top" secondItem="IkO-2L-BB7" secondAttribute="top" id="gBz-Zp-XFl"/>
+                            <constraint firstItem="Upc-GT-oIh" firstAttribute="leading" secondItem="IkO-2L-BB7" secondAttribute="leading" id="szL-jU-KOQ"/>
+                        </constraints>
+                        <viewLayoutGuide key="safeArea" id="IkO-2L-BB7"/>
+                    </view>
+                    <navigationItem key="navigationItem" title="Documents" id="wiK-kb-zI0"/>
+                    <connections>
+                        <outlet property="mum" destination="XwE-D9-Ece" id="dGa-u6-9Bt"/>
+                        <outlet property="wkWebview" destination="Upc-GT-oIh" id="d8m-HG-o0H"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="zS6-GU-ZiX" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="-1664.0625" y="-2534.1796875"/>
+        </scene>
+    </scenes>
+    <resources>
+        <image name="mail" width="40" height="40"/>
+        <image name="save" width="40" height="40"/>
+        <image name="share" width="40" height="40"/>
+    </resources>
+</document>