2015-08-05 2 views
1

У меня есть UIScrollView, который я хочу экспортировать в файл PDF. Вид прокрутки содержит другой вид (содержание), который фактически содержит видимое содержание:PDF из UIScrollView пуст

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 КБ, поэтому я ожидаю, что он будет содержать некоторые вещи (представление не содержит никаких изображений). Однако, когда я пытаюсь открыть его, я просто получаю пустую страницу.

ответ

1

Похоже, ваша единственная проблема начинает новую страницу в формате PDF в контексте. Замените CGPDFContextBeginPage(pdfContext, nil) на UIGraphicsBeginPDFPage(), и все должно работать.

+0

Кроме того, 'CGContextScaleCTM' и' CGContextTranslateCTM' должны быть вызваны до 'UIGraphicsBeginPDFPage()'. В противном случае параметры не влияют на результат. – Bastian

0

Использование

contentView.drawViewHierarchyInRect(bounds, afterScreenUpdates: false) 
+0

Это ничего не меняет. – Bastian

Смежные вопросы