当您需要在 Linux 上对 PDF 进行敏感信息遮蔽时,可以在 Docker 容器中运行 GroupDocs.Redaction for .NET。本教程展示了如何从零创建项目、添加 PDF 文件、使用黑框遮蔽精确短语,以及在带有 .NET 10 的 Linux 容器中运行应用程序。
完整可运行的项目版本也可在 GitHub 上获取。
1. 创建带 Docker 支持的 .NET 控制台项目
您可以使用 Visual Studio 或 .NET CLI 创建项目。
使用 Visual Studio
- 创建一个新的 Console App 项目,并将目标框架设为 .NET 10.0。
- 在附加选项页面,启用 Enable container support 或 Add Docker support(选项名称可能因 Visual Studio 版本而异)。
- 选择 Linux 作为容器的目标操作系统。
- 创建项目。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
- 在 Solution Explorer 中右键单击项目。
- 选择 Manage NuGet Packages。
- 搜索
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 的 购买页面。