swift – 将WebView保存为PDF会返回空白图像吗?

swift – 将WebView保存为PDF会返回空白图像吗?,第1张

概述我正在试图找出如何将WebView保存为PDF并完全卡住,真的很感激一些帮助吗? 我在Cocoa& Swift on OSX,到目前为止这是我的代码: import Cocoaimport WebKitclass ViewController: NSViewController { override func loadView() { super.loadView( 我正在试图找出如何将WebVIEw保存为pdf并完全卡住,真的很感激一些帮助吗?

我在Cocoa& Swift on OSX,到目前为止这是我的代码:

import Cocoaimport WebKitclass VIEwController: NSVIEwController {    overrIDe func loadVIEw() {        super.loadVIEw()    }    overrIDe func vIEwDIDLoad() {        super.vIEwDIDLoad()        loadHTMLString()    }    func loadHTMLString() {        let webVIEw = WKWebVIEw(frame: self.vIEw.frame)        webVIEw.loadHTMLString("<HTML><body><p>Hello,World!</p></body></HTML>",baseURL: nil)        self.vIEw.addSubvIEw(webVIEw)        createpdfFromVIEw(webVIEw,savetodocumentWithfilename: "test.pdf")    }    func createpdfFromVIEw(vIEw: NSVIEw,savetodocumentWithfilename filename: String) {        let pdfData = vIEw.dataWithpdfInsIDeRect(vIEw.bounds)        if let documentDirectorIEs = NSSearchPathForDirectorIEsInDomains(.documentDirectory,.UserDomainMask,true).first {            let documentsfilename = documentDirectorIEs + "/" + filename            deBUGPrint(documentsfilename)            pdfData.writetofile(documentsfilename,atomically: false)        }    }}

这很简单,我正在做的是创建一个WebVIEw并写一些基本的HTML内容给它:

然后获取视图并将其保存为pdf文件但是空白

我试过从webVIEw和VIEw中抓取内容但没有快乐.

我在How to take a screenshot when a webview finished rending发现了一个类似的问题,关于将webvIEw保存到图像,但到目前为止还没有运气OSX解决方案.

它可能与文档尺寸有关吗?
或者内容在子视图中?
也许如果你捕获视图你无法捕获SubVIEw?

有任何想法吗?

解决方法 在iOS 11.0及更高版本中,Apple提供了以下API来捕获WKWebVIEw的快照.

@available(iOS 11.0,*)    open func takeSnapshot(with snapshotConfiguration: WKSnapshotConfiguration?,completionHandler: @escaPing (UIImage?,Error?) -> Swift.VoID)

样品用法:

func webVIEw(_ webVIEw: WKWebVIEw,dIDFinish navigation: WKNavigation!) {        if #available(iOS 11.0,*) {            webVIEw.takeSnapshot(with: nil) { (image,error) in                //Do your stuff with image            }        }    }

在iOS 10及更低版本中,UIWebVIEw必须用于捕获快照.可以使用以下方法来实现该目的.

func webVIEwDIDFinishLoad(_ webVIEw: UIWebVIEw) {        let image = captureScreen(webVIEw: webVIEw)        //Do your stuff with image    }func captureScreen(webVIEw: UIWebVIEw) -> UIImage {        UIGraphicsBeginImageContext(webVIEw.bounds.size)        webVIEw.layer.render(in: UIGraphicsGetCurrentContext()!)        let image: UIImage = UIGraphicsGetimageFromCurrentimageContext()!        UIGraphicsEndImageContext()        return image    }

这是另一个相关的answer

总结

以上是内存溢出为你收集整理的swift – 将WebView保存为PDF会返回空白图像吗?全部内容,希望文章能够帮你解决swift – 将WebView保存为PDF会返回空白图像吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1016386.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存