【发布时间】:2011-11-28 06:16:00
【问题描述】:
我正在尝试将 scrollview 的内容绘制到 PDF 上下文中,我遇到了 pagination 的问题。
我使用的以下代码:
- (void)renderTheView:(UIView *)view inPDFContext:(CGContextRef)pdfContext
{
// Creating frame.
CGFloat heightOfPdf = [[[self attributes] objectForKey:SRCPdfHeight] floatValue];
CGFloat widthOfPdf = [[[self attributes] objectForKey:SRCPdfWidth] floatValue];
CGRect pdfFrame = CGRectMake(0, 0, widthOfPdf, heightOfPdf);
CGRect viewFrame = [view frame];
if ([view isKindOfClass:[UIScrollView class]])
{
viewFrame.size.height = ((UIScrollView *)view).contentSize.height;
[view setFrame:viewFrame];
}
// Calculates number of pages.
NSUInteger totalNumberOfPages = ceil(viewFrame.size.height/heightOfPdf);
// Start rendering.
for (NSUInteger pageNumber = 0; pageNumber<totalNumberOfPages; pageNumber++)
{
// Starts our first page.
CGContextBeginPage (pdfContext, &pdfFrame);
// Turn PDF upsidedown
CGAffineTransform transform = CGAffineTransformIdentity;
transform = CGAffineTransformMakeTranslation(0,view.bounds.size.height);
transform = CGAffineTransformScale(transform, 1.0, -1.0);
CGContextConcatCTM(pdfContext, transform);
// Calculate amount of y to be displace.
CGFloat ty = (heightOfPdf*(pageNumber));
CGContextTranslateCTM(pdfContext,0,-ty);
[view.layer renderInContext:pdfContext];
// We are done drawing to this page, let's end it.
CGContextEndPage (pdfContext);
}
}
它创建了所需数量的页面,但错误地放置了内容。下图说明。
我的代码有什么问题吗?
【问题讨论】:
-
好奇如果您将子视图从 ScrollView 中取出,事情是如何工作的?
-
您需要添加到 pdf 页面的部分放在滚动内的单独视图中,并将视图呈现到 pdf 上下文
-
假设一个答案解决了这个问题或者您找到了解决方案,您可以接受或输入它以关闭未解决的问题吗?
标签: iphone ios pdf quartz-2d cgcontext