Работа с PDF-слоями с использованием C#

PDF-документ может содержать различные скрытые данные, которые могут скомпрометировать конфиденциальность или представлять потенциальные угрозы при обмене файлом.
Используя класс HiddenDataSanitizer, вы можете удалить скрытые данные по вашему выбору.
Вы можете гибко настроить процесс очистки, используя класс HiddenDataSanitizerOptions.

HiddenDataSanitizationOptions

Этот класс настраивает процесс очистки скрытых данных в PDF-документе.
Он позволяет централизованно включать и настраивать удаление потенциально чувствительной, невидимой или нежелательной информации (аннотации, скрипты, метаданные, вложения, индексы и т. д.),
а также контролировать параметры растеризации страниц и сжатия изображений.

Он подходит для таких сценариев, как:

  • подготовка документов к распространению;
  • повышение безопасности и конфиденциальности;
  • упрощение структуры PDF (уплощение форм и слоев);
  • удаление скрытого содержимого, которое может быть не видно при обычном просмотре.

Опции

  • ImageCompressionOptions: ImageCompressionOptions
    Настройки сжатия изображений для оптимизации. Игнорируется, если включена растеризация страниц. Не активируется автоматически методом All() — настраивайте вручную при необходимости.

  • ConvertPagesToImages: bool
    Преобразует страницы в растровые изображения. При включении ImageCompressionOptions игнорируется. Выполняется после очистки основных скрытых данных другими опциями. Не активируется автоматически методом All().

  • ImageDpi: int (по умолчанию 150)
    Разрешение (DPI), используемое при преобразовании страниц в изображения.

  • RemoveAnnotations: bool
    Удаляет все аннотации документа. Будут применены аннотации редактирования.

  • RemoveSearchIndexAndPrivateInfo: bool
    Удаляет встроенные поисковые индексы и личную информацию.

  • FlattenForms: bool
    Уплощает формы: интерактивные поля становятся статическим, не редактируемым содержимым.

  • FlattenLayers: bool
    Уплощает слои: все слои объединяются в один, упрощая структуру и удаляя скрытые данные слоя.

  • RemoveJavaScriptsAndActions: bool
    Удаляет JavaScript и связанные действия для устранения потенциальных уязвимостей.

  • RemoveMetadata: bool
    Удаляет метаданные (свойства документа и дополнительную встроенную информацию).

  • RemoveAttachments: bool
    Удаляет все встроенные файлы.

Методы

  • static All(): HiddenDataSanitizationOptions
    Возвращает предварительно настроенный экземпляр с включенными следующими опциями:
    RemoveAnnotations, RemoveJavaScriptsAndActions, RemoveMetadata, RemoveAttachments, RemoveSearchIndexAndPrivateInfo, FlattenForms, FlattenLayers;
    и с отключенным преобразованием страниц в изображения (ConvertPagesToImages = false) и обработкой изображений (ImageCompressionOptions = null).
    Вы можете вручную настроить ImageCompressionOptions и ConvertPagesToImages после вызова All().

HiddenDataSanitizer

Класс HiddenDataSanitizer предоставляет функции для очистки PDF-документов от скрытых данных (метаданные, вложения, аннотации, JavaScript, личная информация и т. д.).
Он использует набор опций, определенных в HiddenDataSanitizationOptions, для гибкого контроля процесса очистки.

Статический метод SanitizeAllToImages

public static void SanitizeAllToImages(Document document, int dpi = 150)

Преобразует все страницы PDF-документа в изображения, а затем удаляет любые оставшиеся скрытые данные.
Этот метод полезен, когда вам нужно полностью «запечатать» документ в виде растровых изображений, устраняя все скрытые элементы.

Метод экземпляра Sanitize

public void Sanitize(Document document)

Выполняет очистку PDF в соответствии с опциями, предоставленными в конструкторе.

Пример использования