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 przechwytuje bieżący dokument do odizolowanego snapshotu o swobodnym dostępie, otwiera ten snapshot jako osobny TPdf i przetwarza każdy prostokąt adnotacji /Redact
Domyślne opcje włączają zarówno PreservePartialObjects, jak i PreserveComplexObjects, aby zachować obsługiwaną bezpieczną geometrię; ten ograniczony profil przebudowuje tekst z zachowanych fragmentów znaków, przycina wypełnione ścieżki i czyści przecinające się piksele w obrazach afinicznych
Gdy istnieje jakakolwiek adnotacja redakcji, profil szczegółowy rozwija każdą instancję Form XObject na każdej stronie, w tym na stronach niezredagowanych, przed zastosowaniem redakcji; transformacje instancji są składane, a oryginalne współdzielone strumienie Form mogą potem zostać usunięte przez przycinanie zasobów
Ustaw PreservePartialObjects := False, aby usuwać całe przecinające się obiekty, albo zostaw je włączone i ustaw PreserveComplexObjects := False, aby użyć prostszego profilu fragmentacji tekstu, prostokątów zgodnych z osiami i obrazów zgodnych z osiami; kontrole bezpieczeństwa źródła dotyczą wszystkich trzech profili
Metoda usuwa wszystkie adnotacje redakcji, opcjonalnie usuwa inne przecinające się adnotacje, usuwa adnotacje załączników plików na zredagowanych stronach, kasuje natywne osadzone załączniki i uruchamia odkażony zapis z usuniętymi katalogowym /AF, aktywną treścią, formularzami, metadanymi i obiektami nieosiągalnymi
Po regeneracji zawartości stron precyzyjne przycinanie zasobów skanuje zakresy zasobów stron, Form XObject, wzorców, wyglądu, odziedziczone i zagnieżdżone oraz usuwa tylko nieużywane nazwy, zanim obiekty nieosiągalne zostaną wyrzucone
Wyjście ma jedną czystą rewizję bez wcześniejszych rewizji dokumentu, podczas gdy wczytany dokument źródłowy pozostaje bez zmian; nieobsługiwana semantyka źródła albo nieobsługiwana geometria szczegółowa przerywają operację, zamiast tworzyć częściowo zredagowany wynik
FillColor — nieprzezroczysty kolor zastępczy, domyślnie clBlackRemoveIntersectingAnnotations — usuwa adnotacje inne niż redakcyjne, których prostokąty nachodzą na prostokąt redakcji, domyślnie TrueMaxPageObjects — maksymalna liczba obiektów strony najwyższego poziomu przeskanowanych na zredagowanych stronach, domyślnie 1000000PreservePartialObjects — zachowuje obsługiwane nieprzecinające się fragmenty tekstu, ścieżek i obrazów, domyślnie TrueMaxSplitObjects — maksymalna liczba bezpiecznych fragmentów utworzonych w ramach operacji, domyślnie 1000000PreserveComplexObjects — włącza ograniczone rozwijanie Form, przycinanie pełnych wypełnionych ścieżek i czyszczenie pikseli obrazów afinicznych, gdy PreservePartialObjects jest również włączone, domyślnie TrueMaxFormDepth — maksymalna głębokość zagnieżdżonego rozwijania Form, domyślnie 32, akceptowany zakres 1..64MaxPathPoints — ogranicza segmenty w dotkniętej ścieżce i skumulowane generowane punkty ścieżki, domyślnie 262144, akceptowany zakres 1..1000000MaxImagePixels — skumulowane zdekodowane piksele przetwarzane dla szczegółowych zamian obrazów, domyślnie 16777216, akceptowany zakres 1..67108864MaxGeometryOperations — skumulowana szczegółowa praca geometryczna, w tym skany adnotacji i tekstu, podział i przycinanie ścieżek oraz testy przecięcia pikseli, domyślnie 67108864, akceptowany zakres 1..1000000000CurveTolerancePdfPoints — tolerancja spłaszczania sześciennego w przestrzeni strony, domyślnie 0.01, akceptowany skończony zakres 0.0001..0.1; cięcia ścieżek rozszerzają się o tę tolerancję plus 0.001 punktu PDF, więc dodatkowy wąski margines bezpieczeństwa może zostać usuniętyPowyższe opcje Form, ścieżek, obrazów, geometrii i tolerancji są walidowane i używane przez profil szczegółowy; nie podnoszą niezależnych budżetów inspekcji źródła
TPdfRedactionReport zwraca RedactionCount, RedactedPageCount, ScannedObjectCount, RemovedObjectCount, RemovedAnnotationCount, RemovedAttachmentCount, OverlayCount, SplitTextObjectCount, SplitPathObjectCount, SplitImageObjectCount, PreservedFragmentCount, liczniki bajtów, zagnieżdżone SanitiseReport i ResourcePruneReport, Succeeded oraz ErrorMessage
Szczegółowa praca dodaje ExpandedFormCount, ScannedFormChildCount, FlattenedCurveCount, GeneratedPathPointCount, MaskedImageCount, ScannedImagePixelCount, MaskedImagePixelCount, PixelIntersectionTestCount i GeometryOperationCount; CurveTolerancePdfPoints zapisuje skonfigurowaną tolerancję po pomyślnym przetworzeniu
ScannedFormChildCount liczy natywne obiekty odwiedzone podczas rozwijania, w tym instancje root Form, a GeneratedPathPointCount obejmuje pośrednie punkty przycinania oraz punkty spłaszczonych krzywych
MaskedImagePixelCount liczy piksele, których kompletne próbki koloru i alfa zostały wyczyszczone, natomiast PreservedFragmentCount liczy obiekty zamienne, a nie pojedyncze zachowane piksele czy kontury wielokątów; liczniki przetwarzania przy niepowodzeniu mogą być częściowe i nie oznaczają zatwierdzonego wyjścia
0.001 punktu PDF; zarówno RGB, jak i alfa są zerowane, a następnie nieprzezroczysta nakładka FillColor zakrywa prostokąt redakcji/ActualText lub /Alt, XFA oraz semantykę warstw opcjonalnej zawartości, w tym /OCProperties, /OCG i /OCMD; ta metoda nie odbudowuje struktury logicznej ani nie zachowuje tej ukrytej semantykiTr oraz malowanie wzorcem lub specjalną przestrzenią kolorów scn/SCN; obsługiwane inspekowane strumienie treści są niefiltrowane albo używają jednego nazwanego filtru /FlateDecode256 MiB, pojedyncze ciała aktywnych obiektów do 64 MiB, łączne aktywne ciała do 256 MiB, zdekodowane strumienie obiektów do 64 MiB każdy i 256 MiB łącznie oraz sloty obiektów do 1000000; dekodowanie inspekowanej treści ma dodatkowe limity 32 MiB na strumień i 64 MiB łącznie/AF, drzewo /Names, natywne osadzone załączniki i adnotacje załączników plików na zredagowanych stronach są usuwane; dowolne wpisy plików powiązanych zagnieżdżone w niezwiązanych słownikach struktury wykraczają poza jawną gwarancję tej metody/Redact, nadal daje odkażony profil bezpieczeństwa z pojedynczą rewizją
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;