首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何打印有表头的uiwebview和多数据的uiwebview

打印有表头的UIWebView和多数据的UIWebView可以通过以下步骤实现:

  1. 创建一个UIWebView对象,并设置其frame和其他属性。
  2. 创建一个NSMutableString对象,用于存储要打印的HTML内容。
  3. 添加HTML头部信息,包括DOCTYPE声明、html标签、head标签和style标签,用于定义打印样式。
  4. 添加HTML body部分,包括表头和数据。
  5. 使用UIWebView的loadHTMLString方法加载HTML内容。
  6. 在UIWebView的代理方法webViewDidFinishLoad中执行打印操作。

下面是一个示例代码:

代码语言:txt
复制
import UIKit
import WebKit

class ViewController: UIViewController, UIWebViewDelegate {
    
    var webView: UIWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 创建UIWebView对象
        webView = UIWebView(frame: self.view.bounds)
        webView.delegate = self
        self.view.addSubview(webView)
        
        // 创建NSMutableString对象,用于存储HTML内容
        let htmlString = NSMutableString()
        
        // 添加HTML头部信息
        htmlString.append("<!DOCTYPE html>")
        htmlString.append("<html>")
        htmlString.append("<head>")
        htmlString.append("<style>")
        htmlString.append("table { width: 100%; border-collapse: collapse; }")
        htmlString.append("th, td { border: 1px solid black; padding: 8px; }")
        htmlString.append("</style>")
        htmlString.append("</head>")
        
        // 添加HTML body部分
        htmlString.append("<body>")
        htmlString.append("<table>")
        
        // 添加表头
        htmlString.append("<tr>")
        htmlString.append("<th>列1</th>")
        htmlString.append("<th>列2</th>")
        htmlString.append("<th>列3</th>")
        htmlString.append("</tr>")
        
        // 添加数据
        htmlString.append("<tr>")
        htmlString.append("<td>数据1</td>")
        htmlString.append("<td>数据2</td>")
        htmlString.append("<td>数据3</td>")
        htmlString.append("</tr>")
        
        htmlString.append("</table>")
        htmlString.append("</body>")
        htmlString.append("</html>")
        
        // 加载HTML内容
        webView.loadHTMLString(htmlString as String, baseURL: nil)
    }
    
    // UIWebView加载完成后执行打印操作
    func webViewDidFinishLoad(_ webView: UIWebView) {
        // 创建UIPrintInteractionController对象
        let printController = UIPrintInteractionController.shared
        
        // 设置打印内容
        let printInfo = UIPrintInfo(dictionary:nil)
        printInfo.outputType = UIPrintInfo.OutputType.general
        printInfo.jobName = "打印"
        printController.printInfo = printInfo
        printController.printFormatter = webView.viewPrintFormatter()
        
        // 弹出打印对话框
        printController.present(animated: true, completionHandler: nil)
    }
}

这段代码创建了一个带有表头和数据的HTML表格,并使用UIWebView加载并打印该表格内容。在webViewDidFinishLoad代理方法中,创建了一个UIPrintInteractionController对象,并设置打印内容为UIWebView的viewPrintFormatter。最后,调用printController.present方法弹出打印对话框。

请注意,这只是一个示例代码,实际使用时可能需要根据具体需求进行适当的修改和调整。

