Å jobbe med rå PDF-dokumenter kan være en tidkrevende og frustrerende oppgave. Denne opplæringen vil lære deg hvordan du bruker VFR-biblioteket for raskt å få tilgang til, vise og bla gjennom PDF-dokumenter i dine egne applikasjoner!
Det er mange scenarier hvor det kan bli nødvendig å vise en PDF i en iOS-app. Ved å gjøre det kan det være mange komplikasjoner ved å få PDF-filer til å gjengis riktig. Det er også tilleggsfunksjoner som utskrift, e-post, visning av bokmerker, håndtering av rotasjon og mer som bør redegjøres for. Selv om mange av disse funksjonene kanskje ikke er kompliserte å inkludere, kan noen være svært vanskelig å få jobben riktig.
For denne appen starter vi ved å opprette et nytt Xcode-prosjekt som et "Enkelt visningsprogram". Også, vi bruker ARC, så sørg for at "Bruk automatisk referansetelling" er merket.
Vår PDF "Reader" -bibliotek krever et par tilleggsrammer som skal legges til vårt prosjekt: QuartzCore, ImageIO og MessageUI.
Hvis du allerede er kjent med å legge til rammer for et prosjekt, kan du hoppe over denne neste delen og komme rett inn i "Legge til biblioteket i vårt prosjekt".
Ellers, for å legge til rammene, klikk på prosjektet ditt fra Project Navigator. Velg ditt mål, og finn fanen "Bygg faser" øverst. Under "Build Phases", utvider du "Link Binary With Libraries" og deretter "+" -knappen nederst i venstre hjørne.
Legg nå de nødvendige rammebetingelsene (QuartzCore, ImageIO, MessageUI).
Din "Link binære med valg" -avsnitt bør nå se slik ut:
Vår PDF "Reader" -bibliotek kan lastes ned fra GitHub her: https://github.com/vfr/Reader. Vi kan nå dra vår "Reader" -bibliotek til vårt prosjekt, og vi er nesten klar til å starte. Jeg har laget en ny gruppe i prosjektet mitt kalt "PDF Reader" der jeg legger til biblioteket (du trenger bare å inkludere katalogene "Kilder" og "Grafikk").
Dessverre, på dette tidspunktet, er "Reader" ikke ARC-klar. Så, vi må gjøre noe refactoring. Det er tre (3) filer som vi må oppdatere manuelt før vi kan fortelle Xcode å refactor for ARC: "ReaderDocument.m", "ReaderContentPage.m" og "ReaderThumbFetch.m" (referanse finner du grunnleggende instruksjoner for disse filene her: http://www.vfr.org/2012/05/reader-arc-conversion/.)
I utgangspunktet, hva vi skal gjøre, er å redigere hver av disse filene for å bruke vanlige __bridge kast, slik som:
ReaderDocument.m:
Endring
... = [NSString stringWithString: (id) theString];
til …
= [NSString stringWithString: (__ bro id) theString];
ReaderContentPage.m:
Endring
... = CGPDFDocumentCreateX ((CFURLRef) fileURL, setning);
til…
... = CGPDFDocumentCreateX ((__ bridge CFURLRef) fileURL, setning);
ReaderThumbFetch.m:
Endring
... = CGImageSourceCreateWithURL ((CFURLRef) thumbURL,
til…
... = CGImageSourceCreateWithURL ((__ bro CFURLRef) thumbURL, NULL);
Med de ovennevnte endringene gjort, gå til Rediger> Refactor> Konverter til Objective-C ARC ...
Du vil bli bedt om å "Velg mål for å konvertere." Kontroller at ditt nåværende mål er valgt, og trykk deretter på "Kryss av".
Prompten vil lede deg gjennom prosessen, du bør bare kunne treffe "Neste" uten problem.
Da kan du "Endre endringer", og du kan velge "Lagre".
Til slutt må vi inkludere vår "Leser" -bibliotekshoved i vår viktigste ViewController.h og angi hovedvisningskontrollen som en ReaderViewControllerDelegate
:
#import "ReaderViewController.h"
@interface MTViewController: UIViewController
Den kompliserte delen av prosjektoppsettet er over. Fra dette punktet er det raskt å begynne å se PDF-filer i våre apper - komplett med utskrift, bokmerker, miniatyrbilder, e-post og mer!
Først, la oss legge til en demo PDF til vårt prosjekt. Nok en gang har jeg opprettet en ny gruppe, denne jeg har kalt "PDF-filer".
Jeg har da lagt til en PDF med navnet "typo_tips.pdf" som jeg lastet ned fra fontshop.com i "ressursmappen" som du kan bruke (direkte link). Selvfølgelig er du velkommen til å prøve en PDF som du allerede har i tillegg.
For å åpne vår PDF, legger vi til en enkelt UIButton i vår viktigste ViewController.xib.
Vi kobler deretter vår UIButton til en metode som vi ringer didClickOpenPDF
.
Resten av arbeidet vil bli håndtert i denne "didClickOpenPDF" metoden i vår viktigste ViewController.m.
Først tar vi vårt PDF-dokument fra vårt apppakke.
NSString * file = [[NSBundle mainBundle] pathForResource: @ "typo_tips" ofType: @ "pdf"];
Deretter oppretter vi et "ReaderDocument" som vår "Leser" vil kunne se. Legg merke til at hvis dokumentet vårt var passordbeskyttet, kunne vi sette passordet som den endelige parameteren.
ReaderDocument * document = [ReaderDocument withDocumentFilePath: filpassord: null];
Deretter sørger vi for at vår "ReaderDocument" ble opprettet, før du implementerer vår "ReaderViewController" som vil håndtere resten av PDF-operasjonen for oss.
hvis (dokument! = null)
Og mellom braces i "dokument" -kontrollen, laster vi inn "ReaderViewController" -objektet.
hvis (dokument! = null) ReaderViewController * readerViewController = [[ReaderViewController allokere] initWithReaderDocument: dokument]; readerViewController.delegate = self;
I dette eksemplet presenterer vi vår "ReaderViewController" som en modal visning, selv om vi alternativt kunne presentere den med en UINavigationController hvis vår app brukte en UINavigationController. Vi har ulike alternativer for presentasjons- og overføringsstilen vi kan bruke til vår ModalViewController, så jeg vil oppfordre deg til å eksperimentere med stilene som fungerer best for appen din. I dette tilfellet vil vi prøve å etterligne den opprinnelige Apple PDF-stilen fra iBooks.
Legg til følgende linjer etter "readerViewController.delegate = self;".
readerViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; readerViewController.modalPresentationStyle = UIModalPresentationFullScreen;
Til slutt må vi faktisk presentere vår ModalViewController:
[self presentModalViewController: readerViewController animated: YES];
Som du ser, når vi har tatt med vår "Leser" -bibliotek, er det relativt enkelt å se og samhandle med PDF-filer i våre iOS-apper. Her er hele metoden vi brukte:
- (IBAction) didClickOpenPDF: (UIButton *) avsender NSString * file = [[NSBundle mainBundle] pathForResource: @ "typo_tips" ofType: @ "pdf"]; ReaderDocument * document = [ReaderDocument withDocumentFilePath: filpassord: null]; hvis (dokument! = null) ReaderViewController * readerViewController = [[ReaderViewController allokere] initWithReaderDocument: dokument]; readerViewController.delegate = self; readerViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; readerViewController.modalPresentationStyle = UIModalPresentationFullScreen; [self presentModalViewController: readerViewController animated: YES];
Hvis du kjører og bygger applikasjonen vår nå, ser du de mange funksjonene som allerede fungerer for PDF-visningsprogrammet ditt.
Det er bare en siste ting vi trenger å håndtere: avviser PDF Reader ViewController når brukeren trykker på "Ferdig" -knappen.
Dette håndteres med en enkel, grei metode:
- (void) dismissReaderViewController: (ReaderViewController *) viewController [self dismissModalViewControllerAnimated: YES];
Som nevnt tidligere støtter leseren biblioteket mange av disse funksjonene utover bare å vise PDF-filer, for eksempel utskrift, bokmerker, etc. Som standard er de fleste av disse funksjonene aktivert. Du kan imidlertid velge å angi disse som best passer din søknad ved å redigere filen "ReaderConstants.h". Hver av disse funksjonene er oppført på "Reader" GitHub siden, som jeg vil vise her:
Nå har du sett hvor enkelt det kan være å vise PDF-filer i iOS. I neste veiledning i denne serien ser vi på noen av måtene for å lage egne PDF-filer i Appene våre.