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 можно посмотреть телеметрию работы с последовательностью и объём удерживаемой памяти