【iOS_GitHub】文檔/文件查看器(支持本地或者其餘app分享過來的word、excel、pdf、rtf等格式文件)

DocViewer(文檔/文件查看器)

Function Description

  • 文檔查看器(Word && Excel && PDF && Rft || Network && Local || self && other App)
  • 文件共享 && 查看 (Network && Local)

how to use

1. 相關參數配置

a. JhtLoadDocViewParamModel:文本加載 View 配置Model
JhtLoadDocView內部相關屬性的修改可經過修改此model實現
複製代碼
b. JhtDocFileOperations:文件操做類
文件保存 && 清理等方法
複製代碼
c. JhtShowDumpingViewParamModel:下滑提示框配置參數model
用於設置提示框中的 文字的大小,顏色,位置,背景圖,是否包含警示小圖標等參數
複製代碼
d. JhtFileModel:下載文檔的Model
用於設置文件ID,文件名,絕對路徑(本地文件),文件大小等參數
複製代碼
  • 文本類 default值 亦可經過修改 JhtDocViewer_Default.plist 相應鍵值對進行修改

2. DocListViewController:文檔列表

tableView的數據源是一個裝有model的數組,model根據屬性fileAbsolutePath(本地絕對路徑),判斷是否須要下載
複製代碼

3. LoadDocViewController:文檔詳情VC,內部使用JhtLoadDocView

4. JhtLoadDocView:文本加載 View

a. 若是不須要下載,經過webView直接顯示
b. 須要下載,則經過JhtDownloadRequest函數中的類方法進行下載,暫停等操做(注意:JhtFileModel屬性:fileSize,應寫成這種式「KB,MB,GB,Bytes」,爲了計算手機剩餘內存,關係是否能下載成功


c. 資源共享

《JhtDocViewer》文件用」其餘應用「打開

「其餘應用」文件用《JhtDocViewer》打開
  
git

d. 無網絡彈框


  • 具體使用詳見demo

needed to pay attention

1. 若是咱們在iOS9下直接進行HTTP請求是會收到以下錯誤提示

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
複製代碼

系統會告訴咱們不能直接使用HTTP進行請求,須要在Info.plist新增一段用於控制ATS的配置github

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
複製代碼

即:
web

2. 若是想共享本身app的文檔查看功能,需在info.plist 中添加以下信息

<key>CFBundleDocumentTypes</key>
	<array>
		<dict>
			<key>CFBundleTypeIconFiles</key>
			<array>
				<string>MySmallIcon.png</string>
				<string>MyLargeIcon.png</string>
			</array>
			<key>CFBundleTypeName</key>
			<string>My File Format</string>
			<key>LSHandlerRank</key>
			<string>Owner</string>
			<key>LSItemContentTypes</key>
			<array>
				<string>com.microsoft.powerpoint.ppt</string>
				<string>public.item</string>
				<string>com.microsoft.word.doc</string>
				<string>com.adobe.pdf</string>
				<string>com.microsoft.excel.xls</string>
				<string>public.image</string>
				<string>public.content</string>
				<string>public.composite-content</string>
				<string>public.archive</string>
				<string>public.audio</string>
				<string>public.movie</string>
				<string>public.text</string>
				<string>public.data</string>
			</array>
		</dict>
	</array>
複製代碼

屬性說明:
數組

  • CFBundleTypeName:文檔的類型名稱
  • LSHandlerRank:這裏指是否擁有子文檔

3. info.plist 中,對應Localization native development region鍵值 加入Chinese


4. 在第三方調用咱們的APP後,會調用以下方法

- (BOOL)application:(UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<NSString *,id> *)options {
    if (options) {
        NSString *str = [NSString stringWithFormat:@"\n發送請求的應用程序的 Bundle ID:%@\n\n文件的NSURL:%@", options[UIApplicationOpenURLOptionsSourceApplicationKey], url];
        NSLog(@"%@", str);
        
        if (self.window && url) {
            // 根據「其餘應用」 用「本應用」打開,經過url,進入列表頁
            [self pushDocListViewControllerWithUrl:url];
        }
    }
    return YES;
}


#pragma mark ApplicationDelegate Method
/** 根據「其餘應用」 用「本應用」打開,經過url,進入列表頁 */
- (void)pushDocListViewControllerWithUrl:(NSURL *)url {
    // 根據「其餘應用」 用「本應用」打開,經過要打開的url,得到本地地址
    NSString *appFilePath = [[JhtDocFileOperations sharedInstance] findLocalPathFromAppLicationOpenUrl:url];
    // 跳轉頁面
    DocListViewController *doc = [[DocListViewController alloc] init];
    doc.appFilePath = appFilePath;
    [_nav pushViewController:doc animated:YES];
}
複製代碼

5. 庫文件

系統庫:WebKit.framework <br>
三方庫:AFNetworking3.x <br>
複製代碼

Github 傳送門網絡

相關文章
相關標籤/搜索