2011-10-31 178 views
0

我在我的应用程序生成PDF报告,当页面内容超过一页如何填充内容,实际上在这种情况下,我试图通过给CGContextBeginPage()创建一个更多的新页面; 但它显示错误,如PDF生成动态内容

:CGContextEndPage:不嵌套调用此函数 - 结果将不会是你所期望的。 * ***:CGContextBeginPage:不要嵌套调用此函数 - 结果将不会是你所期望的。

有人可以告诉我如何在这种情况下创建pdf。

回答

0

您应该有一个变量来存储当前的Y位置,因为您正在布置内容,通过内容的高度(以及任何填充)递增该值。

每次你想渲染一些文本或图像等,检查你有足够的空间在渲染之前,如果没有结束当前页面,并开始一个新的。通过查看当前Y位置来检查空间,将内容高度添加到该位置并与页面矩形比较。

你所得到的错误是由于你嵌套PDF页面调用,OS预计以下办法...

CGContextBeginPage 
... render content for page 1 
CGContentEndPage 

CGContextBeginPage 
... render content page 2 
CGContentEndPage 

但是你的代码是最有可能的嵌套这些如下...

CGContextBeginPage 
... render content for page 1 
CGContextBeginPage 
... render content for page 2 
CGContextEndPage 
CGContextEndPage 
+0

谢谢Lee.I会检查它。 – boopathi

+0

Hello Lee 谢谢,我解决了这个问题,页面已创建,但没有写入该页面,下面显示的是我用来结束并创建新页面的代码if(y <= 40){y = 700; CGContextRestoreGState(pdfContext); UIGraphicsPopContext(); CGContextEndPage(pdfContext); CGContextBeginPage(pdfContext,&pageRect); UIGraphicsPushContext(pdfContext); CGContextSaveGState(pdfContext); } const char * str = [@“SO”UTF8String]; CGContextShowTextAtPoint(pdfContext,X,Y,STR,strlen的(STR)); x = x + 50; 请帮我解决这个问题。预先感谢 – boopathi

+0

你需要设置每个页面的字体和颜色.... –