UIScrollView的PDF格式为空白

时间:2015-08-05 11:39:04

标签: ios swift pdf uiscrollview core-graphics

我有一个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,所以我希望它包含一些东西(视图不包含任何图像)。但是,当我尝试打开它时,我只是得到一个空白页面。

2 个答案:

答案 0 :(得分:1)

看起来您唯一的问题是在上下文中开始新的pdf页面。将CGPDFContextBeginPage(pdfContext, nil)替换为UIGraphicsBeginPDFPage(),一切都应该有效。

答案 1 :(得分:0)

使用

contentView.drawViewHierarchyInRect(bounds, afterScreenUpdates: false)