【发布时间】:2020-08-02 02:08:21
【问题描述】:
我正在使用 WKWebView 中的 viewPrintFormatter() 打印一些 HTML。
我有一个CustomPrintPageRenderer,它是UIPrintPageRenderer 的子类,它将paperRect 和printableRect 设置为595.2x841.8 和footer 为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 页。
当 WKWebView 实际上没有使用任何框架因为它没有显示在屏幕上时,为什么这在 iPad 和 iPhone 上会有所不同。似乎 iPad 可能在其计算中忽略了页脚。
我能做些什么来解决这个问题?
这可能是 Apple 的错误吗?
【问题讨论】:
标签: ios swift pdf printing uiprintpagerenderer