http://www.cnblogs.com/kiss007/archive/2012/06/26/2563662.html
实例1:
Class printInteractionController = NSClassFromString(@"UIPrintInteractionController"); if ((printInteractionController != nil) && [printInteractionController isPrintingAvailable]) { printInteraction = [printInteractionController sharedPrintController]; printInteraction.delegate = self; UIPrintInfo *printInfo = [NSClassFromString(@"UIPrintInfo") printInfo]; printInfo.duplex = UIPrintInfoDuplexLongEdge; printInfo.outputType = UIPrintInfoOutputGeneral; printInfo.jobName = [webView stringByEvaluatingJavaScriptFromString:@"document.title"]; printInteraction.printInfo = printInfo; printInteraction.showsPageRange = YES; UIViewPrintFormatter *formatter = [webView viewPrintFormatter]; printInteraction.printFormatter = formatter; [printInteraction presentFromBarButtonItem:actionButtonItem animated:YES completionHandler: ^(UIPrintInteractionController *pic, BOOL completed, NSError *error) { } ]; }
实例2:
Class printInteractionController = NSClassFromString(@"UIPrintInteractionController"); if ((printInteractionController != nil) && [printInteractionController isPrintingAvailable]) { NSURL *fileURL = document.fileURL; // Document file URL printInteraction = [printInteractionController sharedPrintController]; if ([printInteractionController canPrintURL:fileURL] == YES) // Check first { UIPrintInfo *printInfo = [NSClassFromString(@"UIPrintInfo") printInfo]; printInfo.duplex = UIPrintInfoDuplexLongEdge; printInfo.outputType = UIPrintInfoOutputGeneral; printInfo.jobName = document.fileName; printInteraction.printInfo = printInfo; printInteraction.printingItem = fileURL; printInteraction.showsPageRange = YES; if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) { [printInteraction presentFromRect:button.bounds inView:button animated:YES completionHandler: ^(UIPrintInteractionController *pic, BOOL completed, NSError *error) { #ifdef DEBUG if ((completed == NO) && (error != nil)) NSLog(@"%s %@", __FUNCTION__, error); #endif } ]; } else // Presume UIUserInterfaceIdiomPhone { [printInteraction presentAnimated:YES completionHandler: ^(UIPrintInteractionController *pic, BOOL completed, NSError *error) { #ifdef DEBUG if ((completed == NO) && (error != nil)) NSLog(@"%s %@", __FUNCTION__, error); #endif } ]; } } }
利用UIPrintPageRenderer将html转换成pdf
Boss让我调查一下把html转换成PDF的方法,google之,有很多,都是用webview加载,截屏,转换。
于是去向Boss报告,结果他说这样转换成的pdf是纯图片的,不能对文本进行操作了,达不到想要的效果。
无奈,继续google。结果,再一次领略了stackoverflow的强大,最终找到一个解决方案:http://stackoverflow.com/q/9528658/966127
实现过程,子类化UIPrintPageRenderer
- (CGRect) paperRect { if (!_generatingPdf) return [super paperRect]; return UIGraphicsGetPDFContextBounds(); } - (CGRect) printableRect { if (!_generatingPdf) return [super printableRect]; return CGRectInset( self.paperRect, 20, 20 ); } - (NSData*) printToPDF { _generatingPdf = YES; NSMutableData *pdfData = [NSMutableData data]; UIGraphicsBeginPDFContextToData( pdfData, CGRectMake(0, 0, 792, 612), nil ); // letter-size, landscape [self prepareForDrawingPages: NSMakeRange(0, 1)]; CGRect bounds = UIGraphicsGetPDFContextBounds(); for ( int i = 0 ; i < self.numberOfPages ; i++ ) { UIGraphicsBeginPDFPage(); [self drawPageAtIndex: i inRect: bounds]; } UIGraphicsEndPDFContext(); _generatingPdf = NO; // NSString* filename = @"/Volumes/Macintosh HD 2/test.pdf"; // [pdfData writeToFile: filename atomically: YES]; return pdfData; }
UIViewPrintFormatter *viewFormatter = [htmlWebView viewPrintFormatter]; [ppRenderer addPrintFormatter:viewFormatter startingAtPageAtIndex:0]; NSData *pdfData = [ppRenderer printToPDF]; NSString *pdfPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/test.pdf"]; [pdfData writeToFile:pdfPath atomically:YES];
相关推荐
1. 无线电力传输(Wireless Power Transfer):无线电力传输指的是利用无线方式传送电能的技术。从文章提到的两种系统来看,无线电力传输包括近场感应耦合方式(如WISP平台)以及远场辐射能量捕获方式(如从电视塔...
TransMac是一款专为Windows用户设计的软件,它允许用户轻松地与Apple的Mac OS系统进行交互,特别是处理与Mac相关的文件格式和磁盘操作。在标题"TransMac11.4免安装版"中,我们可以理解这个版本是11.4的TransMac,...
How to push a model to its limit and obtain better results is of great significance in knowledge graph's applications. We propose a simple and elegant method, Trans-DLR, whose main idea is dynamic ...
《TransMac 14.4:Mac OS 镜像刻录的专业利器》 在数字化时代,数据存储和传输的方式多种多样,其中一种常见的格式就是Mac OS的.dmg镜像文件。这种文件类型广泛用于软件分发、系统备份以及跨平台的数据交换。然而,...
TransMac是一款专为Windows用户设计的软件,它允许用户方便地与Apple的Mac OS文件系统进行交互,包括读取、写入以及管理Mac格式化的磁盘和存储设备,如HFS、HFS+、APFS等。这个压缩包“TransMac 12.3.rar”包含了...
TransE算法是知识图谱表示学习领域的一种经典方法,它由Nicolas Usunier等人在2013年提出。该算法的主要目的是将实体和关系映射到一个低维向量空间,使得在这个空间中,关系可以被视为实体之间的翻译操作。这种直观...
**IEEE Trans系列期刊论文投稿模板详解** 在学术界,发表论文是科研人员交流研究成果、推动科技进步的重要途径。其中,IEEE Transactions系列期刊作为电子、电气工程和计算机科学领域的权威出版物,对论文格式有着...
"TransMac.v10.4 好用的黑苹果软件" 这个标题指出了我们讨论的核心是一款名为 TransMac 的软件,其版本号为 10.4。它被形容为“好用的黑苹果软件”,这暗示了TransMac是一款专门针对在非苹果(即Windows系统)环境下...
TransMac 如果你有MacOS的机器和光盘,想直接读取Mac格式的光盘和硬盘这时TransMac就可以有用了,使用TransMac就可以在你用Windows的机器上直接读取Mac格式的存储介质了,希望大家能使用开心。 TransMac is a ...
《 TranSE算法实现及测试详解 》 在知识图谱的研究与应用中,实体关系的表示学习是一项核心任务。TranSE(Translation-based Knowledge Graph Embedding)算法是其中的一种经典模型,它通过向量空间中的翻译操作来...
本文档《9 [E_]ECE_TRANS_WP.29_GRSG_2010_8-EN.pdf》针对的是第116号条例的修订提案,该提案由日本专家提交,涉及机动车辆防盗系统的测试流程,目的是简化测试程序,提高保护措施评估和认证的效率。 第116号条例...
DetGPT.pdf.trans.html
文件指出,GRVA工作组基于2019年修订的框架文件ECE/TRANS/WP.29/2019/34,对新提案进行了讨论,并在2020年的会议中进一步修订了该提案。 此外,文件还提到了1958年协议,这是国际上对于汽车技术法规进行协调的一项...
TransMAC12.2是一个在Windows下写入苹果镜像的软件,一般用于将原版MacOS原版镜像烧录到U盘,安装黑苹果必备,这个最新的12.2破解版,解压后替换主文件即可完成破解
2. **IEEEtran_HOWTO.pdf**: 这是一份详细的使用指南,通常会解释如何使用IEEEtran.cls文件,包括如何配置文档结构、插入参考文献、处理图形和表格等内容。 3. **README**: 一般包含模板的简短介绍、使用注意事项或...
transmac 10.3 注册版,在Win下访问Mac分区并操作的软件 高于这个版本的找不到序列号
《transMac:跨越平台的苹果系统管理利器》 在IT领域,尤其是在苹果用户群体中,transMac是一款不可或缺的工具,它允许Windows用户轻松地管理和处理Mac格式的硬盘、USB驱动器以及DMG映像文件。"transMac.zip"这个...
TransMac11破解版 黑苹果安装专用 小白们来下载
### 使用手机确定交通方式:移动设备上的行为识别与模式推断 #### 摘要 在信息技术迅速发展的背景下,移动电话的功能与应用已远超基本的通讯范畴,逐渐成为个人和社区习惯及情境分析的重要工具。...
"Trans-Formas"仪表操作涉及的是一个可能与数据转换、数据分析或监控系统相关的工具或技术。在IT行业中,仪表通常指的是用户界面中用于显示实时数据、指标或性能的图形化组件,它们常用于监控系统状态、业务表现或...