Swift PDF 渲染任何 UIView 或 UIViewController PDFKit

Posted

技术标签:

【中文标题】Swift PDF 渲染任何 UIView 或 UIViewController PDFKit【英文标题】:Swift PDF render any UIView or UIViewController PDFKit 【发布时间】:2019-11-06 13:54:40 【问题描述】:

我做了一些研究,发现我可以使用PDFKit 库绘制图像、字符串、形状。有什么简单的方法可以在 PDF 文档中绘制 UIViewUIViewController 的视图?

我更喜欢 Swift 的答案,但我也会接受 Objective-C。

【问题讨论】:

【参考方案1】:

UIView 以及包含在 UIViewController 中的视图,都可以使用图层进行渲染:

获取上下文:

let context = UIGraphicsGetCurrentContext()!

界面视图:

view.layoutIfNeeded()
view.layer.render(in: context)

UIViewController

controller.loadViewIfNeeded()
controller.view.layer.render(in: context)

完整的工作脚本:

let pdfMetadata =
[
    kCGPDFContextCreator: "MyAppName",
    kCGPDFContextAuthor: "TheAuthor"
]
UIGraphicsBeginPDFContextToFile(filePath, CGRect.zero, pdfMetadata)

let context = UIGraphicsGetCurrentContext()!

UIGraphicsBeginPDFPage()

controller.loadViewIfNeeded()
controller.view.layer.render(in: context)

UIGraphicsEndPDFContext()

【讨论】:

以上是关于Swift PDF 渲染任何 UIView 或 UIViewController PDFKit的主要内容,如果未能解决你的问题,请参考以下文章

如何将任何UIView渲染为UIImage [关闭]

在屏幕外渲染 uiview 以捕获为 uiimage

在 Swift 中将 UIView 保存和检索为 NSData

swift 给UIView添加圆角,避免离屏渲染

Swift 3:从“UIView”隐式强制表达的表达式?去任何

UIView中的UITableView与swift