كيفية تمييز PDF وتحويله إلى HTML باستخدام GroupDocs
تمييز النص داخل ملف PDF وتحويل النتيجة إلى صفحة HTML منسقة هو طلب شائع للمراجعة القانونية، والتعليم الإلكتروني، والنشر الرقمي. في هذا الدرس ستكتشف how to highlight pdf باستخدام GroupDocs.Redaction لـ .NET ثم توليد مخرجات HTML مميزة يمكن تضمينها في بوابات الويب أو أنظمة إدارة التعلم. يشرح الدليل إعداد البيئة، تهيئة المسارات، توليد صفحة HTML، ومعالجة عناوين URL للموارد — كل ذلك باستخدام مقتطفات C# جاهزة للتنفيذ.
إجابات سريعة
- ما المكتبة التي تتعامل مع التمييز؟ GroupDocs.Redaction for .NET.
- ما إصدارات .NET المدعومة؟ .NET Framework 4.6+, .NET Core 3.1+, .NET 5/6/7.
- هل أحتاج إلى ترخيص للإنتاج؟ نعم – الترخيص التجاري يزيل حدود النسخة التجريبية.
- هل يمكنني معالجة ملفات PDF الكبيرة (مئات الصفحات)؟ نعم، الـ API يبث الصفحات ويستخدم أقل من 200 MB من الذاكرة لملف من 500 صفحة.
- هل مخرجات HTML تفاعلية؟ HTML المولد ثابت لكنه منسق بالكامل؛ يمكنك إضافة JavaScript للتفاعل.
ما هو تمييز نص PDF؟
تمييز نص PDF هو العلامة البصرية التي ترسم طبقة ملونة خلف الأحرف المحددة، مما يجعلها بارزة عند عرض المستند. يضيف GroupDocs.Redaction هذه الطبقة مباشرة إلى تدفق محتوى PDF، محافظًا على التخطيط الأصلي بينما يعرض التمييزات في HTML المُصدّر.
لماذا تستخدم GroupDocs.Redaction لـ .NET؟
يدعم GroupDocs.Redaction أكثر من 70 تنسيقًا للإدخال والإخراج، يعالج ملفات PDF حتى 500 صفحة دون تحميل الملف بالكامل إلى الذاكرة، ويقدم API ذات مرور واحد يقوم بالتعتيم والتمييز معًا. تجعل هذه القدرات المحددة منه خيارًا موثوقًا لأنابيب المستندات على مستوى المؤسسات.
المتطلبات المسبقة
- بيئة التطوير: Visual Studio 2022 (أو أحدث) مع مشروع .NET Core 3.1 / .NET 6.
- حزمة NuGet:
GroupDocs.Redaction(أحدث إصدار ثابت). - المعرفة الأساسية: صsyntax C#، مسارات نظام الملفات، وأساسيات HTML.
كيفية إعداد GroupDocs.Redaction لـ .NET؟
لتثبيت المكتبة، اختر إحدى الطرق الثلاث المدعومة. أمر .NET CLI يضيف الحزمة إلى ملف المشروع الخاص بك، وحدة تحكم مدير الحزم (Package Manager Console) تدمجه عبر NuGet، وواجهة المستخدم توفر طريقة رسومية لتصفح وتثبيت الحزمة. جميع الطرق الثلاث تؤدي إلى الإشارة إلى نفس تجميع GroupDocs.Redaction، مما يتيح لك بدء الترميز فورًا.
استخدام .NET CLI:
dotnet add package GroupDocs.Redaction
استخدام Package Manager Console:
Install-Package GroupDocs.Redaction
استخدام واجهة NuGet Package Manager UI: ابحث عن “GroupDocs.Redaction” وانقر Install.
بعد التثبيت، أضف توجيه using في أعلى ملف C# الخاص بك:
using GroupDocs.Redaction;
كيف يعمل الصف Feature_InitializeIndexedFileInfo؟
Feature_InitializeIndexedFileInfo هو مساعد ينشئ ويخزن المسارات المطلوبة لذاكرة التخزين المؤقت للعارض وملف PDF المصدر.
الصف يجهز مواقع نظام الملفات التي يعتمد عليها العارض ومولد HTML. ينشئ مجلد تخزين مؤقت مخصص للملفات المؤقتة، يستخرج اسم المجلد من ملف PDF المصدر، ويخزن المسار المطلق للمستند الأصلي. تُعرض هذه الخصائص كأعضاء للقراءة فقط للمعالجة اللاحقة.
// ```csharp
using GroupDocs.Redaction;
// Initialize the Redactor
Redactor redactor = new Redactor("your-file-path.pdf");
كيفية توليد مسار ملف صفحة HTML؟
Feature_GenerateHtmlPageFilePath يولد أسماء ملفات حتمية لكل صفحة HTML بناءً على أرقام الصفحات.
الصف يبني اسم ملف يحدد بشكل فريد كل صفحة مُعالجة، باستخدام نمط بسيط p{pageNumber}.html. ثم يجمع هذا الاسم مع مسار مجلد التخزين المؤقت الذي تم إنشاؤه مسبقًا لإنتاج موقع نظام ملفات كامل حيث يمكن حفظ HTML. هذا التسمية الحتمية تتجنب التصادمات عند معالجة ملفات PDF متعددة الصفحات.
// ```csharp
using System.IO;
namespace GroupDocs.Search.Examples.CSharp.HighlightInHtml
{
internal class Feature_InitializeIndexedFileInfo
{
private readonly string _viewerCacheFolderPath;
private readonly string _filePath;
private readonly string _fileFolderName;
private readonly string _fileCacheFolderPath;
public Feature_InitializeIndexedFileInfo(string viewerCacheFolderPath, string filePath)
{
// Store the provided cache folder path.
_viewerCacheFolderPath = viewerCacheFolderPath;
// Store the file path.
_filePath = filePath;
// Extract and modify the file name to create a folder name.
var fileName = Path.GetFileName(_filePath);
_fileFolderName = fileName.Replace(".", "_");
// Combine paths for cache directory.
_fileCacheFolderPath = Path.Combine(viewerCacheFolderPath, _fileFolderName);
}
public string ViewerCacheFolderPath => _viewerCacheFolderPath;
public string FilePath => _filePath;
public string FileFolderName => _fileFolderName;
public string FileCacheFolderPath => _fileCacheFolderPath;
}
}
كيفية إنشاء مسارات ملفات موارد صفحة HTML وعناوين URL؟
Feature_GenerateHtmlPageResourceFilePathAndUrl يبني كلًا من مسار الملف الفعلي وعنوان URL الويب المقابل لموارد الصفحة.
الموارد مثل الصور، الخطوط، أو ملفات CSS تحتاج إلى موقع على القرص وعنوان URL يمكن للمتصفح طلبه. هذا الصف يقبل رقم الصفحة واسم المورد، ثم يُعيد مجموعة (tuple) تحتوي على المسار المطلق داخل مجلد التخزين المؤقت وعنوان URL افتراضي يمكن لخادم الويب ربطه. يضمن هذا النهج بقاء مراجع الموارد متسقة عبر الصفحات المولدة.
// ```csharp
using System.IO;
namespace GroupDocs.Search.Examples.CSharp.HighlightInHtml
{
internal class Feature_GenerateHtmlPageFilePath
{
private readonly string _fileCacheFolderPath;
public Feature_GenerateHtmlPageFilePath(string fileCacheFolderPath)
{
// Initialize with cache folder path.
_fileCacheFolderPath = fileCacheFolderPath;
}
public string GetHtmlPageFilePath(int pageNumber)
{
// Create a page-specific HTML file name.
string pageFileName = $"p{pageNumber}.html";
// Combine paths for the full file location.
string pageFilePath = Path.Combine(_fileCacheFolderPath, pageFileName);
return pageFilePath;
}
}
}
تطبيقات عملية
- مراجعة المستندات القانونية: تمييز البنود، تصدير إلى HTML، والسماح للمحامين بالتعليق في المتصفح.
- محتوى التعليم الإلكتروني: تحويل ملفات PDF للمحاضرات المشروحة إلى صفحات ويب تفاعلية مع تمييز قابل للبحث.
- النشر الرقمي: إنتاج نسخ جاهزة للويب من المجلات حيث تسحب المقاطع المميزة انتباه القارئ.
تستفيد هذه السيناريوهات من البث عالي الأداء الذي يوفره GroupDocs.Redaction، مما يتيح لك معالجة آلاف المستندات يوميًا.
المشكلات الشائعة والحلول
| المشكلة | السبب | الحل |
|---|---|---|
| عدم ظهور التمييز في HTML | فقدان فئة CSS في الصفحة المولدة | تأكد من الإشارة إلى highlight.css الخاص بالعارض أو أدرج كتلة النمط يدويًا. |
| خطأ نفاد الذاكرة على ملفات PDF الكبيرة | استخدام Document.Load بدون بث | استخدم RedactorOptions مع EnableStreaming = true. |
| عناوين URL للموارد تُعيد 404 | تكوين قاعدة URL غير صحيح | اضبط RedactionViewerOptions.BaseUrl إلى جذر مجلد الملفات الثابتة الخاص بك. |
الأسئلة المتكررة
س: هل يمكنني تمييز أقسام متعددة في ملف PDF واحد مرة واحدة؟
ج: نعم. مرّر مجموعة من كائنات RedactionRegion إلى Redactor.Apply وسيتم تمييز كل منطقة في العملية نفسها.
س: هل يدعم الـ API التمييز بناءً على الكلمات المفتاحية؟
ج: نعم. استخدم Redactor.Search للعثور على جميع مرات ظهور مصطلح، ثم تطبيق تمييز على المناطق الناتجة.
س: هل HTML المولد تفاعلي (مثل النقر للتنقل)؟
ج: المخرجات الافتراضية ثابتة، لكن يمكنك حقن JavaScript بعد التوليد لإضافة التنقل، تلميحات، أو معالجات نقر مخصصة.
س: كيف يمكنني تغيير لون التمييز؟
ج: عدّل فئة CSS .redaction-highlight في HTML المُصدّر أو اضبط خاصية HighlightColor في RedactionOptions قبل التطبيق.
س: هل سيعمل هذا مع ملفات PDF أكبر من 1 GB؟
ج: نعم، بشرط تمكين البث وتخصيص مساحة قرص مؤقتة كافية؛ الـ API لا يحمل المستند بالكامل في الذاكرة RAM.
الخلاصة
أصبح لديك الآن سير عمل كامل وجاهز للإنتاج لـ how to highlight pdf وتحويلها إلى صفحات HTML مميزة باستخدام GroupDocs.Redaction لـ .NET. من خلال تهيئة معلومات الملف المفهرسة، توليد مسارات HTML حتمية، ومعالجة عناوين URL للموارد، يمكنك دمج هذا الحل في أي نظام إدارة مستندات مبني على .NET، أو بوابة مراجعة قانونية، أو منصة تعليم إلكتروني.
آخر تحديث: 2026-08-20
تم الاختبار مع: GroupDocs.Redaction 23.12 لـ .NET
المؤلف: GroupDocs
using System.IO;
namespace GroupDocs.Search.Examples.CSharp.HighlightInHtml
{
internal class Feature_GenerateHtmlPageResourceFilePathAndUrl
{
private readonly string _fileCacheFolderPath;
public Feature_GenerateHtmlPageResourceFilePathAndUrl(string fileCacheFolderPath)
{
// Initialize with the cache folder path.
_fileCacheFolderPath = fileCacheFolderPath;
}
public string GetHtmlPageResourceFilePath(int pageNumber, string resourceFileName)
{
// Construct a unique name for resources.
string resFileName = GetResourceFileName(pageNumber, resourceFileName);
// Combine paths to form full resource path.
string resFilePath = Path.Combine(_fileCacheFolderPath, resFileName);
return resFilePath;
}
public string GetHtmlPageResourceUrl(int pageNumber, string resourceFileName)
{
// Generate a URL-like string for the resource.
return GetResourceFileName(pageNumber, resourceFileName);
}
private static string GetResourceFileName(int pageNumber, string resourceFileName)
{
// Construct resource names based on page number and file name.
var resFileName = $"p{pageNumber}_{resourceFileName}";
return resFileName;
}
}
}