LoadFromRangeSource

Gestion de documents, performances

Description

Charge et sélectionne un PDF via un callback synchrone à accès aléatoire, permettant aux clients HTTP, bases de données, magasins d'objets et fournisseurs de stockage personnalisés de fournir uniquement les plages d'octets touchées par l'analyseur

Syntaxe

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;

Paramètres

SourceSizeLa taille totale de source faisant autorité, en octets
ReadCallbackLe callback qui copie les octets pour un décalage de source absolu
PasswordLe mot de passe utilisé pour ouvrir le PDF, ou une chaîne vide pour un document non chiffré
ChunkSizeLa granularité alignée d'extraction de plages ; zéro sélectionne la valeur par défaut de 64 KiB et les valeurs inférieures à 4096 utilisent également la valeur par défaut
CacheLimitBytesLe maximum d'octets conservés entre les fenêtres les moins récemment utilisées ; zéro sélectionne la valeur par défaut de 4 MiB et les valeurs inférieures à un segment sont ramenées à un segment
CoalesceWindowMSLa fenêtre de collecte du premier segment non en cache de chaque lecture absolue ; 2 millisecondes par défaut et zéro désactive le délai initial
AvailabilityCallbackUn test facultatif sans récupération des plages d'octets déjà présentes dans le stockage progressif

Valeurs de retour

0Les arguments de source étaient invalides ou le PDF n'a pas pu être chargé ; inspectez LastErrorCode
1Le document a été chargé et sélectionné

Remarques

Le callback de lecture reçoit des décalages absolus à base zéro et ne doit pas écrire plus de Count octets dans Buffer, en renvoyant le nombre écrit

La cible du callback et son stockage sous-jacent doivent rester valides jusqu'à la fermeture du document chargé, car le rendu de pages, l'extraction et l'enregistrement peuvent demander des plages supplémentaires plus tard

Les appels sont synchrones et peuvent arriver dans un ordre non séquentiel ; un résultat court est accepté à la fin physique de la source, tandis qu'un résultat zéro inattendu fait échouer le chargement ou l'opération différée en cours

Quand AvailabilityCallback est affecté, renvoyez une valeur non nulle seulement quand la plage demandée complète peut être lue immédiatement sans transport ni E/S bloquante

Une plage en cache est disponible quel que soit le résultat du callback ; un callback Nil préserve le comportement synchrone en traitant toute plage source valide comme disponible

Les blocs alignés évitent les doublements de transport pour les lectures chevauchantes, tandis que le budget d'octets borne la charge conservée indépendamment de la taille du document

Les lectures différées d'objets et de segments utilisent des décalages absolus ; le travail concurrent partage donc les requêtes d'un même bloc et fusionne les blocs adjacents en file sans changer le curseur positionnel du flux

Les callbacks de source sont sérialisés et ne doivent pas lire récursivement dans le même flux de plages

Utilisez GetRangeSourceDataAvailability pour tester les dépendances de page, de formulaire ou d'objet indirect sans lire les plages signalées comme manquantes

Utilisez GetRangeSourceCacheInfo, SetRangeSourceCacheLimit et ClearRangeSourceCache pour observer ou changer le cache actif

La bibliothèque est propriétaire de son flux de plages interne avec recherche, mais pas de la cible du callback ni de son stockage sous-jacent