Печать файла PDF, который отображается в WKWebView

Я пытаюсь распечатать из 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)

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

1 ответ

Решение

Согласно документации вы можете использовать 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)

Пример из симулятора:

Другие вопросы по тегам