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 і
Виклики синхронні та можуть надходити в непослідовному порядку; короткий результат приймається на фізичному кінці джерела, тоді як несподіваний нульовий результат зумовлює невдачу завантаження чи поточної відкладеної операції