iphone - Photo Size With UIPrintInteractionController -


i have 1 problem print photo using airprint. printed 4 * 6 inch image printed image size large! how can resolve problem.
can specify paper size , photo programmatically?

here screen shot url.

https://www.dropbox.com/s/1f6wa0waao56zqk/img_0532.jpg

` here code

-(void)printphotowithimage:(uiimage *)image {      nsdata *mydata = uiimagejpegrepresentation(image, 1.f);     uiprintinteractioncontroller *pic = [uiprintinteractioncontroller sharedprintcontroller];      if (pic && [uiprintinteractioncontroller canprintdata:mydata]) {          pic.delegate = self;         uiprintinfo *pinfo = [uiprintinfo printinfo];         pinfo.outputtype = uiprintinfooutputphoto;         pinfo.jobname = @"my photo";         pinfo.duplex = uiprintinfoduplexlongedge;          pic.printinfo = pinfo;         pic.showspagerange = yes;         pic.printingitem = mydata;          pic.printformatter = format;         [format release];          void(^completionhandler)(uiprintinteractioncontroller *, bool, nserror *) = ^(uiprintinteractioncontroller *print, bool completed, nserror *error) {              [self resignfirstresponder];              if (!completed && error) {                 nslog(@"--- print error! ---");             }         };          [pic presentfromrect:cgrectmake((self.view.bounds.size.width - 64) + 27, (self.view.bounds.size.height - 16) + 55, 0, 0) inview:self.view animated:yes completionhandler:completionhandler];     } }  - (uiprintpaper *)printinteractioncontroller:(uiprintinteractioncontroller *)printinteractioncontroller choosepaper:(nsarray *)paperlist {     cgsize pagesize = cgsizemake(6 * 72, 4 * 72);     return [uiprintpaper bestpaperforpagesize:pagesize withpapersfromarray:paperlist]; } 

just code. should use uiprintpagerenderer property give draw area?

`

first should set

 /*  printphotopagerenderer *pagerenderer = [[printphotopagerenderer alloc]init];     pagerenderer.imagetoprint =image;     pic.printpagerenderer = pagerenderer; */  - (void)printimage { // obtain shared uiprintinteractioncontroller uiprintinteractioncontroller *controller = [uiprintinteractioncontroller     sharedprintcontroller]; controller.delegate = self; if(!controller){     nslog(@"couldn't shared uiprintinteractioncontroller!");     return; }  // need completion handler block printing. uiprintinteractioncompletionhandler completionhandler = ^(uiprintinteractioncontroller     *printcontroller, bool completed, nserror *error) {     if(completed && error)         nslog(@"failed! due error in domain %@ error code %u", error.domain,     error.code); };  // obtain printinfo can set our printing defaults. uiprintinfo *printinfo = [uiprintinfo printinfo]; uiimage *image = ((uiimageview *)self.view).image; [controller setdelegate:self];   printinfo.outputtype = uiprintinfooutputphoto;  if(!controller.printingitem && image.size.width > image.size.height)     printinfo.orientation = uiprintinfoorientationlandscape;  // use printinfo print job. controller.printinfo = printinfo;  //  since code below relies on printingitem being 0 if hasn't //  been set, code sets nil. controller.printingitem = nil;   #if direct_submission // use url of image asset. if(self.imageurl && [uiprintinteractioncontroller canprinturl:self.imageurl])     controller.printingitem = self.imageurl; #endif  // if aren't doing direct submission of image or reason don't // have alasset or url our image, we'll draw instead. if(!controller.printingitem){     // create instance of our printphotopagerenderer class use     // printpagerenderer print job.     printphotopagerenderer *pagerenderer = [[printphotopagerenderer alloc]init];     // printphotopagerenderer subclass needs image draw. if taking     // path use original image , not fullscreenimage obtained     // alassetrepresentation.     //pagerenderer.imagetoprint = ((uiimageview *)self.view).image;     pagerenderer.imagetoprint =image;     controller.printpagerenderer = pagerenderer; }  // method use presenting printing ui depends on type of // ui idiom executing. once invoke 1 of these methods // present printing ui, our application's direct involvement in printing // complete. our delegate methods (if any) , page renderer methods (if any) // invoked uikit. if (ui_user_interface_idiom() == uiuserinterfaceidiompad) {     //[controller presentfrombarbuttonitem:self.printbutton animated:yes     completionhandler:completionhandler];  // ipad      [controller presentfromrect:cgrectmake(0, 0, 50, 50) inview:_btnprint animated:yes     completionhandler:completionhandler]; }else     [controller presentanimated:yes completionhandler:completionhandler];  // iphone  } 

and should set printphotopagerenderer

uiprintpagerenderer.h

    #import <uikit/uikit.h>   @interface printphotopagerenderer : uiprintpagerenderer {   uiimage *imagetoprint; }  @property (readwrite, retain) uiimage *imagetoprint;  @end  // 

printphotopagerenderer.m

 #import "printphotopagerenderer.h"  @implementation printphotopagerenderer  @synthesize imagetoprint;  // code draws 1 image @ print time. -(nsinteger)numberofpages {   return 1; }  /*  when using uiprintpagerenderer subclass draw photo @ print     time, app explicitly draws content , need override     drawpageatindex:inrect: accomplish that.      following scaling algorithm implemented here:     1) on borderless paper, users expect see content scaled there             no whitespace @ edge of paper. code scales content  fill paper @ expense of clipping content lies off paper.     2) on paper not borderless, code scales content fills    paper. reduces size of photo not clip content. */ - (void)drawpageatindex:(nsinteger)pageindex inrect:(cgrect)printablerect {        if(self.imagetoprint){        cgsize finialsize =  cgsizemake(560, 431);//you should set width , height self        int x  =  20;        int y = (printablerect.size.height - finialsize.height);        cgrect finalrect = cgrectmake(x, y, finialsize.width, finialsize.height);      [self.imagetoprint drawinrect:finalrect];           }else {     nslog(@"%s no image draw!", __func__);   } }  @end 

Comments

Popular posts from this blog

php - mySql Join with 4 tables -

css - Text drops down with smaller window -

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -