UIPrintPageRenderer在iPad上的大小不同



我正在使用WKWebView中的viewPrintFormatter()来打印一些HTML。

我有一个CustomPrintPageRenderer,它是UIPrintPageRenderer的子类,它将它的paperRectprintableRect设置为595.2x841.8footer设置为50。

我调用此代码从WKWebView:生成PDF

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英寸第二代(,生成的PDF会爬到第二页。

将页面底部的1行文本移到第2页上。

为什么在iPad和iPhone上会有所不同,因为WKWebView实际上没有使用任何框架,因为它没有显示在屏幕上。看起来iPad可能忽略了计算中的页脚。

我能做些什么来纠正这种行为?

这可能是苹果的错误吗?

同意,我不知道为什么iPad和iPhone会有什么不同。如果你正在寻找一个快速的解决方法,也许可以尝试检测设备是否是iPad,然后相应地调整矩形:

if UIDevice.current.userInterfaceIdiom == .pad {
/*put your adjusting code here*/
}

将需要为rect值使用变量(并在上面的if函数中编辑它们(,而不是使用正数。

最新更新