viewPrintFormatter()
from aを使用しWKWebView
て HTML を印刷しています。
私はCustomPrintPageRenderer
サブクラスであり、そのサブクラスをxおよび50にUIPrintPageRenderer
設定しています。paperRect
printableRect
595.2
841.8
footer
このコードを呼び出して、次から 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 ページに移動されます。
画面に表示されないため、WKWebView が実際にフレームを使用しない場合、iPad と iPhone でこれが異なるのはなぜですか。iPad が計算内でフッターを無視しているようです。
この動作を修正するにはどうすればよいですか?
それはAppleのバグでしょうか?