推荐的腾讯云相关产品:腾讯云移动浏览器(https://cloud.tencent.com/product/tcbrowser)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

浅谈iOS中WKWebViewUIWebView清除缓存问题

https://blog.csdn.net/u010105969/article/details/53943101 最近产品经理在验收项目,在验收过程中发现了一个问题:网页中数据存在缓存。...网页中加载是一张图片,在后台将加载图片换掉时候再在App中加载此网页,发现展示图片还是之前图片,并没有更新,而且多次重新加载网页显示还是之前图片,说明缓存很严重。...于是查阅资料进行缓存清除。...先说说UIWebView中缓存清除,代码只有一句:  [[NSURLCachesharedURLCache]removeAllCachedResponses]; 再说WKWebView中缓存清除...        [[NSFileManagerdefaultManager]removeItemAtPath:cookiesFolderPatherror:&errors];     } 增加内容: 使用UIWebView

5.3K10

iOS引入JavaScriptCore引擎框架(二)

我尝试过,并没有WebFrameLoadDelegate这个对象,看来iOS中WebKit框架并未提供UIWebView这么接口,但是有些人通过WebKit源码还是发现了一二,他就是Nick Hodapp...其次,我们既然获取到了JSContext,但是并不知道JSContext与UIWebVIew对应关系,我们ViewController中可能会有多个UIWebView如何将获取JSContext...这样,我们可以在UIWebViewwebViewDidStartLoadwebViewDidFinishLoad之间获取到JSContext,进行ocjs双向通信。...js引擎方式)来完成ocjs通信将更为流行,尽管目前apple提供针对jsc开发接口文档几乎没有,但是我们通过webkit源码做一些hack方式也不是不可以,毕竟只要UIWebView仍然使用...我们有理由憧憬未来在iOSandroid下更方便集成js引擎来完成建议双向通信。

