Для одного гигабайтового документа вы собираетесь рендерить только его часть за один раз.Общий подход состоял бы в том, чтобы потоковое чтение части документа и рендеринг этой части, а затем поток в больше, когда пользователь прокручивает вниз.Вы можете попробовать прочитать документ по частям, чтобы определить общую высоту, если хотите, чтобы полоса прокрутки работала правильно.Вам необходимо реализовать собственную схему разбиения на страницы виртуальной памяти, чтобы вам не нужно было хранить весь один гигабайтный документ в памяти плюс память, необходимую для его рендеринга.