Trabalhar com camadas de PDF usando C#

Um documento PDF pode conter vários dados ocultos que podem comprometer a confidencialidade ou representar ameaças potenciais quando o arquivo é compartilhado.
Usando a classe HiddenDataSanitizer, você pode remover os dados ocultos que escolher.
Você pode configurar flexivelmente o processo de sanitização usando a classe HiddenDataSanitizerOptions.

HiddenDataSanitizationOptions

Esta classe configura o processo de sanitização para dados ocultos em um documento PDF.
Ela permite a habilitação e configuração centralizadas da remoção de informações potencialmente sensíveis, invisíveis ou indesejadas (anotações, scripts, metadados, anexos, índices, etc.),
bem como controlar a rasterização de páginas e os parâmetros de compressão de imagem.

É adequada para cenários como:

  • preparar documentos para distribuição;
  • aumentar a segurança e a privacidade;
  • simplificar a estrutura do PDF (achatando formulários e camadas);
  • remover conteúdo oculto que pode não ser visível durante a visualização normal.

Opções

  • ImageCompressionOptions: ImageCompressionOptions
    Configurações de compressão de imagem para otimização. Ignorado se a rasterização de página estiver habilitada. Não ativado automaticamente pelo método All() — configure manualmente se necessário.

  • ConvertPagesToImages: bool
    Converte páginas em imagens rasterizadas. Quando habilitado, ImageCompressionOptions é ignorado. Executado após a limpeza do conteúdo oculto principal por outras opções. Não ativado automaticamente pelo método All().

  • ImageDpi: int (padrão 150)
    Resolução (DPI) usada ao converter páginas em imagens.

  • RemoveAnnotations: bool
    Remove todas as anotações do documento. Anotações de redacção serão aplicadas.

  • RemoveSearchIndexAndPrivateInfo: bool
    Remove índices de pesquisa incorporados e informações privadas.

  • FlattenForms: bool
    Achata formulários: campos interativos tornam-se conteúdo estático e não editável.

  • FlattenLayers: bool
    Achata camadas: todas as camadas são mescladas em uma, simplificando a estrutura e removendo dados ocultos da camada.

  • RemoveJavaScriptsAndActions: bool
    Remove JavaScript e ações relacionadas para eliminar vulnerabilidades potenciais.

  • RemoveMetadata: bool
    Remove metadados (propriedades do documento e informações adicionais incorporadas).

  • RemoveAttachments: bool
    Remove todos os arquivos incorporados.

Métodos

  • static All(): HiddenDataSanitizationOptions
    Retorna uma instância pré-configurada com as seguintes opções habilitadas:
    RemoveAnnotations, RemoveJavaScriptsAndActions, RemoveMetadata, RemoveAttachments, RemoveSearchIndexAndPrivateInfo, FlattenForms, FlattenLayers;
    e com a conversão de páginas em imagens (ConvertPagesToImages = false) e processamento de imagem (ImageCompressionOptions = null) desativados.
    Você pode configurar manualmente ImageCompressionOptions e ConvertPagesToImages após chamar All().

HiddenDataSanitizer

A classe HiddenDataSanitizer fornece funções para limpar documentos PDF de dados ocultos (metadados, anexos, anotações, JavaScript, informações privadas, etc.).
Ela usa um conjunto de opções definidas em HiddenDataSanitizationOptions para controlar flexivelmente o processo de sanitização.

Método Estático SanitizeAllToImages

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

Converte todas as páginas do documento PDF em imagens e, em seguida, remove quaisquer dados ocultos restantes.
Este método é útil quando você precisa “selar” completamente um documento como imagens rasterizadas, eliminando todos os elementos ocultos.

Método de Instância Sanitize

public void Sanitize(Document document)

Executa a sanitização do PDF de acordo com as opções fornecidas no construtor.

Exemplo de Uso