diff --git a/html/arabic/net/generate-jpg-and-png-images/_index.md b/html/arabic/net/generate-jpg-and-png-images/_index.md index 432f80cdc..f94b47674 100644 --- a/html/arabic/net/generate-jpg-and-png-images/_index.md +++ b/html/arabic/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML for .NET هي مكتبة قوية تتيح للمطورين إنشا تعلم كيفية تمكين مضاد التعرج عند تحويل ملفات DOCX إلى صور PNG أو JPG باستخدام Aspose.HTML. ### [تحويل docx إلى png – إنشاء أرشيف zip في C# – دليل تعليمي](./convert-docx-to-png-create-zip-archive-c-tutorial/) تعلم كيفية تحويل ملفات docx إلى صور PNG وإنشاء أرشيف ZIP باستخدام C# و Aspose.HTML. +### [إنشاء PNG من HTML في C# – دليل خطوة بخطوة](./create-png-from-html-in-c-step-by-step-guide/) +تعلم كيفية تحويل HTML إلى صورة PNG باستخدام C# و Aspose.HTML خطوة بخطوة. ## خاتمة diff --git a/html/arabic/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/arabic/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..564930a4a --- /dev/null +++ b/html/arabic/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,266 @@ +--- +category: general +date: 2026-04-03 +description: إنشاء PNG من HTML باستخدام Aspose.HTML في C#. تعلم كيفية تحويل HTML إلى + PNG، وتحويل HTML إلى صورة، وحفظ HTML كملف PNG مع تحسين الحواف. +draft: false +keywords: +- create png from html +- render html to png +- convert html to image +- save html as png +- how to render html +language: ar +og_description: إنشاء PNG من HTML باستخدام Aspose.HTML. يوضح هذا الدليل كيفية تحويل + HTML إلى PNG، وتحويل HTML إلى صورة، وحفظ HTML كملف PNG بسرعة. +og_title: إنشاء PNG من HTML في C# – دليل كامل +tags: +- C# +- Aspose.HTML +- Image Rendering +- HTML to PNG +title: إنشاء PNG من HTML في C# – دليل خطوة بخطوة +url: /ar/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# إنشاء PNG من HTML في C# – دليل كامل + +هل احتجت يومًا إلى **create PNG from HTML** لكن لم تكن متأكدًا أي مكتبة تختار؟ لست وحدك—العديد من المطورين يواجهون هذه العقبة عندما يرغبون في إنشاء صور مصغرة، رسومات بريد إلكتروني، أو صور جاهزة للـ PDF في الوقت الفعلي. +الخبر السار؟ باستخدام Aspose.HTML يمكنك **render HTML to PNG** ببضع أسطر من الشيفرة، وستتعلم أيضًا كيفية **convert HTML to image**، **save HTML as PNG**، وحتى تعديل جودة العرض. + +في هذا الدرس سنستعرض مثالًا عمليًا يحول مقطع HTML صغير يحتوي على نص غامق ومائل إلى ملف PNG واضح. في النهاية ستعرف بالضبط **how to render HTML** مع مضاد التعرجات (antialiasing)، تحسين الحواف (hinting)، وخطوط مخصصة—بدون تخمين. + +## ما ستحتاجه + +- **.NET 6.0 أو أحدث** (الكود يعمل أيضًا على .NET Framework، لكن .NET 6 هو الخيار المثالي). +- **Aspose.HTML for .NET** – يمكنك الحصول على نسخة تجريبية مجانية من موقع Aspose أو استخدام حزمة NuGet (`Aspose.HTML`). +- بيئة تطوير C# أساسية (Visual Studio، Rider، أو VS Code). +- صلاحية كتابة في المجلد الذي سيُحفظ فيه ملف PNG الناتج. + +هذا كل شيء—لا صور إضافية، لا خدمات خارجية، فقط C# نقي. لنبدأ. + +--- + +## الخطوة 1 – إعداد المشروع وتثبيت Aspose.HTML + +أولاً، أنشئ مشروع console جديد (أو أضف الشيفرة إلى مشروع موجود). ثم أضف حزمة Aspose.HTML: + +```bash +dotnet add package Aspose.HTML +``` + +لماذا هذه الخطوة مهمة: Aspose.HTML يضم محركًا كاملاً لعرض HTML‑CSS‑SVG، لذا لا تحتاج إلى الاعتماد على متصفح ويب أو Chrome بدون رأس. يمنحك نتائج حتمية عبر الخوادم. + +## الخطوة 2 – إنشاء مستند HTML يحتوي على نص غامق + +سنبدأ بسلسلة HTML بسيطة تتضمن وسم `

