Op-Bereik-gebaseerde eenvoudige-objectparsing

De eenheid HPDFParser parseert op zichzelf staande PDF-woordenboeken en -arrays zonder token- of geneste-container-deelstrings te kopiëren

Ingangspunten

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;

Het geretourneerde woordenboek of de array is in eigendom van de aanroeper en bevat normale persistente HotPDF-objecten zonder afhankelijkheid van de levensduur van de bronstring

Weergavestatistieken

THPDFParserViewStatistics stelt SourceBytes, TokenViewCount, MaterializedStringCount, MaterializedBytes, ObjectCount, ContainerCount, MaxDepth, ErrorCount en Valid bloot

Tokenweergaven tellen begrensde bronbereiken, terwijl de tellers voor gematerialiseerde strings bytes bestrijken die naar duurzame PDF-namen, -sleutels en -strings zijn gekopieerd

Ondersteunde objecten

De parser herkent namen, gehele getallen, reële getallen, booleans, nulls, indirecte verwijzingen, letterlijke strings, hexadecimale strings, arrays en woordenboeken

Letterlijke strings behouden geneste haakjes, geëscapete scheidingstekens, octale escapes en geëscapete regelcontinuties, terwijl PDF-witruimte en commentaren worden genegeerd

Niet-geëscapete CR-, CRLF- en LF-regeleindes binnen letterlijke strings decoderen naar één LF per regeleinde; geëscapete carriage returns zoals \r of \015 blijven CR-bytes en backslash-regelcontinuaties voegen geen bytes toe

Geneste containers delen één cursor over de onveranderlijke invoer, recursie is begrensd en dubbele woordenboeksleutels vervangen eerdere waarden met hoofdlettergevoelige matching

Misvormde scheidingstekens schuiven de herstelcursor op zonder aangrenzende geldige tokens over te slaan; array-inhoud die zonder openingshaak wordt aangeleverd, herstelt ook van verdwaalde sluitingshaken en rapporteert die in ErrorCount

Prestatiekenmerken

Namen en strings materialiseren eenmaal op hun persistente-objectgrens, numerieke conversie leest bronbytes rechtstreeks en een bewerkings-lokale open-geadresseerde index voorkomt kwadratische duplicaatscans bij het construeren van grote woordenboeken

Een Win32-regressiefixture met 30.000 paren reduceerde de toewijzingsbytes van vijf passes van 50.866.510 naar 17.936.800 en de verstreken tijd van 3.656 ms naar 46 ms

Zie ook: Schaalbare en willekeurig-toegankelijke PDF-lading, Begrensde PDF-parserbudgetten