Próbuję dowiedzieć się, jak zapisać WebView do pliku PDF i całkowicie utknąć, czy naprawdę będzie wdzięczny za pomoc?Zapisywanie WebView do formatu PDF zwraca pusty obraz?
Robię to w Cocoa & Swift na OSX, oto mój kod do tej pory:
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)
}
}
}
Jest to dość proste, co robię jest stworzenie WebView i pisanie podstawowe treści HTML do niej co czyni to:
a potem zdania i zapisuje je do pliku PDF, ale to wychodzi puste:
Próbowałem pobrać zawartość z webView i View, ale bez radości.
Znalazłem podobny problem tutaj How to take a screenshot when a webview finished rending dotyczące zapisywania obrazu WWW na obrazie, ale jak dotąd nie ma szczęścia z rozwiązaniem OSX.
Czy może to mieć coś wspólnego z wymiarami dokumentu? lub czy zawartość znajduje się w wydziale? może jeśli przechwycisz widok, nie możesz przechwycić SubView?
Wszelkie pomysły?
Witam. Jeśli znalazłeś rozwiązanie swojego problemu, * opublikuj jako odpowiedź *, nie dodawaj go do swojego pytania. Proszę również nie dodawać "rozwiązanych" do tytułu. Umieszczenie odpowiedzi i oznaczenie jej jako zaakceptowanej jest sposobem na "rozwiązanie" pytania. Dzięki. – Moritz
Przepraszam, zrobię. –
Nie ma problemu - cofnąłem już twoją edycję, musisz tylko opublikować swoją odpowiedź. Dzięki! :) – Moritz