2012-11-13 13 views
8

सरल HTML की कुछ पंक्तियों को मुद्रित करने के लिए UIMarkupTextPrintFormatter का उपयोग करते समय, यह पहले एक खाली पृष्ठ डालता है, फिर पाठ वाला पृष्ठ। अगर मैं showsPageRange = हाँ, अपेक्षा के अनुरूप एक ही पृष्ठ प्रिंट uncommentUIMarkupTextPrintFormatter प्रिंटिंग अतिरिक्त खाली पृष्ठ

- (void) printSomething; 
{ 
    if (![UIPrintInteractionController isPrintingAvailable]) 
     return; 

    NSString* markupText [email protected]"<html><body>THIS IS A TEST</body></html>"; 

    UIMarkupTextPrintFormatter* printFormatter =[ [ [UIMarkupTextPrintFormatter alloc] initWithMarkupText:markupText] autorelease]; 

    UIPrintInteractionController* printInteractionController =[UIPrintInteractionController sharedPrintController]; 
    printInteractionController.printFormatter =printFormatter; 
    printInteractionController.delegate =self; 
    //printInteractionController.showsPageRange =YES;  

    [printInteractionController presentAnimated:YES completionHandler:nil];         
} 

अब, लेकिन UIPrintInteractionController कई सेकंड लेता है प्रकट करने के लिए: के रूप में इस कोड है, और बहुत ही सरल। उपयोगकर्ता को आश्चर्यचकित करने के लिए पर्याप्त है कि ऐप जम गया हो।

UIMarkupTextPrintFormatter डॉक्स राज्य की बहुत पहली पंक्ति "UIMarkupTextPrintFormatter वर्ग के उदाहरण एक मल्टीपेज मुद्रण कार्य के लिए HTML मार्कअप पाठ बाहर रखना"। सामग्री के बावजूद फ़ॉर्मेटर कई पृष्ठों को मुद्रित करता है, तो यह थोड़े पागल हो जाएगा ...

कोई विचार क्या गलत है? अन्य ऐप्स बिना किसी समस्या के ऐसा करते हैं। अग्रिम में धन्यवाद।

+0

आप इस समाधान हो गया? – Hokage

उत्तर

4

मुझे printInteractionController.showsPageRange = NO; के साथ दूसरे रिक्त पृष्ठ की उपस्थिति के साथ एक ही समस्या थी और ऐप्पल उदाहरण here (पृष्ठ 67) मिला। संदेश यह है:

- (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; 
    UIMarkupTextPrintFormatter *htmlFormatter = [[UIMarkupTextPrintFormatter alloc] initWithMarkupText:self.htmlString]; 
    htmlFormatter.startPage = 0; 
    htmlFormatter.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); // 1 inch margins 
    pic.printFormatter = htmlFormatter; 
    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]; 
    } 
} 

यह उदाहरण printInteractionController.showsPageRange = YES; का उपयोग करता है, और ठीक काम करता है, लेकिन अगर

printInteractionController.showsPageRange = NO; के साथ इस लाइन की जगह है, यह अतिरिक्त दूसरा खाली पेज प्रिंट करता है।

तो ऐसा लगता है कि UIMarkupTextPrintFormatter का उपयोग printInteractionController.showsPageRange = YES; के साथ किया जाना है, या यह सिर्फ एक एपीआई बग है।

+0

मेरे पास पहले से ही 'शोपेजेंज' सेट है 'YES' पर सेट है। लेकिन यह अभी भी आखिरी में जोड़ा गया एक अतिरिक्त खाली पृष्ठ प्रिंट कर रहा है। – shashwat

+0

@शशवत, क्या आपने इसे हल किया? – Hokage

6

मैं सही HTML कंकाल होने से इसे हल:

NSString *htmlString = "<!DOCTYPE html><html><head><meta charset='UTF-8'><title>Title</title></head><body>Hello!</body></html>" 
+0

और यह भी, सुनिश्चित करें कि '' के बाद है '' : '<मेटा charset = 'UTF-8'> शीर्षक हैलो ! ' – Kjuly

0

मैं एक ही समस्या है और मैं इसे एचटीएमएल कोड की वजह से किया जा रहा था पता चला

style='page-break-after:always; 
संबंधित मुद्दे