PDFium Delphi Component Docs

Ограниченные помощники геометрии редактирования

FPdfRedaction предоставляет консервативную инспекцию источника и операции геометрии, используемые TPdf.SaveAsRedacted; высокоуровневый метод отвечает за транзакцию, обработку аннотаций, непрозрачные наложения, регенерацию содержимого, очистку и отсечение ресурсов

Помощники изменяют нативные объекты в изолированной копии транзакции вызывающего и возбуждают EPdfRedactionGeometry при неподдерживаемой геометрии или исчерпанных бюджетах; сами по себе они не выполняют полный безопасный экспорт

Публичные объявления

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);

Координаты и поддерживаемая геометрия

Все прямоугольники редактирования и допуски кривых задаются в пунктах пользовательского пространства PDF; точки контуров преобразуются в пространство страницы перед клиппингом, а ObjectIndex — исходный нуль-базированный нативный индекс объекта страницы, используемый для сохранения порядка отрисовки

Развёртывание и частичная геометрия отклоняют прозрачность или режимы смешивания, неподдерживаемые типы потомков, вырожденные матрицы, узорные заливки и сложные или нерасширенные пути клипа; поддерживаемый избыточный прямоугольный клип должен содержать полные границы объекта

Опции и накопительный отчёт

ОпцияПо умолчаниюЗначение
MaxFormDepth32Глубина развёртывания вложенных форм
MaxObjects1000000Перечисление страниц и накопительные лимиты развёрнутых потомков
MaxPathSegments262144Входные сегменты на контур и накопительные сгенерированные точки контуров
MaxFragments1000000Сохранённые прямоугольные области и накопительные замещающие фрагменты
MaxImagePixels16777216Накопительные обработанные декодированные пиксели изображений
MaxGeometryOperations67108864Накопительная работа по геометрии и пиксельным пересечениям
CurveTolerance0.01Допуск расплющивания кубических кривых в пунктах PDF

Инициализируйте опции через TPdfRedactionGeometryOptions.Default и обнулите отчёт один раз перед транзакцией; держите один и тот же отчёт между вызовами помощников, чтобы бюджеты сгенерированных точек, пикселей изображений, фрагментов и операций накапливались

ExpandedFormCount и ScannedChildCount описывают развёртывание; счётчик посещений включает корневые экземпляры Form наравне с потомками; ClippedPathCount, FlattenedCurveCount и GeneratedPointCount описывают работу с контурами, включая промежуточные точки клиппинга; MaskedImageCount, ScannedPixelCount, MaskedPixelCount и PixelIntersectionTestCount описывают работу с изображениями

FragmentCount считает замещающие объекты, а не контуры многоугольников или пиксели, а GeometryOperationCount накапливает ограниченную работу помощников; отчёт, оставленный после исключения, может описывать частичную работу по отброшенной копии транзакции

Инспекция источника и граница экспорта

ValidateDetailedRedactionSource инспектирует активные объекты и декодированное содержимое до правок; TPdf.SaveAsRedacted вызывает его для каждого профиля, включая удаление целых объектов и более простой частичный профиль

Текущий профиль не перестраивает структуру Tagged PDF, не сохраняет произвольную прозрачность, не поддерживает произвольную обводку или клиппинг и не обещает сохранность кодированных изображений без потерь; безопасный вывод требует удаления исходных потоков и неиспользуемых ресурсов после регенерации, что выполняет TPdf.SaveAsRedacted

Прямые вызывающие обязаны предоставить изолированную копию документа, проверить нативные возможности и конечные положительные бюджеты, отбросить копию при сбое, регенерировать изменённое содержимое страниц и завершить очистку и отсечение ресурсов до экспорта

См. также

TPdf.SaveAsRedacted, TPdf.SaveAsSanitised, FPdfCompress