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
| SourceSize | La taille totale de source faisant autorité, en octets |
|---|---|
| ReadCallback | Le callback qui copie les octets pour un décalage de source absolu |
| Password | Le mot de passe utilisé pour ouvrir le PDF, ou une chaîne vide pour un document non chiffré |
| ChunkSize | La 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 |
| CacheLimitBytes | Le 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 |
| CoalesceWindowMS | La 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 |
| AvailabilityCallback | Un test facultatif sans récupération des plages d'octets déjà présentes dans le stockage progressif |
Valeurs de retour
| 0 | Les arguments de source étaient invalides ou le PDF n'a pas pu être chargé ; inspectez LastErrorCode |
|---|---|
| 1 | Le 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