2010-12-07 14 views
23

मैं अपने ऐप में प्रिंट कार्यक्षमता को एकीकृत करना चाहता हूं।आईओएस 4.2 में कैसे मुद्रित करें?

मैं जिस दस्तावेज़ को मुद्रित करना चाहता हूं वह .doc या .txt प्रारूप में होगा। मैं अभी तक आईफोन विकास में बहुत अनुभवी नहीं हूं, इसलिए ऐप्पल दस्तावेज का पालन करके इसे कार्यान्वित करना मुश्किल लगता है।

अगर कोई नमूना कोड पोस्ट करके मेरी मदद कर सकता है, तो यह एक बड़ी मदद होगी।

+0

मैंने सादे पाठ को मुद्रित करने के लिए नमूना कोड शामिल करने के लिए अपना उत्तर अपडेट किया। –

उत्तर

34

Drawing and Printing Guide for iOS देखें - मैं प्रिंटिंग सेक्शन से जुड़ा हूं। वहाँ नमूना कोड और अधिक नमूना कोड के लिए अच्छे लिंक है।

संपादित करें: अब मुझे लगता है कि आप इंगित करते हैं कि आपको दस्तावेज़ीकरण का पालन करना मुश्किल लगता है।

शब्द दस्तावेज़ जटिल हैं - आपको डेटा के माध्यम से विश्लेषण करना होगा, जो काफी कठिन है।

टेक्स्ट और एचटीएमएल आसान है। मैं HTML के लिए एप्पल के उदाहरण ले लिया और सादे पाठ के लिए इसे बदल:

- (IBAction)printContent:(id)sender { 
    UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController]; 
    pic.delegate = self; 

    UIPrintInfo *printInfo = [UIPrintInfo printInfo]; 
    printInfo.outputType = UIPrintInfoOutputGeneral; 
    printInfo.jobName = self.documentName; 
    pic.printInfo = printInfo; 

    UISimpleTextPrintFormatter *textFormatter = [[UISimpleTextPrintFormatter alloc] 
               initWithText:yourNSStringWithContextOfTextFileHere]; 
    textFormatter.startPage = 0; 
    textFormatter.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); // 1 inch margins 
    textFormatter.maximumContentWidth = 6 * 72.0; 
    pic.printFormatter = textFormatter; 
    [textFormatter release]; 
    pic.showsPageRange = YES; 

    void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = 
    ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) { 
     if (!completed && error) { 
      NSLog(@"Printing could not complete because of error: %@", error); 
     } 
    }; 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
     [pic presentFromBarButtonItem:sender animated:YES completionHandler:completionHandler]; 
    } else { 
     [pic presentAnimated:YES completionHandler:completionHandler]; 
    } 
} 
+1

सादा पाठ मुद्रित करने के लिए संपादित किया गया। –

+0

thanx महोदय, मेरे प्रश्न का उत्तर देने के लिए आपके मूल्यवान समय का खर्च करने के लिए। – iPhoneDev

+0

@ मैथ्यू: कृपया अपना उत्तर संपादित करें। लाइन के लिए [तस्वीर मौजूद हैप्रोमबारबटन बटन: प्रेषक एनिमेटेड: हाँ पूरा हो रहा हैंडलर: समापन हैंडलर]; में "से 'से होना चाहिए" presentFromFromBarButtonItem "विधि – iPhoneDev

1

हाय यह आपकी सहायता यह कोशिश करते हैं और पोस्ट कर सकते हैं, तो किसी भी प्रश्न है।

-(IBAction)printFromIphone:(id)sender { 

    UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController]; 
    pic.delegate = self; 

    UIPrintInfo *printInfo = [UIPrintInfo printInfo]; 
    printInfo.outputType = UIPrintInfoOutputGeneral; 
    printInfo.jobName = self.documentName; 
    pic.printInfo = printInfo; 

    UISimpleTextPrintFormatter *textFormatter = [[UISimpleTextPrintFormatter alloc] 
               initWithText:yourNSStringWithContextOfTextFileHere]; 
    textFormatter.startPage = 0; 
    textFormatter.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); // 1 inch margins 
    textFormatter.maximumContentWidth = 6 * 72.0; 
    pic.printFormatter = textFormatter; 
    [textFormatter release]; 
    pic.showsPageRange = YES; 

    void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = 
    ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) { 
     if (!completed && error) { 
      NSLog(@"Printing could not complete because of error: %@", error); 
     } 
    }; 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
     [pic presentFromBarButtonItem:sender animated:YES completionHandler:completionHandler]; 
    } else { 
     [pic presentAnimated:YES completionHandler:completionHandler]; 
    } 
} 
1

सबसे पहले, UIPrintInteractionControllerDelegate जोड़ सकते हैं और सभी छवियों को मुद्रित करने के लिए

UIPrintInteractionController *printController; 

कोड नीचे चर बनाने दस्तावेजों, एक्सेल, पावरपॉइंट, पीडीएफ फाइलों मेरे लिए काम करता है:

[self printItem:SomeData withFilePath:YourFilePath]; 

उपर्युक्त कोड में आप अपने दस्तावेज़/छवि औरके NSData प्रदान करते हैं और यूआरएल (filepath) और printItem के आगे नीचे दिए गए कोड: withFilePath: विधि

-(void)printItem :(NSData*)data withFilePath:(NSString*)filePath{ 
printController = [UIPrintInteractionController sharedPrintController]; 
printController.delegate = self; 

UIPrintInfo *printInfo = [UIPrintInfo printInfo]; 
printInfo.outputType = UIPrintInfoOutputGeneral; 
printInfo.jobName = [NSString stringWithFormat:@""]; 
printInfo.duplex = UIPrintInfoDuplexLongEdge; 
printController.printInfo = printInfo; 
printController.showsPageRange = YES; 


//If NSData contains data of image/PDF 
if(printController && [UIPrintInteractionController canPrintData:data]) { 
    printController.printingItem = data; 

}else{ 
    UIWebView* webView = [UIWebView new]; 
    printInfo.jobName = webView.request.URL.absoluteString; 
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:filePath]]]; 

    printController.printFormatter = webView.viewPrintFormatter; 

} 

    void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) { 
     if (!completed && error) { 
      //NSLog(@"FAILED! due to error in domain %@ with error code %u", error.domain, error.code); 
     } 
    }; 

    // Check wether device is iPad/iPhone , because UIPrintInteractionControllerDelegate has different methods for both devices 
    if([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) { 
     [printController presentFromRect:self.view.frame inView:self.view animated:YES completionHandler:completionHandler]; 
    } 
    else { 
     [printController presentAnimated:YES completionHandler:completionHandler]; 
    } 
} 

मुझे आशा है कि यह मदद मिलेगी। धन्यवाद

संबंधित मुद्दे