2011-10-31 10 views
0

私のアプリケーションでpdfレポートを生成しています。ページのコンテンツが1ページを超えていると、実際にこの状況でCGContextBeginPage()を指定してもう1つのページを作成しようとしました。 のようにエラーを表示していますが、動的コンテンツ用の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

ありがとうございます。確認します。 – 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

あなたは各ページのフォントと色を設定する必要があります.... –

関連する問題