` مُنسق بـ **font‑weight:bold**. تقوم فئة `HTMLDocument` بتحليل العلامات وبناء DOM يمكنك لاحقًا تمريره إلى العارض. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; +using System.IO; + +// Step 2: Build the HTML document +HTMLDocument htmlDoc = new HTMLDocument( + "

Hello

" +); +``` + +*لماذا غامق؟* الأنماط الغامقة والمائلة تُفعِّل معالجة نمط الخط في العارض، مما يتيح لنا إظهار **how to render HTML** بخيارات طباعية مختلفة. + +## الخطوة 3 – تعريف معلومات الخط (غامق + مائل) + +يتيح لك Aspose.HTML تحديد كائن `FontInfo` يتحكم في العائلة، الحجم، والنمط. هنا نطلب Arial، 14 pt، مع دمج علمي الغامق والمائل باستخدام عملية OR بتية. + +```csharp +// Step 3: Set up font information (bold + italic) +FontInfo fontInfo = new FontInfo("Arial", 14, WebFontStyle.Bold | WebFontStyle.Italic); +``` + +> **نصيحة احترافية:** إذا لم يتوفر الخط المطلوب على الجهاز الهدف، سيعود Aspose إلى خط نظام افتراضي. لضمان التناسق، قم بدمج خط ويب (مثلاً عبر `@font-face`) قبل العرض. + +## الخطوة 4 – تمكين مضاد التعرجات للحصول على صورة أكثر سلاسة + +مضاد التعرجات يقلل الحواف المتعرجة على المنحنيات والنص. بدون ذلك قد يبدو PNG متبّقًا، خاصةً عند الدقة المنخفضة. + +```csharp +// Step 4: Turn on antialiasing +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, + // Optional: set image dimensions (defaults to HTML size) + // Width = 400, + // Height = 200 +}; +``` + +## الخطوة 5 – تشغيل تحسين الحواف للحصول على نص أوضح + +تحسين الحواف (hinting) يضبط الحروف على حدود البكسل، وهو أمر حاسم عند عرض أحجام خطوط صغيرة. هذه الخطوة تضمن أن خطوة **convert HTML to image** تنتج نصًا مقروءًا. + +```csharp +// Step 5: Enable text hinting +TextOptions textOptions = new TextOptions +{ + UseHinting = true +}; +``` + +## الخطوة 6 – تكوين عارض الصورة مع جميع الخيارات + +الآن نربط خيارات العرض والنص إلى كائن `ImageRenderer`. العارض هو العامل الأساسي الذي يرسم HTML فعليًا على البت ماب. + +```csharp +// Step 6: Prepare the renderer +ImageRenderer renderer = new ImageRenderer +{ + ImageRenderingOptions = imageOptions, + TextOptions = textOptions +}; +``` + +## الخطوة 7 – عرض مستند HTML إلى ملف PNG + +أخيرًا، نفتح `FileStream` إلى مسار الوجهة ونطلب من العارض كتابة الصورة. يتم استنتاج تنسيق الإخراج من امتداد الملف (`.png`). + +```csharp +// Step 7: Render to PNG +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + renderer.Render(htmlDoc, outputStream); +} +``` + +> **ما ستراه:** ملف `output.png` يحتوي على كلمة “Hello” بخط Arial غامق‑مائل، مضاد التعرجات بشكل مثالي. افتحه بأي عارض صور للتحقق. + +![مثال ناتج إنشاء PNG من HTML](https://example.com/placeholder.png "إنشاء PNG من HTML – النتيجة المرسومة") + +*نص بديل:* **إنشاء PNG من HTML** مثال يوضح النص الغامق‑المائل. + +--- + +## الاختلافات الشائعة وحالات الحافة + +### العرض إلى صيغ صور أخرى + +إذا كنت بحاجة إلى JPEG أو GIF بدلاً من ذلك، ما عليك سوى تغيير امتداد الملف وربما تعديل `ImageRenderingOptions`: + +```csharp +imageOptions.ImageFormat = ImageFormat.Jpeg; // or ImageFormat.Gif +string jpegPath = Path.Combine("YOUR_DIRECTORY", "output.jpg"); +``` + +### ضبط حجم الصورة بشكل مستقل عن HTML + +أحيانًا لا يحتوي HTML على حجم صريح، لكنك تريد صورة مصغرة بأبعاد ثابتة. اضبط `Width` و `Height` في `ImageRenderingOptions` قبل العرض. + +```csharp +imageOptions.Width = 300; // pixels +imageOptions.Height = 150; // pixels +``` + +### استخدام خط ويب مخصص + +إذا لم يتوفر Arial على الخادم، قم بدمج خط ويب: + +```csharp +string css = "@font-face { font-family: 'MyCustomFont'; src: url('myfont.woff2'); }"; +htmlDoc.Write(""); +FontInfo customFont = new FontInfo("MyCustomFont", 14, WebFontStyle.Bold); +``` + +### عرض صفحات معقدة (CSS Grid، SVG، إلخ) + +يدعم Aspose.HTML CSS حديثًا، لكن الصفحات الكبيرة جدًا قد تتطلب ذاكرة إضافية. في هذه الحالات، زد حد الذاكرة للعملية أو اعرض الصفحة على أقسام باستخدام `renderer.Render(htmlDoc, new Rectangle(...), stream)`. + +### التعامل مع شاشات عالية الدقة (High‑DPI) + +للحصول على مخرجات بنمط Retina، اضبط عامل التكبير: + +```csharp +imageOptions.Scale = 2.0; // 2× scaling for sharper images +``` + +--- + +## مثال كامل جاهز للتنفيذ + +فيما يلي البرنامج الكامل الذي يمكنك نسخه ولصقه في `Program.cs`. فقط استبدل `YOUR_DIRECTORY` بمسار حقيقي على جهازك. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; +using System.IO; + +class Program +{ + static void Main() + { + // 1️⃣ Create HTML document + HTMLDocument htmlDoc = new HTMLDocument( + "

