iOS關(guān)于PDF電子簽章不顯示的解決方案

之前在掘金上發(fā)布的文章原文鏈接:https://juejin.im/entry/5a71ad616fb9a01cad7c7b8c

最近公司添加個查看pdf合同的功能吆录,之前隨便百度了下發(fā)現(xiàn)webView加載或者View自己畫都可以顯示作箍,不過最后發(fā)現(xiàn)少了一樣?xùn)|西,沒錯紅紅的簽名公章不見了,安卓瀏覽器打開都沒問題烦衣,分享文件到手機(jī)qq嚷闭、微信、掌閱等常用app打開也沒有顯示簽章论寨,在一段痛苦的糾結(jié)中反思問題查找解決方案星立,然后發(fā)現(xiàn)qq打開下方分享按鈕處有個創(chuàng)建PDF爽茴,打開后發(fā)現(xiàn)簽章出來了或者選擇打印機(jī)也會顯示簽章,因此也確定了竟然能出來那么肯定有解決方法绰垂,于是開始了爬坑室奏。

隨便說一下網(wǎng)絡(luò)上的加載PDF的第三方框架也并不好用,最終還是在蘋果開發(fā)框架中找到了解決方案

開始上代碼 1.首先導(dǎo)入系統(tǒng)

QuickLook.framework

```框架劲装,怎么導(dǎo)入不簡述了

2.引入頭文件

#import <QuickLook/QuickLook.h>

QLPreviewControllerDataSource

主要一下2個代理方法

(NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller{ return 1; }

(id)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index{

return [NSURL fileURLWithPath:pdfFilePath]; }

完整代碼如下:

url 為pdf 地址鏈接胧沫,訪問地址返回pdf 數(shù)據(jù)流

-(void)loadPdfResource:(NSString *)url{ pdfFilePath = [self getFullPath]; NSFileManager *fileManager = [NSFileManager defaultManager];

if(![fileManager fileExistsAtPath:pdfFilePath])

{

// NSLog(@"文件不存在"); // 下載pdf數(shù)據(jù) [SVProgressHUD showWithStatus:@"loading..."]; self.pdfData=[[NSMutableData alloc]init]; NSURLSessionConfiguration *config =[NSURLSessionConfiguration defaultSessionConfiguration]; NSURLSession *session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:[NSOperationQueue mainQueue]]; NSURLSessionDataTask *task = [session dataTaskWithURL:[NSURL URLWithString:url]];

? ? [task resume];

? ?

}else{

// NSLog(@"文件存在"); [self pushQLPreviewController]; }

}

下載pdf 數(shù)據(jù)主要 實(shí)現(xiàn)了 NSURLSessionDelegate 代理方法

#pragma mark --- 接收到數(shù)據(jù)調(diào)用

(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler{ //允許繼續(xù)響應(yīng) completionHandler(NSURLSessionResponseAllow); //獲取文件的總大小 // NSInteger totalLength = response.expectedContentLength; }

#pragma mark --- 接收到數(shù)據(jù)調(diào)用

(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData )data{ NSPrintf(@"didReceiveData:%@",data); //將每次接受到的數(shù)據(jù)拼接起來 [self.pdfData appendData:data]; //計算當(dāng)前下載的長度 // NSInteger nowlength = self.pdfData .length; // CGFloat value = nowlength1.0/self.totalLength; }

#pragma mark ---下載完成調(diào)用

(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(nullable NSError *)error{ NSLog(@"self.pdfData:\n%@",self.pdfData);

NSString *filename =[self getFullPath]; [self.pdfData writeToFile:filename atomically:YES]; [SVProgressHUD dismiss];

if (self.pdfData) { NSLog(@"OK"); [self showPDFWebView: filename]; }else{ NSLog(@"Sorry"); }

}

下載完成 寫入本地數(shù)據(jù) 之后 展示pdf,重點(diǎn)來了!

-(void)showPDFWebView:(NSString *)filename{

NSFileManager *fileManager = [NSFileManager defaultManager];

if(![fileManager fileExistsAtPath:pdfFilePath])

{

? ? NSLog(@"文件不存在");

? ?

}else{

? ? NSLog(@"文件存在");

? ?

? ? [self pushQLPreviewController];

}

}

推出pdf 頁面

-(void)pushQLPreviewController{ QLPreviewController *QLPVC = [[QLPreviewController alloc] init]; QLPVC.dataSource = self; [self.navigationController pushViewController:QLPVC animated:YES]; }

最后需要自定義 self.pdfData

Xcode升級到10.1以后發(fā)現(xiàn)present頁面后PDF文件會有類似安全區(qū)的空檔占业,改為push頁面解決問題绒怨,初步判斷應(yīng)該是我項目中使用了RTNavationController的問題

over~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市谦疾,隨后出現(xiàn)的幾起案子南蹂,更是在濱河造成了極大的恐慌,老刑警劉巖念恍,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件六剥,死亡現(xiàn)場離奇詭異,居然都是意外死亡峰伙,警方通過查閱死者的電腦和手機(jī)仗考,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來词爬,“玉大人秃嗜,你說我怎么就攤上這事《倥颍” “怎么了锅锨?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長恋沃。 經(jīng)常有香客問我必搞,道長,這世上最難降的妖魔是什么囊咏? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任恕洲,我火速辦了婚禮,結(jié)果婚禮上梅割,老公的妹妹穿的比我還像新娘霜第。我一直安慰自己,他們只是感情好户辞,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布泌类。 她就那樣靜靜地躺著,像睡著了一般底燎。 火紅的嫁衣襯著肌膚如雪刃榨。 梳的紋絲不亂的頭發(fā)上弹砚,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天,我揣著相機(jī)與錄音枢希,去河邊找鬼桌吃。 笑死,一個胖子當(dāng)著我的面吹牛苞轿,可吹牛的內(nèi)容都是我干的茅诱。 我是一名探鬼主播,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼呕屎,長吁一口氣:“原來是場噩夢啊……” “哼让簿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起秀睛,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤尔当,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蹂安,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體椭迎,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年田盈,在試婚紗的時候發(fā)現(xiàn)自己被綠了畜号。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡允瞧,死狀恐怖简软,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情述暂,我是刑警寧澤痹升,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站畦韭,受9級特大地震影響疼蛾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜艺配,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一察郁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧转唉,春花似錦皮钠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至期虾,卻和暖如春原朝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背镶苞。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工喳坠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人茂蚓。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓壕鹉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親聋涨。 傳聞我的和親對象是個殘疾皇子晾浴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容