2011-12-27 5 views
2

나는 스크린 샷을 찍고 바로 인쇄하려고합니다. 어떤 이유로 응답하지 않습니다. 스크린 샷을 문서 디렉토리에 저장하고 있습니다. 코드는 다음과 같습니다.IOS에서 화면 캡처 및 인쇄

-(IBAction)printdoc 
{ 
    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) 
     UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale); 
    else 
     UIGraphicsBeginImageContext(self.view.bounds.size); 
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    //UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil); 
    NSData * imageData = UIImageJPEGRepresentation(viewImage, 1.0); 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    documentsDirectory = [documentsDirectory stringByAppendingPathComponent:@"Screenshot.jpg"]; 
    [imageData writeToFile:documentsDirectory atomically:YES]; 
    NSString *myFilePath = [documentsDirectory stringByAppendingPathComponent:@"Screenshot.jpg"]; 
    NSData *myData = [NSData dataWithContentsOfFile:myFilePath]; 

    UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController]; 
    if (pic && [UIPrintInteractionController canPrintData:myData]) { 
     pic.delegate = self; 
     NSLog(@"CAN PRINT !!!!!!!!!!!!"); 
     UIPrintInfo *printInfo = [UIPrintInfo printInfo]; 
     printInfo.outputType = UIPrintInfoOutputGeneral; 
     printInfo.jobName = [myFilePath lastPathComponent]; 
     printInfo.duplex = UIPrintInfoDuplexLongEdge; 
     pic.printInfo = printInfo; 
     pic.showsPageRange = YES; 
     pic.printingItem = myData; 

     void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = 
     ^(UIPrintInteractionController *pic, BOOL completed, NSError *error) { 

      if (!completed && error) 
       NSLog(@"FAILED! due to error in domain %@ with error code %u", 
         error.domain, error.code); 
     }; 

     // iPad only printing 

     [pic presentAnimated:YES completionHandler:completionHandler]; 
    } 
} 
+0

제목에 Xcode라는 단어가 없으므로 (실제 문제와 관련이 거의 없거나 전혀 없을 것입니다.) 사람들을 위해 좀 더 분명하게 보이도록 만들었습니다. 너의 질문에, 로이. –

+0

오, 죄송합니다 :) –

+0

물론 Xcode 태그도 제거해야합니다. ;-) –

답변

2

작은 업데이트! 해결! 사실 내 코드가 작동했습니다. 문제를 일으키는 프린터였습니다 ... 위의 코드를 사용하면 멋지게 작동합니다! 이제 iPad 용으로 설정하는 방법을 알아 보겠습니다.

+0

위의 코드를 iPAD에서 올바르게 작동 시키셨습니까? 가능하다면 전체 작업 코드를 제공하십시오. – JAHelia