2010-02-09 15 views
23

Sono in grado di visualizzare correttamente un PDF da un sito Web. Voglio poter scaricare quel PDF sul dispositivo, quindi accedere a quel file localmente.Come scaricare PDF e memorizzarlo localmente su iPhone?

Quando l'app viene aperta, controllerà la data del PDF online. Se è più recente del PDF archiviato localmente, l'app scaricherà il nuovo, altrimenti aprirà il PDF archiviato localmente.

Il codice Attualmente sto usando:

PDFAddress = [NSURL URLWithString:@"http://www.msy.com.au/Parts/PARTS.pdf"]; 
request = [NSURLRequest requestWithURL:PDFAddress]; 
[webView loadRequest:request]; 
webView.scalesPageToFit = YES; 

Come sono io in grado di raggiungere questo obiettivo?

risposta

45

Ho trovato un metodo che io stesso ho provato:

// Get the PDF Data from the url in a NSData Object 
NSData *pdfData = [[NSData alloc] initWithContentsOfURL:[ 
    NSURL URLWithString:@"http://www.example.com/info.pdf"]]; 

// Store the Data locally as PDF File 
NSString *resourceDocPath = [[NSString alloc] initWithString:[ 
    [[[NSBundle mainBundle] resourcePath] stringByDeletingLastPathComponent] 
     stringByAppendingPathComponent:@"Documents" 
]]; 

NSString *filePath = [resourceDocPath 
    stringByAppendingPathComponent:@"myPDF.pdf"]; 
[pdfData writeToFile:filePath atomically:YES]; 


// Now create Request for the file that was saved in your documents folder 
NSURL *url = [NSURL fileURLWithPath:filePath]; 
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 

[webView setUserInteractionEnabled:YES]; 
[webView setDelegate:self]; 
[webView loadRequest:requestObj]; 

Questo memorizzerà il PDF a livello locale e caricarlo nel vostro UIWebView.

Spero che questo risolva il tuo problema.

+0

Sto utilizzando questo URL ** http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIWebView_Class/UIWebView_Class.pdf**. cosa dovrei passare qui in stringByAppendingPathComponent: myPDF.pdf ??? Quale nome PDF dovrei passare? Mi aiuti per favore. – Manthan

+0

scusa per una risposta tardiva, è necessario passare il nome del PDF che si desidera archiviare come, insieme con l'estensione ".pdf" come stringa. – RVN

+0

Sì, l'ho capito. Grazie mille per la tua risposta e aiuto. +1 per questo. – Manthan

0

È necessario leggere lo File and Data Management Guide da Apple. Descriverà quali posizioni sono disponibili nella sandbox dell'applicazione per il salvataggio dei file localmente e come ottenere un riferimento a tali posizioni. Ha anche una sezione per leggere e scrivere :)

Divertiti!

0

Vorrei anche dare un'occhiata a ASIHTTPRequest per un facile download di file.

+0

c'è un modo per scaricare i file in locale? quindi posso usarlo più tardi nell'e-mail allegato. –

+0

Sto usando ASIHTTPRequest. ma non so dove stanno andando i file scaricati. –

+0

hai risolto qualsiasi soluzione @ Muhammad Jabbar – Bittoo

0

ho trovato una versione rapida per esso:

let url = "http://example.com/examplePDF.pdf" 
if let pdfData = NSData(contentsOfURL: url) { 
    let resourceDocPath = NSHomeDirectory().stringByAppendingString("/Documents/yourPDF.pdf") 
    unlink(resourceDocPath) 
    pdfData.writeToFile(resourceDocPath, atomically: true) 
} 

basta ricordarsi di salvare il file percorso e sarete in grado di recuperare ogni volta che ne avete bisogno.

-1

Con Swift versione 3.0 sintassi:

let url = NSURL(fileURLWithPath: "http://example.com/examplePDF.pdf") 

    if let pdfData = NSData(contentsOf: url as URL) { 

     let resourceDocPath = NSHomeDirectory().appending("/Documents/yourPDF.pdf") 

     unlink(resourceDocPath) 

     pdfData.write(toFile: resourceDocPath, atomically: true) 

    } 
Problemi correlati