如何打印所有WKWebView和屏幕上的内容OSX和iOS

这个问题是关于打印WKWebView的所有内容(包括屏幕外的内容)。 目前(仍然,从iOS 10.2或OSX 10.12)没有工作的解决scheme,并没有在Stackoverflow的假设解决scheme的工作。 只有在您自己确认可以打印closures屏幕内容的情况下才提供答案,如果您确实提供了工作示例代码。

我试图在OSX 10.10或更高版本上打印所有WKWebViewWebView的内容(目前在10.11.2上运行)。 例如,一个广泛的HTML表格,其中的列不在视图和右侧。 早期版本的OSX会自动分页并正确打印所有的HTML。

我试过在Stackoverflow和其他地方使用这里提供的解决scheme。 所有本质上都是这样打印documentView视图的相同的东西:

 [[NSPrintOperation printOperationWithView:_webView.mainFrame.frameView.documentView printInfo:pInfo] runOperation]; 

这在10.10停止对WKWebViewWebView的工作。 如果你这样做:

  [[NSPrintOperation printOperationWithView:_wkWebView printInfo:pInfo] runOperation]; 

你得到分页,但打印输出包括滚动条WebView ,另一个WKWebView给你空白页。

在Apple文档中,我无法find任何关于在OSX上打印WKWebView的信息。 我也不能find任何OSX特定的答案,而不是iOS。

有没有人有任何想法如何在OSX上打印这些?

更新 :这是WebView [雷达:23159060]中的一个错误,WKWebView甚至不能解决OSX上的打印问题。 在网上查看这个类的开源代码后,我发现所有与打印有关的类都在一个仅支持平台的条件编译块中: iOS

更新Part Deux :令人惊讶的是这个荒谬的错误存在于这个类的所有实现中,包括iOS上的那些! 我觉得这很荒谬,尽pipe文档声明在支持iOS 8或更高版本的应用程序中使用这个(只有这个类),但是这个date没有被修复。 现在不可能在iOS或OSX上打印WebView的所有屏幕上和屏幕外的内容。 失败苹果。 时间来修正这个! 我们都知道史蒂夫会对此说什么….

注意:另外,我相信这个问题的根本原因也是无法将WKWebView的所有内容保存为图像。 曾经有一些技术可以与UIWebView一起使用将WebView的整个屏幕上和屏幕外的内容保存为图像。 我还没有find一个工作的解决scheme。

我已经竭尽全力直接打印WKWebView而没有成功。 我能想到的唯一解决方法是将网页转换为PDF对象,然后打印所述对象。 我会更新代码,如果我得到的解决方法工作。

在iOS中,我将UIView.viewPrintFormatter()传递给UIActivityViewController以允许用户打印所有内容

 let myShare = [webView.viewPrintFormatter()] let avc = UIActivityViewController(activityItems: myShare, applicationActivities: nil) present(avc, animated: true, completion: nil)