使用 C# 处理 PDF 图层

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
    返回一个预配置的实例,启用以下选项:
    RemoveAnnotationsRemoveJavaScriptsAndActionsRemoveMetadataRemoveAttachmentsRemoveSearchIndexAndPrivateInfoFlattenFormsFlattenLayers
    并禁用页面转换为图像(ConvertPagesToImages = false)和图像处理(ImageCompressionOptions = null)。
    您可以在调用 All() 后手动配置 ImageCompressionOptionsConvertPagesToImages

HiddenDataSanitizer

HiddenDataSanitizer 类提供了清理 PDF 文档中隐藏数据(元数据、附件、注释、JavaScript、私人信息等)的功能。
它使用在 HiddenDataSanitizationOptions 中定义的一组选项灵活控制清理过程。

静态方法 SanitizeAllToImages

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

将所有 PDF 文档页面转换为图像,然后删除任何剩余的隐藏数据。
当您需要将文档完全“封闭”为光栅图像,消除所有隐藏元素时,此方法非常有用。

实例方法 Sanitize

public void Sanitize(Document document)

根据构造函数中提供的选项执行 PDF 清理。

示例用法