2012-06-04 50 views
23

我對xcode還很新,雖然我之前做過很多教程和在線研究,但仍然有一些東西讓我困惑,因爲obj c不是我的本地編程語言。 (在我的實習生自學)如何在ios上顯示pdf

我想知道是否有任何方式離線構建xcode iOS,以便我們可以從本地文件顯示pdf文件。

我現在使用的方法是通過UIWebView來顯示一個包含PDF URL(在線)的自定義HTML,但是我想在可能的情況下創建一個離線版本。

但是從在線研究看來,顯示PDF的唯一方法是通過UIWebView,如果真的如此,是否可以從本地資源中提取文件(例如,將文件添加到我的xcode資源文件夾中)而不是使用PDF網址。

OFF-TOPIC: 哪一個會是更好的選擇?拉取本地文件或使用PDF文件的在線URL?

由於UIWebView需要連接,因此只需拉出在線URL即可,因爲它將是最新的和最新的。

反饋非常感謝。謝謝!

編輯:快速的問題,如果我使用UIDocumentInteractionController方法或QuickLook framework使其脫機,這將意味着我不得不發佈更新補丁,每次出現在添加了新的PDF文章(糾正我,如果我錯了)

考慮到這一點,我在現場對自己的問題提出了反駁(對不起,如果你們中的任何一個人覺得你在浪費我的時間> <,我是一個喜歡以問題的可能性和人們可以採取不同的方法來解決問題) 在從不斷更新和提供實時基礎解決方案,這是使用UIWebView(我知道這是矛盾的這是我的目的日閱讀),因爲這個項目是基於一個在線網站(從那裏獲取我的內容和來源),如果我要加載他們的網站的文章部分,我會大膽地說,通過添加一個NSString變量,我可以將NSRange函數與UIWebView一起添加到viewDidLoad中,使得URL永遠不會離開新聞部分和PDF URL。例如使用if和NSRange函數的組合來檢查該URL是否僅包含新聞部分和PDF URL)

我曾在一個NSRange函數之前做過一次點計算器,所以我認爲這將是一個很好的時機用於這個框架應用程序。

P.S - 這個應用程序是一個組織基地項目,我是一個實習生,爲他們提供基本骨架框架。

+0

這是取決於你的需要..如果你希望用戶在PDF離線閱讀或沒有。 –

+0

所以如果我想使它成爲一個完整的離線應用程序,可以說,有一種方法可以離線顯示PDF? –

+0

是啊檢查答案..他們描述你怎麼能做到這一點。 –

回答

29

您可以使用UIWebView直接從您的包中獲取PDF,無需調用在線Web服務。

本地文件:

NSString *html = [NSString stringWithContentsOfFile:path1 encoding:NSUTF8StringEncoding error:nil]; 
[self.webView loadHTMLString:html baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]bundlePath]]]; 

遠程文件:

- (void) loadRemotePdf 
    { 
     CGRect rect = [[UIScreen mainScreen] bounds]; 
       CGSize screenSize = rect.size; 
        
    UIWebView *myWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0,0,screenSize.width,screenSize.height)]; 
        webView.autoresizesSubviews = YES; 
            webView.autoresizingMask=(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth); 

       NSURL *myUrl = [NSURL URLWithString:@"http://www.mysite.com/test.pdf"]; 
       NSURLRequest *myRequest = [NSURLRequest requestWithURL:myUrl]; 
            
        [webView loadRequest:myRequest]; 

       [window addSubview: myWebView]; 
       [myWebView release]; 
            
} 
+0

糾正我,如果我錯了,但我仍然需要互聯網訪問來查看UIWebView的權利?而你的代碼背後的邏輯就像是抽取本地變量文件的基本HTML代碼。非常感謝您的幫助。如果沒有選擇,我認爲你的解決方法非常簡單直接。 –

+3

不!您可以訪問一個UIWebView本地HTML文件,無需要連接到遠程服務器,與UIWebView中,你都可以做,遠程和本地文件(這是改變:)的路徑) – self

+1

載入本地PDF(*沒有互聯網連接*),您可以使用此代碼:http://stackoverflow.com/questions/2832245/iphone-can-we-open-pdf-file-using-uiwebview – calimarkus

35

許多選項,下面是3:

1)最簡單的方式來加載和顯示本地pdf文件是使用這樣的UIWebview:

NSString *path = [[NSBundle mainBundle] pathForResource:@"document" ofType:@"pdf"]; 
NSURL *targetURL = [NSURL fileURLWithPath:path]; 
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL]; 
[webView loadRequest:request]; 

2)您也可以使用UIDocumentInteractionController/QLPreviewController本機顯示PDF文件。

3)另一種方法是建立一個自定義PDF閱讀器,如蘋果ZoomingPDFViewer example code。 (使用UIPageViewController + CATiledLayer +的UIScrollView)

+0

如果我使用UIDocumentInteractionController,這是否意味着它將完全脫機的基本應用程序? –

+0

是的,但也有Webview。你也可以在webview中加載本地的pdf文件。 – calimarkus

+0

但我不需要互聯網訪問來加載webview?對不起,如果我問一個愚蠢的問題,在這個時候對我來說有點令人困惑。 –

2
NSString *path = [[NSBundle mainBundle] pathForResource:@"Yourpdf" ofType:@"pdf"]; 
NSURL *targetURL = [NSURL fileURLWithPath:path]; 
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL]; 
UIWebView *webView=[[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 300, 400)]; 
[[webView scrollView] setContentOffset:CGPointMake(0,500) animated:YES]; 
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scrollTo(0.0, 50.0)"]]; 
[webView loadRequest:request]; 
[self.view addSubview:webView]; 
+0

這是一個救生員+1 –

0

有一個新的工具包的IO不斷推出。它有許多與顯示PDF相關的專用功能。你可以在其中使用PdfView類來從本地文件或通過URL顯示PDF。

PDFKit>PDFView