Orçamentos limitados do analisador PDF

Os orçamentos do parser, por documento, interrompem entradas hostis ou danificadas antes de a construção de tokens, o trabalho agregado sobre tokens, o crescimento de arrays ou dicionários, ou a repetição de tokens malformados consumirem recursos em excesso

Compatibility defaults

Defina qualquer limite como zero para desativar esse limite em particular

Valores negativos geram ERangeError

Strict policy

ApplyStrictParserBudgetPolicy seleciona um limite de 1 MiB por token, 100 000 tokens no total, 10 000 entradas por contentor e 8 tokens malformados

PDF.ApplyStrictParserBudgetPolicy;
try
  PDF.LoadFromFile(UntrustedFileName);
except
  on E: EHPDFParserBudgetExceeded do
    LogParserRejection(E.Limit, E.Observed, E.Maximum);
end;

ResetParserBudgetPolicy restores the compatibility defaults

Failure and telemetry

A breached limit raises EHPDFParserBudgetExceeded com Limit, Observed, and Maximum valores

THPDFParserBudgetLimit identifica pblTokenBytes, pblTotalTokens, pblContainerItems, or pblBadTokens

GetLastParserBudgetStatistics devolve um snapshot THPDFParserBudgetStatistics com os limites configurados, as contagens de tokens e de tokens malformados, os picos de tamanho de tokens e de contentores, a informação da violação e a validade da sessão

Budget exceptions remain terminal across modern parsing, traditional parsing, cross-reference recovery, and per-object failure isolation

Performance gate

O teste de regressão em Win32 rejeita um token de 2 MiB em 215 ms, com um pico de processo de 34 476 032 bytes, e rejeita um contentor com um milhão de tokens em 199 ms, com um pico de processo de 36 839 424 bytes

Ver também: ApplyStrictParserBudgetPolicy, ResetParserBudgetPolicy, GetLastParserBudgetStatistics, Carregamento escalável