2011-02-02 16 views
14

Ho ottenuto il mio PDF da SQLite DB in una variabile NSData. Ora quali sono le mie opzioni per creare CGPDFDocumentRef da questo NSData?CGPDFDocumentRef da NSData

O quali sono le mie opzioni comunque per creare questo CGPDFDocumentRef, avere i dati in SQLite?

risposta

36

È possibile creare un documento PDF utilizzando questa funzione:

CGPDFDocumentRef CGPDFDocumentCreateWithProvider (
    CGDataProviderRef provider 
); 

Per creare il provider è possibile utilizzare questa funzione:

CGDataProviderRef CGDataProviderCreateWithCFData (
    CFDataRef data 
); 

e considerare che NSData e CFDataRef sono numero verde ponte così puoi usarli in modo intercambiabile.

Quindi riassumendo provare questo:

NSData *data = ... my data from SQLite ... 
CFDataRef myPDFData = (CFDataRef)data; 
CGDataProviderRef provider = CGDataProviderCreateWithCFData(myPDFData); 
CGPDFDocumentRef pdf = CGPDFDocumentCreateWithProvider(provider); 

Non dimenticare di CFRelease tutti i dati non utilizzati.

+1

sai come posso scrivere quel PDF in un file in iOS dopo averlo creato. Ho provato writeToFile dall'oggetto NSData ma non riesco a vedere il contenuto nel PDF. I dati sono creati da un CGPath. –

+1

UIGraphicsBeginPDFContextToFile (...) crea il file PDF, quindi crei le pagine usando UIGraphicsBeginPDFPage() scrivendo immagini usando il tuo CGPath e infine chiudendo il file con UIGraphicsEndPDFContext(). Il risultato sarà il PDF salvato. – viggio24

+0

Non riesco a convertire NSData in pdf, in realtà voglio mostrare NSData su WebView ma ho sempre ricevuto questo errore: "Impossibile trovare l'intestazione PDF:'% PDF 'non trovato. "Qualsiasi aiuto sarà cruciale. –