Я пытаюсь сохранить текущий вид WKWebView в формате PDF.Это 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>
При правильном отображении граница тела переходит из стороны в сторону:
Однако, когда я генерирую PDF из этого WebView со следующим кодом:
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
}
В результате я получил это:
Обратите внимание на проблему с границей / интервалом справа.Есть идеи, что может вызвать это?