FPdfRedaction tillhandahåller konservativ källinspektion och geometrioperationer som TPdf.SaveAsRedacted använder; metoden på hög nivå tillhandahåller transaktionen, annoteringsbearbetning, opaka överlägg, innehållsregenerering, rensning och resursbeskärning
Hjälpfunktionerna muterar nativa objekter i anroparens isolerade transaktionskopia och kastar EPdfRedactionGeometry vid geometri som inte stöds eller förbrukade budgetar; de utför inte en komplett säker export på egen hand
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);
Alla svartningsrektanglar och kurvtoleranser använder PDF-användarrymdpunkter; banpunkter transformeras till sidrymd före klippning, och ObjectIndex är det ursprungliga nollbaserade nativa sidobjektindexet som används för att bevara målningens ordning
ExpandRedactionForms kopplar loss text-, ban- och bildbarn rekursivt, komponerar icke-singulära instanstransformeringar och nativa klipp och infogar de utvidgade objekten på Formens ursprungliga position; en separat utvidgning av varje delad instans undviker att redigera den ursprungliga delade Form-strömmen på platsClipRedactionPath kräver en solid fylld bana utan streck, planar ut kubiska segment med ett avgränsat sub divisionsdjup, subtraherar rektangulära snitt och bevarar winding eller even-odd-fyllnad över behållna konturerCurveTolerance + 0.001 PDF-punkter; toleransen begränsar kurvapproximationen och kan ta bort en liten extra marginal utanför det begärda rektangelnMaskRedactionImage accepterar icke-singulära affina transformeringar inklusive rotation, spegling och skevhet, samt stödda avkodade Gray-, BGR-, BGRx- eller BGRA-prov; den behåller den avkodade upplösningen och skapar en färsk ersättningsbild0.001 PDF-punkter får både sina färg- och alfabyte tömda; kvarhållna pixlar behåller sina avkodade färgprovValidateDetailedRedactionText kräver normal fylld text för partiellt bevarande; teckenmappning och fragmentåterskapande förblir metoden på hög nivås ansvarUtvidgning och partiell geometri avvisar transparens eller blandningstillstånd, barnkategorier som inte stöds, singulära matriser, mönsterfyllnader och komplexa eller icke-redundanta klippbanor; ett stött redundant rektangulärt klipp måste innehålla objektets fullständiga gränser
| Alternativ | Standard | Betydelse |
|---|---|---|
MaxFormDepth | 32 | Utvidgningsdjup för kapslade formulär |
MaxObjects | 1000000 | Gränser för siduppräkning och kumulativa utvidgade barn |
MaxPathSegments | 262144 | Indatasegment per bana och kumulativa genererade banpunkter |
MaxFragments | 1000000 | Kvarhållna rektangelregioner och kumulativa ersättningsfragment |
MaxImagePixels | 16777216 | Kumulativa bearbetade avkodade bildpixlar |
MaxGeometryOperations | 67108864 | Kumulativt geometri- och pixelsnittsarbete |
CurveTolerance | 0.01 | Tolerans för kubisk planering i PDF-punkter |
Initiera alternativen med TPdfRedactionGeometryOptions.Default och nollställ rapporten en gång före en transaktion; behåll samma rapport över hjälparanropen så att genererade punkter, bildpixlar, fragment och operationsbudgetar ackumuleras
ExpandedFormCount och ScannedChildCount beskriver utvidgningen; antalet besökta inkluderar rot-Form-instanser utöver barn; ClippedPathCount, FlattenedCurveCount och GeneratedPointCount beskriver banarbetet, inklusive mellanliggande klipppunkter; MaskedImageCount, ScannedPixelCount, MaskedPixelCount och PixelIntersectionTestCount beskriver bildarbetet
FragmentCount räknar ersättningsobjekt, inte polygonkonturer eller pixlar, och GeometryOperationCount ackumulerar avgränsat hjälpararbete; en rapport som lämnats av ett undantag kan beskriva partiellt arbete på den kasserade transaktionskopian
ValidateDetailedRedactionSource inspekterar aktiva objekter och avkodat innehåll före mutering; TPdf.SaveAsRedacted anropar den för varje profil, inklusive borttagning av hela objekt och den enklare partiska profilen
/ActualText- och /Alt-ersättningsdata, XFA samt semantik för valfritt innehåll, inklusive /OCProperties, /OCG och /OCMD, avvisasTr-operand, samt scn/SCN-mönster- eller specialfärgrymdsmålning avvisas/FlateDecode-filter; avkodning är begränsad till 32 MiB per innehållsström och 64 MiB totaltDen nuvarande profilen bygger inte om Tagged PDF-struktur, bevarar inte godtycklig transparens, stödjer inte godtyckliga streck eller klippning, och lovar inte förlustfri bevarande av kodade bilder; säker utdata kräver borttagning av ursprungliga strömmar och oanvända resurser efter regenerering, så som TPdf.SaveAsRedacted gör
Direkta anropare måste tillhandahålla en isolerad dokumentkopia, validera nativa kapabiliteter och ändliga positiva budgetar, kassera kopian vid fel, återskapa ändrat sidinnehåll samt fullfölja rensning och resursbeskärning före export