Skip to content
Open
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/advanced-features/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ Aspose.HTML for .NET هي أداة قوية تتيح للمطورين العمل
تعرف على كيفية استخدام Aspose.HTML لـ .NET لإنشاء مستندات HTML بشكل ديناميكي من بيانات JSON. استغل قوة معالجة HTML في تطبيقات .NET الخاصة بك.
### [كيفية دمج الخطوط برمجيًا في C# – دليل خطوة بخطوة](./how-to-combine-fonts-programmatically-in-c-step-by-step-guid/)
تعلم كيفية دمج خطوط متعددة برمجيًا في C# باستخدام Aspose.HTML لإنشاء مستندات HTML غنية ومتنوعة.
### [حفظ HTML كملف ZIP مع معالج موارد مخصص في C#](./save-html-as-zip-with-a-custom-resource-handler-in-c/)
تعلم كيفية حفظ مستند HTML كملف ZIP باستخدام معالج موارد مخصص في C# مع Aspose.HTML.

## خاتمة

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,317 @@
---
category: general
date: 2026-08-19
description: احفظ HTML كملف ZIP في C# باستخدام Aspose.HTML ومعالج موارد مخصص. اتبع
هذا الدليل خطوة بخطوة لتضمين الموارد وإنشاء أرشيف محمول.
draft: false
images:
- PLACEHOLDER_URL/og-image.png
keywords:
- save HTML as ZIP
- custom resource handler
- Aspose.HTML C#
- HTML archive generation
- resource streaming C#
language: ar
lastmod: 2026-08-19
og_description: احفظ ملف HTML كملف ZIP في C# باستخدام Aspose.HTML ومعالج موارد مخصص.
يوضح هذا الدرس الشيفرة الكاملة، ويشرح لماذا كل خطوة مهمة، ويغطي الأخطاء الشائعة.
og_image_alt: Screenshot of C# code that saves an HTML document as a ZIP archive
og_title: حفظ HTML كملف ZIP باستخدام معالج موارد مخصص في C# – دليل كامل
schemas:
- author: Aspose
dateModified: '2026-08-19'
description: Save HTML as ZIP in C# using Aspose.HTML and a custom resource handler.
Follow this step‑by‑step guide to embed resources and generate a portable archive.
headline: Save HTML as ZIP with a custom resource handler in C#
type: TechArticle
- description: Save HTML as ZIP in C# using Aspose.HTML and a custom resource handler.
Follow this step‑by‑step guide to embed resources and generate a portable archive.
name: Save HTML as ZIP with a custom resource handler in C#
steps:
- name: Saving to a specific folder inside the ZIP
text: 'If you want all resources to reside under a subfolder (e.g., `assets/`),
modify the handler to prepend the folder name to each file name:'
- name: Streaming directly to a network location
text: 'When the ZIP must be sent over HTTP without touching the local file system,
use a `MemoryStream` for the final archive:'
- name: Handling large resources
text: 'Large images or videos can exhaust memory if you keep everything in `MemoryStream`.
Switch to a file‑based stream inside the handler:'
- name: Preserving original URLs
text: 'Aspose.HTML rewrites the `src`/`href` attributes to point to the new locations
inside the ZIP. If you need to keep the original URLs for later processing,
capture them before saving:'
type: HowTo
tags:
- C#
- Aspose.HTML
- ZIP archive
- resource handling
title: حفظ HTML كملف ZIP باستخدام معالج موارد مخصص في C#
url: /ar/net/advanced-features/save-html-as-zip-with-a-custom-resource-handler-in-c/
---

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

# حفظ HTML كملف ZIP باستخدام معالج موارد مخصص في C#

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

تضمين الموارد بشكل صحيح مهم عندما تريد شحن صفحة ويب مستقلة، أو أرشفة تقرير للامتثال، أو تخزين لقطة للعرض دون اتصال. الخطوات أدناه تعمل مع Aspose.HTML 23.10 أو أحدث وتتطلب بيئة تطوير .NET فقط.

## ما ستقوم ببنائه

في نهاية هذا البرنامج التعليمي ستحصل على:

