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 باستخدام Aspose HTML – دليل كامل](./how-to-zip-html-with-aspose-html-complete-guide/)
تعلم كيفية ضغط ملفات HTML إلى أرشيف ZIP باستخدام Aspose.HTML خطوة بخطوة في دليل شامل.

## خاتمة

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,237 @@
---
category: general
date: 2026-03-02
description: تعلم كيفية ضغط ملفات HTML باستخدام Aspose HTML ومعالج موارد مخصص و.NET ZipArchive.
دليل خطوة بخطوة حول كيفية إنشاء ملف zip وتضمين الموارد.
draft: false
keywords:
- how to zip html
- custom resource handler
- aspose html save
- how to create zip
- how to embed resources
language: ar
og_description: تعلم كيفية ضغط ملفات HTML باستخدام Aspose HTML، ومعالج موارد مخصص،
و .NET ZipArchive. اتبع الخطوات لإنشاء ملف مضغوط وتضمين الموارد.
og_title: كيفية ضغط ملفات HTML باستخدام Aspose HTML – دليل كامل
tags:
- Aspose.HTML
- C#
- ZIP archive
title: كيفية ضغط ملفات HTML باستخدام Aspose HTML – دليل كامل
url: /ar/net/advanced-features/how-to-zip-html-with-aspose-html-complete-guide/
---

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

# كيفية ضغط HTML باستخدام Aspose HTML – الدليل الكامل

هل احتجت يومًا إلى **ضغط HTML** مع كل صورة، ملف CSS، والسكريبتات التي يشير إليها؟ ربما تقوم بإنشاء حزمة تنزيل لنظام مساعدة غير متصل، أو تريد فقط نشر موقع ثابت كملف واحد. في كلتا الحالتين، تعلم **كيفية ضغط HTML** مهارة مفيدة في صندوق أدوات مطور .NET.

في هذا الدرس سنستعرض حلًا عمليًا يستخدم **Aspose.HTML**، **معالج موارد مخصص**، وفئة `System.IO.Compression.ZipArchive` المدمجة. في النهاية ستعرف بالضبط كيف **تحفظ** مستند HTML داخل ملف ZIP، **تضمّن الموارد**، وحتى تعدّل العملية إذا احتجت لدعم عناوين URI غير عادية.

> **نصيحة احترافية:** النمط نفسه يعمل مع ملفات PDF، SVG، أو أي صيغة أخرى تعتمد على موارد ويب كثيرة—فقط استبدل فئة Aspose.

---

## ما ستحتاجه

- .NET 6 أو أحدث (الكود يُجمّع أيضًا مع .NET Framework)
- حزمة NuGet **Aspose.HTML for .NET** (`Aspose.Html`)
- فهم أساسي لتدفقات C# وإدخال/إخراج الملفات
- صفحة HTML تُشير إلى موارد خارجية (صور، CSS، JS)

لا توجد حاجة لمكتبات ZIP طرف ثالث إضافية؛ مساحة الاسم `System.IO.Compression` القياسية تقوم بكل العمل الشاق.

## الخطوة 1: إنشاء معالج موارد مخصص (custom resource handler)

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

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

// Step 1 – custom handler that copies local files into the output stream
class MyResourceHandler : ResourceHandler
{
public override void HandleResource(string uri, Stream outputStream)
{
// Assume uri is a local file path; adjust logic for URLs if needed
using (var source = new FileStream(uri, FileMode.Open, FileAccess.Read))
{
source.CopyTo(outputStream);
}
}
}
```

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

## الخطوة 2: تحميل مستند HTML (aspose html save)

Aspose.HTML يمكنه استيعاب عنوان URL، مسار ملف، أو سلسلة HTML خام. في هذا العرض سنحمّل صفحة عن بُعد، لكن نفس الكود يعمل مع ملف محلي.

```csharp
using Aspose.Html;

