0

viewPrintFormatter()from aを使用しWKWebViewて HTML を印刷しています。

私はCustomPrintPageRendererサブクラスであり、そのサブクラスをxおよび50にUIPrintPageRenderer設定しています。paperRectprintableRect595.2841.8footer

このコードを呼び出して、次から 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のバグでしょうか?

4

1 に答える 1