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 захватывает текущий документ в изолированный снимок произвольного доступа, открывает этот снимок как отдельный TPdf и обрабатывает каждый прямоугольник аннотации /Redact
Стандартные параметры включают и PreservePartialObjects, и PreserveComplexObjects, чтобы сохранить поддерживаемую безопасную геометрию; этот ограниченный профиль пересобирает текст из сохранённых символьных фрагментов, обрезает сплошные залитые пути и очищает пересекающиеся пиксели в аффинных изображениях
Когда существует хотя бы одна аннотация редактирования, подробный профиль разворачивает каждый экземпляр Form XObject на каждой странице, включая неотредактированные страницы, перед применением редактирования; преобразования экземпляров объединяются, и затем исходные общие потоки Form могут быть удалены точечной обрезкой ресурсов
Установите PreservePartialObjects := False, чтобы удалять пересекающиеся объекты целиком, либо оставьте его включённым и установите PreserveComplexObjects := False, чтобы использовать более простой профиль фрагментации текста, выровненных по осям прямоугольников и выровненных по осям изображений; проверки безопасности источника применяются ко всем трём профилям
Метод удаляет все аннотации редактирования, опционально удаляет другие пересекающиеся аннотации, удаляет аннотации file-attachment на отредактированных страницах, удаляет нативные встроенные вложения и выполняет очищенную перезапись с удалением каталогового /AF, активного содержимого, форм, метаданных и недостижимых объектов
После регенерации содержимого страниц точечная обрезка ресурсов сканирует области ресурсов страниц, Form XObject, шаблонов, внешних видов, унаследованные и вложенные и удаляет только неиспользуемые имена, прежде чем недостижимые объекты отбрасываются
Вывод имеет одну чистую ревизию без более ранних ревизий документа, тогда как загруженный исходный документ остаётся неизменным; неподдерживаемая семантика источника или неподдерживаемая подробная геометрия прерывают операцию вместо получения частично отредактированного результата
FillColor — непрозрачный цвет замены, по умолчанию clBlackRemoveIntersectingAnnotations — удаляет аннотации вне редактирования, чьи прямоугольники пересекаются с прямоугольником редактирования, по умолчанию TrueMaxPageObjects — максимальное число сканируемых объектов страниц верхнего уровня по всем отредактированным страницам, по умолчанию 1000000PreservePartialObjects — сохраняет поддерживаемые непересекающиеся фрагменты текста, путей и изображений, по умолчанию TrueMaxSplitObjects — максимальное число создаваемых за операцию безопасных фрагментов, по умолчанию 1000000PreserveComplexObjects — включает ограниченное разворачивание Form, обрезку сплошных залитых путей и очистку пикселей аффинных изображений, когда также включён PreservePartialObjects, по умолчанию TrueMaxFormDepth — максимальная глубина вложенного разворачивания Form, по умолчанию 32, допустимый диапазон 1..64MaxPathPoints — ограничивает сегменты в затронутом пути и суммарные сгенерированные точки пути, по умолчанию 262144, допустимый диапазон 1..1000000MaxImagePixels — суммарные декодированные пиксели, обработанные для подробных замен изображений, по умолчанию 16777216, допустимый диапазон 1..67108864MaxGeometryOperations — суммарная подробная геометрическая работа, включая сканирование аннотаций и текста, подразбиение и обрезку путей и проверки пересечения пикселей, по умолчанию 67108864, допустимый диапазон 1..1000000000CurveTolerancePdfPoints — допуск уплощения кубических кривых в пространстве страницы, по умолчанию 0.01, допустимый конечный диапазон 0.0001..0.1; разрезы путей расширяются на этот допуск плюс 0.001 пункта PDF, поэтому может удаляться узкая дополнительная безопасная полосаПараметры Form, путей, изображений, геометрии и допуска выше проверяются и используются подробным профилем; они не повышают независимые бюджеты исследования источника
TPdfRedactionReport возвращает RedactionCount, RedactedPageCount, ScannedObjectCount, RemovedObjectCount, RemovedAnnotationCount, RemovedAttachmentCount, OverlayCount, SplitTextObjectCount, SplitPathObjectCount, SplitImageObjectCount, PreservedFragmentCount, счётчики байтов, вложенные SanitiseReport и ResourcePruneReport, Succeeded и ErrorMessage
Подробная работа добавляет ExpandedFormCount, ScannedFormChildCount, FlattenedCurveCount, GeneratedPathPointCount, MaskedImageCount, ScannedImagePixelCount, MaskedImagePixelCount, PixelIntersectionTestCount и GeometryOperationCount; CurveTolerancePdfPoints записывает настроенный допуск после успешной обработки
ScannedFormChildCount считает нативные объекты, посещённые при разворачивании, включая корневые экземпляры Form, а GeneratedPathPointCount включает промежуточные точки обрезки наряду с точками уплощённых кривых
MaskedImagePixelCount считает пиксели, у которых были очищены полные образцы цвета и альфы, тогда как PreservedFragmentCount считает объекты замены, а не отдельные сохранённые пиксели или контуры многоугольников; счётчики обработки при сбое могут быть частичными и не означают зафиксированного вывода
0.001 пункта PDF; обнуляются и RGB, и альфа, затем непрозрачное наложение FillColor закрывает прямоугольник редактирования/ActualText или /Alt, XFA и семантику слоёв дополнительного содержимого, включая /OCProperties, /OCG и /OCMD; этот метод не перестраивает логическую структуру и не сохраняет эту скрытую семантикуTr и заливку шаблоном или специальным цветовым пространством через scn/SCN; поддерживаемые исследованные потоки содержимого либо не фильтрованы, либо используют единственный именованный фильтр /FlateDecode256 MiB, тела отдельных активных объектов — 64 MiB, суммарные активные тела — 256 MiB, декодированные объектные потоки — 64 MiB каждый и 256 MiB суммарно, а слоты объектов — 1000000; декодирование исследованного содержимого имеет дополнительные лимиты 32 MiB на поток и 64 MiB суммарно/AF, дерево /Names, нативные встроенные вложения и аннотации file-attachment на отредактированных страницах удаляются; произвольные записи связанных файлов, вложенные в несвязанные словари структуры, остаются вне явных гарантий этого метода/Redact всё равно даёт очищенный профиль безопасности с одной ревизией
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;