airprint相关

   UIGraphicsBeginImageContextWithOpti*****(self.view.bounds.size, YES, 0.0);
    //[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *uiImage = UIGraphicsGetImageFromCurrentImageContext();
    //NSString *path = [[NSBundle mainBundle] pathForResource:@"icon" ofType:@"png"];
    //NSData *data = [NSData dataWithContentsOfFile: path];
    NSData *imageData=UIImagePNGRepresentation(uiImage);
    UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];
    
    if  (pic && [UIPrintInteractionController canPrintData: imageData] ) {
        pic.delegate = self;
        UIPrintInfo *printInfo = [UIPrintInfo printInfo];
        printInfo.outputType = UIPrintInfoOutputGeneral;
        printInfo.jobName = @"abc";
        printInfo.duplex = UIPrintInfoDuplexLongEdge;
        pic.printInfo = printInfo;
        pic.showsPageRange = YES;
        pic.printingItem = imageData;
        
        void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *pic, BOOL completed, NSError *error) {        
            if (!completed && error)
                NSLog(@"FAILED! due to error in domain %@ with error code %u",error.domain, error.code);
        };
        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
            [pic presentFromRect:CGRectMake(670,145,0,0) inView:self.view animated:YES completionHandler:completionHandler];
        } else {
            [pic presentAnimated:YES completionHandler:completionHandler];
        }
    }
    UIGraphicsEndImageContext();


好了,我的思路基本上就是这样了,先把当前屏幕截屏,然后再转为NSData数据,再通过UIPrintInteractionController来打印。

我是第一次弄这种东西啊,起码能找到打印机并且打印我已经很开心了。

(以上内容,可能不正确)


在自己的应用里加入AirPrint(苹果无线打印)功能   

    NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"jpg"];
    NSData *data = [NSData dataWithContentsOfFile: path];
    
    UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];
        
    if  (pic && [UIPrintInteractionController canPrintData: data] ) {
        
        pic.delegate = self;
        
        UIPrintInfo *printInfo = [UIPrintInfo printInfo];
        printInfo.outputType = UIPrintInfoOutputGeneral;
        printInfo.jobName = [path lastPathComponent];
        printInfo.duplex = UIPrintInfoDuplexLongEdge;
        pic.printInfo = printInfo;
        pic.showsPageRange = YES;
        pic.printingItem = data;
        
        void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *pic, BOOL completed, NSError *error) {
        
            if (!completed && error)
                NSLog(@"FAILED! due to error in domain %@ with error code %u",error.domain, error.code);
        };
        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
            [pic presentFromBarButtonItem:self.printButton animated:YES completionHandler:completionHandler];
        } else {
            [pic presentAnimated:YES completionHandler:completionHandler];
        }
    }
碰到个问题 怎么才能打印txt格式文件?能给个思路么
NSString *path = [[NSBundle mainBundle] pathForResource:@"test33" ofType:@"txt"];
 NSData *data = [NSData dataWithContentsOfFile: path];
UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];
NSLog(@"canPrintData = %d", [UIPrintInteractionController canPrintData: data]);
 nslog输出的缺是no!data里面有东西的啊。。。难道要用 canPrintURL?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值