* فئة C# تُنفّذ `ResourceHandler` وتعيد تدفقًا (stream) لكل مورد.
* شفرة تقوم بتحميل ملف HTML موجود من القرص.
* تكوين `HTMLSaveOptions` لاستخدام المعالج المخصص.
* استدعاء `HTMLDocument.Save` ينتج `output.zip`، وهو أرشيف ZIP يحتوي على مستند HTML وجميع الموارد المشار إليها.

## المتطلبات المسبقة

* .NET 6.0 SDK أو أحدث (المثال يعمل أيضًا على .NET Framework 4.7.2).
* Visual Studio 2022 أو أي بيئة تطوير تدعم مشاريع C#.
* حزمة NuGet لـ Aspose.HTML for .NET (`Aspose.Html`).
* ملف HTML (`example.html`) يحتوي على مورد خارجي واحد على الأقل (صورة، CSS، سكريبت) لتتمكن من رؤية المعالج قيد العمل.

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

**معالج الموارد المخصص** يحدد أين يُكتب كل أصل خارجي. تنفيذ `ResourceHandler` يمنحك التحكم الكامل في تدفق الإخراج.

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

/// <summary>
/// Provides a stream for each resource referenced by the HTML document.
/// </summary>
class MyResourceHandler : ResourceHandler
{
/// <summary>
/// Returns a writable stream for the given resource.
/// </summary>
/// <param name="resource">Metadata about the resource being saved.</param>
/// <returns>A stream that Aspose.HTML will write the resource to.</returns>
public override Stream HandleResource(Resource resource)
{
// Create a memory stream for the resource.
// In production you might write to a file on disk, a cloud blob, or a database.
return new MemoryStream();
}
}
```

**لماذا هذا مهم:**
يتم استدعاء `HandleResource` لكل ملف خارجي (صور، أوراق أنماط، سكريبتات). بإرجاع `MemoryStream` جديد تسمح لـ Aspose.HTML بجمع البيانات في الذاكرة، والتي يقوم روتين الحفظ لاحقًا بضغطها في أرشيف ZIP. إذا كنت تحتاج الموارد على القرص، استبدل `new MemoryStream()` بـ `File.Create(Path.Combine(outputFolder, resource.FileName))`.

## الخطوة 2: تحميل مستند HTML

حمّل الملف المصدر باستخدام `HTMLDocument`. القالب (constructor) يقبل مسار ملف، أو عنوان URL، أو تدفق.

```csharp
using Aspose.Html;

// Adjust the path to point to your HTML file.
string htmlPath = Path.Combine("YOUR_DIRECTORY", "example.html");

// Load the document into memory.
HTMLDocument doc = new HTMLDocument(htmlPath);
```

**لماذا هذا مهم:**
تحميل المستند أولاً يضمن أن Aspose.HTML يحلل DOM ويكتشف جميع الموارد المرتبطة. ثم تمرر المكتبة كل مورد مكتشف إلى المعالج الذي عرّفته في الخطوة السابقة.

## الخطوة 3: تكوين خيارات الحفظ مع المعالج المخصص

`HTMLSaveOptions` يتيح لك تحديد تنسيق الإخراج ومعالج الموارد.

```csharp
using Aspose.Html.Saving;

// Create default save options.
HTMLSaveOptions saveOptions = new HTMLSaveOptions();

// Attach the custom resource handler.
saveOptions.ResourceHandler = new MyResourceHandler();
```

**لماذا هذا مهم:**
بدون تعيين `ResourceHandler`، يقوم Aspose.HTML بكتابة الموارد إلى مجلد مؤقت على القرص، وهو ما لا يمكنك التحكم فيه. بربط `MyResourceHandler` الخاص بك، تحدد بالضبط كيف يُخزن كل مورد قبل إنشاء أرشيف ZIP.

## الخطوة 4: حفظ المستند كأرشيف ZIP

أخيرًا، استدعِ `HTMLDocument.Save` مع `SaveFormat.Zip`. تقوم الطريقة بضغط ملف HTML وجميع التدفقات التي يوفرها المعالج.

```csharp
// Define the output ZIP path.
string zipPath = Path.Combine("YOUR_DIRECTORY", "output.zip");

// Save the document as a ZIP archive.
doc.Save(zipPath, SaveFormat.Zip, saveOptions);
```

عند اكتمال الاستدعاء، يحتوي `output.zip` على:

* `example.html` – ملف HTML الأصلي مع روابط موارد محدثة.
* جميع الأصول الخارجية (صور، CSS، JS) مخزنة كمدخلات منفصلة، كل واحدة تم إنشاؤها بواسطة المعالج المخصص.

## التحقق من النتيجة

افتح ملف ZIP المُولد بأي عارض أرشيف. يجب أن ترى بنية مجلد مشابهة لـ:

```
output.zip
│─ example.html
│─ images/
│ └─ logo.png
│─ styles/
│ └─ main.css
│─ scripts/
│ └─ app.js
```

افتح `example.html` من المجلد المستخرج في المتصفح؛ يجب أن تُظهر الصفحة كما هي الأصلية، مما يؤكد أن الموارد تم تضمينها بشكل صحيح.

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

### حفظ إلى مجلد محدد داخل ZIP

إذا أردت أن تكون جميع الموارد داخل مجلد فرعي (مثلاً `assets/`)، عدّل المعالج لإضافة اسم المجلد إلى كل اسم ملف:

```csharp
public override Stream HandleResource(Resource resource)
{
string folder = "assets";
string entryName = Path.Combine(folder, resource.FileName);
// Aspose.HTML uses the entry name when packing the ZIP.
resource.FileName = entryName;
return new MemoryStream();
}
```

### البث مباشرة إلى موقع شبكة

عندما يجب إرسال ZIP عبر HTTP دون لمس نظام الملفات المحلي، استخدم `MemoryStream` للأرشيف النهائي:

```csharp
using (var zipStream = new MemoryStream())
{
doc.Save(zipStream, SaveFormat.Zip, saveOptions);
zipStream.Position = 0; // Reset for reading.
// Send zipStream to a web API, store in Azure Blob, etc.
}
```

### معالجة الموارد الكبيرة

الصور أو الفيديوهات الكبيرة قد تستنزف الذاكرة إذا احتفظت بكل شيء في `MemoryStream`. بدّل إلى تدفق قائم على ملف داخل المعالج:

```csharp
public override Stream HandleResource(Resource resource)
{
string tempPath = Path.GetTempFileName();
return new FileStream(tempPath, FileMode.Create, FileAccess.Write);
}
```

بعد انتهاء `doc.Save`، يمكنك حذف الملفات المؤقتة.

### الحفاظ على عناوين URL الأصلية

يقوم Aspose.HTML بإعادة كتابة سمات `src`/`href` لتشير إلى المواقع الجديدة داخل ZIP. إذا كنت بحاجة للاحتفاظ بعناوين URL الأصلية لمعالجة لاحقة، احفظها قبل الحفظ:

```csharp
foreach (var img in doc.Images)
{
Console.WriteLine($"Original src: {img.Source}");
}
```

## نصائح احترافية

* **إعادة استخدام المعالج** – أنشئ نسخة واحدة من `MyResourceHandler` وأعد استخدامها عبر عمليات حفظ متعددة لتجنب تخصيص متكرر.
* **التحقق من الموارد** – داخل `HandleResource`، يمكنك فحص `resource.MimeType` أو `resource.FileName` لتصفية الملفات غير المرغوب فيها (مثلاً تخطي سكريبتات التحليلات).
* **تحديد مستوى الضغط** – `HTMLSaveOptions` يتيح `CompressionLevel` (0–9). القيم الأعلى تنتج ملفات ZIP أصغر مقابل استهلاك أكبر للمعالج.

## مثال كامل قابل للتنفيذ

فيما يلي البرنامج الكامل الذي يمكنك نسخه إلى مشروع وحدة تحكم جديد (`dotnet new console`). يوضح كل خطوة من تحميل ملف HTML إلى إنتاج `output.zip`.

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

class MyResourceHandler : ResourceHandler
{
public override Stream HandleResource(Resource resource)
{
// Return a memory stream for each resource.
// Replace with FileStream if you need disk persistence.
return new MemoryStream();
}
}

class Program
{
static void Main()
{
// 1️⃣ Define paths.
string baseDir = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY");
string htmlPath = Path.Combine(baseDir, "example.html");
string zipPath = Path.Combine(baseDir, "output.zip");

// 2️⃣ Load the HTML document.
HTMLDocument doc = new HTMLDocument(htmlPath);

// 3️⃣ Configure save options with the custom handler.
HTMLSaveOptions saveOptions = new HTMLSaveOptions
{
ResourceHandler = new MyResourceHandler()
};

// 4️⃣ Save as a ZIP archive.
doc.Save(zipPath, SaveFormat.Zip, saveOptions);

Console.WriteLine($"HTML saved as ZIP at: {zipPath}");
}
}
```

**الناتج المتوقع**

```
HTML saved as ZIP at: C:\path\to\YOUR_DIRECTORY\output.zip
```

استخرج ZIP للتحقق من البنية الموضحة سابقًا.

## الخلاصة

أنت الآن تعرف كيف **تحفظ HTML كملف ZIP** باستخدام Aspose.HTML for .NET مع الاستفادة من **معالج موارد مخصص** للتحكم في مكان كتابة كل أصل. يمنحك هذا النهج مرونة كاملة في تخزين الموارد، ويسمح بالمعالجة داخل الذاكرة، ويتكامل بسهولة مع سير عمل سحابي أو محلي.

من هنا يمكنك:

* توسيع المعالج لكتابة الموارد إلى Azure Blob Storage (الكلمة المفتاحية الثانوية: معالج موارد مخصص).
* دمج ZIP مع توقيع رقمي لتسليم مستندات آمن.
* استخدام `HTMLSaveOptions` لتوليد صيغ أخرى (مثل MHTML) مع الاستمرار في إدارة الموارد برمجياً.

جرّب أنواع تدفقات مختلفة، مستويات ضغط مختلفة، وهياكل مجلدات لتناسب متطلبات مشروعك. Happy coding!

## ماذا يجب أن تتعلم بعد ذلك؟

الدروس التالية تغطي مواضيع ذات صلة وثيقة تبني على التقنيات الموضحة في هذا الدليل. كل مورد يتضمن أمثلة شفرة كاملة مع شروحات خطوة بخطوة لمساعدتك على إتقان ميزات API إضافية واستكشاف نهج تنفيذ بديلة في مشاريعك.

- [كيفية حفظ HTML في C# – دليل كامل باستخدام معالج موارد مخصص](/html/english/net/working-with-html-documents/how-to-save-html-in-c-complete-guide-using-a-custom-resource/)
- [معالج موارد مخصص في C# – تحويل HTML إلى ZIP](/html/english/net/html-extensions-and-conversions/custom-resource-handler-in-c-convert-html-to-zip-tutorial/)
- [كيفية عرض HTML – دليل كامل مع معالج موارد مخصص](/html/english/net/rendering-html-documents/how-to-render-html-complete-guide-with-custom-resource-handl/)

{{< /blocks/products/pf/tutorial-page-section >}}
{{< /blocks/products/pf/main-container >}}
{{< /blocks/products/pf/main-wrap-class >}}
{{< blocks/products/products-backtop-button >}}
2 changes: 2 additions & 0 deletions html/arabic/net/generate-jpg-and-png-images/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ Aspose.HTML for .NET هي مكتبة قوية تتيح للمطورين إنشا
دليل شامل يوضح كيفية تحويل HTML إلى صورة باستخدام C# ومكتبة Aspose.HTML خطوة بخطوة.
### [تحويل docx إلى png في C# – دليل كامل خطوة بخطوة](./convert-docx-to-png-in-c-full-step-by-step-guide/)
تعلم كيفية تحويل ملفات docx إلى صور PNG باستخدام C# ومكتبة Aspose.HTML خطوة بخطوة.
### [كيفية استخدام Aspose لتحويل HTML إلى PNG في C#](./how-to-use-aspose-to-render-html-to-png-in-c/)
تعلم كيفية تحويل صفحات HTML إلى صور PNG باستخدام Aspose في بيئة C# خطوة بخطوة.

## خاتمة

Expand Down
Loading