电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

瀏覽:45日期: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
相關文章:
主站蜘蛛池模板: 深圳善跑体育产业集团有限公司_塑胶跑道_人造草坪_运动木地板 | 拼装地板,悬浮地板厂家,悬浮式拼装运动地板-石家庄博超地板科技有限公司 | 二手回收公司_销毁处理公司_设备回收公司-找回收信息网 | 便携式XPDM露点仪-在线式防爆露点仪-增强型烟气分析仪-约克仪器 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 杭州画室_十大画室_白墙画室_杭州美术培训_国美附中培训_附中考前培训_升学率高的画室_美术中考集训美术高考集训基地 | 珠海白蚁防治_珠海灭鼠_珠海杀虫灭鼠_珠海灭蟑螂_珠海酒店消杀_珠海工厂杀虫灭鼠_立净虫控防治服务有限公司 | 合肥角钢_合肥槽钢_安徽镀锌管厂家-昆瑟商贸有限公司 | 圣才学习网-考研考证学习平台,提供万种考研考证电子书、题库、视频课程等考试资料 | 南京试剂|化学试剂|分析试剂|实验试剂|cas号查询-专业60年试剂销售企业 | 定制液氮罐_小型气相液氮罐_自增压液氮罐_班德液氮罐厂家 | 济南网站建设|济南建网站|济南网站建设公司【济南腾飞网络】【荐】 | 北京包装设计_标志设计公司_包装设计公司-北京思逸品牌设计 | 石家庄救护车出租_重症转院_跨省跨境医疗转送_活动赛事医疗保障_康复出院_放弃治疗_腾康26年医疗护送转诊团队 | 世界箱包品牌十大排名,女包小众轻奢品牌推荐200元左右,男包十大奢侈品牌排行榜双肩,学生拉杆箱什么品牌好质量好 - Gouwu3.com | 油缸定制-液压油缸厂家-无锡大鸿液压气动成套有限公司 | 打孔器,打孔钳厂家【温州新星德牌五金工具】 | 金属清洗剂,防锈油,切削液,磨削液-青岛朗力防锈材料有限公司 | 食品无尘净化车间,食品罐装净化车间,净化车间配套风淋室-青岛旭恒洁净技术有限公司 | 进口便携式天平,外校_十万分之一分析天平,奥豪斯工业台秤,V2000防水秤-重庆珂偌德科技有限公司(www.crdkj.com) | 宏源科技-房地产售楼系统|线上开盘系统|售楼管理系统|线上开盘软件 | 塑料异型材_PVC异型材_封边条生产厂家_PC灯罩_防撞扶手_医院扶手价格_东莞市怡美塑胶制品有限公司 | 铁素体测量仪/检测仪/铁素体含量测试仪-苏州圣光仪器有限公司 | 锌合金压铸-铝合金压铸厂-压铸模具-冷挤压-誉格精密压铸 | 洗瓶机厂家-酒瓶玻璃瓶冲瓶机-瓶子烘干机-封口旋盖压盖打塞机_青州惠联灌装机械 | 圆盘鞋底注塑机_连帮鞋底成型注塑机-温州天钢机械有限公司 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 武汉印刷厂-不干胶标签印刷厂-武汉不干胶印刷-武汉标签印刷厂-武汉标签制作 - 善进特种标签印刷厂 | 注浆压力变送器-高温熔体传感器-矿用压力传感器|ZHYQ朝辉 | 透平油真空滤油机-变压器油板框滤油机-滤油车-华之源过滤设备 | 全温恒温摇床-水浴气浴恒温摇床-光照恒温培养摇床-常州金坛精达仪器制造有限公司 | 安平县鑫川金属丝网制品有限公司,防风抑尘网,单峰防风抑尘,不锈钢防风抑尘网,铝板防风抑尘网,镀铝锌防风抑尘网 | 电镀整流器_微弧氧化电源_高频电解电源_微弧氧化设备厂家_深圳开瑞节能 | 包塑软管|金属软管|包塑金属软管-闵彬管业| 北京遮阳网-防尘盖土网-盖土草坪-迷彩网-防尘网生产厂家-京兴科技 | 合肥弱电工程_安徽安防工程_智能化工程公司-合肥雷润 | hdpe土工膜-防渗膜-复合土工膜-长丝土工布价格-厂家直销「恒阳新材料」-山东恒阳新材料有限公司 ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 蜘蛛车-高空作业平台-升降机-高空作业车租赁-臂式伸缩臂叉装车-登高车出租厂家 - 普雷斯特机械设备(北京)有限公司 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 数显恒温培养摇床-卧式/台式恒温培养摇床|朗越仪器 | 长沙发电机-湖南发电机-柴油发电机供应厂家-长沙明邦智能科技 | ?水马注水围挡_塑料注水围挡_防撞桶-常州瑞轩水马注水围挡有限公司 |