LoadFromRangeSource

Управление документами, производительность

Описание

Загружает и выбирает PDF через синхронный callback произвольного доступа, позволяя HTTP-клиентам, базам данных, хранилищам объектов и пользовательским поставщикам хранилищ передавать только те байтовые диапазоны, которых касается анализатор

Синтаксис

Delphi

Function TPDFlib.LoadFromRangeSource(SourceSize: Int64;
  ReadCallback: TPDFlibRangeReadEvent; Const Password: WideString;
  ChunkSize: LongInt= 0; CacheLimitBytes: Int64= 0;
  CoalesceWindowMS: Cardinal= PDF_NET_DEFAULT_COALESCE_WINDOW_MS;
  AvailabilityCallback: TPDFlibRangeAvailabilityEvent= Nil): Integer;

Параметры

SourceSizeАвторитетный общий размер источника в байтах
ReadCallbackCallback, копирующий байты для абсолютного смещения источника
PasswordПароль для открытия PDF или пустая строка для незашифрованного документа
ChunkSizeВыровненная гранулярность выборки диапазонов; ноль выбирает значение по умолчанию 64 КиБ, а значения ниже 4096 также используют значение по умолчанию
CacheLimitBytesМаксимум байтов, удерживаемых между окнами наименее давно использовавшихся; ноль выбирает значение по умолчанию 4 МиБ, а значения ниже одного блока поднимаются до одного блока
CoalesceWindowMSОкно накопления для первого некэшированного блока каждого абсолютного чтения; по умолчанию 2 миллисекунды, а ноль отключает начальную задержку
AvailabilityCallbackНеобязательная проверка без загрузки байтовых диапазонов, уже присутствующих в прогрессивном хранилище

Возвращаемые значения

0Аргументы источника были недопустимы или PDF не удалось загрузить; проверьте LastErrorCode
1Документ загружен и выбран

Примечания

Callback чтения получает абсолютные смещения от нуля и должен записывать в Buffer не более Count байтов, возвращая число записанных

Цель callback и ее основное хранилище должны оставаться действительными до закрытия загруженного документа, поскольку рендеринг страниц, извлечение и сохранение могут позже запросить дополнительные диапазоны

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

Когда назначен AvailabilityCallback, возвращайте ненулевое значение только если весь запрошенный диапазон может быть прочитан немедленно, без транспорта или блокирующего ввода-вывода

Кэшированный диапазон доступен независимо от результата callback; callback Nil сохраняет синхронное поведение, считая каждый допустимый диапазон источника доступным

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

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

Callback источника сериализуются и не должны рекурсивно читать из того же потокового источника диапазонов

Используйте GetRangeSourceDataAvailability, чтобы проверять зависимости страниц, форм или косвенных объектов, не читая диапазоны, сообщенные как отсутствующие

GetRangeSourceCacheInfo, чтобы проверить зависимости страниц, форм или косвенных объектов, не читая диапазоны, сообщенные как отсутствующиеИспользуйте SetRangeSourceCacheLimit, ClearRangeSourceCache и

Библиотека владеет своим внутренним позиционируемым потоком диапазонов, но не владеет целью callback и ее основным хранилищем