日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

使用IOS AirPrint實現打印功能詳解

瀏覽:117日期:2022-09-16 17:35:50
內容1.什么是AirPrint

其實就是將iOS(iphone,ipad)上的內容,使用支持AirPrint的打印機打印出來。打印過程無線控制, 非常方便。

2.第一手資料

學習iOS, 第一手資料肯定非蘋果官方文檔莫屬.here。 (我下面敘述的內容基本上是對文檔的總結, 英語可以的建議直接看文檔。。。)

3.Printer Simulator,使用打印模擬器進行測試

既然涉及打印功能,那么就需要有一臺支持AirPrint 功能的打印機進行測試嘍,你沒有?沒關系!蘋果已經為我們準備好了模擬器。 這個模擬器在Xcode中沒有, 需要自己到官網下載

使用IOS AirPrint實現打印功能詳解

打印模擬器位置

4.了解一下AirPrint可以打印的內容 an array of ready-to-print images and PDF documents: 一組圖片文件和PDF文件。 a single image or PDF document: 一張圖片或是一個pdf文件。、 an instance of any of the built-in print formatter classes: 打印格式化者的實例。(簡單文本,html文檔,某些View顯示的內容)。 a custom page renderer: 自定義頁渲染者。5.關于AirPrint的API

AirPrint的api包含 eight classes and one protocol。 下圖是它們之間的關系。(下面這張圖明白了, 那你基本就掌握了)。

使用IOS AirPrint實現打印功能詳解

AirPrint相關類

UIPrintInteractionController 屬性:

UIPrintInfo *printInfo: 打印任務的信息。 UIPrintPaper * printPaper : 打印內容的區域。 delegate: 遵守UIPrintInteractionControllerDelegate 協議的代理。 最重要的就是制定需要打印的內容: printingItem , printingItems, printFormatter, printPageRenderer。 四個屬性都是用來指定要打印的內容的。 這四個參數是互斥的, 也就是說只要一個賦值, 其他三個參數就得是nil. 很容易理解,一個打印任務, 不能同時干多個活呀。 這里如果使用 swift的枚舉,就很容易理解了。

使用IOS AirPrint實現打印功能詳解

需要打印的內容與相應參數的對應方式

6.打印流程 創建 UIPrintInteractionController 實例。 創建UIPrintInfo 實例。 并 配置參數 output type(輸出類型), print orientation(打印方向), job name(打印工作標識), 然后賦值給UIPrintInteractionController 實例的 printInfo屬性。 給delegate 屬性賦值, 賦的值必須遵守 UIPrintInteractionControllerDelegate 協議。 這個代理可以 響應 printing options界面的顯示和消失, 打印工作的開始和結束 等。 指定要打印的內容。 也就是指定 printingItem , printingItems, printFormatter, printPageRenderer. 參數的其中一個。 當你使用 printPageRenderer. 時情況會復雜一些。 你可以繪制每一頁的header, footer, 內容。 這是你需要自己計算頁數。 另外, 你也可以創建一個或多個 UIPrintFormatter實例, 通過 addPrintFormatter:startingAtPageAtIndex: 或者 printFormatters參數 賦值給 printPageRenderer.實例。 這種情況下不需要自己計算多少頁。 最后就是顯示顯示出printing options 界面了。 方法:

在iPad上: presentFromBarButtonItem:animated:completionHandler:

或者 presentFromRect:inView:animated:completionHandler:;

在手機上: presentAnimated:completionHandler:

說了這么多, 理論知識就介紹的差不多了, 下面通過代碼演示具體實現。

7.Printing Printer-Ready Content (打印準備好的內容)

AirPrint可以直接打印一些內容。 這些內容是 NSData, NSURL, UIImage, and ALAsset 類的實例, 但是這些實例的內容, 或者引用的類型(NSURL)必須是 image 或者pdf.

對于 image來說, NSData, NSURL, UIImage, and ALAsset 類型都可以的。 對于PDF, 只能使用 NSData, NSURL。 然后需要將這些數據實例直接賦值 給 UIPrintInteractionController實例的 printingItem 或者 printingItems 屬性。

打印pdf:

- (IBAction)printContent:(id)sender { UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController]; if (pic && [UIPrintInteractionController canPrintData: self.myPDFData] ) { pic.delegate = self;   UIPrintInfo *printInfo = [UIPrintInfo printInfo]; printInfo.outputType = UIPrintInfoOutputGeneral; printInfo.jobName = [self.path lastPathComponent]; printInfo.duplex = UIPrintInfoDuplexLongEdge; pic.printInfo = printInfo; pic.showsPageRange = YES; pic.printingItem = self.myPDFData;   void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *pic, BOOL completed, NSError *error) { self.content = nil; 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]; }}

