2014-01-20 60 views
2

我無法將我的PDF從單個UIView分解爲多個頁面。我試圖儘可能保持簡單。我有一個可以在高度上變化的UIScrollView。截至目前,我可以讓第一頁正確顯示,但之後沒有任何內容。我非常難以忍受這一點。下面是我有:從單個UIView生成多頁PDF(子視圖)

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();