iOS使用WebView生成长截图的第3种解决方案( 四 )

iOS系统支持把WebView的内容打印到PDF文件上 , 借助这个特性 , 新方案的设计如下:

把WebView组件的内容全部打印到一页PDF上

把PDF转换成图片

新方案的核心代码如下:

WebViewPrintPageRenderer是该方案的核心类 , 负责把WebView组件内容打印到PDF , 然后把PDF转换为图片 。

UIWebView和WKWebView则实现对应的扩展 。

iOS使用WebView生成长截图的第3种解决方案

----iOS使用WebView生成长截图的第3种解决方案//----江苏龙网 http://www.jiangsulong.com //

测试代码:

三种技术方案优劣对比

那么 , 这三种技术方案各自存在什么优缺点呢 , 适用什么场景呢?

方案一:只适用UIWebView;若网页内容很多 , 生成长截图时 , 会占用过多内存 。 所以 , 该方案只适合不需要支持WKWebView , 且网页内容不会太多的场景 。

方案二:适用UIWebView和WKWebView , 且特别适合WKWebView 。 由于采用分页生成截图机制 , 有效减少内存占用 。 不过 , 这个方案存在一个问题:若网页存在position:fixed的元素(如网页头部固定的导航栏) , 该元素会重复出现在生成的长图上 。


推荐阅读