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

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

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

瀏覽:115日期: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久久,三上悠亚国产精品一区二区三区
国产一区二区三区四区二区| 精品国产三区在线| 国语对白精品一区二区| 亚洲激情国产| 日韩精品1区| 欧美经典一区| 欧美一级网址| 亚洲久久视频| 99pao成人国产永久免费视频 | 国产黄色一区| 免费看欧美美女黄的网站| 亚洲成人日韩| 四虎国产精品免费观看| 精品三级av| 国产极品久久久久久久久波多结野| 日本成人精品| 亚洲资源av| 亚洲深夜影院| 亚洲激情黄色| 香蕉久久夜色精品国产| 1024精品一区二区三区| 伊人久久高清| 日韩免费福利视频| 久久精品福利| 精品亚洲免a| 久久精品国产久精国产爱| 国产精品久久久久久久久久妞妞| 日本亚洲三级在线| 老牛影视一区二区三区| 中文字幕一区二区av| 热久久久久久久| 一级欧洲+日本+国产| 不卡一区综合视频| 亚洲一级影院| 日韩视频在线一区二区三区| 日韩网站在线| 欧美精品一区二区三区精品| 欧美精品羞羞答答| 99久久精品网站| 欧美精品一区二区久久| 国产女优一区| 日韩一区精品| 久久国产乱子精品免费女| 国产欧美久久一区二区三区| 国产精品久久久久9999高清| 精品一区二区三区视频在线播放 | 欧美男人天堂| 99久久久久国产精品| 亚洲高清二区| 亚洲一区二区av| 日韩av一区二| 精品久久不卡| 久久亚洲在线| 日韩在线观看一区二区| 亚洲色图国产| 国产日韩亚洲| а√在线中文在线新版| 99久久精品网| 综合激情一区| 日韩激情视频网站| 精品黄色一级片| 成人精品亚洲| 久久av在线| 国产日韩精品视频一区二区三区| 四季av一区二区凹凸精品| 欧美日韩视频网站| 先锋影音久久久| 国产日韩一区二区三区在线 | 在线观看亚洲精品福利片| 国产精品欧美在线观看| 999国产精品永久免费视频app| 黄色亚洲精品| 涩涩涩久久久成人精品| 国产在线视频欧美一区| 婷婷国产精品| 91精品麻豆| 日韩精品免费一区二区三区| 亚洲五月综合| 91亚洲人成网污www| 日韩中文字幕av电影| 久久女人天堂| 久久午夜视频| 天堂中文在线播放| 日本精品另类| 久久激情中文| 91嫩草精品| 久久久天天操| 国产精品美女久久久浪潮软件| 国产精品免费99久久久| 久久久国产精品一区二区中文| 亚洲综合婷婷| 国产在线观看www| 日韩精品91亚洲二区在线观看| 欧美gv在线| 精品国产aⅴ| 欧美久久亚洲| 天堂精品久久久久| 亚洲在线国产日韩欧美| 亚洲高清av| 99视频精品全国免费| 高清不卡一区| 精品资源在线| 日韩av黄色在线| 中文视频一区| 老司机精品久久| 伊人精品视频| 久久中文字幕av一区二区不卡| 鲁鲁在线中文| 国产精品不卡| 国产在线日韩精品| 精品少妇av| 精品无人区麻豆乱码久久久| 美日韩一区二区三区| 国产精品探花在线观看| 国产日韩一区二区三区在线| 欧美亚洲免费| 国产免费播放一区二区| 欧美一级全黄| 欧美亚洲色图校园春色| 欧美啪啪一区| 国产精品**亚洲精品| 国产精品久久久网站| 国产精品视频一区二区三区综合| 欧美日韩一区自拍| 国产麻豆一区二区三区精品视频| 97久久亚洲| 国产精品尤物| 久久久久九九精品影院| 久久这里只有| 国产精品精品国产一区二区| 色一区二区三区| 久久中文字幕av一区二区不卡| 午夜精品久久久久久久久久蜜桃| 桃色一区二区| 亚洲大全视频| 国产精品普通话对白| 久久高清国产| 亚洲ww精品| 国产精一区二区| 国内一区二区三区| 91精品一区二区三区综合| 亚洲免费成人| 天堂va在线高清一区| 国产亚洲精aa在线看| 精品视频国产| 久久久久久久久久久妇女| 亚洲深夜av| 日本精品在线播放| 欧美激情视频一区二区三区免费| 精品一区二区三区中文字幕| 日本а中文在线天堂| 欧美中文字幕一区二区| 日本欧美在线看| 国产亚洲电影| 成人片免费看| 日韩视频免费| 日韩精品亚洲专区在线观看| 美女精品一区二区| 色婷婷狠狠五月综合天色拍| 国产一区91| 国产亚洲电影| 丝袜av一区| 五月国产精品| 国产一区2区| 国产视频一区三区| 久久精品xxxxx| 九九色在线视频| 亚洲三级精品| 国产成人久久精品一区二区三区| 亚洲国产一区二区三区在线播放| 视频国产精品| 91亚洲一区| 免费不卡在线视频| 丝袜美腿亚洲一区| 久久国产精品美女| 欧美高清一区| 国产亚洲精品美女久久| av在线最新| 蜜桃91丨九色丨蝌蚪91桃色| 国产黄色一区| 99亚洲精品| 久久中文字幕一区二区三区| 欧美日一区二区| 国产欧美一区| 婷婷综合亚洲| 欧美91在线| 模特精品在线| 成人在线观看免费视频| 在线看片日韩| 亚洲美女久久精品| 日韩av电影一区| 免费毛片在线不卡| 国产调教精品| 欧美另类专区| 国产成人a视频高清在线观看| 亚洲深夜福利在线观看| 在线观看精品| 欧美激情三区| 亚洲狼人精品一区二区三区| 丝袜美腿诱惑一区二区三区|