UIScrollView 中的 PDF 为空白
PDF from UIScrollView is blank
我有一个 UIScrollView,我想将其导出为 PDF 文件。滚动视图包含另一个实际包含可见内容的视图(内容视图):
scrollView : UIScrollView
-> contentView : UIView
-> view1 : UIView
...
-> view2 : UIView
...
...
PDF 导出代码为:
func generatePDFData() -> NSData {
// I first tried to use the scroll view but the result was the same
let bounds = contentView.bounds
let pdfData = NSMutableData()
UIGraphicsBeginPDFContextToData(pdfData, bounds, nil)
let pdfContext = UIGraphicsGetCurrentContext()
CGContextSetInterpolationQuality(pdfContext, kCGInterpolationMedium)
CGContextSetRenderingIntent(pdfContext, kCGRenderingIntentDefault)
CGPDFContextBeginPage(pdfContext, nil)
// without the following two settings, the result remains the same
CGContextScaleCTM(pdfContext,1.0,-1.0)
CGContextTranslateCTM(pdfContext,0.0,-bounds.size.height)
contentView.layer.renderInContext(pdfContext)
UIGraphicsEndPDFContext()
return pdfData
}
然后我使用数据生成 PDF 文件。生成的文件大小约为 120 KB,因此我希望它包含一些内容(视图不包含任何图像)。但是,当我尝试打开它时,我只看到一个空白页面。
使用
contentView.drawViewHierarchyInRect(bounds, afterScreenUpdates: false)
看来您唯一的问题是在上下文中开始新的 pdf 页面。将 CGPDFContextBeginPage(pdfContext, nil)
替换为 UIGraphicsBeginPDFPage()
,一切正常。
我有一个 UIScrollView,我想将其导出为 PDF 文件。滚动视图包含另一个实际包含可见内容的视图(内容视图):
scrollView : UIScrollView
-> contentView : UIView
-> view1 : UIView
...
-> view2 : UIView
...
...
PDF 导出代码为:
func generatePDFData() -> NSData {
// I first tried to use the scroll view but the result was the same
let bounds = contentView.bounds
let pdfData = NSMutableData()
UIGraphicsBeginPDFContextToData(pdfData, bounds, nil)
let pdfContext = UIGraphicsGetCurrentContext()
CGContextSetInterpolationQuality(pdfContext, kCGInterpolationMedium)
CGContextSetRenderingIntent(pdfContext, kCGRenderingIntentDefault)
CGPDFContextBeginPage(pdfContext, nil)
// without the following two settings, the result remains the same
CGContextScaleCTM(pdfContext,1.0,-1.0)
CGContextTranslateCTM(pdfContext,0.0,-bounds.size.height)
contentView.layer.renderInContext(pdfContext)
UIGraphicsEndPDFContext()
return pdfData
}
然后我使用数据生成 PDF 文件。生成的文件大小约为 120 KB,因此我希望它包含一些内容(视图不包含任何图像)。但是,当我尝试打开它时,我只看到一个空白页面。
使用
contentView.drawViewHierarchyInRect(bounds, afterScreenUpdates: false)
看来您唯一的问题是在上下文中开始新的 pdf 页面。将 CGPDFContextBeginPage(pdfContext, nil)
替换为 UIGraphicsBeginPDFPage()
,一切正常。