2013-07-19 4 views
0

У меня есть один вопрос. Возможно ли распечатать изображение, которое временно сохраняется? Я сохранил изображение, как это делается в этом example вопроса о stackoverflow.Печать временно сохраненного изображения через AirPrint

Но когда я пытаюсь использовать это изображение для печати через AirPrint, он не работает.

- (IBAction)btnPrintTapped:(id)sender { 

    UIImage* image = nil; 

    UIGraphicsBeginImageContext(_scrollView.contentSize); 
    { 
     CGPoint savedContentOffset = _scrollView.contentOffset; 
     CGRect savedFrame = _scrollView.frame; 

     _scrollView.contentOffset = CGPointZero; 
     _scrollView.frame = CGRectMake(0, 0, _scrollView.contentSize.width, _scrollView.contentSize.height); 

     [_scrollView.layer renderInContext: UIGraphicsGetCurrentContext()]; 
     image = UIGraphicsGetImageFromCurrentImageContext(); 

     _scrollView.contentOffset = savedContentOffset; 
     _scrollView.frame = savedFrame; 
    } 
    UIGraphicsEndImageContext(); 

    if (image != nil) { 
     [UIImagePNGRepresentation(image) writeToFile: @"/tmp/test.png" atomically: YES]; 
     UIImage *yourImage = [UIImage imageNamed:@"/tmp/test.png"]; 
     NSArray *itemsToShare = @[yourImage]; 
     UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:itemsToShare applicationActivities:nil]; 
     activityVC.excludedActivityTypes = @[ UIActivityTypeCopyToPasteboard, UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll, UIActivityTypeMail, UIActivityTypeMessage, UIActivityTypePostToFacebook, UIActivityTypePostToTwitter, UIActivityTypePostToWeibo]; 
     [self presentViewController:activityVC animated:YES completion:nil]; 
    }  
} 

Но принтер может печатать (я тестировал с починкой изображением) ... поэтому принтер не кажется проблема. Спасибо за вашу помощь заранее.

UPDATE Я сделал некоторые изменения в коде/добавили несколько строк кода:

[UIImagePNGRepresentation(image) writeToFile: @"/tmp/test.png" atomically: YES]; 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString* path = [documentsDirectory stringByAppendingPathComponent:@"/tmp/test.png" ]; 
UIImage* image = [UIImage imageWithContentsOfFile:path]; 

UIImage *ImageItem = image; 

Но это работает только тогда, когда я устанавливаю writeToFile: @"test.png" ... но тогда я могу только сохранить изображение один раз и не перезаписывать его.

Когда я делаю это с кодом выше есть один ошибка:

Нагрузочного приложение из-за неперехваченное исключение 'NSInvalidArgumentException', причина: '- [__ NSPlaceholderArray initWithObjects: подсчитывать]: попытка вставить ноль объект из объектов [0]

+0

Или не возможно иметь доступ к этому файлу? –

ответ

0

После немного попробовать его, наконец, в настоящее время работает ...

if (image != nil) { 
     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                  NSUserDomainMask, YES); 
     NSString *documentsDirectory = [paths objectAtIndex:0]; 
     NSString* path = [documentsDirectory stringByAppendingPathComponent: 
          @"test.png" ]; 
     NSData* data = UIImagePNGRepresentation(image); 
     [data writeToFile:path atomically:YES]; 


     UIImage* image = [UIImage imageWithContentsOfFile:path]; 
     UIImage *yourImage = image;