LoadFromRangeSource

Керування документами, продуктивність

Опис

Завантажує та вибирає PDF через синхронний зворотний виклик довільного доступу, дозволяючи 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Авторитетний загальний розмір джерела в байтах
ReadCallbackЗворотний виклик, що копіює байти для абсолютного зсуву джерела
PasswordПароль для відкриття PDF або порожній рядок для незашифрованого документа
ChunkSizeВирівняна гранулярність отримання діапазонів; нуль обирає типові 64 КіБ, а значення менші за 4096 також використовують типове
CacheLimitBytesМаксимальна кількість байтів, утримуваних між вікнами за принципом найменш нещодавно використаних; нуль обирає типові 4 МіБ, а значення менші за один блок підіймаються до одного блока
CoalesceWindowMSВікно збирання для першого некешованого блока кожного абсолютного читання; 2 мілісекунди є типовим, а нуль вимикає початкову затримку
AvailabilityCallbackНеобов'язкова перевірка без завантаження для байтових діапазонів, уже наявних у прогресивному сховищі

Повернуті значення

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

Примітки

Зворотний виклик читання отримує абсолютні зсуви з нумерацією від нуля і мусить записати не більше ніж Count байтів до Buffer, повертаючи кількість записанихЦіль зворотного виклику та її основне сховище мусять залишатися чинними, доки завантажений документ не закриється, бо рендеринг сторінок, витягування та збереження можуть пізніше запросити додаткові діапазониВиклики є синхронними і можуть надходити в непослідовному порядку; короткий результат приймається на фізичному кінці джерела, тоді як несподіваний нульовий результат змушує завантаження чи поточну відкладену операцію зазнати невдачіКоли призначено

Ціль зворотного виклику та її базове сховище повинні лишатися чинними, доки завантажений документ не закрито, бо рендеринг сторінок, вилучення й збереження можуть пізніше запросити додаткові діапазони

Виклики синхронні та можуть надходити в непослідовному порядку; короткий результат приймається на фізичному кінці джерела, тоді як несподіваний нульовий результат зумовлює невдачу завантаження чи поточної відкладеної операції

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

Nil зберігає синхронну поведінку, трактуючи кожен чинний діапазон джерела як доступнийВирівняні блоки уникають дубльованих транспортних отримань для перекривних читань, тоді як байтовий бюджет обмежує утримуваний payload незалежно від розміру документаВідкладені читання об'єктів і сегментів використовують абсолютні зсуви, тож паралельна робота спільно використовує запити одного блока та зливає сусідні блоки з черги, не змінюючи позиційний курсор потокуЗворотні виклики джерела серіалізуються і не мусять рекурсивно читати з того самого потоку діапазонівВикористовуйте

Ціль зворотного виклику та її базове сховище повинні лишатися чинними, доки завантажений документ не закрито, бо рендеринг сторінок, вилучення й збереження можуть пізніше запросити додаткові діапазони

Виклики синхронні та можуть надходити в непослідовному порядку; короткий результат приймається на фізичному кінці джерела, тоді як несподіваний нульовий результат зумовлює невдачу завантаження чи поточної відкладеної операції

Ціль зворотного виклику та її базове сховище повинні лишатися чинними, доки завантажений документ не закрито, бо рендеринг сторінок, вилучення й збереження можуть пізніше запросити додаткові діапазони

GetRangeSourceDataAvailability

GetRangeSourceCacheInfo, щоб перевірити залежності сторінки, форми чи непрямих об'єктів, не читаючи діапазони, повідомлені відсутнімиВикористовуйте SetRangeSourceCacheLimit, ClearRangeSourceCache і

Виклики синхронні та можуть надходити в непослідовному порядку; короткий результат приймається на фізичному кінці джерела, тоді як несподіваний нульовий результат зумовлює невдачу завантаження чи поточної відкладеної операції