وقتی نیاز دارید متن حساس را از یک PDF در لینوکس حذف (redact) کنید، میتوانید GroupDocs.Redaction for .NET را داخل یک کانتینر Docker اجرا کنید. این آموزش نشان میدهد چگونه پروژه را از صفر ایجاد کنید، یک فایل PDF اضافه کنید، یک عبارت دقیق را با یک جعبه سیاه حذف کنید و برنامه را در یک کانتینر لینوکس با .NET 10 اجرا کنید.
یک نسخهٔ کامل و قابل اجرا از این پروژه همچنین در GitHub موجود است.
1. ایجاد یک پروژهٔ .NET Console با پشتیبانی از Docker
میتوانید پروژه را با 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
یک برنامهٔ کنسول .NET 10 جدید ایجاد کنید و به پوشهٔ پروژه بروید:
dotnet new console -n PdfRedactionDocker
cd PdfRedactionDocker
اگر از CLI استفاده میکنید، یک Dockerfile را بهصورت دستی در ریشهٔ پوشهٔ پروژه اضافه کنید. در مراحل بعدی آن را برای ساخت، انتشار و اجرای برنامه داخل یک کانتینر لینوکس پیکربندی خواهید کرد.
ساختار نهایی پروژه باید شبیه به این باشد:
PdfRedactionDocker/
├── Dockerfile
├── PdfRedactionDocker.csproj
└── Program.cs
2. نصب GroupDocs.Redaction
GroupDocs.Redaction for .NET را به پروژهٔ خود اضافه کنید؛ میتوانید این کار را از طریق Visual Studio یا .NET CLI انجام دهید.
استفاده از 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. افزودن کد حذف (Redaction)
فایل 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 زیر بهعنوان نمونه برای ساخت و اجرای برنامهٔ .NET 10 خود در یک کانتینر لینوکس استفاده کنید.
این مثال شامل مراحلی است که برای نصب کتابخانهها و فونتهای لینوکسی مورد نیاز GroupDocs.Redaction برای پردازش اسناد لازم است.
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 شامل کتابخانههای بومی، پشتیبانی از فونتها و سایر وابستگیهای لازم برای اجرای کد پردازش اسناد در یک کانتینر لینوکس است.
6. ساخت ایمیج برنامه
میتوانید ایمیج Docker را با استفاده از Visual Studio یا Docker CLI بسازید.
استفاده از Visual Studio
اگر هنگام ایجاد پروژه پشتیبانی Docker فعال شده باشد، پروفایل Docker را از منوی کشویی Debug یا Run انتخاب کنید و پروژه را اجرا کنید. Visual Studio ایمیج Docker را میسازد و برنامه را در کانتینر لینوکس پیکربندیشده اجرا میکند.
استفاده از Docker CLI
در یک ترمینال داخل پوشهٔ پروژه دستور زیر را اجرا کنید:
docker build -t PdfRedactionDocker .
Docker با استفاده از Dockerfile یک ایمیج لینوکسی میسازد و وابستگیهای مورد نیاز را نصب میکند.
7. اجرای کانتینر
اگر از Docker CLI استفاده میکنید، برنامه را بهصورت زیر اجرا کنید بهطوری که پوشهٔ پروژه به داخل کانتینر سوار (mount) شود:
docker run --rm \
-v "${PWD}:/data" \
-w /data \
--entrypoint dotnet \
PdfRedactionDocker \
/app/PdfRedactionDocker.dll
پوشهٔ پروژه در مسیر /data سوار میشود و بهعنوان دایرکتوری کاری کانتینر استفاده میشود. بنابراین برنامه فایل منبع را از مسیر زیر میخواند:
/data/document.pdf
و فایل حذفشده را در مسیر زیر ذخیره میکند:
/data/document_Redacted.pdf
از آنجا که /data به پوشهٔ پروژه روی میزبان نگاشت شده است، PDF حذفشده در کنار فایل منبع ظاهر میشود.
در PowerShell ویندوز، ${PWD} به دایرکتوری کاری فعلی گسترش مییابد. این دستور را از داخل پوشهٔ پروژه اجرا کنید.
8. بررسی PDF حذفشده
پس از اتمام اجرای برنامه، فایل زیر را باز کنید:
document_Redacted.pdf
عبارت مشخصشده باید توسط یک مستطیل سیاه پوشیده شده باشد، در حالی که document.pdf اصلی دست نخورده باقی میماند.
اکنون میتوانید از همین روش برای ادغام PDF text redaction with GroupDocs.Redaction for .NET در یک برنامه Docker مبتنی بر لینوکس استفاده کنید.
Licensing
بدون داشتن لایسنس، GroupDocs.Redaction for .NET در حالت ارزیابی اجرا میشود. نسخهٔ ارزیابی محدودیتهای استفاده دارد و یک واترمارک به سند ذخیرهشده اضافه میکند.
یک لایسنس موقت 30 روزه در صفحهٔ GroupDocs temporary license page در دسترس است. اطلاعات قیمتگذاری در صفحهٔ خرید GroupDocs.Redaction for .NET purchase page موجود است.