Cross reference headless
HPDFHeadlessXRef fornisce l'indicizzazione validata di xref-stream e object-stream usata da THPDFHeadlessDocument; dizionari e header di object-stream usano il parser di oggetti condiviso, mentre i campi big-endian usano il lettore di byte Direct File condiviso
HPDFHeadlessDecodeXRefRows(Dictionary, DecodedBytes, MaxObjects, CancellationToken) legge le voci dirette Type, Size, W e Index opzionale dopo che il chiamante ha decodificato filtri e predictor
THPDFHeadlessXRefRows è un array di record THPDFHeadlessXRefRow contenenti ObjectNumber e il condiviso THPDFDirectXrefEntry come Entry; i tipi di voce zero, uno e due identificano oggetti free, direct e compressed
Le larghezze vanno da zero a otto byte, i campi omessi usano i default PDF, gli offset conservano la precisione Int64, e sovrapposizioni di sottosezioni, mismatch di lunghezza del payload, generazioni fuori intervallo e overflow unsigned vengono rifiutati prima di indicizzare gli oggetti
HPDFHeadlessReadObjectStreamIndex(Dictionary, DecodedBytes, MaxObjects, MaxDecodedBytes, CancellationToken) valida Type=ObjStm, N e First diretti, poi analizza l'header numerico tramite il parser condiviso
THPDFHeadlessObjectStreamMembers è un array di record THPDFHeadlessObjectStreamMember con ObjectNumber, Offset del payload decodificato a base zero e Length positiva; numeri di oggetto duplicati, coppie non intere, offset non validi e budget configurati vengono rifiutati
HPDFHeadlessObjectStreamBody(Members, DecodedBytes, MemberIndex, ExpectedObjectNumber) restituisce la slice esatta del membro dopo aver confrontato il numero autorevole del membro xref con l'header del suo contenitore; il chiamante documento analizza quella slice tramite il parser condiviso
EHPDFHeadlessXRefError riporta un messaggio e il flag read-only LimitExceeded, mentre la cancellazione solleva EHPDFOperationCancelled; i chiamanti possiedono dizionari e buffer decodificati e gli array restituiti contengono record per valore
Il provider gestisce indicizzazione e validazione dei byte; precedenza delle revisioni, merging di side-section ibride, decodifica dei filtri, decifratura, caching degli oggetti e proprietà del documento restano al loader del documento
Valori numerici esatti
Il parser condiviso conserva il token sorgente originale quando la conversione a Single arrotonderebbe il valore o la sua magnitudine supera 16777216; i lettori di interi cross-reference e object-stream preferiscono quel token per offset e indici Int64 esatti, mentre i piccoli interi esatti conservano il percorso efficiente in allocazioni
I test usano il writer condiviso e PDF indipendenti a oggetti compressi, coprono offset a 40 bit, larghezze/default, predictor, range sparsi, precedenza ibrida, indici membro malformati e cicli di revisione, e preservano le soglie originali di allocazione e throughput del parser