XCode Tips&Tricks #12 – Come leggere un pdf in una UIWebView

Alcuni utenti di BubiDevs mi hanno chiesto come fare per leggere un documento pdf all’interno delle nostre applicazioni.

Il procedimento è davvero molto semplice, basta partire da una comune UIWebView (potete utilizzare il nostro tutorial #8).

Invece di caricare un indirizzo HTML utilizzate le seguenti istruzioni:

	// carica il file pdf da locale
	NSString *indirizzo = [[NSBundle mainBundle] pathForResource:@"prev" ofType:@"pdf"];
	NSURL *url = [NSURL fileURLWithPath:indirizzo];
	NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
	// visualizza la pagina nella UIWebView
	[webView loadRequest:requestObj];
	// scala il contenuto della pagina a seconda delle dimensioni della UIWebView
	webView.scalesPageToFit = YES;

La prima istruzione ci permette di caricare un file pdf chiamato “prev”, che ovviamente deve essere inserito all’interno del nostro progetto. Le istruzioni 3, 4 e 6 non cambiano, sono uguali a quelle che già conoscete.

L’unica istruzione che merita un po’ più di attenzione è l’ultima (riga 7). Essa ci permette di scalare il contenuto all’interno della nostraUIWebView, in modo che si adatti alla sua dimensione. Ecco come si presenta il nostro lettore di pdf:

Ed ecco come invece sarebbe senza l’utilizzo dell’istruzione “scalePageToFit”, sicuramente molto meno “user-friendly”:

Spero che questo tips vi sia stato utile, se volete segnalarmi dei vostri Tips&Tricks ne sarei molto felice, li inserirei sicuramente in questa rubrica!

Ingegnere informatico e sviluppatore freelance, mi occupo da anni di sviluppo per iOS (ma non solo). Dal 2008 scrivo su questo piccolo blog (con qualche lunga pausa), in cui parlo di programmazione e di qualsiasi altra cosa che mi diverta.

16 comments On XCode Tips&Tricks #12 – Come leggere un pdf in una UIWebView

  • So già programmare per iPhone ma sto prendendo in considerazione comunque la possibilità di comprare il tuo tutorial pratico per SDK come promemoria.
    Potrebbe risultare molto utile avere alla fine un capitolo dedicato ai Tips&Tricks come questo. Per quanto mi riguarda sarei molto più motivato all’acquisto ed in quel caso lo comprerei subito.

    Potresti cominciare con l’includere solo i Tips già pubblicati su questo blog e sarebbe comunque un buon inizio che non dovrebbe neanche farti perdere molto tempo.

    Cosa ne pensi?

  • @Giuliano: l’idea mi era già venuta tempo fa.. sicuramente se questa rubrica si espande prenderò in considerazione l’idea di raccogliere tutti i tips, magari in un’applicazione per iPhone o iPad 😉

  • @Andrea Busi: In un’app non è molto utile secondo me. Molto meglio una lista pdf integrata nel tuo libro. Preso in considerazione?

  • Ciao, ho acquistato la tua guida, ma avrei bisogno di alcune dritte. Ti premetto che mi avvicino solo ora alla programmazione quindi sono inesperto. Sono interessato alla creazione di un visualizzatore PDF, ho seguito il tuo tutorial, ma vorrei implementarlo. Più precisamente avrei bisogno delle seguenti funzioni: 1) poter scegliere la pagina da un elenco con preview; 2) poter eseguire delle ricerche all’interno del PDF. Ho cercato ovunque e non trovo niente, puoi aiutarmi?

  • @giuliano

    Stai prendendo in considerazione l’idea?
    Scusami…ma si tratta di 3 (tre) euro…ci vorresti pensare anche?

    @andrea
    Mi accodo alla tua richiesta…

  • @carlo: per le richieste che ha fatto anche Andrea, purtroppo non so se è possibile integrare la ricerca all’interno di file pdf.. devo cercare, ma sono scettico..
    per quanto riguarda una sorta di indice penso che vada fatto a mano, quindi suddividi il tuo pdf in capitolo o sezioni, per ognuna ti crei una preview e metti tutto in una lista che visualizzi, ad esempio, in una tabella..

  • Approfitto della tua disponibilità…

    È possibile dare lo scrillong orizzontale al pdf con più pagine invece che quello verticale?
    Se si, come?

  • @carlo: con i componenti standard non penso sia possibile, la UIWebView fornisce solo il classico scrolling verticale..

  • Innanzitutto complimenti per l’architettura e il design sempre curati del sito che rendono la navigazione molto piacevole, non solo per i contenuti ma anche per la parte estetica!
    Volevo sapere se c’è la possibilità di estrarre parole/numeri a partire da un file .pdf presente nel mio progetto, ovvero se è possibile “esportare” i dati contenuti nel pdf per popolare, ad esempio, una UITableview.
    So che è possibile copiare il contenuto di un .csv in una nsstring, ma coi pdf ho notato che la questione è un pò più delicata.
    Potresti darmi qualche consiglio in merito?
    Grazie mille!

  • @Roberto: ciao! purtroppo non ho informazioni in merito, però penso che da file in formato PDF non sia possibile estrarre dati, perchè il supporto i iOS è di sola lettura (un semplice rendering grafico insomma). Però non ne sono sicuro, potrei anche sbagliarmi!

  • ciao, volevo chiederti se esiste un modo nel simulatore dell’iphone di zoomare come nell’iphone vero in cui bastano 2 dita, grazie

  • sarebbe molto interessante capire come leggerlo per orizzontale da sx a dx….

  • se volessi caricare più file pdf?
    ad esempio da un file .plist?

  • @C.I.R.: non penso sia possibile caricare più pdf in una singola UIWebView..

  • ciao, mi indicheresti l’istruzione corretta per andare a leggere in file pdf in remoto ( per esempio appoggiato in rete?)
    grazie infinite e complimenti !
    Ottimi tutorial !

    Daniela

  • @daniela: Ciao, per leggere un pdf da remoto non so bene come si faccia, però prima devi sicuramente scaricarlo usando NSData:

    NSURL *indirizzo = [NSURL URLWithString:@"http://www.tuoindirizzo.com"];
        NSData *data = [NSData dataWithContentsOfURL:indirizzo];
    

    Poi lo puoi dare “in pasto” alla UIWebView 😉

Leave a reply:

Your email address will not be published.

Site Footer