PDFium Component Docs

SaveAsRedacted Metoda

Component: TPdf  ·  Unit: PDFium
Nakłada adnotacje redakcji PDF na odizolowany snapshot i zapisuje czysty wynik w pojedynczej rewizji bez modyfikowania wczytanego dokumentu

Syntax

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;

Description

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

Options

Powyż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

Report

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

Security boundary

Example

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;

See Also

SaveAsSanitised, SaveAsReachable, CreateAnnotation