Я работаю над функцией в моем приложении, которая позволяет пользователям экспортировать свои данные в красиво оформленный PDF.
Я использую UIGraphicsPDFRenderer
для этого и прошёл документацию Apple .
У меня проблема с добавлением нижнего колонтитула типа "страница x of y". Хотя «х» легко - у меня проблемы с определением «у», так как я знаю только, сколько страниц в моем документе, после того как я полностью обработал PDF. Я не могу определить количество страниц заранее из-за довольно сложной верстки.
Теперь я также знаю, что новые страницы создаются с beginPage()
. Есть ли способ перейти на предыдущую страницу? - Потому что тогда я мог бы просто просмотреть документ и добавить недостающий нижний колонтитул.
Вот код, который я использую (очень упрощенный, но этого должно быть достаточно, чтобы понять идею) в Swift 4:
let pdf = renderer.pdfData { (context) in
let attributes = [ NSFontAttributeName : UIFont.boldSystemFont(ofSize: 15) ]
// page 1
context.beginPage()
NSAttributedString(string: "Page 1", attributes: attributes).draw(in: CGRect(x: 0, y: 0, width: 500, height: 200))
// page 2
context.beginPage()
NSAttributedString(string: "Page 2", attributes: attributes).draw(in: CGRect(x: 0, y: 0, width: 500, height: 200))
// page 3
context.beginPage()
NSAttributedString(string: "Page 3", attributes: attributes).draw(in: CGRect(x: 0, y: 0, width: 500, height: 200))
// Now that I know that the PDF will have 3 pages, add the footer on all 3 pages - but how?
}
}