function SaveAsRedacted(Stream: TStream;
const Options: TPdfRedactionOptions;
out Report: TPdfRedactionReport): Boolean; overload;
function SaveAsRedacted(const FileName: string;
const Options: TPdfRedactionOptions;
out Report: TPdfRedactionReport): Boolean; overload;
SaveAsRedacted fångar det aktuella dokumentet i en isolerad slumpåtkomst-ögonblicksbild, öppnar den ögonblicksbilden som en separat TPdf och bearbetar varje /Redact-annoteringsrektangel
De valda standardalternativen aktiverar både PreservePartialObjects och PreserveComplexObjects för att bevara säker geometri som stöds; denna avgränsade profil bygger om text från bevarade teckenfragment, klipper solida fyllda sökvägar och rensar överlappande pixlar i affina bilder
När någon svartningsannotering finns expanderar den detaljerade profilen varje Form XObject-instans på varje sida, inklusive osvartade sidor, innan svartningarna tillämpas; instanstransformer komponeras och ursprungliga delade Form-strömmar kan därefter tas bort genom resursrensning
Sätt PreservePartialObjects := False för att ta bort hela överlappande objekt, eller behåll det aktiverat och sätt PreserveComplexObjects := False för att använda den enklare fragmenteringsprofilen för text, axelriktade rektanglar och axelriktade bilder; källsäkerhetskontroller gäller för alla tre profilerna
Metoden tar bort alla svartningsannoteringar, tar eventuellt bort andra överlappande annoteringar, tar bort bilageannoteringar på svartade sidor, raderar inbyggda inbäddade bilagor och kör den sanerade omskrivningen med katalogens /AF, aktivt innehåll, formulär, metadata och onåbara objekt borttagna
Efter att sidinnehållet regenererats söker en exakt resursrensning igenom sid-, Form XObject-, mönster-, utseende-, ärvda- och nästlade resursområden och tar bara bort oanvända namn innan onåbara objekt kastas
Utdata har en enda ren revision utan tidigare dokumentrevisioner, medan det inlästa källdokumentet förblir oförändrat; källsemantik som inte stöds eller detaljerad geometri som inte stöds avbryter åtgärden i stället för att ge ett delvis svartat resultat
FillColor — opak ersättningsfärg, standard clBlackRemoveIntersectingAnnotations — tar bort icke-svartningsannoteringar vars rektanglar överlappar en svartningsrektangel, standard TrueMaxPageObjects — maximalt antal toppnivåsidobjekt som skannas över svartade sidor, standard 1000000PreservePartialObjects — behåller stödda icke-överlappande text-, sökvägs- och bildfragment, standard TrueMaxSplitObjects — maximalt antal säkra fragment som skapas under åtgärden, standard 1000000PreserveComplexObjects — aktiverar avgränsad Form-expansion, klippning av solida fyllda sökvägar och pixelrensning i affina bilder när PreservePartialObjects också är aktiverat, standard TrueMaxFormDepth — maximalt nästlat Form-expansionsdjup, standard 32, accepterat intervall 1..64MaxPathPoints — begränsar segment i en berörd sökväg och de kumulativt genererade sökvägspunkterna, standard 262144, accepterat intervall 1..1000000MaxImagePixels — kumulativa avkodade pixlar som bearbetas för detaljerade bildersättningar, standard 16777216, accepterat intervall 1..67108864MaxGeometryOperations — kumulativt detaljerat geometriarbete, inklusive annoterings- och textskanningar, sökvägsuppdelning och klippning samt pixelintersektionstester, standard 67108864, accepterat intervall 1..1000000000CurveTolerancePdfPoints — tolerans för kubisk utplattning i sidutrymmet, standard 0.01, accepterat ändligt intervall 0.0001..0.1; sökvägssnitt expanderar med denna tolerans plus 0.001 PDF-punkter, så en smal extra säkerhetsmarginal kan tas bortAlternativen för Form, sökväg, bild, geometri och tolerans ovan valideras och används av den detaljerade profilen; de höjer inte de oberoende budgetarna för källinspektion
TPdfRedactionReport returnerar RedactionCount, RedactedPageCount, ScannedObjectCount, RemovedObjectCount, RemovedAnnotationCount, RemovedAttachmentCount, OverlayCount, SplitTextObjectCount, SplitPathObjectCount, SplitImageObjectCount, PreservedFragmentCount, byte-antalen, de nästlade SanitiseReport och ResourcePruneReport, Succeeded och ErrorMessage
Detaljerat arbete tillför ExpandedFormCount, ScannedFormChildCount, FlattenedCurveCount, GeneratedPathPointCount, MaskedImageCount, ScannedImagePixelCount, MaskedImagePixelCount, PixelIntersectionTestCount och GeometryOperationCount; CurveTolerancePdfPoints registrerar den konfigurerade toleransen efter lyckad bearbetning
ScannedFormChildCount räknar nativa objekt som besöks under expansionen, inklusive rot-Form-instanser, och GeneratedPathPointCount omfattar mellanliggande klipppunkter likaväl som utplattade kurvpunkter
MaskedImagePixelCount räknar pixlar vars fullständiga färg- och alfasampel rensades, medan PreservedFragmentCount räknar ersättningsobjekt snarare än enskilda behållna pixlar eller polygonkonturer; bearbetningsräknare vid fel kan vara partiella och innebär ingen committad utdata
0.001 PDF-punkter; både RGB och alfa nollställs, varefter ett opakt FillColor-överlägg täcker svartningsrektangeln/ActualText eller /Alt, XFA samt optional content-lagersemantik inklusive /OCProperties, /OCG och /OCMD; denna metod bygger inte om logisk struktur och bevarar inte dessa dolda semantiska egenskaperTr-operander samt målning med scn/SCN-mönster eller specialfärgrymd; stödda inspekterade innehållsströmmar är ofiltrerade eller använder ett enda namngivet /FlateDecode-filter256 MiB, enskilda aktiva objektkroppar till 64 MiB, totala aktiva kroppar till 256 MiB, avkodade objektströmmar till 64 MiB vardera och 256 MiB totalt samt objektplatser till 1000000; avkodningen av inspekterat innehåll har dessutom gränserna 32 MiB per ström och 64 MiB totalt/AF, /Names-trädet, inbyggda inbäddade bilagor och bilageannoteringar på svartade sidor tas bort; godtyckliga associated-file-poster nästlade i obesläktade strukturdictionaryer omfattas inte av metodens explicita garanti/Redact-annoteringar finns ger ändå den sanerade säkerhetsprofilen i en enda revision
var
Options: TPdfRedactionOptions;
Report: TPdfRedactionReport;
begin
Options := TPdfRedactionOptions.Default;
Options.FillColor := clBlack;
if not Pdf1.SaveAsRedacted('C:\redacted.pdf', Options, Report) then
raise Exception.Create(Report.ErrorMessage);
end;