从单个UIView w / subviews生成多页PDF

时间:2014-01-20 19:23:14

标签: ios objective-c pdf uiview uiscrollview

我无法将单个UIView中的PDF分成多个页面。我想尽量保持这个简单。我有一个高度不同的UIScrollView。截至目前,我可以正确显示第一页,但之后没有任何内容。我在这一点上很难过。这就是我所拥有的:

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并根据这个框架挑选出“页面”,但这并不完全正常。任何帮助,将不胜感激。我已经阅读了关于这个主题的苹果文档,并且在将其转换为我自己的应用程序时遇到了问题。

1 个答案:

答案 0 :(得分: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();