2011-03-25 13 views
7

Adjunté un archivo al correo Estoy usando este código.Imprimir archivo PDF en iphone o ipad

[mail addAttachmentData:[myView PDFData] mimeType:@"application/pdf" fileName:@"name.pdf"]; 

¿Cómo puedo hacer la misma cosa para imprimir un archivo, necesito para imprimir esta [myView PDFData].

sólo encontré esto para la impresión:

NSString *PDFFileWithName = [[NSBundle mainBundle] pathForResource:@"name" ofType:@"pdf"]; 

NSData *dataFromPath = [NSData dataWithContentsOfFile:PDFFileWithName]; 

Gracias

Respuesta

6

Usted debe leer a través de la Drawing and Printing Guide for iOS. La propiedad printingItem de UIPrintInteractionController se puede establecer en NSData de un PDF.

actualización para el código añadido

El valor de dataFromPath debe ser igual a [myView PDFData] aunque recomendaría cambiar el nombre de la variable una vez que llegue a trabajar.

NSData *dataFromPath = [myView PDFData]; 
+0

estos son los códigos que estoy usando para el correo electrónico (funciona en gran medida) y el código para la impresión que necesita ser cambiada – Marco

+0

He actualizado mi respuesta, puede volver a publicar su ejemplo de código en una edición de su publicación, si así lo desea. – Joe

+1

Lo hice con este código, en realidad fue fácil ... gracias a todos: printController.printingItem = [myView PDFData]; – Marco

3

escribir a continuación el código y comprobar que

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *pathFolder = [NSString stringWithFormat:@"%@",pdfFileName]; 
NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:pathFolder]; 
NSURL *targetURL = [NSURL fileURLWithPath:path]; 

UIPrintInteractionController *pc = [UIPrintInteractionController sharedPrintController]; 
UIPrintInfo *printInfo = [UIPrintInfo printInfo]; 
printInfo.outputType = UIPrintInfoOutputGeneral; 
printInfo.orientation = UIPrintInfoOrientationPortrait; 
printInfo.jobName [email protected]“Print”; 
printInfo.duplex = UIPrintInfoDuplexLongEdge; 

pc.printInfo = printInfo; 
pc.showsPageRange = YES; 
pc.printingItem = targetURL; 

UIPrintInteractionCompletionHandler completionHandler = 
    ^(UIPrintInteractionController *printController, BOOL completed, 
     NSError *error) { 
    if(!completed && error){ 
     NSLog(@"Print failed - domain: %@ error code %ld", error.domain, (long)error.code); 
    } 
}; 
[pc presentFromRect:shareButton.frame inView:self.view animated:YES completionHandler:completionHandler]; 
+0

¿Puede ampliar su respuesta con una descripción * por qué * este código resolvería el problema? Un volcado de código sin una descripción raramente ayuda a los lectores futuros. –

2

código completo para imprimir pdf

UIPrintInteractionController *pc = [UIPrintInteractionController 
             sharedPrintController]; 
    UIPrintInfo *printInfo = [UIPrintInfo printInfo]; 
    printInfo.outputType = UIPrintInfoOutputGeneral; 
    printInfo.orientation = UIPrintInfoOrientationPortrait; 
    printInfo.jobName [email protected]"Report"; 

    pc.printInfo = printInfo; 
    pc.showsPageRange = YES; 
    pc.printingItem = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://test.com/Print_for_Client_Name.pdf"]]; 
    // You can use here image or any data type to print. 


UIPrintInteractionCompletionHandler completionHandler = 
^(UIPrintInteractionController *printController, BOOL completed, 
    NSError *error) { 
    if(!completed && error){ 
     NSLog(@"Print failed - domain: %@ error code %ld", error.domain, 
       (long)error.code); 
    } 
}; 


[pc presentFromRect:CGRectMake(0, 0, 300, 300) inView:self.view animated:YES completionHandler:completionHandler];