Я использую viewPrintFormatter()
из WKWebView
для печати некоторых HTML.
У меня есть CustomPrintPageRenderer
, который является подклассом UIPrintPageRenderer
, который устанавливает paperRect
и printableRect
до 595.2
x 841.8
и footer
до 50.
Я называю этот код для генерации PDF из WKWebView
:
private func createPDF(_ formatter: UIViewPrintFormatter) {
// Our custom print renderer sets it's size and footer automatically
let render = CustomPrintPageRenderer.init()
render.addPrintFormatter(formatter, startingAtPageAt: 0)
// Create PDF context and draw
let pdfData = NSMutableData()
let rect = CGRect.init(x: 0, y: 0, width: 595.2, height: 841.8)
UIGraphicsBeginPDFContextToData(pdfData, rect, nil)
for i in 0..<render.numberOfPages {
UIGraphicsBeginPDFPage();
render.drawPage(at: i, in: UIGraphicsGetPDFContextBounds())
}
UIGraphicsEndPDFContext();
self.completion?(.success(pdfData as Data))
}
Все это прекрасно работает на симуляторе iPhone
, однако, когда я использую его на симуляторе iPad
(в частности, я тестирую iPad Pro 11-дюймовый 2-го поколения), сгенерированный PDF переходит на 2-ю страницу.
1 строка текст из нижней части страницы перемещается на страницу 2.
Почему это будет отличаться на iPad от iPhone, когда WKWebView фактически не использует ни одного фрейма, поскольку он не отображается на экране. Кажется, что iPad может игнорировать нижний колонтитул в своих вычислениях.
Что я могу сделать, чтобы исправить это поведение?
Может ли это быть ошибка Apple?