【发布时间】:2020-04-02 21:40:55
【问题描述】:
我已经被困/研究这个问题好几天了,下面的方法成功地从常规大小的 UIView 创建了 pdf。但是,我需要位于 UIScrollview 内的 containerView 的内容。我的 containerView 的高度是 5000。有人可以帮我将 containerView 渲染成多个 PDF 页面,或者指导我找到更好的方法。 `func exportAsPdfFromView() -> 字符串 {
func screenShotScrollview() -> String {
let scrollView = waiverViews.scrollView
let pageDimensions = scrollView.bounds
let pageSize = pageDimensions.size
let totalSize = scrollView.contentSize
let numberOfPagesThatFitVertivally = Int(ceil(totalSize.height/pageSize.height))
let outputData = NSMutableData()
UIGraphicsBeginPDFContextToData(outputData, pageDimensions, nil)
let savedContentOffset = scrollView.contentOffset
let savedContentInset = scrollView.contentInset
scrollView.contentInset = UIEdgeInsets.zero
let origin = CGRect(x: 0, y: 0, width: pageSize.width, height: pageSize.height)
if let context = UIGraphicsGetCurrentContext() {
for indexVertical in 0..<numberOfPagesThatFitVertivally {
UIGraphicsBeginPDFPageWithInfo(origin, nil)
let offsetVertical = CGFloat(indexVertical) * pageSize.height
scrollView.contentOffset = CGPoint(x: 0, y: offsetVertical)
context.translateBy(x: 0, y: -offsetVertical)
scrollView.layer.render(in: context)
}
UIGraphicsEndPDFContext()
scrollView.contentInset = savedContentInset
scrollView.contentOffset = savedContentOffset
}
return self.saveViewPdf(data: outputData)
}
【问题讨论】: