Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions html/arabic/net/html-extensions-and-conversions/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,8 @@ url: /ar/net/html-extensions-and-conversions/
تعلم كيفية ضغط ملفات HTML باستخدام معالج موارد مخصص في C# مع Aspose.HTML.
### [خيارات حفظ Aspose HTML: حفظ HTML إلى تدفق في C#](./aspose-html-save-options-save-html-to-stream-in-c/)
تعلم كيفية حفظ مستند HTML إلى تدفق باستخدام Aspose.HTML في C# خطوة بخطوة.
### [كيفية استخدام المعالج في Aspose.HTML – تحميل HTML، حفظ كملف ZIP](./how-to-use-handler-in-aspose-html-load-html-save-as-zip/)
تعلم كيفية تحميل مستند HTML واستخدام المعالج لحفظه كملف ZIP باستخدام Aspose.HTML.

## خاتمة

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,182 @@
---
category: general
date: 2026-02-25
description: كيفية استخدام المعالج لتحميل HTML من URL وحفظ صفحة الويب كملف ZIP باستخدام
Aspose.HTML – دليل كامل خطوة بخطوة بلغة C#.
draft: false
keywords:
- how to use handler
- load html from url
- custom resource handler
- save webpage as zip
- create zip from html
language: ar
og_description: كيفية استخدام المعالج لتحميل HTML من عنوان URL وحفظ صفحة الويب كملف
zip باستخدام Aspose.HTML. تعلم سير العمل الكامل بلغة C# في دقائق.
og_title: كيفية استخدام المعالج في Aspose.HTML – تحميل HTML، حفظ كملف ZIP
tags:
- Aspose.HTML
- C#
- Web Scraping
title: كيفية استخدام المعالج في Aspose.HTML – تحميل HTML، حفظ كملف ZIP
url: /ar/net/html-extensions-and-conversions/how-to-use-handler-in-aspose-html-load-html-save-as-zip/
---

{{< blocks/products/pf/main-wrap-class >}}
{{< blocks/products/pf/main-container >}}
{{< blocks/products/pf/tutorial-page-section >}}

# كيفية استخدام المعالج في Aspose.HTML – تحميل HTML، حفظ كملف ZIP

هل تساءلت يومًا **كيفية استخدام المعالج** عند سحب صفحة ويب إلى تطبيق .NET الخاص بك؟ ربما جرّبت `HtmlDocument.Open` وحصلت على الـ HTML، لكن الصور وملفات CSS والخطوط اختفت كأنها في الهواء. هذه مشكلة شائعة—فالموارد تُفقد ما لم تخبر Aspose.HTML بما يجب فعله بها.

في هذا الدرس سنستعرض تحميل HTML من عنوان URL، ربط **معالج موارد مخصص**، وأخيرًا **حفظ صفحة الويب كملف zip** بحيث تحصل على أرشيف محمول واحد. في النهاية ستحصل على مقتطف C# جاهز للتنفيذ يمكنك إدراجه في أي مشروع، بالإضافة إلى مجموعة من النصائح التي ستوفر عليك المتاعب لاحقًا.

## ما ستحتاجه

- .NET 6+ (تعمل الواجهة البرمجية أيضًا على .NET Core و .NET Framework)
- Aspose.HTML for .NET (حزمة NuGet `Aspose.HTML`)
- قليل من الخبرة في C# (ستكون بخير إذا كتبت `Console.WriteLine` من قبل)

لا أدوات إضافية، لا خدمات خارجية—فقط المكتبة وعنوان URL تريد أرشفته.

![how to use handler diagram](image.png "مثال على كيفية استخدام المعالج")

## الخطوة 1: تحميل HTML من URL

أول شيء في أي تدفق استخراج ويب هو جلب مصدر الصفحة. تجعل Aspose.HTML ذلك سطرًا واحدًا، لكن تذكر أننا **نحمّل html من url** باستخدام مجموعة الشبكة المدمجة.

```csharp
using System.IO;
using Aspose.Html;
using Aspose.Html.Saving;

// 1️⃣ Load the page you want to archive
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.Open("https://example.com"); // replace with any public URL
```

> **لماذا هذا مهم:** `HtmlDocument.Open` يحلل العلامات *ويحل* عناوين URL النسبية داخليًا، لكنه لا يحفظ الأصول الخارجية تلقائيًا. لهذا نحتاج إلى معالج لاحقًا.

