AirPrint 是可以讓應(yīng)用軟件通過 Apple 的無驅(qū)動(dòng)程序打印體系結(jié)構(gòu),創(chuàng)建無損打印輸出的 Apple 技術(shù)。所有支持打印的 iOS 內(nèi)建 app 均使用 AirPrint。
下面是使用AirPrint的例子,首先要使類實(shí)現(xiàn)協(xié)議 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]) {
//準(zhǔn)備打印信息以預(yù)設(shè)值初始化的對(duì)象。
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
//設(shè)置輸出類型。
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(@"可能無法完成,因?yàn)橛∷㈠e(cuò)誤: %@", error);
}
};
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
//調(diào)用方法的時(shí)候,要注意參數(shù)的類型-下面presentFromBarButtonItem:的參數(shù)類型是 UIBarButtonItem..如果你是在系統(tǒng)的UIToolbar or UINavigationItem上放的一個(gè)打印button,就不需要轉(zhuǎn)換了。
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:sender];
//在ipad上彈出打印那個(gè)頁面
[printC presentFromBarButtonItem:item animated:YES completionHandler:completionHandler];
} else {
//在iPhone上彈出打印那個(gè)頁面
[printC presentAnimated:YES completionHandler:completionHandler];
}
}
}
打印網(wǎng)頁
// 打印網(wǎng)頁
__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
{
//獲取當(dāng)前網(wǎng)頁的url
_currentURL = nowWebView.request.URL.absoluteString;
//顯示出打印的用戶界面。
UIPrintInteractionController *printC = [UIPrintInteractionController sharedPrintController];
printC.delegate = self;
//準(zhǔn)備打印信息以預(yù)設(shè)值初始化的對(duì)象。
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
//設(shè)置輸出類型。
printInfo.outputType = UIPrintInfoOutputGeneral;
printC.showsPageRange = YES;//顯示的頁面范圍
//打印網(wǎng)頁
[nowWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.currentURL]]];
//布局打印視圖繪制的內(nèi)容。
printC.printFormatter = [nowWebView viewPrintFormatter];
//等待完成
void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
if (!completed && error) {
NSLog(@"可能無法完成,因?yàn)橛∷㈠e(cuò)誤: %@", error);
}
};
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
//調(diào)用方法的時(shí)候,要注意參數(shù)的類型-下面presentFromBarButtonItem:的參數(shù)類型是 UIBarButtonItem..如果你是在系統(tǒng)的UIToolbar or UINavigationItem上放的一個(gè)打印button,就不需要轉(zhuǎn)換了。
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:sender];
//在ipad上彈出打印那個(gè)頁面
[printC presentFromBarButtonItem:item animated:YES completionHandler:completionHandler];
//第二種方法 在ipad上彈出打印那個(gè)頁面
//[printC presentFromRect:CGRectMake(500, 500, 100, 200) inView:self.webView animated:YES completionHandler:completionHandler];
} else {
[printC presentAnimated:YES completionHandler:completionHandler];//在iPhone上彈出打印那個(gè)頁面
}
}
打印文本
__weak IBOutlet UITextField *_textTF;
- (IBAction)onPtintBtn:(id)sender
{
if (_textTF.text.length <= 0) {
return;
}
//顯示出打印的用戶界面。
UIPrintInteractionController *printC = [UIPrintInteractionController sharedPrintController];
printC.delegate = self;
//準(zhǔn)備打印信息以預(yù)設(shè)值初始化的對(duì)象。
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
//設(shè)置輸出類型。
printInfo.outputType = UIPrintInfoOutputGeneral;
printC.showsPageRange = YES;//顯示的頁面范圍
//打印文本
UISimpleTextPrintFormatter *textFormatter = [[UISimpleTextPrintFormatter alloc]
initWithText:_textTF.text];
textFormatter.startPage = 0;
// 插入內(nèi)容頁的邊緣 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(@"可能無法完成,因?yàn)橛∷㈠e(cuò)誤: %@", error);
}
};
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
//調(diào)用方法的時(shí)候,要注意參數(shù)的類型-下面presentFromBarButtonItem:的參數(shù)類型是 UIBarButtonItem..如果你是在系統(tǒng)的UIToolbar or UINavigationItem上放的一個(gè)打印button,就不需要轉(zhuǎn)換了。
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:sender];
//在ipad上彈出打印那個(gè)頁面
[printC presentFromBarButtonItem:item animated:YES completionHandler:completionHandler];
} else {
//在iPhone上彈出打印那個(gè)頁面
[printC presentAnimated:YES completionHandler:completionHandler];
}
}
參考文檔
http://www.2cto.com/kf/201310/252437.html
end:小編是很認(rèn)真的寫文哦,如果小編的文對(duì)您有用,一定要點(diǎn)“喜歡”哦!如果有問題歡迎評(píng)論