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..9b56787f3 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. +### [كيفية تحويل HTML إلى PNG – دليل C# كامل](./how-to-render-html-to-png-complete-c-guide/) +دليل شامل خطوة بخطوة لتحويل HTML إلى صور PNG باستخدام C# و Aspose.HTML. ## خاتمة diff --git a/html/arabic/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/arabic/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..2dbf297ad --- /dev/null +++ b/html/arabic/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,157 @@ +--- +category: general +date: 2026-04-19 +description: كيفية تحويل HTML إلى PNG باستخدام Aspose.Html. تعلم كيفية تحويل HTML + إلى PNG، حفظ HTML كملف PNG، وإنشاء صورة من HTML في دقائق. +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: ar +og_description: كيفية تحويل HTML إلى PNG باستخدام Aspose.Html. اتبع هذا الدليل خطوة + بخطوة لتحويل HTML إلى PNG، وحفظ HTML كـ PNG، وإنشاء صورة من HTML. +og_title: كيفية تحويل HTML إلى PNG – دليل C# الكامل +tags: +- Aspose.Html +- C# +title: كيفية تحويل HTML إلى PNG – دليل C# الكامل +url: /ar/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية تحويل HTML إلى PNG – دليل C# كامل + +هل تساءلت يومًا **كيف يتم تحويل HTML** إلى ملف صورة دون تشغيل المتصفح؟ لست وحدك. في العديد من المشاريع—مصغرات البريد الإلكتروني، إنشاء ملفات PDF، أو مجرد معاينات سريعة—تحتاج إلى **تحويل HTML إلى PNG** في الوقت الفعلي. + +في هذا الدرس سنستعرض حلًا عمليًا باستخدام Aspose.Html لـ .NET، بدءًا من تثبيت المكتبة وحتى تعديل تلميحات النص للحصول على خطوط صغيرة واضحة. في النهاية ستتمكن من **حفظ HTML كـ PNG**، **إنشاء صورة من HTML**، وحتى تعديل خيارات العرض لحالات الحافة. + +## ما الذي ستحتاجه + +- **.NET 6+** (أو .NET Framework 4.6.2+). تعمل الواجهة البرمجية بنفس الطريقة عبر جميع بيئات التشغيل. +- حزمة **Aspose.Html** من NuGet – `Install-Package Aspose.Html`. +- ملف HTML بسيط (مثال: `article.html`) تريد تحويله إلى صورة. +- Visual Studio، Rider، أو أي محرر تفضله. + +هذا كل ما تحتاجه—بدون تبعيات إضافية، بدون Chrome بدون رأس، فقط C# نقي. + +## الخطوة 1: تثبيت Aspose.Html وإضافة المساحات الاسمية + +أولاً، احصل على المكتبة من NuGet. افتح نافذة Package Manager Console وشغّل الأمر: + +```powershell +Install-Package Aspose.Html +``` + +بعد التثبيت، أضف توجيهات `using` المطلوبة في أعلى ملفك: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +هذه المساحات الاسمية تمنحك الوصول إلى نموذج المستند، عرض الصورة، وخيارات النص الدقيقة التي سنحتاجها لاحقًا. + +> **نصيحة احترافية:** إذا كنت تستخدم ملف *.csproj*، يمكنك أيضًا إضافة `` يدويًا. + +## الخطوة 2: تحميل مستند HTML + +تحتاج إلى كائن `HTMLDocument` يشير إلى ملف المصدر. يمكن لـ Aspose.Html القراءة من مسار، تدفق، أو حتى URL. + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **لماذا هذا مهم:** تحميل المستند مرة واحدة يقلل من استهلاك الذاكرة. إذا كنت تخطط لعرض صفحات متعددة، أعد استخدام نفس كائن `HTMLDocument` قدر الإمكان. + +## الخطوة 3: تعديل عرض النص للخطوط الصغيرة + +عند عرض نص صغير، غالبًا ما تظهر حواف غير واضحة. تمكين التلميحات يجعل المرسِّم يضبط الحروف على حدود البكسل، مما يحسن الوضوح بشكل كبير. + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +يمكنك أيضًا التحكم في مضاد التعرّج، العرض تحت البكسل، أو حتى تحديد مجموعة خطوط مخصصة هنا—مفيد إذا كان HTML الخاص بك يستخدم خطوط ويب. + +## الخطوة 4: تكوين خيارات عرض الصورة + +الآن نربط `TextOptions` بإعدادات الصورة. يمكنك أيضًا ضبط لون الخلفية، DPI، أو صيغة الصورة (PNG، JPEG، BMP). + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **حالة حافة:** إذا كان HTML أوسع من أبعاد الشاشة المعتادة، فكر في ضبط `Width` و `Height` في `ImageRenderingOptions` لتجنب إنشاء PNG ضخم جدًا. + +## الخطوة 5: عرض HTML إلى ملف PNG + +أخيرًا، استدعِ `RenderToImage`. التحميل الزائد للطريقة الذي نستخدمه يسمح لنا بتحديد مسار الإخراج والخيارات التي أنشأناها للتو. + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +عند تشغيل البرنامج، يقوم Aspose.Html بتحليل العلامات، تطبيق CSS، ترتيب الصفحة، ثم تحويلها إلى `article.png`. افتح الملف بأي عارض صور—سترى لقطة دقيقة بكسلية للـ HTML الأصلي. + +![how to render html as PNG using Aspose.Html](render-html-png.png) + +*نص بديل للصورة: **how to render html** as PNG using Aspose.Html* + +## إضافي: معالجة صفحات متعددة أو تغيير الحجم + +أحيانًا يحتوي ملف HTML واحد على عدة أقسام `` (مثلاً للطباعة). يمكنك التكرار عبر `htmlDoc.Pages` وعرض كل صفحة على حدة: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +إذا كنت تحتاج إلى صورة مصغرة بدلاً من صورة بالحجم الكامل، عدّل `imgOpts.Width` و `imgOpts.Height` قبل العرض. ستُحافظ المكتبة على نسبة الأبعاد تلقائيًا. + +--- + +## الخلاصة + +أصبح لديك الآن وصفة جاهزة للإنتاج **لتحويل HTML إلى صورة PNG** باستخدام Aspose.Html. من تثبيت الحزمة، تحميل العلامات، ضبط تلميحات النص، إلى استدعاء `RenderToImage`—كل خطوة مغطاة. + +بهذا المعرفة يمكنك **تحويل HTML إلى PNG**، **حفظ HTML كـ PNG**، و**إنشاء صورة من HTML** لأي تطبيق .NET—سواء كان خدمة ويب تُنشئ مصغرات أو أداة سطح مكتب تُؤرّخ صفحات الويب. + +بعد ذلك، استكشف مواضيع ذات صلة مثل **عرض HTML إلى صورة** بصيغ مختلفة (JPEG، BMP) أو دمج PNG داخل PDF باستخدام Aspose.PDF. يمكنك أيضًا تجربة ضبط DPI للطباعة عالية الدقة، أو تمرير 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..7edcacabe 100644 --- a/html/arabic/net/html-extensions-and-conversions/_index.md +++ b/html/arabic/net/html-extensions-and-conversions/_index.md @@ -63,6 +63,8 @@ url: /ar/net/html-extensions-and-conversions/ تحويل HTML إلى MHTML في .NET باستخدام Aspose.HTML - دليل خطوة بخطوة لأرشفة محتوى الويب بكفاءة. تعرف على كيفية استخدام Aspose.HTML لـ .NET لإنشاء أرشيفات MHTML. ### [تحويل HTML إلى PNG في .NET باستخدام Aspose.HTML](./convert-html-to-png/) اكتشف كيفية استخدام Aspose.HTML for .NET لمعالجة مستندات HTML وتحويلها. دليل خطوة بخطوة لتطوير .NET بشكل فعال. +### [تحويل HTML إلى PNG في C# – عرض HTML كصورة](./convert-html-to-png-in-c-render-html-as-image/) +تعلم كيفية تحويل HTML إلى صورة PNG باستخدام C# ومكتبة Aspose.HTML خطوة بخطوة. ### [تحويل HTML إلى TIFF في .NET باستخدام Aspose.HTML](./convert-html-to-tiff/) تعرف على كيفية تحويل HTML إلى TIFF باستخدام Aspose.HTML لـ .NET. اتبع دليلنا خطوة بخطوة لتحسين محتوى الويب بكفاءة. ### [تحويل HTML إلى XPS في .NET باستخدام Aspose.HTML](./convert-html-to-xps/) @@ -73,6 +75,10 @@ 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 كملف ZIP مع معالج موارد مخصص – دليل خطوة بخطوة](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +تعلم حفظ مستند HTML كملف ZIP باستخدام معالج موارد مخصص خطوة بخطوة مع Aspose.HTML في C#. +### [حفظ صفحة الويب كملف ZIP باستخدام Aspose.HTML – دليل C# كامل](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +تعلم كيفية حفظ صفحة ويب كاملة كملف ZIP باستخدام Aspose.HTML في C# خطوة بخطوة. ## خاتمة diff --git a/html/arabic/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/arabic/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..e7bbc0c17 --- /dev/null +++ b/html/arabic/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-04-19 +description: تحويل HTML إلى PNG في C# باستخدام Aspose.HTML – دليل سريع لتصوير HTML + كصورة وحفظ المخطط كملف PNG مع مضاد التعرجات. +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: ar +og_description: حوّل HTML إلى PNG في C# بسرعة. تعلّم كيفية تحويل HTML إلى صورة، حفظ + المخطط كملف PNG، وإنشاء PNG من HTML باستخدام Aspose.HTML. +og_title: تحويل HTML إلى PNG في C# – عرض HTML كصورة +tags: +- Aspose.HTML +- C# +- Image Processing +title: تحويل HTML إلى PNG في C# – عرض HTML كصورة +url: /ar/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# تحويل HTML إلى PNG في C# – عرض HTML كصورة + +هل احتجت يومًا إلى **تحويل HTML إلى PNG** في C# لكنك لم تكن متأكدًا أي مكتبة ستعطيك نتيجة واضحة؟ لست وحدك. سواء كنت تصدر مخططًا ديناميكيًا، أو تحول قالب بريد إلكتروني إلى صورة مصغرة، أو تحتاج فقط إلى لقطة ثابتة لصفحة ويب، فإن القدرة على **عرض HTML كصورة** هي حيلة مفيدة في صندوق أدوات أي مطور. + +في هذا البرنامج التعليمي سنستعرض العملية الكاملة لتحويل ملف HTML إلى ملف PNG باستخدام Aspose.HTML. في النهاية ستتمكن من **حفظ المخطط كـ PNG**، **إنشاء PNG من HTML**، وحتى تعديل إعدادات مضاد التعرجات للحصول على مظهر مصقول. لا إطالة—مثال كامل قابل للتنفيذ يمكنك إدراجه في مشروعك اليوم. + +## ما ستحتاجه + +قبل أن نبدأ، تأكد من وجود ما يلي: + +- **.NET 6.0** أو أحدث (الكود يعمل أيضًا على .NET Framework 4.6+). +- **Aspose.HTML for .NET** – يمكنك الحصول عليها من NuGet باستخدام `Install-Package Aspose.HTML`. +- ملف HTML بسيط (مثلاً `chart.html`) يحتوي على العلامات التي تريد التقاطها. +- بيئة تطوير من اختيارك—Visual Studio، Rider، أو حتى VS Code ستكفي. + +هذا كل ما تحتاجه. لا تبعيات إضافية، لا متصفحات بدون رأس، مجرد مكتبة واحدة موثقة جيدًا. + +![مثال على تحويل HTML إلى PNG](example.png "نتيجة تحويل HTML إلى PNG") + +## الخطوة 1: تحميل مستند HTML + +أول شيء علينا فعله هو توجيه Aspose.HTML إلى ملف المصدر. فكر في فئة `HTMLDocument` كالقماش الذي يحمل كل ما ستقوم المكتبة برسمه لاحقًا على صورة نقطية. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*لماذا هذا مهم:* تحميل المستند يفصل مرحلة التحليل عن مرحلة العرض. يمنح المحرك فرصة لحل CSS، السكريبتات، والصور قبل أن نطلب منه إنتاج PNG. إذا تخطيت هذه الخطوة وحاولت عرض العلامات الخام، ستحصل على صورة فارغة أو أنماط مفقودة. + +## الخطوة 2: ضبط خيارات عرض الصورة + +بشكل افتراضي، ستعطيك Aspose.HTML PNG مقبول، لكنك غالبًا ما تريد حوافًا أكثر سلاسة—خاصة للمخططات والرسومات المتجهة. هنا يأتي دور `ImageRenderingOptions`. + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*نصيحة احترافية:* إذا كنت تتعامل مع شاشات عالية الدقة DPI، قم بزيادة `Width` و `Height` بشكل متناسب واترك PNG أكبر. يمكنك دائمًا تصغيره لاحقًا باستخدام محرر صور. أيضًا، ضبط لون الخلفية يمنع PNG الشفاف من الظهور بشكل غريب على الصفحات الداكنة. + +## الخطوة 3: عرض HTML إلى ملف PNG + +الآن يحدث الجزء الثقيل. طريقة `RenderToImage` تأخذ مسار الإخراج والخيارات التي عرفناها للتو، ثم تكتب PNG على القرص. + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +عند انتهاء هذا السطر، ستجد `chart.png` في المجلد المستهدف. افتحه—هل يبدو المخطط حادًا؟ إذا فعلت مضاد التعرجات، يجب أن تكون الخطوط ناعمة وأي نص واضحًا. + +### التحقق من النتيجة + +يمكنك التحقق بسرعة من الصورة برمجيًا: + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +إذا طبع الطرفية أبعادًا غير صفرية وتنسيق بكسل مدعوم (مثل `Format32bppArgb`)، فقد نجحت في **تحويل HTML إلى PNG**. + +## عرض HTML كصورة – خيارات متقدمة + +حتى الآن غطينا الأساسيات، لكن السيناريوهات الواقعية غالبًا ما تتطلب مزيدًا من التحكم. إليك بعض التعديلات الشائعة التي قد تحتاجها. + +### تعديل DPI لإخراج بجودة الطباعة + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +ارتفاع DPI مفيد عندما تخطط لإدراج PNG في PDF أو طباعته على ورق. + +### التعامل مع الموارد الخارجية + +إذا كان HTML الخاص بك يشير إلى CSS أو خطوط أو صور مستضافة على خادم ويب، تأكد من أن وقت التشغيل يستطيع الوصول إليها. يمكنك ضبط `BaseUrl` مخصص: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +هذا يخبر Aspose.HTML بحل عناوين URL النسبية بناءً على عنوان URL الأساسي المقدم. + +### تحويل صفحات متعددة + +يمكن لـ Aspose.HTML عرض كل صفحة من مستند HTML متعدد الصفحات إلى ملفات PNG منفصلة: + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +بهذه الطريقة يمكنك **حفظ المخطط كـ PNG** لكل صفحة دون الحاجة إلى تقطيع الناتج يدويًا. + +## حفظ المخطط كـ PNG – المشكلات الشائعة وكيفية تجنبها + +1. **الخطوط المفقودة:** إذا كان HTML يستخدم خطًا مخصصًا غير مثبت على الخادم، سيعود PNG إلى خط افتراضي. قم بتثبيت الخط على الجهاز أو دمجه عبر `@font-face` في CSS. +2. **الملفات الكبيرة:** عرض ملف HTML ضخم قد يستهلك الكثير من الذاكرة. فكر في تقسيم المحتوى أو تقليل أبعاد الصورة. +3. **الخلفيات الشفافة:** بشكل افتراضي قد تكون PNG شفافة. إذا كنت تحتاج خلفية غير شفافة (مثلاً للصور المصغرة في البريد الإلكتروني)، اضبط `BackgroundColor` كما هو موضح سابقًا. +4. **تنفيذ السكريبت:** Aspose.HTML لا ينفذ JavaScript. إذا كان مخططك مبنيًا بمكتبة جانب العميل مثل Chart.js، ستحتاج إلى عرض المخطط مسبقًا إلى عنصر `` ثابت أو استخدام متصفح بدون رأس بدلاً من ذلك. + +## مثال كامل يعمل + +فيما يلي البرنامج الكامل الذي يمكنك نسخه ولصقه في تطبيق Console. يتضمن جميع الخطوات، معالجة الأخطاء، والتعديلات الاختيارية التي نوقشت أعلاه. + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +شغّل البرنامج، وسترى رسالة تأكيد تليها أبعاد الصورة. افتح `chart.png` بأي عارض لتتأكد أن المخطط يبدو تمامًا كما هو في 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/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/arabic/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..833dfba95 --- /dev/null +++ b/html/arabic/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,236 @@ +--- +category: general +date: 2026-04-19 +description: تعلم كيفية حفظ HTML كملف ZIP باستخدام Aspose.Html ومعالج موارد مخصص. + اكتشف أيضًا كيفية تحويل URL إلى ZIP وتحميل HTML كملف ZIP في دقائق. +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: ar +og_description: 'حفظ HTML كملف ZIP أصبح سهلًا: استخدم Aspose.Html، ومعالج موارد مخصص، + وZipSaveOptions لتحويل أي عنوان URL إلى أرشيف ZIP قابل للتنزيل.' +og_title: حفظ HTML كملف ZIP باستخدام معالج موارد مخصص – دليل سريع +tags: +- Aspose.Html +- C# +- Web scraping +title: حفظ HTML كملف ZIP باستخدام معالج موارد مخصص – دليل خطوة بخطوة +url: /ar/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# حفظ html كملف zip – دليل كامل + +هل احتجت يومًا إلى **save html as zip** حتى تتمكن من إرسال صفحة كاملة مع صورها، وCSS، والسكريبتات في حزمة مرتبة؟ ربما تكون تبني زاحفًا يقوم بأرشفة المقالات، أو تريد ببساطة زرًا سريعًا “download html as zip” لمستخدميك. على أي حال، ربما تتساءل كيف تفعل ذلك دون كتابة ملايين السطور من كود الإدخال‑الإخراج. + +إليك الخبر السار: تجعل مكتبة Aspose.Html المهمة سهلة للغاية، ومع **custom resource handler** يمكنك تحديد بالضبط أين تذهب كل تدفق موارد. في هذا الدليل سنوضح لك أيضًا كيفية **convert url to zip**، وكيفية **download html as zip**، وكيفية **save webpage resources** للاستخدام دون اتصال—كل ذلك في برنامج C# واحد مستقل. + +## ما ستتعلمه + +- تثبيت مكتبة Aspose.Html (NuGet يجعل العملية سهلة). +- كتابة `ResourceHandler` الذي يوفر `Stream` لكل مورد تريد Aspose.Html كتابته. +- تحميل صفحة عن بُعد (أو ملف محلي) وإخبار Aspose.Html بتجميع كل شيء في أرشيف ZIP. +- التحقق من أن `output.zip` الناتج يحتوي على ملف HTML بالإضافة إلى جميع الأصول المرتبطة. + +بدون أدوات خارجية، بدون تعديل يدوي لملفات zip—فقط كود نظيف ومُجمع يمكنك إدراجه في أي مشروع .NET. + +## المتطلبات المسبقة + +| المتطلب | لماذا يهم | +|-------------|----------------| +| .NET 6.0 or later (the code also works on .NET Framework 4.7+) | Aspose.Html تستهدف بيئات تشغيل حديثة؛ قد تفتقد الأطر القديمة بعض الـ APIs. | +| Visual Studio 2022 (or any IDE you like) | مفيد للتصحيح ورؤية ملف ZIP المُولد. | +| Internet access for the sample URL (`https://example.com`) | سنجلب صفحة حية لتوضيح **convert url to zip**. | +| NuGet package `Aspose.Html` (v23.12 or newer) | هذه المكتبة توفر `HTMLDocument`، `ZipSaveOptions`، وفئة الأساس `ResourceHandler`. | + +إذا كان لديك مشروع .NET بالفعل، فقط نفّذ: + +```bash +dotnet add package Aspose.Html +``` + +هذا كل ما تحتاجه من إعداد. + +## الخطوة 1: إنشاء Custom Resource Handler + +جوهر الحل هو فئة ترث من `ResourceHandler`. تستدعي Aspose.Html الدالة `HandleResource` لكل ملف تريد كتابته—HTML، صور، CSS، JavaScript، أيًا كان. بإرجاع `Stream` تحدد أين تُخزن البيانات. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**لماذا معالج مخصص؟** +لأن الواجهة القديمة `IOutputStorage` أصبحت مهجورة، و`ResourceHandler` يمنحك تحكمًا كاملاً في وجهة الإخراج. كما يسمح لك بفحص `ResourceInfo`—مفيد إذا كنت تريد الاحتفاظ فقط بالصور وتخطي الخطوط، على سبيل المثال. + +## الخطوة 2: تحميل مستند HTML (أو Convert URL to Zip) + +يمكن لـ Aspose.Html التحميل من URL، أو مسار ملف، أو سلسلة HTML خام. هنا نوضح تحميل صفحة حية، وهو الحالة النموذجية عندما تريد **download html as zip**. + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +إذا كان لديك مصدر HTML في متغيّر، فقط مرره إلى المُنشئ: + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## الخطوة 3: ربط المعالج بـ ZipSaveOptions + +`ZipSaveOptions` يخبر Aspose.Html *كيف* ينشئ ملف ZIP. الخاصية الحاسمة هي `OutputStorage`، التي نضبطها على مثيل `MyHandler` الخاص بنا. + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +يمكنك أيضًا تعديل مستوى الضغط، أسماء المجلدات داخل الأرشيف، أو حتى تضمين ملف بيان—التفاصيل في وثائق Aspose، لكن الإعدادات الافتراضية تعمل بشكل ممتاز لمعظم السيناريوهات. + +## الخطوة 4: حفظ المستند كأرشيف ZIP + +الآن يحدث السحر. طريقة `Save` تتكرر على كل مورد، تستدعي `HandleResource`، وتكتب البايتات إلى الـ stream المُرجع. لأن معالجنا يُعيد `MemoryStream` جديد في كل مرة، سيجمع Aspose.Html لاحقًا كل تلك الـ streams ويضغطها في `output.zip`. + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**ما ستراه:** +- `output.zip` في جذر مجلد مشروعك. +- داخل الـ ZIP: `index.html` (الصفحة الرئيسية) بالإضافة إلى مجلدات فرعية مثل `images/`، `css/`، `scripts/` التي تحتوي على الملفات الدقيقة التي كان المتصفح سيطلبها. + +## الخطوة 5: التحقق من النتيجة (اختياري لكن موصى به) + +تحقق سريع يضمن أنك فعلاً قمت بـ **save webpage resources** بشكل صحيح. + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +يجب أن ترى إدخالات لـ `index.html`، وأي صور مرتبطة (`logo.png`)، ملفات CSS، وملفات JavaScript. إذا كان شيء مفقودًا، تحقق مرة أخرى من منطق `ResourceInfo` في `MyHandler`. + +## مثال كامل يعمل + +بدمج كل ذلك، إليك البرنامج الكامل الذي يمكنك نسخه‑ولصقه في تطبيق Console. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +شغّل البرنامج (`dotnet run`)، وستحصل على `output.zip` مرتب. افتحه بأي مدير أرشيف، ويمكنك تصفح الصفحة المحفوظة دون اتصال—بالضبط ما تحتاجه لوظيفة **download html as zip**. + +## أسئلة شائعة وحالات خاصة + +| السؤال | الجواب | +|----------|--------| +| *ماذا لو احتجت لتخزين ZIP في Azure Blob Storage؟* | استبدل `MemoryStream` بـ stream يكتب مباشرة إلى blob (مثال: `CloudBlockBlob.OpenWrite()`). تجريد المعالج يجعل ذلك سهلًا. | +| *هل يمكنني تصفية موارد معينة؟* | نعم. داخل `HandleResource`، افحص `info.ResourceType` أو `info.Url`. أرجع `null` لتخطي مورد، أو أرجع stream لا يكتب شيئًا. | +| *هل ZIP محمي بكلمة مرور؟* | يحتوي `ZipSaveOptions` على خاصية `Password`. اضبطها قبل استدعاء `Save` إذا كنت تحتاج إلى تشفير. | +| *ماذا عن الصفحات الكبيرة التي تحتوي على عشرات الميجابايت من الأصول؟* | استخدام `MemoryStream` لكل شيء قد يستهلك الذاكرة. بدّل إلى `FileStream` يكتب إلى مجلد مؤقت، ثم دع Aspose.Html يضغط تلك الملفات. | +| *هل يعمل هذا على .NET Core على Linux؟* | بالتأكيد. Aspose.Html متعدد المنصات؛ فقط تأكد من أن البيئة لديها صلاحية كتابة الملفات. | + +## نصائح احترافية + +- **نصيحة احترافية:** إذا كنت تهتم فقط بـ HTML والصور، تحقق من `info.ResourceType == ResourceType.Image` وتخطى السكريبتات أو الخطوط لتقليل حجم الـ ZIP. +- **احذر من:** بعض المواقع تحظر الطلبات الآلية. اضبط `User-Agent` مخصص عبر `HtmlLoadOptions` إذا حصلت على خطأ 403. +- **نصيحة:** بعد إنشاء الـ ZIP، يمكنك تقديمه مباشرة من متحكم ASP.NET باستخدام `FileResult`، مما يمنح مستخدميك زرًا بنقرة واحدة **download html as zip**. + +## الخلاصة + +أصبح لديك الآن طريقة قوية وجاهزة للإنتاج لـ **save html as zip** باستخدام Aspose.Html و**custom resource handler**. بتحميل أي URL، وتكوين `ZipSaveOptions`، والسماح للمعالج بتوفير الـ streams، يمكنك **convert url to zip**، **download html as zip**، و**save webpage resources** ببضع أسطر من C#. + +لا تتردد في التجربة—احفظ الـ streams إلى قرص، أو تخزين سحابي، أو حتى قاعدة بيانات. النمط يبقى نفسه، والنتيجة دائمًا أرشيف مرتب يمكنك شحنه، أو تخزينه مؤقتًا، أو أرشفته إلى الأبد. + +![مخطط يوضح سير عمل حفظ html كملف zip – من تحميل URL إلى إنتاج ملف ZIP](/images/save-html-as-zip.png) + +*نص بديل للصورة:* **مخطط سير عمل حفظ html كملف zip** + +إذا وجدت هذا الدرس مفيدًا، اترك تعليقًا، شاركه مع زميل، أو ضع نجمة على المستودع حيث تحتفظ ببرمجياتك المساعدة. برمجة سعيدة! + +{{< /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/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/arabic/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..6feded9f6 --- /dev/null +++ b/html/arabic/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,218 @@ +--- +category: general +date: 2026-04-19 +description: احفظ صفحة الويب كملف zip باستخدام Aspose.HTML في C#. تعلّم كيفية تحويل + URL إلى zip، وتصدير HTML إلى zip، وتنزيل صفحة الويب كملف zip باستخدام مثال شفرة + بسيط. +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: ar +og_description: احفظ صفحة الويب كملف zip باستخدام Aspose.HTML في C#. يوضح هذا الدليل + كيفية تحويل URL إلى zip، وتصدير HTML إلى zip، وتنزيل صفحة الويب كملف zip في بضع + خطوات فقط. +og_title: حفظ صفحة الويب كملف ZIP باستخدام Aspose.HTML – دليل C# الكامل +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: حفظ صفحة الويب كملف ZIP باستخدام Aspose.HTML – دليل C# الكامل +url: /ar/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# حفظ صفحة الويب كملف ZIP باستخدام Aspose.HTML – دليل C# كامل + +هل تحتاج إلى **حفظ صفحة الويب كملف zip** لأرشفة غير متصلة بالإنترنت، أو للاختبار الآلي، أو فقط لتوزيع نسخة من موقع؟ لست وحدك. في هذا الدرس سنستعرض كيفية **تحويل URL إلى zip**، **تصدير HTML إلى zip**، وحتى **تنزيل صفحة الويب كملف zip** ببضع أسطر نظيفة من C#. + +سنغطي كل شيء من إعداد المشروع إلى ملف ZIP النهائي على القرص، وسنضيف بعض النصائح العملية التي لا تجدها في الوثائق الرسمية. في النهاية ستحصل على حل قابل لإعادة الاستخدام يمكنه **إنشاء zip من html** متى ما احتجت. + +## ما الذي ستحتاجه + +- **.NET 6.0** (أو أي نسخة حديثة من .NET) – Aspose.HTML يعمل مع .NET Core و .NET Framework على حد سواء. +- حزمة **Aspose.HTML for .NET** عبر NuGet – `Install-Package Aspose.HTML`. +- قليل من الخبرة في C# – إذا كنت تستطيع كتابة `Console.WriteLine` فأنت جاهز. +- جهاز متصل بالإنترنت للتحميل الأولي (الكود نفسه يعمل دون اتصال بمجرد إنشاء ملف ZIP). + +لا حاجة لأي SDKs إضافية، ولا متصفحات headless، فقط .NET نقي و Aspose.HTML. + +![توضيح لحفظ صفحة الويب كملف zip باستخدام Aspose.HTML](save-webpage-as-zip.png "مخطط يوضح سير عمل حفظ صفحة الويب كملف zip") + +## حفظ صفحة الويب كملف ZIP – نظرة عامة + +على مستوى عالٍ، العملية تتكون من ثلاثة أجزاء متحركة: + +1. **معالج `ResourceHandler` مخصص** يخبر Aspose.HTML أين يكتب كل مورد خارجي (صور، CSS، سكريبتات). +2. **`ZipSaveOptions`** التي تربط المعالج بأرشيف ZIP وتسمح لك بتعديل إعدادات العرض (مضاد التعرج، تلميحات الخطوط، إلخ). +3. **استدعاء `HTMLDocument.Save`** الذي يجمع كل شيء، يمرر الصفحة وجميع أصولها إلى ملف ZIP. + +هذا كل ما في الأمر. Aspose.HTML يتولى الجزء الثقيل، لذا يمكنك التركيز على “السبب” و “الوقت” بدلاً من التعامل مع تدفقات منخفضة المستوى. + +--- + +## الخطوة 1: إعداد المشروع وإضافة Aspose.HTML + +أولاً، أنشئ مشروع console جديد (أو ضع الكود في تطبيق موجود). افتح الطرفية ونفّذ: + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +حزمة `Aspose.HTML` تتضمن جميع الأنواع التي سنحتاجها: `HTMLDocument`، `ZipSaveOptions`، `ImageRenderingOptions`، و `ResourceHandler` المجرد. + +> **نصيحة محترف:** إذا كنت تستهدف .NET Framework، استبدل أوامر `dotnet` بواجهة مدير الحزم NuGet في Visual Studio – يتم إضافة نفس ملفات DLL. + +--- + +## الخطوة 2: إنشاء معالج موارد `ZipHandler` مخصص + +Aspose.HTML يستدعي `HandleResource` لكل ملف خارجي يصادفه أثناء تحليل الصفحة. عبر تجاوز هذه الطريقة يمكننا توجيه كل مورد إلى إدخال في ZIP بدلاً من نظام الملفات. + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### لماذا نحتاج معالجًا مخصصًا؟ + +بدون هذا المعالج، سيضع Aspose.HTML الموارد بجوار ملف HTML على القرص. باستخدام `ZipArchive`، نحتفظ **بكل شيء معبأ** – مثالي للتوزيع أو لاستخراج لاحق بواسطة خدمة أخرى. + +--- + +## الخطوة 3: تكوين `ZipSaveOptions` مع إعدادات عرض الصور + +الآن نربط المعالج بخيارات الحفظ ونُفعّل بعض التحسينات التي تحسن من دقة الصور في اللقطات أو التحويلات الشبيهة بـ PDF. + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **لماذا نُفعّل مضاد التعرج والتلميحات؟** عندما تُرسم الصفحة لاحقًا إلى صورة نقطية (مثلاً لإنشاء صورة مصغرة)، تقلل هذه العلامات الحواف المتعرجة وتجعل الخطوط الصغيرة قابلة للقراءة—وذلك مهم خاصة إذا كنت تخطط لتضمين الصور في مكان آخر. + +--- + +## الخطوة 4: تحميل مستند HTML وحفظه إلى ZIP + +مع وجود المعالج والإعدادات جاهزين، تحميل صفحة عن بُعد يصبح بسيطًا بتمرير URL إلى `HTMLDocument`. طريقة `Save` ستستدعي `HandleResource` لكل أصل مرتبط. + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +في هذه المرحلة يحتوي `zipStream` على **أرشيف ZIP كامل يحتوي على**: + +- `index.html` (الصفحة الرئيسية) +- جميع ملفات CSS المشار إليها عبر وسوم `` +- الصور، الخطوط، وملفات JavaScript المطلوبة لعرض الصفحة دون اتصال + +### الحالات الخاصة والاختلافات + +| الحالة | ما الذي يجب تعديله | +|----------------------------------------|-----------------------------------------------------------------------------------| +| **مطلوب توثيق** | استخدم `HTMLDocument(string url, LoadOptions options)` واضبط `options.Credentials`. | +| **صفحات ضخمة جدًا (>100 MB)** | اكتب مباشرة إلى `FileStream` بدلاً من `MemoryStream` لتجنب استهلاك الذاكرة العالي. | +| **روابط نسبية تبدأ بـ “//”** | المعالج يُطبعها تلقائيًا؛ فقط تأكد من ضبط `BaseUrl`. | +| **هيكل مجلد مخصص داخل ZIP** | عدّل `info.Path` داخل `HandleResource` قبل إنشاء الإدخال. | + +--- + +## الخطوة 5: حفظ ملف ZIP والتحقق من النتيجة + +أخيرًا، نكتب الـ ZIP الموجود في الذاكرة إلى القرص. هذه الخطوة اختيارية إذا كنت تنوي إرسال الـ stream عبر الشبكة، لكنها تسهّل عملية التحقق. + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**النتيجة المتوقعة:** فتح `result.zip` يُظهر ملف `index.html`، وعند فتحه في متصفح دون اتصال يبدو مطابقة للصفحة الحية (بشرط أن جميع الأصول الخارجية كانت متاحة أثناء التحميل). + +--- + +## أسئلة شائعة وإجابات + +**س: هل يعمل هذا النهج مع الصفحات التي تستخدم تحميل الصور بشكل lazy؟** +ج: نعم، طالما أن الصور تُطلب أثناء جولة DOM الأولية. إذا كان سكريبت يحمل الصور بعد تحميل الصفحة، قد تحتاج إلى استدعاء يدوي “render” عبر `document.Render()` قبل `Save`. + +**س: هل يمكن ضغط الـ ZIP أكثر؟** +ج: API `ZipArchive` يستخدم مستوى الضغط الافتراضي. للحصول على ضغط أقوى، أنشئه بـ `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)`. + +**س: ماذا لو أردت ZIP محمي بكلمة مرور؟** +ج: `ZipArchive` المدمج لا يدعم التشفير. في هذه الحالة، مرّر الـ output stream عبر مكتبة طرف ثالث مثل `SharpZipLib` بعد انتهاء Aspose.HTML من الكتابة. + +--- + +## نصائح محترف للاستخدام في بيئات الإنتاج + +- **أعد استخدام `ZipHandler`** عند معالجة عدة صفحات على دفعة؛ فقط أعد تعيين `MemoryStream` الأساسي بين كل تشغيل. +- **Log + +{{< /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/chinese/net/generate-jpg-and-png-images/_index.md b/html/chinese/net/generate-jpg-and-png-images/_index.md index 3a7bc53dc..844b4f8b0 100644 --- a/html/chinese/net/generate-jpg-and-png-images/_index.md +++ b/html/chinese/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML for .NET 提供了一种将 HTML 转换为图像的简单方法。 了解如何在使用 Aspose.HTML for .NET 将 DOCX 文档转换为 PNG 或 JPG 图像时启用抗锯齿,以提升图像质量。 ### [使用 C# 将 docx 转换为 png 并创建 zip 存档教程](./convert-docx-to-png-create-zip-archive-c-tutorial/) 学习如何使用 C# 将 DOCX 文档转换为 PNG 图像并打包为 ZIP 文件的完整步骤。 +### [如何将 HTML 渲染为 PNG – 完整 C# 指南](./how-to-render-html-to-png-complete-c-guide/) +学习如何使用 C# 将 HTML 渲染为 PNG 图像的完整步骤和技巧。 ## 结论 diff --git a/html/chinese/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/chinese/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..986956066 --- /dev/null +++ b/html/chinese/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,157 @@ +--- +category: general +date: 2026-04-19 +description: 如何使用 Aspose.Html 将 HTML 渲染为 PNG。学习在几分钟内将 HTML 转换为 PNG、将 HTML 保存为 PNG,并从 + HTML 创建图像。 +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: zh +og_description: 使用 Aspose.Html 将 HTML 渲染为 PNG。请按照本分步教程将 HTML 转换为 PNG、将 HTML 保存为 PNG,并从 + HTML 创建图像。 +og_title: 如何将HTML渲染为PNG – 完整的C#指南 +tags: +- Aspose.Html +- C# +title: 如何将HTML渲染为PNG – 完整C#指南 +url: /zh/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何将 HTML 渲染为 PNG – 完整 C# 指南 + +是否曾想过 **如何将 HTML 渲染** 成图像文件而不启动浏览器?你并不是唯一有此需求的人。在许多项目中——电子邮件缩略图、PDF 生成或仅仅是快速预览——你需要即时 **将 HTML 转换为 PNG**。 + +在本教程中,我们将使用 Aspose.Html for .NET 进行实操演示,涵盖从安装库到微调文本 hinting 以获得清晰小字体的全部内容。完成后,你将能够 **将 HTML 保存为 PNG**、**从 HTML 创建图像**,甚至针对特殊场景微调渲染选项。 + +## 你需要的条件 + +- **.NET 6+**(或 .NET Framework 4.6.2+)。API 在各运行时上的行为相同。 +- **Aspose.Html** NuGet 包 – `Install-Package Aspose.Html`。 +- 一个简单的 HTML 文件(例如 `article.html`),你想将其转换为图像。 +- Visual Studio、Rider 或任何你喜欢的编辑器。 + +就这么简单——没有额外的依赖,没有无头 Chrome,纯粹的 C#。 + +## 步骤 1:安装 Aspose.Html 并添加命名空间 + +首先,从 NuGet 拉取库。打开包管理器控制台并运行: + +```powershell +Install-Package Aspose.Html +``` + +安装完成后,在文件顶部添加所需的 `using` 指令: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +这些命名空间让你能够访问文档模型、图像渲染以及后面需要的细粒度文本选项。 + +> **小技巧:** 如果你使用的是 .csproj 文件,也可以手动添加 ``。 + +## 步骤 2:加载 HTML 文档 + +你需要一个指向源文件的 `HTMLDocument` 实例。Aspose.Html 可以从路径、流甚至 URL 读取。 + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **为什么重要:** 只加载一次文档可以保持低内存使用。如果你计划渲染多页,请尽可能复用同一个 `HTMLDocument` 对象。 + +## 步骤 3:微调小字体的文本渲染 + +在渲染极小文本时,常会出现模糊的边缘。启用 hinting 可让光栅化器将字形对齐到像素边界,从而显著提升可读性。 + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +你还可以在此控制抗锯齿、子像素渲染,甚至指定自定义字体集合——当你的 HTML 引用了网络字体时非常有用。 + +## 步骤 4:配置图像渲染选项 + +现在我们将 `TextOptions` 绑定到图像设置。你还可以设置背景颜色、DPI 或图像格式(PNG、JPEG、BMP)。 + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **特殊情况:** 如果你的 HTML 宽度超过典型屏幕尺寸,考虑在 `ImageRenderingOptions` 上设置 `Width` 和 `Height`,以避免生成巨大的 PNG。 + +## 步骤 5:将 HTML 渲染为 PNG 文件 + +最后,调用 `RenderToImage`。我们使用的方法重载允许指定输出路径以及刚才构建的选项。 + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +运行程序后,Aspose.Html 会解析标记、应用 CSS、布局页面,并将其光栅化为 `article.png`。使用任意图像查看器打开该文件——你应该会看到原始 HTML 的像素级完美快照。 + +![how to render html as PNG using Aspose.Html](render-html-png.png) + +*图片替代文字:**如何使用 Aspose.Html 将 html 渲染为 PNG*** + +## 额外内容:处理多页或缩放 + +有时单个 HTML 文件包含多个 `` 部分(例如用于打印)。你可以遍历 `htmlDoc.Pages` 并逐页渲染: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +如果你需要缩略图而非完整尺寸图像,请在渲染前调整 `imgOpts.Width` 和 `imgOpts.Height`。库会自动保持宽高比。 + +--- + +## 结论 + +现在,你已经拥有一套稳固、可用于生产环境的 **如何将 HTML 渲染** 为 PNG 图像的方案,使用 Aspose.Html。从安装包、加载标记、细致调校文本 hinting,到最终调用 `RenderToImage`,每一步都已覆盖。 + +有了这些知识,你可以 **将 HTML 转换为 PNG**、**将 HTML 保存为 PNG**,以及 **从 HTML 创建图像**,适用于任何 .NET 应用——无论是生成缩略图的 Web 服务,还是归档网页的桌面工具。 + +接下来,探索相关主题,例如使用不同格式(JPEG、BMP)**将 HTML 渲染为图像**,或使用 Aspose.PDF 将 PNG 嵌入 PDF。你还可以尝试 DPI 缩放以实现高分辨率打印,或将实时生成的动态 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/chinese/net/html-extensions-and-conversions/_index.md b/html/chinese/net/html-extensions-and-conversions/_index.md index a6c24babf..6882ddfc8 100644 --- a/html/chinese/net/html-extensions-and-conversions/_index.md +++ b/html/chinese/net/html-extensions-and-conversions/_index.md @@ -59,21 +59,22 @@ Aspose.HTML for .NET 不仅仅是一个库;它是 Web 开发领域的变革者 使用 Aspose.HTML 在 .NET 中将 HTML 转换为 MHTML - 高效 Web 内容存档的分步指南。了解如何使用 Aspose.HTML for .NET 创建 MHTML 存档。 ### [使用 Aspose.HTML 在 .NET 中将 HTML 转换为 PNG](./convert-html-to-png/) 了解如何使用 Aspose.HTML for .NET 来操作和转换 HTML 文档。高效 .NET 开发的分步指南。 +### [使用 Aspose.HTML 在 .NET 中将 HTML 转换为 PNG – 将 HTML 渲染为图像](./convert-html-to-png-in-c-render-html-as-image/) +使用 Aspose.HTML for .NET 在 C# 中将 HTML 渲染为 PNG 图像,提供代码示例和分步说明。 ### [使用 Aspose.HTML 在 .NET 中将 HTML 转换为 TIFF](./convert-html-to-tiff/) 了解如何使用 Aspose.HTML for .NET 将 HTML 转换为 TIFF。按照我们的分步指南进行有效的 Web 内容优化。 ### [使用 Aspose.HTML 在 .NET 中将 HTML 转换为 XPS](./convert-html-to-xps/) 探索 Aspose.HTML for .NET 的强大功能:轻松将 HTML 转换为 XPS。包含先决条件、分步指南和常见问题解答。 ### [如何在 C# 中压缩 HTML – 将 HTML 保存为 Zip](./how-to-zip-html-in-c-save-html-to-zip/) 使用 Aspose.HTML for .NET 在 C# 中将 HTML 打包并保存为 Zip 文件的分步教程。 -### [使用 Aspose.HTML 在 .NET 中创建带样式文本的 HTML 文档并导出为 PDF – 完整指南](./create-html-document-with-styled-text-and-export-to-pdf-full/) -本完整指南展示如何使用 Aspose.HTML for .NET 创建带样式的 HTML 文档并将其导出为 PDF,包含详细步骤和代码示例。 -### [使用 Aspose.HTML 在 C# 中将 HTML 创建为 PDF – 完整指南](./create-pdf-from-html-c-step-by-step-guide/) -使用 Aspose.HTML for .NET 在 C# 中将 HTML 转换为 PDF 的完整分步指南,涵盖代码示例和最佳实践。 ### [使用 Aspose.HTML 在 .NET 中将 HTML 保存为 ZIP – 完整的 C# 教程](./save-html-as-zip-complete-c-tutorial/) 使用 Aspose.HTML for .NET 将 HTML 内容打包为 ZIP 文件的完整 C# 示例,包含代码演示和关键步骤。 - +### [使用 Aspose.HTML 将网页保存为 ZIP – 完整 C# 教程](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +使用 Aspose.HTML for .NET 在 C# 中完整演示如何将网页保存为 ZIP 文件,包含代码示例和详细步骤。 ### [在 C# 中将 HTML 保存为 ZIP – 完整内存示例](./save-html-to-zip-in-c-complete-in-memory-example/) 演示如何使用 Aspose.HTML for .NET 在 C# 中将 HTML 内容压缩为 ZIP 文件,完整的内存操作示例。 +### [使用 Aspose.HTML 在 .NET 中将 HTML 保存为 ZIP(自定义资源处理程序) – 步骤指南](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +演示如何使用 Aspose.HTML for .NET 的自定义资源处理程序将 HTML 内容压缩并保存为 ZIP 文件的完整步骤指南。 ## 结论 diff --git a/html/chinese/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/chinese/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..d4018d3dc --- /dev/null +++ b/html/chinese/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,213 @@ +--- +category: general +date: 2026-04-19 +description: 使用 Aspose.HTML 在 C# 中将 HTML 转换为 PNG —— 快速指南,渲染 HTML 为图像并将图表保存为带抗锯齿的 PNG。 +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: zh +og_description: 在 C# 中快速将 HTML 转换为 PNG。了解如何将 HTML 渲染为图像、将图表保存为 PNG,以及使用 Aspose.HTML + 从 HTML 生成 PNG。 +og_title: 在 C# 中将 HTML 转换为 PNG – 将 HTML 渲染为图像 +tags: +- Aspose.HTML +- C# +- Image Processing +title: 在 C# 中将 HTML 转换为 PNG – 将 HTML 渲染为图像 +url: /zh/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 C# 中将 HTML 转换为 PNG – 将 HTML 渲染为图像 + +是否曾经需要在 C# 中 **将 HTML 转换为 PNG**,但不确定哪个库能提供清晰的效果?你并不孤单。无论是导出动态图表、将电子邮件模板转换为缩略图,还是仅仅需要网页的静态快照,**将 HTML 渲染为图像** 的能力都是每个开发者工具箱中的实用技巧。 + +在本教程中,我们将一步步演示如何使用 Aspose.HTML 将 HTML 文件转换为 PNG 文件。完成后,你将能够 **save chart as PNG**、**generate PNG from HTML**,甚至微调抗锯齿设置以获得更精致的外观。没有冗余内容——只提供一个完整、可直接运行的示例,今天即可放入你的项目中使用。 + +## 您需要的环境 + +- **.NET 6.0** 或更高版本(代码同样适用于 .NET Framework 4.6+)。 +- **Aspose.HTML for .NET** – 可通过 NuGet 使用 `Install-Package Aspose.HTML` 获取。 +- 一个简单的 HTML 文件(例如 `chart.html`),其中包含你想要捕获的标记。 +- 你喜欢的 IDE——Visual Studio、Rider,甚至 VS Code 都可以。 + +就这些。无需额外依赖,无需无头浏览器,只需一个文档齐全的库。 + +![将 HTML 转换为 PNG 示例](example.png "将 HTML 转换为 PNG 的输出") + +## 步骤 1:加载 HTML 文档 + +我们首先需要让 Aspose.HTML 指向源文件。把 `HTMLDocument` 类想象成一个画布,库随后会在其上绘制位图。 + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*Why this matters:* 加载文档将解析阶段与渲染阶段分离。它让引擎有机会在生成 PNG 之前解析 CSS、脚本和图片。如果跳过此步骤直接渲染原始标记,最终会得到空白图像或缺失样式。 + +## 步骤 2:配置图像渲染选项 + +开箱即用的 Aspose.HTML 能生成体面的 PNG,但你通常希望边缘更平滑——尤其是图表和矢量图形。这时 `ImageRenderingOptions` 就派上用场了。 + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*Pro tip:* 若在高 DPI 显示器上使用,请按比例增大 `Width` 和 `Height`,让 PNG 更大。之后可以使用图像编辑器缩小。设置背景颜色还能防止透明 PNG 在深色页面上显示异常。 + +## 步骤 3:将 HTML 渲染为 PNG 文件 + +现在开始真正的工作。`RenderToImage` 方法接受输出路径和我们刚定义的选项,然后将 PNG 写入磁盘。 + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +当此行执行完毕后,你会在目标文件夹中看到 `chart.png`。打开它——图表是否清晰锐利?如果启用了抗锯齿,线条应当平滑,文字也应当清晰。 + +### 验证结果 + +你可以通过代码快速验证生成的图像: + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +如果控制台打印出非零的尺寸以及受支持的像素格式(例如 `Format32bppArgb`),则已成功 **convert html to png**。 + +## 将 HTML 渲染为图像 – 高级选项 + +到目前为止我们已经覆盖了基础,但实际场景往往需要更多控制。下面列出了一些常见的微调方式。 + +### 调整 DPI 以获得打印质量输出 + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +更高的 DPI 在你计划将 PNG 嵌入 PDF 或打印到纸张时非常有用。 + +### 处理外部资源 + +如果你的 HTML 引用了托管在 Web 服务器上的外部 CSS、字体或图片,请确保运行时能够访问它们。你可以设置自定义 `BaseUrl`: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +这会让 Aspose.HTML 根据提供的基准 URL 解析相对路径。 + +### 转换多页文档 + +Aspose.HTML 能将多页 HTML 文档的每一页渲染为单独的 PNG 文件: + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +这样,你就可以对每一页 **save chart as PNG**,无需手动裁剪输出。 + +## 将图表保存为 PNG – 常见陷阱与避免方法 + +1. **Missing Fonts:** 如果 HTML 使用了服务器上未安装的自定义字体,渲染出的 PNG 将回退到默认字体。请在机器上安装该字体,或通过 CSS 中的 `@font-face` 嵌入。 +2. **Large Files:** 渲染大型 HTML 文件可能会消耗大量内存。考虑对内容进行分页或降低图像尺寸。 +3. **Transparent Backgrounds:** 默认情况下,PNG 可能是透明的。如果需要不透明背景(例如用于邮件缩略图),请按前文示例设置 `BackgroundColor`。 +4. **Script Execution:** Aspose.HTML 不执行 JavaScript。如果你的图表是使用 Chart.js 等客户端库生成的,需要先将图表渲染为静态 `` 元素,或改用无头浏览器。 + +## 完整工作示例 + +下面是完整的程序代码,可直接复制粘贴到控制台应用中。它包含了所有步骤、错误处理以及前文讨论的可选微调。 + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +运行程序后,你会看到确认信息以及图像的尺寸。用任意查看器打开 `chart.png`,即可确认图表与原始 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/chinese/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/chinese/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..90e050ba0 --- /dev/null +++ b/html/chinese/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-04-19 +description: 学习如何使用 Aspose.Html 和自定义资源处理程序将 HTML 保存为 ZIP。还可以了解如何将 URL 转换为 ZIP,并在几分钟内下载 + HTML 为 ZIP。 +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: zh +og_description: 轻松将 HTML 保存为 ZIP:使用 Aspose.Html、自定义资源处理程序和 ZipSaveOptions 将任何 URL + 转换为可下载的 ZIP 压缩包。 +og_title: 使用自定义资源处理程序将 HTML 保存为 ZIP – 快速教程 +tags: +- Aspose.Html +- C# +- Web scraping +title: 使用自定义资源处理程序将 HTML 保存为 ZIP – 步骤指南 +url: /zh/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 将 HTML 保存为 ZIP – 完整教程 + +是否曾需要 **save html as zip**,以便将整个页面连同图片、CSS 和脚本打包成一个整洁的压缩文件?也许你在构建一个归档文章的爬虫,或者只是想为用户提供一个快速的 “download html as zip” 按钮。无论哪种情况,你可能都在想如何在不编写大量文件 I/O 代码的前提下实现它。 + +好消息是:Aspose.Html 让这件事轻而易举,并且通过 **custom resource handler** 你可以精确决定每个资源流的去向。在本指南中,我们还会演示如何 **convert url to zip**、如何 **download html as zip**,以及如何 **save webpage resources** 供离线使用——全部在一个独立的 C# 程序中完成。 + +## 您将学习的内容 + +- 安装 Aspose.Html 库(NuGet 可轻松完成)。 +- 编写一个 `ResourceHandler`,为 Aspose.Html 想要写入的每个资源提供 `Stream`。 +- 加载远程页面(或本地文件),并让 Aspose.Html 将所有内容打包成 ZIP 存档。 +- 验证生成的 `output.zip` 是否包含 HTML 文件以及所有关联的资源。 + +无需外部工具,无需手动处理 zip 文件——只需干净、可编译的代码,随时可以放入任何 .NET 项目中。 + +## 前置条件 + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6.0 或更高版本(代码同样适用于 .NET Framework 4.7+) | Aspose.Html 面向现代运行时;旧版框架可能缺少部分 API。 | +| Visual Studio 2022(或任意你喜欢的 IDE) | 有助于调试并查看生成的 ZIP。 | +| 能访问示例 URL (`https://example.com`) 的网络 | 我们将抓取实时页面以演示 **convert url to zip**。 | +| NuGet 包 `Aspose.Html`(v23.12 或更新) | 该库提供 `HTMLDocument`、`ZipSaveOptions` 与 `ResourceHandler` 基类。 | + +如果你已经有一个 .NET 项目,只需运行: + +```bash +dotnet add package Aspose.Html +``` + +这就是所有的设置步骤。 + +## Step 1: Create a Custom Resource Handler + +创建自定义资源处理器的核心是继承自 `ResourceHandler` 的类。Aspose.Html 会为每个需要写入的文件(HTML、图片、CSS、JavaScript 等)调用 `HandleResource`。通过返回一个 `Stream`,你决定数据写入何处。 + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**为什么需要自定义处理器?** +因为旧的 `IOutputStorage` 接口已被弃用,`ResourceHandler` 让你完全控制输出目标。它还可以让你检查 `ResourceInfo`——例如只保留图片而跳过字体时非常有用。 + +## Step 2: Load the HTML Document (or Convert URL to Zip) + +Aspose.Html 可以从 URL、文件路径或原始 HTML 字符串加载。这里演示加载实时页面,这是实现 **download html as zip** 的常见场景。 + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +如果你已经在变量中拥有 HTML 源代码,只需将其传给构造函数: + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## Step 3: Wire Up the Handler to ZipSaveOptions + +`ZipSaveOptions` 告诉 Aspose.Html *如何* 创建 ZIP 文件。关键属性是 `OutputStorage`,我们将其设置为 `MyHandler` 实例。 + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +你还可以调节压缩级别、压缩包内部的文件夹名称,甚至嵌入清单文件——细节请参考 Aspose 文档,默认设置已能满足大多数场景。 + +## Step 4: Save the Document as a ZIP Archive + +现在魔法开始发挥作用。`Save` 方法会遍历每个资源,调用 `HandleResource`,并将字节写入返回的流。由于我们的处理器每次返回一个全新的 `MemoryStream`,Aspose.Html 随后会收集所有流并打包成 `output.zip`。 + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**你会看到的内容:** +- 项目根目录下的 `output.zip`。 +- ZIP 包内部:`index.html`(主页面)以及 `images/`、`css/`、`scripts/` 等子文件夹,里面正是浏览器实际请求的文件。 + +## Step 5: Verify the Result (Optional but Recommended) + +进行一次快速的完整性检查,以确保 **save webpage resources** 已正确完成。 + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +你应该能看到 `index.html`、所有关联的图片(如 `logo.png`)、CSS 文件和 JavaScript 文件的条目。如果缺少某些内容,请再次检查 `MyHandler` 中的 `ResourceInfo` 逻辑。 + +## Full Working Example + +下面给出完整的可直接复制到控制台应用的示例程序。 + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +运行程序(`dotnet run`),即可在项目目录生成整洁的 `output.zip`。使用任意压缩管理器打开,你就可以离线浏览保存的页面——这正是实现 **download html as zip** 功能所需的全部。 + +## Common Questions & Edge Cases + +| Question | Answer | +|----------|--------| +| *如果需要将 ZIP 存储在 Azure Blob Storage 中怎么办?* | 将 `MemoryStream` 替换为直接写入 Blob 的流(例如 `CloudBlockBlob.OpenWrite()`)。处理器抽象使这一步非常简单。 | +| *我可以过滤掉某些资源吗?* | 可以。在 `HandleResource` 中检查 `info.ResourceType` 或 `info.Url`。返回 `null` 可跳过该资源,或返回一个不写入内容的流。 | +| *ZIP 是否支持密码保护?* | `ZipSaveOptions` 提供 `Password` 属性。调用 `Save` 前设置即可实现加密。 | +| *如果页面非常大,资产占用数十 MB,怎么办?* | 使用 `MemoryStream` 可能会耗尽内存。改为使用写入临时文件夹的 `FileStream`,随后让 Aspose.Html 对这些文件进行压缩。 | +| *这在 Linux 上的 .NET Core 能运行吗?* | 完全可以。Aspose.Html 跨平台,只要运行时有写文件的权限即可。 | + +## Pro Tips + +- **Pro tip:** 如果只关心 HTML 与图片,可检查 `info.ResourceType == ResourceType.Image` 并跳过脚本或字体,以保持 ZIP 体积最小。 +- **Watch out for:** 某些站点会阻止自动请求。若收到 403 错误,可通过 `HtmlLoadOptions` 设置自定义 `User-Agent`。 +- **Tip:** 创建 ZIP 后,可在 ASP.NET 控制器中直接返回 `FileResult`,为用户提供一键 **download html as zip** 按钮。 + +## Conclusion + +现在,你已经掌握了一套使用 Aspose.Html 和 **custom resource handler** 的可靠、可投产的 **save html as zip** 方案。只需加载任意 URL,配置 `ZipSaveOptions`,让处理器提供流,即可实现 **convert url to zip**、**download html as zip** 与 **save webpage resources**,代码仅需几行 C#。 + +欢迎随意实验——将流保存到磁盘、云存储,甚至数据库。模式保持不变,最终始终得到一个整洁的归档文件,方便你进行分发、缓存或长期保存。 + +--- + +![展示将 HTML 保存为 ZIP 工作流的图示 – 从加载 URL 到生成 ZIP 文件](/images/save-html-as-zip.png) + +*图片替代文字:* **保存 HTML 为 ZIP 工作流图示** + +如果本教程对你有帮助,请留下评论,分享给同事,或给你保存实用脚本的仓库点个星。祝编码愉快! + +{{< /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/chinese/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/chinese/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..e55db3bd7 --- /dev/null +++ b/html/chinese/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-04-19 +description: 使用 Aspose.HTML 在 C# 中将网页保存为 zip。了解如何将 URL 转换为 zip、将 HTML 导出为 zip,以及使用简洁代码示例下载网页为 + zip。 +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: zh +og_description: 使用 Aspose.HTML 在 C# 中将网页保存为 zip。本指南展示了如何将 URL 转换为 zip、将 HTML 导出为 zip,以及仅通过几步即可下载网页为 + zip。 +og_title: 使用 Aspose.HTML 将网页保存为 ZIP – 完整 C# 教程 +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: 使用 Aspose.HTML 将网页保存为 ZIP – 完整 C# 教程 +url: /zh/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 使用 Aspose.HTML 将网页保存为 ZIP – 完整 C# 教程 + +需要 **将网页保存为 zip** 以便离线归档、自动化测试,或仅仅是想快照一个站点吗?你并不孤单。在本教程中,我们将演示如何 **将 URL 转换为 zip**、**将 HTML 导出为 zip**,甚至 **下载网页为 zip**,只需几行简洁的 C# 代码。 + +我们会从项目搭建一直讲到磁盘上的最终 ZIP 文件,并穿插一些官方文档中没有的实用技巧。完成后,你将拥有一个可复用的解决方案,能够在需要时 **从 html 创建 zip**。 + +## 你需要准备的环境 + +- **.NET 6.0**(或任意近期的 .NET 版本)——Aspose.HTML 同时支持 .NET Core 与 .NET Framework。 +- **Aspose.HTML for .NET** NuGet 包——`Install-Package Aspose.HTML`。 +- 基本的 C# 经验——只要会写 `Console.WriteLine`,即可上手。 +- 一台能够联网的机器用于首次下载(代码本身在 ZIP 创建完成后即可离线运行)。 + +不需要额外的 SDK、无头浏览器,仅需纯 .NET 与 Aspose.HTML。 + +![使用 Aspose.HTML 将网页保存为 ZIP 的示意图](save-webpage-as-zip.png "展示保存网页为 ZIP 工作流的图示") + +## 将网页保存为 ZIP – 概览 + +从宏观上看,这个过程由三部分组成: + +1. **自定义 `ResourceHandler`**,告诉 Aspose.HTML 每个外部资源(图片、CSS、脚本)该写入何处。 +2. **`ZipSaveOptions`**,将处理程序绑定到 ZIP 存档,并允许你微调渲染(抗锯齿、字体提示等)。 +3. **`HTMLDocument.Save` 调用**,将页面及其所有资产一起流式写入 ZIP 文件。 + +就是这么简单。繁重的工作由 Aspose.HTML 完成,你只需关注 “为什么” 与 “何时” 使用,而不是低层流的细节。 + +--- + +## 第一步:创建项目并添加 Aspose.HTML + +首先,新建一个控制台项目(或将代码放入已有应用)。在终端执行: + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +`Aspose.HTML` 包已经包含我们需要的所有类型:`HTMLDocument`、`ZipSaveOptions`、`ImageRenderingOptions` 以及抽象的 `ResourceHandler`。 + +> **专业提示:** 如果你面向 .NET Framework,使用 Visual Studio 中的 NuGet 包管理器 UI 替代 `dotnet` 命令——添加的 DLL 是相同的。 + +--- + +## 第二步:实现自定义 `ZipHandler` 资源处理器 + +Aspose.HTML 在解析页面时会为每个外部文件调用 `HandleResource`。通过重写此方法,我们可以把每个资源写入 ZIP 条目,而不是写入文件系统。 + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### 为什么需要自定义处理器? + +如果不这样做,Aspose.HTML 会把资源直接放在 HTML 文件所在的磁盘目录下。使用 `ZipArchive`,我们可以 **将所有内容打包**——非常适合分发或后续由其他服务解压使用。 + +--- + +## 第三步:使用图像渲染配置 `ZipSaveOptions` + +现在把处理器绑定到保存选项,并开启一些渲染微调,以提升截图或类似 PDF 转换的视觉保真度。 + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **为什么要启用抗锯齿和字体提示?** 当页面随后被渲染为位图(例如生成缩略图)时,这些标志可以减少锯齿并让小字体更易辨认——尤其在需要将图像嵌入其他地方时尤为重要。 + +--- + +## 第四步:加载 HTML 文档并保存为 ZIP + +有了处理器和选项,加载远程页面只需将其 URL 传给 `HTMLDocument`。`Save` 方法会为每个关联资源调用 `HandleResource`。 + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +此时 `zipStream` 已经包含了完整的 **ZIP 存档**,其中包括: + +- `index.html`(主页面) +- 所有 `` 标签引用的 CSS 文件 +- 为离线渲染页面所需的图片、字体和 JavaScript 文件 + +### 边缘情况与变体 + +| 情况 | 需要调整的内容 | +|-----------------------------------|-----------------------------------------------------------------------------------| +| **需要身份验证** | 使用 `HTMLDocument(string url, LoadOptions options)` 并设置 `options.Credentials`。 | +| **非常大的页面 (>100 MB)** | 直接写入 `FileStream` 而不是 `MemoryStream`,以避免占用大量内存。 | +| **以 “//” 开头的相对 URL** | 处理程序会自动规范化这些 URL;只需确保已设置 `BaseUrl`。 | +| **ZIP 内的自定义文件夹结构** | 在创建条目之前,修改 `HandleResource` 中的 `info.Path`。 | + +--- + +## 第五步:持久化 ZIP 文件并验证结果 + +最后,将内存中的 ZIP 写入磁盘。若你打算将流通过网络发送,这一步可以省略,但它便于验证。 + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**预期结果:** 打开 `result.zip`,其中的 `index.html` 在离线浏览器中打开时应与在线页面保持一致(前提是下载时所有外部资源均可访问)。 + +--- + +## 常见问题与解答 + +**Q: 这种方式能处理使用懒加载图片的页面吗?** +A: 可以,只要在初始 DOM 遍历期间请求了这些图片。如果脚本在页面加载后才动态加载图片,你可能需要在 `Save` 前手动调用 `document.Render()` 触发渲染。 + +**Q: 能进一步压缩 ZIP 吗?** +A: `ZipArchive` API 使用默认压缩级别。若需更高压缩率,可使用 `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)` 实例化。 + +**Q: 如果需要密码保护的 ZIP 怎么办?** +A: 内置的 `ZipArchive` 不支持加密。此时可以在 Aspose.HTML 完成写入后,将输出流通过第三方库(如 `SharpZipLib`)进行加密处理。 + +--- + +## 生产环境使用的专业提示 + +- **在批量处理多个页面时复用 `ZipHandler`**;在每次运行之间只需重置底层的 `MemoryStream`。 +- **日志** + +{{< /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/czech/net/generate-jpg-and-png-images/_index.md b/html/czech/net/generate-jpg-and-png-images/_index.md index 11b9c8465..bf736bbe0 100644 --- a/html/czech/net/generate-jpg-and-png-images/_index.md +++ b/html/czech/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Naučte se používat Aspose.HTML pro .NET k manipulaci s dokumenty HTML, převo Naučte se, jak při převodu dokumentů DOCX na PNG nebo JPG povolit antialiasing pro hladší výstup. ### [Převod docx na png – vytvoření zip archivu C# tutoriál](./convert-docx-to-png-create-zip-archive-c-tutorial/) Naučte se převést soubory DOCX na PNG a zabalit je do ZIP archivu pomocí C# a Aspose.HTML. +### [Jak renderovat HTML do PNG – Kompletní průvodce v C#](./how-to-render-html-to-png-complete-c-guide/) +Naučte se, jak pomocí Aspose.HTML pro .NET převést HTML na PNG v kompletním průvodci v C#. ## Závěr diff --git a/html/czech/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/czech/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..e110182c1 --- /dev/null +++ b/html/czech/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,158 @@ +--- +category: general +date: 2026-04-19 +description: Jak renderovat HTML do PNG pomocí Aspose.Html. Naučte se převádět HTML + na PNG, uložit HTML jako PNG a vytvořit obrázek z HTML během několika minut. +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: cs +og_description: Jak renderovat HTML do PNG pomocí Aspose.Html. Postupujte podle tohoto + krok‑za‑krokem tutoriálu a převádějte HTML na PNG, ukládejte HTML jako PNG a vytvářejte + obrázek z HTML. +og_title: Jak renderovat HTML do PNG – Kompletní průvodce C# +tags: +- Aspose.Html +- C# +title: Jak renderovat HTML do PNG – Kompletní průvodce C# +url: /cs/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak renderovat HTML do PNG – Kompletní průvodce v C# + +Už jste se někdy zamysleli **jak renderovat HTML** do souboru s obrázkem, aniž byste spouštěli prohlížeč? Nejste v tom sami. V mnoha projektech—náhledy e‑mailů, generování PDF nebo jen rychlé ukázky—potřebujete **převést HTML na PNG** za běhu. + +V tomto tutoriálu vás provedeme praktickým řešením pomocí Aspose.Html pro .NET, které pokrývá vše od instalace knihovny až po ladění text‑hintingu pro ostré malé fonty. Na konci budete schopni **uložit HTML jako PNG**, **vytvořit obrázek z HTML** a dokonce upravit možnosti renderování pro okrajové scénáře. + +## Co budete potřebovat + +- **.NET 6+** (nebo .NET Framework 4.6.2+). API funguje stejně napříč runtimey. +- **Aspose.Html** NuGet balíček – `Install-Package Aspose.Html`. +- Jednoduchý HTML soubor (např. `article.html`), který chcete převést na obrázek. +- Visual Studio, Rider nebo jakýkoli editor, který máte rádi. + +To je vše—žádné další závislosti, žádný headless Chrome, jen čisté C#. + +## Krok 1: Nainstalujte Aspose.Html a přidejte jmenné prostory + +Nejprve stáhněte knihovnu z NuGetu. Otevřete Package Manager Console a spusťte: + +```powershell +Install-Package Aspose.Html +``` + +Po instalaci přidejte požadované `using` direktivy na začátek souboru: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +Tyto jmenné prostory vám poskytují přístup k modelu dokumentu, renderování obrázků a detailním možnostem textu, které budeme později potřebovat. + +> **Tip:** Pokud používáte soubor .csproj, můžete také ručně přidat ``. + +## Krok 2: Načtěte HTML dokument + +Potřebujete instanci `HTMLDocument`, která ukazuje na zdrojový soubor. Aspose.Html může číst z cesty, streamu nebo dokonce z URL. + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Proč je to důležité:** Načtení dokumentu jednou snižuje využití paměti. Pokud plánujete renderovat mnoho stránek, opakovaně používejte stejný objekt `HTMLDocument`, pokud je to možné. + +## Krok 3: Vyladit renderování textu pro malé fonty + +Při renderování drobného textu často získáte rozmazané hrany. Povolení hintingu říká rasterizéru, aby zarovnal glyfy k pixelovým hranám, což výrazně zlepšuje čitelnost. + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +Zde můžete také ovládat anti‑aliasing, subpixelové renderování nebo dokonce zadat vlastní kolekci fontů—užitečné, pokud váš HTML odkazuje na webové fonty. + +## Krok 4: Nakonfigurujte možnosti renderování obrázku + +Nyní svážeme `TextOptions` s nastavením obrázku. Můžete také nastavit barvu pozadí, DPI nebo formát obrázku (PNG, JPEG, BMP). + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **Okrajový případ:** Pokud je váš HTML širší než typické rozměry obrazovky, zvažte nastavení `Width` a `Height` na `ImageRenderingOptions`, abyste se vyhnuli obrovským PNG souborům. + +## Krok 5: Renderujte HTML do souboru PNG + +Nakonec zavolejte `RenderToImage`. Přetížená metoda, kterou používáme, umožňuje specifikovat výstupní cestu a možnosti, které jsme právě vytvořili. + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +Když spustíte program, Aspose.Html parsuje značky, aplikuje CSS, rozvrhne stránku a rasterizuje ji do `article.png`. Otevřete soubor v libovolném prohlížeči obrázků—měli byste vidět pixel‑dokonalý snímek vašeho původního HTML. + +![jak renderovat html jako PNG pomocí Aspose.Html](render-html-png.png) + +*Text alt obrázku: **jak renderovat html** jako PNG pomocí Aspose.Html* + +## Bonus: Práce s více stránkami nebo škálování + +Někdy jeden HTML soubor obsahuje několik sekcí `` (např. pro tisk). Můžete projít `htmlDoc.Pages` a renderovat každou stránku samostatně: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +Pokud potřebujete spíše miniaturu než obrázek v plné velikosti, upravte `imgOpts.Width` a `imgOpts.Height` před renderováním. Knihovna automaticky zachová poměr stran. + +--- + +## Závěr + +Nyní máte robustní, připravený recept pro **jak renderovat HTML** do PNG obrázku pomocí Aspose.Html. Od instalace balíčku, načtení značek, jemného ladění textového hintingu až po finální volání `RenderToImage`, je pokryt každý krok. + +S těmito znalostmi můžete **převést HTML na PNG**, **uložit HTML jako PNG** a **vytvořit obrázek z HTML** pro jakoukoli .NET aplikaci—ať už jde o webovou službu generující náhledy nebo desktopový nástroj archivující webové stránky. + +Dále prozkoumejte související témata jako **render HTML to image** s různými formáty (JPEG, BMP) nebo vložení PNG do PDF pomocí Aspose.PDF. Můžete také experimentovat s DPI škálováním pro vysoce rozlišené tisky nebo posílat dynamicky generované HTML do stejného pipeline. + +Máte otázky nebo netradiční případ použití? Zanechte komentář níže a šťastné renderování! + +{{< /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/czech/net/html-extensions-and-conversions/_index.md b/html/czech/net/html-extensions-and-conversions/_index.md index dc8f6f072..b85de3b66 100644 --- a/html/czech/net/html-extensions-and-conversions/_index.md +++ b/html/czech/net/html-extensions-and-conversions/_index.md @@ -61,6 +61,8 @@ Naučte se, jak převést HTML na Markdown v .NET pomocí Aspose.HTML pro efekti Převeďte HTML na MHTML v .NET pomocí Aspose.HTML – podrobný průvodce pro efektivní archivaci webového obsahu. Naučte se používat Aspose.HTML pro .NET k vytváření MHTML archivů. ### [Převeďte HTML na PNG v .NET pomocí Aspose.HTML](./convert-html-to-png/) Objevte, jak používat Aspose.HTML pro .NET k manipulaci a převodu HTML dokumentů. Podrobný průvodce pro efektivní vývoj .NET. +### [Převod HTML na PNG v C# – Vykreslení HTML jako obrázek](./convert-html-to-png-in-c-render-html-as-image/) +Naučte se převést HTML na PNG v C# pomocí Aspose.HTML – podrobný průvodce s ukázkami kódu. ### [Převeďte HTML na TIFF v .NET pomocí Aspose.HTML](./convert-html-to-tiff/) Naučte se převádět HTML na TIFF pomocí Aspose.HTML pro .NET. Postupujte podle našeho podrobného průvodce pro efektivní optimalizaci webového obsahu. ### [Převeďte HTML na XPS v .NET pomocí Aspose.HTML](./convert-html-to-xps/) @@ -71,8 +73,12 @@ Naučte se, jak pomocí Aspose.HTML pro .NET zabalit HTML soubor do ZIP archivu Naučte se vytvořit HTML dokument se stylovaným textem a převést jej do PDF pomocí Aspose.HTML pro .NET. ### [Uložte HTML jako ZIP – Kompletní C# tutoriál](./save-html-as-zip-complete-c-tutorial/) Naučte se, jak uložit HTML soubor jako ZIP archiv pomocí Aspose.HTML pro .NET v kompletním C# tutoriálu. +### [Uložte webovou stránku jako ZIP – Kompletní C# tutoriál](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +Naučte se, jak uložit webovou stránku jako ZIP archiv pomocí Aspose.HTML pro .NET v kompletním C# tutoriálu. ### [Uložte HTML do ZIP v C# – Kompletní příklad v paměti](./save-html-to-zip-in-c-complete-in-memory-example/) Naučte se, jak uložit HTML soubor do ZIP archivu v paměti pomocí Aspose.HTML pro .NET v C#. +### [Uložte HTML jako ZIP s vlastním manipulátorem zdrojů – krok za krokem](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +Naučte se, jak pomocí Aspose.HTML pro .NET uložit HTML soubor jako ZIP archiv s vlastním manipulátorem zdrojů v C#. ## Závěr diff --git a/html/czech/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/czech/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..ef02a872d --- /dev/null +++ b/html/czech/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-04-19 +description: Převod HTML na PNG v C# pomocí Aspose.HTML – rychlý průvodce, jak vykreslit + HTML jako obrázek a uložit graf jako PNG s vyhlazováním. +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: cs +og_description: Rychle převádějte HTML na PNG v C#. Naučte se, jak renderovat HTML + jako obrázek, uložit graf jako PNG a generovat PNG z HTML pomocí Aspose.HTML. +og_title: Převést HTML na PNG v C# – Vykreslit HTML jako obrázek +tags: +- Aspose.HTML +- C# +- Image Processing +title: Převod HTML na PNG v C# – Vykreslení HTML jako obrázku +url: /cs/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Převod HTML na PNG v C# – Vykreslení HTML jako obrázku + +Už jste někdy potřebovali **převést HTML na PNG** v C#, ale nebyli jste si jisti, která knihovna vám poskytne ostrý výsledek? Nejste v tom sami. Ať už exportujete dynamický graf, převádíte e‑mailovou šablonu na miniaturu, nebo jen potřebujete statický snímek webové stránky, schopnost **vykreslit HTML jako obrázek** je užitečný trik v každé vývojářské sadě nástrojů. + +V tomto tutoriálu projdeme celý proces převodu HTML souboru na PNG soubor pomocí Aspose.HTML. Na konci budete schopni **uložit graf jako PNG**, **generovat PNG z HTML** a dokonce doladit nastavení anti‑aliasingu pro dokonalý vzhled. Žádné zbytečnosti – jen kompletní, spustitelný příklad, který můžete dnes vložit do svého projektu. + +## Co budete potřebovat + +Než se ponoříme dál, ujistěte se, že máte následující: + +- **.NET 6.0** nebo novější (kód funguje také na .NET Framework 4.6+). +- **Aspose.HTML for .NET** – můžete jej získat z NuGet pomocí `Install-Package Aspose.HTML`. +- Jednoduchý HTML soubor (např. `chart.html`), který obsahuje značky, **které chcete zachytit**. +- IDE podle vašeho výběru – Visual Studio, Rider nebo i VS Code budou stačit. + +A to je vše. Žádné další závislosti, žádné headless prohlížeče, jen jedna dobře zdokumentovaná knihovna. + +![Convert HTML to PNG example](example.png "Convert HTML to PNG output") + +## Krok 1: Načtení HTML dokumentu + +První věc, kterou musíme udělat, je nasměrovat Aspose.HTML na zdrojový soubor. Třídu `HTMLDocument` si představte jako plátno, které drží vše, co knihovna později namaluje na bitmapu. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*Proč je to důležité:* Načtení dokumentu odděluje fázi parsování od fáze vykreslování. Dává enginu šanci vyřešit CSS, skripty a obrázky, než ho požádáme o vytvoření PNG. Pokud tento krok přeskočíte a pokusíte se vykreslit **surovou značku**, skončíte s **prázdným obrázkem** nebo **chybějícími styly**. + +## Krok 2: Nastavení možností vykreslování obrázku + +Z krabice vám Aspose.HTML poskytne slušné PNG, ale často chcete hladší hrany – zejména u grafů a vektorové grafiky. Zde přichází na řadu `ImageRenderingOptions`. + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*Tip pro profesionály:* Pokud pracujete s displeji s vysokým DPI, zvyšte `Width` a `Height` úměrně a nechte PNG být větší. Později jej můžete zmenšit v editoru obrázků. Také nastavení barvy pozadí zabraňuje tomu, aby transparentní PNG vypadaly divně na tmavých stránkách. + +## Krok 3: Vykreslení HTML do PNG souboru + +Nyní se provádí těžká část. Metoda `RenderToImage` přijímá výstupní cestu a možnosti, které jsme právě definovali, a zapíše PNG na disk. + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +Až tento řádek dokončí, najdete `chart.png` v cílové složce. Otevřete jej – vypadá graf ostře? Pokud jste zapnuli anti‑aliasing, měly by být čáry hladké a text ostrý. + +### Ověření výsledku + +Můžete rychle ověřit obrázek programově: + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +Pokud konzole vypíše nenulové rozměry a podporovaný pixelový formát (např. `Format32bppArgb`), úspěšně jste **převáděli html na png**. + +## Vykreslení HTML jako obrázku – Pokročilé možnosti + +Dosud jsme probrali základy, ale reálné scénáře často vyžadují větší kontrolu. Níže najdete několik běžných úprav, které můžete potřebovat. + +### Úprava DPI pro výstup v tiskové kvalitě + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +Vyšší DPI je skvělé, když plánujete vložit PNG do PDF nebo jej vytisknout na papír. + +### Zpracování externích zdrojů + +Pokud váš HTML odkazuje na externí CSS, fonty nebo obrázky hostované na webovém serveru, ujistěte se, že běhové prostředí k nim má přístup. Můžete nastavit vlastní `BaseUrl`: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +Tím říkáte Aspose.HTML, aby relativní URL řešil vůči zadanému základnímu URL. + +### Převod více stránek + +Aspose.HTML dokáže vykreslit každou stránku vícestránkového HTML dokumentu do samostatných PNG souborů: + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +Tak můžete **uložit graf jako PNG** pro každou stránku, aniž byste museli ručně ořezávat výstup. + +## Uložení grafu jako PNG – Běžné úskalí a jak se jim vyhnout + +1. **Chybějící fonty:** Pokud HTML používá vlastní font, který není nainstalován na serveru, vykreslené PNG se vrátí k výchozímu fontu. Nainstalujte font na stroj nebo jej vložte pomocí `@font-face` ve vašem CSS. +2. **Velké soubory:** Vykreslení obrovského HTML souboru může spotřebovat hodně paměti. Zvažte rozdělení obsahu na stránky nebo zmenšení rozměrů obrázku. +3. **Transparentní pozadí:** Ve výchozím nastavení mohou být PNG transparentní. Pokud potřebujete neprůhledné pozadí (např. pro miniatury e‑mailů), nastavte `BackgroundColor` jak bylo ukázáno dříve. +4. **Spouštění skriptů:** Aspose.HTML nespouští JavaScript. Pokud je váš graf vytvořen pomocí knihovny na straně klienta, jako je Chart.js, budete muset předem vykreslit graf do statického `` elementu nebo použít headless prohlížeč. + +## Kompletní funkční příklad + +Níže je kompletní program, který můžete zkopírovat a vložit do konzolové aplikace. Obsahuje všechny kroky, ošetření chyb a volitelné úpravy, o kterých jsme mluvili výše. + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +Spusťte program a uvidíte potvrzovací zprávu následovanou rozměry obrázku. Otevřete `chart.png` v libovolném prohlížeči a ověřte, že graf vypadá přesně jako originální HTML. + +## Závěr + +Nyní máte solidní, + +{{< /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/czech/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/czech/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..46398d0c7 --- /dev/null +++ b/html/czech/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-04-19 +description: Naučte se, jak uložit HTML jako ZIP pomocí Aspose.Html a vlastního manipulátoru + zdrojů. Také zjistěte, jak převést URL na ZIP a stáhnout HTML jako ZIP během několika + minut. +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: cs +og_description: 'Uložení HTML jako ZIP je snadné: použijte Aspose.Html, vlastní manipulátor + zdrojů a ZipSaveOptions k převodu jakékoli URL na stažitelný ZIP archiv.' +og_title: Uložení HTML jako ZIP s vlastním obslužným programem zdrojů – rychlý tutoriál +tags: +- Aspose.Html +- C# +- Web scraping +title: Uložte HTML jako ZIP s vlastním správcem zdrojů – krok za krokem +url: /cs/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# uložit html jako zip – Kompletní tutoriál + +Už jste někdy potřebovali **save html as zip**, abyste mohli odeslat celou stránku s jejími obrázky, CSS a skripty v jednom úhledném balíčku? Možná budujete crawler, který archivuje články, nebo prostě chcete rychlé tlačítko „download html as zip“ pro své uživatele. V každém případě se pravděpodobně ptáte, jak to udělat bez psaní milionu řádků kódu pro práci se soubory. + +Mám pro vás dobré zprávy: Aspose.Html dělá práci hračkou a s **custom resource handler** můžete přesně určit, kam každý stream zdroje půjde. V tomto průvodci vám také ukážeme, jak **convert url to zip**, jak **download html as zip**, a jak **save webpage resources** pro offline použití — vše v jednom samostatném C# programu. + +## Co se naučíte + +- Nainstalujte knihovnu Aspose.Html (NuGet to usnadňuje). +- Napište `ResourceHandler`, který poskytuje `Stream` pro každý zdroj, který Aspose.Html chce zapsat. +- Načtěte vzdálenou stránku (nebo lokální soubor) a řekněte Aspose.Html, aby vše zabalil do ZIP archivu. +- Ověřte, že výsledný `output.zip` obsahuje HTML soubor plus všechny propojené zdroje. + +Žádné externí nástroje, žádné ruční manipulace se zip soubory — jen čistý, zkompilovaný kód, který můžete vložit do libovolného .NET projektu. + +## Požadavky + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6.0 or later (the code also works on .NET Framework 4.7+) | Aspose.Html cílí na moderní runtime; starší frameworky mohou postrádat některé API. | +| Visual Studio 2022 (or any IDE you like) | Užitečné pro ladění a prohlížení vygenerovaného ZIP. | +| Internet access for the sample URL (`https://example.com`) | Načteme živou stránku pro demonstraci **convert url to zip**. | +| NuGet package `Aspose.Html` (v23.12 or newer) | Tato knihovna poskytuje `HTMLDocument`, `ZipSaveOptions` a základní třídu `ResourceHandler`. | + +Pokud už máte .NET projekt, stačí spustit: + +```bash +dotnet add package Aspose.Html +``` + +To je vše, co potřebujete nastavit. + +## Krok 1: Vytvořte vlastní Resource Handler + +Jádrem řešení je třída, která dědí z `ResourceHandler`. Aspose.Html volá `HandleResource` pro každý soubor, který chce zapsat — HTML, obrázky, CSS, JavaScript, co jen chcete. Vrácením `Stream` určíte, kam data budou uložena. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**Proč vlastní handler?** +Protože starší rozhraní `IOutputStorage` je zastaralé a `ResourceHandler` vám dává plnou kontrolu nad cílem výstupu. Také vám umožňuje prozkoumat `ResourceInfo` — užitečné, pokud chcete například zachovat jen obrázky a přeskočit fonty. + +## Krok 2: Načtěte HTML dokument (nebo Convert URL to Zip) + +Aspose.Html může načíst z URL, cesty k souboru nebo z řetězce HTML. Zde ukazujeme načtení živé stránky, což je typický případ, když chcete **download html as zip**. + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +Pokud už máte HTML zdroj v proměnné, stačí jej předat konstruktoru: + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## Krok 3: Připojte handler k ZipSaveOptions + +`ZipSaveOptions` říká Aspose.Html *jak* vytvořit ZIP soubor. Klíčová vlastnost je `OutputStorage`, kterou nastavíme na naši instanci `MyHandler`. + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +Můžete také upravit úroveň komprese, názvy složek uvnitř archivu nebo dokonce vložit manifest soubor — podrobnosti jsou v dokumentaci Aspose, ale výchozí nastavení funguje dobře pro většinu scénářů. + +## Krok 4: Uložte dokument jako ZIP archiv + +Nyní se děje magie. Metoda `Save` prochází každý zdroj, volá `HandleResource` a zapisuje bajty do vráceného streamu. Protože náš handler vrací čerstvý `MemoryStream` pokaždé, Aspose.Html později shromáždí všechny tyto streamy a zabalí je do `output.zip`. + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**Co uvidíte:** +- `output.zip` v kořenovém adresáři vašeho projektu. +- Uvnitř ZIP: `index.html` (hlavní stránka) plus podsložky jako `images/`, `css/`, `scripts/` obsahující přesně soubory, které by prohlížeč požadoval. + +## Krok 5: Ověřte výsledek (volitelné, ale doporučené) + +Rychlá kontrola zajistí, že jste opravdu **save webpage resources** provedli správně. + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +Měli byste vidět položky pro `index.html`, všechny propojené obrázky (`logo.png`), CSS soubory a JavaScript soubory. Pokud něco chybí, zkontrolujte logiku `ResourceInfo` v `MyHandler`. + +## Kompletní funkční příklad + +Spojením všeho dohromady, zde je kompletní program, který můžete zkopírovat a vložit do konzolové aplikace. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Spusťte program (`dotnet run`) a získáte úhledný `output.zip`. Otevřete jej v libovolném správci archivů a můžete procházet uloženou stránku offline — přesně to, co potřebujete pro funkci **download html as zip**. + +## Časté otázky a okrajové případy + +| Question | Answer | +|----------|--------| +| *Co když potřebuji uložit ZIP v Azure Blob Storage?* | Nahraďte `MemoryStream` streamem, který zapisuje přímo do blobu (např. `CloudBlockBlob.OpenWrite()`). Abstrakce handleru to dělá triviálním. | +| *Mohu filtrovat některé zdroje?* | Ano. V `HandleResource` prozkoumejte `info.ResourceType` nebo `info.Url`. Vraťte `null` pro přeskočení zdroje, nebo vraťte stream, který nic nezapisuje. | +| *Je ZIP chráněn heslem?* | `ZipSaveOptions` má vlastnost `Password`. Nastavte ji před voláním `Save`, pokud potřebujete šifrování. | +| *Co s velkými stránkami s desítkami megabajtů zdrojů?* | Používání `MemoryStream` pro vše může vyčerpat RAM. Přepněte na `FileStream`, který zapisuje do dočasné složky, a nechte Aspose.Html tyto soubory zkomprimovat. | +| *Funguje to na .NET Core na Linuxu?* | Rozhodně. Aspose.Html je multiplatformní; jen zajistěte, aby runtime měl oprávnění zapisovat soubory. | + +## Pro tipy + +- **Pro tip:** Pokud vás zajímají jen HTML a obrázky, zkontrolujte `info.ResourceType == ResourceType.Image` a přeskočte skripty nebo fonty, aby byl ZIP malý. +- **Pozor na:** některé stránky blokují automatické požadavky. Nastavte vlastní `User-Agent` pomocí `HtmlLoadOptions`, pokud dostanete chybu 403. +- **Tip:** Po vytvoření ZIP můžete soubor přímo servírovat z ASP.NET controlleru pomocí `FileResult`, čímž uživatelům poskytnete jedním kliknutím tlačítko **download html as zip**. + +## Závěr + +Nyní máte robustní, připravený pro produkci způsob, jak **save html as zip** pomocí Aspose.Html a **custom resource handler**. Načtením libovolné URL, nastavením `ZipSaveOptions` a nechat handler poskytovat streamy, můžete **convert url to zip**, **download html as zip** a **save webpage resources** pomocí jen několika řádků C#. + +Neváhejte experimentovat — ukládejte streamy na disk, do cloudového úložiště nebo dokonce do databáze. Vzor zůstává stejný a výsledek je vždy úhledný archiv, který můžete distribuovat, kešovat nebo archivovat navždy. + +--- + +![Diagram znázorňující workflow uložení html jako zip – od načtení URL po vytvoření ZIP souboru](/images/save-html-as-zip.png) + +*Text alternativy obrázku:* **diagram workflow uložení html jako zip** + +Pokud se vám tento tutoriál líbil, zanechte komentář, sdílejte ho s kolegou nebo dejte hvězdičku repozitáři, kde uchováváte své utility skripty. Šťastné kódování! + +{{< /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/czech/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/czech/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..e9a8b73cd --- /dev/null +++ b/html/czech/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-04-19 +description: Uložte webovou stránku jako zip pomocí Aspose.HTML v C#. Naučte se, jak + převést URL na zip, exportovat HTML do zipu a stáhnout webovou stránku jako zip + pomocí jednoduchého příkladu kódu. +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: cs +og_description: Uložte webovou stránku jako zip pomocí Aspose.HTML v C#. Tento průvodce + ukazuje, jak převést URL na zip, exportovat HTML do zipu a stáhnout webovou stránku + jako zip během několika kroků. +og_title: Uložte webovou stránku jako ZIP s Aspose.HTML – kompletní C# tutoriál +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: Uložte webovou stránku jako ZIP pomocí Aspose.HTML – Kompletní C# tutoriál +url: /cs/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Uložení webové stránky jako ZIP pomocí Aspose.HTML – Kompletní tutoriál v C# + +Potřebujete **uložit webovou stránku jako zip** pro offline archivaci, automatizované testování nebo jen pro odeslání snímku webu? Nejste sami. V tomto tutoriálu si projdeme, jak **převést URL na zip**, **exportovat HTML do zipu** a dokonce **stáhnout webovou stránku jako zip** pomocí několika čistých řádků C#. + +Probereme vše od nastavení projektu až po finální soubor ZIP na disku a přidáme několik praktických tipů, které nenajdete v oficiální dokumentaci. Na konci budete mít znovupoužitelný řešení, které může **vytvořit zip z html**, kdykoli to budete potřebovat. + +## Co budete potřebovat + +- **.NET 6.0** (nebo jakákoli novější verze .NET) – Aspose.HTML funguje jak s .NET Core, tak s .NET Framework. +- **Aspose.HTML for .NET** NuGet balíček – `Install-Package Aspose.HTML`. +- Trochu zkušeností s C# – pokud umíte napsat `Console.WriteLine`, jste připraveni. +- Počítač připojený k internetu pro počáteční stažení (kód samotný funguje offline, jakmile je ZIP vytvořen). + +Žádné extra SDK, žádné headless prohlížeče, jen čistý .NET a Aspose.HTML. + +![Illustration of saving webpage as zip using Aspose.HTML](save-webpage-as-zip.png "Diagram showing save webpage as zip workflow") + +## Uložení webové stránky jako ZIP – Přehled + +Na vysoké úrovni proces sestává ze tří částí: + +1. **Vlastní `ResourceHandler`**, který říká Aspose.HTML, kam zapisovat každý externí zdroj (obrázky, CSS, skripty). +2. **`ZipSaveOptions`**, který spojuje handler se ZIP archivem a umožňuje ladit vykreslování (antialiasing, font hints atd.). +3. **Volání `HTMLDocument.Save`**, které vše spojí, streamuje stránku a všechny její zdroje do ZIP souboru. + +A to je vše. Náročnou část provádí Aspose.HTML, takže se můžete soustředit na „proč“ a „kdy“ místo boje s nízkoúrovňovými streamy. + +--- + +## Krok 1: Nastavení projektu a přidání Aspose.HTML + +Nejprve vytvořte nový konzolový projekt (nebo vložte kód do existující aplikace). Otevřete terminál a spusťte: + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +Balíček `Aspose.HTML` obsahuje všechny typy, které budeme potřebovat: `HTMLDocument`, `ZipSaveOptions`, `ImageRenderingOptions` a abstraktní `ResourceHandler`. + +> **Tip:** Pokud cílíte na .NET Framework, nahraďte příkazy `dotnet` UI NuGet Package Manageru ve Visual Studiu – stejné DLL se přidají. + +--- + +## Krok 2: Vytvoření vlastního `ZipHandler` Resource Handleru + +Aspose.HTML volá `HandleResource` pro každý externí soubor, na který narazí při parsování stránky. Přepsáním této metody můžeme nasměrovat každý zdroj do ZIP položky místo souborového systému. + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### Proč vlastní handler? + +Bez něj by Aspose.HTML uložil zdroje vedle HTML souboru na disku. Použitím `ZipArchive` udržíme **vše v balíčku** – ideální pro distribuci nebo pozdější extrakci jinou službou. + +--- + +## Krok 3: Konfigurace `ZipSaveOptions` s renderováním obrázků + +Nyní spojíme handler s možnostmi ukládání a zapneme několik úprav renderování, které zlepšují vizuální věrnost screenshotů nebo konverzí podobných PDF. + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **Proč povolit antialiasing a hinting?** Když je stránka později renderována do bitmapy (např. pro miniaturu), tyto příznaky snižují zubaté hrany a zlepšují čitelnost malých fontů – což je zvláště důležité, pokud plánujete obrázky někde vložit. + +--- + +## Krok 4: Načtení HTML dokumentu a uložení do ZIP + +S připraveným handlerem a možnostmi je načtení vzdálené stránky tak jednoduché jako předání její URL do `HTMLDocument`. Metoda `Save` zavolá `HandleResource` pro každý odkazovaný asset. + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +V tomto okamžiku `zipStream` obsahuje kompletní **ZIP archiv, který obsahuje**: + +- `index.html` (hlavní stránka) +- Všechny CSS soubory odkazované pomocí `` tagů +- Obrázky, fonty a JavaScript soubory potřebné k offline vykreslení stránky + +### Okrajové případy a varianty + +| Situace | Co upravit | +|--------------------------------------|-------------------------------------------------------------------------------| +| **Vyžaduje se autentizace** | Použijte `HTMLDocument(string url, LoadOptions options)` a nastavte `options.Credentials`. | +| **Velmi velké stránky (>100 MB)** | Zapisujte přímo do `FileStream` místo `MemoryStream`, aby se předešlo vysoké spotřebě RAM. | +| **Relativní URL začínající “//”** | Handler je automaticky normalizuje; stačí zajistit, aby byl nastaven `BaseUrl`. | +| **Vlastní struktura složek uvnitř ZIP**| Upravte `info.Path` uvnitř `HandleResource` před vytvořením položky. | + +--- + +## Krok 5: Uložení ZIP souboru a ověření výsledku + +Nakonec zapíšeme ZIP z paměti na disk. Tento krok je volitelný, pokud chcete stream poslat po síti, ale usnadňuje ověření. + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**Očekávaný výsledek:** Otevření `result.zip` zobrazí soubor `index.html`, který při otevření v prohlížeči offline vypadá identicky jako živá stránka (za předpokladu, že všechny externí zdroje byly během stažení dostupné). + +--- + +## Často kladené otázky a odpovědi + +**Q: Funguje tento přístup s stránkami, které používají lazy‑loaded obrázky?** +A: Ano, pokud jsou obrázky požadovány během počátečního průchodu DOM. Pokud skript načítá obrázky po načtení stránky, může být nutné spustit manuální „render“ voláním `document.Render()` před `Save`. + +**Q: Můžu ZIP dále komprimovat?** +A: API `ZipArchive` používá výchozí úroveň komprese. Pro agresivní kompresi jej vytvořte jako `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)`. + +**Q: Co když potřebuji ZIP chráněný heslem?** +A: Vestavěný `ZipArchive` nepodporuje šifrování. V takovém případě přesměrujte výstupní stream přes knihovnu třetí strany, např. `SharpZipLib`, po dokončení zápisu Aspose.HTML. + +## Profesionální tipy pro produkční nasazení + +- **Znovupoužijte `ZipHandler`** při zpracování více stránek najednou; stačí mezi běhy resetovat podkladový `MemoryStream`. +- **Logovat** + +{{< /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/dutch/net/generate-jpg-and-png-images/_index.md b/html/dutch/net/generate-jpg-and-png-images/_index.md index e05f0c0a7..89f001f62 100644 --- a/html/dutch/net/generate-jpg-and-png-images/_index.md +++ b/html/dutch/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Leer hoe u Aspose.HTML voor .NET kunt gebruiken om HTML-documenten te bewerken, Leer hoe u antialiasing inschakelt bij het omzetten van DOCX-bestanden naar PNG- of JPG-afbeeldingen met Aspose.HTML. ### [docx naar png converteren – zip-archief maken C#-tutorial](./convert-docx-to-png-create-zip-archive-c-tutorial/) Leer hoe u een DOCX-bestand naar PNG converteert en de resultaten in een zip-archief opslaat met C# en Aspose.HTML. +### [Hoe HTML te renderen naar PNG – Complete C#-gids](./how-to-render-html-to-png-complete-c-guide/) +Leer stap voor stap hoe u HTML naar PNG rendert met C# en Aspose.HTML. ## Conclusie diff --git a/html/dutch/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/dutch/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..7060714f9 --- /dev/null +++ b/html/dutch/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,159 @@ +--- +category: general +date: 2026-04-19 +description: Hoe HTML naar PNG te renderen met Aspose.Html. Leer hoe je HTML naar + PNG converteert, HTML opslaat als PNG en een afbeelding van HTML maakt in enkele + minuten. +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: nl +og_description: Hoe HTML naar PNG te renderen met Aspose.Html. Volg deze stapsgewijze + tutorial om HTML naar PNG te converteren, HTML als PNG op te slaan en een afbeelding + van HTML te maken. +og_title: Hoe HTML naar PNG renderen – Complete C#-gids +tags: +- Aspose.Html +- C# +title: Hoe HTML naar PNG te renderen – Complete C#‑gids +url: /nl/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe HTML naar PNG renderen – Complete C# Gids + +Heb je je ooit afgevraagd **hoe je HTML** naar een afbeeldingsbestand kunt renderen zonder een browser te starten? Je bent niet de enige. In veel projecten—e‑mailminiaturen, PDF‑generatie, of gewoon snelle previews—moet je **HTML naar PNG** on‑the‑fly converteren. + +In deze tutorial lopen we stap voor stap door een praktische oplossing met Aspose.Html voor .NET, van het installeren van de bibliotheek tot het verfijnen van tekst‑hinting voor scherpe kleine lettertypen. Aan het einde kun je **HTML opslaan als PNG**, **een afbeelding maken van HTML**, en zelfs renderopties aanpassen voor rand‑geval scenario’s. + +## Wat je nodig hebt + +- **.NET 6+** (of .NET Framework 4.6.2+). De API werkt hetzelfde op alle runtimes. +- **Aspose.Html** NuGet‑pakket – `Install-Package Aspose.Html`. +- Een eenvoudig HTML‑bestand (bijv. `article.html`) dat je wilt omzetten naar een afbeelding. +- Visual Studio, Rider, of een andere editor naar keuze. + +Dat is alles—geen extra afhankelijkheden, geen headless Chrome, gewoon pure C#. + +## Stap 1: Installeer Aspose.Html en voeg namespaces toe + +Eerst haal je de bibliotheek op via NuGet. Open de Package Manager Console en voer uit: + +```powershell +Install-Package Aspose.Html +``` + +Na de installatie voeg je de benodigde `using`‑directieven toe bovenaan je bestand: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +Deze namespaces geven je toegang tot het documentmodel, afbeeldingsrendering en de fijnmazige tekstopties die we later nodig hebben. + +> **Pro tip:** Als je een .csproj‑bestand gebruikt, kun je ook handmatig `` toevoegen. + +## Stap 2: Laad het HTML‑document + +Je hebt een `HTMLDocument`‑instantie nodig die naar het bronbestand wijst. Aspose.Html kan lezen vanaf een pad, een stream of zelfs een URL. + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Waarom dit belangrijk is:** Het document één keer laden houdt het geheugenverbruik laag. Als je veel pagina’s wilt renderen, hergebruik dan waar mogelijk hetzelfde `HTMLDocument`‑object. + +## Stap 3: Pas tekstweergave aan voor kleine lettertypen + +Bij het renderen van zeer kleine tekst krijg je vaak wazige randen. Hinting inschakelen vertelt de rasterizer om glyphs op pixelgrenzen uit te lijnen, wat de leesbaarheid drastisch verbetert. + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +Je kunt ook anti‑aliasing, subpixel‑rendering of zelfs een aangepaste fontcollectie hier regelen—handig als je HTML webfonts gebruikt. + +## Stap 4: Configureer afbeeldingsrenderopties + +Nu koppelen we de `TextOptions` aan de afbeeldingsinstellingen. Je kunt ook achtergrondkleur, DPI of afbeeldingsformaat (PNG, JPEG, BMP) instellen. + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **Randgeval:** Als je HTML breder is dan typische schermafmetingen, overweeg dan `Width` en `Height` op `ImageRenderingOptions` in te stellen om gigantische PNG‑bestanden te voorkomen. + +## Stap 5: Render de HTML naar een PNG‑bestand + +Tot slot roepen we `RenderToImage` aan. De overload die we gebruiken laat ons het uitvoerpad en de opties die we zojuist hebben opgebouwd specificeren. + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +Wanneer je het programma uitvoert, parseert Aspose.Html de markup, past CSS toe, legt de pagina uit en rastert deze naar `article.png`. Open het bestand met een willekeurige afbeeldingsviewer—je zou een pixel‑perfecte snapshot van je originele HTML moeten zien. + +![how to render html as PNG using Aspose.Html](render-html-png.png) + +*Afbeeldingsalt‑tekst: **hoe HTML** als PNG met Aspose.Html* + +## Bonus: Meerdere pagina's verwerken of schalen + +Soms bevat één HTML‑bestand meerdere ``‑secties (bijv. voor afdrukken). Je kunt door `htmlDoc.Pages` itereren en elke pagina afzonderlijk renderen: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +Als je een thumbnail in plaats van een volledige afbeelding nodig hebt, pas dan `imgOpts.Width` en `imgOpts.Height` aan vóór het renderen. De bibliotheek behoudt automatisch de beeldverhouding. + +--- + +## Conclusie + +Je hebt nu een solide, productie‑klare werkwijze voor **hoe je HTML** kunt renderen naar een PNG‑afbeelding met Aspose.Html. Van het installeren van het pakket, het laden van je markup, het fijn afstellen van tekst‑hinting, tot het uiteindelijk aanroepen van `RenderToImage`, elke stap is behandeld. + +Met deze kennis kun je **HTML naar PNG converteren**, **HTML opslaan als PNG**, en **een afbeelding maken van HTML** voor elke .NET‑applicatie—of het nu een webservice is die thumbnails genereert of een desktop‑tool die webpagina’s archiveert. + +Verken daarna gerelateerde onderwerpen zoals **HTML renderen naar afbeelding** in andere formaten (JPEG, BMP) of het embedden van de PNG in een PDF met Aspose.PDF. Je kunt ook experimenteren met DPI‑schaling voor hoge‑resolutie‑afdrukken, of dynamisch gegenereerde HTML in dezelfde pipeline voeren. + +Heb je vragen of een eigen gekke use‑case? Laat een reactie achter hieronder, en happy rendering! + +{{< /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/dutch/net/html-extensions-and-conversions/_index.md b/html/dutch/net/html-extensions-and-conversions/_index.md index fd924a78c..26b9f9669 100644 --- a/html/dutch/net/html-extensions-and-conversions/_index.md +++ b/html/dutch/net/html-extensions-and-conversions/_index.md @@ -59,12 +59,21 @@ Leer hoe u HTML naar Markdown converteert in .NET met Aspose.HTML voor efficiën Converteer HTML naar MHTML in .NET met Aspose.HTML - Een stapsgewijze handleiding voor efficiënte archivering van webinhoud. Leer hoe u Aspose.HTML voor .NET gebruikt om MHTML-archieven te maken. ### [Converteer HTML naar PNG in .NET met Aspose.HTML](./convert-html-to-png/) Ontdek hoe u Aspose.HTML voor .NET kunt gebruiken om HTML-documenten te manipuleren en converteren. Stapsgewijze handleiding voor effectieve .NET-ontwikkeling. +### [HTML naar PNG converteren in C# – HTML renderen als afbeelding](./convert-html-to-png-in-c-render-html-as-image/) +Leer hoe u HTML naar PNG rendert in C# met Aspose.HTML. Stapsgewijze handleiding met codevoorbeelden. ### [Converteer HTML naar TIFF in .NET met Aspose.HTML](./convert-html-to-tiff/) Leer hoe u HTML naar TIFF converteert met Aspose.HTML voor .NET. Volg onze stapsgewijze handleiding voor efficiënte optimalisatie van webinhoud. ### [Converteer HTML naar XPS in .NET met Aspose.HTML](./convert-html-to-xps/) Ontdek de kracht van Aspose.HTML voor .NET: Converteer HTML moeiteloos naar XPS. Vereisten, stapsgewijze handleiding en veelgestelde vragen inbegrepen. ### [HTML zippen in C# – HTML opslaan in zip](./how-to-zip-html-in-c-save-html-to-zip/) -Leer hoe u HTML-bestanden comprimeert naar een zip‑archief met C# en Aspose.HTML voor .NET. +### [HTML opslaan als ZIP – Complete C#-tutorial](./save-html-as-zip-complete-c-tutorial/) +### [Webpagina opslaan als ZIP met Aspose.HTML – Complete C#‑tutorial](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +### [HTML opslaan naar ZIP in C# – Volledig In‑Memory voorbeeld](./save-html-to-zip-in-c-complete-in-memory-example/) +Leer hoe u HTML-inhoud in het geheugen comprimeert en opslaat als ZIP-bestand met Aspose.HTML voor .NET in C#. + +### [HTML opslaan als zip met een aangepaste resourcehandler – stapsgewijze gids](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +Leer hoe u HTML opslaat als zip‑bestand met een aangepaste resourcehandler in een stapsgewijze C#‑handleiding. + ### [Maak HTML-document met opgemaakte tekst en exporteer naar PDF – Volledige gids](./create-html-document-with-styled-text-and-export-to-pdf-full/) Leer hoe u een HTML-document met opgemaakte tekst maakt en deze volledig naar PDF exporteert met Aspose.HTML voor .NET. ### [Maak PDF van HTML – C# Stapsgewijze handleiding](./create-pdf-from-html-c-step-by-step-guide/) diff --git a/html/dutch/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/dutch/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..f1acb75c8 --- /dev/null +++ b/html/dutch/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-04-19 +description: HTML naar PNG converteren in C# met Aspose.HTML – een snelle gids om + HTML als afbeelding te renderen en een grafiek op te slaan als PNG met anti‑aliasing. +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: nl +og_description: Converteer HTML snel naar PNG in C#. Leer hoe je HTML als afbeelding + rendert, een diagram opslaat als PNG en PNG genereert vanuit HTML met Aspose.HTML. +og_title: HTML converteren naar PNG in C# – HTML als afbeelding renderen +tags: +- Aspose.HTML +- C# +- Image Processing +title: HTML converteren naar PNG in C# – HTML renderen als afbeelding +url: /nl/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML naar PNG converteren in C# – HTML renderen als afbeelding + +Heb je ooit **HTML naar PNG moeten converteren** in C# en wist je niet welke bibliotheek een scherp resultaat levert? Je bent niet de enige. Of je nu een dynamische grafiek exporteert, een e‑mailtemplate omzet naar een thumbnail, of gewoon een statisch momentopname van een webpagina nodig hebt, de mogelijkheid om **HTML als afbeelding te renderen** is een handige truc in de gereedschapskist van elke ontwikkelaar. + +In deze tutorial lopen we stap voor stap het volledige proces door om een HTML‑bestand om te zetten naar een PNG‑bestand met Aspose.HTML. Aan het einde kun je **grafiek opslaan als PNG**, **PNG genereren vanuit HTML**, en zelfs anti‑aliasing‑instellingen aanpassen voor dat gepolijste uiterlijk. Geen poespas—alleen een compleet, uitvoerbaar voorbeeld dat je vandaag nog in je project kunt gebruiken. + +## Wat je nodig hebt + +Voordat we beginnen, zorg dat je het volgende hebt: + +- **.NET 6.0** of later (de code werkt ook op .NET Framework 4.6+). +- **Aspose.HTML for .NET** – haal het op via NuGet met `Install-Package Aspose.HTML`. +- Een simpel HTML‑bestand (bijv. `chart.html`) dat de markup bevat die je wilt vastleggen. +- Een IDE naar keuze—Visual Studio, Rider, of zelfs VS Code volstaat. + +Dat is alles. Geen extra afhankelijkheden, geen headless browsers, alleen één goed gedocumenteerde bibliotheek. + +![Voorbeeld van HTML naar PNG converteren](example.png "Uitvoer van HTML naar PNG converteren") + +## Stap 1: Het HTML‑document laden + +Het eerste wat we moeten doen is Aspose.HTML wijzen op het bronbestand. Beschouw de `HTMLDocument`‑klasse als het canvas dat alles bevat wat de bibliotheek later op een bitmap zal schilderen. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*Waarom dit belangrijk is:* Het laden van het document scheidt de parse‑fase van de render‑fase. Het geeft de engine de kans om CSS, scripts en afbeeldingen op te lossen voordat we vragen om een PNG te produceren. Als je deze stap overslaat en probeert ruwe markup te renderen, krijg je een lege afbeelding of ontbrekende stijlen. + +## Stap 2: Afbeeldingsrenderopties configureren + +Out‑of‑the‑box levert Aspose.HTML een degelijke PNG, maar je wilt vaak gladdere randen—vooral bij grafieken en vectorafbeeldingen. Daar komt `ImageRenderingOptions` om de hoek kijken. + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*Pro tip:* Als je werkt met high‑DPI‑schermen, verhoog `Width` en `Height` evenredig en laat de PNG groter zijn. Je kunt later altijd verkleinen met een beeldeditor. Het instellen van een achtergrondkleur voorkomt dat transparante PNG’s er vreemd uitzien op donkere pagina’s. + +## Stap 3: De HTML renderen naar een PNG‑bestand + +Nu gebeurt het zware werk. De `RenderToImage`‑methode neemt het uitvoerpad en de opties die we zojuist hebben gedefinieerd, en schrijft een PNG naar schijf. + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +Wanneer deze regel is voltooid, vind je `chart.png` in de doelmap. Open het—ziet de grafiek scherp uit? Als je anti‑aliasing hebt ingeschakeld, zouden de lijnen vloeiend moeten zijn en moet alle tekst scherp zijn. + +### Resultaat verifiëren + +Je kunt de afbeelding snel programmatically verifiëren: + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +Als de console niet‑nul afmetingen en een ondersteund pixel‑formaat (bijv. `Format32bppArgb`) afdrukt, heb je succesvol **html naar png geconverteerd**. + +## HTML renderen als afbeelding – Geavanceerde opties + +Tot nu toe hebben we de basis behandeld, maar real‑world scenario’s vragen vaak om meer controle. Hieronder een paar veelvoorkomende aanpassingen die je misschien nodig hebt. + +### DPI aanpassen voor afdrukkwaliteit + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +Een hogere DPI is ideaal wanneer je de PNG in een PDF wilt embedden of op papier wilt afdrukken. + +### Externe bronnen verwerken + +Als je HTML verwijst naar externe CSS, lettertypen of afbeeldingen die op een webserver staan, zorg dan dat de runtime ze kan bereiken. Je kunt een aangepaste `BaseUrl` instellen: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +Dit vertelt Aspose.HTML om relatieve URL’s op te lossen ten opzichte van de opgegeven basis‑URL. + +### Meerdere pagina’s converteren + +Aspose.HTML kan elke pagina van een meer‑pagina HTML‑document renderen naar afzonderlijke PNG‑bestanden: + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +Zo kun je **grafiek opslaan als PNG** voor elke pagina zonder handmatig de output te knippen. + +## Grafiek opslaan als PNG – Veelvoorkomende valkuilen & hoe ze te vermijden + +1. **Ontbrekende lettertypen:** Als de HTML een aangepast lettertype gebruikt dat niet op de server is geïnstalleerd, valt de gerenderde PNG terug op een standaard lettertype. Installeer het lettertype op de machine of embed het via `@font-face` in je CSS. +2. **Grote bestanden:** Het renderen van een enorm HTML‑bestand kan veel geheugen verbruiken. Overweeg de inhoud te pagineren of de afbeeldingsafmetingen te verkleinen. +3. **Transparante achtergronden:** Standaard kunnen PNG’s transparant zijn. Als je een ondoorzichtige achtergrond nodig hebt (bijv. voor e‑mail‑thumbnails), stel `BackgroundColor` in zoals eerder getoond. +4. **Scriptuitvoering:** Aspose.HTML voert geen JavaScript uit. Als je grafiek is opgebouwd met een client‑side bibliotheek zoals Chart.js, moet je de grafiek vooraf renderen naar een statisch ``‑element of een headless browser gebruiken. + +## Volledig werkend voorbeeld + +Hieronder staat het complete programma dat je kunt kopiëren‑plakken in een console‑applicatie. Het bevat alle stappen, foutafhandeling en optionele tweaks die hierboven zijn besproken. + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +Voer het programma uit, en je ziet een bevestigingsbericht gevolgd door de afbeeldingsafmetingen. Open `chart.png` in een viewer om te bevestigen dat de grafiek er precies uitziet als de oorspronkelijke HTML. + +## Conclusie + +Je hebt nu een solide, + +{{< /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/dutch/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/dutch/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..f17cd6b28 --- /dev/null +++ b/html/dutch/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-04-19 +description: Leer hoe je HTML als zip kunt opslaan met Aspose.Html en een aangepaste + resource‑handler. Ontdek ook hoe je een URL naar zip kunt converteren en HTML als + zip kunt downloaden in enkele minuten. +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: nl +og_description: 'HTML opslaan als zip eenvoudig gemaakt: gebruik Aspose.Html, een + aangepaste resourcehandler en ZipSaveOptions om elke URL om te zetten naar een downloadbaar + zip‑archief.' +og_title: HTML opslaan als zip met een aangepaste resourcehandler – snelle tutorial +tags: +- Aspose.Html +- C# +- Web scraping +title: HTML opslaan als zip met een aangepaste resourcehandler – stap‑voor‑stap gids +url: /nl/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# html opslaan als zip – Volledige tutorial + +Heb je ooit **save html as zip** nodig gehad zodat je een hele pagina met zijn afbeeldingen, CSS en scripts in één net pakket kunt verzenden? Misschien bouw je een crawler die artikelen archiveert, of wil je gewoon een snelle “download html as zip” knop voor je gebruikers. Hoe dan ook, je vraagt je waarschijnlijk af hoe je dit kunt doen zonder een miljoen regels file‑IO code te schrijven. + +Hier is het goede nieuws: Aspose.Html maakt het werk een fluitje van een cent, en met een **custom resource handler** kun je precies bepalen waar elke resource‑stream naartoe gaat. In deze gids laten we je ook zien hoe je **convert url to zip** kunt doen, hoe je **download html as zip** kunt uitvoeren, en hoe je **save webpage resources** kunt opslaan voor offline gebruik — allemaal in één enkel, zelfstandig C#‑programma. + +## Wat je zult leren + +- Installeer de Aspose.Html bibliotheek (NuGet maakt het moeiteloos). +- Schrijf een `ResourceHandler` die een `Stream` levert voor elke resource die Aspose.Html wil schrijven. +- Laad een externe pagina (of een lokaal bestand) en laat Aspose.Html alles in een ZIP‑archief verpakken. +- Controleer of de resulterende `output.zip` het HTML‑bestand bevat plus alle gekoppelde assets. + +Geen externe tools, geen handmatig zip‑bestand knutselen — gewoon nette, gecompileerde code die je in elk .NET‑project kunt plaatsen. + +## Vereisten + +| Vereiste | Waarom het belangrijk is | +|----------|--------------------------| +| .NET 6.0 of later (the code also works on .NET Framework 4.7+) | Aspose.Html richt zich op moderne runtimes; oudere frameworks kunnen sommige API's missen. | +| Visual Studio 2022 (or any IDE you like) | Handig voor debugging en het zien van de gegenereerde ZIP. | +| Internet access for the sample URL (`https://example.com`) | We halen een live pagina op om **convert url to zip** te demonstreren. | +| NuGet package `Aspose.Html` (v23.12 of newer) | Deze bibliotheek levert `HTMLDocument`, `ZipSaveOptions` en de `ResourceHandler` basis‑klasse. | + +Als je al een .NET‑project hebt, voer dan gewoon uit: + +```bash +dotnet add package Aspose.Html +``` + +## Stap 1: Maak een custom resource handler + +Het hart van de oplossing is een klasse die erft van `ResourceHandler`. Aspose.Html roept `HandleResource` aan voor elk bestand dat het wil schrijven — HTML, afbeeldingen, CSS, JavaScript, wat je maar wilt. Door een `Stream` te retourneren bepaal je waar de data terechtkomt. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**Waarom een custom handler?** +Omdat de oudere `IOutputStorage` interface verouderd is, en `ResourceHandler` je volledige controle geeft over de output‑bestemming. Het laat je ook `ResourceInfo` inspecteren — handig als je bijvoorbeeld alleen afbeeldingen wilt behouden en lettertypen wilt overslaan. + +## Stap 2: Laad het HTML‑document (of converteer URL naar Zip) + +Aspose.Html kan laden vanaf een URL, een bestandspad, of een ruwe HTML‑string. Hier demonstreren we het laden van een live pagina, wat het typische geval is wanneer je **download html as zip** wilt. + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +Als je de HTML‑bron al in een variabele hebt, geef die dan gewoon door aan de constructor: + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## Stap 3: Koppel de handler aan ZipSaveOptions + +`ZipSaveOptions` vertelt Aspose.Html *hoe* het ZIP‑bestand moet worden aangemaakt. De cruciale eigenschap is `OutputStorage`, die we instellen op onze `MyHandler`‑instantie. + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +Je kunt ook het compressieniveau, mapnamen binnen het archief, of zelfs een manifest‑bestand aanpassen — details staan in de Aspose‑documentatie, maar de standaardinstellingen werken prima voor de meeste scenario's. + +## Stap 4: Sla het document op als een ZIP‑archief + +Nu gebeurt de magie. De `Save`‑methode doorloopt elke resource, roept `HandleResource` aan en schrijft de bytes naar de geretourneerde stream. Omdat onze handler elke keer een nieuwe `MemoryStream` retourneert, zal Aspose.Html later al die streams verzamelen en ze in `output.zip` verpakken. + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**Wat je zult zien:** +- `output.zip` in de hoofdmap van je project. +- In de ZIP: `index.html` (de hoofd‑pagina) plus submappen zoals `images/`, `css/`, `scripts/` met precies de bestanden die de browser zou hebben opgevraagd. + +## Stap 5: Verifieer het resultaat (optioneel maar aanbevolen) + +Een snelle sanity‑check zorgt ervoor dat je echt **save webpage resources** correct hebt uitgevoerd. + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +Je zou entries moeten zien voor `index.html`, eventuele gekoppelde afbeeldingen (`logo.png`), CSS‑bestanden en JavaScript‑bestanden. Als er iets ontbreekt, controleer dan de `ResourceInfo`‑logica in `MyHandler` opnieuw. + +## Volledig werkend voorbeeld + +Alles bij elkaar genomen, hier is het volledige programma dat je kunt copy‑pasten in een console‑app. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Voer het programma uit (`dotnet run`), en je krijgt een nette `output.zip`. Open het met een archiefbeheerder, en je kunt de opgeslagen pagina offline bekijken — precies wat je nodig hebt voor de **download html as zip** functionaliteit. + +## Veelgestelde vragen & randgevallen + +| Vraag | Antwoord | +|-------|----------| +| *Wat als ik de ZIP moet opslaan in Azure Blob Storage?* | Vervang `MemoryStream` door een stream die direct naar een blob schrijft (bijv. `CloudBlockBlob.OpenWrite()`). De handler‑abstractie maakt dit triviaal. | +| *Kan ik bepaalde resources filteren?* | Ja. Binnen `HandleResource` inspecteer je `info.ResourceType` of `info.Url`. Retourneer `null` om een resource over te slaan, of retourneer een stream die niets schrijft. | +| *Is de ZIP met een wachtwoord beveiligd?* | `ZipSaveOptions` heeft een `Password`‑eigenschap. Stel deze in vóór het aanroepen van `Save` als je encryptie nodig hebt. | +| *Wat als het om grote pagina's met tientallen megabytes aan assets gaat?* | Het gebruik van `MemoryStream` voor alles kan het RAM-geheugen uitputten. Schakel over naar een `FileStream` die naar een tijdelijke map schrijft, en laat vervolgens Aspose.Html die bestanden comprimeren. | +| *Werkt dit op .NET Core op Linux?* | Absoluut. Aspose.Html is cross‑platform; zorg er alleen voor dat de runtime toestemming heeft om bestanden te schrijven. | + +## Pro‑tips + +- **Pro tip:** Als je alleen om de HTML en afbeeldingen geeft, controleer dan `info.ResourceType == ResourceType.Image` en sla scripts of lettertypen over om de ZIP klein te houden. +- **Let op:** sommige sites blokkeren geautomatiseerde verzoeken. Stel een aangepaste `User-Agent` in via `HtmlLoadOptions` als je een 403‑fout krijgt. +- **Tip:** Na het aanmaken van de ZIP kun je deze direct vanuit een ASP.NET‑controller serveren met `FileResult`, waardoor je gebruikers een één‑klik **download html as zip** knop krijgen. + +## Conclusie + +Je hebt nu een solide, productie‑klare manier om **save html as zip** te gebruiken met Aspose.Html en een **custom resource handler**. Door een URL te laden, `ZipSaveOptions` te configureren, en de handler streams te laten leveren, kun je **convert url to zip**, **download html as zip**, en **save webpage resources** uitvoeren met slechts een paar regels C#. + +Voel je vrij om te experimenteren — sla streams op naar schijf, cloud‑opslag, of zelfs een database. Het patroon blijft hetzelfde, en het resultaat is altijd een net archief dat je kunt verzenden, cachen of voor altijd kunt archiveren. + +--- + +![Diagram die de workflow van html opslaan als zip illustreert – van het laden van een URL tot het produceren van een ZIP‑bestand](/images/save-html-as-zip.png) + +*Afbeeldings‑alt‑tekst:* **workflow diagram voor html opslaan als zip** + +Als je deze tutorial nuttig vond, laat dan een reactie achter, deel hem met een collega, of geef ster aan de repo waar je je hulpscripts bewaart. Veel plezier met coderen! + +{{< /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/dutch/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/dutch/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..7d5af11d4 --- /dev/null +++ b/html/dutch/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,218 @@ +--- +category: general +date: 2026-04-19 +description: Sla een webpagina op als zip met Aspose.HTML in C#. Leer hoe je een URL + naar zip converteert, HTML exporteert naar zip en een webpagina downloadt als zip + met een eenvoudig codevoorbeeld. +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: nl +og_description: Sla webpagina op als zip met Aspose.HTML in C#. Deze gids laat zien + hoe je een URL naar zip converteert, HTML naar zip exporteert en een webpagina als + zip downloadt in slechts een paar stappen. +og_title: Webpagina opslaan als ZIP met Aspose.HTML – Complete C#‑handleiding +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: Webpagina opslaan als ZIP met Aspose.HTML – Complete C#-handleiding +url: /nl/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Webpagina opslaan als ZIP met Aspose.HTML – Complete C# Tutorial + +Moet je **webpagina opslaan als zip** voor offline archivering, geautomatiseerd testen, of gewoon om een momentopname van een site te leveren? Je bent niet de enige. In deze tutorial lopen we stap voor stap door hoe je **URL naar zip converteert**, **HTML naar zip exporteert**, en zelfs **webpagina downloadt als zip** met een handvol nette C#‑regels. + +We behandelen alles, van projectconfiguratie tot het uiteindelijke ZIP‑bestand op schijf, en we strooien er een paar praktische tips doorheen die je niet in de officiële documentatie vindt. Aan het einde heb je een herbruikbare oplossing die **zip van html kan maken** wanneer je dat nodig hebt. + +## Wat je nodig hebt + +- **.NET 6.0** (of een recente .NET‑versie) – Aspose.HTML werkt zowel met .NET Core als .NET Framework. +- **Aspose.HTML for .NET** NuGet‑pakket – `Install-Package Aspose.HTML`. +- Een bescheiden hoeveelheid C#‑ervaring – als je een `Console.WriteLine` kunt schrijven, ben je klaar. +- Een met internet verbonden machine voor de initiële download (de code zelf werkt offline zodra het ZIP‑bestand is aangemaakt). + +Geen extra SDK's, geen headless browsers, alleen pure .NET en Aspose.HTML. + +![Illustratie van het opslaan van een webpagina als zip met Aspose.HTML](save-webpage-as-zip.png "Diagram dat workflow voor het opslaan van een webpagina als zip toont") + +## Webpagina opslaan als ZIP – Overzicht + +Op een hoog niveau bestaat het proces uit drie onderdelen: + +1. **Een aangepaste `ResourceHandler`** die Aspose.HTML vertelt waar elke externe bron (afbeeldingen, CSS, scripts) moet worden weggeschreven. +2. **`ZipSaveOptions`** die de handler koppelt aan een ZIP‑archief en je toelaat de rendering aan te passen (antialiasing, lettertype‑hints, enz.). +3. **De `HTMLDocument.Save`‑aanroep** die alles samenvoegt, de pagina en al haar assets in het ZIP‑bestand streamt. + +Dat is alles. Het zware werk wordt gedaan door Aspose.HTML, zodat je je kunt richten op het “waarom” en “wanneer” in plaats van te worstelen met low‑level streams. + +--- + +## Stap 1: Het project opzetten en Aspose.HTML toevoegen + +Eerst, maak een nieuw console‑project aan (of plaats de code in een bestaande app). Open een terminal en voer uit: + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +Het `Aspose.HTML`‑pakket wordt geleverd met alle typen die we nodig hebben: `HTMLDocument`, `ZipSaveOptions`, `ImageRenderingOptions` en de abstracte `ResourceHandler`. + +> **Pro tip:** Als je .NET Framework target, vervang dan de `dotnet`‑commando's door de NuGet Package Manager‑UI in Visual Studio – dezelfde DLL‑s worden toegevoegd. + +--- + +## Stap 2: Een aangepaste `ZipHandler`‑resource‑handler maken + +Aspose.HTML roept `HandleResource` aan voor elk extern bestand dat het tegenkomt tijdens het parseren van de pagina. Door deze methode te overschrijven kunnen we elke bron naar een ZIP‑entry sturen in plaats van naar het bestandssysteem. + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### Waarom een aangepaste handler? + +Zonder deze zou Aspose.HTML de bronnen naast het HTML‑bestand op schijf plaatsen. Door een `ZipArchive` te gebruiken, houden we **alles gebundeld** – perfect voor distributie of voor latere extractie door een andere service. + +--- + +## Stap 3: `ZipSaveOptions` configureren met beeldrendering + +Nu koppelen we de handler aan de save‑opties en schakelen we een paar rendering‑aanpassingen in die de visuele getrouwheid van screenshots of PDF‑achtige conversies verbeteren. + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **Waarom antialiasing en hinting inschakelen?** Wanneer de pagina later wordt gerenderd naar een bitmap (bijv. voor een thumbnail), verminderen deze vlaggen gekartelde randen en maken kleine lettertypen leesbaar — vooral belangrijk als je de afbeeldingen elders wilt insluiten. + +--- + +## Stap 4: Het HTML‑document laden en opslaan als ZIP + +Met de handler en opties klaar, is het laden van een externe pagina net zo eenvoudig als het doorgeven van de URL aan `HTMLDocument`. De `Save`‑methode roept `HandleResource` aan voor elk gekoppeld asset. + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +Op dit punt bevat `zipStream` een volledig **ZIP‑archief dat bevat**: + +- `index.html` (de hoofd‑pagina) +- Alle CSS‑bestanden waarnaar verwezen wordt door ``‑tags +- Afbeeldingen, lettertypen en JavaScript‑bestanden die nodig zijn om de pagina offline te renderen + +### Randgevallen & Variaties + +| Situatie | Wat aan te passen | +|---------------------------------------|--------------------------------------------------------------------------------------| +| **Authenticatie vereist** | Gebruik `HTMLDocument(string url, LoadOptions options)` en stel `options.Credentials` in. | +| **Zeer grote pagina's (>100 MB)** | Schrijf direct naar een `FileStream` in plaats van `MemoryStream` om hoog RAM‑gebruik te vermijden. | +| **Relatieve URL's die beginnen met “//”** | De handler normaliseert ze automatisch; zorg er alleen voor dat `BaseUrl` is ingesteld. | +| **Aangepaste mapstructuur binnen ZIP**| Pas `info.Path` aan binnen `HandleResource` voordat je de entry maakt. | + +--- + +## Stap 5: Het ZIP‑bestand opslaan en het resultaat verifiëren + +Tot slot schrijven we het in‑memory ZIP‑bestand naar schijf. Deze stap is optioneel als je de stream via het netwerk wilt verzenden, maar maakt verificatie eenvoudig. + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**Verwacht resultaat:** Het openen van `result.zip` toont een `index.html`‑bestand dat, wanneer offline in een browser geopend, er identiek uitziet als de live‑pagina (mits alle externe assets bereikbaar waren tijdens het downloaden). + +--- + +## Veelgestelde vragen & antwoorden + +**Q: Werkt deze aanpak met pagina's die lazy‑loaded afbeeldingen gebruiken?** +A: Ja, zolang de afbeeldingen worden opgevraagd tijdens de eerste DOM‑walk. Als een script afbeeldingen laadt na het laden van de pagina, moet je mogelijk een handmatige “render” triggeren door `document.Render()` aan te roepen vóór `Save`. + +**Q: Kan ik de ZIP verder comprimeren?** +A: De `ZipArchive`‑API gebruikt het standaard compressieniveau. Voor agressieve compressie, instantiateer je het met `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)`. + +**Q: Wat als ik een met wachtwoord beveiligde ZIP nodig heb?** +A: De ingebouwde `ZipArchive` ondersteunt geen encryptie. In dat geval kun je de output‑stream door een externe bibliotheek zoals `SharpZipLib` leiden nadat Aspose.HTML klaar is met schrijven. + +--- + +## Pro‑tips voor productiegebruik + +- **Herbruik de `ZipHandler`** bij het verwerken van meerdere pagina's in een batch; reset gewoon de onderliggende `MemoryStream` tussen runs. +- **Log + +{{< /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/english/net/generate-jpg-and-png-images/_index.md b/html/english/net/generate-jpg-and-png-images/_index.md index 3cc4b6acd..113550ad9 100644 --- a/html/english/net/generate-jpg-and-png-images/_index.md +++ b/html/english/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Learn to use Aspose.HTML for .NET to manipulate HTML documents, convert HTML to Learn how to enable antialiasing for sharper PNG/JPG output when converting DOCX files using Aspose.HTML for .NET. ### [convert docx to png – create zip archive c# tutorial](./convert-docx-to-png-create-zip-archive-c-tutorial/) Learn how to convert DOCX files to PNG images and package them into a ZIP archive using C# and Aspose.HTML. +### [How to Render HTML to PNG – Complete C# Guide](./how-to-render-html-to-png-complete-c-guide/) +Step-by-step guide to rendering HTML content to PNG images using C# and Aspose.HTML, covering setup, rendering options, and best practices. ## Conclusion diff --git a/html/english/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/english/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..34f3381d8 --- /dev/null +++ b/html/english/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,157 @@ +--- +category: general +date: 2026-04-19 +description: How to render HTML to PNG with Aspose.Html. Learn to convert HTML to + PNG, save HTML as PNG, and create image from HTML in minutes. +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: en +og_description: How to render HTML to PNG with Aspose.Html. Follow this step‑by‑step + tutorial to convert HTML to PNG, save HTML as PNG, and create image from HTML. +og_title: How to Render HTML to PNG – Complete C# Guide +tags: +- Aspose.Html +- C# +title: How to Render HTML to PNG – Complete C# Guide +url: /net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Render HTML to PNG – Complete C# Guide + +Ever wondered **how to render HTML** into an image file without firing up a browser? You're not the only one. In many projects—email thumbnails, PDF generation, or just quick previews—you need to **convert HTML to PNG** on the fly. + +In this tutorial we’ll walk through a hands‑on solution using Aspose.Html for .NET, covering everything from installing the library to tweaking text‑hinting for crisp small fonts. By the end you’ll be able to **save HTML as PNG**, **create image from HTML**, and even tweak rendering options for edge‑case scenarios. + +## What You’ll Need + +- **.NET 6+** (or .NET Framework 4.6.2+). The API works the same across runtimes. +- **Aspose.Html** NuGet package – `Install-Package Aspose.Html`. +- A simple HTML file (e.g., `article.html`) you want to turn into an image. +- Visual Studio, Rider, or any editor you like. + +That’s it—no extra dependencies, no headless Chrome, just pure C#. + +## Step 1: Install Aspose.Html and Add Namespaces + +First, pull the library from NuGet. Open the Package Manager Console and run: + +```powershell +Install-Package Aspose.Html +``` + +Once installed, add the required `using` directives at the top of your file: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +These namespaces give you access to the document model, image rendering, and the fine‑grained text options we’ll need later. + +> **Pro tip:** If you’re using a .csproj file, you can also add `` manually. + +## Step 2: Load the HTML Document + +You need an `HTMLDocument` instance that points to the source file. Aspose.Html can read from a path, a stream, or even a URL. + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Why this matters:** Loading the document once keeps memory usage low. If you plan to render many pages, reuse the same `HTMLDocument` object where possible. + +## Step 3: Tweak Text Rendering for Small Fonts + +When rendering tiny text, you often get blurry edges. Enabling hinting tells the rasterizer to align glyphs to pixel boundaries, dramatically improving legibility. + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +You can also control anti‑aliasing, subpixel rendering, or even specify a custom font collection here—useful if your HTML references web fonts. + +## Step 4: Configure Image Rendering Options + +Now we bind the `TextOptions` to the image settings. You can also set background color, DPI, or image format (PNG, JPEG, BMP). + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **Edge case:** If your HTML is wider than typical screen dimensions, consider setting `Width` and `Height` on `ImageRenderingOptions` to avoid gigantic PNGs. + +## Step 5: Render the HTML to a PNG File + +Finally, call `RenderToImage`. The method overload we use lets us specify the output path and the options we just built. + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +When you run the program, Aspose.Html parses the markup, applies CSS, lays out the page, and rasterizes it into `article.png`. Open the file with any image viewer—you should see a pixel‑perfect snapshot of your original HTML. + +![how to render html as PNG using Aspose.Html](render-html-png.png) + +*Image alt text: **how to render html** as PNG using Aspose.Html* + +## Bonus: Handling Multiple Pages or Scaling + +Sometimes a single HTML file contains several `` sections (e.g., for printing). You can loop through `htmlDoc.Pages` and render each page individually: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +If you need a thumbnail rather than a full‑size image, adjust `imgOpts.Width` and `imgOpts.Height` before rendering. The library will preserve aspect ratio automatically. + +--- + +## Conclusion + +You now have a solid, production‑ready recipe for **how to render HTML** into a PNG image using Aspose.Html. From installing the package, loading your markup, fine‑tuning text hinting, to finally calling `RenderToImage`, every step is covered. + +With this knowledge you can **convert HTML to PNG**, **save HTML as PNG**, and **create image from HTML** for any .NET application—whether it’s a web service generating thumbnails or a desktop tool archiving web pages. + +Next, explore related topics like **render HTML to image** with different formats (JPEG, BMP) or embedding the PNG into a PDF using Aspose.PDF. You might also experiment with DPI scaling for high‑resolution prints, or feed dynamic HTML generated on the fly into the same pipeline. + +Got questions or a quirky use‑case? Drop a comment below, and happy rendering! + +{{< /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/english/net/html-extensions-and-conversions/_index.md b/html/english/net/html-extensions-and-conversions/_index.md index a50bc9ccb..cfbfa316f 100644 --- a/html/english/net/html-extensions-and-conversions/_index.md +++ b/html/english/net/html-extensions-and-conversions/_index.md @@ -61,6 +61,8 @@ Learn how to convert HTML to Markdown in .NET using Aspose.HTML for efficient co Convert HTML to MHTML in .NET with Aspose.HTML - A step-by-step guide for efficient web content archiving. Learn how to use Aspose.HTML for .NET to create MHTML archives. ### [Convert HTML to PNG in .NET with Aspose.HTML](./convert-html-to-png/) Discover how to use Aspose.HTML for .NET to manipulate and convert HTML documents. Step-by-step guide for effective .NET development. +### [Convert HTML to PNG in C# – Render HTML as Image](./convert-html-to-png-in-c-render-html-as-image/) +Learn how to render HTML as PNG images in C# using Aspose.HTML, with step‑by‑step code examples and customization tips. ### [Convert HTML to TIFF in .NET with Aspose.HTML](./convert-html-to-tiff/) Learn how to convert HTML to TIFF with Aspose.HTML for .NET. Follow our step-by-step guide for efficient web content optimization. ### [Convert HTML to XPS in .NET with Aspose.HTML](./convert-html-to-xps/) @@ -71,14 +73,14 @@ Learn how to zip HTML files in C# using Aspose.HTML, saving HTML content to a ZI Learn how to create an HTML document with styled text and export it to PDF using Aspose.HTML for .NET in this comprehensive guide. ### [Save HTML as ZIP – Complete C# Tutorial](./save-html-as-zip-complete-c-tutorial/) Learn how to save HTML files as a ZIP archive using Aspose.HTML for .NET with a complete C# example. -### [Convert EPUB to Image in .NET with Aspose.HTML](./convert-epub-to-image/) -Learn how to convert EPUB to images using Aspose.HTML for .NET. Step-by-step tutorial with code examples and customizable options. -### [Convert EPUB to PDF in .NET with Aspose.HTML](./convert-epub-to-pdf/) -Learn how to convert EPUB to PDF using Aspose.HTML for .NET. This step-by-step guide covers customization options, FAQs, and more for seamless document conversion. -### [Convert EPUB to XPS in .NET with Aspose.HTML](./convert-epub-to-xps/) -Learn how to convert EPUB to XPS in .NET using Aspose.HTML for .NET. Follow our step-by-step guide for effortless conversions. +### [Save HTML as ZIP with a Custom Resource Handler – Step‑by‑Step Guide](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +Learn how to save HTML as a ZIP archive using a custom resource handler in Aspose.HTML for .NET with a detailed step‑by‑step guide. +### [Save HTML to ZIP in C# – Complete In‑Memory Example](./save-html-to-zip-in-c-complete-in-memory-example/) +Learn how to save HTML content into a ZIP archive in memory using C# and Aspose.HTML for .NET in this step-by-step tutorial. ### [Save HTML to ZIP in C# – Complete In‑Memory Example](./save-html-to-zip-in-c-complete-in-memory-example/) Learn how to save HTML content into a ZIP archive in memory using C# and Aspose.HTML for .NET in this step-by-step tutorial. +### [Save Webpage as ZIP with Aspose.HTML – Complete C# Tutorial](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +Learn how to save a webpage as a ZIP archive using Aspose.HTML for .NET with a complete C# tutorial. ## Conclusion diff --git a/html/english/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/english/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..6193cefaa --- /dev/null +++ b/html/english/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-04-19 +description: Convert HTML to PNG in C# using Aspose.HTML – a quick guide to render + HTML as image and save chart as PNG with anti‑aliasing. +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: en +og_description: Convert HTML to PNG in C# quickly. Learn how to render HTML as image, + save chart as PNG, and generate PNG from HTML with Aspose.HTML. +og_title: Convert HTML to PNG in C# – Render HTML as Image +tags: +- Aspose.HTML +- C# +- Image Processing +title: Convert HTML to PNG in C# – Render HTML as Image +url: /net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Convert HTML to PNG in C# – Render HTML as Image + +Ever needed to **convert HTML to PNG** in C# but weren’t sure which library would give you a crisp result? You’re not alone. Whether you’re exporting a dynamic chart, turning an email template into a thumbnail, or just need a static snapshot of a web page, the ability to **render HTML as image** is a handy trick in any developer’s toolbox. + +In this tutorial we’ll walk through the entire process of turning an HTML file into a PNG file with Aspose.HTML. By the end you’ll be able to **save chart as PNG**, **generate PNG from HTML**, and even tweak anti‑aliasing settings for that polished look. No fluff—just a complete, runnable example you can drop into your project today. + +## What You’ll Need + +Before we dive in, make sure you have the following: + +- **.NET 6.0** or later (the code works on .NET Framework 4.6+ as well). +- **Aspose.HTML for .NET** – you can grab it from NuGet with `Install-Package Aspose.HTML`. +- A simple HTML file (e.g., `chart.html`) that contains the markup you want to capture. +- An IDE of your choice—Visual Studio, Rider, or even VS Code will do. + +That’s it. No extra dependencies, no headless browsers, just a single, well‑documented library. + +![Convert HTML to PNG example](example.png "Convert HTML to PNG output") + +## Step 1: Load the HTML Document + +The first thing we have to do is point Aspose.HTML at the source file. Think of the `HTMLDocument` class as the canvas that holds everything the library will later paint onto a bitmap. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*Why this matters:* Loading the document separates the parsing phase from the rendering phase. It gives the engine a chance to resolve CSS, scripts, and images before we ask it to produce a PNG. If you skip this step and try to render raw markup, you’ll end up with a blank image or missing styles. + +## Step 2: Configure Image Rendering Options + +Out‑of‑the‑box Aspose.HTML will give you a decent PNG, but you often want smoother edges—especially for charts and vector graphics. That’s where `ImageRenderingOptions` comes in. + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*Pro tip:* If you’re dealing with high‑DPI displays, increase `Width` and `Height` proportionally and let the PNG be larger. You can always downscale later with an image editor. Also, setting a background color prevents transparent PNGs from looking odd on dark pages. + +## Step 3: Render the HTML to a PNG File + +Now the heavy lifting happens. The `RenderToImage` method takes the output path and the options we just defined, then writes a PNG to disk. + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +When this line finishes, you’ll find `chart.png` in the target folder. Open it—does the chart look sharp? If you turned on anti‑aliasing, the lines should be smooth, and any text should be crisp. + +### Verifying the Result + +You can quickly verify the image programmatically: + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +If the console prints non‑zero dimensions and a supported pixel format (e.g., `Format32bppArgb`), you’ve successfully **convert html to png**. + +## Render HTML as Image – Advanced Options + +So far we covered the basics, but real‑world scenarios often demand a bit more control. Below are a few common tweaks you might need. + +### Adjusting DPI for Print‑Quality Output + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +Higher DPI is great when you plan to embed the PNG into a PDF or print it on paper. + +### Handling External Resources + +If your HTML references external CSS, fonts, or images hosted on a web server, make sure the runtime can reach them. You can set a custom `BaseUrl`: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +This tells Aspose.HTML to resolve relative URLs against the provided base URL. + +### Converting Multiple Pages + +Aspose.HTML can render each page of a multi‑page HTML document into separate PNG files: + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +That way you can **save chart as PNG** for every page without manually slicing the output. + +## Save Chart as PNG – Common Pitfalls & How to Avoid Them + +1. **Missing Fonts:** If the HTML uses a custom font that isn’t installed on the server, the rendered PNG will fall back to a default font. Install the font on the machine or embed it via `@font-face` in your CSS. +2. **Large Files:** Rendering a massive HTML file can consume a lot of memory. Consider paging the content or reducing image dimensions. +3. **Transparent Backgrounds:** By default, PNGs may be transparent. If you need an opaque background (e.g., for email thumbnails), set `BackgroundColor` as shown earlier. +4. **Script Execution:** Aspose.HTML does not execute JavaScript. If your chart is built with a client‑side library like Chart.js, you’ll need to pre‑render the chart to a static `` element or use a headless browser instead. + +## Full Working Example + +Below is the complete program you can copy‑paste into a console app. It includes all the steps, error handling, and optional tweaks discussed above. + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +Run the program, and you’ll see a confirmation message followed by the image dimensions. Open `chart.png` in any viewer to confirm that the chart looks exactly like the original HTML. + +## Conclusion + +You now have a solid, + +{{< /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/english/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/english/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..7668447b3 --- /dev/null +++ b/html/english/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-04-19 +description: Learn how to save html as zip using Aspose.Html and a custom resource + handler. Also discover how to convert url to zip and download html as zip in minutes. +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: en +og_description: 'save html as zip made easy: use Aspose.Html, a custom resource handler, + and ZipSaveOptions to convert any URL to a downloadable zip archive.' +og_title: save html as zip with a custom resource handler – quick tutorial +tags: +- Aspose.Html +- C# +- Web scraping +title: save html as zip with a custom resource handler – step‑by‑step guide +url: /net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# save html as zip – Complete Tutorial + +Ever needed to **save html as zip** so you can ship a whole page with its images, CSS, and scripts in one tidy package? Maybe you’re building a crawler that archives articles, or you simply want a quick “download html as zip” button for your users. Either way, you’re probably wondering how to do it without writing a million lines of file‑IO code. + +Here’s the good news: Aspose.Html makes the job a piece of cake, and with a **custom resource handler** you can decide exactly where each resource stream goes. In this guide we’ll also show you how to **convert url to zip**, how to **download html as zip**, and how to **save webpage resources** for offline use—all in a single, self‑contained C# program. + +## What You’ll Learn + +- Install the Aspose.Html library (NuGet makes it painless). +- Write a `ResourceHandler` that supplies a `Stream` for every resource Aspose.Html wants to write. +- Load a remote page (or a local file) and tell Aspose.Html to pack everything into a ZIP archive. +- Verify the resulting `output.zip` contains the HTML file plus all linked assets. + +No external tools, no manual zip‑file fiddling—just clean, compiled code you can drop into any .NET project. + +## Prerequisites + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6.0 or later (the code also works on .NET Framework 4.7+) | Aspose.Html targets modern runtimes; older frameworks may miss some APIs. | +| Visual Studio 2022 (or any IDE you like) | Helpful for debugging and seeing the generated ZIP. | +| Internet access for the sample URL (`https://example.com`) | We’ll fetch a live page to demonstrate **convert url to zip**. | +| NuGet package `Aspose.Html` (v23.12 or newer) | This library provides `HTMLDocument`, `ZipSaveOptions`, and the `ResourceHandler` base class. | + +If you already have a .NET project, just run: + +```bash +dotnet add package Aspose.Html +``` + +That’s all the setup you need. + +## Step 1: Create a Custom Resource Handler + +The heart of the solution is a class that inherits from `ResourceHandler`. Aspose.Html calls `HandleResource` for every file it wants to write—HTML, images, CSS, JavaScript, you name it. By returning a `Stream` you decide where the data lands. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**Why a custom handler?** +Because the older `IOutputStorage` interface is deprecated, and `ResourceHandler` gives you full control over the output destination. It also lets you inspect `ResourceInfo`—useful if you only want to keep images and skip fonts, for instance. + +## Step 2: Load the HTML Document (or Convert URL to Zip) + +Aspose.Html can load from a URL, a file path, or a raw HTML string. Here we demonstrate loading a live page, which is the typical case when you want to **download html as zip**. + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +If you already have the HTML source in a variable, just pass it to the constructor: + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## Step 3: Wire Up the Handler to ZipSaveOptions + +`ZipSaveOptions` tells Aspose.Html *how* to create the ZIP file. The crucial property is `OutputStorage`, which we set to our `MyHandler` instance. + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +You can also tweak compression level, folder names inside the archive, or even embed a manifest file—details are in the Aspose docs, but the defaults work great for most scenarios. + +## Step 4: Save the Document as a ZIP Archive + +Now the magic happens. The `Save` method iterates over every resource, calls `HandleResource`, and writes the bytes to the returned stream. Because our handler returns a fresh `MemoryStream` each time, Aspose.Html will later collect all those streams and pack them into `output.zip`. + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**What you’ll see:** +- `output.zip` at the root of your project folder. +- Inside the ZIP: `index.html` (the main page) plus subfolders like `images/`, `css/`, `scripts/` containing the exact files the browser would have requested. + +## Step 5: Verify the Result (Optional but Recommended) + +A quick sanity check ensures you really did **save webpage resources** correctly. + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +You should see entries for `index.html`, any linked images (`logo.png`), CSS files, and JavaScript files. If something is missing, double‑check the `ResourceInfo` logic in `MyHandler`. + +## Full Working Example + +Putting it all together, here’s the complete program you can copy‑paste into a console app. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Run the program (`dotnet run`), and you’ll end up with a neat `output.zip`. Open it with any archive manager, and you can browse the saved page offline—exactly what you need for **download html as zip** functionality. + +## Common Questions & Edge Cases + +| Question | Answer | +|----------|--------| +| *What if I need to store the ZIP in Azure Blob Storage?* | Replace `MemoryStream` with a stream that writes directly to a blob (e.g., `CloudBlockBlob.OpenWrite()`). The handler abstraction makes this trivial. | +| *Can I filter out certain resources?* | Yes. Inside `HandleResource`, inspect `info.ResourceType` or `info.Url`. Return `null` to skip a resource, or return a stream that writes nothing. | +| *Is the ZIP password‑protected?* | `ZipSaveOptions` has a `Password` property. Set it before calling `Save` if you need encryption. | +| *What about large pages with dozens of megabytes of assets?* | Using `MemoryStream` for everything may exhaust RAM. Switch to a `FileStream` that writes to a temporary folder, then let Aspose.Html compress those files. | +| *Does this work on .NET Core on Linux?* | Absolutely. Aspose.Html is cross‑platform; just ensure the runtime has permission to write files. | + +## Pro Tips + +- **Pro tip:** If you only care about the HTML and images, check `info.ResourceType == ResourceType.Image` and skip scripts or fonts to keep the ZIP tiny. +- **Watch out for:** some sites block automated requests. Set a custom `User-Agent` via `HtmlLoadOptions` if you get a 403 error. +- **Tip:** After creating the ZIP, you can serve it directly from an ASP.NET controller using `FileResult`, giving your users a one‑click **download html as zip** button. + +## Conclusion + +You now have a solid, production‑ready way to **save html as zip** using Aspose.Html and a **custom resource handler**. By loading any URL, configuring `ZipSaveOptions`, and letting the handler supply streams, you can **convert url to zip**, **download html as zip**, and **save webpage resources** with just a few lines of C#. + +Feel free to experiment—store streams to disk, cloud storage, or even a database. The pattern stays the same, and the result is always a tidy archive you can ship, cache, or archive forever. + +--- + +![Diagram illustrating the save html as zip workflow – from loading a URL to producing a ZIP file](/images/save-html-as-zip.png) + +*Image alt text:* **save html as zip workflow diagram** + +If you found this tutorial helpful, drop a comment, share it with a teammate, or star the repo where you keep your utility scripts. Happy coding! + +{{< /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/english/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/english/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..56b0818c7 --- /dev/null +++ b/html/english/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,217 @@ +--- +category: general +date: 2026-04-19 +description: Save webpage as zip using Aspose.HTML in C#. Learn how to convert URL + to zip, export HTML to zip, and download webpage as zip with a simple code example. +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: en +og_description: Save webpage as zip with Aspose.HTML in C#. This guide shows how to + convert URL to zip, export HTML to zip, and download webpage as zip in just a few + steps. +og_title: Save Webpage as ZIP with Aspose.HTML – Complete C# Tutorial +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: Save Webpage as ZIP with Aspose.HTML – Complete C# Tutorial +url: /net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Save Webpage as ZIP with Aspose.HTML – Complete C# Tutorial + +Need to **save webpage as zip** for offline archiving, automated testing, or just to ship a snapshot of a site? You’re not alone. In this tutorial we’ll walk through how to **convert URL to zip**, **export HTML to zip**, and even **download webpage as zip** with a handful of clean C# lines. + +We'll cover everything from project setup to the final ZIP file on disk, and we’ll sprinkle in a few practical tips you won’t find in the official docs. By the end you’ll have a reusable solution that can **create zip from html** whenever you need it. + +## What You’ll Need + +- **.NET 6.0** (or any recent .NET version) – Aspose.HTML works with .NET Core and .NET Framework alike. +- **Aspose.HTML for .NET** NuGet package – `Install-Package Aspose.HTML`. +- A modest amount of C# experience – if you can write a `Console.WriteLine`, you’re good to go. +- An internet‑connected machine for the initial download (the code itself works offline once the ZIP is created). + +No extra SDKs, no headless browsers, just pure .NET and Aspose.HTML. + +![Illustration of saving webpage as zip using Aspose.HTML](save-webpage-as-zip.png "Diagram showing save webpage as zip workflow") + +## Save Webpage as ZIP – Overview + +At a high level the process consists of three moving parts: + +1. **A custom `ResourceHandler`** that tells Aspose.HTML where to write each external resource (images, CSS, scripts). +2. **`ZipSaveOptions`** that bind the handler to a ZIP archive and let you tweak rendering (antialiasing, font hints, etc.). +3. **The `HTMLDocument.Save` call** that pulls everything together, streams the page and all its assets into the ZIP file. + +That’s it. The heavy lifting is done by Aspose.HTML, so you can focus on the “why” and “when” instead of wrestling with low‑level streams. + +--- + +## Step 1: Set Up the Project and Add Aspose.HTML + +First, spin up a new console project (or drop the code into an existing app). Open a terminal and run: + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +The `Aspose.HTML` package ships with all the types we’ll need: `HTMLDocument`, `ZipSaveOptions`, `ImageRenderingOptions`, and the abstract `ResourceHandler`. + +> **Pro tip:** If you’re targeting .NET Framework, replace `dotnet` commands with the NuGet Package Manager UI in Visual Studio – the same DLLs get added. + +--- + +## Step 2: Create a Custom `ZipHandler` Resource Handler + +Aspose.HTML calls `HandleResource` for every external file it encounters while parsing the page. By overriding this method we can direct each resource into a ZIP entry instead of the file system. + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### Why a custom handler? + +Without it, Aspose.HTML would drop resources next to the HTML file on disk. By feeding a `ZipArchive`, we keep **everything bundled** – perfect for distribution or for later extraction by another service. + +--- + +## Step 3: Configure `ZipSaveOptions` with Image Rendering + +Now we tie the handler to the save options and turn on a few rendering tweaks that improve the visual fidelity of screenshots or PDF‑like conversions. + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **Why enable antialiasing and hinting?** When the page is later rendered to a bitmap (e.g., for a thumbnail), these flags reduce jagged edges and make small fonts readable—especially important if you plan to embed the images elsewhere. + +--- + +## Step 4: Load the HTML Document and Save to ZIP + +With the handler and options ready, loading a remote page is as simple as passing its URL to `HTMLDocument`. The `Save` method will invoke `HandleResource` for every linked asset. + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +At this point `zipStream` holds a complete **ZIP archive that contains**: + +- `index.html` (the main page) +- All CSS files referenced by `` tags +- Images, fonts, and JavaScript files required to render the page offline + +### Edge Cases & Variations + +| Situation | What to Adjust | +|----------------------------------------|-----------------------------------------------------------------------------------| +| **Authentication required** | Use `HTMLDocument(string url, LoadOptions options)` and set `options.Credentials`. | +| **Very large pages (>100 MB)** | Write directly to a `FileStream` instead of `MemoryStream` to avoid high RAM usage. | +| **Relative URLs that start with “//”**| The handler automatically normalizes them; just ensure the `BaseUrl` is set. | +| **Custom folder structure inside ZIP**| Modify `info.Path` inside `HandleResource` before creating the entry. | + +--- + +## Step 5: Persist the ZIP File and Verify the Result + +Finally, we write the in‑memory ZIP to disk. This step is optional if you intend to send the stream over the network, but it makes verification easy. + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**Expected outcome:** Opening `result.zip` shows an `index.html` file that, when opened in a browser offline, looks identical to the live page (provided all external assets were reachable during the download). + +--- + +## Common Questions & Answers + +**Q: Does this approach work with pages that use lazy‑loaded images?** +A: Yes, as long as the images are requested during the initial DOM walk. If a script loads images after the page load, you may need to trigger a manual “render” by calling `document.Render()` before `Save`. + +**Q: Can I compress the ZIP further?** +A: The `ZipArchive` API uses the default compression level. For aggressive compression, instantiate it with `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)`. + +**Q: What if I need a password‑protected ZIP?** +A: The built‑in `ZipArchive` doesn’t support encryption. In that case, pipe the output stream through a third‑party library like `SharpZipLib` after Aspose.HTML finishes writing. + +--- + +## Pro Tips for Production Use + +- **Reuse the `ZipHandler`** when processing multiple pages in a batch; just reset the underlying `MemoryStream` between runs. +- **Log + +{{< /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/french/net/generate-jpg-and-png-images/_index.md b/html/french/net/generate-jpg-and-png-images/_index.md index 59ca2dad1..5597a7381 100644 --- a/html/french/net/generate-jpg-and-png-images/_index.md +++ b/html/french/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Apprenez à utiliser Aspose.HTML pour .NET pour manipuler des documents HTML, co Apprenez à activer l'anticrénelage pour améliorer la qualité des images PNG/JPG générées à partir de documents DOCX avec Aspose.HTML. ### [Convertir docx en png – créer une archive zip tutoriel C#](./convert-docx-to-png-create-zip-archive-c-tutorial/) Apprenez à convertir des fichiers DOCX en images PNG et à les compresser dans une archive ZIP avec C#. +### [Comment rendre du HTML en PNG – Guide complet C#](./how-to-render-html-to-png-complete-c-guide/) +Apprenez à convertir du HTML en images PNG avec C# en suivant un guide complet étape par étape. ## Conclusion diff --git a/html/french/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/french/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..1b0393d46 --- /dev/null +++ b/html/french/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,159 @@ +--- +category: general +date: 2026-04-19 +description: Comment rendre du HTML en PNG avec Aspose.Html. Apprenez à convertir + du HTML en PNG, à enregistrer du HTML au format PNG et à créer une image à partir + du HTML en quelques minutes. +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: fr +og_description: Comment rendre le HTML en PNG avec Aspose.Html. Suivez ce tutoriel + étape par étape pour convertir le HTML en PNG, enregistrer le HTML en PNG et créer + une image à partir du HTML. +og_title: Comment rendre du HTML en PNG – Guide complet C# +tags: +- Aspose.Html +- C# +title: Comment rendre du HTML en PNG – Guide complet C# +url: /fr/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment rendre le HTML en PNG – Guide complet C# + +Vous vous êtes déjà demandé **comment rendre le HTML** dans un fichier image sans lancer un navigateur ? Vous n'êtes pas le seul. Dans de nombreux projets—vignettes d'e‑mail, génération de PDF, ou simplement des aperçus rapides—vous avez besoin de **convertir du HTML en PNG** à la volée. + +Dans ce tutoriel, nous allons parcourir une solution pratique en utilisant Aspose.Html pour .NET, couvrant tout, de l'installation de la bibliothèque à l'ajustement du hinting du texte pour des petites polices nettes. À la fin, vous pourrez **enregistrer du HTML en PNG**, **créer une image à partir du HTML**, et même ajuster les options de rendu pour des scénarios limites. + +## Ce dont vous avez besoin + +- **.NET 6+** (ou .NET Framework 4.6.2+). L'API fonctionne de la même façon sur tous les runtimes. +- **Aspose.Html** package NuGet – `Install-Package Aspose.Html`. +- Un fichier HTML simple (par ex., `article.html`) que vous souhaitez transformer en image. +- Visual Studio, Rider, ou tout éditeur de votre choix. + +C’est tout—aucune dépendance supplémentaire, pas de Chrome headless, juste du pur C#. + +## Étape 1 : Installer Aspose.Html et ajouter les espaces de noms + +Tout d’abord, récupérez la bibliothèque depuis NuGet. Ouvrez la console du gestionnaire de packages et exécutez : + +```powershell +Install-Package Aspose.Html +``` + +Une fois installé, ajoutez les directives `using` requises en haut de votre fichier : + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +Ces espaces de noms vous donnent accès au modèle de document, au rendu d’image, et aux options de texte détaillées dont nous aurons besoin plus tard. + +> **Astuce :** Si vous utilisez un fichier .csproj, vous pouvez également ajouter manuellement ``. + +## Étape 2 : Charger le document HTML + +Vous avez besoin d’une instance `HTMLDocument` qui pointe vers le fichier source. Aspose.Html peut lire depuis un chemin, un flux, ou même une URL. + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Pourquoi c’est important :** Charger le document une seule fois réduit la consommation de mémoire. Si vous prévoyez de rendre plusieurs pages, réutilisez le même objet `HTMLDocument` autant que possible. + +## Étape 3 : Ajuster le rendu du texte pour les petites polices + +Lors du rendu de texte très petit, les bords sont souvent flous. Activer le hinting indique au rasteriseur d’aligner les glyphes aux limites de pixel, améliorant ainsi la lisibilité de façon spectaculaire. + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +Vous pouvez également contrôler l’anti‑aliasing, le rendu sous‑pixel, ou même spécifier une collection de polices personnalisée ici—utile si votre HTML fait référence à des polices web. + +## Étape 4 : Configurer les options de rendu d’image + +Nous associons maintenant les `TextOptions` aux paramètres d’image. Vous pouvez aussi définir la couleur d’arrière‑plan, le DPI, ou le format d’image (PNG, JPEG, BMP). + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **Cas limite :** Si votre HTML est plus large que les dimensions d’écran habituelles, envisagez de définir `Width` et `Height` sur `ImageRenderingOptions` afin d’éviter des PNG gigantesques. + +## Étape 5 : Rendre le HTML vers un fichier PNG + +Enfin, appelez `RenderToImage`. La surcharge de méthode que nous utilisons nous permet de spécifier le chemin de sortie ainsi que les options que nous venons de créer. + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +Lorsque vous exécutez le programme, Aspose.Html analyse le balisage, applique le CSS, met en page la page, et le rasterise dans `article.png`. Ouvrez le fichier avec n’importe quel visualiseur d’image — vous devriez voir un instantané pixel‑parfait de votre HTML d’origine. + +![comment rendre le html en PNG avec Aspose.Html](render-html-png.png) + +*Texte alternatif de l'image : **comment rendre le html** en PNG avec Aspose.Html* + +## Bonus : Gestion de plusieurs pages ou mise à l’échelle + +Parfois, un seul fichier HTML contient plusieurs sections `` (par ex., pour l’impression). Vous pouvez parcourir `htmlDoc.Pages` et rendre chaque page individuellement : + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +Si vous avez besoin d’une vignette plutôt que d’une image pleine taille, ajustez `imgOpts.Width` et `imgOpts.Height` avant le rendu. La bibliothèque préservera automatiquement le ratio d’aspect. + +--- + +## Conclusion + +Vous disposez maintenant d’une recette solide et prête pour la production pour **rendre le HTML** en image PNG avec Aspose.Html. De l’installation du package, au chargement de votre balisage, en passant par le réglage fin du hinting du texte, jusqu’à l’appel final à `RenderToImage`, chaque étape est couverte. + +Avec ces connaissances, vous pouvez **convertir du HTML en PNG**, **enregistrer du HTML en PNG**, et **créer une image à partir du HTML** pour n’importe quelle application .NET—que ce soit un service web générant des vignettes ou un outil de bureau archivisant des pages web. + +Ensuite, explorez des sujets connexes comme **render HTML to image** avec d’autres formats (JPEG, BMP) ou l’intégration du PNG dans un PDF à l’aide d’Aspose.PDF. Vous pouvez également expérimenter le redimensionnement DPI pour des impressions haute résolution, ou injecter du HTML dynamique généré à la volée dans le même pipeline. + +Des questions ou un cas d’utilisation particulier ? Laissez un commentaire ci‑dessous, et bon rendu ! + +{{< /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/french/net/html-extensions-and-conversions/_index.md b/html/french/net/html-extensions-and-conversions/_index.md index f4e02735c..353425403 100644 --- a/html/french/net/html-extensions-and-conversions/_index.md +++ b/html/french/net/html-extensions-and-conversions/_index.md @@ -43,7 +43,7 @@ Convertissez facilement du HTML en PDF avec Aspose.HTML pour .NET. Suivez notre Apprenez à créer un PDF à partir de HTML en C# avec Aspose.HTML, guide complet pas à pas. ### [Créer un document HTML avec du texte stylisé et l'exporter en PDF – Guide complet](./create-html-document-with-styled-text-and-export-to-pdf-full/) Apprenez à créer un document HTML avec du texte formaté et à le convertir en PDF à l'aide d'Aspose.HTML pour .NET. -Convertisez facilement du HTML en PDF avec Aspose.HTML pour .NET. Suivez notre guide étape par étape et exploitez la puissance de la conversion HTML en PDF. +Convertisez facilement du HTML en PDF avec Aspose.HTML pour .NET. Suivez notre guide étape à étape et exploitez la puissance de la conversion HTML en PDF. ### [Convertir EPUB en image dans .NET avec Aspose.HTML](./convert-epub-to-image/) Découvrez comment convertir un EPUB en images à l'aide d'Aspose.HTML pour .NET. Tutoriel étape par étape avec des exemples de code et des options personnalisables. ### [Convertir EPUB en PDF dans .NET avec Aspose.HTML](./convert-epub-to-pdf/) @@ -64,6 +64,8 @@ Découvrez comment convertir du HTML en Markdown dans .NET à l'aide d'Aspose.HT Convertissez du HTML en MHTML dans .NET avec Aspose.HTML - Un guide étape par étape pour un archivage efficace du contenu Web. Découvrez comment utiliser Aspose.HTML pour .NET pour créer des archives MHTML. ### [Convertir HTML en PNG dans .NET avec Aspose.HTML](./convert-html-to-png/) Découvrez comment utiliser Aspose.HTML pour .NET pour manipuler et convertir des documents HTML. Guide étape par étape pour un développement .NET efficace. +### [Convertir HTML en PNG en C# – Rendu du HTML en image](./convert-html-to-png-in-c-render-html-as-image/) +Apprenez à convertir du HTML en PNG en C# en rendant le HTML comme image avec Aspose.HTML. ### [Convertir HTML en TIFF dans .NET avec Aspose.HTML](./convert-html-to-tiff/) Découvrez comment convertir du HTML en TIFF avec Aspose.HTML pour .NET. Suivez notre guide étape par étape pour une optimisation efficace du contenu Web. ### [Convertir HTML en XPS dans .NET avec Aspose.HTML](./convert-html-to-xps/) @@ -71,9 +73,13 @@ Découvrez la puissance d'Aspose.HTML pour .NET : convertissez facilement du HT ### [Comment zipper du HTML en C# – Enregistrer le HTML dans un zip](./how-to-zip-html-in-c-save-html-to-zip/) Apprenez à compresser du HTML en un fichier zip avec C# grâce à notre guide détaillé. ### [Enregistrer le HTML en ZIP – Tutoriel complet C#](./save-html-as-zip-complete-c-tutorial/) -Apprenez à enregistrer un document HTML dans un fichier ZIP en C# avec Aspose.HTML pour .NET. Guide complet étape par étape. +Apprenez à enregistrer un document HTML dans un fichier ZIP en C# avec Aspose.HTML pour .NET. +### [Enregistrer une page Web en ZIP avec Aspose.HTML – Tutoriel complet C#](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +Apprenez à enregistrer une page Web dans un fichier ZIP en C# avec Aspose.HTML, guide complet étape par étape. ### [Enregistrer HTML en ZIP en C# – Exemple complet en mémoire](./save-html-to-zip-in-c-complete-in-memory-example/) Enregistrez du HTML dans un fichier ZIP en mémoire avec Aspose.HTML pour .NET. +### [Enregistrer le HTML en ZIP avec un gestionnaire de ressources personnalisé – guide étape par étape](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +Apprenez à enregistrer le HTML dans un fichier ZIP en utilisant un gestionnaire de ressources personnalisé avec Aspose.HTML pour .NET. ## Conclusion diff --git a/html/french/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/french/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..679f6b2a8 --- /dev/null +++ b/html/french/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,215 @@ +--- +category: general +date: 2026-04-19 +description: Convertir du HTML en PNG en C# avec Aspose.HTML – un guide rapide pour + rendre le HTML en image et enregistrer le graphique au format PNG avec anti‑aliasing. +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: fr +og_description: Convertissez rapidement du HTML en PNG en C#. Apprenez à rendre le + HTML en image, à enregistrer un graphique au format PNG et à générer un PNG à partir + du HTML avec Aspose.HTML. +og_title: Convertir HTML en PNG en C# – Rendre le HTML en image +tags: +- Aspose.HTML +- C# +- Image Processing +title: Convertir le HTML en PNG en C# – Rendre le HTML en image +url: /fr/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Convertir du HTML en PNG en C# – Rendre le HTML en image + +Vous avez déjà eu besoin de **convertir du HTML en PNG** en C# mais vous ne saviez pas quelle bibliothèque vous donnerait un résultat net ? Vous n'êtes pas seul. Que vous exportiez un graphique dynamique, transformiez un modèle d'e‑mail en vignette, ou que vous ayez simplement besoin d'une capture d'écran statique d'une page web, la capacité de **rendre le HTML en image** est une astuce pratique dans la boîte à outils de tout développeur. + +Dans ce tutoriel, nous parcourrons l’ensemble du processus de conversion d’un fichier HTML en fichier PNG avec Aspose.HTML. À la fin, vous pourrez **enregistrer un graphique en PNG**, **générer un PNG à partir de HTML**, et même ajuster les paramètres d'anti‑aliasing pour obtenir un rendu soigné. Pas de superflu – juste un exemple complet et exécutable que vous pouvez intégrer dès aujourd’hui à votre projet. + +## Ce dont vous aurez besoin + +- **.NET 6.0** ou ultérieur (le code fonctionne également avec .NET Framework 4.6+). +- **Aspose.HTML for .NET** – vous pouvez l’obtenir via NuGet avec `Install-Package Aspose.HTML`. +- Un fichier HTML simple (par ex., `chart.html`) contenant le balisage que vous souhaitez capturer. +- Un IDE de votre choix – Visual Studio, Rider, ou même VS Code convient. + +C’est tout. Pas de dépendances supplémentaires, pas de navigateurs sans tête, juste une bibliothèque unique et bien documentée. + +![Exemple de conversion HTML en PNG](example.png "Résultat de la conversion HTML en PNG") + +## Étape 1 : Charger le document HTML + +La première chose à faire est d’indiquer à Aspose.HTML le fichier source. Considérez la classe `HTMLDocument` comme la toile qui contient tout ce que la bibliothèque peindra ensuite sur un bitmap. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*Pourquoi c’est important :* Charger le document sépare la phase d’analyse de la phase de rendu. Cela donne au moteur la possibilité de résoudre le CSS, les scripts et les images avant que nous lui demandions de produire un PNG. Si vous sautez cette étape et essayez de rendre du balisage brut, vous obtiendrez une image vide ou des styles manquants. + +## Étape 2 : Configurer les options de rendu d’image + +Par défaut, Aspose.HTML vous fournit un PNG correct, mais vous souhaitez souvent des bords plus lisses – surtout pour les graphiques et les images vectorielles. C’est là qu’intervient `ImageRenderingOptions`. + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*Astuce :* Si vous travaillez avec des écrans haute‑DPI, augmentez proportionnellement `Width` et `Height` et laissez le PNG plus grand. Vous pourrez toujours le réduire plus tard avec un éditeur d’image. De plus, définir une couleur d’arrière‑plan évite que les PNG transparents paraissent étranges sur des pages sombres. + +## Étape 3 : Rendre le HTML en fichier PNG + +C’est maintenant le moment du travail intensif. La méthode `RenderToImage` prend le chemin de sortie et les options que nous venons de définir, puis écrit un PNG sur le disque. + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +Lorsque cette ligne se termine, vous trouverez `chart.png` dans le dossier cible. Ouvrez‑le – le graphique est‑il net ? Si vous avez activé l’anti‑aliasing, les lignes devraient être lisses et le texte net. + +### Vérifier le résultat + +Vous pouvez rapidement vérifier l’image par programme : + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +Si la console affiche des dimensions différentes de zéro et un format de pixel supporté (par ex., `Format32bppArgb`), vous avez réussi à **convertir du HTML en PNG**. + +## Rendre le HTML en image – Options avancées + +Jusqu’ici nous avons couvert les bases, mais les scénarios réels exigent souvent un peu plus de contrôle. Voici quelques ajustements courants dont vous pourriez avoir besoin. + +### Ajuster le DPI pour une sortie de qualité impression + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +Un DPI plus élevé est idéal lorsque vous prévoyez d’intégrer le PNG dans un PDF ou de l’imprimer sur papier. + +### Gestion des ressources externes + +Si votre HTML fait référence à du CSS, des polices ou des images externes hébergées sur un serveur web, assurez‑vous que le runtime puisse y accéder. Vous pouvez définir une `BaseUrl` personnalisée : + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +Cela indique à Aspose.HTML de résoudre les URL relatives par rapport à l’URL de base fournie. + +### Conversion de plusieurs pages + +Aspose.HTML peut rendre chaque page d’un document HTML multi‑pages en fichiers PNG séparés : + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +Ainsi vous pouvez **enregistrer le graphique en PNG** pour chaque page sans découper manuellement le résultat. + +## Enregistrer le graphique en PNG – Pièges courants et comment les éviter + +1. **Polices manquantes :** Si le HTML utilise une police personnalisée qui n’est pas installée sur le serveur, le PNG rendu reviendra à une police par défaut. Installez la police sur la machine ou intégrez‑la via `@font-face` dans votre CSS. +2. **Fichiers volumineux :** Rendre un fichier HTML massif peut consommer beaucoup de mémoire. Envisagez de paginer le contenu ou de réduire les dimensions de l’image. +3. **Arrière‑plans transparents :** Par défaut, les PNG peuvent être transparents. Si vous avez besoin d’un arrière‑plan opaque (par ex., pour des vignettes d’e‑mail), définissez `BackgroundColor` comme indiqué précédemment. +4. **Exécution de scripts :** Aspose.HTML n’exécute pas le JavaScript. Si votre graphique est construit avec une bibliothèque côté client comme Chart.js, vous devrez pré‑rendre le graphique dans un élément `` statique ou utiliser un navigateur sans tête à la place. + +## Exemple complet fonctionnel + +Voici le programme complet que vous pouvez copier‑coller dans une application console. Il inclut toutes les étapes, la gestion des erreurs et les ajustements optionnels évoqués ci‑dessus. + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +Exécutez le programme, et vous verrez un message de confirmation suivi des dimensions de l’image. Ouvrez `chart.png` dans n’importe quel visualiseur pour confirmer que le graphique ressemble exactement au HTML original. + +## Conclusion + +Vous avez maintenant une base solide, + +{{< /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/french/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/french/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..a1dd5926e --- /dev/null +++ b/html/french/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-04-19 +description: Apprenez à enregistrer du HTML en zip en utilisant Aspose.Html et un + gestionnaire de ressources personnalisé. Découvrez également comment convertir une + URL en zip et télécharger du HTML en zip en quelques minutes. +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: fr +og_description: 'Enregistrez le HTML en zip facilement : utilisez Aspose.Html, un + gestionnaire de ressources personnalisé et ZipSaveOptions pour convertir n''importe + quelle URL en une archive zip téléchargeable.' +og_title: Enregistrer le HTML en zip avec un gestionnaire de ressources personnalisé + – tutoriel rapide +tags: +- Aspose.Html +- C# +- Web scraping +title: Enregistrer le HTML en zip avec un gestionnaire de ressources personnalisé + – guide étape par étape +url: /fr/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# enregistrer html en zip – Tutoriel complet + +Vous avez déjà eu besoin de **enregistrer html en zip** afin de livrer une page entière avec ses images, son CSS et ses scripts dans un seul paquet bien ordonné ? Peut‑être construisez‑vous un crawler qui archive des articles, ou vous voulez simplement un bouton « télécharger html en zip » rapide pour vos utilisateurs. Dans tous les cas, vous vous demandez probablement comment le faire sans écrire des millions de lignes de code d’E/S de fichiers. + +Voici la bonne nouvelle : Aspose.Html rend la tâche très simple, et avec un **gestionnaire de ressources personnalisé** vous décidez exactement où chaque flux de ressource doit être envoyé. Dans ce guide nous vous montrerons également comment **convertir une URL en zip**, comment **télécharger html en zip**, et comment **enregistrer les ressources d’une page web** pour une utilisation hors ligne—le tout dans un seul programme C# autonome. + +## Ce que vous allez apprendre + +- Installer la bibliothèque Aspose.Html (NuGet rend cela indolore). +- Écrire un `ResourceHandler` qui fournit un `Stream` pour chaque ressource qu’Aspose.Html veut écrire. +- Charger une page distante (ou un fichier local) et demander à Aspose.Html d’emballer tout dans une archive ZIP. +- Vérifier que le `output.zip` généré contient le fichier HTML ainsi que toutes les ressources liées. + +Aucun outil externe, aucune manipulation manuelle de fichiers zip — juste du code propre, compilé, que vous pouvez intégrer dans n’importe quel projet .NET. + +## Prérequis + +| Exigence | Pourquoi c'est important | +|----------|---------------------------| +| .NET 6.0 ou ultérieur (le code fonctionne aussi avec .NET Framework 4.7+) | Aspose.Html cible les runtimes modernes ; les anciens frameworks peuvent ne pas disposer de certaines API. | +| Visual Studio 2022 (ou tout autre IDE) | Pratique pour le débogage et pour visualiser le ZIP généré. | +| Accès Internet pour l’URL d’exemple (`https://example.com`) | Nous récupérerons une page en direct pour démontrer **convertir une URL en zip**. | +| Package NuGet `Aspose.Html` (v23.12 ou plus récent) | Cette bibliothèque fournit `HTMLDocument`, `ZipSaveOptions` et la classe de base `ResourceHandler`. | + +Si vous avez déjà un projet .NET, exécutez simplement : + +```bash +dotnet add package Aspose.Html +``` + +C’est tout ce dont vous avez besoin pour la configuration. + +## Étape 1 : Créer un gestionnaire de ressources personnalisé + +Le cœur de la solution est une classe qui hérite de `ResourceHandler`. Aspose.Html appelle `HandleResource` pour chaque fichier qu’il veut écrire — HTML, images, CSS, JavaScript, etc. En renvoyant un `Stream` vous décidez où les données atterrissent. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**Pourquoi un gestionnaire personnalisé ?** +Parce que l’ancienne interface `IOutputStorage` est obsolète, et que `ResourceHandler` vous donne un contrôle total sur la destination de sortie. Il vous permet également d’inspecter `ResourceInfo`—utile si vous ne voulez garder que les images et ignorer les polices, par exemple. + +## Étape 2 : Charger le document HTML (ou convertir une URL en zip) + +Aspose.Html peut charger depuis une URL, un chemin de fichier ou une chaîne HTML brute. Ici nous démontrons le chargement d’une page en direct, le cas typique lorsque vous voulez **télécharger html en zip**. + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +Si vous avez déjà le code source HTML dans une variable, il suffit de le passer au constructeur : + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## Étape 3 : Brancher le gestionnaire à ZipSaveOptions + +`ZipSaveOptions` indique à Aspose.Html *comment* créer le fichier ZIP. La propriété cruciale est `OutputStorage`, que nous réglons sur notre instance `MyHandler`. + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +Vous pouvez également ajuster le niveau de compression, les noms de dossiers à l’intérieur de l’archive, ou même intégrer un fichier manifeste — les détails sont dans la documentation Aspose, mais les valeurs par défaut fonctionnent très bien dans la plupart des scénarios. + +## Étape 4 : Enregistrer le document en tant qu’archive ZIP + +Là, la magie opère. La méthode `Save` parcourt chaque ressource, appelle `HandleResource`, et écrit les octets dans le flux retourné. Comme notre gestionnaire renvoie un nouveau `MemoryStream` à chaque appel, Aspose.Html rassemblera ensuite tous ces flux et les empaquettera dans `output.zip`. + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**Ce que vous verrez :** +- `output.zip` à la racine du dossier de votre projet. +- À l’intérieur du ZIP : `index.html` (la page principale) plus des sous‑dossiers comme `images/`, `css/`, `scripts/` contenant exactement les fichiers que le navigateur aurait demandés. + +## Étape 5 : Vérifier le résultat (optionnel mais recommandé) + +Un rapide contrôle de cohérence garantit que vous avez bien **enregistré les ressources de la page web**. + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +Vous devriez voir des entrées pour `index.html`, les images liées (`logo.png`), les fichiers CSS et les fichiers JavaScript. Si quelque chose manque, revérifiez la logique `ResourceInfo` dans `MyHandler`. + +## Exemple complet fonctionnel + +En rassemblant le tout, voici le programme complet que vous pouvez copier‑coller dans une application console. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Exécutez le programme (`dotnet run`), et vous obtiendrez un élégant `output.zip`. Ouvrez‑le avec n’importe quel gestionnaire d’archives, et vous pourrez parcourir la page sauvegardée hors ligne—exactement ce qu’il faut pour la fonctionnalité **télécharger html en zip**. + +## Questions fréquentes & cas particuliers + +| Question | Réponse | +|----------|---------| +| *Et si je dois stocker le ZIP dans Azure Blob Storage ?* | Remplacez `MemoryStream` par un flux qui écrit directement dans un blob (par ex., `CloudBlockBlob.OpenWrite()`). L’abstraction du gestionnaire rend cela trivial. | +| *Puis‑je filtrer certaines ressources ?* | Oui. Dans `HandleResource`, inspectez `info.ResourceType` ou `info.Url`. Retournez `null` pour ignorer une ressource, ou un flux qui n’écrit rien. | +| *Le ZIP est‑il protégé par mot de passe ?* | `ZipSaveOptions` possède une propriété `Password`. Définissez‑la avant d’appeler `Save` si vous avez besoin de chiffrement. | +| *Que faire avec des pages très volumineuses contenant des dizaines de mégaoctets d’actifs ?* | Utiliser `MemoryStream` pour tout peut épuiser la RAM. Passez à un `FileStream` qui écrit dans un dossier temporaire, puis laissez Aspose.Html compresser ces fichiers. | +| *Cela fonctionne‑t‑il sur .NET Core sous Linux ?* | Absolument. Aspose.Html est multiplateforme ; assurez‑vous simplement que le runtime a les permissions d’écriture. | + +## Astuces pro + +- **Astuce pro :** Si vous ne vous souciez que du HTML et des images, vérifiez `info.ResourceType == ResourceType.Image` et ignorez les scripts ou les polices pour garder le ZIP très léger. +- **Attention à :** certains sites bloquent les requêtes automatisées. Définissez un `User-Agent` personnalisé via `HtmlLoadOptions` si vous obtenez une erreur 403. +- **Conseil :** Après avoir créé le ZIP, vous pouvez le servir directement depuis un contrôleur ASP.NET avec `FileResult`, offrant à vos utilisateurs un bouton **télécharger html en zip** en un clic. + +## Conclusion + +Vous disposez maintenant d’une méthode robuste et prête pour la production afin de **enregistrer html en zip** en utilisant Aspose.Html et un **gestionnaire de ressources personnalisé**. En chargeant n’importe quelle URL, en configurant `ZipSaveOptions`, et en laissant le gestionnaire fournir les flux, vous pouvez **convertir une URL en zip**, **télécharger html en zip**, et **enregistrer les ressources d’une page web** avec seulement quelques lignes de C#. + +N’hésitez pas à expérimenter — stockez les flux sur disque, dans le cloud, ou même dans une base de données. Le modèle reste le même, et le résultat est toujours une archive bien ordonnée que vous pouvez distribuer, mettre en cache ou archiver indéfiniment. + +--- + +![Diagram illustrating the save html as zip workflow – from loading a URL to producing a ZIP file](/images/save-html-as-zip.png) + +*Texte alternatif de l’image :* **diagramme du flux de travail « enregistrer html en zip »** + +Si ce tutoriel vous a été utile, laissez un commentaire, partagez‑le avec un collègue, ou ajoutez une étoile au dépôt où vous conservez vos scripts utilitaires. Bon codage ! + +{{< /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/french/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/french/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..ab68086fb --- /dev/null +++ b/html/french/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,218 @@ +--- +category: general +date: 2026-04-19 +description: Enregistrez une page Web au format zip en utilisant Aspose.HTML en C#. + Apprenez comment convertir une URL en zip, exporter du HTML en zip et télécharger + une page Web en zip avec un exemple de code simple. +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: fr +og_description: Enregistrez la page Web au format zip avec Aspose.HTML en C#. Ce guide + montre comment convertir une URL en zip, exporter du HTML en zip et télécharger + la page Web au format zip en quelques étapes seulement. +og_title: Enregistrer la page Web en ZIP avec Aspose.HTML – Tutoriel complet C# +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: Enregistrer la page Web en ZIP avec Aspose.HTML – Tutoriel complet C# +url: /fr/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Enregistrer une page Web au format ZIP avec Aspose.HTML – Tutoriel complet C# + +Besoin d'**enregistrer une page Web au format zip** pour l'archivage hors ligne, les tests automatisés, ou simplement livrer un instantané d'un site ? Vous n'êtes pas seul. Dans ce tutoriel, nous allons voir comment **convertir une URL en zip**, **exporter du HTML en zip**, et même **télécharger une page Web en zip** avec quelques lignes C# propres. + +Nous couvrirons tout, de la configuration du projet au fichier ZIP final sur le disque, et nous ajouterons quelques astuces pratiques que vous ne trouverez pas dans la documentation officielle. À la fin, vous disposerez d’une solution réutilisable qui peut **créer un zip à partir de html** chaque fois que vous en avez besoin. + +## Ce qu'il vous faut + +- **.NET 6.0** (ou toute version récente de .NET) – Aspose.HTML fonctionne aussi bien avec .NET Core qu'avec .NET Framework. +- **Aspose.HTML for .NET** package NuGet – `Install-Package Aspose.HTML`. +- Un minimum d'expérience en C# – si vous savez écrire un `Console.WriteLine`, vous êtes prêt. +- Une machine connectée à Internet pour le téléchargement initial (le code lui‑même fonctionne hors ligne une fois le ZIP créé). + +Pas de SDK supplémentaires, pas de navigateurs sans tête, juste du .NET pur et Aspose.HTML. + +![Illustration de l'enregistrement d'une page Web au format zip avec Aspose.HTML](save-webpage-as-zip.png "Diagramme montrant le flux de travail d'enregistrement d'une page Web au format zip") + +## Enregistrer une page Web au format ZIP – Vue d'ensemble + +À haut niveau, le processus se compose de trois parties mobiles : + +1. **Un `ResourceHandler` personnalisé** qui indique à Aspose.HTML où écrire chaque ressource externe (images, CSS, scripts). +2. **`ZipSaveOptions`** qui lie le gestionnaire à une archive ZIP et vous permet d'ajuster le rendu (antialiasing, indices de police, etc.). +3. **L'appel `HTMLDocument.Save`** qui réunit le tout, diffuse la page et tous ses actifs dans le fichier ZIP. + +C’est tout. Le travail lourd est effectué par Aspose.HTML, vous pouvez donc vous concentrer sur le « pourquoi » et le « quand » au lieu de vous débattre avec des flux de bas niveau. + +--- + +## Étape 1 : Configurer le projet et ajouter Aspose.HTML + +Tout d'abord, créez un nouveau projet console (ou intégrez le code dans une application existante). Ouvrez un terminal et exécutez : + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +Le package `Aspose.HTML` fournit tous les types dont nous aurons besoin : `HTMLDocument`, `ZipSaveOptions`, `ImageRenderingOptions` et l'abstrait `ResourceHandler`. + +> **Astuce pro :** Si vous ciblez le .NET Framework, remplacez les commandes `dotnet` par l'interface du Gestionnaire de packages NuGet dans Visual Studio – les mêmes DLL seront ajoutées. + +--- + +## Étape 2 : Créer un gestionnaire de ressources `ZipHandler` personnalisé + +Aspose.HTML appelle `HandleResource` pour chaque fichier externe qu'il rencontre lors de l'analyse de la page. En surchargeant cette méthode, nous pouvons diriger chaque ressource vers une entrée ZIP au lieu du système de fichiers. + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### Pourquoi un gestionnaire personnalisé ? + +Sans cela, Aspose.HTML déposerait les ressources à côté du fichier HTML sur le disque. En les injectant dans un `ZipArchive`, nous gardons **tout empaqueté** – idéal pour la distribution ou pour une extraction ultérieure par un autre service. + +--- + +## Étape 3 : Configurer `ZipSaveOptions` avec le rendu d'image + +Nous associons maintenant le gestionnaire aux options de sauvegarde et activons quelques réglages de rendu qui améliorent la fidélité visuelle des captures d'écran ou des conversions de type PDF. + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **Pourquoi activer l'antialiasing et le hinting ?** Lorsque la page est ensuite rendue en bitmap (par ex., pour une vignette), ces indicateurs réduisent les bords dentelés et rendent les petites polices lisibles—particulièrement important si vous prévoyez d'intégrer les images ailleurs. + +--- + +## Étape 4 : Charger le document HTML et enregistrer en ZIP + +Avec le gestionnaire et les options prêts, charger une page distante est aussi simple que de passer son URL à `HTMLDocument`. La méthode `Save` invoquera `HandleResource` pour chaque ressource liée. + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +À ce stade, `zipStream` contient une **archive ZIP complète qui comprend** : + +- `index.html` (la page principale) +- Tous les fichiers CSS référencés par les balises `` +- Images, polices et fichiers JavaScript nécessaires au rendu hors ligne de la page + +### Cas particuliers & variantes + +| Situation | Ce qu'il faut ajuster | +|----------------------------------------|-------------------------------------------------------------------------------------| +| **Authentification requise** | Utilisez `HTMLDocument(string url, LoadOptions options)` et définissez `options.Credentials`. | +| **Pages très volumineuses (>100 Mo)** | Écrivez directement dans un `FileStream` au lieu d'un `MemoryStream` pour éviter une forte consommation de RAM. | +| **URL relatives commençant par “//”** | Le gestionnaire les normalise automatiquement ; assurez‑vous simplement que `BaseUrl` est défini. | +| **Structure de dossiers personnalisée dans le ZIP** | Modifiez `info.Path` dans `HandleResource` avant de créer l'entrée. | + +--- + +## Étape 5 : Persister le fichier ZIP et vérifier le résultat + +Enfin, nous écrivons le ZIP en mémoire sur le disque. Cette étape est optionnelle si vous prévoyez d'envoyer le flux sur le réseau, mais elle facilite la vérification. + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**Résultat attendu :** L'ouverture de `result.zip` montre un fichier `index.html` qui, lorsqu'il est ouvert dans un navigateur hors ligne, ressemble exactement à la page en ligne (à condition que toutes les ressources externes aient été accessibles pendant le téléchargement). + +--- + +## Questions fréquentes & Réponses + +**Q : Cette approche fonctionne‑t‑elle avec des pages qui utilisent le chargement différé d'images ?** +R : Oui, tant que les images sont demandées pendant la première traversée du DOM. Si un script charge des images après le chargement de la page, il peut être nécessaire de déclencher un « render » manuel en appelant `document.Render()` avant `Save`. + +**Q : Puis‑je compresser davantage le ZIP ?** +R : L'API `ZipArchive` utilise le niveau de compression par défaut. Pour une compression agressive, créez‑le avec `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)`. + +**Q : Et si j’ai besoin d’un ZIP protégé par mot de passe ?** +R : Le `ZipArchive` intégré ne supporte pas le chiffrement. Dans ce cas, faites passer le flux de sortie par une bibliothèque tierce comme `SharpZipLib` après que Aspose.HTML ait terminé l'écriture. + +--- + +## Astuces pro pour la production + +- **Réutilisez le `ZipHandler`** lors du traitement de plusieurs pages en lot ; réinitialisez simplement le `MemoryStream` sous‑jacent entre les exécutions. +- **Log + +{{< /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/german/net/generate-jpg-and-png-images/_index.md b/html/german/net/generate-jpg-and-png-images/_index.md index 8c24c4537..e6654fcd4 100644 --- a/html/german/net/generate-jpg-and-png-images/_index.md +++ b/html/german/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML-Dokumente bearbeiten, HTML Erfahren Sie, wie Sie beim Konvertieren von DOCX-Dokumenten in PNG oder JPG Antialiasing aktivieren, um hochwertige Bilder zu erhalten. ### [DOCX in PNG konvertieren – ZIP-Archiv erstellen C#‑Tutorial](./convert-docx-to-png-create-zip-archive-c-tutorial/) Erfahren Sie, wie Sie DOCX‑Dateien in PNG‑Bilder umwandeln und diese in ein ZIP‑Archiv packen – Schritt‑für‑Schritt‑Anleitung in C#. +### [HTML zu PNG rendern – Vollständiger C#‑Leitfaden](./how-to-render-html-to-png-complete-c-guide/) +Erfahren Sie, wie Sie HTML mit Aspose.HTML für .NET in PNG-Bilder konvertieren – Schritt‑für‑Schritt‑Anleitung in C#. ## Abschluss diff --git a/html/german/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/german/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..b54747fa7 --- /dev/null +++ b/html/german/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,159 @@ +--- +category: general +date: 2026-04-19 +description: Wie man HTML mit Aspose.Html in PNG rendert. Erfahren Sie, wie Sie HTML + in PNG konvertieren, HTML als PNG speichern und in wenigen Minuten ein Bild aus + HTML erstellen. +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: de +og_description: Wie man HTML mit Aspose.Html in PNG rendert. Folgen Sie dieser Schritt‑für‑Schritt‑Anleitung, + um HTML in PNG zu konvertieren, HTML als PNG zu speichern und ein Bild aus HTML + zu erstellen. +og_title: HTML zu PNG rendern – Vollständiger C#‑Leitfaden +tags: +- Aspose.Html +- C# +title: Wie man HTML zu PNG rendert – Vollständiger C#‑Leitfaden +url: /de/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man HTML in PNG rendert – Vollständiger C# Leitfaden + +Haben Sie sich jemals gefragt, **wie man HTML** in eine Bilddatei rendert, ohne einen Browser zu starten? Sie sind nicht allein. In vielen Projekten – E‑Mail‑Vorschaubilder, PDF‑Erstellung oder einfach schnelle Vorschauen – müssen Sie **HTML zu PNG** on‑the‑fly konvertieren. + +In diesem Tutorial führen wir Sie durch eine praxisnahe Lösung mit Aspose.Html für .NET, die alles abdeckt – von der Installation der Bibliothek bis zum Anpassen des Text‑Hintings für klare kleine Schriften. Am Ende können Sie **HTML als PNG speichern**, **ein Bild aus HTML erstellen** und sogar Rendering‑Optionen für Randfall‑Szenarien anpassen. + +## Was Sie benötigen + +- **.NET 6+** (oder .NET Framework 4.6.2+). Die API funktioniert in allen Laufzeiten gleich. +- **Aspose.Html** NuGet‑Paket – `Install-Package Aspose.Html`. +- Eine einfache HTML‑Datei (z. B. `article.html`), die Sie in ein Bild umwandeln möchten. +- Visual Studio, Rider oder ein beliebiger Editor Ihrer Wahl. + +Das war’s – keine zusätzlichen Abhängigkeiten, kein headless Chrome, nur reines C#. + +## Schritt 1: Aspose.Html installieren und Namespaces hinzufügen + +Zuerst holen Sie die Bibliothek von NuGet. Öffnen Sie die Package‑Manager‑Konsole und führen Sie aus: + +```powershell +Install-Package Aspose.Html +``` + +Nach der Installation fügen Sie die erforderlichen `using`‑Direktiven am Anfang Ihrer Datei hinzu: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +Diese Namespaces geben Ihnen Zugriff auf das Dokumentenmodell, die Bild‑Renderung und die feinkörnigen Textoptionen, die wir später benötigen. + +> **Pro‑Tipp:** Wenn Sie eine .csproj‑Datei verwenden, können Sie auch manuell `` hinzufügen. + +## Schritt 2: Das HTML‑Dokument laden + +Sie benötigen eine `HTMLDocument`‑Instanz, die auf die Quelldatei verweist. Aspose.Html kann von einem Pfad, einem Stream oder sogar einer URL lesen. + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Warum das wichtig ist:** Das Laden des Dokuments nur einmal hält den Speicherverbrauch niedrig. Wenn Sie viele Seiten rendern wollen, verwenden Sie nach Möglichkeit dasselbe `HTMLDocument`‑Objekt wieder. + +## Schritt 3: Text‑Rendering für kleine Schriften anpassen + +Beim Rendern winziger Texte entstehen oft unscharfe Kanten. Durch das Aktivieren von Hinting wird dem Rasterizer mitgeteilt, Glyphen an Pixelgrenzen auszurichten, was die Lesbarkeit deutlich verbessert. + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +Sie können hier auch Antialiasing, Subpixel‑Rendering oder sogar eine benutzerdefinierte Schriftartsammlung festlegen – nützlich, wenn Ihr HTML Web‑Fonts referenziert. + +## Schritt 4: Bild‑Render‑Optionen konfigurieren + +Jetzt binden wir die `TextOptions` an die Bildeinstellungen. Sie können außerdem Hintergrundfarbe, DPI oder das Bildformat (PNG, JPEG, BMP) festlegen. + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **Randfall:** Wenn Ihr HTML breiter ist als typische Bildschirmabmessungen, sollten Sie `Width` und `Height` in `ImageRenderingOptions` setzen, um riesige PNGs zu vermeiden. + +## Schritt 5: Das HTML in eine PNG‑Datei rendern + +Rufen Sie schließlich `RenderToImage` auf. Die von uns verwendete Methodenüberladung ermöglicht es, den Ausgabepfad und die gerade erstellten Optionen anzugeben. + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +Wenn Sie das Programm ausführen, analysiert Aspose.Html das Markup, wendet CSS an, legt das Layout fest und rastert es in `article.png`. Öffnen Sie die Datei mit einem beliebigen Bildbetrachter – Sie sollten einen pixelgenauen Schnappschuss Ihres ursprünglichen HTML sehen. + +![how to render html as PNG using Aspose.Html](render-html-png.png) + +*Bild‑Alt‑Text: **wie man html** als PNG mit Aspose.Html* + +## Bonus: Umgang mit mehreren Seiten oder Skalierung + +Manchmal enthält eine einzelne HTML‑Datei mehrere ``‑Abschnitte (z. B. zum Drucken). Sie können über `htmlDoc.Pages` iterieren und jede Seite einzeln rendern: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +Wenn Sie ein Thumbnail statt eines Vollbildes benötigen, passen Sie `imgOpts.Width` und `imgOpts.Height` vor dem Rendern an. Die Bibliothek bewahrt das Seitenverhältnis automatisch. + +--- + +## Fazit + +Sie haben nun ein solides, produktionsreifes Rezept, **wie man HTML** in ein PNG‑Bild mit Aspose.Html rendert. Von der Installation des Pakets, dem Laden Ihres Markups, dem Feintuning des Text‑Hintings bis zum finalen Aufruf von `RenderToImage` ist jeder Schritt abgedeckt. + +Mit diesem Wissen können Sie **HTML zu PNG konvertieren**, **HTML als PNG speichern** und **ein Bild aus HTML erstellen** für jede .NET‑Anwendung – sei es ein Web‑Service, der Thumbnails erzeugt, oder ein Desktop‑Tool, das Webseiten archiviert. + +Als Nächstes erkunden Sie verwandte Themen wie **HTML zu Bild rendern** mit verschiedenen Formaten (JPEG, BMP) oder das Einbetten des PNG in ein PDF mit Aspose.PDF. Sie können auch mit DPI‑Skalierung für hochauflösende Drucke experimentieren oder dynamisch erzeugtes HTML on‑the‑fly in dieselbe Pipeline einspeisen. + +Haben Sie Fragen oder einen ungewöhnlichen Anwendungsfall? Hinterlassen Sie unten einen Kommentar und viel Spaß beim Rendern! + +{{< /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/german/net/html-extensions-and-conversions/_index.md b/html/german/net/html-extensions-and-conversions/_index.md index 607896d28..47b80aac3 100644 --- a/html/german/net/html-extensions-and-conversions/_index.md +++ b/html/german/net/html-extensions-and-conversions/_index.md @@ -38,41 +38,47 @@ Aspose.HTML für .NET ist nicht nur eine Bibliothek; es verändert die Welt der ## Tutorials zu HTML-Erweiterungen und -Konvertierungen ### [Konvertieren Sie HTML in .NET in PDF mit Aspose.HTML](./convert-html-to-pdf/) -Konvertieren Sie HTML mühelos in PDF mit Aspose.HTML für .NET. Folgen Sie unserer Schritt-für-Schritt-Anleitung und entfesseln Sie die Leistungsfähigkeit der HTML-zu-PDF-Konvertierung. +Konvertieren Sie HTML mühelos in PDF mit Aspose.HTML für .NET. Folgen Sie unserer Schritt‑für‑Schritt‑Anleitung und entfesseln Sie die Leistungsfähigkeit der HTML‑zu‑PDF‑Konvertierung. ### [Konvertieren Sie EPUB in .NET mit Aspose.HTML in ein Bild](./convert-epub-to-image/) -Erfahren Sie, wie Sie mit Aspose.HTML für .NET EPUB in Bilder konvertieren. Schritt-für-Schritt-Anleitung mit Codebeispielen und anpassbaren Optionen. +Erfahren Sie, wie Sie mit Aspose.HTML für .NET EPUB in Bilder konvertieren. Schritt‑für‑Schritt‑Anleitung mit Codebeispielen und anpassbaren Optionen. ### [Konvertieren Sie EPUB in .NET mit Aspose.HTML in PDF](./convert-epub-to-pdf/) -Erfahren Sie, wie Sie mit Aspose.HTML für .NET EPUB in PDF konvertieren. Diese Schritt-für-Schritt-Anleitung umfasst Anpassungsoptionen, FAQs und mehr für eine nahtlose Dokumentkonvertierung. +Erfahren Sie, wie Sie mit Aspose.HTML für .NET EPUB in PDF konvertieren. Diese Schritt‑für‑Schritt‑Anleitung umfasst Anpassungsoptionen, FAQs und mehr für eine nahtlose Dokumentkonvertierung. ### [Konvertieren Sie EPUB in XPS in .NET mit Aspose.HTML](./convert-epub-to-xps/) -Erfahren Sie, wie Sie mit Aspose.HTML für .NET EPUB in XPS in .NET konvertieren. Folgen Sie unserer Schritt-für-Schritt-Anleitung für mühelose Konvertierungen. +Erfahren Sie, wie Sie mit Aspose.HTML für .NET EPUB in XPS in .NET konvertieren. Folgen Sie unserer Schritt‑für‑Schritt‑Anleitung für mühelose Konvertierungen. ### [Konvertieren Sie HTML in BMP in .NET mit Aspose.HTML](./convert-html-to-bmp/) Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML in BMP in .NET konvertieren. Umfassender Leitfaden für Webentwickler zur Nutzung von Aspose.HTML für .NET. ### [Konvertieren Sie HTML in .NET in DOC und DOCX mit Aspose.HTML](./convert-html-to-doc-docx/) -Erfahren Sie in dieser Schritt-für-Schritt-Anleitung, wie Sie die Leistung von Aspose.HTML für .NET nutzen. Konvertieren Sie HTML mühelos in DOCX und verbessern Sie Ihre .NET-Projekte. Legen Sie noch heute los! +Erfahren Sie in dieser Schritt‑für‑Schritt‑Anleitung, wie Sie die Leistung von Aspose.HTML für .NET nutzen. Konvertieren Sie HTML mühelos in DOCX und verbessern Sie Ihre .NET‑Projekte. Legen Sie noch heute los! ### [Konvertieren Sie HTML in GIF in .NET mit Aspose.HTML](./convert-html-to-gif/) -Entdecken Sie die Leistungsfähigkeit von Aspose.HTML für .NET: Eine Schritt-für-Schritt-Anleitung zur Konvertierung von HTML in GIF. Voraussetzungen, Codebeispiele, FAQs und mehr! Optimieren Sie Ihre HTML-Manipulation mit Aspose.HTML. +Entdecken Sie die Leistungsfähigkeit von Aspose.HTML für .NET: Eine Schritt‑für‑Schritt‑Anleitung zur Konvertierung von HTML in GIF. Voraussetzungen, Codebeispiele, FAQs und mehr! Optimieren Sie Ihre HTML‑Manipulation mit Aspose.HTML. ### [Konvertieren Sie HTML in JPEG in .NET mit Aspose.HTML](./convert-html-to-jpeg/) -Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML in JPEG in .NET konvertieren. Eine Schritt-für-Schritt-Anleitung zur Nutzung der Leistungsfähigkeit von Aspose.HTML für .NET. Optimieren Sie Ihre Webentwicklungsaufgaben mühelos. +Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML in JPEG in .NET konvertieren. Eine Schritt‑für‑Schritt‑Anleitung zur Nutzung der Leistungsfähigkeit von Aspose.HTML für .NET. Optimieren Sie Ihre Webentwicklungsaufgaben mühelos. ### [Konvertieren Sie HTML in .NET in Markdown mit Aspose.HTML](./convert-html-to-markdown/) -Erfahren Sie, wie Sie HTML in .NET mit Aspose.HTML in Markdown konvertieren, um Inhalte effizient zu bearbeiten. Erhalten Sie eine Schritt-für-Schritt-Anleitung für einen nahtlosen Konvertierungsprozess. +Erfahren Sie, wie Sie HTML in .NET mit Aspose.HTML in Markdown konvertieren, um Inhalte effizient zu bearbeiten. Erhalten Sie eine Schritt‑für‑Schritt‑Anleitung für einen nahtlosen Konvertierungsprozess. ### [Konvertieren Sie HTML in MHTML in .NET mit Aspose.HTML](./convert-html-to-mhtml/) -Konvertieren Sie HTML in .NET in MHTML mit Aspose.HTML – Eine Schritt-für-Schritt-Anleitung zum effizienten Archivieren von Webinhalten. Erfahren Sie, wie Sie mit Aspose.HTML für .NET MHTML-Archive erstellen. +Konvertieren Sie HTML in .NET in MHTML mit Aspose.HTML – Eine Schritt‑für‑Schritt‑Anleitung zum effizienten Archivieren von Webinhalten. Erfahren Sie, wie Sie mit Aspose.HTML für .NET MHTML‑Archive erstellen. ### [Konvertieren Sie HTML in PNG in .NET mit Aspose.HTML](./convert-html-to-png/) -Entdecken Sie, wie Sie mit Aspose.HTML für .NET HTML-Dokumente bearbeiten und konvertieren. Schritt-für-Schritt-Anleitung für effektive .NET-Entwicklung. +Entdecken Sie, wie Sie mit Aspose.HTML für .NET HTML‑Dokumente bearbeiten und konvertieren. Schritt‑für‑Schritt‑Anleitung für effektive .NET‑Entwicklung. +### [Konvertieren Sie HTML in PNG in C# – HTML als Bild rendern](./convert-html-to-png-in-c-render-html-as-image/) +Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML in PNG rendern und als Bild speichern – Schritt‑für‑Schritt‑Anleitung in C#. ### [Konvertieren Sie HTML in TIFF in .NET mit Aspose.HTML](./convert-html-to-tiff/) -Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML in TIFF konvertieren. Folgen Sie unserer Schritt-für-Schritt-Anleitung zur effizienten Optimierung von Webinhalten. +Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML in TIFF konvertieren. Folgen Sie unserer Schritt‑für‑Schritt‑Anleitung zur effizienten Optimierung von Webinhalten. ### [Konvertieren Sie HTML in XPS in .NET mit Aspose.HTML](./convert-html-to-xps/) -Entdecken Sie die Leistungsfähigkeit von Aspose.HTML für .NET: Konvertieren Sie HTML mühelos in XPS. Voraussetzungen, Schritt-für-Schritt-Anleitung und FAQs inklusive. +Entdecken Sie die Leistungsfähigkeit von Aspose.HTML für .NET: Konvertieren Sie HTML mühelos in XPS. Voraussetzungen, Schritt‑für‑Schritt‑Anleitung und FAQs inklusive. ### [HTML in C# zippen – HTML in Zip speichern](./how-to-zip-html-in-c-save-html-to-zip/) -Erfahren Sie, wie Sie HTML-Inhalte mit Aspose.HTML für .NET in eine ZIP-Datei komprimieren und speichern. +Erfahren Sie, wie Sie HTML‑Inhalte mit Aspose.HTML für .NET in eine ZIP‑Datei komprimieren und speichern. +### [HTML als ZIP speichern mit benutzerdefiniertem Ressourcen‑Handler – Schritt‑für‑Schritt‑Anleitung](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +Erfahren Sie, wie Sie HTML‑Inhalte mit Aspose.HTML für .NET in ein ZIP‑Archiv speichern und dabei einen benutzerdefinierten Ressourcen‑Handler einsetzen. ### [HTML-Dokument mit formatiertem Text erstellen und in PDF exportieren – Vollständige Anleitung](./create-html-document-with-styled-text-and-export-to-pdf-full/) -Erfahren Sie, wie Sie ein HTML-Dokument mit formatiertem Text erstellen und es mit Aspose.HTML für .NET in ein PDF exportieren. +Erfahren Sie, wie Sie ein HTML‑Dokument mit formatiertem Text erstellen und es mit Aspose.HTML für .NET in ein PDF exportieren. ### [PDF aus HTML erstellen – C# Schritt‑für‑Schritt‑Anleitung](./create-pdf-from-html-c-step-by-step-guide/) Erstellen Sie PDF aus HTML mit C# – eine detaillierte Schritt‑für‑Schritt‑Anleitung mit Aspose.HTML für .NET. ### [HTML als ZIP speichern – Komplettes C#‑Tutorial](./save-html-as-zip-complete-c-tutorial/) Erfahren Sie, wie Sie HTML‑Inhalte mit Aspose.HTML für .NET in ein ZIP‑Archiv speichern – vollständige Schritt‑für‑Schritt‑Anleitung in C#. ### [HTML in ZIP speichern in C# – Komplettes In‑Memory‑Beispiel](./save-html-to-zip-in-c-complete-in-memory-example/) -Speichern Sie HTML-Inhalte in ein ZIP-Archiv komplett im Speicher mit Aspose.HTML für .NET. Schritt‑für‑Schritt‑Anleitung. +Speichern Sie HTML‑Inhalte in ein ZIP‑Archiv komplett im Speicher mit Aspose.HTML für .NET. Schritt‑für‑Schritt‑Anleitung. +### [Webseite als ZIP speichern – Komplettes C#‑Tutorial mit Aspose.HTML](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +Erfahren Sie, wie Sie mit Aspose.HTML für .NET eine komplette Webseite als ZIP‑Archiv speichern – vollständige Schritt‑für‑Schritt‑Anleitung in C#. ## Abschluss diff --git a/html/german/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/german/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..eb0122779 --- /dev/null +++ b/html/german/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,215 @@ +--- +category: general +date: 2026-04-19 +description: HTML in PNG mit C# und Aspose.HTML konvertieren – eine kurze Anleitung + zum Rendern von HTML als Bild und zum Speichern von Diagrammen als PNG mit Antialiasing. +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: de +og_description: Konvertieren Sie HTML schnell in PNG mit C#. Erfahren Sie, wie Sie + HTML als Bild rendern, Diagramme als PNG speichern und PNG aus HTML mit Aspose.HTML + generieren. +og_title: HTML in PNG konvertieren in C# – HTML als Bild rendern +tags: +- Aspose.HTML +- C# +- Image Processing +title: HTML in PNG konvertieren in C# – HTML als Bild rendern +url: /de/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML in PNG konvertieren in C# – HTML als Bild rendern + +Haben Sie jemals **HTML in PNG konvertieren** in C# benötigt, waren sich aber nicht sicher, welche Bibliothek ein scharfes Ergebnis liefert? Sie sind nicht allein. Egal, ob Sie ein dynamisches Diagramm exportieren, eine E‑Mail‑Vorlage in ein Thumbnail verwandeln oder einfach einen statischen Schnappschuss einer Webseite benötigen, die Fähigkeit, **HTML als Bild zu rendern**, ist ein praktischer Trick in jedem Entwickler‑Werkzeugkasten. + +In diesem Tutorial führen wir Sie durch den gesamten Prozess, eine HTML‑Datei mit Aspose.HTML in eine PNG‑Datei zu verwandeln. Am Ende können Sie **Diagramm als PNG speichern**, **PNG aus HTML erzeugen** und sogar Anti‑Aliasing‑Einstellungen für ein poliertes Aussehen anpassen. Kein Schnickschnack – nur ein vollständiges, ausführbares Beispiel, das Sie noch heute in Ihr Projekt einbinden können. + +## Was Sie benötigen + +- **.NET 6.0** oder höher (der Code funktioniert auch mit .NET Framework 4.6+). +- **Aspose.HTML for .NET** – Sie können es über NuGet mit `Install-Package Aspose.HTML` beziehen. +- Eine einfache HTML‑Datei (z. B. `chart.html`), die das Markup enthält, das Sie erfassen möchten. +- Eine IDE Ihrer Wahl – Visual Studio, Rider oder sogar VS Code reichen aus. + +Das war’s. Keine zusätzlichen Abhängigkeiten, keine Headless‑Browser, nur eine einzelne, gut dokumentierte Bibliothek. + +![Beispiel für HTML nach PNG konvertieren](example.png "Ausgabe der HTML‑zu‑PNG‑Konvertierung") + +## Schritt 1: HTML‑Dokument laden + +Das Erste, was wir tun müssen, ist Aspose.HTML auf die Quelldatei zu verweisen. Betrachten Sie die Klasse `HTMLDocument` als die Leinwand, die alles enthält, was die Bibliothek später auf ein Bitmap malt. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*Warum das wichtig ist:* Das Laden des Dokuments trennt die Parsing‑Phase von der Rendering‑Phase. Es gibt der Engine die Möglichkeit, CSS, Skripte und Bilder aufzulösen, bevor wir sie auffordern, ein PNG zu erzeugen. Wenn Sie diesen Schritt überspringen und versuchen, rohes Markup zu rendern, erhalten Sie ein leeres Bild oder fehlende Styles. + +## Schritt 2: Bild‑Rendering‑Optionen konfigurieren + +Standard liefert Aspose.HTML ein anständiges PNG, aber Sie möchten oft glattere Kanten – besonders bei Diagrammen und Vektorgrafiken. Hier kommt `ImageRenderingOptions` ins Spiel. + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*Pro‑Tipp:* Wenn Sie mit hochauflösenden Displays arbeiten, erhöhen Sie `Width` und `Height` proportional und lassen das PNG größer sein. Sie können es später jederzeit mit einem Bildeditor verkleinern. Außerdem verhindert das Festlegen einer Hintergrundfarbe, dass transparente PNGs auf dunklen Seiten seltsam aussehen. + +## Schritt 3: HTML in eine PNG‑Datei rendern + +Jetzt findet die eigentliche Arbeit statt. Die Methode `RenderToImage` nimmt den Ausgabepfad und die gerade definierten Optionen und schreibt ein PNG auf die Festplatte. + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +Wenn diese Zeile abgeschlossen ist, finden Sie `chart.png` im Zielordner. Öffnen Sie sie – sieht das Diagramm scharf aus? Wenn Sie Anti‑Aliasing aktiviert haben, sollten die Linien glatt und der Text klar sein. + +### Ergebnis überprüfen + +Sie können das Bild schnell programmgesteuert überprüfen: + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +Wenn die Konsole nicht‑null Dimensionen und ein unterstütztes Pixel‑Format (z. B. `Format32bppArgb`) ausgibt, haben Sie erfolgreich **HTML in PNG konvertiert**. + +## HTML als Bild rendern – Erweiterte Optionen + +Bisher haben wir die Grundlagen behandelt, aber reale Szenarien erfordern oft etwas mehr Kontrolle. Im Folgenden finden Sie einige gängige Anpassungen, die Sie benötigen könnten. + +### DPI für druckqualitativen Output anpassen + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +Ein höheres DPI ist ideal, wenn Sie das PNG in ein PDF einbetten oder auf Papier drucken möchten. + +### Umgang mit externen Ressourcen + +Wenn Ihr HTML externe CSS‑Dateien, Schriftarten oder Bilder von einem Web‑Server referenziert, stellen Sie sicher, dass die Laufzeit darauf zugreifen kann. Sie können eine benutzerdefinierte `BaseUrl` festlegen: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +Damit wird Aspose.HTML angewiesen, relative URLs anhand der angegebenen Basis‑URL aufzulösen. + +### Mehrere Seiten konvertieren + +Aspose.HTML kann jede Seite eines mehrseitigen HTML‑Dokuments in separate PNG‑Dateien rendern: + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +Auf diese Weise können Sie **Diagramm als PNG speichern** für jede Seite, ohne das Ergebnis manuell zu zerschneiden. + +## Diagramm als PNG speichern – Häufige Fallstricke & wie man sie vermeidet + +1. **Fehlende Schriftarten:** Wenn das HTML eine benutzerdefinierte Schriftart verwendet, die nicht auf dem Server installiert ist, fällt das gerenderte PNG auf eine Standardschriftart zurück. Installieren Sie die Schriftart auf dem Rechner oder betten Sie sie über `@font-face` in Ihrem CSS ein. +2. **Große Dateien:** Das Rendern einer riesigen HTML‑Datei kann viel Speicher verbrauchen. Erwägen Sie, den Inhalt zu paginieren oder die Bildabmessungen zu reduzieren. +3. **Transparente Hintergründe:** Standardmäßig können PNGs transparent sein. Wenn Sie einen undurchsichtigen Hintergrund benötigen (z. B. für E‑Mail‑Thumbnails), setzen Sie `BackgroundColor` wie oben gezeigt. +4. **Skriptausführung:** Aspose.HTML führt kein JavaScript aus. Wenn Ihr Diagramm mit einer clientseitigen Bibliothek wie Chart.js erstellt wurde, müssen Sie das Diagramm vorab in ein statisches ``‑Element rendern oder stattdessen einen Headless‑Browser verwenden. + +## Vollständiges funktionierendes Beispiel + +Unten finden Sie das vollständige Programm, das Sie in eine Konsolen‑App kopieren‑und‑einfügen können. Es enthält alle Schritte, Fehlerbehandlung und die oben besprochenen optionalen Anpassungen. + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +Führen Sie das Programm aus, und Sie sehen eine Bestätigungsnachricht gefolgt von den Bildabmessungen. Öffnen Sie `chart.png` in einem beliebigen Viewer, um zu bestätigen, dass das Diagramm exakt wie das ursprüngliche HTML aussieht. + +## Fazit + +Sie haben jetzt eine solide, + +{{< /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/german/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/german/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..d74078a75 --- /dev/null +++ b/html/german/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-04-19 +description: Erfahren Sie, wie Sie HTML mit Aspose.Html und einem benutzerdefinierten + Ressourcen‑Handler als ZIP speichern. Entdecken Sie außerdem, wie Sie eine URL in + ZIP konvertieren und HTML in wenigen Minuten als ZIP herunterladen. +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: de +og_description: 'HTML als ZIP speichern leicht gemacht: Verwenden Sie Aspose.Html, + einen benutzerdefinierten Ressourcen‑Handler und ZipSaveOptions, um jede URL in + ein herunterladbares ZIP‑Archiv zu konvertieren.' +og_title: HTML als ZIP speichern mit einem benutzerdefinierten Ressourcen‑Handler + – Schnelltutorial +tags: +- Aspose.Html +- C# +- Web scraping +title: HTML als ZIP speichern mit einem benutzerdefinierten Ressourcen‑Handler – Schritt‑für‑Schritt‑Anleitung +url: /de/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML als ZIP speichern – Komplettes Tutorial + +Haben Sie schon einmal **HTML als ZIP speichern** müssen, um eine komplette Seite mit Bildern, CSS und Skripten in einem handlichen Paket zu verschicken? Vielleicht bauen Sie einen Crawler, der Artikel archiviert, oder Sie wollen einfach einen schnellen „Download HTML als ZIP“-Button für Ihre Nutzer bereitstellen. Wie auch immer, Sie fragen sich wahrscheinlich, wie das geht, ohne Millionen Zeilen Datei‑IO‑Code zu schreiben. + +Die gute Nachricht: Aspose.Html erledigt das im Handumdrehen, und mit einem **benutzerdefinierten Resource‑Handler** können Sie exakt bestimmen, wohin jeder Ressourcen‑Stream geht. In diesem Leitfaden zeigen wir Ihnen außerdem, wie Sie **URL in ZIP konvertieren**, **HTML als ZIP herunterladen** und **Webseiten‑Ressourcen für die Offline‑Nutzung speichern** – alles in einem einzigen, eigenständigen C#‑Programm. + +## Was Sie lernen werden + +- Installieren der Aspose.Html‑Bibliothek (NuGet macht das kinderleicht). +- Schreiben eines `ResourceHandler`, der für jede von Aspose.Html benötigte Ressource einen `Stream` bereitstellt. +- Laden einer entfernten Seite (oder einer lokalen Datei) und Aspose.Html anweisen, alles in ein ZIP‑Archiv zu packen. +- Überprüfen, dass das resultierende `output.zip` die HTML‑Datei plus alle verlinkten Assets enthält. + +Keine externen Tools, kein manuelles Zip‑Datei‑Herumfummeln – nur sauberer, kompilierten Code, den Sie in jedes .NET‑Projekt einbinden können. + +## Voraussetzungen + +| Anforderung | Warum wichtig | +|-------------|----------------| +| .NET 6.0 oder höher (der Code funktioniert auch mit .NET Framework 4.7+) | Aspose.Html zielt auf moderne Laufzeiten; ältere Frameworks können einige APIs vermissen. | +| Visual Studio 2022 (oder jede andere IDE Ihrer Wahl) | Hilfreich zum Debuggen und zum Betrachten des erzeugten ZIPs. | +| Internetzugang für die Beispiel‑URL (`https://example.com`) | Wir holen eine Live‑Seite, um **URL in ZIP konvertieren** zu demonstrieren. | +| NuGet‑Paket `Aspose.Html` (v23.12 oder neuer) | Diese Bibliothek liefert `HTMLDocument`, `ZipSaveOptions` und die Basisklasse `ResourceHandler`. | + +Falls Sie bereits ein .NET‑Projekt haben, führen Sie einfach aus: + +```bash +dotnet add package Aspose.Html +``` + +Das ist die gesamte Einrichtung, die Sie benötigen. + +## Schritt 1: Einen benutzerdefinierten Resource‑Handler erstellen + +Das Herzstück der Lösung ist eine Klasse, die von `ResourceHandler` erbt. Aspose.Html ruft `HandleResource` für jede Datei auf, die es schreiben möchte – HTML, Bilder, CSS, JavaScript, was auch immer. Durch Rückgabe eines `Stream` bestimmen Sie, wohin die Daten gehen. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**Warum ein benutzerdefinierter Handler?** +Weil das ältere `IOutputStorage`‑Interface veraltet ist und `ResourceHandler` Ihnen die volle Kontrolle über das Ausgabemedium gibt. Außerdem können Sie `ResourceInfo` inspizieren – praktisch, wenn Sie z. B. nur Bilder behalten und Schriftarten überspringen wollen. + +## Schritt 2: Das HTML‑Dokument laden (oder URL in ZIP konvertieren) + +Aspose.Html kann aus einer URL, einem Dateipfad oder einem rohen HTML‑String laden. Hier demonstrieren wir das Laden einer Live‑Seite, was der typische Anwendungsfall ist, wenn Sie **HTML als ZIP herunterladen** möchten. + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +Falls Sie den HTML‑Quellcode bereits in einer Variable haben, übergeben Sie ihn einfach dem Konstruktor: + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## Schritt 3: Handler an `ZipSaveOptions` anbinden + +`ZipSaveOptions` sagt Aspose.Html *wie* das ZIP‑Archiv erstellt werden soll. Die entscheidende Eigenschaft ist `OutputStorage`, die wir auf unsere `MyHandler`‑Instanz setzen. + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +Sie können zudem die Kompressionsstufe, Ordnernamen im Archiv oder sogar eine Manifest‑Datei anpassen – Details finden Sie in der Aspose‑Dokumentation, aber die Vorgabewerte funktionieren für die meisten Szenarien hervorragend. + +## Schritt 4: Das Dokument als ZIP‑Archiv speichern + +Jetzt passiert die Magie. Die `Save`‑Methode iteriert über jede Ressource, ruft `HandleResource` auf und schreibt die Bytes in den zurückgegebenen Stream. Da unser Handler jedes Mal einen frischen `MemoryStream` liefert, sammelt Aspose.Html später alle Streams und packt sie in `output.zip`. + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**Was Sie sehen werden:** +- `output.zip` im Stammverzeichnis Ihres Projektordners. +- Im ZIP: `index.html` (die Hauptseite) plus Unterordner wie `images/`, `css/`, `scripts/` mit exakt den Dateien, die der Browser angefordert hätte. + +## Schritt 5: Ergebnis überprüfen (optional, aber empfohlen) + +Ein kurzer Plausibilitätstest stellt sicher, dass Sie **Webseiten‑Ressourcen** korrekt **gespeichert** haben. + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +Sie sollten Einträge für `index.html`, verknüpfte Bilder (`logo.png`), CSS‑Dateien und JavaScript‑Dateien sehen. Fehlt etwas, prüfen Sie die `ResourceInfo`‑Logik in `MyHandler`. + +## Vollständiges Beispiel + +Alles zusammengefügt, hier das komplette Programm, das Sie in eine Konsolen‑App kopieren können. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Programm starten (`dotnet run`) und Sie erhalten ein sauberes `output.zip`. Öffnen Sie es mit einem beliebigen Archiv‑Manager und Sie können die gespeicherte Seite offline durchblättern – genau das, was Sie für die **Download‑HTML‑als‑ZIP**‑Funktion benötigen. + +## Häufige Fragen & Sonderfälle + +| Frage | Antwort | +|-------|----------| +| *Was, wenn ich das ZIP in Azure Blob Storage speichern muss?* | Ersetzen Sie `MemoryStream` durch einen Stream, der direkt in einen Blob schreibt (z. B. `CloudBlockBlob.OpenWrite()`). Die Handler‑Abstraktion macht das trivial. | +| *Kann ich bestimmte Ressourcen herausfiltern?* | Ja. In `HandleResource` prüfen Sie `info.ResourceType` oder `info.Url`. Rückgabe von `null` überspringt die Ressource, oder Sie geben einen Stream zurück, der nichts schreibt. | +| *Ist das ZIP passwortgeschützt?* | `ZipSaveOptions` besitzt eine `Password`‑Eigenschaft. Setzen Sie sie vor dem Aufruf von `Save`, wenn Sie Verschlüsselung benötigen. | +| *Wie verhalte ich mich bei großen Seiten mit Dutzenden Megabytes an Assets?* | Die Nutzung von `MemoryStream` für alles kann den RAM erschöpfen. Wechseln Sie zu einem `FileStream`, der in einen temporären Ordner schreibt, und lassen Sie Aspose.Html diese Dateien komprimieren. | +| *Funktioniert das unter .NET Core auf Linux?* | Absolut. Aspose.Html ist plattformübergreifend; stellen Sie nur sicher, dass die Laufzeit Schreibrechte hat. | + +## Pro‑Tipps + +- **Pro‑Tipp:** Wenn Sie nur an HTML und Bildern interessiert sind, prüfen Sie `info.ResourceType == ResourceType.Image` und überspringen Sie Skripte oder Schriftarten, um das ZIP klein zu halten. +- **Achten Sie auf:** Manche Seiten blockieren automatisierte Anfragen. Setzen Sie einen eigenen `User-Agent` über `HtmlLoadOptions`, falls Sie einen 403‑Fehler erhalten. +- **Hinweis:** Nach dem Erzeugen des ZIPs können Sie es direkt aus einem ASP.NET‑Controller mit `FileResult` ausliefern und Ihren Nutzern einen Ein‑Klick‑**Download‑HTML‑als‑ZIP**‑Button bieten. + +## Fazit + +Sie haben jetzt eine solide, produktionsreife Methode, **HTML als ZIP zu speichern** – mit Aspose.Html und einem **benutzerdefinierten Resource‑Handler**. Durch Laden einer beliebigen URL, Konfiguration von `ZipSaveOptions` und Bereitstellung von Streams im Handler können Sie **URL in ZIP konvertieren**, **HTML als ZIP herunterladen** und **Webseiten‑Ressourcen** mit nur wenigen Zeilen C# speichern. + +Experimentieren Sie gern – Streams auf Festplatte, Cloud‑Speicher oder sogar in einer Datenbank ablegen. Das Muster bleibt gleich und das Ergebnis ist stets ein ordentliches Archiv, das Sie verteilen, cachen oder für immer archivieren können. + +--- + +![Diagram illustrating the save html as zip workflow – from loading a URL to producing a ZIP file](/images/save-html-as-zip.png) + +*Bild‑Alt‑Text:* **Workflow‑Diagramm zum Speichern von HTML als ZIP** + +Wenn Ihnen dieses Tutorial geholfen hat, hinterlassen Sie einen Kommentar, teilen Sie es mit einem Kollegen oder geben Sie dem Repository, in dem Sie Ihre Hilfsskripte aufbewahren, einen Stern. Viel Spaß beim Coden! + +{{< /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/german/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/german/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..b2c2f0e12 --- /dev/null +++ b/html/german/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-04-19 +description: Speichern Sie eine Webseite als ZIP mit Aspose.HTML in C#. Erfahren Sie, + wie Sie eine URL in ZIP konvertieren, HTML in ZIP exportieren und eine Webseite + als ZIP herunterladen – mit einem einfachen Codebeispiel. +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: de +og_description: Speichern Sie eine Webseite als ZIP mit Aspose.HTML in C#. Diese Anleitung + zeigt, wie Sie eine URL in ein ZIP konvertieren, HTML in ein ZIP exportieren und + eine Webseite in wenigen Schritten als ZIP herunterladen. +og_title: Webseite als ZIP mit Aspose.HTML speichern – Vollständiges C#‑Tutorial +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: Webseite als ZIP mit Aspose.HTML speichern – Vollständiges C#‑Tutorial +url: /de/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Webseite als ZIP speichern mit Aspose.HTML – Vollständiges C#‑Tutorial + +Need to **Webseite als ZIP speichern** for offline archiving, automated testing, or just to ship a snapshot of a site? You’re not alone. In this tutorial we’ll walk through how to **URL in ZIP konvertieren**, **HTML in ZIP exportieren**, and even **Webseite als ZIP herunterladen** with a handful of clean C# lines. + +We'll cover everything from project setup to the final ZIP file on disk, and we’ll sprinkle in a few practical tips you won’t find in the official docs. By the end you’ll have a reusable solution that can **ZIP aus HTML erstellen** whenever you need it. + +## Was Sie benötigen + +- **.NET 6.0** (or any recent .NET version) – Aspose.HTML works with .NET Core and .NET Framework alike. +- **Aspose.HTML for .NET** NuGet package – `Install-Package Aspose.HTML`. +- A modest amount of C# experience – if you can write a `Console.WriteLine`, you’re good to go. +- An internet‑connected machine for the initial download (the code itself works offline once the ZIP is created). + +![Illustration des Speicherns einer Webseite als ZIP mit Aspose.HTML](save-webpage-as-zip.png "Diagramm, das den Workflow zum Speichern einer Webseite als ZIP zeigt") + +## Webseite als ZIP speichern – Überblick + +Auf hoher Ebene besteht der Prozess aus drei Komponenten: + +1. **A custom `ResourceHandler`** that tells Aspose.HTML where to write each external resource (images, CSS, scripts). +2. **`ZipSaveOptions`** that bind the handler to a ZIP archive and let you tweak rendering (antialiasing, font hints, etc.). +3. **The `HTMLDocument.Save` call** that pulls everything together, streams the page and all its assets into the ZIP file. + +That’s it. The heavy lifting is done by Aspose.HTML, so you can focus on the “why” and “when” instead of wrestling with low‑level streams. + +--- + +## Schritt 1: Projekt einrichten und Aspose.HTML hinzufügen + +First, spin up a new console project (or drop the code into an existing app). Open a terminal and run: + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +The `Aspose.HTML` package ships with all the types we’ll need: `HTMLDocument`, `ZipSaveOptions`, `ImageRenderingOptions`, and the abstract `ResourceHandler`. + +> **Pro tip:** If you’re targeting .NET Framework, replace `dotnet` commands with the NuGet Package Manager UI in Visual Studio – the same DLLs get added. + +--- + +## Schritt 2: Einen benutzerdefinierten `ZipHandler`‑Ressourcen‑Handler erstellen + +Aspose.HTML calls `HandleResource` for every external file it encounters while parsing the page. By overriding this method we can direct each resource into a ZIP entry instead of the file system. + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### Warum ein benutzerdefinierter Handler? + +Without it, Aspose.HTML would drop resources next to the HTML file on disk. By feeding a `ZipArchive`, we keep **everything bundled** – perfect for distribution or for later extraction by another service. + +--- + +## Schritt 3: `ZipSaveOptions` mit Bild‑Rendering konfigurieren + +Now we tie the handler to the save options and turn on a few rendering tweaks that improve the visual fidelity of screenshots or PDF‑like conversions. + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **Why enable antialiasing and hinting?** When the page is later rendered to a bitmap (e.g., for a thumbnail), these flags reduce jagged edges and make small fonts readable—especially important if you plan to embed the images elsewhere. + +--- + +## Schritt 4: HTML‑Dokument laden und als ZIP speichern + +With the handler and options ready, loading a remote page is as simple as passing its URL to `HTMLDocument`. The `Save` method will invoke `HandleResource` for every linked asset. + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +At this point `zipStream` holds a complete **ZIP archive that contains**: + +- `index.html` (the main page) +- All CSS files referenced by `` tags +- Images, fonts, and JavaScript files required to render the page offline + +### Randfälle & Variationen + +| Situation | What to Adjust | +|----------------------------------------|-----------------------------------------------------------------------------------| +| **Authentication required** | Use `HTMLDocument(string url, LoadOptions options)` and set `options.Credentials`. | +| **Very large pages (>100 MB)** | Write directly to a `FileStream` instead of `MemoryStream` to avoid high RAM usage. | +| **Relative URLs that start with “//”**| The handler automatically normalizes them; just ensure the `BaseUrl` is set. | +| **Custom folder structure inside ZIP**| Modify `info.Path` inside `HandleResource` before creating the entry. | + +--- + +## Schritt 5: ZIP‑Datei speichern und Ergebnis prüfen + +Finally, we write the in‑memory ZIP to disk. This step is optional if you intend to send the stream over the network, but it makes verification easy. + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**Expected outcome:** Opening `result.zip` shows an `index.html` file that, when opened in a browser offline, looks identical to the live page (provided all external assets were reachable during the download). + +--- + +## Häufige Fragen & Antworten + +**Q: Does this approach work with pages that use lazy‑loaded images?** +A: Yes, as long as the images are requested during the initial DOM walk. If a script loads images after the page load, you may need to trigger a manual “render” by calling `document.Render()` before `Save`. + +**Q: Can I compress the ZIP further?** +A: The `ZipArchive` API uses the default compression level. For aggressive compression, instantiate it with `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)`. + +**Q: What if I need a password‑protected ZIP?** +A: The built‑in `ZipArchive` doesn’t support encryption. In that case, pipe the output stream through a third‑party library like `SharpZipLib` after Aspose.HTML finishes writing. + +--- + +## Pro‑Tipps für den Produktionseinsatz + +- **Reuse the `ZipHandler`** when processing multiple pages in a batch; just reset the underlying `MemoryStream` between runs. +- **Log + +{{< /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/greek/net/generate-jpg-and-png-images/_index.md b/html/greek/net/generate-jpg-and-png-images/_index.md index 5fd47cce3..0dcf8e5f5 100644 --- a/html/greek/net/generate-jpg-and-png-images/_index.md +++ b/html/greek/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ url: /el/net/generate-jpg-and-png-images/ Μάθετε πώς να βελτιώσετε την ποιότητα των εικόνων ενεργοποιώντας το antialiasing κατά τη μετατροπή αρχείων DOCX σε PNG ή JPG. ### [Μετατροπή docx σε png – δημιουργία αρχείου zip με C# σεμινάριο](./convert-docx-to-png-create-zip-archive-c-tutorial/) Μάθετε πώς να μετατρέψετε αρχεία DOCX σε PNG και να δημιουργήσετε αρχείο ZIP χρησιμοποιώντας C#. +### [Πώς να αποδώσετε HTML σε PNG – Πλήρης οδηγός C#](./how-to-render-html-to-png-complete-c-guide/) +Μάθετε πώς να μετατρέψετε HTML σε PNG χρησιμοποιώντας C# με πλήρη βήμα-βήμα οδηγίες. ## Σύναψη diff --git a/html/greek/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/greek/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..2ce3f0b28 --- /dev/null +++ b/html/greek/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,159 @@ +--- +category: general +date: 2026-04-19 +description: Πώς να αποδώσετε HTML σε PNG με το Aspose.Html. Μάθετε πώς να μετατρέπετε + HTML σε PNG, να αποθηκεύετε HTML ως PNG και να δημιουργείτε εικόνα από HTML σε λίγα + λεπτά. +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: el +og_description: Πώς να αποδώσετε HTML σε PNG με το Aspose.Html. Ακολουθήστε αυτόν + τον βήμα‑βήμα οδηγό για να μετατρέψετε HTML σε PNG, να αποθηκεύσετε HTML ως PNG + και να δημιουργήσετε εικόνα από HTML. +og_title: Πώς να μετατρέψετε HTML σε PNG – Πλήρης οδηγός C# +tags: +- Aspose.Html +- C# +title: Πώς να αποδώσετε HTML σε PNG – Πλήρης οδηγός C# +url: /el/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να Μετατρέψετε HTML σε PNG – Πλήρης Οδηγός C# + +Έχετε αναρωτηθεί ποτέ **πώς να αποδώσετε HTML** σε αρχείο εικόνας χωρίς να ανοίξετε έναν περιηγητή; Δεν είστε οι μόνοι. Σε πολλά έργα—μικρογραφίες email, δημιουργία PDF ή απλώς γρήγορες προεπισκοπήσεις—χρειάζεται **να μετατρέψετε HTML σε PNG** άμεσα. + +Σε αυτό το tutorial θα περάσουμε από μια πρακτική λύση χρησιμοποιώντας το Aspose.Html για .NET, καλύπτοντας τα πάντα από την εγκατάσταση της βιβλιοθήκης μέχρι τη ρύθμιση του text‑hinting για καθαρά μικρά γράμματα. Στο τέλος θα μπορείτε να **αποθηκεύσετε HTML ως PNG**, **δημιουργήσετε εικόνα από HTML**, και ακόμη να ρυθμίσετε επιλογές απόδοσης για σενάρια άκρων. + +## Τι Θα Χρειαστείτε + +- **.NET 6+** (ή .NET Framework 4.6.2+). Το API λειτουργεί το ίδιο σε όλα τα runtimes. +- **Aspose.Html** πακέτο NuGet – `Install-Package Aspose.Html`. +- Ένα απλό αρχείο HTML (π.χ., `article.html`) που θέλετε να μετατρέψετε σε εικόνα. +- Visual Studio, Rider ή οποιονδήποτε επεξεργαστή προτιμάτε. + +Αυτό είναι όλο—χωρίς επιπλέον εξαρτήσεις, χωρίς headless Chrome, μόνο καθαρό C#. + +## Βήμα 1: Εγκατάσταση Aspose.Html και Προσθήκη Namespaces + +Πρώτα, κατεβάστε τη βιβλιοθήκη από το NuGet. Ανοίξτε το Package Manager Console και εκτελέστε: + +```powershell +Install-Package Aspose.Html +``` + +Αφού εγκατασταθεί, προσθέστε τις απαιτούμενες οδηγίες `using` στην αρχή του αρχείου σας: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +Αυτά τα namespaces σας δίνουν πρόσβαση στο μοντέλο εγγράφου, στην απόδοση εικόνας και στις λεπτομερείς επιλογές κειμένου που θα χρειαστούμε αργότερα. + +> **Pro tip:** Αν χρησιμοποιείτε αρχείο .csproj, μπορείτε επίσης να προσθέσετε χειροκίνητα ``. + +## Βήμα 2: Φόρτωση του HTML Εγγράφου + +Χρειάζεστε μια παρουσία `HTMLDocument` που να δείχνει στο αρχείο προέλευσης. Το Aspose.Html μπορεί να διαβάσει από διαδρομή, ροή ή ακόμη και URL. + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Γιατί είναι σημαντικό:** Η φόρτωση του εγγράφου μία φορά μειώνει τη χρήση μνήμης. Αν σκοπεύετε να αποδώσετε πολλές σελίδες, επαναχρησιμοποιήστε το ίδιο αντικείμενο `HTMLDocument` όπου είναι δυνατόν. + +## Βήμα 3: Ρύθμιση Απόδοσης Κειμένου για Μικρές Γραμματοσειρές + +Κατά την απόδοση πολύ μικρού κειμένου, συχνά εμφανίζονται θολές άκρες. Η ενεργοποίηση του hinting λέει στον rasterizer να ευθυγραμμίζει τα glyphs στα όρια των pixel, βελτιώνοντας δραστικά την αναγνωσιμότητα. + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +Μπορείτε επίσης να ελέγξετε το anti‑aliasing, το subpixel rendering, ή ακόμη να ορίσετε μια προσαρμοσμένη συλλογή γραμματοσειρών—χρήσιμο αν το HTML σας αναφέρει web fonts. + +## Βήμα 4: Διαμόρφωση Επιλογών Απόδοσης Εικόνας + +Τώρα συνδέουμε το `TextOptions` με τις ρυθμίσεις εικόνας. Μπορείτε επίσης να ορίσετε χρώμα φόντου, DPI ή μορφή εικόνας (PNG, JPEG, BMP). + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **Περίπτωση άκρου:** Αν το HTML σας είναι πιο φαρδύ από τις τυπικές διαστάσεις οθόνης, σκεφτείτε να ορίσετε `Width` και `Height` στο `ImageRenderingOptions` για να αποφύγετε τεράστιες PNG. + +## Βήμα 5: Απόδοση του HTML σε Αρχείο PNG + +Τέλος, καλέστε το `RenderToImage`. Η υπερφόρτωση μεθόδου που χρησιμοποιούμε επιτρέπει να καθορίσετε τη διαδρομή εξόδου και τις επιλογές που μόλις δημιουργήσατε. + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +Όταν εκτελέσετε το πρόγραμμα, το Aspose.Html αναλύει το markup, εφαρμόζει το CSS, διατάσσει τη σελίδα και το rasterizes σε `article.png`. Ανοίξτε το αρχείο με οποιονδήποτε προβολέα εικόνων—θα πρέπει να δείτε ένα pixel‑perfect στιγμιότυπο του αρχικού HTML. + +![how to render html as PNG using Aspose.Html](render-html-png.png) + +*Κείμενο alt εικόνας: **how to render html** ως PNG χρησιμοποιώντας Aspose.Html* + +## Bonus: Διαχείριση Πολλαπλών Σελίδων ή Κλιμάκωση + +Μερικές φορές ένα μόνο αρχείο HTML περιέχει πολλές ενότητες `` (π.χ., για εκτύπωση). Μπορείτε να κάνετε βρόχο μέσω του `htmlDoc.Pages` και να αποδώσετε κάθε σελίδα ξεχωριστά: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +Αν χρειάζεστε μικρογραφία αντί για πλήρη εικόνα, προσαρμόστε το `imgOpts.Width` και `imgOpts.Height` πριν την απόδοση. Η βιβλιοθήκη θα διατηρήσει αυτόματα την αναλογία διαστάσεων. + +--- + +## Συμπέρασμα + +Τώρα έχετε μια σταθερή, έτοιμη για παραγωγή συνταγή για **πώς να αποδώσετε HTML** σε εικόνα PNG χρησιμοποιώντας το Aspose.Html. Από την εγκατάσταση του πακέτου, τη φόρτωση του markup, τη λεπτομερή ρύθμιση του text hinting, μέχρι την κλήση του `RenderToImage`, καλύφθηκε κάθε βήμα. + +Με αυτή τη γνώση μπορείτε να **μετατρέψετε HTML σε PNG**, **αποθηκεύσετε HTML ως PNG**, και **δημιουργήσετε εικόνα από HTML** για οποιαδήποτε εφαρμογή .NET—είτε πρόκειται για web service που δημιουργεί μικρογραφίες είτε για desktop εργαλείο που αρχειοθετεί ιστοσελίδες. + +Στη συνέχεια, εξερευνήστε συναφή θέματα όπως **render HTML to image** με διαφορετικές μορφές (JPEG, BMP) ή την ενσωμάτωση του PNG σε PDF χρησιμοποιώντας Aspose.PDF. Μπορείτε επίσης να πειραματιστείτε με κλιμάκωση DPI για εκτυπώσεις υψηλής ανάλυσης, ή να τροφοδοτήσετε δυναμικό 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/greek/net/html-extensions-and-conversions/_index.md b/html/greek/net/html-extensions-and-conversions/_index.md index 013b0ec4b..502f6371a 100644 --- a/html/greek/net/html-extensions-and-conversions/_index.md +++ b/html/greek/net/html-extensions-and-conversions/_index.md @@ -61,6 +61,8 @@ url: /el/net/html-extensions-and-conversions/ Μετατροπή HTML σε MHTML σε .NET με το Aspose.HTML - Ένας βήμα προς βήμα οδηγός για αποτελεσματική αρχειοθέτηση περιεχομένου ιστού. Μάθετε πώς να χρησιμοποιείτε το Aspose.HTML για .NET για τη δημιουργία αρχείων MHTML. ### [Μετατροπή HTML σε PNG σε .NET με Aspose.HTML](./convert-html-to-png/) Ανακαλύψτε πώς να χρησιμοποιήσετε το Aspose.HTML για .NET για χειρισμό και μετατροπή εγγράφων HTML. Οδηγός βήμα προς βήμα για αποτελεσματική ανάπτυξη .NET. +### [Μετατροπή HTML σε PNG σε C# – Απόδοση HTML ως εικόνα](./convert-html-to-png-in-c-render-html-as-image/) +Μάθετε πώς να αποδίδετε HTML ως εικόνα PNG χρησιμοποιώντας C# και Aspose.HTML για .NET. ### [Μετατροπή HTML σε TIFF στο .NET με Aspose.HTML](./convert-html-to-tiff/) Μάθετε πώς να μετατρέπετε HTML σε TIFF με το Aspose.HTML για .NET. Ακολουθήστε τον βήμα προς βήμα οδηγό μας για αποτελεσματική βελτιστοποίηση περιεχομένου ιστού. ### [Μετατροπή HTML σε XPS σε .NET με Aspose.HTML](./convert-html-to-xps/) @@ -68,11 +70,15 @@ url: /el/net/html-extensions-and-conversions/ ### [Πώς να συμπιέσετε HTML σε C# – Αποθήκευση HTML σε Zip](./how-to-zip-html-in-c-save-html-to-zip/) Μάθετε πώς να συμπιέσετε αρχεία HTML σε αρχείο ZIP χρησιμοποιώντας το Aspose.HTML για .NET σε C#. ### [Δημιουργία εγγράφου HTML με μορφοποιημένο κείμενο και εξαγωγή σε PDF – Πλήρης οδηγός](./create-html-document-with-styled-text-and-export-to-pdf-full/) -Μάθετε πώς να δημιουργήσετε ένα έγγραφο HTML με μορφοποιημένο κείμενο και να το εξάγετε σε PDF χρησιμοποιώντας το Aspose.HTML για .NET. +Μάθετε πώς να δημιουργήσετε ένα έγγραφο HTML με μορφοποιμένο κείμενο και να το εξάγετε σε PDF χρησιμοποιώντας το Aspose.HTML για .NET. ### [Αποθήκευση HTML ως ZIP – Πλήρης Εκπαιδευτικό C#](./save-html-as-zip-complete-c-tutorial/) Μάθετε πώς να αποθηκεύετε HTML σε αρχείο ZIP με C# και Aspose.HTML. ### [Αποθήκευση HTML σε ZIP σε C# – Πλήρες Παράδειγμα Εντός Μνήμης](./save-html-to-zip-in-c-complete-in-memory-example/) Μάθετε πώς να αποθηκεύετε HTML σε αρχείο ZIP με C# χρησιμοποιώντας πλήρες παράδειγμα εντός μνήμης. +### [Αποθήκευση HTML ως ZIP με προσαρμοσμένο διαχειριστή πόρων – οδηγός βήμα‑βήμα](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +Αποθηκεύστε HTML ως ZIP με προσαρμοσμένο διαχειριστή πόρων, ακολουθώντας έναν πλήρη οδηγό βήμα‑βήμα. +### [Αποθήκευση ιστοσελίδας ως ZIP με Aspose.HTML – Πλήρης C# Εκπαίδευση](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +Μάθετε πώς να αποθηκεύετε μια ιστοσελίδα ως αρχείο ZIP χρησιμοποιώντας Aspose.HTML σε C# με πλήρη οδηγό βήμα‑βήμα. ## Σύναψη diff --git a/html/greek/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/greek/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..2ba9b1c04 --- /dev/null +++ b/html/greek/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-04-19 +description: Μετατροπή HTML σε PNG σε C# χρησιμοποιώντας το Aspose.HTML – ένας γρήγορος + οδηγός για την απόδοση του HTML ως εικόνα και την αποθήκευση του διαγράμματος ως + PNG με εξομάλυνση. +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: el +og_description: Μετατρέψτε το HTML σε PNG σε C# γρήγορα. Μάθετε πώς να αποδίδετε το + HTML ως εικόνα, να αποθηκεύετε το γράφημα ως PNG και να δημιουργείτε PNG από HTML + με το Aspose.HTML. +og_title: Μετατροπή HTML σε PNG σε C# – Απόδοση HTML ως εικόνα +tags: +- Aspose.HTML +- C# +- Image Processing +title: Μετατροπή HTML σε PNG σε C# – Απόδοση HTML ως εικόνα +url: /el/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Μετατροπή HTML σε PNG σε C# – Απόδοση HTML ως Εικόνα + +Έχετε ποτέ χρειαστεί να **convert HTML to PNG** σε C# αλλά δεν ήσασταν σίγουροι ποια βιβλιοθήκη θα σας δώσει ένα καθαρό αποτέλεσμα; Δεν είστε μόνοι. Είτε εξάγετε ένα δυναμικό γράφημα, είτε μετατρέπετε ένα πρότυπο email σε μικρογραφία, είτε απλώς χρειάζεστε ένα στατικό στιγμιότυπο μιας ιστοσελίδας, η δυνατότητα να **render HTML as image** είναι ένα χρήσιμο κόλπο σε κάθε εργαλειοθήκη προγραμματιστή. + +Σε αυτό το tutorial θα περάσουμε από όλη τη διαδικασία μετατροπής ενός αρχείου HTML σε αρχείο PNG με το Aspose.HTML. Στο τέλος θα μπορείτε να **save chart as PNG**, **generate PNG from HTML**, και ακόμη να ρυθμίσετε τις ρυθμίσεις anti‑aliasing για ένα πιο γυαλιστερό αποτέλεσμα. Χωρίς περιττές πληροφορίες—απλώς ένα πλήρες, εκτελέσιμο παράδειγμα που μπορείτε να ενσωματώσετε στο έργο σας σήμερα. + +## Τι Θα Χρειαστεί + +- **.NET 6.0** ή νεότερο (ο κώδικας λειτουργεί επίσης σε .NET Framework 4.6+). +- **Aspose.HTML for .NET** – μπορείτε να το αποκτήσετε από το NuGet με `Install-Package Aspose.HTML`. +- Ένα απλό αρχείο HTML (π.χ., `chart.html`) που περιέχει το markup που θέλετε να καταγράψετε. +- Ένα IDE της επιλογής σας—Visual Studio, Rider ή ακόμη και VS Code αρκεί. + +Αυτό είναι όλο. Χωρίς επιπλέον εξαρτήσεις, χωρίς headless browsers, μόνο μια ενιαία, καλά τεκμηριωμένη βιβλιοθήκη. + +![Convert HTML to PNG example](example.png "Convert HTML to PNG output") + +## Βήμα 1: Φόρτωση του Εγγράφου HTML + +Το πρώτο που πρέπει να κάνουμε είναι να δείξουμε στο Aspose.HTML το αρχείο προέλευσης. Σκεφτείτε την κλάση `HTMLDocument` ως τον καμβά που κρατά όλα όσα η βιβλιοθήκη θα ζωγραφίσει αργότερα σε ένα bitmap. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*Γιατί είναι σημαντικό:* Η φόρτωση του εγγράφου διαχωρίζει τη φάση ανάλυσης από τη φάση απόδοσης. Δίνει στη μηχανή την ευκαιρία να επιλύσει CSS, scripts και εικόνες πριν της ζητήσουμε να δημιουργήσει ένα PNG. Αν παραλείψετε αυτό το βήμα και προσπαθήσετε να αποδώσετε ακατέργαστο markup, θα καταλήξετε με μια κενή εικόνα ή ελλιπείς στυλ. + +## Βήμα 2: Διαμόρφωση των Επιλογών Απόδοσης Εικόνας + +Το Aspose.HTML από μόνο του θα σας δώσει ένα αποδεκτό PNG, αλλά συχνά θέλετε πιο ομαλές άκρες—ιδιαίτερα για γραφήματα και διανυσματικά γραφικά. Εδώ έρχεται η `ImageRenderingOptions`. + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*Συμβουλή:* Αν εργάζεστε με οθόνες υψηλής ανάλυσης (high‑DPI), αυξήστε αναλογικά το `Width` και το `Height` και αφήστε το PNG μεγαλύτερο. Μπορείτε πάντα να το μειώσετε αργότερα με έναν επεξεργαστή εικόνας. Επίσης, ο καθορισμός χρώματος φόντου αποτρέπει τα διαφανή PNG από το να φαίνονται περίεργα σε σκοτεινές σελίδες. + +## Βήμα 3: Απόδοση του HTML σε Αρχείο PNG + +Τώρα γίνεται η βαριά δουλειά. Η μέθοδος `RenderToImage` παίρνει τη διαδρομή εξόδου και τις επιλογές που ορίσαμε, και γράφει ένα PNG στο δίσκο. + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +Όταν αυτή η γραμμή ολοκληρωθεί, θα βρείτε το `chart.png` στον φάκελο προορισμού. Ανοίξτε το—είναι το γράφημα καθαρό; Αν ενεργοποιήσατε το anti‑aliasing, οι γραμμές πρέπει να είναι ομαλές και το κείμενο ευκρινές. + +### Επαλήθευση του Αποτελέσματος + +Μπορείτε γρήγορα να επαληθεύσετε την εικόνα προγραμματιστικά: + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +Αν η κονσόλα εμφανίσει μη‑μηδενικές διαστάσεις και ένα υποστηριζόμενο pixel format (π.χ., `Format32bppArgb`), έχετε επιτυχώς **convert html to png**. + +## Απόδοση HTML ως Εικόνα – Προχωρημένες Επιλογές + +Μέχρι τώρα καλύψαμε τα βασικά, αλλά σε πραγματικές συνθήκες συχνά απαιτείται περισσότερος έλεγχος. Παρακάτω είναι μερικές κοινές ρυθμίσεις που ίσως χρειαστείτε. + +### Ρύθμιση DPI για Έξοδο Εκτύπωσης Υψηλής Ποιότητας + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +Υψηλότερο DPI είναι ιδανικό όταν σκοπεύετε να ενσωματώσετε το PNG σε PDF ή να το εκτυπώσετε σε χαρτί. + +### Διαχείριση Εξωτερικών Πόρων + +Αν το HTML σας αναφέρεται σε εξωτερικά CSS, γραμματοσειρές ή εικόνες που φιλοξενούνται σε web server, βεβαιωθείτε ότι το runtime μπορεί να τα προσεγγίσει. Μπορείτε να ορίσετε ένα προσαρμοσμένο `BaseUrl`: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +Αυτό λέει στο Aspose.HTML να επιλύει τα σχετικά URLs σε σχέση με το παρεχόμενο base URL. + +### Μετατροπή Πολλαπλών Σελίδων + +Το Aspose.HTML μπορεί να αποδώσει κάθε σελίδα ενός πολυσελιδικού εγγράφου HTML σε ξεχωριστά αρχεία PNG: + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +Με αυτόν τον τρόπο μπορείτε να **save chart as PNG** για κάθε σελίδα χωρίς να κόβετε χειροκίνητα το αποτέλεσμα. + +## Αποθήκευση Γραφήματος ως PNG – Συνηθισμένα Πιθανά Σφάλματα & Πώς να τα Αποφύγετε + +1. **Missing Fonts:** Αν το HTML χρησιμοποιεί προσαρμοσμένη γραμματοσειρά που δεν είναι εγκατεστημένη στον server, το αποδοθέν PNG θα επιστρέψει σε προεπιλεγμένη γραμματοσειρά. Εγκαταστήστε τη γραμματοσειρά στο μηχάνημα ή ενσωματώστε την μέσω `@font-face` στο CSS. +2. **Large Files:** Η απόδοση ενός τεράστιου αρχείου HTML μπορεί να καταναλώσει πολύ μνήμη. Σκεφτείτε να χωρίσετε το περιεχόμενο σε σελίδες ή να μειώσετε τις διαστάσεις της εικόνας. +3. **Transparent Backgrounds:** Από προεπιλογή, τα PNG μπορεί να είναι διαφανή. Αν χρειάζεστε αδιαφανές φόντο (π.χ., για μικρογραφίες email), ορίστε το `BackgroundColor` όπως φαίνεται παραπάνω. +4. **Script Execution:** Το Aspose.HTML δεν εκτελεί JavaScript. Αν το γράφημά σας δημιουργείται με βιβλιοθήκη client‑side όπως το Chart.js, θα χρειαστεί να προ‑αποδώσετε το γράφημα σε ένα στατικό στοιχείο `` ή να χρησιμοποιήσετε headless browser. + +## Πλήρες Παράδειγμα Λειτουργίας + +Παρακάτω είναι το πλήρες πρόγραμμα που μπορείτε να αντιγράψετε‑και‑επικολλήσετε σε μια εφαρμογή console. Περιλαμβάνει όλα τα βήματα, τη διαχείριση σφαλμάτων και τις προαιρετικές ρυθμίσεις που συζητήθηκαν παραπάνω. + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +Εκτελέστε το πρόγραμμα και θα δείτε ένα μήνυμα επιβεβαίωσης ακολουθούμενο από τις διαστάσεις της εικόνας. Ανοίξτε το `chart.png` σε οποιονδήποτε προβολέα για να επιβεβαιώσετε ότι το γράφημα φαίνεται ακριβώς όπως το αρχικό 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/greek/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/greek/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..77402f30c --- /dev/null +++ b/html/greek/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,240 @@ +--- +category: general +date: 2026-04-19 +description: Μάθετε πώς να αποθηκεύετε HTML ως zip χρησιμοποιώντας το Aspose.Html + και έναν προσαρμοσμένο διαχειριστή πόρων. Ανακαλύψτε επίσης πώς να μετατρέπετε ένα + URL σε zip και να κατεβάζετε HTML ως zip σε λίγα λεπτά. +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: el +og_description: 'Αποθήκευση HTML ως zip γίνεται εύκολα: χρησιμοποιήστε το Aspose.Html, + έναν προσαρμοσμένο διαχειριστή πόρων και το ZipSaveOptions για να μετατρέψετε οποιοδήποτε + URL σε ένα λήψιμο αρχείο zip.' +og_title: Αποθήκευση HTML ως zip με προσαρμοσμένο χειριστή πόρων – γρήγορο σεμινάριο +tags: +- Aspose.Html +- C# +- Web scraping +title: Αποθήκευση HTML ως ZIP με προσαρμοσμένο διαχειριστή πόρων – οδηγός βήμα‑προς‑βήμα +url: /el/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# αποθήκευση html ως zip – πλήρης οδηγός + +Κάποτε χρειάστηκε να **αποθηκεύσετε html ως zip** ώστε να μπορείτε να στείλετε μια ολόκληρη σελίδα με τις εικόνες, το CSS και τα scripts της σε ένα μόνο, τακτοποιημένο πακέτο; Ίσως να δημιουργείτε έναν crawler που αρχειοθετεί άρθρα, ή απλώς θέλετε ένα γρήγορο κουμπί “κατέβασμα html ως zip” για τους χρήστες σας. Σε κάθε περίπτωση, πιθανότατα αναρωτιέστε πώς να το κάνετε χωρίς να γράψετε εκατομμύρια γραμμές κώδικα I/O. + +Τα καλά νέα: το Aspose.Html κάνει τη δουλειά παιχνιδάκι, και με έναν **custom resource handler** μπορείτε να αποφασίσετε ακριβώς πού θα καταλήξει κάθε ροή πόρων. Σε αυτόν τον οδηγό θα δείξουμε επίσης πώς να **convert url to zip**, πώς να **download html as zip**, και πώς να **save webpage resources** για χρήση εκτός σύνδεσης—όλα σε ένα μόνο, αυτόνομο πρόγραμμα C#. + +## Τι θα μάθετε + +- Εγκατάσταση της βιβλιοθήκης Aspose.Html (το NuGet το κάνει απλό). +- Δημιουργία ενός `ResourceHandler` που παρέχει ένα `Stream` για κάθε πόρο που το Aspose.Html θέλει να γράψει. +- Φόρτωση μιας απομακρυσμένης σελίδας (ή τοπικού αρχείου) και εντολή στο Aspose.Html να πακετάρει τα πάντα σε αρχείο ZIP. +- Επαλήθευση ότι το παραγόμενο `output.zip` περιέχει το αρχείο HTML μαζί με όλα τα συνδεδεμένα assets. + +Χωρίς εξωτερικά εργαλεία, χωρίς χειροκίνητη διαχείριση αρχείων ZIP—απλός, μεταγλωττισμένος κώδικας που μπορείτε να ενσωματώσετε σε οποιοδήποτε έργο .NET. + +## Προαπαιτούμενα + +| Απαίτηση | Γιατί είναι σημαντική | +|----------|-----------------------| +| .NET 6.0 ή νεότερο (ο κώδικας λειτουργεί επίσης σε .NET Framework 4.7+) | Το Aspose.Html στοχεύει σε σύγχρονες πλατφόρμες· παλαιότερα frameworks μπορεί να λείπουν κάποιες API. | +| Visual Studio 2022 (ή οποιοδήποτε IDE προτιμάτε) | Χρήσιμο για αποσφαλμάτωση και για να δείτε το παραγόμενο ZIP. | +| Πρόσβαση στο Internet για το δείγμα URL (`https://example.com`) | Θα κατεβάσουμε μια ζωντανή σελίδα για να δείξουμε **convert url to zip**. | +| Πακέτο NuGet `Aspose.Html` (v23.12 ή νεότερο) | Αυτή η βιβλιοθήκη παρέχει `HTMLDocument`, `ZipSaveOptions` και την κλάση βάσης `ResourceHandler`. | + +Αν έχετε ήδη ένα .NET project, απλώς τρέξτε: + +```bash +dotnet add package Aspose.Html +``` + +Αυτό είναι όλο το setup που χρειάζεστε. + +## Βήμα 1: Δημιουργία ενός Custom Resource Handler + +Η καρδιά της λύσης είναι μια κλάση που κληρονομεί από `ResourceHandler`. Το Aspose.Html καλεί το `HandleResource` για κάθε αρχείο που θέλει να γράψει—HTML, εικόνες, CSS, JavaScript, ό,τι. Επιστρέφοντας ένα `Stream` αποφασίζετε πού θα καταλήξουν τα δεδομένα. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**Γιατί ένας custom handler;** +Επειδή η παλαιότερη διεπαφή `IOutputStorage` είναι παρωχημένη, και το `ResourceHandler` σας δίνει πλήρη έλεγχο του προορισμού εξόδου. Επιπλέον, σας επιτρέπει να εξετάσετε το `ResourceInfo`—χρήσιμο αν θέλετε, για παράδειγμα, να κρατήσετε μόνο εικόνες και να παραλείψετε τις γραμματοσειρές. + +## Βήμα 2: Φόρτωση του HTML Document (ή Convert URL to Zip) + +Το Aspose.Html μπορεί να φορτώσει από URL, διαδρομή αρχείου ή ακατέργαστη συμβολοσειρά HTML. Εδώ δείχνουμε τη φόρτωση μιας ζωντανής σελίδας, που είναι η τυπική περίπτωση όταν θέλετε να **download html as zip**. + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +Αν έχετε ήδη το HTML source σε μια μεταβλητή, απλώς περάστε το στον κατασκευαστή: + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## Βήμα 3: Σύνδεση του Handler με ZipSaveOptions + +Το `ZipSaveOptions` λέει στο Aspose.Html *πώς* να δημιουργήσει το αρχείο ZIP. Η κρίσιμη ιδιότητα είναι το `OutputStorage`, το οποίο ορίζουμε στην παρουσία του `MyHandler`. + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +Μπορείτε επίσης να ρυθμίσετε το επίπεδο συμπίεσης, τα ονόματα φακέλων μέσα στο αρχείο, ή ακόμη και να ενσωματώσετε ένα αρχείο manifest—λεπτομέρειες στα docs του Aspose, αλλά οι προεπιλογές λειτουργούν άψογα για τις περισσότερες περιπτώσεις. + +## Βήμα 4: Αποθήκευση του Εγγράφου ως Αρχείο ZIP + +Τώρα συμβαίνει η μαγεία. Η μέθοδος `Save` διατρέχει κάθε πόρο, καλεί το `HandleResource`, και γράφει τα bytes στη ροή που επιστρέφεται. Επειδή ο handler μας επιστρέφει ένα νέο `MemoryStream` κάθε φορά, το Aspose.Html θα συλλέξει όλες αυτές τις ροές και θα τις πακετάρει στο `output.zip`. + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**Τι θα δείτε:** +- `output.zip` στη ρίζα του φακέλου του έργου σας. +- Μέσα στο ZIP: `index.html` (η κύρια σελίδα) και υποφακέλους όπως `images/`, `css/`, `scripts/` που περιέχουν ακριβώς τα αρχεία που θα ζήτησε ο φυλλομετρητής. + +## Βήμα 5: Επαλήθευση του Αποτελέσματος (Προαιρετικό αλλά Συνιστώμενο) + +Μια γρήγορη επιβεβαίωση εξασφαλίζει ότι έχετε **save webpage resources** σωστά. + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +Θα πρέπει να δείτε καταχωρήσεις για `index.html`, τυχόν συνδεδεμένες εικόνες (`logo.png`), αρχεία CSS και JavaScript. Αν λείπει κάτι, ελέγξτε τη λογική του `ResourceInfo` στο `MyHandler`. + +## Πλήρες Παράδειγμα Λειτουργίας + +Συνδυάζοντας όλα τα παραπάνω, ορίστε το πλήρες πρόγραμμα που μπορείτε να αντιγράψετε‑επικολλήσετε σε μια console εφαρμογή. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Τρέξτε το πρόγραμμα (`dotnet run`) και θα δημιουργηθεί ένα κομψό `output.zip`. Ανοίξτε το με οποιονδήποτε διαχειριστή αρχείων και θα μπορείτε να περιηγηθείτε στη σελίδα εκτός σύνδεσης—ακριβώς αυτό που χρειάζεστε για λειτουργικότητα **download html as zip**. + +## Συχνές Ερωτήσεις & Ακραίες Περιπτώσεις + +| Ερώτηση | Απάντηση | +|----------|----------| +| *Τι κάνω αν πρέπει να αποθηκεύσω το ZIP σε Azure Blob Storage;* | Αντικαταστήστε το `MemoryStream` με μια ροή που γράφει απευθείας σε blob (π.χ., `CloudBlockBlob.OpenWrite()`). Η αφαίρεση του handler το κάνει πανεύκολο. | +| *Μπορώ να φιλτράρω ορισμένους πόρους;* | Ναι. Μέσα στο `HandleResource`, εξετάστε `info.ResourceType` ή `info.Url`. Επιστρέψτε `null` για να παραλείψετε έναν πόρο, ή μια ροή που δεν γράφει τίποτα. | +| *Το ZIP είναι προστατευμένο με κωδικό;* | Το `ZipSaveOptions` έχει ιδιότητα `Password`. Ορίστε την πριν καλέσετε το `Save` αν χρειάζεστε κρυπτογράφηση. | +| *Τι γίνεται με μεγάλες σελίδες που έχουν δεκάδες megabytes assets;* | Η χρήση `MemoryStream` για όλα μπορεί να εξαντλήσει τη μνήμη RAM. Μεταβείτε σε `FileStream` που γράφει σε προσωρινό φάκελο, και μετά αφήστε το Aspose.Html να συμπιέσει αυτά τα αρχεία. | +| *Λειτουργεί αυτό σε .NET Core σε Linux;* | Απόλυτα. Το Aspose.Html είναι cross‑platform· απλώς βεβαιωθείτε ότι το runtime έχει δικαιώματα εγγραφής. | + +## Pro Tips + +- **Pro tip:** Αν σας ενδιαφέρει μόνο το HTML και οι εικόνες, ελέγξτε `info.ResourceType == ResourceType.Image` και παραλείψτε scripts ή fonts για μικρότερο ZIP. +- **Προσοχή:** Κάποιοι ιστότοποι μπλοκάρουν αυτοματοποιημένα αιτήματα. Ορίστε ένα custom `User-Agent` μέσω `HtmlLoadOptions` αν λάβετε σφάλμα 403. +- **Tip:** Μετά τη δημιουργία του ZIP, μπορείτε να το σερβίρετε απευθείας από έναν ASP.NET controller χρησιμοποιώντας `FileResult`, προσφέροντας στους χρήστες ένα κουμπί **download html as zip** με ένα κλικ. + +## Συμπέρασμα + +Τώρα έχετε έναν σταθερό, έτοιμο για παραγωγή τρόπο να **save html as zip** χρησιμοποιώντας το Aspose.Html και έναν **custom resource handler**. Φορτώνοντας οποιοδήποτε URL, ρυθμίζοντας το `ZipSaveOptions`, και αφήνοντας τον handler να παρέχει τις ροές, μπορείτε να **convert url to zip**, **download html as zip**, και **save webpage resources** με λίγες μόνο γραμμές C#. + +Πειραματιστείτε—αποθηκεύστε τις ροές σε δίσκο, cloud storage ή ακόμη και σε βάση δεδομένων. Το μοτίβο παραμένει το ίδιο, και το αποτέλεσμα είναι πάντα ένα τακτοποιημένο αρχείο που μπορείτε να στείλετε, να κάνετε cache ή να αρχειοθετήσετε για πάντα. + +--- + +![Diagram illustrating the save html as zip workflow – from loading a URL to producing a ZIP file](/images/save-html-as-zip.png) + +*Image alt text:* **save html as zip workflow diagram** + +Αν βρήκατε αυτόν τον οδηγό χρήσιμο, αφήστε ένα σχόλιο, μοιραστείτε το με έναν συνεργάτη, ή δώστε αστέρι στο repo όπου κρατάτε τα βοηθητικά scripts σας. Καλό coding! + +{{< /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/greek/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/greek/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..7460397ca --- /dev/null +++ b/html/greek/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,218 @@ +--- +category: general +date: 2026-04-19 +description: Αποθηκεύστε τη σελίδα ως zip χρησιμοποιώντας το Aspose.HTML σε C#. Μάθετε + πώς να μετατρέψετε ένα URL σε zip, να εξάγετε HTML σε zip και να κατεβάσετε τη σελίδα + ως zip με ένα απλό παράδειγμα κώδικα. +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: el +og_description: Αποθηκεύστε τη σελίδα ως zip με το Aspose.HTML σε C#. Αυτός ο οδηγός + δείχνει πώς να μετατρέψετε ένα URL σε zip, να εξάγετε HTML σε zip και να κατεβάσετε + τη σελίδα ως zip σε λίγα μόνο βήματα. +og_title: Αποθήκευση ιστοσελίδας ως ZIP με το Aspose.HTML – Πλήρης οδηγός C# +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: Αποθήκευση ιστοσελίδας ως ZIP με το Aspose.HTML – Πλήρης οδηγός C# +url: /el/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Αποθήκευση ιστοσελίδας ως ZIP με Aspose.HTML – Πλήρης οδηγός C# + +Χρειάζεστε **αποθήκευση ιστοσελίδας ως zip** για offline αρχειοθέτηση, αυτοματοποιημένες δοκιμές ή απλώς για να στείλετε ένα στιγμιότυπο ενός ιστότοπου; Δεν είστε μόνοι. Σε αυτό το tutorial θα δούμε πώς να **μετατρέψετε URL σε zip**, **εξάγετε HTML σε zip**, και ακόμη **κατεβάσετε ιστοσελίδα ως zip** με λίγες καθαρές γραμμές C#. + +Θα καλύψουμε τα πάντα, από τη ρύθμιση του έργου μέχρι το τελικό αρχείο ZIP στον δίσκο, και θα προσθέσουμε μερικές πρακτικές συμβουλές που δεν θα βρείτε στα επίσημα έγγραφα. Στο τέλος θα έχετε μια επαναχρησιμοποιήσιμη λύση που μπορεί να **δημιουργήσει zip από html** όποτε το χρειάζεστε. + +## Τι Θα Χρειαστεί + +- **.NET 6.0** (ή οποιαδήποτε πρόσφατη έκδοση .NET) – το Aspose.HTML λειτουργεί τόσο με .NET Core όσο και με .NET Framework. +- **Aspose.HTML for .NET** πακέτο NuGet – `Install-Package Aspose.HTML`. +- Μια βασική εμπειρία με C# – αν μπορείτε να γράψετε ένα `Console.WriteLine`, είστε έτοιμοι. +- Ένας υπολογιστής συνδεδεμένος στο διαδίκτυο για την αρχική λήψη (ο κώδικας λειτουργεί offline μόλις δημιουργηθεί το ZIP). + +Χωρίς επιπλέον SDKs, χωρίς headless browsers, μόνο καθαρό .NET και Aspose.HTML. + +![Illustration of saving webpage as zip using Aspose.HTML](save-webpage-as-zip.png "Diagram showing save webpage as zip workflow") + +## Αποθήκευση ιστοσελίδας ως ZIP – Επισκόπηση + +Σε υψηλό επίπεδο η διαδικασία αποτελείται από τρία κινούμενα μέρη: + +1. **Ένας προσαρμοσμένος `ResourceHandler`** που λέει στο Aspose.HTML πού να γράψει κάθε εξωτερικό πόρο (εικόνες, CSS, scripts). +2. **`ZipSaveOptions`** που συνδέει τον handler με ένα αρχείο ZIP και σας επιτρέπει να ρυθμίσετε την απόδοση (antialiasing, υποδείξεις γραμματοσειράς κ.λπ.). +3. **Η κλήση `HTMLDocument.Save`** που συγκεντρώνει τα πάντα, ρέει τη σελίδα και όλα τα περιουσιακά της στοιχεία στο αρχείο ZIP. + +Αυτό είναι όλο. Η βαριά δουλειά γίνεται από το Aspose.HTML, ώστε να μπορείτε να εστιάσετε στο “γιατί” και “πότε” αντί να παλεύετε με ροές χαμηλού επιπέδου. + +--- + +## Βήμα 1: Ρύθμιση του Έργου και Προσθήκη του Aspose.HTML + +Πρώτα, δημιουργήστε ένα νέο έργο console (ή ενσωματώστε τον κώδικα σε μια υπάρχουσα εφαρμογή). Ανοίξτε ένα τερματικό και εκτελέστε: + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +Το πακέτο `Aspose.HTML` περιλαμβάνει όλους τους τύπους που θα χρειαστούμε: `HTMLDocument`, `ZipSaveOptions`, `ImageRenderingOptions` και το αφηρημένο `ResourceHandler`. + +> **Συμβουλή επαγγελματία:** Αν στοχεύετε στο .NET Framework, αντικαταστήστε τις εντολές `dotnet` με το UI του NuGet Package Manager στο Visual Studio – προστίθενται τα ίδια DLLs. + +--- + +## Βήμα 2: Δημιουργία Προσαρμοσμένου Resource Handler `ZipHandler` + +Το Aspose.HTML καλεί το `HandleResource` για κάθε εξωτερικό αρχείο που συναντά κατά την ανάλυση της σελίδας. Με την υπερκάλυψη αυτής της μεθόδου μπορούμε να κατευθύνουμε κάθε πόρο σε μια καταχώρηση ZIP αντί για το σύστημα αρχείων. + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### Γιατί ένας προσαρμοσμένος handler; + +Χωρίς αυτό, το Aspose.HTML θα αποθήκευε τους πόρους δίπλα στο αρχείο HTML στον δίσκο. Με τη χρήση ενός `ZipArchive`, διατηρούμε **όλα ενσωματωμένα** – ιδανικό για διανομή ή για μετέπειτα εξαγωγή από άλλη υπηρεσία. + +--- + +## Βήμα 3: Διαμόρφωση του `ZipSaveOptions` με Απόδοση Εικόνας + +Τώρα συνδέουμε το handler με τις επιλογές αποθήκευσης και ενεργοποιούμε μερικές ρυθμίσεις απόδοσης που βελτιώνουν την οπτική πιστότητα των στιγμιότυπων ή των μετατροπών τύπου PDF. + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **Γιατί να ενεργοποιήσουμε το antialiasing και το hinting;** Όταν η σελίδα αργότερα αποδοθεί σε bitmap (π.χ., για μικρογραφία), αυτές οι σημαίες μειώνουν τις σκαλιστές άκρες και κάνουν τις μικρές γραμματοσειρές αναγνώσιμες — ιδιαίτερα σημαντικό αν σκοπεύετε να ενσωματώσετε τις εικόνες αλλού. + +--- + +## Βήμα 4: Φόρτωση του HTML Document και Αποθήκευση σε ZIP + +Με το handler και τις επιλογές έτοιμες, η φόρτωση μιας απομακρυσμένης σελίδας είναι τόσο απλή όσο η μεταβίβαση του URL στο `HTMLDocument`. Η μέθοδος `Save` θα καλέσει το `HandleResource` για κάθε συνδεδεμένο στοιχείο. + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +Σε αυτό το σημείο το `zipStream` περιέχει ένα πλήρες **αρχείο ZIP που περιλαμβάνει**: + +- `index.html` (η κύρια σελίδα) +- Όλα τα αρχεία CSS που αναφέρονται από ετικέτες `` +- Εικόνες, γραμματοσειρές και αρχεία JavaScript που απαιτούνται για την απόδοση της σελίδας offline + +### Περιπτώσεις Άκρων & Παραλλαγές + +| Situation | What to Adjust | +|----------------------------------------|-----------------------------------------------------------------------------------| +| **Απαιτείται έλεγχος ταυτότητας** | Χρησιμοποιήστε `HTMLDocument(string url, LoadOptions options)` και ορίστε `options.Credentials`. | +| **Πολύ μεγάλες σελίδες (>100 MB)** | Γράψτε απευθείας σε `FileStream` αντί για `MemoryStream` για να αποφύγετε τη μεγάλη χρήση μνήμης RAM. | +| **Σχετικές URL που ξεκινούν με “//”**| Ο handler τα κανονικοποιεί αυτόματα· απλώς βεβαιωθείτε ότι το `BaseUrl` είναι ορισμένο. | +| **Προσαρμοσμένη δομή φακέλων μέσα στο ZIP**| Τροποποιήστε το `info.Path` μέσα στο `HandleResource` πριν δημιουργήσετε την καταχώρηση. | + +--- + +## Βήμα 5: Διατήρηση του Αρχείου ZIP και Επαλήθευση του Αποτελέσματος + +Τέλος, γράφουμε το ZIP στη μνήμη στο δίσκο. Αυτό το βήμα είναι προαιρετικό αν σκοπεύετε να στείλετε τη ροή μέσω δικτύου, αλλά διευκολύνει την επαλήθευση. + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**Αναμενόμενο αποτέλεσμα:** Το άνοιγμα του `result.zip` εμφανίζει ένα αρχείο `index.html` που, όταν ανοίξει σε πρόγραμμα περιήγησης offline, φαίνεται ταυτόσημο με τη ζωντανή σελίδα (εφόσον όλα τα εξωτερικά περιουσιακά στοιχεία ήταν προσβάσιμα κατά τη λήψη). + +--- + +## Συχνές Ερωτήσεις & Απαντήσεις + +**Q: Λειτουργεί αυτή η προσέγγιση με σελίδες που χρησιμοποιούν lazy‑loaded εικόνες;** +A: Ναι, εφόσον οι εικόνες ζητηθούν κατά την αρχική περιήγηση του DOM. Αν ένα script φορτώνει εικόνες μετά τη φόρτωση της σελίδας, ίσως χρειαστεί να ενεργοποιήσετε μια χειροκίνητη “απόδοση” καλώντας `document.Render()` πριν το `Save`. + +**Q: Μπορώ να συμπιέσω περαιτέρω το ZIP;** +A: Το API `ZipArchive` χρησιμοποιεί το προεπιλεγμένο επίπεδο συμπίεσης. Για πιο έντονη συμπίεση, δημιουργήστε το με `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)`. + +**Q: Τι γίνεται αν χρειάζομαι ZIP με κωδικό πρόσβασης;** +A: Το ενσωματωμένο `ZipArchive` δεν υποστηρίζει κρυπτογράφηση. Σε αυτή την περίπτωση, προωθήστε τη ροή εξόδου μέσω μιας βιβλιοθήκης τρίτου μέρους όπως το `SharpZipLib` αφού το Aspose.HTML ολοκληρώσει τη γραφή. + +--- + +## Συμβουλές Επαγγελματικής Χρήσης για Παραγωγή + +- **Επαναχρησιμοποίηση του `ZipHandler`** όταν επεξεργάζεστε πολλές σελίδες σε μια παρτίδα· απλώς επαναρυθμίστε το υποκείμενο `MemoryStream` μεταξύ των εκτελέσεων. +- **Καταγραφή** + +{{< /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/hindi/net/generate-jpg-and-png-images/_index.md b/html/hindi/net/generate-jpg-and-png-images/_index.md index b35cbb62e..c775c33f2 100644 --- a/html/hindi/net/generate-jpg-and-png-images/_index.md +++ b/html/hindi/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ HTML दस्तावेज़ों में हेरफेर करने DOCX फ़ाइलों को PNG या JPG में परिवर्तित करते समय एंटीएलियासिंग को सक्षम करने के चरणों को जानें। ### [DOCX को PNG में परिवर्तित करें – ZIP आर्काइव बनाएं C# ट्यूटोरियल](./convert-docx-to-png-create-zip-archive-c-tutorial/) C# में DOCX फ़ाइलों को PNG छवियों में बदलें और उन्हें ZIP आर्काइव में संकलित करना सीखें। चरण-दर-चरण मार्गदर्शिका। +### [HTML को PNG में रेंडर करने की पूरी C# गाइड](./how-to-render-html-to-png-complete-c-guide/) +C# में Aspose.HTML का उपयोग करके HTML को PNG इमेज में बदलने के चरण-दर-चरण निर्देश। ## निष्कर्ष diff --git a/html/hindi/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/hindi/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..f9c54b0e5 --- /dev/null +++ b/html/hindi/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,158 @@ +--- +category: general +date: 2026-04-19 +description: Aspose.Html के साथ HTML को PNG में रेंडर कैसे करें। HTML को PNG में बदलना, + HTML को PNG के रूप में सहेजना, और मिनटों में HTML से इमेज बनाना सीखें। +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: hi +og_description: Aspose.Html के साथ HTML को PNG में रेंडर कैसे करें। HTML को PNG में + बदलने, HTML को PNG के रूप में सहेजने और HTML से इमेज बनाने के लिए इस चरण‑दर‑चरण + ट्यूटोरियल का पालन करें। +og_title: HTML को PNG में रेंडर कैसे करें – पूर्ण C# गाइड +tags: +- Aspose.Html +- C# +title: HTML को PNG में रेंडर करने का तरीका – पूर्ण C# गाइड +url: /hi/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML को PNG में रेंडर कैसे करें – पूर्ण C# गाइड + +क्या आपने कभी सोचा है **HTML को कैसे रेंडर** किया जाए एक इमेज फ़ाइल में बिना ब्राउज़र खोले? आप अकेले नहीं हैं। कई प्रोजेक्ट्स में—ईमेल थंबनेल, PDF जनरेशन, या सिर्फ त्वरित प्रीव्यू—आपको **HTML को PNG में बदलना** पड़ता है तुरंत। + +इस ट्यूटोरियल में हम Aspose.Html for .NET का उपयोग करके एक व्यावहारिक समाधान के माध्यम से चलेंगे, जिसमें लाइब्रेरी को इंस्टॉल करने से लेकर छोटे फ़ॉन्ट्स के लिए टेक्स्ट‑हिंटिंग को ट्यून करने तक सब कुछ शामिल है। अंत तक आप **HTML को PNG के रूप में सेव** कर पाएँगे, **HTML से इमेज बनाएँगे**, और यहाँ तक कि किनारे‑केस परिदृश्यों के लिए रेंडरिंग विकल्पों को भी समायोजित कर पाएँगे। + +## आपको क्या चाहिए + +- **.NET 6+** (या .NET Framework 4.6.2+). API सभी रनटाइम्स पर समान काम करता है। +- **Aspose.Html** NuGet पैकेज – `Install-Package Aspose.Html`। +- एक साधारण HTML फ़ाइल (जैसे `article.html`) जिसे आप इमेज में बदलना चाहते हैं। +- Visual Studio, Rider, या कोई भी एडिटर जो आपको पसंद हो। + +बस इतना ही—कोई अतिरिक्त निर्भरताएँ नहीं, कोई हेडलेस Chrome नहीं, सिर्फ शुद्ध C#। + +## चरण 1: Aspose.Html इंस्टॉल करें और नेमस्पेस जोड़ें + +सबसे पहले, लाइब्रेरी को NuGet से प्राप्त करें। पैकेज मैनेजर कंसोल खोलें और चलाएँ: + +```powershell +Install-Package Aspose.Html +``` + +इंस्टॉल होने के बाद, अपने फ़ाइल के शीर्ष पर आवश्यक `using` निर्देश जोड़ें: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +ये नेमस्पेस आपको डॉक्यूमेंट मॉडल, इमेज रेंडरिंग, और बाद में आवश्यक फाइन‑ग्रेन टेक्स्ट विकल्पों तक पहुँच प्रदान करते हैं। + +> **प्रो टिप:** यदि आप .csproj फ़ाइल का उपयोग कर रहे हैं, तो आप मैन्युअली `` भी जोड़ सकते हैं। + +## चरण 2: HTML डॉक्यूमेंट लोड करें + +आपको एक `HTMLDocument` इंस्टेंस चाहिए जो स्रोत फ़ाइल की ओर इशारा करे। Aspose.Html पाथ, स्ट्रीम, या यहाँ तक कि URL से भी पढ़ सकता है। + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **यह क्यों महत्वपूर्ण है:** डॉक्यूमेंट को एक बार लोड करने से मेमोरी उपयोग कम रहता है। यदि आप कई पेज रेंडर करने की योजना बना रहे हैं, तो जहाँ संभव हो वही `HTMLDocument` ऑब्जेक्ट पुनः उपयोग करें। + +## चरण 3: छोटे फ़ॉन्ट्स के लिए टेक्स्ट रेंडरिंग ट्यून करें + +छोटा टेक्स्ट रेंडर करते समय अक्सर धुंधले किनारे दिखते हैं। हिंटिंग सक्षम करने से रास्टराइज़र को ग्लिफ़ को पिक्सेल सीमाओं के साथ संरेखित करने का निर्देश मिलता है, जिससे पठनीयता में उल्लेखनीय सुधार होता है। + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +आप यहाँ एंटी‑एलियासिंग, सबपिक्सेल रेंडरिंग को भी नियंत्रित कर सकते हैं, या यहाँ एक कस्टम फ़ॉन्ट कलेक्शन भी निर्दिष्ट कर सकते हैं—यदि आपका HTML वेब फ़ॉन्ट्स का संदर्भ देता है तो यह उपयोगी है। + +## चरण 4: इमेज रेंडरिंग विकल्प कॉन्फ़िगर करें + +अब हम `TextOptions` को इमेज सेटिंग्स से बाइंड करते हैं। आप बैकग्राउंड कलर, DPI, या इमेज फ़ॉर्मेट (PNG, JPEG, BMP) भी सेट कर सकते हैं। + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **एज केस:** यदि आपका HTML सामान्य स्क्रीन आयामों से अधिक चौड़ा है, तो `ImageRenderingOptions` पर `Width` और `Height` सेट करने पर विचार करें ताकि बहुत बड़े PNG से बचा जा सके। + +## चरण 5: HTML को PNG फ़ाइल में रेंडर करें + +अंत में, `RenderToImage` को कॉल करें। हम जिस मेथड ओवरलोड का उपयोग करते हैं, वह हमें आउटपुट पाथ और हमने अभी बनाए विकल्पों को निर्दिष्ट करने देता है। + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +जब आप प्रोग्राम चलाते हैं, Aspose.Html मार्कअप को पार्स करता है, CSS लागू करता है, पेज को लेआउट करता है, और उसे `article.png` में रास्टराइज़ करता है। किसी भी इमेज व्यूअर से फ़ाइल खोलें—आपको अपने मूल HTML का पिक्सेल‑परफेक्ट स्नैपशॉट दिखना चाहिए। + +![how to render html as PNG using Aspose.Html](render-html-png.png) + +*Image alt text: **HTML को कैसे रेंडर करें** as PNG using Aspose.Html* + +## बोनस: कई पेजों को संभालना या स्केलिंग + +कभी‑कभी एक ही HTML फ़ाइल में कई `` सेक्शन होते हैं (जैसे प्रिंटिंग के लिए)। आप `htmlDoc.Pages` पर लूप करके प्रत्येक पेज को अलग‑अलग रेंडर कर सकते हैं: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +यदि आपको पूर्ण‑आकार की इमेज के बजाय थंबनेल चाहिए, तो रेंडर करने से पहले `imgOpts.Width` और `imgOpts.Height` को समायोजित करें। लाइब्रेरी स्वचालित रूप से एस्पेक्ट रेशियो को बनाए रखेगी। + +--- + +## निष्कर्ष + +अब आपके पास Aspose.Html का उपयोग करके **HTML को PNG इमेज में रेंडर करने** के लिए एक ठोस, प्रोडक्शन‑रेडी रेसिपी है। पैकेज इंस्टॉल करने से लेकर, अपने मार्कअप को लोड करने, टेक्स्ट हिंटिंग को फाइन‑ट्यून करने, और अंत में `RenderToImage` को कॉल करने तक, हर कदम कवर किया गया है। + +इस ज्ञान के साथ आप **HTML को PNG में बदल सकते हैं**, **HTML को PNG के रूप में सेव कर सकते हैं**, और **HTML से इमेज बना सकते हैं** किसी भी .NET एप्लिकेशन के लिए—चाहे वह थंबनेल जनरेट करने वाली वेब सर्विस हो या वेब पेजों को आर्काइव करने वाला डेस्कटॉप टूल। + +अगला, संबंधित विषयों का अन्वेषण करें जैसे **HTML को इमेज में रेंडर करना** विभिन्न फ़ॉर्मेट्स (JPEG, BMP) के साथ या Aspose.PDF का उपयोग करके PNG को PDF में एम्बेड करना। आप हाई‑रेज़ोल्यूशन प्रिंट्स के लिए DPI स्केलिंग के साथ प्रयोग भी कर सकते हैं, या फ़्लाई पर जेनरेट किए गए डायनामिक 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/hindi/net/html-extensions-and-conversions/_index.md b/html/hindi/net/html-extensions-and-conversions/_index.md index 45408d5a1..47fb17016 100644 --- a/html/hindi/net/html-extensions-and-conversions/_index.md +++ b/html/hindi/net/html-extensions-and-conversions/_index.md @@ -30,7 +30,7 @@ HTML एक्सटेंशन डेवलपर्स के लिए ए ## Aspose.HTML के साथ आरंभ करें -क्या आप शुरू करने के लिए तैयार हैं? .NET के लिए Aspose.HTML ट्यूटोरियल शुरुआती और अनुभवी डेवलपर्स दोनों के लिए हैं। चाहे आप HTML एक्सटेंशन और रूपांतरणों के लिए नए हों या उन्नत युक्तियों की तलाश कर रहे हों, हमारे चरण-दर-चरण मार्गदर्शिकाएँ आपकी आवश्यकताओं के अनुरूप डिज़ाइन की गई हैं। +क्या आप शुरू करने के लिए तैयार हैं? .NET के लिए Aspose.HTML ट्यूटोरियल शुरुआती और अनुभवी डेवलपर्स दोनों के लिए हैं। चाहे आप HTML एक्सटेंशन और रूपांतरणों के लिए नए हों या उन्नत युक्तियों की तलाश कर रहे हों, हमारे चरण-दर-स्टेप मार्गदर्शिकाएँ आपकी आवश्यकताओं के अनुरूप डिज़ाइन की गई हैं। ## .NET के लिए Aspose.HTML क्यों? @@ -44,42 +44,48 @@ Aspose.HTML for .NET सिर्फ़ एक लाइब्रेरी न C# में Aspose.HTML का उपयोग करके HTML को PDF में बदलने का चरण‑दर‑चरण मार्गदर्शन। ### [Aspose.HTML के साथ .NET में EPUB को छवि में बदलें](./convert-epub-to-image/) -.NET के लिए Aspose.HTML का उपयोग करके EPUB को छवियों में परिवर्तित करना सीखें। कोड उदाहरणों और अनुकूलन योग्य विकल्पों के साथ चरण-दर-चरण ट्यूटोरियल। +.NET के लिए Aspose.HTML का उपयोग करके EPUB को छवियों में परिवर्तित करना सीखें। कोड उदाहरणों और अनुकूलन योग्य विकल्पों के साथ चरण-दर-स्टेप ट्यूटोरियल। ### [Aspose.HTML के साथ .NET में EPUB को PDF में बदलें](./convert-epub-to-pdf/) -जानें कि .NET के लिए Aspose.HTML का उपयोग करके EPUB को PDF में कैसे बदलें। यह चरण-दर-चरण मार्गदर्शिका सहज दस्तावेज़ रूपांतरण के लिए अनुकूलन विकल्प, FAQ और बहुत कुछ शामिल करती है। +जानें कि .NET के लिए Aspose.HTML का उपयोग करके EPUB को PDF में कैसे बदलें। यह चरण-दर-स्टेप मार्गदर्शिका सहज दस्तावेज़ रूपांतरण के लिए अनुकूलन विकल्प, FAQ और बहुत कुछ शामिल करती है। ### [Aspose.HTML के साथ .NET में EPUB को XPS में बदलें](./convert-epub-to-xps/) -.NET के लिए Aspose.HTML का उपयोग करके .NET में EPUB को XPS में कैसे बदलें, यह जानें। सरल रूपांतरण के लिए हमारे चरण-दर-चरण मार्गदर्शिका का पालन करें। +.NET के लिए Aspose.HTML का उपयोग करके .NET में EPUB को XPS में कैसे बदलें, यह जानें। सरल रूपांतरण के लिए हमारे चरण-दर-स्टेप मार्गदर्शिका का पालन करें। ### [Aspose.HTML के साथ .NET में HTML को BMP में बदलें](./convert-html-to-bmp/) .NET के लिए Aspose.HTML का उपयोग करके .NET में HTML को BMP में कैसे बदलें, यह जानें। .NET के लिए Aspose.HTML का लाभ उठाने के लिए वेब डेवलपर्स के लिए व्यापक गाइड। ### [Aspose.HTML के साथ .NET में HTML को DOC और DOCX में बदलें](./convert-html-to-doc-docx/) -इस चरण-दर-चरण मार्गदर्शिका में .NET के लिए Aspose.HTML की शक्ति का उपयोग करना सीखें। HTML को DOCX में आसानी से बदलें और अपने .NET प्रोजेक्ट को बेहतर बनाएँ। आज ही शुरू करें! +इस चरण-दर-स्टेप मार्गदर्शिका में .NET के लिए Aspose.HTML की शक्ति का उपयोग करना सीखें। HTML को DOCX में आसानी से बदलें और अपने .NET प्रोजेक्ट को बेहतर बनाएँ। आज ही शुरू करें! ### [Aspose.HTML के साथ .NET में HTML को GIF में बदलें](./convert-html-to-gif/) -.NET के लिए Aspose.HTML की शक्ति का पता लगाएं: HTML को GIF में बदलने के लिए चरण-दर-चरण मार्गदर्शिका। पूर्वापेक्षाएँ, कोड उदाहरण, FAQ, और बहुत कुछ! Aspose.HTML के साथ अपने HTML हेरफेर को अनुकूलित करें। +.NET के लिए Aspose.HTML की शक्ति का पता लगाएं: HTML को GIF में बदलने के लिए चरण-दर-स्टेप मार्गदर्शिका। पूर्वापेक्षाएँ, कोड उदाहरण, FAQ, और बहुत कुछ! Aspose.HTML के साथ अपने HTML हेरफेर को अनुकूलित करें। ### [Aspose.HTML के साथ .NET में HTML को JPEG में बदलें](./convert-html-to-jpeg/) -.NET के लिए Aspose.HTML के साथ .NET में HTML को JPEG में बदलने का तरीका जानें। .NET के लिए Aspose.HTML की शक्ति का उपयोग करने के लिए चरण-दर-चरण मार्गदर्शिका। अपने वेब डेवलपमेंट कार्यों को आसानी से अनुकूलित करें। +.NET के लिए Aspose.HTML के साथ .NET में HTML को JPEG में बदलने का तरीका जानें। .NET के लिए Aspose.HTML की शक्ति का उपयोग करने के लिए चरण-दर-स्टेप मार्गदर्शिका। अपने वेब डेवलपमेंट कार्यों को आसानी से अनुकूलित करें। ### [Aspose.HTML के साथ .NET में HTML को Markdown में बदलें](./convert-html-to-markdown/) -कुशल सामग्री हेरफेर के लिए Aspose.HTML का उपयोग करके .NET में HTML को Markdown में परिवर्तित करना सीखें। सहज रूपांतरण प्रक्रिया के लिए चरण-दर-चरण मार्गदर्शन प्राप्त करें। +कुशल सामग्री हेरफेर के लिए Aspose.HTML का उपयोग करके .NET में HTML को Markdown में परिवर्तित करना सीखें। सहज रूपांतरण प्रक्रिया के लिए चरण-दर-स्टेप मार्गदर्शन प्राप्त करें। ### [Aspose.HTML के साथ .NET में HTML को MHTML में बदलें](./convert-html-to-mhtml/) -Aspose.HTML के साथ .NET में HTML को MHTML में बदलें - कुशल वेब सामग्री संग्रह के लिए चरण-दर-चरण मार्गदर्शिका। MHTML संग्रह बनाने के लिए .NET के लिए Aspose.HTML का उपयोग करना सीखें। +Aspose.HTML के साथ .NET में HTML को MHTML में बदलें - कुशल वेब सामग्री संग्रह के लिए चरण-दर-स्टेप मार्गदर्शिका। MHTML संग्रह बनाने के लिए .NET के लिए Aspose.HTML का उपयोग करना सीखें। ### [Aspose.HTML के साथ .NET में HTML को PNG में बदलें](./convert-html-to-png/) -जानें कि HTML दस्तावेज़ों में हेरफेर करने और उन्हें परिवर्तित करने के लिए .NET के लिए Aspose.HTML का उपयोग कैसे करें। प्रभावी .NET विकास के लिए चरण-दर-चरण मार्गदर्शिका। +जानें कि HTML दस्तावेज़ों में हेरफेर करने और उन्हें परिवर्तित करने के लिए .NET के लिए Aspose.HTML का उपयोग कैसे करें। प्रभावी .NET विकास के लिए चरण-दर-स्टेप मार्गदर्शिका। + +### [C# में HTML को PNG में बदलें – HTML को इमेज के रूप में रेंडर करें](./convert-html-to-png-in-c-render-html-as-image/) +C# में Aspose.HTML का उपयोग करके HTML को PNG इमेज में बदलें। चरण‑दर‑चरण मार्गदर्शिका और कोड उदाहरण। ### [Aspose.HTML के साथ .NET में HTML को TIFF में बदलें](./convert-html-to-tiff/) -.NET के लिए Aspose.HTML के साथ HTML को TIFF में कैसे बदलें, यह जानें। कुशल वेब सामग्री अनुकूलन के लिए हमारे चरण-दर-चरण मार्गदर्शिका का पालन करें। +.NET के लिए Aspose.HTML के साथ HTML को TIFF में कैसे बदलें, यह जानें। कुशल वेब सामग्री अनुकूलन के लिए हमारे चरण-दर-स्टेप मार्गदर्शिका का पालन करें। ### [Aspose.HTML के साथ .NET में HTML को XPS में बदलें](./convert-html-to-xps/) -.NET के लिए Aspose.HTML की शक्ति का पता लगाएं: HTML को XPS में आसानी से बदलें। पूर्वापेक्षाएँ, चरण-दर-चरण मार्गदर्शिका और FAQ शामिल हैं। +.NET के लिए Aspose.HTML की शक्ति का पता लगाएं: HTML को XPS में आसानी से बदलें। पूर्वापेक्षाएँ, चरण-दर-स्टेप मार्गदर्शिका और FAQ शामिल हैं। ### [HTML को ZIP के रूप में सहेजें – पूर्ण C# ट्यूटोरियल](./save-html-as-zip-complete-c-tutorial/) -HTML को ZIP फ़ाइल में सहेजने के चरण-दर-चरण मार्गदर्शन, C# कोड उदाहरण और अनुकूलन विकल्प। +HTML को ZIP फ़ाइल में सहेजने के चरण-दर-स्टेप मार्गदर्शन, C# कोड उदाहरण और अनुकूलन विकल्प। + +### [Aspose.HTML के साथ वेबपेज को ZIP के रूप में सहेजें – पूर्ण C# ट्यूटोरियल](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +C# में Aspose.HTML का उपयोग करके वेबपेज को ZIP फ़ाइल में सहेजने की पूरी प्रक्रिया सीखें। चरण‑दर‑चरण मार्गदर्शन। ### [C# में HTML को ज़िप कैसे करें – HTML को ज़िप में सहेजें](./how-to-zip-html-in-c-save-html-to-zip/) .NET के लिए Aspose.HTML का उपयोग करके C# में HTML को ज़िप फ़ाइल में सहेजने का तरीका सीखें। @@ -90,6 +96,9 @@ Aspose.HTML for .NET का उपयोग करके स्टाइल् ### [C# में HTML को ZIP में सहेजें – पूर्ण इन‑मेमोरी उदाहरण](./save-html-to-zip-in-c-complete-in-memory-example/) C# में इन‑मेमोरी में HTML को ZIP फ़ाइल में सहेजने का पूरा उदाहरण देखें। +### [कस्टम रिसोर्स हैंडलर के साथ HTML को ZIP के रूप में सहेजें – चरण‑दर‑चरण गाइड](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +कस्टम रिसोर्स हैंडलर का उपयोग करके .NET में HTML को ZIP फ़ाइल में सहेजने के चरण‑दर‑चरण निर्देश। + ## निष्कर्ष निष्कर्ष में, HTML एक्सटेंशन और रूपांतरण आधुनिक वेब विकास के आवश्यक तत्व हैं। .NET के लिए Aspose.HTML प्रक्रिया को सरल बनाता है और इसे सभी स्तरों के डेवलपर्स के लिए सुलभ बनाता है। हमारे ट्यूटोरियल का पालन करके, आप एक व्यापक कौशल सेट के साथ एक कुशल वेब डेवलपर बनने के अपने रास्ते पर अच्छी तरह से आगे बढ़ेंगे। diff --git a/html/hindi/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/hindi/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..431feede5 --- /dev/null +++ b/html/hindi/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-04-19 +description: C# में Aspose.HTML का उपयोग करके HTML को PNG में बदलें – HTML को इमेज + के रूप में रेंडर करने और एंटी‑एलियासिंग के साथ चार्ट को PNG के रूप में सहेजने के + लिए एक त्वरित गाइड। +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: hi +og_description: C# में HTML को जल्दी PNG में बदलें। जानें कैसे HTML को इमेज के रूप + में रेंडर करें, चार्ट को PNG के रूप में सहेजें, और Aspose.HTML के साथ HTML से PNG + जनरेट करें। +og_title: C# में HTML को PNG में बदलें – HTML को इमेज के रूप में रेंडर करें +tags: +- Aspose.HTML +- C# +- Image Processing +title: C# में HTML को PNG में बदलें – HTML को छवि के रूप में रेंडर करें +url: /hi/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# में HTML को PNG में बदलें – HTML को इमेज के रूप में रेंडर करें + +क्या आपको कभी **HTML को PNG में बदलने** की ज़रूरत पड़ी है लेकिन यह नहीं पता था कि कौन‑सी लाइब्रेरी आपको साफ‑सुथरा परिणाम देगी? आप अकेले नहीं हैं। चाहे आप एक डायनामिक चार्ट एक्सपोर्ट कर रहे हों, ई‑मेल टेम्प्लेट को थंबनेल में बदल रहे हों, या सिर्फ़ वेब पेज का एक स्थिर स्नैपशॉट चाहिए, **HTML को इमेज के रूप में रेंडर** करने की क्षमता हर डेवलपर के टूलबॉक्स में एक उपयोगी ट्रिक है। + +इस ट्यूटोरियल में हम Aspose.HTML का उपयोग करके एक HTML फ़ाइल को PNG फ़ाइल में बदलने की पूरी प्रक्रिया को देखेंगे। अंत तक आप **चार्ट को PNG के रूप में सेव** कर पाएँगे, **HTML से PNG जनरेट** कर पाएँगे, और पॉलिश्ड लुक के लिए एंटी‑एलियासिंग सेटिंग्स भी समायोजित कर पाएँगे। कोई फालतू बात नहीं—सिर्फ़ एक पूर्ण, चलने योग्य उदाहरण जिसे आप आज ही अपने प्रोजेक्ट में जोड़ सकते हैं। + +## आपको क्या चाहिए + +- **.NET 6.0** या बाद का संस्करण (कोड .NET Framework 4.6+ पर भी काम करता है)। +- **Aspose.HTML for .NET** – इसे आप NuGet से `Install-Package Aspose.HTML` कमांड से प्राप्त कर सकते हैं। +- एक साधारण HTML फ़ाइल (जैसे `chart.html`) जिसमें वह मार्कअप हो जिसे आप कैप्चर करना चाहते हैं। +- आपका पसंदीदा IDE – Visual Studio, Rider, या यहाँ तक कि VS Code भी चलेगा। + +बस इतना ही। कोई अतिरिक्त डिपेंडेंसी नहीं, कोई हेडलेस ब्राउज़र नहीं, सिर्फ़ एक ही, अच्छी तरह से डॉक्यूमेंटेड लाइब्रेरी। + +![HTML को PNG में बदलने का उदाहरण](example.png "HTML को PNG में बदलने का आउटपुट") + +## चरण 1: HTML दस्तावेज़ लोड करें + +सबसे पहले हमें Aspose.HTML को स्रोत फ़ाइल की ओर इशारा करना होगा। `HTMLDocument` क्लास को ऐसे कैनवास समझें जो लाइब्रेरी को बाद में बिटमैप पर पेंट करने के लिए सब कुछ रखता है। + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*यह क्यों महत्वपूर्ण है:* दस्तावेज़ को लोड करने से पार्सिंग चरण को रेंडरिंग चरण से अलग किया जाता है। इससे इंजन को CSS, स्क्रिप्ट और इमेजेज़ को हल करने का समय मिलता है, इससे पहले कि हम उसे PNG बनाने को कहें। यदि आप इस चरण को छोड़कर कच्चा मार्कअप रेंडर करने की कोशिश करेंगे, तो आपको खाली इमेज या गायब स्टाइल्स मिलेंगे। + +## चरण 2: इमेज रेंडरिंग विकल्प कॉन्फ़िगर करें + +डिफ़ॉल्ट रूप से Aspose.HTML आपको एक ठीक‑ठाक PNG देगा, लेकिन अक्सर आप स्मूद एजेज़ चाहते हैं—विशेषकर चार्ट और वेक्टर ग्राफ़िक्स के लिए। यहाँ `ImageRenderingOptions` काम आता है। + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*प्रो टिप:* यदि आप हाई‑DPI डिस्प्ले के साथ काम कर रहे हैं, तो `Width` और `Height` को अनुपातिक रूप से बढ़ाएँ और PNG को बड़ा रखें। बाद में आप इसे किसी इमेज एडिटर से डाउनस्केल कर सकते हैं। साथ ही, बैकग्राउंड कलर सेट करने से ट्रांसपेरेंट PNG डार्क पेज़ पर अजीब नहीं दिखेगा। + +## चरण 3: HTML को PNG फ़ाइल में रेंडर करें + +अब असली काम शुरू होता है। `RenderToImage` मेथड आउटपुट पाथ और हमने अभी जो विकल्प परिभाषित किए हैं, उन्हें लेता है, फिर डिस्क पर PNG लिख देता है। + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +जब यह लाइन समाप्त हो जाएगी, तो आपको लक्ष्य फ़ोल्डर में `chart.png` मिलेगा। इसे खोलें—क्या चार्ट तेज़ दिख रहा है? यदि आपने एंटी‑एलियासिंग चालू किया है, तो लाइन्स स्मूद होंगी और टेक्स्ट भी स्पष्ट होगा। + +### परिणाम की जाँच + +आप प्रोग्रामेटिकली इमेज की जल्दी जाँच कर सकते हैं: + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +यदि कंसोल शून्य‑से‑अधिक डाइमेंशन और समर्थित पिक्सेल फ़ॉर्मेट (जैसे `Format32bppArgb`) प्रिंट करता है, तो आपने सफलतापूर्वक **HTML को PNG में बदल दिया** है। + +## HTML को इमेज के रूप में रेंडर करें – उन्नत विकल्प + +अब तक हमने बुनियादी बातों को कवर किया, लेकिन वास्तविक दुनिया के परिदृश्य अक्सर थोड़ा अधिक नियंत्रण चाहते हैं। नीचे कुछ सामान्य ट्यूनिंग दी गई है जो आपको काम आ सकती है। + +### प्रिंट‑क्वालिटी आउटपुट के लिए DPI समायोजित करना + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +उच्च DPI तब उपयोगी होता है जब आप PNG को PDF में एम्बेड करने या कागज़ पर प्रिंट करने की योजना बनाते हैं। + +### बाहरी संसाधनों को संभालना + +यदि आपका HTML बाहरी CSS, फ़ॉन्ट या इमेजेज़ को वेब सर्वर पर रेफ़र करता है, तो सुनिश्चित करें कि रन‑टाइम उन्हें पहुँच सके। आप एक कस्टम `BaseUrl` सेट कर सकते हैं: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +यह Aspose.HTML को बताता है कि रिलेटिव URLs को प्रदान किए गए बेस URL के विरुद्ध हल किया जाए। + +### कई पेज़ों को कन्वर्ट करना + +Aspose.HTML मल्टी‑पेज HTML दस्तावेज़ के प्रत्येक पेज को अलग‑अलग PNG फ़ाइलों में रेंडर कर सकता है: + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +इस तरह आप **हर पेज के लिए चार्ट को PNG के रूप में सेव** कर सकते हैं बिना आउटपुट को मैन्युअली काटे। + +## चार्ट को PNG के रूप में सेव – सामान्य समस्याएँ और समाधान + +1. **फ़ॉन्ट्स की कमी:** यदि HTML में कोई कस्टम फ़ॉन्ट उपयोग किया गया है जो सर्वर पर इंस्टॉल नहीं है, तो रेंडर किया गया PNG डिफ़ॉल्ट फ़ॉन्ट पर फ़ॉल्बैक करेगा। फ़ॉन्ट को मशीन पर इंस्टॉल करें या CSS में `@font-face` के माध्यम से एम्बेड करें। +2. **बड़ी फ़ाइलें:** बहुत बड़े HTML फ़ाइल को रेंडर करने से मेमोरी की खपत बढ़ सकती है। कंटेंट को पेजिंग करें या इमेज डाइमेंशन को कम करें। +3. **ट्रांसपेरेंट बैकग्राउंड:** डिफ़ॉल्ट रूप से PNG ट्रांसपेरेंट हो सकते हैं। यदि आपको अपारदर्शी बैकग्राउंड चाहिए (जैसे ई‑मेल थंबनेल के लिए), तो पहले दिखाए अनुसार `BackgroundColor` सेट करें। +4. **स्क्रिप्ट निष्पादन:** Aspose.HTML जावास्क्रिप्ट नहीं चलाता। यदि आपका चार्ट क्लाइंट‑साइड लाइब्रेरी जैसे Chart.js से बना है, तो आपको चार्ट को पहले स्थैतिक `` एलिमेंट में प्री‑रेंडर करना होगा या हेडलेस ब्राउज़र का उपयोग करना होगा। + +## पूर्ण कार्यशील उदाहरण + +नीचे पूरा प्रोग्राम दिया गया है जिसे आप कॉन्सोल ऐप में कॉपी‑पेस्ट कर सकते हैं। इसमें सभी चरण, एरर हैंडलिंग और ऊपर चर्चा किए गए वैकल्पिक ट्यूनिंग शामिल हैं। + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +प्रोग्राम चलाएँ, और आपको एक पुष्टि संदेश के साथ इमेज डाइमेंशन दिखेंगे। `chart.png` को किसी भी व्यूअर में खोलें ताकि यह पुष्टि हो सके कि चार्ट मूल 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/hindi/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/hindi/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..71de23700 --- /dev/null +++ b/html/hindi/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-04-19 +description: Aspose.Html और एक कस्टम रिसोर्स हैंडलर का उपयोग करके HTML को ज़िप के + रूप में सहेजना सीखें। साथ ही जानें कि URL को ज़िप में कैसे बदलें और मिनटों में HTML + को ज़िप के रूप में डाउनलोड करें। +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: hi +og_description: 'HTML को ज़िप के रूप में सहेजना आसान: Aspose.Html, एक कस्टम रिसोर्स + हैंडलर, और ZipSaveOptions का उपयोग करके किसी भी URL को डाउनलोड करने योग्य ज़िप आर्काइव + में बदलें।' +og_title: कस्टम रिसोर्स हैंडलर के साथ HTML को ZIP के रूप में सहेजें – त्वरित ट्यूटोरियल +tags: +- Aspose.Html +- C# +- Web scraping +title: कस्टम रिसोर्स हैंडलर के साथ HTML को ZIP के रूप में सहेजें – चरण‑दर‑चरण मार्गदर्शिका +url: /hi/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML को ZIP के रूप में सहेजें – पूर्ण ट्यूटोरियल + +क्या आपको कभी **HTML को ZIP के रूप में सहेजने** की जरूरत पड़ी है ताकि आप एक पूरी पेज को उसकी इमेजेज, CSS, और स्क्रिप्ट्स के साथ एक ही साफ़ पैकेज में भेज सकें? शायद आप एक क्रॉलर बना रहे हैं जो लेखों को आर्काइव करता है, या आप बस अपने उपयोगकर्ताओं के लिए एक तेज़ “HTML को ZIP के रूप में डाउनलोड करें” बटन चाहते हैं। किसी भी स्थिति में, आप सोच रहे होंगे कि इसे फ़ाइल‑IO कोड की लाखों लाइनों के बिना कैसे किया जाए। + +अच्छी खबर यह है कि Aspose.Html इस काम को बहुत आसान बना देता है, और एक **कस्टम रिसोर्स हैंडलर** के साथ आप तय कर सकते हैं कि प्रत्येक रिसोर्स स्ट्रीम कहाँ जाएगी। इस गाइड में हम आपको दिखाएंगे कि **URL को ZIP में कैसे बदलें**, **HTML को ZIP के रूप में कैसे डाउनलोड करें**, और **ऑफ़लाइन उपयोग के लिए वेबपेज रिसोर्सेज कैसे सहेजें**—सब कुछ एक ही, स्वतंत्र C# प्रोग्राम में। + +## आप क्या सीखेंगे + +- Aspose.Html लाइब्रेरी इंस्टॉल करें (NuGet इसे आसान बनाता है)। +- एक `ResourceHandler` लिखें जो Aspose.Html द्वारा लिखे जाने वाले प्रत्येक रिसोर्स के लिए एक `Stream` प्रदान करता है। +- रिमोट पेज (या स्थानीय फ़ाइल) लोड करें और Aspose.Html को बताएं कि सब कुछ एक ZIP आर्काइव में पैक करे। +- यह सत्यापित करें कि उत्पन्न `output.zip` में HTML फ़ाइल के साथ सभी लिंक्ड एसेट्स मौजूद हैं। + +कोई बाहरी टूल नहीं, कोई मैन्युअल ZIP‑फ़ाइल हेरफेर नहीं—बस साफ़, कंपाइल्ड कोड जिसे आप किसी भी .NET प्रोजेक्ट में डाल सकते हैं। + +## पूर्वापेक्षाएँ + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6.0 or later (the code also works on .NET Framework 4.7+) | Aspose.Html आधुनिक रनटाइम्स को टार्गेट करता है; पुराने फ्रेमवर्क में कुछ API नहीं हो सकते। | +| Visual Studio 2022 (or any IDE you like) | डिबगिंग और जेनरेटेड ZIP को देखने में मददगार। | +| Internet access for the sample URL (`https://example.com`) | हम एक लाइव पेज फ़ेच करेंगे ताकि **convert url to zip** दिखा सकें। | +| NuGet package `Aspose.Html` (v23.12 or newer) | यह लाइब्रेरी `HTMLDocument`, `ZipSaveOptions`, और `ResourceHandler` बेस क्लास प्रदान करती है। | + +यदि आपके पास पहले से ही एक .NET प्रोजेक्ट है, तो बस चलाएँ: + +```bash +dotnet add package Aspose.Html +``` + +यही वह सभी सेटअप है जिसकी आपको आवश्यकता है। + +## चरण 1: कस्टम रिसोर्स हैंडलर बनाएं + +समाधान का मुख्य भाग एक क्लास है जो `ResourceHandler` से इनहेरिट करती है। Aspose.Html प्रत्येक फ़ाइल को लिखने के लिए `HandleResource` को कॉल करता है—HTML, इमेजेज, CSS, जावास्क्रिप्ट, आप नाम ले सकते हैं। एक `Stream` रिटर्न करके आप तय करते हैं कि डेटा कहाँ जाएगा। + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**कस्टम हैंडलर क्यों?** +क्योंकि पुराना `IOutputStorage` इंटरफ़ेस डिप्रिकेटेड है, और `ResourceHandler` आपको आउटपुट डेस्टिनेशन पर पूर्ण नियंत्रण देता है। यह आपको `ResourceInfo` को इन्स्पेक्ट करने की भी सुविधा देता है—जैसे यदि आप केवल इमेजेज रखना चाहते हैं और फ़ॉन्ट्स को स्किप करना चाहते हैं। + +## चरण 2: HTML डॉक्यूमेंट लोड करें (या URL को ZIP में बदलें) + +Aspose.Html URL, फ़ाइल पाथ, या रॉ HTML स्ट्रिंग से लोड कर सकता है। यहाँ हम एक लाइव पेज लोड करने का प्रदर्शन करते हैं, जो आमतौर पर तब होता है जब आप **HTML को ZIP के रूप में डाउनलोड करना** चाहते हैं। + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +यदि आपके पास पहले से HTML स्रोत एक वेरिएबल में है, तो बस उसे कंस्ट्रक्टर में पास करें: + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## चरण 3: हैंडलर को ZipSaveOptions के साथ जोड़ें + +`ZipSaveOptions` Aspose.Html को बताता है कि ZIP फ़ाइल *कैसे* बनानी है। महत्वपूर्ण प्रॉपर्टी `OutputStorage` है, जिसे हम अपने `MyHandler` इंस्टेंस पर सेट करते हैं। + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +आप कॉम्प्रेशन लेवल, आर्काइव के अंदर फ़ोल्डर नाम, या यहाँ तक कि एक मैनिफेस्ट फ़ाइल भी एम्बेड कर सकते हैं—विवरण Aspose दस्तावेज़ों में हैं, लेकिन डिफ़ॉल्ट अधिकांश परिदृश्यों में बहुत अच्छा काम करता है। + +## चरण 4: डॉक्यूमेंट को ZIP आर्काइव के रूप में सहेजें + +अब जादू होता है। `Save` मेथड प्रत्येक रिसोर्स पर इटररेट करता है, `HandleResource` को कॉल करता है, और बाइट्स को रिटर्नेड स्ट्रीम में लिखता है। क्योंकि हमारा हैंडलर हर बार एक नया `MemoryStream` रिटर्न करता है, Aspose.Html बाद में उन सभी स्ट्रीम्स को इकट्ठा करके `output.zip` में पैक कर देगा। + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**आपको क्या दिखेगा:** +- आपके प्रोजेक्ट फ़ोल्डर की रूट पर `output.zip`। +- ZIP के अंदर: `index.html` (मुख्य पेज) और `images/`, `css/`, `scripts/` जैसे सबफ़ोल्डर, जिनमें वही फ़ाइलें होंगी जो ब्राउज़र ने अनुरोध की थीं। + +## चरण 5: परिणाम सत्यापित करें (वैकल्पिक लेकिन अनुशंसित) + +एक त्वरित जांच यह सुनिश्चित करती है कि आपने वास्तव में **वेबपेज रिसोर्सेज को सही ढंग से सहेजा** है। + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +आपको `index.html`, किसी भी लिंक्ड इमेज (`logo.png`), CSS फ़ाइलें, और जावास्क्रिप्ट फ़ाइलों के एंट्रीज़ दिखनी चाहिए। यदि कुछ गायब है, तो `MyHandler` में `ResourceInfo` लॉजिक को दोबारा जांचें। + +## पूर्ण कार्यशील उदाहरण + +सब कुछ मिलाकर, यहाँ पूरा प्रोग्राम है जिसे आप कॉपी‑पेस्ट करके एक कंसोल ऐप में उपयोग कर सकते हैं। + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +प्रोग्राम चलाएँ (`dotnet run`), और आपको एक साफ़ `output.zip` मिलेगा। इसे किसी भी आर्काइव मैनेजर से खोलें, और आप सहेजे गए पेज को ऑफ़लाइन ब्राउज़ कर सकते हैं—बिल्कुल वही जो आपको **HTML को ZIP के रूप में डाउनलोड** फ़ंक्शनैलिटी के लिए चाहिए। + +## सामान्य प्रश्न और किनारे के मामले + +| Question | Answer | +|----------|--------| +| *यदि मुझे ZIP को Azure Blob Storage में स्टोर करना हो तो क्या करें?* | `MemoryStream` को ऐसे स्ट्रीम से बदलें जो सीधे ब्लॉब में लिखे (जैसे `CloudBlockBlob.OpenWrite()`)। हैंडलर एब्स्ट्रैक्शन इसे बहुत आसान बनाता है। | +| *क्या मैं कुछ रिसोर्सेज को फ़िल्टर कर सकता हूँ?* | हां। `HandleResource` के अंदर `info.ResourceType` या `info.Url` को जांचें। किसी रिसोर्स को स्किप करने के लिए `null` रिटर्न करें, या ऐसा स्ट्रीम रिटर्न करें जो कुछ नहीं लिखता। | +| *क्या ZIP पासवर्ड‑प्रोटेक्टेड है?* | `ZipSaveOptions` में एक `Password` प्रॉपर्टी है। यदि एन्क्रिप्शन चाहिए तो `Save` कॉल करने से पहले इसे सेट करें। | +| *दसियों मेगाबाइट एसेट्स वाले बड़े पेजों के बारे में क्या?* | सबके लिए `MemoryStream` का उपयोग करने से RAM खत्म हो सकती है। एक `FileStream` में स्विच करें जो अस्थायी फ़ोल्डर में लिखे, फिर Aspose.Html को उन फ़ाइलों को कॉम्प्रेस करने दें। | +| *क्या यह .NET Core पर Linux में काम करता है?* | बिल्कुल। Aspose.Html क्रॉस‑प्लेटफ़ॉर्म है; बस यह सुनिश्चित करें कि रनटाइम को फ़ाइलें लिखने की अनुमति है। | + +## प्रो टिप्स + +- **प्रो टिप:** यदि आपको केवल HTML और इमेजेज की परवाह है, तो `info.ResourceType == ResourceType.Image` जांचें और स्क्रिप्ट्स या फ़ॉन्ट्स को स्किप करें ताकि ZIP छोटा रहे। +- **ध्यान रखें:** कुछ साइटें ऑटोमेटेड रिक्वेस्ट को ब्लॉक करती हैं। यदि आपको 403 एरर मिलता है तो `HtmlLoadOptions` के माध्यम से एक कस्टम `User-Agent` सेट करें। +- **टिप:** ZIP बनाने के बाद, आप इसे सीधे ASP.NET कंट्रोलर से `FileResult` का उपयोग करके सर्व कर सकते हैं, जिससे आपके उपयोगकर्ताओं को एक‑क्लिक **HTML को ZIP के रूप में डाउनलोड** बटन मिल सके। + +## निष्कर्ष + +अब आपके पास Aspose.Html और एक **कस्टम रिसोर्स हैंडलर** का उपयोग करके **HTML को ZIP के रूप में सहेजने** का एक ठोस, प्रोडक्शन‑रेडी तरीका है। किसी भी URL को लोड करके, `ZipSaveOptions` को कॉन्फ़िगर करके, और हैंडलर को स्ट्रीम्स प्रदान करने देकर, आप सिर्फ कुछ ही C# लाइनों से **URL को ZIP में बदल सकते हैं**, **HTML को ZIP के रूप में डाउनलोड कर सकते हैं**, और **वेबपेज रिसोर्सेज को सहेज सकते हैं**। + +बिना झिझक प्रयोग करें—स्ट्रीम्स को डिस्क, क्लाउड स्टोरेज, या यहाँ तक कि डेटाबेस में स्टोर करें। पैटर्न वही रहता है, और परिणाम हमेशा एक साफ़ आर्काइव होता है जिसे आप शिप, कैश या हमेशा के लिए आर्काइव कर सकते हैं। + +--- + +![HTML को ZIP के रूप में सहेजने के वर्कफ़्लो को दर्शाने वाला आरेख – URL लोड करने से लेकर ZIP फ़ाइल बनाने तक](/images/save-html-as-zip.png) + +*छवि वैकल्पिक पाठ:* **HTML को ZIP के रूप में सहेजने का वर्कफ़्लो आरेख** + +{{< /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/hindi/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/hindi/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..f0ef3dc36 --- /dev/null +++ b/html/hindi/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,218 @@ +--- +category: general +date: 2026-04-19 +description: C# में Aspose.HTML का उपयोग करके वेबपेज को ज़िप के रूप में सहेजें। जानें + कि URL को ज़िप में कैसे बदलें, HTML को ज़िप में निर्यात करें, और सरल कोड उदाहरण + के साथ वेबपेज को ज़िप के रूप में डाउनलोड करें। +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: hi +og_description: Aspose.HTML के साथ C# में वेबपेज को ज़िप के रूप में सहेजें। यह गाइड + दिखाता है कि कैसे URL को ज़िप में बदलें, HTML को ज़िप में निर्यात करें, और कुछ ही + चरणों में वेबपेज को ज़िप के रूप में डाउनलोड करें। +og_title: Aspose.HTML के साथ वेबपेज को ज़िप के रूप में सहेजें – पूर्ण C# ट्यूटोरियल +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: Aspose.HTML के साथ वेबपेज को ZIP के रूप में सहेजें – पूर्ण C# ट्यूटोरियल +url: /hi/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose.HTML के साथ वेबपेज को ZIP के रूप में सहेजें – पूर्ण C# ट्यूटोरियल + +ऑफ़लाइन आर्काइविंग, ऑटोमेटेड टेस्टिंग, या सिर्फ साइट का स्नैपशॉट शिप करने के लिए **वेबपेज को ज़िप के रूप में सहेजना** है? आप अकेले नहीं हैं। इस ट्यूटोरियल में हम **URL को ज़िप में बदलना**, **HTML को ज़िप में एक्सपोर्ट करना**, और यहाँ तक कि **वेबपेज को ज़िप के रूप में डाउनलोड करना** कैसे किया जाए, यह कई साफ़ C# लाइनों के साथ दिखाएंगे। + +हम प्रोजेक्ट सेटअप से लेकर डिस्क पर अंतिम ZIP फ़ाइल तक सब कुछ कवर करेंगे, और कुछ व्यावहारिक टिप्स भी देंगे जो आधिकारिक दस्तावेज़ों में नहीं मिलते। अंत तक आप एक पुन: उपयोग योग्य समाधान रखेंगे जो जब भी ज़रूरत हो **HTML से ज़िप बनाना** सक्षम करेगा। + +## आपको क्या चाहिए + +- **.NET 6.0** (या कोई भी हालिया .NET संस्करण) – Aspose.HTML .NET Core और .NET Framework दोनों के साथ काम करता है। +- **Aspose.HTML for .NET** NuGet पैकेज – `Install-Package Aspose.HTML`। +- थोड़ा‑बहुत C# अनुभव – अगर आप `Console.WriteLine` लिख सकते हैं, तो आप तैयार हैं। +- प्रारंभिक डाउनलोड के लिए इंटरनेट‑कनेक्टेड मशीन (कोड स्वयं ज़िप बन जाने के बाद ऑफ़लाइन काम करता है)। + +कोई अतिरिक्त SDK नहीं, कोई हेडलेस ब्राउज़र नहीं, सिर्फ़ शुद्ध .NET और Aspose.HTML। + +![Illustration of saving webpage as zip using Aspose.HTML](save-webpage-as-zip.png "Diagram showing save webpage as zip workflow") + +## वेबपेज को ZIP के रूप में सहेजें – अवलोकन + +उच्च स्तर पर प्रक्रिया तीन भागों में विभाजित है: + +1. **एक कस्टम `ResourceHandler`** जो Aspose.HTML को बताता है कि प्रत्येक बाहरी रिसोर्स (इमेज, CSS, स्क्रिप्ट) को कहाँ लिखना है। +2. **`ZipSaveOptions`** जो हैंडलर को ZIP आर्काइव से बाइंड करता है और रेंडरिंग (एंटी‑एलियासिंग, फ़ॉन्ट हिंट्स आदि) को ट्यून करने की अनुमति देता है। +3. **`HTMLDocument.Save` कॉल** जो सब कुछ जोड़ता है, पेज और उसकी सभी एसेट्स को ZIP फ़ाइल में स्ट्रीम करता है। + +बस इतना ही। भारी काम Aspose.HTML करता है, इसलिए आप “क्यों” और “कब” पर ध्यान दे सकते हैं, न कि लो‑लेवल स्ट्रीम्स से जूझने में। + +--- + +## चरण 1: प्रोजेक्ट सेट अप करें और Aspose.HTML जोड़ें + +पहले, एक नया कंसोल प्रोजेक्ट बनाएं (या कोड को मौजूदा एप्लिकेशन में डालें)। टर्मिनल खोलें और चलाएँ: + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +`Aspose.HTML` पैकेज में वह सभी टाइप्स शामिल हैं जिनकी हमें जरूरत होगी: `HTMLDocument`, `ZipSaveOptions`, `ImageRenderingOptions`, और एब्स्ट्रैक्ट `ResourceHandler`। + +> **Pro tip:** अगर आप .NET Framework को टार्गेट कर रहे हैं, तो `dotnet` कमांड्स को Visual Studio के NuGet पैकेज मैनेजर UI से बदल दें – वही DLLs जोड़ दिए जाएंगे। + +--- + +## चरण 2: एक कस्टम `ZipHandler` रिसोर्स हैंडलर बनाएं + +Aspose.HTML पेज पार्स करते समय मिलने वाले हर बाहरी फ़ाइल के लिए `HandleResource` को कॉल करता है। इस मेथड को ओवरराइड करके हम प्रत्येक रिसोर्स को फ़ाइल सिस्टम की बजाय ZIP एंट्री में डाल सकते हैं। + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### कस्टम हैंडलर क्यों? + +बिना इस के, Aspose.HTML रिसोर्सेज़ को HTML फ़ाइल के बगल में डिस्क पर रख देता। `ZipArchive` में फीड करके हम **सब कुछ बंडल** रख सकते हैं – वितरण या बाद में किसी अन्य सर्विस द्वारा एक्सट्रैक्शन के लिए परफेक्ट। + +--- + +## चरण 3: इमेज रेंडरिंग के साथ `ZipSaveOptions` कॉन्फ़िगर करें + +अब हम हैंडलर को सेव ऑप्शन्स से जोड़ते हैं और कुछ रेंडरिंग ट्यूनिंग एक्टिवेट करते हैं जो स्क्रीनशॉट या PDF‑जैसे कन्वर्ज़न की विज़ुअल फ़िडेलिटी को बेहतर बनाते हैं। + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **एंटी‑एलियासिंग और हिंटिंग क्यों एनेबल करें?** जब पेज बाद में बिटमैप (जैसे थंबनेल) में रेंडर किया जाता है, ये फ्लैग्ज़ जॅग्ड एजेज़ को कम करते हैं और छोटे फ़ॉन्ट्स को पढ़ने योग्य बनाते हैं—खासकर जब आप इमेजेज़ को कहीं और एम्बेड करने की योजना बनाते हैं। + +--- + +## चरण 4: HTML डॉक्यूमेंट लोड करें और ZIP में सहेजें + +हैंडलर और ऑप्शन्स तैयार होने के बाद, रिमोट पेज को लोड करना बस उसका URL `HTMLDocument` को पास करने जितना आसान है। `Save` मेथड हर लिंक्ड एसेट के लिए `HandleResource` को कॉल करेगा। + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +इस चरण के बाद `zipStream` में एक पूर्ण **ZIP आर्काइव** होगा जिसमें शामिल हैं: + +- `index.html` (मुख्य पेज) +- `` टैग्स द्वारा रेफ़र किए गए सभी CSS फ़ाइलें +- इमेजेज़, फ़ॉन्ट्स, और जावास्क्रिप्ट फ़ाइलें जो पेज को ऑफ़लाइन रेंडर करने के लिए ज़रूरी हैं + +### एज केस और वैरिएशन्स + +| स्थिति | क्या बदलें | +|------------------------------------------|--------------------------------------------------------------------------------------| +| **ऑथेंटिकेशन आवश्यक** | `HTMLDocument(string url, LoadOptions options)` का उपयोग करें और `options.Credentials` सेट करें। | +| **बहुत बड़े पेज (>100 MB)** | मेमोरी उपयोग कम करने के लिए `MemoryStream` की बजाय `FileStream` में सीधे लिखें। | +| **रिलेटिव URLs जो “//” से शुरू होते हैं**| हैंडलर इन्हें ऑटोमैटिकली नॉर्मलाइज़ कर देता है; बस `BaseUrl` सेट करना सुनिश्चित करें। | +| **ZIP के अंदर कस्टम फ़ोल्डर स्ट्रक्चर** | `HandleResource` के अंदर `info.Path` को बदलें इससे पहले कि एंट्री बनाई जाए। | + +--- + +## चरण 5: ZIP फ़ाइल को डिस्क पर लिखें और परिणाम वेरिफ़ाई करें + +अंत में, हम इन‑मेमोरी ZIP को डिस्क पर लिखते हैं। अगर आप स्ट्रीम को नेटवर्क पर भेजने वाले हैं तो यह स्टेप वैकल्पिक है, लेकिन वेरिफ़िकेशन आसान बनाता है। + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**अपेक्षित परिणाम:** `result.zip` खोलने पर एक `index.html` फ़ाइल दिखेगी जो ऑफ़लाइन ब्राउज़र में खोलने पर लाइव पेज जैसा ही दिखेगा (बशर्ते सभी बाहरी एसेट्स डाउनलोड के दौरान उपलब्ध रहे)। + +--- + +## सामान्य प्रश्न और उत्तर + +**प्रश्न: क्या यह तरीका लेज़ी‑लोडेड इमेजेज़ वाले पेजों के साथ काम करता है?** +उत्तर: हाँ, जब तक इमेजेज़ प्रारंभिक DOM वॉक के दौरान रीक्वेस्ट हो जाएँ। अगर स्क्रिप्ट पेज लोड के बाद इमेजेज़ लोड करती है, तो `document.Render()` को मैन्युअली कॉल करके `Save` से पहले रेंडर ट्रिगर करना पड़ सकता है। + +**प्रश्न: क्या मैं ZIP को और अधिक कॉम्प्रेस कर सकता हूँ?** +उत्तर: `ZipArchive` API डिफ़ॉल्ट कॉम्प्रेशन लेवल इस्तेमाल करती है। अधिक कॉम्प्रेस करने के लिए इसे इस तरह इनस्टैंशिएट करें: `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)`। + +**प्रश्न: अगर मुझे पासवर्ड‑प्रोटेक्टेड ZIP चाहिए तो?** +उत्तर: बिल्ट‑इन `ZipArchive` एन्क्रिप्शन सपोर्ट नहीं करता। ऐसे में Aspose.HTML के लिखने के बाद आउटपुट स्ट्रीम को `SharpZipLib` जैसे थर्ड‑पार्टी लाइब्रेरी से पास करके एन्क्रिप्ट करना पड़ेगा। + +--- + +## प्रोडक्शन उपयोग के लिए प्रो टिप्स + +- **`ZipHandler` को री‑यूज़ करें** जब आप बैच में कई पेज प्रोसेस कर रहे हों; प्रत्येक रन के बीच बेसिक `MemoryStream` को रीसेट कर दें। +- **Log + +{{< /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/hongkong/net/generate-jpg-and-png-images/_index.md b/html/hongkong/net/generate-jpg-and-png-images/_index.md index 33103bd04..f44fddffa 100644 --- a/html/hongkong/net/generate-jpg-and-png-images/_index.md +++ b/html/hongkong/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML for .NET 提供了一種將 HTML 轉換為映像的簡單方法。 了解如何在使用 Aspose.HTML for .NET 將 DOCX 轉換為 PNG 或 JPG 時啟用抗鋸齒,以提升圖像品質。 ### [使用 Aspose.HTML 在 .NET 中將 docx 轉換為 png 並建立 zip 壓縮檔 C# 教學](./convert-docx-to-png-create-zip-archive-c-tutorial/) 學習如何使用 Aspose.HTML for .NET 將 docx 轉換為 png,並將圖像打包成 zip 壓縮檔的完整步驟。 +### [如何將 HTML 渲染為 PNG – 完整 C# 教學](./how-to-render-html-to-png-complete-c-guide/) +本完整 C# 教學說明如何使用 Aspose.HTML 將 HTML 內容渲染為 PNG 圖像,涵蓋設定、程式碼示例與最佳實踐。 ## 結論 diff --git a/html/hongkong/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/hongkong/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..33ce49708 --- /dev/null +++ b/html/hongkong/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,157 @@ +--- +category: general +date: 2026-04-19 +description: 如何使用 Aspose.Html 將 HTML 渲染為 PNG。學習在幾分鐘內將 HTML 轉換為 PNG、將 HTML 保存為 PNG,並從 + HTML 建立圖像。 +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: zh-hant +og_description: 如何使用 Aspose.Html 將 HTML 渲染為 PNG。請跟隨此一步一步的教學,將 HTML 轉換為 PNG、將 HTML + 儲存為 PNG,並從 HTML 建立圖片。 +og_title: 如何將 HTML 渲染成 PNG – 完整 C# 指南 +tags: +- Aspose.Html +- C# +title: 如何將 HTML 渲染為 PNG – 完整 C# 指南 +url: /zh-hant/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何將 HTML 轉換為 PNG – 完整 C# 指南 + +有沒有想過 **如何將 HTML** 直接渲染成圖片檔案,而不必開啟瀏覽器?你並不是唯一有此需求的人。在許多專案中——例如電子郵件縮圖、PDF 產生,或只是快速預覽——你都需要 **即時將 HTML 轉換為 PNG**。 + +在本教學中,我們將以 Aspose.Html for .NET 為例,手把手示範完整解決方案,從安裝函式庫到微調文字 hinting 以獲得清晰的小字體。完成後,你將能 **將 HTML 儲存為 PNG**、**從 HTML 建立影像**,甚至在特殊情境下調整渲染選項。 + +## 需要的環境 + +- **.NET 6+**(或 .NET Framework 4.6.2+)。API 在不同執行環境下行為相同。 +- **Aspose.Html** NuGet 套件 – `Install-Package Aspose.Html`。 +- 一個簡單的 HTML 檔(例如 `article.html`),作為要轉換的來源。 +- Visual Studio、Rider,或任何你慣用的編輯器。 + +就這些——不需要額外相依套件、也不需要無頭 Chrome,純粹用 C# 即可。 + +## 步驟 1:安裝 Aspose.Html 並加入命名空間 + +首先,從 NuGet 取得函式庫。開啟 Package Manager Console,執行: + +```powershell +Install-Package Aspose.Html +``` + +安裝完成後,在檔案頂部加入必要的 `using` 指示: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +這些命名空間讓你可以存取文件模型、影像渲染,以及稍後會用到的細緻文字選項。 + +> **小技巧:** 若你使用 .csproj 檔,也可以手動加入 ``。 + +## 步驟 2:載入 HTML 文件 + +需要一個指向來源檔案的 `HTMLDocument` 實例。Aspose.Html 支援從路徑、串流,甚至 URL 讀取。 + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **為什麼這很重要:** 只載入一次文件即可降低記憶體使用量。如果要渲染多頁,盡可能重複使用同一個 `HTMLDocument` 物件。 + +## 步驟 3:微調小字體的文字渲染 + +渲染極小的文字時,常會出現模糊邊緣。啟用 hinting 可讓光柵化器將字形對齊到像素邊界,顯著提升可讀性。 + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +你也可以在此控制抗鋸齒、次像素渲染,或指定自訂字型集合——當 HTML 參考網路字型時特別有用。 + +## 步驟 4:設定影像渲染選項 + +現在把 `TextOptions` 綁定到影像設定。你還可以設定背景顏色、DPI,或影像格式(PNG、JPEG、BMP)。 + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **特殊情況:** 若你的 HTML 寬度超過一般螢幕尺寸,請考慮在 `ImageRenderingOptions` 上設定 `Width` 與 `Height`,以免產生過大的 PNG。 + +## 步驟 5:將 HTML 渲染為 PNG 檔案 + +最後,呼叫 `RenderToImage`。我們使用的重載允許指定輸出路徑與先前建立的選項。 + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +執行程式後,Aspose.Html 會解析標記、套用 CSS、排版頁面,並將結果光柵化成 `article.png`。使用任何影像檢視器開啟,你應該會看到原始 HTML 的像素完美快照。 + +![how to render html as PNG using Aspose.Html](render-html-png.png) + +*影像替代文字:**how to render html** as PNG using Aspose.Html* + +## 額外說明:處理多頁或縮放 + +有時單一 HTML 檔會包含多個 `` 區段(例如列印時)。你可以遍歷 `htmlDoc.Pages`,分別渲染每一頁: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +若需要縮圖而非完整尺寸,只要在渲染前調整 `imgOpts.Width` 與 `imgOpts.Height` 即可。函式庫會自動保持長寬比例。 + +--- + +## 結論 + +現在你已掌握使用 Aspose.Html 將 **HTML 轉換為 PNG** 圖片的完整、生產環境級別作法。從安裝套件、載入標記、微調文字 hinting,到最終呼叫 `RenderToImage`,每一步都已說明。 + +有了這項知識,你可以 **將 HTML 轉換為 PNG**、**將 HTML 儲存為 PNG**,以及 **從 HTML 建立影像**,適用於任何 .NET 應用程式——無論是產生縮圖的 Web 服務,或是存檔網頁的桌面工具。 + +接下來,可探索 **render HTML to image** 的其他格式(JPEG、BMP),或使用 Aspose.PDF 將 PNG 嵌入 PDF。你也可以嘗試 DPI 縮放以製作高解析度列印,或將即時產生的動態 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/hongkong/net/html-extensions-and-conversions/_index.md b/html/hongkong/net/html-extensions-and-conversions/_index.md index 3d146ada2..0581f5301 100644 --- a/html/hongkong/net/html-extensions-and-conversions/_index.md +++ b/html/hongkong/net/html-extensions-and-conversions/_index.md @@ -61,6 +61,8 @@ Aspose.HTML for .NET 不只是一個函式庫;它還是一個函式庫。它 使用 Aspose.HTML 將 .NET 中的 HTML 轉換為 MHTML - 高效 Web 內容歸檔的逐步指南。了解如何使用 Aspose.HTML for .NET 建立 MHTML 檔案。 ### [使用 Aspose.HTML 將 .NET 中的 HTML 轉換為 PNG](./convert-html-to-png/) 了解如何使用 Aspose.HTML for .NET 來操作和轉換 HTML 文件。有效 .NET 開發的逐步指南。 +### [使用 C# 將 HTML 轉換為 PNG – 渲染 HTML 為圖像](./convert-html-to-png-in-c-render-html-as-image/) +使用 Aspose.HTML for .NET 在 C# 中將 HTML 渲染為 PNG 圖像,提供完整步驟說明。 ### [使用 Aspose.HTML 將 .NET 中的 HTML 轉換為 TIFF](./convert-html-to-tiff/) 了解如何使用 Aspose.HTML for .NET 將 HTML 轉換為 TIFF。請依照我們的逐步指南進行高效率的網路內容優化。 ### [使用 Aspose.HTML 將 .NET 中的 HTML 轉換為 XPS](./convert-html-to-xps/) @@ -73,6 +75,10 @@ Aspose.HTML for .NET 不只是一個函式庫;它還是一個函式庫。它 使用 Aspose.HTML for .NET 將 HTML 文件壓縮為 ZIP 檔案,提供完整的 C# 範例與步驟說明。 ### [在 C# 中將 HTML 儲存為 ZIP – 完整的記憶體內示例](./save-html-to-zip-in-c-complete-in-memory-example/) 示範如何在 C# 中使用 Aspose.HTML 將 HTML 內容直接壓縮成 ZIP 檔案,全部在記憶體中完成。 +### [使用自訂資源處理程式將 HTML 儲存為 ZIP – 完整步驟指南](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +示範如何在 C# 中使用自訂資源處理程式將 HTML 壓縮為 ZIP,提供完整步驟與範例。 +### [使用 Aspose.HTML 將網頁儲存為 ZIP – 完整 C# 教學](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +使用 Aspose.HTML for .NET 將整個網頁保存為 ZIP 檔案,提供完整的 C# 範例與步驟說明。 ## 結論 diff --git a/html/hongkong/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/hongkong/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..3d12e722d --- /dev/null +++ b/html/hongkong/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,215 @@ +--- +category: general +date: 2026-04-19 +description: 使用 Aspose.HTML 在 C# 中將 HTML 轉換為 PNG – 快速指南,將 HTML 渲染為圖像並以抗鋸齒方式儲存圖表為 PNG。 +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: zh-hant +og_description: 快速在 C# 中將 HTML 轉換為 PNG。了解如何將 HTML 渲染為圖像、將圖表儲存為 PNG,以及使用 Aspose.HTML + 從 HTML 產生 PNG。 +og_title: 在 C# 中將 HTML 轉換為 PNG – 將 HTML 渲染為圖片 +tags: +- Aspose.HTML +- C# +- Image Processing +title: 在 C# 中將 HTML 轉換為 PNG – 將 HTML 渲染為圖像 +url: /zh-hant/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 C# 中將 HTML 轉換為 PNG – 將 HTML 渲染為圖像 + +曾經需要在 C# 中 **convert HTML to PNG**,但不確定哪個函式庫能產生清晰的結果嗎?你並不孤單。無論是匯出動態圖表、將電子郵件範本轉成縮圖,或只是需要網頁的靜態快照,**render HTML as image** 的能力都是開發者工具箱中實用的技巧。 + +在本教學中,我們將一步步說明如何使用 Aspose.HTML 將 HTML 檔案轉換為 PNG 檔案。完成後,你將能夠 **save chart as PNG**、**generate PNG from HTML**,甚至微調 anti‑aliasing 設定以獲得更精緻的外觀。沒有冗餘說明——只提供完整、可直接執行的範例,讓你今天就能放入專案使用。 + +## 您需要的環境 + +在開始之前,請確保具備以下條件: + +- **.NET 6.0** 或更新版本(此程式碼亦可在 .NET Framework 4.6+ 上執行)。 +- **Aspose.HTML for .NET** – 可透過 NuGet 使用 `Install-Package Aspose.HTML` 取得。 +- 一個簡單的 HTML 檔案(例如 `chart.html`),內含您想要捕捉的標記。 +- 您慣用的 IDE — Visual Studio、Rider,或甚至 VS Code 都可以。 + +就這樣。沒有額外的相依套件,亦不需要 headless 瀏覽器,只要一個完整說明的函式庫即可。 + +![Convert HTML to PNG example](example.png "Convert HTML to PNG output") + +## 第一步:載入 HTML 文件 + +首先,我們必須讓 Aspose.HTML 指向來源檔案。把 `HTMLDocument` 類別想像成畫布,未來所有要繪製到位圖的內容都會先放在這裡。 + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*Why this matters:* 載入文件可將解析階段與渲染階段分離。它讓引擎有機會先解析 CSS、腳本與圖片,之後才產生 PNG。若跳過此步直接渲染原始標記,最終會得到空白圖像或樣式缺失。 + +## 第二步:設定圖像渲染選項 + +預設的 Aspose.HTML 已能產生不錯的 PNG,但若想要更平滑的邊緣——尤其是圖表與向量圖形——就需要使用 `ImageRenderingOptions`。 + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*Pro tip:* 若面對高 DPI 顯示器,請按比例增加 `Width` 與 `Height`,讓 PNG 較大。之後可使用圖像編輯器縮小。設定背景顏色也能避免透明 PNG 在深色頁面上顯得怪異。 + +## 第三步:將 HTML 渲染為 PNG 檔案 + +現在開始真正的運算。`RenderToImage` 方法接受輸出路徑與剛才定義的選項,然後將 PNG 寫入磁碟。 + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +當此行程式執行完畢,你會在目標資料夾中看到 `chart.png`。打開它——圖表是否清晰銳利?若已啟用 anti‑aliasing,線條應該平滑,文字也應該清楚。 + +### 驗證結果 + +你可以透過程式碼快速驗證產生的圖像: + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +如果主控台印出非零的尺寸與支援的像素格式(例如 `Format32bppArgb`),即表示已成功 **convert html to png**。 + +## Render HTML as Image – 進階選項 + +到目前為止我們已說明基礎,但實務上常會需要更多控制。以下列出幾個常見的調整方式。 + +### 調整 DPI 以取得列印品質輸出 + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +較高的 DPI 在你打算將 PNG 嵌入 PDF 或列印到紙張時特別有用。 + +### 處理外部資源 + +如果你的 HTML 參照了位於網路伺服器上的外部 CSS、字型或圖片,請確保執行環境能夠存取它們。你可以設定自訂的 `BaseUrl`: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +此設定會讓 Aspose.HTML 以提供的基礎 URL 解析相對路徑。 + +### 轉換多頁文件 + +Aspose.HTML 能將多頁 HTML 文件的每一頁分別渲染為 PNG 檔案: + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +如此一來,你就能 **save chart as PNG** 給每一頁,而不必手動切割輸出結果。 + +## Save Chart as PNG – 常見陷阱與避免方式 + +1. **缺少字型**:若 HTML 使用了未安裝在伺服器上的自訂字型,渲染出的 PNG 會退回預設字型。請在機器上安裝該字型,或在 CSS 中使用 `@font-face` 內嵌。 +2. **檔案過大**:渲染大型 HTML 可能會佔用大量記憶體。建議分頁處理內容或降低圖像尺寸。 +3. **透明背景**:預設 PNG 可能為透明。若需要不透明背景(例如電郵縮圖),請如前所示設定 `BackgroundColor`。 +4. **腳本執行**:Aspose.HTML 不會執行 JavaScript。若圖表是使用 Chart.js 等客戶端函式庫產生,必須先將圖表渲染成靜態 ``,或改用 headless 瀏覽器。 + +## 完整可執行範例 + +以下提供完整程式碼,你可以直接貼到 Console 應用程式中。程式碼已包含所有步驟、錯誤處理以及前述的可選調整。 + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +執行程式後,你會看到確認訊息以及圖像尺寸。以任何圖像檢視器開啟 `chart.png`,即可驗證圖表與原始 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/hongkong/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/hongkong/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..62e4f789e --- /dev/null +++ b/html/hongkong/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-04-19 +description: 學習如何使用 Aspose.Html 及自訂資源處理程式將 HTML 儲存為 ZIP。亦可了解如何將 URL 轉換為 ZIP,並在數分鐘內下載 + HTML 為 ZIP。 +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: zh-hant +og_description: 將 HTML 儲存為 ZIP 輕鬆搞掂:使用 Aspose.Html、客製化資源處理程式及 ZipSaveOptions,將任何 URL + 轉換為可下載的 ZIP 壓縮檔。 +og_title: 將 HTML 儲存為 ZIP 並使用自訂資源處理程式 – 快速教學 +tags: +- Aspose.Html +- C# +- Web scraping +title: 將 HTML 儲存為 ZIP 並使用自訂資源處理程式 – 逐步指南 +url: /zh-hant/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 將 HTML 儲存為 ZIP – 完整教學 + +有沒有需要 **將 HTML 儲存為 ZIP**,以便一次性打包整個頁面及其圖片、CSS 與腳本的情況?也許你在開發一個爬蟲要歸檔文章,或只是想為使用者提供一個快速的「下載 HTML 為 ZIP」按鈕。無論哪種情況,你大概都在想如何在不寫上千行檔案 I/O 程式碼的前提下完成這件事。 + +好消息是:Aspose.Html 讓這件事變得非常簡單,且透過 **自訂資源處理程式** 你可以自行決定每個資源串流的去向。在本指南中,我們還會示範如何 **將 URL 轉成 ZIP**、如何 **下載 HTML 為 ZIP**,以及如何 **儲存網頁資源** 供離線使用——全部只需一個自包含的 C# 程式。 + +## 你將學到 + +- 安裝 Aspose.Html 套件(NuGet 超簡單)。 +- 撰寫一個 `ResourceHandler`,為 Aspose.Html 想寫入的每個資源提供 `Stream`。 +- 載入遠端頁面(或本機檔案),並指示 Aspose.Html 將所有內容打包成 ZIP 檔。 +- 驗證產生的 `output.zip` 包含 HTML 檔以及所有相關資產。 + +不需要外部工具,也不需要手動處理 ZIP 檔——只要乾淨、可編譯的程式碼,直接放入任何 .NET 專案即可。 + +## 前置條件 + +| 前置條件 | 為什麼重要 | +|-------------|----------------| +| .NET 6.0 或更新版本(此程式碼亦相容 .NET Framework 4.7+) | Aspose.Html 針對現代執行環境;舊版框架可能缺少部分 API。 | +| Visual Studio 2022(或任意你喜歡的 IDE) | 方便除錯與檢視產生的 ZIP。 | +| 需要能連上網路以取得範例 URL(`https://example.com`) | 我們會抓取即時頁面來示範 **將 URL 轉成 ZIP**。 | +| NuGet 套件 `Aspose.Html`(v23.12 或更新) | 此套件提供 `HTMLDocument`、`ZipSaveOptions` 與 `ResourceHandler` 基底類別。 | + +如果你已經有 .NET 專案,只要執行: + +```bash +dotnet add package Aspose.Html +``` + +就完成所有設定。 + +## 步驟 1:建立自訂資源處理程式 + +解決方案的核心是一個繼承自 `ResourceHandler` 的類別。Aspose.Html 會對每個它要寫入的檔案(HTML、圖片、CSS、JavaScript…)呼叫 `HandleResource`。只要回傳一個 `Stream`,就能決定資料的去向。 + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**為什麼要自訂處理程式?** +因為較舊的 `IOutputStorage` 介面已被棄用,而 `ResourceHandler` 讓你完整掌控輸出目的地。它也能讓你檢查 `ResourceInfo`——例如只保留圖片、跳過字型等情境。 + +## 步驟 2:載入 HTML 文件(或將 URL 轉成 ZIP) + +Aspose.Html 可以從 URL、檔案路徑或原始 HTML 字串載入。這裡示範載入即時頁面,這是想要 **下載 HTML 為 ZIP** 時最常見的情況。 + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +如果你已經把 HTML 原始碼放在變數中,只要把它傳給建構子即可: + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## 步驟 3:將處理程式掛到 ZipSaveOptions + +`ZipSaveOptions` 告訴 Aspose.Html *如何* 建立 ZIP 檔。最重要的屬性是 `OutputStorage`,我們把它設定為 `MyHandler` 實例。 + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +你也可以調整壓縮等級、壓縮檔內的資料夾名稱,甚至嵌入清單檔——相關細節請參考 Aspose 文件,預設值已能滿足大多數需求。 + +## 步驟 4:將文件儲存為 ZIP 檔 + +現在魔法發生了。`Save` 方法會遍歷每個資源,呼叫 `HandleResource`,然後把位元組寫入回傳的串流。因為我們的處理程式每次都回傳全新的 `MemoryStream`,Aspose.Html 之後會把所有串流收集起來,打包成 `output.zip`。 + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**你會看到的結果:** +- 專案根目錄下出現 `output.zip`。 +- ZIP 內部包含 `index.html`(主頁)以及 `images/`、`css/`、`scripts/` 等子資料夾,裡面的檔案正是瀏覽器會請求的那些。 + +## 步驟 5:驗證結果(可選但建議執行) + +快速檢查可以確保你真的 **正確儲存了網頁資源**。 + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +你應該會看到 `index.html`、任何連結的圖片(如 `logo.png`)、CSS 檔與 JavaScript 檔的條目。若有遺漏,請再次檢查 `MyHandler` 中的 `ResourceInfo` 邏輯。 + +## 完整範例程式 + +把前面的所有步驟整合起來,以下是可以直接貼到 Console App 的完整程式碼。 + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +執行程式(`dotnet run`),即可在專案目錄得到整潔的 `output.zip`。用任何壓縮檔管理員開啟,你就能離線瀏覽已儲存的頁面——正是 **下載 HTML 為 ZIP** 功能所需要的。 + +## 常見問題與邊緣案例 + +| 問題 | 解答 | +|----------|--------| +| *如果我要把 ZIP 存到 Azure Blob Storage 該怎麼做?* | 把 `MemoryStream` 換成直接寫入 Blob 的串流(例如 `CloudBlockBlob.OpenWrite()`)。處理程式抽象讓這件事變得非常簡單。 | +| *我可以過濾掉特定資源嗎?* | 可以。在 `HandleResource` 內檢查 `info.ResourceType` 或 `info.Url`。回傳 `null` 即可跳過該資源,或回傳一個寫入空內容的串流。 | +| *ZIP 可以設定密碼保護嗎?* | `ZipSaveOptions` 有 `Password` 屬性。若需要加密,只要在呼叫 `Save` 前設定即可。 | +| *如果頁面很大、資產佔了好幾十 MB,會不會吃光記憶體?* | 使用 `MemoryStream` 可能會耗盡 RAM。改用寫入暫存資料夾的 `FileStream`,之後再讓 Aspose.Html 壓縮這些檔案。 | +| *這在 Linux 上的 .NET Core 能跑嗎?* | 完全可以。Aspose.Html 是跨平台的,只要執行環境有寫檔權限即可。 | + +## 專業小技巧 + +- **技巧**:若只在乎 HTML 與圖片,可在 `info.ResourceType == ResourceType.Image` 時保留,其他如腳本或字型則略過,讓 ZIP 更小。 +- **注意**:某些網站會阻擋自動化請求。若收到 403 錯誤,可透過 `HtmlLoadOptions` 設定自訂 `User-Agent`。 +- **小提醒**:建立 ZIP 後,可在 ASP.NET 控制器中直接回傳 `FileResult`,為使用者提供一鍵 **下載 HTML 為 ZIP** 按鈕。 + +## 結論 + +現在你已掌握使用 Aspose.Html 與 **自訂資源處理程式** 來 **將 HTML 儲存為 ZIP** 的完整、可投入生產的解法。只要載入任意 URL、設定 `ZipSaveOptions`,再讓處理程式提供串流,即可完成 **將 URL 轉成 ZIP**、**下載 HTML 為 ZIP** 與 **儲存網頁資源**,僅需幾行 C# 程式碼。 + +歡迎自行實驗——把串流寫到磁碟、雲端儲存,甚至資料庫。模式不變,結果永遠是一個整潔的壓縮檔,方便你發佈、快取或永久保存。 + +--- + +![Diagram illustrating the save html as zip workflow – from loading a URL to producing a ZIP file](/images/save-html-as-zip.png) + +*圖片替代文字:* **保存 HTML 為 ZIP 工作流程圖** + +如果你覺得本教學有幫助,歡迎留言、分享給同事,或在你保存工具腳本的 repo 上加星。祝開發順利! + +{{< /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/hongkong/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/hongkong/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..0131fe208 --- /dev/null +++ b/html/hongkong/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-04-19 +description: 使用 Aspose.HTML 在 C# 中將網頁儲存為 zip。學習如何將 URL 轉換為 zip、將 HTML 匯出為 zip,並透過簡單程式碼範例下載網頁為 + zip。 +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: zh-hant +og_description: 使用 Aspose.HTML 於 C# 將網頁儲存為 zip。此指南示範如何將 URL 轉換為 zip、將 HTML 匯出為 zip,以及僅需幾個步驟即可下載網頁為 + zip。 +og_title: 使用 Aspose.HTML 將網頁儲存為 ZIP – 完整 C# 教程 +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: 使用 Aspose.HTML 將網頁儲存為 ZIP – 完整 C# 教學 +url: /zh-hant/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 使用 Aspose.HTML 將網頁儲存為 ZIP – 完整 C# 教學 + +需要 **將網頁儲存為 zip** 以作離線存檔、自動化測試,或僅僅是發佈網站快照嗎?你並不孤單。在本教學中,我們將逐步說明如何 **將 URL 轉換為 zip**、**將 HTML 匯出為 zip**,甚至 **下載網頁為 zip**,只需幾行簡潔的 C# 程式碼。 + +我們會從專案設定講到最終產生的 ZIP 檔案,並且會穿插一些官方文件未提及的實用小技巧。完成後,你將擁有一套可在任何需要時 **從 html 建立 zip** 的可重用解決方案。 + +## 需求 + +- **.NET 6.0**(或任何較新的 .NET 版本)— Aspose.HTML 同時支援 .NET Core 與 .NET Framework。 +- **Aspose.HTML for .NET** NuGet 套件 — `Install-Package Aspose.HTML`。 +- 基本的 C# 經驗 — 只要會寫 `Console.WriteLine` 就足夠。 +- 具備網路連線的機器以便首次下載(程式碼本身在 ZIP 建立完成後即可離線執行)。 + +不需要額外的 SDK、無頭瀏覽器,只要純 .NET 加上 Aspose.HTML 即可。 + +![Illustration of saving webpage as zip using Aspose.HTML](save-webpage-as-zip.png "Diagram showing save webpage as zip workflow") + +## Save Webpage as ZIP – 概觀 + +從高層次來看,整個流程包含三個主要部件: + +1. **自訂的 `ResourceHandler`**,告訴 Aspose.HTML 每個外部資源(圖片、CSS、腳本)要寫入哪裡。 +2. **`ZipSaveOptions`**,將處理器綁定到 ZIP 檔案,同時讓你調整渲染設定(抗鋸齒、字型提示等)。 +3. **`HTMLDocument.Save` 呼叫**,將頁面與所有資產一起串流至 ZIP 檔案。 + +就這樣。繁重的工作交由 Aspose.HTML 處理,你只需要關注「為什麼」與「何時」使用,而不必與低階串流糾纏。 + +--- + +## 步驟 1:建立專案並加入 Aspose.HTML + +首先,建立一個新的 Console 專案(或將程式碼放入現有應用程式)。在終端機執行: + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +`Aspose.HTML` 套件已包含我們需要的所有型別:`HTMLDocument`、`ZipSaveOptions`、`ImageRenderingOptions` 以及抽象類別 `ResourceHandler`。 + +> **專業提示:** 若你是針對 .NET Framework,請改用 Visual Studio 的 NuGet 套件管理員 UI 取代 `dotnet` 指令——加入的 DLL 相同。 + +--- + +## 步驟 2:建立自訂的 `ZipHandler` 資源處理器 + +Aspose.HTML 在解析頁面時會對每個外部檔案呼叫 `HandleResource`。透過覆寫此方法,我們可以把每個資源寫入 ZIP 條目,而不是寫到檔案系統。 + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### 為什麼需要自訂處理器? + +若不自行處理,Aspose.HTML 會把資源直接寫在 HTML 檔案旁的磁碟路徑。改以 `ZipArchive` 為目標,我們即可 **將所有內容打包**——非常適合發佈或日後由其他服務解壓使用。 + +--- + +## 步驟 3:使用影像渲染設定配置 `ZipSaveOptions` + +現在把處理器綁定到儲存選項,並開啟幾項渲染微調,以提升螢幕截圖或類 PDF 轉換的視覺忠實度。 + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **為什麼要啟用抗鋸齒與字型提示?** 當頁面稍後被渲染成位圖(例如產生縮圖)時,這些旗標可減少鋸齒,讓小字體更易辨識——若你打算把圖像嵌入其他文件,這點尤其重要。 + +--- + +## 步驟 4:載入 HTML 文件並儲存為 ZIP + +處理器與選項準備好後,只要把遠端頁面的 URL 傳給 `HTMLDocument` 即可。`Save` 方法會為每個連結資產呼叫 `HandleResource`。 + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +此時 `zipStream` 已包含完整的 **ZIP 壓縮檔**,內部有: + +- `index.html`(主頁面) +- 所有 `` 標籤引用的 CSS 檔案 +- 渲染離線頁面所需的圖片、字型與 JavaScript 檔案 + +### 邊緣情況與變體 + +| 情況 | 需要調整的項目 | +|-----------------------------------|-----------------------------------------------------------------------------------| +| **需要驗證** | 使用 `HTMLDocument(string url, LoadOptions options)`,並於 `options` 設定 `Credentials`。 | +| **頁面非常龐大(>100 MB)** | 改為直接寫入 `FileStream` 而非 `MemoryStream`,以避免大量記憶體使用。 | +| **以 “//” 開頭的相對 URL** | 處理器會自動正規化,只要確保 `BaseUrl` 已設定即可。 | +| **ZIP 內自訂資料夾結構** | 在 `HandleResource` 中修改 `info.Path` 再建立條目。 | + +--- + +## 步驟 5:將 ZIP 檔寫入磁碟並驗證結果 + +最後,我們把記憶體中的 ZIP 寫回磁碟。若僅要將串流傳輸至網路,此步驟可省略,但寫檔方便驗證。 + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**預期結果:** 開啟 `result.zip` 後會看到 `index.html`,在離線瀏覽器中開啟時,畫面與線上原頁面相同(前提是下載時所有外部資產皆可取得)。 + +--- + +## 常見問題與解答 + +**Q: 這種做法能處理使用 lazy‑load 的圖片嗎?** +A: 可以,只要圖片在最初的 DOM 走訪期間被請求到。若腳本在頁面載入後才載入圖片,需在 `Save` 前手動呼叫 `document.Render()` 觸發渲染。 + +**Q: 能進一步壓縮 ZIP 嗎?** +A: `ZipArchive` 采用預設壓縮等級。若需更高壓縮率,可使用 `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)` 建立。 + +**Q: 若需要密碼保護的 ZIP 該怎麼辦?** +A: 內建的 `ZipArchive` 不支援加密。此時可在 Aspose.HTML 完成寫入後,將輸出串流交給第三方庫(如 `SharpZipLib`)進行加密。 + +--- + +## 生產環境使用的專業提示 + +- **重複使用 `ZipHandler`** 以批次處理多個頁面;只要在每次執行間重設底層的 `MemoryStream` 即可。 +- **記錄** + +{{< /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/hungarian/net/generate-jpg-and-png-images/_index.md b/html/hungarian/net/generate-jpg-and-png-images/_index.md index dc2c2b0ac..d881b8e08 100644 --- a/html/hungarian/net/generate-jpg-and-png-images/_index.md +++ b/html/hungarian/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Tanulja meg az Aspose.HTML for .NET használatát HTML-dokumentumok kezeléséhe Ismerje meg, hogyan állíthatja be az antialiasingot a DOCX dokumentumok PNG vagy JPG képekké konvertálásakor az Aspose.HTML for .NET használatával. ### [docx konvertálása png-re – zip archívum létrehozása C# oktatóanyag](./convert-docx-to-png-create-zip-archive-c-tutorial/) Ismerje meg, hogyan konvertálhat docx fájlokat png képekké, majd csomagolhatja őket zip archívumba C#-ban az Aspose.HTML segítségével. +### [HTML renderelése PNG-be – Teljes C# útmutató](./how-to-render-html-to-png-complete-c-guide/) +Ismerje meg, hogyan konvertálhatja a HTML-t PNG formátumba C#-ban az Aspose.HTML for .NET segítségével. ## Következtetés diff --git a/html/hungarian/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/hungarian/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..a37c13bb9 --- /dev/null +++ b/html/hungarian/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,159 @@ +--- +category: general +date: 2026-04-19 +description: HTML PNG-re renderelése az Aspose.Html segítségével. Tanulja meg, hogyan + konvertálja az HTML-t PNG-be, hogyan mentse el HTML-t PNG-ként, és hogyan hozzon + létre képet HTML-ből percek alatt. +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: hu +og_description: HTML PNG-re renderelése az Aspose.Html segítségével. Kövesse ezt a + lépésről‑lépésre útmutatót az HTML PNG-re konvertálásához, az HTML PNG-ként való + mentéséhez és HTML-ből kép létrehozásához. +og_title: HTML renderelése PNG-be – Teljes C# útmutató +tags: +- Aspose.Html +- C# +title: HTML renderelése PNG-re – Teljes C# útmutató +url: /hu/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan rendereljük a HTML-t PNG-re – Teljes C# útmutató + +Gondolkodtál már azon, **hogyan rendereljük a HTML-t** egy képfájlba anélkül, hogy böngészőt indítanánk? Nem vagy egyedül. Sok projektben—e‑mail bélyegképek, PDF generálás vagy egyszerű előnézetek—szükséged van arra, hogy **HTML‑t PNG‑re konvertálj** valós időben. + +Ebben a tutorialban egy gyakorlati megoldáson keresztül vezetünk végig az Aspose.Html for .NET használatával, az könyvtár telepítésétől a kis betűméretekhez való szövegtippelés finomhangolásáig. A végére képes leszel **HTML‑t PNG‑ként menteni**, **képet létrehozni HTML‑ből**, és még a renderelési beállításokat is testre szabni szélsőséges esetekhez. + +## Amire szükséged lesz + +- **.NET 6+** (vagy .NET Framework 4.6.2+). Az API ugyanúgy működik a különböző futtatókörnyezetekben. +- **Aspose.Html** NuGet csomag – `Install-Package Aspose.Html`. +- Egy egyszerű HTML fájl (pl. `article.html`), amelyet képpé szeretnél alakítani. +- Visual Studio, Rider vagy bármely kedvenc szerkesztő. + +Ennyi—nincs extra függőség, nincs headless Chrome, csak tiszta C#. + +## 1. lépés: Aspose.Html telepítése és névterek hozzáadása + +Először húzd be a könyvtárat a NuGet‑ből. Nyisd meg a Package Manager Console‑t és futtasd: + +```powershell +Install-Package Aspose.Html +``` + +A telepítés után add hozzá a szükséges `using` direktívákat a fájlod tetejéhez: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +Ezek a névterek hozzáférést biztosítanak a dokumentummodellhez, a képrendereléshez és a finomhangolt szövegbeállításokhoz, amikre később szükség lesz. + +> **Pro tipp:** Ha .csproj fájlt használsz, manuálisan is hozzáadhatod a `` sort. + +## 2. lépés: HTML dokumentum betöltése + +Szükséged van egy `HTMLDocument` példányra, amely a forrásfájlra mutat. Az Aspose.Html képes olvasni útvonalból, stream‑ből vagy akár URL‑ről is. + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Miért fontos:** A dokumentum egyszeri betöltése alacsony memóriahasználatot eredményez. Ha sok oldalt szeretnél renderelni, ahol csak lehetséges, használd újra ugyanazt a `HTMLDocument` objektumot. + +## 3. lépés: Szövegréteg finomhangolása kis betűméretekhez + +Kis szöveg renderelésekor gyakran homályos élekkel találkozunk. A hinting engedélyezése azt mondja a rasterizálónak, hogy a glifeket pixelhatárokhoz igazítsa, ami drámaian javítja az olvashatóságot. + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +Itt szabályozhatod az anti‑aliasing‑et, a subpixel renderelést, vagy akár egy egyedi betűkészletet is megadhatsz – hasznos, ha a HTML web‑fontokra hivatkozik. + +## 4. lépés: Képrenderelési beállítások konfigurálása + +Most a `TextOptions`‑t kapcsoljuk a képparaméterekhez. Beállíthatod a háttérszínt, a DPI‑t vagy a képformátumot (PNG, JPEG, BMP). + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **Szélsőséges eset:** Ha a HTML szélesebb a szokásos képernyőméreteknél, fontold meg a `Width` és `Height` beállítását az `ImageRenderingOptions`‑ban, hogy elkerüld a hatalmas PNG‑ket. + +## 5. lépés: HTML renderelése PNG fájlba + +Végül hívd meg a `RenderToImage` metódust. A használt metódus túlterhelés lehetővé teszi a kimeneti útvonal és a korábban épített beállítások megadását. + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +Amikor futtatod a programot, az Aspose.Html feldolgozza a markupot, alkalmazza a CSS‑t, elrendezi az oldalt, és rasterizálja azt `article.png`‑be. Nyisd meg a fájlt bármely képnézővel – egy pixel‑tökéletes pillanatképet kell látnod az eredeti HTML‑ről. + +![hogyan rendereljük a html-t PNG-ként az Aspose.Html használatával](render-html-png.png) + +*Kép alt szöveg: **hogyan rendereljük a html-t** PNG‑ként az Aspose.Html használatával* + +## Bónusz: Több oldal kezelése vagy méretezés + +Néha egyetlen HTML fájl több `` szekciót tartalmaz (pl. nyomtatáshoz). Végig iterálhatsz a `htmlDoc.Pages`‑en és minden oldalt külön renderelhetsz: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +Ha bélyegképre van szükséged a teljes méretű kép helyett, állítsd be a `imgOpts.Width` és `imgOpts.Height` értékeket a renderelés előtt. A könyvtár automatikusan megőrzi az arányt. + +--- + +## Összegzés + +Most már egy stabil, termelés‑kész recepted van arra, **hogyan rendereljük a HTML-t** PNG képpé az Aspose.Html használatával. A csomag telepítésétől, a markup betöltésén, a szöveges hinting finomhangolásán, egészen a `RenderToImage` meghívásáig minden lépés lefedett. + +Ezzel a tudással **HTML‑t PNG‑re konvertálhatsz**, **HTML‑t PNG‑ként menthetsz**, és **képet hozhatsz létre HTML‑ből** bármely .NET alkalmazáshoz – legyen szó bélyegképeket generáló webszolgáltatásról vagy weboldalakat archiváló asztali eszközről. + +Ezután fedezd fel a kapcsolódó témákat, például a **HTML renderelése képre** különböző formátumokkal (JPEG, BMP) vagy a PNG beágyazását PDF‑be az Aspose.PDF használatával. Kísérletezhetsz DPI‑skálázással nagy felbontású nyomatokhoz, vagy dinamikusan generált HTML‑t is betáplálhatsz ugyanabba a folyamatba. + +Van kérdésed vagy egy különös felhasználási eset? Írj egy megjegyzést alább, és jó renderelést! + +{{< /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/hungarian/net/html-extensions-and-conversions/_index.md b/html/hungarian/net/html-extensions-and-conversions/_index.md index 53dd8b575..cc4c5e9e5 100644 --- a/html/hungarian/net/html-extensions-and-conversions/_index.md +++ b/html/hungarian/net/html-extensions-and-conversions/_index.md @@ -48,9 +48,11 @@ Az Aspose.HTML for .NET nem csak egy könyvtár; ez egy változás a webfejleszt ### [Konvertálja a HTML-t Markdown-ra .NET-ben az Aspose.HTML-lel](./convert-html-to-markdown/) ### [Konvertálja a HTML-t MHTML-re .NET-ben az Aspose.HTML-lel](./convert-html-to-mhtml/) ### [Konvertálja a HTML-t PNG-re .NET-ben az Aspose.HTML-lel](./convert-html-to-png/) +### [HTML konvertálása PNG-be C#-ban – HTML megjelenítése képként](./convert-html-to-png-in-c-render-html-as-image/) +Ismerje meg, hogyan renderelhet HTML-t képként PNG formátumban C#-ban az Aspose.HTML for .NET segítségével. ### [Konvertálja a HTML-t TIFF-re .NET-ben az Aspose.HTML-lel](./convert-html-to-tiff/) ### [Konvertálja a HTML-t XPS-re .NET-ben az Aspose.HTML-lel](./convert-html-to-xps/) -Fedezze fel az Aspose.HTML erejét .NET-hez: A HTML-t könnyedén konvertálja XPS-re. Előfeltételek, lépésenkénti útmutató és GYIK mellékelve. +Fedezze fel az Aspose.HTML erejét .NET-hez: A HTML-t könnyedén konvertálja XPS-re. Előfeltételek, lépésről‑lépéses útmutató és GYIK mellékelve. ### [HTML zip-elése C#-ban – HTML mentése zip-be](./how-to-zip-html-in-c-save-html-to-zip/) Ismerje meg, hogyan csomagolhatja be a HTML-fájlokat zip-archívumba C#-ban az Aspose.HTML for .NET segítségével. ### [HTML-dokumentum létrehozása formázott szöveggel és exportálása PDF-be – Teljes útmutató](./create-html-document-with-styled-text-and-export-to-pdf-full/) @@ -58,8 +60,11 @@ Hozzon létre HTML-dokumentumot formázott szöveggel, majd exportálja PDF-be a ### [PDF létrehozása HTML-ből – C# lépésről‑lépésre útmutató](./create-pdf-from-html-c-step-by-step-guide/) Ismerje meg, hogyan hozhat létre PDF-et HTML-ből C#‑ban az Aspose.HTML for .NET segítségével, részletes lépésről‑lépésre útmutatóval. ### [HTML mentése ZIP-ként – Teljes C# oktatóanyag](./save-html-as-zip-complete-c-tutorial/) +### [Weboldal mentése ZIP-be az Aspose.HTML segítségével – Teljes C# oktatóanyag](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) ### [HTML mentése ZIP-be C#‑ban – Teljes memória‑beli példa](./save-html-to-zip-in-c-complete-in-memory-example/) Mentse a HTML-t közvetlenül memóriában ZIP-archívumba az Aspose.HTML for .NET C#‑ban. +### [HTML mentése ZIP-be egy egyéni erőforráskezelővel – lépésről‑lépésre útmutató](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +Ismerje meg, hogyan menthet HTML-fájlokat ZIP-archívumba egy egyéni erőforráskezelő segítségével C#‑ban, részletes lépésekkel. ## Következtetés diff --git a/html/hungarian/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/hungarian/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..9c101580d --- /dev/null +++ b/html/hungarian/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,218 @@ +--- +category: general +date: 2026-04-19 +description: HTML konvertálása PNG-re C#-ban az Aspose.HTML használatával – egy gyors + útmutató a HTML képként való rendereléséhez és a diagram PNG-ként való mentéséhez + élsimítással. +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: hu +og_description: Konvertálja a HTML-t PNG-re C#-ban gyorsan. Tanulja meg, hogyan renderelhet + HTML-t képként, menthet diagramot PNG-ként, és generálhat PNG-t HTML-ből az Aspose.HTML + segítségével. +og_title: HTML konvertálása PNG-re C#‑ban – HTML megjelenítése képként +tags: +- Aspose.HTML +- C# +- Image Processing +title: HTML konvertálása PNG-re C#-ban – HTML képként történő megjelenítés +url: /hu/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML konvertálása PNG‑re C#‑ban – HTML megjelenítése képként + +Szükséged volt már **HTML PNG‑re konvertálására** C#‑ban, de nem tudtad, melyik könyvtár adja a legélesebb eredményt? Nem vagy egyedül. Akár dinamikus diagramot exportálsz, egy e‑mail sablont szeretnél bélyegképpé alakítani, vagy egyszerűen csak egy statikus pillanatképet akarsz egy weboldalról, a **HTML megjelenítése képként** hasznos trükk minden fejlesztő eszköztárában. + +Ebben az útmutatóban végigvezetünk a teljes folyamaton, hogyan alakítsunk egy HTML fájlt PNG‑fájllá az Aspose.HTML segítségével. A végére **diagram mentése PNG‑ként**, **PNG generálása HTML‑ből**, és még az anti‑aliasing beállítások finomhangolása is a rendelkezésedre áll. Nincs felesleges szöveg – csak egy komplett, futtatható példa, amelyet ma beilleszthetsz a projektedbe. + +## Amire szükséged lesz + +Mielőtt belevágnánk, győződj meg róla, hogy a következők rendelkezésre állnak: + +- **.NET 6.0** vagy újabb (a kód .NET Framework 4.6+ alatt is működik). +- **Aspose.HTML for .NET** – a NuGet‑ről telepíthető a `Install-Package Aspose.HTML` paranccsal. +- Egy egyszerű HTML fájl (pl. `chart.html`), amely tartalmazza a rögzíteni kívánt markup‑ot. +- A kedvenc IDE‑d – Visual Studio, Rider vagy akár VS Code is megfelelő. + +Ennyi. Nincs extra függőség, nincs headless böngésző, csak egy jól dokumentált könyvtár. + +![HTML PNG konvertálás példája](example.png "HTML PNG konvertálás kimenete") + +## 1. lépés: HTML dokumentum betöltése + +Az első dolog, amit meg kell tennünk, hogy az Aspose.HTML‑t a forrásfájlra mutassuk. Tekintsd a `HTMLDocument` osztályt egy vásznaként, amely mindent tartalmaz, amit a könyvtár később egy bitmapre fest. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*Miért fontos:* A dokumentum betöltése elválasztja a parsing fázist a renderelés fázistól. Lehetővé teszi a motor számára, hogy a CSS‑t, szkripteket és képeket feloldja, mielőtt PNG‑t generálna. Ha kihagyod ezt a lépést és nyers markup‑ot próbálsz renderelni, egy üres képet vagy hiányzó stílusokat kapsz. + +## 2. lépés: Képrenderelési beállítások konfigurálása + +Alapértelmezés szerint az Aspose.HTML egy megfelelő PNG‑t ad, de gyakran simább élekre van szükség – különösen diagramok és vektorgrafikák esetén. Itt jön képbe az `ImageRenderingOptions`. + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*Pro tipp:* Ha nagy felbontású (high‑DPI) kijelzőkkel dolgozol, arányosan növeld a `Width` és `Height` értékeket, és hagyd, hogy a PNG nagyobb legyen. Később bármikor lecsökkentheted egy képszerkesztővel. Emellett a háttérszín beállítása megakadályozza, hogy a transparent PNG‑k furcsán jelenjenek meg sötét oldalon. + +## 3. lépés: HTML renderelése PNG fájlba + +Most jön a nehéz munka. A `RenderToImage` metódus megkapja a kimeneti útvonalat és a korábban definiált beállításokat, majd PNG‑t ír a lemezre. + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +Amikor ez a sor befejeződik, a `chart.png` fájlt megtalálod a célmappában. Nyisd meg – élesnek tűnik a diagram? Ha bekapcsoltad az anti‑aliasing‑et, a vonalak simák, a szöveg pedig tiszta kell legyen. + +### Az eredmény ellenőrzése + +Gyorsan programból is ellenőrizheted a képet: + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +Ha a konzol nem‑nulla méreteket és egy támogatott pixelformátumot (pl. `Format32bppArgb`) ír ki, akkor sikeresen **convert html to png**‑t hajtottál végre. + +## HTML megjelenítése képként – Haladó beállítások + +Eddig az alapokat fedtük le, de a valós világ gyakran igényel több irányítást. Az alábbiakban néhány gyakori finomhangolást mutatunk be. + +### DPI beállítása nyomtatási minőséghez + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +A magasabb DPI akkor hasznos, ha a PNG‑t PDF‑be ágyazod vagy papírra nyomtatod. + +### Külső erőforrások kezelése + +Ha a HTML külső CSS‑t, betűtípusokat vagy képeket hivatkozik egy webszerveren, győződj meg róla, hogy a futtatókörnyezet eléri ezeket. Beállíthatsz egy egyedi `BaseUrl`‑t: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +Ez azt mondja az Aspose.HTML‑nek, hogy a relatív URL‑ket a megadott alap‑URL‑hez viszonyítva oldja fel. + +### Több oldal konvertálása + +Az Aspose.HTML képes egy többoldalas HTML dokumentum minden oldalát külön PNG fájlba renderelni: + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +Így **save chart as PNG** minden oldalra anélkül, hogy manuálisan kellene darabolni a kimenetet. + +## Diagram mentése PNG‑ként – Gyakori hibák és elkerülésük + +1. **Hiányzó betűtípusok:** Ha a HTML egy egyedi betűtípust használ, amely nincs telepítve a szerveren, a renderelt PNG alapértelmezett betűtípusra vált. Telepítsd a betűtípust a gépre, vagy ágyazd be `@font-face`‑vel a CSS‑ben. +2. **Nagy fájlok:** Egy hatalmas HTML fájl renderelése sok memóriát fogyaszthat. Fontold meg a tartalom oldalakra bontását vagy a képméretek csökkentését. +3. **Átlátszó háttér:** Alapértelmezés szerint a PNG‑k átlátszóak lehetnek. Ha átlátszatlan háttérre van szükséged (pl. e‑mail bélyegképekhez), állítsd be a `BackgroundColor`‑t, ahogy korábban láttad. +4. **Szkript végrehajtás:** Az Aspose.HTML nem futtat JavaScript‑et. Ha a diagramod egy kliensoldali könyvtárral, például Chart.js‑szel készült, előre kell renderelned a diagramot egy statikus `` elemre, vagy headless böngészőt kell használnod. + +## Teljes működő példa + +Az alábbi program a teljes konzolos alkalmazás, amelyet egyszerűen bemásolhatsz. Tartalmazza az összes lépést, a hibakezelést és a fent tárgyalt opcionális finomhangolásokat. + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +Futtasd a programot, és egy megerősítő üzenetet látsz, majd a kép méreteit. Nyisd meg a `chart.png`‑t bármely nézőben, hogy ellenőrizd, a diagram pontosan úgy néz ki, mint az eredeti HTML. + +## Összegzés + +Most már egy stabil megoldással rendelkezel, + +{{< /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/hungarian/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/hungarian/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..bd817fc06 --- /dev/null +++ b/html/hungarian/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,240 @@ +--- +category: general +date: 2026-04-19 +description: Tanulja meg, hogyan menthet HTML-t zip formátumban az Aspose.Html és + egy egyedi erőforráskezelő segítségével. Fedezze fel, hogyan konvertálhat URL-t + zip-be, és hogyan töltheti le a HTML-t zip formátumban percek alatt. +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: hu +og_description: 'HTML mentése zipként egyszerű: használja az Aspose.Html-t, egy egyéni + erőforráskezelőt és a ZipSaveOptions-t, hogy bármely URL-t letölthető zip archívummá + konvertáljon.' +og_title: HTML mentése zipként egy egyedi erőforráskezelővel – gyors útmutató +tags: +- Aspose.Html +- C# +- Web scraping +title: HTML mentése ZIP-fájlba egy egyedi erőforráskezelővel – lépésről‑lépésre útmutató +url: /hu/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# html mentése zip‑ként – Teljes útmutató + +Valaha szükséged volt már **save html as zip**‑re, hogy egy teljes oldalt a képeivel, CSS‑ével és scriptjeivel egy rendezett csomagban küldhess? Talán egy crawler‑t építesz, amely cikkeket archivál, vagy egyszerűen csak egy gyors “download html as zip” gombot szeretnél a felhasználóidnak. Mindegy, valószínűleg azon tűnődsz, hogyan csináld anélkül, hogy millió sor fájl‑IO kódot írnál. + +Jó hír: az Aspose.Html a feladatot gyerekjátékká teszi, és egy **custom resource handler**‑rel pontosan meghatározhatod, hová kerüljön minden erőforrás‑stream. Ebben az útmutatóban megmutatjuk, hogyan **convert url to zip**, hogyan **download html as zip**, és hogyan **save webpage resources** offline használatra – mindezt egyetlen, önálló C# programmal. + +## Mit fogsz megtanulni + +- Telepítsd az Aspose.Html könyvtárat (a NuGet gond nélkül intézi). +- Írj egy `ResourceHandler`‑t, amely minden Aspose.Html által írandó erőforráshoz egy `Stream`‑et biztosít. +- Tölts be egy távoli oldalt (vagy helyi fájlt), és mondd meg az Aspose.Html‑nek, hogy mindent egy ZIP archívumba csomagoljon. +- Ellenőrizd, hogy a létrejött `output.zip` tartalmazza-e a HTML fájlt és az összes hivatkozott eszközt. + +Nincs szükség külső eszközökre, nincs kézi zip‑fájl manipuláció – csak tiszta, lefordított kód, amelyet bármely .NET projektbe beilleszthetsz. + +## Előfeltételek + +| Követelmény | Miért fontos | +|-------------|----------------| +| .NET 6.0 vagy újabb (a kód .NET Framework 4.7+‑on is működik) | Az Aspose.Html a modern futtatókörnyezeteket célozza; a régebbi keretrendszerek hiányozhatnak bizonyos API‑kból. | +| Visual Studio 2022 (vagy bármely kedvenc IDE) | Hasznos a hibakereséshez és a generált ZIP megtekintéséhez. | +| Internetkapcsolat a mint URL‑hez (`https://example.com`) | Élő oldalt fogunk lekérni a **convert url to zip** bemutatásához. | +| NuGet csomag `Aspose.Html` (v23.12 vagy újabb) | Ez a könyvtár biztosítja a `HTMLDocument`, `ZipSaveOptions` és a `ResourceHandler` alaposztályt. | + +Ha már van egy .NET projekted, csak futtasd: + +```bash +dotnet add package Aspose.Html +``` + +Ez minden, amire a beállításhoz szükséged van. + +## 1. lépés: Egyedi Resource Handler létrehozása + +A megoldás szíve egy olyan osztály, amely a `ResourceHandler`‑ből örököl. Az Aspose.Html minden írandó fájlhoz meghívja a `HandleResource`‑t – legyen az HTML, kép, CSS, JavaScript, bármi. Egy `Stream` visszaadásával eldöntheted, hová kerülnek az adatok. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**Miért egyedi handler?** +Mert a régi `IOutputStorage` interfész elavult, és a `ResourceHandler` teljes kontrollt ad a kimeneti célhely felett. Emellett lehetővé teszi a `ResourceInfo` vizsgálatát – például csak a képeket megtartva, a betűtípusokat kihagyva. + +## 2. lépés: HTML Dokumentum betöltése (vagy URL konvertálása ZIP‑re) + +Az Aspose.Html betölthet URL‑ről, fájlútról vagy nyers HTML szövegről. Itt egy élő oldal betöltését mutatjuk be, ami a tipikus eset, amikor **download html as zip**‑t szeretnél. + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +Ha már van a HTML forrás egy változóban, egyszerűen add át a konstruktorba: + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## 3. lépés: Handler csatlakoztatása a ZipSaveOptions‑hoz + +A `ZipSaveOptions` megmondja az Aspose.Html‑nek, *hogyan* hozza létre a ZIP fájlt. A kulcsfontosságú tulajdonság az `OutputStorage`, amelyet a `MyHandler` példányunkra állítunk be. + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +A tömörítési szintet, a mappaneveket az archívumban vagy akár egy manifest fájl beágyazását is finomhangolhatod – a részletek az Aspose dokumentációban vannak, de az alapértelmezések a legtöbb esetben remekül működnek. + +## 4. lépés: Dokumentum mentése ZIP archívumként + +Most jön a varázslat. A `Save` metódus végigiterál minden erőforráson, meghívja a `HandleResource`‑t, és a visszaadott stream‑be írja a bájtokat. Mivel a handler minden alkalommal egy friss `MemoryStream`‑et ad vissza, az Aspose.Html később összegyűjti ezeket, és a `output.zip`‑be csomagolja. + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**Mit fogsz látni:** +- `output.zip` a projekt gyökérkönyvtárában. +- A ZIP‑ben: `index.html` (a fő oldal) plusz almappák, mint `images/`, `css/`, `scripts/`, amelyek a böngésző által kért pontos fájlokat tartalmazzák. + +## 5. lépés: Az eredmény ellenőrzése (opcionális, de ajánlott) + +Egy gyors ellenőrzés biztosítja, hogy valóban **save webpage resources**‑t hajtottál végre helyesen. + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +Látnod kell `index.html` bejegyzéseket, a hivatkozott képeket (`logo.png`), CSS‑fájlokat és JavaScript‑fájlokat. Ha valami hiányzik, ellenőrizd újra a `ResourceInfo` logikát a `MyHandler`‑ben. + +## Teljes működő példa + +Összeállítva itt a teljes program, amelyet egyszerűen beilleszthetsz egy konzolos alkalmazásba. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Futtasd a programot (`dotnet run`), és egy rendezett `output.zip`-et kapsz. Nyisd meg bármely archívumkezelővel, és böngészheted a mentett oldalt offline – pont ez a **download html as zip** funkció, amire szükséged van. + +## Gyakori kérdések és széljegyek + +| Kérdés | Válasz | +|----------|--------| +| *Mi van, ha a ZIP‑et Azure Blob Storage‑ben kell tárolni?* | Cseréld le a `MemoryStream`‑et egy olyan streamre, amely közvetlenül egy blobba ír (pl. `CloudBlockBlob.OpenWrite()`). A handler absztrakció ezt egyszerűvé teszi. | +| *Kiválogathatok bizonyos erőforrásokat?* | Igen. A `HandleResource`‑ben vizsgáld meg a `info.ResourceType` vagy `info.Url` értékét. Visszaadhatsz `null`‑t egy erőforrás kihagyásához, vagy egy olyan streamet, amely semmit sem ír. | +| *A ZIP jelszóval védett lehet?* | A `ZipSaveOptions` rendelkezik `Password` tulajdonsággal. Állítsd be a `Save` hívása előtt, ha titkosításra van szükség. | +| *Mi a helyzet a több tucat megabájtos eszközökkel rendelkező nagy oldalakkal?* | A `MemoryStream` mindenhez használata kimerítheti a RAM‑ot. Válts `FileStream`‑re, amely egy ideiglenes mappába ír, majd hagyd, hogy az Aspose.Html tömörítse ezeket a fájlokat. | +| *Működik ez .NET Core‑on Linuxon?* | Teljesen. Az Aspose.Html platformfüggetlen; csak győződj meg róla, hogy a futtatókörnyezetnek írási jogosultsága van. | + +## Pro tippek + +- **Pro tip:** Ha csak a HTML‑re és a képekre vagy kíváncsi, ellenőrizd, hogy `info.ResourceType == ResourceType.Image`, és hagyd ki a script‑eket vagy betűtípusokat, így a ZIP nagyon kicsi lesz. +- **Vigyázz:** egyes oldalak blokkolják az automatizált kéréseket. Állíts be egy egyedi `User-Agent`‑et a `HtmlLoadOptions`‑on keresztül, ha 403‑as hibát kapsz. +- **Tipp:** A ZIP létrehozása után közvetlenül kiszolgálhatod egy ASP.NET controller‑ből a `FileResult`‑tel, így a felhasználók egy kattintással **download html as zip** gombot kapnak. + +## Összegzés + +Most már egy stabil, termelés‑kész módszered van a **save html as zip** végrehajtására az Aspose.Html és egy **custom resource handler** segítségével. Bármely URL betöltésével, a `ZipSaveOptions` konfigurálásával és a handler által biztosított streamekkel **convert url to zip**, **download html as zip**, és **save webpage resources** feladatokat néhány C# sorral megoldhatod. + +Nyugodtan kísérletezz – tárold a streameket lemezen, felhőben vagy akár adatbázisban. A minta változatlan marad, és az eredmény mindig egy rendezett archívum, amelyet szállíthatsz, gyorsítótárazhatsz vagy örökre archiválhatsz. + +--- + +![Diagram illustrating the save html as zip workflow – from loading a URL to producing a ZIP file](/images/save-html-as-zip.png) + +*Kép alternatív szövege:* **html mentése zip munkafolyamat diagram** + +Ha hasznosnak találtad ezt a tutorialt, hagyj egy megjegyzést, oszd meg egy kollégával, vagy csillagozd a repót, ahol a segédszkripteket tárolod. Boldog kódolást! + +{{< /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/hungarian/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/hungarian/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..dc2686981 --- /dev/null +++ b/html/hungarian/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,218 @@ +--- +category: general +date: 2026-04-19 +description: Weboldal mentése zip fájlként az Aspose.HTML használatával C#-ban. Tanulja + meg, hogyan konvertálja az URL-t zip-be, exportálja a HTML-t zip-be, és töltse le + a weboldalt zip formátumban egy egyszerű kódrészlettel. +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: hu +og_description: Mentse el a weboldalt zip fájlként az Aspose.HTML segítségével C#-ban. + Ez az útmutató megmutatja, hogyan konvertálja az URL-t zip-be, exportálja a HTML-t + zip-be, és néhány lépésben tömörített formában töltheti le a weboldalt. +og_title: Weboldal mentése ZIP-ként az Aspose.HTML segítségével – Teljes C# útmutató +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: Weboldal mentése ZIP-ként az Aspose.HTML segítségével – Teljes C# oktatóanyag +url: /hu/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Weboldal mentése ZIP-be az Aspose.HTML segítségével – Teljes C# útmutató + +Szükséged van **weboldal ZIP-be mentésére** offline archiváláshoz, automatizált teszteléshez, vagy egyszerűen csak egy oldal pillanatképének elküldéséhez? Nem vagy egyedül. Ebben az útmutatóban végigvezetünk a **URL ZIP-be konvertálásán**, **HTML exportálásán ZIP-be**, és még **weboldal letöltésén ZIP-ként** néhány tiszta C# sorral. + +Mindent lefedünk a projekt beállításától a végső ZIP-fájl lemezre írásáig, és néhány gyakorlati tippet is megosztunk, amik nincsenek benne a hivatalos dokumentációban. A végére egy újrahasználható megoldásod lesz, amely **HTML‑ből ZIP‑et hoz létre** amikor csak szükséged van rá. + +## Amire szükséged lesz + +- **.NET 6.0** (vagy bármely friss .NET verzió) – az Aspose.HTML működik .NET Core‑ral és .NET Framework‑kel egyaránt. +- **Aspose.HTML for .NET** NuGet csomag – `Install-Package Aspose.HTML`. +- Alapvető C# ismeretek – ha tudsz egy `Console.WriteLine`‑t írni, már jó úton vagy. +- Internetkapcsolattal rendelkező gép a kezdeti letöltéshez (a kód maga offline is működik, miután a ZIP létrejött). + +Nincsenek extra SDK‑k, nincs headless böngésző, csak tiszta .NET és Aspose.HTML. + +![Illustration of saving webpage as zip using Aspose.HTML](save-webpage-as-zip.png "Diagram showing save webpage as zip workflow") + +## Weboldal mentése ZIP-be – Áttekintés + +Magas szinten a folyamat három részből áll: + +1. **Egy egyedi `ResourceHandler`**, amely megmondja az Aspose.HTML‑nek, hogy hová írja az egyes külső erőforrásokat (képek, CSS, szkriptek). +2. **`ZipSaveOptions`**, amely a kezelőt egy ZIP-archívumhoz köti, és lehetővé teszi a renderelés finomhangolását (antialiasing, betűtípus‑hinting, stb.). +3. **A `HTMLDocument.Save` hívás**, amely mindent összehozza, és a lapot valamint az összes erőforrást a ZIP‑fájlba streameli. + +Ennyi. A nehéz munkát az Aspose.HTML végzi, így a „miért” és „mikor” kérdésekre koncentrálhatsz, a low‑level stream‑ekkel való küzdelem helyett. + +--- + +## 1. lépés: Projekt létrehozása és az Aspose.HTML hozzáadása + +Először hozz létre egy új konzolos projektet (vagy illeszd be a kódot egy meglévő alkalmazásba). Nyiss egy terminált és futtasd: + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +Az `Aspose.HTML` csomag tartalmazza az összes szükséges típust: `HTMLDocument`, `ZipSaveOptions`, `ImageRenderingOptions`, és az absztrakt `ResourceHandler`. + +> **Pro tipp:** Ha .NET Framework‑öt célozol, cseréld le a `dotnet` parancsokat a Visual Studio NuGet Package Manager UI‑jára – ugyanazok a DLL‑ek kerülnek hozzáadásra. + +--- + +## 2. lépés: Egyedi `ZipHandler` erőforráskezelő létrehozása + +Az Aspose.HTML minden külső fájlra meghívja a `HandleResource`‑t, miközben feldolgozza az oldalt. Ennek a metódusnak a felülírásával minden erőforrást egy ZIP‑bejegyzésbe irányíthatunk a fájlrendszer helyett. + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### Miért egyedi kezelő? + +Nélküle az Aspose.HTML a forrásokat a HTML fájl mellé helyezné a lemezen. Egy `ZipArchive`‑ba táplálva **mindent egy csomagban** tartunk – tökéletes terjesztéshez vagy egy másik szolgáltatás általi későbbi kicsomagoláshoz. + +--- + +## 3. lépés: `ZipSaveOptions` konfigurálása képrendereléssel + +Most a kezelőt a mentési beállításokhoz kötjük, és bekapcsolunk néhány renderelési finomítást, amelyek javítják a képernyőképek vagy PDF‑hez hasonló konverziók vizuális hűségét. + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **Miért engedélyezzük az antialiasing‑et és a hinting‑et?** Amikor az oldal később bitmapre (pl. egy előnézeti képhez) kerül renderelésre, ezek a flag‑ek csökkentik a lépcsőzetes éleket és olvashatóbbá teszik a kis betűket – különösen fontos, ha a képeket máshol szeretnéd beágyazni. + +--- + +## 4. lépés: HTML dokumentum betöltése és mentése ZIP-be + +A kezelő és a beállítások készen állnak, egy távoli oldal betöltése olyan egyszerű, mint az URL átadása a `HTMLDocument`‑nek. A `Save` metódus meghívja a `HandleResource`‑t minden hivatkozott eszközhöz. + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +Ekkor a `zipStream` egy teljes **ZIP archívumot tartalmaz**, amely: + +- `index.html` (a fő oldal) +- Az összes `` tag által hivatkozott CSS fájl +- Képek, betűtípusok és JavaScript fájlok, amelyek az oldal offline megjelenítéséhez szükségesek + +### Szélsőséges esetek és variációk + +| Helyzet | Mit kell módosítani | +|----------------------------------------|-----------------------------------------------------------------------------------| +| **Hitelesítés szükséges** | Használd a `HTMLDocument(string url, LoadOptions options)`‑t és állítsd be az `options.Credentials`‑t. | +| **Nagyon nagy oldalak (>100 MB)** | Írd közvetlenül egy `FileStream`‑be a `MemoryStream` helyett, hogy elkerüld a magas RAM‑használatot. | +| **Relatív URL‑ek, amelyek “//”‑vel kezdődnek** | A kezelő automatikusan normalizálja őket; csak győződj meg róla, hogy a `BaseUrl` be van állítva. | +| **Egyedi mappaszerkezet a ZIP‑ben** | Módosítsd az `info.Path`‑t a `HandleResource`‑ben, mielőtt létrehoznád a bejegyzést. | + +--- + +## 5. lépés: ZIP fájl mentése és az eredmény ellenőrzése + +Végül a memóriában lévő ZIP‑et lemezre írjuk. Ez a lépés opcionális, ha a streamet hálózaton keresztül szeretnéd küldeni, de megkönnyíti a verifikációt. + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**Várható eredmény:** A `result.zip` megnyitása egy `index.html` fájlt mutat, amely offline böngészőben megnyitva azonosnak tűnik az élő oldallal (feltéve, hogy a letöltés során minden külső erőforrás elérhető volt). + +--- + +## Gyakori kérdések és válaszok + +**K: Működik ez a megközelítés a lazy‑loaded képeket használó oldalakkal?** +V: Igen, amennyiben a képek a kezdeti DOM‑bejárás során lekérdezésre kerülnek. Ha egy szkript a betöltés után tölti be a képeket, manuálisan kell egy “render” hívást indítanod a `document.Render()`‑el a `Save` előtt. + +**K: Tömöríthetem még jobban a ZIP‑et?** +V: A `ZipArchive` API az alapértelmezett tömörítési szintet használja. Aggresszívabb tömörítéshez például így hozhatod létre: `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)`. + +**K: Mi van, ha jelszóval védett ZIP‑re van szükségem?** +V: A beépített `ZipArchive` nem támogat titkosítást. Ebben az esetben a kimeneti streamet át kell vezetned egy harmadik féltől származó könyvtár, például a `SharpZipLib` segítségével, miután az Aspose.HTML befejezte az írást. + +--- + +## Pro tippek a termeléshez + +- **Használd újra a `ZipHandler`‑t** több oldal batch‑feldolgozásakor; csak a mögöttes `MemoryStream`‑et állítsd vissza a futások között. +- **Log + +{{< /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/indonesian/net/generate-jpg-and-png-images/_index.md b/html/indonesian/net/generate-jpg-and-png-images/_index.md index 4e885ce32..5b49986a5 100644 --- a/html/indonesian/net/generate-jpg-and-png-images/_index.md +++ b/html/indonesian/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Pelajari cara menggunakan Aspose.HTML untuk .NET guna memanipulasi dokumen HTML, Pelajari cara mengaktifkan antialiasing untuk meningkatkan kualitas gambar PNG atau JPG saat mengonversi dokumen DOCX menggunakan Aspose.HTML. ### [Konversi DOCX ke PNG – Membuat Arsip ZIP dengan C# Tutorial](./convert-docx-to-png-create-zip-archive-c-tutorial/) Pelajari cara mengonversi file DOCX menjadi PNG dan mengemasnya ke dalam arsip ZIP menggunakan C# dengan Aspose.HTML. +### [Cara Merender HTML ke PNG – Panduan Lengkap C#](./how-to-render-html-to-png-complete-c-guide/) +Pelajari cara merender HTML menjadi gambar PNG menggunakan Aspose.HTML dengan contoh kode lengkap dalam C#. ## Kesimpulan diff --git a/html/indonesian/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/indonesian/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..684890ab0 --- /dev/null +++ b/html/indonesian/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,159 @@ +--- +category: general +date: 2026-04-19 +description: Cara merender HTML ke PNG dengan Aspose.Html. Pelajari cara mengonversi + HTML ke PNG, menyimpan HTML sebagai PNG, dan membuat gambar dari HTML dalam hitungan + menit. +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: id +og_description: Cara merender HTML ke PNG dengan Aspose.Html. Ikuti tutorial langkah + demi langkah ini untuk mengonversi HTML ke PNG, menyimpan HTML sebagai PNG, dan + membuat gambar dari HTML. +og_title: Cara Mengonversi HTML ke PNG – Panduan Lengkap C# +tags: +- Aspose.Html +- C# +title: Cara Merender HTML ke PNG – Panduan Lengkap C# +url: /id/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Merender HTML ke PNG – Panduan Lengkap C# + +Pernah bertanya‑tanya **bagaimana merender HTML** menjadi file gambar tanpa harus membuka browser? Anda tidak sendirian. Dalam banyak proyek—thumbnail email, pembuatan PDF, atau sekadar preview cepat—Anda perlu **mengonversi HTML ke PNG** secara langsung. + +Dalam tutorial ini kita akan membahas solusi praktis menggunakan Aspose.Html untuk .NET, mulai dari instalasi library hingga penyesuaian text‑hinting untuk font kecil yang tajam. Pada akhir tutorial Anda akan dapat **menyimpan HTML sebagai PNG**, **membuat gambar dari HTML**, dan bahkan menyesuaikan opsi rendering untuk skenario kasus‑tepi. + +## Apa yang Anda Butuhkan + +- **.NET 6+** (atau .NET Framework 4.6.2+). API berfungsi sama di semua runtime. +- Paket NuGet **Aspose.Html** – `Install-Package Aspose.Html`. +- File HTML sederhana (misalnya `article.html`) yang ingin Anda ubah menjadi gambar. +- Visual Studio, Rider, atau editor apa pun yang Anda suka. + +Itu saja—tanpa dependensi tambahan, tanpa Chrome headless, hanya C# murni. + +## Langkah 1: Instal Aspose.Html dan Tambahkan Namespace + +Pertama, unduh library dari NuGet. Buka Package Manager Console dan jalankan: + +```powershell +Install-Package Aspose.Html +``` + +Setelah terpasang, tambahkan directive `using` yang diperlukan di bagian atas file Anda: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +Namespace ini memberi Anda akses ke model dokumen, rendering gambar, dan opsi teks yang detail yang akan kita gunakan nanti. + +> **Pro tip:** Jika Anda menggunakan file .csproj, Anda juga dapat menambahkan `` secara manual. + +## Langkah 2: Muat Dokumen HTML + +Anda memerlukan instance `HTMLDocument` yang menunjuk ke file sumber. Aspose.Html dapat membaca dari path, stream, atau bahkan URL. + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Mengapa ini penting:** Memuat dokumen sekali saja menjaga penggunaan memori tetap rendah. Jika Anda berencana merender banyak halaman, gunakan kembali objek `HTMLDocument` yang sama bila memungkinkan. + +## Langkah 3: Sesuaikan Rendering Teks untuk Font Kecil + +Saat merender teks berukuran sangat kecil, biasanya muncul tepi yang buram. Mengaktifkan hinting memberi tahu rasterizer untuk menyelaraskan glyph ke batas piksel, sehingga keterbacaan meningkat secara dramatis. + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +Anda juga dapat mengontrol anti‑aliasing, subpixel rendering, atau bahkan menentukan koleksi font khusus di sini—berguna bila HTML Anda menggunakan web font. + +## Langkah 4: Konfigurasikan Opsi Rendering Gambar + +Sekarang kita mengikat `TextOptions` ke pengaturan gambar. Anda juga dapat mengatur warna latar, DPI, atau format gambar (PNG, JPEG, BMP). + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **Kasus tepi:** Jika HTML Anda lebih lebar daripada dimensi layar standar, pertimbangkan untuk mengatur `Width` dan `Height` pada `ImageRenderingOptions` agar tidak menghasilkan PNG yang sangat besar. + +## Langkah 5: Render HTML ke File PNG + +Akhirnya, panggil `RenderToImage`. Overload metode yang kita gunakan memungkinkan kita menentukan path output dan opsi yang baru saja dibuat. + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +Saat Anda menjalankan program, Aspose.Html akan mem-parsing markup, menerapkan CSS, menata halaman, dan merasternya menjadi `article.png`. Buka file tersebut dengan penampil gambar apa pun—Anda akan melihat snapshot pixel‑perfect dari HTML asli Anda. + +![how to render html as PNG using Aspose.Html](render-html-png.png) + +*Teks alt gambar: **cara merender html** sebagai PNG menggunakan Aspose.Html* + +## Bonus: Menangani Beberapa Halaman atau Skalasi + +Kadang‑kadang satu file HTML berisi beberapa bagian `` (misalnya untuk pencetakan). Anda dapat melakukan loop melalui `htmlDoc.Pages` dan merender tiap halaman secara terpisah: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +Jika Anda membutuhkan thumbnail alih‑alih gambar berukuran penuh, sesuaikan `imgOpts.Width` dan `imgOpts.Height` sebelum rendering. Library akan secara otomatis mempertahankan rasio aspek. + +--- + +## Kesimpulan + +Anda kini memiliki resep solid dan siap produksi untuk **cara merender HTML** menjadi gambar PNG menggunakan Aspose.Html. Dari instalasi paket, memuat markup, menyetel text hinting, hingga akhirnya memanggil `RenderToImage`, setiap langkah telah dibahas. + +Dengan pengetahuan ini Anda dapat **mengonversi HTML ke PNG**, **menyimpan HTML sebagai PNG**, dan **membuat gambar dari HTML** untuk aplikasi .NET apa pun—baik layanan web yang menghasilkan thumbnail maupun alat desktop yang mengarsipkan halaman web. + +Selanjutnya, jelajahi topik terkait seperti **render HTML ke gambar** dengan format lain (JPEG, BMP) atau menyematkan PNG ke dalam PDF menggunakan Aspose.PDF. Anda juga dapat bereksperimen dengan skalasi DPI untuk cetakan resolusi tinggi, atau memasukkan HTML dinamis yang dihasilkan secara real‑time ke dalam pipeline yang sama. + +Ada pertanyaan atau kasus penggunaan yang unik? Tinggalkan komentar di bawah, dan selamat merender! + +{{< /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/indonesian/net/html-extensions-and-conversions/_index.md b/html/indonesian/net/html-extensions-and-conversions/_index.md index 6ac5368ff..18d10d90e 100644 --- a/html/indonesian/net/html-extensions-and-conversions/_index.md +++ b/html/indonesian/net/html-extensions-and-conversions/_index.md @@ -39,41 +39,67 @@ Aspose.HTML untuk .NET bukan sekadar pustaka; pustaka ini merupakan pengubah per ## Tutorial Ekstensi dan Konversi HTML ### [Konversi HTML ke PDF dalam .NET dengan Aspose.HTML](./convert-html-to-pdf/) Ubah HTML ke PDF dengan mudah menggunakan Aspose.HTML untuk .NET. Ikuti panduan langkah demi langkah kami dan manfaatkan kekuatan konversi HTML ke PDF. + ### [Buat PDF dari HTML – Panduan Langkah‑demi‑Langkah C#](./create-pdf-from-html-c-step-by-step-guide/) Pelajari cara membuat PDF dari HTML menggunakan C# dengan panduan langkah demi langkah menggunakan Aspose.HTML. + ### [Konversi EPUB ke Gambar dalam .NET dengan Aspose.HTML](./convert-epub-to-image/) Pelajari cara mengonversi EPUB ke gambar menggunakan Aspose.HTML untuk .NET. Tutorial langkah demi langkah dengan contoh kode dan opsi yang dapat disesuaikan. + ### [Konversi EPUB ke PDF dalam .NET dengan Aspose.HTML](./convert-epub-to-pdf/) Pelajari cara mengonversi EPUB ke PDF menggunakan Aspose.HTML untuk .NET. Panduan langkah demi langkah ini mencakup opsi penyesuaian, FAQ, dan banyak lagi untuk konversi dokumen yang lancar. + ### [Konversi EPUB ke XPS dalam .NET dengan Aspose.HTML](./convert-epub-to-xps/) Pelajari cara mengonversi EPUB ke XPS dalam format .NET menggunakan Aspose.HTML untuk .NET. Ikuti panduan langkah demi langkah kami untuk konversi yang mudah. + ### [Konversi HTML ke BMP di .NET dengan Aspose.HTML](./convert-html-to-bmp/) Pelajari cara mengonversi HTML ke BMP dalam .NET menggunakan Aspose.HTML untuk .NET. Panduan lengkap bagi pengembang web untuk memanfaatkan Aspose.HTML untuk .NET. + ### [Konversi HTML ke DOC dan DOCX dalam .NET dengan Aspose.HTML](./convert-html-to-doc-docx/) Pelajari cara memanfaatkan kekuatan Aspose.HTML untuk .NET dalam panduan langkah demi langkah ini. Ubah HTML menjadi DOCX dengan mudah dan tingkatkan proyek .NET Anda. Mulailah hari ini! + ### [Konversi HTML ke GIF di .NET dengan Aspose.HTML](./convert-html-to-gif/) Temukan kekuatan Aspose.HTML untuk .NET: Panduan langkah demi langkah untuk mengonversi HTML ke GIF. Prasyarat, contoh kode, Tanya Jawab Umum, dan banyak lagi! Optimalkan manipulasi HTML Anda dengan Aspose.HTML. + ### [Konversi HTML ke JPEG dalam .NET dengan Aspose.HTML](./convert-html-to-jpeg/) Pelajari cara mengonversi HTML ke JPEG dalam .NET dengan Aspose.HTML untuk .NET. Panduan langkah demi langkah untuk memanfaatkan kekuatan Aspose.HTML untuk .NET. Optimalkan tugas pengembangan web Anda dengan mudah. + ### [Konversi HTML ke Markdown di .NET dengan Aspose.HTML](./convert-html-to-markdown/) Pelajari cara mengonversi HTML ke Markdown dalam .NET menggunakan Aspose.HTML untuk manipulasi konten yang efisien. Dapatkan panduan langkah demi langkah untuk proses konversi yang lancar. + ### [Konversi HTML ke MHTML di .NET dengan Aspose.HTML](./convert-html-to-mhtml/) Konversi HTML ke MHTML dalam .NET dengan Aspose.HTML - Panduan langkah demi langkah untuk pengarsipan konten web yang efisien. Pelajari cara menggunakan Aspose.HTML untuk .NET guna membuat arsip MHTML. + ### [Konversi HTML ke PNG dalam .NET dengan Aspose.HTML](./convert-html-to-png/) Temukan cara menggunakan Aspose.HTML untuk .NET guna memanipulasi dan mengonversi dokumen HTML. Panduan langkah demi langkah untuk pengembangan .NET yang efektif. + +### [Konversi HTML ke PNG dalam C# – Render HTML sebagai Gambar](./convert-html-to-png-in-c-render-html-as-image/) +Pelajari cara mengonversi HTML menjadi PNG menggunakan C# dengan Aspose.HTML, termasuk contoh kode dan opsi rendering gambar. + ### [Konversi HTML ke TIFF dalam .NET dengan Aspose.HTML](./convert-html-to-tiff/) Pelajari cara mengonversi HTML ke TIFF dengan Aspose.HTML untuk .NET. Ikuti panduan langkah demi langkah kami untuk pengoptimalan konten web yang efisien. + ### [Konversi HTML ke XPS dalam .NET dengan Aspose.HTML](./convert-html-to-xps/) Temukan kekuatan Aspose.HTML untuk .NET: Ubah HTML menjadi XPS dengan mudah. Prasyarat, panduan langkah demi langkah, dan Tanya Jawab Umum disertakan. + ### [Cara Mengompres HTML menjadi Zip di C# – Simpan HTML ke Zip](./how-to-zip-html-in-c-save-html-to-zip/) Pelajari cara mengompres file HTML menjadi arsip ZIP menggunakan C# dan Aspose.HTML. + ### [Buat Dokumen HTML dengan Teks Bergaya dan Ekspor ke PDF – Panduan Lengkap](./create-html-document-with-styled-text-and-export-to-pdf-full/) Pelajari cara membuat dokumen HTML dengan teks berformat dan mengekspornya ke PDF menggunakan Aspose.HTML untuk .NET. + ### [Simpan HTML sebagai ZIP – Tutorial Lengkap C#](./save-html-as-zip-complete-c-tutorial/) Pelajari cara menyimpan file HTML sebagai arsip ZIP menggunakan Aspose.HTML untuk .NET dengan contoh kode C# lengkap. + ### [Simpan HTML ke ZIP di C# – Contoh In‑Memory Lengkap](./save-html-to-zip-in-c-complete-in-memory-example/) Pelajari cara menyimpan file HTML ke dalam arsip ZIP secara langsung di memori menggunakan C# dan Aspose.HTML. +### [Simpan HTML sebagai ZIP dengan Penangan Sumber Daya Kustom – Panduan Langkah‑demi‑Langkah](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +Pelajari cara menyimpan file HTML ke dalam arsip ZIP menggunakan penangan sumber daya kustom dengan Aspose.HTML untuk .NET. + +### [Simpan Halaman Web sebagai ZIP dengan Aspose.HTML – Tutorial Lengkap C#](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +Pelajari cara menyimpan seluruh halaman web sebagai arsip ZIP menggunakan Aspose.HTML dalam tutorial C# lengkap. + ## Kesimpulan Kesimpulannya, ekstensi dan konversi HTML merupakan elemen penting dalam pengembangan web modern. Aspose.HTML untuk .NET menyederhanakan proses dan membuatnya dapat diakses oleh pengembang dari semua tingkatan. Dengan mengikuti tutorial kami, Anda akan berada di jalur yang tepat untuk menjadi pengembang web yang ahli dengan keahlian yang luas. diff --git a/html/indonesian/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/indonesian/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..d14235ac2 --- /dev/null +++ b/html/indonesian/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,217 @@ +--- +category: general +date: 2026-04-19 +description: Mengonversi HTML ke PNG dalam C# menggunakan Aspose.HTML – panduan cepat + untuk merender HTML sebagai gambar dan menyimpan grafik sebagai PNG dengan anti‑aliasing. +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: id +og_description: Konversi HTML ke PNG di C# dengan cepat. Pelajari cara merender HTML + sebagai gambar, menyimpan grafik sebagai PNG, dan menghasilkan PNG dari HTML dengan + Aspose.HTML. +og_title: Mengonversi HTML ke PNG di C# – Render HTML sebagai Gambar +tags: +- Aspose.HTML +- C# +- Image Processing +title: Mengonversi HTML ke PNG di C# – Render HTML sebagai Gambar +url: /id/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Convert HTML to PNG in C# – Render HTML as Image + +Pernahkah Anda perlu **convert HTML to PNG** di C# tetapi tidak yakin pustaka mana yang akan memberikan hasil yang tajam? Anda tidak sendirian. Baik Anda mengekspor grafik dinamis, mengubah templat email menjadi thumbnail, atau hanya membutuhkan snapshot statis dari sebuah halaman web, kemampuan untuk **render HTML as image** adalah trik berguna dalam kotak peralatan setiap pengembang. + +Dalam tutorial ini kami akan membimbing Anda melalui seluruh proses mengubah file HTML menjadi file PNG dengan Aspose.HTML. Pada akhir tutorial Anda akan dapat **save chart as PNG**, **generate PNG from HTML**, dan bahkan menyesuaikan pengaturan anti‑aliasing untuk tampilan yang lebih halus. Tanpa basa‑basi—hanya contoh lengkap yang dapat dijalankan dan langsung Anda masukkan ke dalam proyek hari ini. + +## What You’ll Need + +Sebelum kita mulai, pastikan Anda memiliki hal‑hal berikut: + +- **.NET 6.0** atau yang lebih baru (kode ini juga bekerja pada .NET Framework 4.6+). +- **Aspose.HTML for .NET** – Anda dapat mengunduhnya dari NuGet dengan `Install-Package Aspose.HTML`. +- File HTML sederhana (misalnya `chart.html`) yang berisi markup yang **want to capture**. +- IDE pilihan Anda—Visual Studio, Rider, atau bahkan VS Code sudah cukup. + +Itu saja. Tanpa ketergantungan tambahan, tanpa browser headless, hanya satu pustaka yang terdokumentasi dengan baik. + +![Convert HTML to PNG example](example.png "Convert HTML to PNG output") + +## Step 1: Load the HTML Document + +Hal pertama yang harus kita lakukan adalah menunjuk Aspose.HTML ke file sumber. Anggaplah kelas `HTMLDocument` sebagai kanvas yang menampung semua yang akan digambar pustaka ke dalam bitmap nanti. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*Why this matters:* Memuat dokumen memisahkan fase parsing dari fase rendering. Ini memberi mesin kesempatan untuk menyelesaikan CSS, skrip, dan gambar sebelum kita memintanya menghasilkan PNG. Jika Anda melewatkan langkah ini dan mencoba merender markup mentah, Anda akan mendapatkan gambar kosong atau gaya yang hilang. + +## Step 2: Configure Image Rendering Options + +Out‑of‑the‑box Aspose.HTML akan menghasilkan PNG yang layak, tetapi Anda sering menginginkan tepi yang lebih halus—terutama untuk grafik dan vektor. Di sinilah `ImageRenderingOptions` berperan. + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*Pro tip:* Jika Anda bekerja dengan tampilan high‑DPI, tingkatkan `Width` dan `Height` secara proporsional dan biarkan PNG menjadi lebih besar. Anda selalu dapat memperkecilnya nanti dengan editor gambar. Selain itu, mengatur warna latar belakang mencegah PNG transparan terlihat aneh pada halaman gelap. + +## Step 3: Render the HTML to a PNG File + +Sekarang pekerjaan berat terjadi. Metode `RenderToImage` menerima jalur output dan opsi yang baru saja kita definisikan, lalu menulis PNG ke disk. + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +Setelah baris ini selesai, Anda akan menemukan `chart.png` di folder target. Buka file tersebut—apakah grafik terlihat **sharp**? Jika Anda mengaktifkan anti‑aliasing, garis-garisnya harus halus, dan **text** apa pun harus tajam. + +### Verifying the Result + +Anda dapat dengan cepat memverifikasi gambar secara programatis: + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +Jika **console prints** dimensi yang tidak nol dan **supported pixel format** (misalnya `Format32bppArgb`), Anda telah berhasil **convert html to png**. + +## Render HTML as Image – Advanced Options + +Sejauh ini kami membahas dasar‑dasarnya, tetapi skenario dunia nyata sering memerlukan kontrol lebih. Berikut beberapa penyesuaian umum yang mungkin Anda perlukan. + +### Adjusting DPI for Print‑Quality Output + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +DPI yang lebih tinggi sangat berguna ketika Anda berencana menyisipkan PNG ke dalam PDF atau mencetaknya di atas kertas. + +### Handling External Resources + +Jika HTML Anda merujuk ke CSS, font, atau gambar eksternal yang dihosting di server web, pastikan runtime dapat mengaksesnya. Anda dapat mengatur `BaseUrl` khusus: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +Ini memberi tahu Aspose.HTML untuk menyelesaikan URL relatif berdasarkan base URL yang diberikan. + +### Converting Multiple Pages + +Aspose.HTML dapat merender setiap halaman dari dokumen HTML multi‑page menjadi file PNG terpisah: + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +Dengan cara ini Anda dapat **save chart as PNG** untuk setiap halaman tanpa harus memotong output secara manual. + +## Save Chart as PNG – Common Pitfalls & How to Avoid Them + +1. **Missing Fonts:** Jika HTML menggunakan font khusus yang tidak terpasang di server, PNG yang dihasilkan akan kembali ke font default. Instal font tersebut di mesin atau sematkan melalui `@font-face` di CSS Anda. +2. **Large Files:** Merender file HTML yang sangat besar dapat mengonsumsi banyak memori. Pertimbangkan untuk mem-paging konten atau mengurangi dimensi gambar. +3. **Transparent Backgrounds:** Secara default, PNG dapat menjadi transparan. Jika Anda memerlukan latar belakang opak (misalnya untuk thumbnail email), atur `BackgroundColor` seperti yang ditunjukkan sebelumnya. +4. **Script Execution:** Aspose.HTML tidak mengeksekusi JavaScript. Jika grafik Anda dibangun dengan pustaka sisi‑klien seperti Chart.js, Anda harus **pre‑render** grafik ke elemen `` statis atau menggunakan browser headless sebagai alternatif. + +## Full Working Example + +Berikut adalah program lengkap yang dapat Anda copy‑paste ke aplikasi console. Program ini mencakup semua langkah, penanganan error, dan penyesuaian opsional yang dibahas di atas. + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +Jalankan program, dan Anda akan melihat pesan konfirmasi diikuti oleh dimensi gambar. Buka `chart.png` di penampil apa pun untuk memastikan bahwa grafik terlihat persis seperti HTML aslinya. + +## Conclusion + +Anda kini memiliki dasar yang kuat, + +{{< /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/indonesian/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/indonesian/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..b57e28d50 --- /dev/null +++ b/html/indonesian/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-04-19 +description: Pelajari cara menyimpan HTML sebagai ZIP menggunakan Aspose.Html dan + penangan sumber daya khusus. Juga temukan cara mengonversi URL menjadi ZIP dan mengunduh + HTML sebagai ZIP dalam hitungan menit. +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: id +og_description: 'Menyimpan HTML sebagai ZIP menjadi mudah: gunakan Aspose.Html, penangan + sumber daya khusus, dan ZipSaveOptions untuk mengonversi URL apa pun menjadi arsip + ZIP yang dapat diunduh.' +og_title: Simpan HTML sebagai ZIP dengan penangan sumber daya khusus – tutorial singkat +tags: +- Aspose.Html +- C# +- Web scraping +title: Simpan HTML sebagai ZIP dengan penangan sumber daya khusus – panduan langkah + demi langkah +url: /id/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# save html as zip – Tutorial Lengkap + +Pernah perlu **save html as zip** sehingga Anda dapat mengirim seluruh halaman beserta gambar, CSS, dan skripnya dalam satu paket rapi? Mungkin Anda sedang membuat crawler yang mengarsipkan artikel, atau Anda hanya ingin tombol “download html as zip” cepat untuk pengguna Anda. Bagaimanapun, Anda mungkin bertanya‑tanya bagaimana melakukannya tanpa menulis jutaan baris kode I/O file. + +Berita baiknya: Aspose.Html membuat pekerjaan ini menjadi sangat mudah, dan dengan **custom resource handler** Anda dapat menentukan persis ke mana setiap aliran sumber daya disimpan. Dalam panduan ini kami juga akan menunjukkan cara **convert url to zip**, cara **download html as zip**, dan cara **save webpage resources** untuk penggunaan offline—semua dalam satu program C# yang berdiri sendiri. + +## Apa yang Akan Anda Pelajari + +- Menginstal library Aspose.Html (NuGet membuatnya tanpa rasa sakit). +- Menulis sebuah `ResourceHandler` yang menyediakan `Stream` untuk setiap sumber daya yang ingin ditulis Aspose.Html. +- Memuat halaman remote (atau file lokal) dan memberi tahu Aspose.Html untuk mengemas semuanya ke dalam arsip ZIP. +- Memverifikasi bahwa `output.zip` yang dihasilkan berisi file HTML plus semua aset yang terhubung. + +Tanpa alat eksternal, tanpa mengutak‑atik file zip secara manual—hanya kode bersih yang dapat Anda masukkan ke proyek .NET apa pun. + +## Prasyarat + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6.0 atau lebih baru (kode juga bekerja pada .NET Framework 4.7+) | Aspose.Html menargetkan runtime modern; framework lama mungkin tidak memiliki beberapa API. | +| Visual Studio 2022 (atau IDE apa pun yang Anda suka) | Membantu untuk debugging dan melihat ZIP yang dihasilkan. | +| Akses internet untuk URL contoh (`https://example.com`) | Kami akan mengambil halaman live untuk mendemonstrasikan **convert url to zip**. | +| Paket NuGet `Aspose.Html` (v23.12 atau lebih baru) | Library ini menyediakan `HTMLDocument`, `ZipSaveOptions`, dan kelas dasar `ResourceHandler`. | + +Jika Anda sudah memiliki proyek .NET, cukup jalankan: + +```bash +dotnet add package Aspose.Html +``` + +Itu saja yang Anda perlukan untuk menyiapkan. + +## Langkah 1: Buat Custom Resource Handler + +Inti dari solusi ini adalah kelas yang mewarisi dari `ResourceHandler`. Aspose.Html memanggil `HandleResource` untuk setiap file yang ingin ditulis—HTML, gambar, CSS, JavaScript, apa saja. Dengan mengembalikan sebuah `Stream` Anda menentukan ke mana data tersebut disimpan. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**Mengapa handler khusus?** +Karena antarmuka lama `IOutputStorage` sudah usang, dan `ResourceHandler` memberi Anda kontrol penuh atas tujuan output. Ia juga memungkinkan Anda memeriksa `ResourceInfo`—berguna jika Anda hanya ingin menyimpan gambar dan melewatkan font, misalnya. + +## Langkah 2: Muat Dokumen HTML (atau Convert URL to Zip) + +Aspose.Html dapat memuat dari URL, jalur file, atau string HTML mentah. Di sini kami mendemonstrasikan memuat halaman live, yang merupakan kasus tipikal ketika Anda ingin **download html as zip**. + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +Jika Anda sudah memiliki sumber HTML dalam variabel, cukup berikan ke konstruktor: + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## Langkah 3: Hubungkan Handler ke ZipSaveOptions + +`ZipSaveOptions` memberi tahu Aspose.Html *bagaimana* membuat file ZIP. Properti pentingnya adalah `OutputStorage`, yang kami set ke instance `MyHandler` kami. + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +Anda juga dapat menyesuaikan tingkat kompresi, nama folder di dalam arsip, atau bahkan menyertakan file manifest—detailnya ada di dokumentasi Aspose, tetapi nilai default sudah cukup baik untuk kebanyakan skenario. + +## Langkah 4: Simpan Dokumen sebagai Arsip ZIP + +Sekarang keajaiban terjadi. Metode `Save` mengiterasi setiap sumber daya, memanggil `HandleResource`, dan menulis byte ke stream yang dikembalikan. Karena handler kami mengembalikan `MemoryStream` baru setiap kali, Aspose.Html kemudian akan mengumpulkan semua stream tersebut dan mengemasnya ke dalam `output.zip`. + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**Apa yang akan Anda lihat:** +- `output.zip` di root folder proyek Anda. +- Di dalam ZIP: `index.html` (halaman utama) plus subfolder seperti `images/`, `css/`, `scripts/` yang berisi file persis seperti yang diminta browser. + +## Langkah 5: Verifikasi Hasil (Opsional tapi Disarankan) + +Pengecekan cepat memastikan Anda benar‑benar **save webpage resources** dengan tepat. + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +Anda seharusnya melihat entri untuk `index.html`, gambar yang terhubung (`logo.png`), file CSS, dan file JavaScript. Jika ada yang hilang, periksa kembali logika `ResourceInfo` di `MyHandler`. + +## Contoh Lengkap yang Berfungsi + +Menggabungkan semuanya, berikut program lengkap yang dapat Anda salin‑tempel ke aplikasi console. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Jalankan program (`dotnet run`), dan Anda akan mendapatkan `output.zip` yang rapi. Buka dengan pengelola arsip apa pun, dan Anda dapat menelusuri halaman yang disimpan secara offline—tepat apa yang Anda butuhkan untuk fungsi **download html as zip**. + +## Pertanyaan Umum & Kasus Edge + +| Question | Answer | +|----------|--------| +| *What if I need to store the ZIP in Azure Blob Storage?* | Ganti `MemoryStream` dengan stream yang menulis langsung ke blob (misalnya `CloudBlockBlob.OpenWrite()`). Abstraksi handler membuat ini sangat mudah. | +| *Can I filter out certain resources?* | Ya. Di dalam `HandleResource`, periksa `info.ResourceType` atau `info.Url`. Kembalikan `null` untuk melewatkan sumber daya, atau kembalikan stream yang tidak menulis apa‑apa. | +| *Is the ZIP password‑protected?* | `ZipSaveOptions` memiliki properti `Password`. Setel sebelum memanggil `Save` jika Anda memerlukan enkripsi. | +| *What about large pages with dozens of megabytes of assets?* | Menggunakan `MemoryStream` untuk semuanya dapat menghabiskan RAM. Beralih ke `FileStream` yang menulis ke folder sementara, lalu biarkan Aspose.Html mengompres file‑file tersebut. | +| *Does this work on .NET Core on Linux?* | Tentu saja. Aspose.Html bersifat cross‑platform; pastikan runtime memiliki izin menulis file. | + +## Pro Tips + +- **Pro tip:** Jika Anda hanya peduli pada HTML dan gambar, periksa `info.ResourceType == ResourceType.Image` dan lewati skrip atau font untuk membuat ZIP lebih kecil. +- **Watch out for:** beberapa situs memblokir permintaan otomatis. Setel `User-Agent` khusus melalui `HtmlLoadOptions` jika Anda mendapatkan error 403. +- **Tip:** Setelah ZIP dibuat, Anda dapat menyajikannya langsung dari controller ASP.NET menggunakan `FileResult`, memberikan pengguna tombol **download html as zip** satu klik. + +## Kesimpulan + +Anda kini memiliki cara yang solid dan siap produksi untuk **save html as zip** menggunakan Aspose.Html dan **custom resource handler**. Dengan memuat URL apa pun, mengonfigurasi `ZipSaveOptions`, dan membiarkan handler menyediakan stream, Anda dapat **convert url to zip**, **download html as zip**, dan **save webpage resources** hanya dengan beberapa baris C#. + +Silakan bereksperimen—simpan stream ke disk, penyimpanan cloud, atau bahkan database. Polanya tetap sama, dan hasilnya selalu arsip rapi yang dapat Anda kirim, cache, atau arsipkan selamanya. + +--- + +![Diagram illustrating the save html as zip workflow – from loading a URL to producing a ZIP file](/images/save-html-as-zip.png) + +*Image alt text:* **save html as zip workflow diagram** + +Jika tutorial ini membantu Anda, tinggalkan komentar, bagikan kepada rekan, atau beri bintang pada repo tempat Anda menyimpan skrip utilitas. Selamat coding! + +{{< /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/indonesian/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/indonesian/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..43acbba98 --- /dev/null +++ b/html/indonesian/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,218 @@ +--- +category: general +date: 2026-04-19 +description: Simpan halaman web sebagai zip menggunakan Aspose.HTML di C#. Pelajari + cara mengonversi URL menjadi zip, mengekspor HTML ke zip, dan mengunduh halaman + web sebagai zip dengan contoh kode sederhana. +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: id +og_description: Simpan halaman web sebagai zip dengan Aspose.HTML di C#. Panduan ini + menunjukkan cara mengonversi URL menjadi zip, mengekspor HTML ke zip, dan mengunduh + halaman web sebagai zip dalam beberapa langkah saja. +og_title: Simpan Halaman Web sebagai ZIP dengan Aspose.HTML – Tutorial C# Lengkap +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: Simpan Halaman Web sebagai ZIP dengan Aspose.HTML – Tutorial C# Lengkap +url: /id/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Simpan Halaman Web sebagai ZIP dengan Aspose.HTML – Tutorial Lengkap C# + +Perlu **save webpage as zip** untuk pengarsipan offline, pengujian otomatis, atau sekadar mengirimkan snapshot sebuah situs? Anda tidak sendirian. Pada tutorial ini kami akan menjelaskan cara **convert URL to zip**, **export HTML to zip**, dan bahkan **download webpage as zip** dengan beberapa baris C# yang bersih. + +Kami akan membahas semuanya mulai dari penyiapan proyek hingga file ZIP akhir di disk, dan kami akan menambahkan beberapa tip praktis yang tidak Anda temukan di dokumentasi resmi. Pada akhir tutorial Anda akan memiliki solusi yang dapat digunakan kembali yang dapat **create zip from html** kapan pun Anda membutuhkannya. + +## Apa yang Anda Butuhkan + +- **.NET 6.0** (atau versi .NET terbaru) – Aspose.HTML bekerja dengan .NET Core dan .NET Framework sekaligus. +- **Aspose.HTML for .NET** paket NuGet – `Install-Package Aspose.HTML`. +- Sedikit pengalaman C# – jika Anda dapat menulis `Console.WriteLine`, Anda siap melanjutkan. +- Mesin yang terhubung ke internet untuk unduhan awal (kode itu sendiri dapat berjalan offline setelah ZIP dibuat). + +Tidak ada SDK tambahan, tidak ada browser headless, hanya .NET murni dan Aspose.HTML. + +![Illustration of saving webpage as zip using Aspose.HTML](save-webpage-as-zip.png "Diagram showing save webpage as zip workflow") + +## Simpan Halaman Web sebagai ZIP – Ikhtisar + +Pada tingkat tinggi proses ini terdiri dari tiga komponen utama: + +1. **A custom `ResourceHandler`** yang memberi tahu Aspose.HTML ke mana menulis setiap sumber eksternal (gambar, CSS, skrip). +2. **`ZipSaveOptions`** yang mengikat handler ke arsip ZIP dan memungkinkan Anda menyesuaikan rendering (antialiasing, petunjuk font, dll.). +3. **The `HTMLDocument.Save` call** yang menggabungkan semuanya, men‑stream halaman dan semua asetnya ke dalam file ZIP. + +Itu saja. Beban berat dikerjakan oleh Aspose.HTML, sehingga Anda dapat fokus pada “mengapa” dan “kapan” alih‑alih berjuang dengan aliran tingkat‑rendah. + +--- + +## Langkah 1: Siapkan Proyek dan Tambahkan Aspose.HTML + +Pertama, buat proyek console baru (atau masukkan kode ke dalam aplikasi yang sudah ada). Buka terminal dan jalankan: + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +Paket `Aspose.HTML` menyertakan semua tipe yang kita perlukan: `HTMLDocument`, `ZipSaveOptions`, `ImageRenderingOptions`, dan abstrak `ResourceHandler`. + +> **Pro tip:** Jika Anda menargetkan .NET Framework, gantilah perintah `dotnet` dengan UI NuGet Package Manager di Visual Studio – DLL yang sama akan ditambahkan. + +--- + +## Langkah 2: Buat Handler Sumber Daya `ZipHandler` Kustom + +Aspose.HTML memanggil `HandleResource` untuk setiap file eksternal yang ditemukannya saat mem‑parsing halaman. Dengan menimpa metode ini kami dapat mengarahkan setiap sumber ke entri ZIP alih‑alih ke sistem file. + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### Mengapa handler kustom? + +Tanpa itu, Aspose.HTML akan menaruh sumber daya di samping file HTML di disk. Dengan memasukkan ke dalam `ZipArchive`, kami menjaga **everything bundled** – sempurna untuk distribusi atau ekstraksi nanti oleh layanan lain. + +--- + +## Langkah 3: Konfigurasikan `ZipSaveOptions` dengan Rendering Gambar + +Sekarang kami mengaitkan handler ke opsi penyimpanan dan mengaktifkan beberapa penyesuaian rendering yang meningkatkan kesetiaan visual screenshot atau konversi mirip PDF. + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **Why enable antialiasing and hinting?** Ketika halaman kemudian dirender ke bitmap (misalnya, untuk thumbnail), flag ini mengurangi tepi bergerigi dan membuat font kecil dapat dibaca—terutama penting jika Anda berencana menyematkan gambar di tempat lain. + +--- + +## Langkah 4: Muat Dokumen HTML dan Simpan ke ZIP + +Dengan handler dan opsi siap, memuat halaman remote semudah memberikan URL‑nya ke `HTMLDocument`. Metode `Save` akan memanggil `HandleResource` untuk setiap aset yang terhubung. + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +Pada titik ini `zipStream` berisi **ZIP archive that contains** lengkap: + +- `index.html` (halaman utama) +- Semua file CSS yang direferensikan oleh tag `` +- Gambar, font, dan file JavaScript yang diperlukan untuk merender halaman secara offline + +### Kasus Tepi & Variasi + +| Situation | What to Adjust | +|----------------------------------------|-----------------------------------------------------------------------------------| +| **Authentication required** | Gunakan `HTMLDocument(string url, LoadOptions options)` dan set `options.Credentials`. | +| **Very large pages (>100 MB)** | Tulis langsung ke `FileStream` alih‑alih `MemoryStream` untuk menghindari penggunaan RAM yang tinggi. | +| **Relative URLs that start with “//”**| Handler secara otomatis menormalkan mereka; pastikan `BaseUrl` sudah diatur. | +| **Custom folder structure inside ZIP**| Modifikasi `info.Path` di dalam `HandleResource` sebelum membuat entri. | + +--- + +## Langkah 5: Simpan File ZIP dan Verifikasi Hasil + +Akhirnya, kami menulis ZIP dalam memori ke disk. Langkah ini opsional jika Anda berencana mengirim stream melalui jaringan, tetapi memudahkan verifikasi. + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**Expected outcome:** Membuka `result.zip` menampilkan file `index.html` yang, ketika dibuka di browser secara offline, terlihat identik dengan halaman live (asalkan semua aset eksternal dapat dijangkau selama pengunduhan). + +--- + +## Pertanyaan Umum & Jawaban + +**Q: Does this approach work with pages that use lazy‑loaded images?** +A: Ya, selama gambar diminta selama penelusuran DOM awal. Jika skrip memuat gambar setelah halaman dimuat, Anda mungkin perlu memicu “render” manual dengan memanggil `document.Render()` sebelum `Save`. + +**Q: Can I compress the ZIP further?** +A: API `ZipArchive` menggunakan tingkat kompresi default. Untuk kompresi agresif, buat instance dengan `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)`. + +**Q: What if I need a password‑protected ZIP?** +A: `ZipArchive` bawaan tidak mendukung enkripsi. Dalam kasus tersebut, alirkan output stream melalui pustaka pihak ketiga seperti `SharpZipLib` setelah Aspose.HTML selesai menulis. + +--- + +## Tips Pro untuk Penggunaan Produksi + +- **Reuse the `ZipHandler`** ketika memproses beberapa halaman dalam satu batch; cukup reset `MemoryStream` yang mendasarinya di antara setiap run. +- **Log + +{{< /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/italian/net/generate-jpg-and-png-images/_index.md b/html/italian/net/generate-jpg-and-png-images/_index.md index f6e8b2d8a..d892e8516 100644 --- a/html/italian/net/generate-jpg-and-png-images/_index.md +++ b/html/italian/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Impara a usare Aspose.HTML per .NET per manipolare documenti HTML, convertire HT Scopri come abilitare l'antialiasing durante la conversione di documenti DOCX in immagini PNG o JPG con Aspose.HTML per .NET. ### [Converti docx in PNG – crea archivio zip C# tutorial](./convert-docx-to-png-create-zip-archive-c-tutorial/) Impara a convertire documenti DOCX in PNG e a comprimerli in un archivio ZIP usando C# e Aspose.HTML. +### [Come rendere HTML in PNG – Guida completa C#](./how-to-render-html-to-png-complete-c-guide/) +Scopri come convertire HTML in PNG usando C# con Aspose.HTML, passo dopo passo, includendo impostazioni avanzate e consigli pratici. ## Conclusione diff --git a/html/italian/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/italian/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..8ea1968b3 --- /dev/null +++ b/html/italian/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,157 @@ +--- +category: general +date: 2026-04-19 +description: Come renderizzare HTML in PNG con Aspose.Html. Impara a convertire HTML + in PNG, salvare HTML come PNG e creare un’immagine da HTML in pochi minuti. +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: it +og_description: Come rendere HTML in PNG con Aspose.Html. Segui questo tutorial passo‑passo + per convertire HTML in PNG, salvare HTML come PNG e creare un'immagine da HTML. +og_title: Come convertire HTML in PNG – Guida completa a C# +tags: +- Aspose.Html +- C# +title: Come convertire HTML in PNG – Guida completa C# +url: /it/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come rendere HTML in PNG – Guida completa C# + +Ti sei mai chiesto **come rendere HTML** in un file immagine senza aprire un browser? Non sei l'unico. In molti progetti—miniature di email, generazione di PDF o semplici anteprime rapide—è necessario **convertire HTML in PNG** al volo. + +In questo tutorial percorreremo una soluzione pratica usando Aspose.Html per .NET, coprendo tutto, dall'installazione della libreria alla regolazione del text‑hinting per caratteri piccoli nitidi. Alla fine sarai in grado di **salvare HTML come PNG**, **creare immagine da HTML**, e persino modificare le opzioni di rendering per scenari particolari. + +## Cosa ti serve + +- **.NET 6+** (o .NET Framework 4.6.2+). L'API funziona allo stesso modo su tutti i runtime. +- Pacchetto NuGet **Aspose.Html** – `Install-Package Aspose.Html`. +- Un semplice file HTML (ad esempio `article.html`) che vuoi trasformare in immagine. +- Visual Studio, Rider o qualsiasi editor tu preferisca. + +Tutto qui—nessuna dipendenza aggiuntiva, nessun Chrome headless, solo puro C#. + +## Passo 1: Installa Aspose.Html e aggiungi gli spazi dei nomi + +Per prima cosa, scarica la libreria da NuGet. Apri la Console di Gestione Pacchetti ed esegui: + +```powershell +Install-Package Aspose.Html +``` + +Una volta installato, aggiungi le direttive `using` necessarie all'inizio del tuo file: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +Questi namespace ti danno accesso al modello di documento, al rendering delle immagini e alle opzioni testuali dettagliate di cui avremo bisogno più avanti. + +> **Suggerimento:** Se usi un file .csproj, puoi anche aggiungere manualmente ``. + +## Passo 2: Carica il documento HTML + +Ti serve un'istanza `HTMLDocument` che punti al file sorgente. Aspose.Html può leggere da un percorso, da uno stream o anche da un URL. + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Perché è importante:** Caricare il documento una sola volta mantiene basso l'uso di memoria. Se prevedi di renderizzare molte pagine, riutilizza lo stesso oggetto `HTMLDocument` quando possibile. + +## Passo 3: Regola il rendering del testo per caratteri piccoli + +Quando si renderizzano testi minuscoli, spesso si ottengono bordi sfocati. Abilitare l'hinting dice al rasterizzatore di allineare i glifi ai bordi dei pixel, migliorando drasticamente la leggibilità. + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +Puoi anche controllare l'anti‑aliasing, il rendering subpixel, o specificare una collezione di font personalizzata—utile se il tuo HTML fa riferimento a web font. + +## Passo 4: Configura le opzioni di rendering dell'immagine + +Ora colleghiamo le `TextOptions` alle impostazioni dell'immagine. Puoi anche impostare il colore di sfondo, DPI o formato immagine (PNG, JPEG, BMP). + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **Caso limite:** Se il tuo HTML è più largo delle dimensioni tipiche dello schermo, considera di impostare `Width` e `Height` su `ImageRenderingOptions` per evitare PNG giganteschi. + +## Passo 5: Renderizza l'HTML in un file PNG + +Infine, chiama `RenderToImage`. La sovraccarico del metodo che usiamo permette di specificare il percorso di output e le opzioni appena create. + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +Quando esegui il programma, Aspose.Html analizza il markup, applica il CSS, dispone la pagina e la rasterizza in `article.png`. Apri il file con qualsiasi visualizzatore di immagini—dovresti vedere uno snapshot pixel‑perfect del tuo HTML originale. + +![how to render html as PNG using Aspose.Html](render-html-png.png) + +*Testo alternativo dell'immagine: **come rendere html** come PNG usando Aspose.Html* + +## Bonus: Gestione di più pagine o ridimensionamento + +A volte un singolo file HTML contiene diverse sezioni `` (ad esempio per la stampa). Puoi iterare su `htmlDoc.Pages` e renderizzare ogni pagina singolarmente: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +Se ti serve una miniatura anziché un'immagine a grandezza naturale, regola `imgOpts.Width` e `imgOpts.Height` prima del rendering. La libreria manterrà automaticamente le proporzioni. + +--- + +## Conclusione + +Ora disponi di una ricetta solida, pronta per la produzione, su **come rendere HTML** in un'immagine PNG usando Aspose.Html. Dall'installazione del pacchetto, al caricamento del markup, alla messa a punto dell'hinting del testo, fino alla chiamata finale a `RenderToImage`, ogni passaggio è coperto. + +Con queste conoscenze puoi **convertire HTML in PNG**, **salvare HTML come PNG**, e **creare immagine da HTML** per qualsiasi applicazione .NET—sia che si tratti di un servizio web che genera miniature, sia di uno strumento desktop che archivia pagine web. + +Successivamente, esplora argomenti correlati come **render HTML to image** con formati diversi (JPEG, BMP) o l'inserimento del PNG in un PDF usando Aspose.PDF. Potresti anche sperimentare con la scala DPI per stampe ad alta risoluzione, o alimentare HTML dinamico generato al volo nello stesso flusso. + +Hai domande o un caso d'uso particolare? Lascia un commento qui sotto, e buona renderizzazione! + +{{< /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/italian/net/html-extensions-and-conversions/_index.md b/html/italian/net/html-extensions-and-conversions/_index.md index fcf4daa30..1020154e7 100644 --- a/html/italian/net/html-extensions-and-conversions/_index.md +++ b/html/italian/net/html-extensions-and-conversions/_index.md @@ -61,6 +61,8 @@ Scopri come convertire HTML in Markdown in .NET usando Aspose.HTML per una manip Converti HTML in MHTML in .NET con Aspose.HTML - Una guida passo passo per un'archiviazione efficiente dei contenuti web. Scopri come usare Aspose.HTML per .NET per creare archivi MHTML. ### [Convertire HTML in PNG in .NET con Aspose.HTML](./convert-html-to-png/) Scopri come usare Aspose.HTML per .NET per manipolare e convertire documenti HTML. Guida passo passo per uno sviluppo .NET efficace. +### [Convertire HTML in PNG in C# – Renderizzare HTML come immagine](./convert-html-to-png-in-c-render-html-as-image/) +Scopri come rendere HTML come immagine PNG in C# con Aspose.HTML, con esempi di codice e passaggi dettagliati. ### [Convertire HTML in TIFF in .NET con Aspose.HTML](./convert-html-to-tiff/) Scopri come convertire HTML in TIFF con Aspose.HTML per .NET. Segui la nostra guida passo passo per un'ottimizzazione efficiente dei contenuti web. ### [Convertire HTML in XPS in .NET con Aspose.HTML](./convert-html-to-xps/) @@ -73,6 +75,10 @@ Crea un PDF da HTML in C# con Aspose.HTML per .NET. Segui la nostra guida passo Salva HTML come archivio ZIP con Aspose.HTML per .NET. Guida passo passo per creare file ZIP contenenti HTML in C#. ### [Salva HTML in ZIP in C# – Esempio completo in memoria](./save-html-to-zip-in-c-complete-in-memory-example/) Scopri come salvare un documento HTML in un archivio ZIP interamente in memoria usando Aspose.HTML per .NET. +### [Salva HTML come ZIP con un gestore di risorse personalizzato – guida passo‑a‑passo](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +Scopri come salvare HTML in un archivio ZIP usando un gestore di risorse personalizzato con Aspose.HTML per .NET, passo dopo passo. +### [Salva pagina web come ZIP con Aspose.HTML – Tutorial completo C#](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +Salva una pagina web come archivio ZIP usando Aspose.HTML per .NET in C#. Guida completa passo passo. ## Conclusione diff --git a/html/italian/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/italian/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..4a56aa145 --- /dev/null +++ b/html/italian/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-04-19 +description: Converti HTML in PNG in C# usando Aspose.HTML – una guida rapida per + rendere l'HTML come immagine e salvare il grafico come PNG con anti‑aliasing. +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: it +og_description: Converti HTML in PNG in C# rapidamente. Scopri come renderizzare HTML + come immagine, salvare un grafico come PNG e generare PNG da HTML con Aspose.HTML. +og_title: Converti HTML in PNG in C# – Renderizza HTML come immagine +tags: +- Aspose.HTML +- C# +- Image Processing +title: Converti HTML in PNG in C# – Renderizza HTML come immagine +url: /it/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Converti HTML in PNG in C# – Renderizza HTML come Immagine + +Ti è mai capitato di **convertire HTML in PNG** in C# senza sapere quale libreria ti garantisse un risultato nitido? Non sei l'unico. Che tu stia esportando un grafico dinamico, trasformando un modello di email in una miniatura, o semplicemente abbia bisogno di uno snapshot statico di una pagina web, la capacità di **renderizzare HTML come immagine** è un trucco utile in qualsiasi toolbox per sviluppatori. + +In questo tutorial percorreremo l’intero processo di trasformare un file HTML in un file PNG con Aspose.HTML. Alla fine sarai in grado di **salvare il grafico come PNG**, **generare PNG da HTML**, e persino regolare le impostazioni di anti‑aliasing per ottenere un aspetto rifinito. Niente superfluo—solo un esempio completo e funzionante che puoi inserire subito nel tuo progetto. + +## Cosa ti serve + +Prima di iniziare, assicurati di avere: + +- **.NET 6.0** o versioni successive (il codice funziona anche su .NET Framework 4.6+). +- **Aspose.HTML for .NET** – puoi ottenerlo da NuGet con `Install-Package Aspose.HTML`. +- Un semplice file HTML (ad es. `chart.html`) che contenga il markup che vuoi catturare. +- Un IDE a tua scelta—Visual Studio, Rider, o anche VS Code vanno benissimo. + +Tutto qui. Nessuna dipendenza aggiuntiva, nessun browser headless, solo una singola libreria ben documentata. + +![Esempio di conversione da HTML a PNG](example.png "Output della conversione da HTML a PNG") + +## Passo 1: Carica il documento HTML + +La prima cosa da fare è puntare Aspose.HTML al file sorgente. Pensa alla classe `HTMLDocument` come alla tela che contiene tutto ciò che la libreria dipingerà successivamente su una bitmap. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*Perché è importante:* Caricare il documento separa la fase di parsing da quella di rendering. Consente al motore di risolvere CSS, script e immagini prima di chiedergli di produrre un PNG. Se salti questo passaggio e provi a renderizzare markup grezzo, otterrai un’immagine vuota o con stili mancanti. + +## Passo 2: Configura le opzioni di rendering dell’immagine + +Aspose.HTML, così com’è, ti fornirà un PNG decente, ma spesso vuoi bordi più lisci—soprattutto per grafici e grafica vettoriale. È qui che entra in gioco `ImageRenderingOptions`. + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*Consiglio professionale:* Se lavori con display ad alta DPI, aumenta proporzionalmente `Width` e `Height` e lascia che il PNG sia più grande. Potrai sempre ridimensionarlo in seguito con un editor di immagini. Inoltre, impostare un colore di sfondo evita che i PNG trasparenti appaiano strani su pagine scure. + +## Passo 3: Renderizza l’HTML in un file PNG + +Ora avviene il lavoro pesante. Il metodo `RenderToImage` prende il percorso di output e le opzioni appena definite, quindi scrive un PNG su disco. + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +Quando questa riga termina, troverai `chart.png` nella cartella di destinazione. Aprilo—il grafico appare nitido? Se hai attivato l’anti‑aliasing, le linee dovrebbero essere lisce e il testo nitido. + +### Verifica del risultato + +Puoi verificare rapidamente l’immagine programmaticamente: + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +Se la console stampa dimensioni diverse da zero e un formato pixel supportato (ad es. `Format32bppArgb`), hai convertito con successo **html in png**. + +## Renderizza HTML come Immagine – Opzioni Avanzate + +Finora abbiamo coperto le basi, ma gli scenari reali spesso richiedono un po’ più di controllo. Di seguito alcuni aggiustamenti comuni di cui potresti aver bisogno. + +### Regolazione DPI per output di qualità stampa + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +Un DPI più alto è ideale quando prevedi di incorporare il PNG in un PDF o stamparlo su carta. + +### Gestione delle risorse esterne + +Se il tuo HTML fa riferimento a CSS, font o immagini esterne ospitate su un server web, assicurati che il runtime possa raggiungerle. Puoi impostare un `BaseUrl` personalizzato: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +Questo indica ad Aspose.HTML di risolvere gli URL relativi rispetto al base URL fornito. + +### Conversione di più pagine + +Aspose.HTML può renderizzare ogni pagina di un documento HTML multipagina in file PNG separati: + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +In questo modo puoi **salvare il grafico come PNG** per ogni pagina senza dover tagliare manualmente l’output. + +## Salva grafico come PNG – Problemi comuni e come evitarli + +1. **Font mancanti:** Se l’HTML utilizza un font personalizzato non installato sul server, il PNG renderizzato ricadrà su un font predefinito. Installa il font sulla macchina o incorporalo tramite `@font-face` nel tuo CSS. +2. **File di grandi dimensioni:** Renderizzare un file HTML enorme può consumare molta memoria. Considera di suddividere il contenuto o ridurre le dimensioni dell’immagine. +3. **Sfondi trasparenti:** Per impostazione predefinita, i PNG possono essere trasparenti. Se ti serve uno sfondo opaco (ad es. per miniature email), imposta `BackgroundColor` come mostrato in precedenza. +4. **Esecuzione di script:** Aspose.HTML non esegue JavaScript. Se il tuo grafico è costruito con una libreria client‑side come Chart.js, dovrai pre‑renderizzare il grafico in un elemento `` statico o usare un browser headless. + +## Esempio completo funzionante + +Di seguito trovi il programma completo che puoi copiare‑incollare in un’app console. Include tutti i passaggi, la gestione degli errori e le opzioni opzionali discusse sopra. + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +Esegui il programma e vedrai un messaggio di conferma seguito dalle dimensioni dell’immagine. Apri `chart.png` con qualsiasi visualizzatore per confermare che il grafico appare esattamente come l’HTML originale. + +## Conclusione + +Ora disponi di una soluzione solida, + +{{< /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/italian/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/italian/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..54058be61 --- /dev/null +++ b/html/italian/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-04-19 +description: Scopri come salvare HTML come zip usando Aspose.Html e un gestore di + risorse personalizzato. Scopri anche come convertire un URL in zip e scaricare HTML + come zip in pochi minuti. +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: it +og_description: 'Salva HTML come zip in modo semplice: usa Aspose.Html, un gestore + di risorse personalizzato e ZipSaveOptions per convertire qualsiasi URL in un archivio + zip scaricabile.' +og_title: Salva HTML come ZIP con un gestore di risorse personalizzato – tutorial + rapido +tags: +- Aspose.Html +- C# +- Web scraping +title: Salva HTML come ZIP con un gestore di risorse personalizzato – guida passo‑passo +url: /it/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# salva html come zip – Tutorial completo + +Hai mai avuto bisogno di **salvare html come zip** così da poter distribuire un'intera pagina con le sue immagini, CSS e script in un unico pacchetto ordinato? Forse stai creando un crawler che archivia articoli, o semplicemente vuoi un pulsante rapido “download html as zip” per i tuoi utenti. In entrambi i casi, probabilmente ti chiedi come farlo senza scrivere milioni di righe di codice file‑IO. + +Ecco la buona notizia: Aspose.Html rende il lavoro un gioco da ragazzi, e con un **custom resource handler** puoi decidere esattamente dove andare a finire ogni stream di risorsa. In questa guida ti mostreremo anche come **convert url to zip**, come **download html as zip**, e come **save webpage resources** per l'uso offline—tutto in un unico programma C# autonomo. + +## Cosa imparerai + +- Installa la libreria Aspose.Html (NuGet lo rende semplice). +- Scrivi un `ResourceHandler` che fornisce uno `Stream` per ogni risorsa che Aspose.Html vuole scrivere. +- Carica una pagina remota (o un file locale) e indica ad Aspose.Html di impacchettare tutto in un archivio ZIP. +- Verifica che il `output.zip` risultante contenga il file HTML più tutte le risorse collegate. + +Nessuno strumento esterno, nessuna manipolazione manuale di file zip—solo codice pulito e compilato che puoi inserire in qualsiasi progetto .NET. + +## Prerequisiti + +| Requisito | Perché è importante | +|-------------|----------------| +| .NET 6.0 o successivo (il codice funziona anche su .NET Framework 4.7+) | Aspose.Html è destinato a runtime moderni; i framework più vecchi potrebbero non supportare alcune API. | +| Visual Studio 2022 (o qualsiasi IDE ti piaccia) | Utile per il debug e per vedere lo ZIP generato. | +| Accesso a Internet per l'URL di esempio (`https://example.com`) | Scaricheremo una pagina live per dimostrare **convert url to zip**. | +| Pacchetto NuGet `Aspose.Html` (v23.12 o più recente) | Questa libreria fornisce `HTMLDocument`, `ZipSaveOptions` e la classe base `ResourceHandler`. | + +Se hai già un progetto .NET, esegui semplicemente: + +```bash +dotnet add package Aspose.Html +``` + +## Passo 1: Crea un Custom Resource Handler + +Il cuore della soluzione è una classe che eredita da `ResourceHandler`. Aspose.Html chiama `HandleResource` per ogni file che vuole scrivere—HTML, immagini, CSS, JavaScript, quello che vuoi. Restituendo uno `Stream` decidi dove finiscono i dati. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**Perché un handler personalizzato?** +Perché la vecchia interfaccia `IOutputStorage` è deprecata, e `ResourceHandler` ti dà il pieno controllo sulla destinazione di output. Ti permette anche di ispezionare `ResourceInfo`—utile se, ad esempio, vuoi mantenere solo le immagini e saltare i font. + +## Passo 2: Carica il documento HTML (o Converti URL in Zip) + +Aspose.Html può caricare da un URL, da un percorso file o da una stringa HTML grezza. Qui dimostriamo il caricamento di una pagina live, che è il caso tipico quando vuoi **download html as zip**. + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +Se hai già il sorgente HTML in una variabile, passalo semplicemente al costruttore: + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## Passo 3: Collega l'handler a ZipSaveOptions + +`ZipSaveOptions` indica ad Aspose.Html *come* creare il file ZIP. La proprietà cruciale è `OutputStorage`, che impostiamo sulla nostra istanza `MyHandler`. + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +Puoi anche regolare il livello di compressione, i nomi delle cartelle all'interno dell'archivio, o persino incorporare un file manifest—i dettagli sono nella documentazione Aspose, ma le impostazioni predefinite funzionano bene nella maggior parte degli scenari. + +## Passo 4: Salva il documento come archivio ZIP + +Ora avviene la magia. Il metodo `Save` itera su ogni risorsa, chiama `HandleResource` e scrive i byte nello stream restituito. Poiché il nostro handler restituisce un nuovo `MemoryStream` ogni volta, Aspose.Html raccoglierà successivamente tutti quegli stream e li impacchetterà in `output.zip`. + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**Cosa vedrai:** +- `output.zip` nella radice della cartella del tuo progetto. +- All'interno dello ZIP: `index.html` (la pagina principale) più sottocartelle come `images/`, `css/`, `scripts/` contenenti i file esatti che il browser avrebbe richiesto. + +## Passo 5: Verifica il risultato (Opzionale ma consigliato) + +Un rapido controllo di coerenza garantisce che tu abbia davvero **save webpage resources** correttamente. + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +Dovresti vedere voci per `index.html`, eventuali immagini collegate (`logo.png`), file CSS e file JavaScript. Se manca qualcosa, ricontrolla la logica `ResourceInfo` in `MyHandler`. + +## Esempio completo funzionante + +Mettendo tutto insieme, ecco il programma completo che puoi copiare‑incollare in un'app console. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Esegui il programma (`dotnet run`), e otterrai un pulito `output.zip`. Aprilo con qualsiasi gestore di archivi, e potrai navigare la pagina salvata offline—esattamente ciò che ti serve per la funzionalità **download html as zip**. + +## Domande comuni & casi limite + +| Domanda | Risposta | +|----------|--------| +| *E se devo memorizzare lo ZIP in Azure Blob Storage?* | Sostituisci `MemoryStream` con uno stream che scrive direttamente su un blob (ad esempio `CloudBlockBlob.OpenWrite()`). L'astrazione dell'handler rende questo banale. | +| *Posso filtrare alcune risorse?* | Sì. All'interno di `HandleResource`, ispeziona `info.ResourceType` o `info.Url`. Restituisci `null` per saltare una risorsa, o restituisci uno stream che non scrive nulla. | +| *Lo ZIP è protetto da password?* | `ZipSaveOptions` ha una proprietà `Password`. Impostala prima di chiamare `Save` se ti serve la crittografia. | +| *E per pagine grandi con decine di megabyte di risorse?* | Usare `MemoryStream` per tutto può esaurire la RAM. Passa a un `FileStream` che scrive in una cartella temporanea, poi lascia che Aspose.Html comprima quei file. | +| *Funziona su .NET Core su Linux?* | Assolutamente. Aspose.Html è cross‑platform; basta assicurarsi che il runtime abbia i permessi per scrivere file. | + +## Consigli professionali + +- **Consiglio pro:** Se ti interessano solo l'HTML e le immagini, controlla `info.ResourceType == ResourceType.Image` e salta script o font per mantenere lo ZIP piccolo. +- **Attenzione a:** alcuni siti bloccano le richieste automatizzate. Imposta un `User-Agent` personalizzato tramite `HtmlLoadOptions` se ricevi un errore 403. +- **Suggerimento:** Dopo aver creato lo ZIP, puoi servirlo direttamente da un controller ASP.NET usando `FileResult`, offrendo ai tuoi utenti un pulsante **download html as zip** con un solo click. + +## Conclusione + +Ora hai un metodo solido e pronto per la produzione per **save html as zip** usando Aspose.Html e un **custom resource handler**. Caricando qualsiasi URL, configurando `ZipSaveOptions` e lasciando che l'handler fornisca gli stream, puoi **convert url to zip**, **download html as zip**, e **save webpage resources** con poche righe di C#. + +Sentiti libero di sperimentare—memorizza gli stream su disco, su cloud storage o anche in un database. Il pattern rimane lo stesso, e il risultato è sempre un archivio ordinato che puoi distribuire, cache o archiviare per sempre. + +--- + +![Diagram illustrating the save html as zip workflow – from loading a URL to producing a ZIP file](/images/save-html-as-zip.png) + +*Testo alternativo dell'immagine:* **save html as zip workflow diagram** + +Se hai trovato utile questo tutorial, lascia un commento, condividilo con un collega, o aggiungi una stella al repository dove tieni i tuoi script utilitari. Buon coding! + +{{< /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/italian/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/italian/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..a87e996e1 --- /dev/null +++ b/html/italian/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,218 @@ +--- +category: general +date: 2026-04-19 +description: Salva la pagina web come zip usando Aspose.HTML in C#. Scopri come convertire + un URL in zip, esportare HTML in zip e scaricare la pagina web come zip con un semplice + esempio di codice. +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: it +og_description: Salva la pagina web come zip con Aspose.HTML in C#. Questa guida mostra + come convertire un URL in zip, esportare HTML in zip e scaricare la pagina web come + zip in pochi passaggi. +og_title: Salva pagina web come ZIP con Aspose.HTML – Tutorial completo C# +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: Salva pagina web come ZIP con Aspose.HTML – Tutorial completo C# +url: /it/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Salva pagina web come ZIP con Aspose.HTML – Tutorial completo C# + +Hai bisogno di **salvare una pagina web come zip** per archiviazione offline, test automatizzati, o semplicemente per distribuire un'istantanea di un sito? Non sei solo. In questo tutorial vedremo come **convertire un URL in zip**, **esportare HTML in zip**, e persino **scaricare una pagina web come zip** con poche linee di C# pulito. + +Copriamo tutto, dalla configurazione del progetto al file ZIP finale su disco, e aggiungeremo alcuni consigli pratici che non troverai nella documentazione ufficiale. Alla fine avrai una soluzione riutilizzabile che può **creare zip da html** ogni volta che ne hai bisogno. + +## Cosa ti servirà + +- **.NET 6.0** (o qualsiasi versione recente di .NET) – Aspose.HTML funziona sia con .NET Core che con .NET Framework. +- **Aspose.HTML for .NET** pacchetto NuGet – `Install-Package Aspose.HTML`. +- Una modesta esperienza in C# – se sai scrivere un `Console.WriteLine`, sei pronto. +- Una macchina con connessione internet per il download iniziale (il codice stesso funziona offline una volta creato lo ZIP). + +Nessun SDK aggiuntivo, nessun browser headless, solo puro .NET e Aspose.HTML. + +![Illustrazione del salvataggio di una pagina web come zip usando Aspose.HTML](save-webpage-as-zip.png "Diagramma che mostra il flusso di lavoro per salvare una pagina web come zip") + +## Salva pagina web come ZIP – Panoramica + +A livello alto, il processo è composto da tre componenti: + +1. **Un `ResourceHandler` personalizzato** che indica ad Aspose.HTML dove scrivere ogni risorsa esterna (immagini, CSS, script). +2. **`ZipSaveOptions`** che collega il gestore a un archivio ZIP e ti permette di regolare il rendering (antialiasing, suggerimenti per i font, ecc.). +3. **La chiamata `HTMLDocument.Save`** che unisce tutto, trasmette la pagina e tutte le sue risorse nel file ZIP. + +È tutto. Il lavoro pesante è svolto da Aspose.HTML, così puoi concentrarti sul “perché” e sul “quando” invece di lottare con stream di basso livello. + +--- + +## Passo 1: Configura il progetto e aggiungi Aspose.HTML + +Per prima cosa, crea un nuovo progetto console (o inserisci il codice in un'app esistente). Apri un terminale ed esegui: + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +Il pacchetto `Aspose.HTML` include tutti i tipi di cui avremo bisogno: `HTMLDocument`, `ZipSaveOptions`, `ImageRenderingOptions` e l'astratto `ResourceHandler`. + +> **Suggerimento professionale:** Se stai puntando a .NET Framework, sostituisci i comandi `dotnet` con l'interfaccia UI del NuGet Package Manager in Visual Studio – le stesse DLL verranno aggiunte. + +--- + +## Passo 2: Crea un gestore di risorse personalizzato `ZipHandler` + +Aspose.HTML chiama `HandleResource` per ogni file esterno che incontra durante l'analisi della pagina. Sovrascrivendo questo metodo possiamo indirizzare ogni risorsa in una voce ZIP invece che nel file system. + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### Perché un gestore personalizzato? + +Senza di esso, Aspose.HTML posizionerebbe le risorse accanto al file HTML su disco. Fornendo un `ZipArchive`, manteniamo **tutto confezionato** – perfetto per la distribuzione o per una successiva estrazione da parte di un altro servizio. + +--- + +## Passo 3: Configura `ZipSaveOptions` con il rendering delle immagini + +Ora colleghiamo il gestore alle opzioni di salvataggio e attiviamo alcune regolazioni di rendering che migliorano la fedeltà visiva di screenshot o conversioni simili a PDF. + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **Perché abilitare antialiasing e hinting?** Quando la pagina viene successivamente renderizzata in una bitmap (ad esempio per una miniatura), queste impostazioni riducono i bordi frastagliati e rendono i caratteri piccoli leggibili — particolarmente importante se prevedi di incorporare le immagini altrove. + +--- + +## Passo 4: Carica il documento HTML e salva in ZIP + +Con il gestore e le opzioni pronti, caricare una pagina remota è semplice come passare il suo URL a `HTMLDocument`. Il metodo `Save` invocherà `HandleResource` per ogni risorsa collegata. + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +A questo punto `zipStream` contiene un **archivio ZIP completo che include**: + +- `index.html` (la pagina principale) +- Tutti i file CSS referenziati dai tag `` +- Immagini, font e file JavaScript necessari per rendere la pagina offline + +### Casi limite e variazioni + +| Situazione | Cosa regolare | +|----------------------------------------|-----------------------------------------------------------------------------------| +| **Autenticazione richiesta** | Usa `HTMLDocument(string url, LoadOptions options)` e imposta `options.Credentials`. | +| **Pagine molto grandi (>100 MB)** | Scrivi direttamente su un `FileStream` invece di `MemoryStream` per evitare un elevato utilizzo di RAM. | +| **URL relativi che iniziano con “//”**| Il gestore normalizza automaticamente; assicurati solo che `BaseUrl` sia impostato. | +| **Struttura di cartelle personalizzata dentro lo ZIP**| Modifica `info.Path` all'interno di `HandleResource` prima di creare l'entry. | + +--- + +## Passo 5: Persiste il file ZIP e verifica il risultato + +Infine, scriviamo il ZIP in memoria su disco. Questo passaggio è opzionale se intendi inviare lo stream sulla rete, ma rende la verifica più semplice. + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**Risultato atteso:** Aprendo `result.zip` si vede un file `index.html` che, quando aperto in un browser offline, appare identico alla pagina live (a condizione che tutte le risorse esterne fossero raggiungibili durante il download). + +--- + +## Domande comuni e risposte + +**D: Questo approccio funziona con pagine che usano immagini caricate pigramente (lazy‑loaded)?** +R: Sì, finché le immagini vengono richieste durante il primo attraversamento del DOM. Se uno script carica immagini dopo il caricamento della pagina, potresti dover attivare un “render” manuale chiamando `document.Render()` prima di `Save`. + +**D: Posso comprimere ulteriormente lo ZIP?** +R: L'API `ZipArchive` utilizza il livello di compressione predefinito. Per una compressione più aggressiva, istanzialo con `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)`. + +**D: E se ho bisogno di uno ZIP protetto da password?** +R: Il `ZipArchive` integrato non supporta la crittografia. In tal caso, inoltra lo stream di output attraverso una libreria di terze parti come `SharpZipLib` dopo che Aspose.HTML ha terminato la scrittura. + +--- + +## Suggerimenti professionali per l'uso in produzione + +- **Riutilizza il `ZipHandler`** quando elabori più pagine in batch; basta resettare il `MemoryStream` sottostante tra le esecuzioni. +- **Log** + +{{< /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/japanese/net/generate-jpg-and-png-images/_index.md b/html/japanese/net/generate-jpg-and-png-images/_index.md index 57de57175..851db0772 100644 --- a/html/japanese/net/generate-jpg-and-png-images/_index.md +++ b/html/japanese/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML for .NET を使用して HTML ドキュメントを操作したり DOCX 文書を PNG または JPG 画像に変換する際に、アンチエイリアシングを有効にして高品質な出力を得る手順を解説します。 ### [DOCX を PNG に変換 – ZIP アーカイブを作成する C# チュートリアル](./convert-docx-to-png-create-zip-archive-c-tutorial/) C# で DOCX を PNG に変換し、ZIP アーカイブを作成する方法を学びます。 +### [HTML を PNG にレンダリングする方法 – 完全 C# ガイド](./how-to-render-html-to-png-complete-c-guide/) +Aspose.HTML for .NET を使用して、HTML を高品質な PNG 画像に変換する手順をステップバイステップで解説します。 ## 結論 diff --git a/html/japanese/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/japanese/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..15c72688c --- /dev/null +++ b/html/japanese/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,156 @@ +--- +category: general +date: 2026-04-19 +description: Aspose.HtmlでHTMLをPNGにレンダリングする方法。HTMLをPNGに変換し、HTMLをPNGとして保存し、数分でHTMLから画像を作成する方法を学びましょう。 +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: ja +og_description: Aspose.Html を使用して HTML を PNG にレンダリングする方法。ステップバイステップのチュートリアルに従って、HTML + を PNG に変換し、HTML を PNG として保存し、HTML から画像を作成します。 +og_title: HTMLをPNGにレンダリングする方法 – 完全C#ガイド +tags: +- Aspose.Html +- C# +title: HTML を PNG にレンダリングする方法 – 完全 C# ガイド +url: /ja/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML を PNG にレンダリングする方法 – 完全 C# ガイド + +ブラウザを起動せずに **HTML をレンダリング** して画像ファイルにしたいと思ったことはありませんか? あなただけではありません。多くのプロジェクト—メールのサムネイル、PDF生成、あるいは単なるプレビュー—で、**HTML を PNG に変換** する必要があります。 + +このチュートリアルでは、Aspose.Html for .NET を使用した実践的なソリューションを順を追って解説します。ライブラリのインストールから小さなフォントを鮮明に表示するためのテキストヒンティングの調整までカバーします。最後まで読むと、**HTML を PNG として保存**し、**HTML から画像を作成**できるようになり、さらにはエッジケースのシナリオ向けにレンダリングオプションを調整することも可能です。 + +## 必要なもの + +- **.NET 6+**(または .NET Framework 4.6.2+)。API はランタイム間で同じように動作します。 +- **Aspose.Html** NuGet パッケージ – `Install-Package Aspose.Html`。 +- 画像に変換したいシンプルな HTML ファイル(例: `article.html`)。 +- Visual Studio、Rider、またはお好みのエディタ。 + +以上です—余分な依存関係は不要、ヘッドレス Chrome も不要、純粋な C# だけです。 + +## ステップ 1: Aspose.Html をインストールして名前空間を追加 + +まず、NuGet からライブラリを取得します。Package Manager Console を開いて次のコマンドを実行します: + +```powershell +Install-Package Aspose.Html +``` + +インストールが完了したら、ファイルの先頭に必要な `using` ディレクティブを追加します: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +これらの名前空間により、ドキュメントモデル、画像レンダリング、そして後で必要になる細かいテキストオプションにアクセスできるようになります。 + +> **プロのコツ:** .csproj ファイルを使用している場合は、手動で `` を追加することもできます。 + +## ステップ 2: HTML ドキュメントをロード + +`HTMLDocument` インスタンスを作成し、ソースファイルを指す必要があります。Aspose.Html はパス、ストリーム、あるいは URL からも読み取れます。 + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **なぜ重要か:** ドキュメントを一度だけロードすることでメモリ使用量を抑えられます。多数のページをレンダリングする場合は、可能な限り同じ `HTMLDocument` オブジェクトを再利用してください。 + +## ステップ 3: 小さなフォントのテキストレンダリングを調整 + +極小のテキストをレンダリングすると、エッジがぼやけがちです。ヒンティングを有効にすると、ラスタライザがグリフをピクセル境界に合わせるようになり、可読性が大幅に向上します。 + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +ここではアンチエイリアス、サブピクセルレンダリングの制御や、カスタムフォントコレクションの指定も可能です—HTML がウェブフォントを参照している場合に便利です。 + +## ステップ 4: 画像レンダリングオプションを設定 + +ここで `TextOptions` を画像設定にバインドします。背景色、DPI、画像フォーマット(PNG、JPEG、BMP)も設定できます。 + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **エッジケース:** HTML が一般的な画面幅より広い場合は、`ImageRenderingOptions` の `Width` と `Height` を設定して、巨大な PNG の生成を防ぐことを検討してください。 + +## ステップ 5: HTML を PNG ファイルにレンダリング + +最後に `RenderToImage` を呼び出します。使用するメソッドオーバーロードにより、出力パスと先ほど作成したオプションを指定できます。 + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +プログラムを実行すると、Aspose.Html がマークアップを解析し、CSS を適用し、ページをレイアウトして `article.png` にラスタライズします。任意の画像ビューアでファイルを開くと、元の HTML のピクセルパーフェクトなスナップショットが表示されるはずです。 + +![how to render html as PNG using Aspose.Html](render-html-png.png) + +*画像代替テキスト: **HTML をレンダリング** して PNG に変換 using Aspose.Html* + +## ボーナス: 複数ページの処理やスケーリング + +単一の HTML ファイルに複数の `` セクションが含まれていることがあります(例: 印刷用)。`htmlDoc.Pages` をループして各ページを個別にレンダリングできます: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +フルサイズ画像ではなくサムネイルが必要な場合は、レンダリング前に `imgOpts.Width` と `imgOpts.Height` を調整してください。ライブラリは自動的にアスペクト比を保持します。 + +--- + +## 結論 + +これで、Aspose.Html を使用して **HTML を PNG 画像にレンダリング** するための堅牢で本番環境向けのレシピが手に入りました。パッケージのインストール、マークアップのロード、テキストヒンティングの微調整、そして最終的に `RenderToImage` を呼び出すまで、すべてのステップが網羅されています。 + +この知識があれば、**HTML を PNG に変換**、**HTML を PNG として保存**、そして **HTML から画像を作成** でき、.NET アプリケーション全般で活用できます—サムネイルを生成するウェブサービスや、ウェブページをアーカイブするデスクトップツールなど、さまざまなシナリオに対応できます。 + +次に、**HTML を画像にレンダリング** する際の他フォーマット(JPEG、BMP)や、Aspose.PDF を使用して PNG を PDF に埋め込むといった関連トピックを探求してください。高解像度印刷向けに DPI スケーリングを試したり、動的に生成された 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/japanese/net/html-extensions-and-conversions/_index.md b/html/japanese/net/html-extensions-and-conversions/_index.md index 4110fd8e8..0b100a7ba 100644 --- a/html/japanese/net/html-extensions-and-conversions/_index.md +++ b/html/japanese/net/html-extensions-and-conversions/_index.md @@ -66,6 +66,10 @@ Aspose.HTML for .NET を使用して、.NET で HTML を JPEG に変換する方 Aspose.HTML を使用して .NET で HTML を MHTML に変換する - 効率的な Web コンテンツのアーカイブ化のためのステップバイステップ ガイド。Aspose.HTML for .NET を使用して MHTML アーカイブを作成する方法を学習します。 ### [Aspose.HTML を使用して .NET で HTML を PNG に変換する](./convert-html-to-png/) Aspose.HTML for .NET を使用して HTML ドキュメントを操作および変換する方法を学びます。効果的な .NET 開発のためのステップバイステップ ガイドです。 + +### [C# で HTML を PNG に変換 – HTML を画像としてレンダリング](./convert-html-to-png-in-c-render-html-as-image/) +C# と Aspose.HTML を使用して、HTML を PNG 画像に変換する手順をステップバイステップで解説します。 + ### [Aspose.HTML を使用して .NET で HTML を TIFF に変換する](./convert-html-to-tiff/) Aspose.HTML for .NET を使用して HTML を TIFF に変換する方法を学びます。効率的な Web コンテンツの最適化については、当社のステップバイステップ ガイドに従ってください。 ### [Aspose.HTML を使用して .NET で HTML を XPS に変換する](./convert-html-to-xps/) @@ -73,11 +77,18 @@ Aspose.HTML for .NET のパワーを発見してください: HTML を XPS に ### [HTML を ZIP に保存 – 完全 C# チュートリアル](./save-html-as-zip-complete-c-tutorial/) Aspose.HTML for .NET を使用して、HTML コンテンツを ZIP アーカイブとして保存する方法をステップバイステップで解説します。 +### [Aspose.HTML を使用して Web ページを ZIP に保存する – 完全 C# チュートリアル](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +Aspose.HTML for .NET を使用して、Web ページ全体を ZIP アーカイブとして保存する手順をステップバイステップで解説します。 + ### [C# で HTML を Zip に圧縮する方法 – HTML を Zip に保存](./how-to-zip-html-in-c-save-html-to-zip/) C# と Aspose.HTML を使用して、HTML コンテンツを Zip アーカイブに保存する手順をステップバイステップで解説します。 + ### [C# で HTML を ZIP に保存 – 完全インメモリ例](./save-html-to-zip-in-c-complete-in-memory-example/) Aspose.HTML for .NET を使用して、HTML をメモリ内で ZIP アーカイブに保存する手順をステップバイステップで解説します。 +### [カスタム リソース ハンドラを使用して HTML を ZIP に保存する – ステップバイステップ ガイド](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +カスタム リソース ハンドラを利用し、HTML を ZIP アーカイブとして保存する手順をステップバイステップで解説します。 + ## 結論 結論として、HTML の拡張と変換は、現代の Web 開発に不可欠な要素です。Aspose.HTML for .NET はプロセスを簡素化し、あらゆるレベルの開発者が利用できるようにします。当社のチュートリアルに従うことで、幅広いスキルを備えた熟練した Web 開発者になるための道を順調に進むことができます。 diff --git a/html/japanese/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/japanese/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..6b1aea99f --- /dev/null +++ b/html/japanese/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-04-19 +description: Aspose.HTML を使用して C# で HTML を PNG に変換する – HTML を画像としてレンダリングし、アンチエイリアス付きでチャートを + PNG として保存するクイックガイド +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: ja +og_description: C#でHTMLを高速にPNGに変換。HTMLを画像としてレンダリングする方法、チャートをPNGとして保存する方法、そして Aspose.HTML + を使用して HTML から PNG を生成する方法を学びましょう。 +og_title: C#でHTMLをPNGに変換 – HTMLを画像としてレンダリング +tags: +- Aspose.HTML +- C# +- Image Processing +title: C#でHTMLをPNGに変換 – HTMLを画像としてレンダリング +url: /ja/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# で HTML を PNG に変換 – HTML を画像としてレンダリング + +**HTML を PNG に変換**したいが、どのライブラリが鮮明な結果を出すか分からないことはありませんか?同じ悩みを持つ人は多いです。動的なチャートをエクスポートしたり、メールテンプレートをサムネイルに変換したり、単にウェブページの静的なスナップショットが必要だったりする場合、**HTML を画像としてレンダリング**できることは、開発者のツールボックスにあると便利なテクニックです。 + +このチュートリアルでは、Aspose.HTML を使って HTML ファイルを PNG ファイルに変換する一連の手順を解説します。最後まで実行すれば、**チャートを PNG として保存**したり、**HTML から PNG を生成**したり、さらにアンチエイリアス設定を調整して洗練された見た目にすることができます。余計な説明は省き、すぐにプロジェクトに組み込める完全な実装例を提供します。 + +## 必要なもの + +作業を始める前に、以下が揃っていることを確認してください。 + +- **.NET 6.0** 以上(コードは .NET Framework 4.6+ でも動作します)。 +- **Aspose.HTML for .NET** – NuGet で `Install-Package Aspose.HTML` と入力すれば取得できます。 +- キャプチャしたいマークアップを含むシンプルな HTML ファイル(例: `chart.html`)。 +- お好みの IDE – Visual Studio、Rider、あるいは VS Code でも構いません。 + +以上です。余計な依存関係やヘッドレスブラウザは不要で、ドキュメント化された単一ライブラリだけで完結します。 + +![Convert HTML to PNG example](example.png "Convert HTML to PNG output") + +## 手順 1: HTML ドキュメントを読み込む + +最初に行うべきことは、Aspose.HTML にソースファイルを指し示すことです。`HTMLDocument` クラスは、ライブラリが後でビットマップに描画するすべてを保持するキャンバスと考えてください。 + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*このステップが重要な理由:* ドキュメントを読み込むことで、パース段階とレンダリング段階が分離されます。エンジンは CSS、スクリプト、画像を解決した上で PNG を生成できるようになります。生のマークアップを直接レンダリングしようとすると、空白の画像やスタイルが欠落した画像になってしまいます。 + +## 手順 2: 画像レンダリングオプションを設定する + +デフォルトの Aspose.HTML でもまずまずの PNG が得られますが、特にチャートやベクターグラフィックでは滑らかなエッジが求められます。そこで `ImageRenderingOptions` を使用します。 + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*プロのコツ:* 高 DPI ディスプレイ向けに `Width` と `Height` を比例して拡大し、PNG を大きめに出力しておくと後で画像編集ツールで縮小できます。また、背景色を設定しておくと、暗いページ上で透明 PNG が不自然に見えるのを防げます。 + +## 手順 3: HTML を PNG ファイルにレンダリングする + +ここで本格的な処理が行われます。`RenderToImage` メソッドに出力パスと先ほど定義したオプションを渡すと、PNG がディスクに書き込まれます。 + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +この行が完了すると、対象フォルダーに `chart.png` が生成されます。開いてみてください – チャートは鮮明ですか?アンチエイリアスを有効にしていれば、線は滑らかでテキストもくっきりしているはずです。 + +### 結果の確認 + +プログラムから簡単に画像を確認できます。 + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +コンソールに非ゼロのサイズとサポートされているピクセルフォーマット(例: `Format32bppArgb`)が表示されれば、**convert html to png** に成功しています。 + +## HTML を画像としてレンダリング – 詳細オプション + +ここまでで基本はカバーしましたが、実務ではもう少し細かい制御が必要になることがあります。以下に一般的な調整例を示します。 + +### 印刷品質の出力向け DPI 調整 + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +高 DPI は、PNG を PDF に埋め込んだり紙に印刷したりする場合に最適です。 + +### 外部リソースの取り扱い + +HTML が外部の CSS、フォント、画像を参照している場合、実行時にそれらへアクセスできるようにしてください。カスタム `BaseUrl` を設定できます。 + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +これにより、Aspose.HTML は相対 URL を指定したベース URL に対して解決します。 + +### 複数ページの変換 + +Aspose.HTML は、マルチページ HTML ドキュメントの各ページを個別の PNG ファイルとしてレンダリングできます。 + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +この方法で、**チャートを PNG として保存**する際にページごとに手動で画像を切り出す必要がなくなります。 + +## チャートを PNG として保存 – よくある落とし穴と回避策 + +1. **フォントが見つからない:** HTML がサーバーにインストールされていないカスタムフォントを使用していると、レンダリングされた PNG はデフォルトフォントにフォールバックします。フォントをマシンにインストールするか、CSS の `@font-face` で埋め込んでください。 +2. **ファイルが大きすぎる:** 巨大な HTML をレンダリングするとメモリ消費が激しくなります。コンテンツをページ分割するか、画像サイズを縮小することを検討してください。 +3. **透明背景:** デフォルトでは PNG が透明になることがあります。メールのサムネイルなど不透明背景が必要な場合は、前述のように `BackgroundColor` を設定してください。 +4. **スクリプト実行:** Aspose.HTML は JavaScript を実行しません。Chart.js などクライアントサイドのライブラリでチャートを描画している場合は、事前に静的な `` 要素に描画しておくか、ヘッドレスブラウザを使用してください。 + +## 完全動作サンプル + +以下はコンソールアプリにコピペできる完全なプログラムです。これまで説明したすべての手順、エラーハンドリング、オプションが含まれています。 + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +プログラムを実行すると、確認メッセージと画像のサイズが表示されます。`chart.png` を任意のビューアで開き、チャートが元の 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/japanese/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/japanese/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..24993daaa --- /dev/null +++ b/html/japanese/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-04-19 +description: Aspose.Html とカスタムリソースハンドラを使用して HTML を ZIP として保存する方法を学びましょう。また、URL を ZIP + に変換し、数分で HTML を ZIP としてダウンロードする方法もご紹介します。 +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: ja +og_description: 'HTML を ZIP として簡単に保存: Aspose.Html、カスタム リソース ハンドラ、ZipSaveOptions を使用して、任意の + URL をダウンロード可能な ZIP アーカイブに変換します。' +og_title: カスタムリソースハンドラでHTMLをZIPとして保存 – クイックチュートリアル +tags: +- Aspose.Html +- C# +- Web scraping +title: カスタムリソースハンドラでHTMLをZIPとして保存する – ステップバイステップガイド +url: /ja/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML を ZIP として保存 – 完全チュートリアル + +ページ全体(画像、CSS、スクリプト)を 1 つのきれいなパッケージにまとめて **HTML を ZIP として保存** したいことはありませんか?記事をアーカイブするクローラを作っているか、ユーザー向けに手軽な「HTML を ZIP としてダウンロード」ボタンを提供したいだけかもしれません。どちらにせよ、膨大なファイル I/O コードを書かずに実現する方法を知りたくなるでしょう。 + +朗報です。Aspose.Html を使えば作業はとても簡単です。さらに **カスタム リソース ハンドラ** を使えば、各リソース ストリームの保存先を自由に決められます。本ガイドでは **URL を ZIP に変換**、**HTML を ZIP としてダウンロード**、そして **Web ページのリソースをオフライン用に保存** する方法を、単一の自己完結型 C# プログラムで紹介します。 + +## 学べること + +- NuGet で簡単に導入できる Aspose.Html ライブラリのインストール方法。 +- Aspose.Html が書き込みを行うたびに `Stream` を提供する `ResourceHandler` の作成方法。 +- リモートページ(またはローカルファイル)を読み込み、すべてを ZIP アーカイブにまとめる手順。 +- 生成された `output.zip` に HTML ファイルとすべてのリンクされたアセットが含まれていることを確認する方法。 + +外部ツール不要、手作業で ZIP ファイルを操作する必要もなし。クリーンなコンパイル済みコードを任意の .NET プロジェクトに組み込むだけです。 + +## 前提条件 + +| 要件 | 重要な理由 | +|------|------------| +| .NET 6.0 以降(コードは .NET Framework 4.7+ でも動作) | Aspose.Html は最新ランタイム向けに最適化されており、古いフレームワークでは一部 API が利用できない可能性があります。 | +| Visual Studio 2022(またはお好みの IDE) | デバッグや生成された ZIP の確認が容易になります。 | +| サンプル URL(`https://example.com`)へのインターネット接続 | **URL を ZIP に変換** を実演するためにライブページを取得します。 | +| NuGet パッケージ `Aspose.Html`(v23.12 以上) | `HTMLDocument`、`ZipSaveOptions`、`ResourceHandler` 基底クラスを提供します。 | + +既に .NET プロジェクトがある場合は、以下を実行してください。 + +```bash +dotnet add package Aspose.Html +``` + +これだけでセットアップは完了です。 + +## 手順 1: カスタム リソース ハンドラの作成 + +このソリューションの核となるのは `ResourceHandler` を継承したクラスです。Aspose.Html は書き込みが必要になるたびに `HandleResource` を呼び出します(HTML、画像、CSS、JavaScript などすべて)。`Stream` を返すことで、データの保存先を自由に決められます。 + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**カスタム ハンドラが必要な理由** +従来の `IOutputStorage` インターフェイスは非推奨となっており、`ResourceHandler` を使うことで出力先を完全にコントロールできます。また `ResourceInfo` をチェックできるため、たとえば画像だけを残してフォントを除外するといった細かな制御が可能です。 + +## 手順 2: HTML ドキュメントの読み込み(または URL を ZIP に変換) + +Aspose.Html は URL、ファイルパス、または生の HTML 文字列からロードできます。ここではライブページを読み込む例を示します。これは **HTML を ZIP としてダウンロード** したいケースの典型です。 + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +HTML ソースがすでに変数に入っている場合は、コンストラクタに直接渡すだけです。 + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## 手順 3: ハンドラを ZipSaveOptions に紐付ける + +`ZipSaveOptions` は Aspose.Html に対して **ZIP ファイルの作成方法** を指示します。重要なプロパティは `OutputStorage` で、ここに先ほど作成した `MyHandler` インスタンスを設定します。 + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +圧縮レベルやアーカイブ内のフォルダー名、さらにはマニフェスト ファイルの埋め込みなども調整可能です。詳細は Aspose のドキュメントをご参照ください。デフォルト設定でもほとんどのシナリオで十分に機能します。 + +## 手順 4: ドキュメントを ZIP アーカイブとして保存 + +いよいよ魔法の瞬間です。`Save` メソッドはすべてのリソースを走査し、`HandleResource` を呼び出して返されたストリームにバイトを書き込みます。ハンドラが毎回新しい `MemoryStream` を返すので、Aspose.Html はそれらを集めて最終的に `output.zip` にパックします。 + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**実行結果のイメージ** +- プロジェクト フォルダーのルートに `output.zip` が生成されます。 +- ZIP の中身: `index.html`(メインページ)と、`images/`、`css/`、`scripts/` といったサブフォルダーに、ブラウザーが実際に要求したファイルがそのまま格納されています。 + +## 手順 5: 結果の検証(任意だが推奨) + +簡単なサニティチェックで、**Web ページのリソースを正しく保存** できたか確認しましょう。 + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +`index.html`、リンクされた画像(例: `logo.png`)、CSS ファイル、JavaScript ファイルがすべてエントリとして表示されるはずです。何かが欠けている場合は、`MyHandler` 内の `ResourceInfo` ロジックを再確認してください。 + +## 完全動作サンプル + +以下に、コンソール アプリにそのまま貼り付けて動作させられる完全プログラムを示します。 + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +プログラムを実行(`dotnet run`)すると、きれいに整った `output.zip` が生成されます。任意のアーカイブ マネージャで開けば、オフラインでも保存されたページを閲覧可能です。これが **HTML を ZIP としてダウンロード** 機能を実装する際に必要なすべてです。 + +## よくある質問とエッジケース + +| 質問 | 回答 | +|------|------| +| *Azure Blob Storage に ZIP を保存したい場合は?* | `MemoryStream` を、Blob へ直接書き込むストリーム(例: `CloudBlockBlob.OpenWrite()`)に置き換えれば OK。ハンドラ抽象化のおかげで簡単に実装できます。 | +| *特定のリソースだけを除外したい場合は?* | `HandleResource` 内で `info.ResourceType` や `info.Url` をチェックし、除外したい場合は `null` を返すか、何も書き込まないストリームを返します。 | +| *ZIP にパスワードを設定できるか?* | `ZipSaveOptions` の `Password` プロパティに文字列を設定すれば、保存時に暗号化できます。 | +| *資産が数十 MB になる大規模ページの場合は?* | すべてを `MemoryStream` に保持すると RAM が不足する恐れがあります。その場合は一時フォルダーに書き込む `FileStream` に切り替えてから圧縮させると安全です。 | +| *.NET Core on Linux でも動作するか?* | 完全にクロスプラットフォームです。実行環境がファイル書き込み権限を持っていれば問題なく動作します。 | + +## プロのコツ + +- **プロ tip:** HTML と画像だけが必要な場合は `info.ResourceType == ResourceType.Image` をチェックし、スクリプトやフォントはスキップして ZIP を小さく保ちましょう。 +- **注意点:** 一部サイトは自動リクエストをブロックします。403 エラーが出たら `HtmlLoadOptions` でカスタム `User-Agent` を設定してください。 +- **Tip:** ZIP 作成後は ASP.NET コントローラから `FileResult` で直接返せます。これによりユーザーはワンクリックで **HTML を ZIP としてダウンロード** できるボタンを提供できます。 + +## 結論 + +Aspose.Html と **カスタム リソース ハンドラ** を組み合わせることで、**HTML を ZIP として保存** する堅牢なプロダクション向け手法が手に入りました。任意の URL を読み込み、`ZipSaveOptions` を設定し、ハンドラでストリームを供給するだけで、**URL を ZIP に変換**、**HTML を ZIP としてダウンロード**、そして **Web ページのリソースを保存** が数行の C# で実現できます。 + +ぜひ試してみてください。ストリームをディスク、クラウド、データベースに保存するなど、保存先を変えるだけで同じパターンが使えます。結果は常に、配布・キャッシュ・長期保存に最適な整ったアーカイブです。 + +--- + +![Diagram illustrating the save html as zip workflow – from loading a URL to producing a ZIP file](/images/save-html-as-zip.png) + +*画像の代替テキスト:* **HTML を ZIP として保存 ワークフロー図** + +このチュートリアルが役に立ったら、コメントを残すか、チームメンバーと共有するか、ユーティリティスクリプトを管理しているリポジトリにスターを付けてください。ハッピーコーディング! + +{{< /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/japanese/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/japanese/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..02dba99cd --- /dev/null +++ b/html/japanese/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-04-19 +description: Aspose.HTML を使用して C# でウェブページを zip として保存します。URL を zip に変換する方法、HTML を zip + にエクスポートする方法、シンプルなコード例でウェブページを zip としてダウンロードする方法を学びましょう。 +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: ja +og_description: Aspose.HTML を使用して C# でウェブページを zip として保存します。このガイドでは、URL を zip に変換する方法、HTML + を zip にエクスポートする方法、そして数ステップでウェブページを zip としてダウンロードする方法を示します。 +og_title: Aspose.HTMLでウェブページをZIPとして保存 – 完全なC#チュートリアル +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: Aspose.HTMLでウェブページをZIPとして保存 – 完全なC#チュートリアル +url: /ja/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose.HTML を使用した Web ページの ZIP 保存 – 完全 C# チュートリアル + +オフライン アーカイブ、テストの自動化、またはサイトのスナップショットを配布したいときに **Web ページを ZIP として保存** したいですか? あなたは一人ではありません。このチュートリアルでは、**URL を ZIP に変換**、**HTML を ZIP にエクスポート**、さらには **Web ページを ZIP としてダウンロード** する方法を、数行のクリーンな C# コードで解説します。 + +プロジェクトのセットアップからディスク上の最終 ZIP ファイルまでをすべてカバーし、公式ドキュメントには載っていない実用的なヒントも交えて紹介します。最後まで読めば、必要なときに **HTML から ZIP を作成** できる再利用可能なソリューションが手に入ります。 + +## 必要なもの + +- **.NET 6.0**(または最近の .NET バージョン) – Aspose.HTML は .NET Core と .NET Framework の両方で動作します。 +- **Aspose.HTML for .NET** NuGet パッケージ – `Install-Package Aspose.HTML`。 +- 基本的な C# の経験 – `Console.WriteLine` が書ければ問題ありません。 +- 初回ダウンロード用のインターネット接続があるマシン(ZIP が作成された後はオフラインで動作します)。 + +追加の SDK やヘッドレス ブラウザは不要です。純粋な .NET と Aspose.HTML だけで完結します。 + +![Aspose.HTML を使用した Web ページの ZIP 保存のイラスト](save-webpage-as-zip.png "Web ページを ZIP として保存するワークフローを示す図") + +## Web ページを ZIP として保存 – 概要 + +大まかな流れは 3 つのパートに分かれます。 + +1. **カスタム `ResourceHandler`** – Aspose.HTML が外部リソース(画像、CSS、スクリプト)を書き込む場所を指示します。 +2. **`ZipSaveOptions`** – ハンドラを ZIP アーカイブにバインドし、レンダリング(アンチエイリアス、フォントヒントなど)を調整できます。 +3. **`HTMLDocument.Save` 呼び出し** – すべてをまとめてページとその資産を ZIP ファイルにストリームします。 + +以上です。重い処理は Aspose.HTML が担うので、低レベルのストリーム操作に悩む必要はありません。 + +--- + +## 手順 1: プロジェクトの作成と Aspose.HTML の追加 + +まず新しいコンソール プロジェクトを作成します(既存アプリにコードを貼り付けても構いません)。ターミナルで次のコマンドを実行してください。 + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +`Aspose.HTML` パッケージには、`HTMLDocument`、`ZipSaveOptions`、`ImageRenderingOptions`、抽象クラス `ResourceHandler` など、必要な型がすべて含まれています。 + +> **プロのコツ:** .NET Framework を対象にする場合は、`dotnet` コマンドの代わりに Visual Studio の NuGet パッケージ マネージャ UI を使用してください。同じ DLL が追加されます。 + +--- + +## 手順 2: カスタム `ZipHandler` リソース ハンドラの作成 + +Aspose.HTML はページ解析中に見つけた外部ファイルごとに `HandleResource` を呼び出します。このメソッドをオーバーライドすることで、各リソースをファイルシステムではなく ZIP エントリに書き込むことができます。 + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### カスタムハンドラが必要な理由 + +ハンドラがなければ、Aspose.HTML はリソースを HTML ファイルと同じディレクトリに保存してしまいます。`ZipArchive` に流し込むことで **すべてが一つに束ねられ**、配布や別サービスによる後続の抽出が容易になります。 + +--- + +## 手順 3: 画像レンダリング付き `ZipSaveOptions` の設定 + +ここでハンドラを保存オプションに結び付け、スクリーンショットや PDF ライクな変換時の視覚的忠実度を向上させるいくつかのレンダリング調整を有効にします。 + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **アンチエイリアスとヒンティングを有効にする理由:** 後でビットマップ(サムネイルなど)にレンダリングする際、これらのフラグはギザギザを減らし、小さなフォントを読みやすくします。画像を他所に埋め込む場合に特に重要です。 + +--- + +## 手順 4: HTML ドキュメントの読み込みと ZIP への保存 + +ハンドラとオプションが整ったら、リモート ページの URL を `HTMLDocument` に渡すだけで完了です。`Save` メソッドがすべてのリンク資産に対して `HandleResource` を呼び出します。 + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +この時点で `zipStream` には次の **完全な ZIP アーカイブ** が格納されています。 + +- `index.html`(メイン ページ) +- `` タグで参照されるすべての CSS ファイル +- オフラインでページを正しく表示するために必要な画像、フォント、JavaScript ファイル + +### エッジケースとバリエーション + +| 状況 | 調整すべき点 | +|------|--------------| +| **認証が必要** | `HTMLDocument(string url, LoadOptions options)` を使用し、`options.Credentials` を設定します。 | +| **非常に大きなページ(>100 MB)** | メモリ使用量を抑えるため、`MemoryStream` の代わりに `FileStream` に直接書き込みます。 | +| **“//” で始まる相対 URL** | ハンドラが自動的に正規化します。`BaseUrl` が設定されていることを確認してください。 | +| **ZIP 内のカスタムフォルダー構造** | `HandleResource` 内で `info.Path` を変更してエントリ名を調整します。 | + +--- + +## 手順 5: ZIP ファイルの永続化と結果の検証 + +最後に、メモリ上の ZIP をディスクに書き出します。ネットワーク経由でストリームを送信する場合は省略可能ですが、検証が容易になるのでおすすめです。 + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**期待される結果:** `result.zip` を開くと `index.html` が含まれており、オフラインでブラウザで開いたときにライブ ページと同一に表示されます(ダウンロード時にすべての外部資産にアクセスできていれば)。 + +--- + +## よくある質問と回答 + +**Q: ラジー ロードされた画像があるページでも動作しますか?** +A: はい、初回の DOM ウォーク中に画像が要求されれば取得されます。スクリプトがページロード後に画像を読み込む場合は、`Save` 前に `document.Render()` を手動で呼び出す必要があります。 + +**Q: ZIP をさらに圧縮できますか?** +A: `ZipArchive` のデフォルト圧縮レベルが使用されます。より高い圧縮率が必要な場合は、`new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)` のようにインスタンス化してください。 + +**Q: パスワード保護された ZIP が必要な場合は?** +A: 標準の `ZipArchive` は暗号化をサポートしていません。その場合、Aspose.HTML の書き込みが完了した後に `SharpZipLib` などのサードパーティ ライブラリで出力ストリームをラップしてください。 + +--- + +## 本番環境でのプロティップス + +- **`ZipHandler` を再利用** してバッチ処理で複数ページを処理する場合は、各実行間で基になる `MemoryStream` をリセットしてください。 +- **ログ** + +{{< /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/korean/net/generate-jpg-and-png-images/_index.md b/html/korean/net/generate-jpg-and-png-images/_index.md index 2f2fd11d0..ad752f313 100644 --- a/html/korean/net/generate-jpg-and-png-images/_index.md +++ b/html/korean/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML for .NET을 .NET 프로젝트에 통합하는 것은 번거롭지 DOCX 문서를 PNG 또는 JPG 이미지로 변환할 때 안티앨리어싱을 적용하는 방법을 단계별로 안내합니다. ### [DOCX를 PNG로 변환하고 ZIP 아카이브 만들기 C# 튜토리얼](./convert-docx-to-png-create-zip-archive-c-tutorial/) C#을 사용해 DOCX 파일을 PNG 이미지로 변환하고, 결과를 ZIP 파일로 압축하는 방법을 단계별로 안내합니다. +### [HTML을 PNG로 렌더링하는 방법 – 완전한 C# 가이드](./how-to-render-html-to-png-complete-c-guide/) +C#을 사용해 HTML을 PNG 이미지로 변환하는 전체 단계별 가이드를 제공합니다. ## 결론 diff --git a/html/korean/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/korean/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..450dff40a --- /dev/null +++ b/html/korean/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,157 @@ +--- +category: general +date: 2026-04-19 +description: Aspose.Html를 사용하여 HTML을 PNG로 렌더링하는 방법. HTML을 PNG로 변환하고, HTML을 PNG로 저장하며, + HTML에서 이미지를 몇 분 안에 만드는 방법을 배워보세요. +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: ko +og_description: Aspose.Html를 사용하여 HTML을 PNG로 렌더링하는 방법. 단계별 튜토리얼을 따라 HTML을 PNG로 변환하고, + HTML을 PNG로 저장하며, HTML에서 이미지를 생성하세요. +og_title: HTML을 PNG로 렌더링하는 방법 – 완전한 C# 가이드 +tags: +- Aspose.Html +- C# +title: HTML을 PNG로 렌더링하는 방법 – 완전한 C# 가이드 +url: /ko/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML을 PNG로 렌더링하는 방법 – 완전한 C# 가이드 + +브라우저를 실행하지 않고 **HTML을 렌더링**해서 이미지 파일로 만들고 싶었던 적 있나요? 당신만 그런 것이 아닙니다. 많은 프로젝트—이메일 썸네일, PDF 생성, 혹은 간단한 미리보기—에서 **HTML을 PNG로 변환**해야 할 때가 있습니다. + +이 튜토리얼에서는 Aspose.Html for .NET을 사용한 실전 솔루션을 단계별로 살펴보겠습니다. 라이브러리 설치부터 작은 글꼴을 선명하게 보이게 하는 텍스트 힌팅 조정까지 모두 다룹니다. 끝까지 따라오면 **HTML을 PNG로 저장**하고, **HTML에서 이미지 생성**은 물론, 특수한 상황을 위한 렌더링 옵션까지 조정할 수 있게 됩니다. + +## 필요 사항 + +- **.NET 6+** (또는 .NET Framework 4.6.2+). API는 런타임에 관계없이 동일하게 동작합니다. +- **Aspose.Html** NuGet 패키지 – `Install-Package Aspose.Html`. +- 이미지로 변환하고 싶은 간단한 HTML 파일 (예: `article.html`). +- Visual Studio, Rider 또는 원하는 편집기. + +그게 전부입니다—추가 의존성도 없고, 헤드리스 Chrome도 없으며, 순수 C#만 사용합니다. + +## 단계 1: Aspose.Html 설치 및 네임스페이스 추가 + +먼저, NuGet에서 라이브러리를 가져옵니다. 패키지 관리자 콘솔을 열고 다음을 실행합니다: + +```powershell +Install-Package Aspose.Html +``` + +설치가 완료되면 파일 상단에 필요한 `using` 지시문을 추가합니다: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +이 네임스페이스들을 통해 문서 모델, 이미지 렌더링, 그리고 나중에 사용할 세밀한 텍스트 옵션에 접근할 수 있습니다. + +> **Pro tip:** .csproj 파일을 사용 중이라면 `` 를 수동으로 추가할 수도 있습니다. + +## 단계 2: HTML 문서 로드 + +`HTMLDocument` 인스턴스를 생성해 소스 파일을 가리켜야 합니다. Aspose.Html은 경로, 스트림, 혹은 URL에서도 읽을 수 있습니다. + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Why this matters:** 문서를 한 번만 로드하면 메모리 사용량을 낮출 수 있습니다. 여러 페이지를 렌더링할 계획이라면 가능한 한 동일한 `HTMLDocument` 객체를 재사용하세요. + +## 단계 3: 작은 글꼴을 위한 텍스트 렌더링 조정 + +작은 텍스트를 렌더링하면 가장자리가 흐릿해지는 경우가 많습니다. 힌팅을 활성화하면 래스터라이저가 글리프를 픽셀 경계에 맞추게 되어 가독성이 크게 향상됩니다. + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +여기서 안티앨리어싱, 서브픽셀 렌더링을 제어하거나 사용자 정의 폰트 컬렉션을 지정할 수도 있습니다—HTML이 웹 폰트를 참조하는 경우에 유용합니다. + +## 단계 4: 이미지 렌더링 옵션 구성 + +이제 `TextOptions`를 이미지 설정에 바인딩합니다. 배경색, DPI, 이미지 포맷(PNG, JPEG, BMP)도 설정할 수 있습니다. + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **Edge case:** HTML이 일반 화면보다 넓다면 `ImageRenderingOptions`의 `Width`와 `Height`를 설정해 거대한 PNG 파일 생성을 방지하세요. + +## 단계 5: HTML을 PNG 파일로 렌더링 + +마지막으로 `RenderToImage`를 호출합니다. 사용한 메서드 오버로드를 통해 출력 경로와 방금 만든 옵션을 지정할 수 있습니다. + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +프로그램을 실행하면 Aspose.Html이 마크업을 파싱하고, CSS를 적용하며, 페이지 레이아웃을 계산한 뒤 `article.png`로 래스터화합니다. 이미지 뷰어로 파일을 열면 원본 HTML의 픽셀‑정확한 스냅샷을 확인할 수 있습니다. + +![Aspose.Html을 사용하여 HTML을 PNG로 렌더링하는 방법](render-html-png.png) + +*이미지 대체 텍스트: **HTML을 렌더링하는 방법**을 Aspose.Html을 사용해 PNG로 변환* + +## 보너스: 여러 페이지 처리 또는 스케일링 + +때때로 하나의 HTML 파일에 여러 `` 섹션이 포함될 수 있습니다(예: 인쇄용). `htmlDoc.Pages`를 순회하면서 각 페이지를 개별적으로 렌더링할 수 있습니다: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +전체 크기 이미지 대신 썸네일이 필요하다면 렌더링 전에 `imgOpts.Width`와 `imgOpts.Height`를 조정하세요. 라이브러리가 자동으로 종횡비를 유지합니다. + +--- + +## 결론 + +이제 Aspose.Html을 사용해 **HTML을 PNG 이미지로 렌더링**하는 견고하고 프로덕션에 적합한 레시피를 갖추었습니다. 패키지 설치, 마크업 로드, 텍스트 힌팅 세밀 조정, 마지막으로 `RenderToImage` 호출까지 모든 단계가 포함됩니다. + +이 지식을 통해 **HTML을 PNG로 변환**, **HTML을 PNG로 저장**, 그리고 **HTML에서 이미지 생성**을 모든 .NET 애플리케이션에서 수행할 수 있습니다—썸네일을 생성하는 웹 서비스든 웹 페이지를 보관하는 데스크톱 도구든. + +다음으로는 **HTML을 이미지로 렌더링**을 JPEG, BMP 등 다양한 포맷으로 시도하거나 Aspose.PDF를 사용해 PNG를 PDF에 삽입하는 등 관련 주제를 탐색해 보세요. 고해상도 인쇄를 위한 DPI 스케일링을 실험하거나, 동적으로 생성된 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/korean/net/html-extensions-and-conversions/_index.md b/html/korean/net/html-extensions-and-conversions/_index.md index 38fc3bd7e..ac024a1ef 100644 --- a/html/korean/net/html-extensions-and-conversions/_index.md +++ b/html/korean/net/html-extensions-and-conversions/_index.md @@ -61,18 +61,22 @@ Aspose.HTML 사용하여 .NET에서 HTML을 Markdown으로 변환하는 방법 Aspose.HTML을 사용하여 .NET에서 HTML을 MHTML로 변환 - 효율적인 웹 콘텐츠 보관을 위한 단계별 가이드. .NET용 Aspose.HTML을 사용하여 MHTML 보관소를 만드는 방법을 알아보세요. ### [Aspose.HTML을 사용하여 .NET에서 HTML을 PNG로 변환](./convert-html-to-png/) Aspose.HTML for .NET을 사용하여 HTML 문서를 조작하고 변환하는 방법을 알아보세요. 효과적인 .NET 개발을 위한 단계별 가이드. +### [C#에서 HTML을 PNG로 변환 – HTML을 이미지로 렌더링](./convert-html-to-png-in-c-render-html-as-image/) +Aspose.HTML for .NET을 활용해 C#에서 HTML을 PNG 이미지로 렌더링하는 방법을 단계별로 안내합니다. ### [Aspose.HTML을 사용하여 .NET에서 HTML을 TIFF로 변환](./convert-html-to-tiff/) Aspose.HTML for .NET을 사용하여 HTML을 TIFF로 변환하는 방법을 알아보세요. 효율적인 웹 콘텐츠 최적화를 위한 단계별 가이드를 따르세요. ### [Aspose.HTML을 사용하여 .NET에서 HTML을 XPS로 변환](./convert-html-to-xps/) .NET용 Aspose.HTML의 힘을 알아보세요: HTML을 XPS로 손쉽게 변환하세요. 필수 조건, 단계별 가이드, FAQ가 포함되어 있습니다. ### [C#에서 HTML을 Zip으로 압축하는 방법 – HTML을 Zip으로 저장](./how-to-zip-html-in-c-save-html-to-zip/) C#과 Aspose.HTML을 사용해 HTML 파일을 ZIP 압축 파일로 저장하는 단계별 가이드를 제공합니다. -### [스타일이 적용된 텍스트로 HTML 문서 만들기 및 PDF로 내보내기 – 전체 가이드](./create-html-document-with-styled-text-and-export-to-pdf-full/) -Aspose.HTML for .NET을 사용하여 스타일이 적용된 텍스트가 포함된 HTML 문서를 만들고 PDF로 내보내는 전체 가이드를 확인하세요. ### [HTML을 ZIP으로 저장 – 전체 C# 튜토리얼](./save-html-as-zip-complete-c-tutorial/) Aspose.HTML for .NET을 사용해 HTML을 ZIP 파일로 저장하는 전체 C# 단계별 튜토리얼. ### [C#에서 HTML을 ZIP으로 저장 – 완전 인메모리 예제](./save-html-to-zip-in-c-complete-in-memory-example/) Aspose.HTML for .NET을 사용하여 메모리 내에서 HTML을 ZIP 파일로 저장하는 방법을 단계별로 안내합니다. +### [맞춤형 리소스 핸들러를 사용하여 HTML을 ZIP으로 저장 – 단계별 가이드](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +Aspose.HTML을 활용해 맞춤형 리소스 핸들러로 HTML을 ZIP 파일로 저장하는 방법을 단계별로 안내합니다. +### [Aspose.HTML을 사용하여 웹페이지를 ZIP으로 저장 – 전체 C# 튜토리얼](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +Aspose.HTML for .NET을 활용해 웹페이지를 ZIP 파일로 저장하는 전체 C# 단계별 가이드를 제공합니다. ## 결론 diff --git a/html/korean/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/korean/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..17d6fc11e --- /dev/null +++ b/html/korean/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-04-19 +description: Aspose.HTML을 사용하여 C#에서 HTML을 PNG로 변환 – HTML을 이미지로 렌더링하고 차트를 안티앨리어싱으로 + PNG로 저장하는 빠른 가이드. +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: ko +og_description: C#에서 HTML을 빠르게 PNG로 변환합니다. HTML을 이미지로 렌더링하는 방법, 차트를 PNG로 저장하는 방법, + 그리고 Aspose.HTML을 사용해 HTML에서 PNG를 생성하는 방법을 배워보세요. +og_title: C#에서 HTML을 PNG로 변환 – HTML을 이미지로 렌더링 +tags: +- Aspose.HTML +- C# +- Image Processing +title: C#에서 HTML을 PNG로 변환 – HTML을 이미지로 렌더링 +url: /ko/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#에서 HTML을 PNG로 변환 – HTML을 이미지로 렌더링 + +C#에서 **HTML을 PNG로 변환**해야 하는데 어떤 라이브러리를 사용해야 깔끔한 결과를 얻을 수 있을지 고민한 적이 있나요? 당신만 그런 것이 아닙니다. 동적인 차트를 내보내거나, 이메일 템플릿을 썸네일로 만들거나, 웹 페이지의 정적 스냅샷이 필요할 때 **HTML을 이미지로 렌더링**하는 기능은 모든 개발자 도구함에 들어가면 좋은 트릭입니다. + +이 튜토리얼에서는 Aspose.HTML을 사용해 HTML 파일을 PNG 파일로 변환하는 전체 과정을 단계별로 살펴보겠습니다. 끝까지 따라오면 **차트를 PNG로 저장**, **HTML에서 PNG 생성**, 그리고 안티앨리어싱 설정을 조정해 깔끔한 결과를 얻는 방법을 배울 수 있습니다. 불필요한 내용 없이 바로 프로젝트에 넣어 실행할 수 있는 완전한 예제를 제공합니다. + +## 준비 사항 + +시작하기 전에 다음이 준비되어 있는지 확인하세요: + +- **.NET 6.0** 이상 (코드는 .NET Framework 4.6+에서도 동작합니다). +- **Aspose.HTML for .NET** – NuGet에서 `Install-Package Aspose.HTML` 명령으로 설치할 수 있습니다. +- 캡처하고 싶은 마크업이 들어 있는 간단한 HTML 파일 (예: `chart.html`). +- 원하는 IDE – Visual Studio, Rider, 혹은 VS Code 등 어느 것이든 상관없습니다. + +이것만 있으면 됩니다. 추가 의존성도 없고, 헤드리스 브라우저도 필요 없으며, 단일 라이브러리만 있으면 됩니다. + +![Convert HTML to PNG example](example.png "Convert HTML to PNG output") + +## 1단계: HTML 문서 로드 + +먼저 Aspose.HTML에 원본 파일을 지정해야 합니다. `HTMLDocument` 클래스를 캔버스에 비유하면, 라이브러리가 나중에 비트맵에 그릴 모든 내용을 담고 있는 캔버스라고 생각하면 됩니다. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*왜 중요한가:* 문서를 로드하면 파싱 단계와 렌더링 단계를 분리할 수 있습니다. 엔진이 CSS, 스크립트, 이미지 등을 먼저 해석하고 나서 PNG를 생성하도록 할 수 있습니다. 이 단계를 건너뛰고 바로 마크업을 렌더링하면 빈 이미지가 나오거나 스타일이 누락됩니다. + +## 2단계: 이미지 렌더링 옵션 설정 + +기본 Aspose.HTML은 괜찮은 PNG를 만들어 주지만, 차트나 벡터 그래픽처럼 부드러운 가장자리가 필요할 때가 많습니다. 여기서 `ImageRenderingOptions`가 등장합니다. + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*팁:* 고해상도 디스플레이를 대상으로 할 경우 `Width`와 `Height`를 비례적으로 늘리고 PNG를 크게 만든 뒤, 이미지 편집기로 나중에 축소하면 됩니다. 또한 배경색을 지정하면 투명 PNG가 어두운 페이지에서 이상하게 보이는 것을 방지할 수 있습니다. + +## 3단계: HTML을 PNG 파일로 렌더링 + +이제 본격적인 작업이 진행됩니다. `RenderToImage` 메서드는 출력 경로와 방금 정의한 옵션을 받아 PNG 파일을 디스크에 씁니다. + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +이 라인이 끝나면 대상 폴더에 `chart.png`가 생성됩니다. 파일을 열어보세요—차트가 선명하게 보이나요? 안티앨리어싱을 켰다면 선이 부드럽고 텍스트도 깔끔할 것입니다. + +### 결과 확인 + +프로그램matically 이미지가 정상인지 빠르게 확인할 수 있습니다: + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +콘솔에 0이 아닌 차원값과 지원되는 픽셀 포맷(예: `Format32bppArgb`)이 출력되면 **convert html to png**에 성공한 것입니다. + +## HTML을 이미지로 렌더링 – 고급 옵션 + +지금까지 기본적인 내용만 다뤘지만, 실제 상황에서는 좀 더 세밀한 제어가 필요합니다. 아래는 흔히 사용되는 몇 가지 추가 설정입니다. + +### 인쇄 품질 출력을 위한 DPI 조정 + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +고 DPI 설정은 PNG를 PDF에 삽입하거나 종이에 인쇄할 때 유용합니다. + +### 외부 리소스 처리 + +HTML이 외부 CSS, 폰트, 이미지 등을 웹 서버에서 참조한다면 런타임이 해당 리소스에 접근할 수 있어야 합니다. 사용자 정의 `BaseUrl`을 설정하면 됩니다: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +이렇게 하면 Aspose.HTML이 상대 URL을 지정한 기본 URL을 기준으로 해석합니다. + +### 여러 페이지 변환 + +Aspose.HTML은 다중 페이지 HTML 문서의 각 페이지를 별개의 PNG 파일로 렌더링할 수 있습니다: + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +이렇게 하면 **save chart as PNG** 작업을 페이지마다 수동으로 나누지 않아도 됩니다. + +## 차트를 PNG로 저장 – 흔히 겪는 문제와 해결 방법 + +1. **폰트 누락:** HTML에 커스텀 폰트가 사용됐지만 서버에 설치되지 않은 경우, 렌더링된 PNG는 기본 폰트로 대체됩니다. 해당 폰트를 머신에 설치하거나 CSS의 `@font-face`로 임베드하세요. +2. **대용량 파일:** 매우 큰 HTML 파일을 렌더링하면 메모리 사용량이 급증합니다. 콘텐츠를 페이지 단위로 나누거나 이미지 차원을 줄이는 방안을 고려하세요. +3. **투명 배경:** 기본적으로 PNG는 투명 배경일 수 있습니다. 이메일 썸네일 등 불투명 배경이 필요하면 앞서 설명한 대로 `BackgroundColor`를 설정하세요. +4. **스크립트 실행:** Aspose.HTML은 JavaScript를 실행하지 않습니다. 차트가 Chart.js와 같은 클라이언트‑사이드 라이브러리로 그려진 경우, 정적 `` 요소로 미리 렌더링하거나 헤드리스 브라우저를 사용해야 합니다. + +## 전체 작업 예제 + +아래는 콘솔 앱에 복사‑붙여넣기 할 수 있는 완전한 프로그램 예제입니다. 앞서 설명한 모든 단계와 오류 처리, 선택적 옵션이 포함되어 있습니다. + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +프로그램을 실행하면 확인 메시지와 함께 이미지 차원이 출력됩니다. `chart.png`를 아무 이미지 뷰어에서 열어 원본 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/korean/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/korean/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..deff92b3f --- /dev/null +++ b/html/korean/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,240 @@ +--- +category: general +date: 2026-04-19 +description: Aspose.Html와 사용자 정의 리소스 핸들러를 사용하여 HTML을 ZIP으로 저장하는 방법을 배워보세요. 또한 URL을 + ZIP으로 변환하고 HTML을 ZIP으로 다운로드하는 방법을 몇 분 안에 확인할 수 있습니다. +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: ko +og_description: 'HTML을 ZIP으로 저장하기 쉽게: Aspose.Html, 사용자 정의 리소스 핸들러 및 ZipSaveOptions를 + 사용하여 모든 URL을 다운로드 가능한 ZIP 아카이브로 변환합니다.' +og_title: 맞춤 리소스 핸들러로 HTML을 ZIP으로 저장하기 – 빠른 튜토리얼 +tags: +- Aspose.Html +- C# +- Web scraping +title: 맞춤 리소스 핸들러로 HTML을 ZIP으로 저장하기 – 단계별 가이드 +url: /ko/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# save html as zip – Complete Tutorial + +전체 페이지와 이미지, CSS, 스크립트를 하나의 깔끔한 패키지로 저장해야 할 때가 있나요? 크롤러를 만들어 기사들을 보관하거나, 사용자에게 “HTML을 ZIP으로 다운로드” 버튼을 제공하고 싶을 때 말이죠. 어떤 방법으로 파일‑IO 코드를 많이 작성하지 않고도 할 수 있을지 궁금하실 겁니다. + +좋은 소식이 있습니다: Aspose.Html을 사용하면 작업이 아주 쉬워지고, **커스텀 리소스 핸들러**를 통해 각 리소스 스트림이 정확히 어디로 가는지 제어할 수 있습니다. 이 가이드에서는 **convert url to zip**, **download html as zip**, **save webpage resources**를 모두 하나의 독립 실행형 C# 프로그램으로 구현하는 방법을 보여드립니다. + +## What You’ll Learn + +- NuGet을 이용해 Aspose.Html 라이브러리를 설치합니다. +- Aspose.Html이 쓰고자 하는 모든 리소스에 대해 `Stream`을 제공하는 `ResourceHandler`를 작성합니다. +- 원격 페이지(또는 로컬 파일)를 로드하고 Aspose.Html에게 모든 내용을 ZIP 아카이브로 묶도록 지시합니다. +- 생성된 `output.zip`에 HTML 파일과 모든 연결된 자산이 포함됐는지 확인합니다. + +외부 도구 없이, 수동으로 ZIP 파일을 다루지 않아도 됩니다—컴파일된 깔끔한 코드만 있으면 .NET 프로젝트 어디에든 바로 넣어 사용할 수 있습니다. + +## Prerequisites + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6.0 or later (the code also works on .NET Framework 4.7+) | Aspose.Html은 최신 런타임을 대상으로 합니다; 오래된 프레임워크에서는 일부 API가 누락될 수 있습니다. | +| Visual Studio 2022 (or any IDE you like) | 디버깅과 생성된 ZIP 파일을 확인하는 데 유용합니다. | +| Internet access for the sample URL (`https://example.com`) | **convert url to zip**을 시연하기 위해 실시간 페이지를 가져옵니다. | +| NuGet package `Aspose.Html` (v23.12 or newer) | `HTMLDocument`, `ZipSaveOptions`, `ResourceHandler` 기본 클래스를 제공하는 라이브러리입니다. | + +이미 .NET 프로젝트가 있다면, 아래 명령만 실행하면 됩니다: + +```bash +dotnet add package Aspose.Html +``` + +설정은 여기까지입니다. + +## Step 1: Create a Custom Resource Handler + +솔루션의 핵심은 `ResourceHandler`를 상속한 클래스입니다. Aspose.Html은 파일을 쓰고자 할 때마다 `HandleResource`를 호출합니다—HTML, 이미지, CSS, JavaScript 등 모든 파일에 대해 말이죠. `Stream`을 반환함으로써 데이터가 저장되는 위치를 직접 결정합니다. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**왜 커스텀 핸들러가 필요할까요?** +이전 `IOutputStorage` 인터페이스는 더 이상 권장되지 않으며, `ResourceHandler`를 사용하면 출력 대상에 대한 완전한 제어가 가능합니다. 또한 `ResourceInfo`를 검사할 수 있어, 예를 들어 이미지만 남기고 폰트는 제외하는 등의 필터링이 쉬워집니다. + +## Step 2: Load the HTML Document (or Convert URL to Zip) + +Aspose.Html은 URL, 파일 경로, 혹은 원시 HTML 문자열에서 로드할 수 있습니다. 여기서는 실시간 페이지를 로드하는 예시를 보여줍니다— 이는 **download html as zip**을 구현할 때 가장 일반적인 상황입니다. + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +이미 HTML 소스가 변수에 들어 있다면, 아래와 같이 생성자에 바로 전달하면 됩니다: + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## Step 3: Wire Up the Handler to ZipSaveOptions + +`ZipSaveOptions`는 Aspose.Html에게 ZIP 파일을 *어떻게* 만들지 알려줍니다. 핵심 속성은 `OutputStorage`이며, 여기서 우리 `MyHandler` 인스턴스를 지정합니다. + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +압축 레벨, 아카이브 내부 폴더 이름, 혹은 매니페스트 파일 삽입 등도 조정할 수 있습니다— 자세한 내용은 Aspose 문서를 참고하세요. 기본값만으로도 대부분의 시나리오에 충분합니다. + +## Step 4: Save the Document as a ZIP Archive + +이제 마법이 시작됩니다. `Save` 메서드는 모든 리소스를 순회하면서 `HandleResource`를 호출하고, 반환된 스트림에 바이트를 씁니다. 핸들러가 매번 새로운 `MemoryStream`을 반환하기 때문에, Aspose.Html은 나중에 이 스트림들을 모아 `output.zip`에 압축합니다. + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**예상 결과:** +- 프로젝트 폴더 루트에 `output.zip` 파일이 생성됩니다. +- ZIP 내부에는 `index.html`(메인 페이지)과 `images/`, `css/`, `scripts/`와 같은 서브 폴더가 들어가며, 브라우저가 요청했을 정확한 파일들이 포함됩니다. + +## Step 5: Verify the Result (Optional but Recommended) + +간단한 검증을 통해 **save webpage resources**가 제대로 수행됐는지 확인할 수 있습니다. + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +`index.html`, 연결된 이미지(`logo.png`), CSS 파일, JavaScript 파일 등의 항목이 보이면 정상입니다. 누락된 것이 있다면 `MyHandler`의 `ResourceInfo` 로직을 다시 점검하세요. + +## Full Working Example + +전체 코드를 한 번에 확인해 보세요. 콘솔 앱에 복사‑붙여넣기 하면 바로 실행할 수 있습니다. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +프로그램을 실행(`dotnet run`)하면 깔끔한 `output.zip`이 생성됩니다. 아카이브 관리자로 열어 보면 저장된 페이지를 오프라인에서도 탐색할 수 있습니다— 바로 **download html as zip** 기능에 필요한 결과입니다. + +## Common Questions & Edge Cases + +| Question | Answer | +|----------|--------| +| *What if I need to store the ZIP in Azure Blob Storage?* | `MemoryStream` 대신 블롭에 직접 쓰는 스트림(e.g., `CloudBlockBlob.OpenWrite()`)을 사용하면 됩니다. 핸들러 추상화 덕분에 매우 간단합니다. | +| *Can I filter out certain resources?* | 가능합니다. `HandleResource` 내부에서 `info.ResourceType`이나 `info.Url`을 검사하고, 해당 리소스를 건너뛰려면 `null`을 반환하거나 빈 스트림을 반환하면 됩니다. | +| *Is the ZIP password‑protected?* | `ZipSaveOptions`에 `Password` 속성이 있습니다. 암호화가 필요하면 `Save` 호출 전에 설정하세요. | +| *What about large pages with dozens of megabytes of assets?* | 모든 것을 `MemoryStream`에 담으면 RAM이 부족할 수 있습니다. 대신 임시 폴더에 쓰는 `FileStream`을 사용하고, Aspose.Html이 해당 파일들을 압축하도록 전환하세요. | +| *Does this work on .NET Core on Linux?* | 전혀 문제 없습니다. Aspose.Html은 크로스‑플랫폼이며, 런타임에 파일 쓰기 권한만 있으면 됩니다. | + +## Pro Tips + +- **Pro tip:** HTML과 이미지만 필요하다면 `info.ResourceType == ResourceType.Image`를 확인하고 스크립트나 폰트는 건너뛰어 ZIP 크기를 최소화하세요. +- **Watch out for:** 일부 사이트는 자동화된 요청을 차단합니다. 403 오류가 발생하면 `HtmlLoadOptions`에 사용자 정의 `User-Agent`를 설정하세요. +- **Tip:** ZIP을 만든 뒤 ASP.NET 컨트롤러에서 `FileResult`로 바로 반환하면 사용자에게 원클릭 **download html as zip** 버튼을 제공할 수 있습니다. + +## Conclusion + +이제 Aspose.Html과 **커스텀 리소스 핸들러**를 사용해 **save html as zip**을 구현하는 완전한, 프로덕션 수준의 방법을 알게 되었습니다. 任意의 URL을 로드하고 `ZipSaveOptions`를 설정한 뒤, 핸들러가 스트림을 제공하도록 하면 **convert url to zip**, **download html as zip**, **save webpage resources**를 몇 줄의 C# 코드만으로 처리할 수 있습니다. + +스트림을 디스크, 클라우드 스토리지, 혹은 데이터베이스에 저장하는 등 다양한 방식으로 실험해 보세요. 패턴은 동일하고, 결과는 언제나 배포, 캐시, 영구 보관이 가능한 깔끔한 아카이브가 됩니다. + +--- + +![Diagram illustrating the save html as zip workflow – from loading a URL to producing a ZIP file](/images/save-html-as-zip.png) + +*Image alt text:* **save html as zip workflow diagram** + +*이미지 대체 텍스트:* **HTML을 ZIP으로 저장하는 워크플로우 다이어그램** + +이 튜토리얼이 도움이 되었다면 댓글을 남기거나, 팀원과 공유하거나, 유틸리티 스크립트를 보관하고 있는 레포에 별표를 달아 주세요. Happy coding! + +{{< /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/korean/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/korean/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..1eca3dd14 --- /dev/null +++ b/html/korean/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-04-19 +description: C#에서 Aspose.HTML을 사용하여 웹페이지를 zip으로 저장합니다. URL을 zip으로 변환하고, HTML을 zip으로 + 내보내며, 간단한 코드 예제로 웹페이지를 zip으로 다운로드하는 방법을 배워보세요. +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: ko +og_description: C#에서 Aspose.HTML을 사용해 웹페이지를 zip 파일로 저장합니다. 이 가이드는 URL을 zip으로 변환하고, + HTML을 zip으로 내보내며, 몇 단계만으로 웹페이지를 zip으로 다운로드하는 방법을 보여줍니다. +og_title: Aspose.HTML로 웹페이지를 ZIP으로 저장하기 – 완전 C# 튜토리얼 +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: Aspose.HTML로 웹페이지를 ZIP으로 저장하기 – 완전 C# 튜토리얼 +url: /ko/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose.HTML을 사용한 웹페이지 ZIP 저장 – 완전 C# 튜토리얼 + +오프라인 보관, 자동 테스트, 혹은 사이트 스냅샷을 배포하고 싶을 때 **웹페이지를 ZIP으로 저장**해야 하나요? 당신만 그런 것이 아닙니다. 이 튜토리얼에서는 **URL을 ZIP으로 변환**, **HTML을 ZIP으로 내보내기**, 그리고 **웹페이지를 ZIP으로 다운로드**하는 방법을 몇 줄의 깔끔한 C# 코드로 살펴보겠습니다. + +프로젝트 설정부터 최종 ZIP 파일 생성까지 모두 다루며, 공식 문서에는 없는 실용적인 팁도 함께 제공합니다. 끝까지 따라오면 필요할 때마다 **HTML에서 ZIP을 생성**할 수 있는 재사용 가능한 솔루션을 얻게 됩니다. + +## 준비 사항 + +- **.NET 6.0** (또는 최신 .NET 버전) – Aspose.HTML은 .NET Core와 .NET Framework 모두에서 동작합니다. +- **Aspose.HTML for .NET** NuGet 패키지 – `Install-Package Aspose.HTML`. +- 기본적인 C# 경험 – `Console.WriteLine` 정도 작성할 수 있으면 충분합니다. +- 초기 다운로드를 위한 인터넷 연결이 가능한 머신 (ZIP이 생성된 후에는 코드가 오프라인에서도 동작합니다). + +추가 SDK, 헤드리스 브라우저 없이 순수 .NET과 Aspose.HTML만 있으면 됩니다. + +![웹페이지를 zip으로 저장하는 Aspose.HTML 사용 예시](save-webpage-as-zip.png "웹페이지를 zip으로 저장하는 워크플로우 다이어그램") + +## 웹페이지를 ZIP으로 저장 – 개요 + +전체 흐름은 크게 세 부분으로 구성됩니다: + +1. **맞춤형 `ResourceHandler`** – Aspose.HTML이 외부 리소스(이미지, CSS, 스크립트)를 어디에 기록할지 알려줍니다. +2. **`ZipSaveOptions`** – 핸들러를 ZIP 아카이브에 연결하고 렌더링 옵션(안티앨리어싱, 폰트 힌트 등)을 조정합니다. +3. **`HTMLDocument.Save` 호출** – 모든 작업을 한 번에 수행해 페이지와 자산을 ZIP 파일에 스트리밍합니다. + +이게 전부입니다. 무거운 작업은 Aspose.HTML이 처리하므로, 저수준 스트림을 직접 다루는 대신 “왜”, “언제”에 집중하면 됩니다. + +--- + +## 1단계: 프로젝트 설정 및 Aspose.HTML 추가 + +먼저 새 콘솔 프로젝트를 만들거나 기존 앱에 코드를 추가합니다. 터미널에서 다음을 실행하세요: + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +`Aspose.HTML` 패키지는 `HTMLDocument`, `ZipSaveOptions`, `ImageRenderingOptions`, 그리고 추상 클래스 `ResourceHandler` 등 필요한 모든 타입을 제공합니다. + +> **프로 팁:** .NET Framework를 대상으로 한다면 `dotnet` 명령 대신 Visual Studio의 NuGet 패키지 관리자 UI를 사용해 동일한 DLL을 추가하면 됩니다. + +--- + +## 2단계: 맞춤형 `ZipHandler` 리소스 핸들러 만들기 + +Aspose.HTML은 페이지를 파싱하면서 발견하는 모든 외부 파일에 대해 `HandleResource`를 호출합니다. 이 메서드를 오버라이드하면 각 리소스를 파일 시스템이 아닌 ZIP 엔트리로 직접 보낼 수 있습니다. + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### 맞춤 핸들러가 필요한 이유 + +핸들러가 없으면 Aspose.HTML은 리소스를 HTML 파일이 있는 디스크 위치에 저장합니다. `ZipArchive`에 넣으면 **모든 것이 하나의 번들**에 포함돼 배포하거나 다른 서비스에서 추출하기에 최적입니다. + +--- + +## 3단계: 이미지 렌더링 옵션과 함께 `ZipSaveOptions` 구성 + +이제 핸들러를 저장 옵션에 연결하고, 스크린샷이나 PDF‑유사 변환 시 시각적 품질을 높이는 몇 가지 렌더링 옵션을 켭니다. + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **왜 안티앨리어싱과 힌팅을 활성화하나요?** 페이지를 비트맵(예: 썸네일)으로 렌더링할 때 이 플래그들이 계단 현상을 줄이고 작은 글꼴을 읽기 쉽게 만들어 줍니다—특히 이미지를 다른 곳에 삽입할 경우 중요합니다. + +--- + +## 4단계: HTML 문서 로드 및 ZIP 저장 + +핸들러와 옵션이 준비되었으면, 원격 페이지를 `HTMLDocument`에 URL만 전달하면 됩니다. `Save` 메서드가 호출될 때마다 모든 연결된 자산에 대해 `HandleResource`가 실행됩니다. + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +이 시점에서 `zipStream`은 다음을 포함하는 **완전한 ZIP 아카이브**를 보유합니다: + +- `index.html` (메인 페이지) +- `` 태그가 가리키는 모든 CSS 파일 +- 페이지를 오프라인에서 렌더링하는 데 필요한 이미지, 폰트, JavaScript 파일 + +### 예외 상황 및 변형 + +| 상황 | 조정 방법 | +|------|-----------| +| **인증이 필요한 경우** | `HTMLDocument(string url, LoadOptions options)` 생성자를 사용하고 `options.Credentials`를 설정합니다. | +| **매우 큰 페이지 (>100 MB)** | 메모리 사용량을 줄이기 위해 `MemoryStream` 대신 `FileStream`에 직접 기록합니다. | +| **“//” 로 시작하는 상대 URL** | 핸들러가 자동으로 정규화합니다. `BaseUrl`만 올바르게 설정하면 됩니다. | +| **ZIP 내부에 맞춤 폴더 구조가 필요할 때** | `HandleResource` 내부에서 `info.Path`를 수정해 원하는 엔트리 경로를 지정합니다. | + +--- + +## 5단계: ZIP 파일 저장 및 결과 확인 + +마지막으로 메모리 상의 ZIP을 디스크에 씁니다. 네트워크 전송이 목적이라면 이 단계는 생략 가능하지만, 파일을 직접 확인하면 검증이 쉽습니다. + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**예상 결과:** `result.zip`을 열면 `index.html` 파일이 포함되어 있으며, 오프라인 브라우저에서 열었을 때 다운로드 당시 접근 가능한 모든 외부 자산이 존재한다면 실시간 페이지와 동일하게 표시됩니다. + +--- + +## 자주 묻는 질문 + +**Q: lazy‑load 이미지가 있는 페이지에도 적용되나요?** +A: 초기 DOM 탐색 중에 이미지가 요청되면 포함됩니다. 스크립트가 페이지 로드 후에 이미지를 로드한다면 `document.Render()`를 수동으로 호출해 렌더링을 트리거한 뒤 `Save`해야 할 수 있습니다. + +**Q: ZIP 압축을 더 강하게 할 수 있나요?** +A: 기본 `ZipArchive`는 기본 압축 레벨을 사용합니다. 더 높은 압축률이 필요하면 `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)` 형태로 인스턴스를 생성하세요. + +**Q: 비밀번호로 보호된 ZIP이 필요하면?** +A: 내장 `ZipArchive`는 암호화를 지원하지 않습니다. 이 경우 Aspose.HTML이 작업을 마친 뒤 출력 스트림을 `SharpZipLib` 같은 서드파티 라이브러리로 전달해 암호화하면 됩니다. + +--- + +## 프로덕션 사용을 위한 팁 + +- **`ZipHandler` 재사용** – 배치 처리 시 여러 페이지를 순차적으로 처리하려면 각 실행 사이에 기본 `MemoryStream`만 초기화하면 됩니다. +- **로그** + +{{< /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/polish/net/generate-jpg-and-png-images/_index.md b/html/polish/net/generate-jpg-and-png-images/_index.md index fff5f7a92..973c8c0dc 100644 --- a/html/polish/net/generate-jpg-and-png-images/_index.md +++ b/html/polish/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Naucz się używać Aspose.HTML dla .NET do manipulowania dokumentami HTML, konw Dowiedz się, jak włączyć antyaliasing przy konwersji dokumentów DOCX do formatów PNG i JPG przy użyciu Aspose.HTML. ### [Konwertuj docx do png – utwórz archiwum zip w C# – samouczek](./convert-docx-to-png-create-zip-archive-c-tutorial/) Dowiedz się, jak konwertować pliki DOCX na obrazy PNG i spakować je do archiwum ZIP przy użyciu C# i Aspose.HTML. +### [Jak renderować HTML do PNG – Kompletny przewodnik C#](./how-to-render-html-to-png-complete-c-guide/) +Pełny przewodnik w C#, jak przekształcić kod HTML w obraz PNG przy użyciu Aspose.HTML. ## Wniosek diff --git a/html/polish/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/polish/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..9dc0034f9 --- /dev/null +++ b/html/polish/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,159 @@ +--- +category: general +date: 2026-04-19 +description: Jak renderować HTML do PNG przy użyciu Aspose.Html. Dowiedz się, jak + konwertować HTML na PNG, zapisywać HTML jako PNG i tworzyć obraz z HTML w kilka + minut. +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: pl +og_description: Jak renderować HTML do PNG przy użyciu Aspose.Html. Postępuj zgodnie + z tym krok po kroku poradnikiem, aby konwertować HTML na PNG, zapisać HTML jako + PNG i utworzyć obraz z HTML. +og_title: Jak renderować HTML do PNG – Kompletny przewodnik C# +tags: +- Aspose.Html +- C# +title: Jak renderować HTML do PNG – Kompletny przewodnik C# +url: /pl/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak renderować HTML do PNG – Kompletny przewodnik C# + +Zastanawiałeś się kiedyś **jak renderować HTML** do pliku graficznego bez uruchamiania przeglądarki? Nie jesteś sam. W wielu projektach — miniaturki e‑maili, generowanie PDF‑ów czy po prostu szybkie podglądy — potrzebujesz **konwertować HTML do PNG** w locie. + +W tym tutorialu przeprowadzimy Cię krok po kroku przez praktyczne rozwiązanie z użyciem Aspose.Html dla .NET, obejmując wszystko od instalacji biblioteki po dopasowanie podpowiedzi tekstowych dla wyraźnych małych czcionek. Po zakończeniu będziesz w stanie **zapisać HTML jako PNG**, **utworzyć obraz z HTML** i nawet dostosować opcje renderowania w sytuacjach brzegowych. + +## Co będzie potrzebne + +- **.NET 6+** (lub .NET Framework 4.6.2+). API działa tak samo na wszystkich środowiskach uruchomieniowych. +- Pakiet NuGet **Aspose.Html** – `Install-Package Aspose.Html`. +- Prosty plik HTML (np. `article.html`), który chcesz przekształcić w obraz. +- Visual Studio, Rider lub dowolny edytor, którego używasz. + +To wszystko — żadnych dodatkowych zależności, żadnego headless Chrome, tylko czysty C#. + +## Krok 1: Zainstaluj Aspose.Html i dodaj przestrzenie nazw + +Najpierw pobierz bibliotekę z NuGet. Otwórz konsolę Package Manager i uruchom: + +```powershell +Install-Package Aspose.Html +``` + +Po instalacji dodaj wymagane dyrektywy `using` na początku pliku: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +Te przestrzenie nazw dają dostęp do modelu dokumentu, renderowania obrazu oraz szczegółowych opcji tekstowych, które wykorzystamy później. + +> **Pro tip:** Jeśli używasz pliku .csproj, możesz również ręcznie dodać ``. + +## Krok 2: Załaduj dokument HTML + +Potrzebujesz instancji `HTMLDocument`, która wskazuje na plik źródłowy. Aspose.Html potrafi czytać z ścieżki, strumienia lub nawet URL. + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Dlaczego to ważne:** Załadowanie dokumentu raz utrzymuje niskie zużycie pamięci. Jeśli planujesz renderować wiele stron, ponownie używaj tego samego obiektu `HTMLDocument`, kiedy to możliwe. + +## Krok 3: Dostosuj renderowanie tekstu dla małych czcionek + +Podczas renderowania drobnego tekstu często pojawiają się rozmyte krawędzie. Włączenie hintingu nakazuje rasteryzatorowi wyrównać glify do granic pikseli, co znacząco poprawia czytelność. + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +Możesz także kontrolować anti‑aliasing, renderowanie subpikselowe lub nawet określić własną kolekcję czcionek — przydatne, gdy Twój HTML odwołuje się do czcionek webowych. + +## Krok 4: Skonfiguruj opcje renderowania obrazu + +Teraz powiążemy `TextOptions` z ustawieniami obrazu. Możesz także ustawić kolor tła, DPI lub format obrazu (PNG, JPEG, BMP). + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **Przypadek brzegowy:** Jeśli Twój HTML jest szerszy niż typowe wymiary ekranu, rozważ ustawienie `Width` i `Height` w `ImageRenderingOptions`, aby uniknąć gigantycznych plików PNG. + +## Krok 5: Renderuj HTML do pliku PNG + +Na koniec wywołaj `RenderToImage`. Przeciążenie metody, którego używamy, pozwala określić ścieżkę wyjściową oraz opcje, które właśnie skonfigurowaliśmy. + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +Gdy uruchomisz program, Aspose.Html parsuje znacznik, stosuje CSS, układa stronę i rasteryzuje ją do pliku `article.png`. Otwórz go w dowolnym przeglądarce obrazów — zobaczysz pikselowo‑idealny zrzut Twojego oryginalnego HTML. + +![how to render html as PNG using Aspose.Html](render-html-png.png) + +*Tekst alternatywny obrazu: **jak renderować html** jako PNG przy użyciu Aspose.Html* + +## Bonus: Obsługa wielu stron lub skalowanie + +Czasami pojedynczy plik HTML zawiera kilka sekcji `` (np. do drukowania). Możesz przeiterować `htmlDoc.Pages` i renderować każdą stronę osobno: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +Jeśli potrzebujesz miniaturki zamiast obrazu pełnowymiarowego, dostosuj `imgOpts.Width` i `imgOpts.Height` przed renderowaniem. Biblioteka automatycznie zachowa proporcje. + +--- + +## Podsumowanie + +Masz teraz solidny, gotowy do produkcji przepis na **renderowanie HTML** do obrazu PNG przy użyciu Aspose.Html. Od instalacji pakietu, przez ładowanie markupu, precyzyjne dostrajanie hintingu tekstu, po ostateczne wywołanie `RenderToImage` — każdy krok został omówiony. + +Dzięki tej wiedzy możesz **konwertować HTML do PNG**, **zapisywać HTML jako PNG** i **tworzyć obraz z HTML** w dowolnej aplikacji .NET — czy to usługa webowa generująca miniaturki, czy narzędzie desktopowe archiwizujące strony internetowe. + +Następnie możesz zgłębiać tematy pokrewne, takie jak **renderowanie HTML do obrazu** w innych formatach (JPEG, BMP) lub osadzanie PNG w PDF przy użyciu Aspose.PDF. Warto też poeksperymentować ze skalowaniem DPI dla wydruków wysokiej rozdzielczości albo podać dynamicznie generowany HTML do tego samego potoku. + +Masz pytania lub nietypowy przypadek użycia? zostaw komentarz poniżej i powodzenia w renderowaniu! + +{{< /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/polish/net/html-extensions-and-conversions/_index.md b/html/polish/net/html-extensions-and-conversions/_index.md index 5b553b002..dd1e3dd70 100644 --- a/html/polish/net/html-extensions-and-conversions/_index.md +++ b/html/polish/net/html-extensions-and-conversions/_index.md @@ -61,6 +61,8 @@ Dowiedz się, jak konwertować HTML na Markdown w .NET przy użyciu Aspose.HTML Konwertuj HTML na MHTML w .NET za pomocą Aspose.HTML — przewodnik krok po kroku dotyczący wydajnej archiwizacji treści internetowych. Dowiedz się, jak używać Aspose.HTML dla .NET do tworzenia archiwów MHTML. ### [Konwersja HTML do PNG w .NET za pomocą Aspose.HTML](./convert-html-to-png/) Dowiedz się, jak używać Aspose.HTML dla .NET do manipulowania dokumentami HTML i konwertowania ich. Przewodnik krok po kroku do efektywnego rozwoju .NET. +### [Konwertuj HTML do PNG w C# – Renderuj HTML jako obraz](./convert-html-to-png-in-c-render-html-as-image/) +Dowiedz się, jak w C# renderować HTML jako obraz PNG przy użyciu Aspose.HTML – kompletny przewodnik krok po kroku. ### [Konwertuj HTML do TIFF w .NET za pomocą Aspose.HTML](./convert-html-to-tiff/) Dowiedz się, jak konwertować HTML do TIFF za pomocą Aspose.HTML dla .NET. Postępuj zgodnie z naszym przewodnikiem krok po kroku, aby uzyskać skuteczną optymalizację treści internetowych. ### [Konwersja HTML do XPS w .NET za pomocą Aspose.HTML](./convert-html-to-xps/) @@ -73,6 +75,10 @@ Dowiedz się, jak stworzyć dokument HTML z formatowanym tekstem i wyeksportowa Zapisz dokument HTML jako archiwum ZIP w C# przy użyciu Aspose.HTML – kompletny przewodnik krok po kroku. ### [Zapisz HTML do ZIP w C# – Kompletny przykład w pamięci](./save-html-to-zip-in-c-complete-in-memory-example/) Zapisz dokument HTML do archiwum ZIP w pamięci przy użyciu Aspose.HTML w C#. +### [Zapisz HTML jako ZIP z niestandardowym obsługiwaczem zasobów – przewodnik krok po kroku](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +Dowiedz się, jak zapisać dokument HTML jako archiwum ZIP, używając własnego obsługiwacza zasobów w C# – kompletny przewodnik krok po kroku. +### [Zapisz stronę internetową jako ZIP przy użyciu Aspose.HTML – Kompletny samouczek C#](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +Dowiedz się, jak zapisać stronę internetową jako archiwum ZIP w C# przy użyciu Aspose.HTML – pełny przewodnik krok po kroku. ## Wniosek diff --git a/html/polish/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/polish/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..ac4a69dd4 --- /dev/null +++ b/html/polish/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-04-19 +description: Konwertuj HTML na PNG w C# przy użyciu Aspose.HTML – szybki przewodnik, + jak renderować HTML jako obraz i zapisać wykres jako PNG z antyaliasingiem. +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: pl +og_description: Szybko konwertuj HTML na PNG w C#. Dowiedz się, jak renderować HTML + jako obraz, zapisać wykres jako PNG oraz generować PNG z HTML przy użyciu Aspose.HTML. +og_title: Konwertuj HTML do PNG w C# – Renderuj HTML jako obraz +tags: +- Aspose.HTML +- C# +- Image Processing +title: Konwertuj HTML na PNG w C# – Renderuj HTML jako obraz +url: /pl/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Konwertowanie HTML do PNG w C# – Renderowanie HTML jako obrazu + +Czy kiedykolwiek potrzebowałeś **konwertować HTML do PNG** w C#, ale nie wiedziałeś, która biblioteka da Ci wyraźny rezultat? Nie jesteś sam. Niezależnie od tego, czy eksportujesz dynamiczny wykres, zamieniasz szablon e‑maila w miniaturkę, czy po prostu potrzebujesz statycznego zrzutu strony internetowej, możliwość **renderowania HTML jako obrazu** to przydatny trik w każdym zestawie narzędzi dewelopera. + +W tym tutorialu przejdziemy krok po kroku przez cały proces przekształcania pliku HTML w plik PNG przy użyciu Aspose.HTML. Po zakończeniu będziesz mógł **zapisać wykres jako PNG**, **generować PNG z HTML** i nawet dostroić ustawienia antyaliasingu, aby uzyskać wykończony wygląd. Bez zbędnych wstępów — kompletny, gotowy do uruchomienia przykład, który możesz od razu wkleić do swojego projektu. + +## Czego będziesz potrzebował + +Zanim zaczniemy, upewnij się, że masz następujące elementy: + +- **.NET 6.0** lub nowszy (kod działa także na .NET Framework 4.6+). +- **Aspose.HTML for .NET** – możesz go pobrać z NuGet za pomocą `Install-Package Aspose.HTML`. +- Prosty plik HTML (np. `chart.html`) zawierający znacznik, który chcesz przechwycić. +- IDE według własnego wyboru — Visual Studio, Rider lub nawet VS Code będą odpowiednie. + +To wszystko. Bez dodatkowych zależności, bez przeglądarek headless, tylko jedna, dobrze udokumentowana biblioteka. + +![Przykład konwersji HTML do PNG](example.png "Wynik konwersji HTML do PNG") + +## Krok 1: Załaduj dokument HTML + +Pierwszą rzeczą, którą musimy zrobić, jest wskazanie Aspose.HTML na plik źródłowy. Traktuj klasę `HTMLDocument` jak płótno, które przechowuje wszystko, co biblioteka później namaluje na bitmapę. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*Dlaczego to ważne:* Załadowanie dokumentu oddziela fazę parsowania od fazy renderowania. Daje silnikowi szansę rozwiązać CSS, skrypty i obrazy, zanim poprosimy go o wygenerowanie PNG. Jeśli pominiesz ten krok i spróbujesz renderować surowy znacznik, otrzymasz pusty obraz lub brakujące style. + +## Krok 2: Skonfiguruj opcje renderowania obrazu + +Domyślnie Aspose.HTML wygeneruje przyzwoite PNG, ale często chcesz uzyskać gładsze krawędzie — szczególnie w przypadku wykresów i grafiki wektorowej. W tym miejscu wkracza `ImageRenderingOptions`. + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*Wskazówka:* Jeśli pracujesz z wyświetlaczami o wysokiej rozdzielczości (high‑DPI), zwiększ proporcjonalnie `Width` i `Height`, a PNG będzie większy. Zawsze możesz później zmniejszyć go w edytorze obrazu. Ustawienie koloru tła zapobiega dziwnemu wyglądowi przezroczystych PNG na ciemnych stronach. + +## Krok 3: Renderuj HTML do pliku PNG + +Teraz następuje najcięższa część. Metoda `RenderToImage` przyjmuje ścieżkę wyjściową oraz opcje, które właśnie zdefiniowaliśmy, a następnie zapisuje PNG na dysku. + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +Gdy ta linia zakończy działanie, znajdziesz `chart.png` w docelowym folderze. Otwórz go — czy wykres wygląda ostro? Jeśli włączyłeś antyaliasing, linie powinny być gładkie, a tekst wyraźny. + +### Weryfikacja wyniku + +Możesz szybko zweryfikować obraz programowo: + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +Jeśli konsola wypisze nie‑zerowe wymiary i obsługiwany format pikseli (np. `Format32bppArgb`), udało Ci się **convert html to png**. + +## Renderowanie HTML jako obrazu – Opcje zaawansowane + +Do tej pory omówiliśmy podstawy, ale w rzeczywistych scenariuszach często potrzebna jest większa kontrola. Poniżej kilka typowych poprawek, które mogą się przydać. + +### Dostosowanie DPI dla wydruków wysokiej jakości + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +Wyższe DPI jest przydatne, gdy planujesz osadzić PNG w PDF lub wydrukować go na papierze. + +### Obsługa zasobów zewnętrznych + +Jeśli Twój HTML odwołuje się do zewnętrznych plików CSS, czcionek lub obrazów hostowanych na serwerze, upewnij się, że środowisko wykonawcze może do nich dotrzeć. Możesz ustawić własny `BaseUrl`: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +To mówi Aspose.HTML, aby rozwiązywał względne adresy URL względem podanego adresu bazowego. + +### Konwersja wielu stron + +Aspose.HTML może renderować każdą stronę wielostronicowego dokumentu HTML do osobnych plików PNG: + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +W ten sposób możesz **save chart as PNG** dla każdej strony bez ręcznego przycinania wyniku. + +## Zapisz wykres jako PNG – Typowe pułapki i jak ich unikać + +1. **Brakujące czcionki:** Jeśli HTML używa niestandardowej czcionki, której nie ma na serwerze, renderowany PNG przełączy się na domyślną czcionkę. Zainstaluj czcionkę na maszynie lub osadź ją za pomocą `@font-face` w CSS. +2. **Duże pliki:** Renderowanie ogromnego pliku HTML może zużywać dużo pamięci. Rozważ podzielenie treści na części lub zmniejszenie wymiarów obrazu. +3. **Przezroczyste tła:** Domyślnie PNG mogą być przezroczyste. Jeśli potrzebujesz nieprzezroczystego tła (np. dla miniatur e‑maili), ustaw `BackgroundColor`, jak pokazano wcześniej. +4. **Wykonywanie skryptów:** Aspose.HTML nie wykonuje JavaScriptu. Jeśli Twój wykres jest tworzony przy pomocy biblioteki po stronie klienta, takiej jak Chart.js, musisz najpierw wyrenderować wykres do statycznego elementu `` lub użyć przeglądarki headless. + +## Pełny działający przykład + +Poniżej znajduje się kompletny program, który możesz skopiować i wkleić do aplikacji konsolowej. Zawiera wszystkie kroki, obsługę błędów oraz opcjonalne udoskonalenia omówione powyżej. + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +Uruchom program, a zobaczysz komunikat potwierdzający oraz wymiary obrazu. Otwórz `chart.png` w dowolnym przeglądarce, aby potwierdzić, że wykres wygląda dokładnie tak jak oryginalny HTML. + +## Podsumowanie + +Masz teraz solidną bazę, + +{{< /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/polish/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/polish/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..e90dd4891 --- /dev/null +++ b/html/polish/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-04-19 +description: Dowiedz się, jak zapisać HTML jako ZIP przy użyciu Aspose.Html i własnego + obsługującego zasoby. Odkryj także, jak przekształcić URL w ZIP i pobrać HTML jako + ZIP w kilka minut. +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: pl +og_description: 'Zapisywanie HTML jako ZIP stało się proste: użyj Aspose.Html, własnego + obsługiwacza zasobów i ZipSaveOptions, aby przekonwertować dowolny adres URL na + pobieralne archiwum ZIP.' +og_title: Zapisz HTML jako ZIP z niestandardowym obsługiwaczem zasobów – szybki poradnik +tags: +- Aspose.Html +- C# +- Web scraping +title: zapisz HTML jako ZIP z niestandardowym obsługiwaczem zasobów – przewodnik krok + po kroku +url: /pl/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# zapisz html jako zip – Pełny poradnik + +Kiedykolwiek potrzebowałeś **zapisz html jako zip**, aby móc wysłać całą stronę wraz z obrazami, CSS i skryptami w jednym porządnym pakiecie? Być może tworzysz crawler, który archiwizuje artykuły, albo po prostu chcesz szybki przycisk „pobierz html jako zip” dla swoich użytkowników. Tak czy inaczej, prawdopodobnie zastanawiasz się, jak to zrobić bez pisania milionów linii kodu obsługującego I/O plików. + +Dobre wieści: Aspose.Html robi to w mig, a dzięki **niestandardowemu obsługiwaczowi zasobów** możesz dokładnie określić, gdzie każdy strumień zasobu ma trafić. W tym przewodniku pokażemy także, jak **przekształcić url do zip**, jak **pobrać html jako zip** oraz jak **zapisać zasoby strony** do użytku offline — wszystko w jednym, samodzielnym programie C#. + +## Czego się nauczysz + +- Zainstalujesz bibliotekę Aspose.Html (NuGet sprawia, że to proste). +- Napiszesz `ResourceHandler`, który dostarcza `Stream` dla każdego zasobu, którego Aspose.Html chce zapisać. +- Załadujesz zdalną stronę (lub plik lokalny) i powiesz Aspose.Html, aby spakował wszystko do archiwum ZIP. +- Zweryfikujesz, że powstały `output.zip` zawiera plik HTML oraz wszystkie powiązane zasoby. + +Bez zewnętrznych narzędzi, bez ręcznego majsterkowania na plikach zip — czysty, skompilowany kod, który możesz wrzucić do dowolnego projektu .NET. + +## Wymagania wstępne + +| Wymaganie | Dlaczego jest ważny | +|-------------|----------------| +| .NET 6.0 lub nowszy (kod działa także na .NET Framework 4.7+) | Aspose.Html celuje w nowoczesne środowiska; starsze frameworki mogą nie mieć niektórych API. | +| Visual Studio 2022 (lub dowolne ulubione IDE) | Przydatne do debugowania i podglądu wygenerowanego ZIP. | +| Dostęp do Internetu dla przykładowego URL (`https://example.com`) | Pobierzemy żywą stronę, aby zademonstrować **przekształcenie url do zip**. | +| Pakiet NuGet `Aspose.Html` (v23.12 lub nowszy) | Biblioteka dostarcza `HTMLDocument`, `ZipSaveOptions` oraz klasę bazową `ResourceHandler`. | + +Jeśli masz już projekt .NET, po prostu uruchom: + +```bash +dotnet add package Aspose.Html +``` + +To wszystko, co musisz skonfigurować. + +## Krok 1: Utwórz własny obsługiwacz zasobów + +Serce rozwiązania to klasa dziedzicząca po `ResourceHandler`. Aspose.Html wywołuje `HandleResource` dla każdego pliku, który chce zapisać — HTML, obrazy, CSS, JavaScript, cokolwiek. Zwracając `Stream`, decydujesz, gdzie trafią dane. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**Dlaczego własny handler?** +Ponieważ starszy interfejs `IOutputStorage` jest przestarzały, a `ResourceHandler` daje pełną kontrolę nad miejscem docelowym. Pozwala także przejrzeć `ResourceInfo` — przydatne, jeśli chcesz zachować tylko obrazy i pominąć czcionki. + +## Krok 2: Załaduj dokument HTML (lub przekształć URL do Zip) + +Aspose.Html może ładować z URL, ścieżki pliku lub surowego ciągu HTML. Tutaj demonstrujemy ładowanie żywej strony, co jest typowym przypadkiem przy **pobieraniu html jako zip**. + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +Jeśli masz już źródło HTML w zmiennej, po prostu przekaż je do konstruktora: + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## Krok 3: Podłącz handler do ZipSaveOptions + +`ZipSaveOptions` określa, *jak* Aspose.Html ma utworzyć plik ZIP. Kluczową właściwością jest `OutputStorage`, którą ustawiamy na naszą instancję `MyHandler`. + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +Możesz także dostosować poziom kompresji, nazwy folderów w archiwum lub nawet dołączyć plik manifestu — szczegóły w dokumentacji Aspose, ale domyślne ustawienia działają świetnie w większości scenariuszy. + +## Krok 4: Zapisz dokument jako archiwum ZIP + +Teraz dzieje się magia. Metoda `Save` iteruje po wszystkich zasobach, wywołuje `HandleResource` i zapisuje bajty do zwróconego strumienia. Ponieważ nasz handler zwraca nowy `MemoryStream` przy każdym wywołaniu, Aspose.Html później zbiera wszystkie te strumienie i pakuje je do `output.zip`. + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**Co zobaczysz:** +- `output.zip` w katalogu głównym projektu. +- Wewnątrz ZIP: `index.html` (główna strona) oraz podfoldery takie jak `images/`, `css/`, `scripts/` zawierające dokładnie te pliki, które przeglądarka by zażądała. + +## Krok 5: Zweryfikuj wynik (opcjonalnie, ale zalecane) + +Krótka kontrola zapewnia, że naprawdę **zapisałeś zasoby strony** poprawnie. + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +Powinieneś zobaczyć wpisy dla `index.html`, wszystkich powiązanych obrazów (`logo.png`), plików CSS i JavaScript. Jeśli czegoś brakuje, sprawdź logikę `ResourceInfo` w `MyHandler`. + +## Pełny działający przykład + +Łącząc wszystko razem, oto kompletny program, który możesz wkleić do aplikacji konsolowej. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Uruchom program (`dotnet run`), a otrzymasz schludny `output.zip`. Otwórz go dowolnym menedżerem archiwów i przeglądaj zapisany podgląd offline — dokładnie to, czego potrzebujesz do funkcji **pobierz html jako zip**. + +## Częste pytania i sytuacje brzegowe + +| Pytanie | Odpowiedź | +|----------|--------| +| *Co zrobić, jeśli chcę przechowywać ZIP w Azure Blob Storage?* | Zastąp `MemoryStream` strumieniem zapisującym bezpośrednio do blobu (np. `CloudBlockBlob.OpenWrite()`). Abstrakcja handlera to upraszcza. | +| *Czy mogę odfiltrować niektóre zasoby?* | Tak. W `HandleResource` sprawdź `info.ResourceType` lub `info.Url`. Zwróć `null`, aby pominąć zasób, lub zwróć strumień, który nic nie zapisuje. | +| *Czy ZIP może być zabezpieczony hasłem?* | `ZipSaveOptions` posiada właściwość `Password`. Ustaw ją przed wywołaniem `Save`, jeśli potrzebujesz szyfrowania. | +| *Co z dużymi stronami zawierającymi dziesiątki megabajtów zasobów?* | Używanie `MemoryStream` dla wszystkiego może wyczerpać RAM. Przejdź na `FileStream`, który zapisuje do tymczasowego folderu, a potem pozwól Aspose.Html skompresować te pliki. | +| *Czy to działa na .NET Core w systemie Linux?* | Oczywiście. Aspose.Html jest wieloplatformowy; wystarczy, że środowisko ma uprawnienia do zapisu plików. | + +## Porady profesjonalistów + +- **Pro tip:** Jeśli zależy Ci tylko na HTML i obrazach, sprawdź `info.ResourceType == ResourceType.Image` i pomiń skrypty lub czcionki, aby ZIP był mały. +- **Uwaga:** niektóre witryny blokują automatyczne żądania. Ustaw własny `User-Agent` w `HtmlLoadOptions`, jeśli otrzymasz błąd 403. +- **Tip:** Po utworzeniu ZIP możesz go serwować bezpośrednio z kontrolera ASP.NET przy użyciu `FileResult`, dając użytkownikom jednoprzciiskowy przycisk **pobierz html jako zip**. + +## Podsumowanie + +Masz teraz solidny, gotowy do produkcji sposób na **zapisz html jako zip** przy użyciu Aspose.Html i **niestandardowego obsługiwacza zasobów**. Ładując dowolny URL, konfigurując `ZipSaveOptions` i pozwalając handlerowi dostarczać strumienie, możesz **przekształcić url do zip**, **pobrać html jako zip** oraz **zapisać zasoby strony** w kilku linijkach C#. + +Śmiało eksperymentuj — zapisuj strumienie na dysk, w chmurze lub nawet w bazie danych. Wzorzec pozostaje ten sam, a rezultat zawsze jest porządnym archiwum, które możesz dystrybuować, buforować lub archiwizować na zawsze. + +--- + +![Diagram illustrating the save html as zip workflow – from loading a URL to producing a ZIP file](/images/save-html-as-zip.png) + +*Tekst alternatywny obrazu:* **diagram przepływu zapisywania html jako zip** + +Jeśli ten poradnik okazał się pomocny, zostaw komentarz, podziel się nim z kolegą lub oznacz gwiazdką repozytorium, w którym trzymasz swoje skrypty. Szczęśliwego kodowania! + +{{< /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/polish/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/polish/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..370bab830 --- /dev/null +++ b/html/polish/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,220 @@ +--- +category: general +date: 2026-04-19 +description: Zapisz stronę internetową jako zip przy użyciu Aspose.HTML w C#. Dowiedz + się, jak przekonwertować URL na zip, wyeksportować HTML do zip oraz pobrać stronę + jako zip za pomocą prostego przykładu kodu. +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: pl +og_description: Zapisz stronę internetową jako zip przy użyciu Aspose.HTML w C#. Ten + przewodnik pokazuje, jak przekonwertować URL na zip, wyeksportować HTML do zip oraz + pobrać stronę jako zip w kilku prostych krokach. +og_title: Zapisz stronę internetową jako ZIP przy użyciu Aspose.HTML – Kompletny samouczek + C# +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: Zapisz stronę internetową jako ZIP przy użyciu Aspose.HTML – kompletny samouczek + C# +url: /pl/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Zapisz stronę internetową jako ZIP przy użyciu Aspose.HTML – Kompletny samouczek C# + +Potrzebujesz **zapisać stronę internetową jako zip** w celu archiwizacji offline, testów automatycznych lub po prostu udostępnić migawkę witryny? Nie jesteś sam. W tym samouczku przejdziemy przez to, jak **konwertować URL na zip**, **eksportować HTML do zip**, a nawet **pobrać stronę internetową jako zip** przy użyciu kilku czystych linii C#. + +Omówimy wszystko, od konfiguracji projektu po ostateczny plik ZIP na dysku, i dorzucimy kilka praktycznych wskazówek, których nie znajdziesz w oficjalnej dokumentacji. Po zakończeniu będziesz mieć rozwiązanie wielokrotnego użytku, które może **tworzyć zip z html**, kiedy tylko tego potrzebujesz. + +## Czego będziesz potrzebować + +- **.NET 6.0** (lub dowolna nowsza wersja .NET) – Aspose.HTML działa zarówno z .NET Core, jak i .NET Framework. +- **Aspose.HTML for .NET** pakiet NuGet – `Install-Package Aspose.HTML`. +- Trochę doświadczenia w C# – jeśli potrafisz napisać `Console.WriteLine`, jesteś gotowy. +- Maszyna z dostępem do Internetu do początkowego pobrania (sam kod działa offline po utworzeniu ZIP). + +Bez dodatkowych SDK, bez przeglądarek headless, tylko czysty .NET i Aspose.HTML. + +![Ilustracja zapisywania strony internetowej jako zip przy użyciu Aspose.HTML](save-webpage-as-zip.png "Diagram pokazujący przepływ zapisywania strony internetowej jako zip") + +## Zapisz stronę internetową jako ZIP – Przegląd + +Na wysokim poziomie proces składa się z trzech elementów: + +1. **Niestandardowy `ResourceHandler`**, który informuje Aspose.HTML, gdzie zapisać każdy zewnętrzny zasób (obrazy, CSS, skrypty). +2. **`ZipSaveOptions`**, które łączy obsługę z archiwum ZIP i pozwala dostosować renderowanie (antyaliasing, wskazówki dotyczące czcionek itp.). +3. **Wywołanie `HTMLDocument.Save`**, które łączy wszystko, przesyłając stronę i wszystkie jej zasoby do pliku ZIP. + +To wszystko. Ciężką pracę wykonuje Aspose.HTML, więc możesz skupić się na „dlaczego” i „kiedy”, zamiast walczyć z niskopoziomowymi strumieniami. + +--- + +## Krok 1: Skonfiguruj projekt i dodaj Aspose.HTML + +Najpierw utwórz nowy projekt konsolowy (lub wstaw kod do istniejącej aplikacji). Otwórz terminal i uruchom: + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +Pakiet `Aspose.HTML` zawiera wszystkie potrzebne typy: `HTMLDocument`, `ZipSaveOptions`, `ImageRenderingOptions` oraz abstrakcyjny `ResourceHandler`. + +> **Pro tip:** Jeśli celujesz w .NET Framework, zamień polecenia `dotnet` na interfejs UI Menedżera Pakietów NuGet w Visual Studio – te same pliki DLL zostaną dodane. + +--- + +## Krok 2: Utwórz niestandardowy obsługujący zasoby `ZipHandler` + +Aspose.HTML wywołuje `HandleResource` dla każdego zewnętrznego pliku, który napotka podczas parsowania strony. Nadpisując tę metodę, możemy kierować każdy zasób do wpisu ZIP zamiast do systemu plików. + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### Dlaczego niestandardowy handler? + +Bez tego Aspose.HTML umieściłby zasoby obok pliku HTML na dysku. Dostarczając `ZipArchive`, utrzymujemy **wszystko w jednym pakiecie** – idealne do dystrybucji lub późniejszego wyodrębniania przez inną usługę. + +--- + +## Krok 3: Skonfiguruj `ZipSaveOptions` z renderowaniem obrazu + +Teraz łączymy handler z opcjami zapisu i włączamy kilka poprawek renderowania, które poprawiają jakość wizualną zrzutów ekranu lub konwersji podobnych do PDF. + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **Dlaczego włączyć antyaliasing i hinting?** Gdy strona jest później renderowana do bitmapy (np. jako miniaturka), te flagi redukują ząbkowane krawędzie i sprawiają, że małe czcionki są czytelne — szczególnie ważne, jeśli planujesz osadzać obrazy w innym miejscu. + +--- + +## Krok 4: Załaduj dokument HTML i zapisz do ZIP + +Gdy handler i opcje są gotowe, załadowanie zdalnej strony jest tak proste, jak przekazanie jej URL do `HTMLDocument`. Metoda `Save` wywoła `HandleResource` dla każdego powiązanego zasobu. + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +W tym momencie `zipStream` zawiera pełne **archiwum ZIP, które zawiera**: + +- `index.html` (główna strona) +- Wszystkie pliki CSS odwołane w tagach `` +- Obrazy, czcionki i pliki JavaScript niezbędne do renderowania strony offline + +### Przypadki brzegowe i warianty + +| Sytuacja | Co dostosować | +|---------------------------------------|-----------------------------------------------------------------------------------| +| **Wymagana autoryzacja** | Użyj `HTMLDocument(string url, LoadOptions options)` i ustaw `options.Credentials`. | +| **Bardzo duże strony (>100 MB)** | Zapisz bezpośrednio do `FileStream` zamiast `MemoryStream`, aby uniknąć dużego zużycia pamięci RAM. | +| **Względne URL zaczynające się od “//”** | Handler automatycznie je normalizuje; wystarczy, że `BaseUrl` jest ustawiony. | +| **Niestandardowa struktura folderów w ZIP** | Zmodyfikuj `info.Path` w `HandleResource` przed utworzeniem wpisu. | + +--- + +## Krok 5: Zapisz plik ZIP i zweryfikuj wynik + +Na koniec zapisujemy ZIP znajdujący się w pamięci na dysk. Ten krok jest opcjonalny, jeśli zamierzasz przesłać strumień przez sieć, ale ułatwia weryfikację. + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**Oczekiwany rezultat:** Po otwarciu `result.zip` widoczny jest plik `index.html`, który po otwarciu w przeglądarce offline wygląda identycznie jak strona online (zakładając, że wszystkie zewnętrzne zasoby były dostępne podczas pobierania). + +--- + +## Często zadawane pytania i odpowiedzi + +**P: Czy to podejście działa ze stronami używającymi leniwego ładowania obrazów?** +O: Tak, pod warunkiem że obrazy są żądane podczas początkowego przejścia DOM. Jeśli skrypt ładuje obrazy po załadowaniu strony, może być konieczne ręczne wywołanie „renderowania” poprzez `document.Render()` przed `Save`. + +**P: Czy mogę dodatkowo skompresować ZIP?** +O: API `ZipArchive` używa domyślnego poziomu kompresji. Aby uzyskać agresywną kompresję, utwórz je przy pomocy `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)`. + +**P: Co zrobić, jeśli potrzebny jest ZIP zabezpieczony hasłem?** +O: Wbudowany `ZipArchive` nie obsługuje szyfrowania. W takim przypadku, przekaż strumień wyjściowy przez bibliotekę zewnętrzną, taką jak `SharpZipLib`, po zakończeniu zapisu przez Aspose.HTML. + +--- + +## Profesjonalne wskazówki dla środowiska produkcyjnego + +- **Ponownie używaj `ZipHandler`** przy przetwarzaniu wielu stron w partii; po prostu zresetuj podstawowy `MemoryStream` między uruchomieniami. +- **Log + +{{< /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/portuguese/net/generate-jpg-and-png-images/_index.md b/html/portuguese/net/generate-jpg-and-png-images/_index.md index 25a4d8da7..0804e61b9 100644 --- a/html/portuguese/net/generate-jpg-and-png-images/_index.md +++ b/html/portuguese/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aprenda a usar Aspose.HTML para .NET para manipular documentos HTML, converter H Aprenda a ativar antialiasing ao converter documentos DOCX em imagens PNG ou JPG usando Aspose.HTML para .NET. ### [Converter docx para png – criar arquivo zip em C# tutorial](./convert-docx-to-png-create-zip-archive-c-tutorial/) Aprenda a converter documentos DOCX em imagens PNG e compactá-los em um arquivo ZIP usando C# e Aspose.HTML. +### [Como renderizar HTML para PNG – Guia completo em C#](./how-to-render-html-to-png-complete-c-guide/) +Aprenda a renderizar HTML em PNG usando C# com Aspose.HTML, passo a passo, cobrindo configuração e otimizações. ## Conclusão diff --git a/html/portuguese/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/portuguese/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..507d955e1 --- /dev/null +++ b/html/portuguese/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,158 @@ +--- +category: general +date: 2026-04-19 +description: Como renderizar HTML para PNG com Aspose.Html. Aprenda a converter HTML + para PNG, salvar HTML como PNG e criar imagem a partir de HTML em minutos. +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: pt +og_description: Como renderizar HTML para PNG com Aspose.Html. Siga este tutorial + passo a passo para converter HTML em PNG, salvar HTML como PNG e criar imagem a + partir de HTML. +og_title: Como Renderizar HTML para PNG – Guia Completo de C# +tags: +- Aspose.Html +- C# +title: Como Renderizar HTML para PNG – Guia Completo em C# +url: /pt/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como Renderizar HTML para PNG – Guia Completo em C# + +Já se perguntou **como renderizar HTML** em um arquivo de imagem sem abrir um navegador? Você não está sozinho. Em muitos projetos—miniaturas de e‑mail, geração de PDF ou apenas pré‑visualizações rápidas—você precisa **converter HTML para PNG** em tempo real. + +Neste tutorial vamos percorrer uma solução prática usando Aspose.Html para .NET, cobrindo tudo, desde a instalação da biblioteca até o ajuste de text‑hinting para fontes pequenas nítidas. Ao final, você será capaz de **salvar HTML como PNG**, **criar imagem a partir de HTML**, e ainda ajustar opções de renderização para cenários de borda. + +## O que Você Precisa + +- **.NET 6+** (ou .NET Framework 4.6.2+). A API funciona da mesma forma em todos os runtimes. +- Pacote NuGet **Aspose.Html** – `Install-Package Aspose.Html`. +- Um arquivo HTML simples (por exemplo, `article.html`) que você deseja transformar em imagem. +- Visual Studio, Rider ou qualquer editor de sua preferência. + +É só isso—sem dependências extras, sem Chrome headless, apenas C# puro. + +## Etapa 1: Instalar Aspose.Html e Adicionar Namespaces + +Primeiro, obtenha a biblioteca do NuGet. Abra o Console do Gerenciador de Pacotes e execute: + +```powershell +Install-Package Aspose.Html +``` + +Depois de instalado, adicione as diretivas `using` necessárias no topo do seu arquivo: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +Esses namespaces dão acesso ao modelo de documento, renderização de imagem e às opções de texto granulares que usaremos mais adiante. + +> **Dica de especialista:** Se você estiver usando um arquivo .csproj, também pode adicionar `` manualmente. + +## Etapa 2: Carregar o Documento HTML + +Você precisa de uma instância `HTMLDocument` que aponte para o arquivo de origem. Aspose.Html pode ler a partir de um caminho, um stream ou até mesmo uma URL. + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Por que isso importa:** Carregar o documento uma única vez mantém o uso de memória baixo. Se você pretende renderizar muitas páginas, reutilize o mesmo objeto `HTMLDocument` sempre que possível. + +## Etapa 3: Ajustar a Renderização de Texto para Fontes Pequenas + +Ao renderizar texto diminuto, costuma‑se obter bordas borradas. Habilitar o hinting indica ao rasterizador que alinhe os glifos aos limites de pixel, melhorando drasticamente a legibilidade. + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +Você também pode controlar anti‑aliasing, renderização subpixel ou até especificar uma coleção de fontes personalizada aqui—útil se seu HTML referencia web fonts. + +## Etapa 4: Configurar Opções de Renderização de Imagem + +Agora vinculamos o `TextOptions` às configurações de imagem. Também é possível definir cor de fundo, DPI ou formato da imagem (PNG, JPEG, BMP). + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **Caso extremo:** Se seu HTML for mais largo que as dimensões típicas de tela, considere definir `Width` e `Height` em `ImageRenderingOptions` para evitar PNGs gigantes. + +## Etapa 5: Renderizar o HTML para um Arquivo PNG + +Por fim, chame `RenderToImage`. A sobrecarga do método que usamos permite especificar o caminho de saída e as opções que acabamos de criar. + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +Quando você executar o programa, Aspose.Html analisa a marcação, aplica o CSS, faz o layout da página e a rasteriza em `article.png`. Abra o arquivo em qualquer visualizador de imagens—você deverá ver uma captura pixel‑perfeita do seu HTML original. + +![como renderizar html como PNG usando Aspose.Html](render-html-png.png) + +*Texto alternativo da imagem: **como renderizar html** como PNG usando Aspose.Html* + +## Bônus: Manipulando Múltiplas Páginas ou Redimensionamento + +Às vezes um único arquivo HTML contém várias seções `` (por exemplo, para impressão). Você pode percorrer `htmlDoc.Pages` e renderizar cada página individualmente: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +Se precisar de uma miniatura em vez de uma imagem em tamanho completo, ajuste `imgOpts.Width` e `imgOpts.Height` antes da renderização. A biblioteca preservará automaticamente a proporção. + +--- + +## Conclusão + +Agora você tem uma receita sólida e pronta para produção de **como renderizar HTML** em uma imagem PNG usando Aspose.Html. Desde a instalação do pacote, carregamento da marcação, ajuste fino do hinting de texto, até a chamada final a `RenderToImage`, cada passo está coberto. + +Com esse conhecimento você pode **converter HTML para PNG**, **salvar HTML como PNG**, e **criar imagem a partir de HTML** para qualquer aplicação .NET—seja um serviço web que gera miniaturas ou uma ferramenta desktop que arquiva páginas web. + +Em seguida, explore tópicos relacionados como **renderizar HTML para imagem** em diferentes formatos (JPEG, BMP) ou incorporar o PNG em um PDF usando Aspose.PDF. Você também pode experimentar o dimensionamento de DPI para impressões de alta resolução, ou alimentar HTML dinâmico gerado em tempo real na mesma cadeia. + +Tem perguntas ou um caso de uso curioso? Deixe um comentário abaixo, e boa renderização! + +{{< /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/portuguese/net/html-extensions-and-conversions/_index.md b/html/portuguese/net/html-extensions-and-conversions/_index.md index 8971d46a5..babeaa017 100644 --- a/html/portuguese/net/html-extensions-and-conversions/_index.md +++ b/html/portuguese/net/html-extensions-and-conversions/_index.md @@ -66,6 +66,8 @@ Aprenda como converter HTML para Markdown no .NET usando Aspose.HTML para manipu Converta HTML para MHTML em .NET com Aspose.HTML - Um guia passo a passo para arquivamento eficiente de conteúdo web. Aprenda a usar Aspose.HTML para .NET para criar arquivos MHTML. ### [Converter HTML para PNG no .NET com Aspose.HTML](./convert-html-to-png/) Descubra como usar Aspose.HTML para .NET para manipular e converter documentos HTML. Guia passo a passo para desenvolvimento .NET eficaz. +### [Converter HTML para PNG em C# – Renderizar HTML como Imagem](./convert-html-to-png-in-c-render-html-as-image/) +Aprenda a converter HTML para PNG em C# usando Aspose.HTML, renderizando HTML como imagem com um guia passo a passo. ### [Converter HTML para TIFF em .NET com Aspose.HTML](./convert-html-to-tiff/) Aprenda como converter HTML para TIFF com Aspose.HTML para .NET. Siga nosso guia passo a passo para otimização eficiente de conteúdo web. ### [Converter HTML para XPS em .NET com Aspose.HTML](./convert-html-to-xps/) @@ -75,9 +77,16 @@ Aprenda a salvar documentos HTML em arquivos ZIP usando Aspose.HTML para .NET co ### [Como compactar HTML em C# – Salvar HTML em ZIP](./how-to-zip-html-in-c-save-html-to-zip/) Aprenda a criar um arquivo ZIP contendo arquivos HTML usando Aspose.HTML para .NET em C#. + ### [Salvar HTML em ZIP em C# – Exemplo Completo em Memória](./save-html-to-zip-in-c-complete-in-memory-example/) Aprenda a salvar arquivos HTML em um arquivo ZIP usando C# com um exemplo completo totalmente em memória. +### [Salvar HTML como ZIP com um manipulador de recursos personalizado – guia passo a passo](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +Aprenda a salvar HTML em um arquivo ZIP usando um manipulador de recursos personalizado com Aspose.HTML para .NET. Guia passo a passo. + +### [Salvar página da Web como ZIP com Aspose.HTML – Tutorial completo em C#](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +Aprenda a salvar uma página da Web como um arquivo ZIP usando Aspose.HTML para .NET com um tutorial passo a passo em C#. + ## Conclusão Concluindo, extensões e conversões HTML são elementos essenciais do desenvolvimento web moderno. O Aspose.HTML para .NET simplifica o processo e o torna acessível a desenvolvedores de todos os níveis. Ao seguir nossos tutoriais, você estará no caminho certo para se tornar um desenvolvedor web proficiente com um amplo conjunto de habilidades. diff --git a/html/portuguese/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/portuguese/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..5a40c4450 --- /dev/null +++ b/html/portuguese/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-04-19 +description: Converter HTML para PNG em C# usando Aspose.HTML – um guia rápido para + renderizar HTML como imagem e salvar gráfico como PNG com anti‑aliasing. +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: pt +og_description: Converta HTML em PNG em C# rapidamente. Aprenda como renderizar HTML + como imagem, salvar gráfico como PNG e gerar PNG a partir de HTML com Aspose.HTML. +og_title: Converter HTML para PNG em C# – Renderizar HTML como Imagem +tags: +- Aspose.HTML +- C# +- Image Processing +title: Converter HTML para PNG em C# – Renderizar HTML como Imagem +url: /pt/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Converter HTML para PNG em C# – Renderizar HTML como Imagem + +Já precisou **converter HTML para PNG** em C# mas não sabia qual biblioteca entregaria um resultado nítido? Você não está sozinho. Seja exportando um gráfico dinâmico, transformando um modelo de e‑mail em uma miniatura, ou simplesmente precisando de uma captura estática de uma página web, a capacidade de **renderizar HTML como imagem** é um truque útil em qualquer caixa de ferramentas de desenvolvedor. + +Neste tutorial percorreremos todo o processo de transformar um arquivo HTML em um arquivo PNG com Aspose.HTML. Ao final, você será capaz de **salvar gráfico como PNG**, **gerar PNG a partir de HTML**, e ainda ajustar as configurações de anti‑aliasing para obter um visual polido. Sem enrolação — apenas um exemplo completo e executável que você pode inserir no seu projeto hoje. + +## O que você precisará + +Antes de mergulharmos, certifique‑se de que tem o seguinte: + +- **.NET 6.0** ou superior (o código também funciona no .NET Framework 4.6+). +- **Aspose.HTML for .NET** – você pode obtê‑lo via NuGet com `Install-Package Aspose.HTML`. +- Um arquivo HTML simples (por exemplo, `chart.html`) que contenha a marcação que você deseja capturar. +- Uma IDE de sua escolha — Visual Studio, Rider ou até mesmo VS Code servem. + +É só isso. Sem dependências extras, sem navegadores headless, apenas uma única biblioteca bem documentada. + +![Exemplo de Conversão de HTML para PNG](example.png "Saída da Conversão de HTML para PNG") + +## Etapa 1: Carregar o Documento HTML + +A primeira coisa que precisamos fazer é apontar o Aspose.HTML para o arquivo fonte. Pense na classe `HTMLDocument` como a tela que contém tudo que a biblioteca pintará posteriormente em um bitmap. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*Por que isso importa:* Carregar o documento separa a fase de análise da fase de renderização. Isso dá ao motor a chance de resolver CSS, scripts e imagens antes de pedirmos que ele produza um PNG. Se você pular esta etapa e tentar renderizar a marcação bruta, acabará com uma imagem em branco ou com estilos ausentes. + +## Etapa 2: Configurar as Opções de Renderização de Imagem + +Fora da caixa, o Aspose.HTML gera um PNG decente, mas você costuma querer bordas mais suaves — especialmente para gráficos e vetores. É aqui que entra `ImageRenderingOptions`. + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*Dica de especialista:* Se você estiver lidando com telas de alta DPI, aumente `Width` e `Height` proporcionalmente e deixe o PNG maior. Você pode reduzir depois com um editor de imagens. Além disso, definir uma cor de fundo evita que PNGs transparentes fiquem estranhos em páginas escuras. + +## Etapa 3: Renderizar o HTML para um Arquivo PNG + +Agora a parte pesada acontece. O método `RenderToImage` recebe o caminho de saída e as opções que acabamos de definir, então grava um PNG no disco. + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +Quando esta linha terminar, você encontrará `chart.png` na pasta de destino. Abra‑o — o gráfico está nítido? Se você ativou o anti‑aliasing, as linhas devem estar suaves e qualquer texto deve estar claro. + +### Verificando o Resultado + +Você pode verificar rapidamente a imagem programaticamente: + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +Se o console imprimir dimensões diferentes de zero e um formato de pixel suportado (por exemplo, `Format32bppArgb`), você converteu **html para png** com sucesso. + +## Renderizar HTML como Imagem – Opções Avançadas + +Até agora cobrimos o básico, mas cenários reais costumam exigir um controle maior. Abaixo estão alguns ajustes comuns que você pode precisar. + +### Ajustando DPI para Saída de Qualidade de Impressão + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +Um DPI mais alto é ótimo quando você pretende incorporar o PNG em um PDF ou imprimi‑lo em papel. + +### Manipulando Recursos Externos + +Se seu HTML referencia CSS, fontes ou imagens externas hospedadas em um servidor web, certifique‑se de que o tempo de execução possa alcançá‑los. Você pode definir um `BaseUrl` personalizado: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +Isso indica ao Aspose.HTML para resolver URLs relativas em relação ao URL base fornecido. + +### Convertendo Múltiplas Páginas + +O Aspose.HTML pode renderizar cada página de um documento HTML multipágina em arquivos PNG separados: + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +Dessa forma você pode **salvar gráfico como PNG** para cada página sem precisar fatiar manualmente a saída. + +## Salvar Gráfico como PNG – Armadilhas Comuns e Como Evitá‑las + +1. **Fontes ausentes:** Se o HTML usar uma fonte personalizada que não está instalada no servidor, o PNG renderizado recairá para uma fonte padrão. Instale a fonte na máquina ou incorpore‑a via `@font-face` no seu CSS. +2. **Arquivos grandes:** Renderizar um HTML massivo pode consumir muita memória. Considere paginar o conteúdo ou reduzir as dimensões da imagem. +3. **Fundos transparentes:** Por padrão, os PNGs podem ser transparentes. Se precisar de um fundo opaco (por exemplo, para miniaturas de e‑mail), defina `BackgroundColor` como mostrado anteriormente. +4. **Execução de scripts:** O Aspose.HTML não executa JavaScript. Se seu gráfico for construído com uma biblioteca client‑side como Chart.js, será necessário pré‑renderizar o gráfico em um elemento `` estático ou usar um navegador headless. + +## Exemplo Completo Funcional + +Abaixo está o programa completo que você pode copiar‑colar em um aplicativo console. Ele inclui todas as etapas, tratamento de erros e ajustes opcionais discutidos acima. + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +Execute o programa e você verá uma mensagem de confirmação seguida pelas dimensões da imagem. Abra `chart.png` em qualquer visualizador para confirmar que o gráfico está exatamente como o HTML original. + +## Conclusão + +Agora você tem uma solução robusta, + +{{< /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/portuguese/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/portuguese/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..b15e6d38f --- /dev/null +++ b/html/portuguese/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-04-19 +description: Aprenda como salvar HTML como ZIP usando Aspose.Html e um manipulador + de recursos personalizado. Também descubra como converter URL em ZIP e baixar HTML + como ZIP em minutos. +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: pt +og_description: 'Salvar HTML como ZIP ficou fácil: use Aspose.Html, um manipulador + de recursos personalizado e ZipSaveOptions para converter qualquer URL em um arquivo + ZIP baixável.' +og_title: salvar html como zip com um manipulador de recursos personalizado – tutorial + rápido +tags: +- Aspose.Html +- C# +- Web scraping +title: Salvar HTML como ZIP com um manipulador de recursos personalizado – guia passo + a passo +url: /pt/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# salvar html como zip – Tutorial Completo + +Já precisou **salvar html como zip** para enviar uma página inteira com suas imagens, CSS e scripts em um único pacote organizado? Talvez você esteja construindo um rastreador que arquiva artigos, ou simplesmente queira um botão rápido de “baixar html como zip” para seus usuários. De qualquer forma, provavelmente está se perguntando como fazer isso sem escrever milhares de linhas de código de I/O de arquivos. + +A boa notícia: Aspose.Html torna a tarefa simples como uma torta, e com um **manipulador de recursos personalizado** você pode decidir exatamente onde cada fluxo de recurso vai. Neste guia também mostraremos como **converter url para zip**, como **baixar html como zip**, e como **salvar recursos da página web** para uso offline — tudo em um único programa C# auto‑contido. + +## O que você aprenderá + +- Instalar a biblioteca Aspose.Html (o NuGet facilita). +- Escrever um `ResourceHandler` que fornece um `Stream` para cada recurso que Aspose.Html deseja gravar. +- Carregar uma página remota (ou um arquivo local) e instruir o Aspose.Html a empacotar tudo em um arquivo ZIP. +- Verificar se o `output.zip` resultante contém o arquivo HTML mais todos os ativos vinculados. + +Sem ferramentas externas, sem manipulação manual de arquivos zip — apenas código limpo e compilado que você pode inserir em qualquer projeto .NET. + +## Pré-requisitos + +| Requisito | Por que isso importa | +|-------------|----------------| +| .NET 6.0 ou posterior (o código também funciona no .NET Framework 4.7+) | Aspose.Html tem como alvo runtimes modernos; frameworks mais antigos podem não ter algumas APIs. | +| Visual Studio 2022 (ou qualquer IDE de sua preferência) | Útil para depuração e visualização do ZIP gerado. | +| Acesso à internet para a URL de exemplo (`https://example.com`) | Vamos buscar uma página ao vivo para demonstrar **converter url para zip**. | +| Pacote NuGet `Aspose.Html` (v23.12 ou mais recente) | Esta biblioteca fornece `HTMLDocument`, `ZipSaveOptions` e a classe base `ResourceHandler`. | + +Se já tem um projeto .NET, basta executar: + +```bash +dotnet add package Aspose.Html +``` + +É tudo que você precisa configurar. + +## Etapa 1: Criar um Manipulador de Recursos Personalizado + +O coração da solução é uma classe que herda de `ResourceHandler`. Aspose.Html chama `HandleResource` para cada arquivo que deseja gravar — HTML, imagens, CSS, JavaScript, o que for. Ao retornar um `Stream` você decide onde os dados são armazenados. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**Por que um manipulador personalizado?** +Porque a interface mais antiga `IOutputStorage` está obsoleta, e `ResourceHandler` oferece controle total sobre o destino de saída. Ele também permite inspecionar `ResourceInfo` — útil se você quiser manter apenas imagens e ignorar fontes, por exemplo. + +## Etapa 2: Carregar o Documento HTML (ou Converter URL para Zip) + +Aspose.Html pode carregar a partir de uma URL, de um caminho de arquivo ou de uma string HTML bruta. Aqui demonstramos o carregamento de uma página ao vivo, que é o caso típico quando você quer **baixar html como zip**. + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +Se já possui o código-fonte HTML em uma variável, basta passá‑lo ao construtor: + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## Etapa 3: Conectar o Manipulador ao ZipSaveOptions + +`ZipSaveOptions` indica ao Aspose.Html *como* criar o arquivo ZIP. A propriedade crucial é `OutputStorage`, que definimos como nossa instância `MyHandler`. + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +Você também pode ajustar o nível de compressão, nomes de pastas dentro do arquivo, ou até mesmo incorporar um arquivo de manifesto — os detalhes estão na documentação da Aspose, mas os padrões funcionam bem na maioria dos cenários. + +## Etapa 4: Salvar o Documento como um Arquivo ZIP + +Agora a mágica acontece. O método `Save` itera sobre cada recurso, chama `HandleResource` e grava os bytes no fluxo retornado. Como nosso manipulador devolve um novo `MemoryStream` a cada chamada, o Aspose.Html coletará todos esses streams e os empacotará em `output.zip`. + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**O que você verá:** +- `output.zip` na raiz da pasta do seu projeto. +- Dentro do ZIP: `index.html` (a página principal) mais subpastas como `images/`, `css/`, `scripts/` contendo exatamente os arquivos que o navegador teria solicitado. + +## Etapa 5: Verificar o Resultado (Opcional, mas Recomendado) + +Uma verificação rápida garante que você realmente **salvou recursos da página web** corretamente. + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +Você deverá ver entradas para `index.html`, quaisquer imagens vinculadas (`logo.png`), arquivos CSS e arquivos JavaScript. Se algo estiver faltando, revise a lógica de `ResourceInfo` em `MyHandler`. + +## Exemplo Completo Funcionando + +Juntando tudo, aqui está o programa completo que você pode copiar‑colar em um aplicativo console. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Execute o programa (`dotnet run`) e você obterá um elegante `output.zip`. Abra-o com qualquer gerenciador de arquivos e navegue na página salva offline — exatamente o que você precisa para a funcionalidade de **baixar html como zip**. + +## Perguntas Frequentes & Casos de Borda + +| Pergunta | Resposta | +|----------|----------| +| *E se eu precisar armazenar o ZIP no Azure Blob Storage?* | Substitua `MemoryStream` por um stream que escreva diretamente em um blob (ex.: `CloudBlockBlob.OpenWrite()`). A abstração do manipulador torna isso trivial. | +| *Posso filtrar certos recursos?* | Sim. Dentro de `HandleResource`, inspecione `info.ResourceType` ou `info.Url`. Retorne `null` para pular um recurso, ou retorne um stream que não escreva nada. | +| *O ZIP pode ser protegido por senha?* | `ZipSaveOptions` possui a propriedade `Password`. Defina‑a antes de chamar `Save` se precisar de criptografia. | +| *E páginas grandes com dezenas de megabytes de ativos?* | Usar `MemoryStream` para tudo pode esgotar a RAM. Troque para um `FileStream` que escreva em uma pasta temporária, então deixe o Aspose.Html comprimir esses arquivos. | +| *Isso funciona no .NET Core em Linux?* | Absolutamente. Aspose.Html é multiplataforma; basta garantir que o runtime tenha permissão para gravar arquivos. | + +## Dicas Profissionais + +- **Dica pro:** Se você se importa apenas com HTML e imagens, verifique `info.ResourceType == ResourceType.Image` e ignore scripts ou fontes para manter o ZIP pequeno. +- **Cuidado com:** alguns sites bloqueiam requisições automatizadas. Defina um `User-Agent` customizado via `HtmlLoadOptions` se receber um erro 403. +- **Sugestão:** Após criar o ZIP, você pode servi‑lo diretamente de um controlador ASP.NET usando `FileResult`, oferecendo ao usuário um botão de **baixar html como zip** com um clique. + +## Conclusão + +Agora você tem um método sólido e pronto para produção de **salvar html como zip** usando Aspose.Html e um **manipulador de recursos personalizado**. Carregando qualquer URL, configurando `ZipSaveOptions` e deixando o manipulador fornecer os streams, você pode **converter url para zip**, **baixar html como zip**, e **salvar recursos da página web** com apenas algumas linhas de C#. + +Sinta‑se à vontade para experimentar — armazenar streams em disco, armazenamento em nuvem ou até mesmo em um banco de dados. O padrão permanece o mesmo, e o resultado é sempre um arquivo organizado que você pode distribuir, cachear ou arquivar para sempre. + +--- + +![Diagram illustrating the save html as zip workflow – from loading a URL to producing a ZIP file](/images/save-html-as-zip.png) + +*Texto alternativo da imagem:* **diagrama do fluxo de salvar html como zip** + +Se este tutorial foi útil, deixe um comentário, compartilhe com um colega, ou dê uma estrela ao repositório onde você guarda seus scripts utilitários. Feliz codificação! + +{{< /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/portuguese/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/portuguese/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..307742bf6 --- /dev/null +++ b/html/portuguese/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,218 @@ +--- +category: general +date: 2026-04-19 +description: Salvar página da web como zip usando Aspose.HTML em C#. Aprenda como + converter URL para zip, exportar HTML para zip e baixar a página da web como zip + com um exemplo de código simples. +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: pt +og_description: Salve a página da web como zip com Aspose.HTML em C#. Este guia mostra + como converter URL em zip, exportar HTML para zip e baixar a página da web como + zip em apenas alguns passos. +og_title: Salvar página da web como ZIP com Aspose.HTML – Tutorial completo em C# +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: Salvar página da web como ZIP com Aspose.HTML – Tutorial completo em C# +url: /pt/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Salvar Página da Web como ZIP com Aspose.HTML – Tutorial Completo em C# + +Precisa **salvar página da web como zip** para arquivamento offline, testes automatizados ou apenas para enviar um instantâneo de um site? Você não está sozinho. Neste tutorial vamos percorrer como **converter URL para zip**, **exportar HTML para zip** e até **baixar página da web como zip** com algumas linhas limpas de C#. + +Cobriremos tudo, desde a configuração do projeto até o arquivo ZIP final no disco, e adicionaremos algumas dicas práticas que você não encontrará na documentação oficial. Ao final, você terá uma solução reutilizável que pode **criar zip a partir de html** sempre que precisar. + +## O que você vai precisar + +- **.NET 6.0** (ou qualquer versão recente do .NET) – Aspose.HTML funciona tanto com .NET Core quanto com .NET Framework. +- **Pacote NuGet Aspose.HTML for .NET** – `Install-Package Aspose.HTML`. +- Um conhecimento básico de C# – se você consegue escrever um `Console.WriteLine`, está pronto para começar. +- Uma máquina conectada à internet para o download inicial (o código em si funciona offline depois que o ZIP é criado). + +Nenhum SDK extra, nenhum navegador headless, apenas .NET puro e Aspose.HTML. + +![Ilustração de salvar página da web como zip usando Aspose.HTML](save-webpage-as-zip.png "Diagrama mostrando fluxo de salvar página da web como zip") + +## Salvar Página da Web como ZIP – Visão geral + +Em alto nível, o processo consiste em três partes móveis: + +1. **Um `ResourceHandler` personalizado** que informa ao Aspose.HTML onde gravar cada recurso externo (imagens, CSS, scripts). +2. **`ZipSaveOptions`** que vincula o handler a um arquivo ZIP e permite ajustar a renderização (antialiasing, dicas de fontes, etc.). +3. **A chamada `HTMLDocument.Save`** que reúne tudo, transmitindo a página e todos os seus ativos para o arquivo ZIP. + +É isso. O trabalho pesado é feito pelo Aspose.HTML, então você pode focar no “por quê” e “quando” em vez de lutar com streams de baixo nível. + +--- + +## Etapa 1: Configurar o Projeto e Adicionar Aspose.HTML + +Primeiro, crie um novo projeto de console (ou insira o código em um aplicativo existente). Abra um terminal e execute: + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +O pacote `Aspose.HTML` inclui todos os tipos que precisaremos: `HTMLDocument`, `ZipSaveOptions`, `ImageRenderingOptions` e o abstrato `ResourceHandler`. + +> **Dica profissional:** Se você estiver direcionando o .NET Framework, substitua os comandos `dotnet` pela UI do Gerenciador de Pacotes NuGet no Visual Studio – as mesmas DLLs são adicionadas. + +--- + +## Etapa 2: Criar um Handler de Recurso `ZipHandler` Personalizado + +O Aspose.HTML chama `HandleResource` para cada arquivo externo que encontra ao analisar a página. Ao sobrescrever esse método, podemos direcionar cada recurso para uma entrada ZIP em vez de para o sistema de arquivos. + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### Por que um handler personalizado? + +Sem ele, o Aspose.HTML deixaria os recursos ao lado do arquivo HTML no disco. Ao alimentar um `ZipArchive`, mantemos **tudo empacotado** – perfeito para distribuição ou para extração posterior por outro serviço. + +--- + +## Etapa 3: Configurar `ZipSaveOptions` com Renderização de Imagem + +Agora vinculamos o handler às opções de salvamento e ativamos alguns ajustes de renderização que melhoram a fidelidade visual de capturas de tela ou conversões semelhantes a PDF. + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **Por que habilitar antialiasing e hinting?** Quando a página for renderizada posteriormente para um bitmap (por exemplo, para uma miniatura), essas flags reduzem bordas serrilhadas e tornam fontes pequenas legíveis — especialmente importante se você planeja incorporar as imagens em outro lugar. + +--- + +## Etapa 4: Carregar o Documento HTML e Salvar em ZIP + +Com o handler e as opções prontos, carregar uma página remota é tão simples quanto passar sua URL para `HTMLDocument`. O método `Save` invocará `HandleResource` para cada ativo vinculado. + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +Neste ponto, `zipStream` contém um **arquivo ZIP completo que inclui**: + +- `index.html` (a página principal) +- Todos os arquivos CSS referenciados por tags `` +- Imagens, fontes e arquivos JavaScript necessários para renderizar a página offline + +### Casos de borda & Variações + +| Situação | O que ajustar | +|------------------------------------------|------------------------------------------------------------------------------------| +| **Autenticação necessária** | Use `HTMLDocument(string url, LoadOptions options)` e defina `options.Credentials`. | +| **Páginas muito grandes (>100 MB)** | Grave diretamente em um `FileStream` em vez de `MemoryStream` para evitar uso elevado de RAM. | +| **URLs relativas que começam com “//”** | O handler normaliza-as automaticamente; basta garantir que `BaseUrl` esteja definido. | +| **Estrutura de pastas personalizada dentro do ZIP** | Modifique `info.Path` dentro de `HandleResource` antes de criar a entrada. | + +--- + +## Etapa 5: Persistir o Arquivo ZIP e Verificar o Resultado + +Por fim, gravamos o ZIP em memória no disco. Esta etapa é opcional se você pretende enviar o stream pela rede, mas facilita a verificação. + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**Resultado esperado:** Ao abrir `result.zip`, você verá um arquivo `index.html` que, quando aberto em um navegador offline, tem a mesma aparência da página ao vivo (desde que todos os ativos externos tenham sido acessíveis durante o download). + +--- + +## Perguntas Frequentes + +**P: Essa abordagem funciona com páginas que usam imagens carregadas de forma preguiçosa (lazy‑loaded)?** +R: Sim, contanto que as imagens sejam solicitadas durante a caminhada inicial do DOM. Se um script carrega imagens após o carregamento da página, pode ser necessário disparar uma “renderização” manual chamando `document.Render()` antes de `Save`. + +**P: Posso comprimir o ZIP ainda mais?** +R: A API `ZipArchive` usa o nível de compressão padrão. Para compressão agressiva, instancie-a com `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)`. + +**P: E se eu precisar de um ZIP protegido por senha?** +R: O `ZipArchive` interno não oferece criptografia. Nesse caso, canalize o stream de saída através de uma biblioteca de terceiros como `SharpZipLib` após o Aspose.HTML terminar a gravação. + +--- + +## Dicas Profissionais para Uso em Produção + +- **Reutilize o `ZipHandler`** ao processar várias páginas em lote; basta redefinir o `MemoryStream` subjacente entre as execuções. +- **Log + +{{< /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/russian/net/generate-jpg-and-png-images/_index.md b/html/russian/net/generate-jpg-and-png-images/_index.md index 74f005949..b78c72bf2 100644 --- a/html/russian/net/generate-jpg-and-png-images/_index.md +++ b/html/russian/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML для .NET предлагает простой метод прео Узнайте, как включить сглаживание при преобразовании DOCX в PNG или JPG с помощью Aspose.HTML для .NET. ### [Конвертация DOCX в PNG – создание ZIP-архива на C#](./convert-docx-to-png-create-zip-archive-c-tutorial/) Узнайте, как преобразовать файлы DOCX в PNG и упаковать их в ZIP-архив с помощью C# и Aspose.HTML. +### [Как отрендерить HTML в PNG – Полное руководство на C#](./how-to-render-html-to-png-complete-c-guide/) +Подробное руководство по рендерингу HTML в PNG с использованием Aspose.HTML для .NET на C#. ## Заключение diff --git a/html/russian/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/russian/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..9ef03cad8 --- /dev/null +++ b/html/russian/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,159 @@ +--- +category: general +date: 2026-04-19 +description: Как отрендерить HTML в PNG с помощью Aspose.Html. Узнайте, как конвертировать + HTML в PNG, сохранять HTML как PNG и создавать изображение из HTML за считанные + минуты. +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: ru +og_description: Как отрендерить HTML в PNG с помощью Aspose.Html. Следуйте этому пошаговому + руководству, чтобы преобразовать HTML в PNG, сохранить HTML как PNG и создать изображение + из HTML. +og_title: Как преобразовать HTML в PNG – Полное руководство по C# +tags: +- Aspose.Html +- C# +title: Как преобразовать HTML в PNG — Полное руководство по C# +url: /ru/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как отрендерить HTML в PNG – Полное руководство на C# + +Когда‑нибудь задавались вопросом **как отрендерить HTML** в файл‑изображение без запуска браузера? Вы не одиноки. Во многих проектах — миниатюры писем, генерация PDF или просто быстрые превью — нужно **конвертировать HTML в PNG** «на лету». + +В этом руководстве мы пошагово рассмотрим практическое решение с использованием Aspose.Html для .NET, от установки библиотеки до настройки text‑hinting для чётких мелких шрифтов. К концу вы сможете **сохранить HTML как PNG**, **создать изображение из HTML** и даже настроить параметры рендеринга для крайних сценариев. + +## Что вам понадобится + +- **.NET 6+** (или .NET Framework 4.6.2+). API работает одинаково на всех рантаймах. +- **Aspose.Html** NuGet‑пакет – `Install-Package Aspose.Html`. +- Простой HTML‑файл (например, `article.html`), который нужно превратить в изображение. +- Visual Studio, Rider или любой другой удобный редактор. + +И всё — без дополнительных зависимостей, без headless Chrome, только чистый C#. + +## Шаг 1: Установите Aspose.Html и добавьте пространства имён + +Сначала загрузите библиотеку из NuGet. Откройте консоль диспетчера пакетов и выполните: + +```powershell +Install-Package Aspose.Html +``` + +После установки добавьте необходимые директивы `using` в начало вашего файла: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +Эти пространства имён дают доступ к модели документа, рендерингу изображений и тонко настроенным параметрам текста, которые понадобятся позже. + +> **Pro tip:** Если вы работаете с файлом .csproj, можно вручную добавить ``. + +## Шаг 2: Загрузите HTML‑документ + +Нужен экземпляр `HTMLDocument`, указывающий на исходный файл. Aspose.Html умеет читать из пути, потока или даже URL. + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Why this matters:** Загрузка документа один раз снижает расход памяти. Если планируется рендеринг множества страниц, переиспользуйте один объект `HTMLDocument`, где это возможно. + +## Шаг 3: Настройте рендеринг текста для небольших шрифтов + +При рендеринге крошечного текста часто появляются размытые края. Включение hinting заставляет растеризатор выравнивать глифы по пиксельным границам, что значительно улучшает читаемость. + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +Также можно управлять анти‑алиасингом, субпиксельным рендерингом или задать собственную коллекцию шрифтов — полезно, если ваш HTML ссылается на веб‑шрифты. + +## Шаг 4: Настройте параметры рендеринга изображения + +Теперь привязываем `TextOptions` к настройкам изображения. Можно задать цвет фона, DPI или формат изображения (PNG, JPEG, BMP). + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **Edge case:** Если ваш HTML шире типичных размеров экрана, рассмотрите возможность установки `Width` и `Height` в `ImageRenderingOptions`, чтобы избежать огромных PNG‑файлов. + +## Шаг 5: Рендеринг HTML в PNG‑файл + +Наконец, вызываем `RenderToImage`. Перегрузка метода, которую мы используем, позволяет указать путь вывода и только что построенные параметры. + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +При запуске программы Aspose.Html парсит разметку, применяет CSS, раскладывает страницу и растеризует её в `article.png`. Откройте файл в любом просмотрщике изображений — вы увидите пиксельно‑точный снимок вашего оригинального HTML. + +![how to render html as PNG using Aspose.Html](render-html-png.png) + +*Текст изображения: **как отрендерить HTML** в PNG с помощью Aspose.Html* + +## Бонус: Обработка нескольких страниц или масштабирование + +Иногда один HTML‑файл содержит несколько секций `` (например, для печати). Можно пройтись по `htmlDoc.Pages` и отрендерить каждую страницу отдельно: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +Если нужен миниатюрный вариант вместо полноразмерного изображения, измените `imgOpts.Width` и `imgOpts.Height` перед рендерингом. Библиотека автоматически сохранит соотношение сторон. + +--- + +## Заключение + +Теперь у вас есть надёжный, готовый к продакшну рецепт **как отрендерить HTML** в PNG‑изображение с помощью Aspose.Html. От установки пакета, загрузки разметки, тонкой настройки text‑hinting до финального вызова `RenderToImage` — каждый шаг покрыт. + +Благодаря этим знаниям вы сможете **конвертировать HTML в PNG**, **сохранять HTML как PNG** и **создавать изображение из HTML** в любом .NET‑приложении — будь то веб‑служба, генерирующая миниатюры, или настольный инструмент для архивирования веб‑страниц. + +Далее изучайте связанные темы, такие как **render HTML to image** в разных форматах (JPEG, BMP) или внедрение PNG в PDF с помощью Aspose.PDF. Можно также поэкспериментировать с масштабированием DPI для печати высокого разрешения или передавать динамически генерируемый 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/russian/net/html-extensions-and-conversions/_index.md b/html/russian/net/html-extensions-and-conversions/_index.md index 00354e673..cd638c9d0 100644 --- a/html/russian/net/html-extensions-and-conversions/_index.md +++ b/html/russian/net/html-extensions-and-conversions/_index.md @@ -61,6 +61,8 @@ Aspose.HTML для .NET — это не просто библиотека; эт Конвертируйте HTML в MHTML в .NET с Aspose.HTML — пошаговое руководство по эффективному архивированию веб-контента. Узнайте, как использовать Aspose.HTML для .NET для создания архивов MHTML. ### [Конвертируйте HTML в PNG в .NET с помощью Aspose.HTML](./convert-html-to-png/) Узнайте, как использовать Aspose.HTML для .NET для обработки и преобразования HTML-документов. Пошаговое руководство для эффективной разработки .NET. +### [Конвертировать HTML в PNG на C# – Отобразить HTML как изображение](./convert-html-to-png-in-c-render-html-as-image/) +Преобразуйте HTML в PNG с помощью C# и Aspose.HTML, следуя пошаговому руководству. ### [Конвертируйте HTML в TIFF в .NET с помощью Aspose.HTML](./convert-html-to-tiff/) Узнайте, как преобразовать HTML в TIFF с помощью Aspose.HTML для .NET. Следуйте нашему пошаговому руководству для эффективной оптимизации веб-контента. ### [Конвертируйте HTML в XPS в .NET с помощью Aspose.HTML](./convert-html-to-xps/) @@ -73,6 +75,10 @@ Aspose.HTML для .NET — это не просто библиотека; эт Узнайте, как сохранить HTML‑страницу в архив ZIP с помощью Aspose.HTML для .NET, используя C# в полном пошаговом руководстве. ### [Сохраните HTML в ZIP в C# – Полный пример в памяти](./save-html-to-zip-in-c-complete-in-memory-example/) Сохраните HTML в архив ZIP полностью в памяти с помощью Aspose.HTML для .NET, используя C#. +### [Сохранить HTML в ZIP с пользовательским обработчиком ресурсов – пошаговое руководство](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +Узнайте, как сохранить HTML‑страницу в ZIP‑архив, используя пользовательский обработчик ресурсов, с полным пошаговым примером на C#. +### [Сохранить веб-страницу в ZIP с Aspose.HTML – Полный учебник C#](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +Узнайте, как сохранить веб-страницу в ZIP‑архив с помощью Aspose.HTML и C#, следуя полному пошаговому руководству. ## Заключение diff --git a/html/russian/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/russian/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..15d74dee7 --- /dev/null +++ b/html/russian/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-04-19 +description: Конвертировать HTML в PNG в C# с помощью Aspose.HTML – краткое руководство + по рендерингу HTML в изображение и сохранению графика в PNG с антиалиасингом. +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: ru +og_description: Быстро преобразуйте HTML в PNG на C#. Узнайте, как отобразить HTML + как изображение, сохранить диаграмму в PNG и создать PNG из HTML с помощью Aspose.HTML. +og_title: Преобразовать HTML в PNG на C# – рендеринг HTML в изображение +tags: +- Aspose.HTML +- C# +- Image Processing +title: Преобразовать HTML в PNG на C# – Рендеринг HTML в изображение +url: /ru/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Преобразование HTML в PNG на C# – Рендеринг HTML как изображения + +Когда‑то вам нужно **преобразовать HTML в PNG** на C#, но вы не знали, какая библиотека даст чёткий результат? Вы не одиноки. Будь то экспорт динамического графика, превращение шаблона письма в миниатюру или просто статический снимок веб‑страницы — возможность **рендерить HTML как изображение** является полезным приёмом в арсенале любого разработчика. + +В этом руководстве мы пройдём весь процесс превращения HTML‑файла в PNG‑файл с помощью Aspose.HTML. К концу вы сможете **save chart as PNG**, **generate PNG from HTML** и даже настроить параметры сглаживания для идеального вида. Без лишних слов — полностью готовый пример, который можно сразу добавить в ваш проект. + +## Что понадобится + +Прежде чем начать, убедитесь, что у вас есть следующее: + +- **.NET 6.0** или новее (код также работает на .NET Framework 4.6+). +- **Aspose.HTML for .NET** — его можно установить из NuGet командой `Install-Package Aspose.HTML`. +- Простой HTML‑файл (например, `chart.html`), содержащий разметку, которую нужно захватить. +- Любая IDE по вашему выбору — Visual Studio, Rider или даже VS Code подойдёт. + +И всё. Никаких дополнительных зависимостей, без безголовых браузеров, только одна хорошо документированная библиотека. + +![Convert HTML to PNG example](example.png "Convert HTML to PNG output") + +## Шаг 1: Загрузка HTML‑документа + +Первое, что нужно сделать, — указать Aspose.HTML исходный файл. Класс `HTMLDocument` можно представить как холст, на котором библиотека позже будет рисовать битмап. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*Почему это важно:* Загрузка документа отделяет фазу парсинга от фазы рендеринга. Это даёт движку возможность разрешить CSS, скрипты и изображения до того, как мы попросим его создать PNG. Если пропустить этот шаг и попытаться отрендерить «сырой» HTML, вы получите пустое изображение или отсутствие стилей. + +## Шаг 2: Настройка параметров рендеринга изображения + +Из коробки Aspose.HTML выдаёт приличный PNG, но часто хочется более гладких краёв — особенно для графиков и векторных изображений. Здесь и пригодятся `ImageRenderingOptions`. + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*Совет профи:* Если вы работаете с дисплеями с высоким DPI, увеличьте `Width` и `Height` пропорционально и сделайте PNG больше. Позже его можно уменьшить в графическом редакторе. Кроме того, установка цвета фона предотвращает странный вид прозрачных PNG на тёмных страницах. + +## Шаг 3: Рендеринг HTML в PNG‑файл + +Теперь происходит тяжёлая работа. Метод `RenderToImage` принимает путь вывода и только что определённые параметры, после чего записывает PNG на диск. + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +Когда эта строка завершится, вы найдёте `chart.png` в целевой папке. Откройте его — выглядит ли график чётко? Если вы включили сглаживание, линии должны быть плавными, а текст — резким. + +### Проверка результата + +Можно быстро проверить изображение программно: + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +Если консоль выводит ненулевые размеры и поддерживаемый пиксельный формат (например, `Format32bppArgb`), вы успешно **convert html to png**. + +## Render HTML as Image – Advanced Options + +До сих пор мы рассматривали основы, но в реальных проектах часто требуется больше контроля. Ниже перечислены несколько распространённых настроек, которые могут пригодиться. + +### Регулировка DPI для печати высокого качества + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +Большее DPI полезно, когда планируется вставлять PNG в PDF или печатать его на бумаге. + +### Работа с внешними ресурсами + +Если ваш HTML ссылается на внешние CSS, шрифты или изображения, размещённые на веб‑сервере, убедитесь, что среда выполнения может к ним обратиться. Можно задать пользовательский `BaseUrl`: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +Это заставит Aspose.HTML разрешать относительные URL‑ы относительно указанного базового адреса. + +### Конвертация нескольких страниц + +Aspose.HTML может отрендерить каждую страницу многостраничного HTML‑документа в отдельный PNG‑файл: + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +Таким образом вы сможете **save chart as PNG** для каждой страницы без ручного разрезания вывода. + +## Save Chart as PNG – Распространённые подводные камни и как их избежать + +1. **Отсутствие шрифтов:** Если HTML использует пользовательский шрифт, который не установлен на сервере, отрендеренный PNG будет использовать шрифт по умолчанию. Установите шрифт на машину или внедрите его через `@font-face` в ваш CSS. +2. **Большие файлы:** Рендеринг огромного HTML‑файла может потребовать много памяти. Рассмотрите возможность разбивки контента на части или уменьшения размеров изображения. +3. **Прозрачные фоны:** По умолчанию PNG может быть прозрачным. Если нужен непрозрачный фон (например, для миниатюр в письмах), задайте `BackgroundColor`, как показано выше. +4. **Выполнение скриптов:** Aspose.HTML не исполняет JavaScript. Если ваш график построен клиентской библиотекой вроде Chart.js, вам придётся предварительно отрисовать его в статический `` или воспользоваться безголовым браузером. + +## Полный рабочий пример + +Ниже приведена полная программа, которую можно скопировать в консольное приложение. В ней собраны все шаги, обработка ошибок и опциональные настройки, обсуждавшиеся выше. + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +Запустите программу, и вы увидите сообщение‑подтверждение с размерами изображения. Откройте `chart.png` в любом просмотрщике, чтобы убедиться, что график выглядит точно так же, как оригинальный 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/russian/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/russian/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..1e3a03df4 --- /dev/null +++ b/html/russian/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-04-19 +description: Узнайте, как сохранять HTML в виде ZIP с помощью Aspose.Html и пользовательского + обработчика ресурсов. Также откройте, как преобразовать URL в ZIP и загрузить HTML + в виде ZIP за несколько минут. +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: ru +og_description: 'Сохранить HTML в ZIP легко: используйте Aspose.Html, пользовательский + обработчик ресурсов и ZipSaveOptions, чтобы преобразовать любой URL в загружаемый + ZIP‑архив.' +og_title: Сохранение HTML в ZIP с пользовательским обработчиком ресурсов — быстрый + учебник +tags: +- Aspose.Html +- C# +- Web scraping +title: Сохранить HTML как ZIP с пользовательским обработчиком ресурсов — пошаговое + руководство +url: /ru/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# сохранить html в zip – Полный учебник + +Когда‑нибудь вам нужно было **save html as zip**, чтобы упаковать целую страницу вместе с изображениями, CSS и скриптами в один аккуратный архив? Возможно, вы создаёте краулер, архивирующий статьи, или просто хотите добавить кнопку «download html as zip» для своих пользователей. В любом случае, вы, вероятно, задаётесь вопросом, как сделать это без написания миллионов строк кода ввода‑вывода файлов. + +Хорошие новости: Aspose.Html делает эту задачу элементарной, а с помощью **custom resource handler** вы можете точно указать, куда будет записываться каждый поток ресурса. В этом руководстве мы также покажем, как **convert url to zip**, как **download html as zip**, и как **save webpage resources** для офлайн‑использования — всё в одном самостоятельном C#‑приложении. + +## Что вы узнаете + +- Установить библиотеку Aspose.Html (NuGet делает это безболезненно). +- Написать `ResourceHandler`, который предоставляет `Stream` для каждого ресурса, который Aspose.Html хочет записать. +- Загрузить удалённую страницу (или локальный файл) и заставить Aspose.Html упаковать всё в ZIP‑архив. +- Проверить, что полученный `output.zip` содержит HTML‑файл и все связанные ресурсы. + +Никаких внешних инструментов, никаких ручных манипуляций с zip‑файлами — только чистый, скомпилированный код, который можно добавить в любой .NET‑проект. + +## Требования + +| Требование | Почему это важно | +|-------------|----------------| +| .NET 6.0 или новее (код также работает на .NET Framework 4.7+) | Aspose.Html ориентирован на современные среды выполнения; в старых фреймворках могут отсутствовать некоторые API. | +| Visual Studio 2022 (или любой другой IDE) | Удобно для отладки и просмотра сгенерированного ZIP‑файла. | +| Доступ в Интернет для примера URL (`https://example.com`) | Мы загрузим живую страницу, чтобы продемонстрировать **convert url to zip**. | +| NuGet‑пакет `Aspose.Html` (v23.12 или новее) | Эта библиотека предоставляет `HTMLDocument`, `ZipSaveOptions` и базовый класс `ResourceHandler`. | + +Если у вас уже есть .NET‑проект, просто выполните: + +```bash +dotnet add package Aspose.Html +``` + +Это всё, что нужно для настройки. + +## Шаг 1: Создать пользовательский Resource Handler + +Сердце решения — класс, наследующий `ResourceHandler`. Aspose.Html вызывает `HandleResource` для каждого файла, который он хочет записать — HTML, изображения, CSS, JavaScript и т.д. Возвращая `Stream`, вы решаете, куда попадут данные. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**Зачем нужен пользовательский обработчик?** +Потому что устаревший интерфейс `IOutputStorage` больше не рекомендуется, а `ResourceHandler` даёт полный контроль над местом назначения вывода. Он также позволяет исследовать `ResourceInfo` — полезно, если, например, вы хотите сохранять только изображения и пропускать шрифты. + +## Шаг 2: Загрузить HTML‑документ (или Convert URL to Zip) + +Aspose.Html может загружать из URL, из пути к файлу или из строки с HTML‑кодом. Здесь мы демонстрируем загрузку живой страницы, что типично, когда нужно **download html as zip**. + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +Если у вас уже есть исходный HTML в переменной, просто передайте его конструктору: + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## Шаг 3: Подключить обработчик к ZipSaveOptions + +`ZipSaveOptions` указывает Aspose.Html *как* создавать ZIP‑файл. Ключевое свойство — `OutputStorage`, которое мы задаём экземпляром нашего `MyHandler`. + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +Вы также можете настроить уровень сжатия, имена папок внутри архива или даже добавить файл‑манифест — детали см. в документации Aspose, но значения по умолчанию подходят для большинства сценариев. + +## Шаг 4: Сохранить документ как ZIP‑архив + +Теперь происходит магия. Метод `Save` проходит по каждому ресурсу, вызывает `HandleResource` и записывает байты в возвращённый поток. Поскольку наш обработчик каждый раз возвращает новый `MemoryStream`, Aspose.Html позже собирает все эти потоки и упаковывает их в `output.zip`. + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**Что вы увидите:** +- `output.zip` в корне папки проекта. +- Внутри ZIP‑файла: `index.html` (главная страница) и подпапки вроде `images/`, `css/`, `scripts/` с теми же файлами, которые запросил бы браузер. + +## Шаг 5: Проверить результат (по желанию, но рекомендуется) + +Быстрая проверка гарантирует, что вы действительно **save webpage resources** корректно. + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +Вы должны увидеть записи для `index.html`, всех связанных изображений (`logo.png`), CSS‑файлов и JavaScript‑файлов. Если чего‑то не хватает, проверьте логику `ResourceInfo` в `MyHandler`. + +## Полный рабочий пример + +Собрав всё вместе, получаем полную программу, которую можно скопировать в консольное приложение. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Запустите программу (`dotnet run`), и у вас появится аккуратный `output.zip`. Откройте его в любом архиваторе — вы сможете просматривать сохранённую страницу офлайн, что именно нужно для функции **download html as zip**. + +## Часто задаваемые вопросы и особые случаи + +| Вопрос | Ответ | +|----------|--------| +| *Что делать, если нужно хранить ZIP в Azure Blob Storage?* | Замените `MemoryStream` на поток, который пишет напрямую в блоб (например, `CloudBlockBlob.OpenWrite()`). Абстракция обработчика делает это тривиальным. | +| *Можно ли отфильтровать определённые ресурсы?* | Да. Внутри `HandleResource` проверяйте `info.ResourceType` или `info.Url`. Верните `null`, чтобы пропустить ресурс, или поток, который ничего не пишет. | +| *Можно ли защитить ZIP паролем?* | У `ZipSaveOptions` есть свойство `Password`. Установите его перед вызовом `Save`, если нужна шифровка. | +| *Как быть с большими страницами, содержащими десятки мегабайт ресурсов?* | Использование `MemoryStream` для всего может исчерпать ОЗУ. Перейдите на `FileStream`, который пишет во временную папку, а затем позвольте Aspose.Html сжать эти файлы. | +| *Работает ли это в .NET Core на Linux?* | Абсолютно. Aspose.Html кроссплатформенный; просто убедитесь, что среда выполнения имеет права на запись файлов. | + +## Профессиональные советы + +- **Pro tip:** Если вам нужны только HTML и изображения, проверяйте `info.ResourceType == ResourceType.Image` и пропускайте скрипты или шрифты, чтобы ZIP оставался небольшим. +- **Осторожно:** некоторые сайты блокируют автоматические запросы. Установите пользовательский `User-Agent` через `HtmlLoadOptions`, если получаете ошибку 403. +- **Подсказка:** После создания ZIP‑файла вы можете отдать его напрямую из контроллера ASP.NET с помощью `FileResult`, предоставив пользователям кнопку **download html as zip** в один клик. + +## Заключение + +Теперь у вас есть надёжный, готовый к продакшну способ **save html as zip** с помощью Aspose.Html и **custom resource handler**. Загружая любой URL, настраивая `ZipSaveOptions` и позволяя обработчику поставлять потоки, вы можете **convert url to zip**, **download html as zip** и **save webpage resources** всего несколькими строками C#. + +Экспериментируйте — сохраняйте потоки на диск, в облако или даже в базу данных. Паттерн остаётся тем же, а результат — аккуратный архив, который можно распространять, кэшировать или навсегда архивировать. + +--- + +![Diagram illustrating the save html as zip workflow – from loading a URL to producing a ZIP file](/images/save-html-as-zip.png) + +*Image alt text:* **save html as zip workflow diagram** + +Если этот учебник оказался полезным, оставьте комментарий, поделитесь им с коллегой или поставьте звёздочку репозиторию, где храните свои утилиты. Приятного кодинга! + +{{< /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/russian/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/russian/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..05a235687 --- /dev/null +++ b/html/russian/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,218 @@ +--- +category: general +date: 2026-04-19 +description: Сохраните веб‑страницу в виде zip с помощью Aspose.HTML на C#. Узнайте, + как преобразовать URL в zip, экспортировать HTML в zip и загрузить веб‑страницу + в zip с простым примером кода. +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: ru +og_description: Сохраните веб‑страницу в виде zip с помощью Aspose.HTML в C#. Это + руководство показывает, как преобразовать URL в zip, экспортировать HTML в zip и + скачать веб‑страницу в виде zip за несколько шагов. +og_title: Сохранить веб‑страницу в ZIP с помощью Aspose.HTML – Полный учебник по C# +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: Сохранить веб‑страницу в ZIP с помощью Aspose.HTML – полный учебник C# +url: /ru/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Сохранить веб‑страницу в ZIP с Aspose.HTML – Полный C#‑урок + +Нужно **сохранить веб‑страницу в zip** для офлайн‑архивирования, автоматического тестирования или просто отправки снимка сайта? Вы не одиноки. В этом руководстве мы пройдемся по тому, как **преобразовать URL в zip**, **экспортировать HTML в zip**, а также **скачать веб‑страницу как zip** с помощью нескольких чистых строк C#. + +Мы охватим всё: от настройки проекта до финального ZIP‑файла на диске, и добавим несколько практических советов, которых нет в официальной документации. К концу вы получите переиспользуемое решение, которое может **создавать zip из html** в любой момент. + +## Что понадобится + +- **.NET 6.0** (или любая современная версия .NET) – Aspose.HTML работает как с .NET Core, так и с .NET Framework. +- **Aspose.HTML for .NET** NuGet‑пакет – `Install-Package Aspose.HTML`. +- Небольшой опыт работы с C# – если вы умеете писать `Console.WriteLine`, вам достаточно. +- Машина с подключением к интернету для первоначальной загрузки (сам код работает офлайн после создания ZIP‑а). + +Никаких дополнительных SDK, без безголовых браузеров, только чистый .NET и Aspose.HTML. + +![Illustration of saving webpage as zip using Aspose.HTML](save-webpage-as-zip.png "Diagram showing save webpage as zip workflow") + +## Сохранить веб‑страницу в ZIP – Обзор + +На высоком уровне процесс состоит из трёх частей: + +1. **Пользовательский `ResourceHandler`**, который сообщает Aspose.HTML, куда записывать каждый внешний ресурс (изображения, CSS, скрипты). +2. **`ZipSaveOptions`**, связывающий обработчик с ZIP‑архивом и позволяющий настроить рендеринг (анти‑алиасинг, подсказки шрифтов и т.д.). +3. **Вызов `HTMLDocument.Save`**, который собирает всё вместе, потоково записывая страницу и все её ресурсы в ZIP‑файл. + +Вот и всё. Тяжёлую работу делает Aspose.HTML, поэтому вы можете сосредоточиться на «почему» и «когда», а не возиться с низкоуровневыми потоками. + +--- + +## Шаг 1: Настройка проекта и добавление Aspose.HTML + +Сначала создайте новый консольный проект (или вставьте код в существующее приложение). Откройте терминал и выполните: + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +Пакет `Aspose.HTML` поставляется со всеми типами, которые нам понадобятся: `HTMLDocument`, `ZipSaveOptions`, `ImageRenderingOptions` и абстрактный `ResourceHandler`. + +> **Pro tip:** Если вы нацелены на .NET Framework, замените команды `dotnet` на UI NuGet Package Manager в Visual Studio – те же DLL‑ы будут добавлены. + +--- + +## Шаг 2: Создание пользовательского обработчика ресурсов `ZipHandler` + +Aspose.HTML вызывает `HandleResource` для каждого внешнего файла, который он встречает при разборе страницы. Переопределив этот метод, мы можем направлять каждый ресурс в запись ZIP‑архива вместо файловой системы. + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### Почему нужен пользовательский обработчик? + +Без него Aspose.HTML сохранял бы ресурсы рядом с HTML‑файлом на диске. Направив их в `ZipArchive`, мы получаем **всё упакованным** – идеально для распространения или последующего извлечения другим сервисом. + +--- + +## Шаг 3: Настройка `ZipSaveOptions` с рендерингом изображений + +Теперь связываем обработчик с параметрами сохранения и включаем несколько настроек рендеринга, которые повышают визуальное качество скриншотов или PDF‑подобных конвертаций. + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **Почему включать анти‑алиасинг и подсказки?** Когда страница позже будет отрисована в bitmap (например, для миниатюры), эти флаги уменьшают зубчатость и делают мелкие шрифты читаемыми — особенно важно, если вы планируете встраивать изображения в другие места. + +--- + +## Шаг 4: Загрузка HTML‑документа и сохранение в ZIP + +С готовыми обработчиком и параметрами загрузка удалённой страницы сводится к передаче её URL в `HTMLDocument`. Метод `Save` вызовет `HandleResource` для каждого связанного ресурса. + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +На этом этапе `zipStream` содержит полный **ZIP‑архив, включающий**: + +- `index.html` (главная страница) +- Все CSS‑файлы, указанные в тегах `` +- Изображения, шрифты и JavaScript‑файлы, необходимые для офлайн‑отображения страницы + +### Пограничные случаи и варианты + +| Ситуация | Что нужно изменить | +|----------------------------------------|------------------------------------------------------------------------------------------| +| **Требуется аутентификация** | Используйте `HTMLDocument(string url, LoadOptions options)` и задайте `options.Credentials`. | +| **Очень большие страницы (>100 МБ)** | Пишите напрямую в `FileStream` вместо `MemoryStream`, чтобы избежать высокого потребления ОЗУ. | +| **Относительные URL, начинающиеся с “//”** | Обработчик автоматически нормализует их; просто убедитесь, что `BaseUrl` установлен. | +| **Пользовательская структура папок внутри ZIP** | Измените `info.Path` в `HandleResource` перед созданием записи. | + +--- + +## Шаг 5: Сохранить ZIP‑файл и проверить результат + +Наконец, записываем ZIP из памяти на диск. Этот шаг необязателен, если вы планируете передавать поток по сети, но упрощает проверку. + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**Ожидаемый результат:** Открытие `result.zip` показывает файл `index.html`, который при открытии в браузере офлайн выглядит точно так же, как живой сайт (при условии, что все внешние ресурсы были доступны во время загрузки). + +--- + +## Часто задаваемые вопросы + +**В: Работает ли такой подход со страницами, использующими lazy‑loaded изображения?** +О: Да, при условии, что изображения запрашиваются во время первоначального обхода DOM. Если скрипт подгружает изображения после загрузки страницы, возможно, понадобится вручную вызвать «рендер» через `document.Render()` перед `Save`. + +**В: Можно ли дополнительно сжать ZIP?** +О: API `ZipArchive` использует уровень сжатия по умолчанию. Для более агрессивного сжатия создайте его так: `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)`. + +**В: Как создать ZIP с паролем?** +О: Встроенный `ZipArchive` шифрование не поддерживает. В этом случае пропустите выходной поток через стороннюю библиотеку, например `SharpZipLib`, после завершения записи Aspose.HTML. + +--- + +## Профессиональные советы для продакшн‑использования + +- **Повторно используйте `ZipHandler`** при обработке множества страниц в пакете; просто сбрасывайте базовый `MemoryStream` между запусками. +- **Log + +{{< /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/spanish/net/generate-jpg-and-png-images/_index.md b/html/spanish/net/generate-jpg-and-png-images/_index.md index 4323c4591..d716d8b80 100644 --- a/html/spanish/net/generate-jpg-and-png-images/_index.md +++ b/html/spanish/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aprenda a utilizar Aspose.HTML para .NET para manipular documentos HTML, convert Aprenda a activar el antialiasing al convertir documentos DOCX a imágenes PNG o JPG usando Aspose.HTML para .NET. ### [Convertir docx a PNG – crear archivo ZIP con C# tutorial](./convert-docx-to-png-create-zip-archive-c-tutorial/) Aprenda a convertir documentos DOCX a imágenes PNG y empaquetarlos en un archivo ZIP usando C#. +### [Cómo renderizar HTML a PNG – Guía completa en C#](./how-to-render-html-to-png-complete-c-guide/) +Aprenda a convertir HTML a PNG usando C# con Aspose.HTML, paso a paso y con ejemplos completos. ## Conclusión diff --git a/html/spanish/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/spanish/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..c5a91540a --- /dev/null +++ b/html/spanish/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,158 @@ +--- +category: general +date: 2026-04-19 +description: Cómo renderizar HTML a PNG con Aspose.Html. Aprende a convertir HTML + a PNG, guardar HTML como PNG y crear una imagen a partir de HTML en minutos. +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: es +og_description: Cómo renderizar HTML a PNG con Aspose.Html. Sigue este tutorial paso + a paso para convertir HTML a PNG, guardar HTML como PNG y crear una imagen a partir + de HTML. +og_title: Cómo renderizar HTML a PNG – Guía completa de C# +tags: +- Aspose.Html +- C# +title: Cómo renderizar HTML a PNG – Guía completa de C# +url: /es/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo Renderizar HTML a PNG – Guía Completa en C# + +¿Alguna vez te has preguntado **cómo renderizar HTML** en un archivo de imagen sin abrir un navegador? No eres el único. En muchos proyectos—miniaturas de correos electrónicos, generación de PDF o simplemente vistas previas rápidas—necesitas **convertir HTML a PNG** al instante. + +En este tutorial recorreremos una solución práctica usando Aspose.Html para .NET, cubriendo todo desde la instalación de la biblioteca hasta el ajuste del hinting de texto para fuentes pequeñas nítidas. Al final podrás **guardar HTML como PNG**, **crear una imagen a partir de HTML**, e incluso ajustar opciones de renderizado para escenarios extremos. + +## Lo que Necesitarás + +- **.NET 6+** (o .NET Framework 4.6.2+). La API funciona igual en todos los entornos. +- Paquete NuGet **Aspose.Html** – `Install-Package Aspose.Html`. +- Un archivo HTML sencillo (p.ej., `article.html`) que deseas convertir en una imagen. +- Visual Studio, Rider o cualquier editor que prefieras. + +Eso es todo—sin dependencias adicionales, sin Chrome sin cabeza, solo C# puro. + +## Paso 1: Instalar Aspose.Html y Añadir Namespaces + +Primero, obtén la biblioteca desde NuGet. Abre la Consola del Administrador de Paquetes y ejecuta: + +```powershell +Install-Package Aspose.Html +``` + +Una vez instalada, añade las directivas `using` requeridas al inicio de tu archivo: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +Estos namespaces te dan acceso al modelo de documento, al renderizado de imágenes y a las opciones de texto de gran detalle que necesitaremos más adelante. + +> **Consejo profesional:** Si estás usando un archivo .csproj, también puedes añadir manualmente ``. + +## Paso 2: Cargar el Documento HTML + +Necesitas una instancia de `HTMLDocument` que apunte al archivo fuente. Aspose.Html puede leer desde una ruta, un stream o incluso una URL. + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Por qué es importante:** Cargar el documento una sola vez mantiene bajo el uso de memoria. Si planeas renderizar muchas páginas, reutiliza el mismo objeto `HTMLDocument` siempre que sea posible. + +## Paso 3: Ajustar el Renderizado de Texto para Fuentes Pequeñas + +Al renderizar texto diminuto, a menudo obtienes bordes borrosos. Habilitar el hinting indica al rasterizador que alinee los glifos a los límites de píxeles, mejorando drásticamente la legibilidad. + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +También puedes controlar el anti‑aliasing, el renderizado subpíxel o incluso especificar una colección de fuentes personalizada aquí—útil si tu HTML hace referencia a fuentes web. + +## Paso 4: Configurar Opciones de Renderizado de Imagen + +Ahora vinculamos `TextOptions` a la configuración de la imagen. También puedes establecer el color de fondo, DPI o formato de imagen (PNG, JPEG, BMP). + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **Caso extremo:** Si tu HTML es más ancho que las dimensiones típicas de pantalla, considera establecer `Width` y `Height` en `ImageRenderingOptions` para evitar PNGs gigantes. + +## Paso 5: Renderizar el HTML a un Archivo PNG + +Finalmente, llama a `RenderToImage`. La sobrecarga del método que usamos nos permite especificar la ruta de salida y las opciones que acabamos de crear. + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +Al ejecutar el programa, Aspose.Html analiza el marcado, aplica CSS, dispone la página y la rasteriza en `article.png`. Abre el archivo con cualquier visor de imágenes—deberías ver una captura pixel‑perfecta de tu HTML original. + +![cómo renderizar html como PNG usando Aspose.Html](render-html-png.png) + +*Texto alternativo de la imagen: **cómo renderizar html** como PNG usando Aspose.Html* + +## Bonus: Manejo de Múltiples Páginas o Escalado + +A veces un solo archivo HTML contiene varias secciones `` (p.ej., para impresión). Puedes iterar sobre `htmlDoc.Pages` y renderizar cada página individualmente: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +Si necesitas una miniatura en lugar de una imagen de tamaño completo, ajusta `imgOpts.Width` y `imgOpts.Height` antes de renderizar. La biblioteca preservará la relación de aspecto automáticamente. + +--- + +## Conclusión + +Ahora tienes una receta sólida y lista para producción para **cómo renderizar HTML** en una imagen PNG usando Aspose.Html. Desde la instalación del paquete, la carga de tu marcado, el ajuste fino del hinting de texto, hasta finalmente llamar a `RenderToImage`, cada paso está cubierto. + +Con este conocimiento puedes **convertir HTML a PNG**, **guardar HTML como PNG**, y **crear una imagen a partir de HTML** para cualquier aplicación .NET—ya sea un servicio web que genera miniaturas o una herramienta de escritorio que archiva páginas web. + +A continuación, explora temas relacionados como **renderizar HTML a imagen** con diferentes formatos (JPEG, BMP) o incrustar el PNG en un PDF usando Aspose.PDF. También podrías experimentar con escalado DPI para impresiones de alta resolución, o alimentar HTML dinámico generado al vuelo en la misma canalización. + +¿Tienes preguntas o un caso de uso curioso? Deja un comentario abajo, ¡y feliz renderizado! + +{{< /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/spanish/net/html-extensions-and-conversions/_index.md b/html/spanish/net/html-extensions-and-conversions/_index.md index 58e38eec4..36ec9480a 100644 --- a/html/spanish/net/html-extensions-and-conversions/_index.md +++ b/html/spanish/net/html-extensions-and-conversions/_index.md @@ -63,8 +63,14 @@ Aprenda a convertir HTML a Markdown en .NET con Aspose.HTML para manipular conte Convierta HTML a MHTML en .NET con Aspose.HTML: una guía paso a paso para archivar contenido web de manera eficiente. Aprenda a usar Aspose.HTML para .NET para crear archivos MHTML. ### [Convierte HTML a PNG en .NET con Aspose.HTML](./convert-html-to-png/) Descubra cómo utilizar Aspose.HTML para .NET para manipular y convertir documentos HTML. Guía paso a paso para un desarrollo .NET eficaz. +### [Convertir HTML a PNG en C# – Renderizar HTML como imagen](./convert-html-to-png-in-c-render-html-as-image/) +Aprenda a renderizar HTML como imagen PNG usando C# y Aspose.HTML, con ejemplos de código paso a paso. ### [Guardar HTML como ZIP – Tutorial completo en C#](./save-html-as-zip-complete-c-tutorial/) Aprenda a guardar documentos HTML como archivos ZIP usando Aspose.HTML para .NET con este tutorial paso a paso en C#. +### [Guardar HTML como ZIP con un controlador de recursos personalizado – guía paso a paso](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +Aprenda a guardar HTML en un archivo ZIP utilizando un controlador de recursos personalizado con Aspose.HTML para .NET paso a paso. +### [Guardar página web como ZIP con Aspose.HTML – Tutorial completo en C#](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +Aprenda a guardar una página web como archivo ZIP usando Aspose.HTML en C# con este tutorial paso a paso. ### [Convierte HTML a TIFF en .NET con Aspose.HTML](./convert-html-to-tiff/) Aprenda a convertir HTML a TIFF con Aspose.HTML para .NET. Siga nuestra guía paso a paso para optimizar eficazmente el contenido web. ### [Convierta HTML a XPS en .NET con Aspose.HTML](./convert-html-to-xps/) diff --git a/html/spanish/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/spanish/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..6f54ed3f2 --- /dev/null +++ b/html/spanish/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,214 @@ +--- +category: general +date: 2026-04-19 +description: Convertir HTML a PNG en C# usando Aspose.HTML – una guía rápida para + renderizar HTML como imagen y guardar el gráfico como PNG con anti‑aliasing. +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: es +og_description: Convierte HTML a PNG en C# rápidamente. Aprende cómo renderizar HTML + como imagen, guardar un gráfico como PNG y generar PNG a partir de HTML con Aspose.HTML. +og_title: Convertir HTML a PNG en C# – Renderizar HTML como imagen +tags: +- Aspose.HTML +- C# +- Image Processing +title: Convertir HTML a PNG en C# – Renderizar HTML como imagen +url: /es/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Convertir HTML a PNG en C# – Renderizar HTML como Imagen + +¿Alguna vez necesitaste **convertir HTML a PNG** en C# pero no estabas seguro de qué biblioteca te daría un resultado nítido? No estás solo. Ya sea que estés exportando un gráfico dinámico, convirtiendo una plantilla de correo electrónico en una miniatura, o simplemente necesites una captura estática de una página web, la capacidad de **renderizar HTML como imagen** es un truco útil en la caja de herramientas de cualquier desarrollador. + +En este tutorial recorreremos todo el proceso de convertir un archivo HTML en un archivo PNG con Aspose.HTML. Al final podrás **guardar gráfico como PNG**, **generar PNG desde HTML**, e incluso ajustar la configuración de anti‑aliasing para obtener ese aspecto pulido. Sin rodeos—solo un ejemplo completo y ejecutable que puedes incorporar a tu proyecto hoy. + +## Lo que necesitarás + +- **.NET 6.0** o posterior (el código también funciona en .NET Framework 4.6+). +- **Aspose.HTML for .NET** – puedes obtenerlo de NuGet con `Install-Package Aspose.HTML`. +- Un archivo HTML sencillo (p. ej., `chart.html`) que contenga el marcado que deseas capturar. +- Un IDE de tu elección—Visual Studio, Rider, o incluso VS Code sirve. + +Eso es todo. Sin dependencias adicionales, sin navegadores sin cabeza, solo una única biblioteca bien documentada. + +![Convert HTML to PNG example](example.png "Convert HTML to PNG output") + +## Paso 1: Cargar el documento HTML + +Lo primero que debemos hacer es indicar a Aspose.HTML el archivo fuente. Piensa en la clase `HTMLDocument` como el lienzo que contiene todo lo que la biblioteca pintará después en un mapa de bits. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*Por qué es importante:* Cargar el documento separa la fase de análisis de la fase de renderizado. Le da al motor la oportunidad de resolver CSS, scripts e imágenes antes de pedirle que genere un PNG. Si omites este paso y tratas de renderizar marcado sin procesar, terminarás con una imagen en blanco o con estilos faltantes. + +## Paso 2: Configurar las opciones de renderizado de imagen + +Aspose.HTML, tal cual, te proporcionará un PNG decente, pero a menudo deseas bordes más suaves—especialmente para gráficos y vectores. Ahí es donde entra `ImageRenderingOptions`. + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*Consejo profesional:* Si trabajas con pantallas de alta DPI, incrementa `Width` y `Height` proporcionalmente y permite que el PNG sea más grande. Siempre puedes reducirlo después con un editor de imágenes. Además, establecer un color de fondo evita que los PNG transparentes se vean extraños en páginas oscuras. + +## Paso 3: Renderizar el HTML a un archivo PNG + +Ahora ocurre el trabajo pesado. El método `RenderToImage` toma la ruta de salida y las opciones que acabamos de definir, y escribe un PNG en el disco. + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +Cuando esta línea termine, encontrarás `chart.png` en la carpeta de destino. Ábrelo—¿el gráfico se ve nítido? Si activaste el anti‑aliasing, las líneas deberían ser suaves y cualquier texto debería estar claro. + +### Verificando el resultado + +Puedes verificar rápidamente la imagen programáticamente: + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +Si la consola muestra dimensiones distintas de cero y un formato de píxel compatible (p. ej., `Format32bppArgb`), has convertido HTML a PNG con éxito. + +## Renderizar HTML como Imagen – Opciones avanzadas + +Hasta ahora hemos cubierto lo básico, pero los escenarios del mundo real a menudo requieren un poco más de control. A continuación, algunos ajustes comunes que podrías necesitar. + +### Ajustar DPI para salida de calidad de impresión + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +Un DPI más alto es ideal cuando planeas incrustar el PNG en un PDF o imprimirlo en papel. + +### Manejo de recursos externos + +Si tu HTML hace referencia a CSS, fuentes o imágenes externas alojadas en un servidor web, asegúrate de que el tiempo de ejecución pueda acceder a ellas. Puedes establecer una `BaseUrl` personalizada: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +Esto indica a Aspose.HTML que resuelva las URLs relativas contra la URL base proporcionada. + +### Convertir múltiples páginas + +Aspose.HTML puede renderizar cada página de un documento HTML multipágina en archivos PNG separados: + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +De esa manera puedes **guardar gráfico como PNG** para cada página sin cortar manualmente la salida. + +## Guardar gráfico como PNG – Problemas comunes y cómo evitarlos + +1. **Fuentes faltantes:** Si el HTML usa una fuente personalizada que no está instalada en el servidor, el PNG renderizado recurrirá a una fuente predeterminada. Instala la fuente en la máquina o incrústala mediante `@font-face` en tu CSS. +2. **Archivos grandes:** Renderizar un archivo HTML masivo puede consumir mucha memoria. Considera paginar el contenido o reducir las dimensiones de la imagen. +3. **Fondos transparentes:** Por defecto, los PNG pueden ser transparentes. Si necesitas un fondo opaco (p. ej., para miniaturas de correo), establece `BackgroundColor` como se mostró antes. +4. **Ejecución de scripts:** Aspose.HTML no ejecuta JavaScript. Si tu gráfico se construye con una biblioteca del lado del cliente como Chart.js, deberás pre‑renderizar el gráfico a un elemento `` estático o usar un navegador sin cabeza en su lugar. + +## Ejemplo completo y funcional + +A continuación se muestra el programa completo que puedes copiar y pegar en una aplicación de consola. Incluye todos los pasos, manejo de errores y ajustes opcionales discutidos anteriormente. + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +Ejecuta el programa y verás un mensaje de confirmación seguido de las dimensiones de la imagen. Abre `chart.png` en cualquier visor para confirmar que el gráfico se ve exactamente como el HTML original. + +## Conclusión + +Ahora tienes una base sólida, + +{{< /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/spanish/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/spanish/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..2a21bdc99 --- /dev/null +++ b/html/spanish/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-04-19 +description: Aprende cómo guardar HTML como ZIP usando Aspose.Html y un controlador + de recursos personalizado. También descubre cómo convertir URL a ZIP y descargar + HTML como ZIP en minutos. +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: es +og_description: 'Guardar HTML como ZIP de forma sencilla: use Aspose.Html, un manejador + de recursos personalizado y ZipSaveOptions para convertir cualquier URL en un archivo + ZIP descargable.' +og_title: guardar html como zip con un manejador de recursos personalizado – tutorial + rápido +tags: +- Aspose.Html +- C# +- Web scraping +title: guardar html como zip con un controlador de recursos personalizado – guía paso + a paso +url: /es/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# guardar html como zip – Tutorial completo + +¿Alguna vez necesitaste **save html as zip** para poder enviar una página completa con sus imágenes, CSS y scripts en un solo paquete ordenado? Tal vez estés construyendo un rastreador que archiva artículos, o simplemente quieras un botón rápido de “download html as zip” para tus usuarios. Sea cual sea el caso, probablemente te estés preguntando cómo hacerlo sin escribir un millón de líneas de código de entrada‑salida de archivos. + +Aquí tienes la buena noticia: Aspose.Html hace el trabajo pan comido, y con un **custom resource handler** puedes decidir exactamente dónde va cada flujo de recursos. En esta guía también te mostraremos cómo **convert url to zip**, cómo **download html as zip**, y cómo **save webpage resources** para uso sin conexión, todo en un único programa C# autocontenido. + +## Lo que aprenderás + +- Instalar la biblioteca Aspose.Html (NuGet lo hace sin complicaciones). +- Escribir un `ResourceHandler` que proporcione un `Stream` para cada recurso que Aspose.Html necesite escribir. +- Cargar una página remota (o un archivo local) y decirle a Aspose.Html que empaquete todo en un archivo ZIP. +- Verificar que el `output.zip` resultante contenga el archivo HTML más todos los recursos enlazados. + +Sin herramientas externas, sin manipular manualmente archivos zip, solo código limpio y compilado que puedes incorporar a cualquier proyecto .NET. + +## Requisitos previos + +| Requisito | Por qué es importante | +|-------------|----------------| +| .NET 6.0 o posterior (el código también funciona en .NET Framework 4.7+) | Aspose.Html apunta a entornos de ejecución modernos; los frameworks más antiguos pueden carecer de algunas APIs. | +| Visual Studio 2022 (o cualquier IDE que prefieras) | Útil para depurar y ver el ZIP generado. | +| Acceso a Internet para la URL de ejemplo (`https://example.com`) | Obtendremos una página en vivo para demostrar **convert url to zip**. | +| Paquete NuGet `Aspose.Html` (v23.12 o más reciente) | Esta biblioteca proporciona `HTMLDocument`, `ZipSaveOptions` y la clase base `ResourceHandler`. | + +Si ya tienes un proyecto .NET, simplemente ejecuta: + +```bash +dotnet add package Aspose.Html +``` + +Eso es todo lo que necesitas configurar. + +## Paso 1: Crear un controlador de recursos personalizado + +El corazón de la solución es una clase que hereda de `ResourceHandler`. Aspose.Html llama a `HandleResource` para cada archivo que desea escribir —HTML, imágenes, CSS, JavaScript, lo que sea. Al devolver un `Stream` decides dónde aterrizan los datos. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**¿Por qué un controlador personalizado?** +Porque la interfaz más antigua `IOutputStorage` está obsoleta, y `ResourceHandler` te brinda control total sobre el destino de salida. Además te permite inspeccionar `ResourceInfo`, lo cual es útil si solo deseas conservar imágenes y omitir fuentes, por ejemplo. + +## Paso 2: Cargar el documento HTML (o convertir URL a Zip) + +Aspose.Html puede cargar desde una URL, una ruta de archivo o una cadena HTML cruda. Aquí demostramos la carga de una página en vivo, que es el caso típico cuando quieres **download html as zip**. + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +Si ya tienes el código fuente HTML en una variable, simplemente pásalo al constructor: + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## Paso 3: Configurar el controlador en ZipSaveOptions + +`ZipSaveOptions` indica a Aspose.Html *cómo* crear el archivo ZIP. La propiedad crucial es `OutputStorage`, que establecemos en nuestra instancia `MyHandler`. + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +También puedes ajustar el nivel de compresión, los nombres de carpetas dentro del archivo, o incluso incrustar un archivo de manifiesto; los detalles están en la documentación de Aspose, pero los valores predeterminados funcionan muy bien para la mayoría de los escenarios. + +## Paso 4: Guardar el documento como archivo ZIP + +Ahora ocurre la magia. El método `Save` recorre cada recurso, llama a `HandleResource` y escribe los bytes en el flujo devuelto. Como nuestro controlador devuelve un nuevo `MemoryStream` cada vez, Aspose.Html recopilará todos esos flujos y los empaquetará en `output.zip`. + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**Lo que verás:** +- `output.zip` en la raíz de la carpeta de tu proyecto. +- Dentro del ZIP: `index.html` (la página principal) más subcarpetas como `images/`, `css/`, `scripts/` que contienen exactamente los archivos que el navegador habría solicitado. + +## Paso 5: Verificar el resultado (Opcional pero recomendado) + +Una rápida comprobación de sanidad asegura que realmente **save webpage resources** se haya realizado correctamente. + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +Deberías ver entradas para `index.html`, cualquier imagen enlazada (`logo.png`), archivos CSS y archivos JavaScript. Si falta algo, revisa la lógica de `ResourceInfo` en `MyHandler`. + +## Ejemplo completo funcionando + +Juntando todo, aquí tienes el programa completo que puedes copiar y pegar en una aplicación de consola. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Ejecuta el programa (`dotnet run`) y obtendrás un elegante `output.zip`. Ábrelo con cualquier gestor de archivos y podrás navegar la página guardada sin conexión —exactamente lo que necesitas para la funcionalidad **download html as zip**. + +## Preguntas frecuentes y casos límite + +| Pregunta | Respuesta | +|----------|-----------| +| *¿Qué pasa si necesito almacenar el ZIP en Azure Blob Storage?* | Reemplaza `MemoryStream` por un flujo que escriba directamente a un blob (p. ej., `CloudBlockBlob.OpenWrite()`). La abstracción del controlador lo hace trivial. | +| *¿Puedo filtrar ciertos recursos?* | Sí. Dentro de `HandleResource`, inspecciona `info.ResourceType` o `info.Url`. Devuelve `null` para omitir un recurso, o un flujo que no escriba nada. | +| *¿El ZIP está protegido con contraseña?* | `ZipSaveOptions` tiene una propiedad `Password`. Establécela antes de llamar a `Save` si necesitas cifrado. | +| *¿Qué ocurre con páginas grandes que tienen decenas de megabytes de recursos?* | Usar `MemoryStream` para todo puede agotar la RAM. Cambia a un `FileStream` que escriba en una carpeta temporal, y luego deja que Aspose.Html comprima esos archivos. | +| *¿Funciona en .NET Core en Linux?* | Absolutamente. Aspose.Html es multiplataforma; solo asegúrate de que el entorno tenga permisos para escribir archivos. | + +## Consejos profesionales + +- **Consejo pro:** Si solo te importan el HTML y las imágenes, verifica `info.ResourceType == ResourceType.Image` y omite scripts o fuentes para mantener el ZIP pequeño. +- **Cuidado con:** algunos sitios bloquean solicitudes automatizadas. Configura un `User-Agent` personalizado mediante `HtmlLoadOptions` si recibes un error 403. +- **Tip:** Después de crear el ZIP, puedes servirlo directamente desde un controlador ASP.NET usando `FileResult`, ofreciendo a tus usuarios un botón de **download html as zip** con un solo clic. + +## Conclusión + +Ahora dispones de una forma sólida y lista para producción de **save html as zip** usando Aspose.Html y un **custom resource handler**. Al cargar cualquier URL, configurar `ZipSaveOptions` y dejar que el controlador proporcione los flujos, puedes **convert url to zip**, **download html as zip** y **save webpage resources** con solo unas pocas líneas de C#. + +Siéntete libre de experimentar —almacena los flujos en disco, en la nube o incluso en una base de datos. El patrón sigue siendo el mismo, y el resultado siempre será un archivo ordenado que puedes distribuir, cachear o archivar para siempre. + +--- + +![Diagrama que ilustra el flujo de guardar html como zip – desde cargar una URL hasta producir un archivo ZIP](/images/save-html-as-zip.png) + +*Texto alternativo de la imagen:* **diagrama del flujo de guardar html como zip** + +Si este tutorial te resultó útil, deja un comentario, compártelo con un compañero o marca con estrella el repositorio donde guardas tus scripts de utilidad. ¡Feliz codificación! + +{{< /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/spanish/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/spanish/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..f2e2f6259 --- /dev/null +++ b/html/spanish/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,218 @@ +--- +category: general +date: 2026-04-19 +description: Guardar página web como zip usando Aspose.HTML en C#. Aprende cómo convertir + una URL a zip, exportar HTML a zip y descargar la página web como zip con un ejemplo + de código sencillo. +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: es +og_description: Guarda una página web como zip con Aspose.HTML en C#. Esta guía muestra + cómo convertir una URL a zip, exportar HTML a zip y descargar la página web como + zip en solo unos pocos pasos. +og_title: Guardar página web como ZIP con Aspose.HTML – Tutorial completo de C# +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: Guardar página web como ZIP con Aspose.HTML – Tutorial completo en C# +url: /es/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Guardar página web como ZIP con Aspose.HTML – Tutorial completo en C# + +¿Necesitas **guardar una página web como zip** para archivado offline, pruebas automatizadas o simplemente para enviar una instantánea de un sitio? No estás solo. En este tutorial veremos cómo **convertir URL a zip**, **exportar HTML a zip**, e incluso **descargar página web como zip** con unas pocas líneas limpias de C#. + +Cubrirémos todo, desde la configuración del proyecto hasta el archivo ZIP final en disco, y añadiremos algunos consejos prácticos que no encontrarás en la documentación oficial. Al final tendrás una solución reutilizable que puede **crear zip desde html** siempre que lo necesites. + +## Lo que necesitarás + +- **.NET 6.0** (o cualquier versión reciente de .NET) – Aspose.HTML funciona tanto con .NET Core como con .NET Framework. +- **Aspose.HTML for .NET** paquete NuGet – `Install-Package Aspose.HTML`. +- Una cantidad moderada de experiencia en C# – si puedes escribir un `Console.WriteLine`, estás listo. +- Una máquina con conexión a internet para la descarga inicial (el código en sí funciona offline una vez creado el ZIP). + +Sin SDKs adicionales, sin navegadores sin cabeza, solo .NET puro y Aspose.HTML. + +![Illustration of saving webpage as zip using Aspose.HTML](save-webpage-as-zip.png "Diagram showing save webpage as zip workflow") + +## Guardar página web como ZIP – Visión general + +A nivel alto, el proceso consta de tres partes móviles: + +1. **Un `ResourceHandler` personalizado** que indica a Aspose.HTML dónde escribir cada recurso externo (imágenes, CSS, scripts). +2. **`ZipSaveOptions`** que enlaza el manejador a un archivo ZIP y te permite ajustar la renderización (antialiasing, sugerencias de fuentes, etc.). +3. **La llamada `HTMLDocument.Save`** que reúne todo, transmite la página y todos sus recursos al archivo ZIP. + +Eso es todo. El trabajo pesado lo realiza Aspose.HTML, así que puedes centrarte en el “por qué” y “cuándo” en lugar de luchar con flujos de bajo nivel. + +--- + +## Paso 1: Configura el proyecto y agrega Aspose.HTML + +First, spin up a new console project (or drop the code into an existing app). Open a terminal and run: + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +El paquete `Aspose.HTML` incluye todos los tipos que necesitaremos: `HTMLDocument`, `ZipSaveOptions`, `ImageRenderingOptions` y el abstracto `ResourceHandler`. + +> **Consejo profesional:** Si estás apuntando a .NET Framework, reemplaza los comandos `dotnet` con la UI del Administrador de paquetes NuGet en Visual Studio – se añaden los mismos DLLs. + +--- + +## Paso 2: Crea un manejador de recursos `ZipHandler` personalizado + +Aspose.HTML llama a `HandleResource` para cada archivo externo que encuentra al analizar la página. Al sobrescribir este método podemos dirigir cada recurso a una entrada ZIP en lugar del sistema de archivos. + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### ¿Por qué un manejador personalizado? + +Sin él, Aspose.HTML colocaría los recursos junto al archivo HTML en disco. Al alimentar un `ZipArchive`, mantenemos **todo empaquetado** – perfecto para distribución o para extracción posterior por otro servicio. + +--- + +## Paso 3: Configura `ZipSaveOptions` con renderizado de imágenes + +Ahora vinculamos el manejador a las opciones de guardado y activamos algunos ajustes de renderizado que mejoran la fidelidad visual de capturas de pantalla o conversiones tipo PDF. + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **¿Por qué habilitar antialiasing y hinting?** Cuando la página se renderiza posteriormente a un bitmap (p. ej., para una miniatura), estas banderas reducen los bordes dentados y hacen que las fuentes pequeñas sean legibles—especialmente importante si planeas incrustar las imágenes en otro lugar. + +--- + +## Paso 4: Carga el documento HTML y guárdalo en ZIP + +Con el manejador y las opciones listos, cargar una página remota es tan simple como pasar su URL a `HTMLDocument`. El método `Save` invocará `HandleResource` para cada recurso enlazado. + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +En este punto `zipStream` contiene un **archivo ZIP completo que incluye**: + +- `index.html` (la página principal) +- Todos los archivos CSS referenciados por etiquetas `` +- Imágenes, fuentes y archivos JavaScript necesarios para renderizar la página offline + +### Casos límite y variaciones + +| Situación | Qué ajustar | +|----------------------------------------|-----------------------------------------------------------------------------------| +| **Autenticación requerida** | Use `HTMLDocument(string url, LoadOptions options)` and set `options.Credentials`. | +| **Páginas muy grandes (>100 MB)** | Write directly to a `FileStream` instead of `MemoryStream` to avoid high RAM usage. | +| **URLs relativas que comienzan con “//”**| The handler automatically normalizes them; just ensure the `BaseUrl` is set. | +| **Estructura de carpetas personalizada dentro del ZIP**| Modify `info.Path` inside `HandleResource` before creating the entry. | + +--- + +## Paso 5: Persiste el archivo ZIP y verifica el resultado + +Finalmente, escribimos el ZIP en memoria a disco. Este paso es opcional si planeas enviar el flujo por la red, pero facilita la verificación. + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**Resultado esperado:** Al abrir `result.zip` se muestra un archivo `index.html` que, al abrirse en un navegador offline, se ve idéntico a la página en vivo (si todos los recursos externos fueron accesibles durante la descarga). + +--- + +## Preguntas comunes y respuestas + +**P: ¿Este enfoque funciona con páginas que usan imágenes cargadas de forma diferida (lazy‑loaded)?** +R: Sí, siempre que las imágenes se soliciten durante el recorrido inicial del DOM. Si un script carga imágenes después de la carga de la página, puede que necesites desencadenar un “render” manual llamando a `document.Render()` antes de `Save`. + +**P: ¿Puedo comprimir más el ZIP?** +R: La API `ZipArchive` usa el nivel de compresión predeterminado. Para una compresión agresiva, instáncialo con `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)`. + +**P: ¿Qué pasa si necesito un ZIP protegido con contraseña?** +R: El `ZipArchive` incorporado no soporta encriptación. En ese caso, canaliza el flujo de salida a través de una biblioteca de terceros como `SharpZipLib` después de que Aspose.HTML termine de escribir. + +--- + +## Consejos profesionales para uso en producción + +- **Reutiliza el `ZipHandler`** al procesar múltiples páginas en lote; simplemente restablece el `MemoryStream` subyacente entre ejecuciones. +- **Log + +{{< /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/swedish/net/generate-jpg-and-png-images/_index.md b/html/swedish/net/generate-jpg-and-png-images/_index.md index 39785fb46..d4d3d9ffd 100644 --- a/html/swedish/net/generate-jpg-and-png-images/_index.md +++ b/html/swedish/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Lär dig att använda Aspose.HTML för .NET för att manipulera HTML-dokument, k Lär dig hur du aktiverar kantutjämning för att förbättra bildkvaliteten när du konverterar DOCX-dokument till PNG eller JPG med Aspose.HTML. ### [Konvertera DOCX till PNG – skapa zip‑arkiv C#‑handledning](./convert-docx-to-png-create-zip-archive-c-tutorial/) Lär dig hur du konverterar DOCX-filer till PNG-bilder och packar dem i ett zip‑arkiv med C# och Aspose.HTML. +### [Hur du renderar HTML till PNG – Komplett C#-guide](./how-to-render-html-to-png-complete-c-guide/) +Lär dig steg-för-steg hur du konverterar HTML till PNG med C# och Aspose.HTML. ## Slutsats diff --git a/html/swedish/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/swedish/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..2397219e6 --- /dev/null +++ b/html/swedish/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,157 @@ +--- +category: general +date: 2026-04-19 +description: Hur man renderar HTML till PNG med Aspose.Html. Lär dig att konvertera + HTML till PNG, spara HTML som PNG och skapa bild från HTML på några minuter. +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: sv +og_description: Hur man renderar HTML till PNG med Aspose.Html. Följ den här steg‑för‑steg‑handledningen + för att konvertera HTML till PNG, spara HTML som PNG och skapa en bild från HTML. +og_title: Hur man renderar HTML till PNG – Komplett C#‑guide +tags: +- Aspose.Html +- C# +title: Hur man renderar HTML till PNG – Komplett C#‑guide +url: /sv/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Så renderar du HTML till PNG – Komplett C#‑guide + +Har du någonsin funderat **hur man renderar HTML** till en bildfil utan att starta en webbläsare? Du är inte ensam. I många projekt—e‑post‑miniatyrer, PDF‑generering eller bara snabba förhandsvisningar—behöver du **konvertera HTML till PNG** i realtid. + +I den här handledningen går vi igenom en praktisk lösning med Aspose.Html för .NET, från installation av biblioteket till finjustering av text‑hinting för skarpa små teckensnitt. När du är klar kan du **spara HTML som PNG**, **skapa bild från HTML**, och till och med justera renderingsalternativ för kant‑fallsscenarier. + +## Vad du behöver + +- **.NET 6+** (eller .NET Framework 4.6.2+). API‑et fungerar likadant på alla körmiljöer. +- **Aspose.Html** NuGet‑paket – `Install-Package Aspose.Html`. +- En enkel HTML‑fil (t.ex. `article.html`) som du vill omvandla till en bild. +- Visual Studio, Rider eller någon annan editor du föredrar. + +Det är allt—inga extra beroenden, ingen headless Chrome, bara ren C#. + +## Steg 1: Installera Aspose.Html och lägg till namnrymder + +Först hämtar du biblioteket från NuGet. Öppna Package Manager Console och kör: + +```powershell +Install-Package Aspose.Html +``` + +När paketet är installerat lägger du till de nödvändiga `using`‑direktiven högst upp i din fil: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +Dessa namnrymder ger dig tillgång till dokumentmodellen, bildrendering och de fin‑inställda textalternativ vi kommer att behöva senare. + +> **Pro tip:** Om du använder en .csproj‑fil kan du också lägga till `` manuellt. + +## Steg 2: Ladda HTML‑dokumentet + +Du behöver en `HTMLDocument`‑instans som pekar på källfilen. Aspose.Html kan läsa från en sökväg, en ström eller till och med en URL. + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Varför det är viktigt:** Att ladda dokumentet en gång håller minnesanvändningen låg. Om du planerar att rendera många sidor, återanvänd samma `HTMLDocument`‑objekt där det är möjligt. + +## Steg 3: Finjustera textrendering för små teckensnitt + +När du renderar mycket liten text får du ofta suddiga kanter. Genom att aktivera hinting talar du om för rasterizern att justera glyfer till pixelgränser, vilket dramatiskt förbättrar läsbarheten. + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +Du kan också styra anti‑aliasing, subpixel‑rendering eller till och med ange en egen teckensnittssamling här—användbart om ditt HTML‑dokument refererar till web‑fonts. + +## Steg 4: Konfigurera bildrenderingsalternativ + +Nu binder vi `TextOptions` till bildinställningarna. Du kan också sätta bakgrundsfärg, DPI eller bildformat (PNG, JPEG, BMP). + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **Kant‑fall:** Om ditt HTML är bredare än vanliga skärmstorlekar, överväg att sätta `Width` och `Height` på `ImageRenderingOptions` för att undvika enorma PNG‑filer. + +## Steg 5: Rendera HTML till en PNG‑fil + +Till sist anropar du `RenderToImage`. Överlagringen vi använder låter oss specificera både utsökväg och de alternativ vi just byggt. + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +När du kör programmet parsar Aspose.Html markupen, applicerar CSS, lägger upp sidan och rasteriserar den till `article.png`. Öppna filen i någon bildvisare—du bör se en pixel‑perfekt avbildning av ditt ursprungliga HTML. + +![how to render html as PNG using Aspose.Html](render-html-png.png) + +*Bildens alt‑text: **how to render html** as PNG using Aspose.Html* + +## Bonus: Hantera flera sidor eller skalning + +Ibland innehåller en enda HTML‑fil flera ``‑sektioner (t.ex. för utskrift). Du kan loopa igenom `htmlDoc.Pages` och rendera varje sida separat: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +Om du behöver en miniatyr snarare än en full‑stor bild, justera `imgOpts.Width` och `imgOpts.Height` innan rendering. Biblioteket bevarar automatiskt bildförhållandet. + +--- + +## Slutsats + +Du har nu ett robust, produktionsklart recept för **hur man renderar HTML** till en PNG‑bild med Aspose.Html. Från att installera paketet, ladda ditt markup, finjustera text‑hinting, till att slutligen anropa `RenderToImage`—varje steg är täckt. + +Med den här kunskapen kan du **konvertera HTML till PNG**, **spara HTML som PNG**, och **skapa bild från HTML** i vilken .NET‑applikation som helst—oavsett om det är en webbtjänst som genererar miniatyrer eller ett skrivbordsverktyg som arkiverar webbsidor. + +Nästa steg är att utforska relaterade ämnen som **render HTML to image** med olika format (JPEG, BMP) eller att bädda in PNG‑filen i en PDF med Aspose.PDF. Du kan också experimentera med DPI‑skalning för högupplösta utskrifter, eller mata in dynamiskt genererad HTML i samma pipeline. + +Har du frågor eller ett udda användningsfall? Lämna en kommentar nedan, och lycka till med renderingen! + +{{< /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/swedish/net/html-extensions-and-conversions/_index.md b/html/swedish/net/html-extensions-and-conversions/_index.md index 6d01c9b96..beab216fb 100644 --- a/html/swedish/net/html-extensions-and-conversions/_index.md +++ b/html/swedish/net/html-extensions-and-conversions/_index.md @@ -59,6 +59,8 @@ Lär dig hur du konverterar HTML till Markdown i .NET med Aspose.HTML för effek Konvertera HTML till MHTML i .NET med Aspose.HTML - En steg-för-steg-guide för effektiv arkivering av webbinnehåll. Lär dig hur du använder Aspose.HTML för .NET för att skapa MHTML-arkiv. ### [Konvertera HTML till PNG i .NET med Aspose.HTML](./convert-html-to-png/) Upptäck hur du använder Aspose.HTML för .NET för att manipulera och konvertera HTML-dokument. Steg-för-steg-guide för effektiv .NET-utveckling. +### [Konvertera HTML till PNG i C# – Rendera HTML som bild](./convert-html-to-png-in-c-render-html-as-image/) +Lär dig hur du renderar HTML som PNG-bild i C# med Aspose.HTML – steg‑för‑steg‑guide med kodexempel. ### [Konvertera HTML till TIFF i .NET med Aspose.HTML](./convert-html-to-tiff/) Lär dig hur du konverterar HTML till TIFF med Aspose.HTML för .NET. Följ vår steg-för-steg-guide för effektiv optimering av webbinnehåll. ### [Konvertera HTML till XPS i .NET med Aspose.HTML](./convert-html-to-xps/) @@ -71,6 +73,10 @@ Lär dig skapa ett HTML-dokument med stiliserad text och konvertera det till PDF Skapa PDF från HTML med C# och Aspose.HTML för .NET. Följ vår steg‑för‑steg‑guide för enkel PDF‑generering. ### [Spara HTML som ZIP – Komplett C#-handledning](./save-html-as-zip-complete-c-tutorial/) Lär dig hur du sparar HTML som en ZIP-fil med en komplett C#-kodexempel och steg-för-steg-instruktioner. +### [Spara webbsida som ZIP med Aspose.HTML – Komplett C#-handledning](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +Lär dig hur du sparar en webbsida som ZIP-arkiv med Aspose.HTML i en komplett C#-guide med kodexempel. +### [Spara HTML som ZIP med en anpassad resurs‑hanterare – steg‑för‑steg‑guide](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +Lär dig hur du sparar HTML som ZIP‑arkiv med en anpassad resurs‑hanterare i C# med Aspose.HTML för .NET. ### [Spara HTML till ZIP i C# – Komplett minnesexempel](./save-html-to-zip-in-c-complete-in-memory-example/) Lär dig hur du sparar HTML-filer i ett ZIP‑arkiv i minnet med C# och Aspose.HTML. diff --git a/html/swedish/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/swedish/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..a093d0e00 --- /dev/null +++ b/html/swedish/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-04-19 +description: Konvertera HTML till PNG i C# med Aspose.HTML – en snabb guide för att + rendera HTML som bild och spara diagram som PNG med kantutjämning. +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: sv +og_description: Konvertera HTML till PNG i C# snabbt. Lär dig hur du renderar HTML + som bild, sparar diagram som PNG och genererar PNG från HTML med Aspose.HTML. +og_title: Konvertera HTML till PNG i C# – Rendera HTML som bild +tags: +- Aspose.HTML +- C# +- Image Processing +title: Konvertera HTML till PNG i C# – Rendera HTML som bild +url: /sv/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Konvertera HTML till PNG i C# – Rendera HTML som bild + +Har du någonsin behövt **konvertera HTML till PNG** i C# men varit osäker på vilket bibliotek som ger ett skarpt resultat? Du är inte ensam. Oavsett om du exporterar ett dynamiskt diagram, gör en e‑postmall till en miniatyr, eller bara behöver ett statiskt ögonblicksbild av en webbsida, är förmågan att **rendera HTML som bild** ett praktiskt knep i alla utvecklares verktygslåda. + +I den här handledningen går vi igenom hela processen för att omvandla en HTML‑fil till en PNG‑fil med Aspose.HTML. I slutet kommer du kunna **spara diagram som PNG**, **generera PNG från HTML**, och till och med justera anti‑aliasing‑inställningar för ett polerat utseende. Inga onödiga utsvävningar – bara ett komplett, körbart exempel som du kan klistra in i ditt projekt idag. + +## Vad du behöver + +Innan vi dyker ner, se till att du har följande: + +- **.NET 6.0** eller senare (koden fungerar även på .NET Framework 4.6+). +- **Aspose.HTML for .NET** – du kan hämta det från NuGet med `Install-Package Aspose.HTML`. +- En enkel HTML‑fil (t.ex. `chart.html`) som innehåller den markup du vill fånga. +- En IDE du föredrar – Visual Studio, Rider eller till och med VS Code räcker. + +Det är allt. Inga extra beroenden, inga headless‑webbläsare, bara ett enda väl dokumenterat bibliotek. + +![Convert HTML to PNG example](example.png "Convert HTML to PNG output") + +## Steg 1: Ladda HTML‑dokumentet + +Det första vi måste göra är att peka Aspose.HTML på källfilen. Tänk på `HTMLDocument`‑klassen som en duk som håller allt som biblioteket senare kommer att måla på en bitmap. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*Varför detta är viktigt:* Att ladda dokumentet separerar parsning‑fasen från renderings‑fasen. Det ger motorn möjlighet att lösa CSS, skript och bilder innan vi ber den producera en PNG. Om du hoppar över detta steg och försöker rendera rå markup får du en tom bild eller saknade stilar. + +## Steg 2: Konfigurera bildrenderingsalternativ + +Standardinställningarna i Aspose.HTML ger dig en acceptabel PNG, men du vill ofta ha mjukare kanter – särskilt för diagram och vektorgrafik. Där kommer `ImageRenderingOptions` in. + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*Proffstips:* Om du arbetar med hög‑DPI‑skärmar, öka `Width` och `Height` proportionellt och låt PNG‑filen bli större. Du kan alltid skala ner den senare med ett bildredigeringsprogram. Att sätta en bakgrundsfärg förhindrar att transparenta PNG‑filer ser konstiga ut på mörka sidor. + +## Steg 3: Rendera HTML till en PNG‑fil + +Nu sker det tunga arbetet. Metoden `RenderToImage` tar utdata‑sökvägen och de alternativ vi just definierat, och skriver sedan en PNG till disk. + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +När den här raden är klar hittar du `chart.png` i mål‑mappen. Öppna den – ser diagrammet skarpt ut? Om du har aktiverat anti‑aliasing bör linjerna vara släta och eventuell text skarp. + +### Verifiera resultatet + +Du kan snabbt verifiera bilden programatiskt: + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +Om konsolen skriver ut icke‑noll dimensioner och ett stödd pixelformat (t.ex. `Format32bppArgb`), har du lyckats **convert html to png**. + +## Rendera HTML som bild – Avancerade alternativ + +Hittills har vi gått igenom grunderna, men verkliga scenarier kräver ofta lite mer kontroll. Nedan följer några vanliga justeringar du kan behöva. + +### Justera DPI för utskriftskvalitet + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +Högre DPI är utmärkt när du planerar att bädda in PNG‑filen i en PDF eller skriva ut den på papper. + +### Hantera externa resurser + +Om din HTML refererar till externa CSS‑filer, typsnitt eller bilder som ligger på en webbserver, se till att körmiljön kan nå dem. Du kan sätta en anpassad `BaseUrl`: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +Detta talar om för Aspose.HTML att lösa relativa URL:er mot den angivna bas‑URL:en. + +### Konvertera flera sidor + +Aspose.HTML kan rendera varje sida i ett flersidigt HTML‑dokument till separata PNG‑filer: + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +På så sätt kan du **save chart as PNG** för varje sida utan att manuellt dela upp utdata. + +## Spara diagram som PNG – Vanliga fallgropar & hur du undviker dem + +1. **Saknade typsnitt:** Om HTML använder ett anpassat typsnitt som inte är installerat på servern, kommer den renderade PNG‑filen att falla tillbaka på ett standardsnitt. Installera typsnittet på maskinen eller bädda in det via `@font-face` i din CSS. +2. **Stora filer:** Att rendera en enorm HTML‑fil kan förbruka mycket minne. Överväg att paginera innehållet eller minska bildens dimensioner. +3. **Transparenta bakgrunder:** Som standard kan PNG‑filer vara transparenta. Om du behöver en ogenomskinlig bakgrund (t.ex. för e‑post‑miniatyrer), sätt `BackgroundColor` som visat tidigare. +4. **Skriptkörning:** Aspose.HTML kör inte JavaScript. Om ditt diagram byggs med ett klient‑side‑bibliotek som Chart.js, måste du förrendera diagrammet till ett statiskt ``‑element eller använda en headless‑webbläsare istället. + +## Fullständigt fungerande exempel + +Nedan är hela programmet som du kan kopiera‑klistra in i en konsolapp. Det innehåller alla steg, felhantering och valfria justeringar som diskuterats ovan. + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +Kör programmet, så får du ett bekräftelsemeddelande följt av bildens dimensioner. Öppna `chart.png` i någon bildvisare för att bekräfta att diagrammet ser exakt ut som den ursprungliga HTML‑koden. + +## Slutsats + +Du har nu ett robust, + +{{< /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/swedish/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/swedish/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..2c52f50c9 --- /dev/null +++ b/html/swedish/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,240 @@ +--- +category: general +date: 2026-04-19 +description: Lär dig hur du sparar HTML som zip med Aspose.Html och en anpassad resurs‑hanterare. + Upptäck också hur du konverterar en URL till zip och laddar ner HTML som zip på + några minuter. +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: sv +og_description: 'Spara HTML som zip gjort enkelt: använd Aspose.Html, en anpassad + resurs‑hanterare och ZipSaveOptions för att konvertera vilken URL som helst till + ett nedladdningsbart zip‑arkiv.' +og_title: Spara HTML som zip med en anpassad resurshanterare – snabb handledning +tags: +- Aspose.Html +- C# +- Web scraping +title: Spara HTML som zip med en anpassad resurshanterare – steg‑för‑steg‑guide +url: /sv/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# spara html som zip – Komplett handledning + +Har du någonsin behövt **spara html som zip** så att du kan leverera en hel sida med dess bilder, CSS och skript i ett prydligt paket? Kanske bygger du en crawler som arkiverar artiklar, eller så vill du bara ha en snabb “ladda ner html som zip”-knapp för dina användare. Oavsett så undrar du förmodligen hur du gör det utan att skriva en miljon rader med fil‑IO‑kod. + +Här är de goda nyheterna: Aspose.Html gör jobbet till en barnlek, och med en **custom resource handler** kan du bestämma exakt var varje resursström hamnar. I den här guiden visar vi också hur du **convert url to zip**, hur du **download html as zip**, och hur du **save webpage resources** för offline‑användning – allt i ett enda, självständigt C#‑program. + +## What You’ll Learn + +- Installera Aspose.Html‑biblioteket (NuGet gör det enkelt). +- Skriv en `ResourceHandler` som levererar en `Stream` för varje resurs Aspose.Html vill skriva. +- Ladda en fjärrsida (eller en lokal fil) och låt Aspose.Html packa allt i ett ZIP‑arkiv. +- Verifiera att den resulterande `output.zip` innehåller HTML‑filen plus alla länkade tillgångar. + +Inga externa verktyg, ingen manuell zip‑fil‑hantering – bara ren, kompilerad kod som du kan slänga in i vilket .NET‑projekt som helst. + +## Prerequisites + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6.0 or later (the code also works on .NET Framework 4.7+) | Aspose.Html targets modern runtimes; older frameworks may miss some APIs. | +| Visual Studio 2022 (or any IDE you like) | Helpful for debugging and seeing the generated ZIP. | +| Internet access for the sample URL (`https://example.com`) | We’ll fetch a live page to demonstrate **convert url to zip**. | +| NuGet package `Aspose.Html` (v23.12 or newer) | This library provides `HTMLDocument`, `ZipSaveOptions`, and the `ResourceHandler` base class. | + +If you already have a .NET project, just run: + +```bash +dotnet add package Aspose.Html +``` + +That’s all the setup you need. + +## Step 1: Create a Custom Resource Handler + +The heart of the solution is a class that inherits from `ResourceHandler`. Aspose.Html calls `HandleResource` for every file it wants to write—HTML, images, CSS, JavaScript, you name it. By returning a `Stream` you decide where the data lands. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**Why a custom handler?** +Because the older `IOutputStorage` interface is deprecated, and `ResourceHandler` gives you full control over the output destination. It also lets you inspect `ResourceInfo`—useful if you only want to keep images and skip fonts, for instance. + +## Step 2: Load the HTML Document (or Convert URL to Zip) + +Aspose.Html can load from a URL, a file path, or a raw HTML string. Here we demonstrate loading a live page, which is the typical case when you want to **download html as zip**. + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +If you already have the HTML source in a variable, just pass it to the constructor: + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## Step 3: Wire Up the Handler to ZipSaveOptions + +`ZipSaveOptions` tells Aspose.Html *how* to create the ZIP file. The crucial property is `OutputStorage`, which we set to our `MyHandler` instance. + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +You can also tweak compression level, folder names inside the archive, or even embed a manifest file—details are in the Aspose docs, but the defaults work great for most scenarios. + +## Step 4: Save the Document as a ZIP Archive + +Now the magic happens. The `Save` method iterates over every resource, calls `HandleResource`, and writes the bytes to the returned stream. Because our handler returns a fresh `MemoryStream` each time, Aspose.Html will later collect all those streams and pack them into `output.zip`. + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**What you’ll see:** +- `output.zip` at the root of your project folder. +- Inside the ZIP: `index.html` (the main page) plus subfolders like `images/`, `css/`, `scripts/` containing the exact files the browser would have requested. + +## Step 5: Verify the Result (Optional but Recommended) + +A quick sanity check ensures you really did **save webpage resources** correctly. + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +You should see entries for `index.html`, any linked images (`logo.png`), CSS files, and JavaScript files. If something is missing, double‑check the `ResourceInfo` logic in `MyHandler`. + +## Full Working Example + +Putting it all together, here’s the complete program you can copy‑paste into a console app. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Run the program (`dotnet run`), and you’ll end up with a neat `output.zip`. Open it with any archive manager, and you can browse the saved page offline—exactly what you need for **download html as zip** functionality. + +## Common Questions & Edge Cases + +| Question | Answer | +|----------|--------| +| *What if I need to store the ZIP in Azure Blob Storage?* | Replace `MemoryStream` with a stream that writes directly to a blob (e.g., `CloudBlockBlob.OpenWrite()`). The handler abstraction makes this trivial. | +| *Can I filter out certain resources?* | Yes. Inside `HandleResource`, inspect `info.ResourceType` or `info.Url`. Return `null` to skip a resource, or return a stream that writes nothing. | +| *Is the ZIP password‑protected?* | `ZipSaveOptions` has a `Password` property. Set it before calling `Save` if you need encryption. | +| *What about large pages with dozens of megabytes of assets?* | Using `MemoryStream` for everything may exhaust RAM. Switch to a `FileStream` that writes to a temporary folder, then let Aspose.Html compress those files. | +| *Does this work on .NET Core on Linux?* | Absolutely. Aspose.Html is cross‑platform; just ensure the runtime has permission to write files. | + +## Pro Tips + +- **Pro tip:** If you only care about the HTML and images, check `info.ResourceType == ResourceType.Image` and skip scripts or fonts to keep the ZIP tiny. +- **Watch out for:** some sites block automated requests. Set a custom `User-Agent` via `HtmlLoadOptions` if you get a 403 error. +- **Tip:** After creating the ZIP, you can serve it directly from an ASP.NET controller using `FileResult`, giving your users a one‑click **download html as zip** button. + +## Conclusion + +You now have a solid, production‑ready way to **save html as zip** using Aspose.Html and a **custom resource handler**. By loading any URL, configuring `ZipSaveOptions`, and letting the handler supply streams, you can **convert url to zip**, **download html as zip**, and **save webpage resources** with just a few lines of C#. + +Feel free to experiment—store streams to disk, cloud storage, or even a database. The pattern stays the same, and the result is always a tidy archive you can ship, cache, or archive forever. + +--- + +![Diagram illustrating the save html as zip workflow – from loading a URL to producing a ZIP file](/images/save-html-as-zip.png) + +*Bildens alt‑text:* **diagram för spara html som zip arbetsflöde** + +If you found this tutorial helpful, drop a comment, share it with a teammate, or star the repo where you keep your utility scripts. Happy coding! + +{{< /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/swedish/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/swedish/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..ebeb44730 --- /dev/null +++ b/html/swedish/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,218 @@ +--- +category: general +date: 2026-04-19 +description: Spara webbplats som zip med Aspose.HTML i C#. Lär dig hur du konverterar + URL till zip, exporterar HTML till zip och laddar ner en webbplats som zip med ett + enkelt kodexempel. +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: sv +og_description: Spara webbsida som zip med Aspose.HTML i C#. Denna guide visar hur + du konverterar URL till zip, exporterar HTML till zip och laddar ner webbsidan som + zip på bara några steg. +og_title: Spara webbsida som ZIP med Aspose.HTML – Komplett C#‑handledning +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: Spara webbsida som ZIP med Aspose.HTML – Komplett C#-handledning +url: /sv/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Spara webbsida som ZIP med Aspose.HTML – Komplett C#‑handledning + +Behöver du **spara en webbsida som zip** för offline‑arkivering, automatiserade tester eller bara för att skicka en ögonblicksbild av en webbplats? Du är inte ensam. I den här handledningen går vi igenom hur du **konverterar URL till zip**, **exporterar HTML till zip** och till och med **laddar ner en webbsida som zip** med några få rena C#‑rader. + +Vi täcker allt från projektuppsättning till den slutgiltiga ZIP‑filen på disk, och vi strör in några praktiska tips som du inte hittar i den officiella dokumentationen. I slutet har du en återanvändbar lösning som kan **skapa zip från html** när du än behöver det. + +## Vad du behöver + +- **.NET 6.0** (eller någon nyare .NET‑version) – Aspose.HTML fungerar både med .NET Core och .NET Framework. +- **Aspose.HTML for .NET** NuGet‑paket – `Install-Package Aspose.HTML`. +- En grundläggande kunskap i C# – om du kan skriva en `Console.WriteLine` är du redo. +- En internetansluten maskin för den initiala nedladdningen (koden fungerar offline när ZIP‑filen väl är skapad). + +Inga extra SDK:er, inga headless‑webbläsare, bara ren .NET och Aspose.HTML. + +![Illustration of saving webpage as zip using Aspose.HTML](save-webpage-as-zip.png "Diagram showing save webpage as zip workflow") + +## Spara webbsida som ZIP – Översikt + +På en hög nivå består processen av tre rörliga delar: + +1. **En anpassad `ResourceHandler`** som talar om för Aspose.HTML var varje extern resurs (bilder, CSS, skript) ska skrivas. +2. **`ZipSaveOptions`** som binder hanteraren till ett ZIP‑arkiv och låter dig justera rendering (antialiasing, font‑hints, osv.). +3. **`HTMLDocument.Save`‑anropet** som samlar allt, strömmar sidan och alla dess tillgångar in i ZIP‑filen. + +Det är allt. Det tunga lyftet görs av Aspose.HTML, så du kan fokusera på “varför” och “när” istället för att kämpa med lågnivå‑strömmar. + +--- + +## Steg 1: Ställ in projektet och lägg till Aspose.HTML + +Börja med att skapa ett nytt konsolprojekt (eller klistra in koden i ett befintligt program). Öppna en terminal och kör: + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +`Aspose.HTML`‑paketet levereras med alla typer vi behöver: `HTMLDocument`, `ZipSaveOptions`, `ImageRenderingOptions` och den abstrakta `ResourceHandler`. + +> **Pro‑tips:** Om du riktar dig mot .NET Framework, ersätt `dotnet`‑kommandona med NuGet Package Manager‑gränssnittet i Visual Studio – samma DLL‑filer läggs till. + +--- + +## Steg 2: Skapa en anpassad `ZipHandler`‑resurshanterare + +Aspose.HTML anropar `HandleResource` för varje extern fil den stöter på när den parsar sidan. Genom att överskugga den här metoden kan vi dirigera varje resurs till ett ZIP‑inlägg istället för filsystemet. + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### Varför en anpassad hanterare? + +Utan den skulle Aspose.HTML släppa resurserna bredvid HTML‑filen på disk. Genom att mata in ett `ZipArchive` håller vi **allt samlat** – perfekt för distribution eller för senare extrahering av en annan tjänst. + +--- + +## Steg 3: Konfigurera `ZipSaveOptions` med bildrendering + +Nu knyter vi hanteraren till sparalternativen och slår på några renderingstips som förbättrar den visuella kvaliteten för skärmbilder eller PDF‑liknande konverteringar. + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **Varför aktivera antialiasing och hinting?** När sidan senare renderas till en bitmap (t.ex. för en miniatyr) minskar dessa flaggor hackiga kanter och gör små teckensnitt läsbara – särskilt viktigt om du planerar att bädda in bilderna någon annanstans. + +--- + +## Steg 4: Ladda HTML‑dokumentet och spara till ZIP + +Med hanteraren och alternativen på plats är det lika enkelt som att skicka URL:en till `HTMLDocument`. `Save`‑metoden kommer att anropa `HandleResource` för varje länkad tillgång. + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +På detta stadium innehåller `zipStream` ett komplett **ZIP‑arkiv som innehåller**: + +- `index.html` (huvudsidan) +- Alla CSS‑filer som refereras av ``‑taggar +- Bilder, teckensnitt och JavaScript‑filer som krävs för att rendera sidan offline + +### Edge Cases & Variationer + +| Situation | Vad som bör justeras | +|----------------------------------------|------------------------------------------------------------------------------------| +| **Autentisering krävs** | Använd `HTMLDocument(string url, LoadOptions options)` och sätt `options.Credentials`. | +| **Mycket stora sidor (>100 MB)** | Skriv direkt till ett `FileStream` istället för `MemoryStream` för att undvika hög RAM‑användning. | +| **Relativa URL:er som börjar med “//”**| Hanteraren normaliserar dem automatiskt; se bara till att `BaseUrl` är satt. | +| **Anpassad mappstruktur i ZIP** | Modifiera `info.Path` i `HandleResource` innan du skapar inlägget. | + +--- + +## Steg 5: Spara ZIP‑filen och verifiera resultatet + +Till sist skriver vi den minnesbaserade ZIP‑filen till disk. Detta steg är valfritt om du planerar att skicka strömmen över nätverket, men det underlättar verifieringen. + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**Förväntat resultat:** När du öppnar `result.zip` ser du en `index.html`‑fil som, när den öppnas i en webbläsare offline, ser identisk ut med den live‑sidan (förutsatt att alla externa tillgångar var tillgängliga under nedladdningen). + +--- + +## Vanliga frågor & svar + +**Q: Fungerar detta tillvägagångssätt med sidor som använder lazy‑loaded bilder?** +A: Ja, så länge bilderna begärs under den initiala DOM‑genomgången. Om ett skript laddar bilder efter sidladdning kan du behöva trigga en manuell “render” genom att anropa `document.Render()` innan `Save`. + +**Q: Kan jag komprimera ZIP‑filen ytterligare?** +A: `ZipArchive`‑API:t använder standardkomprimeringsnivån. För aggressiv komprimering, skapa den med `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)`. + +**Q: Vad händer om jag behöver ett lösenordsskyddat ZIP?** +A: Den inbyggda `ZipArchive`‑klassen stödjer ingen kryptering. I så fall kan du leda utdata‑strömmen genom ett tredjepartsbibliotek som `SharpZipLib` efter att Aspose.HTML har skrivit färdigt. + +--- + +## Pro‑tips för produktionsanvändning + +- **Återanvänd `ZipHandler`** när du bearbetar flera sidor i ett batch‑jobb; återställ bara den underliggande `MemoryStream` mellan körningarna. +- **Log + +{{< /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/thai/net/generate-jpg-and-png-images/_index.md b/html/thai/net/generate-jpg-and-png-images/_index.md index bb3254275..dbdacf12d 100644 --- a/html/thai/net/generate-jpg-and-png-images/_index.md +++ b/html/thai/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML สำหรับ .NET นำเสนอวิธีการง เรียนรู้วิธีเปิดใช้งาน Antialiasing เพื่อให้ภาพ PNG/JPG ที่แปลงจาก DOCX มีความคมชัดและลื่นไหล ### [แปลง DOCX เป็น PNG – สร้างไฟล์ ZIP ด้วย C#](./convert-docx-to-png-create-zip-archive-c-tutorial/) เรียนรู้วิธีแปลงไฟล์ DOCX เป็น PNG แล้วบีบอัดเป็นไฟล์ ZIP ด้วย C# โดยใช้ Aspose.HTML +### [วิธีเรนเดอร์ HTML เป็น PNG – คู่มือ C# ฉบับสมบูรณ์](./how-to-render-html-to-png-complete-c-guide/) +เรียนรู้วิธีเรนเดอร์ HTML เป็นไฟล์ PNG อย่างครบถ้วนด้วย C# โดยใช้ Aspose.HTML ## บทสรุป diff --git a/html/thai/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/thai/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..2b429cebc --- /dev/null +++ b/html/thai/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,157 @@ +--- +category: general +date: 2026-04-19 +description: วิธีแปลง HTML เป็น PNG ด้วย Aspose.Html เรียนรู้การแปลง HTML เป็น PNG, + บันทึก HTML เป็น PNG, และสร้างภาพจาก HTML ในไม่กี่นาที +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: th +og_description: วิธีแปลง HTML เป็น PNG ด้วย Aspose.Html. ทำตามบทแนะนำขั้นตอนต่อขั้นตอนนี้เพื่อแปลง + HTML เป็น PNG, บันทึก HTML เป็น PNG, และสร้างภาพจาก HTML. +og_title: วิธีแปลง HTML เป็น PNG – คู่มือ C# ฉบับสมบูรณ์ +tags: +- Aspose.Html +- C# +title: วิธีแปลง HTML เป็น PNG – คู่มือ C# ฉบับสมบูรณ์ +url: /th/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีการแปลง HTML เป็น PNG – คู่มือ C# ฉบับสมบูรณ์ + +เคยสงสัยไหมว่า **วิธีการแปลง HTML** เป็นไฟล์รูปภาพโดยไม่ต้องเปิดเบราว์เซอร์? คุณไม่ได้เป็นคนเดียว ในหลายโครงการ—ภาพย่ออีเมล, การสร้าง PDF, หรือเพียงการแสดงตัวอย่างอย่างรวดเร็ว—คุณต้อง **แปลง HTML เป็น PNG** อย่างทันที + +ในบทแนะนำนี้เราจะพาคุณผ่านโซลูชันแบบทำมือโดยใช้ Aspose.Html for .NET ครอบคลุมตั้งแต่การติดตั้งไลบรารีจนถึงการปรับแต่งการ hint ตัวอักษรสำหรับฟอนต์ขนาดเล็กที่คมชัด เมื่อจบคุณจะสามารถ **บันทึก HTML เป็น PNG**, **สร้างภาพจาก HTML**, และแม้กระทั่งปรับตัวเลือกการเรนเดอร์สำหรับกรณีขอบได้ + +## สิ่งที่คุณต้องการ + +- **.NET 6+** (หรือ .NET Framework 4.6.2+). API ทำงานเหมือนกันในทุก runtime +- **Aspose.Html** NuGet package – `Install-Package Aspose.Html` +- ไฟล์ HTML ง่าย ๆ (เช่น `article.html`) ที่คุณต้องการแปลงเป็นภาพ +- Visual Studio, Rider, หรือโปรแกรมแก้ไขใด ๆ ที่คุณชอบ + +แค่นั้นแหละ—ไม่มี dependencies เพิ่มเติม, ไม่ต้องใช้ headless Chrome, เพียงแค่ C# ธรรมดา + +## Step 1: Install Aspose.Html and Add Namespaces + +ขั้นแรกให้ดึงไลบรารีจาก NuGet เปิด Package Manager Console แล้วรัน: + +```powershell +Install-Package Aspose.Html +``` + +เมื่อติดตั้งเสร็จ ให้เพิ่ม `using` directives ที่จำเป็นไว้ด้านบนของไฟล์ของคุณ: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +เนมสเปซเหล่านี้ให้คุณเข้าถึงโมเดลเอกสาร, การเรนเดอร์ภาพ, และตัวเลือกข้อความละเอียดที่เราจะใช้ต่อไป + +> **Pro tip:** หากคุณใช้ไฟล์ .csproj คุณสามารถเพิ่ม `` ด้วยตนเองได้ + +## Step 2: Load the HTML Document + +คุณต้องมีอินสแตนซ์ `HTMLDocument` ที่ชี้ไปยังไฟล์ต้นทาง Aspose.Html สามารถอ่านจากพาธ, สตรีม, หรือแม้แต่ URL + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Why this matters:** การโหลดเอกสารเพียงครั้งเดียวช่วยลดการใช้หน่วยความจำ หากคุณวางแผนเรนเดอร์หลายหน้า ควรใช้วัตถุ `HTMLDocument` เดียวซ้ำได้เท่าที่เป็นไปได้ + +## Step 3: Tweak Text Rendering for Small Fonts + +เมื่อเรนเดอร์ข้อความขนาดเล็ก มักจะเกิดขอบเบลอ การเปิดใช้งาน hinting จะบอก rasterizer ให้จัดตำแหน่ง glyphs ให้ตรงพิกเซล ทำให้ความคมชัดดีขึ้นอย่างมาก + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +คุณยังสามารถควบคุม anti‑aliasing, subpixel rendering, หรือแม้แต่ระบุคอลเลกชันฟอนต์กำหนดเองที่นี่—มีประโยชน์หาก HTML ของคุณอ้างอิงเว็บฟอนต์ + +## Step 4: Configure Image Rendering Options + +ตอนนี้เราจะผูก `TextOptions` กับการตั้งค่าภาพ คุณยังสามารถตั้งค่าสีพื้นหลัง, DPI, หรือรูปแบบภาพ (PNG, JPEG, BMP) + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **Edge case:** หาก HTML ของคุณกว้างกว่าขนาดหน้าจอทั่วไป ควรตั้งค่า `Width` และ `Height` บน `ImageRenderingOptions` เพื่อหลีกเลี่ยง PNG ขนาดมหึมา + +## Step 5: Render the HTML to a PNG File + +สุดท้ายให้เรียก `RenderToImage` วิธี overload ที่เราใช้ให้คุณระบุพาธเอาต์พุตและตัวเลือกที่เราสร้างไว้ + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +เมื่อคุณรันโปรแกรม Aspose.Html จะทำการพาร์สมาร์กอัป, ประยุกต์ CSS, จัดวางหน้า, และแปลงเป็น raster ลงใน `article.png` เปิดไฟล์ด้วยโปรแกรมดูภาพใดก็ได้—คุณควรเห็นภาพสแนปช็อตที่พิกเซล‑เพอร์เฟ็กต์ของ HTML ดั้งเดิม + +![how to render html as PNG using Aspose.Html](render-html-png.png) + +*ข้อความแทนภาพ: **วิธีการแปลง html** เป็น PNG ด้วย Aspose.Html* + +## Bonus: Handling Multiple Pages or Scaling + +บางครั้งไฟล์ HTML เดียวอาจมีหลายส่วน `` (เช่น สำหรับการพิมพ์) คุณสามารถวนลูปผ่าน `htmlDoc.Pages` แล้วเรนเดอร์แต่ละหน้าแยกกันได้: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +หากคุณต้องการภาพย่อแทนภาพขนาดเต็ม ให้ปรับ `imgOpts.Width` และ `imgOpts.Height` ก่อนเรนเดอร์ ไลบรารีจะรักษาอัตราส่วนอัตโนมัติ + +--- + +## Conclusion + +ตอนนี้คุณมีสูตรที่แข็งแรงและพร้อมใช้งานในระดับ production สำหรับ **วิธีการแปลง HTML** เป็นภาพ PNG ด้วย Aspose.Html ตั้งแต่การติดตั้งแพคเกจ, การโหลดมาร์กอัป, การปรับแต่ง hint ตัวอักษร, จนถึงการเรียก `RenderToImage` ทุกขั้นตอนถูกครอบคลุม + +ด้วยความรู้นี้คุณสามารถ **แปลง HTML เป็น PNG**, **บันทึก HTML เป็น PNG**, และ **สร้างภาพจาก HTML** สำหรับแอปพลิเคชัน .NET ใดก็ได้—ไม่ว่าจะเป็นเว็บเซอร์วิสที่สร้างภาพย่อหรือเครื่องมือเดสก์ท็อปที่เก็บบันทึกหน้าเว็บ + +ต่อไปให้สำรวจหัวข้อที่เกี่ยวข้องเช่น **render HTML to image** ด้วยฟอร์แมตต่าง ๆ (JPEG, BMP) หรือฝัง PNG ลงใน PDF ด้วย Aspose.PDF คุณอาจทดลองปรับสเกล DPI สำหรับการพิมพ์ความละเอียดสูง หรือป้อน HTML แบบไดนามิกที่สร้างขึ้นทันทีเข้าสู่ pipeline เดียวกัน + +มีคำถามหรือกรณีการใช้งานแปลก ๆ? ทิ้งคอมเมนต์ด้านล่าง แล้วขอให้การเรนเดอร์ของคุณสนุกสนาน! + +{{< /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/thai/net/html-extensions-and-conversions/_index.md b/html/thai/net/html-extensions-and-conversions/_index.md index 2474ca32c..3a0d32688 100644 --- a/html/thai/net/html-extensions-and-conversions/_index.md +++ b/html/thai/net/html-extensions-and-conversions/_index.md @@ -59,6 +59,8 @@ Aspose.HTML สำหรับ .NET ไม่ใช่แค่ไลบรา แปลง HTML เป็น MHTML ใน .NET ด้วย Aspose.HTML - คำแนะนำทีละขั้นตอนสำหรับการเก็บถาวรเนื้อหาเว็บอย่างมีประสิทธิภาพ เรียนรู้วิธีใช้ Aspose.HTML สำหรับ .NET เพื่อสร้างไฟล์เก็บถาวร MHTML ### [แปลง HTML เป็น PNG ใน .NET ด้วย Aspose.HTML](./convert-html-to-png/) ค้นพบวิธีใช้ Aspose.HTML สำหรับ .NET เพื่อจัดการและแปลงเอกสาร HTML คำแนะนำทีละขั้นตอนสำหรับการพัฒนา .NET ที่มีประสิทธิภาพ +### [แปลง HTML เป็น PNG ใน C# – แสดงผล HTML เป็นภาพ](./convert-html-to-png-in-c-render-html-as-image/) +เรียนรู้วิธีแปลง HTML เป็น PNG ใน C# ด้วย Aspose.HTML สำหรับ .NET พร้อมคำแนะนำขั้นตอนและตัวอย่างโค้ด ### [แปลง HTML เป็น TIFF ใน .NET ด้วย Aspose.HTML](./convert-html-to-tiff/) เรียนรู้วิธีแปลง HTML เป็น TIFF ด้วย Aspose.HTML สำหรับ .NET ปฏิบัติตามคำแนะนำทีละขั้นตอนของเราเพื่อเพิ่มประสิทธิภาพเนื้อหาเว็บอย่างมีประสิทธิภาพ ### [แปลง HTML เป็น XPS ใน .NET ด้วย Aspose.HTML](./convert-html-to-xps/) @@ -72,7 +74,11 @@ Aspose.HTML สำหรับ .NET ไม่ใช่แค่ไลบรา ### [บันทึก HTML เป็น ZIP – คอร์สเต็ม C#](./save-html-as-zip-complete-c-tutorial/) บันทึกไฟล์ HTML เป็น ZIP อย่างครบถ้วนด้วย C# ตามขั้นตอนของเรา ### [บันทึก HTML เป็น ZIP ใน C# – ตัวอย่างทำงานในหน่วยความจำเต็มรูปแบบ](./save-html-to-zip-in-c-complete-in-memory-example/) -บันทึกไฟล์ HTML เป็นไฟล์ ZIP โดยใช้ C# ด้วยตัวอย่างทำงานในหน่วยความจำเต็มรูปแบบ +บันทึกไฟล์ HTML เป็น ZIP โดยใช้ C# ด้วยตัวอย่างทำงานในหน่วยความจำเต็มรูปแบบ +### [บันทึก HTML เป็น ZIP ด้วยตัวจัดการทรัพยากรแบบกำหนดเอง – คู่มือขั้นตอนโดยขั้นตอน](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +เรียนรู้วิธีบันทึกไฟล์ HTMLเป็น ZIP โดยใช้ตัวจัดการทรัพยากรแบบกำหนดเองใน C# ด้วย Aspose.HTML สำหรับ .NET อย่างละเอียด +### [บันทึกหน้าเว็บเป็น ZIP ด้วย Aspose.HTML – คอร์สเต็ม C#](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +บันทึกหน้าเว็บเป็นไฟล์ ZIP อย่างครบถ้วนด้วย Aspose.HTML และ C# ตามขั้นตอนที่ชัดเจน ## บทสรุป diff --git a/html/thai/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/thai/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..29b8ab5ee --- /dev/null +++ b/html/thai/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-04-19 +description: แปลง HTML เป็น PNG ใน C# ด้วย Aspose.HTML – คู่มือสั้น ๆ สำหรับเรนเดอร์ + HTML เป็นภาพและบันทึกแผนภูมิเป็น PNG พร้อมการทำแอนติ‑เอเลียส. +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: th +og_description: แปลง HTML เป็น PNG ใน C# อย่างรวดเร็ว เรียนรู้วิธีเรนเดอร์ HTML เป็นภาพ + บันทึกแผนภูมิเป็น PNG และสร้าง PNG จาก HTML ด้วย Aspose.HTML +og_title: แปลง HTML เป็น PNG ใน C# – แสดง HTML เป็นภาพ +tags: +- Aspose.HTML +- C# +- Image Processing +title: แปลง HTML เป็น PNG ใน C# – แสดงผล HTML เป็นภาพ +url: /th/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# แปลง HTML เป็น PNG ใน C# – เรนเดอร์ HTML เป็นภาพ + +เคยต้อง **แปลง HTML เป็น PNG** ใน C# แต่ไม่แน่ใจว่าควรใช้ไลบรารีไหนเพื่อให้ได้ผลลัพธ์ที่คมชัดหรือไม่? คุณไม่ได้อยู่คนเดียว ไม่ว่าคุณจะส่งออกแผนภูมิกระ动态, แปลงเทมเพลตอีเมลเป็นภาพย่อ, หรือแค่ต้องการภาพสแนปชอตของหน้าเว็บ การ **เรนเดอร์ HTML เป็นภาพ** เป็นเทคนิคที่มีประโยชน์ในกล่องเครื่องมือของนักพัฒนาทุกคน + +ในบทเรียนนี้เราจะเดินผ่านกระบวนการทั้งหมดในการแปลงไฟล์ HTML ให้เป็นไฟล์ PNG ด้วย Aspose.HTML. เมื่อเสร็จคุณจะสามารถ **บันทึกแผนภูมิเป็น PNG**, **สร้าง PNG จาก HTML**, และแม้แต่ปรับการตั้งค่า anti‑aliasing เพื่อให้ได้ลุคที่เรียบหรู ไม่ฟุ่มเฟือย—เพียงตัวอย่างที่ทำงานได้เต็มรูปแบบที่คุณสามารถนำไปใช้ในโปรเจกต์ของคุณได้ทันที + +## สิ่งที่คุณต้องมี + +ก่อนที่เราจะลงลึก, ตรวจสอบให้แน่ใจว่าคุณมีสิ่งต่อไปนี้: + +- **.NET 6.0** หรือใหม่กว่า (โค้ดนี้ยังทำงานบน .NET Framework 4.6+ ด้วย) +- **Aspose.HTML for .NET** – สามารถดาวน์โหลดจาก NuGet ด้วยคำสั่ง `Install-Package Aspose.HTML` +- ไฟล์ HTML ง่าย ๆ (เช่น `chart.html`) ที่มี markup ที่คุณต้องการจับภาพ +- IDE ที่คุณชอบ—Visual Studio, Rider, หรือแม้แต่ VS Code ก็ใช้ได้ + +เท่านี้แค่นั้น ไม่มีการพึ่งพาเพิ่มเติม, ไม่มีเบราว์เซอร์ headless, เพียงไลบรารีเดียวที่มีเอกสารครบถ้วน + +![แปลง HTML เป็น PNG ตัวอย่าง](example.png "ผลลัพธ์การแปลง HTML เป็น PNG") + +## ขั้นตอนที่ 1: โหลดเอกสาร HTML + +สิ่งแรกที่เราต้องทำคือชี้ให้ Aspose.HTML ไปที่ไฟล์ต้นทาง คิดว่า `HTMLDocument` คลาสเป็นผืนผ้าใบที่เก็บทุกอย่างที่ไลบรารีจะวาดลงบนบิตแมพต่อไป + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*ทำไมสิ่งนี้สำคัญ:* การโหลดเอกสารจะแยกขั้นตอนการพาร์สออกจากขั้นตอนการเรนเดอร์ ทำให้เอนจินมีโอกาสแก้ไข CSS, สคริปต์, และรูปภาพก่อนที่เราจะสั่งให้สร้าง PNG หากข้ามขั้นตอนนี้และพยายามเรนเดอร์ markup ดิบ คุณจะได้ภาพเปล่าหรือสไตล์ที่หายไป + +## ขั้นตอนที่ 2: ตั้งค่าตัวเลือกการเรนเดอร์ภาพ + +Aspose.HTML ที่ใช้โดยไม่ปรับแต่งจะให้ PNG ที่พอใช้ได้, แต่คุณมักต้องการขอบที่เรียบเนียนกว่า—โดยเฉพาะสำหรับแผนภูมิและกราฟิกเวกเตอร์ นั่นคือจุดที่ `ImageRenderingOptions` เข้ามาช่วย + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*เคล็ดลับ:* หากคุณทำงานกับหน้าจอ DPI สูง ให้เพิ่มค่า `Width` และ `Height` อย่างสัดส่วนและให้ PNG มีขนาดใหญ่ขึ้น คุณสามารถลดขนาดลงภายหลังด้วยโปรแกรมแก้ไขภาพได้ อีกทั้งการตั้งค่าสีพื้นหลังจะป้องกัน PNG โปร่งใสให้ดูแปลกบนหน้าเว็บที่มืด + +## ขั้นตอนที่ 3: เรนเดอร์ HTML เป็นไฟล์ PNG + +ตอนนี้งานหนักเริ่มขึ้นเมธอด `RenderToImage` จะรับพาธเอาต์พุตและตัวเลือกที่เรากำหนดไว้, จากนั้นเขียน PNG ลงดิสก์ + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +เมื่อบรรทัดนี้ทำงานเสร็จ, คุณจะพบ `chart.png` ในโฟลเดอร์เป้าหมาย เปิดไฟล์ดู—แผนภูมิดูคมชัดหรือไม่? หากเปิดใช้งาน anti‑aliasing แล้วเส้นควรจะเรียบและข้อความควรจะคมชัด + +### ตรวจสอบผลลัพธ์ + +คุณสามารถตรวจสอบภาพอย่างรวดเร็วโดยใช้โค้ดโปรแกรม: + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +หากคอนโซลพิมพ์ขนาดที่ไม่เป็นศูนย์และฟอร์แมตพิกเซลที่รองรับ (เช่น `Format32bppArgb`), คุณได้ **แปลง html เป็น png** สำเร็จแล้ว + +## เรนเดอร์ HTML เป็นภาพ – ตัวเลือกขั้นสูง + +จนถึงตอนนี้เราได้ครอบคลุมพื้นฐาน, แต่สถานการณ์จริงมักต้องการการควบคุมเพิ่มเติม ด้านล่างเป็นการปรับแต่งทั่วไปที่คุณอาจต้องใช้ + +### ปรับ DPI สำหรับผลลัพธ์คุณภาพพิมพ์ + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +DPI สูงเหมาะเมื่อคุณต้องการฝัง PNG ลงใน PDF หรือพิมพ์ออกบนกระดาษ + +### จัดการทรัพยากรภายนอก + +หาก HTML ของคุณอ้างอิง CSS, ฟอนต์, หรือรูปภาพจากเซิร์ฟเวอร์ภายนอก, ตรวจสอบให้แน่ใจว่า runtime สามารถเข้าถึงได้ คุณสามารถตั้งค่า `BaseUrl` แบบกำหนดเองได้: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +โค้ดนี้บอก Aspose.HTML ให้แก้ไข URL แบบ relative ตาม base URL ที่ระบุ + +### แปลงหลายหน้า + +Aspose.HTML สามารถเรนเดอร์แต่ละหน้าของเอกสาร HTML หลายหน้าเป็นไฟล์ PNG แยกกันได้: + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +ด้วยวิธีนี้คุณสามารถ **บันทึกแผนภูมิเป็น PNG** สำหรับทุกหน้าโดยไม่ต้องตัดภาพออกด้วยตนเอง + +## บันทึกแผนภูมิเป็น PNG – ข้อผิดพลาดทั่วไป & วิธีหลีกเลี่ยง + +1. **ฟอนต์หาย:** หาก HTML ใช้ฟอนต์ที่ไม่ได้ติดตั้งบนเซิร์ฟเวอร์, PNG ที่เรนเดอร์จะย้อนกลับไปใช้ฟอนต์เริ่มต้น ติดตั้งฟอนต์บนเครื่องหรือฝังฟอนต์ผ่าน `@font-face` ใน CSS +2. **ไฟล์ใหญ่:** การเรนเดอร์ HTML ขนาดมหาศาลอาจใช้หน่วยความจำมาก พิจารณาแบ่งหน้าเนื้อหาหรือลดขนาดภาพ +3. **พื้นหลังโปร่งใส:** โดยค่าเริ่มต้น PNG อาจเป็นโปร่งใส หากคุณต้องการพื้นหลังทึบ (เช่น สำหรับภาพย่ออีเมล), ตั้งค่า `BackgroundColor` ตามที่แสดงไว้ก่อนหน้า +4. **การรันสคริปต์:** Aspose.HTML ไม่ทำการรัน JavaScript หากแผนภูมิของคุณสร้างด้วยไลบรารีฝั่งไคลเอนท์อย่าง Chart.js, คุณต้องพรี‑เรนเดอร์แผนภูมิเป็น `` สถิติก่อนหรือใช้เบราว์เซอร์ headless แทน + +## ตัวอย่างทำงานเต็มรูปแบบ + +ด้านล่างเป็นโปรแกรมเต็มที่คุณสามารถคัดลอก‑วางลงในแอปคอนโซล มันรวมทุกขั้นตอน, การจัดการข้อผิดพลาด, และการปรับแต่งเสริมที่กล่าวถึงข้างต้น + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +รันโปรแกรม, คุณจะเห็นข้อความยืนยันตามด้วยขนาดของภาพ เปิด `chart.png` ด้วยโปรแกรมดูภาพใดก็ได้เพื่อยืนยันว่าแผนภูมิดูเหมือนกับ 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/thai/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/thai/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..a46f007f2 --- /dev/null +++ b/html/thai/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-04-19 +description: เรียนรู้วิธีบันทึก HTML เป็นไฟล์ ZIP ด้วย Aspose.Html และตัวจัดการทรัพยากรแบบกำหนดเอง + อีกทั้งค้นพบวิธีแปลง URL เป็น ZIP และดาวน์โหลด HTML เป็น ZIP ภายในไม่กี่นาที. +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: th +og_description: 'บันทึก HTML เป็นไฟล์ ZIP ง่ายดาย: ใช้ Aspose.Html, ตัวจัดการทรัพยากรแบบกำหนดเอง, + และ ZipSaveOptions เพื่อแปลง URL ใด ๆ ให้เป็นไฟล์ ZIP ที่ดาวน์โหลดได้' +og_title: บันทึก HTML เป็น ZIP ด้วยตัวจัดการทรัพยากรแบบกำหนดเอง – สอนอย่างรวดเร็ว +tags: +- Aspose.Html +- C# +- Web scraping +title: บันทึก HTML เป็นไฟล์ ZIP ด้วยตัวจัดการทรัพยากรแบบกำหนดเอง – คู่มือแบบทีละขั้นตอน +url: /th/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# save html as zip – Complete Tutorial + +เคยต้อง **save html as zip** เพื่อให้คุณสามารถส่งหน้าเว็บทั้งหมดพร้อมรูปภาพ, CSS, และสคริปต์ในแพคเกจเดียวที่เรียบร้อยหรือไม่? บางทีคุณอาจกำลังสร้าง crawler ที่เก็บบทความ, หรือคุณแค่ต้องการปุ่ม “download html as zip” อย่างรวดเร็วสำหรับผู้ใช้ของคุณ ไม่ว่ากรณีใด คุณคงสงสัยว่าจะทำอย่างไรโดยไม่ต้องเขียนโค้ด file‑IO จำนวนล้านบรรทัด + +ข่าวดีคือ: Aspose.Html ทำให้เรื่องนี้ง่ายเหมือนเค้ก, และด้วย **custom resource handler** คุณสามารถกำหนดได้ว่า stream ของแต่ละ resource จะไปที่ไหน ในคู่มือนี้เราจะสาธิตวิธี **convert url to zip**, **download html as zip**, และ **save webpage resources** สำหรับการใช้งานออฟไลน์—ทั้งหมดในโปรแกรม C# ตัวเดียวที่ทำงานอิสระ + +## What You’ll Learn + +- ติดตั้งไลบรารี Aspose.Html (NuGet ทำให้ง่ายมาก) +- เขียน `ResourceHandler` ที่ให้ `Stream` สำหรับทุก resource ที่ Aspose.Html ต้องการเขียน +- โหลดหน้าเว็บระยะไกล (หรือไฟล์ท้องถิ่น) แล้วบอก Aspose.Html ให้บรรจุทุกอย่างลงในไฟล์ ZIP +- ตรวจสอบว่า `output.zip` ที่ได้มีไฟล์ HTML พร้อม assets ที่เชื่อมโยงทั้งหมด + +ไม่มีเครื่องมือภายนอก, ไม่มีการจัดการไฟล์ ZIP ด้วยตนเอง—แค่โค้ดที่คอมไพล์สะอาดที่คุณสามารถใส่ลงในโปรเจกต์ .NET ใดก็ได้ + +## Prerequisites + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6.0 or later (the code also works on .NET Framework 4.7+) | Aspose.Html targets modern runtimes; older frameworks may miss some APIs. | +| Visual Studio 2022 (or any IDE you like) | Helpful for debugging and seeing the generated ZIP. | +| Internet access for the sample URL (`https://example.com`) | We’ll fetch a live page to demonstrate **convert url to zip**. | +| NuGet package `Aspose.Html` (v23.12 or newer) | This library provides `HTMLDocument`, `ZipSaveOptions`, and the `ResourceHandler` base class. | + +ถ้าคุณมีโปรเจกต์ .NET อยู่แล้ว เพียงรัน: + +```bash +dotnet add package Aspose.Html +``` + +เท่านี้ก็พร้อมใช้งานแล้ว + +## Step 1: Create a Custom Resource Handler + +หัวใจของวิธีแก้คือคลาสที่สืบทอดจาก `ResourceHandler` Aspose.Html จะเรียก `HandleResource` สำหรับทุกไฟล์ที่ต้องการเขียน—HTML, รูปภาพ, CSS, JavaScript, อะไรก็ได้ โดยการคืนค่า `Stream` คุณจะกำหนดว่าข้อมูลจะถูกบันทึกที่ไหน + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**ทำไมต้องใช้ handler แบบกำหนดเอง?** +เพราะอินเทอร์เฟซ `IOutputStorage` รุ่นเก่าได้ถูกยกเลิก, และ `ResourceHandler` ให้คุณควบคุมปลายทางของผลลัพธ์ได้เต็มที่ อีกทั้งยังสามารถตรวจสอบ `ResourceInfo`—มีประโยชน์หากคุณต้องการเก็บเฉพาะรูปภาพและข้ามฟอนต์ เป็นต้น + +## Step 2: Load the HTML Document (or Convert URL to Zip) + +Aspose.Html สามารถโหลดจาก URL, เส้นทางไฟล์, หรือสตริง HTML ดิบ ที่นี่เราจะแสดงการโหลดหน้าเว็บสด ซึ่งเป็นกรณีทั่วไปเมื่อคุณต้องการ **download html as zip** + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +ถ้าคุณมีซอร์ส HTML อยู่ในตัวแปรแล้ว เพียงส่งให้คอนสตรัคเตอร์: + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## Step 3: Wire Up the Handler to ZipSaveOptions + +`ZipSaveOptions` บอก Aspose.Html *วิธี* สร้างไฟล์ ZIP คุณสมบัติสำคัญคือ `OutputStorage` เราตั้งค่าให้เป็นอินสแตนซ์ `MyHandler` ของเรา + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +คุณยังสามารถปรับระดับการบีบอัด, ชื่อโฟลเดอร์ภายใน archive, หรือแม้กระทั่งฝังไฟล์ manifest—รายละเอียดอยู่ในเอกสาร Aspose, แต่ค่าเริ่มต้นทำงานได้ดีสำหรับหลายสถานการณ์ + +## Step 4: Save the Document as a ZIP Archive + +ตอนนี้จุดมุ่งหมายสำคัญเกิดขึ้นแล้ว เมธอด `Save` จะวนลูปทุก resource, เรียก `HandleResource`, และเขียนไบต์ลงใน stream ที่คืนค่า เพราะ handler ของเราสร้าง `MemoryStream` ใหม่ทุกครั้ง Aspose.Html จะรวบรวม stream เหล่านั้นและบรรจุเป็น `output.zip` + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**สิ่งที่คุณจะเห็น:** +- `output.zip` อยู่ที่รูทของโฟลเดอร์โปรเจกต์ของคุณ +- ภายใน ZIP: `index.html` (หน้าแรก) พร้อมโฟลเดอร์ย่อยเช่น `images/`, `css/`, `scripts/` ที่มีไฟล์เดียวกับที่เบราว์เซอร์ร้องขอ + +## Step 5: Verify the Result (Optional but Recommended) + +การตรวจสอบอย่างรวดเร็วช่วยให้มั่นใจว่าคุณ **save webpage resources** อย่างถูกต้อง + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +คุณควรเห็นรายการสำหรับ `index.html`, รูปภาพที่เชื่อมโยง (`logo.png`), ไฟล์ CSS, และไฟล์ JavaScript หากมีอะไรขาดหาย ให้ตรวจสอบตรรกะ `ResourceInfo` ใน `MyHandler` + +## Full Working Example + +รวมทั้งหมดเข้าด้วยกัน นี่คือโปรแกรมเต็มที่คุณสามารถคัดลอก‑วางลงในแอปคอนโซล + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +รันโปรแกรม (`dotnet run`) แล้วคุณจะได้ `output.zip` ที่เรียบร้อย เปิดด้วยโปรแกรมจัดการ archive ใดก็ได้ แล้วคุณสามารถเรียกดูหน้าเว็บที่บันทึกไว้แบบออฟไลน์—พอดีกับฟังก์ชัน **download html as zip** ที่คุณต้องการ + +## Common Questions & Edge Cases + +| Question | Answer | +|----------|--------| +| *What if I need to store the ZIP in Azure Blob Storage?* | Replace `MemoryStream` with a stream that writes directly to a blob (e.g., `CloudBlockBlob.OpenWrite()`). The handler abstraction makes this trivial. | +| *Can I filter out certain resources?* | Yes. Inside `HandleResource`, inspect `info.ResourceType` or `info.Url`. Return `null` to skip a resource, or return a stream that writes nothing. | +| *Is the ZIP password‑protected?* | `ZipSaveOptions` has a `Password` property. Set it before calling `Save` if you need encryption. | +| *What about large pages with dozens of megabytes of assets?* | Using `MemoryStream` for everything may exhaust RAM. Switch to a `FileStream` that writes to a temporary folder, then let Aspose.Html compress those files. | +| *Does this work on .NET Core on Linux?* | Absolutely. Aspose.Html is cross‑platform; just ensure the runtime has permission to write files. | + +## Pro Tips + +- **Pro tip:** หากคุณสนใจเฉพาะ HTML และรูปภาพ ให้ตรวจสอบ `info.ResourceType == ResourceType.Image` และข้ามสคริปต์หรือฟอนต์เพื่อทำให้ ZIP เล็กลง +- **Watch out for:** บางไซต์อาจบล็อกคำขออัตโนมัติ ตั้ง `User-Agent` แบบกำหนดเองผ่าน `HtmlLoadOptions` หากเจอ error 403 +- **Tip:** หลังจากสร้าง ZIP แล้ว คุณสามารถให้บริการโดยตรงจากคอนโทรลเลอร์ ASP.NET ด้วย `FileResult`, ทำให้ผู้ใช้ของคุณมีปุ่ม **download html as zip** เพียงคลิกเดียว + +## Conclusion + +ตอนนี้คุณมีวิธีที่พร้อมใช้งานในระดับ production เพื่อ **save html as zip** ด้วย Aspose.Html และ **custom resource handler** เพียงโหลด URL ใดก็ได้, ตั้งค่า `ZipSaveOptions`, แล้วให้ handler จัดการ stream คุณก็สามารถ **convert url to zip**, **download html as zip**, และ **save webpage resources** ได้ด้วยไม่กี่บรรทัดของ C# + +ลองทดลอง—เก็บ stream ลงดิสก์, cloud storage, หรือแม้กระทั่งฐานข้อมูล รูปแบบยังคงเหมือนเดิมและผลลัพธ์คือ archive ที่เรียบร้อย สามารถส่งต่อ, แคช, หรือเก็บถาวรได้ตลอดไป + +--- + +![Diagram illustrating the save html as zip workflow – from loading a URL to producing a ZIP file](/images/save-html-as-zip.png) + +*Image alt text:* **แผนภาพการทำงาน save html as zip – จากการโหลด URL ไปจนถึงการสร้างไฟล์ ZIP** + +ถ้าคุณพบว่าบทเรียนนี้เป็นประโยชน์ อย่าลืมแสดงความคิดเห็น, แชร์กับเพื่อนร่วมทีม, หรือกดดาวที่รีโปที่คุณเก็บสคริปต์ยูทิลิตี้ของคุณ ขอให้เขียนโค้ดอย่างสนุกสนาน! + +{{< /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/thai/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/thai/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..54802c4d5 --- /dev/null +++ b/html/thai/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,217 @@ +--- +category: general +date: 2026-04-19 +description: บันทึกหน้าเว็บเป็นไฟล์ zip ด้วย Aspose.HTML ใน C# . เรียนรู้วิธีแปลง + URL เป็น zip, ส่งออก HTML เป็น zip, และดาวน์โหลดหน้าเว็บเป็น zip ด้วยตัวอย่างโค้ดง่าย + ๆ. +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: th +og_description: บันทึกหน้าเว็บเป็นไฟล์ zip ด้วย Aspose.HTML ใน C#. คู่มือนี้แสดงวิธีแปลง + URL เป็น zip, ส่งออก HTML เป็น zip, และดาวน์โหลดหน้าเว็บเป็น zip เพียงไม่กี่ขั้นตอน. +og_title: บันทึกหน้าเว็บเป็นไฟล์ ZIP ด้วย Aspose.HTML – คู่มือ C# ฉบับสมบูรณ์ +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: บันทึกหน้าเว็บเป็นไฟล์ ZIP ด้วย Aspose.HTML – คู่มือ C# ฉบับสมบูรณ์ +url: /th/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# บันทึกหน้าเว็บเป็น ZIP ด้วย Aspose.HTML – คำแนะนำ C# ฉบับสมบูรณ์ + +ต้องการ **บันทึกหน้าเว็บเป็น zip** เพื่อการเก็บสำรองออฟไลน์, การทดสอบอัตโนมัติ, หรือเพียงแค่ส่งมอบสแนปช็อตของเว็บไซต์? คุณไม่ได้อยู่คนเดียว ในบทเรียนนี้เราจะอธิบายวิธี **แปลง URL เป็น zip**, **ส่งออก HTML เป็น zip**, และแม้กระทั่ง **ดาวน์โหลดหน้าเว็บเป็น zip** ด้วยไม่กี่บรรทัด C# ที่เรียบง่าย + +เราจะครอบคลุมตั้งแต่การตั้งค่าโปรเจกต์จนถึงไฟล์ ZIP สุดท้ายบนดิสก์ และจะแทรกเคล็ดลับปฏิบัติที่คุณอาจไม่พบในเอกสารอย่างเป็นทางการ เมื่อจบคุณจะมีโซลูชันที่สามารถ **สร้าง zip จาก html** ได้ทุกครั้งที่ต้องการ + +## สิ่งที่คุณต้องมี + +- **.NET 6.0** (หรือเวอร์ชัน .NET ใกล้เคียง) – Aspose.HTML ทำงานได้กับ .NET Core และ .NET Framework ทั้งคู่ +- **Aspose.HTML for .NET** NuGet package – `Install-Package Aspose.HTML` +- ความรู้พื้นฐานของ C# เล็กน้อย – หากคุณเขียน `Console.WriteLine` ได้ก็พร้อมแล้ว +- เครื่องที่เชื่อมต่ออินเทอร์เน็ตสำหรับการดาวน์โหลดครั้งแรก (โค้ดเองทำงานออฟไลน์ได้หลังจากสร้าง ZIP) + +ไม่มี SDK เพิ่มเติม, ไม่มีเบราว์เซอร์แบบ headless, เพียง .NET และ Aspose.HTML เท่านั้น + +![Illustration of saving webpage as zip using Aspose.HTML](save-webpage-as-zip.png "Diagram showing save webpage as zip workflow") + +## บันทึกหน้าเว็บเป็น ZIP – ภาพรวม + +โดยภาพรวมกระบวนการประกอบด้วยสามส่วนหลัก: + +1. **`ResourceHandler` แบบกำหนดเอง** ที่บอก Aspose.HTML ว่าจะเขียนทรัพยากรภายนอก (รูปภาพ, CSS, สคริปต์) ไปที่ไหน +2. **`ZipSaveOptions`** ที่ผูกตัวจัดการกับไฟล์ ZIP และให้คุณปรับการเรนเดอร์ (antialiasing, font hints ฯลฯ) +3. **การเรียก `HTMLDocument.Save`** ที่รวมทุกอย่างเข้าด้วยกัน, สตรีมหน้าและทรัพยากรทั้งหมดเข้าไฟล์ ZIP + +เท่านี้เอง งานหนักทั้งหมดทำโดย Aspose.HTML คุณจึงมุ่งเน้นที่ “ทำไม” และ “เมื่อไหร่” แทนการต่อสู้กับสตรีมระดับล่าง + +--- + +## ขั้นตอนที่ 1: ตั้งค่าโปรเจกต์และเพิ่ม Aspose.HTML + +แรกเริ่มให้สร้างโปรเจกต์คอนโซลใหม่ (หรือใส่โค้ดลงในแอปที่มีอยู่) เปิดเทอร์มินัลและรัน: + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +แพคเกจ `Aspose.HTML` มีทุกประเภทที่เราต้องใช้: `HTMLDocument`, `ZipSaveOptions`, `ImageRenderingOptions`, และ `ResourceHandler` แบบ abstract + +> **Pro tip:** หากคุณทำงานกับ .NET Framework ให้เปลี่ยนคำสั่ง `dotnet` เป็น NuGet Package Manager UI ใน Visual Studio – DLL เดียวกันจะถูกเพิ่มเข้าไป + +--- + +## ขั้นตอนที่ 2: สร้าง Custom `ZipHandler` Resource Handler + +Aspose.HTML จะเรียก `HandleResource` สำหรับไฟล์ภายนอกทุกไฟล์ที่พบระหว่างการพาร์สหน้าเว็บ การโอเวอร์ไรด์เมธอดนี้ทำให้เราสามารถส่งทรัพยากรแต่ละรายการเข้า ZIP entry แทนการเขียนลงไฟล์ระบบ + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### ทำไมต้องมีตัวจัดการแบบกำหนดเอง? + +หากไม่มีมัน Aspose.HTML จะบันทึกทรัพยากรไว้ข้างไฟล์ HTML บนดิสก์ การใช้ `ZipArchive` ทำให้ **ทุกอย่างถูกรวมเป็นหนึ่งไฟล์** – เหมาะสำหรับการแจกจ่ายหรือการสกัดภายหลังโดยบริการอื่น + +--- + +## ขั้นตอนที่ 3: ตั้งค่า `ZipSaveOptions` พร้อม Image Rendering + +ต่อไปเราจะผูกตัวจัดการเข้ากับตัวเลือกการบันทึกและเปิดการปรับแต่งการเรนเดอร์บางอย่างเพื่อเพิ่มความคมชัดของภาพสกรีนช็อตหรือการแปลงแบบ PDF‑like + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **ทำไมต้องเปิด antialiasing และ hinting?** เมื่อหน้าถูกเรนเดอร์เป็นบิตแมป (เช่น สร้าง thumbnail) ธงเหล่านี้ช่วยลดขอบหยักและทำให้ฟอนต์ขนาดเล็กอ่านง่าย – สำคัญมากหากคุณวางแผนจะฝังภาพเหล่านี้ในที่อื่น + +--- + +## ขั้นตอนที่ 4: โหลด HTML Document และบันทึกเป็น ZIP + +เมื่อมีตัวจัดการและตัวเลือกพร้อมแล้ว การโหลดหน้าเว็บระยะไกลก็ง่ายเพียงส่ง URL ให้ `HTMLDocument` เมธอด `Save` จะเรียก `HandleResource` สำหรับทุกแอสเซ็ตที่เชื่อมโยง + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +ในขณะนี้ `zipStream` จะถือ **ZIP archive ที่สมบูรณ์ซึ่งประกอบด้วย**: + +- `index.html` (หน้าเว็บหลัก) +- ไฟล์ CSS ทั้งหมดที่อ้างอิงโดยแท็ก `` +- รูปภาพ, ฟอนต์, และไฟล์ JavaScript ที่จำเป็นสำหรับการเรนเดอร์หน้าเว็บแบบออฟไลน์ + +### กรณีพิเศษ & ตัวแปรต่าง ๆ + +| สถานการณ์ | สิ่งที่ต้องปรับ | +|-----------|----------------| +| **ต้องการการยืนยันตัวตน** | ใช้ `HTMLDocument(string url, LoadOptions options)` และตั้งค่า `options.Credentials` | +| **หน้าเว็บขนาดใหญ่มาก (>100 MB)** | เขียนโดยตรงไปยัง `FileStream` แทน `MemoryStream` เพื่อหลีกเลี่ยงการใช้ RAM สูง | +| **URL แบบ relative ที่เริ่มด้วย “//”** | ตัวจัดการจะทำการ normalize ให้โดยอัตโนมัติ; เพียงตรวจสอบให้ `BaseUrl` ถูกตั้งค่า | +| **โครงสร้างโฟลเดอร์แบบกำหนดเองใน ZIP** | ปรับ `info.Path` ภายใน `HandleResource` ก่อนสร้าง entry | + +--- + +## ขั้นตอนที่ 5: บันทึกไฟล์ ZIP ลงดิสก์และตรวจสอบผลลัพธ์ + +สุดท้ายให้เขียน ZIP ที่อยู่ในหน่วยความจำลงไฟล์บนดิสก์ ขั้นตอนนี้เป็นทางเลือก หากคุณต้องการส่งสตรีมผ่านเครือข่าย แต่ช่วยให้การตรวจสอบง่ายขึ้น + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**ผลลัพธ์ที่คาดหวัง:** การเปิด `result.zip` จะเห็นไฟล์ `index.html` ที่เมื่อเปิดในเบราว์เซอร์แบบออฟไลน์ จะดูเหมือนหน้าเว็บสด (โดยที่แอสเซ็ตทั้งหมดสามารถเข้าถึงได้ในช่วงการดาวน์โหลด) + +--- + +## คำถามที่พบบ่อย + +**ถาม: วิธีนี้ทำงานกับหน้าที่ใช้ lazy‑loaded images ได้หรือไม่?** +ตอบ: ได้, ตราบใดที่รูปภาพถูกร้องขอระหว่างการเดิน DOM ครั้งแรก หากสคริปต์โหลดรูปภาพหลังจากโหลดหน้า คุณอาจต้องเรียก `document.Render()` ด้วยตนเองก่อน `Save` + +**ถาม: สามารถบีบอัด ZIP ให้เล็กลงได้หรือไม่?** +ตอบ: API `ZipArchive` ใช้ระดับการบีบอัดเริ่มต้น หากต้องการบีบอัดอย่างเข้มข้น ให้สร้างด้วย `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)` + +**ถาม: หากต้องการ ZIP ที่มีรหัสผ่านจะทำอย่างไร?** +ตอบ: `ZipArchive` ในตัวไม่รองรับการเข้ารหัส ในกรณีนั้นให้ส่งออกสตรีมผ่านไลบรารีของบุคคลที่สาม เช่น `SharpZipLib` หลังจาก Aspose.HTML เขียนเสร็จ + +--- + +## เคล็ดลับสำหรับการใช้งานใน Production + +- **Reuse the `ZipHandler`** เมื่อประมวลผลหลายหน้าในชุด; เพียงรีเซ็ต `MemoryStream` ที่อยู่ด้านล่างระหว่างรัน +- **Log + +{{< /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/turkish/net/generate-jpg-and-png-images/_index.md b/html/turkish/net/generate-jpg-and-png-images/_index.md index a918363c4..7bf09435b 100644 --- a/html/turkish/net/generate-jpg-and-png-images/_index.md +++ b/html/turkish/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ HTML belgelerini düzenlemek, HTML'yi resimlere dönüştürmek ve daha fazlası DOCX belgelerini PNG veya JPG formatına dönüştürürken antialiasing'i etkinleştirerek daha net ve pürüzsüz görüntüler elde edin. ### [docx'i png'ye dönüştür – zip arşivi oluşturma C# eğitimi](./convert-docx-to-png-create-zip-archive-c-tutorial/) C# kullanarak docx dosyalarını png formatına dönüştürüp, sonuçları zip arşivi içinde paketlemeyi öğrenin. +### [HTML'yi PNG'ye Render Etme – Tam C# Kılavuzu](./how-to-render-html-to-png-complete-c-guide/) +HTML içeriğini PNG görüntüsüne dönüştürmek için C# ile adım adım tam rehber. ## Çözüm diff --git a/html/turkish/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/turkish/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..6c85ca2ea --- /dev/null +++ b/html/turkish/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,159 @@ +--- +category: general +date: 2026-04-19 +description: Aspose.Html ile HTML'yi PNG'ye nasıl render edersiniz. HTML'yi PNG'ye + dönüştürmeyi, HTML'yi PNG olarak kaydetmeyi ve HTML'den dakikalar içinde görüntü + oluşturmayı öğrenin. +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: tr +og_description: Aspose.Html ile HTML'yi PNG'ye nasıl render edersiniz. HTML'yi PNG'ye + dönüştürmek, HTML'yi PNG olarak kaydetmek ve HTML'den görüntü oluşturmak için bu + adım adım öğreticiyi izleyin. +og_title: HTML'yi PNG'ye Render Etme – Tam C# Rehberi +tags: +- Aspose.Html +- C# +title: HTML'yi PNG'ye Render Etme – Tam C# Rehberi +url: /tr/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML'yi PNG'ye Render Etme – Tam C# Rehberi + +Hiç **HTML'yi** bir görüntü dosyasına tarayıcı açmadan dönüştürmeyi düşündünüz mü? Tek başınıza değilsiniz. Birçok projede—e‑posta küçük resimleri, PDF oluşturma veya sadece hızlı ön izlemeler—**HTML'yi PNG'ye dönüştürmek** gerekir. + +Bu öğreticide Aspose.Html for .NET kullanarak uygulamalı bir çözüm üzerinden geçeceğiz; kütüphanenin kurulumu, küçük fontlar için metin‑ipucu ayarları ve daha fazlası. Sonunda **HTML'yi PNG olarak kaydedebilecek**, **HTML'den görüntü oluşturabilecek** ve kenar‑durum senaryoları için render seçeneklerini ayarlayabileceksiniz. + +## What You’ll Need + +- **.NET 6+** (veya .NET Framework 4.6.2+). API çalışma zamanları arasında aynı şekilde çalışır. +- **Aspose.Html** NuGet paketi – `Install-Package Aspose.Html`. +- Görüntüye dönüştürmek istediğiniz basit bir HTML dosyası (ör. `article.html`). +- Visual Studio, Rider veya tercih ettiğiniz herhangi bir editör. + +Hepsi bu—ekstra bağımlılık yok, headless Chrome yok, sadece saf C#. + +## Step 1: Install Aspose.Html and Add Namespaces + +İlk olarak kütüphaneyi NuGet üzerinden çekin. Package Manager Console’da şu komutu çalıştırın: + +```powershell +Install-Package Aspose.Html +``` + +Kurulum tamamlandıktan sonra dosyanızın en üstüne gerekli `using` yönergelerini ekleyin: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +Bu ad alanları, belge modeli, görüntü render'ı ve daha sonra ihtiyaç duyacağımız ince ayarlı metin seçeneklerine erişim sağlar. + +> **Pro tip:** `.csproj` dosyanız varsa `` satırını da manuel ekleyebilirsiniz. + +## Step 2: Load the HTML Document + +Kaynak dosyaya işaret eden bir `HTMLDocument` örneğine ihtiyacınız var. Aspose.Html bir yol, akış ya da hatta bir URL'den okuyabilir. + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Why this matters:** Belgeyi bir kez yüklemek bellek kullanımını düşük tutar. Birden çok sayfa render edecekseniz mümkün olduğunca aynı `HTMLDocument` nesnesini yeniden kullanın. + +## Step 3: Tweak Text Rendering for Small Fonts + +Küçük metin render edildiğinde kenarları bulanık çıkabilir. Hinting'i etkinleştirmek rasterizer'ın glifleri piksel sınırlarına hizalamasını sağlar ve okunurluğu büyük ölçüde artırır. + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +Ayrıca anti‑aliasing, subpixel render veya özel bir font koleksiyonu belirleyebilirsiniz—HTML'niz web fontları referans veriyorsa bu çok işe yarar. + +## Step 4: Configure Image Rendering Options + +Şimdi `TextOptions` nesnesini görüntü ayarlarına bağlayacağız. Arka plan rengi, DPI veya görüntü formatı (PNG, JPEG, BMP) gibi seçenekleri de burada belirtebilirsiniz. + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **Edge case:** HTML'niz tipik ekran boyutlarından daha genişse, devasa PNG'ler oluşmasını önlemek için `ImageRenderingOptions` üzerindeki `Width` ve `Height` değerlerini ayarlamayı düşünün. + +## Step 5: Render the HTML to a PNG File + +Son olarak `RenderToImage` metodunu çağırın. Kullanılan metod aşırı yüklemesi, çıktı yolunu ve az önce oluşturduğumuz seçenekleri alır. + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +Programı çalıştırdığınızda Aspose.Html işaretlemeyi, CSS'i uygular, sayfayı yerleştirir ve `article.png` dosyasına rasterleştirir. Dosyayı herhangi bir görüntü görüntüleyicide açın—orijinal HTML'nizin piksel‑tam bir anlık görüntüsünü görmelisiniz. + +![Aspose.Html kullanarak html'yi PNG olarak nasıl render ederiz](render-html-png.png) + +*Görsel alt metni: **html'yi nasıl render ederiz** PNG olarak Aspose.Html kullanarak* + +## Bonus: Handling Multiple Pages or Scaling + +Bazen tek bir HTML dosyası birden fazla `` bölümü içerir (ör. baskı için). `htmlDoc.Pages` üzerinden döngü kurarak her sayfayı ayrı ayrı render edebilirsiniz: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +Tam boyutlu bir görüntü yerine küçük bir ön izleme istiyorsanız, render etmeden önce `imgOpts.Width` ve `imgOpts.Height` değerlerini ayarlayın. Kütüphane otomatik olarak en‑boy oranını korur. + +--- + +## Conclusion + +Artık **HTML'yi PNG'ye render etme** konusunda üretim‑hazır bir tarifiniz var; Aspose.Html kullanarak paketi kurmaktan, işaretlemenizi yüklemeye, metin hinting'i ince ayarlamaya ve sonunda `RenderToImage` çağrısına kadar her adım kapsandı. + +Bu bilgiyle **HTML'yi PNG'ye dönüştürebilir**, **HTML'yi PNG olarak kaydedebilir** ve **HTML'den görüntü oluşturabilirsiniz**; ister bir web servisiyle küçük resimler üretin, ister bir masaüstü aracıyla web sayfalarını arşivleyin. + +Sonraki adımda **HTML'yi görüntüye render etme** gibi farklı formatları (JPEG, BMP) keşfedebilir veya PNG'yi Aspose.PDF ile bir PDF'e gömebilirsiniz. DPI ölçeklendirmesiyle yüksek çözünürlüklü baskılar yapmayı deneyebilir ya da dinamik olarak üretilen HTML'yi aynı boru hattına besleyebilirsiniz. + +Sorularınız veya ilginç bir kullanım senaryonuz mu var? Aşağıya bir yorum bırakın, keyifli render'lar! + +{{< /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/turkish/net/html-extensions-and-conversions/_index.md b/html/turkish/net/html-extensions-and-conversions/_index.md index 8dd996b05..31c8d29a9 100644 --- a/html/turkish/net/html-extensions-and-conversions/_index.md +++ b/html/turkish/net/html-extensions-and-conversions/_index.md @@ -59,6 +59,8 @@ Etkili içerik düzenlemesi için Aspose.HTML kullanarak .NET'te HTML'yi Markdow Aspose.HTML ile .NET'te HTML'yi MHTML'ye dönüştürün - Etkili web içeriği arşivleme için adım adım bir kılavuz. MHTML arşivleri oluşturmak için .NET için Aspose.HTML'yi nasıl kullanacağınızı öğrenin. ### [Aspose.HTML ile .NET'te HTML'yi PNG'ye dönüştürün](./convert-html-to-png/) HTML belgelerini düzenlemek ve dönüştürmek için Aspose.HTML for .NET'in nasıl kullanılacağını keşfedin. Etkili .NET geliştirme için adım adım kılavuz. +### [C# ile HTML'yi PNG'ye Dönüştür – HTML'yi Görüntü Olarak Renderla](./convert-html-to-png-in-c-render-html-as-image/) +Aspose.HTML for .NET ile C# içinde HTML'yi PNG'ye dönüştürün, görüntü olarak renderleyin. Adım adım örnekler ve ipuçları. ### [Aspose.HTML ile .NET'te HTML'yi TIFF'e dönüştürün](./convert-html-to-tiff/) Aspose.HTML for .NET ile HTML'yi TIFF'e nasıl dönüştüreceğinizi öğrenin. Etkili web içeriği optimizasyonu için adım adım kılavuzumuzu izleyin. ### [Aspose.HTML ile .NET'te HTML'yi XPS'e dönüştürün](./convert-html-to-xps/) @@ -69,8 +71,11 @@ Aspose.HTML for .NET kullanarak HTML'den PDF'ye nasıl dönüştüreceğinizi ad ### [Stil Verilmiş Metinle HTML Belgesi Oluşturma ve PDF'ye Dışa Aktarma – Tam Kılavuz](./create-html-document-with-styled-text-and-export-to-pdf-full/) ### [HTML'yi ZIP Olarak Kaydet – Tam C# Öğreticisi](./save-html-as-zip-complete-c-tutorial/) Aspose.HTML for .NET kullanarak HTML dosyalarını ZIP arşivine kaydetmeyi adım adım öğrenin. +### [Aspose.HTML ile Web Sayfasını ZIP Olarak Kaydet – Tam C# Öğreticisi](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +Aspose.HTML for .NET kullanarak bir web sayfasını ZIP arşivine kaydetmeyi adım adım öğrenin. ### [C# ile HTML'yi ZIP'e Kaydet – Tam Bellek İçi Örnek](./save-html-to-zip-in-c-complete-in-memory-example/) Aspose.HTML for .NET kullanarak HTML dosyasını bellek içinde ZIP arşivine dönüştürmeyi adım adım öğrenin. +### [Özel kaynak işleyicisiyle HTML'yi ZIP olarak kaydet – adım adım kılavuz](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/turkish/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/turkish/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..6a54c9802 --- /dev/null +++ b/html/turkish/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-04-19 +description: Aspose.HTML kullanarak C#'de HTML'yi PNG'ye dönüştürün – HTML'yi görüntü + olarak işlemek ve grafiği anti‑aliasing ile PNG olarak kaydetmek için hızlı bir + rehber. +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: tr +og_description: C#'ta HTML'yi hızlıca PNG'ye dönüştürün. HTML'yi görüntü olarak nasıl + render edeceğinizi, grafiği PNG olarak nasıl kaydedeceğinizi ve Aspose.HTML ile + HTML'den PNG nasıl oluşturacağınızı öğrenin. +og_title: HTML'yi C# ile PNG'ye Dönüştür – HTML'yi Görüntü Olarak Renderla +tags: +- Aspose.HTML +- C# +- Image Processing +title: HTML'yi C#'ta PNG'ye Dönüştür – HTML'yi Görüntü Olarak Renderle +url: /tr/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML'yi C#'ta PNG'ye Dönüştür – HTML'yi Görüntü Olarak Renderla + +C#'ta **HTML'yi PNG'ye dönüştürmeye** ihtiyaç duydunuz ama hangi kütüphanenin net bir sonuç vereceğinden emin değildiniz mi? Yalnız değilsiniz. Dinamik bir grafiği dışa aktarıyor, bir e-posta şablonunu küçük resme çeviriyor ya da sadece bir web sayfasının statik bir anlık görüntüsüne ihtiyacınız olsun, **HTML'yi görüntü olarak renderlama** yeteneği her geliştiricinin araç kutusunda kullanışlı bir hiledir. + +Bu öğreticide, Aspose.HTML ile bir HTML dosyasını PNG dosyasına dönüştürme sürecini adım adım inceleyeceğiz. Sonunda **grafiği PNG olarak kaydedebilecek**, **HTML'den PNG oluşturabilecek** ve hatta o pürüzsüz görünüm için anti‑aliasing ayarlarını ince ayar yapabileceksiniz. Gereksiz ayrıntı yok—sadece projenize hemen ekleyebileceğiniz tam, çalıştırılabilir bir örnek. + +## Gereksinimler + +- **.NET 6.0** veya üzeri (kod .NET Framework 4.6+ üzerinde de çalışır). +- **Aspose.HTML for .NET** – NuGet üzerinden `Install-Package Aspose.HTML` komutuyla edinebilirsiniz. +- Yakalamak istediğiniz işaretlemeyi içeren basit bir HTML dosyası (ör. `chart.html`). +- Tercih ettiğiniz bir IDE—Visual Studio, Rider ya da VS Code yeterli. + +Hepsi bu. Ek bağımlılıklar yok, headless tarayıcılar yok, sadece tek bir iyi belgelenmiş kütüphane. + +![HTML'yi PNG'ye Dönüştürme örneği](example.png "HTML'yi PNG'ye Dönüştürme çıktısı") + +## Adım 1: HTML Belgesini Yükle + +İlk yapmamız gereken, Aspose.HTML'yi kaynak dosyaya yönlendirmektir. `HTMLDocument` sınıfını, kütüphanenin daha sonra bir bitmap üzerine çizeceği her şeyi tutan bir tuval olarak düşünün. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*Neden önemli:* Belgeyi yüklemek, ayrıştırma aşamasını render aşamasından ayırır. Motorun CSS, script ve görselleri PNG üretmeden önce çözümlemesine olanak tanır. Bu adımı atlayıp ham işaretlemeyi render etmeye çalışırsanız, boş bir görüntü ya da eksik stillerle karşılaşırsınız. + +## Adım 2: Görüntü Render Ayarlarını Yapılandır + +Varsayılan olarak Aspose.HTML size tatmin edici bir PNG sunar, ancak genellikle daha pürüzsüz kenarlar istersiniz—özellikle grafikler ve vektör görselleri için. İşte `ImageRenderingOptions` burada devreye girer. + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*Pro ipucu:* Yüksek DPI ekranlarla çalışıyorsanız, `Width` ve `Height` değerlerini orantılı olarak artırın ve PNG'nin daha büyük olmasına izin verin. Daha sonra bir görüntü düzenleyiciyle küçültebilirsiniz. Ayrıca, arka plan rengini ayarlamak, şeffaf PNG'lerin koyu sayfalarda garip görünmesini önler. + +## Adım 3: HTML'yi PNG Dosyasına Renderla + +Şimdi asıl iş burada gerçekleşir. `RenderToImage` yöntemi, çıktının yolunu ve az önce tanımladığımız seçenekleri alır, ardından bir PNG'yi diske yazar. + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +Bu satır tamamlandığında, hedef klasörde `chart.png` dosyasını bulacaksınız. Açın—grafik net görünüyor mu? Anti‑aliasing'i açtıysanız, çizgiler pürüzsüz ve metinler keskin olmalı. + +### Sonucu Doğrulama + +Görüntüyü programatik olarak hızlıca doğrulayabilirsiniz: + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +Konsol sıfır olmayan boyutlar ve desteklenen bir piksel formatı (ör. `Format32bppArgb`) yazdırıyorsa, **html'yi png'ye dönüştürme** işlemini başarıyla tamamlamışsınız. + +## HTML'yi Görüntü Olarak Renderla – Gelişmiş Seçenekler + +Şimdiye kadar temelleri ele aldık, ancak gerçek dünya senaryoları genellikle biraz daha fazla kontrol gerektirir. Aşağıda ihtiyacınız olabilecek birkaç yaygın ayar bulabilirsiniz. + +### Baskı Kalitesinde Çıktı İçin DPI Ayarlama + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +Daha yüksek DPI, PNG'yi bir PDF'ye yerleştirmeyi ya da kağıda yazdırmayı planladığınızda harikadır. + +### Harici Kaynakları Yönetme + +HTML'niz harici CSS, fontlar veya bir web sunucusunda barındırılan görselleri referans gösteriyorsa, çalışma zamanının bunlara erişebildiğinden emin olun. Özel bir `BaseUrl` ayarlayabilirsiniz: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +Bu, Aspose.HTML'ye göreceli URL'leri sağlanan temel URL'ye göre çözmesini söyler. + +### Çoklu Sayfaları Dönüştürme + +Aspose.HTML, çok sayfalı bir HTML belgesinin her sayfasını ayrı PNG dosyalarına renderlayabilir: + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +Bu sayede çıktıyı manuel olarak bölmeden her sayfa için **grafiği PNG olarak kaydedebilirsiniz**. + +## Grafiği PNG Olarak Kaydet – Yaygın Tuzaklar ve Kaçınma Yöntemleri + +1. **Eksik Fontlar:** HTML özel bir font kullanıyorsa ve bu font sunucuda yüklü değilse, renderlanan PNG varsayılan bir fonta geri dönecektir. Fontu makineye kurun veya CSS'nizde `@font-face` ile gömün. +2. **Büyük Dosyalar:** Devasa bir HTML dosyasını renderlamak çok fazla bellek tüketebilir. İçeriği sayfalara bölmeyi ya da görüntü boyutlarını azaltmayı düşünün. +3. **Şeffaf Arka Planlar:** Varsayılan olarak PNG'ler şeffaf olabilir. Opak bir arka plana (ör. e-posta küçük resimleri için) ihtiyacınız varsa, daha önce gösterildiği gibi `BackgroundColor` ayarlayın. +4. **Script Çalıştırma:** Aspose.HTML JavaScript çalıştırmaz. Grafiğiniz Chart.js gibi bir istemci tarafı kütüphanesiyle oluşturulmuşsa, grafiği statik bir `` öğesine önceden renderlamanız ya da bunun yerine bir headless tarayıcı kullanmanız gerekir. + +## Tam Çalışan Örnek + +Aşağıda, bir konsol uygulamasına kopyalayıp yapıştırabileceğiniz tam program yer alıyor. Yukarıda tartışılan tüm adımları, hata yönetimini ve isteğe bağlı ayarları içerir. + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +Programı çalıştırın, bir onay mesajı ve ardından görüntü boyutlarını göreceksiniz. `chart.png` dosyasını herhangi bir görüntüleyicide açarak grafiğin orijinal HTML ile aynı göründüğünden emin olun. + +## Sonuç + +Artık sağlam bir şeye sahipsiniz, + +{{< /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/turkish/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/turkish/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..05d024e94 --- /dev/null +++ b/html/turkish/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,244 @@ +--- +category: general +date: 2026-04-19 +description: Aspose.Html ve özel bir kaynak işleyicisi kullanarak HTML'yi ZIP olarak + kaydetmeyi öğrenin. Ayrıca URL'yi ZIP'e dönüştürmeyi ve HTML'yi ZIP olarak dakikalar + içinde indirmeyi keşfedin. +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: tr +og_description: 'HTML''yi zip olarak kaydetmek artık kolay: Aspose.Html, özel bir + kaynak işleyicisi ve ZipSaveOptions kullanarak herhangi bir URL''yi indirilebilir + bir zip arşivine dönüştürün.' +og_title: HTML'yi özel bir kaynak işleyicisiyle zip olarak kaydet – hızlı öğretici +tags: +- Aspose.Html +- C# +- Web scraping +title: HTML'yi özel bir kaynak işleyicisiyle zip olarak kaydet – adım adım rehber +url: /tr/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# html'yi zip olarak kaydet – Tam Kılavuz + +Ever needed to **save html as zip** so you can ship a whole page with its images, CSS, and scripts in one tidy package? Maybe you’re building a crawler that archives articles, or you simply want a quick “download html as zip” button for your users. Either way, you’re probably wondering how to do it without writing a million lines of file‑IO code. + +Hiç **save html as zip** yapmanız gerekti mi, böylece bir sayfayı tüm resimleri, CSS'i ve script'leriyle tek bir düzenli paket içinde gönderebilirsiniz? Belki makaleleri arşivleyen bir crawler oluşturuyorsunuzdur, ya da kullanıcılarınız için hızlı bir “download html as zip” düğmesi istiyorsunuzdur. Hangi durumda olursanız olun, bunu dosya‑IO kodu yazmadan nasıl yapacağınızı merak ediyor olabilirsiniz. + +Here’s the good news: Aspose.Html makes the job a piece of cake, and with a **custom resource handler** you can decide exactly where each resource stream goes. In this guide we’ll also show you how to **convert url to zip**, how to **download html as zip**, and how to **save webpage resources** for offline use—all in a single, self‑contained C# program. + +İyi haber şu: Aspose.Html işi çocuk oyuncağı haline getiriyor ve **custom resource handler** ile her kaynak akışının nereye gideceğini tam olarak belirleyebilirsiniz. Bu rehberde ayrıca **convert url to zip**, **download html as zip** ve **save webpage resources** işlemlerinin nasıl yapılacağını göstereceğiz—hepsi tek bir, bağımsız C# programı içinde. + +## Öğrenecekleriniz + +- Aspose.Html kütüphanesini kurun (NuGet sayesinde zahmetsiz). +- `ResourceHandler` yazarak Aspose.Html'un yazmak istediği her kaynak için bir `Stream` sağlayın. +- Uzak bir sayfayı (veya yerel bir dosyayı) yükleyin ve Aspose.Html'a her şeyi bir ZIP arşivine paketlemesini söyleyin. +- Oluşan `output.zip` dosyasının HTML dosyasını ve tüm bağlı varlıkları içerdiğini doğrulayın. + +Harici araçlar yok, manuel zip‑dosyası uğraşması yok—sadece temiz, derlenmiş kod, herhangi bir .NET projesine ekleyebileceğiniz. + +## Önkoşullar + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6.0 or later (the code also works on .NET Framework 4.7+) | Aspose.Html modern runtime'ları hedefler; eski framework'ler bazı API'leri kaçırabilir. | +| Visual Studio 2022 (or any IDE you like) | Hata ayıklama ve oluşturulan ZIP'i görme açısından yardımcı olur. | +| Internet access for the sample URL (`https://example.com`) | **convert url to zip** göstermek için canlı bir sayfa çekeceğiz. | +| NuGet package `Aspose.Html` (v23.12 or newer) | Bu kütüphane `HTMLDocument`, `ZipSaveOptions` ve `ResourceHandler` temel sınıfını sağlar. | + +Eğer zaten bir .NET projeniz varsa, sadece çalıştırın: + +```bash +dotnet add package Aspose.Html +``` + +Bu, ihtiyacınız olan tüm kurulumdur. + +## Adım 1: Özel Bir Resource Handler Oluşturun + +Çözümün kalbi, `ResourceHandler` sınıfından türeten bir sınıftır. Aspose.Html, yazmak istediği her dosya için `HandleResource` metodunu çağırır—HTML, resimler, CSS, JavaScript, ne isterseniz. Bir `Stream` döndürerek verinin nereye gideceğini belirlersiniz. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**Neden özel bir handler?** +Çünkü eski `IOutputStorage` arayüzü artık kullanılmıyor ve `ResourceHandler` çıktının hedefi üzerinde tam kontrol sağlar. Ayrıca `ResourceInfo`'yu incelemenize izin verir—örneğin sadece resimleri tutup fontları atlamak istediğinizde faydalıdır. + +## Adım 2: HTML Belgesini Yükleyin (veya URL'yi Zip'e Dönüştürün) + +Aspose.Html bir URL'den, dosya yolundan veya ham HTML dizesinden yükleyebilir. Burada, **download html as zip** istediğiniz tipik durum olan canlı bir sayfayı yüklemeyi gösteriyoruz. + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +Eğer HTML kaynağını zaten bir değişkende varsa, sadece yapıcıya geçirin: + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## Adım 3: Handler'ı ZipSaveOptions'a Bağlayın + +`ZipSaveOptions`, Aspose.Html'a ZIP dosyasını *nasıl* oluşturacağını söyler. Kritik özellik `OutputStorage`'dır ve biz bunu `MyHandler` örneğimize ayarlarız. + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +Sıkıştırma seviyesini, arşiv içindeki klasör adlarını ayarlayabilir veya bir manifest dosyası ekleyebilirsiniz—detaylar Aspose belgelerinde, ancak varsayılanlar çoğu senaryo için harika çalışır. + +## Adım 4: Belgeyi ZIP Arşivi Olarak Kaydedin + +Şimdi sihir gerçekleşir. `Save` metodu her kaynağı döner, `HandleResource`'u çağırır ve dönen akıma baytları yazar. Handler'ımız her seferinde yeni bir `MemoryStream` döndürdüğü için, Aspose.Html daha sonra bu akımları toplayıp `output.zip` içine paketler. + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**Gördükleriniz:** +- Proje klasörünüzün kökünde `output.zip`. +- ZIP içinde: `index.html` (ana sayfa) ve `images/`, `css/`, `scripts/` gibi alt klasörler, tarayıcının isteyeceği tam dosyaları içerir. + +## Adım 5: Sonucu Doğrulayın (Opsiyonel ama Tavsiye Edilir) + +Hızlı bir doğrulama, **save webpage resources** işlemini gerçekten doğru yaptığınızı garanti eder. + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +`index.html`, bağlı resimler (`logo.png`), CSS dosyaları ve JavaScript dosyaları gibi girişleri görmelisiniz. Bir şey eksikse, `MyHandler` içindeki `ResourceInfo` mantığını tekrar kontrol edin. + +## Tam Çalışan Örnek + +Hepsini bir araya getirerek, işte bir konsol uygulamasına kopyalayıp yapıştırabileceğiniz tam program. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Programı çalıştırın (`dotnet run`) ve temiz bir `output.zip` elde edeceksiniz. Herhangi bir arşiv yöneticisiyle açın, kaydedilen sayfayı çevrim dışı gezinebilirsiniz—tam da **download html as zip** işlevi için ihtiyacınız olan şey. + +## Yaygın Sorular & Kenar Durumları + +| Question | Answer | +|----------|--------| +| *ZIP'i Azure Blob Storage'da saklamam gerekirse ne yapmalıyım?* | `MemoryStream` yerine doğrudan bir blob'a yazan bir akış (ör. `CloudBlockBlob.OpenWrite()`) kullanın. Handler soyutlaması bunu çok basit hâle getirir. | +| *Belirli kaynakları filtreleyebilir miyim?* | Evet. `HandleResource` içinde `info.ResourceType` veya `info.Url`'yi inceleyin. Bir kaynağı atlamak için `null` döndürün, ya da hiçbir şey yazmayan bir akış döndürün. | +| *ZIP şifre korumalı mı?* | `ZipSaveOptions` içinde bir `Password` özelliği vardır. Şifreleme gerekiyorsa `Save` çağırmadan önce ayarlayın. | +| *Yüzlerce megabayt varlık içeren büyük sayfalar ne olur?* | Her şey için `MemoryStream` kullanmak RAM'i tüketebilir. Bunun yerine geçici bir klasöre yazan bir `FileStream` kullanın, ardından Aspose.Html bu dosyaları sıkıştırır. | +| *Bu, Linux üzerindeki .NET Core'da çalışır mı?* | Kesinlikle. Aspose.Html çapraz platformdur; sadece çalışma zamanının dosya yazma iznine sahip olduğundan emin olun. | + +## Pro İpuçları + +- **Pro ipucu:** Sadece HTML ve resimlerle ilgileniyorsanız, `info.ResourceType == ResourceType.Image` kontrol edin ve ZIP'i küçültmek için script veya fontları atlayın. +- **Dikkat:** Bazı siteler otomatik istekleri engeller. 403 hatası alırsanız `HtmlLoadOptions` ile özel bir `User-Agent` ayarlayın. +- **İpucu:** ZIP'i oluşturduktan sonra, bir ASP.NET denetleyicisinden `FileResult` kullanarak doğrudan sunabilirsiniz; bu da kullanıcılara tek tıkla **download html as zip** düğmesi verir. + +## Sonuç + +Artık Aspose.Html ve **custom resource handler** kullanarak **save html as zip** işlemini üretim‑hazır bir şekilde yapabilirsiniz. Herhangi bir URL'yi yükleyip `ZipSaveOptions`'ı yapılandırarak ve handler'ın akışları sağlamasına izin vererek, sadece birkaç C# satırıyla **convert url to zip**, **download html as zip** ve **save webpage resources** yapabilirsiniz. + +Denemekten çekinmeyin—akışları diske, bulut depolamaya ya da bir veritabanına kaydedin. Desen aynı kalır ve sonuç her zaman gönderip, önbelleğe alıp, sonsuza kadar arşivleyebileceğiniz düzenli bir arşiv olur. + +--- + +![Diagram illustrating the save html as zip workflow – from loading a URL to producing a ZIP file](/images/save-html-as-zip.png) + +*Görsel alt metni:* **html'yi zip olarak kaydet iş akışı diyagramı** + +Bu öğreticiyi faydalı bulduysanız, bir yorum bırakın, bir ekip arkadaşınızla paylaşın veya yardımcı betiklerinizi tuttuğunuz depoya yıldız verin. İyi kodlamalar! + +{{< /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/turkish/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/turkish/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..777820763 --- /dev/null +++ b/html/turkish/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,218 @@ +--- +category: general +date: 2026-04-19 +description: Aspose.HTML kullanarak C#'ta web sayfasını zip olarak kaydedin. URL'yi + zip'e dönüştürmeyi, HTML'yi zip'e dışa aktarmayı ve basit bir kod örneğiyle web + sayfasını zip olarak indirmeyi öğrenin. +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: tr +og_description: Aspose.HTML ile C#'ta web sayfasını zip olarak kaydedin. Bu kılavuz, + URL'yi zip'e dönüştürmeyi, HTML'yi zip'e dışa aktarmayı ve web sayfasını sadece + birkaç adımda zip olarak indirmeyi gösterir. +og_title: Aspose.HTML ile Web Sayfasını ZIP Olarak Kaydet – Tam C# Öğreticisi +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: Aspose.HTML ile Web Sayfasını ZIP Olarak Kaydet – Tam C# Öğreticisi +url: /tr/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Web Sayfasını ZIP Olarak Kaydet – Aspose.HTML ile Tam C# Öğreticisi + +Web sayfasını **zip olarak kaydetmek** istiyor musunuz; çevrim dışı arşivleme, otomatik testler ya da sadece bir sitenin anlık görüntüsünü göndermek için? Yalnız değilsiniz. Bu öğreticide **URL'yi zip'e dönüştürme**, **HTML'yi zip'e dışa aktarma** ve hatta **web sayfasını zip olarak indirme** işlemlerini birkaç temiz C# satırıyla nasıl yapacağınızı adım adım göstereceğiz. + +Proje kurulumundan diskteki son ZIP dosyasına kadar her şeyi ele alacağız ve resmi dokümanlarda bulunmayan birkaç pratik ipucu ekleyeceğiz. Sonunda ihtiyacınız olduğunda **html'den zip oluşturabilen** yeniden kullanılabilir bir çözümünüz olacak. + +## Gereksinimler + +- **.NET 6.0** (veya daha yeni bir .NET sürümü) – Aspose.HTML, .NET Core ve .NET Framework ile aynı şekilde çalışır. +- **Aspose.HTML for .NET** NuGet paketi – `Install-Package Aspose.HTML`. +- Temel C# deneyimi – bir `Console.WriteLine` yazabiliyorsanız yeterli. +- İlk indirme için internete bağlı bir makine (ZIP oluşturulduktan sonra kod çevrim dışı çalışır). + +Ek SDK'lar, headless tarayıcılar yok; sadece saf .NET ve Aspose.HTML. + +![Web sayfasını zip olarak kaydetme illüstrasyonu Aspose.HTML kullanarak](save-webpage-as-zip.png "Web sayfasını zip olarak kaydetme iş akışını gösteren diyagram") + +## Web Sayfasını ZIP Olarak Kaydet – Genel Bakış + +Yüksek seviyede süreç üç parçadan oluşur: + +1. **Özel bir `ResourceHandler`** – Aspose.HTML'in dış kaynakları (görseller, CSS, scriptler) nereye yazacağını belirler. +2. **`ZipSaveOptions`** – İşleyiciyi bir ZIP arşivine bağlar ve render ayarlarını (antialiasing, font ipuçları vb.) ayarlamanıza olanak tanır. +3. **`HTMLDocument.Save` çağrısı** – Her şeyi bir araya getirir, sayfayı ve tüm varlıkları ZIP dosyasına akıtır. + +Hepsi bu. Ağır işi Aspose.HTML üstlenir, siz de düşük seviyeli akışlarla uğraşmak yerine “neden” ve “ne zaman” odaklanabilirsiniz. + +--- + +## Adım 1: Projeyi Oluşturun ve Aspose.HTML'i Ekleyin + +İlk olarak yeni bir konsol projesi başlatın (veya kodu mevcut bir uygulamaya ekleyin). Terminali açıp şu komutu çalıştırın: + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +`Aspose.HTML` paketi ihtiyacımız olan tüm tipleri içerir: `HTMLDocument`, `ZipSaveOptions`, `ImageRenderingOptions` ve soyut `ResourceHandler`. + +> **Pro ipucu:** .NET Framework hedefliyorsanız, `dotnet` komutlarını Visual Studio'daki NuGet Package Manager UI ile değiştirin – aynı DLL'ler eklenir. + +--- + +## Adım 2: Özel `ZipHandler` Kaynak İşleyicisini Oluşturun + +Aspose.HTML, sayfayı ayrıştırırken karşılaştığı her dış dosya için `HandleResource` metodunu çağırır. Bu metodu geçersiz kılarak her kaynağı dosya sistemine değil bir ZIP girdisine yönlendirebiliriz. + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### Neden özel bir işleyici? + +Olmasaydı, Aspose.HTML kaynakları HTML dosyasının yanına diske bırakırdı. Bir `ZipArchive` kullanarak **her şeyi paketlenmiş** tutarız – dağıtım veya başka bir hizmet tarafından daha sonra çıkarma için mükemmeldir. + +--- + +## Adım 3: Görsel Render Ayarlarıyla `ZipSaveOptions`'ı Yapılandırın + +Şimdi işleyiciyi kaydetme seçeneklerine bağlayıp ekran görüntüsü veya PDF‑benzeri dönüşümlerde görsel doğruluğu artıran birkaç render ayarını açıyoruz. + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **Neden antialiasing ve hinting etkinleştirilmeli?** Sayfa daha sonra bir bitmap'e (ör. küçük önizleme resmi) render edildiğinde bu bayraklar tırtıklı kenarları azaltır ve küçük fontların okunabilirliğini artırır—özellikle görselleri başka bir yerde gömmeyi planlıyorsanız önemlidir. + +--- + +## Adım 4: HTML Belgesini Yükleyin ve ZIP'e Kaydedin + +İşleyici ve seçenekler hazır olduğunda, uzak bir sayfayı `HTMLDocument`'e URL olarak vermek kadar basittir. `Save` metodu, bağlı tüm varlıklar için `HandleResource`'u tetikler. + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +Bu noktada `zipStream` içinde şu **ZIP arşivi** bulunur: + +- `index.html` (ana sayfa) +- `` etiketleriyle referans verilen tüm CSS dosyaları +- Sayfayı çevrim dışı renderlamak için gereken görseller, fontlar ve JavaScript dosyaları + +### Kenar Durumları & Varyasyonlar + +| Durum | Ayarlanması Gerekenler | +|-----------------------------------------|--------------------------------------------------------------------------------------| +| **Kimlik doğrulama gerekli** | `HTMLDocument(string url, LoadOptions options)` kullanın ve `options.Credentials` ayarlayın. | +| **Çok büyük sayfalar (>100 MB)** | Bellek kullanımını azaltmak için `MemoryStream` yerine doğrudan bir `FileStream` yazın. | +| **“//” ile başlayan göreli URL'ler** | İşleyici bunları otomatik olarak normalleştirir; sadece `BaseUrl`'nin ayarlı olduğundan emin olun. | +| **ZIP içinde özel klasör yapısı** | Girdi oluşturulmadan önce `HandleResource` içinde `info.Path`'i değiştirin. | + +--- + +## Adım 5: ZIP Dosyasını Diskte Saklayın ve Sonucu Doğrulayın + +Son olarak, bellek içindeki ZIP'i diske yazıyoruz. Bu adım, akışı ağ üzerinden göndermeyi planlıyorsanız isteğe bağlıdır; ancak doğrulama açısından çok pratiktir. + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**Beklenen sonuç:** `result.zip` dosyasını açtığınızda içinde bir `index.html` bulunur; bu dosyayı çevrim dışı bir tarayıcıda açtığınızda, indirme sırasında tüm dış varlıklar erişilebildiyse, canlı sayfayla aynı görünür. + +--- + +## Sık Sorulan Sorular & Cevaplar + +**S: Bu yöntem, tembel‑yüklenen (lazy‑loaded) görselleri kullanan sayfalarla çalışır mı?** +C: Evet, görseller ilk DOM yürütmesi sırasında istenirse dahil edilir. Bir script sayfa yüklendikten sonra görselleri getiriyorsa, `Save` öncesinde `document.Render()` gibi bir manuel “render” tetiklemeniz gerekebilir. + +**S: ZIP'i daha fazla sıkıştırabilir miyim?** +C: `ZipArchive` API'si varsayılan sıkıştırma seviyesini kullanır. Daha agresif sıkıştırma için `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)` şeklinde örnekleyin. + +**S: Şifre korumalı bir ZIP'e ihtiyacım olursa?** +C: Yerleşik `ZipArchive` şifreleme desteklemez. Bu durumda, Aspose.HTML yazmayı tamamladıktan sonra çıktıyı `SharpZipLib` gibi üçüncü‑taraf bir kütüphane üzerinden geçirmeniz gerekir. + +--- + +## Üretim İçin Pro İpuçları + +- **`ZipHandler`'ı yeniden kullanın**; bir toplu işlemde birden çok sayfa işliyorsanız, çalıştırmalar arasında temel `MemoryStream`'i sıfırlayın. +- **Log + +{{< /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/vietnamese/net/generate-jpg-and-png-images/_index.md b/html/vietnamese/net/generate-jpg-and-png-images/_index.md index 364f75161..20137d271 100644 --- a/html/vietnamese/net/generate-jpg-and-png-images/_index.md +++ b/html/vietnamese/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Học cách sử dụng Aspose.HTML cho .NET để thao tác với các tài li Hướng dẫn chi tiết cách bật khử răng cưa để cải thiện chất lượng hình ảnh khi chuyển đổi tài liệu DOCX sang PNG hoặc JPG bằng Aspose.HTML. ### [Chuyển đổi DOCX sang PNG – tạo tệp ZIP bằng C# – Hướng dẫn](./convert-docx-to-png-create-zip-archive-c-tutorial/) Hướng dẫn cách chuyển đổi tài liệu DOCX thành hình ảnh PNG và đóng gói chúng vào tệp ZIP bằng C#. +### [Cách render HTML sang PNG – Hướng dẫn C# đầy đủ](./how-to-render-html-to-png-complete-c-guide/) +Hướng dẫn chi tiết cách sử dụng Aspose.HTML cho .NET để render HTML thành PNG bằng C#. ## Phần kết luận diff --git a/html/vietnamese/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md b/html/vietnamese/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md new file mode 100644 index 000000000..60746c1f4 --- /dev/null +++ b/html/vietnamese/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/_index.md @@ -0,0 +1,158 @@ +--- +category: general +date: 2026-04-19 +description: Cách chuyển đổi HTML sang PNG với Aspose.Html. Tìm hiểu cách chuyển HTML + sang PNG, lưu HTML dưới dạng PNG và tạo hình ảnh từ HTML trong vài phút. +draft: false +keywords: +- how to render html +- convert html to png +- save html as png +- create image from html +- render html to image +language: vi +og_description: Cách chuyển đổi HTML sang PNG với Aspose.Html. Thực hiện theo hướng + dẫn từng bước này để chuyển đổi HTML sang PNG, lưu HTML dưới dạng PNG và tạo hình + ảnh từ HTML. +og_title: Cách chuyển đổi HTML sang PNG – Hướng dẫn đầy đủ C# +tags: +- Aspose.Html +- C# +title: Cách chuyển đổi HTML sang PNG – Hướng dẫn C# đầy đủ +url: /vi/net/generate-jpg-and-png-images/how-to-render-html-to-png-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách Render HTML thành PNG – Hướng Dẫn Đầy Đủ cho C# + +Bạn đã bao giờ tự hỏi **cách render HTML** thành một tệp hình ảnh mà không cần mở trình duyệt chưa? Bạn không phải là người duy nhất. Trong nhiều dự án—hình thu nhỏ email, tạo PDF, hoặc chỉ xem trước nhanh—bạn cần **chuyển đổi HTML sang PNG** ngay lập tức. + +Trong hướng dẫn này, chúng ta sẽ đi qua một giải pháp thực tế sử dụng Aspose.Html cho .NET, bao gồm mọi thứ từ cài đặt thư viện đến tinh chỉnh text‑hinting cho các phông chữ nhỏ sắc nét. Khi kết thúc, bạn sẽ có thể **lưu HTML dưới dạng PNG**, **tạo hình ảnh từ HTML**, và thậm chí điều chỉnh các tùy chọn render cho các trường hợp đặc biệt. + +## Những Điều Cần Chuẩn Bị + +- **.NET 6+** (hoặc .NET Framework 4.6.2+). API hoạt động giống nhau trên mọi runtime. +- **Aspose.Html** gói NuGet – `Install-Package Aspose.Html`. +- Một tệp HTML đơn giản (ví dụ, `article.html`) mà bạn muốn chuyển thành hình ảnh. +- Visual Studio, Rider, hoặc bất kỳ trình soạn thảo nào bạn thích. + +Chỉ vậy thôi—không cần phụ thuộc thêm, không cần Chrome không giao diện, chỉ C# thuần túy. + +## Bước 1: Cài Đặt Aspose.Html và Thêm Các Namespace + +Đầu tiên, tải thư viện từ NuGet. Mở Package Manager Console và chạy: + +```powershell +Install-Package Aspose.Html +``` + +Sau khi cài đặt, thêm các chỉ thị `using` cần thiết ở đầu tệp của bạn: + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Rendering.Image.Text; +``` + +Các namespace này cho phép bạn truy cập vào mô hình tài liệu, render ảnh và các tùy chọn văn bản chi tiết mà chúng ta sẽ cần sau này. + +> **Mẹo chuyên nghiệp:** Nếu bạn đang sử dụng tệp .csproj, bạn cũng có thể thêm `` một cách thủ công. + +## Bước 2: Tải Tài Liệu HTML + +Bạn cần một thể hiện `HTMLDocument` trỏ tới tệp nguồn. Aspose.Html có thể đọc từ đường dẫn, luồng, hoặc thậm chí một URL. + +```csharp +// Step 2: Load the HTML you want to render +string htmlPath = Path.Combine(Environment.CurrentDirectory, "article.html"); +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Tại sao điều này quan trọng:** Tải tài liệu một lần giúp giảm mức sử dụng bộ nhớ. Nếu bạn dự định render nhiều trang, hãy tái sử dụng cùng một đối tượng `HTMLDocument` khi có thể. + +## Bước 3: Tinh Chỉnh Render Văn Bản cho Phông Chữ Nhỏ + +Khi render văn bản rất nhỏ, thường sẽ xuất hiện các cạnh mờ. Bật hinting giúp rasterizer căn chỉnh glyphs vào ranh giới pixel, cải thiện độ rõ nét đáng kể. + +```csharp +// Step 3: Enable hinting for sharper small‑font rendering +TextOptions textOpts = new TextOptions +{ + UseHinting = true // Turns on TrueType hinting +}; +``` + +Bạn cũng có thể kiểm soát anti‑aliasing, subpixel rendering, hoặc thậm chí chỉ định một bộ sưu tập phông chữ tùy chỉnh ở đây—hữu ích nếu HTML của bạn tham chiếu tới web fonts. + +## Bước 4: Cấu Hình Các Tùy Chọn Render Ảnh + +Bây giờ chúng ta gắn `TextOptions` vào các cài đặt ảnh. Bạn cũng có thể đặt màu nền, DPI, hoặc định dạng ảnh (PNG, JPEG, BMP). + +```csharp +// Step 4: Attach text options and set other rendering preferences +ImageRenderingOptions imgOpts = new ImageRenderingOptions +{ + TextOptions = textOpts, + // Optional: increase DPI for higher‑resolution output + // DpiX = 300, + // DpiY = 300, + // BackgroundColor = Color.White +}; +``` + +> **Trường hợp đặc biệt:** Nếu HTML của bạn rộng hơn kích thước màn hình thông thường, hãy cân nhắc đặt `Width` và `Height` trên `ImageRenderingOptions` để tránh các PNG khổng lồ. + +## Bước 5: Render HTML thành Tệp PNG + +Cuối cùng, gọi `RenderToImage`. Phiên bản phương thức chúng ta sử dụng cho phép chỉ định đường dẫn đầu ra và các tùy chọn chúng ta vừa tạo. + +```csharp +// Step 5: Render the document to PNG +string outputPath = Path.Combine(Environment.CurrentDirectory, "article.png"); +htmlDoc.RenderToImage(outputPath, imgOpts); + +Console.WriteLine($"✅ Render complete! PNG saved at: {outputPath}"); +``` + +Khi bạn chạy chương trình, Aspose.Html sẽ phân tích markup, áp dụng CSS, bố trí trang và rasterize thành `article.png`. Mở tệp bằng bất kỳ trình xem ảnh nào—bạn sẽ thấy một ảnh chụp pixel‑perfect của HTML gốc. + +![cách render html thành PNG bằng Aspose.Html](render-html-png.png) + +*Văn bản thay thế hình ảnh: **cách render html** dưới dạng PNG bằng Aspose.Html* + +## Bonus: Xử Lý Nhiều Trang hoặc Thay Đổi Kích Thước + +Đôi khi một tệp HTML duy nhất chứa nhiều phần `` (ví dụ, để in). Bạn có thể lặp qua `htmlDoc.Pages` và render từng trang riêng biệt: + +```csharp +int pageNumber = 1; +foreach (var page in htmlDoc.Pages) +{ + string pagePath = Path.Combine(Environment.CurrentDirectory, + $"article_page{pageNumber}.png"); + page.RenderToImage(pagePath, imgOpts); + pageNumber++; +} +``` + +Nếu bạn cần một hình thu nhỏ thay vì ảnh kích thước đầy đủ, hãy điều chỉnh `imgOpts.Width` và `imgOpts.Height` trước khi render. Thư viện sẽ tự động giữ tỷ lệ khung hình. + +--- + +## Kết Luận + +Bây giờ bạn đã có một công thức vững chắc, sẵn sàng cho môi trường production để **cách render HTML** thành ảnh PNG bằng Aspose.Html. Từ việc cài đặt gói, tải markup, tinh chỉnh text hinting, cho đến cuối cùng gọi `RenderToImage`, mọi bước đều được bao phủ. + +Với kiến thức này, bạn có thể **chuyển đổi HTML sang PNG**, **lưu HTML dưới dạng PNG**, và **tạo hình ảnh từ HTML** cho bất kỳ ứng dụng .NET nào—dù là dịch vụ web tạo hình thu nhỏ hay công cụ desktop lưu trữ các trang web. + +Tiếp theo, khám phá các chủ đề liên quan như **render HTML thành ảnh** với các định dạng khác (JPEG, BMP) hoặc nhúng PNG vào PDF bằng Aspose.PDF. Bạn cũng có thể thử nghiệm với việc scaling DPI cho các bản in độ phân giải cao, hoặc đưa HTML động được tạo ngay lập tức vào cùng quy trình. + +Có câu hỏi hoặc trường hợp sử dụng độc đáo? Hãy để lại bình luận bên dưới, và chúc bạn render vui vẻ! + +{{< /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/vietnamese/net/html-extensions-and-conversions/_index.md b/html/vietnamese/net/html-extensions-and-conversions/_index.md index 169c7624f..ff8a2d8c9 100644 --- a/html/vietnamese/net/html-extensions-and-conversions/_index.md +++ b/html/vietnamese/net/html-extensions-and-conversions/_index.md @@ -59,6 +59,10 @@ Tìm hiểu cách chuyển đổi HTML sang Markdown trong .NET bằng Aspose.HT Chuyển đổi HTML sang MHTML trong .NET với Aspose.HTML - Hướng dẫn từng bước để lưu trữ nội dung web hiệu quả. Tìm hiểu cách sử dụng Aspose.HTML cho .NET để tạo kho lưu trữ MHTML. ### [Chuyển đổi HTML sang PNG trong .NET với Aspose.HTML](./convert-html-to-png/) Khám phá cách sử dụng Aspose.HTML cho .NET để thao tác và chuyển đổi tài liệu HTML. Hướng dẫn từng bước để phát triển .NET hiệu quả. + +### [Chuyển đổi HTML sang PNG trong C# – Render HTML thành Hình ảnh](./convert-html-to-png-in-c-render-html-as-image/) +Khám phá cách chuyển đổi HTML sang PNG trong C# bằng Aspose.HTML, hướng dẫn chi tiết các bước và tùy chọn cấu hình. + ### [Chuyển đổi HTML sang TIFF trong .NET với Aspose.HTML](./convert-html-to-tiff/) Tìm hiểu cách chuyển đổi HTML sang TIFF bằng Aspose.HTML cho .NET. Làm theo hướng dẫn từng bước của chúng tôi để tối ưu hóa nội dung web hiệu quả. ### [Chuyển đổi HTML sang XPS trong .NET với Aspose.HTML](./convert-html-to-xps/) @@ -73,6 +77,11 @@ Tạo PDF từ HTML trong .NET bằng C#. Hướng dẫn chi tiết từng bư Hướng dẫn chi tiết cách lưu tài liệu HTML thành tệp ZIP bằng Aspose.HTML cho .NET với C#. ### [Lưu HTML thành ZIP trong C# – Ví dụ Toàn bộ trong Bộ nhớ](./save-html-to-zip-in-c-complete-in-memory-example/) Hướng dẫn lưu tài liệu HTML vào tệp ZIP trong C# bằng Aspose.HTML, sử dụng bộ nhớ tạm và không tạo file tạm trên đĩa. +### [Lưu HTML dưới dạng ZIP với trình xử lý tài nguyên tùy chỉnh – hướng dẫn từng bước](./save-html-as-zip-with-a-custom-resource-handler-step-by-step/) +Hướng dẫn chi tiết cách lưu tài liệu HTML thành tệp ZIP bằng trình xử lý tài nguyên tùy chỉnh trong C# với Aspose.HTML. + +### [Lưu trang web dưới dạng ZIP với Aspose.HTML – Hướng dẫn C# đầy đủ](./save-webpage-as-zip-with-aspose-html-complete-c-tutorial/) +Hướng dẫn chi tiết cách lưu trang web thành tệp ZIP bằng C# và Aspose.HTML, kèm ví dụ mã và tùy chọn cấu hình. ## Phần kết luận diff --git a/html/vietnamese/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md b/html/vietnamese/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md new file mode 100644 index 000000000..1f4dc9496 --- /dev/null +++ b/html/vietnamese/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/_index.md @@ -0,0 +1,214 @@ +--- +category: general +date: 2026-04-19 +description: Chuyển đổi HTML sang PNG trong C# bằng Aspose.HTML – hướng dẫn nhanh + để render HTML thành hình ảnh và lưu biểu đồ dưới dạng PNG với khử răng cưa. +draft: false +keywords: +- convert html to png +- render html as image +- save chart as png +- generate png from html +- convert html file to png +language: vi +og_description: Chuyển đổi HTML sang PNG trong C# nhanh chóng. Tìm hiểu cách hiển + thị HTML dưới dạng hình ảnh, lưu biểu đồ dưới dạng PNG và tạo PNG từ HTML với Aspose.HTML. +og_title: Chuyển đổi HTML sang PNG trong C# – Hiển thị HTML dưới dạng hình ảnh +tags: +- Aspose.HTML +- C# +- Image Processing +title: Chuyển đổi HTML sang PNG trong C# – Render HTML thành hình ảnh +url: /vi/net/html-extensions-and-conversions/convert-html-to-png-in-c-render-html-as-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Chuyển đổi HTML sang PNG trong C# – Render HTML dưới dạng Hình ảnh + +Bạn đã bao giờ cần **convert HTML to PNG** trong C# nhưng không chắc thư viện nào sẽ cho kết quả sắc nét? Bạn không phải là người duy nhất. Dù bạn đang xuất một biểu đồ động, chuyển mẫu email thành hình thu nhỏ, hay chỉ cần một ảnh chụp tĩnh của một trang web, khả năng **render HTML as image** là một thủ thuật hữu ích trong bộ công cụ của bất kỳ nhà phát triển nào. + +Trong hướng dẫn này, chúng ta sẽ đi qua toàn bộ quy trình chuyển một tệp HTML thành tệp PNG bằng Aspose.HTML. Khi kết thúc, bạn sẽ có thể **save chart as PNG**, **generate PNG from HTML**, và thậm chí điều chỉnh cài đặt anti‑aliasing để có vẻ ngoài hoàn hảo. Không có phần thừa—chỉ có một ví dụ đầy đủ, có thể chạy được mà bạn có thể đưa vào dự án ngay hôm nay. + +## Những gì bạn cần + +- **.NET 6.0** hoặc mới hơn (mã cũng hoạt động trên .NET Framework 4.6+). +- **Aspose.HTML for .NET** – bạn có thể tải về từ NuGet bằng `Install-Package Aspose.HTML`. +- Một tệp HTML đơn giản (ví dụ, `chart.html`) chứa markup bạn muốn chụp. +- Một IDE mà bạn thích—Visual Studio, Rider, hoặc thậm chí VS Code cũng được. + +Chỉ vậy thôi. Không có phụ thuộc bổ sung, không có trình duyệt headless, chỉ một thư viện duy nhất, được tài liệu hoá tốt. + +![Convert HTML to PNG example](example.png "Convert HTML to PNG output") + +## Bước 1: Tải tài liệu HTML + +Điều đầu tiên chúng ta phải làm là chỉ định Aspose.HTML tới tệp nguồn. Hãy nghĩ lớp `HTMLDocument` như một canvas chứa mọi thứ mà thư viện sẽ vẽ lên bitmap sau này. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument(@"C:\MyCharts\chart.html"); +``` + +*​Tại sao điều này quan trọng:* Việc tải tài liệu tách giai đoạn phân tích cú pháp khỏi giai đoạn render. Nó cho engine cơ hội giải quyết CSS, script và hình ảnh trước khi chúng ta yêu cầu tạo PNG. Nếu bỏ qua bước này và cố render markup thô, bạn sẽ nhận được hình ảnh trống hoặc thiếu style. + +## Bước 2: Cấu hình tùy chọn Render hình ảnh + +Aspose.HTML mặc định sẽ cho bạn một PNG ổn, nhưng bạn thường muốn các cạnh mượt hơn—đặc biệt với biểu đồ và đồ họa vector. Đó là lúc `ImageRenderingOptions` xuất hiện. + +```csharp +// Set up image rendering options – enable anti‑aliasing for smoother graphics +ImageRenderingOptions imageOptions = new ImageRenderingOptions +{ + UseAntialiasing = true, // Turns on anti‑aliasing + Width = 800, // Optional: force a specific width + Height = 600, // Optional: force a specific height + BackgroundColor = System.Drawing.Color.White // Ensure a solid background +}; +``` + +*Mẹo chuyên nghiệp:* Nếu bạn làm việc với màn hình high‑DPI, tăng `Width` và `Height` tỷ lệ và để PNG lớn hơn. Bạn luôn có thể giảm kích thước sau bằng trình chỉnh sửa ảnh. Ngoài ra, đặt màu nền ngăn PNG trong suốt trông lạ trên các trang tối. + +## Bước 3: Render HTML thành tệp PNG + +Bây giờ công việc nặng nề diễn ra. Phương thức `RenderToImage` nhận đường dẫn đầu ra và các tùy chọn chúng ta vừa định nghĩa, sau đó ghi PNG vào đĩa. + +```csharp +// Render the HTML document to a PNG image using the configured options +htmlDoc.RenderToImage(@"C:\MyCharts\chart.png", imageOptions); +``` + +Khi dòng này hoàn thành, bạn sẽ thấy `chart.png` trong thư mục đích. Mở nó—biểu đồ có sắc nét không? Nếu bạn bật anti‑aliasing, các đường sẽ mượt, và bất kỳ văn bản nào cũng sẽ rõ ràng. + +### Xác minh kết quả + +Bạn có thể nhanh chóng xác minh hình ảnh bằng chương trình: + +```csharp +using System.Drawing; + +// Load the generated PNG just to confirm it exists and has content +Bitmap bmp = new Bitmap(@"C:\MyCharts\chart.png"); +Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); +Console.WriteLine($"Pixel format: {bmp.PixelFormat}"); +``` + +Nếu console in ra kích thước khác 0 và định dạng pixel được hỗ trợ (ví dụ, `Format32bppArgb`), bạn đã thành công **convert html to png**. + +## Render HTML as Image – Tùy chọn nâng cao + +Cho tới nay chúng ta đã bao phủ các kiến thức cơ bản, nhưng trong thực tế thường cần nhiều kiểm soát hơn. Dưới đây là một vài điều chỉnh phổ biến bạn có thể cần. + +### Điều chỉnh DPI cho đầu ra chất lượng in + +```csharp +imageOptions.DpiX = 300; +imageOptions.DpiY = 300; +``` + +DPI cao rất hữu ích khi bạn dự định nhúng PNG vào PDF hoặc in ra giấy. + +### Xử lý tài nguyên bên ngoài + +Nếu HTML của bạn tham chiếu tới CSS, phông chữ hoặc hình ảnh bên ngoài được lưu trên máy chủ web, hãy chắc chắn runtime có thể truy cập chúng. Bạn có thể đặt `BaseUrl` tùy chỉnh: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument( + @"C:\MyCharts\chart.html", + new Uri("https://example.com/assets/")); +``` + +Điều này cho Aspose.HTML biết cách giải quyết các URL tương đối dựa trên base URL đã cung cấp. + +### Chuyển đổi nhiều trang + +Aspose.HTML có thể render mỗi trang của tài liệu HTML đa trang thành các tệp PNG riêng biệt: + +```csharp +int pageCount = htmlDoc.GetPageCount(); +for (int i = 0; i < pageCount; i++) +{ + var options = new ImageRenderingOptions { PageNumber = i + 1 }; + htmlDoc.RenderToImage($@"C:\MyCharts\chart_page_{i + 1}.png", options); +} +``` + +Bằng cách này bạn có thể **save chart as PNG** cho mỗi trang mà không cần cắt thủ công kết quả. + +## Save Chart as PNG – Những lỗi thường gặp & Cách tránh + +1. **Missing Fonts:** Nếu HTML sử dụng phông chữ tùy chỉnh chưa được cài trên server, PNG được render sẽ quay lại phông mặc định. Cài phông trên máy hoặc nhúng qua `@font-face` trong CSS. +2. **Large Files:** Render một tệp HTML lớn có thể tiêu tốn nhiều bộ nhớ. Xem xét phân trang nội dung hoặc giảm kích thước ảnh. +3. **Transparent Backgrounds:** Mặc định, PNG có thể trong suốt. Nếu bạn cần nền không trong suốt (ví dụ, cho thumbnail email), đặt `BackgroundColor` như đã chỉ ra ở trên. +4. **Script Execution:** Aspose.HTML không thực thi JavaScript. Nếu biểu đồ của bạn được xây dựng bằng thư viện phía client như Chart.js, bạn cần pre‑render biểu đồ thành một phần tử `` tĩnh hoặc dùng trình duyệt headless thay thế. + +## Ví dụ đầy đủ hoạt động + +Dưới đây là chương trình hoàn chỉnh mà bạn có thể sao chép‑dán vào một ứng dụng console. Nó bao gồm tất cả các bước, xử lý lỗi, và các tùy chỉnh tùy chọn đã thảo luận ở trên. + +```csharp +using System; +using System.Drawing; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +namespace HtmlToPngDemo +{ + class Program + { + static void Main(string[] args) + { + // Paths – adjust to your environment + string htmlPath = @"C:\MyCharts\chart.html"; + string pngPath = @"C:\MyCharts\chart.png"; + + try + { + // 1️⃣ Load the HTML document + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Set rendering options (anti‑aliasing, size, background) + ImageRenderingOptions options = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White, + DpiX = 96, + DpiY = 96 + }; + + // 3️⃣ Render to PNG + htmlDoc.RenderToImage(pngPath, options); + Console.WriteLine($"✅ Successfully converted HTML to PNG: {pngPath}"); + + // 4️⃣ Verify the output (optional) + using (Bitmap bmp = new Bitmap(pngPath)) + { + Console.WriteLine($"Image size: {bmp.Width}x{bmp.Height} pixels"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ Conversion failed: {ex.Message}"); + } + } + } +} +``` + +Chạy chương trình, và bạn sẽ thấy thông báo xác nhận kèm theo kích thước ảnh. Mở `chart.png` bằng bất kỳ trình xem nào để xác nhận biểu đồ trông giống hệt HTML gốc. + +## Kết luận + +Bạn đã có một nền tảng vững chắc, + +{{< /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/vietnamese/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md b/html/vietnamese/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md new file mode 100644 index 000000000..cbc2b87ef --- /dev/null +++ b/html/vietnamese/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-04-19 +description: Tìm hiểu cách lưu HTML dưới dạng zip bằng Aspose.Html và trình xử lý + tài nguyên tùy chỉnh. Cũng khám phá cách chuyển URL thành zip và tải HTML dưới dạng + zip trong vài phút. +draft: false +keywords: +- save html as zip +- custom resource handler +- convert url to zip +- download html as zip +- save webpage resources +language: vi +og_description: 'Lưu HTML dưới dạng zip trở nên dễ dàng: sử dụng Aspose.Html, trình + xử lý tài nguyên tùy chỉnh và ZipSaveOptions để chuyển đổi bất kỳ URL nào thành + tệp zip có thể tải xuống.' +og_title: Lưu HTML dưới dạng ZIP với trình xử lý tài nguyên tùy chỉnh – hướng dẫn + nhanh +tags: +- Aspose.Html +- C# +- Web scraping +title: Lưu HTML dưới dạng ZIP với bộ xử lý tài nguyên tùy chỉnh – hướng dẫn từng bước +url: /vi/net/html-extensions-and-conversions/save-html-as-zip-with-a-custom-resource-handler-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# lưu html dưới dạng zip – Hướng dẫn đầy đủ + +Bạn đã bao giờ cần **lưu html dưới dạng zip** để có thể chuyển giao một trang hoàn chỉnh cùng với hình ảnh, CSS và script trong một gói gọn gàng chưa? Có thể bạn đang xây dựng một trình crawler lưu trữ các bài viết, hoặc bạn chỉ muốn một nút “tải html dưới dạng zip” nhanh chóng cho người dùng. Dù sao, bạn chắc hẳn đang thắc mắc cách thực hiện mà không phải viết hàng triệu dòng mã file‑IO. + +Tin tốt là: Aspose.Html làm cho công việc này trở nên đơn giản, và với một **custom resource handler** bạn có thể quyết định chính xác luồng tài nguyên sẽ được ghi vào đâu. Trong hướng dẫn này chúng tôi cũng sẽ chỉ cho bạn cách **convert url to zip**, cách **download html as zip**, và cách **save webpage resources** để sử dụng offline—tất cả trong một chương trình C# tự chứa duy nhất. + +## Những gì bạn sẽ học + +- Cài đặt thư viện Aspose.Html (NuGet giúp việc này cực kỳ dễ dàng). +- Viết một `ResourceHandler` cung cấp một `Stream` cho mọi tài nguyên mà Aspose.Html muốn ghi. +- Tải một trang từ xa (hoặc một tệp cục bộ) và yêu cầu Aspose.Html đóng gói mọi thứ vào một tệp ZIP. +- Kiểm tra `output.zip` để chắc chắn rằng nó chứa file HTML cùng tất cả các tài nguyên liên kết. + +Không cần công cụ bên ngoài, không cần thao tác zip thủ công—chỉ cần mã sạch, biên dịch được và bạn có thể đưa vào bất kỳ dự án .NET nào. + +## Yêu cầu trước + +| Yêu cầu | Lý do quan trọng | +|-------------|----------------| +| .NET 6.0 hoặc mới hơn (mã cũng chạy trên .NET Framework 4.7+) | Aspose.Html nhắm vào các runtime hiện đại; các framework cũ hơn có thể thiếu một số API. | +| Visual Studio 2022 (hoặc bất kỳ IDE nào bạn thích) | Hữu ích cho việc debug và xem ZIP được tạo. | +| Kết nối Internet để truy cập URL mẫu (`https://example.com`) | Chúng ta sẽ lấy một trang thực để minh họa **convert url to zip**. | +| Gói NuGet `Aspose.Html` (v23.12 hoặc mới hơn) | Thư viện này cung cấp `HTMLDocument`, `ZipSaveOptions`, và lớp cơ sở `ResourceHandler`. | + +Nếu bạn đã có một dự án .NET, chỉ cần chạy: + +```bash +dotnet add package Aspose.Html +``` + +Đó là tất cả những gì bạn cần chuẩn bị. + +## Bước 1: Tạo Custom Resource Handler + +Trọng tâm của giải pháp là một lớp kế thừa từ `ResourceHandler`. Aspose.Html sẽ gọi `HandleResource` cho mỗi tệp mà nó muốn ghi—HTML, hình ảnh, CSS, JavaScript, bất kỳ gì. Bằng cách trả về một `Stream` bạn quyết định dữ liệu sẽ được lưu ở đâu. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; + +/// +/// Simple in‑memory handler. In real‑world scenarios you might write to disk, +/// a cloud bucket, or a database. The important part is that the method returns +/// a writable stream for each resource. +/// +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Example: you could switch on info.ResourceType to treat images differently. + // For this tutorial we just keep everything in memory. + return new MemoryStream(); + } +} +``` + +**Tại sao lại cần custom handler?** +Vì giao diện cũ `IOutputStorage` đã bị loại bỏ, và `ResourceHandler` cho bạn toàn quyền kiểm soát điểm đến của output. Nó cũng cho phép bạn kiểm tra `ResourceInfo`—rất hữu ích nếu bạn chỉ muốn giữ lại hình ảnh và bỏ qua phông chữ, ví dụ. + +## Bước 2: Tải HTML Document (hoặc Convert URL to Zip) + +Aspose.Html có thể tải từ URL, đường dẫn tệp, hoặc một chuỗi HTML thô. Ở đây chúng tôi minh họa việc tải một trang trực tiếp, đây là trường hợp điển hình khi bạn muốn **download html as zip**. + +```csharp +// Load the page you want to archive. +var htmlDocument = new HTMLDocument("https://example.com"); +``` + +Nếu bạn đã có nguồn HTML trong một biến, chỉ cần truyền nó vào constructor: + +```csharp +string htmlSource = "Hello world"; +var htmlDocument = new HTMLDocument(htmlSource, new HtmlLoadOptions()); +``` + +## Bước 3: Kết nối Handler với ZipSaveOptions + +`ZipSaveOptions` chỉ cho Aspose.Html *cách* tạo tệp ZIP. Thuộc tính quan trọng là `OutputStorage`, chúng ta sẽ gán nó cho thể hiện `MyHandler` của mình. + +```csharp +var resourceHandler = new MyHandler(); + +var zipSaveOptions = new ZipSaveOptions +{ + // This replaces the older IOutputStorage interface. + OutputStorage = resourceHandler +}; +``` + +Bạn cũng có thể điều chỉnh mức nén, tên thư mục bên trong archive, hoặc thậm chí nhúng một file manifest—chi tiết có trong tài liệu Aspose, nhưng các giá trị mặc định đã hoạt động tốt cho hầu hết các kịch bản. + +## Bước 4: Lưu Document dưới dạng ZIP Archive + +Bây giờ phép màu xảy ra. Phương thức `Save` sẽ duyệt qua mọi tài nguyên, gọi `HandleResource`, và ghi byte vào stream được trả về. Vì handler của chúng ta trả về một `MemoryStream` mới mỗi lần, Aspose.Html sẽ thu thập tất cả các stream này và đóng gói chúng thành `output.zip`. + +```csharp +// The Save call triggers HandleResource for each asset. +htmlDocument.Save("output.zip", zipSaveOptions); +``` + +**Bạn sẽ thấy:** +- `output.zip` ở thư mục gốc của dự án. +- Bên trong ZIP: `index.html` (trang chính) cùng các thư mục con như `images/`, `css/`, `scripts/` chứa đúng các file mà trình duyệt sẽ yêu cầu. + +## Bước 5: Kiểm tra Kết quả (Tùy chọn nhưng Được Khuyến nghị) + +Một kiểm tra nhanh giúp bạn chắc chắn rằng đã **save webpage resources** đúng cách. + +```csharp +using System.IO.Compression; + +using (var zip = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in zip.Entries) + { + Console.WriteLine($"{entry.FullName} – {entry.Length} bytes"); + } +} +``` + +Bạn sẽ thấy các mục cho `index.html`, bất kỳ hình ảnh liên kết nào (`logo.png`), các file CSS và JavaScript. Nếu có thứ gì đó thiếu, hãy kiểm tra lại logic `ResourceInfo` trong `MyHandler`. + +## Ví dụ Hoàn chỉnh + +Kết hợp tất cả lại, đây là chương trình đầy đủ mà bạn có thể sao chép‑dán vào một console app. + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System; +using System.IO; +using System.IO.Compression; + +class MyHandler : ResourceHandler +{ + public override Stream HandleResource(ResourceInfo info) + { + // Return a fresh stream for each resource. + // You could route images to a different folder, for example. + return new MemoryStream(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the page you want to archive. + var htmlDocument = new HTMLDocument("https://example.com"); + + // 2️⃣ Prepare the custom handler. + var resourceHandler = new MyHandler(); + + // 3️⃣ Configure ZIP options to use the handler. + var zipSaveOptions = new ZipSaveOptions + { + OutputStorage = resourceHandler + }; + + // 4️⃣ Save everything into a ZIP file. + htmlDocument.Save("output.zip", zipSaveOptions); + + // 5️⃣ (Optional) List the contents of the generated ZIP. + Console.WriteLine("Generated output.zip with the following entries:"); + using (var zip = ZipFile.OpenRead("output.zip")) + { + foreach (var entry in zip.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Chạy chương trình (`dotnet run`), và bạn sẽ có một `output.zip` gọn gàng. Mở nó bằng bất kỳ trình quản lý archive nào, bạn có thể duyệt trang đã lưu offline—đúng là chức năng **download html as zip** bạn cần. + +## Các Câu Hỏi Thường Gặp & Trường Hợp Cạnh + +| Câu hỏi | Câu trả lời | +|----------|--------| +| *Nếu tôi cần lưu ZIP vào Azure Blob Storage thì sao?* | Thay `MemoryStream` bằng một stream ghi trực tiếp vào blob (ví dụ `CloudBlockBlob.OpenWrite()`). Kiến trúc handler làm cho việc này trở nên đơn giản. | +| *Tôi có thể lọc bỏ một số tài nguyên nhất định không?* | Có. Trong `HandleResource`, kiểm tra `info.ResourceType` hoặc `info.Url`. Trả về `null` để bỏ qua tài nguyên, hoặc trả về một stream không ghi gì. | +| *ZIP có được bảo vệ bằng mật khẩu không?* | `ZipSaveOptions` có thuộc tính `Password`. Đặt nó trước khi gọi `Save` nếu bạn cần mã hoá. | +| *Còn các trang lớn với hàng chục megabyte tài nguyên thì sao?* | Sử dụng `MemoryStream` cho mọi thứ có thể làm hết RAM. Chuyển sang `FileStream` ghi vào thư mục tạm, rồi để Aspose.Html nén các file này. | +| *Điều này có hoạt động trên .NET Core trên Linux không?* | Hoàn toàn có. Aspose.Html hỗ trợ đa nền tảng; chỉ cần đảm bảo runtime có quyền ghi file. | + +## Mẹo Chuyên Gia + +- **Mẹo:** Nếu bạn chỉ quan tâm tới HTML và hình ảnh, kiểm tra `info.ResourceType == ResourceType.Image` và bỏ qua script hoặc font để giữ ZIP siêu nhỏ. +- **Cẩn thận:** một số trang web chặn yêu cầu tự động. Đặt `User-Agent` tùy chỉnh qua `HtmlLoadOptions` nếu bạn nhận được lỗi 403. +- **Tip:** Sau khi tạo ZIP, bạn có thể phục vụ trực tiếp từ controller ASP.NET bằng `FileResult`, cung cấp cho người dùng một nút **download html as zip** chỉ một cú nhấp. + +## Kết luận + +Bây giờ bạn đã có một cách vững chắc, sẵn sàng cho môi trường production để **save html as zip** bằng Aspose.Html và một **custom resource handler**. Bằng cách tải bất kỳ URL nào, cấu hình `ZipSaveOptions`, và để handler cung cấp các stream, bạn có thể **convert url to zip**, **download html as zip**, và **save webpage resources** chỉ với vài dòng C#. + +Hãy thoải mái thử nghiệm—lưu stream vào đĩa, lưu trữ đám mây, hoặc thậm chí vào cơ sở dữ liệu. Mô hình vẫn như cũ, và kết quả luôn là một archive gọn gàng mà bạn có thể phân phối, cache, hoặc lưu trữ mãi mãi. + +--- + +![Diagram illustrating the save html as zip workflow – from loading a URL to producing a ZIP file](/images/save-html-as-zip.png) + +*Văn bản thay thế hình ảnh:* **sơ đồ quy trình lưu html dưới dạng zip** + +Nếu bạn thấy tutorial này hữu ích, hãy để lại bình luận, chia sẻ với đồng nghiệp, hoặc star repo nơi bạn lưu các script tiện ích. Chúc lập trình vui! + +{{< /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/vietnamese/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md b/html/vietnamese/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md new file mode 100644 index 000000000..3406ab5f9 --- /dev/null +++ b/html/vietnamese/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/_index.md @@ -0,0 +1,218 @@ +--- +category: general +date: 2026-04-19 +description: Lưu trang web dưới dạng zip bằng Aspose.HTML trong C#. Tìm hiểu cách + chuyển đổi URL thành zip, xuất HTML thành zip và tải trang web dưới dạng zip với + một ví dụ mã đơn giản. +draft: false +keywords: +- save webpage as zip +- convert url to zip +- export html to zip +- download webpage as zip +- create zip from html +language: vi +og_description: Lưu trang web dưới dạng zip với Aspose.HTML trong C#. Hướng dẫn này + chỉ ra cách chuyển đổi URL thành zip, xuất HTML thành zip và tải xuống trang web + dưới dạng zip chỉ trong vài bước. +og_title: Lưu trang web dưới dạng ZIP với Aspose.HTML – Hướng dẫn C# đầy đủ +tags: +- Aspose.HTML +- C# +- ZIP +- Web scraping +title: Lưu trang web dưới dạng ZIP với Aspose.HTML – Hướng dẫn C# hoàn chỉnh +url: /vi/net/html-extensions-and-conversions/save-webpage-as-zip-with-aspose-html-complete-c-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Lưu Trang Web dưới dạng ZIP với Aspose.HTML – Hướng Dẫn C# Đầy Đủ + +Bạn cần **lưu trang web dưới dạng zip** để lưu trữ offline, kiểm thử tự động, hoặc chỉ để gửi một bản sao của một trang? Bạn không phải là người duy nhất. Trong hướng dẫn này, chúng tôi sẽ hướng dẫn cách **chuyển đổi URL thành zip**, **xuất HTML thành zip**, và thậm chí **tải trang web dưới dạng zip** chỉ với một vài dòng C# sạch sẽ. + +Chúng tôi sẽ bao phủ mọi thứ từ thiết lập dự án đến tệp ZIP cuối cùng trên đĩa, và sẽ rải một vài mẹo thực tế mà bạn không tìm thấy trong tài liệu chính thức. Khi kết thúc, bạn sẽ có một giải pháp tái sử dụng có thể **tạo zip từ html** bất cứ khi nào bạn cần. + +## Những gì bạn cần + +- **.NET 6.0** (hoặc bất kỳ phiên bản .NET gần đây nào) – Aspose.HTML hoạt động với .NET Core và .NET Framework đều được. +- **Aspose.HTML for .NET** gói NuGet – `Install-Package Aspose.HTML`. +- Một chút kinh nghiệm C# – nếu bạn có thể viết `Console.WriteLine`, bạn đã sẵn sàng. +- Một máy có kết nối internet để tải xuống ban đầu (mã sẽ hoạt động offline một khi ZIP đã được tạo). + +Không cần SDK bổ sung, không cần trình duyệt headless, chỉ cần .NET thuần và Aspose.HTML. + +![Minh họa việc lưu trang web dưới dạng zip bằng Aspose.HTML](save-webpage-as-zip.png "Sơ đồ mô tả quy trình lưu trang web dưới dạng zip") + +## Lưu Trang Web dưới dạng ZIP – Tổng Quan + +Ở mức cao, quy trình bao gồm ba phần chính: + +1. **Một `ResourceHandler` tùy chỉnh** để chỉ định cho Aspose.HTML nơi ghi mỗi tài nguyên bên ngoài (hình ảnh, CSS, script). +2. **`ZipSaveOptions`** liên kết trình xử lý với một kho lưu trữ ZIP và cho phép bạn tinh chỉnh việc render (khử răng cưa, gợi ý phông chữ, v.v.). +3. **Lệnh `HTMLDocument.Save`** kết hợp mọi thứ lại, truyền luồng trang và tất cả tài sản của nó vào tệp ZIP. + +Chỉ vậy thôi. Việc nặng nhọc được thực hiện bởi Aspose.HTML, vì vậy bạn có thể tập trung vào “tại sao” và “khi nào” thay vì vật lộn với các luồng cấp thấp. + +--- + +## Bước 1: Thiết lập dự án và thêm Aspose.HTML + +Đầu tiên, tạo một dự án console mới (hoặc chèn mã vào ứng dụng hiện có). Mở terminal và chạy: + +```bash +dotnet new console -n SaveWebpageAsZip +cd SaveWebpageAsZip +dotnet add package Aspose.HTML +``` + +Gói `Aspose.HTML` đi kèm với tất cả các kiểu chúng ta cần: `HTMLDocument`, `ZipSaveOptions`, `ImageRenderingOptions`, và lớp trừu tượng `ResourceHandler`. + +> **Mẹo chuyên nghiệp:** Nếu bạn đang nhắm tới .NET Framework, thay thế các lệnh `dotnet` bằng giao diện NuGet Package Manager trong Visual Studio – các DLL tương tự sẽ được thêm. + +--- + +## Bước 2: Tạo một Resource Handler `ZipHandler` tùy chỉnh + +Aspose.HTML gọi `HandleResource` cho mỗi tệp bên ngoài mà nó gặp khi phân tích trang. Bằng cách ghi đè phương thức này, chúng ta có thể chuyển mỗi tài nguyên vào một mục ZIP thay vì hệ thống tệp. + +```csharp +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +/// +/// Writes each HTML resource (images, CSS, JS) into a ZIP entry. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + + public ZipHandler(Stream zipStream) + { + // leaveOpen:true prevents the underlying MemoryStream from being disposed when the ZipArchive is disposed. + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + } + + public override Stream HandleResource(ResourceInfo info) + { + // The Path property contains the relative URL (e.g., "/images/logo.png"). + // TrimStart('/') removes the leading slash so the entry appears at the root of the ZIP. + var entry = _zip.CreateEntry(info.Path.TrimStart('/')); + + // Returning the entry's stream lets Aspose.HTML write directly into the ZIP. + return entry.Open(); + } +} +``` + +### Tại sao cần một handler tùy chỉnh? + +Nếu không có nó, Aspose.HTML sẽ ghi tài nguyên cạnh tệp HTML trên đĩa. Bằng cách đưa chúng vào một `ZipArchive`, chúng ta giữ **mọi thứ gói lại với nhau** – hoàn hảo cho việc phân phối hoặc để một dịch vụ khác trích xuất sau này. + +--- + +## Bước 3: Cấu hình `ZipSaveOptions` với Rendering Hình Ảnh + +Bây giờ chúng ta liên kết handler với các tùy chọn lưu và bật một vài tinh chỉnh rendering giúp cải thiện độ trung thực hình ảnh của ảnh chụp màn hình hoặc chuyển đổi kiểu PDF. + +```csharp +// Prepare an in‑memory stream that will become the final ZIP file. +using var zipStream = new MemoryStream(); +var zipHandler = new ZipHandler(zipStream); + +// Set up the save options. +var zipSaveOptions = new ZipSaveOptions +{ + OutputStorage = zipHandler, + ImageRenderingOptions = new ImageRenderingOptions + { + // Smooth out edges – useful when the page contains SVG or canvas graphics. + UseAntialiasing = true, + // Hinting improves text clarity on low‑resolution images. + TextOptions = new TextOptions { UseHinting = true }, + // Force bold rendering for better readability in the ZIP preview. + FontStyle = WebFontStyle.Bold + } +}; +``` + +> **Tại sao bật khử răng cưa và gợi ý?** Khi trang sau này được render thành bitmap (ví dụ, cho ảnh thu nhỏ), các cờ này giảm các cạnh răng cưa và làm cho phông chữ nhỏ dễ đọc — đặc biệt quan trọng nếu bạn dự định nhúng hình ảnh ở nơi khác. + +--- + +## Bước 4: Tải tài liệu HTML và Lưu vào ZIP + +Với handler và các tùy chọn đã sẵn sàng, việc tải một trang từ xa đơn giản như truyền URL của nó cho `HTMLDocument`. Phương thức `Save` sẽ gọi `HandleResource` cho mọi tài nguyên được liên kết. + +```csharp +// Load the page – you can also pass a local file path like "C:\\my\\page.html". +var document = new HTMLDocument("https://example.com"); + +// Save everything into the same zipStream we created earlier. +document.Save(zipStream, zipSaveOptions); +``` + +Ở thời điểm này, `zipStream` chứa một **kho lưu trữ ZIP hoàn chỉnh bao gồm**: + +- `index.html` (trang chính) +- Tất cả các tệp CSS được tham chiếu bởi thẻ `` +- Hình ảnh, phông chữ và tệp JavaScript cần thiết để render trang offline + +### Các trường hợp đặc biệt & Biến thể + +| Tình huống | Cần điều chỉnh | +|----------------------------------------|-----------------------------------------------------------------------------------| +| **Cần xác thực** | Sử dụng `HTMLDocument(string url, LoadOptions options)` và đặt `options.Credentials`. | +| **Trang rất lớn (>100 MB)** | Ghi trực tiếp vào `FileStream` thay vì `MemoryStream` để tránh sử dụng RAM cao. | +| **URL tương đối bắt đầu bằng “//”**| Handler tự động chuẩn hoá chúng; chỉ cần đảm bảo `BaseUrl` được đặt. | +| **Cấu trúc thư mục tùy chỉnh trong ZIP**| Sửa `info.Path` trong `HandleResource` trước khi tạo mục. | + +--- + +## Bước 5: Lưu tệp ZIP và Xác minh Kết quả + +Cuối cùng, chúng ta ghi ZIP trong bộ nhớ ra đĩa. Bước này là tùy chọn nếu bạn dự định gửi luồng qua mạng, nhưng nó giúp việc xác minh trở nên dễ dàng. + +```csharp +// Reset the stream position before reading its bytes. +zipStream.Position = 0; + +// Save the ZIP to a file – change the path to suit your environment. +File.WriteAllBytes("result.zip", zipStream.ToArray()); + +// Quick verification: open result.zip with any archive tool and you should see +// index.html plus a folder hierarchy mirroring the original website. +Console.WriteLine("✅ Webpage saved as ZIP! Check 'result.zip' in your project folder."); +``` + +**Kết quả mong đợi:** Mở `result.zip` sẽ thấy một tệp `index.html` mà khi mở trong trình duyệt offline, trông giống hệt trang trực tuyến (miễn là tất cả tài nguyên bên ngoài đã có thể truy cập trong quá trình tải). + +--- + +## Câu hỏi thường gặp & Trả lời + +**Q: Phương pháp này có hoạt động với các trang sử dụng hình ảnh tải lười không?** +A: Có, miễn là các hình ảnh được yêu cầu trong quá trình duyệt DOM ban đầu. Nếu một script tải hình ảnh sau khi trang đã tải, bạn có thể cần kích hoạt “render” thủ công bằng cách gọi `document.Render()` trước `Save`. + +**Q: Tôi có thể nén ZIP hơn nữa không?** +A: API `ZipArchive` sử dụng mức nén mặc định. Để nén mạnh hơn, khởi tạo nó bằng `new ZipArchive(zipStream, ZipArchiveMode.Create, true, CompressionLevel.Optimal)`. + +**Q: Nếu tôi cần một ZIP được bảo vệ bằng mật khẩu thì sao?** +A: `ZipArchive` tích hợp không hỗ trợ mã hóa. Trong trường hợp này, hãy chuyển luồng đầu ra qua một thư viện bên thứ ba như `SharpZipLib` sau khi Aspose.HTML hoàn thành việc ghi. + +--- + +## Mẹo chuyên nghiệp cho môi trường sản xuất + +- **Tái sử dụng `ZipHandler`** khi xử lý nhiều trang trong một batch; chỉ cần đặt lại `MemoryStream` nền giữa các lần chạy. +- **Log + +{{< /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