2012-06-04 19 views
23

Todavía soy bastante nuevo en xcode, aunque hice muchas tutoriales e investigaciones en línea antes, todavía hay algunas cosas que me desconciertan ya que obj c no es mi lenguaje de programación nativo. (autoaprendido en mi pasante)cómo mostrar el pdf en ios

Quiero saber si hay alguna manera de construir fuera de línea para xcode iOS de modo que podamos mostrar el archivo pdf desde un archivo local.

El método que estoy usando ahora es a través de UIWebView para mostrar un HTML personalizado que contiene la URL de PDF (en línea), pero si es posible quiero hacer una versión fuera de línea.

Pero a partir de la investigación en línea, me parece que la única manera de mostrar PDF es a través de UIWebView, si ese es realmente el caso, ¿es posible extraer el archivo del recurso local (por ejemplo, agregar archivos a mi carpeta de recursos xcode) en lugar de usar la URL de PDF.

OFF-TOPIC: ¿Cuál sería una mejor opción? Para extraer el archivo local o utilizar la URL en línea para el archivo PDF?

Como UIWebView requieren conexión, parece ser una mejor opción para simplemente extraer la URL en línea, ya que será la más actual y actualizada.

Los comentarios son muy apreciados. ¡Gracias!

EDIT: pregunta rápida, si uso el método UIDocumentInteractionController o la QuickLook framework para que sea fuera de línea, esto significaría que tengo que liberar parche de actualización cada vez que hay nuevo artículo añadido en PDF (corríjanme si me equivoco)

Tomando este punto en consideración, he llegado a un contraargumento de mi propia pregunta sobre el terreno (lo siento si alguno de ustedes siente que está perdiendo el tiempo conmigo <, soy una persona a la que le gusta cuestionar las posibilidades y los diferentes enfoques que uno podría tomar para resolver un problema) En caso de ahorrar tiempo de la actualización constante y proporcionar una solución base en tiempo real, que es usar UIWebView (sé que esto contradice mi propósito de este SO th leer), ya que este proyecto está basado en un sitio web en línea (obteniendo mi contenido y fuentes de allí), si tuviera que cargar su sitio web para la sección del artículo, sería atrevido de mi parte decir que al agregar una variable NSString, puede agregar en la función NSRange a viewDidLoad junto con UIWebView de modo que la URL nunca salga de la sección de noticias y URL de PDF. p.ej. usando la combinación de if y la función NSRange para verificar que la URL solo contenga la sección de noticias y PDF URL)

Lo hice una vez antes de una función NSRange para el punto en la calculadora así que pensé que sería un buen momento para ponerlo utilizar para esta aplicación de marco.

P.S - Esta aplicación es un proyecto base de la organización y soy un interno que les proporciona el marco base de esqueleto.

+0

esto es depende de su necesidad .. si desea que el usuario lea el pdf fuera de línea o no. –

+0

así que si quiero convertirlo en una aplicación completa fuera de línea para decir que hay un método para mostrar el PDF fuera de línea? –

+0

sí, compruebe las respuestas ... describen cómo puede hacerlo. –

Respuesta

29

Puede usar un UIWebView para obtener el PDF de su paquete directamente, sin necesidad de llamar a un servicio web en línea.

archivo local:

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

de archivos remotos:

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

Corrígeme si me equivoco, pero aún necesitaré acceso a Internet para ver el UIWebView ¿verdad? Y la lógica detrás de su código es algo así como el código HTML básico para extraer el archivo variable local. Muchas gracias por su ayuda. Si no tiene otra opción, creo que la suya es muy simple y directa al método de resolución de puntos. –

+3

¡No !, puede acceder a los archivos html locales con UIWebView, no necesita conectarse a servidores remotos, con UIWebView, puede hacer ambos, archivos remotos y locales (es la ruta que cambia :)) – self

+1

para cargar un PDF local (* sin conexión a Internet *), puede usar este código: http://stackoverflow.com/questions/2832245/iphone-can-we-open-pdf-file-using-uiwebview – calimarkus

35

Muchas opciones, aquí hay 3:

1) La forma más fácil de cargar y mostrar un archivo PDF local es a use una UIWebview así:

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

2) También puede usar un UIDocumentInteractionController/QLPreviewController para mostrar los archivos PDF de forma nativa.

3) Otra forma sería crear un visor de PDF personalizado, como en las manzanas ZoomingPDFViewer example code. (usando UIPageViewController + CATiledLayer + UIScrollView)

+0

Si uso UIDocumentInteractionController, ¿significa esto que será una aplicación base totalmente fuera de línea? –

+0

Sí, pero con una vista web también. También puede cargar archivos pdf locales en una vista web. – calimarkus

+0

¿Pero no necesitaría acceso a internet para cargar la vista web? lo siento si estoy haciendo una pregunta estúpida, es algo confuso para mí en este momento. –

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

Esto fue un salvavidas, +1 –

0

Hay un nuevo conjunto de herramientas de OI ha introducido. Tiene muchas características dedicadas relacionadas con la visualización de archivos PDF. Puede usar la clase PdfView para mostrar un PDF desde un archivo local o mediante una URL.

PDFKit>PDFView

Cuestiones relacionadas