2011-04-20 21 views
5

Mi aplicación tiene una vista de tabla con celdas personalizadas (incluye campo de texto, etiqueta y botón), quiero generar un archivo pdf desde la tabla.Si es posible generar un archivo PDF desde un UITableView?

Bellow es el código (ahora asume el contenido del tableview es todo lo visible):

UIGraphicsBeginImageContext(self._tableView.bounds.size); 
    UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, self._tableView.bounds.size.width, self._tableView.bounds.size.height), nil); 

    // what's the code here? 
    // [self._tableView drawInRect:]; 

    UIGraphicsEndPDFContext(); 

siempre generar un archivo PDF en blanco. Actualmente, lo que hago es generar la tabla vista como una imagen, luego dibujar la imagen en el contexto actual, y luego obtener el archivo pdf. pero alguna buena idea?

Respuesta

5

HI, puede convertir la vista actual como imagen a través del código de follwoing y entonces usted tiene que usar esa imagen para crear PDF de archivos a través de la link

- (UIImage *)captureView:(UIView *)view { 
    CGRect screenRect = [[UIScreen mainScreen] bounds]; 

    UIGraphicsBeginImageContext(screenRect.size); 

    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    [[UIColor blackColor] set]; 
    CGContextFillRect(ctx, screenRect); 

    [view.layer renderInContext:ctx]; 

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 

    UIGraphicsEndImageContext(); 

    return newImage; 
    } 
+0

Este es el tipo de cosa que me gusta mucho de Cacao y CoreGraphics - Los primatives y las operaciones y tipos de malla juntos muy bien de nivel superior. Realmente nunca aprecié los sistemas de gráficos con estado (es decir, postscript) hasta hacer algunas subclases graves de UIView. – Armentage

+0

Gracias, entiendo esto, pero si el contenido de la tabla vista es más grande que la tabla, ¿cómo capturar toda la tabla? – ZYiOS

+0

Dio, si está funcionando, por favor marque la respuesta y renuncie ... va a ayudar a otros ... –

-1

Para obtener una imagen de buena calidad,

Uso

UIGraphicsBeginImageContextWithOptions(screenRect.size, NO, 0.0) 

en lugar de

UIGraphicsBeginImageContext(screenRect.size) 

@JeffWood: gracias a un millón, por su respuesta :)

Cuestiones relacionadas