THotPDF.OpenLoadedPageContentStream

Открывает значение /Contents загруженной страницы как единый read-only логический stream во владении вызывающего кода

Объявление на Delphi

function OpenLoadedPageContentStream(
  PageIndex: Integer;
  out ContentStream: TStream
): boolean;

Объявление на C++Builder

bool __fastcall OpenLoadedPageContentStream(
  int PageIndex,
  System::Classes::TStream *&ContentStream
);

Результат равен true, если у загруженной страницы с нумерацией с нуля есть хотя бы один валидный content stream

Поведение

Одиночный content stream и массив /Contents используют один и тот же интерфейс; между соседними сегментами вставляется один байт перевода строки, чтобы токены не склеивались через границу сегмента

Нефильтрованные сегменты остаются привязанными к источнику и читаются без полной материализации, а фильтрованные лениво декодируются в один адаптивный временный stream, причём предыдущий декодированный сегмент освобождается, как только чтение уходит в другое место

Длины фильтрованных сегментов выясняются по мере необходимости, поэтому чтение известного префикса не декодирует последующие сегменты; запрос Size или позиционирование от конца вычисляет все оставшиеся длины

Stream поддерживает произвольное чтение и позиционирование, но отклоняет Write и SetSize

Владение

Вызывающий код обязан освободить ContentStream; экземпляр THotPDF, которому принадлежит документ, вместе с самим загруженным документом должны жить дольше возвращённого stream

С помощью GetLastPageContentSequenceInfo можно посмотреть телеметрию работы с последовательностью и объём удерживаемой памяти