1.5K40
  • iOS学习巩固笔记-UIWebViewJavaScript

    1 UIWebView简介 UIWebView是iOS内置浏览器控件 系统自带Safari浏览器就是通过UIWebView实现 UIWebView不但能加载远程网页资源,还能加载绝大部分常见文件...*)webView; 请求完毕(加载数据完毕)时调用这个方法 - (void)webViewDidFinishLoad:(UIWebView *)webView; 请求错误时调用这个方法 - (void...OC里面有通过字符串生成SEL类型方法,所以当拿到数据之后做下面的事情 截取方法名称 将截取出来字符串转换为SEL 利用performSelect方法来调用SEL 涉及到相关方法 //判断字符串是否以一个固定字符开头...(任意调用对象消息方法并可以传N参数一个类) 在iOS中可以直接调用某个对象消息方式有两种: performSelector:withObject; NSInvocation。...,那么就用谁来进行创建 //注意:签名一般是用来设置参数获得返回值方法调用没有太大关系 NSMethodSignature *signature = [ViewController

    1.2K70

    IOS隐藏键盘

    最近遇到二个键盘会自动弹出问题: 1、UIWebView加载网页后,点击网页内链接在UIWebView内进行跳转时,键盘自动弹起; 2、调用选择照片时,iPod上选择照片后也会自动弹出键盘,比如从图库进到具体某个文件夹内...,或者再返回图库,直接点中照片然后编辑时候,都会自动弹出; 问题一是这样处理 - (void)webViewDidStartLoad:(UIWebView*)webView {     [activityIndicatorView...UIWebView透明设置,只需要增加二个属性 webView_.opaque = NO; webView_.backgroundColor = [UIColor clearColor]; 第二个问题处理方案是...sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil]; } 因为接触ios也不算特别,...暂时就使用了上述方法来处理了。

    1.3K20

    iOS下JS与OC互相调用(二)--WKWebView 拦截URL

    在上篇文章中讲述了使用UIWebView拦截URL方式来处理JS与OC交互。 由于UIWebView比较耗内存,性能上不太好,而苹果在iOS 8中推出了WKWebView。...除了代理方法WKWebView使用不太一样,关于WKWebView更详尽讲解用法,还是自行搜索学习,本文重点还是讲解如何实现JS 与OC 互相调用。...2.WKWebView代理有两个navigationDelegateUIDelegate。我们要拦截URL,就要通过navigationDelegate一个代理方法来实现。...代表允许加载,相当于UIWebView代理方法中 return YES情况。...关于如何区分执行不同OC 方法,也与UIWebView处理方式一样,通过URL host 来区分执行不同方法: #pragma mark - private method - (void)handleCustomAction

    3.5K50

    Hybrid App 应用 开发中 9 个必备知识点复习(WebView 调试 等)

    参考文章:《UIWebView与WKWebView》 UIWebView 是苹果继承于 UIView 封装一个加载 web 内容类,它可以加载任何远端web数据展示在你页面上,你可以像浏览器一样前进后退刷新等操作...不过苹果在 iOS8 以后推出了 WKWebView 来加载 Web,并应用于 iOS OSX 中,它取代了 UIWebView WebView ,在两个平台上支持同一套 API。...它脱离于 UIWebView 设计,将原本设计拆分成14个类,3个代理协议,虽然是这样但是了解之后其实用法比较简单,依照职责单一原则,每个协议做事情根据功能分类。...但是目前 IOS10 以下系统以及很少了, 小结: WKWebView 相较于 UIWebView 在整体上有较大提升,满足 iOS 上面使用同一套控件功能,同时对整个内存开销以及滚动刷新率...如果调试是 H5 页面,可以直接在手机 Safari浏览器 打开直接调试。 下面开始说说在 Mac 上如何调试: 1.

    3.1K00

    苹果已经不再接收含UIWebView API新App送审

    将强制开发者升级WKWebView 带有UIWebView Api更新App,会收到类型下面的警告: 更新使用 WebView应用程序 2019年12月23日 如果您应用程序仍然使用被废弃 UIWebView...API 嵌入 Web 内容,我们强烈建议您尽快更新到 WKWebView,以提高安全性可靠性。...而且它在 iOS macOS 以及 Mac Catalyst 中都支持。...您好,因苹果公司关于APP使用UIWebview上架规定(2020年5月起上架新APP中不允许使用,5月之前上架过APP在12月30号之后不允许使用),实人认证产品SDK目前依赖了UIWebview...,预计2020年6月初去除,如果您是全新APP上架苹果应用商店,建议集成2020年6月份实人认证SDK后再上架,否则会影响APP上架,l感谢您理解支持,给您带来不便,敬请谅解!

    1.6K30

    UIWebView 浏览器控件一、初始化与三种加载方式二、常用属性方法三、代理方法 UIWebViewDelegate四、其它案例:

    WebView优缺点: 优点:(1)跨平台(2)发布更新快(3)排版布局能力强 缺点:(1)性能差(2)数据通讯复杂(3)耗费流量 使用场景:(1)排版复杂内容(2)需后台灵活控制界面...一、初始化与三种加载方式 UIWebView继承于UIView,因此,其初始化方法一般view一样,通过allocinit进行初始化,其加载数据方式有三种: 1.第一种: - (void)loadRequest...二、常用属性方法 属性: 1.设置webView代理 @property (nonatomic, assign) id delegate; 2.内置scrollView...(3)如何获取网页所有源代码, 实现代码如下 : NSString *js = @"document.getElementsByTagName('html')[0].outerHTML"; NSString...更加接近native(原生) 某些情况下,我们既想要UIWebView加载web页面,又想使得所加载页面的外观操作行为更加接近native感觉。

    1.5K60

    IOS WebView控件详解

    概述 WebView就是一个内嵌浏览器控件,在iOS中主要有两种WebView:UIWebViewWKWebView,UIWebView是iOS2之后开始使用,WKWebView是在iOS8开始使用,...,因此,其初始化方法一般view一样,通过allocinit进行初始化。...其加载数据方式有三种: 第一种: - (void)loadRequest:(NSURLRequest *)request; 这是加载网页最常用一种方式,通过一个网页URL来进行加载,这个URL可以是远程也可以是本地...*)webView didFailLoadWithError:(NSError *)error; UIWebViewJavaScript交互 UIWebViewJavaScript交互主要涉及两个方面...使用上UIWebView用法大体一致,主要是新增优化了一些方法。 例如,使用WKWebView加载百度首页。

    4.8K80

    【iOS开发】从 UIWebView 到 WKWebView

    UIWebView WKWebView 区别 WKWebView 更快(占用内存可能只有 UIWebView 1/3~1/4),没有缓存,更为细致地拆分了 UIWebViewDelegate...③为什么现在是时候从 UIWebView 迁移到 WKWebView 了: 截止到我写这篇文章时候,据 mixpanel 数据,iOS 9 占有率已达 58.55%,iOS 8 占有率达到了 34.78%...所以从现在开始,再开发 App 只兼容 iOS 8 iOS 9 两个版本就可以了(如果你产品对覆盖率要求不是很苛刻的话)。...WKWebView 是 iOS 8 之后才有的 WebKit 中内容,所以之前我们要同时兼容 iOS 7 iOS 8 时候,可以推辞说 UIWebView WKWebView 一起做太麻烦了...然而,我们如何拿到从 WKWebView 中抓取到文本呢(通过 document.body.innerText 这一句)?

    1.8K20

    吸顶效果解决方案

    页面向下滚动超过吸顶元素初始位置时,把吸顶元素固定在顶部 要求吸顶元素一般是二级导航栏、搜索框、文章标题栏(h1)、表头(thead)、tab条等等,共同特点是在内容或功能上比较重要,但又不是最重要元素...IOS 8+SafariWKWebView能够疯狂触发scroll,无论手指在不在屏幕上,无论是不是惯性滚动期间。...但IOS 8+UIWebView,scroll限制还在 如果要支持IOS 8-设备以及任意IOS版本UIWebView,此路不通,忘掉scroll sticky 虽然scroll方案行不通,但IOS...static能为后代元素提供定位参照),但topleft无效 滚过初始位置时,position: fixed表现类似,topleft生效,固定在屏幕可见区域,但页面不会抖动,原本占据空间还在(自带守家占位符感觉...CSS sticky并不能解决这个问题 笔者还没有找到合适解决方案,目前方案是牺牲tab浏览状态独立性,tab共用body滚动条,切换tab时滚回之前位置。

    3.5K10

    IOS开发系列——UIWebView专题【整理,部分原创】

    其解决方法需要Javascriptnavtive code一起来做,其基本原理可参考这片文章,其流程是在Javascript handler中每创建Ajax请求时,需要将这段js存在ajax_handler.js...部分内容参考于stackoverflow 2.1.4UIWebView载入带有锚点(anchor)URL时存在问题及解决办法 UIWebView载入带有锚点(anchor)URL时存在问题及解决办法...,当页面高度超过屏幕高度时,如果页面顶部初始加载时位置不同(进行过滚动),则每次添加高亮,页面就重新跳到初始加载时位置,而不是保持当前位置。...在PC浏览器上尝试并没有出现这种问题,因此猜测是可能是UIWebView自身原因。...PS:如果UIWebView加载URL不带锚点,是不会出现上述问题

    93040

    Flutter 与 iOS 原生 WebView 对比

    测试手机:iPhoneX 系统:iOS12.0 加载速度对比 测试网页打开速度,只需要获取 WebView 在开始加载网页网页加载完成时时间戳,时间戳差即为打开网页时间。...在这里,笔者又加了一个测试,尝试记录从 viewController viewDidLoad 到 webview didFinish 时间,测试了新浪数据,如下: UIWebViewA: 4970...,不过即使按照 UIWebViewB 数据来比较,也是 wkWebView 略胜一筹。...flutter 里使用就是 WK,所以原生 WKWebView 一样都是 444 分,比 UIWebView 437 略胜一筹。...是比UIWebView更好选择,推荐使用; flutter_webView_plugin:在iOS中使用就是原生WKWebView,所以总体 native WKWebView 表现差不多。

    1.6K20

    UIWebView使用与总结

    hh.jpeg 先前在项目中使用了UIWebView 在项目中一些比较复杂UI布局、需后台灵活控制界面、原网页,可以考虑UIWebView 在用它之前跟大家说下它优缺点 优点: 可跨平台...发布更新快 在服务器端发布,能够实时更新终端展示,便于快速升级以及紧急修复bug 排版布局能力强 强大HTML+CSS让人膜拜 缺点: 性能 相对于原生app来说,使用UIWebView...app相对来说性能会低一点, 用户体验度也会大打折扣 数据通讯复杂UIWebView与App之间进行数据通讯只能通过javascript或 UIWebViewDelegate来进行,客户端想传参数给...UIWebView修改网页或 者从网页中获取数据都比较复杂。...具体操作如下 更多经验请点击 UIWebView常规使用方法: //加载网页或者本地文件 - (void)loadRequest:(NSURLRequest *)request;//直接加载

    57530

    oc 与 js 互相调用

    很久之前用互相调用方法,今天要分享下,故记录下 Objective-C,通常写作ObjC或OC较少用Objective C或Obj-C,是扩充C面向对象编程语言。...UIWebView用于在App中嵌入网页内容,通常情况下是html格式网页,也支持pdf, word等文档。 控件优点 可跨平台    开发一次可以部署iOS、Android等平台。...排版布局能力强    强大HTML+CSS让人膜拜 控件缺点 性能    Native先生与HTML5先生争论时最喜欢说一句话就是:“你性能不行”。...数据通讯复杂    UIWebView与App之间进行数据通讯只能通过javascript或者UIWebViewDelegate来进行,客户端想传参数给UIWebView修改网页或者从网页中获取数据都比较复杂...使用场景 排版复杂内容 需后台灵活控制界面 原网页 1.加载网页 UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds

    1.2K10

    iOS下JS与OC互相调用(一)--UIWebView 拦截URL

    (这里分为UIWebView WKWebView两种,去年因为还要兼容iOS 6,所以没办法只能采用UIWebView来做。) 2.利用WKWebView MessageHandler。...写比较粗糙,因此准备新开一个目录专题来记录JS 与原生交互处理方式。只是记录JS与OC交互多种方式,大家可以根据实际情况场景选择适合自己方式。...因为就相互调用接口使用非常少啊,就那么三两个,完全没必要使用牛刀啊。 ? UIWebView 拦截URL 我之前就使用UIWebView + 拦截URL 方式实现JS与OC 交互。...loadURL实现来自关于UIWebViewPhoneGap总结一文。 2.为什么loadURL 中链接,使用统一scheme?...所有的参数都在URLquery中,先通过&将字符串拆分,在通过=把参数拆分成key 实际值。

    3.6K40

    iOS小技能:UIWebView 被拒解决方案(用更安全WKWebView替代UIWebView

    引言 背景:202012之后苹果将不接受使用UIWebView UIWebView 被拒解决方案:使用WKWebView替代UIWebView 1、查 SDK是否用 UIWebView API...2、移除/升级含UIWebView第三方SDK(例:AFNetworking) 3、使用WKWebView替代UIWebView 4、WKWebView与JS交互案例(点击页面图片,调用iOS方法进行图片放大显示...、NSURLSession UIWebView请求; 对于 WKWebView 中发出网络请求也无能为力,如果真的要拦截来自 WKWebView 中请求,还是需要实现 WKWebView...I 使用WKWebView替换UIWebView 1.1 移除/升级包含UIWebView第三方SDK(grep -r "UIWebView" .) ➜ retail git:(develop)...1.2 移除/替换自己项目使用UIWebView API代码 自己是否用了该 API 只需要在 Xcode 中全局搜索即可 II 升级包含UIWebView第三方SDK具体例子 pod

    3.2K20

    Hybrid App 应用开发中 9 个必备知识点复习

    不过苹果在 iOS8 以后推出了 WKWebView 来加载 Web,并应用于 iOS OSX 中,它取代了 UIWebView WebView ,在两个平台上支持同一套 API。...它脱离于 UIWebView 设计,将原本设计拆分成14个类,3个代理协议,虽然是这样但是了解之后其实用法比较简单,依照职责单一原则,每个协议做事情根据功能分类。...无法发送 POST 参数问题; WKWebView 可以js直接互调函数,不像 UIWebView 需要第三方库 WebViewJavascriptBridge 来协助处理 js 交互; 注意...但是目前 IOS10 以下系统以及很少了, 小结: WKWebView 相较于 UIWebView 在整体上有较大提升,满足 iOS 上面使用同一套控件功能,同时对整个内存开销以及滚动刷新率...如果调试是 H5 页面,可以直接在手机 Safari浏览器 打开直接调试。 下面开始说说在 Mac 上如何调试: 1.

    2.3K30
    领券