通過在iPhone上測試, 顯示出的全部是英文的,不要擔心, 因為這是系統的控件,也就是說系統會自動幫你作國際化處理,你不用作任何事情!你唯一要作的事???將Info.plist文件中的第一項 Localization native development region(CFBundleDevelopmentRegion)的值設為 China(zh_CN);

使用IOS AirPrint實現打印功能詳解

Printer Options顯示英文

使用IOS AirPrint實現打印功能詳解

將英文修改成中文

8.Using Print Formatters (打印格式化者)

系統提供了三個 Print Formatters類, 分別是:

UIViewPrintFormatter—automatically lays out the content of a view over multiple pages. To obtain a print formatter for a view, call the view’s viewPrintFormatter method. Not all built-in UIKit classes support printing. Currently, only the view classes UIWebView, UITextView, and MKMapView know how to draw their contents for printing. View formatters should not be used for printing your own custom views. To print the contents of a custom view, use a UIPrintPageRenderer instead. UISimpleTextPrintFormatter—automatically draws and lays out plain-text documents. This formatter allows you to set global properties for the text, such a font, color, alignment, and line-break mode. UIMarkupTextPrintFormatter—automatically draws and lays out HTML documents.

英文介紹已經很詳細了, 就不??鋁耍 直接展示出打印HTML文檔的代碼:

- (IBAction)printContent:(id)sender { UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController]; pic.delegate = self;   UIPrintInfo *printInfo = [UIPrintInfo printInfo]; printInfo.outputType = UIPrintInfoOutputGeneral; printInfo.jobName = self.documentName; pic.printInfo = printInfo;   UIMarkupTextPrintFormatter *htmlFormatter = [[UIMarkupTextPrintFormatter alloc] initWithMarkupText:self.htmlString]; htmlFormatter.startPage = 0; htmlFormatter.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); // 1 inch margins pic.printFormatter = htmlFormatter; pic.showsPageRange = YES;   void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) { if (!completed && error) { NSLog(@'Printing could not complete because of error: %@', error); } }; if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { [pic presentFromBarButtonItem:sender animated:YES completionHandler:completionHandler]; } else { [pic presentAnimated:YES completionHandler:completionHandler]; }}

將UIWebView 界面上顯示的內容打印出來。

- (void)printWebPage:(id)sender { UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController]; void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) { if(!completed && error){ NSLog(@'FAILED! due to error in domain %@ with error code %u', error.domain, error.code); } }; UIPrintInfo *printInfo = [UIPrintInfo printInfo]; printInfo.outputType = UIPrintInfoOutputGeneral; printInfo.jobName = [urlField text]; printInfo.duplex = UIPrintInfoDuplexLongEdge; controller.printInfo = printInfo; controller.showsPageRange = YES;   UIViewPrintFormatter *viewFormatter = [self.myWebView viewPrintFormatter]; viewFormatter.startPage = 0; controller.printFormatter = viewFormatter;   if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { [controller presentFromBarButtonItem:printButton animated:YES completionHandler:completionHandler]; }else [controller presentAnimated:YES completionHandler:completionHandler];}9.Using a Page Renderer(頁渲染器)

這部分內容是最復雜的了, 感覺不怎么用,暫且不深究了, 大家如果項目需要, 自己看文檔吧。

以上就是使用IOS AirPrint實現打印功能詳解的詳細內容,更多關于IOS AirPrint打印功能的資料請關注好吧啦網其它相關文章!