// Step 2 – load the HTML document (URL, file path, or raw string)
var htmlDoc = new HTMLDocument("https://example.com/sample.html");
```

**ما الذي يحدث في الخلفية؟**
فئة `HTMLDocument` تحلل العلامات، تبني DOM، وتُحلّ العناوين النسبية. عندما تستدعي لاحقًا `Save`، يتجول Aspose في الـ DOM، يطلب من `ResourceHandler` كل ملف خارجي، ويكتب كل شيء إلى الدفق الهدف.

## الخطوة 3: إعداد أرشيف ZIP في الذاكرة (how to create zip)

بدلاً من كتابة ملفات مؤقتة إلى القرص، سنحتفظ بكل شيء في الذاكرة باستخدام `MemoryStream`. هذا الأسلوب أسرع ويتجنب فوضى نظام الملفات.

```csharp
using System.IO;
using System.IO.Compression;

// Step 3 – create a memory‑backed ZIP archive
using var archiveStream = new MemoryStream();
using var archive = new ZipArchive(archiveStream, ZipArchiveMode.Create, true);
```

**ملاحظة حالة خاصة:**
إذا كانت صفحة HTML تشير إلى أصول كبيرة جدًا (مثل صور عالية الدقة)، قد يستهلك الدفق في الذاكرة الكثير من الذاكرة RAM. في هذه الحالة، انتقل إلى ZIP مدعوم بـ `FileStream` (`new FileStream("temp.zip", FileMode.Create)`).

## الخطوة 4: حفظ مستند HTML داخل ZIP (aspose html save)

الآن نجمع كل شيء: المستند، `MyResourceHandler` الخاص بنا، وأرشيف ZIP.

```csharp
// Step 4 – save HTML + resources into the ZIP
var resourceHandler = new MyResourceHandler();
htmlDoc.Save(archive, resourceHandler);
```

خلف الكواليس، يُنشئ Aspose مدخلاً للملف HTML الرئيسي (عادةً `index.html`) ومدخلات إضافية لكل مورد (مثل `images/logo.png`). يكتب `resourceHandler` البيانات الثنائية مباشرةً إلى تلك المدخلات.

## الخطوة 5: كتابة ZIP إلى القرص (how to embed resources)

أخيرًا، نحفظ الأرشيف الموجود في الذاكرة إلى ملف. يمكنك اختيار أي مجلد؛ فقط استبدل `YOUR_DIRECTORY` بالمسار الفعلي الخاص بك.

```csharp
using System.IO;

// Step 5 – persist the ZIP file
File.WriteAllBytes(@"YOUR_DIRECTORY\sample.zip", archiveStream.ToArray());

// Optional: verify the archive size
Console.WriteLine($"ZIP created: {new FileInfo(@"YOUR_DIRECTORY\sample.zip").Length} bytes");
```

**نصيحة للتحقق:**
افتح `sample.zip` الناتج باستخدام مستكشف الأرشيف في نظام التشغيل. يجب أن ترى `index.html` بالإضافة إلى هيكل مجلدات يعكس مواقع الموارد الأصلية. انقر مزدوجًا على `index.html`—يجب أن تُعرض دون اتصال دون فقدان الصور أو الأنماط.

## مثال كامل يعمل (جميع الخطوات مجمعة)

فيما يلي البرنامج الكامل الجاهز للتنفيذ. انسخه والصقه في مشروع تطبيق Console جديد، استعد حزمة NuGet `Aspose.Html`، واضغط **F5**.

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

// Step 1: Custom ResourceHandler that copies each external resource into the ZIP entry.
class MyResourceHandler : ResourceHandler
{
public override void HandleResource(string uri, Stream outputStream)
{
// Handle both absolute file paths and relative URLs.
if (File.Exists(uri))
{
using var source = new FileStream(uri, FileMode.Open, FileAccess.Read);
source.CopyTo(outputStream);
}
else
{
// Fallback: try to download from the web (rarely needed for offline ZIPs).
using var client = new System.Net.WebClient();
var data = client.DownloadData(uri);
outputStream.Write(data, 0, data.Length);
}
}
}

class Program
{
static void Main()
{
// Step 2: Load the HTML document (URL, file path, or raw HTML string).
var htmlDoc = new HTMLDocument("https://example.com/sample.html");

// Step 3: Prepare an in‑memory ZIP archive.
using var archiveStream = new MemoryStream();
using var archive = new ZipArchive(archiveStream, ZipArchiveMode.Create, true);

// Step 4: Save the HTML + its resources into the ZIP.
var resourceHandler = new MyResourceHandler();
htmlDoc.Save(archive, resourceHandler);

// Step 5: Persist the ZIP to disk.
string outputPath = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
"sample.zip");
File.WriteAllBytes(outputPath, archiveStream.ToArray());

Console.WriteLine($"✅ ZIP created at: {outputPath}");
}
}
```

