`
shappy1978
  • 浏览: 705694 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

[Trans]AirPrint in webview & transfer to PDF

 
阅读更多

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];
分享到:
评论

相关推荐

    Experimental Results with two Wireless Power Transfer Systems.PDF

    1. 无线电力传输(Wireless Power Transfer):无线电力传输指的是利用无线方式传送电能的技术。从文章提到的两种系统来看,无线电力传输包括近场感应耦合方式(如WISP平台)以及远场辐射能量捕获方式(如从电视塔...

    TransMac11.4免安装版

    TransMac是一款专为Windows用户设计的软件,它允许用户轻松地与Apple的Mac OS系统进行交互,特别是处理与Mac相关的文件格式和磁盘操作。在标题"TransMac11.4免安装版"中,我们可以理解这个版本是11.4的TransMac,...

    Defeats GAN:A Simpler Model Outperforms in Knowledge Representation Learning.pdf

    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

    《TransMac 14.4:Mac OS 镜像刻录的专业利器》 在数字化时代,数据存储和传输的方式多种多样,其中一种常见的格式就是Mac OS的.dmg镜像文件。这种文件类型广泛用于软件分发、系统备份以及跨平台的数据交换。然而,...

    TransMac 12.3.rar

    TransMac是一款专为Windows用户设计的软件,它允许用户方便地与Apple的Mac OS文件系统进行交互,包括读取、写入以及管理Mac格式化的磁盘和存储设备,如HFS、HFS+、APFS等。这个压缩包“TransMac 12.3.rar”包含了...

    TransE算法代码实现.rar

    TransE算法是知识图谱表示学习领域的一种经典方法,它由Nicolas Usunier等人在2013年提出。该算法的主要目的是将实体和关系映射到一个低维向量空间,使得在这个空间中,关系可以被视为实体之间的翻译操作。这种直观...

    IEEE Trans系列期刊论文投稿模板

    **IEEE Trans系列期刊论文投稿模板详解** 在学术界,发表论文是科研人员交流研究成果、推动科技进步的重要途径。其中,IEEE Transactions系列期刊作为电子、电气工程和计算机科学领域的权威出版物,对论文格式有着...

    TransMac.v10.4 好用的黑苹果软件

    "TransMac.v10.4 好用的黑苹果软件" 这个标题指出了我们讨论的核心是一款名为 TransMac 的软件,其版本号为 10.4。它被形容为“好用的黑苹果软件”,这暗示了TransMac是一款专门针对在非苹果(即Windows系统)环境下...

    TransMac v8.1

    TransMac 如果你有MacOS的机器和光盘,想直接读取Mac格式的光盘和硬盘这时TransMac就可以有用了,使用TransMac就可以在你用Windows的机器上直接读取Mac格式的存储介质了,希望大家能使用开心。 TransMac is a ...

    TranSE算法实现及测试

    《 TranSE算法实现及测试详解 》 在知识图谱的研究与应用中,实体关系的表示学习是一项核心任务。TranSE(Translation-based Knowledge Graph Embedding)算法是其中的一种经典模型,它通过向量空间中的翻译操作来...

    9 [E_]ECE_TRANS_WP.29_GRSG_2010_8-EN.pdf

    本文档《9 [E_]ECE_TRANS_WP.29_GRSG_2010_8-EN.pdf》针对的是第116号条例的修订提案,该提案由日本专家提交,涉及机动车辆防盗系统的测试流程,目的是简化测试程序,提高保护措施评估和认证的效率。 第116号条例...

    DetGPT.pdf.trans.html

    DetGPT.pdf.trans.html

    ECE_TRANS_WP.29_2020_79_E.pdf

    文件指出,GRVA工作组基于2019年修订的框架文件ECE/TRANS/WP.29/2019/34,对新提案进行了讨论,并在2020年的会议中进一步修订了该提案。 此外,文件还提到了1958年协议,这是国际上对于汽车技术法规进行协调的一项...

    TransMac12.2破解版

    TransMAC12.2是一个在Windows下写入苹果镜像的软件,一般用于将原版MacOS原版镜像烧录到U盘,安装黑苹果必备,这个最新的12.2破解版,解压后替换主文件即可完成破解

    IEEEtrans论文的latex模板

    2. **IEEEtran_HOWTO.pdf**: 这是一份详细的使用指南,通常会解释如何使用IEEEtran.cls文件,包括如何配置文档结构、插入参考文献、处理图形和表格等内容。 3. **README**: 一般包含模板的简短介绍、使用注意事项或...

    transmac 10.3 注册版

    transmac 10.3 注册版,在Win下访问Mac分区并操作的软件 高于这个版本的找不到序列号

    transMac.zip

    《transMac:跨越平台的苹果系统管理利器》 在IT领域,尤其是在苹果用户群体中,transMac是一款不可或缺的工具,它允许Windows用户轻松地管理和处理Mac格式的硬盘、USB驱动器以及DMG映像文件。"transMac.zip"这个...

    TransMac11破解版

    TransMac11破解版 黑苹果安装专用 小白们来下载

    Trans-Using Mobile Phones to Determine Transportation Modes.pdf

    ### 使用手机确定交通方式:移动设备上的行为识别与模式推断 #### 摘要 在信息技术迅速发展的背景下,移动电话的功能与应用已远超基本的通讯范畴,逐渐成为个人和社区习惯及情境分析的重要工具。...

    trans-formas仪表操作

    "Trans-Formas"仪表操作涉及的是一个可能与数据转换、数据分析或监控系统相关的工具或技术。在IT行业中,仪表通常指的是用户界面中用于显示实时数据、指标或性能的图形化组件,它们常用于监控系统状态、业务表现或...

Global site tag (gtag.js) - Google Analytics