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