Берёшь и по честному считаешь. Есть строка из 100 символов различной высоты и ширины. Вычисляешь, сколько символов влезло в строку, остальные переносишь. И плюсуешь высоту. И так до тех пор, пока не кончатся буквы и картинки. Долго, муторно, но будет работать. GOF на таком примере объясняли какой-то ООП паттерн, уже забыл какой. Там каждая буква в виде объекта у них... Если перенос слов делать не надо, то лучше рассматривать не на уровне отдельных букв, а на уровне слов - меньше объектов будет.
Но у меня другой вопрос: зачем менять количество страниц? Вот ты читаешь и помнишь, что остановился на 113 странице. Потом увеличил шрифт и уже не найдешь, где читал. Может просто "высоту" страниц менять? Это же не полиграфия, ничто не мешает сделать страницы длиннее. Будет гораздо эффективнее с точки зрения работы - данные можно разбить по страницам и не придётся подгружать всю книгу, просто чтобы страницы посчитать.