Ich versuche herauszufinden, wie man ein WebView in ein PDF speichern und völlig stecken bleiben, würde wirklich etwas Hilfe zu schätzen wissen?Das Speichern von WebView in PDF gibt ein leeres Bild zurück?
ich dies auf OSX in Cocoa & Swift mache, hier ist mein Code so weit:
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)
}
}
}
Es ist ziemlich einfach, was ich tue ist ein WebView zu schaffen und einige grundlegende HTML-Inhalte zu schreiben das macht diese:
und nimmt dann die Ansicht und speichert sie in einer PDF-Datei, aber das kommt leer:
Ich habe versucht, den Inhalt aus dem WebView und View, aber keine Freude zu greifen.
Ich habe ein ähnliches Problem hier How to take a screenshot when a webview finished rending bezüglich des Speicherns des Webview zu einem Bild gefunden, aber bis jetzt kein Glück mit einer OSX Lösung.
Könnte es etwas mit den Dokumentdimensionen zu tun haben? oder dass der Inhalt in einer Unteransicht ist? vielleicht, wenn Sie die Ansicht erfassen können Sie die SubView nicht erfassen?
Irgendwelche Ideen?
Hallo. Wenn Sie eine Lösung für Ihr Problem gefunden haben, * posten Sie es als Antwort *, fügen Sie es nicht zu Ihrer Frage hinzu. Bitte fügen Sie dem Titel auch nicht "gelöst" hinzu. Eine Antwort zu posten und als akzeptiert zu markieren, ist der Weg, eine Frage zu "lösen". Vielen Dank. – Moritz
Entschuldigung, werde ich tun. –
Kein Problem - Ich habe Ihre Bearbeitung bereits rückgängig gemacht, Sie müssen Ihre Antwort jetzt posten. Vielen Dank! :) – Moritz