Khi bạn cần xóa nhạy cảm văn bản trong PDF trên Linux, bạn có thể chạy GroupDocs.Redaction for .NET trong một container Docker. Hướng dẫn này chỉ cách tạo dự án từ đầu, thêm tệp PDF, xóa một cụm từ chính xác bằng hộp đen, và chạy ứng dụng trong container Linux với .NET 10.

Một phiên bản hoàn chỉnh, hoạt động của dự án cũng có sẵn trên GitHub.

1. Tạo dự án .NET Console với hỗ trợ Docker

Bạn có thể tạo dự án bằng Visual Studio hoặc .NET CLI.

Using Visual Studio

  • Tạo một dự án Console App mới và chọn .NET 10.0 làm framework mục tiêu.
  • Trong màn hình tùy chọn bổ sung, bật Enable container support hoặc Add Docker support (tên tùy chọn có thể khác nhau tùy phiên bản Visual Studio).
  • Chọn Linux làm hệ điều hành mục tiêu cho container.
  • Tạo dự án. Visual Studio sẽ tạo các tệp cấu hình Docker cần thiết, bao gồm Dockerfile.

Using the .NET CLI

dotnet new console -n PdfRedactionDocker
cd PdfRedactionDocker

Nếu bạn dùng CLI, hãy thêm một Dockerfile vào thư mục gốc của dự án một cách thủ công. Bạn sẽ cấu hình nó trong các bước tiếp theo để biên dịch, xuất bản và chạy ứng dụng bên trong container Linux.

Cấu trúc dự án kết quả sẽ trông như sau:

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

2. Cài đặt GroupDocs.Redaction

Thêm GroupDocs.Redaction for .NET vào dự án của bạn bằng Visual Studio hoặc .NET CLI.

Using Visual Studio

  1. Nhấp chuột phải vào dự án trong Solution Explorer.
  2. Chọn Manage NuGet Packages.
  3. Tìm GroupDocs.Redaction và cài đặt gói.

Using the .NET CLI

dotnet add package GroupDocs.Redaction

Gói này cung cấp lớp Redactor để tải và xử lý tài liệu, cùng với nhiều lớp và tùy chọn để cấu hình và áp dụng các thao tác xóa.

3. Thêm tệp PDF

Đặt tệp PDF bạn muốn xử lý vào thư mục dự án và đặt tên:

document.pdf

Ứng dụng sẽ tìm kiếm cụm từ cần xóa trong tệp này và tạo document_Redacted.pdf với kết quả.

Trong ví dụ này, PDF chứa từ gap.

4. Thêm mã xóa

Mở Program.cs và thay thế nội dung bằng:

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 tìm kiếm PDF cho cụm từ được chỉ định. Việc tìm kiếm không phân biệt chữ hoa/thường theo mặc định, vì vậy gap và Gap sẽ khớp cùng một đoạn văn bản.

ReplacementOptions(Color.Black) áp dụng black box redaction (hộp đen) cho mỗi kết quả thay vì thay thế văn bản bằng một chuỗi khác.

SaveOptions.AddSuffix thêm _Redacted vào tên tệp đầu ra, vì vậy kết quả sẽ được lưu dưới tên:

document_Redacted.pdf

Tệp gốc document.pdf vẫn không thay đổi.

Phương thức Apply trả về trạng thái xóa. Hãy kiểm tra kết quả này trong mã sản xuất trước khi coi đầu ra là đã xóa thành công. Save vẫn có thể tạo tệp đầu ra ngay cả khi việc xóa không được áp dụng.

5. Cấu hình Dockerfile

Sử dụng Dockerfile dưới đây làm mẫu để biên dịch và chạy ứng dụng .NET 10 của bạn trong container Linux.

Ví dụ bao gồm các bước cần thiết để cài đặt các thư viện Linux và phông chữ mà GroupDocs.Redaction yêu cầu để xử lý tài liệu.

Bạn có thể xem Dockerfile đầy đủ tại đây.

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

Image Docker bao gồm các thư viện gốc, hỗ trợ phông chữ và các phụ thuộc khác cần thiết để chạy mã xử lý tài liệu trong container Linux.

6. Xây dựng Image ứng dụng

Bạn có thể xây dựng image Docker bằng Visual Studio hoặc Docker CLI.

Using Visual Studio

Nếu hỗ trợ Docker đã được bật khi tạo dự án, chọn profile Docker từ menu thả xuống Debug hoặc Run và khởi chạy dự án. Visual Studio sẽ xây dựng image Docker và chạy ứng dụng trong container Linux đã cấu hình.

Using the Docker CLI

Mở terminal trong thư mục dự án và chạy:

docker build -t PdfRedactionDocker .

Docker sẽ sử dụng Dockerfile để tạo image Linux và cài đặt các phụ thuộc cần thiết.

7. Chạy Container

Nếu bạn dùng Docker CLI, chạy ứng dụng với thư mục dự án được gắn vào container:

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

Thư mục dự án được gắn tại /data và được dùng làm thư mục làm việc của container. Do đó ứng dụng sẽ đọc tệp nguồn từ:

/data/document.pdf

và lưu tệp đã xóa tại:

/data/document_Redacted.pdf

Vì /data được ánh xạ tới thư mục dự án trên máy chủ, tệp PDF đã xóa sẽ xuất hiện ngay bên cạnh tệp nguồn.

Trong Windows PowerShell, ${PWD} sẽ mở rộng thành thư mục làm việc hiện tại. Hãy chạy lệnh này từ thư mục dự án.

8. Kiểm tra PDF đã xóa

Sau khi ứng dụng kết thúc, mở:

document_Redacted.pdf

Cụm từ đã chỉ định sẽ được phủ bằng một hình chữ nhật màu đen, trong khi tệp gốc document.pdf vẫn không thay đổi.

Bây giờ bạn có thể sử dụng cùng một cách tiếp cận để tích hợp PDF text redaction with GroupDocs.Redaction for .NET vào một ứng dụng Docker dựa trên Linux.

Licensing

Nếu không có giấy phép, GroupDocs.Redaction for .NET sẽ chạy ở chế độ đánh giá. Phiên bản đánh giá có giới hạn sử dụng và sẽ thêm watermark vào tài liệu đã lưu.

Giấy phép tạm thời 30 ngày có sẵn trên trang giấy phép tạm thời của GroupDocs. Thông tin về giá cả có trên trang mua GroupDocs.Redaction for .NET.

Learn more