[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

相关文章

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用Python实现批量分割PDF文件

《使用Python实现批量分割PDF文件》这篇文章主要为大家详细介绍了如何使用Python进行批量分割PDF文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、架构设计二、代码实现三、批量分割PDF文件四、总结本文将介绍如何使用python进js行批量分割PDF文件的方法

使用Python实现PDF与SVG互转

《使用Python实现PDF与SVG互转》SVG(可缩放矢量图形)和PDF(便携式文档格式)是两种常见且广泛使用的文件格式,本文将详细介绍如何使用Python实现SVG和PDF之间的相互转... 目录使用工具使用python将SVG转换为PDF使用Python将SVG添加到现有PDF中使用Python将PD

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

基于C#实现PDF文件合并工具

《基于C#实现PDF文件合并工具》这篇文章主要为大家详细介绍了如何基于C#实现一个简单的PDF文件合并工具,文中的示例代码简洁易懂,有需要的小伙伴可以跟随小编一起学习一下... 界面主要用于发票PDF文件的合并。经常出差要报销的很有用。代码using System;using System.Col

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

SpringBoot生成和操作PDF的代码详解

《SpringBoot生成和操作PDF的代码详解》本文主要介绍了在SpringBoot项目下,通过代码和操作步骤,详细的介绍了如何操作PDF,希望可以帮助到准备通过JAVA操作PDF的你,项目框架用的... 目录本文简介PDF文件简介代码实现PDF操作基于PDF模板生成,并下载完全基于代码生成,并保存合并P

基于Python实现PDF动画翻页效果的阅读器

《基于Python实现PDF动画翻页效果的阅读器》在这篇博客中,我们将深入分析一个基于wxPython实现的PDF阅读器程序,该程序支持加载PDF文件并显示页面内容,同时支持页面切换动画效果,文中有详... 目录全部代码代码结构初始化 UI 界面加载 PDF 文件显示 PDF 页面页面切换动画运行效果总结主