У вас должна быть переменная, которая хранит вашу текущую позицию 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