Используйте следующий метод для преобразования вашей HTML-строки в формат данных PDF формата A4:
func generatePDF(from html: String) -> NSData {
let fmt = UIMarkupTextPrintFormatter(markupText: html)
// 2. Assign print formatter to UIPrintPageRenderer
let render = UIPrintPageRenderer()
render.addPrintFormatter(fmt, startingAtPageAt: 0)
// 3. Assign paperRect and printableRect
let page = CGRect(x: 0, y: 0, width: 595.2, height: 841.8) // A4, 72 dpi
let printableRect = CGRect(x: 47.6, y: 70.9, width: 500, height: 700) // Adding margin to page
render.setValue(page, forKey: "paperRect")
render.setValue(printableRect, forKey: "printableRect")
// 4. Create PDF context and draw
let pdfData = NSMutableData()
UIGraphicsBeginPDFContextToData(pdfData, .zero, nil)
for i in 0..<render.numberOfPages {
UIGraphicsBeginPDFPage()
render.drawPage(at: i, in: UIGraphicsGetPDFContextBounds())
}
UIGraphicsEndPDFContext()
return pdfData
}
Теперь используйте следующий код, чтобы поделиться им:
let pdfData = generatePDF(from: self.appDelegate.HTMLContent)
let activityViewController:UIActivityViewController = UIActivityViewController(activityItems: [pdfData], applicationActivities: nil)
self.present(activityViewController, animated: true, completion: nil)