2011-10-31 279 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

你需要設置每個頁面的字體和顏色.... –