2011-07-28 4 views
0

J'ai ce code:IOS: Format NSString

NSString *firstString = [[NSString stringWithFormat:@"%@",stringToWrite] stringByPaddingToLength:40 withString:@" " startingAtIndex:0]; 
    NSString *finallyString = @""; 
    finallyString = [firstString stringByAppendingString:secondString]; 

avec ce code, j'ai un formatage de texte de ma chaîne avec deux colonnes, mais quand j'imprime ces cordes avec la méthode AirPrint ils ont perdu cette mise en forme de texte. Pourquoi dans NSLog tout est ok et quand j'imprime dans un papier il a perdu le formatage du texte?

Code de l'impression:

NSMutableString *printHead = [NSMutableString stringWithFormat:@"%@", @"words"]; 
for (int i = 0; i<myArray.count; i++) 
{ 
    [printHead appendFormat:@"\n\n\n"]; 
    NSString *stringToWrite = [[myArray objectAtIndex:i]objectAtIndex:0]; 
    NSString *firstString = [[NSString stringWithFormat:@"%@",stringToWrite] stringByPaddingToLength:40 withString:@" " startingAtIndex:0]; 
    NSString *finallyString = @""; 
    finallyString = [firstString stringByAppendingString:[[myArray objectAtIndex:i]objectAtIndex:1]]; 
    [printHead appendString:finallyString]; 
    } 
UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController]; 
pic.delegate = self; 

UIPrintInfo *printInfo = [UIPrintInfo printInfo]; 
printInfo.outputType = UIPrintInfoOutputGeneral; 
pic.printInfo = printInfo; 

UISimpleTextPrintFormatter *textFormatter = [[UISimpleTextPrintFormatter alloc] initWithText:printHead]; 
textFormatter.startPage = 0; 
//textFormatter.color = [UIColor redColor]; 
textFormatter.contentInsets = UIEdgeInsetsMake(30.0, 30.0, 72.0, 72.0); // 1 inch margins 
textFormatter.maximumContentWidth = 8 * 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); 
    } 
}; 

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

de quelle police est-il en train d'être imprimé? – Mark

+0

quel est le code pour l'impression? peut-être quelque chose manque, il –

+0

ok je changer mon post – CrazyDev

Répondre

0

NSLog() n'est pas quelque chose que vous devez compter sur la mise en forme. Si vous souhaitez que votre texte apparaisse d'une certaine manière lors de l'impression, vous devez le dessiner dans une vue. Si vous souhaitez que la vue soit différente lors de l'impression par rapport à son aspect à l'écran, implémentez -drawRect:forViewPrintFormatter: pour dessiner la version imprimée.

+0

ok mais je ne veux pas voir la vue dans mon application, où puis-je mettre ce point de vue où je vais écrire mon texte formaté? – CrazyDev

+0

Je ne comprends pas, pouvez-vous expliquer votre réponse? – CrazyDev

+0

Je peux me tromper, mais je ne pense pas qu'une vue doit être ajoutée à une fenêtre pour être imprimable. Jetez un oeil à UIViewPrintFormatter. – Caleb