2012-06-04 26 views
23

Wciąż jestem całkiem nowy dla xcode, mimo że robiłem wiele samouczków i badań online wcześniej, wciąż jest kilka rzeczy, które łamią mi zagadnienie, ponieważ obiekt nie jest moim rodzimym językiem programowania. (samouczenie się na moim stażyście)jak wyświetlić pdf na ios

Chcę wiedzieć, czy istnieje sposób na kompilację offline dla xcode iOS, tak, że możemy wyświetlić plik PDF z lokalnego pliku.

Metoda, której teraz używam, to UIWebView, aby wyświetlić niestandardowy kod HTML, który zawiera URL pliku PDF (online), ale jeśli to możliwe, chcę utworzyć wersję offline.

Ale z badań online wydaje mi się, że jedynym sposobem wyświetlania pliku PDF jest UIWebView, czy tak naprawdę jest to możliwe, aby pobrać plik z lokalnego zasobu (np. Dodać pliki do mojego folderu zasobów xcode) zamiast używać adresu URL pliku PDF.

OFF-TEMAT: Jaki byłby lepszy wybór? Aby pobrać lokalny plik lub użyć adresu URL online do pliku PDF?

Jako że połączenie wymaga połączenia, lepszym wyborem będzie po prostu przeciągnięcie adresu URL online, ponieważ będzie on najbardziej aktualny i zaktualizowany.

Informacja zwrotna jest bardzo doceniana. Dzięki!

EDIT: szybkie pytanie, jeśli mogę użyć metody UIDocumentInteractionController lub QuickLook framework zrobić to w trybie offline, oznaczałoby to muszę zwolnić Update Patch za każdym razem jest nowy artykuł dodany w PDF (poprawcie mnie jeśli się mylę)

Biorąc to pod uwagę, wymyśliłem kontrargument na moje własne pytanie na miejscu (Przepraszam, jeśli ktoś z was uważa, że ​​marnujecie mi czas>. <, jestem osobą, która lubi kwestionować możliwości i różne podejścia, które można podjąć, aby rozwiązać problem) W celu zaoszczędzenia czasu od ciągłej aktualizacji i zapewnienia rozwiązania bazowego w czasie rzeczywistym, które ma korzystać z UIWebView (wiem, że to jest sprzeczne z moim celem tego SO th czytaj), ponieważ ten proj jest oparty na stronie internetowej (pobieranie moich treści i źródeł z tego źródła), gdybym miał załadować ich stronę internetową do sekcji artykułów, czy śmiałbym powiedzieć, że dodając zmienną NSString, można dodać funkcję NSRange do viewDidLoad wraz z UIWebView tak, że adres URL nigdy nie opuści sekcji wiadomości i adresu URL pliku PDF. na przykład używając kombinacji funkcji if i NSRange do sprawdzenia, czy adres URL zawiera tylko sekcję wiadomości i URL PDF)

Zrobiłem raz przed funkcją NSRange dla punktu na kalkulatorze, więc pomyślałem, że nadszedłby dobry moment, aby umieścić go w użyj dla tej aplikacji ramowej.

P.S - Ta aplikacja jest projektem bazowym dla organizacji i jestem stażystką zapewniającym szkielet podstawowy.

+0

jest to uzależnione od potrzeb .. jeśli chcesz, aby użytkownik czytać PDF w trybie offline lub nie. –

+0

, więc jeśli chcę zrobić z niej całą aplikację offline, to znaczy, że istnieje metoda wyświetlania pliku PDF w trybie offline? –

+0

tak, sprawdź odpowiedzi ... opisują, jak możesz to zrobić. –

Odpowiedz

29

Możesz użyć interfejsu UIWebView, aby bezpośrednio pobrać plik PDF ze swojego pakietu, bez konieczności wywoływania usługi internetowej.

Plik lokalny:

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

Remote File:

- (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

Popraw mnie, jeśli się mylę, ale nadal będę potrzebować dostępu do Internetu, aby wyświetlić UIWebView w prawo? Logika kryjąca się za twoim kodem to coś w rodzaju podstawowego kodu HTML, który pobiera plik zmiennych lokalnych. Bardzo dziękuję za pomoc. Jeśli pozostanie bez wyboru, myślę, że twoje jest bardzo proste i prosto do metody rozwiązywania problemów. –

+3

Nie !, można uzyskać dostęp do lokalnych plików html za pomocą interfejsu UIWebView, bez konieczności łączenia się ze zdalnymi serwerami, z UIWebView, można wykonywać zarówno pliki zdalne, jak i lokalne (zmienia się ścieżka :)) – self

+1

, aby załadować lokalny plik PDF (* bez połączenia z Internetem *), możesz użyć tego kodu: http://stackoverflow.com/questions/2832245/iphone-can-we-open-pdf-file-using-uiwebview – calimarkus

35

Wiele opcji, oto 3:

1) Najprostszym sposobem, aby załadować i wyświetlić lokalny plik pdf jest użyj interfejsu UIWebview w ten sposób:

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

2) Można również użyć pliku UIDocumentInteractionController/QLPreviewController do wyświetlania plików PDF w trybie macierzystym.

3) Innym sposobem byłoby zbudowanie niestandardowej przeglądarki PDF, jak w jabłkach ZoomingPDFViewer example code. (przy użyciu UIPageViewController + CATiledLayer + UIScrollView)

+0

Jeśli używam UIDocumentInteractionController, czy oznacza to, że będzie to aplikacja w pełni offline? –

+0

Tak, ale z widokiem sieciowym również. Możesz również załadować lokalne pliki pdf w widoku webowym. – calimarkus

+0

Ale czy nie potrzebowałbym dostępu do Internetu, aby załadować przeglądarkę internetową? Przepraszam, jeśli zadaję głupie pytanie, jest to dla mnie trochę zagmatwane w tym momencie. –

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

To był ratownik, +1 –

0

Jest nowy zestaw narzędzi OI wprowadziło. Ma wiele dedykowanych funkcji związanych z wyświetlaniem plików PDF. Możesz użyć klasy PdfView, aby wyświetlić plik PDF z lokalnego pliku lub z adresu URL.

PDFKit>PDFView

Powiązane problemy