**النتيجة المتوقعة:**
يظهر ملف `sample.zip` على سطح المكتب. استخرجه وافتح `index.html`—يجب أن تبدو الصفحة تمامًا كما النسخة المتصلة بالإنترنت، لكنها الآن تعمل بالكامل دون اتصال.

## الأسئلة الشائعة (FAQs)

### هل يعمل هذا مع ملفات HTML محلية؟

بالطبع. استبدل عنوان URL في `HTMLDocument` بمسار ملف، مثل `new HTMLDocument(@"C:\site\index.html")`. سيقوم نفس `MyResourceHandler` بنسخ الموارد المحلية.

### ماذا لو كان المورد data‑URI (مُشفّر base64)؟

Aspose يتعامل مع data‑URIs على أنها مضمَّنة بالفعل، لذا لا يُستدعى المعالج. لا حاجة لأي عمل إضافي.

### هل يمكنني التحكم في بنية المجلدات داخل ZIP؟

نعم. قبل استدعاء `htmlDoc.Save`، يمكنك ضبط `htmlDoc.SaveOptions` وتحديد مسار أساسي. بدلاً من ذلك، عدل `MyResourceHandler` لإضافة اسم مجلد عند إنشاء المدخلات.

### كيف أضيف ملف README إلى الأرشيف؟

فقط أنشئ مدخلًا جديدًا يدويًا:

```csharp
var readme = archive.CreateEntry("README.txt");
using var writer = new StreamWriter(readme.Open());
writer.WriteLine("This ZIP contains an offline HTML site.");
```

## الخطوات التالية والمواضيع ذات الصلة

- **كيفية تضمين الموارد** في صيغ أخرى (PDF، SVG) باستخدام واجهات برمجة التطبيقات المشابهة لـ Aspose.
- **تخصيص مستوى الضغط**: `new ZipArchive(stream, ZipArchiveMode.Create, true, Encoding.UTF8)` يتيح لك تمرير `ZipArchiveEntry.CompressionLevel` للحصول على أرشيف أسرع أو أصغر.
- **خدمة ZIP عبر ASP.NET Core**: إرجاع `MemoryStream` كنتيجة ملف (`File(archiveStream, "application/zip", "site.zip")`).

جرّب تلك التغييرات لتناسب احتياجات مشروعك. النمط الذي غطيناه مرن بما يكفي للتعامل مع معظم سيناريوهات “تجميع كل شيء في ملف واحد”.

## الخلاصة

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

الآن يمكنك بثقة إنشاء حزم ZIP للمواقع الثابتة، تصدير حزم الوثائق، أو حتى أتمتة النسخ الاحتياطية غير المتصلة—كل ذلك ببضع أسطر من C#.

هل لديك تعديل ترغب في مشاركته؟ اترك تعليقًا، ونتمنى لك برمجة سعيدة!

{{< /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/canvas-and-image-manipulation/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ url: /ar/net/canvas-and-image-manipulation/
### [تحويل SVG إلى XPS في .NET باستخدام Aspose.HTML](./convert-svg-to-xps/)
تعرف على كيفية تحويل SVG إلى XPS باستخدام Aspose.HTML لـ .NET. عزز تطوير الويب لديك باستخدام هذه المكتبة القوية.
### [كيفية تمكين مضاد التعرج في C# – حواف ناعمة](./how-to-enable-antialiasing-in-c-smooth-edges/)
### [كيفية تمكين مضاد التعرج في C# – دليل كامل لأنماط الخط](./how-to-enable-antialiasing-in-c-complete-font-style-guide/)
دليل شامل يوضح كيفية تمكين مضاد التعرج في C# وتطبيق أنماط الخط المختلفة.

## خاتمة

Expand Down
Loading