THotPDF.DecodeBudgetBytes-eigenschap

Stelt het maximale samengevoegde aantal bytes in dat wordt geaccepteerd van alle decoderingsfasen in één PDF-stroomfilterketen

Declaraties

// Delphi
property DecodeBudgetBytes: Int64;
function GetLastDecodeBudgetInfo(
  out AInfo: THPDFDecodeBudgetInfo): Boolean;

// C++Builder
__property __int64 DecodeBudgetBytes;
bool __fastcall GetLastDecodeBudgetInfo(
  THPDFDecodeBudgetInfo &AInfo);

Standaard

268435456 bytes, of 256 MiB

Samengevoegde boekhouding

Elke generieke filter schrijft via een begrensde stroom voordat gegevens de backing-geheugenstroom bereiken

Diagnostiek

GetLastDecodeBudgetInfo retourneert de nieuwste ketenlimiet, geaccepteerde gedecodeerde bytes, grootste fase, filteraantal, limietstatus en het filter dat de limiet overschreed

THPDFDecodeBudgetInfo = record
  LimitBytes: Int64;
  DecodedBytes: Int64;
  PeakStageBytes: Int64;
  FilterCount: Integer;
  Exceeded: Boolean;
  ExceededFilter: AnsiString;
end;

De methode retourneert False totdat ten minste één filter door de documentinstantie is gedecodeerd

Foutgedrag

Lagewaarde-decodering genereert EHPDFDecodeBudgetError wanneer een fase het samengevoegde budget overschrijdt; hoogwaardige leesmethoden die al falen rapporteren via False of nil behouden dat contract terwijl GetLastDecodeBudgetInfo de reden blootlegt

Stel DecodeBudgetBytes alleen in op nul voor vertrouwde invoer die onbeperkte per-keten-expansie vereist; negatieve waarden genereren ERangeError

Delphi-voorbeeld

PDF.DecodeBudgetBytes := 64 * 1024 * 1024;
if not PDF.ExtractEmbeddedFileBytes('payload.bin', Bytes) then
  if PDF.GetLastDecodeBudgetInfo(Info) and Info.Exceeded then
    Writeln('Decode limit reached in ', Info.ExceededFilter);

C++Builder-voorbeeld

pdf->DecodeBudgetBytes = 64LL * 1024 * 1024;
if (!pdf->ExtractEmbeddedFileBytes("payload.bin", bytes)) {
    THPDFDecodeBudgetInfo info;
    if (pdf->GetLastDecodeBudgetInfo(info) && info.Exceeded)
        ShowMessage("Decode limit reached in " + info.ExceededFilter);
}

Gerelateerde API's