PDFium Delphi Component Docs

Geometrické helpery redakce s omezenými nároky

FPdfRedaction poskytuje konzervativní inspekci zdroje a geometrické operace používané TPdf.SaveAsRedacted; metoda vyšší úrovně zajišťuje transakci, zpracování anotací, neprůhledné překryvy, regeneraci obsahu, sanitizaci a prořezání prostředků

Helpery mění nativní objekty v izolované transakční kopii volajícího a při nepodporované geometrii či vyčerpaných rozpočtech vyvolají EPdfRedactionGeometry; samy o sobě úplný bezpečný export neprovádějí

Veřejné deklarace

type
  EPdfRedactionGeometry = class(Exception);
  TPdfRedactionGeometryOptions = record
    MaxFormDepth, MaxObjects, MaxPathSegments, MaxFragments: Integer;
    MaxImagePixels, MaxGeometryOperations: Int64;
    CurveTolerance: Double;
    class function Default: TPdfRedactionGeometryOptions; static;
  end;
  TPdfRedactionGeometryReport = record
    ExpandedFormCount, ScannedChildCount, ClippedPathCount: Integer;
    FlattenedCurveCount, GeneratedPointCount, FragmentCount: Integer;
    MaskedImageCount: Integer;
    ScannedPixelCount, MaskedPixelCount, PixelIntersectionTestCount: Int64;
    GeometryOperationCount: Int64;
  end;

procedure ValidateDetailedRedactionSource(Source: TStream);
procedure ValidateDetailedRedactionText(PageObject: FPDF_PAGEOBJECT);
procedure ExpandRedactionForms(Page: FPDF_PAGE;
  const Options: TPdfRedactionGeometryOptions;
  var Report: TPdfRedactionGeometryReport);
procedure ClipRedactionPath(Page: FPDF_PAGE; PageObject: FPDF_PAGEOBJECT;
  ObjectIndex: Integer; const Redactions: array of FS_RECTF;
  const Options: TPdfRedactionGeometryOptions;
  var Report: TPdfRedactionGeometryReport);
procedure MaskRedactionImage(Document: FPDF_DOCUMENT; Page: FPDF_PAGE;
  PageObject: FPDF_PAGEOBJECT; ObjectIndex: Integer;
  const Redactions: array of FS_RECTF;
  const Options: TPdfRedactionGeometryOptions;
  var Report: TPdfRedactionGeometryReport);

Souřadnice a podporovaná geometrie

Všechny redakční obdélníky a tolerance křivek používají body uživatelského prostoru PDF; body cest se před clippingem transformují do prostoru stránky a ObjectIndex je původní index nativního objektu stránky od nuly pro zachování pořadí kreslení

Rozbalování a částečná geometrie odmítají transparency či blend stavy, nepodporované typy potomků, singulární matice, patterned výplně a složité či neredundantní clip paths; podporovaný redundantní obdélníkový clip musí obsahovat celé hranice objektu

Volby a souhrnný report

VolbaVýchozí hodnotaVýznam
MaxFormDepth32Nested Form expansion depth
MaxObjects1000000Limity enumerace stránek a souhrnného počtu rozbalených potomků
MaxPathSegments262144Vstupní segmenty na cestu a souhrnný počet generovaných bodů cesty
MaxFragments1000000Zachované obdélníkové oblasti a souhrnný počet náhradních fragmentů
MaxImagePixels16777216Cumulative decoded image pixels processed
MaxGeometryOperations67108864Souhrnná práce s geometrií a průsečíky pixelů
CurveTolerance0.01Tolerance zploštění kubických křivek v bodech PDF

Inicializujte volby pomocí TPdfRedactionGeometryOptions.Default a report vynulujte jednou před transakcí; stejný report používejte napříč helpery, aby se sčítaly generované body, pixely obrázků, fragmenty i rozpočty operací

ExpandedFormCount a ScannedChildCount popisují rozbalování; počet navštívených zahrnuje kořenové instance Form i potomky. ClippedPathCount, FlattenedCurveCount a GeneratedPointCount popisují práci s cestami včetně mezilehlých clipping bodů; MaskedImageCount, ScannedPixelCount, MaskedPixelCount a PixelIntersectionTestCount práci s obrázky

FragmentCount počítá náhradní objekty, nikoli polygonové obrysy či pixely, a GeometryOperationCount sčítá omezenou práci helperů; report po výjimce může popisovat částečnou práci na zahozené transakční kopii

Inspekce zdroje a hranice exportu

ValidateDetailedRedactionSource zkoumá aktivní objekty a dekódovaný obsah před změnou; TPdf.SaveAsRedacted ho volá pro každý profil včetně odstranění celých objektů a jednoduššího částečného profilu

Současný profil neobnovuje strukturu Tagged PDF, nezachovává libovolnou průhlednost, nepodporuje libovolné stroke či clipping a neslibuje bezeztrátové zachování zakódovaných obrázků; bezpečný výstup vyžaduje po regeneraci odstranění původních streamů a nepoužívaných prostředků, jak to dělá TPdf.SaveAsRedacted

Přímý volající musí dodat izolovanou kopii dokumentu, ověřit nativní schopnosti a konečné kladné rozpočty, při chybě kopii zahodit, regenerovat změněný obsah stránek a před exportem dokončit sanitizaci a prořezání prostředků

Viz také

TPdf.SaveAsRedacted, TPdf.SaveAsSanitised, FPdfCompress