Spannenbasiertes Parsen einfacher Objekte
Die Unit HPDFParser parst eigenständige PDF-Wörterbücher und -Arrays, ohne Teilzeichenfolgen von Token oder verschachtelten Containern zu kopieren
Einstiegspunkte
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;
Das zurückgegebene Wörterbuch oder Array gehört dem Aufrufer und enthält normale, beständige HotPDF-Objekte ohne Abhängigkeit von der Lebensdauer der Quellzeichenfolge
Ansichtsstatistik
THPDFParserViewStatistics stellt SourceBytes, TokenViewCount, MaterializedStringCount, MaterializedBytes, ObjectCount, ContainerCount, MaxDepth, ErrorCount und Valid bereit
Tokenansichten zählen begrenzte Quellbereiche, während die Zähler für materialisierte Zeichenfolgen die in dauerhafte PDF-Namen, Schlüssel und Zeichenfolgen kopierten Bytes erfassen
Unterstützte Objekte
Der Parser erkennt Namen, Ganzzahlen, reelle Zahlen, boolesche Werte, Nullwerte, indirekte Referenzen, Literalzeichenfolgen, hexadezimale Zeichenfolgen, Arrays und Wörterbücher
Literalzeichenfolgen bewahren verschachtelte Klammern, maskierte Trennzeichen, oktale Maskierungen und maskierte Zeilenfortsetzungen, während PDF-Leerraum und Kommentare ignoriert werden
Nicht maskierte CR-, CRLF- und LF-Zeilenenden innerhalb von Literalzeichenfolgen dekodieren zu einem LF je Zeilenende; escapte Wagenrückläufe wie \r oder \015 bleiben CR-Bytes, und Backslash-Zeilenfortsetzungen fügen keine Bytes hinzu
Verschachtelte Container teilen sich einen Cursor über die unveränderliche Eingabe, die Rekursion ist begrenzt, und doppelte Wörterbuchschlüssel ersetzen bei Groß-/Kleinschreibungssensitivität frühere Werte
Fehlerhafte Trennzeichen schieben den Wiederherstellungs-Cursor weiter, ohne benachbarte gültige Token zu überspringen; Array-Inhalte ohne öffnende Klammer erholen sich ebenfalls von überzähligen schließenden Klammern und melden sie in ErrorCount
Leistungsmerkmale
Namen und Zeichenfolgen werden einmal an ihrer dauerhaften Objektgrenze materialisiert, die numerische Konvertierung liest Quellbytes direkt, und ein operationslokaler Index mit offener Adressierung verhindert quadratische Duplikatsuchen beim Aufbau großer Wörterbücher
Ein Win32-Regressionsfixture mit 30.000 Paaren verringerte die Allokationsbytes über fünf Durchläufe von 50.866.510 auf 17.936.800 und die Laufzeit von 3.656 ms auf 46 ms
Siehe auch: Skalierbares PDF-Laden mit wahlfreiem Zugriff, Begrenzte Budgets für den PDF-Parser