[Trans]AirPrint in webview transfer to PDF

2023-11-23 03:32

本文主要是介绍[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:actionButtonItemanimated:YEScompletionHandler:^(UIPrintInteractionController *pic, BOOL completed, NSError *error) {}];}

实例2:

    Class printInteractionController = NSClassFromString(@"UIPrintInteractionController");if ((printInteractionController != nil) && [printInteractionController isPrintingAvailable]){NSURL *fileURL = document.fileURL; // Document file URLprintInteraction = [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 DEBUGif ((completed == NO) && (error != nil)) NSLog(@"%s %@", __FUNCTION__, error);#endif}];}else // Presume UIUserInterfaceIdiomPhone{[printInteraction presentAnimated:YES completionHandler:^(UIPrintInteractionController *pic, BOOL completed, NSError *error){#ifdef DEBUGif ((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];

这篇关于[Trans]AirPrint in webview transfer to PDF的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/415047

相关文章

Java高效实现PowerPoint转PDF的示例详解

《Java高效实现PowerPoint转PDF的示例详解》在日常开发或办公场景中,经常需要将PowerPoint演示文稿(PPT/PPTX)转换为PDF,本文将介绍从基础转换到高级设置的多种用法,大家... 目录为什么要将 PowerPoint 转换为 PDF安装 Spire.Presentation fo

5 种使用Python自动化处理PDF的实用方法介绍

《5种使用Python自动化处理PDF的实用方法介绍》自动化处理PDF文件已成为减少重复工作、提升工作效率的重要手段,本文将介绍五种实用方法,从内置工具到专业库,帮助你在Python中实现PDF任务... 目录使用内置库(os、subprocess)调用外部工具使用 PyPDF2 进行基本 PDF 操作使用

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

Java实现为PDF设置背景色和背景图片

《Java实现为PDF设置背景色和背景图片》在日常的文档处理中,PDF格式因其稳定性和跨平台兼容性而广受欢迎,本文将深入探讨如何利用Spire.PDFforJava库,以简洁高效的方式为你的PDF文档... 目录库介绍与安装步骤Java 给 PDF 设置背景颜色Java 给 PDF 设置背景图片总结在日常的

Java轻松实现PDF转换为PDF/A的示例代码

《Java轻松实现PDF转换为PDF/A的示例代码》本文将深入探讨Java环境下,如何利用专业工具将PDF转换为PDF/A格式,为数字文档的永续保存提供可靠方案,文中的示例代码讲解详细,感兴趣的小伙伴... 目录为什么需要将PDF转换为PDF/A使用Spire.PDF for Java进行转换前的准备通过

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

在Android中使用WebView在线查看PDF文件的方法示例

《在Android中使用WebView在线查看PDF文件的方法示例》在Android应用开发中,有时我们需要在客户端展示PDF文件,以便用户可以阅读或交互,:本文主要介绍在Android中使用We... 目录简介:1. WebView组件介绍2. 在androidManifest.XML中添加Interne

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum