Parseo de objetos simples basado en spans
La unidad HPDFParser parsea diccionarios y arreglos PDF independientes sin copiar subcadenas de tokens ni de contenedores anidados
Puntos de entrada
function HPDFParserParseSimpleDictionary(
const Data: AnsiString;
RecursionLevel: Integer = 0): THPDFDictionaryObject;
function HPDFParserParseSimpleDictionaryWithStatistics(
const Data: AnsiString;
out Statistics: THPDFParserViewStatistics;
RecursionLevel: Integer = 0): THPDFDictionaryObject;
function HPDFParserParseSimpleArray(
const Data: AnsiString): THPDFArrayObject;
function HPDFParserParseSimpleArrayWithStatistics(
const Data: AnsiString;
out Statistics: THPDFParserViewStatistics): THPDFArrayObject;
El diccionario o arreglo devuelto es propiedad del llamador y contiene objetos persistentes normales de HotPDF, sin dependencia del lifetime del string de origen
Estadísticas de vistas
THPDFParserViewStatistics expone SourceBytes, TokenViewCount, MaterializedStringCount, MaterializedBytes, ObjectCount, ContainerCount, MaxDepth, ErrorCount y Valid
Las vistas de tokens cuentan rangos de origen acotados, mientras que los contadores de strings materializados cubren los bytes copiados en nombres, claves y strings PDF duraderos
Objetos soportados
El parser reconoce nombres, enteros, números reales, booleanos, nulls, referencias indirectas, literal strings, hexadecimal strings, arreglos y diccionarios
Las literal strings preservan paréntesis anidados, delimitadores escapados, escapes octales y continuaciones de línea escapadas, mientras que el whitespace PDF y los comentarios se ignoran
Los finales de línea CR, CRLF y LF sin escapar dentro de las literal strings se decodifican a un LF por final de línea; los retornos de carro escapados como \r o \015 permanecen como bytes CR, y las continuaciones de línea con barra invertida no añaden bytes
Los contenedores anidados comparten un único cursor sobre la entrada inmutable, la recursión queda acotada, y las claves duplicadas de diccionarios reemplazan los valores anteriores con matching sensible a mayúsculas y minúsculas
Los delimitadores malformados hacen avanzar el cursor de recuperación sin saltarse los tokens válidos adyacentes; los cuerpos de arreglo suministrados sin corchete de apertura también se recuperan de los corchetes de cierre sueltos y los reportan en ErrorCount
Características de rendimiento
Los nombres y strings se materializan una sola vez en su frontera de objeto persistente, la conversión numérica lee los bytes de origen directamente, y un índice open-addressed local a la operación evita escaneos cuadráticos de duplicados mientras se construyen diccionarios grandes
Un fixture de regresión Win32 de 30,000 pares redujo los bytes de asignación de cinco pasadas de 50,866,510 a 17,936,800 y el tiempo transcurrido de 3,656 ms a 46 ms
Vea también: Scalable and Random-Access PDF Loading, Bounded PDF Parser Budgets