手机连接打印机
2016-08-19 本文已影响81人
滚滚猫
AirPrint 是可以让应用软件通过 Apple 的无驱动程序打印体系结构,创建无损打印输出的 Apple 技术。所有支持打印的 iOS 内建 app 均使用 AirPrint。
下面是使用AirPrint的例子,首先要使类实现协议 UIPrintInteractionControllerDelegate
打印图片
//打印图片
- (IBAction)onPrintImage:(id)sender
{
//显示出打印的用户界面。
UIPrintInteractionController *printC = [UIPrintInteractionController sharedPrintController];
printC.delegate = self;
//需要打印的图片
UIImage *img = [UIImage imageNamed:@"login_bg_480"];
NSData *data = [NSData dataWithData:UIImagePNGRepresentation(img)];
if (printC && [UIPrintInteractionController canPrintData:data]) {
//准备打印信息以预设值初始化的对象。
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
//设置输出类型。
printInfo.outputType = UIPrintInfoOutputGeneral;
printC.showsPageRange = YES;//显示的页面范围
//printInfo.jobName = @"willingseal";
//printC.printInfo = printInfo;
//NSLog(@"printinfo-%@",printC.printInfo);
printC.printingItem = data;
//等待完成
void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
if (!completed && error) {
NSLog(@"可能无法完成,因为印刷错误: %@", error);
}
};
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
//调用方法的时候,要注意参数的类型-下面presentFromBarButtonItem:的参数类型是 UIBarButtonItem..如果你是在系统的UIToolbar or UINavigationItem上放的一个打印button,就不需要转换了。
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:sender];
//在ipad上弹出打印那个页面
[printC presentFromBarButtonItem:item animated:YES completionHandler:completionHandler];
} else {
//在iPhone上弹出打印那个页面
[printC presentAnimated:YES completionHandler:completionHandler];
}
}
}
打印网页
// 打印网页
__weak IBOutlet UIWebView *nowWebView;
NSString *_currentURL;
- (void)viewDidLoad
{
[super viewDidLoad];
//加载webView
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadRevalidatingCacheData timeoutInterval:30];
[nowWebView loadRequest:request];
}
- (IBAction)onPrintBtn:(id)sender
{
//获取当前网页的url
_currentURL = nowWebView.request.URL.absoluteString;
//显示出打印的用户界面。
UIPrintInteractionController *printC = [UIPrintInteractionController sharedPrintController];
printC.delegate = self;
//准备打印信息以预设值初始化的对象。
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
//设置输出类型。
printInfo.outputType = UIPrintInfoOutputGeneral;
printC.showsPageRange = YES;//显示的页面范围
//打印网页
[nowWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.currentURL]]];
//布局打印视图绘制的内容。
printC.printFormatter = [nowWebView viewPrintFormatter];
//等待完成
void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
if (!completed && error) {
NSLog(@"可能无法完成,因为印刷错误: %@", error);
}
};
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
//调用方法的时候,要注意参数的类型-下面presentFromBarButtonItem:的参数类型是 UIBarButtonItem..如果你是在系统的UIToolbar or UINavigationItem上放的一个打印button,就不需要转换了。
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:sender];
//在ipad上弹出打印那个页面
[printC presentFromBarButtonItem:item animated:YES completionHandler:completionHandler];
//第二种方法 在ipad上弹出打印那个页面
//[printC presentFromRect:CGRectMake(500, 500, 100, 200) inView:self.webView animated:YES completionHandler:completionHandler];
} else {
[printC presentAnimated:YES completionHandler:completionHandler];//在iPhone上弹出打印那个页面
}
}
打印文本
__weak IBOutlet UITextField *_textTF;
- (IBAction)onPtintBtn:(id)sender
{
if (_textTF.text.length <= 0) {
return;
}
//显示出打印的用户界面。
UIPrintInteractionController *printC = [UIPrintInteractionController sharedPrintController];
printC.delegate = self;
//准备打印信息以预设值初始化的对象。
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
//设置输出类型。
printInfo.outputType = UIPrintInfoOutputGeneral;
printC.showsPageRange = YES;//显示的页面范围
//打印文本
UISimpleTextPrintFormatter *textFormatter = [[UISimpleTextPrintFormatter alloc]
initWithText:_textTF.text];
textFormatter.startPage = 0;
// 插入内容页的边缘 1 inch margins
textFormatter.contentInsets = UIEdgeInsetsMake(200, 300, 0, 72.0);
textFormatter.maximumContentWidth = 16 * 72.0;//最大范围的宽
printC.printFormatter = textFormatter;
//等待完成
void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
if (!completed && error) {
NSLog(@"可能无法完成,因为印刷错误: %@", error);
}
};
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
//调用方法的时候,要注意参数的类型-下面presentFromBarButtonItem:的参数类型是 UIBarButtonItem..如果你是在系统的UIToolbar or UINavigationItem上放的一个打印button,就不需要转换了。
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:sender];
//在ipad上弹出打印那个页面
[printC presentFromBarButtonItem:item animated:YES completionHandler:completionHandler];
} else {
//在iPhone上弹出打印那个页面
[printC presentAnimated:YES completionHandler:completionHandler];
}
}
参考文档
http://www.2cto.com/kf/201310/252437.html
end:小编是很认真的写文哦,如果小编的文对您有用,一定要点“喜欢”哦!如果有问题欢迎评论