当您需要在 Linux 上对 PDF 进行敏感信息遮蔽时,可以在 Docker 容器中运行 GroupDocs.Redaction for .NET。本教程展示了如何从零创建项目、添加 PDF 文件、使用黑框遮蔽精确短语,以及在带有 .NET 10 的 Linux 容器中运行应用程序。

完整可运行的项目版本也可在 GitHub 上获取。

1. 创建带 Docker 支持的 .NET 控制台项目

您可以使用 Visual Studio 或 .NET CLI 创建项目。

使用 Visual Studio

  1. 创建一个新的 Console App 项目,并将目标框架设为 .NET 10.0。
  2. 在附加选项页面,启用 Enable container support 或 Add Docker support(选项名称可能因 Visual Studio 版本而异)。
  3. 选择 Linux 作为容器的目标操作系统。
  4. 创建项目。Visual Studio 将生成必要的 Docker 配置文件,包括 Dockerfile。

使用 .NET CLI

dotnet new console -n PdfRedactionDocker
cd PdfRedactionDocker

如果使用 CLI,需要手动在项目根目录添加 Dockerfile。后续步骤中会对其进行配置,以便在 Linux 容器中构建、发布并运行应用程序。

生成的项目结构应如下所示:

PdfRedactionDocker/
├── Dockerfile
├── PdfRedactionDocker.csproj
└── Program.cs

2. 安装 GroupDocs.Redaction

使用 Visual Studio 或 .NET CLI 将 GroupDocs.Redaction for .NET 添加到项目中。

使用 Visual Studio

  1. 在 Solution Explorer 中右键单击项目。
  2. 选择 Manage NuGet Packages。
  3. 搜索 GroupDocs.Redaction 并安装该包。

使用 .NET CLI

在项目目录下运行以下命令:

dotnet add package GroupDocs.Redaction

该包提供 Redactor 类用于加载和处理文档,以及用于配置和应用遮蔽的各种类和选项。

3. 添加 PDF 文件

将要处理的 PDF 放入项目目录,并命名为:

document.pdf

应用程序将在此文件中搜索要遮蔽的短语,并生成 document_Redacted.pdf 作为结果。

本示例中的 PDF 包含单词 gap。

4. 添加遮蔽代码

打开 Program.cs,将其内容替换为:

using GroupDocs.Redaction;
using GroupDocs.Redaction.Options;
using GroupDocs.Redaction.Options.Drawing;
using GroupDocs.Redaction.Redactions;

using (Redactor redactor = new Redactor("document.pdf"))
{
    redactor.Apply(
        new ExactPhraseRedaction(
            "gap",
            new ReplacementOptions(Color.Black)));

    var saveOptions = new SaveOptions() { AddSuffix = true };
    var outputFile = redactor.Save(saveOptions);
}

ExactPhraseRedaction 会在 PDF 中搜索指定短语。默认情况下搜索不区分大小写,因此 gap 与 Gap 会匹配相同的文本。

ReplacementOptions(Color.Black) 为每个匹配项应用 黑框遮蔽,而不是用其他字符串替换文本。

SaveOptions.AddSuffix 会在输出文件名后添加 _Redacted,因此结果保存为:

document_Redacted.pdf

原始的 document.pdf 保持不变。

Apply 方法返回遮蔽状态。生产代码中应检查该结果后再认为输出已成功遮蔽。即使未实际应用遮蔽,Save 仍可能生成输出文件。

5. 配置 Dockerfile

以下 Dockerfile 示例用于在 Linux 容器中构建并运行您的 .NET 10 应用程序。

示例中包含了安装 GroupDocs.Redaction 进行文档处理所需的 Linux 库和字体的步骤。

完整 Dockerfile 可在 这里 查看。

FROM mcr.microsoft.com/dotnet/runtime:10.0 AS base

USER root

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        fontconfig \
        libfreetype6 \
        libgdiplus \
        libc6-dev \
        libx11-dev \
        software-properties-common \
    && echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true" | debconf-set-selections \
    && apt-add-repository multiverse \
    && apt-get update \
    && apt-get install -y ttf-mscorefonts-installer fonts-lato \
    && fc-cache -f \
    && dir="$(dirname "$(find /usr/lib /lib -name 'libdl.so.2' 2>/dev/null | head -n1)")" \
    && ln -sf "$dir/libdl.so.2" "$dir/libdl.so" \
    && rm -rf /var/lib/apt/lists/*

USER $APP_UID

WORKDIR /app

该 Docker 镜像已包含本机库、字体支持以及在 Linux 容器中运行文档处理代码所需的其他依赖。

6. 构建应用镜像

您可以使用 Visual Studio 或 Docker CLI 构建 Docker 镜像。

使用 Visual Studio

如果在创建项目时已启用 Docker 支持,只需在 Debug 或 Run 下拉菜单中选择 Docker 配置文件并启动项目。Visual Studio 将构建 Docker 镜像并在配置好的 Linux 容器中运行应用程序。

使用 Docker CLI

在项目目录打开终端,运行:

docker build -t PdfRedactionDocker .

Docker 将使用 Dockerfile 创建 Linux 镜像并安装所需依赖。

7. 运行容器

如果使用 Docker CLI,需将项目目录挂载到容器中运行应用:

docker run --rm \
  -v "${PWD}:/data" \
  -w /data \
  --entrypoint dotnet \
  PdfRedactionDocker \
  /app/PdfRedactionDocker.dll

项目目录会挂载到容器的 /data,并作为工作目录。因此应用会从以下路径读取源文件:

/data/document.pdf

并将遮蔽后的文件保存至:

/data/document_Redacted.pdf

由于 /data 映射到主机上的项目目录,遮蔽后的 PDF 会出现在源文件旁边。

在 Windows PowerShell 中,${PWD} 会展开为当前工作目录。请在项目目录下执行上述命令。

8. 检查遮蔽后的 PDF

应用执行完毕后,打开:

document_Redacted.pdf

指定的短语应被黑色矩形覆盖,而原始的 document.pdf 保持不变。

现在,您可以使用相同的方法将 PDF 文本遮蔽 与 GroupDocs.Redaction for .NET 集成到基于 Linux 的 Docker 应用中。

Licensing

如果没有许可证,GroupDocs.Redaction for .NET 将以评估模式运行。评估版有使用限制,并会在保存的文档上添加水印。

30 天的临时许可证可在 GroupDocs 临时许可证页面 获取。定价信息请参阅 GroupDocs.Redaction for .NET 的 购买页面。

Learn more