## الخطوة 2: إنشاء معالج موارد مخصص

الآن يأتي جوهر الموضوع—**كيفية استخدام المعالج** لاعتراض كل طلب مورد خارجي (صور، CSS، خطوط، إلخ). من خلال توريث `ResourceHandler` ستحصل على تحكم كامل في الدفق الذي يدعم كل أصل.

```csharp
// 2️⃣ Define your own handler (optional but powerful)
public class MyResourceHandler : ResourceHandler
{
// Called for each external resource the document needs
public override Stream HandleResource(ResourceInfo info)
{
// Here you could download the file, cache it, or rewrite it.
// For this demo we simply return an empty stream – Aspose will
// still create the entry in the ZIP, keeping the folder structure.
return new MemoryStream();
}
}
```

> **نصيحة احترافية:** في سيناريو الإنتاج قد ترغب في تنزيل البايتات الفعلية (`HttpClient.GetStreamAsync(info.Uri)`) وإرجاع ذلك الدفق. هذا يضمن أن ملف ZIP المحفوظ يحتوي على الصور الحقيقية بدلاً من أماكن فارغة.

## الخطوة 3: ضبط خيارات الحفظ وربط المعالج

بعد أن أصبح المعالج جاهزًا، نخبر Aspose.HTML كيف يُعبّأ كل شيء. تسمح لك فئة `HtmlSaveOptions` بتفعيل المفتاح `SaveToZipArchive` وربط `MyResourceHandler` الخاص بك.

```csharp
// 3️⃣ Set up saving options – this is where we **save webpage as zip**
HtmlSaveOptions saveOptions = new HtmlSaveOptions
{
// Attach our custom handler – new API as of v22.10
OutputStorage = new MyResourceHandler(),

// Instruct Aspose to bundle HTML + resources into a single ZIP file
SaveToZipArchive = true
};
```

> **شرح:** `OutputStorage` هي الخاصية التي تستقبل كائن المعالج. عندما يمرّ الحافظ عبر DOM، يستدعي `HandleResource` لكل رابط خارجي. وبما أن `SaveToZipArchive` مفعّل، يكتب الحافظ كل دفق مُرجع كإدخال ZIP يطابق المسار الأصلي.

## الخطوة 4: حفظ المستند في Memory Stream

يمكننا الكتابة مباشرة إلى القرص، لكن إبقاء كل شيء في الذاكرة يجعل الكود قابلًا للاستخدام في ASP.NET، Azure Functions، أو أي مكان لا تريد فيه ملفًا مؤقتًا. إليك الخطوة الأخيرة التي **تنشئ zip من html**.

```csharp
// 4️⃣ Save everything – HTML + resources – into a MemoryStream
using (MemoryStream outputStream = new MemoryStream())
{
htmlDoc.Save(outputStream, saveOptions);

// At this point outputStream holds a valid ZIP archive.
// For demo purposes we write it to the file system:
File.WriteAllBytes("example_page.zip", outputStream.ToArray());
}
```

### النتيجة المتوقعة

- يظهر ملف `example_page.zip` في مجلد المشروع.
- داخل الـ ZIP ستجد `index.html` بالإضافة إلى هيكل المجلدات (`images/`، `css/`، إلخ).
- رغم أن معالجنا التجريبي أعاد تدفقات فارغة، فإن تخطيط الـ ZIP يعكس الصفحة الأصلية—مثالي لاستبداله ب downloader حقيقي لاحقًا.

## الاختلافات الشائعة وحالات الحافة

### تحميل ملف محلي بدلاً من URL
إذا احتجت **لتحميل html من url**‑مثل المسارات على القرص، استبدل `htmlDoc.Open("https://example.com")` بـ `htmlDoc.Open(@"C:\path\to\file.html")`. يبقى باقي الخطوات كما هي.

### حفظ الموارد الحقيقية
لدمج الصور فعليًا، عدّل `HandleResource`:

```csharp
public override Stream HandleResource(ResourceInfo info)
{
// Download the resource using HttpClient
HttpClient client = new HttpClient();
var data = client.GetByteArrayAsync(info.Uri).Result;
return new MemoryStream(data);
}
```

> **تحذير:** استدعاءات الشبكة داخل المعالج تحجب خيط الحفظ؛ للصفحات الكبيرة فكر في جعل المعالج غير متزامن (متاح في إصدارات Aspose الأحدث).

