2011-10-31 2 views
0

내 앱에서 PDF 보고서를 생성 중입니다. 페이지 콘텐츠가 한 페이지를 초과하면 콘텐츠를 채우는 방법이 실제로 CGContextBeginPage()를 사용하여 새 페이지를 하나 더 만들려고했습니다. 과 비슷하지만 오류를 표시하고 있습니다.동적 콘텐츠 용 Pdf 생성

: CGContextEndPage :이 함수를 호출 할 때 중첩하지 마십시오. 예상 한 결과가 아닙니다. * *** : CGContextBeginPage :이 함수에 대한 호출을 중첩하지 마십시오. 예상 한 결과가 아닙니다.

누군가 이런 상황에서 pdf를 만드는 방법을 말해 줄 수 있습니까?

답변

0

콘텐츠를 배치 할 때 현재 Y 위치를 저장하는 변수가 있어야하며이 값을 콘텐츠 높이 (및 모든 패딩)만큼 증가시켜야합니다.

텍스트 또는 이미지 등을 렌더링 할 때마다 렌더링 전에 페이지에 충분한 공간이 있는지 확인하고 현재 페이지를 끝내지 않고 새 페이지를 시작하십시오. 현재 Y 위치를보고 내용 높이를 추가하고 페이지 rect와 비교하여 공간을 확인하십시오.

당신이지고 오류가 당신 중첩 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

각 페이지마다 글꼴 및 색상을 설정해야합니다 .... –