我在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会返回空白图像吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)