كيفية إخفاء محتوى PDF في TypeScript

كيفية إخفاء محتوى PDF في TypeScript

يوضح هذا الدليل كيفية إخفاء محتوى PDF باستخدام Aspose.PDF FOSS لـ TypeScript. يقوم Page.AddRedact() بتحديد منطقة؛ يقوم Page.ApplyRedactions() بإعادة كتابة تدفق المحتوى بشكل مدمر بحيث تختفي الرموز تحت كل منطقة محددة. العلامات التي لم تُطبق تظل كتعليقات توضيحية عادية قابلة للنسخ والتحديد. يتطلب Node.js 22 أو أحدث.

دليل خطوة بخطوة

الخطوة 1: تثبيت الحزمة

git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run build

تحقق من التثبيت عن طريق استيراد الفئة Document في ملف TypeScript جديد — يجب أن يتم حل هذا السطر دون خطأ بمجرد تثبيت الحزمة:

import { Document } from '@asposefoss/pdf';

الخطوة 2: استيراد الفئات المطلوبة

استورد Document لفتح الملف؛ يتم استدعاء AddRedact() و ApplyRedactions() مباشرةً على كائنات Page التي تُعيدها:

import { Document } from '@asposefoss/pdf';

الخطوة 3: وضع علامة على منطقة للتعتيم

Page.AddRedact(opts) يرسم RedactAnnotation فوق rect. fill يحدد اللون المرسوم على المنطقة بمجرد تطبيقه، وoverlayText (مع align، fontSize، textColor) يطبع تسمية استبدال مثل [REDACTED]:

const doc = Document.OpenFile('memo.pdf');
const page = doc.Pages[0];

page.AddRedact({
  rect: [216, 548, 460, 566],
  fill: [0, 0, 0],
  overlayText: '[REDACTED]',
  align: 'center',
  fontSize: 9,
  textColor: [1, 1, 1],
});

الخطوة 4: تطبيق التعتيم

Page.ApplyRedactions() يعيد كتابة تدفق المحتوى بشكل مدمر — الرموز داخل كل RedactAnnotation التي تم تعليمها على الصفحة تُحذف نهائيًا، وتُزال العلامات المطبقة. العلامات التي تُضاف بعد هذه المكالمة تظل غير مُطبقة: لا يزال النص تحتها يُقرأ ويمكن نسخه:

page.ApplyRedactions();
doc.WriteTo('memo-redacted.pdf');

المشكلات الشائعة والحلول

علامة التشويش تُظهر الصندوق الأسود لكن النص الأساسي لا يزال قابلًا للنسخ. Page.ApplyRedactions() لم يتم استدعاؤه أبدًا (أو تم استدعاؤه قبل إضافة العلامة). التمييز بـ AddRedact() بحد ذاته يرسم فقط توضيحًا فوق المنطقة — المحتوى الموجود أسفلها يُدمّر مرة واحدة فقط ApplyRedactions() يعمل.

ApplyRedactions() أزال المحتوى الذي كانت العلامة rect لم تغطيه. rect هو المنطقة الدقيقة التي أُعيد كتابتها — النص أو الصور التي تتقاطع معها جزئيًا لا يزال بإمكانها أن تُدمّر جزئيًا عند الحد. ضع علامات بالحجم بشكل سخي حول المحتوى المستهدف.

لا يمكن تمرير نتائج البحث مباشرة إلى Page.AddRedact(). نتيجة من Page.SearchAnnotationText() تحمل بيانات تعريف التعليقات التوضيحية، وليس هندسة الصفحة — ليست بنفس الشكل كما هو rect an AddRedact() تتوقع العلامة. Page.MarkRedactText(find, opts) and Page.RedactText(find, opts) هي نقاط الدخول للتمويه عبر البحث النصي، وكلاهما متاح أيضًا على مستوى Document المستوى لتمرير كل صفحة في مكالمة واحدة.

تستمر عملية التمويه بعد التشفير بشكل غير متوقع. التمويه والتشفير عمليتان مستقلتان — يُطبق التمويه قبل الحفظ باستخدام encrypt الخيارات إذا كان الهدف هو إزالة المحتوى وتقييد الوصول إلى ما يبقى؛ التطبيق بالترتيب العكسي لا يلغي حفظًا مُشفّرًا بالفعل.

الأسئلة المتكررة

ما الفرق بين وضع العلامة وتطبيق التمويه؟

AddRedact() يخلق فقط تعليقًا يصف مكان التخطيط للتمويه — المحتوى المغطى يبقى دون تعديل ولا يزال قابلًا للتحديد/النسخ حتى يتم تشغيل ApplyRedactions() ويعيد كتابة الصفحة بشكل تدميري.

هل يمكنني تمويه النص عن طريق البحث بدلاً من تحديد مستطيل؟

نعم — Page.MarkRedactText(find, opts) يعلّم كل مطابقة لـ find لتطبيقها لاحقًا، وPage.RedactText(find, opts) يعلّم ويطبق في مكالمة واحدة. كلاهما موجود أيضًا على Document لتجريف المستند بأكمله.

هل يؤثر ApplyRedactions() على التعليقات التوضيحية بخلاف علامات الحجب؟

لا — يُعيد كتابة تدفق المحتوى تحت علاماته الخاصة بـ RedactAnnotation؛ ولا يتم لمس أنواع التعليقات التوضيحية الأخرى على الصفحة بواسطة هذه العملية.

هل يمكن عكس عملية الحجب؟

لا — ApplyRedactions() عملية مدمرة. احتفظ بالملف الأصلي إذا كان من الضروري استعادة المحتوى غير المحجوب لاحقًا.

انظر أيضاً

 العربية