我正在尝试找出如何将WebView保存为PDF,但是完全卡住了,真的很需要帮助。
我在OSX上使用Cocoa和Swift进行此操作,以下是我的代码:
import Cocoa
import WebKit
class 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中获取内容,但是没有成功。我在这里找到了一个类似的问题 如何在webview完成渲染时截取屏幕 ,涉及将webview保存为图像,但目前还没有找到MacOS的解决方案。
可能与文档尺寸有关吗? 或者内容在子视图中? 也许如果你捕捉View,你就不能捕捉SubView?
有什么想法吗?