2010-12-28 18 views
1

私のアプリケーションでは給紙動作が呼び出されますが、何も印刷されず紙が空白になります。印刷には次のコードを使用しています。ipadで印刷が機能していません

-(IBAction)printButtonAction:(id)sender{ 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

NSString *documentsDirectory = [paths objectAtIndex:0]; 

NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"Preview.pdf"]; 

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:writableDBPath]]; 

UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController]; 
UIPrintInfo *printInfo = [UIPrintInfo printInfo]; 
printInfo.outputType = UIPrintInfoOutputGeneral; 
printInfo.jobName = [writableDBPath lastPathComponent]; 
printInfo.duplex = UIPrintInfoDuplexLongEdge; 
controller.printInfo = printInfo; 
controller.showsPageRange = YES; 
controller.printingItem = data; 

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); 
}; 


UIViewPrintFormatter *viewFormatter = [documentView viewPrintFormatter]; 
    viewFormatter.startPage = 0; 
    controller.printFormatter = viewFormatter; 

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    [controller presentFromBarButtonItem:printButton animated:YES 
     completionHandler:completionHandler]; 
} else { 
    [controller presentAnimated:YES completionHandler:completionHandler]; 
} 



} 

おかげ

Deepikaジャイナ

答えて

0

私は以下のコードが動作すると思い、

-(IBAction)printButtonAction:(id)sender{ 
    float systemVersion = [[[UIDevice currentDevice] systemVersion] floatValue]; 

if (systemVersion>4.1) { 

    NSData *myPdfData = [NSData dataWithContentsOfFile:pdfPath]; //check the value inside |myPdfData| and |pdfPath| is the path of your pdf. 
    UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController]; 
    if (controller && [UIPrintInteractionController canPrintData:myPdfData]){ 
     controller.delegate = delegate; //if necessary else nil 
     UIPrintInfo *printInfo = [UIPrintInfo printInfo]; 
     printInfo.outputType = UIPrintInfoOutputGeneral; 
     printInfo.jobName = [pdfPath lastPathComponent];  
     //printInfo.duplex = UIPrintInfoDuplexLongEdge; 
     controller.printInfo = printInfo; 
     controller.showsPageRange = YES; 
     controller.printingItem = myPdfData;  

     // We need a completion handler block for printing. 
     UIPrintInteractionCompletionHandler completionHandler = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) { 
      if(completed && error){ 
       NSLog(@"FAILED! due to error in domain %@ with error code %u", error.domain, error.code); 
      } 
     }; 

     [controller presentFromRect:rect inView:senderView animated:YES completionHandler:completionHandler]; 
    }else { 
     NSLog(@"Couldn't get shared UIPrintInteractionController!"); 
    } 
} 

あなたがフェッチPDFファイルのパスを確認し、私はあなたが '/' を逃したと思いますDocumentsディレクトリの後ろ。ブレークポイントを入れてパスを確認してから、| data |あなたが指定したパスからのコンテンツの変数。それを試して、urのコメントで応答してください。 :)

関連する問題