當您需要在 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