3

Я пытаюсь распечатать из WKWebView. Веб-страницы и изображения работают нормально.Печать PDF-файла, который отображается в WKWebView

Только при печати PDF-файла все страницы пусты.

Это код, который я использовал для создания printController:

let printController = UIPrintInteractionController.sharedPrintController() 

let printInfo = UIPrintInfo(dictionary:nil) 
printInfo.outputType = UIPrintInfoOutputType.General 
printInfo.jobName = urlField.text! 
printInfo.duplex = UIPrintInfoDuplex.LongEdge 

let formatter: UIViewPrintFormatter = webView.viewPrintFormatter() 
formatter.contentInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10) 

printController.printFormatter = formatter 
printController.printInfo = printInfo 
printController.showsPageRange = true 
printController.showsNumberOfCopies = true 

printController.presentFromBarButtonItem(printButton, animated: true, completionHandler: nil) 

Может кто-нибудь помочь мне в правильном направлении? Есть ли решение этой проблемы?

Я создал образец проекта: https://github.com/pjctech/Print-PDF-from-WKWebView

ответ

5

По documentation вы можете использовать printingItem.

ВАЖНОЕ ЗАМЕЧАНИЕ: Это немного лагирует на симуляторе iPhone и выглядит так, что требуется время для загрузки PDF непосредственно в контроллер.

Но вам нужно установить следующий код в print методом

let printController = UIPrintInteractionController.sharedPrintController() 

let printInfo = UIPrintInfo(dictionary:nil) 
printInfo.outputType = UIPrintInfoOutputType.General 
printInfo.jobName = (webView.URL?.absoluteString)! 
printInfo.duplex = UIPrintInfoDuplex.None 
printInfo.orientation = UIPrintInfoOrientation.Portrait 

//New stuff 
printController.printPageRenderer = nil 
printController.printingItems = nil 
printController.printingItem = webView.URL! 
//New stuff 

printController.printInfo = printInfo 
printController.showsPageRange = true 
printController.showsNumberOfCopies = true 

printController.presentFromBarButtonItem(printButton, animated: true, completionHandler: nil) 

Пример из симулятора: enter image description here