Span-baserad parsning av enkla objekt
Enheten HPDFParser parsar fristående PDF-ordlistor och arrayer utan att kopiera token- eller nästlade containerdelsträngar
Ingångspunkter
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;
Den returnerade ordlistan eller arrayen ägs av anroparen och innehåller normala beständiga HotPDF-objekt utan beroende av källsträngens livslängd
Vystatistik
THPDFParserViewStatistics exponerar SourceBytes, TokenViewCount, MaterializedStringCount, MaterializedBytes, ObjectCount, ContainerCount, MaxDepth, ErrorCount och Valid
Tokenvyer räknar avgränsade källintervall, medan materialiserade strängräknare täcker byte som kopierats till beständiga PDF-namn, nycklar och strängar
Objekt som stöds
Parsern känner igen namn, heltal, reella tal, booleska värden, null-värden, indirekta referenser, litterala strängar, hexadecimala strängar, arrayer och ordlistor
Litterala strängar bevarar nästlade parenteser, escaped-avgränsare, oktala escapes och escaped radfortsättningar, medan PDF-mellanslag och kommentarer ignoreras
Oescaped CR-, CRLF- och LF-radslut inuti litterala strängar avkodas till en LF per radslut; escaped vagnretur som \r eller \015 förblir CR-byte, och radfortsättningar med omvänt snedstreck lägger till inga byte
Nästlade containrar delar en enda markör över den oföränderliga indatan, rekursionen är begränsad och duplicerade ordlistenycklar ersätter tidigare värden med skiftlägeskänslig matchning
Felformade avgränsare flyttar återställningsmarkören framåt utan att hoppa över närliggande giltiga token; arraykroppar som levereras utan inledande hakparentes återställer sig också från felaktiga avslutande hakparenteser och rapporterar dem i ErrorCount
Prestandaegenskaper
Namn och strängar materialiseras en gång vid sin beständiga objektsgräns, numerisk konvertering läser källbytes direkt och en operationslokal öppen-adresserad index förhindrar kvadratisk duplikatgenomsökning vid byggandet av stora ordlistor
En 30 000-par-Win32-regressionsfixtur minskade allokeringsbyte för fem pass från 50,866,510 till 17,936,800 och förfluten tid från 3,656 ms till 46 ms
Se även: Scalable and Random-Access PDF Loading, Bounded PDF Parser Budgets