### تغيير أسماء إدخالات ZIP
`ResourceInfo` يحتوي على `FileName` و `Path`. يمكنك تعديلهما لتسوية الهيكل أو إضافة بادئة:

```csharp
public override Stream HandleResource(ResourceInfo info)
{
// Example: prepend "assets/" to every entry
info.Path = Path.Combine("assets", info.Path);
return base.HandleResource(info);
}
```

### استخدام تخزين إخراج مختلف
يمكن أن يكون `OutputStorage` أيضًا `FileSystemStorage` إذا فضلت مجلدًا بدلاً من ZIP. فقط عيّن `SaveToZipArchive = false` ووجه `OutputStorage` إلى مسار الدليل.

## نصائح احترافية ومخاطر

- **لا تنسَ تحرير** `HtmlDocument` إذا فتحت صفحات متعددة في حلقة؛ وإلا قد تتسرب موارد أصلية.
- **استخدام الذاكرة:** حفظ صفحات ضخمة في `MemoryStream` قد يستهلك RAM بشكل كبير. للأرشيفات متعددة الميغابايت، احفظ مباشرة إلى ملف (`FileStream`) بدلاً من ذلك.
- **ترميز الأحرف:** تحترم Aspose.HTML وسم `<meta charset>`. إذا استخدمت الصفحة مصدرًا بترميز غير شائع، تحقق من أن الـ HTML الناتج يُعرض بشكل صحيح بعد الاستخراج.
- **الاختبار:** افتح الـ ZIP المُولد في متصفح (اسحب `index.html` خارجه) لتتأكد من أن جميع الموارد تُحل. إذا كانت الصور مفقودة، فغالبًا ما يكون `HandleResource` قد أرجع تدفقًا فارغًا.

## ملخص

غطّينا **كيفية استخدام المعالج** لاعتراض الموارد الخارجية، وأظهرنا **تحميل html من url**، وبنينا **معالج موارد مخصص**، وأخيرًا **حفظ صفحة الويب كملف zip**—بمعنى **إنشاء zip من html** ببضع أسطر من C#. النمط قابل للتوسيع: استبدل `MemoryStream` الفارغ بـ downloader حقيقي، غير هدف الإخراج، أو دمج المنطق في واجهة ويب API تُعيد الـ ZIP عند الطلب.

---

### ما التالي؟

- **المعالجة الدفعية:** كرّر القائمة على مجموعة من عناوين URL وأنشئ ZIP لكل صفحة.
- **تعديلات الضغط:** استخدم `ZipSaveOptions` لضبط مستوى الضغط لتسريع التنزيلات.
- **التكامل مع ASP.NET Core:** أعد `MemoryStream` كـ `FileResult` ليتمكن المستخدمون من تنزيل الأرشيف مباشرة من نقطة نهاية ويب.
- **استكشاف ميزات Aspose.HTML الأخرى:** تحويل PDF، تعديل DOM، أو العرض بدون رأس.

هل لديك أسئلة حول حالة استخدام معينة—ربما تحتاج إلى الحفاظ على JavaScript أو التعامل مع صفحات محمية بالمصادقة؟ اترك تعليقًا أدناه؛ سأكون سعيدًا بالغوص أعمق. برمجة سعيدة!

{{< /blocks/products/pf/tutorial-page-section >}}
{{< /blocks/products/pf/main-container >}}
{{< /blocks/products/pf/main-wrap-class >}}
{{< blocks/products/products-backtop-button >}}
3 changes: 3 additions & 0 deletions html/arabic/net/rendering-html-documents/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,9 @@ url: /ar/net/rendering-html-documents/
### [تحويل HTML إلى PDF باستخدام Aspose.HTML – دليل خطوة بخطوة](./render-html-to-pdf-with-aspose-html-step-by-step-guide/)
تعلم كيفية تحويل مستندات HTML إلى ملفات PDF باستخدام Aspose.HTML في .NET خطوة بخطوة.

### [كيفية تصيير HTML كـ PNG في C# – دليل خطوة بخطوة](./how-to-render-html-as-png-in-c-step-by-step-guide/)
تعلم خطوة بخطوة كيفية تحويل مستندات HTML إلى صور PNG باستخدام Aspose.HTML في C#.

{{< /blocks/products/pf/tutorial-page-section >}}

{{< /blocks/products/pf/main-container >}}
Expand Down
Loading
Loading