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

时间:2018-12-29 12:04:51

标签: swift pdf-generation wkwebview

我正在尝试将当前的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

请注意,右侧存在边框/间距问题。有什么想法可能导致这种情况吗?

0 个答案:

没有答案