Hello

" + ); + + // 2️⃣ Define font (bold + italic) + FontInfo fontInfo = new FontInfo("Arial", 14, WebFontStyle.Bold | WebFontStyle.Italic); + // Note: fontInfo can be attached to a style sheet if needed. + + // 3️⃣ Antialiasing options + ImageRenderingOptions imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + // Optional: set dimensions or scaling here + }; + + // 4️⃣ Text hinting options + TextOptions textOptions = new TextOptions + { + UseHinting = true + }; + + // 5️⃣ Configure renderer + ImageRenderer renderer = new ImageRenderer + { + ImageRenderingOptions = imageOptions, + TextOptions = textOptions + }; + + // 6️⃣ Render to PNG + string outputPath = Path.Combine("YOUR_DIRECTORY", "output.png"); + using (FileStream outStream = new FileStream(outputPath, FileMode.Create)) + { + renderer.Render(htmlDoc, outStream); + } + + System.Console.WriteLine($"✅ PNG created at: {outputPath}"); + } +} +``` + +شغّل `dotnet run` وسترى رسالة التأكيد متبوعة بملف PNG تم إنشاؤه حديثًا. + +--- + +## الخلاصة + +أنت الآن تعرف **how to create PNG from HTML** باستخدام Aspose.HTML في C#. من خلال تكوين `ImageRenderingOptions` و `TextOptions` يمكنك التحكم في مضاد التعرجات، تحسين الحواف، وحجم الإخراج، مما يمنحك سيطرة كاملة على خط أنابيب **render html to png**. سواء كنت تبني خدمة صور مصغرة، تولد رسومات بريد إلكتروني، أو تحتاج ببساطة إلى **save HTML as PNG**، تغطي الخطوات أعلاه أكثر السيناريوهات شيوعًا. + +**الخطوات التالية:** +- جرّب **convert html to image** لإخراج JPEG أو BMP. +- أضف تحريكات CSS أو رسومات SVG لترى كيف يتعامل Aspose مع المحتوى المتجهي. +- دمج هذه المنطق في API بـ ASP.NET Core حتى يتمكن العملاء من طلب PNG عند الطلب. + +هل لديك أسئلة حول **how to render HTML** في بيئة متعددة الخيوط، أو تحتاج مساعدة في دمج خطوط مخصصة؟ اترك تعليقًا، ونتمنى لك برمجة سعيدة! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/arabic/net/html-extensions-and-conversions/_index.md b/html/arabic/net/html-extensions-and-conversions/_index.md index 980eb7013..5d804c233 100644 --- a/html/arabic/net/html-extensions-and-conversions/_index.md +++ b/html/arabic/net/html-extensions-and-conversions/_index.md @@ -73,6 +73,8 @@ url: /ar/net/html-extensions-and-conversions/ تعلم كيفية حفظ مستند HTML كملف ZIP باستخدام Aspose.HTML في C# خطوة بخطوة. ### [حفظ HTML إلى ZIP في C# – مثال كامل في الذاكرة](./save-html-to-zip-in-c-complete-in-memory-example/) تعلم كيفية حفظ مستند HTML كملف ZIP في الذاكرة باستخدام C# ومكتبة Aspose.HTML. +### [كيفية ضغط HTML في C# – دليل خطوة بخطوة](./how-to-zip-html-in-c-step-by-step-guide/) +تعلم كيفية ضغط ملفات HTML وحفظها كملف ZIP باستخدام C# ومكتبة Aspose.HTML خطوة بخطوة. ## خاتمة diff --git a/html/arabic/net/html-extensions-and-conversions/how-to-zip-html-in-c-step-by-step-guide/_index.md b/html/arabic/net/html-extensions-and-conversions/how-to-zip-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..14db7f1ac --- /dev/null +++ b/html/arabic/net/html-extensions-and-conversions/how-to-zip-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,266 @@ +--- +category: general +date: 2026-04-03 +description: كيفية ضغط ملفات HTML بسرعة باستخدام C#. تعلّم ضغط مستند HTML، حفظ HTML + في ملف zip، وتصدير HTML كملف zip باستخدام Aspose.HTML. +draft: false +keywords: +- how to zip html +- compress html document +- save html to zip +- export html as zip +- create zip archive c# +language: ar +og_description: كيف تضغط HTML في C#؟ يوضح لك هذا الدليل كيفية ضغط مستند HTML، حفظ + HTML في ملف zip، وتصدير HTML كملف zip باستخدام Aspose.HTML. +og_title: كيفية ضغط ملفات HTML في C# – دليل كامل +tags: +- C# +- Aspose.HTML +- ZIP +- File I/O +title: كيفية ضغط HTML في C# – دليل خطوة بخطوة +url: /ar/net/html-extensions-and-conversions/how-to-zip-html-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية ضغط ملفات HTML في C# – دليل خطوة بخطوة + +هل تساءلت يومًا **كيفية ضغط HTML** دون الاعتماد على أداة طرف ثالث ثقيلة؟ ربما قمت بإنشاء أداة استخراج ويب صغيرة، أو تحتاج إلى حزم موقع ثابت كحزمة واحدة للاستخدام دون اتصال. في كلتا الحالتين، الحل بسيط بشكل مفاجئ عندما تجمع بين Aspose.HTML ودعم ZIP المدمج في .NET. + +في هذا الدرس لن نقوم فقط **ضغط مستند HTML** بل أيضًا **حفظ HTML إلى zip**، **تصدير HTML كملف zip**، وسنغطي بعض الأنواع مثل تدفق الصفحات الكبيرة. في النهاية ستحصل على برنامج C# جاهز للتنفيذ ينشئ أرشيف ZIP يحتوي على ملف HTML وكل الموارد المرتبطة (صور، CSS، سكريبتات) تلقائيًا. + +> **ما ستحتاجه** +> * .NET 6+ (أو .NET Framework 4.6+ – الواجهة البرمجية هي نفسها) +> * Aspose.HTML for .NET (حزمة NuGet تجريبية مجانية) +> * ملف HTML صغير للاختبار + +هيا نبدأ. + +--- + +## المتطلبات المسبقة – إعداد البيئة + +1. **تثبيت حزمة Aspose.HTML NuGet** + + ```bash + dotnet add package Aspose.HTML + ``` + +2. **إنشاء مجلد** (مثال: `MyHtmlProject`) وضع ملف `input.html` بداخله. يمكن للملف الإشارة إلى صور أو CSS أو JavaScript – سيقوم Aspose.HTML بجلب تلك الموارد تلقائيًا. + +3. **فتح بيئة التطوير المفضلة لديك** (Visual Studio, Rider, VS Code) وإنشاء مشروع وحدة تحكم جديد: + + ```bash + dotnet new console -n ZipHtmlDemo + cd ZipHtmlDemo + ``` + +الآن بعد وضع الأساس، يمكننا البدء بكتابة الكود. + +--- + +## الخطوة 1: تعريف معالج موارد مخصص (محرك “كيفية ضغط HTML”) + +يستخدم Aspose.HTML **ResourceHandler** لتحديد أين تُكتب الأصول الخارجية (صور، أوراق الأنماط، إلخ) عند حفظ المستند. بشكل افتراضي يكتب إلى نظام الملفات، لكن يمكننا تجاوز هذا السلوك لتدفق البيانات مباشرةً إلى إدخال ZIP. + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering; + +/// +/// Writes every external resource into a ZIP entry whose path mirrors the resource URL. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Remove leading slash to avoid creating a root folder inside the ZIP. + var entryName = info.Url.PathAndQuery.TrimStart('/'); + var entry = _zipArchive.CreateEntry(entryName, CompressionLevel.Optimal); + return entry.Open(); // The stream that Aspose.HTML will write into. + } +} +``` + +**لماذا هذا مهم:** +يضمن المعالج أن كل ملف مُشار إليه ينتهي به المطاف في نفس الأرشيف، مع الحفاظ على هيكل المجلد الأصلي. كما أنه يتجنب خطوة الكتابة إلى القرص أولاً، مما يجعله أسرع وأكثر أمانًا. + +## الخطوة 2: تحميل مستند HTML الذي تريد ضغطه + +يمكن لـ Aspose.HTML فتح ملف محلي أو عنوان URL أو حتى سلسلة نصية. هنا نبقي الأمر بسيطًا ونحمّله من القرص. + +```csharp +using Aspose.Html; + +// Load the HTML file (relative to the executable's working directory). +HTMLDocument htmlDoc = new HTMLDocument("input.html"); +``` + +> نصيحة احترافية: إذا كان HTML الخاص بك يحتوي على عناوين URL مطلقة (مثال: `https://example.com/style.css`)، سيقوم Aspose.HTML بتحميل تلك الموارد تلقائيًا. تأكد من أن الجهاز الذي يشغّل الكود لديه اتصال بالإنترنت. + +## الخطوة 3: إعداد تدفق أرشيف ZIP + +سننشئ `FileStream` لملف ZIP الناتج ونغلفه في `ZipArchive`. استخدام عبارات `using` يضمن أن كل شيء يُفرغ ويُغلق بشكل صحيح. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html.Saving; + +string outputPath = "output.zip"; + +using (FileStream zipStream = new FileStream(outputPath, FileMode.Create, FileAccess.Write)) +using (ZipArchive zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true)) +{ + // The rest of the code lives inside this block. +} +``` + +**حالة خاصة:** إذا كنت بحاجة لإضافة إلى أرشيف موجود، غيّر `ZipArchiveMode.Create` إلى `ZipArchiveMode.Update`. فقط تذكر أن `Update` قد يكون أبطأ لأن تنسيق ZIP يتطلب إعادة كتابة الدليل المركزي. + +## الخطوة 4: ربط خيارات الحفظ لاستخدام ZipHandler الخاص بنا + +الآن نخبر Aspose.HTML بتوجيه كل المخرجات (ملف HTML + الموارد) إلى المعالج الذي بنيناه سابقًا. + +```csharp +// Inside the using block from Step 3: + +HTMLSaveOptions saveOptions = new HTMLSaveOptions +{ + // The OutputStorage property expects a ResourceHandler. + OutputStorage = new ZipHandler(zipArchive) +}; +``` + +في هذه المرحلة، كائن `saveOptions` يعرف أن كل مورد يجب أن يُكتب إلى أرشيف ZIP الذي أعددناه. + +## الخطوة 5: حفظ المستند مباشرةً داخل ZIP + +أخيرًا، نستدعي `Save` على `HTMLDocument`. الوسيط الأول هو **التدفق** الذي يمثل ملف ZIP، والوسيط الثاني هو خياراتنا المخصصة. + +```csharp +// Still inside the using block: +htmlDoc.Save(zipStream, saveOptions); + +// Optional: Verify that the ZIP contains the expected entries. +Console.WriteLine($"✅ HTML and its resources have been zipped to '{outputPath}'."); +``` + +عند اكتمال `Save`، يبقى `zipStream` مفتوحًا (لأننا مررنا `leaveOpen: true`). سيغلقه `using` الخارجي لنا، مما يضمن إكمال الأرشيف. + +## مثال كامل يعمل – ملف واحد، جاهز للتنفيذ + +فيما يلي البرنامج الكامل الذي يمكنك نسخه ولصقه في `Program.cs`. يتضمن كل شيء من الاستيرادات إلى نقطة الدخول `Main`. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering; + +/// +/// Custom handler that writes external resources into ZIP entries. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entryName = info.Url.PathAndQuery.TrimStart('/'); + var entry = _zipArchive.CreateEntry(entryName, CompressionLevel.Optimal); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML document. + string htmlPath = "input.html"; + if (!File.Exists(htmlPath)) + { + Console.Error.WriteLine($"❌ Cannot find '{htmlPath}'. Place an HTML file in the executable folder."); + return; + } + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Prepare the ZIP file. + string zipPath = "output.zip"; + using (FileStream zipStream = new FileStream(zipPath, FileMode.Create, FileAccess.Write)) + using (ZipArchive zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true)) + { + // 3️⃣ Configure save options to use our ZipHandler. + HTMLSaveOptions saveOptions = new HTMLSaveOptions + { + OutputStorage = new ZipHandler(zipArchive) + }; + + // 4️⃣ Save the HTML (and all its linked resources) into the ZIP. + htmlDoc.Save(zipStream, saveOptions); + } + + Console.WriteLine($"✅ Done! '{zipPath}' now contains the HTML file and its assets."); + } +} +``` + +### النتيجة المتوقعة + +- سيحتوي `output.zip` على: + * `input.html` (المستند الرئيسي) + * أي ملفات صور أو CSS أو JavaScript مُشار إليها من قبل `input.html`، مع الحفاظ على هيكل المجلدات. +- فتح `output.zip` واستخراج المحتويات يجب أن يمنحك نسخة تعمل دون اتصال من الصفحة الأصلية. + +## أسئلة شائعة وحالات خاصة + +### ماذا لو كان HTML يشير إلى عدد هائل من الموارد؟ + +الإعداد الافتراضي `CompressionLevel.Optimal` يعمل جيدًا لمعظم السيناريوهات، لكن يمكنك التحويل إلى `CompressionLevel.Fastest` إذا كنت تحتاج إلى السرعة على الحجم. للصفحات الكبيرة جدًا قد ترغب أيضًا في **تدفق** HTML (باستخدام `HTMLDocument.Load(Stream)`) لتجنب تحميل كل شيء في الذاكرة. + +### هل يمكنني ضغط عدة ملفات HTML مرة واحدة؟ + +بالطبع. فقط قم بالتكرار عبر مجموعة من مسارات الملفات، حمّل كل منها في `HTMLDocument` الخاص به، واستدعِ `Save` باستخدام نفس `ZipHandler`. كل استدعاء سيضيف إدخالًا جديدًا إلى نفس الأرشيف. + +### كيف يختلف هذا عن استخدام `System.IO.Compression.ZipFile.CreateFromDirectory`؟ + +`CreateFromDirectory` يضغط فقط الملفات الموجودة على القرص. نهجنا **ينشئ** HTML واعتمادياته في الوقت الفعلي، وهو أمر حاسم عندما يتم إنتاج HTML المصدر برمجيًا أو جلبه من عنوان URL بعيد. + +### هل يعمل هذا على .NET Core على لينكس؟ + +نعم. مساحة الأسماء `System.IO.Compression` متعددة المنصات، وتوفر Aspose.HTML ملفات تنفيذية للينكس، macOS، وويندوز. فقط تأكد من وجود المكتبات الأصلية المناسبة (مضمنة مع حزمة NuGet). + +## نصائح احترافية وأفضل الممارسات + +- **التخلص مبكرًا:** رغم أن `using` يتعامل مع الإغلاق، إذا كنت تعالج العديد من ملفات HTML دفعة واحدة، قم بتحرير كل `HTMLDocument` بعد الانتهاء لتحرير الموارد الأصلية. +- **تحقق من صحة عناوين URL:** إذا كنت تتوقع عناوين URL غير صالحة في HTML، غلف `htmlDoc.Save` بـ `try/catch` وتفقد `ResourceInfo.Url` داخل `ZipHandler` لتصحيح الأخطاء. +- **التسجيل (Logging):** أضف عبارات `Console.WriteLine` داخل `HandleResource` لتعرف أي الموارد يتم إضافتها. هذا مفيد لتصحيح نقص الصور. +- **الأمان:** لا تثق أبدًا في HTML خارجي من مصادر غير موثوقة دون تنقيحه أولًا. لا ينفذ Aspose.HTML السكريبتات، لكنه سيحمّل الموارد المرتبطة التي قد تكون وسيلة لهجمات حجب الخدمة (DoS). + +## الخلاصة + +لقد استعرضنا **كيفية ضغط HTML** باستخدام C# و Aspose.HTML، وشرحنا سبب كل خطوة، وقدمنا مثالًا كاملاً جاهزًا للتنفيذ. في بضع أسطر فقط يمكنك **ضغط مستند HTML**، **حفظ HTML إلى zip**، و**تصدير HTML كملف zip**—كل ذلك دون كتابة ملفات مؤقتة إلى القرص. + +ما الخطوة التالية؟ جرّب حزم موقع ثابت كامل، جرب مستويات ضغط مختلفة، أو دمج هذه العملية في خط أنابيب CI الذي يجمع الوثائق تلقائيًا للتوزيع دون اتصال. السماء هي الحد، والكود الذي لديك الآن هو أساس قوي. + +برمجة سعيدة، ولا تتردد في ترك تعليق إذا واجهت أي صعوبات! 🚀 + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/arabic/net/working-with-html-documents/_index.md b/html/arabic/net/working-with-html-documents/_index.md index 30c32a306..3cf909491 100644 --- a/html/arabic/net/working-with-html-documents/_index.md +++ b/html/arabic/net/working-with-html-documents/_index.md @@ -37,8 +37,11 @@ url: /ar/net/working-with-html-documents/ الآن، دعنا ننتقل بمهاراتك إلى المستوى التالي. إن تحرير مستندات HTML مهمة شائعة بين مطوري الويب، ويعمل Aspose.HTML على تبسيط هذه العملية بشكل كبير. في هذا القسم، سنغطي إنشاء المستندات ومعالجتها وتصميمها. ستكتشف كيفية تحسين مظهر ووظائف محتوى الويب الخاص بك، مما يجعله جذابًا وسهل الاستخدام. ### [كيفية حفظ HTML في C# – دليل كامل باستخدام معالج موارد مخصص](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) + ### [كيفية جعل العنوان غامقًا باستخدام CSS و C# – دليل خطوة بخطوة كامل](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) +### [كيفية حفظ HTML – دليل كامل لـ Aspose HTMLDocument](./how-to-save-html-aspose-htmldocument-complete-guide/) + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/arabic/net/working-with-html-documents/how-to-save-html-aspose-htmldocument-complete-guide/_index.md b/html/arabic/net/working-with-html-documents/how-to-save-html-aspose-htmldocument-complete-guide/_index.md new file mode 100644 index 000000000..ad32a041e --- /dev/null +++ b/html/arabic/net/working-with-html-documents/how-to-save-html-aspose-htmldocument-complete-guide/_index.md @@ -0,0 +1,311 @@ +--- +category: general +date: 2026-04-03 +description: تعلم كيفية حفظ HTML من صفحة ويب باستخدام Aspose HTMLDocument. يتضمن تحميل + HTML من عنوان URL، معالج موارد مخصص، والتقاط أصول الصفحة. +draft: false +keywords: +- how to save html +- load html from url +- convert web page +- custom resource handler +- capture webpage assets +language: ar +og_description: 'كيفية حفظ HTML بسهولة: تحميل HTML من عنوان URL، استخدام معالج موارد + مخصص، والتقاط أصول صفحة الويب في C# باستخدام Aspose.' +og_title: كيفية حفظ HTML – دليل Aspose HTMLDocument الكامل +tags: +- Aspose.HTML +- C# +- Web Scraping +title: كيفية حفظ HTML – دليل Aspose HTMLDocument الكامل +url: /ar/net/working-with-html-documents/how-to-save-html-aspose-htmldocument-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيف تحفظ HTML – دليل Aspose HTMLDocument الكامل + +هل تساءلت يومًا **كيف تحفظ html** من موقع مباشر دون سحب المصدر يدويًا؟ لست الوحيد—المطورون غالبًا ما يحتاجون إلى أرشفة صفحة، تضمينها في بريد إلكتروني، أو تمريرها إلى خدمة أخرى. في هذا الدرس سنستعرض حلًا نظيفًا من البداية إلى النهاية ي **يحمّل html من url**، يستخدم **معالج موارد مخصص**، وأخيرًا **يُلتقط أصول صفحة الويب** إلى تدفق ذاكرة. + +سنستخدم مكتبة Aspose.HTML لـ .NET، التي تُجرد تفاصيل الشبكات منخفضة المستوى وتتيح لك التركيز على المنطق. بنهاية الدرس ستعرف بالضبط **كيف تحفظ html**، وكيف **تحول محتوى صفحة الويب** إلى حزمة قابلة للنقل، وستحصل على معالج قابل لإعادة الاستخدام يمكنك إدراجه في أي مشروع. + +> **ما ستحصل عليه:** مقطع C# كامل قابل للتنفيذ، شروحات خطوة بخطوة، ونصائح للتعامل مع الموارد الكبيرة أو أنواع MIME المختلفة. + +--- + +## المتطلبات المسبقة + +- .NET 6.0 أو أحدث (الكود يعمل أيضًا على .NET Framework 4.7+) +- حزمة NuGet الخاصة بـ Aspose.HTML لـ .NET (`Aspose.Html`) +- إلمام أساسي بـ C# async/await (اختياري لكن مفيد) +- بيئة تطوير مثل Visual Studio 2022 أو VS Code + +لا توجد أدوات طرف ثالث إضافية مطلوبة. + +--- + +## الخطوة 1: تثبيت Aspose.HTML وإعداد المشروع + +أولاً، أضف حزمة Aspose.HTML إلى مشروعك: + +```bash +dotnet add package Aspose.Html +``` + +> **نصيحة احترافية:** إذا كنت تستهدف .NET Framework، استخدم واجهة مدير الحزم NuGet بدلاً من سطر الأوامر. + +إنشاء تطبيق كونسول جديد بسيط كالتالي: + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +namespace HtmlCaptureDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll call the core logic from here. + HtmlCapture.Run(); + } + } +} +``` + +الفئة `HtmlCapture` (الموضحة لاحقًا) تحتوي على المنطق الحقيقي لـ **كيف تحفظ html** و **التقاط أصول صفحة الويب**. + +--- + +## الخطوة 2: بناء معالج موارد مخصص + +**معالج الموارد المخصص** يمنحك التحكم الكامل في مكان تخزين كل ملف مُشار إليه (صور، CSS، سكريبتات). في حالتنا سنخزن كل شيء في `MemoryStream`، مما يجعل المعالجة اللاحقة—مثل الضغط أو الإرسال عبر HTTP—سهلة. + +```csharp +using Aspose.Html; +using System.IO; + +/// +/// Stores each external resource in an in‑memory stream. +/// +class MemoryResourceHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // You could inspect info.MimeType, info.Url, etc. here. + // Returning a fresh MemoryStream tells Aspose to write the resource into it. + return new MemoryStream(); + } +} +``` + +**لماذا نستخدم معالجًا مخصصًا؟** +- **تحكم دقيق:** يمكنك تسجيل كل URL، تصفية الأنواع غير المرغوب فيها، أو إعادة تسمية الملفات أثناء التنفيذ. +- **الأداء:** تجنّب عمليات I/O على القرص يسرّع الالتقاط، خاصةً عند التعامل مع عشرات الأصول. +- **القابلية للنقل:** يمكن إرسال التدفقات الناتجة مباشرة إلى العميل أو تخزينها في قاعدة بيانات. + +--- + +## الخطوة 3: تحميل HTML من URL + +الآن نقوم فعليًا **بتحميل html من url**. تقوم Aspose.HTML بالعمل الشاق—جلب الصفحة، تحليلها، وحل الروابط النسبية. + +```csharp +using Aspose.Html; + +/// +/// Loads the target web page. +/// +static HTMLDocument LoadDocument(string pageUrl) +{ + // The constructor automatically performs an HTTP GET. + return new HTMLDocument(pageUrl); +} +``` + +> **حالة خاصة:** إذا كان الموقع يستخدم ملفات تعريف الارتباط أو المصادقة، يمكنك تمرير كائن `HttpRequest` مخصص إلى المُنشئ. هذا خارج نطاق هذا الدليل لكنه مهم للسيناريوهات الإنتاجية. + +--- + +## الخطوة 4: تكوين خيارات الحفظ باستخدام المعالج المخصص + +مع وجود المستند في الذاكرة ومعالج `MemoryResourceHandler` جاهز، نخبر Aspose أين يضع الأصول عندما نقوم أخيرًا **بحفظ html**. + +```csharp +using Aspose.Html.Saving; + +/// +/// Prepares save options that point to our custom handler. +/// +static HTMLSaveOptions PrepareSaveOptions() +{ + var options = new HTMLSaveOptions(); + // New API – no need for IOutputStorage wrapper. + options.OutputStorage = new MemoryResourceHandler(); + return options; +} +``` + +**ماذا يحقق هذا؟** +كل وسم ``، ``، و `