2011-10-04 13 views
6

Sto stampando un UIImage utilizzando AirPrint ma i margini non sono corretti. Questo è quello che sembra quando stampa:
Photo of printoutStampa di UIImage usando AirPrint causa il contenuto interrotto

C'è un modo per adattarlo perfettamente alla carta?

Ecco il codice come richiesto:

UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController]; 
    //pic.delegate = del; 

    UIPrintInfo *printInfo = [UIPrintInfo printInfo]; 
    printInfo.outputType = UIPrintInfoOutputGeneral; 
    printInfo.jobName = [NSString stringWithFormat:@"New Ticket"]; 
    pic.printInfo = printInfo; 


    pic.printingItem = [UIImage imageWithContentsOfFile:path]; 

    void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = 
    ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) { 
     if (!completed && error) { 
      UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"Error." 
                message:[NSString stringWithFormat:@"An error occured while printing: %@", error] 
                delegate:nil 
             cancelButtonTitle:@"OK" 
             otherButtonTitles:nil, nil]; 

      [av show]; 
      [av release]; 
     } 
    }; 

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

Probabilmente hai bisogno di mostrarci il tuo codice. –

+0

aggiornato con il codice. – 0xSina

+0

Se si stampa 'UIImmagine', perché non si imposta' printInfo.outputType' su 'UIPrintInfoOutputPhoto' invece di' UIPrintInfoOutputGeneral'? –

risposta

0

La cosa migliore è probabilmente quello di scalare l'immagine fino alla ratio dell'immagine stampata, in questo modo si può vedere il tutto sulla pagina.

Ci sono diversi modi per farlo, quindi ti dirò semplicemente come lo farei. Mantengo una classe chiamata ANImageBitmapRep che presenta diversi tipi di ridimensionamento dell'immagine. Il tipo di ridimensionamento che desideri mantiene l'intera immagine, ma la centra all'interno di un rettangolo di una certa dimensione. In primo luogo, è necessario aggiungere i file di origine ANImageBitmapRep al progetto, e #import ANImageBitmapRep.h:

#import "ANImageBitmapRep.h" 

Poi, scalare l'immagine in questo modo:

pic.printingItem = [[UIImage imageWithContentsOfFile:path] imageFittingFrame:CGSizeMake(478, 640)]; 

è possibile modificare la CGSizeMake(x, y) a qualunque cosa tu voglia, per regolare la scala e la risoluzione dell'immagine in scala.

+0

Ciao, ho lo stesso problema. http://stackoverflow.com/questions/11578013/printing-uiimage-using-epos-sdk – jongbanaag

+0

solo per aggiungere se OxSina ha avuto problemi per quanto riguarda il contenuto è troppo grande penso che il mio dovrebbe essere imageFillingFrame ma ho una domanda se vorrei dipendere sull'immagine.size.height l'altezza del risultato stampato sarà piccola e non sufficiente a coprire il contenuto lungo. qualche idea? Grazie – jongbanaag

Problemi correlati