2014-01-20 3 views
2

У меня возникли проблемы с распространением моего PDF-файла на несколько страниц из одного UIView. Я стараюсь держать это как можно проще. У меня есть UIScrollView, который может отличаться по высоте. На данный момент я могу правильно отобразить первую страницу, но ничего не получилось. На данный момент я очень взволнован. Вот что у меня есть:Создание многостраничного PDF-файла из одного UIView w/subviews

NSMutableData *pdfData = [NSMutableData data]; 

UIGraphicsBeginPDFContextToData(pdfData, CGRectZero, nil); 

CGContextRef pdfContext = UIGraphicsGetCurrentContext(); 
NSInteger pageHeight = 867; 

for (int originY = 0; originY < self.scrollView.contentSize.height; originY += pageHeight) { 

    // Start a new page. 
    UIGraphicsBeginPDFPageWithInfo(CGRectMake(0,originY,768,pageHeight), nil); 

    [self.scrollView.layer renderInContext:pdfContext]; 

    for (UIView *subview in self.scrollView.subviews) { 
     [subview.layer renderInContext:pdfContext]; 
    } 

} 

UIGraphicsEndPDFContext(); 

Я пытаюсь пройти этот единственный UIScrollView и выбрать на «страницы» на основе этого кадра, но это точно не работает. Любая помощь будет оценена по достоинству. Я прочитал яблочные документы по этой теме и имел проблемы с переводом в мое собственное приложение.

+0

Вы смогли это решить? – GenieWanted

ответ

3

Это работало очень хорошо для меня. Сделайте вашу жизнь проще и просто вызовите CGContextTranslateCTM.

NSInteger pageHeight = 792; // Standard page height - adjust as needed 
NSInteger pageWidth = 612; // Standard page width - adjust as needed 

/* CREATE PDF */ 
NSMutableData *pdfData = [NSMutableData data]; 
UIGraphicsBeginPDFContextToData(pdfData, CGRectMake(0,0,pageWidth,pageHeight), nil); 
CGContextRef pdfContext = UIGraphicsGetCurrentContext(); 
for (int page=0; pageHeight * page < scrollView.frame.size.height; page++) 
{ 
    UIGraphicsBeginPDFPage(); 
    CGContextTranslateCTM(pdfContext, 0, -pageHeight * page); 
    [scrollView.layer renderInContext:pdfContext]; 
} 

UIGraphicsEndPDFContext(); 
Смежные вопросы