2011-02-02 13 views
14

Obtengo mi PDF desde SQLite DB en una variable NSData. Ahora, ¿cuáles son mis opciones para crear CGPDFDocumentRef a partir de este NSData?CGPDFDocumentRef desde NSData

¿O cuáles son mis opciones de todos modos para crear este CGPDFDocumentRef, tener los datos en SQLite?

Respuesta

36

Puede crear un documento PDF con esta función:

CGPDFDocumentRef CGPDFDocumentCreateWithProvider (
    CGDataProviderRef provider 
); 

Para crear el proveedor puede utilizar esta función:

CGDataProviderRef CGDataProviderCreateWithCFData (
    CFDataRef data 
); 

y considerar que NSData y CFDataRef son libres de peaje puente por lo puedes usarlos indistintamente

Así resume intente esto:

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

No se olvide de CFRelease todos los datos no utilizados.

+1

¿sabes cómo puedo escribir ese archivo PDF en un archivo en ios después de crearlo. Intenté writeToFile desde el objeto NSData pero no puedo ver el contenido en el PDF. Los datos se crean desde un CGPath. –

+1

UIGraphicsBeginPDFContextToFile (...) crea el archivo PDF, luego crea páginas usando UIGraphicsBeginPDFPage() escribiendo gráficos usando su CGPath, y finalmente cierra el archivo con UIGraphicsEndPDFContext(). El resultado será el PDF guardado. – viggio24

+0

Tengo la mala suerte de convertir NSData en pdf, en realidad quiero mostrar NSData en webView, pero siempre recibí este error: "No se encontró el encabezado PDF:'% PDF 'no encontrado. ", Cualquier ayuda será crucial. –