當您需要在 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 的 購買頁面。