技术文

iOS 打印 AirPrint无线打印

2016-06-16  本文已影响1077人  coordinator

主要功能:使用iPhone、PC连接同一个WiFi,iPhone 上App有打印功能,点击打印,实现打印文档功能。接下来我们就聊聊如何实现手机打印功能。

33.jpg
硬件配置:
此处用了一个iPhone真机,Windows7系统电脑,任意品牌打印机,WiFi环境。
Windows电脑安装打印机驱动,网上自行百度安装打印机驱动,再下载最新版本的iTunes。
打印机设置为共享,步骤:开始->设备和打印机->鼠标选中打印机右键->打印机属性->共享,在共享这台打印机前面打对勾。
下载AirPrint服务安装配置软件包,点我下载,解压下载文件,以管理员身份运行“AirPrint_Installer.exe”,点击“Install AirPrint Service”按钮(如图)。 1.png
  还是解压的文件夹里,双击“AirPrint iOS 5 FIX-32Bit.reg” (如果是64位系统则运行“AirPrint iOS 5 FIX-64Bit.reg”)注册表文件。
  回到AirPrint_Installer.exe安装步骤界面,在右侧“AirPrint Auth”下方选择“AirPrint”,“username”自动生成的,下面的“password”可以自己设置一个密码(该密码在手机端需要输入),下方的“Allow Blank Password(允许密码为空)”和“Enable Guest Account(允许来宾帐户)”选项不要打钩,点击“Update”按钮(如下图)。
3.png

将“Service Startup”选项设置为“Auto”,点击Start按钮,重启电脑。
电脑端配置就完成了。

上代码:
iOS4.2以后系统自带打印功能,这里做一个简单的打印功能。
首先,需要遵守协议:UIPrintInteractionControllerDelegate

//   打印按钮点击事件调用 UIPrintInteractionController
- (IBAction)printAction:(UIButton *)sender {
    
    UIPrintInteractionController *printController = [UIPrintInteractionController sharedPrintController];
    
    if(printController)
    {
        
        printController.delegate = self;
        
        UIPrintInfo *printInfo = [UIPrintInfo printInfo];
        printInfo.jobName = @"Preview";
        
        printInfo.orientation = UIPrintInfoOrientationPortrait;
        
        printInfo.outputType = UIPrintInfoOutputGrayscale;
        
        printController.showsPageRange = YES;
        printController.printInfo = printInfo;
//       self.printView 自己放的一个UIView的对象
        printController.printingItem = [ViewController imageWithView:self.printView];
//        返回打印结果
        void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
            if (!completed && error)
            {
                NSLog(@"PRINT FAILED: %@", [error description]);
            }
        };

        [printController presentAnimated:YES completionHandler:completionHandler];
    }
}

//  airPrint只能打印图片或PDF文件,故而此处返回一个图片
+ (UIImage *) imageWithView:(UIView *)view
{
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
    
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    
    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    
    return img;
}

  demo完成后在真机上运行,手机和PC连接同一个WiFi环境,点击App里的打印按钮,将跳转到打印选项里,此处会让你输入账号和密码(我在此处遇到坑,刚开始配的Guest的服务项,用户名和密码一直输入不正确,坑啊!),输入之前配置的“AirPrint Auth”的用户名“AirPrint”和密码就可以了。
  经验不足,如有错误还请各位大神指正。
上一篇下一篇

猜你喜欢

热点阅读