美文网首页技术文
iOS 打印 AirPrint无线打印

iOS 打印 AirPrint无线打印

作者: coordinator | 来源:发表于2016-06-16 09:57 被阅读1077次

    主要功能:使用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”和密码就可以了。
      经验不足,如有错误还请各位大神指正。

    相关文章

      网友评论

        本文标题:iOS 打印 AirPrint无线打印

        本文链接:https://www.haomeiwen.com/subject/vdlpdttx.html