从WKWebView生成PDF时出现不需要的右边距

3
我正在尝试将当前的WKWebView视图保存为PDF。这是加载到Webview中的HTML代码:
<!DOCTYPE html>
<html lang="en" dir="ltr">
    <head>
        <meta charset="utf-8">
        <title>PDF neve</title>
        <style type="text/css">
            * {
                margin: 0;
                padding: 0;
                box-sizing: border-box;
            }

            body {
                border: 1px solid red;
            }

            div {
                height: 400px;
            }

        </style>
    </head>
    <body>
        <div>lorem</div>
    </body>
</html>

哪个被正确地渲染,主体的边框从一侧到另一侧:

enter image description here

然而,当我使用以下代码从此WebView生成PDF时:

class func generate() -> Data {

    // assign the print formatter to the print page renderer
    let renderer = UIPrintPageRenderer()
    let printFormatter = wkWebView.viewPrintFormatter()
    renderer.addPrintFormatter(printFormatter, startingAtPageAt: 0)

    // assign paperRect and printableRect values
    let page = CGRect(x: 0, y: 0, width: 595.2, height: 841.8) // A4, 72 dpi
    renderer.setValue(page, forKey: "paperRect")
    renderer.setValue(page, forKey: "printableRect")

    // create pdf context and draw each page
    let pdfData = NSMutableData()
    UIGraphicsBeginPDFContextToData(pdfData, .zero, nil)

    for i in 0..<renderer.numberOfPages {
        UIGraphicsBeginPDFPage()
        renderer.drawPage(at: i, in: UIGraphicsGetPDFContextBounds())
    }

    UIGraphicsEndPDFContext();

    // save data to a pdf file and return
    guard nil != (try? pdfData.write(to: outputURL, options: .atomic))
        else { fatalError("Error writing PDF data to file.") }

    return pdfData as Data
}

我得到了这个结果:

enter image description here

注意右侧存在边框/间距问题。有什么想法是什么可能会导致这种情况?
1个回答

0

对我来说,当我调整页面的宽度时,它有效了。所以试着调整595.2这个值。对我来说,一个完美的A4页面打印尺寸是612.2 x 1000.0。

let page = CGRect(x: 0, y: 0, width: 612.2, height: 1000.0)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接