From af2fe55f25ff9c748e3233808b00fe094b877403 Mon Sep 17 00:00:00 2001 From: Muhammad Adil Date: Thu, 26 Mar 2026 21:25:26 +0000 Subject: [PATCH] Add 2 html net tutorials MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Categories: html-extensions-and-conversions, rendering-html-documents Source: AI Search API Tutorials: - Convert HTML to ZIP in C# – Complete Step‑by‑Step Guide - How to Render HTML to PNG in C# – Step‑by‑Step Guide Auto-generated by Professionalize.Tutorials Agent --- .../html-extensions-and-conversions/_index.md | 2 + .../_index.md | 285 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 3 + .../_index.md | 184 +++++++++++ .../html-extensions-and-conversions/_index.md | 3 +- .../_index.md | 283 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 4 + .../_index.md | 184 +++++++++++ .../html-extensions-and-conversions/_index.md | 6 + .../_index.md | 285 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 3 + .../_index.md | 185 +++++++++++ .../html-extensions-and-conversions/_index.md | 2 + .../_index.md | 285 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 2 + .../_index.md | 186 ++++++++++++ .../html-extensions-and-conversions/_index.md | 2 + .../_index.md | 285 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 2 + .../_index.md | 184 +++++++++++ .../html-extensions-and-conversions/_index.md | 2 + .../_index.md | 287 ++++++++++++++++++ .../net/rendering-html-documents/_index.md | 3 + .../_index.md | 186 ++++++++++++ .../html-extensions-and-conversions/_index.md | 44 ++- .../_index.md | 286 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 5 + .../_index.md | 186 ++++++++++++ .../html-extensions-and-conversions/_index.md | 2 + .../_index.md | 286 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 4 +- .../_index.md | 186 ++++++++++++ .../html-extensions-and-conversions/_index.md | 5 +- .../_index.md | 285 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 5 + .../_index.md | 186 ++++++++++++ .../html-extensions-and-conversions/_index.md | 2 + .../_index.md | 283 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 3 + .../_index.md | 184 +++++++++++ .../html-extensions-and-conversions/_index.md | 2 + .../_index.md | 286 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 2 + .../_index.md | 186 ++++++++++++ .../html-extensions-and-conversions/_index.md | 2 + .../_index.md | 286 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 3 + .../_index.md | 186 ++++++++++++ .../html-extensions-and-conversions/_index.md | 2 + .../_index.md | 285 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 2 + .../_index.md | 186 ++++++++++++ .../html-extensions-and-conversions/_index.md | 2 + .../_index.md | 283 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 3 + .../_index.md | 184 +++++++++++ .../html-extensions-and-conversions/_index.md | 4 +- .../_index.md | 285 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 5 +- .../_index.md | 184 +++++++++++ .../html-extensions-and-conversions/_index.md | 2 + .../_index.md | 285 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 6 +- .../_index.md | 186 ++++++++++++ .../html-extensions-and-conversions/_index.md | 4 + .../_index.md | 285 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 2 + .../_index.md | 186 ++++++++++++ .../html-extensions-and-conversions/_index.md | 2 + .../_index.md | 285 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 6 + .../_index.md | 186 ++++++++++++ .../html-extensions-and-conversions/_index.md | 2 + .../_index.md | 285 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 2 + .../_index.md | 186 ++++++++++++ .../html-extensions-and-conversions/_index.md | 2 + .../_index.md | 285 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 2 + .../_index.md | 186 ++++++++++++ .../html-extensions-and-conversions/_index.md | 10 +- .../_index.md | 285 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 2 + .../_index.md | 184 +++++++++++ .../html-extensions-and-conversions/_index.md | 2 + .../_index.md | 285 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 2 + .../_index.md | 186 ++++++++++++ .../html-extensions-and-conversions/_index.md | 2 + .../_index.md | 285 +++++++++++++++++ .../net/rendering-html-documents/_index.md | 2 + .../_index.md | 186 ++++++++++++ 92 files changed, 10962 insertions(+), 37 deletions(-) create mode 100644 html/arabic/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/arabic/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/chinese/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/chinese/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/czech/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/czech/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/dutch/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/dutch/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/english/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/english/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/french/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/french/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/german/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/german/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/greek/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/greek/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/hindi/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/hindi/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/hongkong/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/hongkong/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/hungarian/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/hungarian/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/indonesian/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/indonesian/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/italian/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/italian/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/japanese/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/japanese/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/korean/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/korean/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/polish/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/polish/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/portuguese/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/portuguese/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/russian/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/russian/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/spanish/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/spanish/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/swedish/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/swedish/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/thai/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/thai/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/turkish/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/turkish/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md create mode 100644 html/vietnamese/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/vietnamese/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md diff --git a/html/arabic/net/html-extensions-and-conversions/_index.md b/html/arabic/net/html-extensions-and-conversions/_index.md index 980eb7013..aeea8dfd4 100644 --- a/html/arabic/net/html-extensions-and-conversions/_index.md +++ b/html/arabic/net/html-extensions-and-conversions/_index.md @@ -73,6 +73,8 @@ url: /ar/net/html-extensions-and-conversions/ تعلم كيفية حفظ مستند HTML كملف ZIP باستخدام Aspose.HTML في C# خطوة بخطوة. ### [حفظ HTML إلى ZIP في C# – مثال كامل في الذاكرة](./save-html-to-zip-in-c-complete-in-memory-example/) تعلم كيفية حفظ مستند HTML كملف ZIP في الذاكرة باستخدام C# ومكتبة Aspose.HTML. +### [تحويل HTML إلى ZIP في C# – دليل كامل خطوة بخطوة](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +تعلم كيفية ضغط ملفات HTML وحفظها كملف ZIP باستخدام C# ومكتبة Aspose.HTML خطوة بخطوة. ## خاتمة diff --git a/html/arabic/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/arabic/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..8dc30a25a --- /dev/null +++ b/html/arabic/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,285 @@ +--- +category: general +date: 2026-03-26 +description: حوّل HTML إلى ZIP بسرعة باستخدام Aspose.HTML. تعلّم كيفية إنشاء ملف ZIP + من HTML، وتعامل مع الموارد في الذاكرة، وتجنّب الأخطاء الشائعة. +draft: false +keywords: +- convert html to zip +- create zip from html +language: ar +og_description: حوّل HTML إلى ZIP بسهولة. يوضح لك هذا الدليل كيفية إنشاء ملف ZIP من + HTML باستخدام Aspose.HTML، مع كود كامل ونصائح. +og_title: تحويل HTML إلى ZIP في C# – دليل برمجي كامل +tags: +- C# +- Aspose.HTML +- file compression +title: تحويل HTML إلى ZIP في C# – دليل كامل خطوة بخطوة +url: /ar/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# تحويل HTML إلى ZIP في C# – دليل كامل خطوة بخطوة + +هل احتجت يوماً إلى **تحويل HTML إلى ZIP** لكن لم تكن متأكدًا أي API تستخدم؟ لست وحدك—العديد من المطورين يواجهون هذه المشكلة عندما يحاولون حزم صفحة ويب مع صورها، وملفات CSS، والسكريبتات في حزمة واحدة قابلة للتحميل. + +الخبر السار؟ باستخدام Aspose.HTML يمكنك **إنشاء ZIP من HTML** ببضع أسطر فقط، وستحصل على تحكم كامل في مكان تخزين كل مورد (ذاكرة، قرص، أو تدفق). في هذا الدرس سنستعرض العملية بالكامل، من مقتطف HTML صغير إلى ملف ZIP جاهز للتحميل، وسنشرح “السبب” وراء كل اختيار. + +## ما ستتعلمه + +- كيفية إعداد Aspose.HTML في مشروع .NET. +- كيفية حفظ مستند HTML وجميع موارده المرتبطة في `MemoryStream`. +- كيفية حزم نفس HTML في أرشيف ZIP باستدعاء واحد. +- نصائح للتعامل مع الصور الكبيرة، تخزين الموارد المخصص، ومعالجة الأخطاء. +- مخرجات وحدة التحكم المتوقعة وكيفية التحقق من محتويات ZIP. + +لا توجد متطلبات مسبقة معقدة—فقط نسخة حديثة من .NET (Core 3.1+ أو .NET 6) وحزمة Aspose.HTML من NuGet. لنبدأ. + +![تحويل html إلى zip illustration](convert-html-to-zip.png){alt="مثال تحويل html إلى zip"} + +## المتطلبات المسبقة + +| المتطلب | لماذا هو مهم | +|-------------|----------------| +| .NET 6 SDK (أو أحدث) | أحدث بيئة تشغيل تمنحك أكثر كفاءة في معالجة `MemoryStream`. | +| Aspose.HTML for .NET (NuGet) | توفر الفئات `HTMLDocument`، `HtmlSaveOptions`، و `ZipOutputStorage` التي سنستخدمها. | +| معرفة أساسية بـ C# | ستحتاج إلى فهم عبارات `using` والتدفقات. | + +قم بتثبيت المكتبة باستخدام: + +```bash +dotnet add package Aspose.HTML +``` + +الآن بعد أن تم إعداد الأساس، لنبدأ بتحويل HTML إلى ZIP. + +## الخطوة 1: إنشاء مستند HTML بسيط + +أولاً نحتاج إلى كائن `HTMLDocument`. في مشروع حقيقي ربما تقوم بتحميل ملف من القرص، لكن في العرض التوضيحي سنضمّن صفحة صغيرة تشير إلى صورة محلية تسمى `logo.png`. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*لماذا هذا مهم:* من خلال إنشاء المستند برمجيًا نتجنب الاعتماد على ملفات خارجية، مما يجعل المثال مكتملًا ذاتيًا—مثالي للاقتباس من الذكاء الاصطناعي وللاختبار السريع. + +## الخطوة 2: حفظ HTML وموارده إلى MemoryStream + +أحيانًا لا تريد الكتابة إلى القرص مطلقًا—ربما ترسل الـ ZIP عبر واجهة ويب API. يتيح لك `ResourceHandler` توجيه كل ملف مرتبط (صور، CSS، إلخ) إلى `MemoryStream` بدلاً من نظام الملفات. + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**ما تراه:** تقوم وحدة التحكم بطباعة طول البايت للمستند HTML المُولد. لأننا استخدمنا `MemoryStream`، لا يتم لمس القرص، مما يعني أنه يمكنك الآن **تحويل HTML إلى ZIP** بالكامل في الذاكرة إذا رغبت. + +### نصيحة احترافية + +إذا كان HTML يحتوي على صور كبيرة، فكر في تجاوز `HandleResource` لضغط التدفق أثناء التشغيل. بهذه الطريقة يبقى الـ ZIP النهائي خفيفًا. + +## الخطوة 3: حزم HTML وموارده في أرشيف ZIP + +تأتي Aspose.HTML مع فئة مفيدة `ZipOutputStorage` تقوم تلقائيًا بدمج ملف HTML الرئيسي وكل الموارد المشار إليها في ملف ZIP واحد. إليك كيفية استخدامها: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**النتيجة:** يحتوي `output.zip` الآن على: + +- `index.html` (HTML الذي أنشأناه) +- `logo.png` (الصورة المشار إليها في العلامة) + +يمكنك فتح الـ ZIP بأي مدير أرشيفات ورؤية أن HTML لا يزال يشير إلى `logo.png`، محافظًا على تخطيط الصفحة الأصلي. + +### حالة حافة: موارد مفقودة + +إذا تعذر العثور على مورد ما، تقوم Aspose.HTML بإلقاء استثناء `ResourceNotFoundException`. احطّ استدعاء `Save` بكتلة `try/catch` إذا كنت تتعامل مع HTML يُنشئه المستخدم قد يشير إلى عناوين URL خارجية. + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## الخطوة 4: التحقق من محتويات ZIP برمجيًا (اختياري) + +إذا كنت تبني خدمة ويب، قد ترغب في التأكد من أن الـ ZIP يحتوي على كل شيء قبل إرساله. تسمح مساحة الأسماء `.NET System.IO.Compression` لك بإلقاء نظرة داخل الأرشيف دون استخراج إلى القرص. + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +يجب أن ترى مخرجات مشابهة لـ: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +هذا الفحص النهائي يمنحك الثقة بأن خطوة **إنشاء ZIP من HTML** نجحت. + +## الأخطاء الشائعة وكيفية تجنبها + +| العَرَض | السبب المحتمل | الحل | +|---------|--------------|-----| +| ZIP فارغ | لم يتم تعيين `OutputStorage` أو تم إغفال `HtmlSaveOptions` | تأكد من `OutputStorage = zipStorage` وتمرير `zipSaveOptions` إلى `Save`. | +| الصور تظهر مكسورة عند فتح `index.html` | معالج الموارد أعاد تدفقًا فارغًا | أرجع تدفقًا يحتوي فعليًا على بايتات الصورة، أو دع Aspose يتعامل معه تلقائيًا. | +| استثناء نفاد الذاكرة في صفحات كبيرة | تخزين كل شيء في `MemoryStream` واحد دون تفريغ | استخدم `FileStream` للموارد الكبيرة أو بث مباشرة إلى استجابة HTTP. | +| امتداد ملف غير صحيح | تم حفظه كـ `.html` بدلًا من `.zip` | تحقق من أن مسار `FileStream` ينتهي بـ `.zip`. | + +## مثال كامل يعمل + +فيما يلي البرنامج الكامل الجاهز للتنفيذ. انسخه والصقه في مشروع Console، أضف حزمة Aspose.HTML من NuGet، وشغّله. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +تشغيل البرنامج ينتج مخرجات وحدة تحكم مشابهة لـ: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +الآن لديك خط أنابيب **تحويل HTML إلى ZIP** يمكنك دمجه في واجهات برمجة التطبيقات، وظائف الخلفية، أو أدوات سطح المكتب. + +## الخلاصة + +غطّينا كل ما تحتاجه لـ **تحويل HTML إلى ZIP** باستخدام Aspose.HTML: إنشاء المستند، توجيه الموارد إلى الذاكرة، حزم كل شيء في ZIP، وحتى التحقق من النتيجة برمجيًا. النهج خفيف، يعمل بالكامل داخل العملية، ويعطيك تحكمًا دقيقًا في كيفية تخزين كل ملف. + +هل أنت مستعد للتحدي التالي؟ جرّب استبدال `ZipOutputStorage` بـ `Stream` مخصص يكتب مباشرة إلى استجابة HTTP، أو جرب ضغط الصور أثناء التشغيل لتقليل حجم الأرشيف النهائي. هذه الإضافات ستتيح لك **إنشاء ZIP من 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/rendering-html-documents/_index.md b/html/arabic/net/rendering-html-documents/_index.md index 7d8baa5d7..60676a014 100644 --- a/html/arabic/net/rendering-html-documents/_index.md +++ b/html/arabic/net/rendering-html-documents/_index.md @@ -68,6 +68,9 @@ url: /ar/net/rendering-html-documents/ ### [كيفية تحويل HTML إلى PNG باستخدام Aspose – دليل كامل](./how-to-render-html-to-png-with-aspose-complete-guide/) تعلم خطوة بخطوة كيفية تحويل مستندات HTML إلى صور PNG باستخدام Aspose.HTML في .NET. +### [كيفية تحويل HTML إلى PNG في C# – دليل خطوة بخطوة](./how-to-render-html-to-png-in-c-step-by-step-guide/) +تعلم خطوة بخطوة كيفية تحويل HTML إلى PNG باستخدام C# و Aspose.HTML في .NET. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/arabic/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/arabic/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..61485f573 --- /dev/null +++ b/html/arabic/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,184 @@ +--- +category: general +date: 2026-03-26 +description: كيفية عرض HTML بسرعة وبشكل موثوق. تعلم تحويل HTML إلى PNG، وتصدير HTML + كـ PNG، وتطبيق نمط الخط، وتحميل مستند HTML باستخدام Aspose.Html. +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: ar +og_description: كيفية عرض HTML في C# باستخدام Aspose.Html. يوضح لك هذا الدليل كيفية + تحويل HTML إلى PNG، وتصدير HTML كـ PNG، وتطبيق نمط الخط وتحميل مستند HTML. +og_title: كيفية تحويل HTML إلى PNG في C# – دليل كامل +tags: +- C# +- Aspose.Html +- Image Rendering +title: كيفية تحويل HTML إلى PNG في C# – دليل خطوة بخطوة +url: /ar/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية تحويل HTML إلى PNG في C# – دليل خطوة بخطوة + +هل تساءلت يومًا **كيف يتم تحويل HTML** إلى صورة PNG واضحة دون التعامل مع أتمتة المتصفح؟ لست وحدك. يحتاج العديد من المطورين إلى *تحويل HTML إلى PNG* من أجل صور مصغرة للبريد الإلكتروني، لقطات تقارير، أو معاينات PDF، وتبدو الحيل التقليدية للمتصفحات بدون رأس ثقيلة. + +في هذا الدرس سنستعرض حلاً نظيفًا يعتمد على مكتبة يقوم بـ **تحميل مستند HTML**، ويسمح لك **بتطبيق نمط الخط** وتعديلات أخرى على العرض، وأخيرًا **تصدير HTML كـ PNG**. في النهاية ستحصل على برنامج C# جاهز للتنفيذ يقوم بذلك بالضبط، بالإضافة إلى بعض النصائح الاحترافية لتجنب المشكلات الشائعة. + +## المتطلبات المسبقة + +- .NET 6.0 أو أحدث (الكود يعمل على .NET Core و .NET Framework أيضًا) +- حزمة NuGet Aspose.HTML for .NET (`Aspose.Html` و `Aspose.Html.Rendering.Image`) +- ملف HTML تجريبي (`sample.html`) موضعًا في مكان يمكنك الإشارة إليه +- إلمام أساسي بـ C# و Visual Studio (أو أي بيئة تطوير تفضلها) + +> **نصيحة احترافية:** إذا كنت تعمل على خادم CI، أضف ملفات DLL الخاصة بـ Aspose.HTML إلى مجلد `packages` في مشروعك حتى يبقى البناء مستقلًا. + +## الخطوة 1 – تحميل مستند HTML + +أول شيء عليك القيام به هو **تحميل مستند HTML** إلى كائن `HTMLDocument`. تقوم Aspose.HTML بقراءة الملف، وحل الموارد النسبية، وإنشاء DOM يمكنك التلاعب به. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **لماذا هذا مهم:** تحميل المستند عبر Aspose يضمن أن CSS الخارجي، الصور، والخطوط تُعالج بنفس الطريقة التي يفعلها المتصفح، وهو أمر أساسي عندما تقوم لاحقًا **بتحويل HTML إلى PNG**. + +## الخطوة 2 – تكوين خيارات العرض (تطبيق نمط الخط والمزيد) + +الآن نقوم بإعداد `ImageRenderingOptions`. هنا يمكنك **تطبيق نمط الخط**، اختيار مضاد التسنين، وتحديد أبعاد الإخراج. تعديل هذه الإعدادات يمكن أن يحسن بشكل كبير من دقة الصورة النهائية للـ PNG. + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### ما الذي تفعله الخيارات فعليًا + +| الخيار | التأثير | متى يجب التغيير | +|--------|----------|----------------| +| `UseAntialiasing` | ينعم الحواف المتعرجة على الأشكال والنص | للمخرجات عالية الدقة | +| `TextOptions.UseHinting` | يحسن قابلية قراءة الخطوط الصغيرة | عند عرض صفحات ذات واجهة مستخدم كثيفة | +| `Font.Style / Size / Family` | يفرض خطًا معينًا بغض النظر عن CSS الخاص بالصفحة | مفيد للعلامة التجارية للشركة أو عندما لا يكون الخط الأصلي متاحًا | +| `Width` / `Height` | يضبط حجم لوحة الرسم للـ PNG | مطابقة مساحة العرض التي تراها في المتصفح | + +## الخطوة 3 – تحويل المستند إلى صورة PNG (تحويل HTML إلى PNG) + +مع وجود المستند والإعدادات جاهزين، نمرر كل شيء إلى `ImageRenderer`. هذه الفئة تبث البت ماب المُحوَّل مباشرة إلى ملف، مما يمنحنا عملية **تحويل HTML إلى PNG** سريعة وفعّالة من حيث الذاكرة. + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **حالة حدية:** إذا كان HTML الخاص بك يشير إلى صور خارجية عبر HTTP، تأكد من أن الخادم قابل للوصول من الجهاز الذي يشغل هذا الكود. وإلا سيترك المُحوِّل أماكن احتياطية. + +### النتيجة المتوقعة + +بعد انتهاء البرنامج، يجب أن ترى ملف `rendered.png` في نفس الدليل الذي يحتوي على `sample.html`. افتحه بأي عارض صور – ستحصل على لقطة بكسلية مثالية لصفحة HTML، مع **نمط الخط المطبق** ورسومات مضادة للتسنين. + +![مثال على نتيجة تحويل HTML إلى PNG](rendered.png "تحويل HTML – نتيجة PNG لصفحة HTML التجريبية") + +*(يتضمن نص البديل الكلمة المفتاحية الأساسية لتحسين محركات البحث.)* + +## الخطوة 4 – التحقق من النتيجة برمجيًا (اختياري) + +أحيانًا تحتاج إلى التأكد من أن ملف PNG تم إنشاؤه بشكل صحيح، خاصةً في خطوط الأنابيب المؤتمتة. فحص سريع لحجم البايت أو تحميل الصورة باستخدام `System.Drawing` يمكن أن يمنحك الثقة. + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## أسئلة شائعة ومشكلات محتملة + +- **ماذا لو احتجت إلى تنسيق صورة مختلف؟** + `ImageRenderer` يدعم أيضًا JPEG و BMP و GIF. ما عليك سوى تغيير امتداد الملف واختيارياً ضبط `ImageFormat` في `ImageRenderingOptions`. + +- **هل يمكنني تحويل عنصر HTML محدد فقط؟** + نعم. استخدم `htmlDoc.GetElementById("myDiv")` ومرّر هذا العنصر إلى `ImageRenderer.Render(element)`. + +- **هل يجب أن أضمّن خط Arial مع التطبيق؟** + ليس بالضرورة. إذا كان الجهاز الهدف يحتوي بالفعل على Arial، سيختار المُحوِّل هذا الخط. وإلا يمكنك تضمين خط ويب مخصص عبر CSS `@font-face` في HTML الخاص بك. + +- **كيف يقارن هذا بـ Chrome بدون رأس؟** + Aspose.HTML مكتبة .NET مُدارة بالكامل، لذا لا تحتاج إلى متصفحات خارجية أو برامج تشغيل أو حاويات ثقيلة. عادةً ما تكون أسرع للمهام الدفعية، رغم أن Chrome قد يعرض تحريكات CSS3 بصورة أكثر دقة. + +## الخلاصة + +لقد غطينا **كيفية تحويل HTML** إلى صورة PNG باستخدام Aspose.HTML for .NET، موضحين لك كيفية **تحميل مستند HTML**، **تطبيق نمط الخط**، و**تصدير HTML كـ PNG** ببضع أسطر من كود C#. المثال الكامل القابل للتنفيذ موجود في المقاطع أعلاه، ويمكنك نسخه ولصقه في مشروع وحدة تحكم الآن. + +### ما التالي؟ + +- جرب قيم `Width`/`Height` المختلفة لإنشاء صور مصغرة. +- غيّر تنسيق الإخراج إلى JPEG للحصول على ملفات أصغر. +- اجمع صفحات متعددة مُحوَّلة في ملف PDF باستخدام `PdfRenderer`. +- استكشف استعلامات وسائط CSS (`@media print`) لتخصيص العرض المُحوَّل. + +لا تتردد في تعديل خيارات العرض، تبديل الخطوط، أو إمداد 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..9bcfef25d 100644 --- a/html/chinese/net/html-extensions-and-conversions/_index.md +++ b/html/chinese/net/html-extensions-and-conversions/_index.md @@ -71,9 +71,10 @@ Aspose.HTML for .NET 不仅仅是一个库;它是 Web 开发领域的变革者 使用 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# 示例,包含代码演示和关键步骤。 - ### [在 C# 中将 HTML 保存为 ZIP – 完整内存示例](./save-html-to-zip-in-c-complete-in-memory-example/) 演示如何使用 Aspose.HTML for .NET 在 C# 中将 HTML 内容压缩为 ZIP 文件,完整的内存操作示例。 +### [在 C# 中将 HTML 转换为 ZIP – 完整分步指南](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +在 C# 中使用 Aspose.HTML 将 HTML 转换为 ZIP 的完整分步指南,涵盖代码示例和关键步骤。 ## 结论 diff --git a/html/chinese/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/chinese/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..e83031014 --- /dev/null +++ b/html/chinese/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,283 @@ +--- +category: general +date: 2026-03-26 +description: 使用 Aspose.HTML 快速将 HTML 转换为 ZIP。了解如何从 HTML 创建 ZIP、在内存中处理资源以及避免常见陷阱。 +draft: false +keywords: +- convert html to zip +- create zip from html +language: zh +og_description: 轻松将HTML转换为ZIP。本指南展示如何使用 Aspose.HTML 将 HTML 创建为 ZIP,提供完整代码和技巧。 +og_title: 在 C# 中将 HTML 转换为 ZIP – 完整编程演练 +tags: +- C# +- Aspose.HTML +- file compression +title: 使用 C# 将 HTML 转换为 ZIP – 完整的逐步指南 +url: /zh/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Convert HTML to ZIP in C# – Complete Step‑by‑Step Guide + +Ever needed to **convert HTML to ZIP** but weren’t sure which API to reach for? You’re not the only one—many developers hit this wall when they try to ship a web page with its images, CSS, and scripts as a single downloadable package. + +The good news? With Aspose.HTML you can **create ZIP from HTML** in a handful of lines, and you’ll get full control over where each resource lives (memory, disk, or a stream). In this tutorial we’ll walk through the whole process, from a tiny HTML snippet to a ready‑to‑download ZIP file, and we’ll explain the “why” behind every choice. + +## What You’ll Learn + +- How to set up Aspose.HTML in a .NET project. +- How to save an HTML document and all its linked resources into a `MemoryStream`. +- How to pack the same HTML into a ZIP archive with a single call. +- Tips for handling large images, custom resource storage, and error handling. +- Expected console output and how to verify the ZIP contents. + +No fancy prerequisites—just a recent version of .NET (Core 3.1+ or .NET 6) and the Aspose.HTML NuGet package. Let’s dive in. + +![转换 HTML 为 ZIP 插图](convert-html-to-zip.png){alt="转换 HTML 为 ZIP 示例"} + +## Prerequisites + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6 SDK (or later) | The latest runtime gives you the most efficient `MemoryStream` handling. | +| Aspose.HTML for .NET (NuGet) | Provides the `HTMLDocument`, `HtmlSaveOptions`, and `ZipOutputStorage` classes we’ll use. | +| Basic C# knowledge | You’ll need to understand `using` statements and streams. | + +Install the library with: + +```bash +dotnet add package Aspose.HTML +``` + +Now that the groundwork is set, let’s start converting HTML to ZIP. + +## Step 1: Create a Simple HTML Document + +First we need an `HTMLDocument` instance. In a real project you’d probably load a file from disk, but for the demo we’ll embed a tiny page that references a local image called `logo.png`. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*Why this matters:* By constructing the document in code we avoid external file dependencies, making the example fully self‑contained—perfect for AI citation and for quick testing. + +## Step 2: Save the HTML and Its Resources to a MemoryStream + +Sometimes you don’t want to write to disk at all—maybe you’re sending the ZIP over a web API. The `ResourceHandler` lets you direct every linked file (images, CSS, etc.) into a `MemoryStream` instead of the file system. + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**What you see:** The console prints the byte length of the generated HTML. Because we used a `MemoryStream`, nothing touches the disk, which means you can now **convert HTML to ZIP** entirely in memory if you wish. + +### Pro tip + +If your HTML contains large images, consider overriding `HandleResource` to compress the stream on the fly. That way the final ZIP stays lean. + +## Step 3: Pack the HTML and Its Resources into a ZIP Archive + +Aspose.HTML ships with a handy `ZipOutputStorage` class that automatically bundles the main HTML file and every referenced resource into a single ZIP file. Here’s how to use it: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**Result:** `output.zip` now contains: + +- `index.html` (the HTML we created) +- `logo.png` (the image referenced in the markup) + +You can open the ZIP with any archive manager and see that the HTML still points to `logo.png`, preserving the original page layout. + +### Edge case: Missing resources + +If a resource can’t be found, Aspose.HTML throws a `ResourceNotFoundException`. Wrap the `Save` call in a `try/catch` block if you’re dealing with user‑generated HTML that might reference external URLs. + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## Step 4: Verify the ZIP Contents Programmatically (Optional) + +If you’re building a web service, you might want to confirm the ZIP contains everything before sending it downstream. The .NET `System.IO.Compression` namespace lets you peek inside without extracting to disk. + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +You should see output similar to: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +That final check gives you confidence that the **create ZIP from HTML** step succeeded. + +## Common Pitfalls & How to Avoid Them + +| Symptom | Likely cause | Fix | +|---------|--------------|-----| +| ZIP is empty | `OutputStorage` not set or `HtmlSaveOptions` omitted | Ensure `OutputStorage = zipStorage` and pass `zipSaveOptions` to `Save`. | +| Images appear broken when opening `index.html` | Resource handler returned a new empty stream | Return a stream that actually contains the image bytes, or let Aspose handle it automatically. | +| Out‑of‑memory exception on large pages | Storing everything in a single `MemoryStream` without flushing | Use `FileStream` for large resources or stream directly to the HTTP response. | +| Wrong file extension | Saved as `.html` instead of `.zip` | Verify the `FileStream` path ends with `.zip`. | + +## Full Working Example + +Below is the complete, ready‑to‑run program. Copy‑paste it into a console project, add the Aspose.HTML NuGet package, and run. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Running the program produces console output similar to: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +You now have a **convert HTML to ZIP** pipeline you can embed in web APIs, background jobs, or desktop tools. + +## Conclusion + +We’ve covered everything you need to **convert HTML to ZIP** using Aspose.HTML: creating the document, routing resources to memory, packing everything into a ZIP, and even verifying the result programmatically. The approach is lightweight, works entirely in‑process, and gives you fine‑grained control over how each file is stored. + +Ready for the next challenge? Try swapping `ZipOutputStorage` for a custom `Stream` that writes directly to an HTTP response, or experiment with compressing images on the fly to shrink the final archive. Those extensions will let you **create ZIP from HTML** in even more demanding scenarios. + +Got questions or want to share how you’ve adapted this pattern? Drop a comment below, and 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/chinese/net/rendering-html-documents/_index.md b/html/chinese/net/rendering-html-documents/_index.md index 320ef98cc..66e65ad4e 100644 --- a/html/chinese/net/rendering-html-documents/_index.md +++ b/html/chinese/net/rendering-html-documents/_index.md @@ -66,9 +66,13 @@ Aspose.HTML for .NET 凭借其丰富的功能、出色的文档和活跃的社 ### [使用 Aspose.HTML 在 .NET 中将 SVG 文档渲染为 PNG](./render-svg-doc-as-png/) 解锁 Aspose.HTML for .NET 的强大功能!了解如何轻松将 SVG Doc 渲染为 PNG。深入了解分步示例和常见问题解答。立即开始! + ### [使用 Aspose.HTML 在 .NET 中从 HTML 创建 PNG – 完整 C# 渲染指南](./create-png-from-html-full-c-rendering-guide/) 完整的 C# 示例,展示如何使用 Aspose.HTML 将 HTML 渲染为 PNG,涵盖所有关键步骤和最佳实践。 +### [如何在 C# 中将 HTML 渲染为 PNG – 步骤指南](./how-to-render-html-to-png-in-c-step-by-step-guide/) +学习在 C# 中使用 Aspose.HTML 将 HTML 渲染为 PNG 的完整步骤,包含关键设置和示例代码。 + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/chinese/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/chinese/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..ffbc1a6e4 --- /dev/null +++ b/html/chinese/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,184 @@ +--- +category: general +date: 2026-03-26 +description: 如何快速且可靠地渲染 HTML。学习将 HTML 转换为 PNG、导出 HTML 为 PNG、应用字体样式以及使用 Aspose.Html + 加载 HTML 文档。 +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: zh +og_description: 如何在 C# 中使用 Aspose.Html 渲染 HTML。本指南向您展示如何将 HTML 转换为 PNG、导出 HTML 为 PNG、应用字体样式以及加载 + HTML 文档。 +og_title: 如何在 C# 中将 HTML 渲染为 PNG – 完整教程 +tags: +- C# +- Aspose.Html +- Image Rendering +title: 如何在 C# 中将 HTML 渲染为 PNG – 逐步指南 +url: /zh/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 C# 中将 HTML 渲染为 PNG – 步骤指南 + +是否曾想过 **如何将 HTML 渲染** 成清晰的 PNG 图像,而不必与浏览器自动化纠缠?你并不孤单。许多开发者需要 *将 HTML 转换为 PNG* 用于邮件缩略图、报告快照或 PDF 预览,而常见的无头浏览器技巧往往显得笨重。 + +在本教程中,我们将逐步演示一种基于库的简洁方案,**加载 HTML 文档**、**应用字体样式**以及其他渲染微调,最后 **导出 HTML 为 PNG**。完成后,你将拥有一个可直接运行的 C# 程序,并附带一些防止常见坑点的专业提示。 + +## 前置条件 + +- .NET 6.0 或更高版本(代码同样适用于 .NET Core 和 .NET Framework) +- Aspose.HTML for .NET NuGet 包(`Aspose.Html` 和 `Aspose.Html.Rendering.Image`) +- 放置在可引用位置的示例 HTML 文件(`sample.html`) +- 对 C# 和 Visual Studio(或任意你喜欢的 IDE)有基本了解 + +> **专业提示:** 如果你在 CI 服务器上运行,请将 Aspose.HTML DLL 添加到项目的 `packages` 文件夹中,以保持构建的自包含性。 + +## 第 1 步 – 加载 HTML 文档 + +首先需要 **加载 HTML 文档** 到 `HTMLDocument` 对象中。Aspose.HTML 会读取文件、解析相对资源,并创建一个可供操作的 DOM。 + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **为什么重要:** 通过 Aspose 加载文档可确保外部 CSS、图片和字体以浏览器相同的方式处理,这对后续 **将 HTML 转换为 PNG** 至关重要。 + +## 第 2 步 – 配置渲染选项(应用字体样式等) + +接下来设置 `ImageRenderingOptions`。在这里你可以 **应用字体样式**、选择抗锯齿以及定义输出尺寸。调节这些设置可以显著提升最终 PNG 的视觉保真度。 + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### 选项实际作用说明 + +| 选项 | 效果 | 何时更改 | +|--------|--------|----------------| +| `UseAntialiasing` | 平滑形状和文字的锯齿边缘 | 高分辨率输出时 | +| `TextOptions.UseHinting` | 提升小字号文字的可读性 | 渲染 UI 密集页面时 | +| `Font.Style / Size / Family` | 强制使用特定字体,忽略页面 CSS 中的设置 | 企业品牌或原始字体不可用时 | +| `Width` / `Height` | 设置 PNG 的画布大小 | 与浏览器视口尺寸匹配时 | + +## 第 3 步 – 将文档渲染为 PNG 图像(Convert HTML to PNG) + +文档和选项准备就绪后,将它们交给 `ImageRenderer`。该类会直接将渲染后的位图流式写入文件,实现 **将 HTML 转换为 PNG** 的快速且内存高效的操作。 + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **边缘情况:** 如果你的 HTML 通过 HTTP 引用了外部图片,请确保运行此代码的机器能够访问该服务器。否则渲染器会留下占位符。 + +### 预期输出 + +程序执行完毕后,你应在与 `sample.html` 同一目录下看到 `rendered.png` 文件。使用任意图像查看器打开——这将是 HTML 页面像素级的快照,包含 **已应用的字体样式** 与抗锯齿图形。 + +![How to render html example output](rendered.png "How to render html – PNG result of the sample HTML page") + +*(替代文字包含主要关键词,以利 SEO。)* + +## 第 4 步 – 以编程方式验证结果(可选) + +在自动化流水线中,有时需要确认 PNG 是否正确生成。快速检查文件大小或使用 `System.Drawing` 加载图像即可获得信心。 + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## 常见问题与注意事项 + +- **如果需要其他图片格式怎么办?** + `ImageRenderer` 还支持 JPEG、BMP 和 GIF。只需更改文件扩展名,并可在 `ImageRenderingOptions` 中可选地设置 `ImageFormat`。 + +- **能只渲染特定的 HTML 元素吗?** + 可以。使用 `htmlDoc.GetElementById("myDiv")` 并将该元素传给 `ImageRenderer.Render(element)`。 + +- **必须随应用一起发布 Arial 字体吗?** + 不一定。如果目标机器已有 Arial,渲染器会自动使用。否则可以在 HTML 中通过 CSS `@font-face` 嵌入自定义网络字体。 + +- **这与无头 Chrome 相比如何?** + Aspose.HTML 是纯托管的 .NET 库,无需外部浏览器、驱动或笨重容器。对于批量任务通常更快,尽管 Chrome 在渲染 CSS3 动画方面可能更忠实。 + +## 总结 + +我们已经展示了如何使用 Aspose.HTML for .NET **将 HTML 渲染** 为 PNG 图像,涵盖了 **加载 HTML 文档**、**应用字体样式** 与 **导出 HTML 为 PNG** 的完整步骤,仅需几行 C# 代码。完整、可运行的示例已在上面的代码块中提供,你可以立即复制粘贴到控制台项目中使用。 + +### 接下来可以做什么? + +- 尝试不同的 `Width`/`Height` 值以生成缩略图。 +- 将输出格式切换为 JPEG 以获得更小的文件体积。 +- 使用 `PdfRenderer` 将多个渲染页面合并为 PDF。 +- 探索 CSS 媒体查询(`@media print`)以定制渲染视图。 + +欢迎随意调整渲染选项、替换字体,或使用动态生成的 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/czech/net/html-extensions-and-conversions/_index.md b/html/czech/net/html-extensions-and-conversions/_index.md index dc8f6f072..00b2656a3 100644 --- a/html/czech/net/html-extensions-and-conversions/_index.md +++ b/html/czech/net/html-extensions-and-conversions/_index.md @@ -73,6 +73,12 @@ Naučte se vytvořit HTML dokument se stylovaným textem a převést jej do PDF Naučte se, jak uložit HTML soubor 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#. +### [Převod HTML do ZIP v C# – Kompletní krok‑za‑krokem průvodce](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +Naučte se, jak převést HTML do ZIP v C# pomocí Aspose.HTML pro .NET v podrobném krok‑za‑krokem průvodci. +### [Uložte HTML do 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 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#. ## Závěr diff --git a/html/czech/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/czech/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..63441c0da --- /dev/null +++ b/html/czech/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,285 @@ +--- +category: general +date: 2026-03-26 +description: Rychle převádějte HTML do ZIP pomocí Aspose.HTML. Naučte se, jak vytvořit + ZIP z HTML, pracovat s prostředky v paměti a vyhnout se běžným úskalím. +draft: false +keywords: +- convert html to zip +- create zip from html +language: cs +og_description: Jednoduše převádějte HTML na ZIP. Tento průvodce vám ukáže, jak vytvořit + ZIP z HTML pomocí Aspose.HTML, s kompletním kódem a tipy. +og_title: Převod HTML do ZIP v C# – Kompletní průvodce programováním +tags: +- C# +- Aspose.HTML +- file compression +title: Převod HTML do ZIP v C# – kompletní krok za krokem průvodce +url: /cs/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Convert HTML to ZIP in C# – Complete Step‑by‑Step Guide + +Už jste někdy potřebovali **převést HTML do ZIP**, ale nebyli jste si jisti, kterou API použít? Nejste v tom sami — mnoho vývojářů narazí na tento problém, když chtějí distribuovat webovou stránku s obrázky, CSS a skripty jako jeden stažitelný balíček. + +Dobrá zpráva? S Aspose.HTML můžete **vytvořit ZIP z HTML** během několika řádků a získáte plnou kontrolu nad tím, kde se každý zdroj nachází (paměť, disk nebo stream). V tomto tutoriálu projdeme celý proces, od malého úryvku HTML po připravený ZIP ke stažení, a vysvětlíme „proč“ za každým rozhodnutím. + +## What You’ll Learn + +- Jak nastavit Aspose.HTML v .NET projektu. +- Jak uložit HTML dokument a všechny jeho propojené zdroje do `MemoryStream`. +- Jak zabalit stejné HTML do ZIP archivu jedním voláním. +- Tipy pro práci s velkými obrázky, vlastní úložiště zdrojů a ošetření chyb. +- Očekávaný výstup v konzoli a jak ověřit obsah ZIP. + +Žádné složité předpoklady — jen aktuální verze .NET (Core 3.1+ nebo .NET 6) a NuGet balíček Aspose.HTML. Pojďme na to. + +![convert html to zip illustration](convert-html-to-zip.png){alt="příklad převodu html do zip"} + +## Prerequisites + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6 SDK (or later) | Nejnovější runtime poskytuje nejefektivnější práci s `MemoryStream`. | +| Aspose.HTML for .NET (NuGet) | Poskytuje třídy `HTMLDocument`, `HtmlSaveOptions` a `ZipOutputStorage`, které použijeme. | +| Basic C# knowledge | Budete potřebovat rozumět `using` příkazům a streamům. | + +Instalujte knihovnu pomocí: + +```bash +dotnet add package Aspose.HTML +``` + +Nyní, když je základ připraven, začněme převádět HTML do ZIP. + +## Step 1: Create a Simple HTML Document + +Nejprve potřebujeme instanci `HTMLDocument`. Ve skutečném projektu byste pravděpodobně načetli soubor z disku, ale pro ukázku vložíme malou stránku, která odkazuje na lokální obrázek `logo.png`. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*Why this matters:* Konstrukcí dokumentu v kódu se vyhneme externím souborovým závislostem, což dělá příklad plně samostatným — ideální pro citace AI i rychlé testování. + +## Step 2: Save the HTML and Its Resources to a MemoryStream + +Někdy nechcete vůbec zapisovat na disk — možná ZIP posíláte přes webové API. `ResourceHandler` vám umožní nasměrovat každý propojený soubor (obrázky, CSS atd.) do `MemoryStream` místo souborového systému. + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**What you see:** Konzole vypíše délku v bajtech vygenerovaného HTML. Protože používáme `MemoryStream`, nic se nedotkne disku, což znamená, že můžete **převést HTML do ZIP** kompletně v paměti, pokud chcete. + +### Pro tip + +Pokud vaše HTML obsahuje velké obrázky, zvažte přepsání `HandleResource` tak, aby během přenosu komprimoval stream. Tím zůstane finální ZIP úsporný. + +## Step 3: Pack the HTML and Its Resources into a ZIP Archive + +Aspose.HTML obsahuje užitečnou třídu `ZipOutputStorage`, která automaticky sbalí hlavní HTML soubor a všechny odkazované zdroje do jednoho ZIP souboru. Zde je ukázka, jak ji použít: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**Result:** `output.zip` nyní obsahuje: + +- `index.html` (HTML, které jsme vytvořili) +- `logo.png` (obrázek odkazovaný v markup) + +ZIP můžete otevřít libovolným správcem archivů a uvidíte, že HTML stále odkazuje na `logo.png`, čímž zachovává původní rozložení stránky. + +### Edge case: Missing resources + +Pokud se zdroj nepodaří najít, Aspose.HTML vyhodí `ResourceNotFoundException`. Zabalte volání `Save` do `try/catch` bloku, pokud pracujete s HTML generovaným uživatelem, který může odkazovat na externí URL. + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## Step 4: Verify the ZIP Contents Programmatically (Optional) + +Pokud budujete webovou službu, možná budete chtít před odesláním potvrdit, že ZIP obsahuje vše. .NET jmenný prostor `System.IO.Compression` vám umožní nahlédnout dovnitř bez rozbalování na disk. + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +Měli byste vidět výstup podobný: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +Tato závěrečná kontrola vám dává jistotu, že krok **create ZIP from HTML** byl úspěšný. + +## Common Pitfalls & How to Avoid Them + +| Symptom | Likely cause | Fix | +|---------|--------------|-----| +| ZIP is empty | `OutputStorage` not set or `HtmlSaveOptions` omitted | Ensure `OutputStorage = zipStorage` and pass `zipSaveOptions` to `Save`. | +| Images appear broken when opening `index.html` | Resource handler returned a new empty stream | Return a stream that actually contains the image bytes, or let Aspose handle it automatically. | +| Out‑of‑memory exception on large pages | Storing everything in a single `MemoryStream` without flushing | Use `FileStream` for large resources or stream directly to the HTTP response. | +| Wrong file extension | Saved as `.html` instead of `.zip` | Verify the `FileStream` path ends with `.zip`. | + +## Full Working Example + +Níže je kompletní, připravený program. Zkopírujte jej do konzolového projektu, přidejte NuGet balíček Aspose.HTML a spusťte. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Spuštěním programu získáte výstup v konzoli podobný: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +Nyní máte **pipeline pro převod HTML do ZIP**, kterou můžete vložit do webových API, background jobů nebo desktopových nástrojů. + +## Conclusion + +Probrali jsme vše, co potřebujete k **převodu HTML do ZIP** pomocí Aspose.HTML: vytvoření dokumentu, směrování zdrojů do paměti, zabalení všeho do ZIP a dokonce i programové ověření výsledku. Přístup je lehký, funguje kompletně v‑processu a poskytuje jemnou kontrolu nad tím, jak je každý soubor uložen. + +Jste připraveni na další výzvu? Zkuste nahradit `ZipOutputStorage` vlastním `Stream`, který zapisuje přímo do HTTP odpovědi, nebo experimentujte s kompresí obrázků za běhu, abyste zmenšili finální archiv. Tyto rozšíření vám umožní **vytvořit ZIP z HTML** i v náročnějších scénářích. + +Máte otázky nebo chcete sdílet, jak jste tento vzor přizpůsobili? Zanechte komentář níže a šťastné programová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/rendering-html-documents/_index.md b/html/czech/net/rendering-html-documents/_index.md index 5e42f8047..eab00abcd 100644 --- a/html/czech/net/rendering-html-documents/_index.md +++ b/html/czech/net/rendering-html-documents/_index.md @@ -64,6 +64,9 @@ Kompletní průvodce v C#, jak pomocí Aspose.HTML převést HTML do PNG formát ### [Jak použít Aspose k vykreslení HTML do PNG – krok za krokem](./how-to-use-aspose-to-render-html-to-png-step-by-step-guide/) Naučte se, jak pomocí Aspose.HTML v .NET převést HTML do PNG pomocí podrobného průvodce krok za krokem. +### [Jak vykreslit HTML do PNG v C# – krok za krokem](./how-to-render-html-to-png-in-c-step-by-step-guide/) +Podrobný průvodce, jak pomocí Aspose.HTML v .NET převést HTML do PNG v C# s praktickými ukázkami. + ### [Jak vykreslit HTML do PNG pomocí Aspose – Kompletní průvodce](./how-to-render-html-to-png-with-aspose-complete-guide/) Kompletní návod, jak pomocí Aspose.HTML v .NET převést HTML soubory do PNG s podrobnými kroky a tipy. ### [Vytvořte PNG z HTML – Kompletní průvodce renderováním v C#](./create-png-from-html-full-c-rendering-guide/) diff --git a/html/czech/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/czech/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..7b4954793 --- /dev/null +++ b/html/czech/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,185 @@ +--- +category: general +date: 2026-03-26 +description: Jak rychle a spolehlivě renderovat HTML. Naučte se převádět HTML na PNG, + exportovat HTML jako PNG, použít styl písma a načíst HTML dokument pomocí Aspose.Html. +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: cs +og_description: Jak renderovat HTML v C# pomocí Aspose.Html. Tento průvodce vám ukáže, + jak převést HTML na PNG, exportovat HTML jako PNG, použít styl písma a načíst HTML + dokument. +og_title: Jak renderovat HTML do PNG v C# – kompletní tutoriál +tags: +- C# +- Aspose.Html +- Image Rendering +title: Jak renderovat HTML do PNG v C# – krok za krokem průvodce +url: /cs/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak renderovat HTML do PNG v C# – krok za krokem průvodce + +Už jste se někdy zamýšleli **jak renderovat HTML** do ostrého PNG obrázku, aniž byste se museli potýkat s automatizací prohlížeče? Nejste sami. Mnoho vývojářů potřebuje *převést HTML do PNG* pro náhledy e‑mailů, snímky zpráv nebo předzobrazení PDF a běžné triky s bezhlavým prohlížečem působí těžkopádně. + +V tomto tutoriálu projdeme čisté, knihovnou založené řešení, které **načte HTML dokument**, umožní vám **aplikovat styl písma** a další úpravy renderování a nakonec **exportuje HTML jako PNG**. Na konci budete mít připravený C# program, který to přesně dělá, plus několik tipů, jak se vyhnout běžným úskalím. + +## Požadavky + +- .NET 6.0 nebo novější (kód funguje také na .NET Core a .NET Framework) +- NuGet balíček Aspose.HTML pro .NET (`Aspose.Html` a `Aspose.Html.Rendering.Image`) +- Vzorek HTML souboru (`sample.html`) umístěný na místě, na které můžete odkazovat +- Základní znalost C# a Visual Studio (nebo jakéhokoli IDE dle preference) + +> **Tip:** Pokud běžíte na CI serveru, přidejte DLL soubory Aspose.HTML do složky `packages` vašeho projektu, aby byl build samostatný. + +## Krok 1 – Načtení HTML dokumentu + +První věc, kterou musíte udělat, je **načíst HTML dokument** do objektu `HTMLDocument`. Aspose.HTML načte soubor, vyřeší relativní zdroje a vytvoří DOM, který můžete upravovat. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **Proč je to důležité:** Načtení dokumentu přes Aspose zajišťuje, že externí CSS, obrázky a písma jsou zpracovány stejným způsobem jako v prohlížeči, což je nezbytné, když později **převádíte HTML do PNG**. + +## Krok 2 – Konfigurace možností renderování (aplikace stylu písma a další) + +Nyní nastavíme `ImageRenderingOptions`. Zde **aplikujete styl písma**, zvolíte antialiasing a definujete výstupní rozměry. Úprava těchto nastavení může dramaticky zlepšit vizuální věrnost finálního PNG. + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### Co jednotlivé možnosti dělají + +| Možnost | Efekt | Kdy změnit | +|--------|--------|----------------| +| `UseAntialiasing` | Vyhlazuje zubaté hrany tvarů a textu | Pro výstupy s vysokým rozlišením | +| `TextOptions.UseHinting` | Zlepšuje čitelnost malých písem | Při renderování stránek s těžkým UI | +| `Font.Style / Size / Family` | Vynutí konkrétní písmo bez ohledu na CSS stránky | Užitečné pro firemní branding nebo když není k dispozici původní písmo | +| `Width` / `Height` | Nastavuje velikost plátna PNG | Odpovídá viewportu, který byste viděli v prohlížeči | + +## Krok 3 – Vykreslení dokumentu do PNG obrázku (převod HTML do PNG) + +S dokumentem a nastavením připraveným předáme vše třídě `ImageRenderer`. Tato třída streamuje vykreslený bitmap přímo do souboru, což nám dává **operaci převodu HTML do PNG**, která je rychlá a paměťově úsporná. + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **Hraniční případ:** Pokud váš HTML odkazuje na externí obrázky přes HTTP, ujistěte se, že server je dostupný z počítače, na kterém kód běží. Jinak renderer nechá místo obrázků zástupné prvky. + +### Očekávaný výstup + +Po dokončení programu byste měli vidět soubor `rendered.png` ve stejném adresáři jako `sample.html`. Otevřete jej v libovolném prohlížeči obrázků – získáte pixel‑dokonalý snímek HTML stránky, včetně **aplikovaného stylu písma** a antialiasovaných grafických prvků. + +![Příklad výstupu renderování html](rendered.png "Renderování html – PNG výsledek vzorové HTML stránky") + +*(Alt text obsahuje hlavní klíčové slovo pro SEO.)* + +## Krok 4 – Ověření výsledku programově (volitelné) + +Někdy potřebujete potvrdit, že PNG byl vytvořen správně, zejména v automatizovaných pipelinech. Rychlá kontrola velikosti souboru nebo načtení obrázku pomocí `System.Drawing` vám může dodat jistotu. + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## Časté otázky a úskalí + +- **Co když potřebuji jiný formát obrázku?** + `ImageRenderer` také podporuje JPEG, BMP a GIF. Stačí změnit příponu souboru a případně nastavit `ImageFormat` v `ImageRenderingOptions`. + +- **Mohu renderovat jen konkrétní HTML prvek?** + Ano. Použijte `htmlDoc.GetElementById("myDiv")` a předávejte tento prvek metodě `ImageRenderer.Render(element)`. + +- **Musím dodávat písmo Arial s mojí aplikací?** + Ne nutně. Pokud cílový počítač už má Arial, renderer jej použije. Jinak můžete vložit vlastní webové písmo pomocí CSS `@font-face` ve vašem HTML. + +- **Jak se to srovnává s headless Chrome?** + Aspose.HTML je čistě spravovaná .NET knihovna, takže není potřeba externí prohlížeče, ovladače ani těžkopádné kontejnery. Obvykle je rychlejší pro dávkové úlohy, i když Chrome může věrněji vykreslovat CSS3 animace. + +## Závěr + +Probrali jsme **jak renderovat HTML** do PNG obrázku pomocí Aspose.HTML pro .NET, ukázali jsme vám, jak **načíst HTML dokument**, **aplikovat styl písma** a **exportovat HTML jako PNG** pomocí několika řádků C# kódu. Kompletní, spustitelný příklad najdete v úryvcích výše a můžete jej ihned zkopírovat do konzolového projektu. + +### Co dál? + +- Experimentujte s různými hodnotami `Width`/`Height` pro vytvoření náhledů. +- Přepněte výstupní formát na JPEG pro menší velikost souboru. +- Spojte více vykreslených stránek do PDF pomocí `PdfRenderer`. +- Prozkoumejte CSS media queries (`@media print`) pro přizpůsobení vykresleného pohledu. + +Neváhejte upravovat nastavení renderování, měnit písma nebo předávat dynamicky generované HTML. Pokud narazíte na problém, zanechte komentář níže — šť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/dutch/net/html-extensions-and-conversions/_index.md b/html/dutch/net/html-extensions-and-conversions/_index.md index fd924a78c..843aa94a3 100644 --- a/html/dutch/net/html-extensions-and-conversions/_index.md +++ b/html/dutch/net/html-extensions-and-conversions/_index.md @@ -72,6 +72,8 @@ Leer hoe u met Aspose.HTML voor .NET PDF's genereert vanuit HTML met een duideli ### [HTML opslaan als ZIP – Complete C#-tutorial](./save-html-as-zip-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 naar ZIP converteren in C# – Complete stap‑voor‑stap gids](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +Leer hoe u HTML naar ZIP converteert in C# met Aspose.HTML voor .NET via een volledige stap‑voor‑stap handleiding. ## Conclusie diff --git a/html/dutch/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/dutch/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..9c5dca2ab --- /dev/null +++ b/html/dutch/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,285 @@ +--- +category: general +date: 2026-03-26 +description: Converteer HTML snel naar ZIP met Aspose.HTML. Leer hoe je een ZIP van + HTML maakt, bronnen in het geheugen verwerkt en veelvoorkomende valkuilen vermijdt. +draft: false +keywords: +- convert html to zip +- create zip from html +language: nl +og_description: Converteer HTML moeiteloos naar ZIP. Deze gids laat zien hoe je een + ZIP maakt van HTML met Aspose.HTML, met volledige code en tips. +og_title: HTML naar ZIP converteren in C# – Volledige programmeerhandleiding +tags: +- C# +- Aspose.HTML +- file compression +title: HTML naar ZIP converteren in C# – Complete stapsgewijze handleiding +url: /nl/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML naar ZIP converteren in C# – Complete stap‑voor‑stap gids + +Heb je ooit **HTML naar ZIP moeten converteren** maar wist je niet welke API je moest gebruiken? Je bent niet de enige—veel ontwikkelaars lopen tegen dit probleem aan wanneer ze een webpagina met afbeeldingen, CSS en scripts als één downloadbaar pakket willen leveren. + +Het goede nieuws? Met Aspose.HTML kun je **ZIP maken van HTML** in een handvol regels code, en krijg je volledige controle over waar elke bron wordt opgeslagen (geheugen, schijf of een stream). In deze tutorial lopen we het hele proces door, van een klein HTML‑fragment tot een kant‑klaar ZIP‑bestand, en leggen we de “waarom” achter elke keuze uit. + +## Wat je zult leren + +- Hoe je Aspose.HTML instelt in een .NET‑project. +- Hoe je een HTML‑document en al zijn gekoppelde bronnen opslaat in een `MemoryStream`. +- Hoe je dezelfde HTML in één oproep in een ZIP‑archief verpakt. +- Tips voor het omgaan met grote afbeeldingen, aangepaste resource‑opslag en foutafhandeling. +- Verwachte console‑output en hoe je de ZIP‑inhoud verifieert. + +Geen ingewikkelde vereisten—alleen een recente versie van .NET (Core 3.1+ of .NET 6) en het Aspose.HTML NuGet‑pakket. Laten we beginnen. + +![convert html to zip illustration](convert-html-to-zip.png){alt="convert html naar zip voorbeeld"} + +## Vereisten + +| Vereiste | Waarom het belangrijk is | +|----------|--------------------------| +| .NET 6 SDK (of later) | De nieuwste runtime biedt de meest efficiënte `MemoryStream`‑afhandeling. | +| Aspose.HTML for .NET (NuGet) | Levert de `HTMLDocument`, `HtmlSaveOptions` en `ZipOutputStorage` klassen die we gaan gebruiken. | +| Basiskennis van C# | Je moet `using`‑statements en streams begrijpen. | + +Installeer de bibliotheek met: + +```bash +dotnet add package Aspose.HTML +``` + +Nu de basis is gelegd, laten we beginnen met HTML naar ZIP converteren. + +## Stap 1: Een eenvoudig HTML‑document maken + +Eerst hebben we een `HTMLDocument`‑instantie nodig. In een echt project laad je waarschijnlijk een bestand van de schijf, maar voor de demo embedden we een klein pagina‑fragment dat een lokale afbeelding `logo.png` aanroept. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*Waarom dit belangrijk is:* Door het document in code te construeren vermijden we externe bestandsafhankelijkheden, waardoor het voorbeeld volledig zelf‑voorzienend is—perfect voor AI‑citaties en snelle tests. + +## Stap 2: De HTML en zijn bronnen opslaan in een MemoryStream + +Soms wil je helemaal niet naar schijf schrijven—misschien stuur je de ZIP via een web‑API. De `ResourceHandler` laat je elke gekoppelde file (afbeeldingen, CSS, enz.) naar een `MemoryStream` sturen in plaats van naar het bestandssysteem. + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**Wat je ziet:** De console geeft de byte‑lengte van de gegenereerde HTML weer. Omdat we een `MemoryStream` gebruiken, raakt er niets de schijf, wat betekent dat je nu **HTML naar ZIP kunt converteren** volledig in het geheugen als je dat wilt. + +### Pro‑tip + +Als je HTML grote afbeeldingen bevat, overweeg dan om `HandleResource` te overschrijven zodat je de stream on‑the‑fly comprimeert. Op die manier blijft de uiteindelijke ZIP slank. + +## Stap 3: De HTML en zijn bronnen in een ZIP‑archief verpakken + +Aspose.HTML levert een handige `ZipOutputStorage`‑klasse die automatisch het hoofd‑HTML‑bestand en alle verwijzende bronnen in één ZIP‑bestand bundelt. Zo gebruik je het: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**Resultaat:** `output.zip` bevat nu: + +- `index.html` (de HTML die we hebben gemaakt) +- `logo.png` (de afbeelding die in de markup wordt aangeroepen) + +Je kunt de ZIP openen met elke archiefbeheerder en zien dat de HTML nog steeds naar `logo.png` verwijst, waardoor de oorspronkelijke paginalay‑out behouden blijft. + +### Randgeval: Ontbrekende bronnen + +Als een bron niet gevonden kan worden, gooit Aspose.HTML een `ResourceNotFoundException`. Plaats de `Save`‑aanroep in een `try/catch`‑blok als je te maken hebt met door gebruikers gegenereerde HTML die mogelijk externe URL’s bevat. + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## Stap 4: De ZIP‑inhoud programmatisch verifiëren (optioneel) + +Als je een webservice bouwt, wil je misschien bevestigen dat de ZIP alles bevat voordat je deze verstuurt. De .NET‑namespace `System.IO.Compression` laat je in de ZIP kijken zonder te extraheren naar schijf. + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +Je zou output moeten zien die lijkt op: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +Die laatste controle geeft je vertrouwen dat de **maak ZIP van HTML** stap geslaagd is. + +## Veelvoorkomende valkuilen & hoe ze te vermijden + +| Symptom | Waarschijnlijke oorzaak | Oplossing | +|---------|--------------------------|-----------| +| ZIP is leeg | `OutputStorage` niet ingesteld of `HtmlSaveOptions` weggelaten | Zorg dat `OutputStorage = zipStorage` en geef `zipSaveOptions` door aan `Save`. | +| Afbeeldingen zijn kapot bij openen van `index.html` | Resource‑handler gaf een nieuwe lege stream terug | Geef een stream terug die daadwerkelijk de afbeeldingsbytes bevat, of laat Aspose het automatisch afhandelen. | +| Out‑of‑memory‑exception bij grote pagina’s | Alles opslaan in één `MemoryStream` zonder te flushen | Gebruik `FileStream` voor grote bronnen of stream direct naar de HTTP‑respons. | +| Verkeerde bestandsextensie | Opgeslagen als `.html` in plaats van `.zip` | Controleer of het pad van de `FileStream` eindigt op `.zip`. | + +## Volledig werkend voorbeeld + +Hieronder staat het complete, kant‑klaar programma. Kopieer‑en‑plak het in een console‑project, voeg het Aspose.HTML NuGet‑pakket toe, en voer het uit. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Het uitvoeren van het programma geeft console‑output die lijkt op: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +Je hebt nu een **HTML naar ZIP converteren**‑pipeline die je kunt integreren in web‑API’s, achtergrondtaken of desktop‑tools. + +## Conclusie + +We hebben alles behandeld wat je nodig hebt om **HTML naar ZIP te converteren** met Aspose.HTML: het document maken, resources naar geheugen leiden, alles in een ZIP verpakken en zelfs het resultaat programmatisch verifiëren. De aanpak is lichtgewicht, werkt volledig in‑process en geeft je fijne controle over hoe elk bestand wordt opgeslagen. + +Klaar voor de volgende uitdaging? Probeer `ZipOutputStorage` te vervangen door een aangepaste `Stream` die direct naar een HTTP‑respons schrijft, of experimenteer met het comprimeren van afbeeldingen on‑the‑fly om het uiteindelijke archief te verkleinen. Die uitbreidingen laten je **ZIP maken van HTML** toepassen in nog veeleisendere scenario’s. + +Heb je vragen of wil je delen hoe jij dit patroon hebt aangepast? Laat een reactie achter, en 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/dutch/net/rendering-html-documents/_index.md b/html/dutch/net/rendering-html-documents/_index.md index 088e7bab1..a8da4427b 100644 --- a/html/dutch/net/rendering-html-documents/_index.md +++ b/html/dutch/net/rendering-html-documents/_index.md @@ -60,6 +60,8 @@ Leer hoe u met Aspose.HTML HTML naar PNG kunt renderen met een duidelijke stap Leer stap voor stap hoe u HTML naar PNG converteert met Aspose.HTML in deze volledige gids. ### [PNG maken vanuit HTML – Volledige C# Renderinggids](./create-png-from-html-full-c-rendering-guide/) Leer hoe u met Aspose.HTML voor .NET HTML naar PNG converteert met een volledige C#-renderinggids. +### [Hoe HTML te renderen naar PNG in C# – Stapsgewijze gids](./how-to-render-html-to-png-in-c-step-by-step-guide/) +Leer stap voor stap hoe u HTML naar PNG converteert met C# en Aspose.HTML in deze praktische gids. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/dutch/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/dutch/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..079770a24 --- /dev/null +++ b/html/dutch/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-03-26 +description: Hoe HTML snel en betrouwbaar te renderen. Leer HTML naar PNG te converteren, + HTML als PNG te exporteren, lettertype‑stijlen toe te passen en een HTML‑document + te laden met Aspose.Html. +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: nl +og_description: Hoe HTML te renderen in C# met Aspose.Html. Deze gids laat zien hoe + je HTML naar PNG converteert, HTML exporteert als PNG, lettertype‑stijl toepast + en een HTML‑document laadt. +og_title: Hoe HTML naar PNG renderen in C# – Complete tutorial +tags: +- C# +- Aspose.Html +- Image Rendering +title: Hoe HTML naar PNG renderen in C# – Stapsgewijze handleiding +url: /nl/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe HTML naar PNG renderen in C# – Stapsgewijze gids + +Heb je je ooit afgevraagd **hoe je HTML** kunt renderen naar een scherpe PNG‑afbeelding zonder te worstelen met browser‑automatisering? Je bent niet de enige. Veel ontwikkelaars moeten *HTML naar PNG converteren* voor e‑mail‑thumbnails, rapport‑snapshots of PDF‑voorbeelden, en de gebruikelijke headless‑browsertrucs voelen zwaar. + +In deze tutorial lopen we een nette, bibliotheek‑gebaseerde oplossing door die **een HTML‑document laadt**, je **lettertype‑stijl toepast** en andere render‑aanpassingen maakt, en uiteindelijk **HTML exporteert als PNG**. Aan het einde heb je een kant‑klaar C#‑programma dat precies dat doet, plus een paar pro‑tips om je te behoeden voor veelvoorkomende valkuilen. + +## Vereisten + +- .NET 6.0 of later (de code werkt ook op .NET Core en .NET Framework) +- Aspose.HTML for .NET NuGet‑pakket (`Aspose.Html` en `Aspose.Html.Rendering.Image`) +- Een voorbeeld‑HTML‑bestand (`sample.html`) op een locatie die je kunt refereren +- Basiskennis van C# en Visual Studio (of een andere IDE naar keuze) + +> **Pro tip:** Als je op een CI‑server werkt, voeg de Aspose.HTML‑DLL’s toe aan de `packages`‑map van je project zodat de build zelf‑voorzien blijft. + +## Stap 1 – Laad het HTML‑document + +Het eerste wat je moet doen is **het HTML‑document laden** in een `HTMLDocument`‑object. Aspose.HTML leest het bestand, lost relatieve bronnen op en maakt een DOM die je kunt manipuleren. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **Waarom dit belangrijk is:** Het document via Aspose laden zorgt ervoor dat externe CSS, afbeeldingen en lettertypen worden verwerkt op dezelfde manier als een browser, wat essentieel is wanneer je later **HTML naar PNG converteert**. + +## Stap 2 – Configureer render‑opties (Lettertype‑stijl & meer) + +Nu stellen we `ImageRenderingOptions` in. Hier kun je **lettertype‑stijl toepassen**, antialiasing kiezen en de uitvoerafmetingen definiëren. Het afstemmen van deze instellingen kan de visuele getrouwheid van de uiteindelijke PNG drastisch verbeteren. + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### Wat de opties werkelijk doen + +| Optie | Effect | Wanneer aanpassen | +|--------|--------|-------------------| +| `UseAntialiasing` | Verzacht gekartelde randen op vormen en tekst | Voor hoge‑resolutie‑output | +| `TextOptions.UseHinting` | Verbetert leesbaarheid van kleine lettertypen | Bij het renderen van UI‑zware pagina’s | +| `Font.Style / Size / Family` | Dwingt een specifiek lettertype af, ongeacht de CSS van de pagina | Handig voor bedrijfsbranding of wanneer het originele lettertype niet beschikbaar is | +| `Width` / `Height` | Bepaalt de canvasgrootte van de PNG | Stem af op de viewport die je in een browser zou zien | + +## Stap 3 – Render het document naar een PNG‑afbeelding (HTML naar PNG converteren) + +Met het document en de opties klaar, geven we alles door aan `ImageRenderer`. Deze klasse streamt de gerenderde bitmap direct naar een bestand, waardoor we een **HTML‑naar‑PNG**‑operatie krijgen die zowel snel als geheugen‑efficiënt is. + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **Randgeval:** Als je HTML externe afbeeldingen via HTTP oproept, zorg er dan voor dat de server bereikbaar is vanaf de machine die deze code uitvoert. Anders laat de renderer plaatsaanduidingen achter. + +### Verwachte output + +Na afloop van het programma zie je een `rendered.png`‑bestand in dezelfde map als `sample.html`. Open het met een willekeurige afbeeldingsviewer – je krijgt een pixel‑perfecte snapshot van de HTML‑pagina, compleet met de **toegepaste lettertype‑stijl** en antialiased graphics. + +![Hoe HTML renderen voorbeeldoutput](rendered.png "Hoe HTML – PNG‑resultaat van de voorbeeld‑HTML‑pagina") + +*(Alt‑tekst bevat het primaire zoekwoord voor SEO.)* + +## Stap 4 – Verifieer het resultaat programmatisch (optioneel) + +Soms moet je bevestigen dat de PNG correct is aangemaakt, vooral in geautomatiseerde pipelines. Een snelle byte‑grootte‑check of het laden van de afbeelding met `System.Drawing` kan je vertrouwen geven. + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## Veelgestelde vragen & valkuilen + +- **Wat als ik een ander afbeeldingsformaat nodig heb?** + `ImageRenderer` ondersteunt ook JPEG, BMP en GIF. Verander simpelweg de bestandsextensie en stel eventueel `ImageFormat` in `ImageRenderingOptions` in. + +- **Kan ik alleen een specifiek HTML‑element renderen?** + Ja. Gebruik `htmlDoc.GetElementById("myDiv")` en geef dat element door aan `ImageRenderer.Render(element)`. + +- **Moet ik het Arial‑lettertype met mijn app meeleveren?** + Niet per se. Als de doelmachine al Arial heeft, zal de renderer het gebruiken. Anders kun je een aangepast web‑lettertype insluiten via CSS `@font-face` in je HTML. + +- **Hoe verhoudt dit zich tot headless Chrome?** + Aspose.HTML is een pure‑managed .NET‑bibliotheek, dus er zijn geen externe browsers, drivers of zware containers nodig. Het is doorgaans sneller voor batch‑taken, hoewel Chrome CSS3‑animaties nauwkeuriger kan weergeven. + +## Afsluiting + +We hebben behandeld **hoe je HTML** rendert naar een PNG‑afbeelding met Aspose.HTML voor .NET, waarbij we laten zien hoe je **HTML‑document laadt**, **lettertype‑stijl toepast**, en **HTML exporteert als PNG** met slechts een paar regels C#‑code. Het volledige, uitvoerbare voorbeeld staat in de bovenstaande code‑fragmenten, en je kunt het nu direct in een console‑project plakken. + +### Wat nu? + +- Experimenteer met verschillende `Width`/`Height`‑waarden om thumbnails te maken. +- Wissel het uitvoerformaat naar JPEG voor kleinere bestandsgroottes. +- Combineer meerdere gerenderde pagina’s tot een PDF met `PdfRenderer`. +- Verken CSS‑media‑queries (`@media print`) om de gerenderde weergave aan te passen. + +Voel je vrij om de render‑opties aan te passen, lettertypen te wisselen of dynamische HTML te verwerken die on‑the‑fly wordt gegenereerd. Als je ergens tegenaan loopt, laat dan een reactie achter — 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..1de6d3063 100644 --- a/html/english/net/html-extensions-and-conversions/_index.md +++ b/html/english/net/html-extensions-and-conversions/_index.md @@ -71,6 +71,8 @@ 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 HTML to ZIP in C# – Complete Step‑by‑Step Guide](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +Learn how to convert HTML files into a ZIP archive using Aspose.HTML for .NET with a detailed C# step‑by‑step guide. ### [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/) diff --git a/html/english/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/english/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..07d47e5f6 --- /dev/null +++ b/html/english/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,285 @@ +--- +category: general +date: 2026-03-26 +description: Convert HTML to ZIP quickly with Aspose.HTML. Learn how to create ZIP + from HTML, handle resources in memory, and avoid common pitfalls. +draft: false +keywords: +- convert html to zip +- create zip from html +language: en +og_description: Convert HTML to ZIP effortlessly. This guide shows you how to create + ZIP from HTML using Aspose.HTML, with complete code and tips. +og_title: Convert HTML to ZIP in C# – Full Programming Walkthrough +tags: +- C# +- Aspose.HTML +- file compression +title: Convert HTML to ZIP in C# – Complete Step‑by‑Step Guide +url: /net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Convert HTML to ZIP in C# – Complete Step‑by‑Step Guide + +Ever needed to **convert HTML to ZIP** but weren’t sure which API to reach for? You’re not the only one—many developers hit this wall when they try to ship a web page with its images, CSS, and scripts as a single downloadable package. + +The good news? With Aspose.HTML you can **create ZIP from HTML** in a handful of lines, and you’ll get full control over where each resource lives (memory, disk, or a stream). In this tutorial we’ll walk through the whole process, from a tiny HTML snippet to a ready‑to‑download ZIP file, and we’ll explain the “why” behind every choice. + +## What You’ll Learn + +- How to set up Aspose.HTML in a .NET project. +- How to save an HTML document and all its linked resources into a `MemoryStream`. +- How to pack the same HTML into a ZIP archive with a single call. +- Tips for handling large images, custom resource storage, and error handling. +- Expected console output and how to verify the ZIP contents. + +No fancy prerequisites—just a recent version of .NET (Core 3.1+ or .NET 6) and the Aspose.HTML NuGet package. Let’s dive in. + +![convert html to zip illustration](convert-html-to-zip.png){alt="convert html to zip example"} + +## Prerequisites + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6 SDK (or later) | The latest runtime gives you the most efficient `MemoryStream` handling. | +| Aspose.HTML for .NET (NuGet) | Provides the `HTMLDocument`, `HtmlSaveOptions`, and `ZipOutputStorage` classes we’ll use. | +| Basic C# knowledge | You’ll need to understand `using` statements and streams. | + +Install the library with: + +```bash +dotnet add package Aspose.HTML +``` + +Now that the groundwork is set, let’s start converting HTML to ZIP. + +## Step 1: Create a Simple HTML Document + +First we need an `HTMLDocument` instance. In a real project you’d probably load a file from disk, but for the demo we’ll embed a tiny page that references a local image called `logo.png`. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*Why this matters:* By constructing the document in code we avoid external file dependencies, making the example fully self‑contained—perfect for AI citation and for quick testing. + +## Step 2: Save the HTML and Its Resources to a MemoryStream + +Sometimes you don’t want to write to disk at all—maybe you’re sending the ZIP over a web API. The `ResourceHandler` lets you direct every linked file (images, CSS, etc.) into a `MemoryStream` instead of the file system. + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**What you see:** The console prints the byte length of the generated HTML. Because we used a `MemoryStream`, nothing touches the disk, which means you can now **convert HTML to ZIP** entirely in memory if you wish. + +### Pro tip + +If your HTML contains large images, consider overriding `HandleResource` to compress the stream on the fly. That way the final ZIP stays lean. + +## Step 3: Pack the HTML and Its Resources into a ZIP Archive + +Aspose.HTML ships with a handy `ZipOutputStorage` class that automatically bundles the main HTML file and every referenced resource into a single ZIP file. Here’s how to use it: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**Result:** `output.zip` now contains: + +- `index.html` (the HTML we created) +- `logo.png` (the image referenced in the markup) + +You can open the ZIP with any archive manager and see that the HTML still points to `logo.png`, preserving the original page layout. + +### Edge case: Missing resources + +If a resource can’t be found, Aspose.HTML throws a `ResourceNotFoundException`. Wrap the `Save` call in a `try/catch` block if you’re dealing with user‑generated HTML that might reference external URLs. + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## Step 4: Verify the ZIP Contents Programmatically (Optional) + +If you’re building a web service, you might want to confirm the ZIP contains everything before sending it downstream. The .NET `System.IO.Compression` namespace lets you peek inside without extracting to disk. + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +You should see output similar to: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +That final check gives you confidence that the **create ZIP from HTML** step succeeded. + +## Common Pitfalls & How to Avoid Them + +| Symptom | Likely cause | Fix | +|---------|--------------|-----| +| ZIP is empty | `OutputStorage` not set or `HtmlSaveOptions` omitted | Ensure `OutputStorage = zipStorage` and pass `zipSaveOptions` to `Save`. | +| Images appear broken when opening `index.html` | Resource handler returned a new empty stream | Return a stream that actually contains the image bytes, or let Aspose handle it automatically. | +| Out‑of‑memory exception on large pages | Storing everything in a single `MemoryStream` without flushing | Use `FileStream` for large resources or stream directly to the HTTP response. | +| Wrong file extension | Saved as `.html` instead of `.zip` | Verify the `FileStream` path ends with `.zip`. | + +## Full Working Example + +Below is the complete, ready‑to‑run program. Copy‑paste it into a console project, add the Aspose.HTML NuGet package, and run. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Running the program produces console output similar to: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +You now have a **convert HTML to ZIP** pipeline you can embed in web APIs, background jobs, or desktop tools. + +## Conclusion + +We’ve covered everything you need to **convert HTML to ZIP** using Aspose.HTML: creating the document, routing resources to memory, packing everything into a ZIP, and even verifying the result programmatically. The approach is lightweight, works entirely in‑process, and gives you fine‑grained control over how each file is stored. + +Ready for the next challenge? Try swapping `ZipOutputStorage` for a custom `Stream` that writes directly to an HTTP response, or experiment with compressing images on the fly to shrink the final archive. Those extensions will let you **create ZIP from HTML** in even more demanding scenarios. + +Got questions or want to share how you’ve adapted this pattern? Drop a comment below, and 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/rendering-html-documents/_index.md b/html/english/net/rendering-html-documents/_index.md index e7f281cce..1f451f691 100644 --- a/html/english/net/rendering-html-documents/_index.md +++ b/html/english/net/rendering-html-documents/_index.md @@ -46,6 +46,8 @@ Learn to work with Aspose.HTML for .NET: Manipulate HTML, convert to various for Step-by-step C# guide to render HTML pages as PNG images using Aspose.HTML for .NET, covering setup, options, and best practices! ### [How to Use Aspose to Render HTML to PNG – Step‑by‑Step Guide](./how-to-use-aspose-to-render-html-to-png-step-by-step-guide/) Step by step guide to render HTML to PNG using Aspose.HTML for .NET. Learn the process, code examples, and best practices. +### [How to Render HTML to PNG in C# – Step‑by‑Step Guide](./how-to-render-html-to-png-in-c-step-by-step-guide/) +Step-by-step guide to render HTML to PNG using C# and Aspose.HTML for .NET, covering setup, options, and best practices. ### [How to Render HTML to PNG with Aspose – Complete Guide](./how-to-render-html-to-png-with-aspose-complete-guide/) Comprehensive guide to render HTML to PNG using Aspose.HTML for .NET. Includes code examples and best practices. ### [Create PNG from HTML – Full C# Rendering Guide](./create-png-from-html-full-c-rendering-guide/) diff --git a/html/english/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/english/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..7ef9e21cf --- /dev/null +++ b/html/english/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,184 @@ +--- +category: general +date: 2026-03-26 +description: How to render HTML quickly and reliably. Learn to convert HTML to PNG, + export HTML as PNG, apply font style and load HTML document with Aspose.Html. +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: en +og_description: How to render HTML in C# using Aspose.Html. This guide shows you how + to convert HTML to PNG, export HTML as PNG, apply font style and load HTML document. +og_title: How to Render HTML to PNG in C# – Complete Tutorial +tags: +- C# +- Aspose.Html +- Image Rendering +title: How to Render HTML to PNG in C# – Step‑by‑Step Guide +url: /net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Render HTML to PNG in C# – Step‑by‑Step Guide + +Ever wondered **how to render HTML** into a crisp PNG image without wrestling with browser automation? You're not alone. Many developers need to *convert HTML to PNG* for email thumbnails, report snapshots, or PDF pre‑views, and the usual headless‑browser tricks feel heavyweight. + +In this tutorial we’ll walk through a clean, library‑based solution that **loads an HTML document**, lets you **apply font style** and other rendering tweaks, and finally **exports HTML as PNG**. By the end you’ll have a ready‑to‑run C# program that does exactly that, plus a few pro tips to keep you from common pitfalls. + +## Prerequisites + +- .NET 6.0 or later (the code works on .NET Core and .NET Framework as well) +- Aspose.HTML for .NET NuGet package (`Aspose.Html` and `Aspose.Html.Rendering.Image`) +- A sample HTML file (`sample.html`) placed somewhere you can reference +- Basic familiarity with C# and Visual Studio (or any IDE you prefer) + +> **Pro tip:** If you’re on a CI server, add the Aspose.HTML DLLs to your project’s `packages` folder so the build stays self‑contained. + +## Step 1 – Load the HTML Document + +The first thing you have to do is **load HTML document** into an `HTMLDocument` object. Aspose.HTML reads the file, resolves relative resources, and creates a DOM you can manipulate. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **Why this matters:** Loading the document through Aspose ensures that external CSS, images, and fonts are processed the same way a browser would, which is essential when you later **convert HTML to PNG**. + +## Step 2 – Configure Rendering Options (Apply Font Style & More) + +Now we set up `ImageRenderingOptions`. This is where you **apply font style**, choose antialiasing, and define the output dimensions. Tweaking these settings can dramatically improve the visual fidelity of the final PNG. + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### What the options actually do + +| Option | Effect | When to change | +|--------|--------|----------------| +| `UseAntialiasing` | Smooths jagged edges on shapes and text | For high‑resolution outputs | +| `TextOptions.UseHinting` | Improves readability of small fonts | When rendering UI‑heavy pages | +| `Font.Style / Size / Family` | Forces a specific font regardless of the page’s CSS | Useful for corporate branding or when the original font isn’t available | +| `Width` / `Height` | Sets the canvas size of the PNG | Match the viewport you’d see in a browser | + +## Step 3 – Render the Document to a PNG Image (Convert HTML to PNG) + +With the document and options ready, we hand everything to `ImageRenderer`. This class streams the rendered bitmap straight to a file, giving us a **convert HTML to PNG** operation that’s both fast and memory‑efficient. + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **Edge case:** If your HTML references external images via HTTP, make sure the server is reachable from the machine running this code. Otherwise the renderer will leave placeholders. + +### Expected output + +After the program finishes, you should see a `rendered.png` file in the same directory as `sample.html`. Open it with any image viewer – you’ll get a pixel‑perfect snapshot of the HTML page, complete with the **applied font style** and antialiased graphics. + +![How to render html example output](rendered.png "How to render html – PNG result of the sample HTML page") + +*(Alt text includes the primary keyword for SEO.)* + +## Step 4 – Verify the Result Programmatically (Optional) + +Sometimes you need to confirm that the PNG was created correctly, especially in automated pipelines. A quick byte‑size check or loading the image with `System.Drawing` can give you confidence. + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## Common Questions & Gotchas + +- **What if I need a different image format?** + `ImageRenderer` also supports JPEG, BMP, and GIF. Just change the file extension and optionally set `ImageFormat` in `ImageRenderingOptions`. + +- **Can I render a specific HTML element only?** + Yes. Use `htmlDoc.GetElementById("myDiv")` and pass that element to `ImageRenderer.Render(element)`. + +- **Do I have to ship the Arial font with my app?** + Not necessarily. If the target machine already has Arial, the renderer will pick it up. Otherwise you can embed a custom web font via CSS `@font-face` in your HTML. + +- **How does this compare to headless Chrome?** + Aspose.HTML is a pure‑managed .NET library, so there’s no need for external browsers, drivers, or heavyweight containers. It’s typically faster for batch jobs, though Chrome may render CSS3 animations more faithfully. + +## Wrap‑Up + +We’ve covered **how to render HTML** to a PNG image using Aspose.HTML for .NET, showing you how to **load HTML document**, **apply font style**, and **export HTML as PNG** with just a few lines of C# code. The full, runnable example lives in the snippets above, and you can copy‑paste it into a console project right now. + +### What’s next? + +- Experiment with different `Width`/`Height` values to create thumbnails. +- Switch the output format to JPEG for smaller file sizes. +- Combine multiple rendered pages into a PDF using `PdfRenderer`. +- Explore CSS media queries (`@media print`) to tailor the rendered view. + +Feel free to tweak the rendering options, swap fonts, or feed dynamic HTML generated on the fly. If you hit a snag, drop a comment below—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/french/net/html-extensions-and-conversions/_index.md b/html/french/net/html-extensions-and-conversions/_index.md index f4e02735c..fd0088584 100644 --- a/html/french/net/html-extensions-and-conversions/_index.md +++ b/html/french/net/html-extensions-and-conversions/_index.md @@ -74,6 +74,8 @@ Apprenez à compresser du HTML en un fichier zip avec C# grâce à notre guide d Apprenez à enregistrer un document HTML dans un fichier ZIP en C# avec Aspose.HTML pour .NET. 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. +### [Convertir HTML en ZIP en C# – Guide complet étape par étape](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +Apprenez à compresser du HTML en ZIP avec C# grâce à Aspose.HTML, guide complet étape par étape. ## Conclusion diff --git a/html/french/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/french/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..e4624879e --- /dev/null +++ b/html/french/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,287 @@ +--- +category: general +date: 2026-03-26 +description: Convertissez rapidement du HTML en ZIP avec Aspose.HTML. Découvrez comment + créer un ZIP à partir de HTML, gérer les ressources en mémoire et éviter les pièges + courants. +draft: false +keywords: +- convert html to zip +- create zip from html +language: fr +og_description: Convertissez facilement le HTML en ZIP. Ce guide vous montre comment + créer un ZIP à partir de HTML avec Aspose.HTML, en incluant le code complet et des + astuces. +og_title: Convertir le HTML en ZIP en C# – Guide complet de programmation +tags: +- C# +- Aspose.HTML +- file compression +title: Convertir du HTML en ZIP en C# – Guide complet étape par étape +url: /fr/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Convertir HTML en ZIP en C# – Guide complet étape par étape + +Vous avez déjà eu besoin de **convertir HTML en ZIP** mais vous ne saviez pas quelle API utiliser ? Vous n'êtes pas le seul—de nombreux développeurs rencontrent ce problème lorsqu'ils essaient de livrer une page web avec ses images, son CSS et ses scripts sous forme d'un seul paquet téléchargeable. + +Bonne nouvelle ? Avec Aspose.HTML, vous pouvez **créer un ZIP à partir de HTML** en quelques lignes, et vous avez un contrôle total sur l'emplacement de chaque ressource (mémoire, disque ou flux). Dans ce tutoriel, nous parcourrons tout le processus, d'un petit extrait HTML à un fichier ZIP prêt à être téléchargé, et nous expliquerons le « pourquoi » de chaque choix. + +## Ce que vous apprendrez + +- Comment configurer Aspose.HTML dans un projet .NET. +- Comment enregistrer un document HTML et toutes ses ressources liées dans un `MemoryStream`. +- Comment empaqueter le même HTML dans une archive ZIP en un seul appel. +- Conseils pour gérer les images volumineuses, le stockage de ressources personnalisé et la gestion des erreurs. +- Sortie console attendue et comment vérifier le contenu du ZIP. + +Aucun prérequis sophistiqué—juste une version récente de .NET (Core 3.1+ ou .NET 6) et le package NuGet Aspose.HTML. Plongeons‑y. + +![convert html to zip illustration](convert-html-to-zip.png){alt="exemple de conversion html en zip"} + +## Prérequis + +| Exigence | Pourquoi c'est important | +|----------|---------------------------| +| .NET 6 SDK (ou version ultérieure) | Le runtime le plus récent vous offre la gestion la plus efficace du `MemoryStream`. | +| Aspose.HTML pour .NET (NuGet) | Fournit les classes `HTMLDocument`, `HtmlSaveOptions` et `ZipOutputStorage` que nous utiliserons. | +| Connaissances de base en C# | Vous devrez comprendre les instructions `using` et les flux. | + +Installez la bibliothèque avec : + +```bash +dotnet add package Aspose.HTML +``` + +Maintenant que les bases sont posées, commençons à convertir HTML en ZIP. + +## Étape 1 : Créer un document HTML simple + +Tout d'abord, nous avons besoin d'une instance `HTMLDocument`. Dans un projet réel, vous chargeriez probablement un fichier depuis le disque, mais pour la démonstration nous allons intégrer une petite page qui référence une image locale nommée `logo.png`. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*Pourquoi c’est important :* En construisant le document dans le code, nous évitons les dépendances de fichiers externes, rendant l'exemple entièrement autonome—parfait pour la citation AI et pour les tests rapides. + +## Étape 2 : Enregistrer le HTML et ses ressources dans un MemoryStream + +Parfois, vous ne voulez pas du tout écrire sur le disque—peut-être que vous envoyez le ZIP via une API web. Le `ResourceHandler` vous permet de diriger chaque fichier lié (images, CSS, etc.) vers un `MemoryStream` au lieu du système de fichiers. + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**Ce que vous voyez :** La console affiche la longueur en octets du HTML généré. Comme nous avons utilisé un `MemoryStream`, rien ne touche le disque, ce qui signifie que vous pouvez maintenant **convertir HTML en ZIP** entièrement en mémoire si vous le souhaitez. + +### Astuce pro + +Si votre HTML contient de grandes images, envisagez de surcharger `HandleResource` pour compresser le flux à la volée. Ainsi, le ZIP final reste léger. + +## Étape 3 : Empaqueter le HTML et ses ressources dans une archive ZIP + +Aspose.HTML fournit une classe pratique `ZipOutputStorage` qui regroupe automatiquement le fichier HTML principal et chaque ressource référencée dans un seul fichier ZIP. Voici comment l'utiliser : + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**Résultat :** `output.zip` contient maintenant : + +- `index.html` (le HTML que nous avons créé) +- `logo.png` (l'image référencée dans le balisage) + +Vous pouvez ouvrir le ZIP avec n'importe quel gestionnaire d'archives et voir que le HTML pointe toujours vers `logo.png`, préservant la mise en page originale de la page. + +### Cas limite : Ressources manquantes + +Si une ressource est introuvable, Aspose.HTML lève une `ResourceNotFoundException`. Enveloppez l'appel `Save` dans un bloc `try/catch` si vous traitez du HTML généré par l'utilisateur qui pourrait référencer des URL externes. + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## Étape 4 : Vérifier le contenu du ZIP programmatiquement (Optionnel) + +Si vous créez un service web, vous pourriez vouloir confirmer que le ZIP contient tout avant de l'envoyer en aval. L'espace de noms .NET `System.IO.Compression` vous permet de jeter un œil à l'intérieur sans extraire sur le disque. + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +Vous devriez voir une sortie similaire à : + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +Cette vérification finale vous assure que l'étape **créer un ZIP à partir de HTML** a réussi. + +## Pièges courants & comment les éviter + +| Symptom | Cause probable | Solution | +|---------|----------------|----------| +| Le ZIP est vide | `OutputStorage` non défini ou `HtmlSaveOptions` omis | Assurez‑vous que `OutputStorage = zipStorage` et passez `zipSaveOptions` à `Save`. | +| Les images apparaissent cassées lors de l'ouverture de `index.html` | Le gestionnaire de ressources a renvoyé un nouveau flux vide | Retournez un flux contenant réellement les octets de l'image, ou laissez Aspose le gérer automatiquement. | +| Exception out‑of‑memory sur de grandes pages | Stocker tout dans un seul `MemoryStream` sans vidage | Utilisez `FileStream` pour les ressources volumineuses ou diffusez directement vers la réponse HTTP. | +| Extension de fichier incorrecte | Enregistré en `.html` au lieu de `.zip` | Vérifiez que le chemin du `FileStream` se termine par `.zip`. | + +## Exemple complet fonctionnel + +Ci‑dessous se trouve le programme complet, prêt à être exécuté. Copiez‑collez‑le dans un projet console, ajoutez le package NuGet Aspose.HTML, et exécutez. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +L'exécution du programme produit une sortie console similaire à : + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +Vous avez maintenant un pipeline **convertir HTML en ZIP** que vous pouvez intégrer dans des API web, des tâches en arrière‑plan ou des outils de bureau. + +## Conclusion + +Nous avons couvert tout ce dont vous avez besoin pour **convertir HTML en ZIP** avec Aspose.HTML : créer le document, diriger les ressources vers la mémoire, empaqueter le tout dans un ZIP, et même vérifier le résultat programmatiquement. L'approche est légère, fonctionne entièrement en‑processus, et vous offre un contrôle granulaire sur la façon dont chaque fichier est stocké. + +Prêt pour le prochain défi ? Essayez de remplacer `ZipOutputStorage` par un `Stream` personnalisé qui écrit directement dans une réponse HTTP, ou expérimentez la compression d'images à la volée pour réduire l'archive finale. Ces extensions vous permettront de **créer un ZIP à partir de HTML** dans des scénarios encore plus exigeants. + +Des questions ou envie de partager comment vous avez adapté ce modèle ? Laissez un commentaire ci‑dessous, et 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/rendering-html-documents/_index.md b/html/french/net/rendering-html-documents/_index.md index b8ecffbeb..2390c313c 100644 --- a/html/french/net/rendering-html-documents/_index.md +++ b/html/french/net/rendering-html-documents/_index.md @@ -68,6 +68,9 @@ Apprenez à convertir du HTML en PNG avec C# grâce à ce guide complet et prati ### [Comment rendre le HTML en PNG avec Aspose – Guide complet](./how-to-render-html-to-png-with-aspose-complete-guide/) Apprenez à convertir du HTML en images PNG avec Aspose grâce à ce guide complet et détaillé. +### [Comment rendre le HTML en PNG en C# – Guide étape par étape](./how-to-render-html-to-png-in-c-step-by-step-guide/) +Apprenez à convertir du HTML en PNG en C# grâce à ce guide détaillé étape par étape. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/french/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/french/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..c8f773ffe --- /dev/null +++ b/html/french/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-03-26 +description: Comment rendre le HTML rapidement et de façon fiable. Apprenez à convertir + le HTML en PNG, à exporter le HTML en PNG, à appliquer le style de police et à charger + un document HTML avec Aspose.Html. +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: fr +og_description: Comment rendre le HTML en C# avec Aspose.Html. Ce guide vous montre + comment convertir le HTML en PNG, exporter le HTML en PNG, appliquer le style de + police et charger un document HTML. +og_title: Comment rendre du HTML en PNG en C# – Tutoriel complet +tags: +- C# +- Aspose.Html +- Image Rendering +title: Comment rendre du HTML en PNG en C# – Guide étape par étape +url: /fr/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment rendre du HTML en PNG en C# – Guide étape par étape + +Vous vous êtes déjà demandé **comment rendre du HTML** en une image PNG nette sans vous embrouiller avec l’automatisation de navigateur ? Vous n’êtes pas seul. De nombreux développeurs doivent *convertir du HTML en PNG* pour des miniatures d’e‑mail, des instantanés de rapports ou des aperçus PDF, et les astuces habituelles avec les navigateurs sans tête semblent lourdes. + +Dans ce tutoriel, nous allons parcourir une solution propre, basée sur une bibliothèque, qui **charge un document HTML**, vous permet **d’appliquer un style de police** et d’autres ajustements de rendu, puis **exporte le HTML en PNG**. À la fin, vous disposerez d’un programme C# prêt à l’emploi qui fait exactement cela, ainsi que de quelques astuces de pro pour éviter les pièges courants. + +## Prérequis + +- .NET 6.0 ou version ultérieure (le code fonctionne également avec .NET Core et .NET Framework) +- Package NuGet Aspose.HTML for .NET (`Aspose.Html` et `Aspose.Html.Rendering.Image`) +- Un fichier HTML d’exemple (`sample.html`) placé quelque part où vous pouvez le référencer +- Une connaissance de base du C# et de Visual Studio (ou tout autre IDE de votre choix) + +> **Astuce pro :** Si vous êtes sur un serveur CI, ajoutez les DLL Aspose.HTML à votre dossier `packages` du projet afin que la construction reste autonome. + +## Étape 1 – Charger le document HTML + +La première chose à faire est **de charger le document HTML** dans un objet `HTMLDocument`. Aspose.HTML lit le fichier, résout les ressources relatives et crée un DOM que vous pouvez manipuler. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **Pourquoi c’est important :** Charger le document via Aspose garantit que les CSS externes, les images et les polices sont traités de la même façon qu’un navigateur, ce qui est essentiel lorsque vous **convertissez du HTML en PNG** plus tard. + +## Étape 2 – Configurer les options de rendu (Appliquer le style de police & plus) + +Nous configurons maintenant `ImageRenderingOptions`. C’est ici que vous **appliquez le style de police**, choisissez l’antialiasing et définissez les dimensions de sortie. Ajuster ces paramètres peut améliorer de façon spectaculaire la fidélité visuelle du PNG final. + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### Ce que font réellement les options + +| Option | Effet | Quand le modifier | +|--------|-------|-------------------| +| `UseAntialiasing` | Lisse les bords dentelés des formes et du texte | Pour des rendus haute résolution | +| `TextOptions.UseHinting` | Améliore la lisibilité des petites polices | Lors du rendu de pages très UI‑intensives | +| `Font.Style / Size / Family` | Force une police spécifique indépendamment du CSS de la page | Utile pour le branding d’entreprise ou quand la police d’origine n’est pas disponible | +| `Width` / `Height` | Définit la taille du canevas du PNG | Correspondre à la zone d’affichage que vous verriez dans un navigateur | + +## Étape 3 – Rendre le document en image PNG (Convertir le HTML en PNG) + +Avec le document et les options prêts, nous transmettons tout à `ImageRenderer`. Cette classe diffuse le bitmap rendu directement vers un fichier, nous offrant une opération **convertir le HTML en PNG** à la fois rapide et peu gourmande en mémoire. + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **Cas particulier :** Si votre HTML référence des images externes via HTTP, assurez‑vous que le serveur est accessible depuis la machine qui exécute ce code. Sinon le rendu laissera des espaces réservés. + +### Résultat attendu + +Après l’exécution du programme, vous devriez voir un fichier `rendered.png` dans le même répertoire que `sample.html`. Ouvrez‑le avec n’importe quel visualiseur d’images – vous obtiendrez un instantané pixel‑parfait de la page HTML, complet avec le **style de police appliqué** et les graphiques antialiasés. + +![Exemple de rendu html](rendered.png "Résultat PNG du rendu HTML – page d’exemple") + +*(Le texte alternatif inclut le mot‑clé principal pour le SEO.)* + +## Étape 4 – Vérifier le résultat par programme (Optionnel) + +Parfois, il faut confirmer que le PNG a été créé correctement, surtout dans des pipelines automatisés. Un simple contrôle de la taille en octets ou le chargement de l’image avec `System.Drawing` peut vous rassurer. + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## Questions fréquentes & Pièges + +- **Et si j’ai besoin d’un autre format d’image ?** + `ImageRenderer` prend également en charge JPEG, BMP et GIF. Il suffit de changer l’extension du fichier et éventuellement de définir `ImageFormat` dans `ImageRenderingOptions`. + +- **Puis‑je rendre uniquement un élément HTML spécifique ?** + Oui. Utilisez `htmlDoc.GetElementById("myDiv")` et passez cet élément à `ImageRenderer.Render(element)`. + +- **Dois‑je fournir la police Arial avec mon application ?** + Pas forcément. Si la machine cible possède déjà Arial, le rendu l’utilisera. Sinon, vous pouvez intégrer une police web personnalisée via `@font-face` dans votre CSS. + +- **Comment cela se compare‑t‑il à Chrome sans tête ?** + Aspose.HTML est une bibliothèque .NET purement gérée, il n’est donc pas nécessaire d’installer des navigateurs externes, des drivers ou des conteneurs lourds. Elle est généralement plus rapide pour les traitements par lots, bien que Chrome puisse rendre les animations CSS3 de façon plus fidèle. + +## Conclusion + +Nous avons vu **comment rendre du HTML** en image PNG avec Aspose.HTML pour .NET, en vous montrant comment **charger le document HTML**, **appliquer le style de police**, et **exporter le HTML en PNG** en quelques lignes de code C#. L’exemple complet et exécutable se trouve dans les extraits ci‑dessus, et vous pouvez le copier‑coller dans un projet console dès maintenant. + +### Et après ? + +- Expérimentez avec différentes valeurs `Width`/`Height` pour créer des miniatures. +- Changez le format de sortie en JPEG pour réduire la taille du fichier. +- Combinez plusieurs pages rendues en un PDF avec `PdfRenderer`. +- Explorez les media queries CSS (`@media print`) pour adapter la vue rendue. + +N’hésitez pas à ajuster les options de rendu, à changer de polices, ou à fournir du HTML dynamique généré à la volée. Si vous rencontrez un problème, laissez un commentaire ci‑dessous—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/german/net/html-extensions-and-conversions/_index.md b/html/german/net/html-extensions-and-conversions/_index.md index 607896d28..b507f5ec5 100644 --- a/html/german/net/html-extensions-and-conversions/_index.md +++ b/html/german/net/html-extensions-and-conversions/_index.md @@ -22,57 +22,55 @@ Bevor wir uns in die Tutorials vertiefen, sollten wir uns kurz ansehen, was Aspo ## HTML-Erweiterungen entmystifiziert -HTML-Erweiterungen sind eine wertvolle Ressource für Entwickler. Sie ermöglichen es Ihnen, die Funktionalität Ihrer Webanwendungen durch Hinzufügen benutzerdefinierter Elemente und Attribute zu erweitern. In dieser Tutorial-Reihe werden wir die verschiedenen HTML-Erweiterungen erkunden, die Aspose.HTML für .NET bietet. Sie erfahren, wie Sie diese Erweiterungen nahtlos in Ihre Projekte integrieren und Ihre Webanwendungen dynamischer und interaktiver gestalten können. +HTML-Erweiterungen sind eine wertvolle Ressource für Entwickler. Sie ermöglichen es Ihnen, die Funktionalität Ihrer Webanwendungen durch Hinzufügen benutzerdefinierter Elemente und Attribute zu erweitern. In dieser Tutorial‑Reihe werden wir die verschiedenen HTML-Erweiterungen erkunden, die Aspose.HTML für .NET bietet. Sie erfahren, wie Sie diese Erweiterungen nahtlos in Ihre Projekte integrieren und Ihre Webanwendungen dynamischer und interaktiver gestalten können. -## Umbau-Tutorials für alle Fälle +## Umbau‑Tutorials für alle Fälle -Bei der Webentwicklung müssen HTML-Dokumente häufig in verschiedene Formate konvertiert werden. Aspose.HTML für .NET vereinfacht diesen Prozess. Unsere Tutorials führen Sie durch die Schritte zur Konvertierung von HTML in PDF, Bildformate und mehr. Egal, ob Sie Berichte erstellen, Inhalte freigeben oder einfach die Benutzererfahrung verbessern möchten, diese Konvertierungs-Tutorials helfen Ihnen dabei. +Bei der Webentwicklung müssen HTML‑Dokumente häufig in verschiedene Formate konvertiert werden. Aspose.HTML für .NET vereinfacht diesen Prozess. Unsere Tutorials führen Sie durch die Schritte zur Konvertierung von HTML in PDF, Bildformate und mehr. Egal, ob Sie Berichte erstellen, Inhalte freigeben oder einfach die Benutzererfahrung verbessern möchten, diese Konvertierungs‑Tutorials helfen Ihnen dabei. ## Erste Schritte mit Aspose.HTML -Sind Sie bereit, loszulegen? Die Tutorials von Aspose.HTML für .NET richten sich sowohl an Anfänger als auch an erfahrene Entwickler. Egal, ob Sie neu bei HTML-Erweiterungen und -Konvertierungen sind oder fortgeschrittene Tipps suchen, unsere Schritt-für-Schritt-Anleitungen sind auf Ihre Bedürfnisse zugeschnitten. +Sind Sie bereit, loszulegen? Die Tutorials von Aspose.HTML für .NET richten sich sowohl an Anfänger als auch an erfahrene Entwickler. Egal, ob Sie neu bei HTML‑Erweiterungen und -Konvertierungen sind oder fortgeschrittene Tipps suchen, unsere Schritt‑für‑Schritt‑Anleitungen sind auf Ihre Bedürfnisse zugeschnitten. ## Warum Aspose.HTML für .NET? -Aspose.HTML für .NET ist nicht nur eine Bibliothek; es verändert die Welt der Webentwicklung grundlegend. Es bietet eine umfassende Palette an Funktionen und Tools, die Ihre HTML-bezogenen Aufgaben rationalisieren. Am Ende dieser Tutorials verfügen Sie über das Wissen und die Fähigkeiten, um das Potenzial von Aspose.HTML für .NET optimal zu nutzen. +Aspose.HTML für .NET ist nicht nur eine Bibliothek; es verändert die Welt der Webentwicklung grundlegend. Es bietet eine umfassende Palette an Funktionen und Tools, die Ihre HTML‑bezogenen Aufgaben rationalisieren. Am Ende dieser Tutorials verfügen Sie über das Wissen und die Fähigkeiten, um das Potenzial von Aspose.HTML für .NET optimal zu nutzen. ## 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 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. -### [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. -### [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. +Erfahren Sie, wie Sie HTML‑Inhalte mit Aspose.HTML für .NET in eine ZIP‑Datei komprimieren und speichern. ### [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. +### [HTML in ZIP konvertieren in C# – Vollständige Schritt‑für‑Schritt‑Anleitung](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +Erfahren Sie, wie Sie HTML‑Inhalte mit Aspose.HTML für .NET in ein ZIP‑Archiv komprimieren und speichern – komplette Schritt‑für‑Schritt‑Anleitung. ## Abschluss diff --git a/html/german/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/german/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..d080d29f6 --- /dev/null +++ b/html/german/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,286 @@ +--- +category: general +date: 2026-03-26 +description: Konvertieren Sie HTML schnell in ZIP mit Aspose.HTML. Erfahren Sie, wie + Sie ZIP aus HTML erstellen, Ressourcen im Speicher verwalten und häufige Fallstricke + vermeiden. +draft: false +keywords: +- convert html to zip +- create zip from html +language: de +og_description: HTML mühelos in ZIP konvertieren. Dieser Leitfaden zeigt Ihnen, wie + Sie mit Aspose.HTML ZIP aus HTML erstellen, inklusive vollständigem Code und Tipps. +og_title: HTML in ZIP konvertieren in C# – Vollständiger Programmierleitfaden +tags: +- C# +- Aspose.HTML +- file compression +title: HTML in ZIP konvertieren in C# – Vollständige Schritt‑für‑Schritt‑Anleitung +url: /de/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML in ZIP konvertieren in C# – Vollständige Schritt‑für‑Schritt‑Anleitung + +Haben Sie jemals **HTML in ZIP konvertieren** müssen, waren sich aber nicht sicher, welche API Sie dafür verwenden sollen? Sie sind nicht allein – viele Entwickler stoßen auf dieses Problem, wenn sie eine Webseite mit ihren Bildern, CSS und Skripten als ein einziges herunterladbares Paket bereitstellen wollen. + +Die gute Nachricht? Mit Aspose.HTML können Sie **ZIP aus HTML erstellen** mit nur wenigen Zeilen Code und erhalten die volle Kontrolle darüber, wo jede Ressource gespeichert wird (Speicher, Festplatte oder ein Stream). In diesem Tutorial führen wir Sie durch den gesamten Prozess, von einem winzigen HTML‑Snippet bis hin zu einer download‑bereiten ZIP‑Datei, und erklären das „Warum“ hinter jeder Entscheidung. + +## Was Sie lernen werden + +- Wie Sie Aspose.HTML in einem .NET‑Projekt einrichten. +- Wie Sie ein HTML‑Dokument und alle verknüpften Ressourcen in einen `MemoryStream` speichern. +- Wie Sie dasselbe HTML mit einem einzigen Aufruf in ein ZIP‑Archiv packen. +- Tipps zum Umgang mit großen Bildern, benutzerdefiniertem Ressourcenspeicher und Fehlerbehandlung. +- Erwartete Konsolenausgabe und wie Sie den ZIP‑Inhalt überprüfen. + +Keine ausgefallenen Voraussetzungen – nur eine aktuelle .NET‑Version (Core 3.1+ oder .NET 6) und das Aspose.HTML‑NuGet‑Paket. Los geht’s. + +![convert html to zip illustration](convert-html-to-zip.png){alt="Beispiel für HTML‑zu‑ZIP‑Konvertierung"} + +## Voraussetzungen + +| Anforderung | Warum es wichtig ist | +|-------------|----------------------| +| .NET 6 SDK (oder neuer) | Die neueste Runtime bietet die effizienteste `MemoryStream`‑Verarbeitung. | +| Aspose.HTML for .NET (NuGet) | Stellt die Klassen `HTMLDocument`, `HtmlSaveOptions` und `ZipOutputStorage` bereit, die wir verwenden. | +| Grundkenntnisse in C# | Sie müssen `using`‑Anweisungen und Streams verstehen. | + +Installieren Sie die Bibliothek mit: + +```bash +dotnet add package Aspose.HTML +``` + +Jetzt, wo das Fundament steht, können wir mit der Konvertierung von HTML zu ZIP beginnen. + +## Schritt 1: Ein einfaches HTML‑Dokument erstellen + +Zuerst benötigen wir eine Instanz von `HTMLDocument`. In einem echten Projekt würden Sie wahrscheinlich eine Datei von der Festplatte laden, aber für die Demo betten wir eine winzige Seite ein, die ein lokales Bild namens `logo.png` referenziert. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*Warum das wichtig ist:* Durch die Erstellung des Dokuments im Code vermeiden wir externe Dateiabhängigkeiten, wodurch das Beispiel vollständig eigenständig ist – ideal für KI‑Zitate und schnelles Testen. + +## Schritt 2: Das HTML und seine Ressourcen in einen MemoryStream speichern + +Manchmal möchte man überhaupt nicht auf die Festplatte schreiben – vielleicht senden Sie das ZIP über eine Web‑API. Der `ResourceHandler` ermöglicht es, jede verknüpfte Datei (Bilder, CSS usw.) in einen `MemoryStream` statt ins Dateisystem zu leiten. + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**Was Sie sehen:** Die Konsole gibt die Byte‑Länge des erzeugten HTML aus. Da wir einen `MemoryStream` verwendet haben, berührt nichts die Festplatte, was bedeutet, dass Sie **HTML in ZIP konvertieren** vollständig im Speicher durchführen können, wenn Sie möchten. + +### Pro‑Tipp + +Enthält Ihr HTML große Bilder, sollten Sie `HandleResource` überschreiben, um den Stream on‑the‑fly zu komprimieren. So bleibt das endgültige ZIP schlank. + +## Schritt 3: Das HTML und seine Ressourcen in ein ZIP‑Archiv packen + +Aspose.HTML liefert die praktische Klasse `ZipOutputStorage`, die automatisch die Haupt‑HTML‑Datei und alle referenzierten Ressourcen in ein einzelnes ZIP‑File bündelt. So verwenden Sie sie: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**Ergebnis:** `output.zip` enthält nun: + +- `index.html` (das von uns erstellte HTML) +- `logo.png` (das im Markup referenzierte Bild) + +Sie können das ZIP mit jedem Archiv‑Manager öffnen und sehen, dass das HTML weiterhin auf `logo.png` verweist, wodurch das ursprüngliche Layout erhalten bleibt. + +### Sonderfall: Fehlende Ressourcen + +Kann eine Ressource nicht gefunden werden, wirft Aspose.HTML eine `ResourceNotFoundException`. Umschließen Sie den `Save`‑Aufruf mit einem `try/catch`‑Block, wenn Sie mit benutzergeneriertem HTML arbeiten, das externe URLs referenzieren könnte. + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## Schritt 4: Den ZIP‑Inhalt programmgesteuert überprüfen (optional) + +Wenn Sie einen Web‑Service bauen, möchten Sie vielleicht bestätigen, dass das ZIP alles enthält, bevor Sie es weiterleiten. Der .NET‑Namespace `System.IO.Compression` lässt Sie ohne Extraktion auf die Festplatte hineinschauen. + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +Sie sollten eine Ausgabe ähnlich der folgenden sehen: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +Diese abschließende Prüfung gibt Ihnen die Sicherheit, dass der Schritt **ZIP aus HTML erstellen** erfolgreich war. + +## Häufige Stolperfallen & wie man sie vermeidet + +| Symptom | Wahrscheinliche Ursache | Lösung | +|---------|--------------------------|--------| +| ZIP ist leer | `OutputStorage` nicht gesetzt oder `HtmlSaveOptions` weggelassen | Stellen Sie sicher, dass `OutputStorage = zipStorage` und `zipSaveOptions` an `Save` übergeben werden. | +| Bilder sind beim Öffnen von `index.html` kaputt | Ressourcenersteller gab einen neuen leeren Stream zurück | Geben Sie einen Stream zurück, der tatsächlich die Bildbytes enthält, oder lassen Sie Aspose das automatisch erledigen. | +| Out‑of‑Memory‑Exception bei großen Seiten | Alles in einem einzigen `MemoryStream` ohne Flush speichern | Verwenden Sie `FileStream` für große Ressourcen oder streamen Sie direkt zur HTTP‑Antwort. | +| Falsche Dateierweiterung | Als `.html` statt `.zip` gespeichert | Prüfen Sie, dass der Pfad des `FileStream` mit `.zip` endet. | + +## Vollständiges funktionierendes Beispiel + +Unten finden Sie das komplette, sofort ausführbare Programm. Kopieren Sie es in ein Konsolen‑Projekt, fügen Sie das Aspose.HTML‑NuGet‑Paket hinzu und führen Sie es aus. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Beim Ausführen des Programms erhalten Sie eine Konsolenausgabe ähnlich der folgenden: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +Sie haben nun eine **HTML‑zu‑ZIP‑Pipeline**, die Sie in Web‑APIs, Hintergrundjobs oder Desktop‑Tools einbetten können. + +## Fazit + +Wir haben alles behandelt, was Sie benötigen, um **HTML in ZIP zu konvertieren** mit Aspose.HTML: das Dokument erstellen, Ressourcen in den Speicher leiten, alles in ein ZIP packen und sogar das Ergebnis programmgesteuert prüfen. Der Ansatz ist leichtgewichtig, läuft komplett im Prozess und gibt Ihnen feinkörnige Kontrolle darüber, wie jede Datei gespeichert wird. + +Bereit für die nächste Herausforderung? Versuchen Sie, `ZipOutputStorage` durch einen benutzerdefinierten `Stream` zu ersetzen, der direkt in eine HTTP‑Antwort schreibt, oder experimentieren Sie mit der Kompression von Bildern on‑the‑fly, um das endgültige Archiv zu verkleinern. Diese Erweiterungen ermöglichen es Ihnen, **ZIP aus HTML erstellen** in noch anspruchsvolleren Szenarien. + +Haben Sie Fragen oder möchten teilen, wie Sie dieses Muster angepasst haben? Hinterlassen Sie einen Kommentar unten, und 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/german/net/rendering-html-documents/_index.md b/html/german/net/rendering-html-documents/_index.md index ad113650f..3b792463c 100644 --- a/html/german/net/rendering-html-documents/_index.md +++ b/html/german/net/rendering-html-documents/_index.md @@ -45,6 +45,7 @@ Erfahren Sie, wie Sie mit Aspose.HTML für .NET arbeiten: HTML bearbeiten, in ve ### [HTML als PNG rendern – Vollständiger C#-Leitfaden](./how-to-render-html-as-png-complete-c-guide/) Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML in PNG konvertieren, inklusive vollständigem C#-Beispiel und Schritt‑für‑Schritt‑Anleitung. + ### [Wie Sie Aspose zum Rendern von HTML nach PNG verwenden – Schritt‑für‑Schritt‑Anleitung](./how-to-use-aspose-to-render-html-to-png-step-by-step-guide/) Erfahren Sie, wie Sie mit Aspose.HTML HTML‑Inhalte in PNG‑Bilder umwandeln – detaillierte Schritt‑für‑Schritt‑Anleitung. @@ -53,6 +54,10 @@ Erfahren Sie, wie Sie HTML‑Inhalte mit Aspose in PNG‑Bilder umwandeln – ei ### [PNG aus HTML erstellen – Vollständiger C#-Rendering-Leitfaden](./create-png-from-html-full-c-rendering-guide/) Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML in PNG konvertieren – ein umfassender Leitfaden für C#-Entwickler. + +### [HTML in PNG rendern in C# – Schritt‑für‑Schritt‑Leitfaden](./how-to-render-html-to-png-in-c-step-by-step-guide/) +Erfahren Sie, wie Sie HTML mit Aspose.HTML für .NET in PNG konvertieren – ein detaillierter Schritt‑für‑Schritt‑Leitfaden für C#. + ### [Rendern Sie EPUB als XPS in .NET mit Aspose.HTML](./render-epub-as-xps/) Erfahren Sie in diesem umfassenden Tutorial, wie Sie mit Aspose.HTML für .NET HTML-Dokumente erstellen und rendern. Tauchen Sie ein in die Welt der HTML-Manipulation, des Web Scraping und mehr. diff --git a/html/german/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/german/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..a277b7692 --- /dev/null +++ b/html/german/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-03-26 +description: Wie man HTML schnell und zuverlässig rendert. Lernen Sie, HTML in PNG + zu konvertieren, HTML als PNG zu exportieren, Schriftstil anzuwenden und ein HTML‑Dokument + mit Aspose.Html zu laden. +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: de +og_description: Wie man HTML in C# mit Aspose.Html rendert. Dieser Leitfaden zeigt + Ihnen, wie Sie HTML in PNG konvertieren, HTML als PNG exportieren, Schriftstil anwenden + und ein HTML‑Dokument laden. +og_title: Wie man HTML in PNG in C# rendert – Komplettes Tutorial +tags: +- C# +- Aspose.Html +- Image Rendering +title: Wie man HTML in PNG in C# rendert – Schritt‑für‑Schritt‑Anleitung +url: /de/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man HTML in PNG in C# rendert – Schritt‑für‑Schritt‑Anleitung + +Haben Sie sich schon einmal gefragt, **wie man HTML** in ein gestochen scharfes PNG‑Bild umwandelt, ohne sich mit Browser‑Automatisierung herumzuschlagen? Sie sind nicht allein. Viele Entwickler müssen *HTML zu PNG* für E‑Mail‑Thumbnails, Bericht‑Snapshots oder PDF‑Vorschauen konvertieren, und die üblichen Headless‑Browser‑Tricks wirken schwerfällig. + +In diesem Tutorial führen wir Sie durch eine saubere, bibliotheksbasierte Lösung, die **ein HTML‑Dokument lädt**, Ihnen **die Schriftart‑Stile** und weitere Rendering‑Anpassungen ermöglicht und schließlich **HTML als PNG exportiert**. Am Ende haben Sie ein sofort ausführbares C#‑Programm, das genau das tut, plus ein paar Profi‑Tipps, um häufige Stolperfallen zu vermeiden. + +## Voraussetzungen + +- .NET 6.0 oder höher (der Code funktioniert auch mit .NET Core und .NET Framework) +- Aspose.HTML für .NET NuGet‑Paket (`Aspose.Html` und `Aspose.Html.Rendering.Image`) +- Eine Beispiel‑HTML‑Datei (`sample.html`), die Sie an einem referenzierbaren Ort ablegen +- Grundlegende Kenntnisse in C# und Visual Studio (oder einer anderen IDE Ihrer Wahl) + +> **Pro‑Tipp:** Wenn Sie auf einem CI‑Server arbeiten, fügen Sie die Aspose.HTML‑DLLs Ihrem Projekt‑`packages`‑Ordner hinzu, damit der Build eigenständig bleibt. + +## Schritt 1 – Laden des HTML‑Dokuments + +Das Erste, was Sie tun müssen, ist das **Laden des HTML‑Dokuments** in ein `HTMLDocument`‑Objekt. Aspose.HTML liest die Datei, löst relative Ressourcen auf und erstellt ein DOM, das Sie manipulieren können. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **Warum das wichtig ist:** Das Laden des Dokuments über Aspose stellt sicher, dass externe CSS‑Dateien, Bilder und Schriftarten genau so verarbeitet werden wie in einem Browser – das ist entscheidend, wenn Sie später **HTML zu PNG konvertieren**. + +## Schritt 2 – Rendering‑Optionen konfigurieren (Schriftart‑Stil & mehr anwenden) + +Jetzt richten wir `ImageRenderingOptions` ein. Hier können Sie **Schriftart‑Stil** anwenden, Antialiasing wählen und die Ausgabedimensionen festlegen. Das Anpassen dieser Einstellungen kann die visuelle Treue des finalen PNG erheblich verbessern. + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### Was die Optionen tatsächlich bewirken + +| Option | Wirkung | Wann ändern | +|--------|---------|-------------| +| `UseAntialiasing` | Glättet gezackte Kanten bei Formen und Text | Für hochauflösende Ausgaben | +| `TextOptions.UseHinting` | Verbessert die Lesbarkeit kleiner Schriften | Beim Rendern von UI‑intensiven Seiten | +| `Font.Style / Size / Family` | Erzwingt eine bestimmte Schrift, unabhängig vom CSS der Seite | Nützlich für Corporate Branding oder wenn die Originalschrift nicht verfügbar ist | +| `Width` / `Height` | Legt die Canvas‑Größe des PNG fest | An die Viewport‑Größe anpassen, die Sie im Browser sehen würden | + +## Schritt 3 – Das Dokument in ein PNG‑Bild rendern (HTML zu PNG konvertieren) + +Mit dem Dokument und den Optionen bereit, übergeben wir alles an `ImageRenderer`. Diese Klasse streamt das gerenderte Bitmap direkt in eine Datei und liefert uns eine **HTML‑zu‑PNG‑Konvertierung**, die sowohl schnell als auch speichereffizient ist. + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **Randfall:** Wenn Ihr HTML externe Bilder per HTTP referenziert, stellen Sie sicher, dass der Server von der Maschine, die diesen Code ausführt, erreichbar ist. Andernfalls lässt der Renderer Platzhalter zurück. + +### Erwartete Ausgabe + +Nachdem das Programm beendet ist, sollten Sie eine Datei `rendered.png` im selben Verzeichnis wie `sample.html` sehen. Öffnen Sie sie mit einem Bildbetrachter – Sie erhalten einen pixelgenauen Schnappschuss der HTML‑Seite, komplett mit dem **angewendeten Schriftart‑Stil** und antialiasierten Grafiken. + +![Beispielausgabe für HTML-Rendern](rendered.png "HTML rendern – PNG-Ergebnis der Beispiel-HTML-Seite") + +*(Der Alt‑Text enthält das Haupt‑Keyword für SEO.)* + +## Schritt 4 – Ergebnis programmgesteuert verifizieren (optional) + +Manchmal muss man bestätigen, dass das PNG korrekt erstellt wurde, besonders in automatisierten Pipelines. Ein schneller Byte‑Größen‑Check oder das Laden des Bildes mit `System.Drawing` gibt Ihnen Sicherheit. + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## Häufige Fragen & Stolperfallen + +- **Was, wenn ich ein anderes Bildformat benötige?** + `ImageRenderer` unterstützt auch JPEG, BMP und GIF. Ändern Sie einfach die Dateierweiterung und setzen Sie optional `ImageFormat` in `ImageRenderingOptions`. + +- **Kann ich nur ein bestimmtes HTML‑Element rendern?** + Ja. Verwenden Sie `htmlDoc.GetElementById("myDiv")` und übergeben Sie dieses Element an `ImageRenderer.Render(element)`. + +- **Muss ich die Arial‑Schrift mit meiner App ausliefern?** + Nicht zwingend. Wenn die Zielmaschine bereits Arial hat, verwendet der Renderer diese. Andernfalls können Sie eine benutzerdefinierte Web‑Font über CSS `@font-face` in Ihrem HTML einbetten. + +- **Wie schneidet das im Vergleich zu headless Chrome ab?** + Aspose.HTML ist eine rein verwaltete .NET‑Bibliothek, sodass keine externen Browser, Treiber oder schwere Container nötig sind. Sie ist in der Regel schneller für Batch‑Jobs, obwohl Chrome CSS3‑Animationen genauer wiedergeben kann. + +## Fazit + +Wir haben gezeigt, **wie man HTML** in ein PNG‑Bild mit Aspose.HTML für .NET rendert, indem wir **HTML‑Dokument laden**, **Schriftart‑Stil anwenden** und **HTML als PNG exportieren** – alles mit nur wenigen Zeilen C#‑Code. Das vollständige, ausführbare Beispiel finden Sie in den Code‑Snippets oben, und Sie können es jetzt in ein Konsolen‑Projekt kopieren und ausführen. + +### Was kommt als Nächstes? + +- Experimentieren Sie mit verschiedenen `Width`/`Height`‑Werten, um Thumbnails zu erstellen. +- Wechseln Sie zum JPEG‑Format für kleinere Dateigrößen. +- Kombinieren Sie mehrere gerenderte Seiten zu einem PDF mit `PdfRenderer`. +- Erkunden Sie CSS‑Media‑Queries (`@media print`), um die gerenderte Ansicht anzupassen. + +Passen Sie die Rendering‑Optionen gern an, tauschen Sie Schriftarten aus oder füttern Sie das System mit dynamisch generiertem HTML. Wenn Sie auf ein Problem stoßen, hinterlassen Sie unten einen Kommentar – 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/greek/net/html-extensions-and-conversions/_index.md b/html/greek/net/html-extensions-and-conversions/_index.md index 013b0ec4b..80597ab21 100644 --- a/html/greek/net/html-extensions-and-conversions/_index.md +++ b/html/greek/net/html-extensions-and-conversions/_index.md @@ -73,6 +73,8 @@ url: /el/net/html-extensions-and-conversions/ Μάθετε πώς να αποθηκεύετε HTML σε αρχείο ZIP με C# και Aspose.HTML. ### [Αποθήκευση HTML σε ZIP σε C# – Πλήρες Παράδειγμα Εντός Μνήμης](./save-html-to-zip-in-c-complete-in-memory-example/) Μάθετε πώς να αποθηκεύετε HTML σε αρχείο ZIP με C# χρησιμοποιώντας πλήρες παράδειγμα εντός μνήμης. +### [Μετατροπή HTML σε ZIP σε C# – Πλήρης Οδηγός Βήμα‑Βήμα](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +Μάθετε πώς να μετατρέπετε HTML σε αρχείο ZIP με C# και Aspose.HTML για .NET, βήμα‑βήμα με παραδείγματα κώδικα. ## Σύναψη diff --git a/html/greek/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/greek/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..b3c41c03d --- /dev/null +++ b/html/greek/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,286 @@ +--- +category: general +date: 2026-03-26 +description: Μετατρέψτε γρήγορα το HTML σε ZIP με το Aspose.HTML. Μάθετε πώς να δημιουργείτε + ZIP από HTML, να διαχειρίζεστε πόρους στη μνήμη και να αποφεύγετε κοινά προβλήματα. +draft: false +keywords: +- convert html to zip +- create zip from html +language: el +og_description: Μετατρέψτε το HTML σε ZIP χωρίς κόπο. Αυτός ο οδηγός σας δείχνει πώς + να δημιουργήσετε ZIP από HTML χρησιμοποιώντας το Aspose.HTML, με πλήρη κώδικα και + συμβουλές. +og_title: Μετατροπή HTML σε ZIP σε C# – Πλήρης Οδηγός Προγραμματισμού +tags: +- C# +- Aspose.HTML +- file compression +title: Μετατροπή HTML σε ZIP σε C# – Πλήρης Οδηγός Βήμα‑βήμα +url: /el/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Μετατροπή HTML σε ZIP σε C# – Πλήρης Οδηγός Βήμα‑βήμα + +Έχετε ποτέ χρειαστεί να **μετατρέψετε HTML σε ZIP** αλλά δεν ήξερες ποιο API να χρησιμοποιήσεις; Δεν είστε οι μόνοι—πολλοί προγραμματιστές αντιμετωπίζουν αυτό το πρόβλημα όταν προσπαθούν να στείλουν μια ιστοσελίδα με τις εικόνες, το CSS και τα scripts της ως ένα ενιαίο πακέτο προς λήψη. + +Τα καλά νέα; Με το Aspose.HTML μπορείτε να **δημιουργήσετε ZIP από HTML** με λίγες μόνο γραμμές, και θα έχετε πλήρη έλεγχο στο πού αποθηκεύεται κάθε πόρος (μνήμη, δίσκος ή ροή). Σε αυτό το tutorial θα περάσουμε από τη διαδικασία από ένα μικρό απόσπασμα HTML μέχρι ένα έτοιμο για λήψη αρχείο ZIP, και θα εξηγήσουμε το «γιατί» πίσω από κάθε επιλογή. + +## Τι Θα Μάθετε + +- Πώς να ρυθμίσετε το Aspose.HTML σε ένα έργο .NET. +- Πώς να αποθηκεύσετε ένα έγγραφο HTML και όλους τους συνδεδεμένους πόρους του σε ένα `MemoryStream`. +- Πώς να συσκευάσετε το ίδιο HTML σε ένα αρχείο ZIP με μία κλήση. +- Συμβουλές για τη διαχείριση μεγάλων εικόνων, προσαρμοσμένη αποθήκευση πόρων και διαχείριση σφαλμάτων. +- Αναμενόμενη έξοδος κονσόλας και πώς να επαληθεύσετε τα περιεχόμενα του ZIP. + +Δεν απαιτούνται περίπλοκες προαπαιτήσεις—μόνο μια πρόσφατη έκδοση του .NET (Core 3.1+ ή .NET 6) και το πακέτο NuGet Aspose.HTML. Ας ξεκινήσουμε. + +![convert html to zip illustration](convert-html-to-zip.png){alt="παράδειγμα μετατροπής html σε zip"} + +## Προαπαιτούμενα + +| Απαίτηση | Γιατί είναι σημαντικό | +|----------|-----------------------| +| .NET 6 SDK (or later) | Το πιο πρόσφατο runtime σας παρέχει την πιο αποδοτική διαχείριση του `MemoryStream`. | +| Aspose.HTML for .NET (NuGet) | Παρέχει τις κλάσεις `HTMLDocument`, `HtmlSaveOptions` και `ZipOutputStorage` που θα χρησιμοποιήσουμε. | +| Basic C# knowledge | Θα χρειαστεί να κατανοήσετε τις δηλώσεις `using` και τις ροές. | + +Install the library with: + +```bash +dotnet add package Aspose.HTML +``` + +Τώρα που έχουν τεθεί τα θεμέλια, ας ξεκινήσουμε τη μετατροπή HTML σε ZIP. + +## Βήμα 1: Δημιουργία Απλού Εγγράφου HTML + +Πρώτα χρειάζεται μια παρουσία του `HTMLDocument`. Σε ένα πραγματικό έργο πιθανότατα θα φορτώνατε ένα αρχείο από το δίσκο, αλλά για την επίδειξη θα ενσωματώσουμε μια μικρή σελίδα που αναφέρεται σε μια τοπική εικόνα με όνομα `logo.png`. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*Γιατί είναι σημαντικό:* Με την κατασκευή του εγγράφου στον κώδικα αποφεύγουμε εξωτερικές εξαρτήσεις αρχείων, κάνοντας το παράδειγμα πλήρως αυτόνομο—ιδανικό για παραπομπές AI και γρήγορη δοκιμή. + +## Βήμα 2: Αποθήκευση του HTML και των Πόρων του σε MemoryStream + +Μερικές φορές δεν θέλετε να γράψετε στο δίσκο—ίσως στέλνετε το ZIP μέσω ενός web API. Ο `ResourceHandler` σας επιτρέπει να κατευθύνετε κάθε συνδεδεμένο αρχείο (εικόνες, CSS, κλπ.) σε ένα `MemoryStream` αντί για το σύστημα αρχείων. + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**Τι βλέπετε:** Η κονσόλα εκτυπώνει το μήκος σε bytes του παραγόμενου HTML. Επειδή χρησιμοποιήσαμε `MemoryStream`, τίποτα δεν αγγίζει το δίσκο, πράγμα που σημαίνει ότι μπορείτε τώρα να **μετατρέψετε HTML σε ZIP** εξ ολοκλήρου στη μνήμη αν το επιθυμείτε. + +### Συμβουλή επαγγελματία + +Αν το HTML σας περιέχει μεγάλες εικόνες, σκεφτείτε να υπερκαλύψετε τη μέθοδο `HandleResource` για να συμπιέζετε τη ροή εν κινήσει. Με αυτόν τον τρόπο το τελικό ZIP παραμένει ελαφρύ. + +## Βήμα 3: Συσκευασία του HTML και των Πόρων του σε Αρχείο ZIP + +Το Aspose.HTML παρέχει την πρακτική κλάση `ZipOutputStorage` που αυτόματα ομαδοποιεί το κύριο αρχείο HTML και κάθε αναφερόμενο πόρο σε ένα ενιαίο αρχείο ZIP. Δείτε πώς να το χρησιμοποιήσετε: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**Αποτέλεσμα:** Το `output.zip` περιέχει τώρα: + +- `index.html` (το HTML που δημιουργήσαμε) +- `logo.png` (η εικόνα που αναφέρεται στο markup) + +Μπορείτε να ανοίξετε το ZIP με οποιονδήποτε διαχειριστή αρχείων και να δείτε ότι το HTML εξακολουθεί να δείχνει στο `logo.png`, διατηρώντας την αρχική διάταξη της σελίδας. + +### Ακραία περίπτωση: Ελλιπείς πόροι + +Αν δεν βρεθεί ένας πόρος, το Aspose.HTML ρίχνει μια `ResourceNotFoundException`. Τυλίξτε την κλήση `Save` σε ένα μπλοκ `try/catch` εάν διαχειρίζεστε HTML που δημιουργείται από χρήστες και μπορεί να αναφέρεται σε εξωτερικά URLs. + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## Βήμα 4: Επαλήθευση των Περιεχομένων του ZIP Προγραμματιστικά (Προαιρετικό) + +Αν δημιουργείτε μια web υπηρεσία, ίσως θέλετε να επιβεβαιώσετε ότι το ZIP περιέχει όλα πριν το στείλετε παρακάτω. Ο χώρος ονομάτων .NET `System.IO.Compression` σας επιτρέπει να ρίξετε μια ματιά μέσα χωρίς να εξάγετε στο δίσκο. + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +Θα πρέπει να δείτε έξοδο παρόμοια με: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +Αυτός ο τελικός έλεγχος σας δίνει εμπιστοσύνη ότι το βήμα **δημιουργίας ZIP από HTML** ολοκληρώθηκε με επιτυχία. + +## Συνηθισμένα Πιθανά Σφάλματα & Πώς να τα Αποφύγετε + +| Συμπτωμα | Πιθανή αιτία | Διόρθωση | +|----------|--------------|----------| +| Το ZIP είναι κενό | `OutputStorage` δεν έχει οριστεί ή λείπουν οι `HtmlSaveOptions` | Βεβαιωθείτε ότι `OutputStorage = zipStorage` και περάστε `zipSaveOptions` στη `Save`. | +| Οι εικόνες εμφανίζονται σπασμένες όταν ανοίγετε το `index.html` | Ο διαχειριστής πόρων επέστρεψε μια νέα κενή ροή | Επιστρέψτε μια ροή που περιέχει πραγματικά τα bytes της εικόνας, ή αφήστε το Aspose να το διαχειριστεί αυτόματα. | +| Εξαίρεση Out‑of‑memory σε μεγάλες σελίδες | Αποθήκευση όλων σε ένα μόνο `MemoryStream` χωρίς εκκαθάριση | Χρησιμοποιήστε `FileStream` για μεγάλους πόρους ή ροή απευθείας στην HTTP απάντηση. | +| Λάθος επέκταση αρχείου | Αποθηκεύτηκε ως `.html` αντί για `.zip` | Επαληθεύστε ότι το μονοπάτι του `FileStream` τελειώνει με `.zip`. | + +## Πλήρες Παράδειγμα Λειτουργίας + +Παρακάτω είναι το πλήρες, έτοιμο‑για‑εκτέλεση πρόγραμμα. Αντιγράψτε‑και‑επικολλήστε το σε ένα έργο κονσόλας, προσθέστε το πακέτο NuGet Aspose.HTML και τρέξτε. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Η εκτέλεση του προγράμματος παράγει έξοδο κονσόλας παρόμοια με: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +Τώρα έχετε μια **μετατροπή HTML σε ZIP** ροή εργασίας που μπορείτε να ενσωματώσετε σε web APIs, εργασίες παρασκηνίου ή εργαλεία επιφάνειας εργασίας. + +## Συμπέρασμα + +Καλύψαμε όλα όσα χρειάζεστε για να **μετατρέψετε HTML σε ZIP** χρησιμοποιώντας το Aspose.HTML: δημιουργία του εγγράφου, δρομολόγηση των πόρων στη μνήμη, συσκευασία όλων σε ZIP, και ακόμη επαλήθευση του αποτελέσματος προγραμματιστικά. Η προσέγγιση είναι ελαφριά, λειτουργεί εξ ολοκλήρου εντός της διεργασίας, και σας δίνει λεπτομερή έλεγχο στο πώς αποθηκεύεται κάθε αρχείο. + +Έτοιμοι για την επόμενη πρόκληση; Δοκιμάστε να αντικαταστήσετε το `ZipOutputStorage` με ένα προσαρμοσμένο `Stream` που γράφει απευθείας σε μια HTTP απάντηση, ή πειραματιστείτε με τη συμπίεση εικόνων εν κινήσει για να μειώσετε το τελικό αρχείο. Αυτές οι επεκτάσεις θα σας επιτρέψουν να **δημιουργήσετε ZIP από 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/rendering-html-documents/_index.md b/html/greek/net/rendering-html-documents/_index.md index f874e075c..d90bf34ad 100644 --- a/html/greek/net/rendering-html-documents/_index.md +++ b/html/greek/net/rendering-html-documents/_index.md @@ -53,13 +53,15 @@ url: /el/net/rendering-html-documents/ ### [Απόδοση SVG Doc ως PNG σε .NET με Aspose.HTML](./render-svg-doc-as-png/) Ξεκλειδώστε τη δύναμη του Aspose.HTML για .NET! Μάθετε πώς να αποδίδετε το Έγγραφο SVG ως PNG χωρίς κόπο. Ανατρέξτε σε παραδείγματα βήμα προς βήμα και συχνές ερωτήσεις. Ξεκινήστε τώρα! ### [Πώς να αποδώσετε HTML ως PNG – Πλήρης οδηγός C#](./how-to-render-html-as-png-complete-c-guide/) -Μάθετε πώς να μετατρέψετε HTML σε PNG χρησιμοποιώντας C# και το Aspose.HTML για .NET σε αυτό το ολοκληρωμένο σεμινάριο! +Μάθετε πώς να μετατρέψετε HTML σε PNG χρησιμοποιώντας C# και το Aspose.HTML για .NET σε αυτόν τον πλήρη οδηγό! ### [Πώς να χρησιμοποιήσετε το Aspose για απόδοση HTML σε PNG – Οδηγός βήμα‑βήμα](./how-to-use-aspose-to-render-html-to-png-step-by-step-guide/) Μάθετε πώς να μετατρέψετε HTML σε PNG χρησιμοποιώντας το Aspose.HTML για .NET με αυτόν τον αναλυτικό οδηγό βήμα‑βήμα. ### [Πώς να αποδώσετε HTML σε PNG με το Aspose – Πλήρης οδηγός](./how-to-render-html-to-png-with-aspose-complete-guide/) Μάθετε πώς να μετατρέψετε HTML σε PNG χρησιμοποιώντας το Aspose.HTML για .NET σε αυτόν τον πλήρη οδηγό. ### [Δημιουργία PNG από HTML – Πλήρης Οδηγός Απόδοσης C#](./create-png-from-html-full-c-rendering-guide/) Μάθετε πώς να δημιουργήσετε PNG από HTML χρησιμοποιώντας το Aspose.HTML για .NET με πλήρη οδηγό C#. +### [Πώς να αποδώσετε HTML σε PNG σε C# – Οδηγός βήμα‑βήμα](./how-to-render-html-to-png-in-c-step-by-step-guide/) +Μάθετε πώς να μετατρέψετε HTML σε PNG με C# και Aspose.HTML για .NET σε αυτόν τον αναλυτικό οδηγό βήμα‑βήμα! {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/greek/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/greek/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..fb58e8e6d --- /dev/null +++ b/html/greek/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-03-26 +description: Πώς να αποδίδετε HTML γρήγορα και αξιόπιστα. Μάθετε να μετατρέπετε HTML + σε PNG, να εξάγετε HTML ως PNG, να εφαρμόζετε στυλ γραμματοσειράς και να φορτώνετε + έγγραφο HTML με το Aspose.Html. +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: el +og_description: Πώς να αποδώσετε HTML σε C# χρησιμοποιώντας το Aspose.Html. Αυτός + ο οδηγός σας δείχνει πώς να μετατρέψετε HTML σε PNG, να εξάγετε HTML ως PNG, να + εφαρμόσετε στυλ γραμματοσειράς και να φορτώσετε έγγραφο HTML. +og_title: Πώς να αποδώσετε HTML σε PNG με C# – Πλήρης οδηγός +tags: +- C# +- Aspose.Html +- Image Rendering +title: Πώς να αποδώσετε HTML σε PNG σε C# – Οδηγός βήμα‑προς‑βήμα +url: /el/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να αποδώσετε HTML σε PNG σε C# – Οδηγός βήμα‑βήμα + +Έχετε αναρωτηθεί ποτέ **πώς να αποδώσετε HTML** σε μια καθαρή εικόνα PNG χωρίς να παλεύετε με αυτοματοποίηση προγράμματος περιήγησης; Δεν είστε μόνοι. Πολλοί προγραμματιστές χρειάζονται να *μετατρέψουν HTML σε PNG* για μικρογραφίες email, στιγμιότυπα αναφορών ή προεπισκοπήσεις PDF, και τα συνηθισμένα κόλπα με headless‑browser φαίνονται βαρύ. + +Σε αυτό το tutorial θα περάσουμε από μια καθαρή, βιβλιοθήκη‑βασισμένη λύση που **φορτώνει ένα έγγραφο HTML**, σας επιτρέπει να **εφαρμόσετε στυλ γραμματοσειράς** και άλλες ρυθμίσεις απόδοσης, και τελικά **εξάγει το HTML ως PNG**. Στο τέλος θα έχετε ένα έτοιμο‑για‑εκτέλεση πρόγραμμα C# που κάνει ακριβώς αυτό, μαζί με μερικές επαγγελματικές συμβουλές για να αποφύγετε κοινά προβλήματα. + +## Προαπαιτούμενα + +- .NET 6.0 ή νεότερο (ο κώδικας λειτουργεί επίσης σε .NET Core και .NET Framework) +- Πακέτο NuGet Aspose.HTML for .NET (`Aspose.Html` και `Aspose.Html.Rendering.Image`) +- Ένα δείγμα αρχείου HTML (`sample.html`) τοποθετημένο κάπου που μπορείτε να αναφερθείτε +- Βασική εξοικείωση με C# και Visual Studio (ή οποιοδήποτε IDE προτιμάτε) + +> **Pro tip:** Αν βρίσκεστε σε διακομιστή CI, προσθέστε τα DLL του Aspose.HTML στο φάκελο `packages` του έργου σας ώστε η κατασκευή να παραμένει αυτόνομη. + +## Βήμα 1 – Φόρτωση του εγγράφου HTML + +Το πρώτο πράγμα που πρέπει να κάνετε είναι **να φορτώσετε το έγγραφο HTML** σε ένα αντικείμενο `HTMLDocument`. Το Aspose.HTML διαβάζει το αρχείο, επιλύει τους σχετικούς πόρους και δημιουργεί ένα DOM που μπορείτε να χειριστείτε. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **Why this matters:** Η φόρτωση του εγγράφου μέσω Aspose διασφαλίζει ότι τα εξωτερικά CSS, οι εικόνες και οι γραμματοσειρές επεξεργάζονται με τον ίδιο τρόπο όπως θα έκανε ένας φυλλομετρητής, κάτι που είναι απαραίτητο όταν αργότερα **μετατρέψετε HTML σε PNG**. + +## Βήμα 2 – Διαμόρφωση επιλογών απόδοσης (Εφαρμογή στυλ γραμματοσειράς & Περισσότερα) + +Τώρα ρυθμίζουμε το `ImageRenderingOptions`. Εδώ είναι που **εφαρμόζετε στυλ γραμματοσειράς**, επιλέγετε antialiasing και ορίζετε τις διαστάσεις εξόδου. Η ρύθμιση αυτών των παραμέτρων μπορεί να βελτιώσει δραματικά την οπτική πιστότητα του τελικού PNG. + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### Τι κάνουν πραγματικά οι επιλογές + +| Επιλογή | Αποτέλεσμα | Πότε να αλλάξετε | +|--------|------------|------------------| +| `UseAntialiasing` | Εξομαλύνει τα σκαλισμένα άκρα σε σχήματα και κείμενο | Για εξόδους υψηλής ανάλυσης | +| `TextOptions.UseHinting` | Βελτιώνει την αναγνωσιμότητα μικρών γραμματοσειρών | Κατά την απόδοση σελίδων με έντονο UI | +| `Font.Style / Size / Family` | Επιβάλλει μια συγκεκριμένη γραμματοσειρά ανεξάρτητα από το CSS της σελίδας | Χρήσιμο για εταιρική ταυτότητα ή όταν η αρχική γραμματοσειρά δεν είναι διαθέσιμη | +| `Width` / `Height` | Ορίζει το μέγεθος του καμβά του PNG | Ταιριάζει με το viewport που θα δείτε σε πρόγραμμα περιήγησης | + +## Βήμα 3 – Απόδοση του εγγράφου σε εικόνα PNG (Μετατροπή HTML σε PNG) + +Με το έγγραφο και τις επιλογές έτοιμες, παραδίδουμε τα πάντα στο `ImageRenderer`. Αυτή η κλάση ρέει το αποδομένο bitmap κατευθείαν σε αρχείο, δίνοντάς μας μια λειτουργία **μετατροπής HTML σε PNG** που είναι γρήγορη και αποδοτική σε μνήμη. + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **Edge case:** Αν το HTML σας αναφέρει εξωτερικές εικόνες μέσω HTTP, βεβαιωθείτε ότι ο διακομιστής είναι προσβάσιμος από τη μηχανή που εκτελεί αυτόν τον κώδικα. Διαφορετικά ο renderer θα αφήσει placeholders. + +### Αναμενόμενο αποτέλεσμα + +Μετά την ολοκλήρωση του προγράμματος, θα πρέπει να δείτε ένα αρχείο `rendered.png` στον ίδιο φάκελο με το `sample.html`. Ανοίξτε το με οποιονδήποτε προβολέα εικόνων – θα έχετε ένα pixel‑perfect στιγμιότυπο της HTML σελίδας, πλήρως εξοπλισμένο με την **εφαρμοσμένη στυλ γραμματοσειράς** και γραφικά antialiased. + +![Παράδειγμα εξόδου από render html](rendered.png "Πώς να αποδώσετε html – Αποτέλεσμα PNG της δείγματος HTML σελίδας") + +*(Το κείμενο alt περιλαμβάνει τη βασική λέξη-κλειδί για SEO.)* + +## Βήμα 4 – Επαλήθευση του αποτελέσματος προγραμματιστικά (Προαιρετικό) + +Μερικές φορές χρειάζεται να επιβεβαιώσετε ότι το PNG δημιουργήθηκε σωστά, ειδικά σε αυτοματοποιημένες αλυσίδες. Μια γρήγορη έλεγχος μεγέθους σε bytes ή η φόρτωση της εικόνας με `System.Drawing` μπορεί να σας δώσει σιγουριά. + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## Συχνές Ερωτήσεις & Πιθανά Προβλήματα + +- **Τι γίνεται αν χρειάζομαι διαφορετική μορφή εικόνας;** + Το `ImageRenderer` υποστηρίζει επίσης JPEG, BMP και GIF. Απλώς αλλάξτε την επέκταση του αρχείου και προαιρετικά ορίστε `ImageFormat` στο `ImageRenderingOptions`. + +- **Μπορώ να αποδώσω μόνο ένα συγκεκριμένο στοιχείο HTML;** + Ναι. Χρησιμοποιήστε `htmlDoc.GetElementById("myDiv")` και περάστε αυτό το στοιχείο στο `ImageRenderer.Render(element)`. + +- **Πρέπει να συμπεριλάβω τη γραμματοσειρά Arial με την εφαρμογή μου;** + Όχι απαραίτητα. Αν η μηχανή-στόχος έχει ήδη Arial, ο renderer θα τη χρησιμοποιήσει. Διαφορετικά μπορείτε να ενσωματώσετε μια προσαρμοσμένη web‑font μέσω CSS `@font-face` στο HTML σας. + +- **Πώς συγκρίνεται αυτό με το headless Chrome;** + Το Aspose.HTML είναι μια καθαρά διαχειριζόμενη βιβλιοθήκη .NET, επομένως δεν χρειάζονται εξωτερικοί φυλλομετρητές, drivers ή βαρύ κοντέινερ. Συνήθως είναι πιο γρήγορο για εργασίες batch, αν και το Chrome μπορεί να αποδώσει πιο πιστά CSS3 animations. + +## Συμπέρασμα + +Καλύψαμε **πώς να αποδώσετε HTML** σε εικόνα PNG χρησιμοποιώντας το Aspose.HTML για .NET, δείχνοντάς σας πώς να **φορτώσετε έγγραφο HTML**, **εφαρμόσετε στυλ γραμματοσειράς**, και **εξάγετε HTML ως PNG** με λίγες μόνο γραμμές κώδικα C#. Το πλήρες, εκτελέσιμο παράδειγμα βρίσκεται στα αποσπάσματα παραπάνω, και μπορείτε να το αντιγράψετε‑και‑επικολλήσετε σε ένα console project αμέσως. + +### Τι θα ακολουθήσει; + +- Πειραματιστείτε με διαφορετικές τιμές `Width`/`Height` για δημιουργία μικρογραφιών. +- Αλλάξτε τη μορφή εξόδου σε JPEG για μικρότερα αρχεία. +- Συνδυάστε πολλαπλές αποδομένες σελίδες σε PDF χρησιμοποιώντας `PdfRenderer`. +- Εξερευνήστε CSS media queries (`@media print`) για να προσαρμόσετε την απόδοση. + +Νιώστε ελεύθεροι να τροποποιήσετε τις επιλογές απόδοσης, να αλλάξετε γραμματοσειρές ή να τροφοδοτήσετε δυναμικό 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..b92e526bf 100644 --- a/html/hindi/net/html-extensions-and-conversions/_index.md +++ b/html/hindi/net/html-extensions-and-conversions/_index.md @@ -79,7 +79,7 @@ Aspose.HTML के साथ .NET में HTML को MHTML में बद ### [Aspose.HTML के साथ .NET में HTML को XPS में बदलें](./convert-html-to-xps/) .NET के लिए Aspose.HTML की शक्ति का पता लगाएं: HTML को XPS में आसानी से बदलें। पूर्वापेक्षाएँ, चरण-दर-चरण मार्गदर्शिका और FAQ शामिल हैं। ### [HTML को ZIP के रूप में सहेजें – पूर्ण C# ट्यूटोरियल](./save-html-as-zip-complete-c-tutorial/) -HTML को ZIP फ़ाइल में सहेजने के चरण-दर-चरण मार्गदर्शन, C# कोड उदाहरण और अनुकूलन विकल्प। +HTML को ZIP फ़ाइल में सहेजने के चरण-दर-स्टेप मार्गदर्शन, C# कोड उदाहरण और अनुकूलन विकल्प। ### [C# में HTML को ज़िप कैसे करें – HTML को ज़िप में सहेजें](./how-to-zip-html-in-c-save-html-to-zip/) .NET के लिए Aspose.HTML का उपयोग करके C# में HTML को ज़िप फ़ाइल में सहेजने का तरीका सीखें। @@ -90,6 +90,9 @@ Aspose.HTML for .NET का उपयोग करके स्टाइल् ### [C# में HTML को ZIP में सहेजें – पूर्ण इन‑मेमोरी उदाहरण](./save-html-to-zip-in-c-complete-in-memory-example/) C# में इन‑मेमोरी में HTML को ZIP फ़ाइल में सहेजने का पूरा उदाहरण देखें। +### [C# में HTML को ZIP में बदलें – पूर्ण चरण‑दर‑चरण गाइड](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +C# और Aspose.HTML का उपयोग करके HTML को ZIP फ़ाइल में बदलने के सभी चरणों को सीखें। पूर्ण कोड उदाहरण और टिप्स। + ## निष्कर्ष निष्कर्ष में, HTML एक्सटेंशन और रूपांतरण आधुनिक वेब विकास के आवश्यक तत्व हैं। .NET के लिए Aspose.HTML प्रक्रिया को सरल बनाता है और इसे सभी स्तरों के डेवलपर्स के लिए सुलभ बनाता है। हमारे ट्यूटोरियल का पालन करके, आप एक व्यापक कौशल सेट के साथ एक कुशल वेब डेवलपर बनने के अपने रास्ते पर अच्छी तरह से आगे बढ़ेंगे। diff --git a/html/hindi/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/hindi/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..bccaa3ec5 --- /dev/null +++ b/html/hindi/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,285 @@ +--- +category: general +date: 2026-03-26 +description: Aspose.HTML के साथ HTML को जल्दी ZIP में बदलें। जानें कि HTML से ZIP + कैसे बनाएं, मेमोरी में संसाधनों को कैसे संभालें, और सामान्य त्रुटियों से कैसे बचें। +draft: false +keywords: +- convert html to zip +- create zip from html +language: hi +og_description: HTML को आसानी से ZIP में बदलें। यह गाइड Aspose.HTML का उपयोग करके + HTML से ZIP बनाने का तरीका दिखाता है, जिसमें पूर्ण कोड और टिप्स शामिल हैं। +og_title: C# में HTML को ZIP में बदलें – पूर्ण प्रोग्रामिंग मार्गदर्शन +tags: +- C# +- Aspose.HTML +- file compression +title: C# में HTML को ZIP में बदलें – पूर्ण चरण‑दर‑चरण गाइड +url: /hi/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Convert HTML to ZIP in C# – Complete Step‑by‑Step Guide + +क्या आपको **HTML को ZIP में बदलने** की जरूरत पड़ी है लेकिन सही API नहीं मिल पाई? आप अकेले नहीं हैं—कई डेवलपर्स को यह समस्या आती है जब वे वेब पेज को उसकी इमेजेज, CSS, और स्क्रिप्ट्स के साथ एक ही डाउनलोडेबल पैकेज में शिप करना चाहते हैं। + +अच्छी खबर? Aspose.HTML के साथ आप **HTML से ZIP बना** सकते हैं कुछ ही लाइनों में, और आपको यह पूरी स्वतंत्रता मिलती है कि प्रत्येक रिसोर्स कहाँ रहेगा (मेमोरी, डिस्क, या स्ट्रीम)। इस ट्यूटोरियल में हम पूरी प्रक्रिया को समझेंगे, एक छोटे HTML स्निपेट से लेकर तैयार‑डाऊनलोड ZIP फ़ाइल तक, और हर चयन के “क्यों” को भी बताएँगे। + +## What You’ll Learn + +- कैसे Aspose.HTML को .NET प्रोजेक्ट में सेट‑अप करें। +- कैसे एक HTML डॉक्यूमेंट और उसकी सभी लिंक्ड रिसोर्सेज को `MemoryStream` में सेव करें। +- कैसे एक ही कॉल से वही HTML को ZIP आर्काइव में पैक करें। +- बड़े इमेजेज, कस्टम रिसोर्स स्टोरेज, और एरर हैंडलिंग के टिप्स। +- अपेक्षित कंसोल आउटपुट और ZIP कंटेंट्स को वेरिफ़ाई करने का तरीका। + +कोई जटिल प्री‑रिक्विज़िट नहीं—सिर्फ .NET (Core 3.1+ या .NET 6) का नया वर्ज़न और Aspose.HTML NuGet पैकेज। चलिए शुरू करते हैं। + +![convert html to zip illustration](convert-html-to-zip.png){alt="HTML को ZIP में बदलने का उदाहरण"} + +## Prerequisites + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6 SDK (or later) | नवीनतम रनटाइम आपको सबसे प्रभावी `MemoryStream` हैंडलिंग देता है। | +| Aspose.HTML for .NET (NuGet) | वह `HTMLDocument`, `HtmlSaveOptions`, और `ZipOutputStorage` क्लासेज़ प्रदान करता है जिनका हम उपयोग करेंगे। | +| Basic C# knowledge | आपको `using` स्टेटमेंट्स और स्ट्रीम्स को समझना होगा। | + +लाइब्रेरी को इंस्टॉल करने के लिए: + +```bash +dotnet add package Aspose.HTML +``` + +अब बुनियादी सेट‑अप हो गया है, चलिए HTML को ZIP में बदलना शुरू करते हैं। + +## Step 1: Create a Simple HTML Document + +सबसे पहले हमें एक `HTMLDocument` इंस्टेंस चाहिए। वास्तविक प्रोजेक्ट में आप शायद डिस्क से फ़ाइल लोड करेंगे, लेकिन डेमो के लिए हम एक छोटा पेज एम्बेड करेंगे जो `logo.png` नाम की लोकल इमेज को रेफ़र करता है। + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*Why this matters:* कोड में डॉक्यूमेंट बनाकर हम बाहरी फ़ाइल डिपेंडेंसीज़ से बचते हैं, जिससे उदाहरण पूरी तरह से सेल्फ‑कंटेन्ड बन जाता है—AI सिटेशन और तेज़ टेस्टिंग के लिए एकदम उपयुक्त। + +## Step 2: Save the HTML and Its Resources to a MemoryStream + +कभी‑कभी आप डिस्क पर लिखना नहीं चाहते—शायद आप ZIP को वेब API के ज़रिए भेज रहे हों। `ResourceHandler` आपको हर लिंक्ड फ़ाइल (इमेजेज, CSS, आदि) को `MemoryStream` में रूट करने देता है, फ़ाइल सिस्टम की बजाय। + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**What you see:** कंसोल जनरेटेड HTML की बाइट लंबाई प्रिंट करता है। क्योंकि हमने `MemoryStream` इस्तेमाल किया है, डिस्क को कुछ भी नहीं छूता, जिसका मतलब है कि आप **HTML को ZIP में बदल** पूरी मेमोरी में कर सकते हैं। + +### Pro tip + +अगर आपके HTML में बड़े इमेजेज हैं, तो `HandleResource` को ओवरराइड करके स्ट्रीम को ऑन‑द‑फ्लाई कॉम्प्रेस करने पर विचार करें। इससे अंतिम ZIP हल्का रहेगा। + +## Step 3: Pack the HTML and Its Resources into a ZIP Archive + +Aspose.HTML एक सुविधाजनक `ZipOutputStorage` क्लास प्रदान करता है जो मुख्य HTML फ़ाइल और सभी रेफ़रेंस्ड रिसोर्सेज़ को एक ही ZIP फ़ाइल में बंडल कर देता है। इसे इस तरह इस्तेमाल करें: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**Result:** `output.zip` अब शामिल करता है: + +- `index.html` (वह HTML जिसे हमने बनाया) +- `logo.png` (मार्कअप में रेफ़र की गई इमेज) + +आप किसी भी आर्काइव मैनेजर से ZIP खोल सकते हैं और देख सकते हैं कि HTML अभी भी `logo.png` की ओर इशारा कर रहा है, जिससे मूल पेज लेआउट बरकरार रहता है। + +### Edge case: Missing resources + +अगर कोई रिसोर्स नहीं मिल पाता, तो Aspose.HTML `ResourceNotFoundException` थ्रो करता है। यदि आप यूज़र‑जनरेटेड HTML के साथ काम कर रहे हैं जो बाहरी URLs रेफ़र कर सकता है, तो `Save` कॉल को `try/catch` ब्लॉक में रैप करें। + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## Step 4: Verify the ZIP Contents Programmatically (Optional) + +यदि आप एक वेब सर्विस बना रहे हैं, तो आप ZIP को downstream भेजने से पहले यह सुनिश्चित करना चाहेंगे कि सभी चीज़ें मौजूद हैं। .NET का `System.IO.Compression` नेमस्पेस आपको डिस्क पर एक्सट्रैक्ट किए बिना अंदर झाँकने देता है। + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +आपको ऐसा आउटपुट दिखना चाहिए: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +यह अंतिम चेक आपको भरोसा दिलाता है कि **HTML से ZIP बनाने** का चरण सफल रहा। + +## Common Pitfalls & How to Avoid Them + +| Symptom | Likely cause | Fix | +|---------|--------------|-----| +| ZIP is empty | `OutputStorage` सेट नहीं है या `HtmlSaveOptions` छोड़ दिया गया | सुनिश्चित करें `OutputStorage = zipStorage` और `Save` में `zipSaveOptions` पास करें। | +| Images appear broken when opening `index.html` | रिसोर्स हैंडलर ने खाली स्ट्रीम रिटर्न किया | ऐसी स्ट्रीम रिटर्न करें जिसमें इमेज बाइट्स हों, या Aspose को ऑटोमैटिक हैंडल करने दें। | +| Out‑of‑memory exception on large pages | सभी चीज़ें एक ही `MemoryStream` में बिना फ्लश किए स्टोर हो रही हैं | बड़े रिसोर्सेज़ के लिए `FileStream` इस्तेमाल करें या सीधे HTTP रिस्पॉन्स में स्ट्रीम करें। | +| Wrong file extension | `.html` के रूप में सेव किया गया बजाय `.zip` के | फ़ाइल पाथ का एक्सटेंशन `.zip` है या नहीं, जांचें। | + +## Full Working Example + +नीचे पूरा, तैयार‑चलाने‑योग्य प्रोग्राम दिया गया है। इसे कॉन्सोल प्रोजेक्ट में कॉपी‑पेस्ट करें, Aspose.HTML NuGet पैकेज जोड़ें, और रन करें। + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +प्रोग्राम चलाने पर कंसोल आउटपुट कुछ इस तरह दिखेगा: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +अब आपके पास एक **HTML को ZIP में बदलने** वाला पाइपलाइन है जिसे आप वेब APIs, बैकग्राउंड जॉब्स, या डेस्कटॉप टूल्स में एम्बेड कर सकते हैं। + +## Conclusion + +हमने वह सब कवर किया जो आपको **HTML को ZIP में बदलने** के लिए Aspose.HTML के साथ चाहिए: डॉक्यूमेंट बनाना, रिसोर्सेज़ को मेमोरी में रूट करना, सबको ZIP में पैक करना, और प्रोग्रामेटिकली रिजल्ट वेरिफ़ाई करना। यह तरीका हल्का, पूरी‑प्रोसेस में चलता है, और आपको प्रत्येक फ़ाइल के स्टोरेज पर बारीकी से कंट्रोल देता है। + +अगली चुनौती के लिए तैयार हैं? `ZipOutputStorage` को कस्टम `Stream` से बदलें जो सीधे HTTP रिस्पॉन्स में लिखता हो, या इमेजेज़ को ऑन‑द‑फ्लाई कॉम्प्रेस करके अंतिम आर्काइव को छोटा करें। ये एक्सटेंशन आपको **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/rendering-html-documents/_index.md b/html/hindi/net/rendering-html-documents/_index.md index f656f4636..4d5da76d1 100644 --- a/html/hindi/net/rendering-html-documents/_index.md +++ b/html/hindi/net/rendering-html-documents/_index.md @@ -57,6 +57,7 @@ Aspose.HTML for .NET में रेंडरिंग टाइमआउट ### [Aspose.HTML के साथ .NET में SVG दस्तावेज़ को PNG के रूप में प्रस्तुत करें](./render-svg-doc-as-png/) .NET के लिए Aspose.HTML की शक्ति अनलॉक करें! SVG Doc को आसानी से PNG के रूप में रेंडर करना सीखें। चरण-दर-चरण उदाहरणों और FAQ में गोता लगाएँ। अभी शुरू करें! + ### [HTML को PNG के रूप में रेंडर करने का पूर्ण C# गाइड](./how-to-render-html-as-png-complete-c-guide/) C# में Aspose.HTML का उपयोग करके HTML को PNG में बदलने के चरण-दर-चरण निर्देश। @@ -65,9 +66,13 @@ Aspose.HTML के साथ HTML को PNG फ़ॉर्मेट में ### [Aspose के साथ HTML को PNG में रेंडर करने का पूर्ण गाइड](./how-to-render-html-to-png-with-aspose-complete-guide/) Aspose.HTML का उपयोग करके HTML को PNG फ़ॉर्मेट में बदलने की पूरी प्रक्रिया सीखें, कोड उदाहरण और टिप्स के साथ। + ### [HTML से PNG बनाएं – पूर्ण C# रेंडरिंग गाइड](./create-png-from-html-full-c-rendering-guide/) HTML को PNG में बदलने के लिए पूर्ण C# रेंडरिंग चरणों को सीखें और Aspose.HTML का उपयोग करके उच्च गुणवत्ता वाले परिणाम प्राप्त करें। +### [C# में HTML को PNG में रेंडर करने का चरण‑दर‑चरण गाइड](./how-to-render-html-to-png-in-c-step-by-step-guide/) +C# में Aspose.HTML का उपयोग करके HTML को PNG में बदलने के चरण‑दर‑चरण निर्देश। + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/hindi/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/hindi/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..aa6d0b261 --- /dev/null +++ b/html/hindi/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-03-26 +description: HTML को तेज़ी और भरोसेमंद तरीके से रेंडर कैसे करें। HTML को PNG में बदलना + सीखें, HTML को PNG के रूप में निर्यात करें, फ़ॉन्ट शैली लागू करें और Aspose.Html + के साथ HTML दस्तावेज़ लोड करें। +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: hi +og_description: Aspose.Html का उपयोग करके C# में HTML को कैसे रेंडर करें। यह गाइड + आपको दिखाता है कि HTML को PNG में कैसे बदलें, HTML को PNG के रूप में निर्यात करें, + फ़ॉन्ट शैली लागू करें और HTML दस्तावेज़ लोड करें। +og_title: C# में HTML को PNG में रेंडर करने का तरीका – पूर्ण ट्यूटोरियल +tags: +- C# +- Aspose.Html +- Image Rendering +title: C# में HTML को PNG में रेंडर कैसे करें – चरण‑दर‑चरण गाइड +url: /hi/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# में HTML को PNG में रेंडर कैसे करें – चरण‑दर‑चरण गाइड + +क्या आपने कभी सोचा है **HTML को रेंडर** करके एक स्पष्ट PNG छवि बनाना, बिना ब्राउज़र ऑटोमेशन के झंझट के? आप अकेले नहीं हैं। कई डेवलपर्स को ईमेल थंबनेल, रिपोर्ट स्नैपशॉट या PDF प्री‑व्यू के लिए *HTML को PNG में बदलने* की जरूरत होती है, और सामान्य हेडलेस‑ब्राउज़र ट्रिक्स भारी लगती हैं। + +इस ट्यूटोरियल में हम एक साफ़, लाइब्रेरी‑आधारित समाधान के माध्यम से चलेंगे जो **HTML दस्तावेज़ को लोड** करता है, आपको **फ़ॉन्ट स्टाइल लागू करने** और अन्य रेंडरिंग समायोजन करने देता है, और अंत में **HTML को PNG के रूप में एक्सपोर्ट** करता है। अंत तक आपके पास एक तैयार‑चलाने‑योग्य C# प्रोग्राम होगा जो यह सब करता है, साथ ही कुछ प्रो टिप्स जो आपको सामान्य समस्याओं से बचाएंगे। + +## पूर्वापेक्षाएँ + +- .NET 6.0 या बाद का (कोड .NET Core और .NET Framework पर भी काम करता है) +- Aspose.HTML for .NET NuGet पैकेज (`Aspose.Html` और `Aspose.Html.Rendering.Image`) +- एक सैंपल HTML फ़ाइल (`sample.html`) जिसे आप कहीं भी रेफ़र कर सकते हैं +- C# और Visual Studio (या कोई भी IDE जो आप पसंद करते हैं) की बुनियादी परिचितता + +> **प्रो टिप:** यदि आप CI सर्वर पर हैं, तो Aspose.HTML DLLs को अपने प्रोजेक्ट के `packages` फ़ोल्डर में जोड़ें ताकि बिल्ड स्वयं‑समाहित रहे। + +## चरण 1 – HTML दस्तावेज़ लोड करें + +पहली चीज़ जो आपको करनी है वह है **HTML दस्तावेज़ को** `HTMLDocument` ऑब्जेक्ट में **लोड करना**। Aspose.HTML फ़ाइल को पढ़ता है, सापेक्ष संसाधनों को हल करता है, और एक DOM बनाता है जिसे आप बदल सकते हैं। + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **क्यों यह महत्वपूर्ण है:** Aspose के माध्यम से दस्तावेज़ लोड करने से यह सुनिश्चित होता है कि बाहरी CSS, इमेजेज़, और फ़ॉन्ट्स उसी तरह प्रोसेस होते हैं जैसे ब्राउज़र करता है, जो बाद में **HTML को PNG में बदलने** के लिए आवश्यक है। + +## चरण 2 – रेंडरिंग विकल्प कॉन्फ़िगर करें (फ़ॉन्ट स्टाइल लागू करें और अधिक) + +अब हम `ImageRenderingOptions` सेट करते हैं। यही वह जगह है जहाँ आप **फ़ॉन्ट स्टाइल लागू** करते हैं, एंटीएलियासिंग चुनते हैं, और आउटपुट आयाम निर्धारित करते हैं। इन सेटिंग्स को समायोजित करने से अंतिम PNG की दृश्य गुणवत्ता में नाटकीय सुधार हो सकता है। + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### विकल्प वास्तव में क्या करते हैं + +| Option | Effect | When to change | +|--------|--------|----------------| +| `UseAntialiasing` | आकारों और टेक्स्ट पर खुरदुरे किनारों को स्मूद करता है | उच्च‑रिज़ॉल्यूशन आउटपुट के लिए | +| `TextOptions.UseHinting` | छोटे फ़ॉन्ट्स की पठनीयता में सुधार करता है | जब UI‑भारी पेज रेंडर कर रहे हों | +| `Font.Style / Size / Family` | पेज के CSS की परवाह किए बिना एक विशिष्ट फ़ॉन्ट लागू करता है | कॉरपोरेट ब्रांडिंग या जब मूल फ़ॉन्ट उपलब्ध न हो, तब उपयोगी | +| `Width` / `Height` | PNG का कैनवास आकार सेट करता है | ब्राउज़र में देखे जाने वाले व्यूपोर्ट से मिलाएँ | + +## चरण 3 – दस्तावेज़ को PNG छवि में रेंडर करें (HTML को PNG में बदलें) + +दस्तावेज़ और विकल्प तैयार होने पर, हम सब कुछ `ImageRenderer` को देते हैं। यह क्लास रेंडर किया गया बिटमैप सीधे फ़ाइल में स्ट्रीम करता है, जिससे हमें एक **HTML को PNG में बदलने** ऑपरेशन मिलता है जो तेज़ और मेमोरी‑कुशल दोनों है। + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **एज केस:** यदि आपका HTML HTTP के माध्यम से बाहरी इमेजेज़ को रेफ़र करता है, तो सुनिश्चित करें कि सर्वर उस मशीन से पहुँच योग्य हो जहाँ यह कोड चल रहा है। अन्यथा रेंडरर प्लेसहोल्डर छोड़ देगा। + +### अपेक्षित आउटपुट + +प्रोग्राम समाप्त होने के बाद, आपको `sample.html` के समान डायरेक्टरी में एक `rendered.png` फ़ाइल दिखनी चाहिए। इसे किसी भी इमेज व्यूअर से खोलें – आपको HTML पेज का पिक्सेल‑परफेक्ट स्नैपशॉट मिलेगा, जिसमें **लागू किया गया फ़ॉन्ट स्टाइल** और एंटीएलियास्ड ग्राफिक्स शामिल होंगे। + +![HTML रेंडर करने का उदाहरण आउटपुट](rendered.png "HTML रेंडर – नमूना HTML पेज का PNG परिणाम") + +*(Alt टेक्स्ट में SEO के लिए मुख्य कीवर्ड शामिल है।)* + +## चरण 4 – परिणाम को प्रोग्रामेटिकली सत्यापित करें (वैकल्पिक) + +कभी‑कभी आपको यह पुष्टि करनी पड़ती है कि PNG सही तरीके से बनाया गया है, विशेषकर स्वचालित पाइपलाइन में। एक त्वरित बाइट‑साइज़ जांच या `System.Drawing` के साथ इमेज लोड करना आपको भरोसा दिला सकता है। + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## सामान्य प्रश्न और समस्याएँ + +- **अगर मुझे अलग इमेज फ़ॉर्मेट चाहिए तो?** + `ImageRenderer` JPEG, BMP, और GIF को भी सपोर्ट करता है। बस फ़ाइल एक्सटेंशन बदलें और वैकल्पिक रूप से `ImageRenderingOptions` में `ImageFormat` सेट करें। + +- **क्या मैं केवल एक विशिष्ट HTML एलिमेंट को रेंडर कर सकता हूँ?** + हां। `htmlDoc.GetElementById("myDiv")` का उपयोग करें और उस एलिमेंट को `ImageRenderer.Render(element)` को पास करें। + +- **क्या मुझे अपने ऐप के साथ Arial फ़ॉन्ट शिप करना होगा?** + ज़रूरी नहीं। यदि लक्ष्य मशीन पर पहले से ही Arial मौजूद है, तो रेंडरर उसे ले लेगा। अन्यथा आप अपने HTML में CSS `@font-face` के माध्यम से एक कस्टम वेब फ़ॉन्ट एम्बेड कर सकते हैं। + +- **यह हेडलेस Chrome से कैसे तुलना करता है?** + Aspose.HTML एक शुद्ध‑मैनेज्ड .NET लाइब्रेरी है, इसलिए बाहरी ब्राउज़र, ड्राइवर, या भारी कंटेनर की आवश्यकता नहीं है। यह आमतौर पर बैच जॉब्स के लिए तेज़ होता है, हालांकि Chrome CSS3 एनीमेशन को अधिक सटीकता से रेंडर कर सकता है। + +## समापन + +हमने Aspose.HTML for .NET का उपयोग करके **HTML को PNG छवि में रेंडर** करने को कवर किया है, आपको दिखाते हुए कि कैसे **HTML दस्तावेज़ लोड** करें, **फ़ॉन्ट स्टाइल लागू** करें, और केवल कुछ लाइनों के C# कोड से **HTML को PNG के रूप में एक्सपोर्ट** करें। पूरा, चलाने योग्य उदाहरण ऊपर के स्निपेट्स में मौजूद है, और आप इसे अभी एक कंसोल प्रोजेक्ट में कॉपी‑पेस्ट कर सकते हैं। + +### आगे क्या? + +- विभिन्न `Width`/`Height` मानों के साथ प्रयोग करें ताकि थंबनेल बन सकें। +- छोटे फ़ाइल आकार के लिए आउटपुट फ़ॉर्मेट को JPEG में बदलें। +- `PdfRenderer` का उपयोग करके कई रेंडर किए गए पेजों को एक PDF में संयोजित करें। +- रेंडर किए गए दृश्य को अनुकूलित करने के लिए CSS मीडिया क्वेरीज़ (`@media print`) का अन्वेषण करें। + +रेंडरिंग विकल्पों को बदलने, फ़ॉन्ट बदलने, या रन‑टाइम पर जेनरेटेड डायनामिक 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..e1cb9981c 100644 --- a/html/hongkong/net/html-extensions-and-conversions/_index.md +++ b/html/hongkong/net/html-extensions-and-conversions/_index.md @@ -73,6 +73,8 @@ 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 檔案,全部在記憶體中完成。 +### [在 C# 中將 HTML 轉換為 ZIP – 完整步驟指南](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +使用 Aspose.HTML for .NET 在 C# 中將 HTML 轉換為 ZIP,提供完整的逐步說明與範例。 ## 結論 diff --git a/html/hongkong/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/hongkong/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..21bf43015 --- /dev/null +++ b/html/hongkong/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,283 @@ +--- +category: general +date: 2026-03-26 +description: 使用 Aspose.HTML 快速將 HTML 轉換為 ZIP。了解如何從 HTML 建立 ZIP、在記憶體中處理資源,並避免常見的陷阱。 +draft: false +keywords: +- convert html to zip +- create zip from html +language: zh-hant +og_description: 輕鬆將 HTML 轉換為 ZIP。本指南將示範如何使用 Aspose.HTML 從 HTML 建立 ZIP,並提供完整程式碼與技巧。 +og_title: 在 C# 中將 HTML 轉換為 ZIP – 完整程式教學 +tags: +- C# +- Aspose.HTML +- file compression +title: 在 C# 中將 HTML 轉換為 ZIP – 完整逐步指南 +url: /zh-hant/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Convert HTML to ZIP in C# – Complete Step‑by‑Step Guide + +Ever needed to **convert HTML to ZIP** but weren’t sure which API to reach for? You’re not the only one—many developers hit this wall when they try to ship a web page with its images, CSS, and scripts as a single downloadable package. + +The good news? With Aspose.HTML you can **create ZIP from HTML** in a handful of lines, and you’ll get full control over where each resource lives (memory, disk, or a stream). In this tutorial we’ll walk through the whole process, from a tiny HTML snippet to a ready‑to‑download ZIP file, and we’ll explain the “why” behind every choice. + +## What You’ll Learn + +- How to set up Aspose.HTML in a .NET project. +- How to save an HTML document and all its linked resources into a `MemoryStream`. +- How to pack the same HTML into a ZIP archive with a single call. +- Tips for handling large images, custom resource storage, and error handling. +- Expected console output and how to verify the ZIP contents. + +No fancy prerequisites—just a recent version of .NET (Core 3.1+ or .NET 6) and the Aspose.HTML NuGet package. Let’s dive in. + +![convert html to zip illustration](convert-html-to-zip.png){alt="convert html to zip 範例"} + +## Prerequisites + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6 SDK (or later) | The latest runtime gives you the most efficient `MemoryStream` handling. | +| Aspose.HTML for .NET (NuGet) | Provides the `HTMLDocument`, `HtmlSaveOptions`, and `ZipOutputStorage` classes we’ll use. | +| Basic C# knowledge | You’ll need to understand `using` statements and streams. | + +Install the library with: + +```bash +dotnet add package Aspose.HTML +``` + +Now that the groundwork is set, let’s start converting HTML to ZIP. + +## Step 1: Create a Simple HTML Document + +First we need an `HTMLDocument` instance. In a real project you’d probably load a file from disk, but for the demo we’ll embed a tiny page that references a local image called `logo.png`. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*Why this matters:* By constructing the document in code we avoid external file dependencies, making the example fully self‑contained—perfect for AI citation and for quick testing. + +## Step 2: Save the HTML and Its Resources to a MemoryStream + +Sometimes you don’t want to write to disk at all—maybe you’re sending the ZIP over a web API. The `ResourceHandler` lets you direct every linked file (images, CSS, etc.) into a `MemoryStream` instead of the file system. + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**What you see:** The console prints the byte length of the generated HTML. Because we used a `MemoryStream`, nothing touches the disk, which means you can now **convert HTML to ZIP** entirely in memory if you wish. + +### Pro tip + +If your HTML contains large images, consider overriding `HandleResource` to compress the stream on the fly. That way the final ZIP stays lean. + +## Step 3: Pack the HTML and Its Resources into a ZIP Archive + +Aspose.HTML ships with a handy `ZipOutputStorage` class that automatically bundles the main HTML file and every referenced resource into a single ZIP file. Here’s how to use it: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**Result:** `output.zip` now contains: + +- `index.html` (the HTML we created) +- `logo.png` (the image referenced in the markup) + +You can open the ZIP with any archive manager and see that the HTML still points to `logo.png`, preserving the original page layout. + +### Edge case: Missing resources + +If a resource can’t be found, Aspose.HTML throws a `ResourceNotFoundException`. Wrap the `Save` call in a `try/catch` block if you’re dealing with user‑generated HTML that might reference external URLs. + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## Step 4: Verify the ZIP Contents Programmatically (Optional) + +If you’re building a web service, you might want to confirm the ZIP contains everything before sending it downstream. The .NET `System.IO.Compression` namespace lets you peek inside without extracting to disk. + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +You should see output similar to: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +That final check gives you confidence that the **create ZIP from HTML** step succeeded. + +## Common Pitfalls & How to Avoid Them + +| Symptom | Likely cause | Fix | +|---------|--------------|-----| +| ZIP is empty | `OutputStorage` not set or `HtmlSaveOptions` omitted | Ensure `OutputStorage = zipStorage` and pass `zipSaveOptions` to `Save`. | +| Images appear broken when opening `index.html` | Resource handler returned a new empty stream | Return a stream that actually contains the image bytes, or let Aspose handle it automatically. | +| Out‑of‑memory exception on large pages | Storing everything in a single `MemoryStream` without flushing | Use `FileStream` for large resources or stream directly to the HTTP response. | +| Wrong file extension | Saved as `.html` instead of `.zip` | Verify the `FileStream` path ends with `.zip`. | + +## Full Working Example + +Below is the complete, ready‑to‑run program. Copy‑paste it into a console project, add the Aspose.HTML NuGet package, and run. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Running the program produces console output similar to: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +You now have a **convert HTML to ZIP** pipeline you can embed in web APIs, background jobs, or desktop tools. + +## Conclusion + +We’ve covered everything you need to **convert HTML to ZIP** using Aspose.HTML: creating the document, routing resources to memory, packing everything into a ZIP, and even verifying the result programmatically. The approach is lightweight, works entirely in‑process, and gives you fine‑grained control over how each file is stored. + +Ready for the next challenge? Try swapping `ZipOutputStorage` for a custom `Stream` that writes directly to an HTTP response, or experiment with compressing images on the fly to shrink the final archive. Those extensions will let you **create ZIP from HTML** in even more demanding scenarios. + +Got questions or want to share how you’ve adapted this pattern? Drop a comment below, and 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/hongkong/net/rendering-html-documents/_index.md b/html/hongkong/net/rendering-html-documents/_index.md index dcea15c4c..5bf215f81 100644 --- a/html/hongkong/net/rendering-html-documents/_index.md +++ b/html/hongkong/net/rendering-html-documents/_index.md @@ -66,6 +66,9 @@ Aspose.HTML for .NET 因其豐富的功能、優秀的文件和活躍的社群 ### [如何使用 Aspose 將 HTML 渲染為 PNG – 步驟指南](./how-to-use-aspose-to-render-html-to-png-step-by-step-guide/) 一步步教您使用 Aspose.HTML for .NET 將 HTML 轉換為 PNG 圖像,掌握渲染技巧與設定。 +### [如何在 C# 中將 HTML 渲染為 PNG – 步驟指南](./how-to-render-html-to-png-in-c-step-by-step-guide/) +一步步教您使用 Aspose.HTML for .NET 在 C# 中將 HTML 轉換為 PNG 圖像,掌握渲染技巧與設定。 + ### [如何使用 Aspose 將 HTML 渲染為 PNG – 完整指南](./how-to-render-html-to-png-with-aspose-complete-guide/) 完整步驟教您使用 Aspose.HTML for .NET 將 HTML 轉換為 PNG 圖像,掌握所有設定與最佳實踐。 diff --git a/html/hongkong/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/hongkong/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..27add19f5 --- /dev/null +++ b/html/hongkong/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,184 @@ +--- +category: general +date: 2026-03-26 +description: 快速且可靠地渲染 HTML。學習將 HTML 轉換為 PNG、將 HTML 匯出為 PNG、套用字體樣式以及使用 Aspose.Html + 載入 HTML 文件。 +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: zh-hant +og_description: 如何在 C# 中使用 Aspose.Html 渲染 HTML。本指南將展示如何將 HTML 轉換為 PNG、將 HTML 匯出為 PNG、套用字型樣式以及載入 + HTML 文件。 +og_title: 如何在 C# 中將 HTML 渲染為 PNG – 完整教學 +tags: +- C# +- Aspose.Html +- Image Rendering +title: 如何在 C# 中將 HTML 轉換為 PNG – 步驟說明指南 +url: /zh-hant/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 C# 中將 HTML 渲染為 PNG – 步驟指南 + +有沒有想過 **如何將 HTML 渲染** 成為清晰的 PNG 圖像,而不必與瀏覽器自動化糾纏?你並不孤單。許多開發者需要 *將 HTML 轉換為 PNG* 用於電郵縮圖、報告快照或 PDF 預覽,而一般的無頭瀏覽器技巧感覺相當笨重。 + +在本教學中,我們將逐步說明一個乾淨、以函式庫為基礎的解決方案,該方案 **載入 HTML 文件**、讓你 **套用字型樣式** 以及其他渲染微調,最後 **將 HTML 匯出為 PNG**。完成後,你將擁有一個可直接執行的 C# 程式,外加幾個避免常見陷阱的專業提示。 + +## 先決條件 + +- .NET 6.0 或更新版本(程式碼同樣適用於 .NET Core 與 .NET Framework) +- Aspose.HTML for .NET NuGet 套件(`Aspose.Html` 與 `Aspose.Html.Rendering.Image`) +- 一個範例 HTML 檔案(`sample.html`),放在可參考的位置 +- 基本的 C# 與 Visual Studio(或任何你慣用的 IDE)使用經驗 + +> **專業提示:** 若你在 CI 伺服器上執行,請將 Aspose.HTML 的 DLL 加入專案的 `packages` 資料夾,確保建置後仍能自給自足。 + +## Step 1 – Load the HTML Document + +首先必須 **載入 HTML 文件** 到 `HTMLDocument` 物件中。Aspose.HTML 會讀取檔案、解析相對資源,並建立可供操作的 DOM。 + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **為什麼重要:** 透過 Aspose 載入文件可確保外部 CSS、圖片與字型以瀏覽器相同的方式處理,這對於之後 **將 HTML 轉換為 PNG** 極為關鍵。 + +## Step 2 – Configure Rendering Options (Apply Font Style & More) + +接著設定 `ImageRenderingOptions`。在這裡你可以 **套用字型樣式**、選擇抗鋸齒,並定義輸出尺寸。微調這些設定能顯著提升最終 PNG 的視覺忠實度。 + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### 這些選項實際的作用 + +| Option | 效果 | 何時調整 | +|--------|------|----------| +| `UseAntialiasing` | 平滑形狀與文字的鋸齒邊緣 | 用於高解析度輸出 | +| `TextOptions.UseHinting` | 提升小字體的可讀性 | 在渲染 UI 密集的頁面時 | +| `Font.Style / Size / Family` | 強制使用特定字型,不受頁面 CSS 影響 | 適用於企業品牌或原始字型不可用時 | +| `Width` / `Height` | 設定 PNG 的畫布大小 | 與瀏覽器中看到的視口相匹配 | + +## Step 3 – Render the Document to a PNG Image (Convert HTML to PNG) + +文件與選項準備好後,我們將所有內容交給 `ImageRenderer`。此類別會將渲染後的位圖直接串流寫入檔案,提供一個 **將 HTML 轉換為 PNG** 的快速且記憶體效率高的作業。 + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **邊緣情況:** 若你的 HTML 透過 HTTP 引用外部圖片,請確保執行程式的機器能連到該伺服器,否則渲染器會留下佔位符。 + +### 預期輸出 + +程式執行完畢後,應會在與 `sample.html` 同一目錄下看到 `rendered.png` 檔案。使用任何圖像檢視器開啟,即可取得 HTML 頁面的像素完美快照,且包含 **套用的字型樣式** 與抗鋸齒圖形。 + +![HTML 渲染範例輸出](rendered.png "HTML 渲染 – 範例 HTML 頁面的 PNG 結果") + +*(Alt 文字已包含主要關鍵字以利 SEO。)* + +## Step 4 – Verify the Result Programmatically (Optional) + +有時需要在自動化流程中確認 PNG 是否正確產生。簡單的檔案大小檢查或使用 `System.Drawing` 載入影像,都能提供足夠的信心。 + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## 常見問題與陷阱 + +- **如果需要其他影像格式該怎麼辦?** + `ImageRenderer` 也支援 JPEG、BMP 與 GIF。只要更改檔案副檔名,並視需要在 `ImageRenderingOptions` 中設定 `ImageFormat` 即可。 + +- **能只渲染特定的 HTML 元素嗎?** + 可以。使用 `htmlDoc.GetElementById("myDiv")` 取得元素,然後傳給 `ImageRenderer.Render(element)`。 + +- **必須將 Arial 字型隨應用程式一起發佈嗎?** + 不一定。如果目標機器已安裝 Arial,渲染器會自動使用。否則可在 HTML 中透過 CSS `@font-face` 嵌入自訂 Web 字型。 + +- **與無頭 Chrome 相比如何?** + Aspose.HTML 是純 .NET 管理函式庫,無需外部瀏覽器、驅動程式或笨重的容器。對於批次工作通常更快,儘管 Chrome 可能在 CSS3 動畫的呈現上更忠實。 + +## 總結 + +我們已說明如何使用 Aspose.HTML for .NET **將 HTML 渲染** 為 PNG 圖像,展示了 **載入 HTML 文件**、**套用字型樣式** 與 **匯出 HTML 為 PNG** 的完整步驟,只需幾行 C# 程式碼。完整、可執行的範例已在上方程式碼片段中,你現在即可將其複製貼上至 Console 專案中執行。 + +### 接下來做什麼? + +- 嘗試不同的 `Width`/`Height` 值以產生縮圖。 +- 改用 JPEG 輸出以減少檔案大小。 +- 使用 `PdfRenderer` 將多個渲染頁面合併成 PDF。 +- 探索 CSS 媒體查詢(`@media print`)以客製化渲染視圖。 + +歡迎自由調整渲染選項、替換字型,或輸入即時產生的動態 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/hungarian/net/html-extensions-and-conversions/_index.md b/html/hungarian/net/html-extensions-and-conversions/_index.md index 53dd8b575..5ee26566f 100644 --- a/html/hungarian/net/html-extensions-and-conversions/_index.md +++ b/html/hungarian/net/html-extensions-and-conversions/_index.md @@ -60,6 +60,8 @@ Ismerje meg, hogyan hozhat létre PDF-et HTML-ből C#‑ban az Aspose.HTML for . ### [HTML mentése ZIP-ként – Teljes C# oktatóanyag](./save-html-as-zip-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 konvertálása ZIP-be C#‑ban – Teljes lépésről‑lépésre útmutató](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +Ismerje meg, hogyan konvertálhatja a HTML-t ZIP-archívumba C#‑ban az Aspose.HTML for .NET segítségével, részletes útmutatóval. ## Következtetés diff --git a/html/hungarian/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/hungarian/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..df4cbc6c7 --- /dev/null +++ b/html/hungarian/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,286 @@ +--- +category: general +date: 2026-03-26 +description: Konvertálja gyorsan a HTML-t ZIP-re az Aspose.HTML segítségével. Tanulja + meg, hogyan hozhat létre ZIP-et HTML-ből, hogyan kezelheti az erőforrásokat memóriában, + és hogyan kerülheti el a gyakori hibákat. +draft: false +keywords: +- convert html to zip +- create zip from html +language: hu +og_description: HTML könnyed konvertálása ZIP-be. Ez az útmutató megmutatja, hogyan + hozhat létre ZIP-et HTML-ből az Aspose.HTML használatával, teljes kóddal és tippekkel. +og_title: HTML konvertálása ZIP-re C#-ban – Teljes programozási útmutató +tags: +- C# +- Aspose.HTML +- file compression +title: HTML konvertálása ZIP-re C#-ban – Teljes lépésről‑lépésre útmutató +url: /hu/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML konvertálása ZIP-re C#‑ban – Teljes lépésről‑lépésre útmutató + +Valaha szükséged volt **HTML konvertálására ZIP‑re**, de nem tudtad, melyik API‑t kellene használnod? Nem vagy egyedül – sok fejlesztő ütközik ebbe a falba, amikor egy weboldalt képekkel, CSS‑sel és szkriptekkel egyetlen letölthető csomagként szeretne szállítani. + +A jó hír? Az Aspose.HTML‑el **HTML‑ből ZIP‑et hozhatsz létre** néhány sor kóddal, és teljes irányítást kapsz arról, hogy az egyes erőforrások hol tárolódnak (memória, lemez vagy stream). Ebben az útmutatóban végigvezetünk a teljes folyamaton, egy apró HTML‑részlettől egy letöltésre kész ZIP‑fájlig, és elmagyarázzuk a „miértet” minden döntés mögött. + +## Mit fogsz megtanulni + +- Hogyan állítsd be az Aspose.HTML‑t egy .NET projektben. +- Hogyan ments egy HTML dokumentumot és minden kapcsolódó erőforrását egy `MemoryStream`‑be. +- Hogyan csomagold ugyanazt a HTML‑t egy ZIP archívumba egyetlen hívással. +- Tippek nagy képek, egyedi erőforrás tárolás és hibakezelés kezeléséhez. +- Várható konzolkimenet és hogyan ellenőrizheted a ZIP tartalmát. + +Nincs bonyolult előfeltétel – csak egy friss .NET verzió (Core 3.1+ vagy .NET 6) és az Aspose.HTML NuGet csomag. Merüljünk el benne. + +![HTML konvertálása ZIP-re illusztráció](convert-html-to-zip.png){alt="HTML konvertálása ZIP-re példa"} + +## Előfeltételek + +| Követelmény | Miért fontos | +|-------------|----------------| +| .NET 6 SDK (vagy újabb) | A legújabb futtatókörnyezet a leghatékonyabb `MemoryStream` kezelést biztosítja. | +| Aspose.HTML for .NET (NuGet) | Biztosítja a `HTMLDocument`, `HtmlSaveOptions` és `ZipOutputStorage` osztályokat, amelyeket használni fogunk. | +| Alap C# ismeretek | Meg kell értened a `using` utasításokat és a stream-eket. | + +Telepítsd a könyvtárat a következővel: + +```bash +dotnet add package Aspose.HTML +``` + +Most, hogy az alapok megvannak, kezdjünk el HTML‑t ZIP‑re konvertálni. + +## 1. lépés: Egyszerű HTML dokumentum létrehozása + +Először szükségünk van egy `HTMLDocument` példányra. Egy valódi projektben valószínűleg egy fájlt töltesz be a lemezről, de a demóhoz egy apró oldalt ágyazunk be, amely egy `logo.png` nevű helyi képre hivatkozik. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*Miért fontos:* A dokumentum kódból történő felépítésével elkerüljük a külső fájlfüggőségeket, így a példa teljesen önálló – tökéletes AI idézéshez és gyors teszteléshez. + +## 2. lépés: HTML és erőforrásai mentése egy MemoryStream‑be + +Néha egyáltalán nem akarod a lemezre írni – lehet, hogy a ZIP‑et egy web API‑n keresztül küldöd. A `ResourceHandler` lehetővé teszi, hogy minden kapcsolódó fájlt (képek, CSS, stb.) egy `MemoryStream`‑be irányítsd a fájlrendszer helyett. + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**Mit látsz:** A konzol kiírja a generált HTML bájt hosszát. Mivel egy `MemoryStream`‑et használtunk, semmi sem érinti a lemezt, ami azt jelenti, hogy most már **HTML‑t ZIP‑re konvertálhatsz** teljesen memóriában, ha szeretnéd. + +### Profi tipp + +Ha a HTML nagy képeket tartalmaz, fontold meg a `HandleResource` felülírását, hogy a stream‑et helyben tömörítsd. Így a végső ZIP karcsú marad. + +## 3. lépés: HTML és erőforrásai csomagolása ZIP archívumba + +Az Aspose.HTML egy kényelmes `ZipOutputStorage` osztállyal érkezik, amely automatikusan egyetlen ZIP fájlba csomagolja a fő HTML fájlt és minden hivatkozott erőforrást. Íme, hogyan használhatod: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**Eredmény:** `output.zip` most a következőket tartalmazza: + +- `index.html` (a létrehozott HTML) +- `logo.png` (a jelölőnyelvben hivatkozott kép) + +Megnyithatod a ZIP‑et bármely archívumkezelővel, és láthatod, hogy a HTML továbbra is a `logo.png`‑re mutat, megőrizve az eredeti oldal elrendezését. + +### Szélsőséges eset: Hiányzó erőforrások + +Ha egy erőforrás nem található, az Aspose.HTML `ResourceNotFoundException`‑t dob. Tedd a `Save` hívást egy `try/catch` blokkba, ha felhasználó által generált HTML‑el dolgozol, amely külső URL‑kre hivatkozhat. + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## 4. lépés: A ZIP tartalmának programozott ellenőrzése (opcionális) + +Ha webszolgáltatást építesz, érdemes ellenőrizni, hogy a ZIP minden szükséges elemet tartalmaz-e, mielőtt továbbküldenéd. A .NET `System.IO.Compression` névtér lehetővé teszi, hogy a tartalmat kicsit megnézd anélkül, hogy a lemezre kicsomagolnád. + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +A kimenetnek a következőhöz hasonlónak kell lennie: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +Ez az utolsó ellenőrzés biztosítja, hogy a **HTML‑ből ZIP létrehozása** lépés sikeres volt. + +## Gyakori hibák és hogyan kerüld el őket + +| Tünet | Valószínű ok | Megoldás | +|-------|--------------|----------| +| A ZIP üres | `OutputStorage` nincs beállítva vagy `HtmlSaveOptions` kihagyva | Győződj meg róla, hogy `OutputStorage = zipStorage` és a `zipSaveOptions`‑t adod át a `Save`‑nek. | +| A képek hibásak, amikor megnyitod a `index.html`‑t | Az erőforráskezelő egy új üres streamet adott vissza | Adj vissza egy streamet, amely ténylegesen tartalmazza a kép bájtjait, vagy hagyd, hogy az Aspose automatikusan kezelje. | +| Memóriahiány hiba nagy oldalak esetén | Mindent egyetlen `MemoryStream`‑ben tárolni kiürítés nélkül | Használj `FileStream`‑et nagy erőforrásokhoz, vagy streamelj közvetlenül a HTTP válaszba. | +| Helytelen fájlkiterjesztés | `.html`‑ként mentve `.zip` helyett | Ellenőrizd, hogy a `FileStream` útvonal `.zip`‑re végződik. | + +## Teljes működő példa + +Alább a teljes, futtatható program. Másold be egy konzolprojektbe, add hozzá az Aspose.HTML NuGet csomagot, és futtasd. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +A program futtatása a következőhöz hasonló konzolkimenetet eredményez: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +Most már van egy **HTML‑t ZIP‑re konvertáló** csővezetéked, amelyet beágyazhatsz web API‑kba, háttérfeladatokba vagy asztali eszközökbe. + +## Következtetés + +Mindezt lefedtük, ami a **HTML‑t ZIP‑re konvertálásához** szükséges az Aspose.HTML használatával: a dokumentum létrehozása, az erőforrások memóriába irányítása, minden csomagolása egy ZIP‑be, és még a végeredmény programozott ellenőrzése is. A megközelítés könnyű, teljesen a folyamatban működik, és finomhangolt irányítást ad arról, hogyan tárolódik minden fájl. + +Készen állsz a következő kihívásra? Próbáld meg cserélni a `ZipOutputStorage`‑t egy egyedi `Stream`‑re, amely közvetlenül egy HTTP válaszba ír, vagy kísérletezz a képek helyben történő tömörítésével a végső archívum csökkentése érdekében. Ezek a kiegészítések lehetővé teszik, hogy **HTML‑ből ZIP‑et hozz létre** még igényesebb helyzetekben is. + +Van kérdésed vagy szeretnéd megosztani, hogyan adaptáltad ezt a mintát? Írj egy megjegyzést alább, és jó 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/rendering-html-documents/_index.md b/html/hungarian/net/rendering-html-documents/_index.md index 39529197d..776fd1ebe 100644 --- a/html/hungarian/net/rendering-html-documents/_index.md +++ b/html/hungarian/net/rendering-html-documents/_index.md @@ -44,6 +44,8 @@ Most, hogy be van állítva az Aspose.HTML for .NET, itt az ideje, hogy felfedez Tanulja meg az Aspose.HTML for .NET használatát: Manipuláljon HTML-t, konvertáljon különféle formátumokba stb. Merüljön el ebben az átfogó oktatóanyagban! ### [HTML renderelése PNG-ként – Teljes C# útmutató](./how-to-render-html-as-png-complete-c-guide/) Ismerje meg, hogyan renderelhet HTML-t PNG formátumba C#-ban az Aspose.HTML segítségével, lépésről lépésre útmutató. +### [HTML renderelése PNG-be C#-ban – Lépésről lépésre útmutató](./how-to-render-html-to-png-in-c-step-by-step-guide/) +Tanulja meg, hogyan renderelhet HTML-t PNG-be C#-ban az Aspose.HTML segítségével, részletes lépésről lépésre útmutató. ### [Az EPUB megjelenítése XPS-ként .NET-ben az Aspose.HTML segítségével](./render-epub-as-xps/) Ebben az átfogó oktatóanyagban megtudhatja, hogyan hozhat létre és jeleníthet meg HTML-dokumentumokat az Aspose.HTML for .NET segítségével. Merüljön el a HTML-kezelés, a webkaparás és egyebek világában. ### [Renderelési időtúllépés .NET-ben az Aspose.HTML-lel](./rendering-timeout/) diff --git a/html/hungarian/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/hungarian/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..87405a5f3 --- /dev/null +++ b/html/hungarian/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-03-26 +description: Hogyan rendereljünk HTML-t gyorsan és megbízhatóan. Tanulja meg, hogyan + konvertálja a HTML-t PNG-re, exportálja a HTML-t PNG-ként, alkalmazzon betűtípus-stílust, + és töltse be a HTML-dokumentumot az Aspose.Html segítségével. +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: hu +og_description: Hogyan rendereljük a HTML-t C#-ban az Aspose.Html segítségével. Ez + az útmutató megmutatja, hogyan konvertálhatja a HTML-t PNG-re, exportálhatja a HTML-t + PNG formátumba, alkalmazhat betűstílust, és betöltheti a HTML-dokumentumot. +og_title: HTML renderelése PNG-be C#-ban – Teljes útmutató +tags: +- C# +- Aspose.Html +- Image Rendering +title: HTML renderelése PNG‑be C#‑ban – Lépésről lépésre útmutató +url: /hu/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-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 C#‑ban – Lépésről‑lépésre útmutató + +Gondolkodtál már azon, **hogyan rendereljünk HTML‑t** egy tiszta PNG‑képre anélkül, hogy böngésző‑automatizálással bajlódnál? Nem vagy egyedül. Sok fejlesztőnek szüksége van *HTML‑t PNG‑re konvertálásra* e‑mail bélyegképekhez, jelentés‑pillanatképekhez vagy PDF‑előnézetekhez, és a szokásos headless‑browser trükkök nehézkesnek tűnnek. + +Ebben a tutorialban egy tiszta, könyvtár‑alapú megoldáson keresztül vezetünk végig, amely **betölti a HTML‑dokumentumot**, lehetővé teszi a **betűtípus‑stílus** és egyéb renderelési finomhangolások alkalmazását, majd **exportálja a HTML‑t PNG‑ként**. A végére egy kész, futtatható C#‑programod lesz, amely pontosan ezt csinálja, plusz néhány profi tipp, hogy elkerüld a gyakori buktatókat. + +## Előfeltételek + +- .NET 6.0 vagy újabb (a kód .NET Core‑on és .NET Framework‑ön is működik) +- Aspose.HTML for .NET NuGet csomag (`Aspose.Html` és `Aspose.Html.Rendering.Image`) +- Egy minta HTML‑fájl (`sample.html`) valahol, ahonnan hivatkozhatsz rá +- Alapvető ismeretek C#‑ból és Visual Studio‑ból (vagy bármely kedvelt IDE‑ből) + +> **Pro tipp:** Ha CI szerveren dolgozol, add hozzá az Aspose.HTML DLL‑eket a projekt `packages` mappájához, hogy a build önálló maradjon. + +## 1. lépés – A HTML‑dokumentum betöltése + +Az első dolog, amit meg kell tenned, **betölteni a HTML‑dokumentumot** egy `HTMLDocument` objektumba. Az Aspose.HTML beolvassa a fájlt, feloldja a relatív erőforrásokat, és egy DOM‑ot hoz létre, amelyet manipulálhatsz. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **Miért fontos:** A dokumentum betöltése az Aspose‑on keresztül biztosítja, hogy a külső CSS, képek és betűtípusok ugyanúgy legyenek feldolgozva, mint egy böngészőben, ami elengedhetetlen a későbbi **HTML‑t PNG‑re konvertálás** során. + +## 2. lépés – Renderelési beállítások konfigurálása (Betűtípus‑stílus és egyebek) + +Most állítjuk be az `ImageRenderingOptions`‑t. Itt **alkalmazhatod a betűtípus‑stílust**, választhatsz antialiasing‑ot, és meghatározhatod a kimeneti méreteket. Ezeknek a beállításoknak a finomhangolása drámaian javíthatja a végső PNG vizuális hűségét. + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### Mit csinálnak valójában az opciók + +| Opció | Hatás | Mikor változtass | +|--------|--------|-------------------| +| `UseAntialiasing` | Simítja a lépcsőzetes éleket alakzatok és szöveg esetén | Magas felbontású kimeneteknél | +| `TextOptions.UseHinting` | Javítja a kis betűméretek olvashatóságát | UI‑intenzív oldalak renderelésekor | +| `Font.Style / Size / Family` | Kényszeríti egy adott betűtípus használatát a lap CSS‑e nélkül | Céges arculat vagy ha az eredeti betűtípus nem elérhető | +| `Width` / `Height` | Beállítja a PNG vászonméretét | Egyeztesd a böngészőben látható viewport‑tal | + +## 3. lépés – A dokumentum renderelése PNG‑képpé (HTML‑t PNG‑re konvertálás) + +A dokumentummal és a beállításokkal készen, mindent átadunk az `ImageRenderer`‑nek. Ez az osztály közvetlenül egy fájlba streameli a renderelt bitmapet, így egy **HTML‑t PNG‑re konvertálás** műveletet kapunk, amely gyors és memória‑hatékony. + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **Szélsőséges eset:** Ha a HTML külső képekre hivatkozik HTTP‑n keresztül, győződj meg róla, hogy a szerver elérhető a kódot futtató gépről. Ellenkező esetben a renderelő helyőrzőket hagy a helyén. + +### Várt kimenet + +A program befejezése után egy `rendered.png` fájlt kell látnod ugyanabban a könyvtárban, ahol a `sample.html` található. Nyisd meg bármelyik képnézővel – egy pixel‑tökéletes pillanatképet kapsz a HTML‑oldalról, a **alkalmazott betűtípus‑stílussal** és antialiasing‑os grafikával. + +![Hogyan rendereljük a html példakimenetet](rendered.png "Hogyan rendereljük a html – PNG eredmény a minta HTML oldalból") + +*(Az alt szöveg tartalmazza a fő kulcsszót a SEO‑hoz.)* + +## 4. lépés – Az eredmény programozott ellenőrzése (opcionális) + +Néha szükség van arra, hogy megerősítsd, a PNG helyesen jött létre, különösen automatizált pipeline‑okban. Egy gyors fájlméret‑ellenőrzés vagy a kép betöltése a `System.Drawing`‑del elegendő bizalmat adhat. + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## Gyakori kérdések és buktatók + +- **Mi van, ha más képfájltípust szeretnék?** + Az `ImageRenderer` támogatja a JPEG‑et, BMP‑t és GIF‑et is. Csak változtasd meg a fájlkiterjesztést, és opcionálisan állítsd be az `ImageFormat`‑ot az `ImageRenderingOptions`‑ban. + +- **Renderelhetek csak egy konkrét HTML‑elemet?** + Igen. Használd a `htmlDoc.GetElementById("myDiv")`‑t, és add át azt az `ImageRenderer.Render(element)`‑nek. + +- **Kell-e az Arial betűtípust szállítanom az alkalmazással?** + Nem feltétlenül. Ha a célgép már tartalmazza az Arial‑t, a renderelő fel fogja használni. Ellenkező esetben beágyazhatsz egy egyedi web‑fontot a CSS `@font-face`‑szabályával a HTML‑ben. + +- **Hogyan viszonyul ez a headless Chrome‑hoz?** + Az Aspose.HTML egy tisztán .NET‑menedzselt könyvtár, így nincs szükség külső böngészőkre, driverekre vagy nehéz konténerekre. Általában gyorsabb kötegelt feladatoknál, bár a Chrome pontosabban renderelhet CSS3 animációkat. + +## Összegzés + +Áttekintettük, **hogyan rendereljük a HTML‑t** PNG‑képpé az Aspose.HTML for .NET segítségével, megmutatva, hogyan **töltsük be a HTML‑dokumentumot**, **alkalmazzuk a betűtípus‑stílust**, és **exportáljuk a HTML‑t PNG‑ként** néhány C#‑sorral. A teljes, futtatható példa a fenti kódrészletekben található, és most azonnal beillesztheted egy konzolprojektbe. + +### Mi a következő lépés? + +- Kísérletezz különböző `Width`/`Height` értékekkel, hogy bélyegképeket készíts. +- Válts JPEG‑re a kisebb fájlméret érdekében. +- Kombináld a több renderelt oldalt egy PDF‑be a `PdfRenderer`‑rel. +- Fedezd fel a CSS media query‑ket (`@media print`) a megjelenés testreszabásához. + +Nyugodtan finomítsd a renderelési beállításokat, cseréld a betűtípusokat, vagy adj dinamikusan generált HTML‑t. Ha elakadsz, írj egy megjegyzést lent – 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/indonesian/net/html-extensions-and-conversions/_index.md b/html/indonesian/net/html-extensions-and-conversions/_index.md index 6ac5368ff..c974e9697 100644 --- a/html/indonesian/net/html-extensions-and-conversions/_index.md +++ b/html/indonesian/net/html-extensions-and-conversions/_index.md @@ -73,6 +73,8 @@ Pelajari cara membuat dokumen HTML dengan teks berformat dan mengekspornya ke PD 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. +### [Mengonversi HTML ke ZIP di C# – Panduan Lengkap Langkah‑demi‑Langkah](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +Pelajari cara mengonversi file HTML menjadi arsip ZIP menggunakan C# dengan panduan lengkap langkah demi langkah menggunakan Aspose.HTML. ## Kesimpulan diff --git a/html/indonesian/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/indonesian/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..e2e810400 --- /dev/null +++ b/html/indonesian/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,286 @@ +--- +category: general +date: 2026-03-26 +description: Konversi HTML ke ZIP dengan cepat menggunakan Aspose.HTML. Pelajari cara + membuat ZIP dari HTML, mengelola sumber daya dalam memori, dan menghindari jebakan + umum. +draft: false +keywords: +- convert html to zip +- create zip from html +language: id +og_description: Konversi HTML ke ZIP dengan mudah. Panduan ini menunjukkan cara membuat + file ZIP dari HTML menggunakan Aspose.HTML, lengkap dengan kode dan tips. +og_title: Mengonversi HTML ke ZIP dalam C# – Panduan Pemrograman Lengkap +tags: +- C# +- Aspose.HTML +- file compression +title: Mengonversi HTML ke ZIP dalam C# – Panduan Langkah-demi-Langkah Lengkap +url: /id/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Convert HTML ke ZIP dalam C# – Panduan Lengkap Langkah-demi-Langkah + +Pernah perlu **mengkonversi HTML ke ZIP** tetapi tidak yakin API mana yang harus digunakan? Anda bukan satu-satunya—banyak pengembang mengalami hal ini ketika mereka mencoba mengirimkan sebuah halaman web beserta gambar, CSS, dan skripnya sebagai satu paket yang dapat diunduh. + +Berita baik? Dengan Aspose.HTML Anda dapat **membuat ZIP dari HTML** dalam beberapa baris kode, dan Anda akan mendapatkan kontrol penuh atas tempat setiap sumber daya berada (memori, disk, atau stream). Dalam tutorial ini kami akan membahas seluruh proses, mulai dari potongan HTML kecil hingga file ZIP siap diunduh, dan kami akan menjelaskan “mengapa” di balik setiap pilihan. + +## Apa yang Akan Anda Pelajari + +- Cara menyiapkan Aspose.HTML dalam proyek .NET. +- Cara menyimpan dokumen HTML dan semua sumber daya yang terhubung ke dalam `MemoryStream`. +- Cara mengemas HTML yang sama ke dalam arsip ZIP dengan satu panggilan. +- Tips menangani gambar besar, penyimpanan sumber daya khusus, dan penanganan kesalahan. +- Output konsol yang diharapkan dan cara memverifikasi isi ZIP. + +Tidak ada prasyarat yang rumit—hanya versi .NET terbaru (Core 3.1+ atau .NET 6) dan paket NuGet Aspose.HTML. Mari kita mulai. + +![convert html to zip illustration](convert-html-to-zip.png){alt="contoh mengkonversi html ke zip"} + +## Prerequisites + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6 SDK (or later) | Runtime terbaru memberikan penanganan `MemoryStream` yang paling efisien. | +| Aspose.HTML for .NET (NuGet) | Menyediakan kelas `HTMLDocument`, `HtmlSaveOptions`, dan `ZipOutputStorage` yang akan kami gunakan. | +| Basic C# knowledge | Anda perlu memahami pernyataan `using` dan stream. | + +Install the library with: + +```bash +dotnet add package Aspose.HTML +``` + +Setelah fondasi selesai, mari kita mulai mengkonversi HTML ke ZIP. + +## Step 1: Create a Simple HTML Document + +First we need an `HTMLDocument` instance. In a real project you’d probably load a file from disk, but for the demo we’ll embed a tiny page that references a local image called `logo.png`. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*Mengapa ini penting:* Dengan membangun dokumen dalam kode, kita menghindari ketergantungan file eksternal, menjadikan contoh ini sepenuhnya mandiri—sempurna untuk sitasi AI dan pengujian cepat. + +## Step 2: Save the HTML and Its Resources to a MemoryStream + +Sometimes you don’t want to write to disk at all—maybe you’re sending the ZIP over a web API. The `ResourceHandler` lets you direct every linked file (images, CSS, etc.) into a `MemoryStream` instead of the file system. + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**What you see:** The console prints the byte length of the generated HTML. Because we used a `MemoryStream`, nothing touches the disk, which means you can now **convert HTML to ZIP** entirely in memory if you wish. + +### Pro tip + +If your HTML contains large images, consider overriding `HandleResource` to compress the stream on the fly. That way the final ZIP stays lean. + +## Step 3: Pack the HTML and Its Resources into a ZIP Archive + +Aspose.HTML ships with a handy `ZipOutputStorage` class that automatically bundles the main HTML file and every referenced resource into a single ZIP file. Here’s how to use it: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**Result:** `output.zip` now contains: + +- `index.html` (the HTML we created) +- `logo.png` (the image referenced in the markup) + +You can open the ZIP with any archive manager and see that the HTML still points to `logo.png`, preserving the original page layout. + +### Edge case: Missing resources + +If a resource can’t be found, Aspose.HTML throws a `ResourceNotFoundException`. Wrap the `Save` call in a `try/catch` block if you’re dealing with user‑generated HTML that might reference external URLs. + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## Step 4: Verify the ZIP Contents Programmatically (Optional) + +If you’re building a web service, you might want to confirm the ZIP contains everything before sending it downstream. The .NET `System.IO.Compression` namespace lets you peek inside without extracting to disk. + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +You should see output similar to: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +That final check gives you confidence that the **create ZIP from HTML** step succeeded. + +## Common Pitfalls & How to Avoid Them + +| Gejala | Penyebab kemungkinan | Solusi | +|--------|----------------------|--------| +| ZIP kosong | `OutputStorage` tidak diatur atau `HtmlSaveOptions` diabaikan | Pastikan `OutputStorage = zipStorage` dan berikan `zipSaveOptions` ke `Save`. | +| Gambar muncul rusak saat membuka `index.html` | Handler sumber daya mengembalikan stream kosong baru | Kembalikan stream yang benar‑benar berisi byte gambar, atau biarkan Aspose menanganinya secara otomatis. | +| Exception out‑of‑memory pada halaman besar | Menyimpan semuanya dalam satu `MemoryStream` tanpa melakukan flush | Gunakan `FileStream` untuk sumber daya besar atau stream langsung ke respons HTTP. | +| Ekstensi file salah | Disimpan sebagai `.html` bukan `.zip` | Pastikan jalur `FileStream` berakhiran `.zip`. | + +## Full Working Example + +Below is the complete, ready‑to‑run program. Copy‑paste it into a console project, add the Aspose.HTML NuGet package, and run. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Running the program produces console output similar to: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +You now have a **convert HTML to ZIP** pipeline you can embed in web APIs, background jobs, or desktop tools. + +## Conclusion + +We’ve covered everything you need to **convert HTML to ZIP** using Aspose.HTML: creating the document, routing resources to memory, packing everything into a ZIP, and even verifying the result programmatically. The approach is lightweight, works entirely in‑process, and gives you fine‑grained control over how each file is stored. + +Ready for the next challenge? Try swapping `ZipOutputStorage` for a custom `Stream` that writes directly to an HTTP response, or experiment with compressing images on the fly to shrink the final archive. Those extensions will let you **create ZIP from HTML** in even more demanding scenarios. + +Got questions or want to share how you’ve adapted this pattern? Drop a comment below, and 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/indonesian/net/rendering-html-documents/_index.md b/html/indonesian/net/rendering-html-documents/_index.md index b7c974319..7c04ed749 100644 --- a/html/indonesian/net/rendering-html-documents/_index.md +++ b/html/indonesian/net/rendering-html-documents/_index.md @@ -68,6 +68,9 @@ Pelajari cara menggunakan Aspose untuk mengonversi HTML menjadi PNG dengan pandu ### [Cara Merender HTML ke PNG dengan Aspose – Panduan Lengkap](./how-to-render-html-to-png-with-aspose-complete-guide/) Pelajari cara merender HTML menjadi PNG menggunakan Aspose dengan panduan lengkap langkah demi langkah. +### [Cara Merender HTML ke PNG dalam C# – Panduan Langkah‑demi‑Langkah](./how-to-render-html-to-png-in-c-step-by-step-guide/) +Pelajari cara merender HTML menjadi PNG menggunakan C# dengan panduan langkah demi langkah yang mudah diikuti. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/indonesian/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/indonesian/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..7a865a4d0 --- /dev/null +++ b/html/indonesian/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-03-26 +description: Bagaimana cara merender HTML dengan cepat dan andal. Pelajari cara mengonversi + HTML ke PNG, mengekspor HTML sebagai PNG, menerapkan gaya font, dan memuat dokumen + HTML dengan Aspose.Html. +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: id +og_description: Cara merender HTML di C# menggunakan Aspose.Html. Panduan ini menunjukkan + cara mengonversi HTML ke PNG, mengekspor HTML sebagai PNG, menerapkan gaya font, + dan memuat dokumen HTML. +og_title: Cara Mengubah HTML menjadi PNG di C# – Tutorial Lengkap +tags: +- C# +- Aspose.Html +- Image Rendering +title: Cara Merender HTML ke PNG di C# – Panduan Langkah demi Langkah +url: /id/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Merender HTML ke PNG di C# – Panduan Langkah‑per‑Langkah + +Pernah bertanya‑tanya **bagaimana merender HTML** menjadi gambar PNG yang tajam tanpa harus berurusan dengan otomasi browser? Anda tidak sendirian. Banyak pengembang perlu *mengonversi HTML ke PNG* untuk thumbnail email, snapshot laporan, atau pratinjau PDF, dan trik browser headless biasanya terasa berat. + +Dalam tutorial ini kami akan membahas solusi berbasis pustaka yang **memuat dokumen HTML**, memungkinkan Anda **menerapkan gaya font** dan penyesuaian rendering lainnya, dan akhirnya **mengekspor HTML sebagai PNG**. Pada akhir tutorial Anda akan memiliki program C# yang siap dijalankan untuk melakukan hal tersebut, plus beberapa tips profesional agar terhindar dari jebakan umum. + +## Prasyarat + +- .NET 6.0 atau lebih baru (kode ini juga berfungsi pada .NET Core dan .NET Framework) +- Paket NuGet Aspose.HTML untuk .NET (`Aspose.Html` dan `Aspose.Html.Rendering.Image`) +- Sebuah file HTML contoh (`sample.html`) yang ditempatkan di lokasi yang dapat Anda referensikan +- Pengetahuan dasar tentang C# dan Visual Studio (atau IDE lain yang Anda sukai) + +> **Pro tip:** Jika Anda menjalankan di server CI, tambahkan DLL Aspose.HTML ke folder `packages` proyek Anda agar proses build tetap mandiri. + +## Langkah 1 – Memuat Dokumen HTML + +Hal pertama yang harus Anda lakukan adalah **memuat dokumen HTML** ke dalam objek `HTMLDocument`. Aspose.HTML membaca file, menyelesaikan sumber daya relatif, dan membuat DOM yang dapat Anda manipulasi. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **Mengapa ini penting:** Memuat dokumen melalui Aspose memastikan bahwa CSS eksternal, gambar, dan font diproses dengan cara yang sama seperti pada browser, yang esensial ketika Anda kemudian **mengonversi HTML ke PNG**. + +## Langkah 2 – Mengonfigurasi Opsi Rendering (Terapkan Gaya Font & Lainnya) + +Sekarang kita siapkan `ImageRenderingOptions`. Di sinilah Anda **menerapkan gaya font**, memilih antialiasing, dan menentukan dimensi output. Menyetel opsi‑opsi ini dapat secara dramatis meningkatkan kesetiaan visual PNG akhir. + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### Apa yang sebenarnya dilakukan opsi‑opsi tersebut + +| Opsi | Efek | Kapan diubah | +|--------|--------|----------------| +| `UseAntialiasing` | Menghaluskan tepi bergerigi pada bentuk dan teks | Untuk output beresolusi tinggi | +| `TextOptions.UseHinting` | Meningkatkan keterbacaan font kecil | Saat merender halaman yang banyak UI | +| `Font.Style / Size / Family` | Memaksa penggunaan font tertentu terlepas dari CSS halaman | Berguna untuk branding perusahaan atau ketika font asli tidak tersedia | +| `Width` / `Height` | Menetapkan ukuran kanvas PNG | Cocokkan dengan viewport yang Anda lihat di browser | + +## Langkah 3 – Merender Dokumen ke Gambar PNG (Konversi HTML ke PNG) + +Dengan dokumen dan opsi yang siap, kami menyerahkan semuanya ke `ImageRenderer`. Kelas ini menyalurkan bitmap yang dirender langsung ke file, memberikan operasi **konversi HTML ke PNG** yang cepat dan hemat memori. + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **Kasus tepi:** Jika HTML Anda merujuk gambar eksternal via HTTP, pastikan server dapat dijangkau dari mesin yang menjalankan kode ini. Jika tidak, renderer akan menampilkan placeholder. + +### Output yang diharapkan + +Setelah program selesai, Anda akan melihat file `rendered.png` di direktori yang sama dengan `sample.html`. Buka dengan penampil gambar apa pun – Anda akan mendapatkan snapshot pixel‑perfect dari halaman HTML, lengkap dengan **gaya font yang diterapkan** dan grafis antialias. + +![Contoh output render html](rendered.png "Cara merender html – Hasil PNG dari halaman HTML contoh") + +*(Teks alt mencakup kata kunci utama untuk SEO.)* + +## Langkah 4 – Memverifikasi Hasil Secara Programatis (Opsional) + +Terkadang Anda perlu memastikan bahwa PNG telah dibuat dengan benar, terutama dalam pipeline otomatis. Pemeriksaan ukuran byte cepat atau memuat gambar dengan `System.Drawing` dapat memberi Anda keyakinan. + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## Pertanyaan Umum & Hal-hal yang Perlu Diwaspadai + +- **Bagaimana jika saya membutuhkan format gambar lain?** + `ImageRenderer` juga mendukung JPEG, BMP, dan GIF. Cukup ubah ekstensi file dan, bila perlu, set `ImageFormat` di `ImageRenderingOptions`. + +- **Bisakah saya merender hanya elemen HTML tertentu?** + Ya. Gunakan `htmlDoc.GetElementById("myDiv")` dan berikan elemen tersebut ke `ImageRenderer.Render(element)`. + +- **Apakah saya harus menyertakan font Arial bersama aplikasi saya?** + Tidak selalu. Jika mesin target sudah memiliki Arial, renderer akan menggunakannya. Jika tidak, Anda dapat menyematkan web‑font khusus via CSS `@font-face` di HTML Anda. + +- **Bagaimana perbandingannya dengan headless Chrome?** + Aspose.HTML adalah pustaka .NET murni yang dikelola, jadi tidak memerlukan browser eksternal, driver, atau kontainer berat. Biasanya lebih cepat untuk pekerjaan batch, meskipun Chrome mungkin merender animasi CSS3 dengan lebih akurat. + +## Penutup + +Kami telah membahas **cara merender HTML** ke gambar PNG menggunakan Aspose.HTML untuk .NET, menunjukkan cara **memuat dokumen HTML**, **menerapkan gaya font**, dan **mengekspor HTML sebagai PNG** dengan hanya beberapa baris kode C#. Contoh lengkap yang dapat dijalankan ada di potongan kode di atas, dan Anda dapat menyalin‑tempelnya ke proyek konsol sekarang juga. + +### Apa selanjutnya? + +- Bereksperimen dengan nilai `Width`/`Height` yang berbeda untuk membuat thumbnail. +- Ganti format output ke JPEG untuk ukuran file yang lebih kecil. +- Gabungkan beberapa halaman yang dirender menjadi PDF menggunakan `PdfRenderer`. +- Jelajahi media query CSS (`@media print`) untuk menyesuaikan tampilan yang dirender. + +Silakan ubah opsi rendering, ganti font, atau beri HTML dinamis yang dihasilkan secara real‑time. Jika Anda menemui kendala, tinggalkan komentar di bawah—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/italian/net/html-extensions-and-conversions/_index.md b/html/italian/net/html-extensions-and-conversions/_index.md index fcf4daa30..9b467debd 100644 --- a/html/italian/net/html-extensions-and-conversions/_index.md +++ b/html/italian/net/html-extensions-and-conversions/_index.md @@ -73,6 +73,8 @@ 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. +### [Convertire HTML in ZIP in C# – Guida completa passo‑a‑passo](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +Scopri come convertire HTML in un archivio ZIP in C# con Aspose.HTML per .NET, guida passo passo completa. ## Conclusione diff --git a/html/italian/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/italian/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..a85f55570 --- /dev/null +++ b/html/italian/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,285 @@ +--- +category: general +date: 2026-03-26 +description: Converti rapidamente HTML in ZIP con Aspose.HTML. Scopri come creare + un ZIP da HTML, gestire le risorse in memoria e evitare gli errori più comuni. +draft: false +keywords: +- convert html to zip +- create zip from html +language: it +og_description: Converti HTML in ZIP senza sforzo. Questa guida ti mostra come creare + ZIP da HTML usando Aspose.HTML, con codice completo e consigli. +og_title: Converti HTML in ZIP in C# – Guida completa alla programmazione +tags: +- C# +- Aspose.HTML +- file compression +title: Converti HTML in ZIP in C# – Guida completa passo passo +url: /it/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Convertire HTML in ZIP in C# – Guida completa passo‑passo + +Hai mai avuto bisogno di **convertire HTML in ZIP** ma non sapevi quale API utilizzare? Non sei l'unico—molti sviluppatori incontrano questo ostacolo quando cercano di distribuire una pagina web con le sue immagini, CSS e script come un unico pacchetto scaricabile. + +La buona notizia? Con Aspose.HTML puoi **creare ZIP da HTML** in poche righe, e avrai il pieno controllo su dove risiede ogni risorsa (memoria, disco o stream). In questo tutorial percorreremo l'intero processo, da un piccolo frammento HTML a un file ZIP pronto per il download, e spiegheremo il “perché” dietro ogni scelta. + +## Cosa imparerai + +- Come configurare Aspose.HTML in un progetto .NET. +- Come salvare un documento HTML e tutte le sue risorse collegate in un `MemoryStream`. +- Come impacchettare lo stesso HTML in un archivio ZIP con una singola chiamata. +- Suggerimenti per gestire immagini di grandi dimensioni, archiviazione personalizzata delle risorse e gestione degli errori. +- Output console previsto e come verificare il contenuto dello ZIP. + +Nessun requisito complicato—solo una versione recente di .NET (Core 3.1+ o .NET 6) e il pacchetto NuGet Aspose.HTML. Immergiamoci. + +![illustrazione conversione html in zip](convert-html-to-zip.png){alt="esempio di conversione html in zip"} + +## Prerequisiti + +| Requisito | Perché è importante | +|-------------|----------------| +| .NET 6 SDK (o successivo) | Il runtime più recente ti offre la gestione più efficiente di `MemoryStream`. | +| Aspose.HTML per .NET (NuGet) | Fornisce le classi `HTMLDocument`, `HtmlSaveOptions` e `ZipOutputStorage` che utilizzeremo. | +| Conoscenza di base di C# | Avrai bisogno di comprendere le istruzioni `using` e gli stream. | + +Install the library with: + +```bash +dotnet add package Aspose.HTML +``` + +Ora che le basi sono pronte, iniziamo a convertire HTML in ZIP. + +## Passo 1: Creare un documento HTML semplice + +Per prima cosa abbiamo bisogno di un'istanza `HTMLDocument`. In un progetto reale probabilmente caricheresti un file dal disco, ma per la demo incorporeremo una piccola pagina che fa riferimento a un'immagine locale chiamata `logo.png`. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*Perché è importante:* Costruendo il documento in codice evitiamo dipendenze da file esterni, rendendo l'esempio completamente autonomo—perfetto per citazioni AI e per test rapidi. + +## Passo 2: Salvare l'HTML e le sue risorse in un MemoryStream + +A volte non vuoi scrivere su disco—potresti inviare lo ZIP tramite un'API web. Il `ResourceHandler` ti consente di indirizzare ogni file collegato (immagini, CSS, ecc.) in un `MemoryStream` invece che nel file system. + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**Ciò che vedi:** La console stampa la lunghezza in byte dell'HTML generato. Poiché abbiamo usato un `MemoryStream`, nulla tocca il disco, il che significa che ora puoi **convertire HTML in ZIP** interamente in memoria se lo desideri. + +### Consiglio professionale + +Se il tuo HTML contiene immagini di grandi dimensioni, considera di sovrascrivere `HandleResource` per comprimere lo stream al volo. In questo modo lo ZIP finale rimane leggero. + +## Passo 3: Impacchettare l'HTML e le sue risorse in un archivio ZIP + +Aspose.HTML include una comoda classe `ZipOutputStorage` che raggruppa automaticamente il file HTML principale e ogni risorsa referenziata in un unico file ZIP. Ecco come usarla: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**Risultato:** `output.zip` ora contiene: + +- `index.html` (l'HTML che abbiamo creato) +- `logo.png` (l'immagine referenziata nel markup) + +Puoi aprire lo ZIP con qualsiasi gestore di archivi e vedere che l'HTML punta ancora a `logo.png`, preservando il layout originale della pagina. + +### Caso limite: Risorse mancanti + +Se una risorsa non può essere trovata, Aspose.HTML lancia una `ResourceNotFoundException`. Avvolgi la chiamata `Save` in un blocco `try/catch` se stai gestendo HTML generato dagli utenti che potrebbe fare riferimento a URL esterni. + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## Passo 4: Verificare il contenuto dello ZIP programmaticamente (Opzionale) + +Se stai costruendo un servizio web, potresti voler confermare che lo ZIP contenga tutto prima di inviarlo a valle. Lo spazio dei nomi .NET `System.IO.Compression` ti permette di dare un'occhiata all'interno senza estrarre su disco. + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +Dovresti vedere un output simile a: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +Questa verifica finale ti dà la certezza che il passo **creare ZIP da HTML** sia riuscito. + +## Problemi comuni e come evitarli + +| Sintomo | Probabile causa | Correzione | +|---------|----------------|------------| +| ZIP è vuoto | `OutputStorage` non impostato o `HtmlSaveOptions` omesso | Assicurati che `OutputStorage = zipStorage` e passa `zipSaveOptions` a `Save`. | +| Le immagini appaiono rotte aprendo `index.html` | Il gestore delle risorse ha restituito un nuovo stream vuoto | Restituisci uno stream che contenga effettivamente i byte dell'immagine, oppure lascia che Aspose lo gestisca automaticamente. | +| Eccezione Out‑of‑memory su pagine grandi | Memorizzare tutto in un unico `MemoryStream` senza flush | Usa `FileStream` per risorse grandi o stream direttamente alla risposta HTTP. | +| Estensione file errata | Salvato come `.html` invece di `.zip` | Verifica che il percorso del `FileStream` termini con `.zip`. | + +## Esempio completo funzionante + +Di seguito è riportato il programma completo, pronto per l'esecuzione. Copialo e incollalo in un progetto console, aggiungi il pacchetto NuGet Aspose.HTML e avvialo. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +L'esecuzione del programma produce un output console simile a: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +Ora hai una pipeline **convertire HTML in ZIP** che puoi incorporare in API web, processi in background o strumenti desktop. + +## Conclusione + +Abbiamo coperto tutto ciò di cui hai bisogno per **convertire HTML in ZIP** usando Aspose.HTML: creare il documento, indirizzare le risorse in memoria, impacchettare tutto in uno ZIP e persino verificare il risultato programmaticamente. L'approccio è leggero, funziona interamente in‑processo e ti offre un controllo dettagliato su come viene memorizzato ogni file. + +Pronto per la prossima sfida? Prova a sostituire `ZipOutputStorage` con uno `Stream` personalizzato che scrive direttamente a una risposta HTTP, oppure sperimenta la compressione delle immagini al volo per ridurre l'archivio finale. queste estensioni ti permetteranno di **creare ZIP da HTML** in scenari ancora più esigenti. + +Hai domande o vuoi condividere come hai adattato questo modello? Lascia un commento qui sotto, e buona programmazione! + +{{< /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/rendering-html-documents/_index.md b/html/italian/net/rendering-html-documents/_index.md index 1239e762f..fbfd9b0d5 100644 --- a/html/italian/net/rendering-html-documents/_index.md +++ b/html/italian/net/rendering-html-documents/_index.md @@ -44,6 +44,8 @@ Ora che hai configurato Aspose.HTML per .NET, è il momento di esplorare i tutor Impara a lavorare con Aspose.HTML per .NET: manipola HTML, converti in vari formati e altro ancora. Immergiti in questo tutorial completo! ### [Come rendere HTML come PNG – Guida completa C#](./how-to-render-html-as-png-complete-c-guide/) Scopri come convertire HTML in PNG usando C# con Aspose.HTML. Segui la guida passo passo per risultati perfetti! +### [Come rendere HTML in PNG con C# – Guida passo‑passo](./how-to-render-html-to-png-in-c-step-by-step-guide/) +Scopri come convertire HTML in PNG usando C# con Aspose.HTML. Segui la guida passo passo per risultati perfetti! ### [Come rendere HTML in PNG con Aspose – Guida completa](./how-to-render-html-to-png-with-aspose-complete-guide/) Scopri come convertire facilmente file HTML in PNG usando Aspose.HTML con questa guida completa passo‑passo. ### [Come usare Aspose per rendere HTML in PNG – Guida passo‑passo](./how-to-use-aspose-to-render-html-to-png-step-by-step-guide/) diff --git a/html/italian/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/italian/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..1d3714921 --- /dev/null +++ b/html/italian/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-03-26 +description: Come rendere l'HTML rapidamente e in modo affidabile. Impara a convertire + l'HTML in PNG, esportare l'HTML come PNG, applicare lo stile del carattere e caricare + il documento HTML con Aspose.Html. +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: it +og_description: Come renderizzare HTML in C# usando Aspose.Html. Questa guida ti mostra + come convertire HTML in PNG, esportare HTML come PNG, applicare lo stile del font + e caricare un documento HTML. +og_title: Come rendere HTML in PNG con C# – Tutorial completo +tags: +- C# +- Aspose.Html +- Image Rendering +title: Come convertire HTML in PNG in C# – Guida passo‑passo +url: /it/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come rendere HTML in PNG con C# – Guida passo‑passo + +Ti sei mai chiesto **come rendere HTML** in un’immagine PNG nitida senza dover combattere con l’automazione del browser? Non sei solo. Molti sviluppatori hanno bisogno di *convertire HTML in PNG* per miniature di email, snapshot di report o anteprime PDF, e i soliti trucchi con browser headless sembrano troppo ingombranti. + +In questo tutorial vedremo una soluzione pulita, basata su libreria, che **carica un documento HTML**, ti permette di **applicare lo stile del font** e altri aggiustamenti di rendering, e infine **esporta HTML come PNG**. Alla fine avrai un programma C# pronto all’uso che fa esattamente questo, più alcuni consigli professionali per evitare le insidie più comuni. + +## Prerequisiti + +- .NET 6.0 o successivo (il codice funziona anche su .NET Core e .NET Framework) +- Pacchetto NuGet Aspose.HTML for .NET (`Aspose.Html` e `Aspose.Html.Rendering.Image`) +- Un file HTML di esempio (`sample.html`) posizionato in una cartella a cui puoi fare riferimento +- Familiarità di base con C# e Visual Studio (o qualsiasi IDE tu preferisca) + +> **Pro tip:** Se lavori su un server CI, aggiungi i DLL di Aspose.HTML alla cartella `packages` del tuo progetto così la build rimane autonoma. + +## Step 1 – Carica il documento HTML + +La prima cosa da fare è **caricare il documento HTML** in un oggetto `HTMLDocument`. Aspose.HTML legge il file, risolve le risorse relative e crea un DOM che puoi manipolare. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **Perché è importante:** Caricare il documento tramite Aspose garantisce che CSS, immagini e font esterni vengano elaborati nello stesso modo di un browser, cosa fondamentale quando in seguito **converti HTML in PNG**. + +## Step 2 – Configura le opzioni di rendering (Applica lo stile del font e altro) + +Ora impostiamo `ImageRenderingOptions`. È qui che **applichi lo stile del font**, scegli l’antialiasing e definisci le dimensioni di output. Regolare queste impostazioni può migliorare drasticamente la fedeltà visiva del PNG finale. + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### Cosa fanno realmente le opzioni + +| Opzione | Effetto | Quando modificarla | +|--------|--------|----------------| +| `UseAntialiasing` | Smussa i bordi seghettati di forme e testo | Per output ad alta risoluzione | +| `TextOptions.UseHinting` | Migliora la leggibilità di font piccoli | Quando si renderizzano pagine ricche di UI | +| `Font.Style / Size / Family` | Forza un font specifico indipendentemente dal CSS della pagina | Utile per branding aziendale o quando il font originale non è disponibile | +| `Width` / `Height` | Imposta la dimensione della tela del PNG | Abbina il viewport che vedresti in un browser | + +## Step 3 – Renderizza il documento in un’immagine PNG (Converti HTML in PNG) + +Con il documento e le opzioni pronte, passiamo tutto a `ImageRenderer`. Questa classe trasmette il bitmap renderizzato direttamente su file, offrendoci un’operazione **converti HTML in PNG** veloce ed efficiente in termini di memoria. + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **Caso limite:** Se il tuo HTML fa riferimento a immagini esterne via HTTP, assicurati che il server sia raggiungibile dalla macchina che esegue questo codice. Altrimenti il renderer lascerà dei segnaposto. + +### Output previsto + +Al termine del programma, dovresti vedere un file `rendered.png` nella stessa directory di `sample.html`. Aprilo con qualsiasi visualizzatore di immagini – otterrai uno snapshot pixel‑perfect della pagina HTML, completo di **stile del font applicato** e grafica antialiasata. + +![Esempio di output di render html](rendered.png "Come renderizzare html – risultato PNG della pagina HTML di esempio") + +*(Il testo alternativo include la keyword principale per SEO.)* + +## Step 4 – Verifica il risultato programmaticamente (Opzionale) + +A volte è necessario confermare che il PNG sia stato creato correttamente, soprattutto in pipeline automatizzate. Un rapido controllo della dimensione in byte o il caricamento dell’immagine con `System.Drawing` può darti la certezza necessaria. + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## Domande frequenti e trappole comuni + +- **E se avessi bisogno di un formato immagine diverso?** + `ImageRenderer` supporta anche JPEG, BMP e GIF. Basta cambiare l’estensione del file e, opzionalmente, impostare `ImageFormat` in `ImageRenderingOptions`. + +- **Posso renderizzare solo un elemento HTML specifico?** + Sì. Usa `htmlDoc.GetElementById("myDiv")` e passa quell’elemento a `ImageRenderer.Render(element)`. + +- **Devo includere il font Arial nella mia app?** + Non necessariamente. Se la macchina di destinazione ha già Arial, il renderer lo utilizzerà. Altrimenti puoi incorporare un web‑font personalizzato tramite CSS `@font-face` nel tuo HTML. + +- **Come si confronta con Chrome headless?** + Aspose.HTML è una libreria .NET puramente gestita, quindi non serve alcun browser esterno, driver o container ingombrante. È tipicamente più veloce per lavori batch, anche se Chrome può rendere le animazioni CSS3 in modo più fedele. + +## Conclusione + +Abbiamo coperto **come rendere HTML** in un’immagine PNG usando Aspose.HTML per .NET, mostrandoti come **caricare il documento HTML**, **applicare lo stile del font** e **esportare HTML come PNG** con poche righe di codice C#. L’esempio completo e funzionante è nei frammenti sopra, e puoi copiarlo e incollarlo in un progetto console subito. + +### Qual è il prossimo passo? + +- Sperimenta con valori diversi di `Width`/`Height` per creare miniature. +- Cambia il formato di output in JPEG per ridurre le dimensioni del file. +- Combina più pagine renderizzate in un PDF usando `PdfRenderer`. +- Esplora le media query CSS (`@media print`) per personalizzare la vista renderizzata. + +Sentiti libero di modificare le opzioni di rendering, scambiare i font o fornire HTML dinamico generato al volo. Se incontri problemi, lascia un commento qui sotto—buon 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/japanese/net/html-extensions-and-conversions/_index.md b/html/japanese/net/html-extensions-and-conversions/_index.md index 4110fd8e8..71b5923fb 100644 --- a/html/japanese/net/html-extensions-and-conversions/_index.md +++ b/html/japanese/net/html-extensions-and-conversions/_index.md @@ -78,6 +78,8 @@ C# と Aspose.HTML を使用して、HTML コンテンツを Zip アーカイブ ### [C# で HTML を ZIP に保存 – 完全インメモリ例](./save-html-to-zip-in-c-complete-in-memory-example/) Aspose.HTML for .NET を使用して、HTML をメモリ内で ZIP アーカイブに保存する手順をステップバイステップで解説します。 +### [C# で HTML を ZIP に変換する – 完全ステップバイステップガイド](./convert-html-to-zip-in-c-complete-step-by-step-guide/) + ## 結論 結論として、HTML の拡張と変換は、現代の Web 開発に不可欠な要素です。Aspose.HTML for .NET はプロセスを簡素化し、あらゆるレベルの開発者が利用できるようにします。当社のチュートリアルに従うことで、幅広いスキルを備えた熟練した Web 開発者になるための道を順調に進むことができます。 diff --git a/html/japanese/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/japanese/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..d82d8b5bd --- /dev/null +++ b/html/japanese/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,283 @@ +--- +category: general +date: 2026-03-26 +description: Aspose.HTML を使用して HTML を迅速に ZIP に変換します。HTML から ZIP を作成する方法、メモリ内でリソースを処理する方法、そして一般的な落とし穴を回避する方法を学びましょう。 +draft: false +keywords: +- convert html to zip +- create zip from html +language: ja +og_description: HTML を簡単に ZIP に変換。このガイドでは、Aspose.HTML を使用して HTML から ZIP を作成する方法を、完全なコードとヒントとともに紹介します。 +og_title: C#でHTMLをZIPに変換 – 完全プログラミングウォークスルー +tags: +- C# +- Aspose.HTML +- file compression +title: C#でHTMLをZIPに変換する – 完全ステップバイステップガイド +url: /ja/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# で HTML を ZIP に変換 – 完全ステップバイステップガイド + +HTML を ZIP に **変換したい** が、どの API を使えば良いか分からないことはありませんか? 同じ壁にぶつかる開発者は多いです。ウェブページとその画像、CSS、スクリプトを 1 つのダウンロード可能なパッケージとして配布したいときに特にです。 + +良いニュースは、Aspose.HTML を使えば **HTML から ZIP を作成** でき、リソースの保存先(メモリ、ディスク、またはストリーム)を完全にコントロールできます。このチュートリアルでは、極小の HTML スニペットからダウンロード可能な ZIP ファイルが完成するまでの全工程を解説し、各選択肢の「なぜ」を説明します。 + +## 学べること + +- .NET プロジェクトへの Aspose.HTML の設定方法 +- HTML ドキュメントとすべてのリンクリソースを `MemoryStream` に保存する方法 +- 同じ HTML を 1 回の呼び出しで ZIP アーカイブに詰める方法 +- 大きな画像やカスタムリソース保存、エラーハンドリングのコツ +- コンソール出力例と ZIP 内容の検証方法 + +特別な前提条件は不要です。最新の .NET(Core 3.1+ または .NET 6)と Aspose.HTML NuGet パッケージさえあれば始められます。さっそく見ていきましょう。 + +![convert html to zip illustration](convert-html-to-zip.png){alt="HTML を ZIP に変換する例"} + +## 前提条件 + +| 必要条件 | 理由 | +|-------------|----------------| +| .NET 6 SDK(以降) | 最新ランタイムは最も効率的な `MemoryStream` 処理を提供します。 | +| Aspose.HTML for .NET(NuGet) | 使用する `HTMLDocument`、`HtmlSaveOptions`、`ZipOutputStorage` クラスを提供します。 | +| 基本的な C# 知識 | `using` 文やストリームの扱いを理解している必要があります。 | + +ライブラリのインストールは以下の通りです: + +```bash +dotnet add package Aspose.HTML +``` + +基礎が整ったので、HTML を ZIP に変換していきましょう。 + +## 手順 1: シンプルな HTML ドキュメントを作成 + +まず `HTMLDocument` インスタンスを作ります。実際のプロジェクトではディスクからファイルを読み込むことが多いですが、デモではローカル画像 `logo.png` を参照する小さなページを埋め込みます。 + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*ポイント:* コード内でドキュメントを構築することで外部ファイルへの依存を排除し、例が完全に自己完結します。AI の引用や手早いテストに最適です。 + +## 手順 2: HTML とリソースを MemoryStream に保存 + +ディスクに書き込まずに処理したいことがあります。たとえば ZIP を Web API で返す場合です。`ResourceHandler` を使えば、リンクされたすべてのファイル(画像、CSS など)をファイルシステムではなく `MemoryStream` に振り向けられます。 + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**出力例:** コンソールに生成された HTML のバイト長が表示されます。`MemoryStream` を使用したためディスクに何も書き込まれず、**HTML を ZIP に変換** を完全にメモリ上で行うことが可能です。 + +### プロのコツ + +HTML に大容量画像が含まれる場合は、`HandleResource` をオーバーライドしてストリームをリアルタイムで圧縮すると、最終的な ZIP が軽量になります。 + +## 手順 3: HTML とリソースを ZIP アーカイブに詰める + +Aspose.HTML には `ZipOutputStorage` クラスが用意されており、メイン HTML ファイルとすべての参照リソースを自動的に 1 つの ZIP にまとめられます。使用例は以下の通りです: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**結果:** `output.zip` には次のファイルが含まれます。 + +- `index.html`(作成した HTML) +- `logo.png`(マークアップで参照した画像) + +任意のアーカイブマネージャで ZIP を開くと、HTML が依然として `logo.png` を指しており、元のページレイアウトが保持されていることが確認できます。 + +### エッジケース: リソースが見つからない場合 + +リソースが見つからないと Aspose.HTML は `ResourceNotFoundException` をスローします。外部 URL を参照する可能性のあるユーザー生成 HTML を扱う場合は、`Save` 呼び出しを `try/catch` で囲んでください。 + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## 手順 4: ZIP 内容をプログラムから検証(任意) + +Web サービスを構築している場合、送信前に ZIP にすべてが含まれているか確認したいことがあります。.NET の `System.IO.Compression` 名前空間を使えば、ディスクに展開せずに内部を覗くことができます。 + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +期待される出力は次のようになります: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +この最終チェックにより、**HTML から ZIP を作成** ステップが正常に完了したことを確信できます。 + +## よくある落とし穴と回避策 + +| 症状 | 主な原因 | 対策 | +|---------|--------------|-----| +| ZIP が空 | `OutputStorage` が設定されていない、または `HtmlSaveOptions` が省略されている | `OutputStorage = zipStorage` を設定し、`zipSaveOptions` を `Save` に渡す | +| `index.html` を開いたとき画像が壊れる | ResourceHandler が空のストリームを返した | 画像バイトを含むストリームを返すか、Aspose に自動処理させる | +| 大規模ページで Out‑of‑memory 例外 | すべてを単一の `MemoryStream` に保持し、フラッシュしない | 大容量リソースは `FileStream` を使用するか、直接 HTTP 応答へストリームする | +| ファイル拡張子が間違う | `.html` で保存してしまっている | `FileStream` のパスが `.zip` で終わっているか確認する | + +## 完全動作サンプル + +以下はそのままコンソールプロジェクトに貼り付けて実行できる完全版プログラムです。Aspose.HTML NuGet パッケージを追加したらすぐに動作します。 + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +プログラム実行時のコンソール出力例: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +これで **HTML を ZIP に変換** するパイプラインが完成し、Web API、バックグラウンドジョブ、デスクトップツールなどに組み込めます。 + +## 結論 + +Aspose.HTML を使った **HTML から ZIP への変換** 手順をすべて網羅しました:ドキュメント作成、リソースのメモリ振り向け、ZIP へのパッキング、そしてプログラムからの検証。軽量でプロセス内完結型のアプローチは、各ファイルの保存方法を細かく制御できる点が魅力です。 + +次のステップに挑戦したいですか? `ZipOutputStorage` をカスタム `Stream` に置き換えて HTTP 応答へ直接書き込んだり、画像をリアルタイムで圧縮して最終アーカイブをさらに小さくしたりしてみてください。そうすれば、さらに厳しいシナリオでも **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/japanese/net/rendering-html-documents/_index.md b/html/japanese/net/rendering-html-documents/_index.md index 0d786f01c..40a9acba5 100644 --- a/html/japanese/net/rendering-html-documents/_index.md +++ b/html/japanese/net/rendering-html-documents/_index.md @@ -68,6 +68,9 @@ Aspose.HTML for .NET を使い、HTML を高品質な PNG 画像に変換する ### [HTML から PNG を作成 – 完全な C# レンダリング ガイド](./create-png-from-html-full-c-rendering-guide/) Aspose.HTML for .NET を使用して、HTML を PNG 画像に変換する完全な C# ガイドです。ステップバイステップで解説します。 +### [C# で HTML を PNG にレンダリングする方法 – ステップバイステップ ガイド](./how-to-render-html-to-png-in-c-step-by-step-guide/) +C# を使用して HTML を PNG 画像に変換する手順を詳しく解説します。初心者でも簡単に実装できます。 + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/japanese/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/japanese/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..d5a7377b5 --- /dev/null +++ b/html/japanese/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,184 @@ +--- +category: general +date: 2026-03-26 +description: HTML を迅速かつ確実にレンダリングする方法。HTML を PNG に変換し、PNG としてエクスポートし、フォントスタイルを適用し、Aspose.Html + で HTML ドキュメントを読み込む方法を学びましょう。 +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: ja +og_description: Aspose.Html を使用して C# で HTML をレンダリングする方法。このガイドでは、HTML を PNG に変換する方法、HTML + を PNG としてエクスポートする方法、フォントスタイルを適用する方法、そして HTML ドキュメントを読み込む方法を示します。 +og_title: C#でHTMLをPNGにレンダリングする方法 – 完全チュートリアル +tags: +- C# +- Aspose.Html +- Image Rendering +title: C#でHTMLをPNGにレンダリングする方法 – ステップバイステップガイド +url: /ja/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#でHTMLをPNGにレンダリングする方法 – ステップバイステップガイド + +**HTMLをレンダリング**して、ブラウザ自動化に悩むことなく鮮明なPNG画像にする方法を考えたことはありますか?あなただけではありません。多くの開発者がメールのサムネイル、レポートのスナップショット、PDFプレビューなどのために*HTMLをPNGに変換*する必要があり、従来のヘッドレスブラウザ手法は重く感じられます。 + +このチュートリアルでは、**HTMLドキュメントをロード**し、**フォントスタイルを適用**したりその他のレンダリング調整を行い、最終的に**HTMLをPNGとしてエクスポート**する、クリーンなライブラリベースのソリューションを順を追って解説します。最後まで実行すれば、すぐに使えるC#プログラムが完成し、一般的な落とし穴を回避するためのプロチップもいくつか紹介します。 + +## Prerequisites + +- .NET 6.0以降(コードは.NET Coreや.NET Frameworkでも動作します) +- Aspose.HTML for .NET NuGetパッケージ(`Aspose.Html` と `Aspose.Html.Rendering.Image`) +- 参照できる場所に配置したサンプルHTMLファイル(`sample.html`) +- C# と Visual Studio(またはお好みのIDE)に関する基本的な知識 + +> **Pro tip:** CIサーバー上の場合、Aspose.HTML DLL をプロジェクトの `packages` フォルダーに追加して、ビルドが自己完結型になるようにしてください。 + +## Step 1 – Load the HTML Document + +最初にすべきことは、**HTMLドキュメントを** `HTMLDocument` オブジェクトに **ロード** することです。Aspose.HTML はファイルを読み込み、相対リソースを解決し、操作可能な DOM を作成します。 + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **Why this matters:** Aspose を通してドキュメントをロードすると、外部CSS、画像、フォントがブラウザと同様に処理されるため、後で**HTMLをPNGに変換**する際に重要です。 + +## Step 2 – Configure Rendering Options (Apply Font Style & More) + +次に `ImageRenderingOptions` を設定します。ここで **フォントスタイルを適用** し、アンチエイリアスを選択し、出力サイズを定義します。これらの設定を調整することで、最終的なPNGの視覚的忠実度が大幅に向上します。 + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### What the options actually do + +| オプション | 効果 | 変更するタイミング | +|------------|------|-------------------| +| `UseAntialiasing` | 形状やテキストのギザギザしたエッジを滑らかにします | 高解像度出力の場合 | +| `TextOptions.UseHinting` | 小さなフォントの可読性を向上させます | UIが多いページをレンダリングする際 | +| `Font.Style / Size / Family` | ページのCSSに関係なく特定のフォントを強制します | 企業ブランディングや元のフォントが利用できない場合に便利です | +| `Width` / `Height` | PNGのキャンバスサイズを設定します | ブラウザで見るビューポートに合わせます | + +## Step 3 – Render the Document to a PNG Image (Convert HTML to PNG) + +ドキュメントとオプションの準備ができたら、すべてを `ImageRenderer` に渡します。このクラスはレンダリングされたビットマップを直接ファイルにストリームし、**HTMLをPNGに変換**する操作を高速かつメモリ効率良く実行します。 + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **Edge case:** HTML が HTTP 経由で外部画像を参照している場合、コードを実行するマシンからサーバーにアクセスできることを確認してください。そうでなければ、レンダラはプレースホルダーのままになります。 + +### Expected output + +プログラムが終了すると、`sample.html` と同じディレクトリに `rendered.png` ファイルが生成されます。任意の画像ビューアで開くと、**適用されたフォントスタイル** とアンチエイリアス処理が施された、HTMLページのピクセルパーフェクトなスナップショットが確認できます。 + +![HTMLレンダリング例の出力](rendered.png "HTMLのレンダリング – サンプルHTMLページのPNG結果") + +*(代替テキストにはSEO向けの主要キーワードが含まれています。)* + +## Step 4 – Verify the Result Programmatically (Optional) + +自動化パイプラインなどでPNGが正しく作成されたか確認したいことがあります。バイトサイズの簡易チェックや `System.Drawing` で画像を読み込むだけでも信頼性を確保できます。 + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## Common Questions & Gotchas + +- **別の画像形式が必要な場合は?** + `ImageRenderer` は JPEG、BMP、GIF もサポートしています。ファイル拡張子を変更し、必要に応じて `ImageRenderingOptions` の `ImageFormat` を設定してください。 + +- **特定のHTML要素だけをレンダリングできますか?** + はい。`htmlDoc.GetElementById("myDiv")` を使用し、その要素を `ImageRenderer.Render(element)` に渡します。 + +- **Arial フォントをアプリに同梱しなければならないですか?** + 必要必ずしもありません。対象マシンに Arial が既にインストールされていればレンダラが自動で使用します。そうでなければ、HTML の CSS `@font-face` でカスタムWebフォントを埋め込むことができます。 + +- **ヘッドレス Chrome と比べてどうですか?** + Aspose.HTML は純粋にマネージドな .NET ライブラリなので、外部ブラウザやドライバ、重いコンテナは不要です。バッチジョブでは通常高速ですが、Chrome の方が CSS3 アニメーションをより忠実にレンダリングできる場合があります。 + +## Wrap‑Up + +Aspose.HTML for .NET を使用して **HTMLをPNGにレンダリング**する方法を解説し、**HTMLドキュメントのロード**、**フォントスタイルの適用**、**HTMLをPNGとしてエクスポート**する手順を数行の C# コードで示しました。完全な実行可能サンプルは上記のスニペットにあり、今すぐコンソールプロジェクトにコピペして使用できます。 + +### What’s next? + +- `Width`/`Height` の異なる値を試してサムネイルを作成します。 +- 出力形式を JPEG に切り替えてファイルサイズを小さくします。 +- `PdfRenderer` を使用して複数のレンダリングページを PDF に結合します。 +- CSSメディアクエリ(`@media print`)を調査してレンダリングビューを調整します。 + +レンダリングオプションを自由に調整したり、フォントを入れ替えたり、動的に生成された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..962cf7dcd 100644 --- a/html/korean/net/html-extensions-and-conversions/_index.md +++ b/html/korean/net/html-extensions-and-conversions/_index.md @@ -66,13 +66,15 @@ 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 압축 파일로 저장하는 단계별 가이드를 제공합니다. +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 파일로 저장하는 방법을 단계별로 안내합니다. +### [C#에서 HTML을 ZIP으로 변환 – 완전 단계별 가이드](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +C#와 Aspose.HTML을 사용해 HTML 파일을 ZIP 압축 파일로 저장하는 전체 단계별 가이드입니다. ## 결론 diff --git a/html/korean/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/korean/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..d5063a868 --- /dev/null +++ b/html/korean/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,285 @@ +--- +category: general +date: 2026-03-26 +description: Aspose.HTML를 사용하여 HTML을 빠르게 ZIP으로 변환하세요. HTML에서 ZIP을 만드는 방법, 메모리 내에서 + 리소스를 처리하는 방법, 그리고 일반적인 함정을 피하는 방법을 배워보세요. +draft: false +keywords: +- convert html to zip +- create zip from html +language: ko +og_description: HTML을 손쉽게 ZIP으로 변환하세요. 이 가이드는 Aspose.HTML을 사용해 HTML에서 ZIP을 만드는 방법을 + 완전한 코드와 팁과 함께 보여줍니다. +og_title: C#으로 HTML을 ZIP으로 변환 – 전체 프로그래밍 가이드 +tags: +- C# +- Aspose.HTML +- file compression +title: C#에서 HTML을 ZIP으로 변환하기 – 완전한 단계별 가이드 +url: /ko/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#에서 HTML을 ZIP으로 변환 – 완전 단계별 가이드 + +HTML을 **ZIP으로 변환**해야 할 때, 어떤 API를 사용해야 할지 몰라 고민한 적 있나요? 당신만 그런 것이 아닙니다—많은 개발자들이 이미지, CSS, 스크립트를 포함한 웹 페이지를 하나의 다운로드 가능한 패키지로 제공하려 할 때 이 문제에 부딪힙니다. + +좋은 소식은? Aspose.HTML을 사용하면 **HTML에서 ZIP 만들기**를 몇 줄의 코드로 구현할 수 있으며, 각 리소스가 메모리, 디스크 또는 스트림 중 어디에 저장될지 완벽하게 제어할 수 있습니다. 이 튜토리얼에서는 아주 작은 HTML 스니펫부터 다운로드 가능한 ZIP 파일이 완성될 때까지 전체 과정을 단계별로 살펴보고, 각 선택의 “왜”를 설명합니다. + +## 배울 내용 + +- .NET 프로젝트에 Aspose.HTML을 설정하는 방법 +- HTML 문서와 모든 연결된 리소스를 `MemoryStream`에 저장하는 방법 +- 한 번의 호출로 동일한 HTML을 ZIP 아카이브에 압축하는 방법 +- 큰 이미지, 사용자 정의 리소스 저장, 오류 처리 팁 +- 예상 콘솔 출력 및 ZIP 내용 확인 방법 + +특별한 사전 조건은 없습니다—최근 버전의 .NET (Core 3.1+ 또는 .NET 6)과 Aspose.HTML NuGet 패키지만 있으면 됩니다. 바로 시작해 보겠습니다. + +![HTML을 ZIP으로 변환 예시](convert-html-to-zip.png){alt="HTML을 ZIP으로 변환 예시"} + +## 사전 요구 사항 + +| 요구 사항 | 중요한 이유 | +|-------------|----------------| +| .NET 6 SDK (or later) | 최신 런타임은 가장 효율적인 `MemoryStream` 처리를 제공합니다. | +| Aspose.HTML for .NET (NuGet) | 우리가 사용할 `HTMLDocument`, `HtmlSaveOptions`, `ZipOutputStorage` 클래스를 제공합니다. | +| Basic C# knowledge | `using` 구문과 스트림을 이해해야 합니다. | + +Install the library with: + +```bash +dotnet add package Aspose.HTML +``` + +이제 기본 준비가 끝났으니 HTML을 ZIP으로 변환해 보겠습니다. + +## Step 1: Create a Simple HTML Document + +먼저 `HTMLDocument` 인스턴스가 필요합니다. 실제 프로젝트에서는 파일을 디스크에서 로드할 가능성이 높지만, 이번 데모에서는 `logo.png`라는 로컬 이미지를 참조하는 아주 작은 페이지를 코드에 직접 삽입합니다. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*Why this matters:* 코드를 통해 문서를 생성하면 외부 파일 의존성을 피할 수 있어 예제가 완전히 독립적이며, AI 인용 및 빠른 테스트에 최적화됩니다. + +## Step 2: Save the HTML and Its Resources to a MemoryStream + +때로는 디스크에 쓰고 싶지 않을 때가 있습니다—예를 들어 ZIP을 웹 API를 통해 전송하려는 경우가 그렇죠. `ResourceHandler`를 사용하면 모든 연결 파일(이미지, CSS 등)을 파일 시스템이 아니라 `MemoryStream`으로 직접 보낼 수 있습니다. + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**What you see:** 콘솔에 생성된 HTML의 바이트 길이가 출력됩니다. `MemoryStream`을 사용했기 때문에 디스크에 아무것도 기록되지 않으며, 원한다면 **HTML을 ZIP으로 변환**을 완전히 메모리 내에서 수행할 수 있습니다. + +### 전문가 팁 + +HTML에 큰 이미지가 포함되어 있다면 `HandleResource`를 오버라이드하여 스트림을 실시간으로 압축하는 것을 고려하세요. 이렇게 하면 최종 ZIP 파일이 가볍게 유지됩니다. + +## Step 3: Pack the HTML and Its Resources into a ZIP Archive + +Aspose.HTML은 메인 HTML 파일과 모든 참조 리소스를 자동으로 하나의 ZIP 파일로 묶어주는 편리한 `ZipOutputStorage` 클래스를 제공합니다. 사용 방법은 다음과 같습니다: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**Result:** `output.zip`에는 이제 다음이 포함됩니다: + +- `index.html` (우리가 만든 HTML) +- `logo.png` (마크업에서 참조된 이미지) + +아카이브를 아무 아카이브 관리 프로그램으로 열어 보면 HTML이 여전히 `logo.png`를 가리키고 있어 원본 페이지 레이아웃이 그대로 유지됩니다. + +### Edge case: Missing resources + +리소스를 찾을 수 없을 경우 Aspose.HTML은 `ResourceNotFoundException`을 발생시킵니다. 외부 URL을 참조할 가능성이 있는 사용자 생성 HTML을 처리한다면 `Save` 호출을 `try/catch` 블록으로 감싸세요. + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## Step 4: Verify the ZIP Contents Programmatically (Optional) + +웹 서비스를 구축 중이라면 ZIP에 모든 파일이 들어있는지 확인하고 전송하기 전에 검증하고 싶을 수 있습니다. .NET `System.IO.Compression` 네임스페이스를 사용하면 디스크에 추출하지 않고도 내부를 들여다볼 수 있습니다. + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +다음과 유사한 출력이 표시됩니다: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +이 최종 검증을 통해 **HTML에서 ZIP 만들기** 단계가 성공했음을 확신할 수 있습니다. + +## Common Pitfalls & How to Avoid Them + +| 증상 | 가능한 원인 | 해결책 | +|---------|--------------|-----| +| ZIP이 비어 있음 | `OutputStorage`가 설정되지 않았거나 `HtmlSaveOptions`가 누락됨 | `OutputStorage = zipStorage`를 설정하고 `zipSaveOptions`를 `Save`에 전달하세요. | +| `index.html`을 열 때 이미지가 깨짐 | 리소스 핸들러가 빈 스트림을 반환함 | 실제 이미지 바이트를 포함하는 스트림을 반환하거나 Aspose에 자동 처리를 맡기세요. | +| 큰 페이지에서 메모리 부족 예외 | 플러시 없이 모든 것을 단일 `MemoryStream`에 저장 | 큰 리소스는 `FileStream`을 사용하거나 HTTP 응답으로 직접 스트리밍하세요. | +| 잘못된 파일 확장자 | `.html`로 저장되고 `.zip`이 아님 | `FileStream` 경로가 `.zip`으로 끝나는지 확인하세요. | + +## Full Working Example + +아래는 완전한 실행 가능한 프로그램 예시입니다. 콘솔 프로젝트에 복사‑붙여넣기하고 Aspose.HTML NuGet 패키지를 추가한 뒤 실행하면 됩니다. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +프로그램을 실행하면 다음과 유사한 콘솔 출력이 나타납니다: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +이제 **HTML을 ZIP으로 변환** 파이프라인을 웹 API, 백그라운드 작업, 데스크톱 도구 등에 자유롭게 삽입할 수 있습니다. + +## Conclusion + +Aspose.HTML을 사용해 **HTML을 ZIP으로 변환**하는 전체 과정을 살펴보았습니다: 문서 생성, 리소스를 메모리로 라우팅, ZIP으로 압축, 그리고 프로그래밍 방식으로 결과를 검증하는 방법까지. 이 접근 방식은 가볍고 프로세스 내에서 완전히 동작하며, 각 파일이 어떻게 저장되는지 세밀하게 제어할 수 있습니다. + +다음 도전 과제가 준비되셨나요? `ZipOutputStorage`를 HTTP 응답에 직접 쓰는 사용자 정의 `Stream`으로 교체하거나, 이미지 압축을 실시간으로 적용해 최종 아카이브 크기를 줄여 보세요. 이러한 확장은 **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/korean/net/rendering-html-documents/_index.md b/html/korean/net/rendering-html-documents/_index.md index 7178d36b0..695c67a2b 100644 --- a/html/korean/net/rendering-html-documents/_index.md +++ b/html/korean/net/rendering-html-documents/_index.md @@ -44,13 +44,12 @@ Aspose.HTML for .NET은 풍부한 기능, 훌륭한 설명서, 활발한 커뮤 .NET용 Aspose.HTML을 사용하는 방법을 배우세요: HTML을 조작하고, 다양한 형식으로 변환하고, 더 많은 것을 하세요. 이 포괄적인 튜토리얼에 뛰어드세요! ### [HTML을 PNG로 렌더링하는 방법 – 완전한 C# 가이드](./how-to-render-html-as-png-complete-c-guide/) Aspose.HTML for .NET을 사용해 C#으로 HTML을 PNG 이미지로 변환하는 전체 과정을 단계별로 안내합니다. - ### [Aspose를 사용하여 HTML을 PNG로 렌더링하는 단계별 가이드](./how-to-use-aspose-to-render-html-to-png-step-by-step-guide/) Aspose를 활용해 HTML을 PNG로 변환하는 과정을 단계별로 자세히 설명합니다. - +### [C#에서 HTML을 PNG로 렌더링하는 단계별 가이드](./how-to-render-html-to-png-in-c-step-by-step-guide/) +Aspose.HTML for .NET을 사용하여 C#으로 HTML을 PNG 이미지로 변환하는 전체 과정을 단계별로 안내합니다. ### [Aspose를 사용하여 HTML을 PNG로 렌더링하는 완전 가이드](./how-to-render-html-to-png-with-aspose-complete-guide/) Aspose를 활용해 HTML을 PNG 이미지로 변환하는 전체 단계별 가이드를 확인하세요. - ### [Aspose.HTML을 사용하여 .NET에서 EPUB를 XPS로 렌더링](./render-epub-as-xps/) 이 포괄적인 튜토리얼에서 Aspose.HTML for .NET으로 HTML 문서를 만들고 렌더링하는 방법을 알아보세요. HTML 조작, 웹 스크래핑 등의 세계로 뛰어드세요. ### [Aspose.HTML을 사용한 .NET에서의 렌더링 타임아웃](./rendering-timeout/) diff --git a/html/korean/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/korean/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..cee118455 --- /dev/null +++ b/html/korean/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,184 @@ +--- +category: general +date: 2026-03-26 +description: HTML을 빠르고 안정적으로 렌더링하는 방법. HTML을 PNG로 변환하고, HTML을 PNG로 내보내며, 글꼴 스타일을 적용하고 + Aspose.Html로 HTML 문서를 로드하는 방법을 배워보세요. +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: ko +og_description: C#에서 Aspose.Html을 사용하여 HTML을 렌더링하는 방법. 이 가이드는 HTML을 PNG로 변환하고, HTML을 + PNG로 내보내며, 글꼴 스타일을 적용하고 HTML 문서를 로드하는 방법을 보여줍니다. +og_title: C#에서 HTML을 PNG로 렌더링하는 방법 – 완전 튜토리얼 +tags: +- C# +- Aspose.Html +- Image Rendering +title: C#에서 HTML을 PNG로 렌더링하는 방법 – 단계별 가이드 +url: /ko/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#에서 HTML을 PNG로 렌더링하는 방법 – 단계별 가이드 + +HTML을 **PNG 이미지**로 깔끔하게 변환하는 방법을 고민해 본 적 있나요? 브라우저 자동화 없이도 가능합니다. 많은 개발자들이 이메일 썸네일, 보고서 스냅샷, PDF 미리보기 등을 위해 *HTML을 PNG로 변환*해야 하는데, 일반적인 무두 헤드리스 브라우저 방식은 무겁게 느껴집니다. + +이 튜토리얼에서는 **HTML 문서를 로드하고**, **폰트 스타일** 및 기타 렌더링 옵션을 적용한 뒤, **HTML을 PNG로 내보내는** 깔끔한 라이브러리 기반 솔루션을 단계별로 살펴봅니다. 마지막에는 바로 실행 가능한 C# 프로그램과 흔히 발생하는 문제를 피할 수 있는 몇 가지 팁을 제공할 것입니다. + +## 사전 준비 + +- .NET 6.0 이상 (코드는 .NET Core 및 .NET Framework에서도 동작합니다) +- Aspose.HTML for .NET NuGet 패키지 (`Aspose.Html` 및 `Aspose.Html.Rendering.Image`) +- 샘플 HTML 파일 (`sample.html`) – 참조 가능한 위치에 배치 +- C# 및 Visual Studio(또는 선호하는 IDE)에 대한 기본 지식 + +> **Pro tip:** CI 서버에서 빌드가 독립적으로 동작하도록 하려면 Aspose.HTML DLL을 프로젝트의 `packages` 폴더에 추가하세요. + +## 1단계 – HTML 문서 로드 + +먼저 **HTML 문서를** `HTMLDocument` 객체에 **로드**해야 합니다. Aspose.HTML가 파일을 읽고, 상대 리소스를 해석하며, 조작 가능한 DOM을 생성합니다. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **왜 중요한가:** Aspose를 통해 문서를 로드하면 외부 CSS, 이미지, 폰트가 브라우저와 동일한 방식으로 처리되어 이후 **HTML을 PNG로 변환**할 때 정확한 결과를 얻을 수 있습니다. + +## 2단계 – 렌더링 옵션 설정 (폰트 스타일 적용 등) + +이제 `ImageRenderingOptions`를 설정합니다. 여기서 **폰트 스타일을 적용**하고, 안티앨리어싱을 선택하며, 출력 크기를 정의합니다. 이 설정을 조정하면 최종 PNG의 시각적 품질이 크게 향상됩니다. + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### 옵션이 실제로 하는 일 + +| 옵션 | 효과 | 변경 시점 | +|--------|--------|----------------| +| `UseAntialiasing` | 도형과 텍스트의 거친 가장자리를 부드럽게 함 | 고해상도 출력 시 | +| `TextOptions.UseHinting` | 작은 폰트의 가독성을 향상 | UI가 많은 페이지 렌더링 시 | +| `Font.Style / Size / Family` | 페이지 CSS와 무관하게 특정 폰트를 강제 적용 | 기업 브랜드 적용이나 원본 폰트가 없을 때 | +| `Width` / `Height` | PNG 캔버스 크기 지정 | 브라우저에서 보는 뷰포트와 일치시킬 때 | + +## 3단계 – 문서를 PNG 이미지로 렌더링 (HTML을 PNG로 변환) + +문서와 옵션이 준비되면 `ImageRenderer`에 모두 전달합니다. 이 클래스는 렌더링된 비트맵을 바로 파일로 스트리밍하여 **HTML을 PNG로 변환** 작업을 빠르고 메모리 효율적으로 수행합니다. + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **예외 상황:** HTML이 HTTP를 통해 외부 이미지를 참조한다면 해당 서버에 접근할 수 있는지 확인하세요. 그렇지 않으면 렌더러가 자리표시자를 남깁니다. + +### 예상 출력 + +프로그램이 종료되면 `sample.html`과 동일한 디렉터리에 `rendered.png` 파일이 생성됩니다. 이미지 뷰어로 열어 보면 **적용된 폰트 스타일**과 안티앨리어싱 그래픽이 포함된 HTML 페이지의 픽셀 완벽 스냅샷을 확인할 수 있습니다. + +![How to render html example output](rendered.png "HTML 렌더링 – 샘플 HTML 페이지의 PNG 결과") + +*(Alt 텍스트는 SEO를 위해 주요 키워드를 포함합니다.)* + +## 4단계 – 결과를 프로그래밍 방식으로 검증 (선택 사항) + +자동화 파이프라인에서는 PNG가 정상적으로 생성됐는지 확인이 필요할 때가 있습니다. 바이트 크기 검사나 `System.Drawing`을 이용한 이미지 로드가 간단한 검증 방법이 됩니다. + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## 자주 묻는 질문 및 주의점 + +- **다른 이미지 포맷이 필요하면?** + `ImageRenderer`는 JPEG, BMP, GIF도 지원합니다. 파일 확장자를 바꾸고 필요하면 `ImageRenderingOptions`의 `ImageFormat`을 설정하면 됩니다. + +- **특정 HTML 요소만 렌더링하고 싶다면?** + `htmlDoc.GetElementById("myDiv")` 로 요소를 가져와 `ImageRenderer.Render(element)`에 전달하면 됩니다. + +- **Arial 폰트를 앱에 포함시켜야 할까?** + 반드시는 아닙니다. 대상 머신에 Arial이 있으면 렌더러가 자동으로 사용합니다. 없을 경우 HTML에 CSS `@font-face` 로 커스텀 웹 폰트를 임베드하면 됩니다. + +- **헤드리스 Chrome과 비교하면 어떨까?** + Aspose.HTML는 순수 관리형 .NET 라이브러리이므로 외부 브라우저, 드라이버, 무거운 컨테이너가 필요 없습니다. 배치 작업에서는 일반적으로 더 빠르지만, Chrome이 CSS3 애니메이션을 더 정확히 렌더링할 수 있습니다. + +## 마무리 + +우리는 Aspose.HTML for .NET을 사용해 **HTML을 PNG 이미지**로 렌더링하는 방법을 살펴보았습니다. **HTML 문서 로드**, **폰트 스타일 적용**, **HTML을 PNG로 내보내기**를 몇 줄의 C# 코드로 구현했습니다. 전체 실행 가능한 예제는 위의 코드 스니펫에 포함되어 있으니 바로 콘솔 프로젝트에 복사해 사용할 수 있습니다. + +### 다음 단계는? + +- 다양한 `Width`/`Height` 값을 실험해 썸네일 만들기 +- 파일 크기를 줄이기 위해 JPEG로 출력 포맷 전환 +- `PdfRenderer`를 활용해 여러 페이지를 하나의 PDF로 결합 +- CSS 미디어 쿼리(`@media print`)를 사용해 렌더링 뷰를 맞춤 설정 + +렌더링 옵션을 자유롭게 조정하고, 폰트를 교체하거나 동적으로 생성된 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/polish/net/html-extensions-and-conversions/_index.md b/html/polish/net/html-extensions-and-conversions/_index.md index 5b553b002..cd3b59599 100644 --- a/html/polish/net/html-extensions-and-conversions/_index.md +++ b/html/polish/net/html-extensions-and-conversions/_index.md @@ -67,6 +67,8 @@ Dowiedz się, jak konwertować HTML do TIFF za pomocą Aspose.HTML dla .NET. Pos Odkryj moc Aspose.HTML dla .NET: Konwertuj HTML na XPS bez wysiłku. Zawiera wymagania wstępne, przewodnik krok po kroku i FAQ. ### [Jak spakować HTML w C# – Zapisz HTML do pliku ZIP](./how-to-zip-html-in-c-save-html-to-zip/) Dowiedz się, jak spakować plik HTML do archiwum ZIP w C# przy użyciu Aspose.HTML. +### [Konwertuj HTML do ZIP w C# – Kompletny przewodnik krok po kroku](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +Zapisz HTML do archiwum ZIP w C# przy użyciu Aspose.HTML – kompletny przewodnik krok po kroku. ### [Utwórz dokument HTML ze stylowanym tekstem i wyeksportuj do PDF – Pełny przewodnik](./create-html-document-with-styled-text-and-export-to-pdf-full/) Dowiedz się, jak stworzyć dokument HTML z formatowanym tekstem i wyeksportować go do PDF przy użyciu Aspose.HTML dla .NET. ### [Zapisz HTML jako ZIP – Kompletny samouczek C#](./save-html-as-zip-complete-c-tutorial/) diff --git a/html/polish/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/polish/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..09af6abc9 --- /dev/null +++ b/html/polish/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,285 @@ +--- +category: general +date: 2026-03-26 +description: Szybko konwertuj HTML na ZIP za pomocą Aspose.HTML. Dowiedz się, jak + utworzyć plik ZIP z HTML, obsługiwać zasoby w pamięci i unikać typowych pułapek. +draft: false +keywords: +- convert html to zip +- create zip from html +language: pl +og_description: Konwertuj HTML na ZIP bez wysiłku. Ten przewodnik pokazuje, jak utworzyć + ZIP z HTML przy użyciu Aspose.HTML, zawierając kompletny kod i wskazówki. +og_title: Konwertuj HTML do ZIP w C# – Pełny przewodnik programistyczny +tags: +- C# +- Aspose.HTML +- file compression +title: Konwertuj HTML do ZIP w C# – Kompletny przewodnik krok po kroku +url: /pl/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Konwertowanie HTML do ZIP w C# – Kompletny przewodnik krok po kroku + +Kiedykolwiek potrzebowałeś **konwertować HTML do ZIP**, ale nie wiedziałeś, którego API użyć? Nie jesteś sam — wielu programistów napotyka ten problem, gdy próbują udostępnić stronę internetową wraz z jej obrazami, CSS i skryptami jako jedną pobieraną paczkę. + +Dobre wieści? Dzięki Aspose.HTML możesz **tworzyć ZIP z HTML** w kilku linijkach i uzyskać pełną kontrolę nad tym, gdzie znajduje się każdy zasób (pamięć, dysk lub strumień). W tym samouczku przeprowadzimy Cię przez cały proces, od małego fragmentu HTML do gotowego do pobrania pliku ZIP, i wyjaśnimy „dlaczego” każdej decyzji. + +## Czego się nauczysz + +- Jak skonfigurować Aspose.HTML w projekcie .NET. +- Jak zapisać dokument HTML i wszystkie powiązane zasoby do `MemoryStream`. +- Jak spakować ten sam HTML do archiwum ZIP jednym wywołaniem. +- Wskazówki dotyczące obsługi dużych obrazów, niestandardowego przechowywania zasobów i obsługi błędów. +- Oczekiwany wynik w konsoli oraz jak zweryfikować zawartość ZIP. + +Bez skomplikowanych wymagań wstępnych — wystarczy aktualna wersja .NET (Core 3.1+ lub .NET 6) i pakiet NuGet Aspose.HTML. Zanurzmy się. + +![ilustracja konwersji html do zip](convert-html-to-zip.png){alt="przykład konwersji html do zip"} + +## Wymagania wstępne + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6 SDK (or later) | Najnowszy runtime zapewnia najwydajniejsze obsługiwanie `MemoryStream`. | +| Aspose.HTML for .NET (NuGet) | Udostępnia klasy `HTMLDocument`, `HtmlSaveOptions` i `ZipOutputStorage`, których użyjemy. | +| Basic C# knowledge | Będziesz musiał zrozumieć instrukcje `using` oraz strumienie. | + +Install the library with: + +```bash +dotnet add package Aspose.HTML +``` + +Teraz, gdy podstawy są gotowe, rozpocznijmy konwersję HTML do ZIP. + +## Krok 1: Utwórz prosty dokument HTML + +Najpierw potrzebujemy instancji `HTMLDocument`. W rzeczywistym projekcie prawdopodobnie wczytasz plik z dysku, ale w demonstracji osadzimy małą stronę, która odwołuje się do lokalnego obrazu o nazwie `logo.png`. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*Dlaczego to ważne:* Tworząc dokument w kodzie, unikamy zależności od zewnętrznych plików, co sprawia, że przykład jest w pełni samodzielny — idealny do cytowania AI i szybkiego testowania. + +## Krok 2: Zapisz HTML i jego zasoby do MemoryStream + +Czasami nie chcesz w ogóle zapisywać na dysk — być może wysyłasz ZIP przez interfejs web API. `ResourceHandler` pozwala kierować każdy powiązany plik (obrazy, CSS itp.) do `MemoryStream` zamiast do systemu plików. + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**Co widzisz:** Konsola wypisuje długość w bajtach wygenerowanego HTML. Ponieważ użyliśmy `MemoryStream`, nic nie trafia na dysk, co oznacza, że możesz teraz **konwertować HTML do ZIP** całkowicie w pamięci, jeśli chcesz. + +### Porada + +Jeśli Twój HTML zawiera duże obrazy, rozważ nadpisanie `HandleResource`, aby kompresować strumień w locie. Dzięki temu ostateczny ZIP będzie lekki. + +## Krok 3: Spakuj HTML i jego zasoby do archiwum ZIP + +Aspose.HTML dostarcza wygodną klasę `ZipOutputStorage`, która automatycznie łączy główny plik HTML i wszystkie odwołane zasoby w jeden plik ZIP. Oto jak jej używać: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**Wynik:** `output.zip` zawiera teraz: + +- `index.html` (HTML, który stworzyliśmy) +- `logo.png` (obraz odwołany w znacznikach) + +Możesz otworzyć ZIP dowolnym menedżerem archiwów i zobaczyć, że HTML nadal odwołuje się do `logo.png`, zachowując pierwotny układ strony. + +### Przypadek brzegowy: Brakujące zasoby + +Jeśli zasób nie zostanie znaleziony, Aspose.HTML zgłasza `ResourceNotFoundException`. Owiń wywołanie `Save` w blok `try/catch`, jeśli masz do czynienia z HTML generowanym przez użytkownika, który może odwoływać się do zewnętrznych URL. + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## Krok 4: Programowo zweryfikuj zawartość ZIP (Opcjonalnie) + +Jeśli tworzysz usługę webową, możesz chcieć potwierdzić, że ZIP zawiera wszystko przed wysłaniem dalej. Przestrzeń nazw .NET `System.IO.Compression` pozwala zajrzeć do środka bez rozpakowywania na dysk. + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +Powinieneś zobaczyć wyjście podobne do: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +Ta ostateczna kontrola daje pewność, że krok **tworzenia ZIP z HTML** zakończył się sukcesem. + +## Częste pułapki i jak ich uniknąć + +| Symptom | Likely cause | Fix | +|---------|--------------|-----| +| ZIP jest pusty | `OutputStorage` nie ustawiony lub pominięto `HtmlSaveOptions` | Upewnij się, że `OutputStorage = zipStorage` i przekaż `zipSaveOptions` do `Save`. | +| Obrazy wyświetlają się uszkodzone przy otwieraniu `index.html` | Obsługa zasobów zwróciła nowy pusty strumień | Zwróć strumień, który rzeczywiście zawiera bajty obrazu, lub pozwól Aspose obsłużyć to automatycznie. | +| Wyjątek Out‑of‑memory przy dużych stronach | Przechowywanie wszystkiego w jednym `MemoryStream` bez opróżniania | Użyj `FileStream` dla dużych zasobów lub strumieniuj bezpośrednio do odpowiedzi HTTP. | +| Nieprawidłowe rozszerzenie pliku | Zapisano jako `.html` zamiast `.zip` | Sprawdź, czy ścieżka `FileStream` kończy się na `.zip`. | + +## Pełny działający przykład + +Poniżej znajduje się kompletny, gotowy do uruchomienia program. Skopiuj i wklej go do projektu konsolowego, dodaj pakiet NuGet Aspose.HTML i uruchom. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Uruchomienie programu generuje wyjście konsoli podobne do: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +Masz teraz **pipeline konwertujący HTML do ZIP**, który możesz osadzić w API webowych, zadaniach w tle lub narzędziach desktopowych. + +## Podsumowanie + +Omówiliśmy wszystko, co potrzebne do **konwersji HTML do ZIP** przy użyciu Aspose.HTML: tworzenie dokumentu, kierowanie zasobów do pamięci, pakowanie wszystkiego do ZIP oraz weryfikację wyniku programowo. Podejście jest lekkie, działa w pełni w procesie i daje precyzyjną kontrolę nad tym, jak każdy plik jest przechowywany. + +Gotowy na kolejne wyzwanie? Spróbuj zamienić `ZipOutputStorage` na własny `Stream`, który zapisuje bezpośrednio do odpowiedzi HTTP, lub poeksperymentuj z kompresją obrazów w locie, aby zmniejszyć ostateczne archiwum. Te rozszerzenia pozwolą Ci **tworzyć ZIP z HTML** w jeszcze bardziej wymagających scenariuszach. + +Masz pytania lub chcesz podzielić się, jak dostosowałeś ten wzorzec? Dodaj komentarz poniżej i powodzenia w kodowaniu! + +{{< /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/rendering-html-documents/_index.md b/html/polish/net/rendering-html-documents/_index.md index 41f09366a..b1f09be09 100644 --- a/html/polish/net/rendering-html-documents/_index.md +++ b/html/polish/net/rendering-html-documents/_index.md @@ -45,12 +45,16 @@ Naucz się pracować z Aspose.HTML dla .NET: Manipuluj HTML, konwertuj do różn ### [Jak renderować HTML jako PNG – Kompletny przewodnik C#](./how-to-render-html-as-png-complete-c-guide/) Pełny przewodnik C# pokazujący, jak przy użyciu Aspose.HTML renderować HTML jako PNG, krok po kroku. + ### [Jak używać Aspose do renderowania HTML do PNG – przewodnik krok po kroku](./how-to-use-aspose-to-render-html-to-png-step-by-step-guide/) Naucz się, jak przy użyciu Aspose renderować HTML do formatu PNG w kilku prostych krokach. ### [Jak renderować HTML do PNG przy użyciu Aspose – Kompletny przewodnik](./how-to-render-html-to-png-with-aspose-complete-guide/) Pełny przewodnik pokazujący, jak przy użyciu Aspose.HTML renderować dokumenty HTML do formatu PNG krok po kroku. +### [Jak renderować HTML do PNG w C# – Przewodnik krok po kroku](./how-to-render-html-to-png-in-c-step-by-step-guide/) +Pełny przewodnik w C# wyjaśniający, jak przy użyciu Aspose.HTML renderować HTML do PNG krok po kroku. + ### [Renderuj EPUB jako XPS w .NET za pomocą Aspose.HTML](./render-epub-as-xps/) Dowiedz się, jak tworzyć i renderować dokumenty HTML za pomocą Aspose.HTML dla .NET w tym kompleksowym samouczku. Zanurz się w świecie manipulacji HTML, web scrapingu i nie tylko. @@ -58,7 +62,7 @@ Dowiedz się, jak tworzyć i renderować dokumenty HTML za pomocą Aspose.HTML d Dowiedz się, jak skutecznie kontrolować limity czasu renderowania w Aspose.HTML dla .NET. Poznaj opcje renderowania i zapewnij płynne renderowanie dokumentów HTML. ### [Renderuj MHTML jako XPS w .NET za pomocą Aspose.HTML](./render-mhtml-as-xps/) - Naucz się renderować MHTML jako XPS w .NET z Aspose.HTML. Udoskonal swoje umiejętności manipulacji HTML i przyspiesz swoje projekty rozwoju sieci! +Naucz się renderować MHTML jako XPS w .NET z Aspose.HTML. Udoskonal swoje umiejętności manipulacji HTML i przyspiesz swoje projekty rozwoju sieci! Naucz się renderować MHTML jako XPS w .NET z Aspose.HTML. Udoskonal swoje umiejętności manipulacji HTML i przyspiesz swoje projekty rozwoju sieci! ### [Renderowanie wielu dokumentów w .NET za pomocą Aspose.HTML](./render-multiple-documents/) diff --git a/html/polish/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/polish/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..3c624c41f --- /dev/null +++ b/html/polish/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-03-26 +description: Jak szybko i niezawodnie renderować HTML. Dowiedz się, jak konwertować + HTML do PNG, eksportować HTML jako PNG, stosować styl czcionki i ładować dokument + HTML przy użyciu Aspose.Html. +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: pl +og_description: Jak renderować HTML w C# przy użyciu Aspose.Html. Ten przewodnik pokazuje, + jak konwertować HTML do PNG, eksportować HTML jako PNG, zastosować styl czcionki + i załadować dokument HTML. +og_title: Jak renderować HTML do PNG w C# – Kompletny poradnik +tags: +- C# +- Aspose.Html +- Image Rendering +title: Jak renderować HTML do PNG w C# – Przewodnik krok po kroku +url: /pl/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak renderować HTML do PNG w C# – Przewodnik krok po kroku + +Zastanawiałeś się kiedyś, **jak renderować HTML** do wyraźnego obrazu PNG bez walki z automatyzacją przeglądarki? Nie jesteś sam. Wielu programistów potrzebuje *konwertować HTML do PNG* dla miniatur e‑maili, zrzutów raportów czy podglądów PDF, a typowe sztuczki z przeglądarką w trybie headless wydają się zbyt ciężkie. + +W tym tutorialu przejdziemy przez czyste, oparte na bibliotece rozwiązanie, które **wczytuje dokument HTML**, pozwala **zastosować styl czcionki** i inne poprawki renderowania, a na końcu **eksportuje HTML jako PNG**. Po zakończeniu będziesz mieć gotowy program w C#, który robi dokładnie to, plus kilka profesjonalnych wskazówek, które ochronią Cię przed typowymi pułapkami. + +## Wymagania wstępne + +- .NET 6.0 lub nowszy (kod działa także na .NET Core i .NET Framework) +- Pakiet NuGet Aspose.HTML for .NET (`Aspose.Html` i `Aspose.Html.Rendering.Image`) +- Przykładowy plik HTML (`sample.html`) umieszczony w miejscu, które możesz odwołać +- Podstawowa znajomość C# i Visual Studio (lub dowolnego ulubionego IDE) + +> **Pro tip:** Jeśli pracujesz na serwerze CI, dodaj pliki DLL Aspose.HTML do folderu `packages` w projekcie, aby kompilacja była samodzielna. + +## Krok 1 – Wczytaj dokument HTML + +Pierwszą rzeczą, którą musisz zrobić, jest **wczytanie dokumentu HTML** do obiektu `HTMLDocument`. Aspose.HTML odczytuje plik, rozwiązuje zasoby względne i tworzy DOM, który możesz modyfikować. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **Dlaczego to ważne:** Wczytywanie dokumentu przez Aspose zapewnia, że zewnętrzne CSS, obrazy i czcionki są przetwarzane tak samo, jak w przeglądarce, co jest niezbędne przy późniejszej **konwersji HTML do PNG**. + +## Krok 2 – Skonfiguruj opcje renderowania (zastosuj styl czcionki i inne) + +Teraz ustawiamy `ImageRenderingOptions`. To miejsce, w którym **stosujesz styl czcionki**, wybierasz antyaliasing i definiujesz wymiary wyjściowe. Dostosowanie tych ustawień może dramatycznie poprawić jakość wizualną końcowego PNG. + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### Co właściwie robią te opcje + +| Opcja | Efekt | Kiedy zmienić | +|--------|--------|----------------| +| `UseAntialiasing` | Wygładza ząbkowane krawędzie kształtów i tekstu | Przy wyjściach wysokiej rozdzielczości | +| `TextOptions.UseHinting` | Poprawia czytelność małych czcionek | Gdy renderujesz strony z dużą ilością UI | +| `Font.Style / Size / Family` | Wymusza konkretną czcionkę niezależnie od CSS strony | Przy brandingu korporacyjnym lub gdy oryginalna czcionka nie jest dostępna | +| `Width` / `Height` | Ustawia rozmiar płótna PNG | Dopasuj do viewportu, który widziałbyś w przeglądarce | + +## Krok 3 – Renderuj dokument do obrazu PNG (Konwertuj HTML do PNG) + +Gdy dokument i opcje są gotowe, przekazujemy wszystko do `ImageRenderer`. Ta klasa strumieniuje wyrenderowany bitmap bezpośrednio do pliku, dając nam operację **konwersji HTML do PNG**, która jest szybka i oszczędna pod względem pamięci. + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **Przypadek brzegowy:** Jeśli Twój HTML odwołuje się do zewnętrznych obrazów przez HTTP, upewnij się, że serwer jest dostępny z maszyny uruchamiającej kod. W przeciwnym razie renderer pozostawi placeholdery. + +### Oczekiwany wynik + +Po zakończeniu programu powinieneś zobaczyć plik `rendered.png` w tym samym katalogu co `sample.html`. Otwórz go w dowolnym przeglądarce obrazów – zobaczysz pikselowo idealny zrzut strony HTML, z **zastosowanym stylem czcionki** i wygładzoną grafiką. + +![Przykładowy wynik renderowania html](rendered.png "Jak renderować html – wynik PNG przykładowej strony HTML") + +*(Tekst alternatywny zawiera główne słowo kluczowe dla SEO.)* + +## Krok 4 – Zweryfikuj wynik programowo (opcjonalnie) + +Czasami trzeba potwierdzić, że PNG został utworzony poprawnie, szczególnie w zautomatyzowanych pipeline’ach. Szybka kontrola rozmiaru w bajtach lub wczytanie obrazu przy pomocy `System.Drawing` da Ci pewność. + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## Często zadawane pytania i pułapki + +- **Co zrobić, jeśli potrzebuję innego formatu obrazu?** + `ImageRenderer` obsługuje także JPEG, BMP i GIF. Wystarczy zmienić rozszerzenie pliku i opcjonalnie ustawić `ImageFormat` w `ImageRenderingOptions`. + +- **Czy mogę renderować tylko konkretny element HTML?** + Tak. Użyj `htmlDoc.GetElementById("myDiv")` i przekaż ten element do `ImageRenderer.Render(element)`. + +- **Czy muszę dołączać czcionkę Arial do aplikacji?** + Niekoniecznie. Jeśli docelowa maszyna już ma Arial, renderer ją użyje. W przeciwnym razie możesz osadzić własną czcionkę webową za pomocą CSS `@font-face` w swoim HTML. + +- **Jak to się ma do headless Chrome?** + Aspose.HTML to czysto zarządzana biblioteka .NET, więc nie potrzebujesz zewnętrznych przeglądarek, sterowników ani ciężkich kontenerów. Zazwyczaj jest szybsza w zadaniach wsadowych, choć Chrome może wierniej renderować animacje CSS3. + +## Podsumowanie + +Omówiliśmy **jak renderować HTML** do obrazu PNG przy użyciu Aspose.HTML dla .NET, pokazując, jak **wczytać dokument HTML**, **zastosować styl czcionki** i **wyeksportować HTML jako PNG** w kilku linijkach kodu C#. Pełny, działający przykład znajduje się w powyższych fragmentach i możesz go skopiować do projektu konsolowego od razu. + +### Co dalej? + +- Eksperymentuj z różnymi wartościami `Width`/`Height`, aby tworzyć miniatury. +- Przełącz format wyjściowy na JPEG, aby uzyskać mniejsze pliki. +- Połącz wiele wyrenderowanych stron w PDF przy użyciu `PdfRenderer`. +- Zbadaj zapytania medialne CSS (`@media print`), aby dostosować widok renderowany. + +Śmiało modyfikuj opcje renderowania, wymieniaj czcionki lub podawaj dynamicznie generowany HTML. Jeśli napotkasz problem, zostaw komentarz poniżej — 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/portuguese/net/html-extensions-and-conversions/_index.md b/html/portuguese/net/html-extensions-and-conversions/_index.md index 8971d46a5..3b7a73255 100644 --- a/html/portuguese/net/html-extensions-and-conversions/_index.md +++ b/html/portuguese/net/html-extensions-and-conversions/_index.md @@ -75,6 +75,10 @@ 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#. + +### [Converter HTML em ZIP em C# – Guia completo passo a passo](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +Aprenda a converter HTML em arquivos ZIP usando Aspose.HTML para .NET em C# com um guia passo a passo completo. + ### [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. diff --git a/html/portuguese/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/portuguese/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..ceb077b29 --- /dev/null +++ b/html/portuguese/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,285 @@ +--- +category: general +date: 2026-03-26 +description: Converta HTML em ZIP rapidamente com Aspose.HTML. Aprenda como criar + ZIP a partir de HTML, manipular recursos na memória e evitar armadilhas comuns. +draft: false +keywords: +- convert html to zip +- create zip from html +language: pt +og_description: Converta HTML em ZIP sem esforço. Este guia mostra como criar um ZIP + a partir de HTML usando Aspose.HTML, com código completo e dicas. +og_title: Converter HTML para ZIP em C# – Guia Completo de Programação +tags: +- C# +- Aspose.HTML +- file compression +title: Converter HTML para ZIP em C# – Guia Completo Passo a Passo +url: /pt/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Converter HTML para ZIP em C# – Guia Completo Passo a Passo + +Já precisou **converter HTML para ZIP** mas não sabia qual API usar? Você não está sozinho — muitos desenvolvedores encontram esse obstáculo ao tentar distribuir uma página web com suas imagens, CSS e scripts em um único pacote para download. + +A boa notícia? Com Aspose.HTML você pode **criar ZIP a partir de HTML** em poucas linhas, e terá controle total sobre onde cada recurso vive (memória, disco ou um stream). Neste tutorial vamos percorrer todo o processo, de um pequeno trecho HTML até um arquivo ZIP pronto para download, e explicaremos o “porquê” de cada escolha. + +## O que você aprenderá + +- Como configurar o Aspose.HTML em um projeto .NET. +- Como salvar um documento HTML e todos os recursos vinculados em um `MemoryStream`. +- Como empacotar o mesmo HTML em um arquivo ZIP com uma única chamada. +- Dicas para lidar com imagens grandes, armazenamento personalizado de recursos e tratamento de erros. +- Saída esperada no console e como verificar o conteúdo do ZIP. + +Sem pré‑requisitos complicados — apenas uma versão recente do .NET (Core 3.1+ ou .NET 6) e o pacote NuGet Aspose.HTML. Vamos mergulhar. + +![ilustração de conversão de html para zip](convert-html-to-zip.png){alt="exemplo de conversão de html para zip"} + +## Pré‑requisitos + +| Requisito | Por que é importante | +|-----------|----------------------| +| .NET 6 SDK (ou posterior) | O runtime mais recente oferece o manuseio de `MemoryStream` mais eficiente. | +| Aspose.HTML para .NET (NuGet) | Fornece as classes `HTMLDocument`, `HtmlSaveOptions` e `ZipOutputStorage` que usaremos. | +| Conhecimento básico de C# | Você precisará entender instruções `using` e streams. | + +Instale a biblioteca com: + +```bash +dotnet add package Aspose.HTML +``` + +Agora que a base está pronta, vamos começar a converter HTML para ZIP. + +## Etapa 1: Criar um Documento HTML Simples + +Primeiro precisamos de uma instância `HTMLDocument`. Em um projeto real você provavelmente carregaria um arquivo do disco, mas para a demonstração vamos incorporar uma página minúscula que referencia uma imagem local chamada `logo.png`. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*Por que isso importa:* Ao construir o documento em código evitamos dependências de arquivos externos, tornando o exemplo totalmente autocontido — perfeito para citação por IA e para testes rápidos. + +## Etapa 2: Salvar o HTML e Seus Recursos em um MemoryStream + +Às vezes você não quer gravar no disco de forma alguma — talvez esteja enviando o ZIP por uma API web. O `ResourceHandler` permite direcionar cada arquivo vinculado (imagens, CSS, etc.) para um `MemoryStream` em vez do sistema de arquivos. + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**O que você vê:** O console imprime o tamanho em bytes do HTML gerado. Como usamos um `MemoryStream`, nada toca o disco, o que significa que você pode agora **converter HTML para ZIP** inteiramente na memória, se desejar. + +### Dica profissional + +Se seu HTML contém imagens grandes, considere sobrescrever `HandleResource` para comprimir o stream em tempo real. Dessa forma o ZIP final permanece leve. + +## Etapa 3: Empacotar o HTML e Seus Recursos em um Arquivo ZIP + +Aspose.HTML inclui a prática classe `ZipOutputStorage` que agrupa automaticamente o arquivo HTML principal e todos os recursos referenciados em um único arquivo ZIP. Veja como usá‑la: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**Resultado:** `output.zip` agora contém: + +- `index.html` (o HTML que criamos) +- `logo.png` (a imagem referenciada no markup) + +Você pode abrir o ZIP com qualquer gerenciador de arquivos e ver que o HTML ainda aponta para `logo.png`, preservando o layout original da página. + +### Caso de borda: Recursos ausentes + +Se um recurso não puder ser encontrado, Aspose.HTML lança uma `ResourceNotFoundException`. Envolva a chamada `Save` em um bloco `try/catch` se estiver lidando com HTML gerado por usuários que pode referenciar URLs externas. + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## Etapa 4: Verificar Programaticamente o Conteúdo do ZIP (Opcional) + +Se você está construindo um serviço web, pode querer confirmar que o ZIP contém tudo antes de enviá‑lo adiante. O namespace .NET `System.IO.Compression` permite inspecionar o arquivo sem extraí‑lo para o disco. + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +Você deve ver uma saída semelhante a: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +Essa verificação final lhe dá confiança de que a etapa **criar ZIP a partir de HTML** foi bem‑sucedida. + +## Armadilhas Comuns & Como Evitá‑las + +| Sintoma | Causa provável | Correção | +|---------|----------------|----------| +| ZIP está vazio | `OutputStorage` não definido ou `HtmlSaveOptions` omitido | Certifique‑se de que `OutputStorage = zipStorage` e passe `zipSaveOptions` para `Save`. | +| Imagens aparecem quebradas ao abrir `index.html` | O manipulador de recursos retornou um novo stream vazio | Retorne um stream que realmente contenha os bytes da imagem, ou deixe o Aspose lidar com isso automaticamente. | +| Exceção de falta de memória em páginas grandes | Armazenar tudo em um único `MemoryStream` sem descarregar | Use `FileStream` para recursos grandes ou faça streaming diretamente para a resposta HTTP. | +| Extensão de arquivo incorreta | Salvo como `.html` em vez de `.zip` | Verifique se o caminho do `FileStream` termina com `.zip`. | + +## Exemplo Completo Funcional + +Abaixo está o programa completo, pronto para ser executado. Copie‑e cole em um projeto de console, adicione o pacote NuGet Aspose.HTML e execute. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Executar o programa produz uma saída no console semelhante a: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +Agora você tem um pipeline **converter HTML para ZIP** que pode ser incorporado em APIs web, jobs em background ou ferramentas desktop. + +## Conclusão + +Cobrimos tudo o que você precisa para **converter HTML para ZIP** usando Aspose.HTML: criar o documento, direcionar recursos para a memória, empacotar tudo em um ZIP e até verificar o resultado programaticamente. A abordagem é leve, funciona totalmente em‑processo e oferece controle granular sobre como cada arquivo é armazenado. + +Pronto para o próximo desafio? Experimente substituir `ZipOutputStorage` por um `Stream` personalizado que escreva diretamente na resposta HTTP, ou experimente comprimir imagens em tempo real para reduzir o arquivo final. Essas extensões permitirão que você **crie ZIP a partir de HTML** em cenários ainda mais exigentes. + +Tem perguntas ou quer compartilhar como adaptou esse padrão? Deixe um comentário abaixo e 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/rendering-html-documents/_index.md b/html/portuguese/net/rendering-html-documents/_index.md index 3646fe093..242a1a14d 100644 --- a/html/portuguese/net/rendering-html-documents/_index.md +++ b/html/portuguese/net/rendering-html-documents/_index.md @@ -50,6 +50,8 @@ Aprenda passo a passo a converter HTML em PNG usando Aspose.HTML, cobrindo todas ### [Como usar Aspose para renderizar HTML em PNG – Guia passo a passo](./how-to-use-aspose-to-render-html-to-png-step-by-step-guide/) Aprenda a usar Aspose para converter HTML em PNG com um guia passo a passo detalhado. +### [Como renderizar HTML para PNG em C# – Guia passo a passo](./how-to-render-html-to-png-in-c-step-by-step-guide/) +Aprenda a renderizar HTML como PNG usando C# com o Aspose.HTML, seguindo um guia passo a passo detalhado. ### [Renderizar EPUB como XPS em .NET com Aspose.HTML](./render-epub-as-xps/) Aprenda como criar e renderizar documentos HTML com Aspose.HTML para .NET neste tutorial abrangente. Mergulhe no mundo da manipulação de HTML, web scraping e muito mais. ### [Tempo limite de renderização em .NET com Aspose.HTML](./rendering-timeout/) diff --git a/html/portuguese/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/portuguese/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..75ce15089 --- /dev/null +++ b/html/portuguese/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-03-26 +description: Como renderizar HTML de forma rápida e confiável. Aprenda a converter + HTML para PNG, exportar HTML como PNG, aplicar estilo de fonte e carregar documento + HTML com Aspose.Html. +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: pt +og_description: Como renderizar HTML em C# usando Aspose.Html. Este guia mostra como + converter HTML em PNG, exportar HTML como PNG, aplicar estilo de fonte e carregar + documento HTML. +og_title: Como Renderizar HTML para PNG em C# – Tutorial Completo +tags: +- C# +- Aspose.Html +- Image Rendering +title: Como Renderizar HTML para PNG em C# – Guia Passo a Passo +url: /pt/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como Renderizar HTML para PNG em C# – Guia Passo a Passo + +Já se perguntou **como renderizar HTML** em uma imagem PNG nítida sem lidar com automação de navegadores? Você não está sozinho. Muitos desenvolvedores precisam *converter HTML para PNG* para miniaturas de e‑mail, capturas de relatórios ou pré‑visualizações de PDF, e os truques habituais com navegadores headless parecem pesados. + +Neste tutorial vamos percorrer uma solução limpa, baseada em biblioteca, que **carrega um documento HTML**, permite que você **aplique estilo de fonte** e outros ajustes de renderização, e finalmente **exporta HTML como PNG**. Ao final, você terá um programa C# pronto‑para‑executar que faz exatamente isso, além de algumas dicas profissionais para evitar armadilhas comuns. + +## Pré‑requisitos + +- .NET 6.0 ou superior (o código funciona também em .NET Core e .NET Framework) +- Pacote NuGet Aspose.HTML for .NET (`Aspose.Html` e `Aspose.Html.Rendering.Image`) +- Um arquivo HTML de exemplo (`sample.html`) colocado em algum local que você possa referenciar +- Familiaridade básica com C# e Visual Studio (ou qualquer IDE de sua preferência) + +> **Dica profissional:** Se você estiver em um servidor CI, adicione os DLLs do Aspose.HTML à pasta `packages` do seu projeto para que a compilação permaneça autônoma. + +## Etapa 1 – Carregar o Documento HTML + +A primeira coisa que você precisa fazer é **carregar o documento HTML** em um objeto `HTMLDocument`. O Aspose.HTML lê o arquivo, resolve recursos relativos e cria um DOM que você pode manipular. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **Por que isso importa:** Carregar o documento através do Aspose garante que CSS externo, imagens e fontes sejam processados da mesma forma que um navegador faria, o que é essencial quando você posteriormente **converter HTML para PNG**. + +## Etapa 2 – Configurar Opções de Renderização (Aplicar Estilo de Fonte & Mais) + +Agora configuramos `ImageRenderingOptions`. É aqui que você **aplica estilo de fonte**, escolhe antialiasing e define as dimensões de saída. Ajustar essas configurações pode melhorar drasticamente a fidelidade visual do PNG final. + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### O que as opções realmente fazem + +| Opção | Efeito | Quando alterar | +|--------|--------|----------------| +| `UseAntialiasing` | Suaviza bordas serrilhadas em formas e texto | Para saídas de alta resolução | +| `TextOptions.UseHinting` | Melhora a legibilidade de fontes pequenas | Ao renderizar páginas com muita UI | +| `Font.Style / Size / Family` | Força uma fonte específica independentemente do CSS da página | Útil para identidade corporativa ou quando a fonte original não está disponível | +| `Width` / `Height` | Define o tamanho da tela do PNG | Combine com a viewport que você veria em um navegador | + +## Etapa 3 – Renderizar o Documento em uma Imagem PNG (Converter HTML para PNG) + +Com o documento e as opções prontos, entregamos tudo ao `ImageRenderer`. Essa classe grava o bitmap renderizado diretamente em um arquivo, proporcionando uma operação de **converter HTML para PNG** rápida e eficiente em memória. + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **Caso extremo:** Se seu HTML referenciar imagens externas via HTTP, certifique‑se de que o servidor esteja acessível a partir da máquina que executa este código. Caso contrário, o renderizador deixará marcadores de posição. + +### Saída esperada + +Depois que o programa terminar, você deverá ver um arquivo `rendered.png` no mesmo diretório de `sample.html`. Abra‑o com qualquer visualizador de imagens – você obterá uma captura pixel‑perfeita da página HTML, completa com o **estilo de fonte aplicado** e gráficos antialiasados. + +![Exemplo de renderização de html](rendered.png "Como renderizar html – Resultado PNG da página HTML de exemplo") + +*(O texto alternativo inclui a palavra‑chave principal para SEO.)* + +## Etapa 4 – Verificar o Resultado Programaticamente (Opcional) + +Às vezes é necessário confirmar que o PNG foi criado corretamente, especialmente em pipelines automatizados. Uma verificação rápida do tamanho em bytes ou o carregamento da imagem com `System.Drawing` pode lhe dar confiança. + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## Perguntas Frequentes & Armadilhas + +- **E se eu precisar de um formato de imagem diferente?** + `ImageRenderer` também suporta JPEG, BMP e GIF. Basta mudar a extensão do arquivo e, opcionalmente, definir `ImageFormat` em `ImageRenderingOptions`. + +- **Posso renderizar apenas um elemento HTML específico?** + Sim. Use `htmlDoc.GetElementById("myDiv")` e passe esse elemento para `ImageRenderer.Render(element)`. + +- **Preciso incluir a fonte Arial no meu aplicativo?** + Não necessariamente. Se a máquina de destino já possuir Arial, o renderizador a usará. Caso contrário, você pode incorporar uma fonte web personalizada via CSS `@font-face` no seu HTML. + +- **Como isso se compara ao Chrome headless?** + Aspose.HTML é uma biblioteca .NET totalmente gerenciada, portanto não há necessidade de navegadores externos, drivers ou contêineres pesados. Geralmente é mais rápido para trabalhos em lote, embora o Chrome possa reproduzir animações CSS3 com mais fidelidade. + +## Conclusão + +Cobrimos **como renderizar HTML** para uma imagem PNG usando Aspose.HTML para .NET, mostrando como **carregar documento HTML**, **aplicar estilo de fonte** e **exportar HTML como PNG** com apenas algumas linhas de código C#. O exemplo completo e executável está nos trechos acima, e você pode copiá‑e‑colar em um projeto de console agora mesmo. + +### O que vem a seguir? + +- Experimente diferentes valores de `Width`/`Height` para criar miniaturas. +- Troque o formato de saída para JPEG para reduzir o tamanho dos arquivos. +- Combine várias páginas renderizadas em um PDF usando `PdfRenderer`. +- Explore consultas de mídia CSS (`@media print`) para adaptar a visualização renderizada. + +Sinta‑se à vontade para ajustar as opções de renderização, trocar fontes ou alimentar HTML dinâmico gerado na hora. Se encontrar algum problema, deixe um comentário abaixo — 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/russian/net/html-extensions-and-conversions/_index.md b/html/russian/net/html-extensions-and-conversions/_index.md index 00354e673..17faa6805 100644 --- a/html/russian/net/html-extensions-and-conversions/_index.md +++ b/html/russian/net/html-extensions-and-conversions/_index.md @@ -73,6 +73,8 @@ 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 в C# – Полное пошаговое руководство](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +Узнайте, как упаковать HTML‑файлы в ZIP‑архив с помощью C# и Aspose.HTML, следуя полному пошаговому руководству. ## Заключение diff --git a/html/russian/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/russian/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..f9cd55639 --- /dev/null +++ b/html/russian/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,285 @@ +--- +category: general +date: 2026-03-26 +description: Быстро преобразуйте HTML в ZIP с помощью Aspose.HTML. Узнайте, как создавать + ZIP из HTML, работать с ресурсами в памяти и избегать распространённых ошибок. +draft: false +keywords: +- convert html to zip +- create zip from html +language: ru +og_description: Легко преобразуйте HTML в ZIP. Это руководство покажет, как создать + ZIP из HTML с помощью Aspose.HTML, предоставив полный код и полезные советы. +og_title: Конвертировать HTML в ZIP на C# — Полный пошаговый обзор программирования +tags: +- C# +- Aspose.HTML +- file compression +title: Преобразовать HTML в ZIP в C# – Полное пошаговое руководство +url: /ru/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Преобразование HTML в ZIP на C# – Полное пошаговое руководство + +Когда‑нибудь вам нужно было **преобразовать HTML в ZIP**, но вы не знали, какой API использовать? Вы не одиноки — многие разработчики сталкиваются с этой проблемой, когда пытаются упаковать веб‑страницу с её изображениями, CSS и скриптами в один загружаемый пакет. + +Хорошая новость? С Aspose.HTML вы можете **создать ZIP из HTML** в паре строк кода и получить полный контроль над тем, где хранится каждый ресурс (в памяти, на диске или в потоке). В этом руководстве мы пройдем весь процесс, от крошечного фрагмента HTML до готового к загрузке ZIP‑файла, и объясним «почему» каждого выбора. + +## Что вы узнаете + +- Как настроить Aspose.HTML в проекте .NET. +- Как сохранить HTML‑документ и все связанные ресурсы в `MemoryStream`. +- Как упаковать тот же HTML в ZIP‑архив одним вызовом. +- Советы по работе с большими изображениями, пользовательским хранением ресурсов и обработкой ошибок. +- Ожидаемый вывод в консоль и как проверить содержимое ZIP. + +Никаких сложных предварительных условий — только актуальная версия .NET (Core 3.1+ или .NET 6) и пакет Aspose.HTML из NuGet. Поехали. + +![convert html to zip illustration](convert-html-to-zip.png){alt="пример конвертации html в zip"} + +## Требования + +| Требование | Почему это важно | +|-------------|----------------| +| .NET 6 SDK (or later) | Последняя версия среды выполнения обеспечивает наиболее эффективную работу с `MemoryStream`. | +| Aspose.HTML for .NET (NuGet) | Предоставляет классы `HTMLDocument`, `HtmlSaveOptions` и `ZipOutputStorage`, которые мы будем использовать. | +| Basic C# knowledge | Вам понадобится понимать конструкции `using` и потоки. | + +Установите библиотеку с помощью: + +```bash +dotnet add package Aspose.HTML +``` + +Теперь, когда подготовка завершена, давайте начнём преобразовывать HTML в ZIP. + +## Шаг 1: Создать простой HTML‑документ + +Сначала нам нужен экземпляр `HTMLDocument`. В реальном проекте вы, вероятно, загрузите файл с диска, но для демонстрации мы встроим крошечную страницу, которая ссылается на локальное изображение `logo.png`. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*Почему это важно:* Создавая документ в коде, мы избегаем внешних файловых зависимостей, делая пример полностью автономным — идеально для AI‑цитирования и быстрого тестирования. + +## Шаг 2: Сохранить HTML и его ресурсы в MemoryStream + +Иногда не хочется писать на диск вовсе — возможно, вы отправляете ZIP через веб‑API. `ResourceHandler` позволяет направлять каждый подключённый файл (изображения, CSS и т.д.) в `MemoryStream` вместо файловой системы. + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**Что вы видите:** Консоль выводит длину в байтах сгенерированного HTML. Поскольку мы использовали `MemoryStream`, диск не задействуется, что значит, что вы можете полностью **преобразовать HTML в ZIP** в памяти, если захотите. + +### Профессиональный совет + +Если ваш HTML содержит большие изображения, рассмотрите переопределение `HandleResource` для сжатия потока «на лету». Так итоговый ZIP останется лёгким. + +## Шаг 3: Упаковать HTML и его ресурсы в ZIP‑архив + +Aspose.HTML поставляется с удобным классом `ZipOutputStorage`, который автоматически собирает основной HTML‑файл и все связанные ресурсы в один ZIP‑файл. Вот как его использовать: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**Результат:** `output.zip` теперь содержит: + +- `index.html` (HTML, который мы создали) +- `logo.png` (изображение, указанное в разметке) + +Вы можете открыть ZIP любым архиватором и увидеть, что HTML всё ещё ссылается на `logo.png`, сохраняя оригинальное расположение элементов страницы. + +### Пограничный случай: Отсутствующие ресурсы + +Если ресурс не найден, Aspose.HTML бросает `ResourceNotFoundException`. Оберните вызов `Save` в блок `try/catch`, если работаете с пользовательским HTML, который может ссылаться на внешние URL. + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## Шаг 4: Программно проверить содержимое ZIP (по желанию) + +Если вы создаёте веб‑сервис, возможно, захотите убедиться, что ZIP содержит всё необходимое перед отправкой дальше. Пространство имён .NET `System.IO.Compression` позволяет заглянуть внутрь без извлечения на диск. + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +Вы должны увидеть вывод, похожий на: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +Эта финальная проверка даёт уверенность, что шаг **создания ZIP из HTML** выполнен успешно. + +## Распространённые ошибки и как их избежать + +| Симптом | Вероятная причина | Решение | +|---------|-------------------|---------| +| ZIP пустой | `OutputStorage` не установлен или `HtmlSaveOptions` пропущен | Убедитесь, что `OutputStorage = zipStorage` и передайте `zipSaveOptions` в `Save`. | +| Изображения отображаются сломанными при открытии `index.html` | Обработчик ресурсов вернул новый пустой поток | Верните поток, действительно содержащий байты изображения, или позвольте Aspose обработать это автоматически. | +| Исключение Out‑of‑memory на больших страницах | Хранение всего в едином `MemoryStream` без сброса | Используйте `FileStream` для больших ресурсов или передавайте поток напрямую в HTTP‑ответ. | +| Неправильное расширение файла | Сохранено как `.html` вместо `.zip` | Убедитесь, что путь `FileStream` заканчивается на `.zip`. | + +## Полный рабочий пример + +Ниже приведена полностью готовая к запуску программа. Скопируйте её в консольный проект, добавьте пакет Aspose.HTML из NuGet и запустите. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Запуск программы выдаёт вывод, похожий на: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +Теперь у вас есть **конвейер преобразования HTML в ZIP**, который можно внедрять в веб‑API, фоновые задачи или настольные инструменты. + +## Заключение + +Мы рассмотрели всё, что нужно для **преобразования HTML в ZIP** с помощью Aspose.HTML: создание документа, маршрутизацию ресурсов в память, упаковку всего в ZIP и даже программную проверку результата. Подход лёгкий, работает полностью в процессе и даёт тонкий контроль над тем, как хранится каждый файл. + +Готовы к следующему вызову? Попробуйте заменить `ZipOutputStorage` на пользовательский `Stream`, который пишет напрямую в HTTP‑ответ, или поэкспериментируйте со сжатием изображений «на лету», чтобы уменьшить итоговый архив. Такие расширения позволят вам **создавать ZIP из 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/rendering-html-documents/_index.md b/html/russian/net/rendering-html-documents/_index.md index 80263a376..b093d391e 100644 --- a/html/russian/net/rendering-html-documents/_index.md +++ b/html/russian/net/rendering-html-documents/_index.md @@ -45,6 +45,7 @@ Aspose.HTML для .NET выделяется как лучший выбор дл ### [Как отрендерить HTML в PNG – Полное руководство C#](./how-to-render-html-as-png-complete-c-guide/) Полное руководство по рендерингу HTML в PNG с использованием Aspose.HTML и C#. + ### [Создание PNG из HTML – Полное руководство по рендерингу на C#](./create-png-from-html-full-c-rendering-guide/) Подробный учебник по созданию PNG из HTML с использованием Aspose.HTML для .NET на C#. @@ -62,11 +63,16 @@ Aspose.HTML для .NET выделяется как лучший выбор дл ### [Рендеринг SVG Doc как PNG в .NET с помощью Aspose.HTML](./render-svg-doc-as-png/) Откройте для себя мощь Aspose.HTML для .NET! Узнайте, как легко визуализировать SVG Doc как PNG. Погрузитесь в пошаговые примеры и часто задаваемые вопросы. Начните прямо сейчас! + ### [Как использовать Aspose для рендеринга HTML в PNG – пошаговое руководство](./how-to-use-aspose-to-render-html-to-png-step-by-step-guide/) Подробный пошаговый учебник по использованию Aspose.HTML для конвертации HTML в PNG в .NET. + ### [Как отрендерить HTML в PNG с помощью Aspose – Полное руководство](./how-to-render-html-to-png-with-aspose-complete-guide/) Подробный пошаговый учебник по рендерингу HTML в PNG с использованием Aspose.HTML для .NET. +### [Как отрендерить HTML в PNG на C# – пошаговое руководство](./how-to-render-html-to-png-in-c-step-by-step-guide/) +Подробный пошаговый учебник по рендерингу HTML в PNG с использованием Aspose.HTML в C#. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/russian/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/russian/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..e6c0ee22e --- /dev/null +++ b/html/russian/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-03-26 +description: Как быстро и надёжно рендерить HTML. Узнайте, как конвертировать HTML + в PNG, экспортировать HTML как PNG, применять стиль шрифта и загружать HTML‑документ + с помощью Aspose.Html. +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: ru +og_description: Как отобразить HTML в C# с помощью Aspose.Html. Это руководство покажет, + как преобразовать HTML в PNG, экспортировать HTML как PNG, применить стиль шрифта + и загрузить HTML‑документ. +og_title: Как преобразовать HTML в PNG на C# – Полное руководство +tags: +- C# +- Aspose.Html +- Image Rendering +title: Как преобразовать HTML в PNG в C# — пошаговое руководство +url: /ru/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как отрендерить HTML в PNG на C# – Пошаговое руководство + +Задумывались ли вы когда‑нибудь **как отрендерить HTML** в чёткое PNG‑изображение без борьбы с автоматизацией браузера? Вы не одиноки. Многие разработчики нуждаются в *конвертации HTML в PNG* для миниатюр писем, снимков отчётов или предварительных просмотров PDF, а привычные приёмы с безголовым браузером кажутся тяжёлыми. + +В этом руководстве мы пройдём через чистое решение на основе библиотеки, которое **загружает HTML‑документ**, позволяет **применять стиль шрифта** и другие настройки рендеринга, а затем **экспортирует HTML как PNG**. К концу вы получите готовую к запуску программу на C#, которая делает именно это, плюс несколько профессиональных советов, чтобы избежать распространённых подводных камней. + +## Требования + +- .NET 6.0 или новее (код также работает на .NET Core и .NET Framework) +- NuGet‑пакет Aspose.HTML for .NET (`Aspose.Html` и `Aspose.Html.Rendering.Image`) +- Пример HTML‑файла (`sample.html`), размещённого в доступном месте +- Базовые знания C# и Visual Studio (или любой другой IDE по вашему выбору) + +> **Pro tip:** Если вы работаете на CI‑сервере, добавьте DLL‑файлы Aspose.HTML в папку `packages` вашего проекта, чтобы сборка оставалась автономной. + +## Шаг 1 – Загрузка HTML‑документа + +Первое, что нужно сделать, — **загрузить HTML‑документ** в объект `HTMLDocument`. Aspose.HTML читает файл, разрешает относительные ресурсы и создаёт DOM, которым вы можете управлять. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **Why this matters:** Загрузка документа через Aspose гарантирует, что внешние CSS, изображения и шрифты обрабатываются так же, как в браузере, что критично, когда позже вы **конвертируете HTML в PNG**. + +## Шаг 2 – Настройка параметров рендеринга (применение стиля шрифта и прочее) + +Теперь мы настраиваем `ImageRenderingOptions`. Здесь вы **применяете стиль шрифта**, выбираете сглаживание и задаёте размеры вывода. Тонкая настройка этих параметров может значительно улучшить визуальное качество конечного PNG. + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### Что делают эти параметры + +| Option | Effect | When to change | +|--------|--------|----------------| +| `UseAntialiasing` | Сглаживает зубчатые края фигур и текста | Для вывода с высоким разрешением | +| `TextOptions.UseHinting` | Повышает читаемость мелкого шрифта | При рендеринге страниц с большим количеством UI‑элементов | +| `Font.Style / Size / Family` | Принудительно задаёт конкретный шрифт независимо от CSS страницы | Полезно для фирменного стиля или когда оригинальный шрифт недоступен | +| `Width` / `Height` | Устанавливает размер холста PNG | Соответствует области просмотра, которую вы видите в браузере | + +## Шаг 3 – Рендеринг документа в PNG‑изображение (конвертация HTML в PNG) + +С готовыми документом и параметрами мы передаём всё в `ImageRenderer`. Этот класс напрямую записывает отрендеренный битмап в файл, обеспечивая **конвертацию HTML в PNG**, которая быстра и экономична по памяти. + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **Edge case:** Если ваш HTML ссылается на внешние изображения по HTTP, убедитесь, что сервер доступен с машины, где выполняется код. Иначе рендерер оставит места‑заполнители. + +### Ожидаемый результат + +После завершения программы вы должны увидеть файл `rendered.png` в той же директории, что и `sample.html`. Откройте его в любом просмотрщике изображений — вы получите пиксельно‑точный снимок HTML‑страницы, полностью с **применённым стилем шрифта** и сглаженной графикой. + +![Пример вывода рендеринга html](rendered.png "Как отрендерить html – PNG‑результат образца HTML‑страницы") + +*(Alt text includes the primary keyword for SEO.)* + +## Шаг 4 – Программная проверка результата (необязательно) + +Иногда необходимо убедиться, что PNG создан корректно, особенно в автоматизированных конвейерах. Быстрая проверка размера в байтах или загрузка изображения через `System.Drawing` даст вам уверенность. + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## Часто задаваемые вопросы и подводные камни + +- **Что делать, если нужен другой формат изображения?** + `ImageRenderer` также поддерживает JPEG, BMP и GIF. Просто измените расширение файла и при необходимости задайте `ImageFormat` в `ImageRenderingOptions`. + +- **Можно ли отрендерить только конкретный элемент HTML?** + Да. Используйте `htmlDoc.GetElementById("myDiv")` и передайте полученный элемент в `ImageRenderer.Render(element)`. + +- **Нужно ли поставлять шрифт Arial вместе с приложением?** + Не обязательно. Если на целевой машине уже установлен Arial, рендерер его использует. В противном случае можно встроить пользовательский веб‑шрифт через CSS `@font-face` в вашем HTML. + +- **Как это сравнивается с безголовым Chrome?** + Aspose.HTML — полностью управляемая .NET‑библиотека, поэтому нет необходимости в внешних браузерах, драйверах или тяжёлых контейнерах. Обычно она быстрее для пакетных задач, хотя Chrome может более точно отрисовывать CSS3‑анимации. + +## Итоги + +Мы рассмотрели **как отрендерить HTML** в PNG‑изображение с помощью Aspose.HTML для .NET, показав, как **загрузить HTML‑документ**, **применить стиль шрифта** и **экспортировать HTML как PNG** всего несколькими строками кода на C#. Полный, готовый к запуску пример находится в сниппетах выше, и вы можете сразу скопировать‑вставить его в консольный проект. + +### Что дальше? + +- Поэкспериментируйте с различными значениями `Width`/`Height`, чтобы создавать миниатюры. +- Переключите формат вывода на JPEG для уменьшения размера файлов. +- Объедините несколько отрендеренных страниц в PDF с помощью `PdfRenderer`. +- Исследуйте медиа‑запросы CSS (`@media print`), чтобы настроить отображение при рендеринге. + +Не стесняйтесь менять параметры рендеринга, заменять шрифты или подавать динамический 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/spanish/net/html-extensions-and-conversions/_index.md b/html/spanish/net/html-extensions-and-conversions/_index.md index 58e38eec4..dbb039177 100644 --- a/html/spanish/net/html-extensions-and-conversions/_index.md +++ b/html/spanish/net/html-extensions-and-conversions/_index.md @@ -65,6 +65,8 @@ Convierta HTML a MHTML en .NET con Aspose.HTML: una guía paso a paso para archi Descubra cómo utilizar Aspose.HTML para .NET para manipular y convertir documentos HTML. Guía paso a paso para un desarrollo .NET eficaz. ### [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#. +### [Convertir HTML a ZIP en C# – Guía completa paso a paso](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +Aprenda a comprimir archivos HTML en un archivo ZIP usando C# y Aspose.HTML con una guía paso a paso completa. ### [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-zip-in-c-complete-step-by-step-guide/_index.md b/html/spanish/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..3af05d734 --- /dev/null +++ b/html/spanish/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,285 @@ +--- +category: general +date: 2026-03-26 +description: Convierte HTML a ZIP rápidamente con Aspose.HTML. Aprende cómo crear + un ZIP a partir de HTML, manejar los recursos en memoria y evitar errores comunes. +draft: false +keywords: +- convert html to zip +- create zip from html +language: es +og_description: Convierte HTML a ZIP sin esfuerzo. Esta guía te muestra cómo crear + un ZIP a partir de HTML usando Aspose.HTML, con código completo y consejos. +og_title: Convertir HTML a ZIP en C# – Tutorial completo de programación +tags: +- C# +- Aspose.HTML +- file compression +title: Convertir HTML a ZIP en C# – Guía completa paso a paso +url: /es/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Convertir HTML a ZIP en C# – Guía completa paso a paso + +¿Alguna vez necesitaste **convertir HTML a ZIP** pero no estabas seguro de qué API usar? No eres el único, muchos desarrolladores se encuentran con este obstáculo cuando intentan empaquetar una página web con sus imágenes, CSS y scripts en un único paquete descargable. + +¿La buena noticia? Con Aspose.HTML puedes **crear ZIP a partir de HTML** en unas pocas líneas, y tendrás control total sobre dónde vive cada recurso (memoria, disco o un stream). En este tutorial recorreremos todo el proceso, desde un pequeño fragmento de HTML hasta un archivo ZIP listo para descargar, y explicaremos el “por qué” detrás de cada elección. + +## Lo que aprenderás + +- Cómo configurar Aspose.HTML en un proyecto .NET. +- Cómo guardar un documento HTML y todos sus recursos vinculados en un `MemoryStream`. +- Cómo empaquetar el mismo HTML en un archivo ZIP con una única llamada. +- Consejos para manejar imágenes grandes, almacenamiento de recursos personalizado y manejo de errores. +- Salida esperada de la consola y cómo verificar el contenido del ZIP. + +No se requieren requisitos complicados, solo una versión reciente de .NET (Core 3.1+ o .NET 6) y el paquete NuGet de Aspose.HTML. Vamos a sumergirnos. + +![convert html to zip illustration](convert-html-to-zip.png){alt="ejemplo de conversión de html a zip"} + +## Requisitos previos + +| Requisito | Por qué es importante | +|-----------|-----------------------| +| .NET 6 SDK (or later) | El runtime más reciente te brinda el manejo más eficiente de `MemoryStream`. | +| Aspose.HTML for .NET (NuGet) | Proporciona las clases `HTMLDocument`, `HtmlSaveOptions` y `ZipOutputStorage` que utilizaremos. | +| Basic C# knowledge | Necesitarás comprender las sentencias `using` y los streams. | + +Instala la biblioteca con: + +```bash +dotnet add package Aspose.HTML +``` + +Ahora que la base está establecida, comencemos a convertir HTML a ZIP. + +## Paso 1: Crear un documento HTML simple + +Primero necesitamos una instancia de `HTMLDocument`. En un proyecto real probablemente cargarías un archivo desde el disco, pero para la demostración incrustaremos una página pequeña que hace referencia a una imagen local llamada `logo.png`. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*Por qué es importante:* Al construir el documento en código evitamos dependencias de archivos externos, haciendo que el ejemplo sea completamente autónomo, perfecto para citación de IA y pruebas rápidas. + +## Paso 2: Guardar el HTML y sus recursos en un MemoryStream + +A veces no deseas escribir en disco en absoluto, quizá estés enviando el ZIP a través de una API web. El `ResourceHandler` te permite dirigir cada archivo vinculado (imágenes, CSS, etc.) a un `MemoryStream` en lugar del sistema de archivos. + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**Lo que ves:** La consola imprime la longitud en bytes del HTML generado. Como usamos un `MemoryStream`, nada toca el disco, lo que significa que ahora puedes **convertir HTML a ZIP** completamente en memoria si lo deseas. + +### Consejo profesional + +Si tu HTML contiene imágenes grandes, considera sobrescribir `HandleResource` para comprimir el stream sobre la marcha. Así el ZIP final se mantiene liviano. + +## Paso 3: Empaquetar el HTML y sus recursos en un archivo ZIP + +Aspose.HTML incluye una práctica clase `ZipOutputStorage` que agrupa automáticamente el archivo HTML principal y cada recurso referenciado en un único archivo ZIP. Así es como se usa: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**Resultado:** `output.zip` ahora contiene: + +- `index.html` (el HTML que creamos) +- `logo.png` (la imagen referenciada en el marcado) + +Puedes abrir el ZIP con cualquier gestor de archivos y ver que el HTML sigue apuntando a `logo.png`, preservando el diseño original de la página. + +### Caso límite: Recursos faltantes + +Si no se puede encontrar un recurso, Aspose.HTML lanza una `ResourceNotFoundException`. Envuelve la llamada a `Save` en un bloque `try/catch` si estás manejando HTML generado por el usuario que podría referenciar URLs externas. + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## Paso 4: Verificar el contenido del ZIP programáticamente (Opcional) + +Si estás construyendo un servicio web, quizá quieras confirmar que el ZIP contiene todo antes de enviarlo. El espacio de nombres .NET `System.IO.Compression` te permite inspeccionar el contenido sin extraerlo al disco. + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +Deberías ver una salida similar a: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +Esa verificación final te brinda confianza de que el paso **crear ZIP a partir de HTML** se completó con éxito. + +## Errores comunes y cómo evitarlos + +| Síntoma | Causa probable | Solución | +|---------|----------------|----------| +| El ZIP está vacío | `OutputStorage` no está configurado o se omitió `HtmlSaveOptions` | Asegúrate de que `OutputStorage = zipStorage` y pasa `zipSaveOptions` a `Save`. | +| Las imágenes aparecen rotas al abrir `index.html` | El manejador de recursos devolvió un stream nuevo vacío | Devuelve un stream que realmente contenga los bytes de la imagen, o permite que Aspose lo maneje automáticamente. | +| Excepción de falta de memoria en páginas grandes | Almacenar todo en un único `MemoryStream` sin vaciar | Utiliza `FileStream` para recursos grandes o transmite directamente a la respuesta HTTP. | +| Extensión de archivo incorrecta | Guardado como `.html` en lugar de `.zip` | Verifica que la ruta del `FileStream` termine con `.zip`. | + +## Ejemplo completo funcional + +A continuación se muestra el programa completo, listo para ejecutar. Copia y pega en un proyecto de consola, agrega el paquete NuGet de Aspose.HTML y ejecútalo. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Ejecutar el programa produce una salida de consola similar a: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +Ahora tienes una canalización **convertir HTML a ZIP** que puedes incrustar en APIs web, trabajos en segundo plano o herramientas de escritorio. + +## Conclusión + +Hemos cubierto todo lo que necesitas para **convertir HTML a ZIP** usando Aspose.HTML: crear el documento, dirigir los recursos a la memoria, empaquetar todo en un ZIP e incluso verificar el resultado programáticamente. El enfoque es ligero, funciona completamente en proceso y te brinda un control granular sobre cómo se almacena cada archivo. + +¿Listo para el próximo desafío? Prueba reemplazar `ZipOutputStorage` por un `Stream` personalizado que escriba directamente a la respuesta HTTP, o experimenta comprimiendo imágenes sobre la marcha para reducir el archivo final. esas extensiones te permitirán **crear ZIP a partir de HTML** en escenarios aún más exigentes. + +¿Tienes preguntas o quieres compartir cómo adaptaste este patrón? Deja un comentario abajo, ¡y 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/rendering-html-documents/_index.md b/html/spanish/net/rendering-html-documents/_index.md index aa3ec875b..850a2b9a6 100644 --- a/html/spanish/net/rendering-html-documents/_index.md +++ b/html/spanish/net/rendering-html-documents/_index.md @@ -60,6 +60,8 @@ Aprenda a representar múltiples documentos HTML con Aspose.HTML para .NET. Aume Aprenda paso a paso a convertir HTML a PNG usando C# y Aspose.HTML. Guía completa con ejemplos claros. ### [Cómo renderizar HTML a PNG con Aspose – Guía completa](./how-to-render-html-to-png-with-aspose-complete-guide/) Aprenda a convertir HTML a PNG usando Aspose.HTML para .NET con esta guía completa paso a paso. +### [Cómo renderizar HTML a PNG en C# – Guía paso a paso](./how-to-render-html-to-png-in-c-step-by-step-guide/) +Siga esta guía paso a paso para convertir HTML a PNG con C# usando Aspose.HTML, con ejemplos claros y fáciles de seguir. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/spanish/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/spanish/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..d625f96bf --- /dev/null +++ b/html/spanish/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-03-26 +description: Cómo renderizar HTML de forma rápida y fiable. Aprende a convertir HTML + a PNG, exportar HTML como PNG, aplicar estilo de fuente y cargar documentos HTML + con Aspose.Html. +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: es +og_description: Cómo renderizar HTML en C# usando Aspose.Html. Esta guía le muestra + cómo convertir HTML a PNG, exportar HTML como PNG, aplicar estilo de fuente y cargar + un documento HTML. +og_title: Cómo renderizar HTML a PNG en C# – Tutorial completo +tags: +- C# +- Aspose.Html +- Image Rendering +title: Cómo renderizar HTML a PNG en C# – Guía paso a paso +url: /es/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo renderizar HTML a PNG en C# – Guía paso a paso + +¿Alguna vez te has preguntado **cómo renderizar HTML** en una imagen PNG nítida sin lidiar con la automatización de navegadores? No estás solo. Muchos desarrolladores necesitan *convertir HTML a PNG* para miniaturas de correos electrónicos, instantáneas de informes o vistas previas de PDF, y los trucos habituales con navegadores sin cabeza resultan pesados. + +En este tutorial recorreremos una solución limpia basada en una biblioteca que **carga un documento HTML**, te permite **aplicar estilo de fuente** y otros ajustes de renderizado, y finalmente **exporta HTML como PNG**. Al final tendrás un programa C# listo para ejecutar que hace exactamente eso, además de algunos consejos profesionales para evitar problemas comunes. + +## Requisitos previos + +- .NET 6.0 o posterior (el código funciona también en .NET Core y .NET Framework) +- Paquete NuGet Aspose.HTML for .NET (`Aspose.Html` y `Aspose.Html.Rendering.Image`) +- Un archivo HTML de ejemplo (`sample.html`) ubicado en una ruta a la que puedas referenciar +- Familiaridad básica con C# y Visual Studio (o cualquier IDE que prefieras) + +> **Pro tip:** Si trabajas en un servidor CI, agrega los DLL de Aspose.HTML a la carpeta `packages` de tu proyecto para que la compilación sea autosuficiente. + +## Paso 1 – Cargar el documento HTML + +Lo primero que debes hacer es **cargar el documento HTML** en un objeto `HTMLDocument`. Aspose.HTML lee el archivo, resuelve los recursos relativos y crea un DOM que puedes manipular. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **Por qué es importante:** Cargar el documento a través de Aspose garantiza que CSS externo, imágenes y fuentes se procesen de la misma manera que lo haría un navegador, lo cual es esencial cuando luego **conviertes HTML a PNG**. + +## Paso 2 – Configurar opciones de renderizado (Aplicar estilo de fuente y más) + +Ahora configuramos `ImageRenderingOptions`. Aquí es donde **aplicas estilo de fuente**, eliges antialiasing y defines las dimensiones de salida. Ajustar estas configuraciones puede mejorar drásticamente la fidelidad visual del PNG final. + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### Qué hacen realmente las opciones + +| Opción | Efecto | Cuándo cambiar | +|--------|--------|----------------| +| `UseAntialiasing` | Suaviza los bordes dentados en formas y texto | Para salidas de alta resolución | +| `TextOptions.UseHinting` | Mejora la legibilidad de fuentes pequeñas | Al renderizar páginas con mucho UI | +| `Font.Style / Size / Family` | Fuerza una fuente específica sin importar el CSS de la página | Útil para la identidad corporativa o cuando la fuente original no está disponible | +| `Width` / `Height` | Define el tamaño del lienzo del PNG | Igualar el viewport que verías en un navegador | + +## Paso 3 – Renderizar el documento a una imagen PNG (Convertir HTML a PNG) + +Con el documento y las opciones listas, entregamos todo a `ImageRenderer`. Esta clase escribe el bitmap renderizado directamente a un archivo, dándonos una operación **convertir HTML a PNG** rápida y eficiente en memoria. + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **Caso límite:** Si tu HTML hace referencia a imágenes externas vía HTTP, asegúrate de que el servidor sea accesible desde la máquina que ejecuta este código. De lo contrario, el renderizador dejará marcadores de posición. + +### Salida esperada + +Después de que el programa termine, deberías ver un archivo `rendered.png` en el mismo directorio que `sample.html`. Ábrelo con cualquier visor de imágenes: obtendrás una captura pixel‑perfecta de la página HTML, completa con el **estilo de fuente aplicado** y gráficos antialiasados. + +![Ejemplo de salida de cómo renderizar html](rendered.png "Cómo renderizar html – Resultado PNG de la página HTML de ejemplo") + +*(El texto alternativo incluye la palabra clave principal para SEO.)* + +## Paso 4 – Verificar el resultado programáticamente (Opcional) + +A veces necesitas confirmar que el PNG se creó correctamente, especialmente en pipelines automatizados. Una rápida comprobación del tamaño en bytes o cargar la imagen con `System.Drawing` puede darte confianza. + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## Preguntas frecuentes y trucos + +- **¿Qué pasa si necesito un formato de imagen diferente?** + `ImageRenderer` también soporta JPEG, BMP y GIF. Simplemente cambia la extensión del archivo y, opcionalmente, establece `ImageFormat` en `ImageRenderingOptions`. + +- **¿Puedo renderizar solo un elemento HTML específico?** + Sí. Usa `htmlDoc.GetElementById("myDiv")` y pasa ese elemento a `ImageRenderer.Render(element)`. + +- **¿Debo incluir la fuente Arial con mi aplicación?** + No necesariamente. Si la máquina objetivo ya tiene Arial, el renderizador la usará. De lo contrario, puedes incrustar una fuente web personalizada mediante CSS `@font-face` en tu HTML. + +- **¿Cómo se compara esto con Chrome sin cabeza?** + Aspose.HTML es una biblioteca .NET totalmente administrada, por lo que no necesitas navegadores externos, controladores o contenedores pesados. Suele ser más rápido para trabajos por lotes, aunque Chrome puede reproducir animaciones CSS3 con mayor fidelidad. + +## Conclusión + +Hemos cubierto **cómo renderizar HTML** a una imagen PNG usando Aspose.HTML para .NET, mostrándote cómo **cargar el documento HTML**, **aplicar estilo de fuente** y **exportar HTML como PNG** con solo unas pocas líneas de código C#. El ejemplo completo y ejecutable está en los fragmentos anteriores, y puedes copiar‑pegarlo en un proyecto de consola ahora mismo. + +### ¿Qué sigue? + +- Experimenta con diferentes valores de `Width`/`Height` para crear miniaturas. +- Cambia el formato de salida a JPEG para obtener archivos más pequeños. +- Combina varias páginas renderizadas en un PDF usando `PdfRenderer`. +- Explora consultas de medios CSS (`@media print`) para adaptar la vista renderizada. + +Siéntete libre de ajustar las opciones de renderizado, cambiar fuentes o alimentar HTML dinámico generado al vuelo. Si encuentras algún obstáculo, deja un comentario abajo—¡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/swedish/net/html-extensions-and-conversions/_index.md b/html/swedish/net/html-extensions-and-conversions/_index.md index 6d01c9b96..e76de5d8e 100644 --- a/html/swedish/net/html-extensions-and-conversions/_index.md +++ b/html/swedish/net/html-extensions-and-conversions/_index.md @@ -73,6 +73,8 @@ Skapa PDF från HTML med C# och Aspose.HTML för .NET. Följ vår steg‑för‑ Lär dig hur du sparar HTML som en ZIP-fil med en komplett C#-kodexempel och steg-för-steg-instruktioner. ### [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. +### [Konvertera HTML till ZIP i C# – Komplett steg‑för‑steg‑guide](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +Lär dig hur du konverterar HTML till en ZIP-fil i C# med en komplett steg‑för‑steg‑guide och kodexempel. ## Slutsats diff --git a/html/swedish/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/swedish/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..2a06116de --- /dev/null +++ b/html/swedish/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,285 @@ +--- +category: general +date: 2026-03-26 +description: Konvertera HTML till ZIP snabbt med Aspose.HTML. Lär dig hur du skapar + ZIP från HTML, hanterar resurser i minnet och undviker vanliga fallgropar. +draft: false +keywords: +- convert html to zip +- create zip from html +language: sv +og_description: Konvertera HTML till ZIP utan ansträngning. Den här guiden visar hur + du skapar ZIP från HTML med Aspose.HTML, med komplett kod och tips. +og_title: Konvertera HTML till ZIP i C# – Fullständig programmeringsgenomgång +tags: +- C# +- Aspose.HTML +- file compression +title: Konvertera HTML till ZIP i C# – Komplett steg‑för‑steg‑guide +url: /sv/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Konvertera HTML till ZIP i C# – Komplett steg‑för‑steg‑guide + +Har du någonsin behövt **convert HTML to ZIP** men varit osäker på vilket API du ska använda? Du är inte ensam—många utvecklare stöter på detta när de försöker leverera en webbsida med dess bilder, CSS och skript som ett enda nedladdningsbart paket. + +Den goda nyheten? Med Aspose.HTML kan du **create ZIP from HTML** på några få rader, och du får full kontroll över var varje resurs lagras (minne, disk eller en ström). I den här handledningen går vi igenom hela processen, från ett litet HTML‑snutt till en färdig‑att‑ladda‑ner ZIP‑fil, och vi förklarar “varför” bakom varje val. + +## Vad du kommer att lära dig + +- Hur du installerar Aspose.HTML i ett .NET‑projekt. +- Hur du sparar ett HTML‑dokument och alla dess länkade resurser i en `MemoryStream`. +- Hur du packar samma HTML i ett ZIP‑arkiv med ett enda anrop. +- Tips för att hantera stora bilder, anpassad resurslagring och felhantering. +- Förväntad konsolutdata och hur du verifierar ZIP‑innehållet. + +Inga krångliga förutsättningar—bara en nyare version av .NET (Core 3.1+ eller .NET 6) och Aspose.HTML‑paketet från NuGet. Låt oss dyka in. + +![konvertera html till zip illustration](convert-html-to-zip.png){alt="konvertera html till zip exempel"} + +## Förutsättningar + +| Krav | Varför det är viktigt | +|------|-----------------------| +| .NET 6 SDK (or later) | Den senaste runtime‑versionen ger dig den mest effektiva hanteringen av `MemoryStream`. | +| Aspose.HTML for .NET (NuGet) | Tillhandahåller klasserna `HTMLDocument`, `HtmlSaveOptions` och `ZipOutputStorage` som vi kommer att använda. | +| Basic C# knowledge | Du behöver förstå `using`‑satser och strömmar. | + +Install the library with: + +```bash +dotnet add package Aspose.HTML +``` + +Nu när grunderna är lagda, låt oss börja konvertera HTML till ZIP. + +## Steg 1: Skapa ett enkelt HTML‑dokument + +Först behöver vi en `HTMLDocument`‑instans. I ett riktigt projekt skulle du förmodligen ladda en fil från disk, men för demonstrationen bäddar vi in en liten sida som refererar till en lokal bild som heter `logo.png`. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*Varför detta är viktigt:* Genom att konstruera dokumentet i kod undviker vi externa filberoenden, vilket gör exemplet helt självständigt—perfekt för AI‑citering och snabb testning. + +## Steg 2: Spara HTML och dess resurser till en MemoryStream + +Ibland vill du inte skriva till disk alls—kanske skickar du ZIP‑filen via ett webb‑API. `ResourceHandler` låter dig dirigera varje länkad fil (bilder, CSS osv.) till en `MemoryStream` istället för filsystemet. + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**Vad du ser:** Konsolen skriver ut byte‑längden på den genererade HTML‑koden. Eftersom vi använde en `MemoryStream` rör sig inget på disken, vilket betyder att du nu kan **convert HTML to ZIP** helt i minnet om du vill. + +### Pro‑tips + +Om ditt HTML innehåller stora bilder, överväg att åsidosätta `HandleResource` för att komprimera strömmen i farten. På så sätt blir den slutgiltiga ZIP‑filen slank. + +## Steg 3: Packa HTML och dess resurser i ett ZIP‑arkiv + +Aspose.HTML levereras med en praktisk `ZipOutputStorage`‑klass som automatiskt samlar huvud‑HTML‑filen och alla refererade resurser i en enda ZIP‑fil. Så här använder du den: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**Resultat:** `output.zip` innehåller nu: + +- `index.html` (HTML‑filen vi skapade) +- `logo.png` (bilden som refereras i markupen) + +Du kan öppna ZIP‑filen med valfri arkivhanterare och se att HTML‑filen fortfarande pekar på `logo.png`, vilket bevarar den ursprungliga sidlayouten. + +### Kantfall: Saknade resurser + +Om en resurs inte kan hittas kastar Aspose.HTML ett `ResourceNotFoundException`. Omge `Save`‑anropet med ett `try/catch`‑block om du hanterar användargenererad HTML som kan referera till externa URL:er. + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## Steg 4: Verifiera ZIP‑innehållet programatiskt (valfritt) + +Om du bygger en webbtjänst kanske du vill bekräfta att ZIP‑filen innehåller allt innan du skickar den vidare. .NET‑namnutrymmet `System.IO.Compression` låter dig kika in utan att extrahera till disk. + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +Du bör se en utskrift liknande: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +Den sista kontrollen ger dig förtroende för att steget **create ZIP from HTML** lyckades. + +## Vanliga fallgropar & hur du undviker dem + +| Symptom | Trolig orsak | Lösning | +|---------|--------------|---------| +| ZIP är tom | `OutputStorage` inte satt eller `HtmlSaveOptions` utelämnad | Se till att `OutputStorage = zipStorage` och skicka `zipSaveOptions` till `Save`. | +| Bilder visas trasiga när `index.html` öppnas | Resurshanteraren returnerade en ny tom ström | Returnera en ström som faktiskt innehåller bildens byte, eller låt Aspose hantera det automatiskt. | +| Out‑of‑memory‑undantag på stora sidor | Lagrar allt i en enda `MemoryStream` utan att flusha | Använd `FileStream` för stora resurser eller strömma direkt till HTTP‑svaret. | +| Fel filändelse | Sparad som `.html` istället för `.zip` | Verifiera att `FileStream`‑sökvägen slutar med `.zip`. | + +## Fullt fungerande exempel + +Nedan är det kompletta, färdiga programmet. Kopiera‑klistra in det i ett konsolprojekt, lägg till Aspose.HTML‑paketet från NuGet, och kör. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +När programmet körs får du konsolutdata liknande: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +Du har nu en **convert HTML to ZIP**‑pipeline som du kan bädda in i webb‑API:er, bakgrundsjobb eller skrivbordsverktyg. + +## Slutsats + +Vi har gått igenom allt du behöver för att **convert HTML to ZIP** med Aspose.HTML: skapa dokumentet, dirigera resurser till minnet, packa allt i en ZIP, och även verifiera resultatet programatiskt. Metoden är lättviktig, fungerar helt i‑process och ger dig fin‑granulär kontroll över hur varje fil lagras. + +Redo för nästa utmaning? Prova att byta ut `ZipOutputStorage` mot en anpassad `Stream` som skriver direkt till ett HTTP‑svar, eller experimentera med att komprimera bilder i farten för att minska den slutliga arkivet. Dessa tillägg låter dig **create ZIP from HTML** i ännu mer krävande scenarier. + +Har du frågor eller vill dela hur du har anpassat detta mönster? Lämna en kommentar nedan, och lycka till med kodandet! + +{{< /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/rendering-html-documents/_index.md b/html/swedish/net/rendering-html-documents/_index.md index 72cae28c3..0f7c8d0c9 100644 --- a/html/swedish/net/rendering-html-documents/_index.md +++ b/html/swedish/net/rendering-html-documents/_index.md @@ -60,6 +60,8 @@ Lås upp kraften i Aspose.HTML för .NET! Lär dig hur du renderar SVG-dokument Lär dig hur du med Aspose.HTML för .NET konverterar HTML till PNG i en detaljerad steg‑för‑steg‑handledning. ### [Hur man renderar HTML till PNG med Aspose – Komplett guide](./how-to-render-html-to-png-with-aspose-complete-guide/) Lär dig hur du med Aspose.HTML för .NET konverterar HTML till PNG i en komplett guide. +### [Hur man renderar HTML till PNG i C# – Steg‑för‑steg‑guide](./how-to-render-html-to-png-in-c-step-by-step-guide/) +Lär dig steg för steg hur du renderar HTML till PNG i C# med Aspose.HTML för .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/swedish/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/swedish/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..ae2398e4d --- /dev/null +++ b/html/swedish/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-03-26 +description: Hur man renderar HTML snabbt och pålitligt. Lär dig att konvertera HTML + till PNG, exportera HTML som PNG, tillämpa teckensnittsstil och ladda HTML-dokument + med Aspose.Html. +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: sv +og_description: Hur du renderar HTML i C# med Aspose.Html. Den här guiden visar hur + du konverterar HTML till PNG, exporterar HTML som PNG, tillämpar teckensnittsstil + och laddar ett HTML-dokument. +og_title: Hur man renderar HTML till PNG i C# – Komplett handledning +tags: +- C# +- Aspose.Html +- Image Rendering +title: Hur man renderar HTML till PNG i C# – Steg‑för‑steg‑guide +url: /sv/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Så renderar du HTML till PNG i C# – Steg‑för‑steg‑guide + +Har du någonsin undrat **hur man renderar HTML** till en skarp PNG‑bild utan att kämpa med webbläsar‑automation? Du är inte ensam. Många utvecklare behöver *konvertera HTML till PNG* för e‑post‑miniatyrer, rapport‑ögonblicksbilder eller PDF‑förhandsvisningar, och de vanliga headless‑browser‑knepen känns tunga. + +I den här handledningen går vi igenom en ren, bibliotek‑baserad lösning som **läser in ett HTML‑dokument**, låter dig **applicera typsnittsstil** och andra renderingsjusteringar, och slutligen **exporterar HTML som PNG**. När du är klar har du ett färdigt C#‑program som gör exakt detta, plus några pro‑tips för att undvika vanliga fallgropar. + +## Förutsättningar + +- .NET 6.0 eller senare (koden fungerar även på .NET Core och .NET Framework) +- Aspose.HTML for .NET NuGet‑paket (`Aspose.Html` och `Aspose.Html.Rendering.Image`) +- En exempel‑HTML‑fil (`sample.html`) placerad någonstans du kan referera till +- Grundläggande kunskap om C# och Visual Studio (eller någon annan IDE du föredrar) + +> **Pro tip:** Om du kör på en CI‑server, lägg till Aspose.HTML‑DLL‑arna i ditt projekts `packages`‑mapp så att bygget blir självständigt. + +## Steg 1 – Ladda HTML‑dokumentet + +Det första du måste göra är att **ladda HTML‑dokumentet** i ett `HTMLDocument`‑objekt. Aspose.HTML läser filen, löser relativa resurser och skapar ett DOM som du kan manipulera. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **Why this matters:** Att ladda dokumentet via Aspose säkerställer att extern CSS, bilder och typsnitt behandlas på samma sätt som en webbläsare skulle göra, vilket är avgörande när du senare **konverterar HTML till PNG**. + +## Steg 2 – Konfigurera renderingsalternativ (Applicera typsnittsstil & mer) + +Nu sätter vi upp `ImageRenderingOptions`. Här **applicerar du typsnittsstil**, väljer antialiasing och definierar utmatningsdimensionerna. Att finjustera dessa inställningar kan dramatiskt förbättra den visuella kvaliteten på den färdiga PNG‑filen. + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### Vad alternativen faktiskt gör + +| Alternativ | Effekt | När att ändra | +|------------|--------|----------------| +| `UseAntialiasing` | Utjämnar hackiga kanter på former och text | För högupplösta utskrifter | +| `TextOptions.UseHinting` | Förbättrar läsbarheten för små teckensnitt | När du renderar UI‑tunga sidor | +| `Font.Style / Size / Family` | Tvingar ett specifikt typsnitt oavsett sidans CSS | Användbart för företagsvarumärke eller när originaltypsnittet inte är tillgängligt | +| `Width` / `Height` | Ställer in canvas‑storleken för PNG‑filen | Matcha den viewport du skulle se i en webbläsare | + +## Steg 3 – Rendera dokumentet till en PNG‑bild (Konvertera HTML till PNG) + +Med dokumentet och alternativen klara, överlämnar vi allt till `ImageRenderer`. Denna klass strömmar den renderade bitmapen direkt till en fil, vilket ger oss en **konvertera HTML till PNG**‑operation som både är snabb och minnes‑effektiv. + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **Edge case:** Om ditt HTML refererar till externa bilder via HTTP, se till att servern är nåbar från maskinen som kör koden. Annars lämnar renderaren platshållare. + +### Förväntat resultat + +Efter att programmet har kört färdigt bör du se en `rendered.png`‑fil i samma katalog som `sample.html`. Öppna den i någon bildvisare – du får en pixel‑perfekt ögonblicksbild av HTML‑sidan, komplett med den **applicerade typsnittsstilen** och antialiasade grafik. + +![Exempel på renderad HTML](rendered.png "Hur man renderar HTML – PNG‑resultat av exempel‑HTML‑sidan") + +*(Alt‑texten innehåller huvudnyckelordet för SEO.)* + +## Steg 4 – Verifiera resultatet programatiskt (valfritt) + +Ibland behöver du bekräfta att PNG‑filen skapades korrekt, särskilt i automatiserade pipelines. En snabb kontroll av filstorlek eller att ladda bilden med `System.Drawing` kan ge dig förtroende. + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## Vanliga frågor & fallgropar + +- **Vad händer om jag behöver ett annat bildformat?** + `ImageRenderer` stödjer även JPEG, BMP och GIF. Ändra bara filändelsen och eventuellt `ImageFormat` i `ImageRenderingOptions`. + +- **Kan jag rendera endast ett specifikt HTML‑element?** + Ja. Använd `htmlDoc.GetElementById("myDiv")` och skicka det elementet till `ImageRenderer.Render(element)`. + +- **Måste jag leverera Arial‑typsnittet med min app?** + Inte nödvändigtvis. Om målmaskinen redan har Arial kommer renderaren att använda det. Annars kan du bädda in ett eget web‑typsnitt via CSS `@font-face` i ditt HTML. + +- **Hur står detta sig mot headless Chrome?** + Aspose.HTML är ett rent hanterat .NET‑bibliotek, så du behöver inga externa webbläsare, drivrutiner eller tunga containrar. Det är vanligtvis snabbare för batch‑jobb, även om Chrome kan rendera CSS3‑animationer mer exakt. + +## Sammanfattning + +Vi har gått igenom **hur man renderar HTML** till en PNG‑bild med Aspose.HTML för .NET, visat hur du **läser in HTML‑dokument**, **applicerar typsnittsstil** och **exporterar HTML som PNG** med bara några rader C#‑kod. Det fullständiga, körbara exemplet finns i kodsnuttarna ovan, och du kan kopiera‑klistra in det i ett konsolprojekt direkt nu. + +### Vad blir nästa steg? + +- Experimentera med olika `Width`/`Height`‑värden för att skapa miniatyrer. +- Byt ut utmatningsformatet till JPEG för mindre filstorlekar. +- Kombinera flera renderade sidor till en PDF med `PdfRenderer`. +- Utforska CSS‑media‑queries (`@media print`) för att anpassa den renderade vyn. + +Känn dig fri att justera renderingsalternativen, byta typsnitt eller mata in dynamisk HTML som genereras i farten. Om du stöter på problem, lämna en kommentar nedan – 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/thai/net/html-extensions-and-conversions/_index.md b/html/thai/net/html-extensions-and-conversions/_index.md index 2474ca32c..8f9559cf1 100644 --- a/html/thai/net/html-extensions-and-conversions/_index.md +++ b/html/thai/net/html-extensions-and-conversions/_index.md @@ -65,14 +65,12 @@ Aspose.HTML สำหรับ .NET ไม่ใช่แค่ไลบรา ค้นพบพลังของ Aspose.HTML สำหรับ .NET: แปลง HTML เป็น XPS ได้อย่างง่ายดาย มีข้อกำหนดเบื้องต้น คำแนะนำทีละขั้นตอน และคำถามที่พบบ่อยรวมอยู่ด้วย ### [วิธีบีบอัด HTML เป็น Zip ใน C# – บันทึก HTML เป็น Zip](./how-to-zip-html-in-c-save-html-to-zip/) เรียนรู้วิธีบีบอัดไฟล์ HTML เป็นไฟล์ Zip ด้วย C# และ Aspose.HTML สำหรับ .NET อย่างง่ายดายและปลอดภัย -### [สร้างเอกสาร HTML พร้อมข้อความที่มีสไตล์และส่งออกเป็น PDF – คู่มือเต็ม](./create-html-document-with-styled-text-and-export-to-pdf-full/) -เรียนรู้วิธีสร้างเอกสาร HTML ที่มีข้อความจัดรูปแบบและแปลงเป็น PDF อย่างละเอียดด้วย Aspose.HTML สำหรับ .NET -### [สร้าง PDF จาก HTML – คำแนะนำขั้นตอนโดยขั้นตอน C#](./create-pdf-from-html-c-step-by-step-guide/) -เรียนรู้วิธีสร้าง PDF จากไฟล์ HTML ด้วย C# โดยใช้ Aspose.HTML สำหรับ .NET ตามขั้นตอนที่ชัดเจน ### [บันทึก HTML เป็น ZIP – คอร์สเต็ม C#](./save-html-as-zip-complete-c-tutorial/) -บันทึกไฟล์ HTML เป็น ZIP อย่างครบถ้วนด้วย C# ตามขั้นตอนของเรา +เรียนรู้วิธีบีบอัดไฟล์ HTML เป็น ZIP อย่างละเอียดด้วย C# และ Aspose.HTML สำหรับ .NET ตามขั้นตอนที่ชัดเจน ### [บันทึก HTML เป็น ZIP ใน C# – ตัวอย่างทำงานในหน่วยความจำเต็มรูปแบบ](./save-html-to-zip-in-c-complete-in-memory-example/) -บันทึกไฟล์ HTML เป็นไฟล์ ZIP โดยใช้ C# ด้วยตัวอย่างทำงานในหน่วยความจำเต็มรูปแบบ +บันทึกไฟล์ HTML เป็น ZIP โดยใช้ C# ด้วยตัวอย่างทำงานในหน่วยความจำเต็มรูปแบบ +### [แปลง HTML เป็น ZIP ใน C# – คู่มือเต็มขั้นตอน](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +เรียนรู้วิธีบีบอัดไฟล์ HTML เป็น ZIP อย่างละเอียดด้วย C# และ Aspose.HTML สำหรับ .NET ตามขั้นตอนที่ชัดเจน ## บทสรุป diff --git a/html/thai/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/thai/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..6d2944eb7 --- /dev/null +++ b/html/thai/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,285 @@ +--- +category: general +date: 2026-03-26 +description: แปลง HTML เป็น ZIP อย่างรวดเร็วด้วย Aspose.HTML เรียนรู้วิธีสร้าง ZIP + จาก HTML จัดการทรัพยากรในหน่วยความจำ และหลีกเลี่ยงข้อผิดพลาดทั่วไป +draft: false +keywords: +- convert html to zip +- create zip from html +language: th +og_description: แปลง HTML เป็น ZIP อย่างง่ายดาย คู่มือนี้จะแสดงวิธีสร้างไฟล์ ZIP จาก + HTML ด้วย Aspose.HTML พร้อมโค้ดเต็มและเคล็ดลับ +og_title: แปลง HTML เป็น ZIP ด้วย C# – คู่มือการเขียนโปรแกรมเต็มรูปแบบ +tags: +- C# +- Aspose.HTML +- file compression +title: แปลง HTML เป็น ZIP ด้วย C# – คู่มือขั้นตอนเต็ม +url: /th/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# แปลง HTML เป็น ZIP ด้วย C# – คู่มือครบขั้นตอน + +เคยต้อง **แปลง HTML เป็น ZIP** แต่ไม่รู้ว่าจะใช้ API ตัวไหนหรือไม่? คุณไม่ได้เป็นคนเดียว—นักพัฒนาหลายคนเจออุปสรรคนี้เมื่อต้องจัดส่งหน้าเว็บพร้อมรูปภาพ, CSS, และสคริปต์เป็นแพคเกจเดียวที่ดาวน์โหลดได้ + +ข่าวดีคือ? ด้วย Aspose.HTML คุณสามารถ **สร้าง ZIP จาก HTML** ได้ด้วยไม่กี่บรรทัด และคุณจะได้ควบคุมตำแหน่งที่เก็บทรัพยากรแต่ละอย่าง (หน่วยความจำ, ดิสก์, หรือสตรีม) อย่างเต็มที่ ในบทเรียนนี้เราจะเดินผ่านกระบวนการทั้งหมด ตั้งแต่ส่วนย่อยของ HTML จนถึงไฟล์ ZIP ที่พร้อมดาวน์โหลด พร้อมอธิบาย “ทำไม” ของแต่ละขั้นตอน + +## สิ่งที่คุณจะได้เรียนรู้ + +- วิธีตั้งค่า Aspose.HTML ในโปรเจกต์ .NET +- วิธีบันทึกเอกสาร HTML และทรัพยากรที่เชื่อมโยงทั้งหมดลงใน `MemoryStream` +- วิธีบรรจุ HTML เดียวกันลงในไฟล์ ZIP ด้วยการเรียกครั้งเดียว +- เคล็ดลับการจัดการรูปภาพขนาดใหญ่, การจัดเก็บทรัพยากรแบบกำหนดเอง, และการจัดการข้อผิดพลาด +- ตัวอย่างผลลัพธ์ในคอนโซลและวิธีตรวจสอบเนื้อหาใน ZIP + +ไม่ต้องมีข้อกำหนดพิเศษ—แค่ .NET เวอร์ชันล่าสุด (Core 3.1+ หรือ .NET 6) และแพคเกจ Aspose.HTML จาก NuGet มาเริ่มกันเลย + +![convert html to zip illustration](convert-html-to-zip.png){alt="ตัวอย่างการแปลง html เป็น zip"} + +## ข้อกำหนดเบื้องต้น + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6 SDK (หรือใหม่กว่า) | Runtime ล่าสุดให้การจัดการ `MemoryStream` ที่มีประสิทธิภาพที่สุด | +| Aspose.HTML for .NET (NuGet) | มีคลาส `HTMLDocument`, `HtmlSaveOptions`, และ `ZipOutputStorage` ที่เราจะใช้ | +| ความรู้พื้นฐาน C# | จำเป็นต้องเข้าใจคำสั่ง `using` และสตรีมต่าง ๆ | + +ติดตั้งไลบรารีด้วย: + +```bash +dotnet add package Aspose.HTML +``` + +เมื่อเตรียมพื้นฐานเรียบร้อยแล้ว เรามาเริ่มแปลง HTML เป็น ZIP กัน + +## ขั้นตอนที่ 1: สร้างเอกสาร HTML อย่างง่าย + +ก่อนอื่นเราต้องสร้างอินสแตนซ์ `HTMLDocument` ในโปรเจกต์จริงคุณอาจโหลดไฟล์จากดิสก์ แต่ในตัวอย่างนี้เราจะฝังหน้าเว็บขนาดเล็กที่อ้างอิงรูปภาพท้องถิ่นชื่อ `logo.png` + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*ทำไมต้องทำแบบนี้:* การสร้างเอกสารในโค้ดช่วยหลีกเลี่ยงการพึ่งพาไฟล์ภายนอก ทำให้ตัวอย่างเป็นอิสระเต็มรูปแบบ—เหมาะสำหรับการอ้างอิง AI และการทดสอบอย่างรวดเร็ว + +## ขั้นตอนที่ 2: บันทึก HTML และทรัพยากรลงใน MemoryStream + +บางครั้งคุณอาจไม่ต้องการเขียนลงดิสก์เลย—เช่นต้องส่ง ZIP ผ่าน Web API `ResourceHandler` ช่วยให้คุณส่งไฟล์ที่เชื่อมโยงทั้งหมด (รูปภาพ, CSS ฯลฯ) ไปยัง `MemoryStream` แทนระบบไฟล์ + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**สิ่งที่คุณเห็น:** คอนโซลจะแสดงความยาวเป็นไบต์ของ HTML ที่สร้างขึ้น เนื่องจากเราใช้ `MemoryStream` จึงไม่มีการเขียนใด ๆ ไปยังดิสก์ ทำให้คุณสามารถ **แปลง HTML เป็น ZIP** ได้ทั้งหมดในหน่วยความจำหากต้องการ + +### เคล็ดลับพิเศษ + +หาก HTML ของคุณมีรูปภาพขนาดใหญ่ ให้พิจารณา override `HandleResource` เพื่อบีบอัดสตรีมขณะทำงาน วิธีนี้จะทำให้ไฟล์ ZIP สุดท้ายมีขนาดเบาลง + +## ขั้นตอนที่ 3: บรรจุ HTML และทรัพยากรลงในไฟล์ ZIP + +Aspose.HTML มีคลาส `ZipOutputStorage` ที่ช่วยบันเดิลไฟล์ HTML หลักและทรัพยากรที่อ้างอิงทั้งหมดลงในไฟล์ ZIP เพียงไฟล์เดียว ตัวอย่างการใช้งาน: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**ผลลัพธ์:** `output.zip` จะประกอบด้วย + +- `index.html` (HTML ที่เราสร้าง) +- `logo.png` (รูปภาพที่อ้างอิงใน markup) + +คุณสามารถเปิด ZIP ด้วยโปรแกรมจัดการไฟล์ใดก็ได้และเห็นว่า HTML ยังคงอ้างอิง `logo.png` อยู่ ทำให้หน้าเว็บแสดงผลเหมือนเดิม + +### กรณีขอบ: ทรัพยากรหายไป + +หากไม่พบทรัพยากร Aspose.HTML จะโยน `ResourceNotFoundException` ให้ใส่ `Save` ไว้ในบล็อก `try/catch` หากคุณต้องรับ HTML ที่ผู้ใช้สร้างซึ่งอาจอ้างอิง URL ภายนอก + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## ขั้นตอนที่ 4: ตรวจสอบเนื้อหาใน ZIP ด้วยโปรแกรม (ทางเลือก) + +หากคุณสร้างเว็บเซอร์วิส อาจต้องยืนยันว่า ZIP มีทุกอย่างก่อนส่งต่อ .NET namespace `System.IO.Compression` ช่วยให้คุณดูเนื้อหาใน ZIP ได้โดยไม่ต้องแตกไฟล์ออกมา + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +คุณควรเห็นผลลัพธ์คล้ายกับ: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +การตรวจสอบขั้นสุดท้ายนี้ทำให้คุณมั่นใจว่า **สร้าง ZIP จาก HTML** สำเร็จแล้ว + +## ข้อผิดพลาดทั่วไป & วิธีหลีกเลี่ยง + +| Symptom | Likely cause | Fix | +|---------|--------------|-----| +| ZIP ว่างเปล่า | ไม่ได้ตั้ง `OutputStorage` หรือไม่ได้ใส่ `HtmlSaveOptions` | ตรวจสอบให้ `OutputStorage = zipStorage` และส่ง `zipSaveOptions` ไปยัง `Save` | +| รูปภาพเสียเมื่อเปิด `index.html` | `ResourceHandler` คืนสตรีมว่าง | คืนสตรีมที่มีไบต์ของรูปภาพจริง หรือให้ Aspose จัดการอัตโนมัติ | +| Out‑of‑memory บนหน้าใหญ่ | เก็บทุกอย่างใน `MemoryStream` เดียวโดยไม่ flush | ใช้ `FileStream` สำหรับทรัพยากรขนาดใหญ่หรือสตรีมโดยตรงไปยัง HTTP response | +| นามสกุลไฟล์ผิด | บันทึกเป็น `.html` แทน `.zip` | ตรวจสอบให้เส้นทาง `FileStream` ลงท้ายด้วย `.zip` | + +## ตัวอย่างโค้ดเต็มที่ทำงานได้ + +ด้านล่างเป็นโปรแกรมพร้อมรันที่สมบูรณ์ คัดลอกวางลงในโปรเจกต์คอนโซล เพิ่มแพคเกจ Aspose.HTML จาก NuGet แล้วรัน + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +เมื่อรันโปรแกรมจะได้ผลลัพธ์ในคอนโซลคล้ายกับ: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +ตอนนี้คุณมี **pipeline แปลง HTML เป็น ZIP** ที่สามารถฝังลงใน Web API, งานเบื้องหลัง, หรือเครื่องมือเดสก์ท็อปได้แล้ว + +## สรุป + +เราได้ครอบคลุมทุกอย่างที่จำเป็นสำหรับการ **แปลง HTML เป็น ZIP** ด้วย Aspose.HTML: การสร้างเอกสาร, การส่งทรัพยากรไปยังหน่วยความจำ, การบรรจุทั้งหมดลงใน ZIP, และแม้กระทั่งการตรวจสอบผลลัพธ์ด้วยโปรแกรม วิธีนี้เบา, ทำงานทั้งหมดใน‑process, และให้คุณควบคุมการจัดเก็บไฟล์แต่ละไฟล์ได้อย่างละเอียด + +พร้อมรับความท้าทายต่อไปหรือยัง? ลองเปลี่ยน `ZipOutputStorage` เป็น `Stream` ที่เขียนโดยตรงไปยัง HTTP response, หรือทดลองบีบอัดรูปภาพขณะทำงานเพื่อทำให้ไฟล์สุดท้ายเล็กลง การขยายเหล่านี้จะทำให้คุณ **สร้าง ZIP จาก HTML** ได้ในสถานการณ์ที่ต้องการประสิทธิภาพสูงขึ้น + +มีคำถามหรืออยากแชร์วิธีที่คุณปรับใช้ pattern นี้? แสดงความคิดเห็นด้านล่าง แล้วขอให้เขียนโค้ดอย่างสนุกสนาน! + +{{< /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/rendering-html-documents/_index.md b/html/thai/net/rendering-html-documents/_index.md index 9266aa954..3d18dd86a 100644 --- a/html/thai/net/rendering-html-documents/_index.md +++ b/html/thai/net/rendering-html-documents/_index.md @@ -62,6 +62,8 @@ Aspose.HTML สำหรับ .NET ถือเป็นตัวเลือ เรียนรู้วิธีการเรนเดอร์ไฟล์ HTML เป็น PNG ด้วย Aspose.HTML สำหรับ .NET อย่างละเอียดในคู่มือขั้นตอนนี้! ### [วิธีเรนเดอร์ HTML เป็น PNG ด้วย Aspose – คู่มือฉบับสมบูรณ์](./how-to-render-html-to-png-with-aspose-complete-guide/) เรียนรู้วิธีการเรนเดอร์ไฟล์ HTML เป็น PNG อย่างละเอียดด้วย Aspose.HTML สำหรับ .NET ในคู่มือฉบับสมบูรณ์นี้! +### [วิธีเรนเดอร์ HTML เป็น PNG ใน C# – คู่มือขั้นตอนต่อขั้นตอน](./how-to-render-html-to-png-in-c-step-by-step-guide/) +เรียนรู้วิธีการเรนเดอร์ไฟล์ HTML เป็น PNG ด้วย C# อย่างละเอียดในคู่มือขั้นตอนต่อขั้นตอนนี้ {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/thai/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/thai/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..8ec45f5ac --- /dev/null +++ b/html/thai/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,184 @@ +--- +category: general +date: 2026-03-26 +description: วิธีการเรนเดอร์ HTML อย่างรวดเร็วและเชื่อถือได้ เรียนรู้การแปลง HTML + เป็น PNG, ส่งออก HTML เป็น PNG, ใช้สไตล์ฟอนต์และโหลดเอกสาร HTML ด้วย Aspose.Html. +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: th +og_description: วิธีเรนเดอร์ HTML ใน C# ด้วย Aspose.Html คู่มือนี้จะแสดงวิธีแปลง HTML + เป็น PNG, ส่งออก HTML เป็น PNG, ใช้สไตล์ฟอนต์ และโหลดเอกสาร HTML. +og_title: วิธีแปลง HTML เป็น PNG ใน C# – คำแนะนำเต็ม +tags: +- C# +- Aspose.Html +- Image Rendering +title: วิธีเรนเดอร์ HTML เป็น PNG ใน C# – คู่มือแบบขั้นตอนโดยละเอียด +url: /th/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีแปลง HTML เป็น PNG ใน C# – คู่มือขั้นตอนโดยละเอียด + +เคยสงสัยไหมว่า **วิธีแปลง HTML** ให้เป็นภาพ PNG คมชัดโดยไม่ต้องต่อสู้กับการทำอัตโนมัติของเบราว์เซอร์? คุณไม่ได้เป็นคนเดียว นักพัฒนาจำนวนมากต้องการ *แปลง HTML เป็น PNG* สำหรับภาพย่ออีเมล, ภาพสแนปช็อตของรายงาน, หรือพรีวิว PDF, และเทคนิคเบราว์เซอร์แบบ headless ที่ใช้กันทั่วไปรู้สึกหนักเกินไป + +ในบทแนะนำนี้เราจะพาคุณผ่านโซลูชันที่ใช้ไลบรารีอย่างสะอาดที่ **โหลดเอกสาร HTML**, ให้คุณ **ปรับสไตล์ฟอนต์** และการปรับแต่งการเรนเดอร์อื่น ๆ, และสุดท้าย **ส่งออก HTML เป็น PNG**. เมื่อจบคุณจะมีโปรแกรม C# ที่พร้อมรันทำสิ่งเหล่านี้ได้เลย พร้อมเคล็ดลับมืออาชีพเพื่อหลีกเลี่ยงข้อผิดพลาดทั่วไป + +## ข้อกำหนดเบื้องต้น + +- .NET 6.0 หรือใหม่กว่า (โค้ดทำงานบน .NET Core และ .NET Framework ด้วย) +- Aspose.HTML for .NET NuGet package (`Aspose.Html` and `Aspose.Html.Rendering.Image`) +- ไฟล์ HTML ตัวอย่าง (`sample.html`) ที่วางไว้ในตำแหน่งที่คุณสามารถอ้างอิงได้ +- ความคุ้นเคยพื้นฐานกับ C# และ Visual Studio (หรือ IDE ใดก็ได้ที่คุณชอบ) + +> **เคล็ดลับมืออาชีพ:** หากคุณทำงานบนเซิร์ฟเวอร์ CI ให้เพิ่มไฟล์ DLL ของ Aspose.HTML ไปยังโฟลเดอร์ `packages` ของโปรเจกต์ เพื่อให้การสร้างแอปเป็นแบบ self‑contained + +## ขั้นตอนที่ 1 – โหลดเอกสาร HTML + +สิ่งแรกที่คุณต้องทำคือ **โหลดเอกสาร HTML** เข้าไปในอ็อบเจ็กต์ `HTMLDocument`. Aspose.HTML จะอ่านไฟล์, แก้ไขเส้นทางทรัพยากรสัมพันธ์, และสร้าง DOM ที่คุณสามารถจัดการได้ + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **ทำไมเรื่องนี้สำคัญ:** การโหลดเอกสารผ่าน Aspose ทำให้ CSS ภายนอก, รูปภาพ, และฟอนต์ถูกประมวลผลเช่นเดียวกับเบราว์เซอร์ ซึ่งจำเป็นเมื่อคุณต้อง **แปลง HTML เป็น PNG** ในขั้นตอนต่อไป + +## ขั้นตอนที่ 2 – ตั้งค่าตัวเลือกการเรนเดอร์ (ปรับสไตล์ฟอนต์ & อื่น ๆ) + +ต่อไปเราตั้งค่า `ImageRenderingOptions`. ที่นี่คุณจะ **ปรับสไตล์ฟอนต์**, เลือกการทำ antialiasing, และกำหนดขนาดผลลัพธ์ การปรับค่าเหล่านี้สามารถเพิ่มความคมชัดของ PNG สุดท้ายได้อย่างมาก + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### ตัวเลือกทำอะไรบ้าง + +| ตัวเลือก | ผลกระทบ | เมื่อควรเปลี่ยน | +|----------|----------|-------------------| +| `UseAntialiasing` | ทำให้ขอบของรูปทรงและข้อความเรียบเนียน | สำหรับผลลัพธ์ความละเอียดสูง | +| `TextOptions.UseHinting` | ปรับปรุงความอ่านง่ายของฟอนต์ขนาดเล็ก | เมื่อเรนเดอร์หน้า UI หนัก | +| `Font.Style / Size / Family` | บังคับใช้ฟอนต์เฉพาะโดยไม่สนใจ CSS ของหน้า | มีประโยชน์สำหรับแบรนด์องค์กรหรือเมื่อฟอนต์ต้นฉบับไม่มี | +| `Width` / `Height` | กำหนดขนาดแคนวาสของ PNG | ให้ตรงกับ viewport ที่คุณเห็นในเบราว์เซอร์ | + +## ขั้นตอนที่ 3 – เรนเดอร์เอกสารเป็นภาพ PNG (แปลง HTML เป็น PNG) + +เมื่อเอกสารและตัวเลือกพร้อม เราจะส่งทั้งหมดให้ `ImageRenderer`. คลาสนี้จะสตรีมบิตแมพที่เรนเดอร์แล้วตรงไปยังไฟล์ ทำให้การ **แปลง HTML เป็น PNG** ทำได้เร็วและใช้หน่วยความจำน้อย + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **กรณีขอบ:** หาก HTML ของคุณอ้างอิงรูปภาพภายนอกผ่าน HTTP ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์สามารถเข้าถึงได้จากเครื่องที่รันโค้ด มิฉะนั้นเรนเดอร์จะใส่ตำแหน่งว่างไว้ + +### ผลลัพธ์ที่คาดหวัง + +หลังจากโปรแกรมทำงานเสร็จ คุณควรเห็นไฟล์ `rendered.png` อยู่ในไดเรกทอรีเดียวกับ `sample.html`. เปิดด้วยโปรแกรมดูรูปใดก็ได้ – คุณจะได้ภาพสแนปช็อตที่พิกเซล‑เพอร์เฟ็กต์ของหน้า HTML พร้อม **สไตล์ฟอนต์ที่ปรับใช้** และกราฟิกที่ทำ antialiasing + +![ตัวอย่างผลลัพธ์การแสดงผล HTML](rendered.png "ผลลัพธ์ PNG ของหน้า HTML ตัวอย่าง") + +*(ข้อความ Alt มีคีย์เวิร์ดหลักสำหรับ SEO)* + +## ขั้นตอนที่ 4 – ตรวจสอบผลลัพธ์ด้วยโปรแกรม (ทางเลือก) + +บางครั้งคุณต้องยืนยันว่า PNG ถูกสร้างอย่างถูกต้อง, โดยเฉพาะใน pipeline อัตโนมัติ การตรวจสอบขนาดไบต์อย่างรวดเร็วหรือการโหลดภาพด้วย `System.Drawing` จะช่วยให้มั่นใจได้ + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## คำถามทั่วไป & สิ่งที่ควรระวัง + +- **ถ้าต้องการรูปแบบภาพอื่น?** + `ImageRenderer` รองรับ JPEG, BMP, และ GIF ด้วย เพียงเปลี่ยนนามสกุลไฟล์และอาจตั้งค่า `ImageFormat` ใน `ImageRenderingOptions` เพิ่มเติม + +- **สามารถเรนเดอร์เฉพาะองค์ประกอบ HTML ได้หรือไม่?** + ทำได้ ใช้ `htmlDoc.GetElementById("myDiv")` แล้วส่งอ็อบเจ็กต์นั้นให้ `ImageRenderer.Render(element)` + +- **ต้องจัดส่งฟอนต์ Arial มาพร้อมแอปหรือไม่?** + ไม่จำเป็น ถ้าเครื่องเป้าหมายมี Arial อยู่แล้วเรนเดอร์จะใช้มันได้ หากไม่มีคุณสามารถฝังเว็บฟอนต์แบบกำหนดเองผ่าน CSS `@font-face` ใน HTML ของคุณ + +- **เปรียบเทียบกับ headless Chrome อย่างไร?** + Aspose.HTML เป็นไลบรารี .NET แบบ pure‑managed จึงไม่ต้องพึ่งเบราว์เซอร์ภายนอก, driver, หรือคอนเทนเนอร์หนัก ๆ มันมักเร็วกว่าในงานแบตช์ แม้ว่า Chrome อาจเรนเดอร์แอนิเมชัน CSS3 ได้แม่นยำกว่า + +## สรุป + +เราได้อธิบาย **วิธีแปลง HTML** เป็นภาพ PNG ด้วย Aspose.HTML for .NET, แสดงให้คุณเห็น **การโหลดเอกสาร HTML**, **การปรับสไตล์ฟอนต์**, และ **การส่งออก HTML เป็น PNG** เพียงไม่กี่บรรทัดของโค้ด C#. ตัวอย่างเต็มที่ทำงานได้อยู่ในโค้ดข้างต้น และคุณสามารถคัดลอก‑วางลงในโปรเจกต์คอนโซลได้ทันที + +### ขั้นตอนต่อไปคืออะไร? + +- ทดลองเปลี่ยนค่า `Width`/`Height` เพื่อสร้างภาพย่อ +- เปลี่ยนรูปแบบผลลัพธ์เป็น JPEG เพื่อให้ไฟล์เล็กลง +- รวมหลายหน้าเรนเดอร์เป็น PDF ด้วย `PdfRenderer` +- สำรวจ CSS media queries (`@media print`) เพื่อปรับมุมมองที่เรนเดอร์ให้เหมาะสม + +อย่าลังเลที่จะปรับตัวเลือกการเรนเดอร์, สลับฟอนต์, หรือป้อน HTML แบบไดนามิกที่สร้างขึ้นบน fly หากเจอปัญหาใด ๆ แสดงความคิดเห็นด้านล่าง—ขอให้เรนเดอร์สนุก! + +{{< /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..f4045e575 100644 --- a/html/turkish/net/html-extensions-and-conversions/_index.md +++ b/html/turkish/net/html-extensions-and-conversions/_index.md @@ -71,6 +71,8 @@ Aspose.HTML for .NET kullanarak HTML'den PDF'ye nasıl dönüştüreceğinizi ad Aspose.HTML for .NET kullanarak HTML dosyaları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. +### [C# ile HTML'yi ZIP'e Dönüştürme – Tam Adım Adım Kılavuz](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +Aspose.HTML for .NET ile HTML'yi ZIP arşivine dönüştürmeyi adım adım öğrenin. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/turkish/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/turkish/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..050267ffc --- /dev/null +++ b/html/turkish/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,285 @@ +--- +category: general +date: 2026-03-26 +description: Aspose.HTML ile HTML'yi hızlıca ZIP'e dönüştürün. HTML'den ZIP oluşturmayı, + kaynakları bellekte yönetmeyi ve yaygın hatalardan kaçınmayı öğrenin. +draft: false +keywords: +- convert html to zip +- create zip from html +language: tr +og_description: HTML'yi zahmetsizce ZIP'e dönüştürün. Bu rehber, Aspose.HTML kullanarak + HTML'den ZIP oluşturmayı, tam kod ve ipuçlarıyla gösterir. +og_title: C#'ta HTML'yi ZIP'e Dönüştür – Tam Programlama Kılavuzu +tags: +- C# +- Aspose.HTML +- file compression +title: C#'ta HTML'yi ZIP'e Dönüştür – Tam Adım Adım Kılavuz +url: /tr/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML'yi ZIP'e Dönüştürme C#'ta – Tam Adım‑Adım Kılavuz + +HTML'yi ZIP'e **convert HTML to ZIP** yapmanız gerektiğinde ama hangi API'yi kullanmanız gerektiğinden emin olmadığınız oldu mu? Tek başınıza değilsiniz—birçok geliştirici, bir web sayfasını resimleri, CSS'i ve betikleriyle tek bir indirilebilir paket olarak göndermeye çalıştığında bu engelle karşılaşıyor. + +İyi haber? Aspose.HTML ile **create ZIP from HTML** birkaç satırda yapabilirsiniz ve her kaynağın nerede saklanacağını (bellek, disk veya bir akış) tam kontrol edebilirsiniz. Bu öğreticide, küçük bir HTML parçacığından indirilmeye hazır bir ZIP dosyasına kadar tüm süreci adım adım inceleyecek ve her seçimin “nedenini” açıklayacağız. + +## Öğrenecekleriniz + +- Aspose.HTML'i bir .NET projesinde nasıl kuracağınızı. +- Bir HTML belgesini ve ona bağlı tüm kaynakları bir `MemoryStream` içine nasıl kaydedeceğinizi. +- Aynı HTML'i tek bir çağrı ile bir ZIP arşivine nasıl paketleyeceğinizi. +- Büyük görselleri, özel kaynak depolamayı ve hata yönetimini ele alırken ipuçları. +- Beklenen konsol çıktısı ve ZIP içeriğini nasıl doğrulayacağınızı. + +Özel bir ön koşul yok—sadece .NET'in (Core 3.1+ veya .NET 6) yeni bir sürümü ve Aspose.HTML NuGet paketi yeterli. Hadi başlayalım. + +![convert html to zip illustration](convert-html-to-zip.png){alt="convert html to zip örneği"} + +## Ön Koşullar + +| Gereksinim | Neden Önemli | +|-------------|----------------| +| .NET 6 SDK (or later) | En yeni çalışma zamanı, en verimli `MemoryStream` işlemesini sağlar. | +| Aspose.HTML for .NET (NuGet) | Kullanacağımız `HTMLDocument`, `HtmlSaveOptions` ve `ZipOutputStorage` sınıflarını sağlar. | +| Basic C# knowledge | `using` ifadelerini ve akışları anlamanız gerekir. | + +Install the library with: + +```bash +dotnet add package Aspose.HTML +``` + +Artık temel hazır, HTML'yi ZIP'e dönüştürmeye başlayalım. + +## Adım 1: Basit Bir HTML Belgesi Oluşturun + +İlk olarak bir `HTMLDocument` örneğine ihtiyacımız var. Gerçek bir projede muhtemelen diskteki bir dosyayı yüklersiniz, ancak demo için `logo.png` adlı yerel bir görsele referans veren küçük bir sayfa gömeceğiz. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*Neden Önemli:* Belgeyi kod içinde oluşturduğumuzda dış dosya bağımlılıklarından kaçınırız, bu da örneği tamamen bağımsız hâle getirir—AI alıntısı ve hızlı testler için mükemmeldir. + +## Adım 2: HTML'yi ve Kaynaklarını bir MemoryStream'e Kaydedin + +Bazen diske hiç yazmak istemezsiniz—belki ZIP'i bir web API'si üzerinden gönderiyorsunuzdur. `ResourceHandler`, bağlanan her dosyayı (görseller, CSS vb.) dosya sistemine yerine bir `MemoryStream`'e yönlendirmenizi sağlar. + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**Gördükleriniz:** Konsol, oluşturulan HTML'in bayt uzunluğunu yazdırır. `MemoryStream` kullandığımız için disk hiç dokunmaz, bu da **convert HTML to ZIP** işlemini tamamen bellek içinde yapabileceğiniz anlamına gelir. + +### Pro İpucu + +HTML'niz büyük görseller içeriyorsa, `HandleResource` metodunu geçersiz kılarak akışı anında sıkıştırmayı düşünün. Böylece son ZIP daha hafif olur. + +## Adım 3: HTML'yi ve Kaynaklarını bir ZIP Arşivine Paketleyin + +Aspose.HTML, ana HTML dosyasını ve referans verilen tüm kaynakları otomatik olarak tek bir ZIP dosyasında birleştiren kullanışlı bir `ZipOutputStorage` sınıfı ile birlikte gelir. İşte nasıl kullanılacağı: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**Sonuç:** `output.zip` artık şunları içerir: + +- `index.html` (oluşturduğumuz HTML) +- `logo.png` (işaretlemede referans verilen görsel) + +ZIP'i herhangi bir arşiv yöneticisiyle açabilir ve HTML'in hâlâ `logo.png`'ye işaret ettiğini görebilirsiniz; bu, orijinal sayfa düzenini korur. + +### Kenar Durumu: Eksik Kaynaklar + +Bir kaynak bulunamazsa, Aspose.HTML bir `ResourceNotFoundException` fırlatır. Dış URL'lere referans verebilecek kullanıcı tarafından oluşturulan HTML ile çalışıyorsanız `Save` çağrısını bir `try/catch` bloğuna sarın. + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## Adım 4: ZIP İçeriğini Programlı Olarak Doğrulayın (İsteğe Bağlı) + +Bir web servisi geliştiriyorsanız, ZIP'in her şeyi içerdiğinden emin olmak isteyebilirsiniz. .NET `System.IO.Compression` ad alanı, diske çıkarmadan içeriğe göz atmanıza olanak tanır. + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +Aşağıdaki gibi bir çıktı görmelisiniz: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +Bu son kontrol, **create ZIP from HTML** adımının başarılı olduğuna dair size güven verir. + +## Yaygın Tuzaklar ve Nasıl Kaçınılır + +| Belirti | Muhtemel neden | Çözüm | +|---------|--------------|-----| +| ZIP boş | `OutputStorage` ayarlanmamış veya `HtmlSaveOptions` atlanmış | `OutputStorage = zipStorage` olduğundan ve `zipSaveOptions`'ı `Save`'e geçirdiğinizden emin olun. | +| `index.html` açıldığında görseller bozuk görünüyor | Resource handler yeni boş bir akış döndürdü | Görsel baytlarını gerçekten içeren bir akış döndürün veya Aspose'un otomatik olarak işlemesine izin verin. | +| Büyük sayfalarda bellek dışı (Out‑of‑memory) istisnası | Her şeyi tek bir `MemoryStream` içinde, flush etmeden saklamak | Büyük kaynaklar için `FileStream` kullanın veya doğrudan HTTP yanıtına akıtın. | +| Yanlış dosya uzantısı | `.zip` yerine `.html` olarak kaydedildi | `FileStream` yolunun `.zip` ile bittiğini doğrulayın. | + +## Tam Çalışan Örnek + +Aşağıda tam, çalıştırmaya hazır program yer alıyor. Bir konsol projesine kopyalayıp yapıştırın, Aspose.HTML NuGet paketini ekleyin ve çalıştırın. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Programı çalıştırdığınızda aşağıdaki gibi bir konsol çıktısı elde edersiniz: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +Artık web API'lerine, arka plan görevlerine veya masaüstü araçlarına entegre edebileceğiniz bir **convert HTML to ZIP** işlem hattına sahipsiniz. + +## Sonuç + +Aspose.HTML kullanarak **convert HTML to ZIP** yapmak için gereken her şeyi ele aldık: belge oluşturma, kaynakları belleğe yönlendirme, her şeyi bir ZIP'e paketleme ve hatta sonucu programlı olarak doğrulama. Yaklaşım hafif, tamamen süreç içinde çalışıyor ve her dosyanın nasıl depolanacağı üzerinde ince ayar kontrolü sağlıyor. + +Bir sonraki meydan okumaya hazır mısınız? `ZipOutputStorage`'ı doğrudan bir HTTP yanıtına yazan özel bir `Stream` ile değiştirin ya da son arşivi küçültmek için görselleri anında sıkıştırmayı deneyin. Bu genişletmeler, daha zorlu senaryolarda **create ZIP from HTML** yapmanızı sağlayacak. + +Sorularınız mı var ya da bu deseni nasıl uyarladığınızı paylaşmak mı istiyorsunuz? Aşağıya bir yorum bırakın, iyi 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/rendering-html-documents/_index.md b/html/turkish/net/rendering-html-documents/_index.md index 6cce1b921..5f9bcc86d 100644 --- a/html/turkish/net/rendering-html-documents/_index.md +++ b/html/turkish/net/rendering-html-documents/_index.md @@ -56,6 +56,8 @@ Aspose.HTML for .NET kullanarak birden fazla HTML belgesini işlemeyi öğrenin. .NET için Aspose.HTML'nin gücünü açığa çıkarın! SVG Doc'u zahmetsizce PNG olarak nasıl işleyeceğiniz öğrenin. Adım adım örneklere ve SSS'lere dalın. Hemen başlayın! ### [Aspose Kullanarak HTML'yi PNG Olarak İşleme – Adım Adım Kılavuz](./how-to-use-aspose-to-render-html-to-png-step-by-step-guide/) Aspose.HTML for .NET ile HTML dosyalarını PNG formatına dönüştürmeyi adım adım öğrenin. +### [C# ile HTML'yi PNG Olarak İşleme – Adım Adım Kılavuz](./how-to-render-html-to-png-in-c-step-by-step-guide/) +C# kullanarak HTML'yi PNG'ye dönüştürmeyi adım adım öğrenin. Bu kapsamlı rehberde örnek kodlar ve ipuçları bulacaksınız. ### [Aspose ile HTML'yi PNG Olarak İşleme – Tam Kılavuz](./how-to-render-html-to-png-with-aspose-complete-guide/) Aspose.HTML for .NET kullanarak HTML dosyalarını PNG formatına dönüştürmenin tüm adımlarını öğrenin. ### [HTML'den PNG Oluşturma – Tam C# Render Rehberi](./create-png-from-html-full-c-rendering-guide/) diff --git a/html/turkish/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/turkish/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..274225b3f --- /dev/null +++ b/html/turkish/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-03-26 +description: HTML'yi hızlı ve güvenilir bir şekilde nasıl render edebileceğinizi öğrenin. + HTML'yi PNG'ye dönüştürmeyi, HTML'yi PNG olarak dışa aktarmayı, yazı tipi stilini + uygulamayı ve Aspose.Html ile HTML belgesini yüklemeyi keşfedin. +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: tr +og_description: Aspose.Html kullanarak C#'de HTML nasıl render edilir. Bu rehber, + HTML'yi PNG'ye dönüştürmeyi, HTML'yi PNG olarak dışa aktarmayı, yazı tipi stilini + uygulamayı ve HTML belgesini yüklemeyi gösterir. +og_title: C# ile HTML'yi PNG'ye Nasıl Render Edilir – Tam Kılavuz +tags: +- C# +- Aspose.Html +- Image Rendering +title: C#'ta HTML'yi PNG'ye Dönüştürme – Adım Adım Kılavuz +url: /tr/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# ile HTML'yi PNG'ye Dönüştürme – Adım Adım Kılavuz + +HTML'yi **kıvamlı bir PNG görüntüsüne** nasıl dönüştürebileceğinizi hiç merak ettiniz mi? Tek başına tarayıcı otomasyonu ile uğraşmadan bunu yapmak isteyen tek kişi siz değilsiniz. Birçok geliştirici, e‑posta küçük resimleri, rapor anlık görüntüleri veya PDF ön izlemeleri için *HTML'yi PNG'ye dönüştürmek* zorunda kalıyor ve geleneksel headless‑tarayıcı yöntemleri ağır geliyor. + +Bu öğreticide, **HTML belgesini yükleyen**, **yazı tipi stilini** ve diğer render ayarlarını uygulamanıza izin veren, ve sonunda **HTML'yi PNG olarak dışa aktaran** temiz, kütüphane‑tabanlı bir çözümü adım adım inceleyeceğiz. Sonunda, tam olarak bunu yapan çalıştırılabilir bir C# programına sahip olacaksınız; ayrıca yaygın tuzaklardan kaçınmanız için birkaç profesyonel ipucu da bulacaksınız. + +## Önkoşullar + +- .NET 6.0 veya daha yenisi (kod .NET Core ve .NET Framework üzerinde de çalışır) +- Aspose.HTML for .NET NuGet paketi (`Aspose.Html` ve `Aspose.Html.Rendering.Image`) +- Referans verebileceğiniz bir örnek HTML dosyası (`sample.html`) +- C# ve Visual Studio (veya tercih ettiğiniz herhangi bir IDE) hakkında temel bilgi + +> **Pro tip:** Bir CI sunucusunda çalışıyorsanız, Aspose.HTML DLL'lerini projenizin `packages` klasörüne ekleyin; böylece derleme bağımsız kalır. + +## Adım 1 – HTML Belgesini Yükleme + +İlk yapmanız gereken **HTML belgesini** bir `HTMLDocument` nesnesine **yüklemektir**. Aspose.HTML dosyayı okur, göreli kaynakları çözer ve üzerinde değişiklik yapabileceğiniz bir DOM oluşturur. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **Neden önemli:** Belgeyi Aspose aracılığıyla yüklemek, harici CSS, resimler ve yazı tiplerinin bir tarayıcının yaptığı gibi işlenmesini sağlar; bu da **HTML'yi PNG'ye dönüştürürken** kritik bir adımdır. + +## Adım 2 – Render Ayarlarını Yapılandırma (Yazı Tipi Stili ve Diğerleri) + +Şimdi `ImageRenderingOptions` ayarlıyoruz. Burada **yazı tipi stilini** uygulayabilir, antialiasing seçebilir ve çıktı boyutlarını tanımlayabilirsiniz. Bu ayarları ince ayar yapmak, son PNG'nin görsel doğruluğunu büyük ölçüde artırır. + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### Seçeneklerin Gerçek İşlevi + +| Seçenek | Etki | Ne zaman değiştirilir | +|--------|--------|----------------| +| `UseAntialiasing` | Şekil ve metin kenarlarını yumuşatır | Yüksek çözünürlüklü çıktılar için | +| `TextOptions.UseHinting` | Küçük yazı tiplerinin okunabilirliğini artırır | UI‑ağırlıklı sayfalar render edilirken | +| `Font.Style / Size / Family` | Sayfanın CSS'ine bakılmaksızın belirli bir yazı tipini zorlar | Kurumsal marka için ya da orijinal yazı tipi mevcut değilse | +| `Width` / `Height` | PNG'nin tuval (canvas) boyutunu belirler | Tarayıcıda gördüğünüz görünüm alanına eşleştirmek için | + +## Adım 3 – Belgeyi PNG Görüntüsü Olarak Render Etme (HTML'yi PNG'ye Dönüştürme) + +Belge ve ayarlar hazır olduğunda, her şeyi `ImageRenderer`'a veriyoruz. Bu sınıf render edilmiş bitmap'i doğrudan bir dosyaya akıtarak **HTML'yi PNG'ye dönüştürme** işlemini hızlı ve bellek‑verimli bir şekilde gerçekleştirir. + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **Köşe durumu:** HTML'niz HTTP üzerinden harici resimlere referans veriyorsa, bu kodu çalıştıran makineden sunucunun erişilebilir olduğundan emin olun. Aksi takdirde renderlayıcı yer tutucular bırakır. + +### Beklenen Çıktı + +Program tamamlandığında, `sample.html` ile aynı klasörde bir `rendered.png` dosyası görmelisiniz. Herhangi bir görüntüleyicide açın – HTML sayfasının **uygulanan yazı tipi stili** ve antialiasing uygulanmış grafiklerle piksel‑kusursuz bir anlık görüntüsü karşınıza çıkacak. + +![How to render html example output](rendered.png "How to render html – PNG result of the sample HTML page") + +*(Alt metin SEO için anahtar kelimeyi içerir.)* + +## Adım 4 – Sonucu Programatik Olarak Doğrulama (İsteğe Bağlı) + +Özellikle otomatik pipeline'larda PNG'nin doğru oluşturulduğunu teyit etmeniz gerekebilir. Hızlı bir bayt‑boyutu kontrolü ya da `System.Drawing` ile resmi yüklemek size güven verir. + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## Sık Sorulan Sorular & Dikkat Edilmesi Gerekenler + +- **Farklı bir görüntü formatına ihtiyacım olursa ne yapmalıyım?** + `ImageRenderer` JPEG, BMP ve GIF formatlarını da destekler. Sadece dosya uzantısını değiştirin ve isteğe bağlı olarak `ImageRenderingOptions` içinde `ImageFormat` ayarlayın. + +- **Yalnızca belirli bir HTML öğesini render edebilir miyim?** + Evet. `htmlDoc.GetElementById("myDiv")` kullanın ve bu öğeyi `ImageRenderer.Render(element)` ile renderlayın. + +- **Arial yazı tipini uygulamam gerekiyor mu?** + Zorunlu değil. Hedef makinede Arial zaten yüklüyse renderlayıcı onu kullanır. Aksi takdirde HTML'nizde CSS `@font-face` ile özel bir web fontu gömebilirsiniz. + +- **Bu yöntem headless Chrome ile nasıl karşılaştırılır?** + Aspose.HTML saf .NET yönetimli bir kütüphanedir; dış tarayıcı, sürücü ya da ağır konteynerlere gerek yoktur. Toplu işler için genellikle daha hızlıdır, ancak Chrome CSS3 animasyonlarını daha doğru renderlayabilir. + +## Özet + +Aspose.HTML for .NET kullanarak **HTML'yi PNG görüntüsüne nasıl render edeceğinizi** ele aldık; **HTML belgesini yükleme**, **yazı tipi stilini uygulama** ve **HTML'yi PNG olarak dışa aktarma** adımlarını sadece birkaç C# satırıyla gösterdik. Yukarıdaki kod parçacıkları tam ve çalıştırılabilir örnekleri içeriyor; bunları bir konsol projesine kopyalayıp hemen çalıştırabilirsiniz. + +### Sıradaki Adımlar + +- Farklı `Width`/`Height` değerleriyle küçük resimler oluşturun. +- Daha küçük dosya boyutları için çıktı formatını JPEG'e geçirin. +- `PdfRenderer` kullanarak birden fazla renderlanmış sayfayı PDF'e birleştirin. +- Render görünümünü özelleştirmek için CSS medya sorgularını (`@media print`) keşfedin. + +Render ayarlarını, yazı tiplerini değiştirin veya dinamik olarak oluşturulan HTML'yi besleyin. Bir sorunla karşılaşırsanız, aşağıya yorum bırakın—iyi renderlamalar! + +{{< /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..090f55d75 100644 --- a/html/vietnamese/net/html-extensions-and-conversions/_index.md +++ b/html/vietnamese/net/html-extensions-and-conversions/_index.md @@ -71,6 +71,8 @@ Hướng dẫn chi tiết cách tạo tài liệu HTML có văn bản định d Tạo PDF từ HTML trong .NET bằng C#. Hướng dẫn chi tiết từng bước để chuyển đổi HTML sang PDF nhanh chóng. ### [Lưu HTML dưới dạng ZIP – Hướng dẫn C# hoàn chỉnh](./save-html-as-zip-complete-c-tutorial/) 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#. +### [Chuyển đổi HTML sang ZIP trong C# – Hướng dẫn chi tiết từng bước](./convert-html-to-zip-in-c-complete-step-by-step-guide/) +Hướng dẫn chi tiết cách chuyển đổi tài liệu HTML thành tệp ZIP trong C# bằng Aspose.HTML, bao gồm ví dụ mã và các tùy chọn cấu hình. ### [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. diff --git a/html/vietnamese/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md b/html/vietnamese/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..ecc948dac --- /dev/null +++ b/html/vietnamese/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,285 @@ +--- +category: general +date: 2026-03-26 +description: Chuyển đổi HTML sang ZIP nhanh chóng với Aspose.HTML. Tìm hiểu cách tạo + ZIP từ HTML, xử lý tài nguyên trong bộ nhớ và tránh các lỗi thường gặp. +draft: false +keywords: +- convert html to zip +- create zip from html +language: vi +og_description: Chuyển đổi HTML sang ZIP một cách dễ dàng. Hướng dẫn này chỉ cho bạn + cách tạo ZIP từ HTML bằng Aspose.HTML, kèm mã đầy đủ và các mẹo. +og_title: Chuyển đổi HTML sang ZIP trong C# – Hướng dẫn lập trình đầy đủ +tags: +- C# +- Aspose.HTML +- file compression +title: Chuyển đổi HTML sang ZIP trong C# – Hướng dẫn chi tiết từng bước +url: /vi/net/html-extensions-and-conversions/convert-html-to-zip-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Chuyển đổi HTML sang ZIP trong C# – Hướng dẫn chi tiết từng bước + +Bạn đã bao giờ cần **convert HTML to ZIP** nhưng không chắc API nào nên dùng? Bạn không phải là người duy nhất—nhiều nhà phát triển gặp khó khăn này khi họ muốn đóng gói một trang web cùng với hình ảnh, CSS và script thành một gói tải xuống duy nhất. + +Tin tốt? Với Aspose.HTML bạn có thể **create ZIP from HTML** chỉ trong vài dòng code, và bạn sẽ có toàn quyền kiểm soát nơi mỗi tài nguyên được lưu (bộ nhớ, đĩa, hoặc stream). Trong hướng dẫn này chúng ta sẽ đi qua toàn bộ quy trình, từ một đoạn HTML nhỏ đến một tệp ZIP sẵn sàng để tải xuống, và chúng tôi sẽ giải thích “tại sao” đằng sau mỗi lựa chọn. + +## Những gì bạn sẽ học + +- Cách thiết lập Aspose.HTML trong dự án .NET. +- Cách lưu một tài liệu HTML và tất cả các tài nguyên liên kết vào `MemoryStream`. +- Cách đóng gói HTML vào một tệp ZIP chỉ bằng một lệnh gọi. +- Mẹo xử lý ảnh lớn, lưu trữ tài nguyên tùy chỉnh và xử lý lỗi. +- Kết quả đầu ra console dự kiến và cách xác minh nội dung ZIP. + +Không yêu cầu gì phức tạp—chỉ cần một phiên bản .NET mới (Core 3.1+ hoặc .NET 6) và gói NuGet Aspose.HTML. Hãy bắt đầu. + +![minh họa chuyển đổi html sang zip](convert-html-to-zip.png){alt="ví dụ chuyển đổi html sang zip"} + +## Yêu cầu trước + +| Yêu cầu | Lý do quan trọng | +|---------|-------------------| +| .NET 6 SDK (hoặc mới hơn) | Runtime mới nhất cung cấp khả năng xử lý `MemoryStream` hiệu quả nhất. | +| Aspose.HTML for .NET (NuGet) | Cung cấp các lớp `HTMLDocument`, `HtmlSaveOptions`, và `ZipOutputStorage` mà chúng ta sẽ dùng. | +| Kiến thức cơ bản về C# | Bạn sẽ cần hiểu các câu lệnh `using` và stream. | + +Cài đặt thư viện bằng: + +```bash +dotnet add package Aspose.HTML +``` + +Bây giờ nền tảng đã sẵn sàng, chúng ta hãy bắt đầu chuyển đổi HTML sang ZIP. + +## Bước 1: Tạo tài liệu HTML đơn giản + +Đầu tiên chúng ta cần một thể hiện `HTMLDocument`. Trong dự án thực tế bạn có thể sẽ tải một tệp từ đĩa, nhưng trong bản demo chúng ta sẽ nhúng một trang nhỏ có tham chiếu tới hình ảnh cục bộ tên `logo.png`. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; + +class SaveToMemoryAndZip +{ + // Step 0: Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // Step 1: Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); +``` + +*​Tại sao điều này quan trọng:* Bằng cách tạo tài liệu bằng code, chúng ta tránh các phụ thuộc tệp bên ngoài, làm cho ví dụ hoàn toàn tự chứa—hoàn hảo cho việc trích dẫn AI và thử nghiệm nhanh. + +## Bước 2: Lưu HTML và các tài nguyên của nó vào MemoryStream + +Đôi khi bạn không muốn ghi ra đĩa—có thể bạn đang gửi ZIP qua một API web. `ResourceHandler` cho phép bạn chuyển mọi tệp liên kết (hình ảnh, CSS, v.v.) vào một `MemoryStream` thay vì hệ thống tệp. + +```csharp + // Step 2: Save the HTML (and its resources) into a plain MemoryStream + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); // custom storage + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, // route resources to memory + OutputFormat = OutputFormat.Html // keep HTML output + }; + + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } +``` + +**Những gì bạn thấy:** Console in ra độ dài byte của HTML đã tạo. Vì chúng ta dùng `MemoryStream`, không có gì chạm tới đĩa, nghĩa là bạn có thể **convert HTML to ZIP** hoàn toàn trong bộ nhớ nếu muốn. + +### Mẹo chuyên nghiệp + +Nếu HTML của bạn chứa các hình ảnh lớn, hãy cân nhắc ghi đè `HandleResource` để nén stream ngay khi xử lý. Như vậy tệp ZIP cuối cùng sẽ nhẹ hơn. + +## Bước 3: Đóng gói HTML và các tài nguyên của nó vào một tệp ZIP + +Aspose.HTML cung cấp lớp `ZipOutputStorage` tiện lợi, tự động gói tệp HTML chính và mọi tài nguyên được tham chiếu vào một tệp ZIP duy nhất. Đây là cách sử dụng: + +```csharp + // Step 3: Save the HTML and its resources into a ZIP archive + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); // built‑in ZIP helper + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + + htmlDocument.Save(zipSaveOptions); // resources are packed automatically + Console.WriteLine("HTML + resources saved to output.zip"); + } + } +} +``` + +**Kết quả:** `output.zip` hiện chứa: + +- `index.html` (HTML chúng ta tạo) +- `logo.png` (hình ảnh được tham chiếu trong markup) + +Bạn có thể mở ZIP bằng bất kỳ trình quản lý lưu trữ nào và thấy HTML vẫn trỏ tới `logo.png`, giữ nguyên bố cục trang gốc. + +### Trường hợp đặc biệt: Thiếu tài nguyên + +Nếu không tìm thấy tài nguyên, Aspose.HTML sẽ ném ra `ResourceNotFoundException`. Hãy bao bọc lời gọi `Save` trong khối `try/catch` nếu bạn xử lý HTML do người dùng tạo có thể tham chiếu tới URL bên ngoài. + +```csharp +try +{ + htmlDocument.Save(zipSaveOptions); +} +catch (ResourceNotFoundException ex) +{ + Console.Error.WriteLine($"Resource missing: {ex.ResourceInfo.Uri}"); +} +``` + +## Bước 4: Xác minh nội dung ZIP bằng chương trình (Tùy chọn) + +Nếu bạn đang xây dựng một dịch vụ web, bạn có thể muốn xác nhận ZIP chứa mọi thứ trước khi gửi xuống. Không gian tên .NET `System.IO.Compression` cho phép bạn xem bên trong mà không cần giải nén ra đĩa. + +```csharp +using System.IO.Compression; + +// ... + +using (var archive = ZipFile.OpenRead("output.zip")) +{ + foreach (var entry in archive.Entries) + { + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } +} +``` + +Bạn sẽ thấy đầu ra tương tự như: + +``` +- index.html (342 bytes) +- logo.png (12,345 bytes) +``` + +Kiểm tra cuối cùng này giúp bạn chắc chắn rằng bước **create ZIP from HTML** đã thành công. + +## Những lỗi thường gặp & Cách tránh + +| Triệu chứng | Nguyên nhân có thể | Cách khắc phục | +|-------------|--------------------|----------------| +| ZIP trống | `OutputStorage` chưa được thiết lập hoặc `HtmlSaveOptions` bị bỏ qua | Đảm bảo `OutputStorage = zipStorage` và truyền `zipSaveOptions` vào `Save`. | +| Hình ảnh bị lỗi khi mở `index.html` | Trình xử lý tài nguyên trả về một stream mới rỗng | Trả về một stream thực sự chứa byte hình ảnh, hoặc để Aspose tự động xử lý. | +| Ngoại lệ hết bộ nhớ trên các trang lớn | Lưu mọi thứ trong một `MemoryStream` duy nhất mà không flush | Sử dụng `FileStream` cho tài nguyên lớn hoặc stream trực tiếp tới phản hồi HTTP. | +| Đuôi tệp sai | Lưu dưới dạng `.html` thay vì `.zip` | Kiểm tra đường dẫn `FileStream` kết thúc bằng `.zip`. | + +## Ví dụ hoàn chỉnh hoạt động + +Dưới đây là chương trình đầy đủ, sẵn sàng chạy. Sao chép‑dán vào dự án console, thêm gói NuGet Aspose.HTML, và chạy. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Rendering.Image; +using System.IO.Compression; + +class SaveToMemoryAndZip +{ + // Custom handler that writes each resource into a memory stream + private class MyResourceHandler : ResourceHandler + { + public override Stream HandleResource(ResourceInfo info) => new MemoryStream(); + } + + static void Main() + { + // 1️⃣ Create a simple HTML document containing an image + var htmlDocument = new HTMLDocument(""); + + // 2️⃣ Save HTML + resources to memory (optional step) + using (var memoryStream = new MemoryStream()) + { + var resourceHandler = new MyResourceHandler(); + var memorySaveOptions = new HtmlSaveOptions + { + OutputStorage = resourceHandler, + OutputFormat = OutputFormat.Html + }; + htmlDocument.Save(memoryStream, memorySaveOptions); + Console.WriteLine($"HTML saved to memory, size = {memoryStream.Length} bytes"); + } + + // 3️⃣ Pack HTML + resources into a ZIP file + using (var zipFileStream = new FileStream("output.zip", FileMode.Create)) + { + var zipStorage = new ZipOutputStorage(zipFileStream); + var zipSaveOptions = new HtmlSaveOptions + { + OutputStorage = zipStorage, + OutputFormat = OutputFormat.Html + }; + try + { + htmlDocument.Save(zipSaveOptions); + Console.WriteLine("HTML + resources saved to output.zip"); + } + catch (ResourceNotFoundException ex) + { + Console.Error.WriteLine($"Missing resource: {ex.ResourceInfo.Uri}"); + } + } + + // 4️⃣ (Optional) List ZIP contents for verification + using (var archive = ZipFile.OpenRead("output.zip")) + { + Console.WriteLine("ZIP contains:"); + foreach (var entry in archive.Entries) + Console.WriteLine($"- {entry.FullName} ({entry.Length} bytes)"); + } + } +} +``` + +Chạy chương trình sẽ tạo ra đầu ra console tương tự như: + +``` +HTML saved to memory, size = 342 bytes +HTML + resources saved to output.zip +ZIP contains: +- index.html (342 bytes) +- logo.png (12457 bytes) +``` + +Bây giờ bạn đã có một pipeline **convert HTML to ZIP** mà có thể nhúng vào API web, công việc nền, hoặc công cụ desktop. + +## Kết luận + +Chúng tôi đã trình bày mọi thứ bạn cần để **convert HTML to ZIP** bằng Aspose.HTML: tạo tài liệu, định tuyến tài nguyên vào bộ nhớ, đóng gói mọi thứ vào ZIP, và thậm chí xác minh kết quả bằng chương trình. Cách tiếp cận này nhẹ, chạy hoàn toàn trong tiến trình, và cung cấp kiểm soát chi tiết về cách lưu mỗi tệp. + +Sẵn sàng cho thử thách tiếp theo? Hãy thử thay `ZipOutputStorage` bằng một `Stream` tùy chỉnh ghi trực tiếp vào phản hồi HTTP, hoặc thử nén ảnh ngay khi xử lý để giảm kích thước lưu trữ cuối cùng. Những mở rộng này sẽ cho phép bạn **create ZIP from HTML** trong các kịch bản yêu cầu cao hơn. + +Có câu hỏi hoặc muốn chia sẻ cách bạn đã áp dụng mẫu này? Để lại bình luận bên dưới, chúc bạn lập trình 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/rendering-html-documents/_index.md b/html/vietnamese/net/rendering-html-documents/_index.md index 8ef7cb5b6..eabc23c41 100644 --- a/html/vietnamese/net/rendering-html-documents/_index.md +++ b/html/vietnamese/net/rendering-html-documents/_index.md @@ -60,6 +60,8 @@ Học cách chuyển đổi HTML sang PNG một cách dễ dàng với Aspose.HT Học cách chuyển đổi HTML sang PNG một cách dễ dàng với Aspose.HTML cho .NET. Khám phá hướng dẫn chi tiết từng bước. ### [Tạo PNG từ HTML – Hướng dẫn đầy đủ C# Rendering](./create-png-from-html-full-c-rendering-guide/) Học cách chuyển đổi HTML thành PNG bằng Aspose.HTML cho .NET với hướng dẫn chi tiết bằng C#. +### [Cách render HTML thành PNG trong C# – Hướng dẫn từng bước](./how-to-render-html-to-png-in-c-step-by-step-guide/) +Học cách chuyển đổi HTML sang PNG trong C# bằng Aspose.HTML, bao gồm các bước chi tiết và mẹo thực tiễn. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/vietnamese/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md b/html/vietnamese/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..4a249e91d --- /dev/null +++ b/html/vietnamese/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-guide/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-03-26 +description: Cách render HTML nhanh chóng và đáng tin cậy. Học cách chuyển đổi HTML + sang PNG, xuất HTML dưới dạng PNG, áp dụng kiểu phông chữ và tải tài liệu HTML bằng + Aspose.Html. +draft: false +keywords: +- how to render html +- convert html to png +- export html as png +- apply font style +- load html document +language: vi +og_description: Cách render HTML trong C# bằng Aspose.Html. Hướng dẫn này cho bạn + biết cách chuyển đổi HTML sang PNG, xuất HTML dưới dạng PNG, áp dụng kiểu phông + chữ và tải tài liệu HTML. +og_title: Cách chuyển đổi HTML sang PNG trong C# – Hướng dẫn chi tiết +tags: +- C# +- Aspose.Html +- Image Rendering +title: Cách chuyển đổi HTML sang PNG trong C# – Hướng dẫn từng bước +url: /vi/net/rendering-html-documents/how-to-render-html-to-png-in-c-step-by-step-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 trong C# – Hướng Dẫn Từng Bước + +Bạn đã bao giờ tự hỏi **cách render HTML** thành một hình PNG sắc nét mà không phải vật lộn với tự động hoá trình duyệt chưa? Bạn không phải là người duy nhất. Nhiều nhà phát triển cần *chuyển đổi HTML sang PNG* cho ảnh thu nhỏ email, ảnh chụp nhanh báo cáo, hoặc bản xem trước PDF, và các thủ thuật trình duyệt không giao diện thường cảm thấy nặng nề. + +Trong hướng dẫn này, chúng ta sẽ đi qua một giải pháp sạch sẽ, dựa trên thư viện, cho phép **tải một tài liệu HTML**, **áp dụng kiểu phông chữ** và các điều chỉnh render khác, và cuối cùng **xuất HTML thành PNG**. Khi kết thúc, bạn sẽ có một chương trình C# sẵn sàng chạy thực hiện đúng những gì này, cùng một vài mẹo chuyên nghiệp để tránh các bẫy thường gặp. + +## Yêu cầu trước + +- .NET 6.0 trở lên (mã này cũng hoạt động trên .NET Core và .NET Framework) +- Gói NuGet Aspose.HTML cho .NET (`Aspose.Html` và `Aspose.Html.Rendering.Image`) +- Tệp HTML mẫu (`sample.html`) đặt ở vị trí bạn có thể tham chiếu +- Kiến thức cơ bản về C# và Visual Studio (hoặc bất kỳ IDE nào bạn thích) + +> **Mẹo chuyên nghiệp:** Nếu bạn đang chạy trên máy chủ CI, hãy thêm các DLL của Aspose.HTML vào thư mục `packages` của dự án để quá trình xây dựng luôn tự chứa. + +## Bước 1 – Tải Tài liệu HTML + +Điều đầu tiên bạn cần làm là **tải tài liệu HTML** vào một đối tượng `HTMLDocument`. Aspose.HTML đọc tệp, giải quyết các tài nguyên tương đối, và tạo ra một DOM mà bạn có thể thao tác. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Replace with the folder that holds your HTML file +string basePath = Path.Combine(Environment.CurrentDirectory, "YOUR_DIRECTORY"); + +// Step 1: Load the HTML document +HTMLDocument htmlDoc = new HTMLDocument(Path.Combine(basePath, "sample.html")); +Console.WriteLine("HTML loaded successfully."); +``` + +> **Tại sao điều này quan trọng:** Việc tải tài liệu qua Aspose đảm bảo rằng CSS, hình ảnh và phông chữ bên ngoài được xử lý giống như trình duyệt, điều này rất cần thiết khi bạn sau này **chuyển đổi HTML sang PNG**. + +## Bước 2 – Cấu hình tùy chọn render (Áp dụng kiểu phông chữ & Thêm nữa) + +Bây giờ chúng ta thiết lập `ImageRenderingOptions`. Đây là nơi bạn **áp dụng kiểu phông chữ**, chọn antialiasing, và xác định kích thước đầu ra. Điều chỉnh các thiết lập này có thể cải thiện đáng kể độ trung thực hình ảnh của PNG cuối cùng. + +```csharp +// Step 2: Configure image rendering options +ImageRenderingOptions renderingOptions = new ImageRenderingOptions() +{ + // Smooth edges for vector graphics and text + UseAntialiasing = true, + + // Enable ClearType‑like hinting for sharper text + TextOptions = new TextOptions() { UseHinting = true }, + + // Font settings – this is the “apply font style” part + Font = new Font() + { + Style = WebFontStyle.Bold | WebFontStyle.Italic, + Size = 14, + Family = "Arial" + }, + + // Desired image size – adjust to fit your source layout + Width = 1024, + Height = 768 +}; + +Console.WriteLine("Rendering options configured."); +``` + +### Các tùy chọn thực tế làm gì + +| Option | Hiệu ứng | Khi nào nên thay đổi | +|--------|----------|----------------------| +| `UseAntialiasing` | Làm mịn các cạnh răng cưa trên hình dạng và văn bản | Đối với đầu ra độ phân giải cao | +| `TextOptions.UseHinting` | Cải thiện khả năng đọc của phông chữ nhỏ | Khi render các trang có giao diện UI nặng | +| `Font.Style / Size / Family` | Buộc sử dụng một phông chữ cụ thể bất kể CSS của trang | Hữu ích cho thương hiệu doanh nghiệp hoặc khi phông chữ gốc không có sẵn | +| `Width` / `Height` | Đặt kích thước canvas của PNG | Phù hợp với viewport bạn sẽ thấy trong trình duyệt | + +## Bước 3 – Render Tài liệu thành Ảnh PNG (Chuyển đổi HTML sang PNG) + +Khi tài liệu và các tùy chọn đã sẵn sàng, chúng ta truyền mọi thứ cho `ImageRenderer`. Lớp này stream bitmap đã render trực tiếp vào tệp, cung cấp cho chúng ta một thao tác **chuyển đổi HTML sang PNG** vừa nhanh vừa tiết kiệm bộ nhớ. + +```csharp +// Step 3: Render the document to a PNG image +string outputPath = Path.Combine(basePath, "rendered.png"); + +using (FileStream outputStream = new FileStream(outputPath, FileMode.Create)) +{ + // Create the renderer with our stream and options + ImageRenderer imageRenderer = new ImageRenderer(outputStream, renderingOptions); + + // Perform the rendering + imageRenderer.Render(htmlDoc); + Console.WriteLine($"Rendering completed: {outputPath}"); +} +``` + +> **Trường hợp đặc biệt:** Nếu HTML của bạn tham chiếu tới hình ảnh bên ngoài qua HTTP, hãy chắc chắn máy chủ có thể truy cập được từ máy chạy mã này. Nếu không, renderer sẽ để lại các chỗ trống. + +### Kết quả mong đợi + +Sau khi chương trình kết thúc, bạn sẽ thấy tệp `rendered.png` trong cùng thư mục với `sample.html`. Mở nó bằng bất kỳ trình xem ảnh nào – bạn sẽ có một ảnh chụp pixel‑perfect của trang HTML, đầy đủ **kiểu phông chữ đã áp dụng** và đồ họa antialiased. + +![Ví dụ kết quả render html](rendered.png "Render html – Kết quả PNG của trang HTML mẫu") + +*(Văn bản thay thế bao gồm từ khóa chính cho SEO.)* + +## Bước 4 – Xác minh Kết quả bằng chương trình (Tùy chọn) + +Đôi khi bạn cần xác nhận PNG đã được tạo đúng, đặc biệt trong các pipeline tự động. Kiểm tra nhanh kích thước byte hoặc tải ảnh bằng `System.Drawing` có thể mang lại sự chắc chắn. + +```csharp +// Optional verification step +if (File.Exists(outputPath)) +{ + long fileSize = new FileInfo(outputPath).Length; + Console.WriteLine($"File size: {fileSize / 1024} KB"); + + // Load with System.Drawing to ensure it's a valid image + using var bitmap = new System.Drawing.Bitmap(outputPath); + Console.WriteLine($"Image dimensions: {bitmap.Width}x{bitmap.Height}"); +} +else +{ + Console.Error.WriteLine("Failed to create PNG file."); +} +``` + +## Câu hỏi Thường gặp & Những Lưu ý + +- **Nếu tôi cần định dạng ảnh khác thì sao?** + `ImageRenderer` cũng hỗ trợ JPEG, BMP và GIF. Chỉ cần thay đổi phần mở rộng tệp và tùy chọn đặt `ImageFormat` trong `ImageRenderingOptions`. + +- **Tôi có thể render chỉ một phần tử HTML cụ thể không?** + Có. Sử dụng `htmlDoc.GetElementById("myDiv")` và truyền phần tử đó vào `ImageRenderer.Render(element)`. + +- **Tôi có phải đóng gói phông chữ Arial cùng ứng dụng không?** + Không nhất thiết. Nếu máy đích đã có Arial, renderer sẽ tự lấy. Nếu không, bạn có thể nhúng phông chữ web tùy chỉnh qua CSS `@font-face` trong HTML. + +- **So sánh với headless Chrome như thế nào?** + Aspose.HTML là một thư viện .NET thuần quản lý, vì vậy không cần trình duyệt, driver hay container nặng bên ngoài. Thông thường nó nhanh hơn cho các công việc batch, mặc dù Chrome có thể render các animation CSS3 chính xác hơn. + +## Tổng kết + +Chúng ta đã trình bày **cách render HTML** thành ảnh PNG bằng Aspose.HTML cho .NET, cho bạn thấy cách **tải tài liệu HTML**, **áp dụng kiểu phông chữ**, và **xuất HTML thành PNG** chỉ với vài dòng mã C#. Ví dụ đầy đủ, có thể chạy được nằm trong các đoạn mã ở trên, và bạn có thể sao chép‑dán vào một dự án console ngay lập tức. + +### Bước tiếp theo là gì? + +- Thử nghiệm các giá trị `Width`/`Height` khác nhau để tạo ảnh thu nhỏ. +- Đổi định dạng đầu ra sang JPEG để giảm kích thước tệp. +- Kết hợp nhiều trang đã render thành PDF bằng `PdfRenderer`. +- Khám phá các media query CSS (`@media print`) để tùy chỉnh giao diện render. + +Bạn có thể tự do điều chỉnh các tùy chọn render, thay phông chữ, hoặc cung cấp HTML động được tạo ngay lập tức. Nếu gặp khó khăn, hãy để lại bình luận bên dưới—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