Parsiranje jednostavnih objekata zasnovano na rasponima

Jedinica HPDFParser parsira samostalne PDF rečnike i nizove bez kopiranja tokena ili podstringova ugnježdenih kontejnera

Ulazne tačke

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;

Vraćeni rečnik ili niz je u vlasništvu pozivaoca i sadrži normalne trajne HotPDF objekte bez zavisnosti od životnog veka izvorne string

Statistika prikaza

THPDFParserViewStatistics izlaže SourceBytes, TokenViewCount, MaterializedStringCount, MaterializedBytes, ObjectCount, ContainerCount, MaxDepth, ErrorCount i Valid

Prikazi tokena broje ograničene opsege izvora, dok brojači materijalizovanih stringova pokrivaju bajtove kopirane u trajne PDF imena, ključeve i stringove

Podržani objekti

Parser prepoznaje imena, cele brojeve, realne brojeve, boolean vrednosti, null vrednosti, indirektne reference, literal stringove, heksadecimalne stringove, nizove i rečnike

Literal stringovi čuvaju ugnježdene zagrade, izbegnute delimitere, oktalne begove i izbegnute nastavke linije, dok se PDF belina i komentari ignorišu

Neescapovani CR, CRLF i LF završeci redova unutar literal stringova dekodiraju se u jedan LF po završetku reda; escapovani znakovi za povratak na početak reda poput ili ostaju CR bajtovi, a nastavci linije kosom crtom ne dodaju bajtove

Ugnježdeni kontejneri dele jedan kursor nad nepromenljivim ulazom, rekurzija je ograničena i duplikati ključeva rečnika zamenjuju ranije vrednosti podudaranjem osetljivim na velika i mala slova

Neispravni delimiteri pomeraju kursor oporavka bez preskakanja susednih važećih tokena; tela nizova data bez otvorene uglaste zagrade takođe se oporavljaju od promašenih zatvorenih zagrada i prijavljuju ih u ErrorCount

Karakteristike performansi

Imena i stringovi se materijalizuju jednom na svojoj granici trajnog objekta, numerička konverzija čita izvorne bajtove direktno i indeks otvorenog adresiranja lokalan za operaciju sprečava kvadratno skeniranje duplikata dok gradi velike rečnike

Win32 regresiona učvršćena komponenta od 30.000 parova smanjila je bajtove alokacije pet prolaza sa 50.866.510 na 17.936.800 i proteklo vreme sa 3.656 ms na 46 ms

Pogledajte takođe: Skalabilno učitavanje PDF-a sa nasumičnim pristupom, Ograničeni budžeti PDF parsera