#iphone #objective-c #ios4 #pdf-generation #quartz-graphics
#iPhone #objective-c #ios4 #генерация PDF #quartz-графика
Вопрос:
я создаю отчет в формате pdf в своем приложении, когда содержимое страницы превышает одну страницу как заполнить содержимое, на самом деле в этой ситуации я попытался создать еще одну новую страницу, указав CGContextBeginPage(); но он показывает ошибку, например
: CGContextEndPage: не вкладывайте вызовы в эту функцию — результаты будут не такими, как вы ожидаете. ****: CGContextBeginPage: не вкладывайте вызовы в эту функцию — результаты будут не такими, как вы ожидаете.
Может кто-нибудь сказать мне, как создать pdf в такой ситуации.
Ответ №1:
У вас должна быть переменная, которая сохраняет вашу текущую позицию Y при размещении содержимого, увеличивая это значение на высоту содержимого (и любое заполнение).
Каждый раз, когда вы хотите отобразить какой-либо текст или изображение и т. Д., Убедитесь, что у вас достаточно места на странице перед отображением, и если нет, завершите текущую страницу и начните новую. Проверьте пространство, посмотрев на текущую позицию Y, добавив к ней высоту содержимого и сравнив с прямоугольником страницы.
Ошибки, которые вы получаете, связаны с вложением вызовов страниц PDF, ОС ожидает следующий подход…
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
Комментарии:
1. Привет, Ли, спасибо, я исправил эту проблему, страница создана, но на этой странице ничего не написано, ниже показан код, который я использую для завершения и создания новой страницы, если (y<=40){ y = 700; CGContextRestoreGState(pdfContext); UIGraphicsPopContext(); CGContextEndPage(pdfContext); CGContextBeginPage(pdfContext, amp;pageRect); UIGraphicsPushContext(pdfContext); CGContextSaveGState(pdfContext); } const char *str=[@»SO» UTF8String]; CGContextShowTextAtPoint(pdfContext,x,y,str,strlen(str)); x= x 50; пожалуйста, помогите мнечтобы решить эту проблему. Заранее спасибо