標簽: IOS
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产91在线播放精品| 国产va在线视频| 首页国产欧美日韩丝袜| 亚洲字幕久久| 国产毛片久久久| 久久精品国产久精国产爱| 91嫩草亚洲精品| 国产在线观看91一区二区三区| 日韩.com| 欧美日韩激情| 亚洲最大av| 国产精品高清一区二区| 日韩欧美一区二区三区在线观看 | 日韩成人亚洲| 性欧美精品高清| 91成人在线精品视频| 国产一区二区三区四区大秀| 久久黄色影院| 综合一区二区三区| 日韩av免费大片| 在线 亚洲欧美在线综合一区| 午夜性色一区二区三区免费视频| 精品国产午夜| 午夜欧美精品| 日韩精品久久久久久| 精品三区视频| 欧美日韩国产高清| 国产欧美欧美| 99久久99久久精品国产片果冰| 日本在线观看不卡视频| 精品高清久久| 日韩在线播放一区二区| 精品视频免费| 好看的亚洲午夜视频在线| 国产精品igao视频网网址不卡日韩 | 欧美激情精品| 午夜久久福利| 卡一精品卡二卡三网站乱码| 亚洲精品888| 麻豆精品在线视频| 视频一区欧美日韩| 麻豆久久一区| 中文字幕一区二区三区在线视频| 国产精品66| 奶水喷射视频一区| 欧美国产小视频| 婷婷成人av| 精品在线91| 欧美黄色精品| 亚洲人成亚洲精品| 久久精品亚洲人成影院| 麻豆精品在线播放| 蜜臀91精品一区二区三区| 欧美成人基地| 精品美女视频| 日韩激情精品| 99国产精品自拍| 91亚洲自偷观看高清| 亚洲深深色噜噜狠狠爱网站| 国产自产自拍视频在线观看| 久久精品99久久久| 视频一区在线视频| 精品一区亚洲| 日韩在线观看不卡| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 国产 日韩 欧美一区| 国产精品美女久久久久久不卡| 午夜一区在线| 欧美日韩国产观看视频| 欧美亚洲色图校园春色| 另类国产ts人妖高潮视频| 免费不卡中文字幕在线| 伊人久久高清| av资源中文在线| 久久精品国产99国产| 国产欧美日韩一区二区三区在线| 亚洲一二av| 免费不卡在线视频| 99国内精品| 蜜桃国内精品久久久久软件9| 四季av一区二区凹凸精品| 麻豆一区二区三| 国产三级精品三级在线观看国产| 亚洲一区二区免费在线观看| 国产毛片一区| 午夜欧美理论片| 激情六月综合| 在线日韩中文| 999精品在线| 少妇久久久久| 久久精品导航| 蜜桃精品在线| 日韩av首页| 成人va天堂| 久久久久国产精品一区二区| 成人日韩在线| 欧美日韩在线二区| 久久免费国产| av高清不卡| 四虎4545www国产精品| 久久精品国产大片免费观看| 天堂日韩电影| 99精品电影| 欧美成人国产| 91成人网在线观看| 在线视频精品| 天堂成人国产精品一区| 综合欧美亚洲| 日本中文字幕不卡| 日韩1区2区3区| 日本成人手机在线| 欧美日韩一区二区三区在线电影| 国产精品久久国产愉拍| 国产精品成人国产| 日韩av在线播放网址| 日韩不卡在线| 在线亚洲观看| 亚洲精品欧洲| 国产精品久久久久久久免费软件| 国产在线一区不卡| 亚洲精品88| 伊人精品一区| 蜜桃视频第一区免费观看| 日韩福利在线观看| 麻豆高清免费国产一区| 国产一区调教| 波多野结衣一区| 亚洲毛片视频| 国产精品亚洲综合在线观看| 国产一区二区三区四区二区| 激情视频一区二区三区| 日韩一区精品字幕| 国产精品一区高清| 国内在线观看一区二区三区| 99久久99久久精品国产片果冰| 亚洲色诱最新| 久久精品xxxxx| 欧美日韩精品免费观看视完整| 日韩午夜电影| 国产日韩欧美一区在线| 国产福利电影在线播放| 在线综合欧美| 国产精品igao视频网网址不卡日韩| 国产一区二区精品福利地址| 91久久国产| 国产视频网站一区二区三区| yellow在线观看网址| 久久亚洲视频| 国内在线观看一区二区三区| 亚洲色诱最新| 国产极品嫩模在线观看91精品| 久久天堂成人| 日韩成人午夜精品| 日韩欧美不卡| 日韩在线网址| 日韩欧美午夜| 日韩不卡手机在线v区| 亚洲精品一区三区三区在线观看| 亚洲一区二区三区四区电影| 欧美激情国产在线| 亚洲人成毛片在线播放女女| 精品久久久中文字幕| 欧美专区在线| 精品国产一区二| 国产农村妇女精品一二区 | 精品国产亚洲一区二区三区在线| 黄色日韩在线| 久久亚洲道色| 亚洲一卡久久| 精品国产不卡一区二区| 亚洲黄页一区| 久久一区精品| 一区免费视频| 精品免费在线| 亚欧洲精品视频在线观看| 久久久人人人| 久久99青青| 综合欧美精品| 亚洲午夜在线| 国产精品18| 精品久久国产一区| 综合激情网...| 91精品一区国产高清在线gif| 国产精品美女久久久久久不卡| 国产亚洲在线| 国产自产自拍视频在线观看| 91成人福利| 国产精品外国| 深夜视频一区二区| 精品一区二区三区中文字幕 | 一区二区电影| 激情综合网址| 国产成年精品| 国产亚洲一区| 丝瓜av网站精品一区二区 | 日韩不卡在线| 久久精品网址| 天堂av一区| 丝袜美腿亚洲色图| 免费观看久久av|