Análisis de objetos simples basado en intervalos
La unidad HPDFParser analiza diccionarios y matrices PDF independientes sin copiar subcadenas de tokens o 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 la matriz devueltos pertenecen al llamador y contienen objetos HotPDF persistentes normales sin ninguna dependencia de la vida útil de la cadena de origen
Estadísticas de vista
THPDFParserViewStatistics expone SourceBytes, TokenViewCount, MaterializedStringCount, MaterializedBytes, ObjectCount, ContainerCount, MaxDepth, ErrorCount y Valid
Las vistas de token cuentan los intervalos de origen acotados, mientras que los contadores de cadenas materializadas cubren los bytes copiados en nombres, claves y cadenas PDF duraderos
Objetos admitidos
El analizador reconoce nombres, enteros, números reales, booleanos, nulos, referencias indirectas, cadenas literales, cadenas hexadecimales, matrices y diccionarios
Las cadenas literales conservan los paréntesis anidados, los delimitadores escapados, los escapes octales y las continuaciones de línea escapadas, mientras que los espacios en blanco y los comentarios PDF se ignoran
Los finales de línea CR, CRLF y LF sin escapar dentro de cadenas literales se descodifican como 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 está acotada y las claves de diccionario duplicadas reemplazan los valores anteriores con coincidencia sensible a mayúsculas y minúsculas
Los delimitadores malformados avanzan el cursor de recuperación sin saltarse tokens válidos adyacentes; los cuerpos de matriz suministrados sin corchete de apertura también se recuperan de corchetes de cierre extravíados y los notifican en ErrorCount
Características de rendimiento
Los nombres y las cadenas se materializan una vez en su límite de objeto persistente, la conversión numérica lee los bytes de origen directamente y un índice de direccionamiento abierto local a la operación evita los escaneos duplicados cuadráticos al construir diccionarios grandes
Un banco 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
Véase también: Carga de PDF escalable y de acceso aleatorio, Presupuestos acotados del analizador de PDF