Я перенес UIWebview в WKWebView и использую WKWebview для загрузки HTML для создания PDF. После успешной загрузки WKWebView HTML я использую следующие функции для генерации PDF, а на iOS 13 и более поздних iOS работает нормально, но на устройствах iOS 13 он показывает пустые страницы. Если кто-то может помочь, то было бы здорово.
здесь (https://drive.google.com/open?id=1jHcnhHm800QhN5ik6fJuWZx8K64DjyWq), я создал демо для большего визуального понимания. Он отлично работает на iOS 13.0 и более поздних версиях, но не работает ниже iOS 13.0
/// Function is used to export the PDF save in directory based on created HTML String.
func exportHTMLContentToPDF(formatter: UIViewPrintFormatter,HTMLContent: String) {
let printPageRenderer = CustomPrintPageRenderer()
printPageRenderer.addPrintFormatter(formatter, startingAtPageAt: 0)
let height = strDisclaimer.height(withConstrainedWidth: 592, font: UIFont(name: "DINNextLTPro-Regular", size: 10)!)
let pdfData = drawPDFUsingPrintPageRenderer(printPageRenderer: printPageRenderer, footerDisclaimerHeight: height)
pdfFilename = "\(ScreenshotManager.shared.getDocDir())/\(Bundle.main.bundleName) - \(ScreenshotManager.shared.hospitalName ?? "") - \(Date().getDateWithFormat(formatter: "dd-MM-yyyy") ?? "").pdf"
pdfData?.write(toFile: pdfFilename, atomically: true)
print(pdfFilename ?? "")
}
/// Function is used to draw page and return the DATA.
func drawPDFUsingPrintPageRenderer(printPageRenderer: CustomPrintPageRenderer,footerDisclaimerHeight : CGFloat) -> NSData! {
let usLetterWidth: CGFloat = 612.0
let usLetterHeight: CGFloat = 792.0
let data = NSMutableData()
UIGraphicsBeginPDFContextToData(data, CGRect.zero, nil)
for index in 0..<printPageRenderer.numberOfPages {
if index == 0 {
printPageRenderer.headerHeight = 0
printPageRenderer.footerHeight = footerDisclaimerHeight + 50
UIGraphicsBeginPDFPageWithInfo(CGRect(x: 0.0, y: 0.0, width: usLetterWidth, height: usLetterHeight - 100), nil)
printPageRenderer.drawPage(at: index, in: UIGraphicsGetPDFContextBounds())
} else {
printPageRenderer.headerHeight = 23.0
printPageRenderer.footerHeight = 10.0
UIGraphicsBeginPDFPageWithInfo(CGRect(x: 0.0, y: 0.0, width: usLetterWidth, height: usLetterHeight), nil)
printPageRenderer.drawPage(at: index, in: UIGraphicsGetPDFContextBounds())
}
}
UIGraphicsEndPDFContext()
return data
}