diff --git a/html/arabic/net/generate-jpg-and-png-images/_index.md b/html/arabic/net/generate-jpg-and-png-images/_index.md index 432f80cdc..c383a865a 100644 --- a/html/arabic/net/generate-jpg-and-png-images/_index.md +++ b/html/arabic/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML for .NET هي مكتبة قوية تتيح للمطورين إنشا تعلم كيفية تمكين مضاد التعرج عند تحويل ملفات DOCX إلى صور PNG أو JPG باستخدام Aspose.HTML. ### [تحويل docx إلى png – إنشاء أرشيف zip في C# – دليل تعليمي](./convert-docx-to-png-create-zip-archive-c-tutorial/) تعلم كيفية تحويل ملفات docx إلى صور PNG وإنشاء أرشيف ZIP باستخدام C# و Aspose.HTML. +### [إنشاء PNG من HTML في C# – دليل برمجي كامل](./create-png-from-html-in-c-complete-programming-guide/) +دليل شامل يوضح كيفية تحويل HTML إلى صورة PNG باستخدام C# و Aspose.HTML خطوة بخطوة. ## خاتمة diff --git a/html/arabic/net/generate-jpg-and-png-images/create-png-from-html-in-c-complete-programming-guide/_index.md b/html/arabic/net/generate-jpg-and-png-images/create-png-from-html-in-c-complete-programming-guide/_index.md new file mode 100644 index 000000000..fc7078f68 --- /dev/null +++ b/html/arabic/net/generate-jpg-and-png-images/create-png-from-html-in-c-complete-programming-guide/_index.md @@ -0,0 +1,210 @@ +--- +category: general +date: 2026-02-14 +description: إنشاء PNG من HTML بسرعة باستخدام Aspose.HTML. تعلم كيفية تحويل HTML إلى + PNG، وتحويل HTML إلى صورة، وحفظ HTML كملف PNG مع خطوات واضحة. +draft: false +keywords: +- create png from html +- render html to png +- convert html to image +- how to render html +- save html as png +language: ar +og_description: إنشاء PNG من HTML باستخدام Aspose.HTML. يوضح هذا الدليل كيفية تحويل + HTML إلى PNG، وتحويل HTML إلى صورة، وحفظ HTML كملف PNG خطوة بخطوة. +og_title: إنشاء PNG من HTML في C# – دليل برمجي كامل +tags: +- C# +- Aspose.HTML +- Image Rendering +title: إنشاء PNG من HTML في C# – دليل برمجي كامل +url: /ar/net/generate-jpg-and-png-images/create-png-from-html-in-c-complete-programming-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# إنشاء PNG من HTML في C# – دليل برمجة كامل + +هل احتجت يومًا إلى **إنشاء PNG من HTML** لكن لم تكن متأكدًا أي مكتبة تختار؟ لست وحدك. في عالم .NET الطريقة الأكثر موثوقية اليوم هي استخدام Aspose.HTML، التي تتيح لك **تحويل HTML إلى PNG** ببضع أسطر من الشيفرة. + +في هذا الدرس سنستعرض العملية بالكامل: من تحميل مقتطف HTML صغير، تعديل خيارات العرض، تطبيق نمط غامق عام، وصولاً إلى حفظ النتيجة كملف PNG. في النهاية سترى أيضًا كيف **تحويل HTML إلى صورة** في سيناريوهات أخرى، وستعرف كيف **حفظ HTML كـ PNG** للتخزين المؤقت أو إنشاء الصور المصغرة. + +> **ما ستحصل عليه:** برنامج C# Console جاهز للتنفيذ ينتج صورة PNG واضحة بحجم 800×600 تُظهر نصًا غامقًا، بالإضافة إلى نصائح للتعامل مع صفحات أكبر، خطوط مخصصة، وخلفيات شفافة. + +## ما ستحتاجه + +- **.NET 6+** (أي SDK حديث يكفي) +- **Aspose.HTML for .NET** – يمكنك الحصول عليها من NuGet (`Install-Package Aspose.HTML`) +- محرر نصوص أو بيئة تطوير (Visual Studio، VS Code، Rider… حسب اختيارك) +- صلاحية كتابة إلى المجلد الذي سيُحفظ فيه ملف PNG + +لا ملفات إعداد إضافية، لا متصفحات خارجية، وبالتأكيد لا حركات Chrome بدون رأس. فقط .NET النقي و Aspose.HTML. + + + +## الخطوة 1 – إنشاء PNG من HTML: تثبيت Aspose.HTML + +قبل أن تتمكن من **تحويل HTML إلى PNG**, يجب الإشارة إلى المكتبة في مشروعك. + +```bash +dotnet add package Aspose.HTML +``` + +الحزمة تشمل كل ما تحتاجه: تحليل HTML، تخطيط CSS، وعرض الصور. إذا كنت تعمل داخل Visual Studio، فإن واجهة مدير الحزم NuGet تعمل بنفس الفعالية. + +*نصيحة احترافية:* قفل الإصدار (مثال، `12.12.0`) في ملف `csproj` لتجنب تغييرات كسرية مفاجئة لاحقًا. + +## الخطوة 2 – تحميل مستند HTML (كيفية تحويل HTML) + +الخطوة الأولى الفعلية هي إمداد سلسلة HTML إلى كائن `HTMLDocument`. في مثالنا العلامة صغيرة، لكن نفس الشيفرة تعمل مع ملفات HTML كاملة الصفحة. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 2: Load a simple HTML document containing bold text +HTMLDocument htmlDocument = new HTMLDocument( + "
Bold text
"); +``` + +لماذا `HTMLDocument` وليس سلسلة عادية؟ تقوم Aspose بتحليل العلامة، بناء DOM، وتطبيق CSS تمامًا كما يفعل المتصفح. هذا هو جوهر **كيفية تحويل html** بشكل صحيح، خاصةً عندما تضيف لاحقًا أوراق أنماط خارجية أو محتوى مولد بجافاسكريبت. + +## الخطوة 3 – تكوين خيارات عرض الصورة (تحويل HTML إلى صورة) + +بعد ذلك نخبر العارض بالحجم، الخلفية، والجودة التي نريدها. هذه الإعدادات تؤثر مباشرة على PNG النهائي، لذا قم بتعديلها لتناسب حالتك. + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*حالة خاصة:* إذا كنت تحتاج خلفية شفافة (مثال، للصور المصغرة المتراكبة)، عيّن `BackgroundColor = Color.Transparent` وتأكد أن تنسيق الإخراج يدعم قناة ألفا (PNG يدعم ذلك). + +## الخطوة 4 – تطبيق خيارات الخط العامة (اختياري لكنه مفيد) + +أحيانًا تريد أن يكون كل نص في المستند غامقًا، مائلًا، أو بخط ويب معين. تسمح لك Aspose بتعيين `DefaultFontOptions` على المستند. + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +هذه طريقة سريعة **لتحويل HTML إلى صورة** بنمط موحد، دون تعديل CSS لكل عنصر. إذا قمت لاحقًا بتحميل CSS خارجي يحدد `font-weight` الخاص به، فإن تلك القواعد ستتجاوز الإعداد العالمي—تمامًا كما يتصرف المتصفح. + +## الخطوة 5 – عرض وحفظ PNG (حفظ HTML كـ PNG) + +الآن يتم تنفيذ الجزء الثقيل. نقوم بإنشاء `ImageRenderer`، نوجهه إلى `HTMLDocument`، نزوده بتدفق الإخراج، ونستدعي `Render()`. + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +النداء متزامن ويمنع المتابعة حتى تُكتب الصورة بالكامل. للصفحات الكبيرة قد ترغب في تشغيله في خيط خلفي، لكن لمعظم سيناريوهات إنشاء الصور المصغرة يكون النداء المتزامن مناسبًا. + +**النتيجة المتوقعة:** ملف اسمه `output.png` (800 × 600) يحتوي على كلمة “Bold text” باللون الأسود، بخط غامق على خلفية بيضاء. + +## الخطوة 6 – التحقق من النتيجة (قائمة التحقق من تحويل HTML إلى PNG) + +بعد تشغيل الشيفرة، افتح PNG في أي عارض صور. يجب أن ترى: + +- الأبعاد الدقيقة التي حددتها (`Width` × `Height`). +- خلفية بيضاء (أو شفافة إذا قمت بتغييرها). +- نص غامق معروض بوضوح، بفضل مضاد التسنين (antialiasing) والتلميحات (hinting). + +إذا كان النص غير واضح، تحقق مرة أخرى من `UseAntialiasing` و `UseHinting`. إذا كان الملف مفقودًا، تأكد أن العملية لديها صلاحية كتابة إلى المجلد المستهدف. + +### أسئلة شائعة وحالات خاصة + +| السؤال | الإجابة | +|----------|--------| +| **هل يمكنني عرض صفحة ويب كاملة مع CSS/JS خارجي؟** | نعم. قم بتحميل HTML من عنوان URL (`new HTMLDocument("https://example.com")`) أو اقرأ الملف من القرص، وستقوم Aspose بجلب أوراق الأنماط المرتبطة تلقائيًا (بشرط أن تكون قابلة للوصول). | +| **ماذا لو احتجت إلى DPI أعلى للطباعة؟** | عيّن `renderingOptions.DpiX` و `renderingOptions.DpiY` (القيمة الافتراضية 96). DPI أعلى ينتج ملفات أكبر ولكن إخراجًا أكثر وضوحًا. | +| **كيف أتعامل مع عناصر SVG أو Canvas؟** | تدعم Aspose.HTML SVG بشكل أصلي. يتم عرض Canvas بناءً على جافاسكريبت المنفذة أثناء التخطيط، لذا تأكد من تمكين تنفيذ السكريبت (`htmlDocument.EnableJavaScript = true`). | +| **هل هناك طريقة لتحويل مجموعة من ملفات HTML دفعة واحدة؟** | احط منطق العرض داخل حلقة `foreach`، مع إعادة استخدام نفس كائن `ImageRenderingOptions` لزيادة السرعة. | +| **هل يمكنني إخراج JPEG بدلاً من PNG؟** | استخدم `JpegRenderingOptions` وغيّر امتداد الملف إلى `.jpg`. باقي الشيفرة يبقى كما هو. | + +## مثال كامل يعمل (جميع الخطوات في ملف واحد) + +فيما يلي البرنامج الكامل جاهز للنسخ واللصق. يتم تجميعه باستخدام `dotnet run` وينتج PNG الموضح أعلاه. + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +شغّل البرنامج، وسترى رسالة وحدة التحكم التي تؤكد إنشاء الملف. افتح `output.png` وتحقق من النص الغامق—ها قد **حفظت HTML كـ PNG**. + +{{< /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..9ed65c8ea 100644 --- a/html/arabic/net/rendering-html-documents/_index.md +++ b/html/arabic/net/rendering-html-documents/_index.md @@ -45,11 +45,13 @@ url: /ar/net/rendering-html-documents/ ### [كيفية تحويل HTML إلى PNG – دليل C# كامل](./how-to-render-html-as-png-complete-c-guide/) تعلم خطوة بخطوة كيفية تحويل مستندات HTML إلى صور PNG باستخدام Aspose.HTML وC# في هذا الدليل الشامل. + ### [كيفية استخدام Aspose لتحويل HTML إلى PNG – دليل خطوة بخطوة](./how-to-use-aspose-to-render-html-to-png-step-by-step-guide/) تعلم كيفية تحويل مستندات HTML إلى صور PNG باستخدام Aspose.HTML في .NET خطوة بخطوة. ### [إنشاء PNG من HTML – دليل كامل للتصيير باستخدام C#](./create-png-from-html-full-c-rendering-guide/) تعلم كيفية تحويل صفحات HTML إلى صور PNG باستخدام Aspose.HTML في دليل شامل يوضح كل خطوة في C#. + ### [عرض EPUB بتنسيق XPS في .NET باستخدام Aspose.HTML](./render-epub-as-xps/) تعرف على كيفية إنشاء مستندات HTML وعرضها باستخدام Aspose.HTML لـ .NET في هذا البرنامج التعليمي الشامل. انغمس في عالم معالجة HTML وكشط الويب والمزيد. @@ -68,6 +70,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 وحفظه في ملف ZIP باستخدام C# – دليل كامل](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +تعلم خطوة بخطوة كيفية تحويل مستندات HTML إلى صور PNG وحفظها في ملف ZIP باستخدام Aspose.HTML وC#. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/arabic/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/arabic/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..ca34b32d2 --- /dev/null +++ b/html/arabic/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-02-14 +description: تحويل HTML إلى PNG باستخدام C# وتعلم كيفية تحويل HTML إلى صورة، كتابة + الدفق إلى ZIP، وإنشاء أرشيف ZIP في C# بسرعة. +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: ar +og_description: تحويل HTML إلى PNG في C# واكتشف كيفية تحويل HTML إلى صورة، كتابة التدفق + إلى ZIP، وإنشاء أرشيف ZIP في C# بكفاءة. +og_title: تحويل HTML إلى PNG وحفظه في ZIP باستخدام C# – دليل شامل +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: تحويل HTML إلى PNG وحفظه في ZIP باستخدام C# – دليل كامل +url: /ar/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# تحويل HTML إلى PNG وحفظه في ZIP باستخدام C# – دليل شامل + +هل احتجت يوماً إلى **تحويل HTML إلى PNG** لكن لم تعرف كيف تحتفظ بالصورة والـ markup الأصلي معاً؟ لست وحدك—العديد من المطورين يواجهون هذه المشكلة عند بناء أدوات التقارير، أو صور مصغرة للبريد الإلكتروني، أو حزم الوثائق غير المتصلة. + +الخبر السار؟ في هذا الدرس سنستعرض حلاً واحداً متكاملاً **يحوّل HTML إلى صورة**، يكتب التيار الناتج داخل ملف ZIP، بل ويخزن الـ HTML الأصلي بجانبه. في النهاية ستحصل على برنامج قابل للتنفيذ يقوم بكل شيء من البداية إلى النهاية، وستفهم لماذا كل جزء مهم. + +سنضيف أيضاً نصائح حول **write stream to zip**، نناقش تفاصيل **create zip archive c#**، ونظهر لك كيف **save html to zip** دون الحاجة إلى أدوات ضغط خارجية. لا مراجع خارجية مطلوبة—فقط الكود والمنطق وراءه. + +--- + +## ما الذي ستحتاجه + +- .NET 6.0 أو أحدث (الـ API يعمل على .NET Core و .NET Framework أيضاً) +- Aspose.HTML for .NET (حزمة NuGet `Aspose.Html`) – تتولى الجزء الأكبر من عملية رسم HTML. +- قليل من الإلمام بـ `System.IO.Compression` – سنستخدم الفئة المدمجة `ZipArchive`. + +هذا كل ما تحتاجه. افتح محرر نصوص أو Visual Studio، ولنبدأ. + +--- + +## الخطوة 1: إعداد ResourceHandler مخصص لكتابة التيار إلى ZIP + +عند حفظ مستند بواسطة Aspose.HTML، يطلب من `ResourceHandler` تيارًا (`Stream`) حيث يجب وضع كل مورد (صور، CSS، إلخ). من خلال إنشاء فئة فرعية من `ResourceHandler` يمكننا توجيه كل مورد إلى **أرشيف zip** بدلاً من نظام الملفات. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**لماذا قد يهمك ذلك:** إبقاء الـ HTML في الذاكرة يعني أنك تستطيع **save html to zip** لاحقًا دون الحاجة لقراءة الملف من القرص مرة أخرى. كما يجعل اختبار الوحدة سهلًا جدًا. + +--- + +## الخطوة 4: رسم HTML إلى PNG وتخزينه في ZIP + +الآن يأتي قلب الدرس—رسم المستند وإدخال التيار الناتج مباشرةً في الأرشيف. + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### النتيجة المتوقعة + +بعد انتهاء البرنامج، ستجد ملفًا باسم `result.zip` في مجلد التنفيذ. افتحه وسترى: + +- **page.png** – لقطة نقطية للـ HTML (نتيجة **render html to png**). +- **index.html** (أو أي اسم تُحدده Aspose.HTML) – الـ markup الأصلي، يؤكد أننا نجحنا في **save html to zip**. + +يمكنك استخراج الـ zip بأي مدير أرشيف وعرض PNG للتحقق من جودة الرسم. + +--- + +## الخطوة 5: معالجة الحالات الخاصة والمشكلات الشائعة + +| الحالة | ما يجب مراقبته | الإصلاح الموصى به | +|-----------|-------------------|-----------------| +| **صفحات HTML الكبيرة** | استهلاك الذاكرة يرتفع لأننا نحتفظ بالـ PNG بالكامل في `MemoryStream`. | التحول إلى تيار ملف مؤقت (`FileStream`) إذا تجاوز حجم الصورة عدة ميغابايت. | +| **ملف zip موجود مسبقًا** | فتح zip في وضع `Update` سيحافظ على الإدخالات الحالية، لكن الأسماء المكررة تسبب استثناءات. | احذف الإدخال أولاً: `zipArchive.GetEntry(name)?.Delete();` قبل إنشاء جديد. | +| **CSS غير مدعوم** | قد يتجاهل Aspose.HTML بعض ميزات CSS الحديثة. | اختبر الرسم محليًا؛ استخدم الأنماط المضمنة للخصائص الحرجة. | +| **سلامة الخيوط** | `ZipArchive` غير آمن للاستخدام عبر خيوط متعددة. | حافظ على الرسم والضغط في خيط واحد أو استخدم أرشيفات منفصلة لكل خيط. | + +**لماذا هذه الأمور مهمة:** معرفة حدود **write stream to zip** تساعدك على تجنب الأعطال أثناء التشغيل وتبقي تطبيقك قويًا عندما تقوم لاحقًا بمعالجة مئات الصفحات دفعةً واحدة. + +--- + +## الخطوة 6: عينة كاملة جاهزة للتنفيذ + +فيما يلي البرنامج الكامل الذي يمكنك نسخه ولصقه في مشروع Console. يتضمن جميع توجيهات `using`، التعليقات، ونمط التخلص السليم من الموارد. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +شغّل البرنامج (`dotnet run`) وسترى رسالة التأكيد. افتح `result.zip` لتتأكد من وجود الملفين. + +--- + +## الأسئلة المتكررة (FAQ) + +**س: هل يعمل هذا على .NET Framework 4.7؟** +ج: نعم. واجهة `System.IO.Compression` مستقرة منذ .NET 4.5، وAspose.HTML يدعم إطار .NET الكامل. ما عليك سوى الإشارة إلى مكتبة Aspose.HTML المناسبة. + +**س: هل يمكنني إضافة موارد أخرى مثل CSS أو خطوط؟** +ج: بالتأكيد. أي مورد خارجي يُشار إليه في الـ HTML سيُستدعي `HandleResource`، وبالتالي سيُضاف تلقائيًا إلى نفس الـ zip. + +**س: ماذا لو أردت صيغة صورة مختلفة (مثل JPEG)؟** +ج: غيّر مُنشئ `ImageRenderer` ليستخدم `JpegRenderer` أو عيّن `ImageFormat` في `ImageRenderingOptions`. باقي سير العمل يبقى كما هو. + +**س: هل يمكن حماية الـ zip بكلمة مرور؟** +ج: الفئة المدمجة `ZipArchive` لا تدعم التشفير. إذا احتجت ذلك، استخدم مكتبة طرف ثالث مثل `SharpZipLib` وعدل `ZipHandler` وفقًا لذلك. + +--- + +## الخلاصة + +أنت الآن + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/arabic/net/working-with-html-documents/_index.md b/html/arabic/net/working-with-html-documents/_index.md index 30c32a306..165fac6af 100644 --- a/html/arabic/net/working-with-html-documents/_index.md +++ b/html/arabic/net/working-with-html-documents/_index.md @@ -37,6 +37,9 @@ url: /ar/net/working-with-html-documents/ الآن، دعنا ننتقل بمهاراتك إلى المستوى التالي. إن تحرير مستندات HTML مهمة شائعة بين مطوري الويب، ويعمل Aspose.HTML على تبسيط هذه العملية بشكل كبير. في هذا القسم، سنغطي إنشاء المستندات ومعالجتها وتصميمها. ستكتشف كيفية تحسين مظهر ووظائف محتوى الويب الخاص بك، مما يجعله جذابًا وسهل الاستخدام. ### [كيفية حفظ HTML في C# – دليل كامل باستخدام معالج موارد مخصص](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) + +### [كيفية حفظ HTML في C# باستخدام معالج موارد مخصص](./how-to-save-html-in-c-with-custom-resource-handler/) + ### [كيفية جعل العنوان غامقًا باستخدام CSS و C# – دليل خطوة بخطوة كامل](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/arabic/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/arabic/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..8a0a8574b --- /dev/null +++ b/html/arabic/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-02-14 +description: تعلم كيفية حفظ HTML باستخدام Aspose.HTML في C#. يوضح هذا الدليل خطوة + بخطوة كيفية كتابة ملف HTML، تحميل HTML من سلسلة، تحويل HTML إلى ملف، واستخدام معالج + موارد مخصص. +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: ar +og_description: كيفية حفظ HTML بسرعة باستخدام Aspose.HTML. تعلم كتابة ملف HTML، تحميل + HTML من سلسلة، تحويل HTML إلى ملف، وتنفيذ معالج موارد مخصص. +og_title: كيفية حفظ HTML في C# – دليل كامل +tags: +- Aspose.HTML +- C# +- File I/O +title: كيفية حفظ HTML في C# باستخدام معالج موارد مخصص +url: /ar/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +}} + +Make sure to keep code block placeholders unchanged. + +Now produce final answer.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية حفظ HTML في C# باستخدام معالج موارد مخصص + +هل تساءلت يومًا **كيف تحفظ html** مباشرةً من سلسلة نصية دون الحاجة إلى كتابة الملف على القرص أولاً؟ لست وحدك—العديد من المطورين يواجهون هذه المشكلة عندما يحتاجون إلى إنشاء تقارير في الوقت الفعلي أو بث محتوى إلى المتصفح. الخبر السار هو أن Aspose.HTML يجعل العملية بأكملها سهلة للغاية، ويمكنك حتى توصيل منطق التخزين الخاص بك باستخدام معالج موارد مخصص. + +في هذا الدرس سنستعرض تحميل HTML من سلسلة نصية، تكوين معالج مخصص، وأخيرًا كتابة HTML إلى ملف. بنهاية الدرس ستعرف كيف **تكتب ملف html**، كيف **تحمل html من سلسلة نصية**، كيف **تحول html إلى ملف**، وكيف تصنع **معالج موارد مخصص** يناسب أي سيناريو تخزين. + +> **ما ستحصل عليه:** برنامج C# كامل جاهز للتنفيذ، شرح لكل سطر، ونصائح لتوسيع الحل إلى التخزين السحابي أو خطوط الأنابيب في الذاكرة. + +## المتطلبات المسبقة + +- .NET 6.0 أو أحدث (تعمل الواجهة البرمجية بنفس الطريقة على .NET Framework 4.6+) +- حزمة NuGet الخاصة بـ Aspose.HTML for .NET (`Aspose.Html`) +- فهم أساسي لصياغة C# (إذا كنت مرتاحًا مع عبارات `using` فأنت جاهز) + +لا تحتاج إلى أي ملفات إعداد إضافية—فقط مشروع وحدة تحكم جديد والكود أدناه. + + + +## الخطوة 1: تحميل HTML من سلسلة نصية (جزء “load html from string”) + +أولاً وقبل كل شيء—نحتاج إلى كائن `HTMLDocument`. يتيح لك Aspose.HTML إدخال العلامات الخام مباشرةً في المُنشئ، مما يعني أنه يمكنك **load html from string** دون أي ملفات وسيطة. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +为什么使用 `HTMLDocument` 而不是普通字符串?Aspose 会解析 markup,构建 DOM,并像浏览器一样应用 CSS。这是**如何正确渲染 html**的核心,尤其是在后续加入外部样式表或 JavaScript 生成的内容时。 + +## 第三步 – 配置图像渲染选项(将 HTML 转换为图像) + +接下来我们告诉渲染器所需的尺寸、背景和质量。这些设置直接影响最终的 PNG,请根据实际需求进行调整。 + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*特殊情况:* 如果需要透明背景(例如用于叠加缩略图),将 `BackgroundColor = Color.Transparent`,并确保输出格式支持 alpha 通道(PNG 支持)。 + +## 第四步 – 应用全局字体选项(可选但很实用) + +有时你希望文档中的所有文字都使用粗体、斜体或特定的网络字体。Aspose 允许在文档上设置 `DefaultFontOptions`。 + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +这是一种快速**将 HTML 转换为图像**并统一样式的方法,无需逐个元素修改 CSS。如果后续加载的外部 CSS 中自行设置了 `font-weight`,这些规则会覆盖全局设置——这正是浏览器的行为方式。 + +## 第五步 – 渲染并保存 PNG(将 HTML 保存为 PNG) + +现在重活儿开始了。我们创建 `ImageRenderer`,指向 `HTMLDocument`,将输出流传入,并调用 `Render()`。 + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +此调用是同步的,会阻塞直至图像完整写入。对于大型页面,你可能希望在后台线程中执行,但在大多数缩略图生成场景下,阻塞调用已经足够。 + +**预期结果:** 一个名为 `output.png`(800 × 600)的文件,白色画布上显示黑色粗体的 “Bold text”。 + +## 第六步 – 验证输出(渲染 HTML 为 PNG 检查清单) + +代码运行后,用任意图像查看器打开 PNG。你应该看到: + +- 与设置的尺寸相同的宽高(`Width` × `Height`)。 +- 白色背景(如果你改为透明,则为透明)。 +- 粗体文字渲染清晰,得益于抗锯齿和 hinting。 + +如果文字模糊,请再次检查 `UseAntialiasing` 和 `UseHinting`。如果文件缺失,确保进程对目标文件夹拥有写入权限。 + +### 常见问题与特殊情况 + +| 问题 | 回答 | +|----------|--------| +| **我能渲染带有外部 CSS/JS 的完整网页吗?** | 可以。使用 URL 加载 HTML(`new HTMLDocument("https://example.com")`)或从磁盘读取文件,Aspose 会自动获取链接的样式表(前提是它们可访问)。 | +| **如果需要更高的 DPI 以用于打印怎么办?** | 设置 `renderingOptions.DpiX` 和 `renderingOptions.DpiY`(默认 96)。更高的 DPI 会生成更大的文件,但输出更清晰。 | +| **如何处理 SVG 或 Canvas 元素?** | Aspose.HTML 原生支持 SVG。Canvas 会根据布局期间执行的 JavaScript 渲染,所以请确保启用脚本执行(`htmlDocument.EnableJavaScript = true`)。 | +| **有没有办法批量转换多个 HTML 文件?** | 将渲染逻辑放入 `foreach` 循环中,复用同一个 `ImageRenderingOptions` 实例以提升速度。 | +| **可以输出 JPEG 而不是 PNG 吗?** | 使用 `JpegRenderingOptions` 并将文件扩展名改为 `.jpg`。其余代码保持不变。 | + +## 完整可运行示例(所有步骤合在一个文件中) + +下面是完整的、可直接复制粘贴的程序。使用 `dotnet run` 编译运行,即可生成上述 PNG。 + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +运行程序后,你会在控制台看到确认文件已创建的消息。打开 `output.png` 并验证粗体文字——就是这样,你已经**将 HTML 保存为 PNG**了。 + +{{< /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..0e63aa05d 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 并保存为 ZIP – 完整指南](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +学习使用 Aspose.HTML for .NET 将 HTML 渲染为 PNG 并压缩为 ZIP,提供完整的 C# 示例和最佳实践。 + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/chinese/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/chinese/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..c94affc96 --- /dev/null +++ b/html/chinese/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-02-14 +description: 在 C# 中将 HTML 渲染为 PNG,并学习如何将 HTML 转换为图像、将流写入 ZIP,以及快速创建 ZIP 档案。 +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: zh +og_description: 在 C# 中将 HTML 渲染为 PNG,并了解如何将 HTML 转换为图像、将流写入 ZIP,以及高效创建 ZIP 压缩包。 +og_title: 使用 C# 将 HTML 渲染为 PNG 并保存为 ZIP – 完整指南 +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: 使用 C# 将 HTML 渲染为 PNG 并保存为 ZIP 的完整指南 +url: /zh/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +write. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 使用 C# 将 HTML 渲染为 PNG 并保存到 ZIP – 完整指南 + +是否曾需要 **将 HTML 渲染为 PNG**,但又不确定如何把图片和原始标记放在一起保存?你并不孤单——许多开发者在构建报表工具、邮件缩略图或离线文档包时都会遇到同样的难题。 + +好消息是?在本教程中,我们将一步步演示一个 **将 HTML 转换为图像**、将生成的流写入 ZIP 文件,并且还能把源 HTML 一并存入的完整、独立的解决方案。完成后,你将拥有一个可直接运行的程序,能够从头到尾完成所有操作,并且了解每个环节为何重要。 + +我们还会顺带提供 **write stream to zip** 的技巧,讨论 **create zip archive c#** 的细节,并展示如何 **save html to zip** 而无需任何第三方压缩工具。无需外部引用——只需代码和背后的原理。 + +--- + +## 你需要的环境 + +- .NET 6.0 或更高(该 API 同样适用于 .NET Core 和 .NET Framework) +- Aspose.HTML for .NET(NuGet 包 `Aspose.Html`)——它负责 HTML 渲染的繁重工作。 +- 对 `System.IO.Compression` 有一点了解——我们将使用内置的 `ZipArchive` 类。 + +就这些。准备好文本编辑器或 Visual Studio,开始吧。 + +--- + +## 第一步:设置自定义 ResourceHandler 以写入 ZIP + +当 Aspose.HTML 保存文档时,它会向 `ResourceHandler` 请求一个 `Stream`,用于存放每个资源(图片、CSS 等)。通过继承 `ResourceHandler`,我们可以把所有资源直接写入 **zip archive**,而不是文件系统。 + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**为何在意:** 将 HTML 保存在内存中意味着以后可以 **save html to zip** 而无需再次读取磁盘。这也让单元测试变得轻而易举。 + +--- + +## 第四步:将 HTML 渲染为 PNG 并存入 ZIP + +下面进入教程的核心——渲染文档并把生成的流直接写入归档。 + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### 预期结果 + +程序执行完毕后,你会在可执行文件所在文件夹看到一个名为 `result.zip` 的文件。打开它,你会看到: + +- **page.png** – HTML 的光栅化快照(我们的 **render html to png** 输出)。 +- **index.html**(或 Aspose.HTML 自动分配的其他名称) – 原始标记,证明我们成功 **save html to zip**。 + +使用任意压缩管理器解压后查看 PNG,即可验证渲染质量。 + +--- + +## 第五步:处理边缘情况和常见陷阱 + +| 情形 | 需要注意的点 | 推荐解决方案 | +|-----------|-------------------|-----------------| +| **大型 HTML 页面** | 由于在 `MemoryStream` 中保留整个 PNG,内存消耗会激增。 | 若图像超过几 MB,改用临时文件流(`FileStream`)。 | +| **已有的 zip 文件** | 以 `Update` 模式打开 zip 会保留已有条目,但重复名称会抛异常。 | 在创建新条目之前先删除旧条目:`zipArchive.GetEntry(name)?.Delete();` | +| **不受支持的 CSS** | Aspose.HTML 可能会忽略某些现代 CSS 特性。 | 在本地测试渲染效果;对关键布局使用内联样式作为备选。 | +| **线程安全** | `ZipArchive` 不是线程安全的。 | 将渲染和压缩操作保持在单线程,或为每个线程使用独立的 archive 实例。 | + +**为何重要:** 了解 **write stream to zip** 的限制可以帮助你避免运行时崩溃,并在后续批量处理数十页时保持应用的稳健性。 + +--- + +## 第六步:完整、可直接运行的示例 + +下面是可以直接复制粘贴到控制台项目中的完整程序。它包含所有 using 指令、注释以及正确的资源释放模式。 + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +运行程序(`dotnet run`)后,你会看到确认信息。打开 `result.zip` 即可验证两个文件是否都已生成。 + +--- + +## 常见问题解答 (FAQ) + +**Q: 这在 .NET Framework 4.7 上能工作吗?** +A: 能。`System.IO.Compression` API 自 .NET 4.5 起已稳定,且 Aspose.HTML 支持完整的 .NET Framework。只需引用相应的 Aspose.HTML DLL 即可。 + +**Q: 我可以添加更多资源,例如 CSS 或字体吗?** +A: 完全可以。HTML 引用的任何外部资源都会触发 `HandleResource`,因此它们会自动被写入同一个 zip。 + +**Q: 如果我需要其他图像格式(例如 JPEG)怎么办?** +A: 将 `ImageRenderer` 构造函数改为使用 `JpegRenderer`,或在 `ImageRenderingOptions` 中设置 `ImageFormat`。其余管道保持不变。 + +**Q: zip 文件可以设置密码吗?** +A: 内置的 `ZipArchive` 不支持加密。若需要密码保护,可考虑使用第三方库(如 `SharpZipLib`),并相应地改写 `ZipHandler`。 + +--- + +## 结论 + +你现在已经 + +{{< /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/working-with-html-documents/_index.md b/html/chinese/net/working-with-html-documents/_index.md index fcca91c84..db07980bf 100644 --- a/html/chinese/net/working-with-html-documents/_index.md +++ b/html/chinese/net/working-with-html-documents/_index.md @@ -37,6 +37,7 @@ HTML 文档是 Web 的支柱,能够有效地创建和操作 HTML 文档是任 现在,让我们将您的技能提升到一个新的水平。编辑 HTML 文档是 Web 开发人员的常见任务,而 Aspose.HTML 大大简化了此过程。在本节中,我们将介绍文档创建、操作和样式。您将了解如何增强 Web 内容的外观和功能,使其更具吸引力且用户友好。 ### [如何在 C# 中保存 HTML – 使用自定义资源处理程序的完整指南](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) +### [如何在 C# 中保存 HTML – 使用自定义资源处理程序](./how-to-save-html-in-c-with-custom-resource-handler/) ### [使用 CSS 和 C# 加粗标题 – 完整分步指南](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/chinese/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/chinese/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..d658a4136 --- /dev/null +++ b/html/chinese/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-02-14 +description: 学习如何在 C# 中使用 Aspose.HTML 保存 HTML。此分步指南展示了如何写入 HTML 文件、从字符串加载 HTML、将 HTML + 转换为文件以及使用自定义资源处理程序。 +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: zh +og_description: 如何使用 Aspose.HTML 快速保存 HTML。学习编写 HTML 文件、从字符串加载 HTML、将 HTML 转换为文件,以及实现自定义资源处理程序。 +og_title: 如何在 C# 中保存 HTML – 完整指南 +tags: +- Aspose.HTML +- C# +- File I/O +title: 如何在 C# 中使用自定义资源处理程序保存 HTML +url: /zh/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 C# 中使用自定义资源处理程序保存 HTML + +是否曾想过 **how to save html** 直接从字符串保存而不先触及磁盘?你并不孤单——许多开发者在需要即时生成报告或将内容流式传输到浏览器时都会遇到这个难题。好消息是 Aspose.HTML 让整个过程轻而易举,并且你甚至可以使用自定义资源处理程序插入自己的存储逻辑。 + +在本教程中,我们将演示如何从字符串加载 HTML、配置自定义处理程序,最后将 HTML 写入文件。结束时,你将了解如何 **write html file**、如何 **load html from string**、如何 **convert html to file**,以及如何打造适用于任何存储场景的 **custom resource handler**。 + +> **你将获得:** 一个完整、可直接运行的 C# 程序,对每行代码的解释,以及将解决方案扩展到云存储或内存管道的技巧。 + +## 前置条件 + +- .NET 6.0 或更高(API 在 .NET Framework 4.6+ 上表现相同) +- Aspose.HTML for .NET NuGet 包 (`Aspose.Html`) +- 对 C# 语法的基本了解(如果你熟悉 `using` 语句,就没问题) + +不需要额外的配置文件——只需一个全新的控制台项目和下面的代码。 + + + +## 第一步:从字符串加载 HTML(“load html from string” 部分) + +首先——我们需要一个 `HTMLDocument` 实例。Aspose.HTML 允许你直接将原始标记传入构造函数,这意味着你可以 **load html from string** 而无需任何中间文件。 + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +Proč `HTMLDocument` a ne prostý řetězec? Aspose parsuje markup, vytvoří DOM a aplikuje CSS přesně jako prohlížeč. To je jádro **jak renderovat html** správně, zejména když později přidáte externí styly nebo JavaScript‑generovaný obsah. + +## Krok 3 – Konfigurace možností renderování obrazu (Převod HTML na obrázek) + +Dále řekneme rendereru, jakou velikost, pozadí a kvalitu chceme. Tyto nastavení přímo ovlivňují finální PNG, takže je upravte podle svého případu použití. + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*Okrajový případ:* Pokud potřebujete průhledné pozadí (např. pro překryvné náhledy), nastavte `BackgroundColor = Color.Transparent` a ujistěte se, že výstupní formát podporuje alfa kanál (PNG ano). + +## Krok 4 – Aplikace globálních možností písma (Volitelné, ale užitečné) + +Někdy chcete, aby každý kus textu v dokumentu byl tučný, kurzíva nebo konkrétní webový font. Aspose vám umožní nastavit `DefaultFontOptions` na dokumentu. + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +Jedná se o rychlý způsob, jak **převést HTML na obrázek** s jednotným stylem, aniž byste museli upravovat CSS každého elementu. Pokud později načtete externí CSS, který nastaví vlastní `font-weight`, tato pravidla přepíšou globální nastavení — přesně tak, jak se chová prohlížeč. + +## Krok 5 – Renderování a uložení PNG (Uložení HTML jako PNG) + +Nyní se děje těžká práce. Vytvoříme `ImageRenderer`, nasměrujeme ho na `HTMLDocument`, předáme výstupní stream a zavoláme `Render()`. + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +Volání je synchronní a blokuje, dokud není obrázek kompletně zapsán. Pro velké stránky můžete chtít spustit na pozadí, ale pro většinu scénářů generování náhledů je blokující volání v pořádku. + +**Očekávaný výsledek:** soubor pojmenovaný `output.png` (800 × 600) obsahující slovo „Bold text“ černým, tučným fontem na bílém plátně. + +## Krok 6 – Ověření výstupu (Kontrolní seznam renderování HTML do PNG) + +Po spuštění kódu otevřete PNG v libovolném prohlížeči obrázků. Měli byste vidět: + +- Přesné rozměry, které jste nastavili (`Width` × `Height`). +- Bílé pozadí (nebo průhledné, pokud jste to změnili). +- Tučný text vykreslený čistě, díky antialiasingu a hintingu. + +Pokud text vypadá rozmazaně, zkontrolujte `UseAntialiasing` a `UseHinting`. Pokud soubor chybí, ujistěte se, že proces má oprávnění k zápisu do cílové složky. + +### Časté otázky a okrajové případy + +| Otázka | Odpověď | +|----------|--------| +| **Mohu renderovat celou webovou stránku s externím CSS/JS?** | Ano. Načtěte HTML z URL (`new HTMLDocument("https://example.com")`) nebo ze souboru na disku a Aspose automaticky načte propojené styly (pokud jsou dostupné). | +| **Co když potřebuji vyšší DPI pro tisk?** | Nastavte `renderingOptions.DpiX` a `renderingOptions.DpiY` (výchozí je 96). Vyšší DPI vede k větším souborům, ale ostřejšímu výstupu. | +| **Jak zacházet s SVG nebo Canvas elementy?** | Aspose.HTML podporuje SVG nativně. Canvas se renderuje na základě JavaScriptu vykonaného během layoutu, takže povolte vykonávání skriptů (`htmlDocument.EnableJavaScript = true`). | +| **Existuje způsob, jak hromadně převádět mnoho HTML souborů?** | Zabalte logiku renderování do `foreach` smyčky a opakovaně používejte stejnou instanci `ImageRenderingOptions` pro rychlost. | +| **Mohu místo PNG výstup generovat jako JPEG?** | Použijte `JpegRenderingOptions` a změňte příponu souboru na `.jpg`. Zbytek kódu zůstane stejný. | + +## Kompletní funkční příklad (všechny kroky v jednom souboru) + +Níže je kompletní program připravený ke zkopírování. Kompiluje se pomocí `dotnet run` a vytvoří výše popsaný PNG. + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +Spusťte program a uvidíte zprávu v konzoli potvrzující vytvoření souboru. Otevřete `output.png` a ověřte tučný text — voilà, právě jste **uložili HTML jako PNG** + +{{< /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..4ce249d58 100644 --- a/html/czech/net/rendering-html-documents/_index.md +++ b/html/czech/net/rendering-html-documents/_index.md @@ -50,7 +50,7 @@ V tomto komplexním kurzu se dozvíte, jak vytvářet a vykreslovat dokumenty HT Naučte se, jak efektivně řídit časové limity vykreslování v Aspose.HTML pro .NET. Prozkoumejte možnosti vykreslování a zajistěte hladké vykreslování HTML dokumentu. ### [Render MHTML jako XPS v .NET s Aspose.HTML](./render-mhtml-as-xps/) - Naučte se vykreslovat MHTML jako XPS v .NET pomocí Aspose.HTML. Vylepšete své dovednosti v manipulaci s HTML a podpořte své projekty vývoje webu! +Naučte se vykreslovat MHTML jako XPS v .NET pomocí Aspose.HTML. Vylepšete své dovednosti v manipulaci s HTML a podpořte své projekty vývoje webu! ### [Renderujte více dokumentů v .NET pomocí Aspose.HTML](./render-multiple-documents/) Naučte se vykreslovat více dokumentů HTML pomocí Aspose.HTML pro .NET. Zvyšte své možnosti zpracování dokumentů pomocí této výkonné knihovny. @@ -66,9 +66,13 @@ Naučte se, jak pomocí Aspose.HTML v .NET převést HTML do PNG pomocí podrobn ### [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/) Naučte se, jak pomocí Aspose.HTML pro .NET převést HTML do PNG pomocí kompletního C# průvodce. +### [Renderujte HTML do PNG a uložte do ZIP pomocí C# – Kompletní průvodce](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +Naučte se, jak pomocí Aspose.HTML v .NET převést HTML do PNG a archivovat výstup do ZIP souboru s podrobným návodem. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/czech/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/czech/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..b65042ebd --- /dev/null +++ b/html/czech/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-02-14 +description: Vykreslete HTML do PNG v C# a naučte se, jak převést HTML na obrázek, + zapisovat stream do ZIP a rychle vytvořit ZIP archiv v C#. +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: cs +og_description: Vykreslete HTML do PNG v C# a objevte, jak převést HTML na obrázek, + zapisovat stream do ZIP a efektivně vytvořit zip archiv v C#. +og_title: Vykreslení HTML do PNG a uložení do ZIP pomocí C# – Kompletní průvodce +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: Vykreslení HTML do PNG a uložení do ZIP pomocí C# – Kompletní průvodce +url: /cs/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Renderování HTML do PNG a uložení do ZIP pomocí C# – Kompletní průvodce + +Už jste někdy potřebovali **renderovat HTML do PNG**, ale nevedeli ste, jak udržet obrázek a původní markup pohromadě? Nejste v tom sami – mnoho vývojářů narazí na tento problém při tvorbě reportovacích nástrojů, náhledů e‑mailů nebo offline balíčků dokumentace. + +Dobrá zpráva? V tomto tutoriálu projdeme jedním, samostatným řešením, které **převádí HTML na obrázek**, zapíše výsledný stream do ZIP souboru a dokonce uloží zdrojové HTML vedle něj. Na konci budete mít spustitelný program, který vše zvládne od začátku do konce, a pochopíte, proč je každá část důležitá. + +Navíc přidáme tipy na **write stream to zip**, probereme nuance **create zip archive c#** a ukážeme vám, jak **save html to zip** bez jakýchkoli externích zip utilit. Žádné externí odkazy nejsou potřeba – jen kód a logika za ním. + +--- + +## Co budete potřebovat + +- .NET 6.0 nebo novější (API funguje také na .NET Core a .NET Framework) +- Aspose.HTML pro .NET (NuGet balíček `Aspose.Html`) – zvládá těžkou část renderování HTML. +- Trochu zkušeností se `System.IO.Compression` – použijeme vestavěnou třídu `ZipArchive`. + +To je vše. Pořiďte si textový editor nebo Visual Studio a pojďme na to. + +--- + +## Krok 1: Nastavte vlastní ResourceHandler pro zápis streamu do ZIP + +Když Aspose.HTML ukládá dokument, požádá `ResourceHandler` o `Stream`, kam má umístit každý zdroj (obrázky, CSS atd.). Děděním z `ResourceHandler` můžeme nasměrovat každý zdroj do **zip archivu** místo souborového systému. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**Proč by vás to mohlo zajímat:** Uložení HTML v paměti znamená, že později můžete **save html to zip** bez nutnosti číst soubor z disku. Navíc to usnadňuje jednotkové testování. + +--- + +## Krok 4: Renderujte HTML do PNG a uložte do ZIP + +Nyní přichází jádro tutoriálu – renderování dokumentu a přímé vložení výsledného streamu do archivu. + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### Očekávaný výsledek + +Po dokončení programu najdete soubor `result.zip` ve složce spustitelného souboru. Rozbalte jej a uvidíte: + +- **page.png** – rasterizovaný snímek HTML (náš výstup **render html to png**). +- **index.html** (nebo jakýkoli název, který Aspose.HTML přiřadí) – původní markup, potvrzující, že jsme úspěšně **save html to zip**. + +ZIP můžete rozbalit libovolným archivátorem a podívat se na PNG, abyste ověřili kvalitu renderování. + +--- + +## Krok 5: Řešení okrajových případů a běžných úskalí + +| Situace | Na co si dát pozor | Doporučené řešení | +|-----------|-------------------|-----------------| +| **Velké HTML stránky** | Spotřeba paměti roste, protože držíme celý PNG v `MemoryStream`. | Přepněte na dočasný souborový stream (`FileStream`), pokud obrázek přesáhne několik megabajtů. | +| **Existující zip soubor** | Otevření zipu v režimu `Update` zachová existující položky, ale duplicitní názvy vyvolají výjimku. | Nejprve odstraňte položku: `zipArchive.GetEntry(name)?.Delete();` před vytvořením nové. | +| **Nesprávně podporované CSS** | Aspose.HTML může ignorovat některé moderní CSS funkce. | Otestujte render lokálně; pro kritické rozložení použijte inline styly. | +| **Vlákna** | `ZipArchive` není thread‑safe. | Renderujte a zipujte v jednom vlákně nebo použijte samostatné archivy pro každé vlákno. | + +**Proč je to důležité:** Znalost limitů **write stream to zip** vám pomůže vyhnout se pádům aplikace a udrží váš program robustní, když později budete zpracovávat desítky stránek najednou. + +--- + +## Krok 6: Kompletní, připravený příklad + +Níže je celý program, který můžete zkopírovat a vložit do konzolového projektu. Obsahuje všechny `using` direktivy, komentáře i správné vzory uvolňování prostředků. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +Spusťte program (`dotnet run`) a uvidíte potvrzovací zprávu. Otevřete `result.zip` a ověřte, že jsou oba soubory přítomny. + +--- + +## Často kladené otázky (FAQ) + +**Q: Funguje to na .NET Framework 4.7?** +A: Ano. API `System.IO.Compression` je stabilní od .NET 4.5 a Aspose.HTML podporuje plný .NET Framework. Stačí odkazovat na odpovídající Aspose.HTML DLL. + +**Q: Můžu přidat další zdroje jako CSS nebo fonty?** +A: Rozhodně. Každý externí zdroj, na který HTML odkazuje, spustí `HandleResource`, takže se automaticky dostane do stejného zipu. + +**Q: Co když potřebuji jiný formát obrázku (např. JPEG)?** +A: Změňte konstruktor `ImageRenderer` na `JpegRenderer` nebo nastavte `ImageFormat` v `ImageRenderingOptions`. Zbytek pipeline zůstane stejný. + +**Q: Je zip chráněný heslem?** +A: Vestavěná třída `ZipArchive` nepodporuje šifrování. Pro takovou funkci zvažte knihovnu třetí strany, např. `SharpZipLib`, a upravte `ZipHandler` podle potřeby. + +--- + +## Závěr + +Nyní máte + +{{< /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/working-with-html-documents/_index.md b/html/czech/net/working-with-html-documents/_index.md index c00dc4697..187ffd2de 100644 --- a/html/czech/net/working-with-html-documents/_index.md +++ b/html/czech/net/working-with-html-documents/_index.md @@ -37,8 +37,11 @@ Jakmile pochopíte základy, ponoříme se hlouběji do procesu tvorby. V této Nyní posuňte vaše dovednosti na další úroveň. Úpravy HTML dokumentů jsou běžným úkolem webových vývojářů a Aspose.HTML tento proces výrazně zjednodušuje. V této části se budeme zabývat tvorbou dokumentu, manipulací s ním a stylováním. Zjistíte, jak vylepšit vzhled a funkčnost vašeho webového obsahu, aby byl poutavý a uživatelsky přívětivý. ### [Jak uložit HTML v C# – Kompletní průvodce pomocí vlastního resource handleru](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) + ### [Jak zvýraznit nadpis tučným písmem pomocí CSS a C# – Kompletní průvodce krok za krokem](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) +### [Jak uložit HTML v C# pomocí vlastního resource handleru](./how-to-save-html-in-c-with-custom-resource-handler/) + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/czech/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/czech/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..94ac864eb --- /dev/null +++ b/html/czech/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-02-14 +description: Naučte se, jak ukládat HTML pomocí Aspose.HTML v C#. Tento průvodce krok + za krokem ukazuje, jak zapisovat soubor HTML, načíst HTML ze řetězce, převést HTML + do souboru a použít vlastní manipulátor zdrojů. +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: cs +og_description: Jak rychle uložit HTML pomocí Aspose.HTML. Naučte se zapisovat HTML + soubor, načíst HTML ze řetězce, převést HTML na soubor a implementovat vlastní správce + zdrojů. +og_title: Jak uložit HTML v C# – Kompletní průvodce +tags: +- Aspose.HTML +- C# +- File I/O +title: Jak uložit HTML v C# s vlastním správcem zdrojů +url: /cs/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak uložit HTML v C# s vlastním Resource Handlerem + +Už jste se někdy zamysleli nad **jak uložit html** přímo ze stringu, aniž byste se dotkli disku? Nejste sami — mnoho vývojářů narazí na tento problém, když potřebují generovat zprávy za běhu nebo streamovat obsah do prohlížeče. Dobrou zprávou je, že Aspose.HTML dělá celý proces hračkou a můžete dokonce připojit vlastní logiku úložiště pomocí vlastního resource handleru. + +V tomto tutoriálu projdeme načítáním HTML ze stringu, konfigurací vlastního handleru a nakonec zápisem HTML do souboru. Na konci budete vědět, jak **zapsat html soubor**, jak **načíst html ze stringu**, jak **převést html do souboru**, a jak vytvořit **custom resource handler**, který vyhovuje jakémukoli scénáři úložiště. + +> **Co získáte:** kompletní, připravený k spuštění C# program, vysvětlení každého řádku a tipy, jak rozšířit řešení na cloudové úložiště nebo in‑memory pipeline. + +## Požadavky + +- .NET 6.0 nebo novější (API funguje stejně na .NET Framework 4.6+) +- NuGet balíček Aspose.HTML pro .NET (`Aspose.Html`) +- Základní znalost syntaxe C# (pokud vám vyhovují `using` příkazy, jste v pohodě) + +Žádné další konfigurační soubory nejsou potřeba — stačí nový konzolový projekt a níže uvedený kód. + + + +## Krok 1: Načíst HTML ze stringu (část “load html from string”) + +Nejprve potřebujeme instanci `HTMLDocument`. Aspose.HTML vám umožní předat surový markup přímo do konstruktoru, což znamená, že můžete **načíst html ze stringu** bez jakýchkoli mezi souborů. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +Waarom `HTMLDocument` en niet een gewone string? Aspose parseert de markup, bouwt een DOM en past CSS exact toe zoals een browser dat zou doen. Dat is de kern van **hoe html renderen** correct, vooral wanneer je later externe stylesheets of door JavaScript gegenereerde inhoud toevoegt. + +## Stap 3 – Configureer afbeeldingsrenderopties (HTML naar afbeelding converteren) + +Vervolgens vertellen we de renderer welke grootte, achtergrond en kwaliteit we willen. Deze instellingen beïnvloeden direct de uiteindelijke PNG, dus pas ze aan op je gebruikssituatie. + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*Randgeval:* Als je een transparante achtergrond nodig hebt (bijv. voor overlay‑thumbnails), stel `BackgroundColor = Color.Transparent` in en zorg dat het uitvoerformaat alfa ondersteunt (PNG doet dat). + +## Stap 4 – Pas globale lettertype‑opties toe (Optioneel maar handig) + +Soms wil je dat elk stuk tekst in het document vet, cursief of een bepaald web‑font is. Aspose laat je `DefaultFontOptions` op het document instellen. + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +Dit is een snelle manier om **HTML naar afbeelding te converteren** met een uniforme stijl, zonder elk element‑CSS aan te passen. Als je later externe CSS laadt die een eigen `font-weight` instelt, zullen die regels de globale instelling overschrijven — precies zoals een browser zich gedraagt. + +## Stap 5 – Render en sla de PNG op (HTML als PNG opslaan) + +Nu gebeurt het zware werk. We maken een `ImageRenderer`, wijzen deze op het `HTMLDocument`, geven de output‑stream door, en roepen `Render()` aan. + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +De oproep is synchroon en blokkeert tot de afbeelding volledig is weggeschreven. Voor grote pagina's wil je het misschien op een achtergrondthread uitvoeren, maar voor de meeste thumbnail‑generatiesituaties is de blokkerende oproep prima. + +**Verwacht resultaat:** een bestand genaamd `output.png` (800 × 600) met het woord “Bold text” in zwart, vetgedrukt lettertype op een wit canvas. + +## Stap 6 – Controleer de output (HTML naar PNG checklist) + +Nadat de code is uitgevoerd, open je de PNG in een willekeurige afbeeldingsviewer. Je zou moeten zien: + +- De exacte afmetingen die je hebt ingesteld (`Width` × `Height`). +- Witte achtergrond (of transparant als je dat hebt aangepast). +- Vetgedrukte tekst netjes gerenderd, dankzij antialiasing en hinting. + +Als de tekst er wazig uitziet, controleer dan `UseAntialiasing` en `UseHinting`. Als het bestand ontbreekt, zorg dan dat het proces schrijfrechten heeft op de doelmap. + +### Veelgestelde vragen & randgevallen + +| Vraag | Antwoord | +|-------|----------| +| **Kan ik een volledige webpagina met externe CSS/JS renderen?** | Ja. Laad de HTML van een URL (`new HTMLDocument("https://example.com")`) of lees het bestand van schijf, en Aspose haalt gekoppelde stylesheets automatisch op (mits ze bereikbaar zijn). | +| **Wat als ik een hogere DPI nodig heb voor print?** | Stel `renderingOptions.DpiX` en `renderingOptions.DpiY` in (standaard is 96). Een hogere DPI levert grotere bestanden maar scherpere output op. | +| **Hoe ga ik om met SVG‑ of Canvas‑elementen?** | Aspose.HTML ondersteunt SVG natively. Canvas wordt gerenderd op basis van de JavaScript die tijdens de layout wordt uitgevoerd, dus zorg dat je script‑executie inschakelt (`htmlDocument.EnableJavaScript = true`). | +| **Is er een manier om veel HTML‑bestanden in batch te converteren?** | Plaats de renderlogica in een `foreach`‑lus en hergebruik dezelfde `ImageRenderingOptions`‑instantie voor snelheid. | +| **Kan ik JPEG in plaats van PNG outputten?** | Gebruik `JpegRenderingOptions` en wijzig de bestandsextensie naar `.jpg`. De rest van de code blijft gelijk. | + +## Volledig werkend voorbeeld (Alle stappen in één bestand) + +Hieronder vind je het complete, kant‑en‑klaar programma. Het compileert met `dotnet run` en produceert de hierboven beschreven PNG. + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +Voer het programma uit, en je ziet een console‑bericht dat de creatie van het bestand bevestigt. Open `output.png` en controleer de vetgedrukte tekst — voilà, je hebt zojuist **HTML als PNG opgeslagen**. + +{{< /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..25e0bb508 100644 --- a/html/dutch/net/rendering-html-documents/_index.md +++ b/html/dutch/net/rendering-html-documents/_index.md @@ -42,25 +42,37 @@ Nu u Aspose.HTML voor .NET hebt ingesteld, is het tijd om de tutorials te verken ### [HTML als PNG renderen in .NET met Aspose.HTML](./render-html-as-png/) Leer werken met Aspose.HTML voor .NET: HTML manipuleren, converteren naar verschillende formaten en meer. Duik in deze uitgebreide tutorial! + ### [HTML als PNG renderen – Complete C#-gids](./how-to-render-html-as-png-complete-c-guide/) Leer stap voor stap hoe u HTML naar PNG converteert met C# en Aspose.HTML in deze volledige gids. + ### [EPUB renderen als XPS in .NET met Aspose.HTML](./render-epub-as-xps/) Leer hoe u HTML-documenten kunt maken en renderen met Aspose.HTML voor .NET in deze uitgebreide tutorial. Duik in de wereld van HTML-manipulatie, webscraping en meer. + ### [Rendering Timeout in .NET met Aspose.HTML](./rendering-timeout/) Leer hoe u renderingtime‑outs effectief kunt beheren in Aspose.HTML voor .NET. Verken renderingopties en zorg voor soepele rendering van HTML-documenten. + ### [MHTML renderen als XPS in .NET met Aspose.HTML](./render-mhtml-as-xps/) Leer MHTML als XPS renderen in .NET met Aspose.HTML. Verbeter uw HTML-manipulatievaardigheden en geef uw webontwikkelingsprojecten een boost! + ### [Render meerdere documenten in .NET met Aspose.HTML](./render-multiple-documents/) Leer hoe u meerdere HTML-documenten kunt renderen met Aspose.HTML voor .NET. Verbeter uw documentverwerkingsmogelijkheden met deze krachtige bibliotheek. + ### [SVG-document renderen als PNG in .NET met Aspose.HTML](./render-svg-doc-as-png/) Ontgrendel de kracht van Aspose.HTML voor .NET! Leer hoe u moeiteloos SVG Doc als PNG kunt renderen. Duik in stapsgewijze voorbeelden en FAQ's. Ga nu aan de slag! + ### [Hoe Aspose te gebruiken voor het renderen van HTML naar PNG – Stapsgewijze gids](./how-to-use-aspose-to-render-html-to-png-step-by-step-guide/) Leer hoe u met Aspose.HTML HTML naar PNG kunt renderen met een duidelijke stap‑voor‑stap handleiding. + ### [Hoe HTML te renderen naar PNG met Aspose – Complete gids](./how-to-render-html-to-png-with-aspose-complete-guide/) 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. +### [HTML renderen naar PNG en opslaan in ZIP met C# – Complete gids](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +Leer stap voor stap hoe u HTML naar PNG converteert en de resultaten in een ZIP‑archief opslaat met C# en Aspose.HTML. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/dutch/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/dutch/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..60cf32d2e --- /dev/null +++ b/html/dutch/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-02-14 +description: Render HTML naar PNG in C# en leer hoe je HTML naar een afbeelding kunt + converteren, een stream naar ZIP kunt schrijven en snel een zip‑archief in C# kunt + maken. +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: nl +og_description: Render HTML naar PNG in C# en ontdek hoe je HTML naar afbeelding kunt + converteren, een stream naar ZIP kunt schrijven en efficiënt een zip-archief in + C# kunt maken. +og_title: HTML renderen naar PNG en opslaan in ZIP met C# – Complete gids +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: HTML renderen naar PNG en opslaan in ZIP met C# – Complete gids +url: /nl/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Render HTML naar PNG en opslaan in ZIP met C# – Complete gids + +Heb je ooit **HTML naar PNG renderen** nodig gehad, maar wist je niet hoe je de afbeelding en de originele markup samen kon houden? Je bent niet de enige—veel ontwikkelaars lopen tegen dat exacte obstakel aan bij het bouwen van rapportagetools, e‑mail‑miniaturen of offline documentatie‑bundels. + +Het goede nieuws? In deze tutorial lopen we stap voor stap door een enkele, zelfstandige oplossing die **HTML naar afbeelding converteert**, de resulterende stream in een ZIP‑bestand schrijft, en zelfs de bron‑HTML ernaast opslaat. Aan het einde heb je een uitvoerbaar programma dat alles van begin tot eind doet, en begrijp je waarom elk onderdeel belangrijk is. + +We zullen ook tips geven over **write stream to zip**, de nuances van **create zip archive c#** bespreken, en je laten zien hoe je **save html to zip** kunt doen zonder externe zip‑hulpmiddelen. Geen externe referenties nodig—alleen de code en de reden erachter. + +--- + +## Wat je nodig hebt + +- .NET 6.0 of hoger (de API werkt ook op .NET Core en .NET Framework) +- Aspose.HTML for .NET (het NuGet‑pakket `Aspose.Html`) – het verzorgt het zware werk van HTML‑rendering. +- Een beetje bekendheid met `System.IO.Compression` – we gebruiken de ingebouwde `ZipArchive`‑klasse. + +Dat is alles. Pak een teksteditor of Visual Studio, en laten we beginnen. + +--- + +## Stap 1: Een aangepaste ResourceHandler instellen om stream naar ZIP te schrijven + +Wanneer Aspose.HTML een document opslaat, vraagt het een `ResourceHandler` om een `Stream` waar elke bron (afbeeldingen, CSS, enz.) naartoe moet. Door `ResourceHandler` te subklassen kunnen we elke bron naar een **zip‑archief** sturen in plaats van naar het bestandssysteem. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**Waarom je dit zou willen:** Het HTML‑document in het geheugen houden betekent dat je later **save html to zip** kunt uitvoeren zonder opnieuw van de schijf te lezen. Het maakt ook unit‑testing een fluitje van een cent. + +--- + +## Stap 4: Render de HTML naar PNG en sla deze op in de ZIP + +Nu volgt het hart van de tutorial—het renderen van het document en het rechtstreeks in de archief‑stream plaatsen. + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### Verwacht resultaat + +Na afloop van het programma vind je een bestand genaamd `result.zip` in de map van de executable. Open het en je ziet: + +- **page.png** – een gerasterde snapshot van de HTML (onze **render html to png** output). +- **index.html** (of welke naam Aspose.HTML ook toekent) – de originele markup, waarmee we bevestigen dat we succesvol **save html to zip** hebben uitgevoerd. + +Je kunt de zip uitpakken met elke archiefbeheerder en de PNG bekijken om de renderkwaliteit te verifiëren. + +--- + +## Stap 5: Edge‑cases en veelvoorkomende valkuilen afhandelen + +| Situatie | Waar je op moet letten | Aanbevolen oplossing | +|----------|------------------------|----------------------| +| **Grote HTML‑pagina’s** | Het geheugenverbruik stijgt omdat we de volledige PNG in een `MemoryStream` houden. | Schakel over naar een tijdelijke bestands‑stream (`FileStream`) als de afbeelding enkele megabytes overschrijdt. | +| **Bestaand zip‑bestand** | Een zip openen in `Update`‑modus behoudt bestaande items, maar dubbele namen veroorzaken uitzonderingen. | Verwijder eerst het item: `zipArchive.GetEntry(name)?.Delete();` voordat je een nieuw item aanmaakt. | +| **Niet‑ondersteunde CSS** | Aspose.HTML kan sommige moderne CSS‑features negeren. | Test de rendering lokaal; gebruik inline‑stijlen voor kritieke layout. | +| **Thread‑veiligheid** | `ZipArchive` is niet thread‑safe. | Houd rendering en zippen op één thread, of gebruik aparte archieven per thread. | + +**Waarom dit belangrijk is:** De grenzen van **write stream to zip** kennen helpt je runtime‑crashes te vermijden en houdt je applicatie robuust wanneer je later tientallen pagina’s in batch verwerkt. + +--- + +## Stap 6: Volledig, kant‑klaar voorbeeld + +Hieronder staat het complete programma dat je kunt kopiëren‑plakken in een console‑project. Het bevat alle `using`‑directieven, commentaren en correcte disposals. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +Voer het programma uit (`dotnet run`) en je ziet een bevestigingsbericht. Open `result.zip` om te controleren dat beide bestanden aanwezig zijn. + +--- + +## Veelgestelde vragen (FAQ) + +**Q: Werkt dit op .NET Framework 4.7?** +A: Ja. De `System.IO.Compression`‑API is stabiel sinds .NET 4.5, en Aspose.HTML ondersteunt het volledige .NET Framework. Verwijs gewoon naar de juiste Aspose.HTML‑DLL. + +**Q: Kan ik meer bronnen toevoegen, zoals CSS of lettertypen?** +A: Absoluut. Elke externe bron die in de HTML wordt vermeld, triggert `HandleResource`, zodat ze automatisch in dezelfde zip terechtkomen. + +**Q: Wat als ik een ander afbeeldingsformaat nodig heb (bijv. JPEG)?** +A: Verander de `ImageRenderer`‑constructor naar een `JpegRenderer` of stel `ImageFormat` in via `ImageRenderingOptions`. De rest van de pijplijn blijft ongewijzigd. + +**Q: Is de zip met een wachtwoord beveiligd?** +A: De ingebouwde `ZipArchive` ondersteunt geen encryptie. Gebruik hiervoor een externe bibliotheek zoals `SharpZipLib` en pas de `ZipHandler` dienovereenkomstig aan. + +## Conclusie + +You now + +{{< /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/working-with-html-documents/_index.md b/html/dutch/net/working-with-html-documents/_index.md index 36eb73e4a..a88470dd6 100644 --- a/html/dutch/net/working-with-html-documents/_index.md +++ b/html/dutch/net/working-with-html-documents/_index.md @@ -37,6 +37,7 @@ Zodra u de basis onder de knie hebt, gaan we dieper in op het creatieproces. In Laten we nu uw vaardigheden naar een hoger niveau tillen. Het bewerken van HTML-documenten is een veelvoorkomende taak voor webontwikkelaars, en Aspose.HTML vereenvoudigt dit proces aanzienlijk. In deze sectie behandelen we het maken, manipuleren en stylen van documenten. U ontdekt hoe u het uiterlijk en de functionaliteit van uw webcontent kunt verbeteren, waardoor deze aantrekkelijk en gebruiksvriendelijk wordt. ### [HTML opslaan in C# – Complete gids met een aangepaste resourcehandler](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) +### [HTML opslaan in C# – Aangepaste resourcehandler](./how-to-save-html-in-c-with-custom-resource-handler/) ### [Koptekst vet maken met CSS & C# – Complete stapsgewijze handleiding](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) Leer hoe u met CSS en C# kopteksten vet maakt in een .NET‑applicatie, stap voor stap met voorbeeldcode. diff --git a/html/dutch/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/dutch/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..58675fb0f --- /dev/null +++ b/html/dutch/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-02-14 +description: Leer hoe je HTML kunt opslaan met Aspose.HTML in C#. Deze stapsgewijze + gids laat zien hoe je een HTML‑bestand schrijft, HTML vanuit een string laadt, HTML + naar een bestand converteert en een aangepaste resource‑handler gebruikt. +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: nl +og_description: Hoe html snel op te slaan met Aspose.HTML. Leer een html‑bestand te + schrijven, html vanuit een string te laden, html naar een bestand te converteren + en een aangepaste resource‑handler te implementeren. +og_title: Hoe HTML op te slaan in C# – Complete gids +tags: +- Aspose.HTML +- C# +- File I/O +title: Hoe HTML op te slaan in C# met een aangepaste resourcehandler +url: /nl/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe HTML opslaan in C# met een aangepaste resource‑handler + +Heb je je ooit afgevraagd **hoe je html** direct vanuit een string kunt opslaan zonder eerst naar de schijf te schrijven? Je bent niet de enige—veel ontwikkelaars lopen tegen dit probleem aan wanneer ze rapporten on‑the‑fly moeten genereren of content naar een browser moeten streamen. Het goede nieuws is dat Aspose.HTML het hele proces kinderspel maakt, en je kunt zelfs je eigen opslaglogica aansluiten met een aangepaste resource‑handler. + +In deze tutorial lopen we door het laden van HTML vanuit een string, het configureren van een aangepaste handler, en uiteindelijk het wegschrijven van de HTML naar een bestand. Aan het einde weet je hoe je een **html‑bestand schrijft**, hoe je **html vanuit string laadt**, hoe je **html naar bestand converteert**, en hoe je een **aangepaste resource‑handler** maakt die in elke opslagsituatie past. + +> **Wat je krijgt:** een compleet, kant‑klaar C#‑programma, uitleg van elke regel, en tips om de oplossing uit te breiden naar cloud‑opslag of in‑memory pipelines. + +## Vereisten + +- .NET 6.0 of later (de API werkt hetzelfde op .NET Framework 4.6+) +- Aspose.HTML for .NET NuGet‑pakket (`Aspose.Html`) +- Een basisbegrip van C#‑syntaxis (als je vertrouwd bent met `using`‑statements, ben je klaar) + +Er zijn geen extra configuratie‑bestanden nodig—alleen een nieuw console‑project en de onderstaande code. + + + +## Stap 1: HTML laden vanuit een string (het “load html from string”‑deel) + +Allereerst hebben we een `HTMLDocument`‑instantie nodig. Aspose.HTML laat je ruwe markup direct in de constructor voeren, wat betekent dat je **html vanuit string kunt laden** zonder tussenliggende bestanden. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +Why `HTMLDocument` and not a plain string? Aspose parses the markup, builds a DOM, and applies CSS exactly like a browser would. That’s the core of **how to render html** correctly, especially when you later add external stylesheets or JavaScript‑generated content. + +## Step 3 – Configure Image Rendering Options (Convert HTML to Image) + +Next we tell the renderer what size, background, and quality we want. These settings directly affect the final PNG, so tweak them to match your use case. + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*Edge case:* If you need a transparent background (e.g., for overlay thumbnails), set `BackgroundColor = Color.Transparent` and make sure the output format supports alpha (PNG does). + +## Step 4 – Apply Global Font Options (Optional but Handy) + +Sometimes you want every piece of text in the document to be bold, italic, or a particular web font. Aspose lets you set `DefaultFontOptions` on the document. + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +This is a quick way to **convert HTML to image** with a uniform style, without touching each element’s CSS. If you later load external CSS that sets its own `font-weight`, those rules will override the global setting—exactly how a browser behaves. + +## Step 5 – Render and Save the PNG (Save HTML as PNG) + +Now the heavy lifting happens. We create an `ImageRenderer`, point it at the `HTMLDocument`, feed it the output stream, and call `Render()`. + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +The call is synchronous and blocks until the image is fully written. For large pages you might want to run it on a background thread, but for most thumbnail‑generation scenarios the blocking call is fine. + +**Expected result:** a file named `output.png` (800 × 600) containing the word “Bold text” in black, bold‑styled font on a white canvas. + +## Step 6 – Verify the Output (Render HTML to PNG Checklist) + +After the code runs, open the PNG in any image viewer. You should see: + +- The exact dimensions you set (`Width` × `Height`). +- White background (or transparent if you changed it). +- Bold text rendered cleanly, thanks to antialiasing and hinting. + +If the text looks fuzzy, double‑check `UseAntialiasing` and `UseHinting`. If the file is missing, ensure the process has write permission to the target folder. + +### Common Questions & Edge Cases + +| Question | Answer | +|----------|--------| +| **Can I render a full webpage with external CSS/JS?** | Yes. Load the HTML from a URL (`new HTMLDocument("https://example.com")`) or read the file from disk, and Aspose will fetch linked stylesheets automatically (provided they’re reachable). | +| **What if I need a higher DPI for print?** | Set `renderingOptions.DpiX` and `renderingOptions.DpiY` (default is 96). Higher DPI yields larger files but sharper output. | +| **How do I handle SVG or Canvas elements?** | Aspose.HTML supports SVG natively. Canvas is rendered based on the JavaScript executed during layout, so make sure you enable script execution (`htmlDocument.EnableJavaScript = true`). | +| **Is there a way to batch‑convert many HTML files?** | Wrap the rendering logic in a `foreach` loop, re‑using the same `ImageRenderingOptions` instance for speed. | +| **Can I output JPEG instead of PNG?** | Use `JpegRenderingOptions` and change the file extension to `.jpg`. The rest of the code stays the same. | + +## Full Working Example (All Steps in One File) + +Below is the complete, copy‑paste‑ready program. It compiles with `dotnet run` and produces the PNG described above. + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +Run the program, and you’ll see the console message confirming the file’s creation. Open `output.png` and verify the bold text—voilà, you’ve just **saved HTML as PNG + +{{< /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..6ba6cea41 100644 --- a/html/english/net/rendering-html-documents/_index.md +++ b/html/english/net/rendering-html-documents/_index.md @@ -60,6 +60,9 @@ Learn how to control rendering timeouts effectively in Aspose.HTML for .NET. Exp Learn to render multiple HTML documents using Aspose.HTML for .NET. Boost your document processing capabilities with this powerful library. ### [Render SVG Doc as PNG in .NET with Aspose.HTML](./render-svg-doc-as-png/) Unlock the power of Aspose.HTML for .NET! Learn how to Render SVG Doc as PNG effortlessly. Dive into step-by-step examples and FAQs. Get started now! +### [Render HTML to PNG and Save to ZIP with C# – Complete Guide](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +Step-by-step guide to render HTML to PNG and package the images into a ZIP file using C# and Aspose.HTML for .NET. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/english/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/english/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..225ef090c --- /dev/null +++ b/html/english/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-02-14 +description: Render HTML to PNG in C# and learn how to convert HTML to image, write + stream to ZIP, and create a zip archive C# quickly. +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: en +og_description: Render HTML to PNG in C# and discover how to convert HTML to image, + write stream to ZIP, and create a zip archive C# efficiently. +og_title: Render HTML to PNG and Save to ZIP with C# – Complete Guide +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: Render HTML to PNG and Save to ZIP with C# – Complete Guide +url: /net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Render HTML to PNG and Save to ZIP with C# – Complete Guide + +Ever needed to **render HTML to PNG** but weren’t sure how to keep the image and the original markup together? You’re not alone—many developers hit that exact roadblock when building reporting tools, email thumbnails, or offline documentation bundles. + +The good news? In this tutorial we’ll walk through a single, self‑contained solution that **converts HTML to image**, writes the resulting stream into a ZIP file, and even stores the source HTML alongside it. By the end, you’ll have a runnable program that does everything from start to finish, and you’ll understand why each piece matters. + +We’ll also sprinkle in tips on **write stream to zip**, discuss the nuances of **create zip archive c#**, and show you how to **save html to zip** without any third‑party zip utilities. No external references required—just the code and the reasoning behind it. + +--- + +## What You’ll Need + +- .NET 6.0 or later (the API works on .NET Core and .NET Framework as well) +- Aspose.HTML for .NET (the NuGet package `Aspose.Html`) – it handles the heavy lifting of HTML rendering. +- A little familiarity with `System.IO.Compression` – we’ll use the built‑in `ZipArchive` class. + +That’s it. Grab a text editor or Visual Studio, and let’s dive in. + +--- + +## Step 1: Set Up a Custom ResourceHandler to Write Stream to ZIP + +When Aspose.HTML saves a document, it asks a `ResourceHandler` for a `Stream` where each resource (images, CSS, etc.) should go. By subclassing `ResourceHandler` we can direct every resource into a **zip archive** instead of the file system. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**Why you might care:** Keeping the HTML in memory means you can **save html to zip** later without reading from disk again. It also makes unit testing a breeze. + +--- + +## Step 4: Render the HTML to PNG and Store It in the ZIP + +Now comes the heart of the tutorial—rendering the document and feeding the resulting stream straight into the archive. + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### Expected Result + +After the program finishes, you’ll find a file called `result.zip` in the executable’s folder. Open it and you’ll see: + +- **page.png** – a rasterized snapshot of the HTML (our **render html to png** output). +- **index.html** (or whatever name Aspose.HTML assigns) – the original markup, confirming that we successfully **save html to zip**. + +You can extract the zip with any archive manager and view the PNG to verify the rendering quality. + +--- + +## Step 5: Handling Edge Cases and Common Pitfalls + +| Situation | What to Watch For | Recommended Fix | +|-----------|-------------------|-----------------| +| **Large HTML pages** | Memory consumption spikes because we keep the whole PNG in a `MemoryStream`. | Switch to a temporary file stream (`FileStream`) if the image exceeds a few megabytes. | +| **Existing zip file** | Opening a zip in `Update` mode will preserve existing entries, but duplicate names cause exceptions. | Delete the entry first: `zipArchive.GetEntry(name)?.Delete();` before creating a new one. | +| **Unsupported CSS** | Aspose.HTML may ignore some modern CSS features. | Test the rendering locally; fallback to inline styles for critical layout. | +| **Thread safety** | `ZipArchive` isn’t thread‑safe. | Keep rendering and zipping on a single thread or use separate archives per thread. | + +**Why these matter:** Knowing the limits of **write stream to zip** helps you avoid runtime crashes and keeps your application robust when you later scale to batch‑process dozens of pages. + +--- + +## Step 6: Full, Ready‑to‑Run Sample + +Below is the complete program you can copy‑paste into a console project. It includes all using directives, comments, and proper disposal patterns. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +Run the program (`dotnet run`) and you’ll see the confirmation message. Open `result.zip` to confirm both files are present. + +--- + +## Frequently Asked Questions (FAQ) + +**Q: Does this work on .NET Framework 4.7?** +A: Yes. The `System.IO.Compression` API has been stable since .NET 4.5, and Aspose.HTML supports the full .NET Framework. Just reference the appropriate Aspose.HTML DLL. + +**Q: Can I add more resources like CSS or fonts?** +A: Absolutely. Any external resource referenced by the HTML will trigger `HandleResource`, so they’ll automatically end up in the same zip. + +**Q: What if I need a different image format (e.g., JPEG)?** +A: Change the `ImageRenderer` constructor to target a `JpegRenderer` or set `ImageFormat` in `ImageRenderingOptions`. The rest of the pipeline stays the same. + +**Q: Is the zip password‑protected?** +A: The built‑in `ZipArchive` doesn’t support encryption. For that, consider a third‑party library like `SharpZipLib` and adapt the `ZipHandler` accordingly. + +--- + +## Conclusion + +You now + +{{< /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/working-with-html-documents/_index.md b/html/english/net/working-with-html-documents/_index.md index 7fb231926..794c101b7 100644 --- a/html/english/net/working-with-html-documents/_index.md +++ b/html/english/net/working-with-html-documents/_index.md @@ -37,6 +37,9 @@ Once you've grasped the basics, we'll delve deeper into the creation process. In Now, let's take your skills to the next level. Editing HTML documents is a common task for web developers, and Aspose.HTML simplifies this process significantly. In this section, we'll cover document creation, manipulation, and styling. You'll discover how to enhance the appearance and functionality of your web content, making it engaging and user-friendly. ### [How to Save HTML in C# – Complete Guide Using a Custom Resource Handler](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) + +### [How to Save HTML in C# with Custom Resource Handler](./how-to-save-html-in-c-with-custom-resource-handler/) + ### [How to Bold Heading with CSS & C# – Complete Step‑by‑Step Guide](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/english/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/english/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..1a4c00eeb --- /dev/null +++ b/html/english/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-02-14 +description: Learn how to save html using Aspose.HTML in C#. This step‑by‑step guide + shows how to write html file, load html from string, convert html to file, and use + a custom resource handler. +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: en +og_description: How to save html quickly with Aspose.HTML. Learn to write html file, + load html from string, convert html to file, and implement a custom resource handler. +og_title: How to Save HTML in C# – Complete Guide +tags: +- Aspose.HTML +- C# +- File I/O +title: How to Save HTML in C# with Custom Resource Handler +url: /net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Save HTML in C# with Custom Resource Handler + +Ever wondered **how to save html** directly from a string without touching the disk first? You're not alone—many developers hit this snag when they need to generate reports on the fly or stream content to a browser. The good news is that Aspose.HTML makes the whole process a piece of cake, and you can even plug in your own storage logic with a custom resource handler. + +In this tutorial we'll walk through loading HTML from a string, configuring a custom handler, and finally writing the HTML to a file. By the end you’ll know how to **write html file**, how to **load html from string**, how to **convert html to file**, and how to craft a **custom resource handler** that fits any storage scenario. + +> **What you’ll get:** a complete, ready‑to‑run C# program, explanations of every line, and tips for extending the solution to cloud storage or in‑memory pipelines. + +## Prerequisites + +- .NET 6.0 or later (the API works the same on .NET Framework 4.6+) +- Aspose.HTML for .NET NuGet package (`Aspose.Html`) +- A basic understanding of C# syntax (if you’re comfortable with `using` statements, you’re good) + +No extra configuration files are needed—just a fresh console project and the code below. + + + +## Step 1: Load HTML from a String (the “load html from string” part) + +First things first—we need an `HTMLDocument` instance. Aspose.HTML lets you feed raw markup directly into the constructor, which means you can **load html from string** without any intermediate files. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +Pourquoi `HTMLDocument` et pas une simple chaîne ? Aspose analyse le balisage, construit un DOM et applique le CSS exactement comme le ferait un navigateur. C’est le cœur de **comment rendre le HTML** correctement, surtout lorsque vous ajoutez plus tard des feuilles de style externes ou du contenu généré par JavaScript. + +## Étape 3 – Configurer les options de rendu d’image (Convertir HTML en image) + +Ensuite, nous indiquons au moteur de rendu la taille, l’arrière‑plan et la qualité souhaités. Ces paramètres influencent directement le PNG final, alors ajustez‑les selon votre cas d’utilisation. + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*Cas particulier :* si vous avez besoin d’un arrière‑plan transparent (par ex., pour des miniatures superposées), définissez `BackgroundColor = Color.Transparent` et assurez‑vous que le format de sortie prend en charge l’alpha (PNG le fait). + +## Étape 4 – Appliquer des options de police globales (Optionnel mais pratique) + +Parfois, vous voulez que chaque morceau de texte du document soit gras, italique ou utilise une police web particulière. Aspose vous permet de définir `DefaultFontOptions` sur le document. + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +C’est un moyen rapide de **convertir HTML en image** avec un style uniforme, sans toucher au CSS de chaque élément. Si vous chargez plus tard un CSS externe qui définit son propre `font-weight`, ces règles remplaceront le paramètre global — exactement comme le fait un navigateur. + +## Étape 5 – Rendre et enregistrer le PNG (Enregistrer le HTML en PNG) + +Maintenant, le travail lourd commence. Nous créons un `ImageRenderer`, le pointons vers le `HTMLDocument`, lui fournissons le flux de sortie, puis appelons `Render()`. + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +L’appel est synchrone et bloque jusqu’à ce que l’image soit entièrement écrite. Pour les pages volumineuses, vous pourriez vouloir l’exécuter sur un thread d’arrière‑plan, mais pour la plupart des scénarios de génération de miniatures, l’appel bloquant convient. + +**Résultat attendu :** un fichier nommé `output.png` (800 × 600) contenant le mot « Bold text » en noir, police en gras, sur un canevas blanc. + +## Étape 6 – Vérifier la sortie (Checklist de rendu HTML en PNG) + +Après l’exécution du code, ouvrez le PNG avec n’importe quel visualiseur d’images. Vous devriez voir : + +- Les dimensions exactes que vous avez définies (`Width` × `Height`). +- Un arrière‑plan blanc (ou transparent si vous l’avez modifié). +- Le texte en gras rendu proprement, grâce à l’antialiasing et au hinting. + +Si le texte apparaît flou, revérifiez `UseAntialiasing` et `UseHinting`. Si le fichier est absent, assurez‑vous que le processus possède les droits d’écriture sur le dossier cible. + +### Questions fréquentes et cas particuliers + +| Question | Réponse | +|----------|--------| +| **Puis‑je rendre une page web complète avec du CSS/JS externes ?** | Oui. Chargez le HTML depuis une URL (`new HTMLDocument("https://example.com")`) ou lisez le fichier depuis le disque, et Aspose récupérera automatiquement les feuilles de style liées (à condition qu’elles soient accessibles). | +| **Et si j’ai besoin d’une résolution DPI plus élevée pour l’impression ?** | Définissez `renderingOptions.DpiX` et `renderingOptions.DpiY` (la valeur par défaut est 96). Un DPI plus élevé produit des fichiers plus volumineux mais une sortie plus nette. | +| **Comment gérer les éléments SVG ou Canvas ?** | Aspose.HTML prend en charge le SVG nativement. Le Canvas est rendu en fonction du JavaScript exécuté pendant la mise en page, donc assurez‑vous d’activer l’exécution de scripts (`htmlDocument.EnableJavaScript = true`). | +| **Existe‑t‑il un moyen de convertir en lot de nombreux fichiers HTML ?** | Enveloppez la logique de rendu dans une boucle `foreach`, en réutilisant la même instance `ImageRenderingOptions` pour gagner en vitesse. | +| **Puis‑je générer du JPEG au lieu du PNG ?** | Utilisez `JpegRenderingOptions` et changez l’extension du fichier en `.jpg`. Le reste du code reste identique. | + +## Exemple complet fonctionnel (Toutes les étapes dans un seul fichier) + +Voici le programme complet, prêt à copier‑coller. Il se compile avec `dotnet run` et produit le PNG décrit ci‑dessus. + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +Exécutez le programme, et vous verrez le message console confirmant la création du fichier. Ouvrez `output.png` et vérifiez le texte en gras — voilà, vous venez **d’enregistrer le HTML en PNG**. + +{{< /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..e6d74852d 100644 --- a/html/french/net/rendering-html-documents/_index.md +++ b/html/french/net/rendering-html-documents/_index.md @@ -45,6 +45,7 @@ Apprenez à travailler avec Aspose.HTML pour .NET : manipulez du HTML, converti ### [Comment utiliser Aspose pour rendre du HTML en PNG – Guide étape par étape](./how-to-use-aspose-to-render-html-to-png-step-by-step-guide/) Apprenez à convertir du HTML en images PNG avec Aspose.HTML pour .NET grâce à ce guide détaillé étape par étape. + ### [Créer un PNG à partir de HTML – Guide complet de rendu C#](./create-png-from-html-full-c-rendering-guide/) Apprenez à générer des images PNG à partir de HTML en utilisant Aspose.HTML pour .NET avec un guide complet en C#. @@ -65,9 +66,13 @@ Libérez la puissance d'Aspose.HTML pour .NET ! Apprenez à restituer un docume ### [Comment rendre HTML au format PNG – Guide complet C#](./how-to-render-html-as-png-complete-c-guide/) Apprenez à convertir du HTML en PNG avec C# grâce à ce guide complet et pratique. + ### [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é. +### [Rendre le HTML en PNG et l'enregistrer dans un ZIP avec C# – Guide complet](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +Apprenez à convertir du HTML en images PNG puis à les compresser dans un fichier ZIP à l'aide de C# et Aspose.HTML. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/french/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/french/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..e14580ea0 --- /dev/null +++ b/html/french/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-02-14 +description: Rendre du HTML en PNG en C# et apprendre comment convertir du HTML en + image, écrire un flux dans un ZIP et créer rapidement une archive zip en C#. +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: fr +og_description: Rendre du HTML en PNG en C# et découvrir comment convertir du HTML + en image, écrire un flux dans un ZIP et créer une archive ZIP en C# efficacement. +og_title: Convertir le HTML en PNG et le sauvegarder dans un ZIP avec C# – Guide complet +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: Rendu du HTML en PNG et sauvegarde dans un ZIP avec C# – Guide complet +url: /fr/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Rendu HTML en PNG et sauvegarde dans un ZIP avec C# – Guide complet + +Vous avez déjà eu besoin de **render HTML to PNG** mais vous ne saviez pas comment garder l'image et le balisage original ensemble ? Vous n'êtes pas seul—de nombreux développeurs rencontrent exactement ce problème lorsqu'ils créent des outils de reporting, des miniatures d'e-mails ou des bundles de documentation hors ligne. + +Bonne nouvelle ? Dans ce tutoriel, nous allons parcourir une solution unique et autonome qui **converts HTML to image**, écrit le flux résultant dans un fichier ZIP, et stocke même le HTML source à côté. À la fin, vous disposerez d'un programme exécutable qui fait tout du début à la fin, et vous comprendrez pourquoi chaque élément est important. + +Nous ajouterons également des astuces sur **write stream to zip**, discuterons des nuances de **create zip archive c#**, et vous montrerons comment **save html to zip** sans aucune utilité zip tierce. Aucun référentiel externe requis—seulement le code et le raisonnement qui le sous-tend. + +--- + +## Ce dont vous avez besoin + +- .NET 6.0 ou ultérieur (l'API fonctionne également sur .NET Core et .NET Framework) +- Aspose.HTML for .NET (le package NuGet `Aspose.Html`) – il gère le travail lourd du rendu HTML. +- Une petite familiarité avec `System.IO.Compression` – nous utiliserons la classe intégrée `ZipArchive`. + +C’est tout. Prenez un éditeur de texte ou Visual Studio, et plongeons‑nous. + +--- + +## Étape 1 : Configurer un ResourceHandler personnalisé pour écrire le flux dans un ZIP + +Lorsque Aspose.HTML enregistre un document, il demande à un `ResourceHandler` un `Stream` où chaque ressource (images, CSS, etc.) doit être placée. En sous‑classant `ResourceHandler`, nous pouvons diriger chaque ressource vers une **zip archive** au lieu du système de fichiers. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**Pourquoi cela peut vous intéresser :** Garder le HTML en mémoire signifie que vous pouvez **save html to zip** plus tard sans relire le disque. Cela facilite également les tests unitaires. + +--- + +## Étape 4 : Rendre le HTML en PNG et le stocker dans le ZIP + +Voici le cœur du tutoriel—rendre le document et injecter le flux résultant directement dans l'archive. + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### Résultat attendu + +Après l'exécution du programme, vous trouverez un fichier nommé `result.zip` dans le dossier de l'exécutable. Ouvrez‑le et vous verrez : + +- **page.png** – une capture rasterisée du HTML (notre sortie **render html to png**). +- **index.html** (ou tout autre nom attribué par Aspose.HTML) – le balisage original, confirmant que nous avons bien **save html to zip**. + +Vous pouvez extraire le zip avec n'importe quel gestionnaire d'archives et visualiser le PNG pour vérifier la qualité du rendu. + +--- + +## Étape 5 : Gestion des cas limites et des pièges courants + +| Situation | À surveiller | Correction recommandée | +|-----------|--------------|------------------------| +| **Pages HTML volumineuses** | La consommation de mémoire augmente parce que nous conservons tout le PNG dans un `MemoryStream`. | Passer à un flux de fichier temporaire (`FileStream`) si l'image dépasse quelques mégaoctets. | +| **Fichier zip existant** | Ouvrir un zip en mode `Update` préservera les entrées existantes, mais les noms en double provoquent des exceptions. | Supprimez d'abord l'entrée : `zipArchive.GetEntry(name)?.Delete();` avant d'en créer une nouvelle. | +| **CSS non pris en charge** | Aspose.HTML peut ignorer certaines fonctionnalités CSS modernes. | Testez le rendu localement ; recourez aux styles en ligne pour la mise en page critique. | +| **Sécurité des threads** | `ZipArchive` n’est pas thread‑safe. | Effectuez le rendu et le zippage sur un seul thread ou utilisez des archives distinctes par thread. | + +**Pourquoi c’est important :** Connaître les limites de **write stream to zip** vous aide à éviter les plantages d’exécution et maintient votre application robuste lorsque vous passez à un traitement par lots de dizaines de pages. + +--- + +## Étape 6 : Exemple complet, prêt à l’exécution + +Ci‑dessous se trouve le programme complet que vous pouvez copier‑coller dans un projet console. Il inclut toutes les directives `using`, les commentaires, et les modèles de libération appropriés. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +Exécutez le programme (`dotnet run`) et vous verrez le message de confirmation. Ouvrez `result.zip` pour confirmer que les deux fichiers sont présents. + +--- + +## Questions fréquentes (FAQ) + +**Q : Cela fonctionne-t-il sur .NET Framework 4.7 ?** +R : Oui. L’API `System.IO.Compression` est stable depuis .NET 4.5, et Aspose.HTML prend en charge le .NET Framework complet. Référencez simplement le DLL Aspose.HTML approprié. + +**Q : Puis‑je ajouter d’autres ressources comme du CSS ou des polices ?** +R : Absolument. Toute ressource externe référencée par le HTML déclenchera `HandleResource`, elles seront donc automatiquement placées dans le même zip. + +**Q : Et si j’ai besoin d’un format d’image différent (par ex., JPEG) ?** +R : Modifiez le constructeur `ImageRenderer` pour viser un `JpegRenderer` ou définissez `ImageFormat` dans `ImageRenderingOptions`. Le reste du pipeline reste identique. + +**Q : Le zip est‑il protégé par mot de passe ?** +R : Le `ZipArchive` intégré ne supporte pas le chiffrement. Pour cela, envisagez une bibliothèque tierce comme `SharpZipLib` et adaptez le `ZipHandler` en conséquence. + +--- + +## Conclusion + +Vous avez maintenant + +{{< /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/working-with-html-documents/_index.md b/html/french/net/working-with-html-documents/_index.md index e18bb71d7..5753ded04 100644 --- a/html/french/net/working-with-html-documents/_index.md +++ b/html/french/net/working-with-html-documents/_index.md @@ -39,6 +39,9 @@ Maintenant, passons à un niveau supérieur de compétences. L'édition de docum ### [Comment enregistrer du HTML en C# – Guide complet avec un gestionnaire de ressources personnalisé](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) Apprenez à enregistrer du HTML en C# en utilisant un gestionnaire de ressources personnalisé pour contrôler le flux de sortie et les ressources liées. +### [Comment enregistrer du HTML en C# avec un gestionnaire de ressources personnalisé](./how-to-save-html-in-c-with-custom-resource-handler/) + +Apprenez à enregistrer du HTML en C# en utilisant un gestionnaire de ressources personnalisé pour contrôler le flux de sortie. ### [Comment mettre en gras un titre avec CSS & C# – Guide complet étape par étape](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/french/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/french/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..811ea82a1 --- /dev/null +++ b/html/french/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-02-14 +description: Apprenez à enregistrer du HTML avec Aspose.HTML en C#. Ce guide étape + par étape montre comment écrire un fichier HTML, charger du HTML à partir d’une + chaîne, convertir du HTML en fichier et utiliser un gestionnaire de ressources personnalisé. +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: fr +og_description: Comment enregistrer rapidement du HTML avec Aspose.HTML. Apprenez + à écrire un fichier HTML, charger du HTML à partir d’une chaîne, convertir du HTML + en fichier et implémenter un gestionnaire de ressources personnalisé. +og_title: Comment enregistrer du HTML en C# – Guide complet +tags: +- Aspose.HTML +- C# +- File I/O +title: Comment enregistrer du HTML en C# avec un gestionnaire de ressources personnalisé +url: /fr/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment enregistrer du HTML en C# avec un gestionnaire de ressources personnalisé + +Vous vous êtes déjà demandé **comment enregistrer du html** directement à partir d'une chaîne sans toucher d'abord au disque ? Vous n'êtes pas seul—de nombreux développeurs rencontrent ce problème lorsqu'ils doivent générer des rapports à la volée ou diffuser du contenu vers un navigateur. La bonne nouvelle, c'est qu'Aspose.HTML rend tout le processus très simple, et vous pouvez même brancher votre propre logique de stockage avec un gestionnaire de ressources personnalisé. + +Dans ce tutoriel, nous allons parcourir le chargement du HTML à partir d'une chaîne, la configuration d'un gestionnaire personnalisé, puis l'écriture du HTML dans un fichier. À la fin, vous saurez comment **write html file**, comment **load html from string**, comment **convert html to file**, et comment créer un **custom resource handler** qui s'adapte à n'importe quel scénario de stockage. + +> **Ce que vous obtiendrez :** un programme C# complet, prêt à l'exécution, des explications de chaque ligne, et des astuces pour étendre la solution au stockage cloud ou aux pipelines en mémoire. + +## Prérequis + +- .NET 6.0 ou ultérieur (l'API fonctionne de la même façon sur .NET Framework 4.6+) +- Package NuGet Aspose.HTML for .NET (`Aspose.Html`) +- Une compréhension de base de la syntaxe C# (si vous êtes à l'aise avec les instructions `using`, vous êtes bon) + +Aucun fichier de configuration supplémentaire n'est nécessaire—juste un nouveau projet console et le code ci‑dessous. + + + +## Étape 1 : Charger du HTML à partir d'une chaîne (la partie « load html from string ») + +Tout d'abord, nous avons besoin d'une instance `HTMLDocument`. Aspose.HTML vous permet d'alimenter le balisage brut directement dans le constructeur, ce qui signifie que vous pouvez **load html from string** sans aucun fichier intermédiaire. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +Warum `HTMLDocument` und nicht ein einfacher String? Aspose parsed das Markup, baut ein DOM auf und wendet CSS exakt so an, wie ein Browser es tun würde. Das ist das Kernstück, **wie man HTML korrekt rendert**, besonders wenn Sie später externe Stylesheets oder JavaScript‑generierten Inhalt hinzufügen. + +## Schritt 3 – Bild‑Rendering‑Optionen konfigurieren (HTML zu Bild konvertieren) + +Als Nächstes teilen wir dem Renderer mit, welche Größe, welchen Hintergrund und welche Qualität wir wünschen. Diese Einstellungen beeinflussen das endgültige PNG direkt, passen Sie sie also an Ihren Anwendungsfall an. + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*Sonderfall:* Wenn Sie einen transparenten Hintergrund benötigen (z. B. für Overlay‑Thumbnails), setzen Sie `BackgroundColor = Color.Transparent` und stellen Sie sicher, dass das Ausgabeformat Alpha unterstützt (PNG tut es). + +## Schritt 4 – Globale Schrift‑Optionen anwenden (Optional, aber nützlich) + +Manchmal möchte man, dass jeder Text im Dokument fett, kursiv oder in einer bestimmten Web‑Font dargestellt wird. Aspose lässt Sie `DefaultFontOptions` am Dokument setzen. + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +Damit haben Sie eine schnelle Möglichkeit, **HTML zu Bild zu konvertieren** mit einem einheitlichen Stil, ohne jedes Element‑CSS zu berühren. Laden Sie später ein externes CSS, das ein eigenes `font-weight` definiert, überschreiben diese Regeln die globale Einstellung – genau wie ein Browser. + +## Schritt 5 – Rendern und PNG speichern (HTML als PNG speichern) + +Jetzt wird’s ernst. Wir erstellen einen `ImageRenderer`, verweisen auf das `HTMLDocument`, übergeben den Ausgabestream und rufen `Render()` auf. + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +Der Aufruf ist synchron und blockiert, bis das Bild vollständig geschrieben ist. Bei sehr großen Seiten kann es sinnvoll sein, ihn in einem Hintergrund‑Thread auszuführen, aber für die meisten Thumbnail‑Szenarien ist der blockierende Aufruf ausreichend. + +**Erwartetes Ergebnis:** eine Datei namens `output.png` (800 × 600) mit dem Wort „Bold text“ in schwarzer, fetter Schrift auf einem weißen Canvas. + +## Schritt 6 – Ausgabe überprüfen (Checkliste: HTML zu PNG rendern) + +Nachdem der Code ausgeführt wurde, öffnen Sie das PNG in einem Bildbetrachter. Sie sollten sehen: + +- Die exakt von Ihnen festgelegten Abmessungen (`Width` × `Height`). +- Weißen Hintergrund (oder transparent, falls Sie ihn geändert haben). +- Fett gerenderten Text, sauber dank Antialiasing und Hinting. + +Sieht der Text unscharf aus, prüfen Sie `UseAntialiasing` und `UseHinting`. Fehlt die Datei, stellen Sie sicher, dass der Prozess Schreibrechte für den Zielordner hat. + +### Häufige Fragen & Sonderfälle + +| Frage | Antwort | +|----------|--------| +| **Kann ich eine komplette Webseite mit externem CSS/JS rendern?** | Ja. Laden Sie das HTML von einer URL (`new HTMLDocument("https://example.com")`) oder lesen Sie die Datei von der Festplatte, und Aspose holt verknüpfte Stylesheets automatisch (sofern sie erreichbar sind). | +| **Was, wenn ich eine höhere DPI für den Druck brauche?** | Setzen Sie `renderingOptions.DpiX` und `renderingOptions.DpiY` (Standard ist 96). Höhere DPI erzeugt größere Dateien, aber ein schärferes Ergebnis. | +| **Wie gehe ich mit SVG‑ oder Canvas‑Elementen um?** | Aspose.HTML unterstützt SVG nativ. Canvas wird basierend auf dem während des Layouts ausgeführten JavaScript gerendert, also aktivieren Sie die Skriptausführung (`htmlDocument.EnableJavaScript = true`). | +| **Gibt es eine Möglichkeit, viele HTML‑Dateien stapelweise zu konvertieren?** | Verpacken Sie die Rendering‑Logik in einer `foreach`‑Schleife und verwenden Sie dieselbe `ImageRenderingOptions`‑Instanz für mehr Geschwindigkeit. | +| **Kann ich JPEG statt PNG ausgeben?** | Verwenden Sie `JpegRenderingOptions` und ändern Sie die Dateierweiterung zu `.jpg`. Der Rest des Codes bleibt unverändert. | + +## Vollständiges funktionierendes Beispiel (Alle Schritte in einer Datei) + +Unten finden Sie das komplette, copy‑paste‑bereite Programm. Es lässt sich mit `dotnet run` kompilieren und erzeugt das oben beschriebene PNG. + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +Führen Sie das Programm aus, und Sie sehen die Konsolennachricht, die die Erstellung der Datei bestätigt. Öffnen Sie `output.png` und prüfen Sie den fetten Text – voilà, Sie haben gerade **HTML als PNG gespeichert**. + +{{< /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..f2bd95f86 100644 --- a/html/german/net/rendering-html-documents/_index.md +++ b/html/german/net/rendering-html-documents/_index.md @@ -24,9 +24,9 @@ Um zu beginnen, müssen Sie die Aspose.HTML-Bibliothek für .NET installieren un ## Warum Aspose.HTML für .NET wählen? -Aspose.HTML für .NET ist aufgrund seiner umfangreichen Funktionen, der hervorragenden Dokumentation und der aktiven Community-Unterstützung die erste Wahl für HTML-Rendering. Aus diesen Gründen sollten Sie es in Betracht ziehen: +Aspose.HTML für .NET ist aufgrund seiner umfangreichen Funktionen, der hervorragenden Dokumentation und der aktiven Community‑Unterstützung die erste Wahl für HTML-Rendering. Aus diesen Gründen sollten Sie es in Betracht ziehen: -- Leistungsstarkes Rendering: Aspose.HTML für .NET bietet hochwertige HTML-Rendering-Funktionen und sorgen dafür, dass Ihre Dokumente jedes Mal großartig aussehen. +- Leistungsstarkes Rendering: Aspose.HTML für .NET bietet hochwertige HTML-Rendering‑Funktionen und sorgen dafür, dass Ihre Dokumente jedes Mal großartig aussehen. - Benutzerfreundlichkeit: Die Bibliothek ist entwicklerfreundlich gestaltet und verfügt über eine unkomplizierte API und zahlreiche Beispiele als Orientierung. @@ -44,7 +44,8 @@ Nachdem Sie Aspose.HTML für .NET eingerichtet haben, ist es an der Zeit, die Tu Erfahren Sie, wie Sie mit Aspose.HTML für .NET arbeiten: HTML bearbeiten, in verschiedene Formate konvertieren und mehr. Tauchen Sie ein in dieses umfassende Tutorial! ### [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. +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. @@ -52,21 +53,25 @@ Erfahren Sie, wie Sie mit Aspose.HTML HTML‑Inhalte in PNG‑Bilder umwandeln Erfahren Sie, wie Sie HTML‑Inhalte mit Aspose in PNG‑Bilder umwandeln – ein vollständiger Leitfaden. ### [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. +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 und in ZIP speichern mit C# – Komplett‑Leitfaden](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML in PNG konvertieren und die Ergebnisse in einer ZIP‑Datei speichern – vollständige Anleitung. + ### [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. +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. ### [Rendering-Timeout in .NET mit Aspose.HTML](./rendering-timeout/) -Erfahren Sie, wie Sie Rendering-Timeouts in Aspose.HTML für .NET effektiv steuern. Erkunden Sie Rendering-Optionen und sorgen Sie für ein reibungsloses Rendering von HTML-Dokumenten. +Erfahren Sie, wie Sie Rendering-Timeouts in Aspose.HTML für .NET effektiv steuern. Erkunden Sie Rendering-Optionen und sorgen Sie für ein reibungsloses Rendering von HTML‑Dokumenten. ### [Rendern Sie MHTML als XPS in .NET mit Aspose.HTML](./render-mhtml-as-xps/) - Lernen Sie, MHTML mit Aspose.HTML in .NET als XPS zu rendern. Verbessern Sie Ihre HTML-Manipulationsfähigkeiten und steigern Sie Ihre Webentwicklungsprojekte! + Lernen Sie, MHTML mit Aspose.HTML in .NET als XPS zu rendern. Verbessern Sie Ihre HTML‑Manipulationsfähigkeiten und steigern Sie Ihre Webentwicklungsprojekte! ### [Rendern Sie mehrere Dokumente in .NET mit Aspose.HTML](./render-multiple-documents/) -Erfahren Sie, wie Sie mit Aspose.HTML für .NET mehrere HTML-Dokumente rendern. Steigern Sie Ihre Dokumentverarbeitungsfunktionen mit dieser leistungsstarken Bibliothek. +Erfahren Sie, wie Sie mit Aspose.HTML für .NET mehrere HTML‑Dokumente rendern. Steigern Sie Ihre Dokumentverarbeitungsfunktionen mit dieser leistungsstarken Bibliothek. ### [Rendern Sie SVG-Dokumente als PNG in .NET mit Aspose.HTML](./render-svg-doc-as-png/) -Entfesseln Sie die Leistungsfähigkeit von Aspose.HTML für .NET! Erfahren Sie, wie Sie SVG-Dokumente mühelos als PNG rendern. Tauchen Sie ein in Schritt‑für‑Schritt‑Beispiele und FAQs. Jetzt loslegen! +Entfesseln Sie die Leistungsfähigkeit von Aspose.HTML für .NET! Erfahren Sie, wie Sie SVG‑Dokumente mühelos als PNG rendern. Tauchen Sie ein in Schritt‑für‑Schritt‑Beispiele und FAQs. Jetzt loslegen! {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/german/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/german/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..754216c51 --- /dev/null +++ b/html/german/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,300 @@ +--- +category: general +date: 2026-02-14 +description: HTML in C# zu PNG rendern und lernen, wie man HTML in ein Bild konvertiert, + einen Stream in ein ZIP schreibt und schnell ein ZIP‑Archiv in C# erstellt. +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: de +og_description: HTML in C# zu PNG rendern und entdecken, wie man HTML in ein Bild + konvertiert, einen Stream in ein ZIP schreibt und effizient ein ZIP‑Archiv in C# + erstellt. +og_title: HTML in PNG rendern und mit C# in ZIP speichern – Vollständige Anleitung +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: HTML in PNG rendern und mit C# in ZIP speichern – Vollständiger Leitfaden +url: /de/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +legen Sie los." + +Then "## Step 1: Set Up a Custom ResourceHandler to Write Stream to ZIP" -> "## Schritt 1: Einen benutzerdefinierten ResourceHandler einrichten, um den Stream in ein ZIP zu schreiben" + +Paragraph. + +Then code block placeholder. + +Then "**Why this matters:** ..." translate. + +Continue similarly for each step. + +Make sure to keep markdown formatting. + +In tables, translate column headers and content. + +Proceed. + +At the end, keep the closing shortcodes. + +Let's craft final answer.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML zu PNG rendern und in ZIP speichern mit C# – Komplettanleitung + +Haben Sie jemals **HTML zu PNG rendern** müssen, waren sich aber nicht sicher, wie Sie das Bild und das ursprüngliche Markup zusammenhalten können? Sie sind nicht allein – viele Entwickler stoßen genau auf dieses Problem, wenn sie Reporting‑Tools, E‑Mail‑Thumbnails oder Offline‑Dokumentationspakete erstellen. + +Die gute Nachricht? In diesem Tutorial führen wir Sie Schritt für Schritt durch eine einzige, eigenständige Lösung, die **HTML in ein Bild konvertiert**, den resultierenden Stream in eine ZIP‑Datei schreibt und sogar das Quell‑HTML daneben speichert. Am Ende haben Sie ein lauffähiges Programm, das alles von Anfang bis Ende erledigt, und Sie verstehen, warum jedes Bauteil wichtig ist. + +Wir streuen außerdem Tipps zu **write stream to zip** ein, diskutieren die Feinheiten von **create zip archive c#** und zeigen Ihnen, wie Sie **save html to zip** ohne Drittanbieter‑ZIP‑Utilities durchführen können. Keine externen Referenzen nötig – nur der Code und die dahinterstehende Logik. + +--- + +## Was Sie benötigen + +- .NET 6.0 oder höher (die API funktioniert auch unter .NET Core und .NET Framework) +- Aspose.HTML für .NET (das NuGet‑Paket `Aspose.Html`) – übernimmt das schwere Heben beim HTML‑Rendering. +- Ein wenig Vertrautheit mit `System.IO.Compression` – wir verwenden die integrierte `ZipArchive`‑Klasse. + +Das war's. Öffnen Sie einen Texteditor oder Visual Studio und legen Sie los. + +--- + +## Schritt 1: Einen benutzerdefinierten ResourceHandler einrichten, um den Stream in ein ZIP zu schreiben + +Wenn Aspose.HTML ein Dokument speichert, fragt es einen `ResourceHandler` nach einem `Stream`, in den jede Ressource (Bilder, CSS usw.) geschrieben werden soll. Durch das Ableiten von `ResourceHandler` können wir jede Ressource in ein **ZIP‑Archiv** leiten, anstatt sie im Dateisystem abzulegen. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**Warum das relevant sein kann:** Das HTML im Speicher zu halten bedeutet, dass Sie später **save html to zip** können, ohne erneut von der Festplatte zu lesen. Es erleichtert zudem das Unit‑Testing enorm. + +--- + +## Schritt 4: Das HTML zu PNG rendern und im ZIP speichern + +Jetzt kommt das Herzstück des Tutorials – das Dokument rendern und den resultierenden Stream direkt in das Archiv schreiben. + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### Erwartetes Ergebnis + +Nachdem das Programm beendet ist, finden Sie eine Datei namens `result.zip` im Ordner der ausführbaren Datei. Öffnen Sie sie und Sie sehen: + +- **page.png** – ein gerasterter Schnappschuss des HTML (unsere **render html to png**‑Ausgabe). +- **index.html** (oder welchen Namen Aspose.HTML auch vergibt) – das ursprüngliche Markup, das bestätigt, dass wir erfolgreich **save html to zip** haben. + +Sie können das ZIP mit jedem Archiv‑Manager entpacken und das PNG ansehen, um die Rendering‑Qualität zu prüfen. + +--- + +## Schritt 5: Sonderfälle und häufige Stolperfallen behandeln + +| Situation | Worauf zu achten ist | Empfohlene Lösung | +|-----------|----------------------|-------------------| +| **Große HTML‑Seiten** | Der Speicherverbrauch steigt, weil das gesamte PNG in einem `MemoryStream` gehalten wird. | Auf einen temporären Dateistream (`FileStream`) umsteigen, wenn das Bild mehrere Megabyte überschreitet. | +| **Existierende ZIP‑Datei** | Das Öffnen eines ZIPs im `Update`‑Modus bewahrt vorhandene Einträge, aber doppelte Namen führen zu Ausnahmen. | Vor dem Erstellen eines neuen Eintrags den alten löschen: `zipArchive.GetEntry(name)?.Delete();`. | +| **Nicht unterstütztes CSS** | Aspose.HTML ignoriert manche modernen CSS‑Features. | Rendering lokal testen; bei kritischen Layout‑Elementen auf Inline‑Styles zurückgreifen. | +| **Thread‑Sicherheit** | `ZipArchive` ist nicht thread‑sicher. | Rendering und Zipping in einem einzigen Thread ausführen oder für jeden Thread ein separates Archiv verwenden. | + +**Warum das wichtig ist:** Das Wissen um die Grenzen von **write stream to zip** hilft Ihnen, Laufzeit‑Abstürze zu vermeiden und Ihre Anwendung robust zu halten, wenn Sie später dutzende Seiten stapelweise verarbeiten. + +--- + +## Schritt 6: Vollständiges, sofort ausführbares Beispiel + +Unten finden Sie das komplette Programm, das Sie in ein Konsolen‑Projekt kopieren‑und‑einfügen können. Es enthält alle `using`‑Direktiven, Kommentare und korrekte Entsorgungsmuster. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +Führen Sie das Programm (`dotnet run`) aus und Sie sehen die Bestätigungsnachricht. Öffnen Sie `result.zip`, um zu prüfen, dass beide Dateien vorhanden sind. + +--- + +## Häufig gestellte Fragen (FAQ) + +**F: Funktioniert das auch unter .NET Framework 4.7?** +A: Ja. Die `System.IO.Compression`‑API ist seit .NET 4.5 stabil, und Aspose.HTML unterstützt das vollständige .NET Framework. Binden Sie einfach die passende Aspose.HTML‑DLL ein. + +**F: Kann ich weitere Ressourcen wie CSS oder Schriftarten hinzufügen?** +A: Absolut. Jede externe Ressource, die vom HTML referenziert wird, löst `HandleResource` aus, sodass sie automatisch im selben ZIP landen. + +**F: Was, wenn ich ein anderes Bildformat (z. B. JPEG) benötige?** +A: Ändern Sie den Konstruktor von `ImageRenderer` zu einem `JpegRenderer` oder setzen Sie `ImageFormat` in `ImageRenderingOptions`. Der Rest der Pipeline bleibt unverändert. + +**F: Ist das ZIP passwortgeschützt?** +A: Das integrierte `ZipArchive` unterstützt keine Verschlüsselung. Dafür können Sie eine Drittanbieter‑Bibliothek wie `SharpZipLib` verwenden und den `ZipHandler` entsprechend anpassen. + +--- + +## Fazit + +Sie haben jetzt + +{{< /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/working-with-html-documents/_index.md b/html/german/net/working-with-html-documents/_index.md index 20ea4c9d7..1cf89fe5f 100644 --- a/html/german/net/working-with-html-documents/_index.md +++ b/html/german/net/working-with-html-documents/_index.md @@ -39,6 +39,11 @@ Lassen Sie uns nun Ihre Fähigkeiten auf die nächste Ebene bringen. Das Bearbei ### [HTML in C# speichern – Vollständige Anleitung mit benutzerdefiniertem Ressourcen-Handler](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) Erfahren Sie, wie Sie HTML in C# mit einem benutzerdefinierten Ressourcen-Handler speichern können. + +### [HTML in C# speichern – Anleitung mit benutzerdefiniertem Ressourcen-Handler](./how-to-save-html-in-c-with-custom-resource-handler/) + +Erfahren Sie, wie Sie HTML in C# mithilfe eines benutzerdefinierten Ressourcen-Handlers speichern. + ### [Überschrift mit CSS & C# fett formatieren – Komplett‑Schritt‑für‑Schritt‑Anleitung](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/german/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/german/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..182651eae --- /dev/null +++ b/html/german/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-02-14 +description: Erfahren Sie, wie Sie HTML mit Aspose.HTML in C# speichern. Diese Schritt‑für‑Schritt‑Anleitung + zeigt, wie man eine HTML‑Datei schreibt, HTML aus einem String lädt, HTML in eine + Datei konvertiert und einen benutzerdefinierten Ressourcen‑Handler verwendet. +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: de +og_description: Wie man HTML schnell mit Aspose.HTML speichert. Erfahren Sie, wie + man eine HTML‑Datei schreibt, HTML aus einem String lädt, HTML in eine Datei konvertiert + und einen benutzerdefinierten Ressourcen‑Handler implementiert. +og_title: Wie man HTML in C# speichert – Komplettanleitung +tags: +- Aspose.HTML +- C# +- File I/O +title: Wie man HTML in C# mit einem benutzerdefinierten Ressourcen‑Handler speichert +url: /de/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man HTML in C# mit benutzerdefiniertem Ressourcen-Handler speichert + +Haben Sie sich jemals gefragt, **wie man HTML** direkt aus einem String speichert, ohne zuerst die Festplatte zu berühren? Sie sind nicht allein – viele Entwickler stoßen auf dieses Problem, wenn sie Berichte on-the-fly erzeugen oder Inhalte an einen Browser streamen müssen. Die gute Nachricht ist, dass Aspose.HTML den gesamten Prozess zum Kinderspiel macht, und Sie können sogar Ihre eigene Speicherlogik mit einem benutzerdefinierten Ressourcen-Handler einbinden. + +In diesem Tutorial führen wir Sie durch das Laden von HTML aus einem String, das Konfigurieren eines benutzerdefinierten Handlers und schließlich das Schreiben des HTML in eine Datei. Am Ende wissen Sie, wie man **write html file**, **load html from string**, **convert html to file** und einen **custom resource handler** erstellt, der in jedes Speicherszenario passt. + +> **What you’ll get:** ein vollständiges, sofort ausführbares C#‑Programm, Erklärungen zu jeder Zeile und Tipps, wie Sie die Lösung auf Cloud‑Speicher oder In‑Memory‑Pipelines erweitern können. + +## Voraussetzungen + +- .NET 6.0 oder höher (die API funktioniert identisch auf .NET Framework 4.6+) +- Aspose.HTML für .NET NuGet‑Paket (`Aspose.Html`) +- Grundlegendes Verständnis der C#‑Syntax (wenn Sie mit `using`‑Anweisungen vertraut sind, sind Sie gut vorbereitet) + +Keine zusätzlichen Konfigurationsdateien sind nötig – einfach ein neues Konsolenprojekt und der untenstehende Code. + + + +## Schritt 1: HTML aus einem String laden (der „load html from string“-Teil) + +Zuerst benötigen wir eine `HTMLDocument`‑Instanz. Aspose.HTML ermöglicht es, rohes Markup direkt in den Konstruktor zu übergeben, was bedeutet, dass Sie **load html from string** ohne Zwischendateien ausführen können. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +Γιατί `HTMLDocument` και όχι απλή συμβολοσειρά; Το Aspose αναλύει το markup, δημιουργεί ένα DOM και εφαρμόζει το CSS ακριβώς όπως θα έκανε ένας φυλλομετρητής. Αυτό είναι το βασικό στοιχείο του **πώς να αποδώσετε html** σωστά, ειδικά όταν προσθέτετε εξωτερικά φύλλα στυλ ή περιεχόμενο που δημιουργείται από JavaScript. + +## Βήμα 3 – Ρύθμιση Επιλογών Απόδοσης Εικόνας (Μετατροπή HTML σε Εικόνα) + +Στη συνέχεια λέμε στον renderer ποιο μέγεθος, φόντο και ποιότητα θέλουμε. Αυτές οι ρυθμίσεις επηρεάζουν άμεσα το τελικό PNG, οπότε προσαρμόστε τις ανάλογα με την περίπτωση χρήσης. + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*Edge case:* Αν χρειάζεστε διαφανές φόντο (π.χ., για μικρογραφίες επικάλυψης), ορίστε `BackgroundColor = Color.Transparent` και βεβαιωθείτε ότι η μορφή εξόδου υποστηρίζει άλφα (το PNG το κάνει). + +## Βήμα 4 – Εφαρμογή Καθολικών Επιλογών Γραμματοσειράς (Προαιρετικό αλλά Χρήσιμο) + +Μερικές φορές θέλετε κάθε κομμάτι κειμένου στο έγγραφο να είναι έντονο, πλάγιο ή μια συγκεκριμένη web‑font. Το Aspose σας επιτρέπει να ορίσετε `DefaultFontOptions` στο έγγραφο. + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +Αυτή είναι ένας γρήγορος τρόπος για **μετατροπή HTML σε εικόνα** με ομοιόμορφο στυλ, χωρίς να αγγίζετε το CSS κάθε στοιχείου. Αν αργότερα φορτώσετε εξωτερικό CSS που ορίζει το δικό του `font-weight`, οι κανόνες αυτοί θα υπερισχύσουν της καθολικής ρύθμισης — ακριβώς όπως συμπεριφέρεται ένας φυλλομετρητής. + +## Βήμα 5 – Απόδοση και Αποθήκευση του PNG (Αποθήκευση HTML ως PNG) + +Τώρα γίνεται η βαριά δουλειά. Δημιουργούμε ένα `ImageRenderer`, το συνδέουμε με το `HTMLDocument`, του δίνουμε το ρεύμα εξόδου και καλούμε `Render()`. + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +Η κλήση είναι συγχρονισμένη και μπλοκάρει μέχρι η εικόνα να γραφτεί πλήρως. Για μεγάλες σελίδες μπορεί να θέλετε να το τρέξετε σε νήμα παρασκηνίου, αλλά για τις περισσότερες περιπτώσεις δημιουργίας μικρογραφιών η μπλοκαρισμένη κλήση είναι αποδεκτή. + +**Αναμενόμενο αποτέλεσμα:** ένα αρχείο με όνομα `output.png` (800 × 600) που περιέχει τη λέξη “Bold text” σε μαύρο, έντονο στυλ γραμματοσειράς πάνω σε λευκό καμβά. + +## Βήμα 6 – Επαλήθευση του Αποτελέσματος (Λίστα Ελέγχου Render HTML to PNG) + +Αφού τρέξει ο κώδικας, ανοίξτε το PNG σε οποιονδήποτε προβολέα εικόνων. Θα πρέπει να δείτε: + +- Τις ακριβείς διαστάσεις που ορίσατε (`Width` × `Height`). +- Λευκό φόντο (ή διαφανές αν το αλλάξατε). +- Έντονο κείμενο αποδομένο καθαρά, χάρη στην αντι-αλλασσόμενη και στην υποδείξη (antialiasing & hinting). + +Αν το κείμενο φαίνεται θολό, ελέγξτε ξανά το `UseAntialiasing` και το `UseHinting`. Αν λείπει το αρχείο, βεβαιωθείτε ότι η διαδικασία έχει δικαιώματα εγγραφής στον προορισμό. + +### Συχνές Ερωτήσεις & Edge Cases + +| Ερώτηση | Απάντηση | +|----------|--------| +| **Μπορώ να αποδώσω μια πλήρη ιστοσελίδα με εξωτερικό CSS/JS;** | Ναι. Φορτώστε το HTML από URL (`new HTMLDocument("https://example.com")`) ή διαβάστε το αρχείο από δίσκο, και το Aspose θα φέρει αυτόματα τα συνδεδεμένα φύλλα στυλ (εφόσον είναι προσβάσιμα). | +| **Τι κάνω αν χρειάζομαι υψηλότερο DPI για εκτύπωση;** | Ορίστε `renderingOptions.DpiX` και `renderingOptions.DpiY` (η προεπιλογή είναι 96). Μεγαλύτερο DPI δημιουργεί μεγαλύτερα αρχεία αλλά πιο οξεία απόδοση. | +| **Πώς διαχειρίζομαι στοιχεία SVG ή Canvas;** | Το Aspose.HTML υποστηρίζει SVG εγγενώς. Το Canvas αποδίδεται βάσει του JavaScript που εκτελείται κατά τη διάταξη, οπότε βεβαιωθείτε ότι έχετε ενεργοποιήσει την εκτέλεση script (`htmlDocument.EnableJavaScript = true`). | +| **Υπάρχει τρόπος να μετατρέψω μαζικά πολλά αρχεία HTML;** | Τυλίξτε τη λογική απόδοσης μέσα σε βρόχο `foreach`, επαναχρησιμοποιώντας την ίδια παρουσία `ImageRenderingOptions` για ταχύτητα. | +| **Μπορώ να εξάγω JPEG αντί για PNG;** | Χρησιμοποιήστε `JpegRenderingOptions` και αλλάξτε την επέκταση αρχείου σε `.jpg`. Το υπόλοιπο του κώδικα παραμένει το ίδιο. | + +## Πλήρες Παράδειγμα Εργασίας (Όλα τα Βήματα σε Ένα Αρχείο) + +Παρακάτω είναι το πλήρες, έτοιμο‑για‑αντιγραφή πρόγραμμα. Συγκεντώνεται με `dotnet run` και παράγει το PNG που περιγράφηκε παραπάνω. + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +Τρέξτε το πρόγραμμα και θα δείτε το μήνυμα στην κονσόλα που επιβεβαιώνει τη δημιουργία του αρχείου. Ανοίξτε το `output.png` και ελέγξτε το έντονο κείμενο — voilà, μόλις **αποθηκεύσατε HTML ως PNG**. + +{{< /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..c922839a2 100644 --- a/html/greek/net/rendering-html-documents/_index.md +++ b/html/greek/net/rendering-html-documents/_index.md @@ -60,6 +60,8 @@ url: /el/net/rendering-html-documents/ Μάθετε πώς να μετατρέψετε HTML σε PNG χρησιμοποιώντας το Aspose.HTML για .NET σε αυτόν τον πλήρη οδηγό. ### [Δημιουργία PNG από HTML – Πλήρης Οδηγός Απόδοσης C#](./create-png-from-html-full-c-rendering-guide/) Μάθετε πώς να δημιουργήσετε PNG από HTML χρησιμοποιώντας το Aspose.HTML για .NET με πλήρη οδηγό C#. +### [Απόδοση HTML σε PNG και αποθήκευση σε ZIP με C# – Πλήρης Οδηγός](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +Μάθετε πώς να μετατρέψετε HTML σε PNG και να το συμπιέσετε σε αρχείο ZIP χρησιμοποιώντας C# και Aspose.HTML. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/greek/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/greek/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..a82f2114e --- /dev/null +++ b/html/greek/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-02-14 +description: Απόδοση HTML σε PNG με C# και μάθετε πώς να μετατρέπετε HTML σε εικόνα, + να γράφετε ροή σε ZIP και να δημιουργείτε γρήγορα ένα αρχείο zip με C#. +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: el +og_description: Απόδοση HTML σε PNG με C# και ανακαλύψτε πώς να μετατρέψετε HTML σε + εικόνα, να γράψετε ροή σε ZIP και να δημιουργήσετε αρχείο zip με C# αποδοτικά. +og_title: Μετατροπή HTML σε PNG και αποθήκευση σε ZIP με C# – Πλήρης Οδηγός +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: Απόδοση HTML σε PNG και αποθήκευση σε ZIP με C# – Πλήρης Οδηγός +url: /el/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Μετατροπή HTML σε PNG και Αποθήκευση σε ZIP με C# – Πλήρης Οδηγός + +Έχετε ποτέ χρειαστεί να **render HTML to PNG** αλλά δεν ήσασταν σίγουροι πώς να διατηρήσετε την εικόνα και το αρχικό markup μαζί; Δεν είστε μόνοι—πολλοί προγραμματιστές αντιμετωπίζουν το ίδιο πρόβλημα όταν δημιουργούν εργαλεία αναφοράς, μικρογραφίες email ή πακέτα εκτός σύνδεσης τεκμηρίωσης. + +Τα καλά νέα; Σε αυτό το tutorial θα περάσουμε βήμα‑βήμα από μια ενιαία, αυτόνομη λύση που **converts HTML to image**, γράφει το προκύπτον stream σε αρχείο ZIP και ακόμη αποθηκεύει το πηγαίο HTML δίπλα του. Στο τέλος, θα έχετε ένα εκτελέσιμο πρόγραμμα που κάνει τα πάντα από την αρχή μέχρι το τέλος, και θα καταλάβετε γιατί κάθε μέρος είναι σημαντικό. + +Θα προσθέσουμε επίσης συμβουλές για **write stream to zip**, θα συζητήσουμε τις λεπτομέρειες του **create zip archive c#**, και θα σας δείξουμε πώς να **save html to zip** χωρίς καμία εξωτερική βιβλιοθήκη zip. Δεν απαιτούνται εξωτερικές αναφορές—μόνο ο κώδικας και η λογική πίσω από αυτό. + +--- + +## Τι Θα Χρειαστείτε + +- .NET 6.0 ή νεότερο (το API λειτουργεί επίσης σε .NET Core και .NET Framework) +- Aspose.HTML for .NET (το πακέτο NuGet `Aspose.Html`) – αναλαμβάνει τη βαριά δουλειά της απόδοσης HTML. +- Λίγη εξοικείωση με `System.IO.Compression` – θα χρησιμοποιήσουμε την ενσωματωμένη κλάση `ZipArchive`. + +Αυτό είναι όλο. Πάρτε έναν επεξεργαστή κειμένου ή το Visual Studio, και ας βουτήξουμε. + +--- + +## Βήμα 1: Ρύθμιση προσαρμοσμένου ResourceHandler για εγγραφή stream σε ZIP + +Όταν το Aspose.HTML αποθηκεύει ένα έγγραφο, ζητά από ένα `ResourceHandler` ένα `Stream` όπου θα τοποθετηθεί κάθε πόρος (εικόνες, CSS κ.λπ.). Με την υποκλάση του `ResourceHandler` μπορούμε να κατευθύνουμε κάθε πόρο σε ένα **zip archive** αντί για το σύστημα αρχείων. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**Γιατί μπορεί να σας ενδιαφέρει:** Η διατήρηση του HTML στη μνήμη σημαίνει ότι μπορείτε να **save html to zip** αργότερα χωρίς να διαβάσετε ξανά από το δίσκο. Επίσης κάνει τις μονάδες δοκιμών πολύ εύκολες. + +--- + +## Βήμα 4: Απόδοση του HTML σε PNG και Αποθήκευση του στο ZIP + +Τώρα έρχεται η καρδιά του tutorial—η απόδοση του εγγράφου και η τροφοδοσία του προκύπτοντος stream απευθείας στο αρχείο. + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### Αναμενόμενο Αποτέλεσμα + +Μετά την ολοκλήρωση του προγράμματος, θα βρείτε ένα αρχείο με όνομα `result.zip` στον φάκελο του εκτελέσιμου. Ανοίξτε το και θα δείτε: + +- **page.png** – ένα rasterized στιγμιότυπο του HTML (η έξοδος του **render html to png**). +- **index.html** (ή όποιο όνομα δίνει το Aspose.HTML) – το αρχικό markup, επιβεβαιώνοντας ότι καταφέραμε να **save html to zip**. + +Μπορείτε να εξάγετε το zip με οποιονδήποτε διαχειριστή αρχείων και να δείτε το PNG για να επαληθεύσετε την ποιότητα της απόδοσης. + +--- + +## Βήμα 5: Διαχείριση Ακραίων Περιπτώσεων και Συνηθισμένων Παγίδων + +| Κατάσταση | Τι να Προσέξετε | Προτεινόμενη Διόρθωση | +|-----------|-------------------|-----------------| +| **Large HTML pages** | Η κατανάλωση μνήμης αυξάνεται επειδή κρατάμε ολόκληρο το PNG σε ένα `MemoryStream`. | Αλλάξτε σε προσωρινό ρεύμα αρχείου (`FileStream`) αν η εικόνα υπερβαίνει μερικά megabytes. | +| **Existing zip file** | Το άνοιγμα ενός zip σε λειτουργία `Update` θα διατηρήσει τις υπάρχουσες καταχωρήσεις, αλλά τα διπλά ονόματα προκαλούν εξαιρέσεις. | Διαγράψτε πρώτα την καταχώρηση: `zipArchive.GetEntry(name)?.Delete();` πριν δημιουργήσετε μια νέα. | +| **Unsupported CSS** | Το Aspose.HTML μπορεί να αγνοήσει ορισμένα σύγχρονα χαρακτηριστικά CSS. | Δοκιμάστε την απόδοση τοπικά· εναλλακτικά χρησιμοποιήστε ενσωματωμένα στυλ για κρίσιμη διάταξη. | +| **Thread safety** | `ZipArchive` δεν είναι ασφαλές για πολλαπλά νήματα. | Κρατήστε την απόδοση και τη συμπίεση σε ένα μόνο νήμα ή χρησιμοποιήστε ξεχωριστά αρχεία zip ανά νήμα. | + +**Γιατί είναι σημαντικά:** Η γνώση των ορίων του **write stream to zip** σας βοηθά να αποφύγετε σφάλματα χρόνου εκτέλεσης και διατηρεί την εφαρμογή σας ανθεκτική όταν αργότερα κλιμακώσετε για επεξεργασία δεκάδων σελίδων. + +--- + +## Βήμα 6: Πλήρες, Έτοιμο‑για‑Εκτέλεση Παράδειγμα + +Παρακάτω είναι το πλήρες πρόγραμμα που μπορείτε να αντιγράψετε‑επικολλήσετε σε ένα κονσολικό project. Περιλαμβάνει όλες τις οδηγίες using, σχόλια και σωστά πρότυπα διαχείρισης πόρων. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +Εκτελέστε το πρόγραμμα (`dotnet run`) και θα δείτε το μήνυμα επιβεβαίωσης. Ανοίξτε το `result.zip` για να επιβεβαιώσετε ότι και τα δύο αρχεία υπάρχουν. + +--- + +## Συχνές Ερωτήσεις (FAQ) + +**Q: Λειτουργεί αυτό σε .NET Framework 4.7;** +A: Ναι. Το API `System.IO.Compression` είναι σταθερό από το .NET 4.5, και το Aspose.HTML υποστηρίζει πλήρως το .NET Framework. Απλώς αναφέρετε το κατάλληλο Aspose.HTML DLL. + +**Q: Μπορώ να προσθέσω περισσότερους πόρους όπως CSS ή γραμματοσειρές;** +A: Απόλυτα. Οποιοσδήποτε εξωτερικός πόρος αναφέρεται από το HTML θα ενεργοποιήσει το `HandleResource`, έτσι θα καταλήξουν αυτόματα στο ίδιο zip. + +**Q: Τι γίνεται αν χρειάζομαι διαφορετική μορφή εικόνας (π.χ., JPEG);** +A: Αλλάξτε τον κατασκευαστή `ImageRenderer` ώστε να στοχεύει σε `JpegRenderer` ή ορίστε `ImageFormat` στα `ImageRenderingOptions`. Το υπόλοιπο της αλυσίδας παραμένει το ίδιο. + +**Q: Το zip είναι προστατευμένο με κωδικό;** +A: Το ενσωματωμένο `ZipArchive` δεν υποστηρίζει κρυπτογράφηση. Για αυτό, σκεφτείτε μια εξωτερική βιβλιοθήκη όπως το `SharpZipLib` και προσαρμόστε το `ZipHandler` αναλόγως. + +--- + +## Συμπέρασμα + +Τώρα + +{{< /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/working-with-html-documents/_index.md b/html/greek/net/working-with-html-documents/_index.md index 1990362d0..9e69343dd 100644 --- a/html/greek/net/working-with-html-documents/_index.md +++ b/html/greek/net/working-with-html-documents/_index.md @@ -39,6 +39,11 @@ url: /el/net/working-with-html-documents/ ### [Πώς να αποθηκεύσετε HTML σε C# – Πλήρης οδηγός με χρήση προσαρμοσμένου διαχειριστή πόρων](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) Μάθετε πώς να αποθηκεύετε HTML σε C# χρησιμοποιώντας έναν προσαρμοσμένο διαχειριστή πόρων, βήμα-βήμα οδηγός. + +### [Πώς να αποθηκεύσετε HTML σε C# με προσαρμοσμένο διαχειριστή πόρων](./how-to-save-html-in-c-with-custom-resource-handler/) + +Μάθετε πώς να αποθηκεύσετε HTML σε C# με προσαρμοσμένο διαχειριστή πόρων, βήμα‑βήμα οδηγίες. + ### [Πώς να κάνετε έντονο τίτλο με CSS & C# – Πλήρης οδηγός βήμα‑βήμα](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/greek/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/greek/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..c1c8fbb20 --- /dev/null +++ b/html/greek/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,271 @@ +--- +category: general +date: 2026-02-14 +description: Μάθετε πώς να αποθηκεύετε HTML χρησιμοποιώντας το Aspose.HTML σε C#. + Αυτός ο οδηγός βήμα‑βήμα δείχνει πώς να γράψετε αρχείο HTML, να φορτώσετε HTML από + συμβολοσειρά, να μετατρέψετε HTML σε αρχείο και να χρησιμοποιήσετε έναν προσαρμοσμένο + διαχειριστή πόρων. +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: el +og_description: Πώς να αποθηκεύσετε γρήγορα HTML με το Aspose.HTML. Μάθετε να γράφετε + αρχείο HTML, να φορτώνετε HTML από συμβολοσειρά, να μετατρέπετε HTML σε αρχείο και + να υλοποιείτε προσαρμοσμένο διαχειριστή πόρων. +og_title: Πώς να αποθηκεύσετε HTML σε C# – Πλήρης Οδηγός +tags: +- Aspose.HTML +- C# +- File I/O +title: Πώς να αποθηκεύσετε HTML σε C# με προσαρμοσμένο διαχειριστή πόρων +url: /el/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +headings and paragraphs. + +Each blockquote. + +All code block placeholders remain. + +List items in step 5? Actually step 5 has bullet? No. + +Step 6 includes code block placeholder. + +Full working example block. + +Expected output block. + +Common Questions & Edge Cases heading and bullet points. + +Translate bullet points. + +Make sure to keep markdown formatting. + +Let's craft Greek translation. + +Note: Keep technical terms like "HTML", "C#", "Aspose.HTML", "IOutputStorage", "ResourceHandler", "MemoryStream", "HTMLSaveOptions", "OutputStorage", "HandleResource", "Encoding.UTF8" unchanged. + +Also keep URLs unchanged. + +Let's write. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να Αποθηκεύσετε HTML σε C# με Προσαρμοσμένο Διαχειριστή Πόρων + +Έχετε αναρωτηθεί ποτέ **πώς να αποθηκεύσετε html** απευθείας από μια συμβολοσειρά χωρίς να αγγίξετε το δίσκο πρώτα; Δεν είστε μόνοι—πολλοί προγραμματιστές αντιμετωπίζουν αυτό το πρόβλημα όταν χρειάζεται να δημιουργήσουν αναφορές επί τόπου ή να μεταδώσουν περιεχόμενο σε έναν περιηγητή. Τα καλά νέα είναι ότι το Aspose.HTML κάνει όλη τη διαδικασία παιχνιδάκι, και μπορείτε ακόμη και να ενσωματώσετε τη δική σας λογική αποθήκευσης με έναν προσαρμοσμένο διαχειριστή πόρων. + +Σε αυτό το tutorial θα περάσουμε από τη φόρτωση HTML από μια συμβολοσειρά, τη διαμόρφωση ενός προσαρμοσμένου διαχειριστή, και τελικά τη γραφή του HTML σε αρχείο. Στο τέλος θα ξέρετε πώς να **write html file**, πώς να **load html from string**, πώς να **convert html to file**, και πώς να δημιουργήσετε έναν **custom resource handler** που ταιριάζει σε οποιοδήποτε σενάριο αποθήκευσης. + +> **Τι θα πάρετε:** ένα πλήρες, έτοιμο‑για‑εκτέλεση πρόγραμμα C#, εξηγήσεις για κάθε γραμμή, και συμβουλές για την επέκταση της λύσης σε αποθήκευση στο cloud ή σε pipelines μνήμης. + +## Προαπαιτούμενα + +- .NET 6.0 ή νεότερο (το API λειτουργεί το ίδιο και σε .NET Framework 4.6+) +- Πακέτο NuGet Aspose.HTML for .NET (`Aspose.Html`) +- Βασική κατανόηση της σύνταξης C# (αν είστε άνετοι με τις δηλώσεις `using`, είστε εντάξει) + +Δεν απαιτούνται επιπλέον αρχεία ρυθμίσεων—απλώς ένα νέο έργο console και ο κώδικας παρακάτω. + + + +## Βήμα 1: Φόρτωση HTML από Συμβολοσειρά (το τμήμα “load html from string”) + +Πρώτα απ' όλα—χρειαζόμαστε ένα αντικείμενο `HTMLDocument`. Το Aspose.HTML σας επιτρέπει να περάσετε ακατέργαστο markup απευθείας στον constructor, πράγμα που σημαίνει ότι μπορείτε να **load html from string** χωρίς ενδιάμεσα αρχεία. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +क्यों `HTMLDocument` और साधारण स्ट्रिंग नहीं? Aspose मार्कअप को पार्स करता है, DOM बनाता है, और CSS को ठीक उसी तरह लागू करता है जैसे कोई ब्राउज़र करता है। यही **HTML को कैसे रेंडर करें** का मूल है, विशेषकर जब आप बाद में एक्सटर्नल स्टाइलशीट या JavaScript‑जनरेटेड कंटेंट जोड़ते हैं। + +## चरण 3 – इमेज रेंडरिंग विकल्प कॉन्फ़िगर करें (HTML को इमेज में बदलें) + +अब हम रेंडरर को बताते हैं कि हमें कौन सा आकार, बैकग्राउंड, और क्वालिटी चाहिए। ये सेटिंग्स सीधे अंतिम PNG को प्रभावित करती हैं, इसलिए अपने उपयोग केस के अनुसार इन्हें ट्यून करें। + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*Edge case:* यदि आपको ट्रांसपेरेंट बैकग्राउंड चाहिए (जैसे ओवरले थंबनेल के लिए), तो `BackgroundColor = Color.Transparent` सेट करें और सुनिश्चित करें कि आउटपुट फ़ॉर्मेट अल्फा सपोर्ट करता है (PNG करता है)। + +## चरण 4 – ग्लोबल फ़ॉन्ट विकल्प लागू करें (वैकल्पिक लेकिन उपयोगी) + +कभी‑कभी आप चाहते हैं कि दस्तावेज़ में हर टेक्स्ट भाग बोल्ड, इटैलिक, या किसी विशेष वेब फ़ॉन्ट में हो। Aspose आपको दस्तावेज़ पर `DefaultFontOptions` सेट करने की अनुमति देता है। + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +यह **HTML को इमेज में बदलने** का एक तेज़ तरीका है, एक समान स्टाइल के साथ, बिना प्रत्येक एलिमेंट के CSS को छुए। यदि आप बाद में एक्सटर्नल CSS लोड करते हैं जो अपना `font-weight` सेट करता है, तो वह नियम ग्लोबल सेटिंग को ओवरराइड कर देगा—बिल्कुल उसी तरह जैसा ब्राउज़र करता है। + +## चरण 5 – PNG रेंडर और सहेजें (HTML को PNG के रूप में सहेजें) + +अब असली काम शुरू होता है। हम एक `ImageRenderer` बनाते हैं, उसे `HTMLDocument` की ओर पॉइंट करते हैं, आउटपुट स्ट्रीम देते हैं, और `Render()` कॉल करते हैं। + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +यह कॉल सिंक्रोनस है और तब तक ब्लॉक करती है जब तक इमेज पूरी तरह लिख नहीं ली जाती। बड़े पेजों के लिए आप इसे बैकग्राउंड थ्रेड पर चलाना चाह सकते हैं, लेकिन अधिकांश थंबनेल‑जेनरेशन परिदृश्यों में ब्लॉकिंग कॉल ठीक है। + +**अपेक्षित परिणाम:** `output.png` नाम की फ़ाइल (800 × 600) जिसमें “Bold text” शब्द काले, बोल्ड‑स्टाइल फ़ॉन्ट में सफ़ेद कैनवास पर दिखता है। + +## चरण 6 – आउटपुट सत्यापित करें (HTML को PNG में रेंडर करने की चेकलिस्ट) + +कोड चलने के बाद, PNG को किसी भी इमेज व्यूअर में खोलें। आपको दिखना चाहिए: + +- आपने जो सटीक आयाम सेट किए थे (`Width` × `Height`)। +- सफ़ेद बैकग्राउंड (या यदि आपने बदल दिया हो तो ट्रांसपेरेंट)। +- बोल्ड टेक्स्ट साफ़ तौर पर रेंडर हुआ, एंटी‑एलियासिंग और हिन्टिंग के कारण। + +यदि टेक्स्ट धुंधला दिखे, तो `UseAntialiasing` और `UseHinting` को दोबारा जांचें। यदि फ़ाइल नहीं मिल रही है, तो सुनिश्चित करें कि प्रक्रिया को लक्ष्य फ़ोल्डर में लिखने की अनुमति है। + +### सामान्य प्रश्न और किनारे के मामलों + +| Question | Answer | +|----------|--------| +| **क्या मैं एक्सटर्नल CSS/JS के साथ पूरी वेबपेज रेंडर कर सकता हूँ?** | हाँ। HTML को URL से लोड करें (`new HTMLDocument("https://example.com")`) या डिस्क से फ़ाइल पढ़ें, और Aspose स्वचालित रूप से लिंक्ड स्टाइलशीट्स को फ़ेच करेगा (यदि वे पहुँच योग्य हों)। | +| **यदि मुझे प्रिंट के लिए उच्च DPI चाहिए तो क्या करें?** | `renderingOptions.DpiX` और `renderingOptions.DpiY` सेट करें (डिफ़ॉल्ट 96 है)। उच्च DPI बड़े फ़ाइल आकार देता है लेकिन आउटपुट अधिक शार्प होता है। | +| **मैं SVG या Canvas एलिमेंट्स को कैसे हैंडल करूँ?** | Aspose.HTML मूल रूप से SVG को सपोर्ट करता है। Canvas को लेआउट के दौरान चलाए गए JavaScript के आधार पर रेंडर किया जाता है, इसलिए स्क्रिप्ट एक्सीक्यूशन (`htmlDocument.EnableJavaScript = true`) को सक्षम करना सुनिश्चित करें। | +| **क्या कई HTML फ़ाइलों को बैच‑कन्वर्ट करने का कोई तरीका है?** | रेंडरिंग लॉजिक को `foreach` लूप में रखें, गति के लिए वही `ImageRenderingOptions` इंस्टेंस पुनः‑उपयोग करें। | +| **क्या मैं PNG के बजाय JPEG आउटपुट कर सकता हूँ?** | `JpegRenderingOptions` का उपयोग करें और फ़ाइल एक्सटेंशन को `.jpg` में बदलें। बाकी कोड वही रहता है। | + +## पूर्ण कार्यशील उदाहरण (सभी चरण एक फ़ाइल में) + +नीचे पूरा, कॉपी‑पेस्ट‑तैयार प्रोग्राम दिया गया है। यह `dotnet run` के साथ कंपाइल होता है और ऊपर वर्णित PNG उत्पन्न करता है। + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +प्रोग्राम चलाएँ, और आप कंसोल संदेश देखेंगे जो फ़ाइल के निर्माण की पुष्टि करता है। `output.png` खोलें और बोल्ड टेक्स्ट को वेरिफ़ाई करें—वोilà, आपने अभी **HTML को PNG के रूप में सहेजा**। + +{{< /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..676947c1f 100644 --- a/html/hindi/net/rendering-html-documents/_index.md +++ b/html/hindi/net/rendering-html-documents/_index.md @@ -68,6 +68,9 @@ Aspose.HTML का उपयोग करके HTML को PNG फ़ॉर् ### [HTML से PNG बनाएं – पूर्ण C# रेंडरिंग गाइड](./create-png-from-html-full-c-rendering-guide/) HTML को PNG में बदलने के लिए पूर्ण C# रेंडरिंग चरणों को सीखें और Aspose.HTML का उपयोग करके उच्च गुणवत्ता वाले परिणाम प्राप्त करें। +### [C# के साथ HTML को PNG में रेंडर करें और ZIP में सहेजें – पूर्ण गाइड](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +C# में Aspose.HTML का उपयोग करके HTML को PNG में बदलें और उसे ZIP फ़ाइल में सहेजने की पूरी प्रक्रिया सीखें। + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/hindi/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/hindi/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..ae4d17692 --- /dev/null +++ b/html/hindi/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,280 @@ +--- +category: general +date: 2026-02-14 +description: C# में HTML को PNG में रेंडर करें और सीखें कि HTML को इमेज में कैसे बदलें, + स्ट्रीम को ZIP में लिखें, और जल्दी से C# में एक ज़िप आर्काइव बनाएं। +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: hi +og_description: C# में HTML को PNG में रेंडर करें और जानें कि HTML को इमेज में कैसे + बदलें, स्ट्रीम को ZIP में कैसे लिखें, और C# में ज़िप आर्काइव को प्रभावी ढंग से कैसे + बनाएं। +og_title: C# के साथ HTML को PNG में रेंडर करें और ZIP में सहेजें – पूर्ण गाइड +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: C# के साथ HTML को PNG में रेंडर करें और ZIP में सहेजें – पूर्ण गाइड +url: /hi/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML को PNG में रेंडर करें और C# के साथ ZIP में सहेजें – पूर्ण गाइड + +क्या आपको **HTML को PNG में रेंडर** करने की ज़रूरत पड़ी है लेकिन यह नहीं पता था कि इमेज और मूल मार्कअप को साथ में कैसे रखें? आप अकेले नहीं हैं—कई डेवलपर्स को रिपोर्टिंग टूल्स, ईमेल थंबनेल, या ऑफ़लाइन डॉक्यूमेंटेशन बंडल बनाते समय यही समस्या आती है। + +अच्छी ख़बर? इस ट्यूटोरियल में हम एक ही, स्व-निहित समाधान के माध्यम से **HTML को इमेज में बदलना**, परिणामस्वरूप स्ट्रीम को ZIP फ़ाइल में लिखना, और साथ ही स्रोत HTML को भी संग्रहीत करना सीखेंगे। अंत तक, आपके पास एक चलाने योग्य प्रोग्राम होगा जो शुरुआत से अंत तक सब कुछ करता है, और आप समझेंगे कि प्रत्येक भाग क्यों महत्वपूर्ण है। + +हम **write stream to zip** पर टिप्स भी देंगे, **create zip archive c#** की बारीकियों पर चर्चा करेंगे, और दिखाएंगे कि **save html to zip** बिना किसी थर्ड‑पार्टी ज़िप यूटिलिटी के कैसे किया जाता है। कोई बाहरी रेफ़रेंस नहीं—सिर्फ कोड और उसके पीछे की तर्कशक्ति। + +--- + +## आपको क्या चाहिए + +- .NET 6.0 या बाद का संस्करण (API .NET Core और .NET Framework पर भी काम करता है) +- Aspose.HTML for .NET (NuGet पैकेज `Aspose.Html`) – यह HTML रेंडरिंग का भारी काम संभालता है। +- `System.IO.Compression` की थोड़ी‑बहुत जानकारी – हम बिल्ट‑इन `ZipArchive` क्लास का उपयोग करेंगे। + +बस इतना ही। एक टेक्स्ट एडिटर या Visual Studio खोलें, और शुरू करें। + +--- + +## चरण 1: कस्टम ResourceHandler सेट‑अप करें ताकि स्ट्रीम ZIP में लिखी जा सके + +जब Aspose.HTML कोई डॉक्यूमेंट सेव करता है, तो वह प्रत्येक रिसोर्स (इमेज, CSS, आदि) के लिए `ResourceHandler` से एक `Stream` मांगता है। `ResourceHandler` को सब‑क्लास करके हम हर रिसोर्स को **फ़ाइल सिस्टम** की बजाय **ZIP आर्काइव** में निर्देशित कर सकते हैं। + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**क्यों उपयोगी है:** HTML को मेमोरी में रखने से आप बाद में **save html to zip** बिना डिस्क से फिर पढ़े कर सकते हैं। यह यूनिट टेस्टिंग को भी आसान बनाता है। + +--- + +## चरण 4: HTML को PNG में रेंडर करें और ZIP में स्टोर करें + +अब ट्यूटोरियल का मुख्य भाग—डॉक्यूमेंट को रेंडर करना और प्राप्त स्ट्रीम को सीधे आर्काइव में डालना। + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### अपेक्षित परिणाम + +प्रोग्राम समाप्त होने के बाद, आपको निष्पादन योग्य फ़ोल्डर में `result.zip` नाम की फ़ाइल मिलेगी। इसे खोलें और आप देखेंगे: + +- **page.png** – HTML का रास्टराइज़्ड स्नैपशॉट (हमारा **render html to png** आउटपुट)। +- **index.html** (या Aspose.HTML द्वारा दिया गया कोई भी नाम) – मूल मार्कअप, जो पुष्टि करता है कि हमने सफलतापूर्वक **save html to zip** किया है। + +आप किसी भी आर्काइव मैनेजर से ज़िप निकाल सकते हैं और PNG को देख कर रेंडरिंग क्वालिटी की जाँच कर सकते हैं। + +--- + +## चरण 5: एज केस और सामान्य समस्याओं का समाधान + +| स्थिति | ध्यान देने योग्य बात | सुझाया गया समाधान | +|-----------|-------------------|-----------------| +| **बड़ी HTML पेज** | मेमोरी उपयोग बढ़ जाता है क्योंकि हम पूरी PNG को `MemoryStream` में रखते हैं। | यदि इमेज कुछ मेगाबाइट से बड़ी हो तो `FileStream` (टेम्पररी फ़ाइल स्ट्रीम) पर स्विच करें। | +| **मौजूदा ZIP फ़ाइल** | `Update` मोड में ज़िप खोलने से मौजूदा एंट्रीज़ बनी रहती हैं, लेकिन डुप्लिकेट नामों से एक्सेप्शन आता है। | नया एंट्री बनाने से पहले `zipArchive.GetEntry(name)?.Delete();` से एंट्री को हटाएँ। | +| **असमर्थित CSS** | Aspose.HTML कुछ आधुनिक CSS फीचर्स को अनदेखा कर सकता है। | रेंडरिंग को लोकली टेस्ट करें; महत्वपूर्ण लेआउट के लिए इनलाइन स्टाइल्स का उपयोग करें। | +| **थ्रेड सुरक्षा** | `ZipArchive` थ्रेड‑सेफ़ नहीं है। | रेंडरिंग और ज़िपिंग को एक ही थ्रेड पर रखें या प्रत्येक थ्रेड के लिए अलग आर्काइव उपयोग करें। | + +**क्यों महत्वपूर्ण है:** **write stream to zip** की सीमाओं को जानने से आप रन‑टाइम क्रैश से बचेंगे और जब आप बाद में कई पेजों को बैच‑प्रोसेस करेंगे तो एप्लिकेशन मजबूत रहेगा। + +--- + +## चरण 6: पूर्ण, तैयार‑चलाने‑योग्य नमूना + +नीचे पूरा प्रोग्राम दिया गया है जिसे आप कॉन्सोल प्रोजेक्ट में कॉपी‑पेस्ट कर सकते हैं। इसमें सभी `using` निर्देश, टिप्पणियाँ, और सही डिस्पोज़ल पैटर्न शामिल हैं। + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +प्रोग्राम चलाएँ (`dotnet run`) और आप पुष्टि संदेश देखेंगे। `result.zip` खोलें और दोनों फ़ाइलें मौजूद होंगी, यह सत्यापित करें। + +--- + +## अक्सर पूछे जाने वाले प्रश्न (FAQ) + +**प्र: क्या यह .NET Framework 4.7 पर काम करता है?** +उ: हाँ। `System.IO.Compression` API .NET 4.5 से स्थिर है, और Aspose.HTML पूरी .NET Framework को सपोर्ट करता है। केवल उपयुक्त Aspose.HTML DLL को रेफ़रेंस करें। + +**प्र: क्या मैं CSS या फ़ॉन्ट जैसे अतिरिक्त रिसोर्स जोड़ सकता हूँ?** +उ: बिल्कुल। HTML द्वारा रेफ़रेंस किए गए कोई भी बाहरी रिसोर्स `HandleResource` को ट्रिगर करेगा, इसलिए वे स्वचालित रूप से उसी ज़िप में आ जाएंगे। + +**प्र: अगर मुझे अलग इमेज फ़ॉर्मेट चाहिए (जैसे JPEG)?** +उ: `ImageRenderer` कंस्ट्रक्टर को `JpegRenderer` में बदलें या `ImageRenderingOptions` में `ImageFormat` सेट करें। बाकी पाइपलाइन वैसी ही रहेगी। + +**प्र: क्या ज़िप पासवर्ड‑प्रोटेक्टेड है?** +उ: बिल्ट‑इन `ZipArchive` एन्क्रिप्शन को सपोर्ट नहीं करता। इसके लिए `SharpZipLib` जैसे थर्ड‑पार्टी लाइब्रेरी का उपयोग करें और `ZipHandler` को उसी अनुसार एडाप्ट करें। + +--- + +## निष्कर्ष + +आप अब + +{{< /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/working-with-html-documents/_index.md b/html/hindi/net/working-with-html-documents/_index.md index 4c5be51ef..6cbde9332 100644 --- a/html/hindi/net/working-with-html-documents/_index.md +++ b/html/hindi/net/working-with-html-documents/_index.md @@ -37,6 +37,9 @@ HTML दस्तावेज़ वेब की रीढ़ हैं, और अब, आइए अपने कौशल को अगले स्तर पर ले जाएं। HTML दस्तावेज़ों को संपादित करना वेब डेवलपर्स के लिए एक सामान्य कार्य है, और Aspose.HTML इस प्रक्रिया को काफी सरल बनाता है। इस अनुभाग में, हम दस्तावेज़ निर्माण, हेरफेर और स्टाइलिंग को कवर करेंगे। आप जानेंगे कि अपनी वेब सामग्री की उपस्थिति और कार्यक्षमता को कैसे बढ़ाया जाए, जिससे यह आकर्षक और उपयोगकर्ता के अनुकूल बन सके। ### [C# में HTML को सहेजना – कस्टम रिसोर्स हैंडलर का उपयोग करके पूर्ण गाइड](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) + +### [C# में HTML को सहेजना – कस्टम रिसोर्स हैंडलर के साथ](./how-to-save-html-in-c-with-custom-resource-handler/) + ### [CSS और C# के साथ हेडिंग को बोल्ड कैसे बनाएं – पूर्ण चरण-दर-चरण गाइड](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/hindi/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/hindi/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..11ae699f5 --- /dev/null +++ b/html/hindi/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-02-14 +description: सी# में Aspose.HTML का उपयोग करके HTML को कैसे सहेजें, सीखें। यह चरण‑दर‑चरण + गाइड दिखाता है कि HTML फ़ाइल कैसे लिखें, स्ट्रिंग से HTML लोड करें, HTML को फ़ाइल + में परिवर्तित करें, और एक कस्टम रिसोर्स हैंडलर का उपयोग करें। +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: hi +og_description: Aspose.HTML के साथ HTML को जल्दी कैसे सहेजें। HTML फ़ाइल लिखना, स्ट्रिंग + से HTML लोड करना, HTML को फ़ाइल में बदलना, और एक कस्टम रिसोर्स हैंडलर लागू करना + सीखें। +og_title: C# में HTML कैसे सहेजें – पूर्ण गाइड +tags: +- Aspose.HTML +- C# +- File I/O +title: कस्टम रिसोर्स हैंडलर के साथ C# में HTML कैसे सहेजें +url: /hi/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +writing the HTML to a file. By the end you’ll know how to **write html file**, how to **load html from string**, how to **convert html to file**, and how to craft a **custom resource handler** that fits any storage scenario." + +Translate. + +Proceed similarly for all sections. + +Make sure to keep markdown formatting: blockquotes, headings, lists. + +Now produce final content. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# में कस्टम रिसोर्स हैंडलर के साथ HTML कैसे सेव करें + +क्या आपने कभी सोचा है कि **how to save html** को सीधे स्ट्रिंग से डिस्क को छुए बिना कैसे सेव किया जाए? आप अकेले नहीं हैं—कई डेवलपर्स को यह समस्या आती है जब उन्हें तुरंत रिपोर्ट जेनरेट करनी होती है या ब्राउज़र में कंटेंट स्ट्रीम करना होता है। अच्छी बात यह है कि Aspose.HTML पूरी प्रक्रिया को बहुत आसान बनाता है, और आप एक कस्टम रिसोर्स हैंडलर के साथ अपनी स्टोरेज लॉजिक भी जोड़ सकते हैं। + +इस ट्यूटोरियल में हम स्ट्रिंग से HTML लोड करने, कस्टम हैंडलर को कॉन्फ़िगर करने, और अंत में HTML को फ़ाइल में लिखने की प्रक्रिया को चरण‑दर‑चरण देखेंगे। अंत तक आप जानेंगे कि **write html file** कैसे किया जाता है, **load html from string** कैसे किया जाता है, **convert html to file** कैसे किया जाता है, और किसी भी स्टोरेज परिदृश्य के लिए उपयुक्त **custom resource handler** कैसे बनाया जाता है। + +> **आपको क्या मिलेगा:** एक पूर्ण, तुरंत चलाने योग्य C# प्रोग्राम, प्रत्येक लाइन की व्याख्या, और क्लाउड स्टोरेज या इन‑मेमोरी पाइपलाइन के लिए समाधान को विस्तारित करने के टिप्स। + +## Prerequisites + +- .NET 6.0 या बाद का (API .NET Framework 4.6+ पर भी समान रूप से काम करता है) +- Aspose.HTML for .NET NuGet पैकेज (`Aspose.Html`) +- C# सिंटैक्स की बुनियादी समझ (यदि आप `using` स्टेटमेंट्स से परिचित हैं, तो आप तैयार हैं) + +कोई अतिरिक्त कॉन्फ़िगरेशन फ़ाइल की आवश्यकता नहीं—सिर्फ एक नया कंसोल प्रोजेक्ट और नीचे दिया गया कोड। + + + +## Step 1: Load HTML from a String (the “load html from string” part) + +सबसे पहले हमें एक `HTMLDocument` इंस्टेंस चाहिए। Aspose.HTML आपको कंस्ट्रक्टर में सीधे रॉ मार्कअप पास करने की सुविधा देता है, जिससे आप **load html from string** बिना किसी मध्यवर्ती फ़ाइल के कर सकते हैं। + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +為什麼使用 `HTMLDocument` 而不是純字串?Aspose 會解析標記、建立 DOM,並像瀏覽器一樣套用 CSS。這正是正確 **如何渲染 html** 的核心,尤其在你之後加入外部樣式表或由 JavaScript 產生的內容時。 + +## 步驟 3 – 設定影像渲染選項(將 HTML 轉換為影像) + +接下來,我們告訴渲染器我們想要的尺寸、背景與品質。這些設定會直接影響最終的 PNG,因此請依需求微調。 + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*特殊情況:* 若需要透明背景(例如用於覆蓋縮圖),請設定 `BackgroundColor = Color.Transparent`,並確保輸出格式支援 alpha 通道(PNG 支援)。 + +## 步驟 4 – 套用全域字型選項(可選但實用) + +有時你希望文件中的所有文字都使用粗體、斜體或特定的網頁字型。Aspose 允許你在文件上設定 `DefaultFontOptions`。 + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +這是一種快速的 **將 HTML 轉換為影像** 方法,可使用統一樣式,而不必逐一修改每個元素的 CSS。如果之後載入的外部 CSS 設定了自己的 `font-weight`,這些規則會覆蓋全域設定——正如瀏覽器的行為。 + +## 步驟 5 – 渲染並儲存 PNG(將 HTML 儲存為 PNG) + +現在開始執行繁重的工作。我們建立 `ImageRenderer`,指向 `HTMLDocument`,將輸出串流傳入,然後呼叫 `Render()`。 + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +此呼叫為同步執行,會阻塞直到影像完整寫入。對於大型頁面,你可能想在背景執行緒上執行,但對於大多數縮圖產生情境而言,阻塞呼叫已足夠。 + +**預期結果:** 產生一個名為 `output.png`(800 × 600)的檔案,內容為白色畫布上以黑色粗體字體顯示的 “Bold text”。 + +## 步驟 6 – 驗證輸出(渲染 HTML 為 PNG 清單) + +程式執行完畢後,使用任何影像檢視器開啟 PNG。你應該會看到: + +- 你設定的精確尺寸(`Width` × `Height`)。 +- 白色背景(若已更改則為透明)。 +- 粗體文字清晰呈現,得益於抗鋸齒與 hinting。 + +如果文字看起來模糊,請再次確認 `UseAntialiasing` 與 `UseHinting`。如果檔案遺失,請確保程式對目標資料夾具有寫入權限。 + +### 常見問題與特殊情況 + +| Question | Answer | +|----------|--------| +| **我可以渲染包含外部 CSS/JS 的完整網頁嗎?** | 可以。從 URL 載入 HTML(`new HTMLDocument("https://example.com")`)或從磁碟讀取檔案,Aspose 會自動取得連結的樣式表(前提是它們可存取)。 | +| **如果需要更高的列印 DPI 該怎麼辦?** | 設定 `renderingOptions.DpiX` 與 `renderingOptions.DpiY`(預設為 96)。較高的 DPI 會產生較大的檔案,但輸出更為清晰。 | +| **如何處理 SVG 或 Canvas 元素?** | Aspose.HTML 原生支援 SVG。Canvas 會根據版面配置期間執行的 JavaScript 進行渲染,因此請確保啟用腳本執行(`htmlDocument.EnableJavaScript = true`)。 | +| **有沒有辦法批次轉換多個 HTML 檔案?** | 將渲染邏輯包在 `foreach` 迴圈中,重複使用相同的 `ImageRenderingOptions` 實例以提升速度。 | +| **我可以輸出 JPEG 而非 PNG 嗎?** | 使用 `JpegRenderingOptions` 並將檔案副檔名改為 `.jpg`。其餘程式碼保持不變。 | + +## 完整可執行範例(所有步驟於單一檔案) + +以下是完整、可直接複製貼上的程式。使用 `dotnet run` 編譯即可產生上述 PNG。 + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +執行程式後,你會在主控台看到確認檔案已建立的訊息。開啟 `output.png` 並驗證粗體文字——完成,你剛剛 **將 HTML 儲存為 PNG**。 + +{{< /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..be90ce9fa 100644 --- a/html/hongkong/net/rendering-html-documents/_index.md +++ b/html/hongkong/net/rendering-html-documents/_index.md @@ -45,6 +45,7 @@ Aspose.HTML for .NET 因其豐富的功能、優秀的文件和活躍的社群 ### [如何將 HTML 渲染為 PNG – 完整 C# 指南](./how-to-render-html-as-png-complete-c-guide/) 學習使用 Aspose.HTML for .NET 在 C# 中將 HTML 渲染為 PNG,涵蓋完整步驟與最佳實踐。 + ### [從 HTML 建立 PNG – 完整 C# 渲染指南](./create-png-from-html-full-c-rendering-guide/) 學習如何使用 Aspose.HTML for .NET 以 C# 完整渲染 HTML 並將其保存為 PNG 圖像。 @@ -69,6 +70,9 @@ Aspose.HTML for .NET 因其豐富的功能、優秀的文件和活躍的社群 ### [如何使用 Aspose 將 HTML 渲染為 PNG – 完整指南](./how-to-render-html-to-png-with-aspose-complete-guide/) 完整步驟教您使用 Aspose.HTML for .NET 將 HTML 轉換為 PNG 圖像,掌握所有設定與最佳實踐。 +### [使用 Aspose.HTML 在 .NET 中將 HTML 渲染為 PNG 並保存至 ZIP – 完整指南](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +學習如何使用 Aspose.HTML for .NET 在 C# 中將 HTML 渲染為 PNG,並將多個圖像壓縮為 ZIP 檔案的完整步驟與最佳實踐。 + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/hongkong/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/hongkong/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..5d8251281 --- /dev/null +++ b/html/hongkong/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,277 @@ +--- +category: general +date: 2026-02-14 +description: 在 C# 中將 HTML 渲染為 PNG,並學習如何將 HTML 轉換為圖片、將串流寫入 ZIP,以及快速建立 ZIP 壓縮檔。 +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: zh-hant +og_description: 在 C# 中將 HTML 渲染為 PNG,了解如何將 HTML 轉換為圖片、將串流寫入 ZIP,以及高效建立 ZIP 壓縮檔。 +og_title: 使用 C# 將 HTML 渲染為 PNG 並保存為 ZIP – 完整指南 +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: 使用 C# 將 HTML 渲染為 PNG 並儲存為 ZIP – 完整指南 +url: /zh-hant/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 使用 C# 將 HTML 渲染為 PNG 並儲存至 ZIP – 完整指南 + +是否曾經需要 **將 HTML 渲染為 PNG**,卻不確定要如何同時保留圖片與原始標記?你並不孤單——許多開發者在建立報表工具、電子郵件縮圖或離線文件包時,都會遇到這個問題。 + +好消息是?在本教學中,我們將一步步示範一個 **自包含** 的解決方案,能 **將 HTML 轉換為影像**、將產生的串流寫入 ZIP 檔,甚至同時儲存原始 HTML。完成後,你將擁有一個可直接執行的程式,從頭到尾完成所有工作,並且了解每個環節的意義。 + +我們也會順帶說明 **write stream to zip** 的技巧,討論 **create zip archive c#** 的細節,並示範如何 **save html to zip**,全程不需要任何第三方 ZIP 工具。只要程式碼與背後的原理即可。 + +--- + +## 需要的環境 + +- .NET 6.0 或更新版本(此 API 亦支援 .NET Core 與 .NET Framework) +- Aspose.HTML for .NET(NuGet 套件 `Aspose.Html`)——負責 HTML 渲染的重任。 +- 具備基本的 `System.IO.Compression` 概念——我們會使用內建的 `ZipArchive` 類別。 + +就這些。打開文字編輯器或 Visual Studio,讓我們開始吧。 + +--- + +## 步驟 1:建立自訂 ResourceHandler 以寫入 ZIP + +當 Aspose.HTML 儲存文件時,它會向 `ResourceHandler` 要求一個 `Stream`,用來放置每個資源(圖片、CSS 等)。透過繼承 `ResourceHandler`,我們可以把所有資源直接寫入 **ZIP 檔案**,而不是寫到檔案系統。 + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**為什麼值得關注:** 把 HTML 保留在記憶體中,之後可以 **save html to zip**,不必再次從磁碟讀取。也讓單元測試變得更簡單。 + +--- + +## 步驟 4:將 HTML 渲染為 PNG 並存入 ZIP + +接下來就是本教學的核心——渲染文件並把產生的串流直接寫入壓縮檔。 + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### 預期結果 + +程式執行完畢後,執行檔所在資料夾會出現 `result.zip`。解壓縮後你會看到: + +- **page.png** – HTML 的光柵化快照(即 **render html to png** 的輸出)。 +- **index.html**(或 Aspose.HTML 指定的其他名稱) – 原始標記,證明我們成功 **save html to zip**。 + +使用任何壓縮管理工具解壓,即可檢視 PNG 以驗證渲染品質。 + +--- + +## 步驟 5:處理邊緣情況與常見陷阱 + +| 情境 | 需要注意的地方 | 推薦解決方式 | +|-----------|-------------------|-----------------| +| **大型 HTML 頁面** | 由於整個 PNG 會保留在 `MemoryStream` 中,記憶體使用量會激增。 | 若影像超過數 MB,改用暫存檔串流(`FileStream`)。 | +| **已存在的 zip 檔** | 以 `Update` 模式開啟 zip 會保留既有項目,但重複名稱會拋出例外。 | 先刪除舊項目:`zipArchive.GetEntry(name)?.Delete();` 再建立新項目。 | +| **不支援的 CSS** | Aspose.HTML 可能會忽略某些現代 CSS 特性。 | 在本機測試渲染結果;對關鍵布局使用內嵌樣式作為備援。 | +| **執行緒安全** | `ZipArchive` 並非執行緒安全。 | 將渲染與壓縮工作限制在單一執行緒,或為每個執行緒使用獨立的 archive。 | + +**為什麼這些重要:** 了解 **write stream to zip** 的限制,可避免執行時崩潰,讓應用在批次處理大量頁面時仍保持穩定。 + +--- + +## 步驟 6:完整、可直接執行的範例 + +以下程式碼可直接貼到 Console 專案中使用,包含所有 using 指示、註解與正確的資源釋放模式。 + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +執行程式(`dotnet run`)後,你會看到確認訊息。打開 `result.zip`,即可驗證兩個檔案是否皆已存在。 + +--- + +## 常見問題 (FAQ) + +**Q: 這在 .NET Framework 4.7 上能跑嗎?** +A: 能。`System.IO.Compression` API 自 .NET 4.5 起即穩定,且 Aspose.HTML 支援完整的 .NET Framework,只要引用相應的 Aspose.HTML DLL 即可。 + +**Q: 可以加入更多資源,例如 CSS 或字型嗎?** +A: 當然可以。HTML 所引用的任何外部資源都會觸發 `HandleResource`,自動寫入同一個 zip。 + +**Q: 若想輸出其他影像格式(例如 JPEG)怎麼辦?** +A: 將 `ImageRenderer` 建構子改為 `JpegRenderer`,或在 `ImageRenderingOptions` 中設定 `ImageFormat`。其餘流程保持不變。 + +**Q: ZIP 檔能設定密碼保護嗎?** +A: 內建的 `ZipArchive` 不支援加密。若需要,可考慮使用第三方套件(如 `SharpZipLib`),並相應調整 `ZipHandler` 實作。 + +--- + +## 結語 + +你現在已經 + +{{< /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/working-with-html-documents/_index.md b/html/hongkong/net/working-with-html-documents/_index.md index d2685fbe5..9f3716cc5 100644 --- a/html/hongkong/net/working-with-html-documents/_index.md +++ b/html/hongkong/net/working-with-html-documents/_index.md @@ -39,6 +39,10 @@ HTML 文件是網路的支柱,能夠有效地創建和操作它們對於任何 ### [如何在 C# 中保存 HTML – 使用自訂資源處理程式的完整指南](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) 本教學說明如何在 C# 中使用自訂資源處理程式將 HTML 內容保存至檔案或串流,涵蓋完整步驟與範例。 + +### [如何在 C# 中保存 HTML – 使用自訂資源處理程式](./how-to-save-html-in-c-with-custom-resource-handler/) +本教學說明如何在 C# 中使用自訂資源處理程式將 HTML 內容保存至檔案或串流。 + ### [如何使用 CSS 與 C# 加粗標題 – 完整步驟指南](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/hongkong/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/hongkong/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..aca40aadf --- /dev/null +++ b/html/hongkong/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-02-14 +description: 學習如何在 C# 中使用 Aspose.HTML 儲存 HTML。本分步指南說明如何寫入 HTML 檔案、從字串載入 HTML、將 HTML + 轉換為檔案,以及使用自訂資源處理程式。 +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: zh-hant +og_description: 如何使用 Aspose.HTML 快速保存 HTML。學習寫入 HTML 檔案、從字串載入 HTML、將 HTML 轉換為檔案,以及實作自訂資源處理程式。 +og_title: 如何在 C# 中儲存 HTML – 完整指南 +tags: +- Aspose.HTML +- C# +- File I/O +title: 如何在 C# 中使用自訂資源處理程式儲存 HTML +url: /zh-hant/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 C# 中使用自訂資源處理程式儲存 HTML + +你是否曾想過 **如何直接從字串儲存 html** 而不先寫入磁碟?你並不孤單——許多開發者在需要即時產生報告或將內容串流至瀏覽器時,都會遇到這個問題。好消息是 Aspose.HTML 讓整個流程變得輕而易舉,甚至可以透過自訂資源處理程式插入自己的儲存邏輯。 + +在本教學中,我們將逐步說明如何從字串載入 HTML、設定自訂處理程式,最後將 HTML 寫入檔案。完成後,你將了解如何 **write html file**、如何 **load html from string**、如何 **convert html to file**,以及如何打造符合任何儲存情境的 **custom resource handler**。 + +> **你將得到:** 完整、可直接執行的 C# 程式、每一行程式碼的說明,以及將解決方案擴展至雲端儲存或記憶體管線的技巧。 + +## 前置條件 + +- .NET 6.0 或更新版本(API 在 .NET Framework 4.6+ 上的行為相同) +- Aspose.HTML for .NET NuGet 套件(`Aspose.Html`) +- 基本的 C# 語法概念(只要熟悉 `using` 陳述式,即可) + +不需要額外的設定檔——只要一個全新的 Console 專案與以下程式碼即可。 + + + +## 步驟 1:從字串載入 HTML(「load html from string」部分) + +首先,我們需要一個 `HTMLDocument` 實例。Aspose.HTML 允許直接將原始標記傳入建構子,這意味著你可以 **load html from string** 而不需要任何中介檔案。 + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +Miért `HTMLDocument`, és nem egyszerű string? Az Aspose elemzi a markup‑ot, felépíti a DOM‑ot, és a CSS‑t pontosan úgy alkalmazza, mint egy böngésző. Ez a **hogyan renderelj HTML‑t** magja, különösen ha később külső stíluslapokat vagy JavaScript‑ből generált tartalmat adsz hozzá. + +## 3. lépés – Kép renderelési beállítások konfigurálása (HTML konvertálása képpé) + +Most megmondjuk a renderelőnek, milyen méretet, háttérszínt és minőséget szeretnénk. Ezek a beállítások közvetlenül befolyásolják a végső PNG‑t, ezért igazítsd őket a felhasználási esethez. + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*Szélsőséges eset:* ha átlátszó háttérre van szükséged (pl. átfedő bélyegképekhez), állítsd be `BackgroundColor = Color.Transparent`‑t, és győződj meg róla, hogy a kimeneti formátum támogatja az alfát (a PNG igen). + +## 4. lépés – Globális betűtípus beállítások alkalmazása (Opcionális, de hasznos) + +Néha azt szeretnéd, hogy a dokumentum minden szövege félkövér, dőlt vagy egy adott web‑font legyen. Az Aspose lehetővé teszi a `DefaultFontOptions` beállítását a dokumentumon. + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +Ez egy gyors módja annak, hogy **HTML‑t képpé konvertálj** egységes stílussal, anélkül, hogy minden elem CSS‑ét módosítanád. Ha később külső CSS‑t töltesz be, amely saját `font-weight`‑et állít be, azok a szabályok felülírják a globális beállítást – pontosan úgy, ahogy egy böngésző viselkedik. + +## 5. lépés – Renderelés és PNG mentése (HTML mentése PNG‑ként) + +Most jön a nehéz munka. Létrehozunk egy `ImageRenderer`‑t, rámutatunk a `HTMLDocument`‑ra, átadjuk a kimeneti streamet, és meghívjuk a `Render()`‑et. + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +A hívás szinkron, és blokkolja a szálat, amíg a kép teljesen le nem íródik. Nagyobb oldalak esetén érdemes lehet háttérszálon futtatni, de a legtöbb bélyegkép‑generálási szituációban a blokkoló hívás megfelelő. + +**Várható eredmény:** egy `output.png` nevű fájl (800 × 600) amely a “Bold text” szót fekete, félkövér betűtípussal jeleníti meg egy fehér vásznon. + +## 6. lépés – Az eredmény ellenőrzése (HTML PNG‑re renderelése ellenőrzőlista) + +A kód futtatása után nyisd meg a PNG‑t bármely képnézőben. A következőket kell látnod: + +- Pontosan a beállított méretek (`Width` × `Height`). +- Fehér háttér (vagy átlátszó, ha módosítottad). +- Félkövér szöveg tisztán renderelve, az antialiasing és hinting köszönhetően. + +Ha a szöveg elmosódottnak tűnik, ellenőrizd a `UseAntialiasing` és `UseHinting` beállításokat. Ha a fájl hiányzik, győződj meg arról, hogy a folyamatnak van írási joga a célmappához. + +### Gyakori kérdések és szélsőséges esetek + +| Kérdés | Válasz | +|----------|--------| +| **Renderelhetek teljes weboldalt külső CSS/JS‑szel?** | Igen. Töltsd be a HTML‑t egy URL‑ről (`new HTMLDocument("https://example.com")`) vagy fájlból, és az Aspose automatikusan letölti a hivatkozott stíluslapokat (ha elérhetők). | +| **Mi a teendő, ha nagyobb DPI‑ra van szükség nyomtatáshoz?** | Állítsd be a `renderingOptions.DpiX` és `renderingOptions.DpiY` értékeket (alapértelmezett 96). A nagyobb DPI nagyobb fájlokat, de élesebb kimenetet eredményez. | +| **Hogyan kezelem az SVG vagy Canvas elemeket?** | Az Aspose.HTML natívan támogatja az SVG‑t. A Canvas a layout során végrehajtott JavaScript alapján renderelődik, ezért engedélyezd a szkript‑végrehajtást (`htmlDocument.EnableJavaScript = true`). | +| **Van lehetőség sok HTML fájl kötegelt konvertálására?** | Csomagold a renderelési logikát egy `foreach` ciklusba, és használd újra ugyanazt a `ImageRenderingOptions` példányt a sebesség növelése érdekében. | +| **Kimenetként JPEG‑et szeretnék PNG helyett?** | Használd a `JpegRenderingOptions`‑t és változtasd meg a fájlkiterjesztést `.jpg`‑re. A kód többi része változatlan marad. | + +## Teljes működő példa (Minden lépés egy fájlban) + +Az alábbi kódrészlet egy kész, másolás‑beillesztésre kész program. `dotnet run`‑nal lefordítható, és a fent leírt PNG‑t hozza létre. + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +Futtasd a programot, és a konzol üzenetben láthatod, hogy a fájl létrejött. Nyisd meg az `output.png`‑t, és ellenőrizd a félkövér szöveget – voilà, most **HTML‑t mentettél PNG‑ként**. + +{{< /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..205124be6 100644 --- a/html/hungarian/net/rendering-html-documents/_index.md +++ b/html/hungarian/net/rendering-html-documents/_index.md @@ -34,7 +34,7 @@ Az Aspose.HTML for .NET kiemelkedik a legjobb választás a HTML-megjelenítésh - Rendszeres frissítések: Az Aspose elkötelezett termékei fejlesztése mellett, így rendszeres frissítésekre és hibajavításokra számíthat. -Tehát akár tapasztalt fejlesztő, akár csak most kezdi a HTML-megjelenítés felé vezető utat, az Aspose.HTML for .NET rendelkezik a sikerhez szükséges erőforrásokkal és eszközökkel. +Tehát akár tapasztalt fejlesztő, akár csak most kezdi a HTML-megjelenítést felé vezető utat, az Aspose.HTML for .NET rendelkezik a sikerhez szükséges erőforrásokkal és eszközökkel. ## A HTML-dokumentumok renderelése oktatóanyagok listájának felfedezése @@ -60,6 +60,8 @@ Tanulja meg, hogyan renderelhet HTML-t PNG formátumba az Aspose segítségével Ismerje meg, hogyan konvertálhatja a HTML-t PNG-be az Aspose segítségével .NET környezetben, lépésről lépésre. ### [PNG létrehozása HTML-ből – Teljes C# renderelési útmutató](./create-png-from-html-full-c-rendering-guide/) Tanulja meg, hogyan hozhat létre PNG képeket HTML-ből C#-ban az Aspose.HTML segítségével. +### [HTML renderelése PNG-be és mentése ZIP-be C#-al – Teljes útmutató](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +Tanulja meg, hogyan renderelhet HTML-t PNG-be, majd ZIP-fájlba mentheti C#-ban az Aspose.HTML segítségével. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/hungarian/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/hungarian/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..6f46f4ca6 --- /dev/null +++ b/html/hungarian/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,285 @@ +--- +category: general +date: 2026-02-14 +description: HTML renderelése PNG formátumba C#-ban, és megtanulhatja, hogyan konvertálja + az HTML-t képpé, írjon adatfolyamot ZIP-be, valamint gyorsan hozzon létre ZIP-archívumot + C#-ban. +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: hu +og_description: HTML renderelése PNG-re C#-ban, és fedezze fel, hogyan konvertálhat + HTML-t képpé, írhat stream-et ZIP-be, és hozhat létre hatékonyan ZIP archívumot + C#-ban. +og_title: HTML renderelése PNG-be és mentése ZIP-be C#‑al – Teljes útmutató +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: HTML renderelése PNG-be és mentése ZIP-be C#‑al – Teljes útmutató +url: /hu/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +preserve markdown formatting exactly, including spaces, line breaks. + +Let's craft translation. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML renderelése PNG‑be és mentése ZIP‑be C#‑vel – Teljes útmutató + +Valaha is szükséged volt **render HTML to PNG**‑re, de nem tudtad, hogyan tartsd együtt a képet és az eredeti markup‑ot? Nem vagy egyedül – sok fejlesztő ütközik ebbe a problémába jelentéskészítő eszközök, e‑mail bélyegképek vagy offline dokumentációs csomagok építésekor. + +A jó hír? Ebben a tutorialban egyetlen, önálló megoldáson keresztül mutatjuk be, hogyan **converts HTML to image**, hogyan írjuk a keletkezett stream‑et egy ZIP fájlba, és hogyan tároljuk a forrás HTML‑t is mellette. A végére egy futtatható programod lesz, ami mindent elvégez a kezdetektől a végéig, és megérted, miért fontos minden egyes rész. + +Megosztunk tippeket a **write stream to zip**‑ról, megvitatjuk a **create zip archive c#** finomságait, és megmutatjuk, hogyan **save html to zip** külső zip‑segédeszközök nélkül. Nincs szükség külső hivatkozásokra – csak a kódra és a mögötte álló logikára. + +--- + +## Amire szükséged lesz + +- .NET 6.0 vagy újabb (az API működik .NET Core‑on és .NET Framework‑ön is) +- Aspose.HTML for .NET (a `Aspose.Html` NuGet csomag) – ez végzi a nehéz HTML renderelést. +- Egy kis ismeret a `System.IO.Compression`‑ról – a beépített `ZipArchive` osztályt fogjuk használni. + +Ennyi. Vegyél elő egy szövegszerkesztőt vagy a Visual Studio‑t, és vágjunk bele. + +--- + +## 1. lépés: Egyedi ResourceHandler beállítása a stream ZIP‑be írásához + +Amikor az Aspose.HTML egy dokumentumot ment, egy `ResourceHandler`‑t kér egy `Stream`‑ért, ahová minden erőforrás (képek, CSS stb.) kerül. A `ResourceHandler` alosztályozásával minden erőforrást egy **zip archive**‑ba irányíthatunk a fájlrendszer helyett. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**Miért érdekelhet:** Az HTML memóriában tartása lehetővé teszi, hogy később **save html to zip**‑et hajts végre anélkül, hogy újra le kellene olvasni a lemezről. Emellett egységtesztelést is egyszerűvé tesz. + +--- + +## 4. lépés: HTML renderelése PNG‑be és tárolása a ZIP‑ben + +Most jön a tutorial szíve – a dokumentum renderelése és a keletkezett stream közvetlen áramoltatása az archívumba. + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### Várható eredmény + +A program befejezése után a futtatható mappában egy `result.zip` nevű fájlt találsz. Nyisd meg, és a következőket fogod látni: + +- **page.png** – a HTML raszteres pillanatképe (a **render html to png** kimenetünk). +- **index.html** (vagy bármilyen név, amit az Aspose.HTML hozzárendel) – az eredeti markup, amely megerősíti, hogy sikeresen **save html to zip**‑t hajtottunk végre. + +A zip‑et bármely archívumkezelővel kibontva megtekintheted a PNG‑t, hogy ellenőrizd a renderelés minőségét. + +--- + +## 5. lépés: Szélhelyzetek és gyakori buktatók kezelése + +| Szituáció | Mire figyelj | Javasolt megoldás | +|-----------|--------------|-------------------| +| **Nagy HTML oldalak** | Memóriahasználat megugrik, mivel a teljes PNG‑t egy `MemoryStream`‑ben tartjuk. | Válts át egy ideiglenes fájl stream‑re (`FileStream`), ha a kép néhány megabájtnál nagyobb. | +| **Létező zip fájl** | A zip `Update` módban történő megnyitása megőrzi a meglévő bejegyzéseket, de a duplikált nevek kivételt okoznak. | Töröld előbb a bejegyzést: `zipArchive.GetEntry(name)?.Delete();` mielőtt újat hoznál létre. | +| **Nem támogatott CSS** | Az Aspose.HTML bizonyos modern CSS funkciókat figyelmen kívül hagyhat. | Teszteld a renderelést helyben; kritikus elrendezéshez használj inline stílusokat. | +| **Szálbiztonság** | A `ZipArchive` nem szál‑biztonságos. | Tartsd a renderelést és a zip‑elést egyetlen szálon, vagy használj külön archívumokat szálanként. | + +**Miért fontosak:** A **write stream to zip** korlátainak ismerete segít elkerülni a futásidejű összeomlásokat, és robusztusabbá teszi az alkalmazást, amikor később több tucat oldalt kell batch‑feldolgozni. + +--- + +## 6. lépés: Teljes, azonnal futtatható példa + +Az alábbiakban a teljes programot találod, amelyet beilleszthetsz egy konzolprojektbe. Tartalmazza az összes using direktívát, megjegyzést és a megfelelő erőforrás‑kezelési mintákat. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +Futtasd a programot (`dotnet run`), és láthatod a megerősítő üzenetet. Nyisd meg a `result.zip`‑et, hogy ellenőrizd, mindkét fájl jelen van. + +--- + +## Gyakran Ismételt Kérdések (GYIK) + +**Q: Működik ez a .NET Framework 4.7‑en?** +A: Igen. A `System.IO.Compression` API stabil már a .NET 4.5‑től, és az Aspose.HTML támogatja a teljes .NET Framework‑ot. Csak hivatkozz a megfelelő Aspose.HTML DLL‑re. + +**Q: Hozzáadhatok további erőforrásokat, például CSS‑t vagy betűtípusokat?** +A: Természetesen. Az HTML‑ben hivatkozott minden külső erőforrás aktiválja a `HandleResource`‑t, így automatikusan ugyanabban a zip‑ben landolnak. + +**Q: Mi van, ha másik képformátumra van szükségem (pl. JPEG)?** +A: Módosítsd a `ImageRenderer` konstruktorát, hogy `JpegRenderer`‑t célozzon, vagy állítsd be az `ImageFormat`‑ot az `ImageRenderingOptions`‑ban. A pipeline többi része változatlan marad. + +**Q: Van a zip jelszóval védve?** +A: A beépített `ZipArchive` nem támogat titkosítást. Ehhez használj egy harmadik fél könyvtárat, például a `SharpZipLib`‑et, és ennek megfelelően módosítsd a `ZipHandler`‑t. + +--- + +## Összegzés + +Most már + +{{< /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/working-with-html-documents/_index.md b/html/hungarian/net/working-with-html-documents/_index.md index 81c4e72f3..e1b5b162c 100644 --- a/html/hungarian/net/working-with-html-documents/_index.md +++ b/html/hungarian/net/working-with-html-documents/_index.md @@ -37,8 +37,11 @@ Miután megértette az alapokat, mélyebbre ásunk az alkotás folyamatában. Eb Most emeljük tudását a következő szintre. A HTML-dokumentumok szerkesztése gyakori feladat a webfejlesztők számára, és az Aspose.HTML jelentősen leegyszerűsíti ezt a folyamatot. Ebben a részben a dokumentumok létrehozásával, manipulálásával és stílusával foglalkozunk. Felfedezi, hogyan javíthatja webtartalma megjelenését és funkcionalitását, hogy vonzóvá és felhasználóbaráttá tegye azt. ### [HTML mentése C#-ban – Teljes útmutató egy egyéni erőforráskezelő használatával](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) + ### [Hogyan tegyünk félkövér címet CSS‑el és C#‑val – Teljes lépésről‑lépésre útmutató](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) +### [HTML mentése C#-ban egy egyéni erőforráskezelővel](./how-to-save-html-in-c-with-custom-resource-handler/) + Ismerje meg, hogyan formázhatja félkövérre a HTML‑címeket CSS‑sel és C#‑kóddal, részletes példákkal. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/hungarian/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/hungarian/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..aaf7276b3 --- /dev/null +++ b/html/hungarian/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-02-14 +description: Ismerje meg, hogyan menthet HTML-t az Aspose.HTML segítségével C#-ban. + Ez a lépésről‑lépésre útmutató bemutatja, hogyan írhat HTML-fájlt, hogyan tölthet + be HTML-t karakterláncból, hogyan konvertálhat HTML-t fájlba, és hogyan használhat + egy egyéni erőforráskezelőt. +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: hu +og_description: Hogyan menthetünk HTML-t gyorsan az Aspose.HTML segítségével. Tanulja + meg, hogyan írjon HTML-fájlt, hogyan töltse be a HTML-t karakterláncból, hogyan + konvertálja a HTML-t fájlba, és hogyan valósítson meg egy egyéni erőforráskezelőt. +og_title: Hogyan menthetünk HTML-t C#-ban – Teljes útmutató +tags: +- Aspose.HTML +- C# +- File I/O +title: Hogyan menthetünk HTML-t C#-ban egy egyedi erőforráskezelővel +url: /hu/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan menthetünk HTML-t C#‑ban egy egyedi erőforráskezelővel + +Gondoltad már, **hogyan menthetünk html‑t** közvetlenül egy karakterláncból anélkül, hogy előbb a lemezre írnánk? Nem vagy egyedül – sok fejlesztő ütközik ebbe a helyzetbe, amikor gyorsan kell jelentéseket generálni vagy tartalmat streamelni egy böngészőnek. A jó hír, hogy az Aspose.HTML a teljes folyamatot gyerekjátékká teszi, és még saját tárolási logikát is beilleszthetsz egy egyedi erőforráskezelővel. + +Ebben az útmutatóban végigvezetünk a HTML betöltésén egy karakterláncból, egy egyedi kezelő konfigurálásán, és végül a HTML fájlba írásán. A végére meg fogod tudni **írni html fájlt**, **betölteni html‑t karakterláncból**, **konvertálni html‑t fájlba**, és **egyedi erőforráskezelőt** készíteni, amely bármilyen tárolási forgatókönyvre illeszkedik. + +> **Mit kapsz:** egy teljes, azonnal futtatható C# programot, minden sor magyarázatát, valamint tippeket a megoldás kiterjesztéséhez felhőalapú tárolásra vagy memória‑csővezetékekre. + +## Előfeltételek + +- .NET 6.0 vagy újabb (az API ugyanúgy működik a .NET Framework 4.6+ verziókon) +- Aspose.HTML for .NET NuGet csomag (`Aspose.Html`) +- Alapvető C# szintaxis ismerete (ha jártas vagy a `using` utasításokban, már készen állsz) + +Külön konfigurációs fájlra nincs szükség – csak egy friss konzolprojekt és az alábbi kód. + + + +## 1. lépés: HTML betöltése egy karakterláncból (a „load html from string” rész) + +Először is szükségünk van egy `HTMLDocument` példányra. Az Aspose.HTML lehetővé teszi, hogy a nyers markup‑ot közvetlenül a konstruktorba adjuk, ami azt jelenti, hogy **load html from string**‑t anélkül tudunk végrehajtani, hogy köztes fájlra lenne szükség. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +Mengapa `HTMLDocument` dan bukan string biasa? Aspose mem-parsing markup, membangun DOM, dan menerapkan CSS persis seperti yang dilakukan browser. Itulah inti dari **how to render html** dengan benar, terutama ketika Anda kemudian menambahkan stylesheet eksternal atau konten yang dihasilkan JavaScript. + +## Langkah 3 – Mengonfigurasi Opsi Rendering Gambar (Convert HTML to Image) + +Selanjutnya kami memberi tahu renderer ukuran, latar belakang, dan kualitas yang diinginkan. Pengaturan ini langsung memengaruhi PNG akhir, jadi sesuaikan sesuai kebutuhan Anda. + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*Edge case:* Jika Anda memerlukan latar belakang transparan (mis., untuk thumbnail overlay), set `BackgroundColor = Color.Transparent` dan pastikan format output mendukung alpha (PNG mendukung). + +## Langkah 4 – Terapkan Opsi Font Global (Opsional tetapi Berguna) + +Kadang-kadang Anda ingin setiap potongan teks dalam dokumen menjadi tebal, miring, atau menggunakan font web tertentu. Aspose memungkinkan Anda mengatur `DefaultFontOptions` pada dokumen. + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +Ini adalah cara cepat untuk **convert HTML to image** dengan gaya seragam, tanpa menyentuh CSS tiap elemen. Jika Anda kemudian memuat CSS eksternal yang mengatur `font-weight`‑nya sendiri, aturan tersebut akan menimpa pengaturan global—persis seperti yang dilakukan browser. + +## Langkah 5 – Render dan Simpan PNG (Save HTML as PNG) + +Sekarang proses berat terjadi. Kami membuat `ImageRenderer`, mengarahkannya ke `HTMLDocument`, memberi aliran output, dan memanggil `Render()`. + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +Pemanggilan ini bersifat sinkron dan memblokir hingga gambar selesai ditulis. Untuk halaman besar Anda mungkin ingin menjalankannya di thread latar belakang, tetapi untuk kebanyakan skenario pembuatan thumbnail panggilan blokir sudah cukup. + +**Expected result:** sebuah file bernama `output.png` (800 × 600) yang berisi kata “Bold text” berwarna hitam, dengan font bergaya tebal pada kanvas putih. + +## Langkah 6 – Verifikasi Output (Render HTML to PNG Checklist) + +Setelah kode dijalankan, buka PNG di penampil gambar apa pun. Anda harus melihat: + +- Dimensi tepat yang Anda set (`Width` × `Height`). +- Latar belakang putih (atau transparan jika Anda mengubahnya). +- Teks tebal dirender dengan bersih, berkat antialiasing dan hinting. + +Jika teks terlihat buram, periksa kembali `UseAntialiasing` dan `UseHinting`. Jika file tidak ada, pastikan proses memiliki izin menulis ke folder target. + +### Pertanyaan Umum & Kasus Tepi + +| Question | Answer | +|----------|--------| +| **Bisakah saya merender halaman web lengkap dengan CSS/JS eksternal?** | Ya. Muat HTML dari URL (`new HTMLDocument("https://example.com")`) atau baca file dari disk, dan Aspose akan mengambil stylesheet yang terhubung secara otomatis (asalkan dapat diakses). | +| **Bagaimana jika saya membutuhkan DPI lebih tinggi untuk cetak?** | Setel `renderingOptions.DpiX` dan `renderingOptions.DpiY` (default 96). DPI lebih tinggi menghasilkan file lebih besar tetapi output lebih tajam. | +| **Bagaimana cara menangani elemen SVG atau Canvas?** | Aspose.HTML mendukung SVG secara native. Canvas dirender berdasarkan JavaScript yang dijalankan selama tata letak, jadi pastikan Anda mengaktifkan eksekusi skrip (`htmlDocument.EnableJavaScript = true`). | +| **Apakah ada cara untuk batch‑convert banyak file HTML?** | Bungkus logika rendering dalam loop `foreach`, gunakan kembali instance `ImageRenderingOptions` yang sama untuk kecepatan. | +| **Bisakah saya output JPEG alih-alih PNG?** | Gunakan `JpegRenderingOptions` dan ubah ekstensi file menjadi `.jpg`. Sisanya kode tetap sama. | + +## Contoh Lengkap yang Berfungsi (Semua Langkah dalam Satu File) + +Berikut adalah program lengkap yang siap disalin‑tempel. Program ini dapat dikompilasi dengan `dotnet run` dan menghasilkan PNG yang dijelaskan di atas. + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +Jalankan program, dan Anda akan melihat pesan konsol yang mengonfirmasi pembuatan file. Buka `output.png` dan verifikasi teks tebal—voilà, Anda baru saja **saved HTML as PNG + +{{< /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..96db6781a 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. +### [Render HTML ke PNG dan Simpan ke ZIP dengan C# – Panduan Lengkap](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +Pelajari cara merender HTML menjadi PNG dan menyimpannya ke dalam file ZIP menggunakan C# dengan panduan lengkap Aspose.HTML. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/indonesian/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/indonesian/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..0578b6bf1 --- /dev/null +++ b/html/indonesian/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,265 @@ +--- +category: general +date: 2026-02-14 +description: Render HTML ke PNG dalam C# dan pelajari cara mengonversi HTML menjadi + gambar, menulis stream ke ZIP, serta membuat arsip ZIP C# dengan cepat. +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: id +og_description: Render HTML ke PNG dalam C# dan temukan cara mengonversi HTML menjadi + gambar, menulis stream ke ZIP, serta membuat arsip zip C# secara efisien. +og_title: Render HTML ke PNG dan Simpan ke ZIP dengan C# – Panduan Lengkap +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: Render HTML ke PNG dan Simpan ke ZIP dengan C# – Panduan Lengkap +url: /id/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Render HTML ke PNG dan Simpan ke ZIP dengan C# – Panduan Lengkap + +Pernah membutuhkan untuk **render HTML ke PNG** tetapi tidak yakin bagaimana cara menyimpan gambar dan markup asli bersama-sama? Anda tidak sendirian—banyak pengembang mengalami kendala yang sama saat membangun alat pelaporan, thumbnail email, atau paket dokumentasi offline. + +Berita baik? Dalam tutorial ini kami akan membahas satu solusi yang berdiri sendiri yang **mengonversi HTML ke gambar**, menulis aliran hasil ke dalam file ZIP, dan bahkan menyimpan HTML sumber bersamaan dengannya. Pada akhir tutorial, Anda akan memiliki program yang dapat dijalankan yang melakukan semuanya dari awal hingga akhir, dan Anda akan memahami mengapa setiap bagian penting. + +Kami juga akan menambahkan tips tentang **write stream to zip**, membahas nuansa **create zip archive c#**, dan menunjukkan cara **save html to zip** tanpa utilitas zip pihak ketiga. Tidak diperlukan referensi eksternal—hanya kode dan penjelasan di baliknya. + +--- + +## Apa yang Anda Butuhkan + +- .NET 6.0 atau lebih baru (API ini juga berfungsi pada .NET Core dan .NET Framework) +- Aspose.HTML untuk .NET (paket NuGet `Aspose.Html`) – menangani proses berat rendering HTML. +- Sedikit familiaritas dengan `System.IO.Compression` – kami akan menggunakan kelas built‑in `ZipArchive`. + +Itu saja. Ambil editor teks atau Visual Studio, dan mari kita mulai. + +--- + +## Langkah 1: Siapkan Custom ResourceHandler untuk Menulis Stream ke ZIP + +Ketika Aspose.HTML menyimpan dokumen, ia meminta `ResourceHandler` untuk sebuah `Stream` dimana setiap sumber daya (gambar, CSS, dll.) harus disimpan. Dengan membuat subclass `ResourceHandler` kita dapat mengarahkan setiap sumber daya ke dalam **zip archive** alih‑alih sistem file. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**Mengapa ini penting:** Menyimpan HTML di memori berarti Anda dapat **save html to zip** nanti tanpa harus membaca dari disk lagi. Ini juga memudahkan unit testing. + +## Langkah 4: Render HTML ke PNG dan Simpan ke ZIP + +Sekarang datang inti tutorial—render dokumen dan mengalirkan stream hasil langsung ke dalam arsip. + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### Hasil yang Diharapkan + +Setelah program selesai, Anda akan menemukan file bernama `result.zip` di folder executable. Buka file tersebut dan Anda akan melihat: + +- **page.png** – snapshot raster dari HTML (output **render html to png** kami). +- **index.html** (atau nama apa pun yang diberikan Aspose.HTML) – markup asli, mengonfirmasi bahwa kami berhasil **save html to zip**. + +Anda dapat mengekstrak zip dengan manager arsip apa pun dan melihat PNG untuk memverifikasi kualitas rendering. + +## Langkah 5: Menangani Kasus Tepi dan Jebakan Umum + +| Situation | What to Watch For | Recommended Fix | +|-----------|-------------------|-----------------| +| **Large HTML pages** | Konsumsi memori melonjak karena kami menyimpan seluruh PNG dalam `MemoryStream`. | Beralih ke stream file sementara (`FileStream`) jika gambar melebihi beberapa megabyte. | +| **Existing zip file** | Membuka zip dalam mode `Update` akan mempertahankan entri yang ada, tetapi nama duplikat menyebabkan pengecualian. | Hapus entri terlebih dahulu: `zipArchive.GetEntry(name)?.Delete();` sebelum membuat yang baru. | +| **Unsupported CSS** | Aspose.HTML mungkin mengabaikan beberapa fitur CSS modern. | Uji rendering secara lokal; gunakan fallback ke style inline untuk tata letak penting. | +| **Thread safety** | `ZipArchive` tidak thread‑safe. | Lakukan rendering dan zipping pada satu thread atau gunakan arsip terpisah per thread. | + +**Mengapa ini penting:** Mengetahui batasan **write stream to zip** membantu Anda menghindari crash runtime dan menjaga aplikasi tetap kuat ketika Anda nanti memperluas untuk memproses puluhan halaman secara batch. + +## Langkah 6: Contoh Lengkap yang Siap Dijalan + +Berikut adalah program lengkap yang dapat Anda salin‑tempel ke proyek console. Program ini mencakup semua directive using, komentar, dan pola disposisi yang tepat. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +Jalankan program (`dotnet run`) dan Anda akan melihat pesan konfirmasi. Buka `result.zip` untuk memastikan kedua file ada. + +## Pertanyaan yang Sering Diajukan (FAQ) + +**Q: Apakah ini bekerja pada .NET Framework 4.7?** +A: Ya. API `System.IO.Compression` telah stabil sejak .NET 4.5, dan Aspose.HTML mendukung .NET Framework penuh. Cukup referensikan DLL Aspose.HTML yang sesuai. + +**Q: Bisakah saya menambahkan lebih banyak sumber daya seperti CSS atau font?** +A: Tentu saja. Setiap sumber daya eksternal yang direferensikan oleh HTML akan memicu `HandleResource`, sehingga mereka secara otomatis akan masuk ke zip yang sama. + +**Q: Bagaimana jika saya membutuhkan format gambar lain (misalnya JPEG)?** +A: Ubah konstruktor `ImageRenderer` untuk menargetkan `JpegRenderer` atau set `ImageFormat` dalam `ImageRenderingOptions`. Sisa pipeline tetap sama. + +**Q: Apakah zip dilindungi password?** +A: `ZipArchive` bawaan tidak mendukung enkripsi. Untuk itu, pertimbangkan library pihak ketiga seperti `SharpZipLib` dan sesuaikan `ZipHandler` sesuai kebutuhan. + +## Kesimpulan + +Anda sekarang + +{{< /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/working-with-html-documents/_index.md b/html/indonesian/net/working-with-html-documents/_index.md index b7ad357be..a72ed1ac9 100644 --- a/html/indonesian/net/working-with-html-documents/_index.md +++ b/html/indonesian/net/working-with-html-documents/_index.md @@ -37,8 +37,11 @@ Setelah Anda memahami dasar-dasarnya, kita akan mempelajari lebih dalam proses p Sekarang, mari tingkatkan keterampilan Anda ke tingkat berikutnya. Mengedit dokumen HTML merupakan tugas umum bagi pengembang web, dan Aspose.HTML menyederhanakan proses ini secara signifikan. Di bagian ini, kami akan membahas pembuatan, manipulasi, dan penataan dokumen. Anda akan menemukan cara meningkatkan tampilan dan fungsionalitas konten web Anda, membuatnya menarik dan mudah digunakan. ### [Cara Menyimpan HTML di C# – Panduan Lengkap Menggunakan Penangan Sumber Daya Kustom](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) + ### [Cara Membuat Heading Tebal dengan CSS & C# – Panduan Lengkap Langkah demi Langkah](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) +### [Cara Menyimpan HTML di C# dengan Penangan Sumber Daya Kustom](./how-to-save-html-in-c-with-custom-resource-handler/) + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/indonesian/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/indonesian/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..5efe59e02 --- /dev/null +++ b/html/indonesian/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,244 @@ +--- +category: general +date: 2026-02-14 +description: Pelajari cara menyimpan HTML menggunakan Aspose.HTML di C#. Panduan langkah + demi langkah ini menunjukkan cara menulis file HTML, memuat HTML dari string, mengonversi + HTML ke file, dan menggunakan penangan sumber daya khusus. +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: id +og_description: Cara menyimpan HTML dengan cepat menggunakan Aspose.HTML. Pelajari + cara menulis file HTML, memuat HTML dari string, mengonversi HTML ke file, dan mengimplementasikan + penangan sumber daya khusus. +og_title: Cara Menyimpan HTML di C# – Panduan Lengkap +tags: +- Aspose.HTML +- C# +- File I/O +title: Cara Menyimpan HTML di C# dengan Penangan Sumber Daya Kustom +url: /id/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +spaces changed. + +Now produce final content.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Menyimpan HTML di C# dengan Penangan Sumber Daya Kustom + +Pernah bertanya-tanya **bagaimana cara menyimpan html** langsung dari string tanpa menyentuh disk terlebih dahulu? Anda tidak sendirian—banyak pengembang mengalami masalah ini ketika mereka perlu menghasilkan laporan secara langsung atau mengalirkan konten ke browser. Kabar baiknya, Aspose.HTML membuat seluruh proses menjadi sangat mudah, dan Anda bahkan dapat menyambungkan logika penyimpanan Anda sendiri dengan penangan sumber daya kustom. + +Dalam tutorial ini kami akan membahas cara memuat HTML dari string, mengonfigurasi penangan kustom, dan akhirnya menulis HTML ke file. Pada akhir tutorial Anda akan tahu cara **write html file**, cara **load html from string**, cara **convert html to file**, dan cara membuat **custom resource handler** yang cocok untuk skenario penyimpanan apa pun. + +> **Apa yang akan Anda dapatkan:** program C# lengkap yang siap dijalankan, penjelasan setiap baris, dan tips untuk memperluas solusi ke penyimpanan cloud atau pipeline dalam memori. + +## Prasyarat + +- .NET 6.0 atau lebih baru (API bekerja sama pada .NET Framework 4.6+) +- Paket NuGet Aspose.HTML untuk .NET (`Aspose.Html`) +- Pemahaman dasar tentang sintaks C# (jika Anda nyaman dengan pernyataan `using`, Anda sudah siap) + +Tidak diperlukan file konfigurasi tambahan—hanya proyek konsol baru dan kode di bawah ini. + + + +## Langkah 1: Memuat HTML dari String (bagian “load html from string”) + +Pertama-tama—kita membutuhkan instance `HTMLDocument`. Aspose.HTML memungkinkan Anda memasukkan markup mentah langsung ke konstruktor, yang berarti Anda dapat **load html from string** tanpa file perantara. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +Perché `HTMLDocument` e non una semplice stringa? Aspose analizza il markup, costruisce un DOM e applica il CSS esattamente come farebbe un browser. Questo è il fulcro di **come renderizzare html** correttamente, specialmente quando aggiungi successivamente fogli di stile esterni o contenuti generati da JavaScript. + +## Passo 3 – Configura le Opzioni di Rendering Immagine (Convertire HTML in Immagine) + +Successivamente indichiamo al renderer la dimensione, lo sfondo e la qualità desiderati. Queste impostazioni influenzano direttamente il PNG finale, quindi regolale in base al tuo caso d'uso. + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*Caso limite:* Se ti serve uno sfondo trasparente (ad es., per miniature sovrapposte), imposta `BackgroundColor = Color.Transparent` e assicurati che il formato di output supporti l'alpha (PNG lo fa). + +## Passo 4 – Applica Opzioni di Font Globali (Opzionale ma Utile) + +A volte vuoi che ogni pezzo di testo nel documento sia in grassetto, corsivo, o un particolare web font. Aspose ti permette di impostare `DefaultFontOptions` sul documento. + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +Questo è un modo rapido per **convertire HTML in immagine** con uno stile uniforme, senza modificare il CSS di ogni elemento. Se in seguito carichi CSS esterni che impostano il proprio `font-weight`, quelle regole sovrascriveranno l'impostazione globale—esattamente come si comporta un browser. + +## Passo 5 – Renderizza e Salva il PNG (Salva HTML come PNG) + +Ora avviene il lavoro pesante. Creiamo un `ImageRenderer`, lo puntiamo al `HTMLDocument`, gli forniamo lo stream di output e chiamiamo `Render()`. + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +La chiamata è sincrona e blocca fino a quando l'immagine è completamente scritta. Per pagine grandi potresti volerla eseguire su un thread in background, ma per la maggior parte degli scenari di generazione di miniature la chiamata bloccante va bene. + +**Risultato atteso:** un file chiamato `output.png` (800 × 600) contenente la parola “Bold text” in nero, con font in grassetto su una tela bianca. + +## Passo 6 – Verifica l'Uscita (Checklist Render HTML in PNG) + +Dopo che il codice è stato eseguito, apri il PNG in qualsiasi visualizzatore di immagini. Dovresti vedere: + +- Le esatte dimensioni impostate (`Width` × `Height`). +- Sfondo bianco (o trasparente se lo hai cambiato). +- Testo in grassetto renderizzato in modo pulito, grazie all'antialiasing e all'hinting. + +Se il testo appare sfocato, ricontrolla `UseAntialiasing` e `UseHinting`. Se il file manca, assicurati che il processo abbia i permessi di scrittura sulla cartella di destinazione. + +### Domande Frequenti & Casi Limite + +| Domanda | Risposta | +|----------|--------| +| **Posso renderizzare una pagina web completa con CSS/JS esterni?** | Sì. Carica l'HTML da un URL (`new HTMLDocument("https://example.com")`) o leggi il file dal disco, e Aspose recupererà automaticamente i fogli di stile collegati (a condizione che siano raggiungibili). | +| **E se ho bisogno di un DPI più alto per la stampa?** | Imposta `renderingOptions.DpiX` e `renderingOptions.DpiY` (il valore predefinito è 96). Un DPI più alto genera file più grandi ma un output più nitido. | +| **Come gestire gli elementi SVG o Canvas?** | Aspose.HTML supporta nativamente SVG. Canvas viene renderizzato in base al JavaScript eseguito durante il layout, quindi assicurati di abilitare l'esecuzione degli script (`htmlDocument.EnableJavaScript = true`). | +| **Esiste un modo per convertire in batch molti file HTML?** | Racchiudi la logica di rendering in un ciclo `foreach`, riutilizzando la stessa istanza di `ImageRenderingOptions` per velocità. | +| **Posso generare JPEG invece di PNG?** | Usa `JpegRenderingOptions` e cambia l'estensione del file in `.jpg`. Il resto del codice rimane invariato. | + +## Esempio Completo Funzionante (Tutti i Passi in Un Solo File) + +Di seguito trovi il programma completo, pronto per il copia‑incolla. Compila con `dotnet run` e produce il PNG descritto sopra. + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +Esegui il programma, e vedrai il messaggio della console che conferma la creazione del file. Apri `output.png` e verifica il testo in grassetto—voilà, hai appena **salvato HTML come PNG**. + +{{< /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..033f1a6c3 100644 --- a/html/italian/net/rendering-html-documents/_index.md +++ b/html/italian/net/rendering-html-documents/_index.md @@ -50,6 +50,8 @@ Scopri come convertire facilmente file HTML in PNG usando Aspose.HTML con questa Scopri come convertire facilmente file HTML in PNG usando Aspose.HTML per .NET con questa guida dettagliata. ### [Crea PNG da HTML – Guida completa al rendering C#](./create-png-from-html-full-c-rendering-guide/) Scopri come generare PNG da HTML usando Aspose.HTML per .NET con una guida completa passo passo in C#. +### [Renderizza HTML in PNG e salva in ZIP con C# – Guida completa](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +Scopri come convertire HTML in PNG e comprimere i risultati in un file ZIP usando C# e Aspose.HTML. ### [Renderizza EPUB come XPS in .NET con Aspose.HTML](./render-epub-as-xps/) Scopri come creare e rendere documenti HTML con Aspose.HTML per .NET in questo tutorial completo. Immergiti nel mondo della manipolazione HTML, del web scraping e altro ancora. ### [Timeout di rendering in .NET con Aspose.HTML](./rendering-timeout/) diff --git a/html/italian/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/italian/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..2de304100 --- /dev/null +++ b/html/italian/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-02-14 +description: Renderizza HTML in PNG con C# e impara a convertire HTML in immagine, + scrivere lo stream in ZIP e creare rapidamente un archivio zip con C#. +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: it +og_description: Renderizza HTML in PNG con C# e scopri come convertire HTML in immagine, + scrivere lo stream in ZIP e creare un archivio zip con C# in modo efficiente. +og_title: Converti HTML in PNG e salva in ZIP con C# – Guida completa +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: Renderizza HTML in PNG e salva in ZIP con C# – Guida completa +url: /it/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +needed. + +Let's craft final answer.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Renderizzare HTML in PNG e Salvare in ZIP con C# – Guida Completa + +Ti è mai capitato di dover **renderizzare HTML in PNG** ma non eri sicuro di come mantenere l'immagine e il markup originale insieme? Non sei solo—molti sviluppatori incontrano esattamente questo ostacolo quando costruiscono strumenti di reporting, miniature per email o pacchetti di documentazione offline. + +La buona notizia? In questo tutorial percorreremo una soluzione unica e autonoma che **converte HTML in immagine**, scrive lo stream risultante in un file ZIP e conserva anche l'HTML sorgente accanto ad esso. Alla fine avrai un programma eseguibile che fa tutto dall'inizio alla fine, e comprenderai perché ogni componente è importante. + +Inseriremo anche suggerimenti su **write stream to zip**, discuteremo le sfumature di **create zip archive c#** e ti mostreremo come **save html to zip** senza alcuna utility zip di terze parti. Nessun riferimento esterno necessario—solo il codice e il ragionamento alla base. + +--- + +## Cosa ti servirà + +- .NET 6.0 o versioni successive (l'API funziona anche su .NET Core e .NET Framework) +- Aspose.HTML per .NET (il pacchetto NuGet `Aspose.Html`) – gestisce il lavoro pesante del rendering HTML. +- Una minima familiarità con `System.IO.Compression` – utilizzeremo la classe integrata `ZipArchive`. + +È tutto. Prendi un editor di testo o Visual Studio, e immergiamoci. + +--- + +## Passo 1: Configura un ResourceHandler personalizzato per scrivere lo stream in ZIP + +Quando Aspose.HTML salva un documento, richiede a un `ResourceHandler` un `Stream` dove inserire ogni risorsa (immagini, CSS, ecc.). Sottoclassando `ResourceHandler` possiamo indirizzare ogni risorsa in un **zip archive** invece che nel file system. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**Perché potrebbe interessarti:** Tenere l'HTML in memoria significa che puoi **save html to zip** in seguito senza dover leggere nuovamente dal disco. Inoltre rende i test unitari un gioco da ragazzi. + +--- + +## Passo 4: Renderizza l'HTML in PNG e Salvalo nello ZIP + +Ora arriva il cuore del tutorial—renderizzare il documento e inviare lo stream risultante direttamente nell'archivio. + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### Risultato Atteso + +Dopo che il programma termina, troverai un file chiamato `result.zip` nella cartella dell'eseguibile. Aprilo e vedrai: + +- **page.png** – un'istantanea rasterizzata dell'HTML (il nostro output **render html to png**). +- **index.html** (o qualunque nome assegni Aspose.HTML) – il markup originale, confermando che abbiamo salvato con successo **save html to zip**. + +Puoi estrarre lo zip con qualsiasi gestore di archivi e visualizzare il PNG per verificare la qualità del rendering. + +--- + +## Passo 5: Gestione dei Casi Limite e delle Trappole Comuni + +| Situation | What to Watch For | Recommended Fix | +|-----------|-------------------|-----------------| +| **Pagine HTML grandi** | Il consumo di memoria aumenta perché manteniamo l'intero PNG in un `MemoryStream`. | Passa a uno stream di file temporaneo (`FileStream`) se l'immagine supera qualche megabyte. | +| **File zip esistente** | Aprire un zip in modalità `Update` preserva le voci esistenti, ma i nomi duplicati causano eccezioni. | Elimina prima la voce: `zipArchive.GetEntry(name)?.Delete();` prima di crearne una nuova. | +| **CSS non supportato** | Aspose.HTML potrebbe ignorare alcune funzionalità CSS moderne. | Testa il rendering localmente; ricorri a stili inline per layout critici. | +| **Sicurezza dei thread** | `ZipArchive` non è thread‑safe. | Mantieni il rendering e lo zip su un singolo thread o usa archivi separati per thread. | + +**Perché è importante:** Conoscere i limiti di **write stream to zip** ti aiuta a evitare crash a runtime e mantiene la tua applicazione robusta quando in seguito scalerai per batch‑processare decine di pagine. + +--- + +## Passo 6: Esempio Completo Pronto‑da‑Eseguire + +Di seguito trovi il programma completo che puoi copiare‑incollare in un progetto console. Include tutte le direttive using, i commenti e i corretti pattern di disposal. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +Esegui il programma (`dotnet run`) e vedrai il messaggio di conferma. Apri `result.zip` per confermare che entrambi i file siano presenti. + +--- + +## Domande Frequenti (FAQ) + +**Q: Funziona su .NET Framework 4.7?** +A: Sì. L'API `System.IO.Compression` è stabile da .NET 4.5, e Aspose.HTML supporta l'intero .NET Framework. Basta referenziare il DLL Aspose.HTML appropriato. + +**Q: Posso aggiungere più risorse come CSS o font?** +A: Assolutamente. Qualsiasi risorsa esterna referenziata dall'HTML attiverà `HandleResource`, quindi finirà automaticamente nello stesso zip. + +**Q: E se ho bisogno di un formato immagine diverso (es. JPEG)?** +A: Cambia il costruttore `ImageRenderer` per puntare a un `JpegRenderer` o imposta `ImageFormat` in `ImageRenderingOptions`. Il resto della pipeline rimane invariato. + +**Q: Lo zip è protetto da password?** +A: Il `ZipArchive` integrato non supporta la crittografia. Per questo, considera una libreria di terze parti come `SharpZipLib` e adatta il `ZipHandler` di conseguenza. + +## Conclusione + +Ora + +{{< /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/working-with-html-documents/_index.md b/html/italian/net/working-with-html-documents/_index.md index 0d466ec95..5be58ee6f 100644 --- a/html/italian/net/working-with-html-documents/_index.md +++ b/html/italian/net/working-with-html-documents/_index.md @@ -37,6 +37,7 @@ Una volta apprese le basi, approfondiremo il processo di creazione. In questa se Ora, portiamo le tue competenze al livello successivo. La modifica di documenti HTML è un compito comune per gli sviluppatori web e Aspose.HTML semplifica notevolmente questo processo. In questa sezione, parleremo della creazione, manipolazione e stile dei documenti. Scoprirai come migliorare l'aspetto e la funzionalità dei tuoi contenuti web, rendendoli accattivanti e facili da usare. ### [Come salvare HTML in C# – Guida completa con un gestore di risorse personalizzato](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) +### [Come salvare HTML in C# con gestore di risorse personalizzato](./how-to-save-html-in-c-with-custom-resource-handler/) ### [Come rendere grassetto un'intestazione con CSS e C# – Guida completa passo‑passo](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/italian/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/italian/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..6abe7d384 --- /dev/null +++ b/html/italian/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,246 @@ +--- +category: general +date: 2026-02-14 +description: Scopri come salvare HTML usando Aspose.HTML in C#. Questa guida passo + passo mostra come scrivere un file HTML, caricare HTML da una stringa, convertire + HTML in file e utilizzare un gestore di risorse personalizzato. +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: it +og_description: Come salvare rapidamente HTML con Aspose.HTML. Impara a scrivere un + file HTML, caricare HTML da una stringa, convertire HTML in file e implementare + un gestore di risorse personalizzato. +og_title: Come salvare HTML in C# – Guida completa +tags: +- Aspose.HTML +- C# +- File I/O +title: Come salvare HTML in C# con gestore di risorse personalizzato +url: /it/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +markdown with same structure. + +Let's write. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come salvare HTML in C# con un gestore di risorse personalizzato + +Ti sei mai chiesto **come salvare html** direttamente da una stringa senza toccare il disco prima? Non sei solo: molti sviluppatori incontrano questo ostacolo quando devono generare report al volo o trasmettere contenuti a un browser. La buona notizia è che Aspose.HTML rende l’intero processo un gioco da ragazzi, e puoi persino inserire la tua logica di archiviazione con un gestore di risorse personalizzato. + +In questo tutorial vedremo come caricare HTML da una stringa, configurare un gestore personalizzato e infine scrivere l’HTML su file. Alla fine saprai **scrivere file html**, **caricare html da stringa**, **convertire html in file** e creare un **gestore di risorse personalizzato** adatto a qualsiasi scenario di archiviazione. + +> **Cosa otterrai:** un programma C# completo, pronto per l’esecuzione, spiegazioni di ogni riga e consigli per estendere la soluzione a storage cloud o pipeline in‑memory. + +## Prerequisiti + +- .NET 6.0 o versioni successive (l’API funziona allo stesso modo su .NET Framework 4.6+) +- Pacchetto NuGet Aspose.HTML for .NET (`Aspose.Html`) +- Una conoscenza di base della sintassi C# (se ti trovi a tuo agio con le istruzioni `using`, sei a posto) + +Non servono file di configurazione aggiuntivi—basta un nuovo progetto console e il codice qui sotto. + + + +## Passo 1: Caricare HTML da una stringa (la parte “load html from string”) + +Prima di tutto—ci serve un’istanza di `HTMLDocument`. Aspose.HTML ti permette di fornire markup grezzo direttamente al costruttore, il che significa che puoi **load html from string** senza file intermedi. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +`HTMLDocument` を使用し、単なる文字列でない理由は何ですか?Aspose はマークアップを解析し、DOM を構築し、ブラウザと同様に CSS を適用します。これが **how to render html** を正しく行う核心であり、特に後で外部スタイルシートや JavaScript で生成されたコンテンツを追加する場合に重要です。 + +## Step 3 – 画像レンダリングオプションの設定 (Convert HTML to Image) + +次に、レンダラにサイズ、背景、品質を指定します。これらの設定は最終的な PNG に直接影響するため、使用ケースに合わせて調整してください。 + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*Edge case:* 透過背景が必要な場合(例: オーバーレイサムネイル用)、`BackgroundColor = Color.Transparent` を設定し、出力形式がアルファをサポートしていることを確認してください(PNG はサポートしています)。 + +## Step 4 – グローバルフォントオプションの適用 (Optional but Handy) + +時々、ドキュメント内のすべてのテキストを太字、斜体、または特定のウェブフォントにしたいことがあります。Aspose では、ドキュメントに `DefaultFontOptions` を設定できます。 + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +これは各要素の CSS に触れずに、統一されたスタイルで **convert HTML to image** を行う簡単な方法です。後で外部 CSS を読み込み、独自の `font-weight` を設定した場合、そのルールがグローバル設定を上書きします—まさにブラウザと同様の挙動です。 + +## Step 5 – PNG のレンダリングと保存 (Save HTML as PNG) + +ここで本格的な処理が行われます。`ImageRenderer` を作成し、`HTMLDocument` を指し示し、出力ストリームに渡して `Render()` を呼び出します。 + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +この呼び出しは同期的で、画像が完全に書き込まれるまでブロックします。大きなページの場合はバックグラウンドスレッドで実行した方が良いかもしれませんが、ほとんどのサムネイル生成シナリオではブロッキング呼び出しで問題ありません。 + +**Expected result:** `output.png` という名前のファイル(800 × 600)が生成され、白いキャンバス上に黒色で太字スタイルの “Bold text” が表示されます。 + +## Step 6 – 出力の検証 (Render HTML to PNG Checklist) + +コード実行後、任意の画像ビューアで PNG を開きます。以下が確認できるはずです: + +- 設定した正確なサイズ(`Width` × `Height`)。 +- 白い背景(変更した場合は透過)。 +- アンチエイリアシングとヒンティングのおかげで、太字テキストがきれいにレンダリングされている。 + +テキストがぼやけている場合は、`UseAntialiasing` と `UseHinting` を再確認してください。ファイルが存在しない場合は、プロセスに対象フォルダーへの書き込み権限があることを確認してください。 + +### よくある質問とエッジケース + +| Question | Answer | +|----------|--------| +| **外部 CSS/JS を使用したフルウェブページをレンダリングできますか?** | はい。URL から HTML をロードします(`new HTMLDocument("https://example.com")`)またはディスクからファイルを読み込みます。Aspose はリンクされたスタイルシートを自動的に取得します(アクセス可能な場合)。 | +| **印刷用により高い DPI が必要な場合はどうすればいいですか?** | `renderingOptions.DpiX` と `renderingOptions.DpiY` を設定します(デフォルトは 96)。DPI を上げるとファイルは大きくなりますが、出力はより鮮明になります。 | +| **SVG または Canvas 要素はどう扱いますか?** | Aspose.HTML は SVG をネイティブにサポートしています。Canvas はレイアウト中に実行される JavaScript に基づいてレンダリングされるため、スクリプト実行を有効にしてください(`htmlDocument.EnableJavaScript = true`)。 | +| **多数の HTML ファイルをバッチ変換する方法はありますか?** | レンダリングロジックを `foreach` ループで囲み、同じ `ImageRenderingOptions` インスタンスを再利用して高速化します。 | +| **PNG の代わりに JPEG を出力できますか?** | `JpegRenderingOptions` を使用し、ファイル拡張子を `.jpg` に変更します。残りのコードは同じです。 | + +## 完全動作例(すべてのステップを1つのファイルにまとめたもの) + +以下は完全なコピー&ペースト可能なプログラムです。`dotnet run` でコンパイルでき、上記の PNG を生成します。 + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +プログラムを実行すると、ファイル作成を確認するコンソールメッセージが表示されます。`output.png` を開き、太字テキストを確認してください—これで **saved HTML as PNG** が完了です。 + +{{< /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..be84fe643 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 にレンダリングし、ZIP に保存する – 完全ガイド](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +C# と Aspose.HTML for .NET を使用して、HTML を PNG に変換し、ZIP ファイルにまとめる手順をステップバイステップで解説します。 + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/japanese/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/japanese/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..998862aa1 --- /dev/null +++ b/html/japanese/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,276 @@ +--- +category: general +date: 2026-02-14 +description: C#でHTMLをPNGにレンダリングし、HTMLを画像に変換する方法、ストリームをZIPに書き込む方法、そしてC#でZIPアーカイブを素早く作成する方法を学びましょう。 +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: ja +og_description: C#でHTMLをPNGにレンダリングし、HTMLを画像に変換する方法、ストリームをZIPに書き込む方法、そしてC#で効率的にZIPアーカイブを作成する方法をご紹介します。 +og_title: C#でHTMLをPNGにレンダリングし、ZIPに保存する完全ガイド +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: C#でHTMLをPNGにレンダリングし、ZIPに保存する完全ガイド +url: /ja/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#でHTMLをPNGにレンダリングしZIPに保存する – 完全ガイド + +HTMLを**PNGにレンダリング**したいけど、画像と元のマークアップを一緒に保持する方法が分からない、ということはありませんか?同じ壁にぶつかる開発者は多いです。レポートツールやメールサムネイル、オフラインドキュメントバンドルを作成するときに特にです。 + +朗報です!このチュートリアルでは、**HTMLを画像に変換**し、結果のストリームをZIPファイルに書き込み、さらに元のHTMLも同梱する、単一の自己完結型ソリューションを順を追って解説します。最後まで実行可能なプログラムが完成し、各パーツがなぜ必要なのかが理解できるようになります。 + +また、**write stream to zip** のコツや **create zip archive c#** の微妙な違い、**save html to zip** のやり方も紹介します。サードパーティ製のZIPユーティリティは不要です。コードとその背後にある考え方だけで完結します。 + +--- + +## 必要なもの + +- .NET 6.0 以降(API は .NET Core と .NET Framework でも動作します) +- Aspose.HTML for .NET(NuGet パッケージ `Aspose.Html`) – HTML のレンダリングを担当します。 +- `System.IO.Compression` の基本的な知識 – 組み込みの `ZipArchive` クラスを使用します。 + +以上です。テキストエディタか Visual Studio を用意して、さっそく始めましょう。 + +--- + +## Step 1: カスタム ResourceHandler を作成してストリームを ZIP に書き込む + +Aspose.HTML がドキュメントを保存するとき、各リソース(画像、CSS など)を書き込む `Stream` を `ResourceHandler` に要求します。`ResourceHandler` をサブクラス化すれば、ファイルシステムではなく **zip アーカイブ** にすべてのリソースを流し込めます。 + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**なぜ重要か:** HTML をメモリ上に保持しておくことで、後で **save html to zip** がディスクから再読込することなく実行できます。また、ユニットテストが楽になります。 + +--- + +## Step 4: HTML を PNG にレンダリングし、ZIP に格納 + +チュートリアルの核心部分です。ドキュメントをレンダリングし、得られたストリームを直接アーカイブに流し込みます。 + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### 期待される結果 + +プログラム実行後、実行ファイルと同じフォルダーに `result.zip` が作成されます。解凍すると以下が確認できます。 + +- **page.png** – HTML をラスタライズしたスナップショット(**render html to png** の出力)。 +- **index.html**(または Aspose.HTML が自動付与する名前) – 元のマークアップ。これにより **save html to zip** が正しく行われたことが分かります。 + +任意のアーカイブマネージャで ZIP を展開し、PNG を表示してレンダリング品質を確認してください。 + +--- + +## Step 5: エッジケースと一般的な落とし穴の対処 + +| 状況 | 注意点 | 推奨対策 | +|-----------|-------------------|-----------------| +| **大規模な HTML ページ** | PNG 全体を `MemoryStream` に保持するためメモリ使用量が急増する | 画像が数 MB を超える場合は一時ファイルストリーム(`FileStream`)に切り替える | +| **既存の ZIP ファイル** | `Update` モードで開くと既存エントリは保持されるが、同名エントリは例外になる | 新規作成前に `zipArchive.GetEntry(name)?.Delete();` で削除してから作成 | +| **未対応 CSS** | Aspose.HTML が一部の最新 CSS 機能を無視する可能性がある | ローカルでレンダリングを確認し、重要なレイアウトはインラインスタイルにフォールバック | +| **スレッド安全性** | `ZipArchive` はスレッドセーフではない | レンダリングと ZIP 操作は単一スレッドで行うか、スレッドごとに別々のアーカイブを使用 | + +**ポイント:** **write stream to zip** の限界を把握しておくと、実行時クラッシュを防ぎ、数十ページをバッチ処理する際にもアプリケーションの堅牢性が保てます。 + +--- + +## Step 6: 完全版サンプルコード(そのままコピペ可) + +以下はコンソールプロジェクトに貼り付けられる、完全な実行可能プログラムです。using ディレクティブ、コメント、適切な破棄パターンをすべて含んでいます。 + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +`dotnet run` で実行すると確認メッセージが表示されます。`result.zip` を開き、両ファイルが存在することを確認してください。 + +--- + +## Frequently Asked Questions (FAQ) + +**Q: .NET Framework 4.7 でも動作しますか?** +A: はい。`System.IO.Compression` API は .NET 4.5 以降で安定しており、Aspose.HTML もフル .NET Framework をサポートしています。適切な Aspose.HTML DLL を参照してください。 + +**Q: CSS やフォントなどのリソースも追加できますか?** +A: もちろんです。HTML が参照する外部リソースはすべて `HandleResource` が呼び出され、同じ ZIP に自動的に格納されます。 + +**Q: 別の画像形式(例: JPEG)にしたい場合は?** +A: `ImageRenderer` のコンストラクタを `JpegRenderer` に変更するか、`ImageRenderingOptions` の `ImageFormat` を設定してください。パイプラインの残りは同じです。 + +**Q: ZIP にパスワードを設定できますか?** +A: 組み込みの `ZipArchive` では暗号化はサポートされていません。その場合は `SharpZipLib` などのサードパーティライブラリを利用し、`ZipHandler` を適宜改造してください。 + +--- + +## Conclusion + +これで、 +{{< /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/working-with-html-documents/_index.md b/html/japanese/net/working-with-html-documents/_index.md index b81b2fd9c..6850383df 100644 --- a/html/japanese/net/working-with-html-documents/_index.md +++ b/html/japanese/net/working-with-html-documents/_index.md @@ -37,6 +37,7 @@ HTML ドキュメントは Web のバックボーンであり、それを効果 では、スキルを次のレベルに引き上げましょう。HTML ドキュメントの編集は Web 開発者にとって一般的なタスクであり、Aspose.HTML はこのプロセスを大幅に簡素化します。このセクションでは、ドキュメントの作成、操作、およびスタイル設定について説明します。Web コンテンツの外観と機能を強化して、魅力的でユーザーフレンドリーにする方法を学びます。 ### [カスタムリソースハンドラを使用した C# での HTML 保存完全ガイド](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) +### [C# でカスタムリソースハンドラを使用して HTML を保存する方法](./how-to-save-html-in-c-with-custom-resource-handler/) ### [CSS と C# で見出しを太字にする方法 – 完全ステップバイステップガイド](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/japanese/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/japanese/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..e916c7260 --- /dev/null +++ b/html/japanese/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,240 @@ +--- +category: general +date: 2026-02-14 +description: C#でAspose.HTMLを使用してHTMLを保存する方法を学びます。このステップバイステップガイドでは、HTMLファイルの書き込み、文字列からHTMLをロード、HTMLをファイルに変換、そしてカスタムリソースハンドラの使用方法を示します。 +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: ja +og_description: Aspose.HTMLでHTMLを素早く保存する方法。HTMLファイルの書き込み、文字列からHTMLをロード、HTMLをファイルに変換、カスタムリソースハンドラの実装を学びます。 +og_title: C#でHTMLを保存する方法 – 完全ガイド +tags: +- Aspose.HTML +- C# +- File I/O +title: カスタムリソースハンドラを使用してC#でHTMLを保存する方法 +url: /ja/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +sure to keep code block placeholders unchanged. + +Now produce final content.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# でカスタムリソースハンドラを使用して HTML を保存する方法 + +文字列から直接 **HTML を保存する方法** を知りたくありませんか?ディスクに書き込むことなくレポートをその場で生成したり、ブラウザへストリーム配信したりしたい開発者は多いです。Aspose.HTML を使えばこのプロセスはとても簡単になり、さらにカスタムリソースハンドラで独自の保存ロジックを組み込むこともできます。 + +このチュートリアルでは、文字列から HTML を読み込み、カスタムハンドラを設定し、最終的に HTML をファイルに書き出す手順を解説します。最後まで読むと、**HTML ファイルを書き込む方法**、**文字列から HTML を読み込む方法**、**HTML をファイルに変換する方法**、そしてあらゆる保存シナリオに対応できる **カスタムリソースハンドラの作り方** が分かります。 + +> **得られるもの:** 完全に実行可能な C# プログラム、各行の解説、そしてクラウドストレージやインメモリパイプラインへの拡張ヒント。 + +## 前提条件 + +- .NET 6.0 以降(API は .NET Framework 4.6+ でも同様に動作します) +- Aspose.HTML for .NET NuGet パッケージ(`Aspose.Html`) +- C# の基本構文が分かっていること(`using` 文が書ければ問題ありません) + +特別な設定ファイルは不要です。新規コンソールプロジェクトと以下のコードだけで始められます。 + + + +## 手順 1: 文字列から HTML を読み込む(“文字列から HTML を読み込む” パート) + +まずは `HTMLDocument` インスタンスを作成します。Aspose.HTML ではコンストラクタに生のマークアップを渡すだけで、**文字列から HTML を読み込む**ことができます。 + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +왜 `HTMLDocument`를 사용하고 단순 문자열을 사용하지 않을까요? Aspose는 마크업을 파싱해 DOM을 구축하고, 브라우저와 동일하게 CSS를 적용합니다. 이것이 **HTML을 올바르게 렌더링**하는 핵심이며, 이후 외부 스타일시트나 JavaScript로 생성된 콘텐츠를 추가할 때도 정확히 동작합니다. + +## Step 3 – Configure Image Rendering Options (Convert HTML to Image) + +다음으로 렌더러에게 원하는 크기, 배경, 품질을 알려줍니다. 이 설정은 최종 PNG에 직접 영향을 미치므로 사용 사례에 맞게 조정하세요. + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*Edge case:* 투명 배경이 필요할 경우(예: 오버레이 썸네일) `BackgroundColor = Color.Transparent` 로 설정하고, 출력 포맷이 알파 채널을 지원하는지 확인하세요(PNG는 지원합니다). + +## Step 4 – Apply Global Font Options (Optional but Handy) + +문서 안의 모든 텍스트를 굵게, 기울임꼴로 만들거나 특정 웹 폰트를 적용하고 싶을 때가 있습니다. Aspose에서는 문서에 `DefaultFontOptions`를 설정할 수 있습니다. + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +이 방법은 **HTML을 이미지로 변환**하면서 전체 스타일을 일관되게 적용하는 빠른 방법이며, 개별 요소의 CSS를 건드릴 필요가 없습니다. 이후 외부 CSS가 자체 `font-weight`를 지정하면 해당 규칙이 전역 설정을 덮어쓰게 되며, 이는 브라우저와 동일한 동작 방식입니다. + +## Step 5 – Render and Save the PNG (Save HTML as PNG) + +이제 본격적인 작업이 시작됩니다. `ImageRenderer`를 생성하고, `HTMLDocument`를 지정한 뒤, 출력 스트림에 연결하고 `Render()`를 호출합니다. + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +이 호출은 동기식이며 이미지가 완전히 기록될 때까지 차단됩니다. 큰 페이지의 경우 백그라운드 스레드에서 실행하는 것이 좋지만, 대부분의 썸네일 생성 시나리오에서는 차단 호출이 충분합니다. + +**예상 결과:** `output.png`라는 이름의 파일(800 × 600)이 생성되며, 흰색 캔버스 위에 검은색 굵은 텍스트 “Bold text”가 표시됩니다. + +## Step 6 – Verify the Output (Render HTML to PNG Checklist) + +코드 실행 후 PNG 파일을 이미지 뷰어로 열어 확인합니다. 다음과 같은 내용이 보여야 합니다: + +- 설정한 정확한 크기(`Width` × `Height`). +- 흰색 배경(변경했다면 투명 배경). +- 안티앨리어싱과 힌팅 덕분에 깔끔하게 렌더링된 굵은 텍스트. + +텍스트가 흐릿하게 보이면 `UseAntialiasing`과 `UseHinting` 설정을 다시 확인하고, 파일이 없으면 대상 폴더에 대한 쓰기 권한을 확인하세요. + +### Common Questions & Edge Cases + +| Question | Answer | +|----------|--------| +| **외부 CSS/JS가 포함된 전체 웹페이지를 렌더링할 수 있나요?** | 예. URL(`new HTMLDocument("https://example.com")`)에서 HTML을 로드하거나 디스크에서 파일을 읽으면 Aspose가 연결된 스타일시트를 자동으로 가져옵니다(접근 가능할 경우). | +| **인쇄용으로 더 높은 DPI가 필요하면 어떻게 하나요?** | `renderingOptions.DpiX`와 `renderingOptions.DpiY`를 설정합니다(기본값은 96). DPI가 높을수록 파일 크기는 커지지만 출력이 더 선명해집니다. | +| **SVG나 Canvas 요소는 어떻게 처리하나요?** | Aspose.HTML은 SVG를 기본적으로 지원합니다. Canvas는 레이아웃 중 실행되는 JavaScript에 따라 렌더링되므로, 스크립트 실행을 활성화(`htmlDocument.EnableJavaScript = true`)해야 합니다. | +| **여러 HTML 파일을 한 번에 변환하는 방법이 있나요?** | 렌더링 로직을 `foreach` 루프로 감싸고, 동일한 `ImageRenderingOptions` 인스턴스를 재사용하면 속도가 향상됩니다. | +| **PNG 대신 JPEG로 출력할 수 있나요?** | `JpegRenderingOptions`를 사용하고 파일 확장자를 `.jpg`로 바꾸면 됩니다. 나머지 코드는 동일하게 유지됩니다. | + +## Full Working Example (All Steps in One File) + +아래는 복사‑붙여넣기만 하면 바로 실행 가능한 전체 프로그램입니다. `dotnet run`으로 컴파일하고 위에서 설명한 PNG를 생성합니다. + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +프로그램을 실행하면 파일 생성 여부를 알리는 콘솔 메시지가 표시됩니다. `output.png`를 열어 굵은 텍스트가 정상적으로 표시되는지 확인하세요—이제 **HTML을 PNG로 저장**했습니다. + +{{< /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..4197a8e66 100644 --- a/html/korean/net/rendering-html-documents/_index.md +++ b/html/korean/net/rendering-html-documents/_index.md @@ -64,6 +64,9 @@ Aspose.HTML for .NET을 사용하여 여러 HTML 문서를 렌더링하는 방 ### [HTML에서 PNG 생성 – 전체 C# 렌더링 가이드](./create-png-from-html-full-c-rendering-guide/) .NET용 Aspose.HTML을 사용해 HTML을 PNG 이미지로 변환하는 전체 C# 렌더링 과정을 배워보세요. +### [C#로 HTML을 PNG로 렌더링하고 ZIP에 저장하는 완전 가이드](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +Aspose.HTML for .NET을 활용해 HTML을 PNG 이미지로 변환하고 ZIP 파일로 저장하는 전체 과정을 단계별로 안내합니다. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/korean/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/korean/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..e6de2d592 --- /dev/null +++ b/html/korean/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-02-14 +description: C#에서 HTML을 PNG로 렌더링하고, HTML을 이미지로 변환하는 방법, 스트림을 ZIP에 쓰는 방법, 그리고 C#으로 + ZIP 아카이브를 빠르게 만드는 방법을 배워보세요. +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: ko +og_description: C#에서 HTML을 PNG로 렌더링하고, HTML을 이미지로 변환하는 방법, 스트림을 ZIP에 쓰는 방법, 그리고 C#으로 + 효율적으로 ZIP 아카이브를 만드는 방법을 알아보세요. +og_title: C#를 사용하여 HTML을 PNG로 렌더링하고 ZIP에 저장하는 완전 가이드 +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: C#로 HTML을 PNG로 렌더링하고 ZIP으로 저장하기 – 완전 가이드 +url: /ko/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#로 HTML을 PNG로 렌더링하고 ZIP에 저장하기 – 완전 가이드 + +HTML을 **PNG로 렌더링**하고 이미지와 원본 마크업을 함께 보관하는 방법을 몰라 고민한 적 있나요? 혼자가 아닙니다—보고서 도구, 이메일 썸네일, 오프라인 문서 번들을 만들 때 많은 개발자들이 바로 이 문제에 부딪히곤 합니다. + +좋은 소식은? 이번 튜토리얼에서는 **HTML을 이미지로 변환**하고, 결과 스트림을 ZIP 파일에 기록하며, 원본 HTML도 함께 저장하는 **단일, 독립형 솔루션**을 단계별로 살펴봅니다. 끝까지 따라오면 처음부터 끝까지 동작하는 프로그램을 얻을 수 있고, 각 요소가 왜 중요한지도 이해하게 될 것입니다. + +또한 **write stream to zip** 팁을 제공하고, **create zip archive c#** 의 미묘한 차이를 논의하며, **save html to zip** 을 서드파티 ZIP 유틸리티 없이 구현하는 방법을 보여드립니다. 외부 레퍼런스는 필요 없습니다—코드와 그 이면의 논리만 있으면 됩니다. + +--- + +## 준비물 + +- .NET 6.0 이상 (API는 .NET Core와 .NET Framework에서도 동작) +- Aspose.HTML for .NET (NuGet 패키지 `Aspose.Html`) – HTML 렌더링의 무거운 작업을 담당합니다. +- `System.IO.Compression` 에 대한 약간의 이해 – 내장 `ZipArchive` 클래스를 사용할 예정입니다. + +이것만 있으면 됩니다. 텍스트 편집기나 Visual Studio를 열고 바로 시작하세요. + +--- + +## 1단계: 스트림을 ZIP에 기록하는 커스텀 ResourceHandler 설정 + +Aspose.HTML이 문서를 저장할 때, 각 리소스(이미지, CSS 등)가 들어갈 `Stream`을 `ResourceHandler`에 요청합니다. `ResourceHandler`를 상속하면 파일 시스템 대신 **ZIP 아카이브**에 모든 리소스를 넣을 수 있습니다. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**왜 신경 써야 할까:** HTML을 메모리에 보관하면 나중에 **save html to zip** 할 때 디스크에서 다시 읽을 필요가 없습니다. 또한 단위 테스트가 훨씬 쉬워집니다. + +--- + +## 4단계: HTML을 PNG로 렌더링하고 ZIP에 저장 + +이제 튜토리얼의 핵심—문서를 렌더링하고 결과 스트림을 바로 아카이브에 넣는 단계입니다. + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### 기대 결과 + +프로그램이 종료되면 실행 파일 폴더에 `result.zip` 파일이 생성됩니다. 압축을 열면 다음과 같은 내용이 보입니다: + +- **page.png** – HTML을 래스터화한 스냅샷 (우리의 **render html to png** 출력). +- **index.html** (또는 Aspose.HTML이 지정한 이름) – 원본 마크업, 즉 **save html to zip** 이 성공했음을 확인할 수 있습니다. + +아카이브는 어떤 압축 관리자든 열 수 있으며, PNG를 확인해 렌더링 품질을 검증하세요. + +--- + +## 5단계: 엣지 케이스와 흔히 발생하는 함정 처리 + +| Situation | What to Watch For | Recommended Fix | +|-----------|-------------------|-----------------| +| **Large HTML pages** | 전체 PNG를 `MemoryStream`에 보관하기 때문에 메모리 사용량이 급증합니다. | 이미지가 몇 메가바이트를 초과하면 임시 파일 스트림(`FileStream`)으로 전환하세요. | +| **Existing zip file** | `Update` 모드로 ZIP을 열면 기존 항목이 보존되지만, 중복 이름은 예외를 발생시킵니다. | 새 항목을 만들기 전에 `zipArchive.GetEntry(name)?.Delete();` 로 기존 엔트리를 삭제하세요. | +| **Unsupported CSS** | Aspose.HTML이 최신 CSS 기능 일부를 무시할 수 있습니다. | 로컬에서 렌더링을 테스트하고, 중요한 레이아웃은 인라인 스타일로 대체하세요. | +| **Thread safety** | `ZipArchive`는 스레드‑안전하지 않습니다. | 렌더링과 압축을 단일 스레드에서 수행하거나, 스레드당 별도 아카이브를 사용하세요. | + +**왜 중요한가:** **write stream to zip** 의 한계를 알면 런타임 충돌을 방지하고, 이후 수십 개의 페이지를 배치 처리할 때도 애플리케이션을 견고하게 유지할 수 있습니다. + +--- + +## 6단계: 완전한 실행 가능한 샘플 + +아래는 콘솔 프로젝트에 그대로 복사·붙여넣기 할 수 있는 전체 프로그램입니다. 모든 `using` 지시문, 주석, 올바른 Dispose 패턴이 포함되어 있습니다. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +프로그램을 실행(`dotnet run`)하면 확인 메시지가 표시됩니다. `result.zip`을 열어 두 파일이 모두 존재하는지 확인하세요. + +--- + +## 자주 묻는 질문 (FAQ) + +**Q: .NET Framework 4.7에서도 동작하나요?** +A: 네. `System.IO.Compression` API는 .NET 4.5 이후로 안정적이며, Aspose.HTML은 전체 .NET Framework를 지원합니다. 해당 버전에 맞는 Aspose.HTML DLL을 참조하면 됩니다. + +**Q: CSS나 폰트 같은 추가 리소스를 넣을 수 있나요?** +A: 물론 가능합니다. HTML이 참조하는 모든 외부 리소스는 `HandleResource`가 호출되므로 자동으로 동일한 ZIP에 포함됩니다. + +**Q: 다른 이미지 포맷(JPEG 등)이 필요하면 어떻게 하나요?** +A: `ImageRenderer` 생성자를 `JpegRenderer` 로 교체하거나 `ImageRenderingOptions` 에 `ImageFormat`을 설정하면 됩니다. 파이프라인 나머지는 동일하게 유지됩니다. + +**Q: ZIP 파일에 비밀번호를 걸 수 있나요?** +A: 기본 `ZipArchive`는 암호화를 지원하지 않습니다. 암호화가 필요하면 `SharpZipLib` 같은 서드파티 라이브러리를 사용하고, `ZipHandler`를 해당 라이브러리에 맞게 수정하세요. + +--- + +## 결론 + +이제 + +{{< /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/working-with-html-documents/_index.md b/html/korean/net/working-with-html-documents/_index.md index 491b68f5a..6b649ded5 100644 --- a/html/korean/net/working-with-html-documents/_index.md +++ b/html/korean/net/working-with-html-documents/_index.md @@ -41,6 +41,8 @@ HTML 문서는 웹의 중추이며, 효과적으로 만들고 조작할 수 있 사용자 정의 리소스 핸들러를 사용해 C#에서 HTML을 저장하는 방법을 단계별로 안내합니다. ### [CSS와 C#로 제목을 굵게 만드는 방법 – 완전 단계별 가이드](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) +### [C#에서 사용자 정의 리소스 핸들러로 HTML 저장하기](./how-to-save-html-in-c-with-custom-resource-handler/) + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/korean/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/korean/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..8ae405c63 --- /dev/null +++ b/html/korean/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,240 @@ +--- +category: general +date: 2026-02-14 +description: C#에서 Aspose.HTML을 사용하여 HTML을 저장하는 방법을 배웁니다. 이 단계별 가이드는 HTML 파일을 작성하고, + 문자열에서 HTML을 로드하며, HTML을 파일로 변환하고, 사용자 지정 리소스 핸들러를 사용하는 방법을 보여줍니다. +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: ko +og_description: Aspose.HTML를 사용하여 HTML을 빠르게 저장하는 방법. HTML 파일을 작성하고, 문자열에서 HTML을 로드하며, + HTML을 파일로 변환하고, 사용자 정의 리소스 핸들러를 구현하는 방법을 배웁니다. +og_title: C#에서 HTML을 저장하는 방법 – 완전 가이드 +tags: +- Aspose.HTML +- C# +- File I/O +title: 맞춤 리소스 핸들러를 사용하여 C#에서 HTML 저장하는 방법 +url: /ko/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#에서 사용자 정의 리소스 핸들러로 HTML 저장하는 방법 + +문자열에서 바로 **how to save html**을 디스크에 저장하지 않고 바로 저장하는 방법이 궁금하셨나요? 혼자가 아닙니다—보고서를 실시간으로 생성하거나 브라우저에 스트리밍해야 할 때 많은 개발자들이 이 문제에 직면합니다. 좋은 소식은 Aspose.HTML을 사용하면 전체 과정이 아주 쉬워지고, 사용자 정의 리소스 핸들러를 통해 자체 저장 로직을 연결할 수도 있다는 점입니다. + +이 튜토리얼에서는 문자열에서 HTML을 로드하고, 사용자 정의 핸들러를 구성한 뒤, 최종적으로 HTML을 파일에 쓰는 과정을 단계별로 살펴봅니다. 끝까지 따라오시면 **write html file**, **load html from string**, **convert html to file**, 그리고 어떤 저장 시나리오에도 적용 가능한 **custom resource handler**를 만드는 방법을 알게 됩니다. + +> **What you’ll get:** 완전한 실행 가능한 C# 프로그램, 각 라인에 대한 설명, 그리고 클라우드 스토리지나 인‑메모리 파이프라인으로 확장하는 팁을 제공합니다. + +## Prerequisites + +- .NET 6.0 이상 (.NET Framework 4.6+에서도 동일하게 동작) +- Aspose.HTML for .NET NuGet 패키지 (`Aspose.Html`) +- C# 문법에 대한 기본 이해 (`using` 구문에 익숙하면 충분합니다) + +추가 설정 파일은 필요 없습니다—새 콘솔 프로젝트와 아래 코드만 있으면 됩니다. + + + +## Step 1: Load HTML from a String (the “load html from string” part) + +먼저 `HTMLDocument` 인스턴스를 만들어야 합니다. Aspose.HTML은 생성자에 원시 마크업을 바로 전달할 수 있게 해 주므로, **load html from string**을 중간 파일 없이 바로 수행할 수 있습니다. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +Dlaczego `HTMLDocument`, a nie zwykły string? Aspose parsuje znacznik, buduje DOM i stosuje CSS dokładnie tak, jak przeglądarka. To podstawa **jak renderować html** poprawnie, szczególnie gdy później dodasz zewnętrzne arkusze stylów lub treść generowaną przez JavaScript. + +## Krok 3 – Skonfiguruj opcje renderowania obrazu (Konwersja HTML do obrazu) + +Następnie informujemy renderer, jakiego rozmiaru, tła i jakości oczekujemy. Te ustawienia bezpośrednio wpływają na końcowy PNG, więc dopasuj je do swojego scenariusza. + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*Edge case:* Jeśli potrzebujesz przezroczystego tła (np. dla nakładkowych miniatur), ustaw `BackgroundColor = Color.Transparent` i upewnij się, że format wyjściowy obsługuje kanał alfa (PNG tak). + +## Krok 4 – Zastosuj globalne opcje czcionki (Opcjonalne, ale przydatne) + +Czasami chcesz, aby każdy fragment tekstu w dokumencie był pogrubiony, pochylony lub używał konkretnej czcionki internetowej. Aspose pozwala ustawić `DefaultFontOptions` na dokumencie. + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +To szybki sposób na **konwersję HTML do obrazu** z jednolitym stylem, bez modyfikowania CSS każdego elementu. Jeśli później załadujesz zewnętrzny CSS, który definiuje własny `font-weight`, te reguły nadpiszą ustawienie globalne — dokładnie tak, jak zachowuje się przeglądarka. + +## Krok 5 – Renderowanie i zapis PNG (Zapis HTML jako PNG) + +Teraz następuje ciężka praca. Tworzymy `ImageRenderer`, wskazujemy na `HTMLDocument`, podajemy strumień wyjściowy i wywołujemy `Render()`. + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +Wywołanie jest synchroniczne i blokuje wątek, dopóki obraz nie zostanie w pełni zapisany. Dla dużych stron możesz chcieć uruchomić je w tle, ale w większości scenariuszy generowania miniatur blokujące wywołanie jest w porządku. + +**Oczekiwany rezultat:** plik o nazwie `output.png` (800 × 600) zawierający słowo „Bold text” czarną, pogrubioną czcionką na białym tle. + +## Krok 6 – Weryfikacja wyniku (Lista kontrolna renderowania HTML do PNG) + +Po uruchomieniu kodu otwórz PNG w dowolnym przeglądarce obrazów. Powinieneś zobaczyć: + +- Dokładne wymiary, które ustawiłeś (`Width` × `Height`). +- Białe tło (lub przezroczyste, jeśli je zmieniłeś). +- Pogrubiony tekst renderowany czysto, dzięki antyaliasingowi i hintingowi. + +Jeśli tekst wygląda na rozmyty, sprawdź `UseAntialiasing` i `UseHinting`. Jeśli plik nie istnieje, upewnij się, że proces ma uprawnienia do zapisu w docelowym folderze. + +### Częste pytania i przypadki brzegowe + +| Pytanie | Odpowiedź | +|----------|-----------| +| **Czy mogę renderować pełną stronę z zewnętrznym CSS/JS?** | Tak. Załaduj HTML z URL (`new HTMLDocument("https://example.com")`) lub odczytaj plik z dysku, a Aspose automatycznie pobierze podłączone arkusze stylów (o ile są dostępne). | +| **Co zrobić, gdy potrzebuję wyższej DPI do druku?** | Ustaw `renderingOptions.DpiX` i `renderingOptions.DpiY` (domyślnie 96). Wyższa DPI daje większe pliki, ale ostrzejszy wynik. | +| **Jak obsłużyć elementy SVG lub Canvas?** | Aspose.HTML natywnie obsługuje SVG. Canvas jest renderowany na podstawie wykonanego JavaScriptu podczas układu, więc włącz wykonanie skryptów (`htmlDocument.EnableJavaScript = true`). | +| **Czy istnieje sposób na batch‑konwersję wielu plików HTML?** | Owiń logikę renderowania w pętlę `foreach`, ponownie używając tej samej instancji `ImageRenderingOptions` dla zwiększenia wydajności. | +| **Czy mogę wyjściowo uzyskać JPEG zamiast PNG?** | Użyj `JpegRenderingOptions` i zmień rozszerzenie pliku na `.jpg`. Reszta kodu pozostaje bez zmian. | + +## Pełny działający przykład (Wszystkie kroki w jednym pliku) + +Poniżej znajduje się kompletny, gotowy do skopiowania program. Kompiluje się poleceniem `dotnet run` i tworzy opisany wyżej PNG. + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +Uruchom program, a zobaczysz komunikat w konsoli potwierdzający utworzenie pliku. Otwórz `output.png` i sprawdź pogrubiony tekst — voilà, właśnie **zapisałeś HTML jako PNG**. + +{{< /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..6cbb73407 100644 --- a/html/polish/net/rendering-html-documents/_index.md +++ b/html/polish/net/rendering-html-documents/_index.md @@ -43,6 +43,9 @@ Teraz, gdy masz już skonfigurowany Aspose.HTML dla .NET, czas zapoznać się z ### [Renderuj HTML jako PNG w .NET za pomocą Aspose.HTML](./render-html-as-png/) Naucz się pracować z Aspose.HTML dla .NET: Manipuluj HTML, konwertuj do różnych formatów i nie tylko. Zanurz się w tym kompleksowym samouczku! +### [Renderuj HTML do PNG i zapisz do ZIP w C# – Kompletny przewodnik](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +Naucz się, jak przy użyciu Aspose.HTML w C# renderować HTML do PNG i zapisywać wyniki w archiwum ZIP. + ### [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/) diff --git a/html/polish/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/polish/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..90af91140 --- /dev/null +++ b/html/polish/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,263 @@ +--- +category: general +date: 2026-02-14 +description: Renderuj HTML do PNG w C# i dowiedz się, jak konwertować HTML na obraz, + zapisywać strumień do ZIP oraz szybko tworzyć archiwum ZIP w C#. +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: pl +og_description: Renderuj HTML do PNG w C# i odkryj, jak konwertować HTML na obraz, + zapisywać strumień do ZIP oraz efektywnie tworzyć archiwum zip w C#. +og_title: Renderowanie HTML do PNG i zapisywanie do ZIP w C# – Kompletny przewodnik +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: Renderowanie HTML do PNG i zapis do ZIP w C# – Kompletny przewodnik +url: /pl/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Renderowanie HTML do PNG i zapisywanie do ZIP w C# – Kompletny przewodnik + +Kiedykolwiek potrzebowałeś **render HTML to PNG**, ale nie byłeś pewien, jak zachować obraz i oryginalny kod razem? Nie jesteś sam — wielu programistów napotyka dokładnie ten problem przy tworzeniu narzędzi raportowych, miniatur e‑maili lub pakietów dokumentacji offline. + +Dobra wiadomość? W tym poradniku przeprowadzimy Cię przez jedną, samodzielną (self‑contained) rozwiązanie, które **converts HTML to image**, zapisuje powstały strumień do pliku ZIP i nawet przechowuje źródłowy HTML obok niego. Po zakończeniu będziesz mieć uruchamialny program, który robi wszystko od początku do końca, i zrozumiesz, dlaczego każdy element ma znaczenie. + +Dodamy także wskazówki dotyczące **write stream to zip**, omówimy niuanse **create zip archive c#** i pokażemy, jak **save html to zip** bez użycia zewnętrznych narzędzi zip. Nie potrzebujesz zewnętrznych odwołań — tylko kod i uzasadnienie. + +--- + +## Czego będziesz potrzebować + +- .NET 6.0 lub nowszy (API działa również na .NET Core i .NET Framework) +- Aspose.HTML for .NET (pakiet NuGet `Aspose.Html`) – obsługuje ciężkie zadania renderowania HTML. +- Trochę znajomości `System.IO.Compression` – użyjemy wbudowanej klasy `ZipArchive`. + +To wszystko. Weź edytor tekstu lub Visual Studio i zanurzmy się. + +## Krok 1: Skonfiguruj własny ResourceHandler, aby zapisywać strumień do ZIP + +Kiedy Aspose.HTML zapisuje dokument, pyta `ResourceHandler` o `Stream`, w którym ma trafić każdy zasób (obrazy, CSS itp.). Poprzez dziedziczenie po `ResourceHandler` możemy skierować każdy zasób do **zip archive** zamiast do systemu plików. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**Dlaczego może Cię to interesować:** Przechowywanie HTML w pamięci oznacza, że później możesz **save html to zip** bez ponownego odczytu z dysku. Ułatwia to także testy jednostkowe. + +## Krok 4: Renderuj HTML do PNG i zapisz go w ZIP + +Teraz przychodzi serce poradnika — renderowanie dokumentu i przekazywanie powstałego strumienia bezpośrednio do archiwum. + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### Oczekiwany wynik + +Po zakończeniu programu znajdziesz plik o nazwie `result.zip` w folderze wykonywalnym. Otwórz go, a zobaczysz: + +- **page.png** – rastrowy zrzut HTML (nasz wynik **render html to png**). +- **index.html** (lub dowolna nazwa przydzielona przez Aspose.HTML) – oryginalny kod, potwierdzający, że pomyślnie **save html to zip**. + +Możesz rozpakować zip dowolnym menedżerem archiwów i obejrzeć PNG, aby zweryfikować jakość renderowania. + +## Krok 5: Obsługa przypadków brzegowych i typowych pułapek + +| Sytuacja | Na co zwrócić uwagę | Zalecane rozwiązanie | +|-----------|-------------------|-----------------| +| **Duże strony HTML** | Wzrost zużycia pamięci, ponieważ przechowujemy cały PNG w `MemoryStream`. | Przejdź na tymczasowy strumień plikowy (`FileStream`), jeśli obraz przekracza kilka megabajtów. | +| **Istniejący plik zip** | Otwieranie zip w trybie `Update` zachowuje istniejące wpisy, ale duplikaty nazw powodują wyjątki. | Najpierw usuń wpis: `zipArchive.GetEntry(name)?.Delete();` przed utworzeniem nowego. | +| **Nieobsługiwany CSS** | Aspose.HTML może ignorować niektóre nowoczesne funkcje CSS. | Przetestuj renderowanie lokalnie; w razie potrzeby użyj stylów inline dla krytycznego układu. | +| **Bezpieczeństwo wątków** | `ZipArchive` nie jest bezpieczny wątkowo. | Utrzymuj renderowanie i zipowanie w jednym wątku lub używaj osobnych archiwów dla każdego wątku. | + +**Dlaczego to ważne:** Znajomość ograniczeń **write stream to zip** pomaga unikać awarii w czasie wykonywania i utrzymuje aplikację stabilną, gdy później będziesz przetwarzać w partiach dziesiątki stron. + +## Krok 6: Pełny, gotowy do uruchomienia przykład + +Poniżej znajduje się kompletny program, który możesz skopiować i wkleić do projektu konsolowego. Zawiera wszystkie dyrektywy using, komentarze i prawidłowe wzorce zwalniania zasobów. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +Uruchom program (`dotnet run`) i zobaczysz komunikat potwierdzający. Otwórz `result.zip`, aby potwierdzić obecność obu plików. + +## Najczęściej zadawane pytania (FAQ) + +**Q: Czy to działa na .NET Framework 4.7?** +A: Tak. API `System.IO.Compression` jest stabilne od .NET 4.5, a Aspose.HTML obsługuje pełny .NET Framework. Wystarczy odwołać się do odpowiedniego pliku DLL Aspose.HTML. + +**Q: Czy mogę dodać więcej zasobów, takich jak CSS lub czcionki?** +A: Oczywiście. Każdy zewnętrzny zasób odwołany w HTML wywoła `HandleResource`, więc automatycznie trafi do tego samego zip. + +**Q: Co zrobić, jeśli potrzebuję innego formatu obrazu (np. JPEG)?** +A: Zmień konstruktor `ImageRenderer` na `JpegRenderer` lub ustaw `ImageFormat` w `ImageRenderingOptions`. Reszta potoku pozostaje bez zmian. + +**Q: Czy zip jest chroniony hasłem?** +A: Wbudowany `ZipArchive` nie obsługuje szyfrowania. W takim przypadku rozważ użycie biblioteki zewnętrznej, takiej jak `SharpZipLib`, i dostosuj `ZipHandler` odpowiednio. + +## Zakończenie + +Teraz + +{{< /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/working-with-html-documents/_index.md b/html/polish/net/working-with-html-documents/_index.md index ac233f79e..c01383d3c 100644 --- a/html/polish/net/working-with-html-documents/_index.md +++ b/html/polish/net/working-with-html-documents/_index.md @@ -43,6 +43,8 @@ Poznaj metodę zapisu HTML w C# z własnym obsługiwaczem zasobów, umożliwiaj Dowiedz się, jak użyć CSS i C# do pogrubienia nagłówka w HTML, krok po kroku, z praktycznymi przykładami. +### [Jak zapisać HTML w C# przy użyciu własnego obsługiwacza zasobów](./how-to-save-html-in-c-with-custom-resource-handler/) + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/polish/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/polish/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..3486574ba --- /dev/null +++ b/html/polish/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-02-14 +description: Dowiedz się, jak zapisywać HTML przy użyciu Aspose.HTML w C#. Ten przewodnik + krok po kroku pokazuje, jak zapisać plik HTML, wczytać HTML z łańcucha znaków, przekonwertować + HTML na plik oraz używać własnego obsługującego zasoby. +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: pl +og_description: Jak szybko zapisać HTML przy użyciu Aspose.HTML. Dowiedz się, jak + zapisać plik HTML, wczytać HTML ze stringa, przekonwertować HTML na plik oraz zaimplementować + własny obsługujący zasoby. +og_title: Jak zapisać HTML w C# – kompletny przewodnik +tags: +- Aspose.HTML +- C# +- File I/O +title: Jak zapisać HTML w C# przy użyciu niestandardowego obsługiwacza zasobów +url: /pl/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak zapisać HTML w C# przy użyciu własnego obsługującego zasoby + +Zastanawiałeś się kiedyś, **jak zapisać html** bezpośrednio z łańcucha znaków, omijając dysk? Nie jesteś sam — wielu programistów napotyka ten problem, gdy muszą generować raporty w locie lub strumieniować zawartość do przeglądarki. Dobrą wiadomością jest to, że Aspose.HTML upraszcza cały proces, a dodatkowo możesz podłączyć własną logikę przechowywania za pomocą niestandardowego obsługującego zasoby. + +W tym samouczku przeprowadzimy Cię przez ładowanie HTML z łańcucha znaków, konfigurowanie własnego obsługującego oraz ostateczne zapisywanie HTML do pliku. Po zakończeniu będziesz wiedział, jak **write html file**, jak **load html from string**, jak **convert html to file**, oraz jak stworzyć **custom resource handler**, który pasuje do dowolnego scenariusza przechowywania. + +> **Co otrzymasz:** kompletny, gotowy do uruchomienia program w C#, wyjaśnienia każdego wiersza oraz wskazówki, jak rozszerzyć rozwiązanie o przechowywanie w chmurze lub potoki w pamięci. + +## Wymagania wstępne + +- .NET 6.0 lub nowszy (API działa tak samo na .NET Framework 4.6+) +- Pakiet NuGet Aspose.HTML for .NET (`Aspose.Html`) +- Podstawowa znajomość składni C# (jeśli czujesz się komfortowo z instrukcjami `using`, jesteś gotowy) + +Nie są potrzebne żadne dodatkowe pliki konfiguracyjne — wystarczy nowy projekt konsolowy i poniższy kod. + + + +## Krok 1: Ładowanie HTML z łańcucha znaków (część „load html from string”) + +Na początek potrzebujemy instancji `HTMLDocument`. Aspose.HTML pozwala wprowadzić surowy kod HTML bezpośrednio do konstruktora, co oznacza, że możesz **load html from string** bez żadnych pośrednich plików. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +Por que `HTMLDocument` e não uma string simples? Aspose analisa o markup, constrói um DOM e aplica CSS exatamente como um navegador faria. Esse é o núcleo de **como renderizar html** corretamente, especialmente quando você adiciona posteriormente folhas de estilo externas ou conteúdo gerado por JavaScript. + +## Etapa 3 – Configurar Opções de Renderização de Imagem (Converter HTML em Imagem) + +Em seguida, informamos ao renderizador o tamanho, fundo e qualidade que desejamos. Essas configurações afetam diretamente o PNG final, então ajuste-as para corresponder ao seu caso de uso. + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*Caso especial:* Se precisar de um fundo transparente (por exemplo, para miniaturas sobrepostas), defina `BackgroundColor = Color.Transparent` e certifique‑se de que o formato de saída suporta alfa (PNG suporta). + +## Etapa 4 – Aplicar Opções Globais de Fonte (Opcional, mas Útil) + +Às vezes você quer que cada trecho de texto no documento seja negrito, itálico ou uma fonte web específica. Aspose permite definir `DefaultFontOptions` no documento. + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +Esta é uma maneira rápida de **converter HTML em imagem** com um estilo uniforme, sem tocar no CSS de cada elemento. Se você carregar posteriormente CSS externo que define seu próprio `font-weight`, essas regras substituirão a configuração global — exatamente como um navegador se comporta. + +## Etapa 5 – Renderizar e Salvar o PNG (Salvar HTML como PNG) + +Agora a parte pesada acontece. Criamos um `ImageRenderer`, apontamos para o `HTMLDocument`, alimentamos o fluxo de saída e chamamos `Render()`. + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +A chamada é síncrona e bloqueia até que a imagem seja totalmente gravada. Para páginas grandes você pode querer executá‑la em uma thread em segundo plano, mas para a maioria dos cenários de geração de miniaturas a chamada bloqueante é suficiente. + +**Resultado esperado:** um arquivo chamado `output.png` (800 × 600) contendo a palavra “Bold text” em preto, fonte em negrito, sobre um fundo branco. + +## Etapa 6 – Verificar a Saída (Checklist de Renderizar HTML para PNG) + +Depois que o código for executado, abra o PNG em qualquer visualizador de imagens. Você deve ver: + +- As dimensões exatas que você definiu (`Width` × `Height`). +- Fundo branco (ou transparente se você alterou). +- Texto em negrito renderizado de forma limpa, graças ao antialiasing e hinting. + +Se o texto parecer borrado, verifique novamente `UseAntialiasing` e `UseHinting`. Se o arquivo estiver ausente, garanta que o processo tenha permissão de escrita na pasta de destino. + +### Perguntas Frequentes & Casos Especiais + +| Question | Answer | +|----------|--------| +| **Posso renderizar uma página completa com CSS/JS externos?** | Sim. Carregue o HTML a partir de uma URL (`new HTMLDocument("https://example.com")`) ou leia o arquivo do disco, e o Aspose buscará as folhas de estilo vinculadas automaticamente (desde que estejam acessíveis). | +| **E se eu precisar de DPI mais alto para impressão?** | Defina `renderingOptions.DpiX` e `renderingOptions.DpiY` (o padrão é 96). DPI mais alto gera arquivos maiores, mas saída mais nítida. | +| **Como lidar com elementos SVG ou Canvas?** | Aspose.HTML suporta SVG nativamente. Canvas é renderizado com base no JavaScript executado durante o layout, portanto certifique‑se de habilitar a execução de scripts (`htmlDocument.EnableJavaScript = true`). | +| **Existe uma forma de converter em lote muitos arquivos HTML?** | Envolva a lógica de renderização em um loop `foreach`, reutilizando a mesma instância de `ImageRenderingOptions` para maior velocidade. | +| **Posso gerar JPEG em vez de PNG?** | Use `JpegRenderingOptions` e altere a extensão do arquivo para `.jpg`. O restante do código permanece o mesmo. | + +## Exemplo Completo Funcionando (Todas as Etapas em Um Arquivo) + +Abaixo está o programa completo, pronto para copiar e colar. Ele compila com `dotnet run` e produz o PNG descrito acima. + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +Execute o programa, e você verá a mensagem no console confirmando a criação do arquivo. Abra `output.png` e verifique o texto em negrito—voilà, você acabou de **salvar HTML como PNG** + +{{< /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..82914d7d4 100644 --- a/html/portuguese/net/rendering-html-documents/_index.md +++ b/html/portuguese/net/rendering-html-documents/_index.md @@ -62,6 +62,8 @@ Aprenda a renderizar vários documentos HTML usando Aspose.HTML para .NET. Aumen Desbloqueie o poder do Aspose.HTML para .NET! Aprenda como renderizar SVG Doc como PNG sem esforço. Mergulhe em exemplos passo a passo e FAQs. Comece agora! ### [Criar PNG a partir de HTML – Guia Completo de Renderização em C#](./create-png-from-html-full-c-rendering-guide/) Aprenda a gerar imagens PNG a partir de HTML usando Aspose.HTML para .NET com um guia completo em C#. +### [Renderizar HTML para PNG e Salvar em ZIP com C# – Guia Completo](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +Aprenda a renderizar HTML como PNG e compactar o resultado em um arquivo ZIP usando Aspose.HTML para .NET com C#. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/portuguese/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/portuguese/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..303b11c39 --- /dev/null +++ b/html/portuguese/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-02-14 +description: Renderize HTML para PNG em C# e aprenda como converter HTML em imagem, + gravar stream em ZIP e criar um arquivo zip em C# rapidamente. +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: pt +og_description: Renderize HTML para PNG em C# e descubra como converter HTML em imagem, + gravar stream em ZIP e criar um arquivo zip em C# de forma eficiente. +og_title: Renderizar HTML para PNG e salvar em ZIP com C# – Guia Completo +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: Renderizar HTML para PNG e salvar em ZIP com C# – Guia completo +url: /pt/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Renderizar HTML para PNG e Salvar em ZIP com C# – Guia Completo + +Já precisou **renderizar HTML para PNG** mas não sabia como manter a imagem e o markup original juntos? Você não está sozinho—muitos desenvolvedores encontram esse obstáculo ao criar ferramentas de relatório, miniaturas de e‑mail ou pacotes de documentação offline. + +A boa notícia? Neste tutorial vamos percorrer uma solução única e autocontida que **converte HTML em imagem**, grava o fluxo resultante em um arquivo ZIP e ainda armazena o HTML fonte ao lado. Ao final, você terá um programa executável que faz tudo do início ao fim e entenderá por que cada parte é importante. + +Também vamos inserir dicas sobre **write stream to zip**, discutir as nuances de **create zip archive c#** e mostrar como **save html to zip** sem utilitários de zip de terceiros. Nenhuma referência externa necessária—apenas o código e o raciocínio por trás dele. + +--- + +## O que você vai precisar + +- .NET 6.0 ou superior (a API funciona também em .NET Core e .NET Framework) +- Aspose.HTML for .NET (o pacote NuGet `Aspose.Html`) – ele cuida do trabalho pesado de renderização de HTML. +- Um pouco de familiaridade com `System.IO.Compression` – usaremos a classe integrada `ZipArchive`. + +É só isso. Pegue um editor de texto ou o Visual Studio e vamos começar. + +--- + +## Passo 1: Configurar um ResourceHandler personalizado para gravar o stream no ZIP + +Quando o Aspose.HTML salva um documento, ele solicita a um `ResourceHandler` um `Stream` onde cada recurso (imagens, CSS, etc.) deve ser colocado. Ao estender `ResourceHandler` podemos direcionar cada recurso para um **arquivo zip** em vez do sistema de arquivos. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**Por que isso pode interessar:** Manter o HTML em memória permite que você **save html to zip** posteriormente sem precisar ler do disco novamente. Também facilita muito os testes unitários. + +--- + +## Passo 4: Renderizar o HTML para PNG e armazená‑lo no ZIP + +Agora vem o coração do tutorial—renderizar o documento e encaminhar o stream resultante diretamente para o arquivo. + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### Resultado esperado + +Depois que o programa terminar, você encontrará um arquivo chamado `result.zip` na pasta do executável. Abra‑o e verá: + +- **page.png** – uma captura rasterizada do HTML (nosso output de **render html to png**). +- **index.html** (ou o nome que o Aspose.HTML atribuir) – o markup original, confirmando que conseguimos **save html to zip** com sucesso. + +Você pode extrair o zip com qualquer gerenciador de arquivos e visualizar o PNG para verificar a qualidade da renderização. + +--- + +## Passo 5: Tratamento de casos extremos e armadilhas comuns + +| Situação | O que observar | Correção recomendada | +|-----------|-------------------|-----------------| +| **Páginas HTML grandes** | Picos de consumo de memória porque mantemos todo o PNG em um `MemoryStream`. | Troque para um stream de arquivo temporário (`FileStream`) se a imagem ultrapassar alguns megabytes. | +| **Arquivo zip já existente** | Abrir um zip em modo `Update` preserva entradas existentes, mas nomes duplicados causam exceções. | Exclua a entrada primeiro: `zipArchive.GetEntry(name)?.Delete();` antes de criar uma nova. | +| **CSS não suportado** | Aspose.HTML pode ignorar alguns recursos modernos de CSS. | Teste a renderização localmente; recorra a estilos inline para layouts críticos. | +| **Segurança de threads** | `ZipArchive` não é thread‑safe. | Mantenha a renderização e a compactação em um único thread ou use arquivos zip separados por thread. | + +**Por que isso importa:** Conhecer os limites de **write stream to zip** ajuda a evitar falhas em tempo de execução e mantém sua aplicação robusta quando você precisar processar dezenas de páginas em lote. + +--- + +## Passo 6: Exemplo completo, pronto‑para‑executar + +Abaixo está o programa completo que você pode copiar‑colar em um projeto de console. Ele inclui todas as diretivas `using`, comentários e padrões corretos de descarte. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +Execute o programa (`dotnet run`) e você verá a mensagem de confirmação. Abra `result.zip` para confirmar que ambos os arquivos estão presentes. + +--- + +## Perguntas Frequentes (FAQ) + +**P: Isso funciona no .NET Framework 4.7?** +R: Sim. A API `System.IO.Compression` está estável desde .NET 4.5, e o Aspose.HTML suporta o .NET Framework completo. Basta referenciar o DLL do Aspose.HTML adequado. + +**P: Posso adicionar mais recursos como CSS ou fontes?** +R: Absolutamente. Qualquer recurso externo referenciado pelo HTML disparará `HandleResource`, então eles serão automaticamente incluídos no mesmo zip. + +**P: E se eu precisar de outro formato de imagem (ex.: JPEG)?** +R: Altere o construtor do `ImageRenderer` para usar um `JpegRenderer` ou defina `ImageFormat` em `ImageRenderingOptions`. O restante do pipeline permanece o mesmo. + +**P: O zip pode ser protegido por senha?** +R: O `ZipArchive` nativo não oferece criptografia. Para isso, considere uma biblioteca de terceiros como `SharpZipLib` e adapte o `ZipHandler` conforme necessário. + +--- + +## Conclusão + +Você agora + +{{< /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/working-with-html-documents/_index.md b/html/portuguese/net/working-with-html-documents/_index.md index a8b4154dc..c96df7be6 100644 --- a/html/portuguese/net/working-with-html-documents/_index.md +++ b/html/portuguese/net/working-with-html-documents/_index.md @@ -37,8 +37,11 @@ Depois que você tiver compreendido o básico, vamos nos aprofundar no processo Agora, vamos levar suas habilidades para o próximo nível. Editar documentos HTML é uma tarefa comum para desenvolvedores web, e o Aspose.HTML simplifica esse processo significativamente. Nesta seção, abordaremos a criação, manipulação e estilo de documentos. Você descobrirá como aprimorar a aparência e a funcionalidade do seu conteúdo web, tornando-o envolvente e amigável ao usuário. ### [Como salvar HTML em C# – Guia completo usando um manipulador de recursos personalizado](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) + ### [Como deixar o título em negrito com CSS e C# – Guia completo passo a passo](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) +### [Como salvar HTML em C# com manipulador de recursos personalizado](./how-to-save-html-in-c-with-custom-resource-handler/) + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/portuguese/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/portuguese/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..7d2c24552 --- /dev/null +++ b/html/portuguese/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-02-14 +description: Aprenda como salvar HTML usando Aspose.HTML em C#. Este guia passo a + passo mostra como escrever um arquivo HTML, carregar HTML a partir de uma string, + converter HTML para arquivo e usar um manipulador de recursos personalizado. +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: pt +og_description: Como salvar HTML rapidamente com Aspose.HTML. Aprenda a escrever um + arquivo HTML, carregar HTML a partir de uma string, converter HTML em arquivo e + implementar um manipulador de recursos personalizado. +og_title: Como salvar HTML em C# – Guia completo +tags: +- Aspose.HTML +- C# +- File I/O +title: Como salvar HTML em C# com manipulador de recursos personalizado +url: /pt/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como Salvar HTML em C# com Manipulador de Recurso Personalizado + +Já se perguntou **como salvar html** diretamente de uma string sem precisar tocar no disco primeiro? Você não está sozinho—muitos desenvolvedores encontram esse obstáculo quando precisam gerar relatórios on‑the‑fly ou transmitir conteúdo para um navegador. A boa notícia é que o Aspose.HTML torna todo o processo muito simples, e você ainda pode conectar sua própria lógica de armazenamento com um manipulador de recurso personalizado. + +Neste tutorial vamos percorrer o carregamento de HTML a partir de uma string, a configuração de um manipulador personalizado e, finalmente, a gravação do HTML em um arquivo. Ao final, você saberá como **escrever arquivo html**, como **carregar html de string**, como **converter html em arquivo** e como criar um **manipulador de recurso personalizado** que se adapta a qualquer cenário de armazenamento. + +> **O que você receberá:** um programa C# completo, pronto‑para‑executar, explicações de cada linha e dicas para estender a solução para armazenamento em nuvem ou pipelines em memória. + +## Pré‑requisitos + +- .NET 6.0 ou superior (a API funciona da mesma forma no .NET Framework 4.6+) +- Pacote NuGet Aspose.HTML for .NET (`Aspose.Html`) +- Noções básicas de sintaxe C# (se você está confortável com declarações `using`, está pronto) + +Nenhum arquivo de configuração extra é necessário—apenas um projeto console novo e o código abaixo. + + + +## Etapa 1: Carregar HTML a partir de uma String (a parte “**carregar html de string**”) + +Primeiro de tudo—precisamos de uma instância `HTMLDocument`. O Aspose.HTML permite que você forneça a marcação bruta diretamente ao construtor, o que significa que você pode **carregar html de string** sem arquivos intermediários. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +Почему `HTMLDocument`, а не простая строка? Aspose парсит разметку, строит DOM и применяет CSS точно так же, как браузер. Это основа **как правильно рендерить html**, особенно когда позже добавляются внешние таблицы стилей или контент, генерируемый JavaScript. + +## Шаг 3 – Настройка параметров рендеринга изображения (Конвертировать HTML в изображение) + +Далее мы указываем рендереру размер, фон и качество. Эти настройки напрямую влияют на итоговый PNG, поэтому подгоняйте их под свои задачи. + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*Edge case:* если нужен прозрачный фон (например, для наложения миниатюр), задайте `BackgroundColor = Color.Transparent` и убедитесь, что выбранный формат поддерживает альфа‑канал (PNG поддерживает). + +## Шаг 4 – Применение глобальных параметров шрифта (Опционально, но удобно) + +Иногда хочется, чтобы весь текст в документе был жирным, курсивным или использовал определённый веб‑шрифт. Aspose позволяет задать `DefaultFontOptions` для документа. + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +Это быстрый способ **конвертировать HTML в изображение** с единым стилем, не меняя CSS каждого элемента. Если позже загрузить внешний CSS, который задаёт собственный `font-weight`, эти правила переопределят глобальную настройку — точно так же, как в браузере. + +## Шаг 5 – Рендеринг и сохранение PNG (Сохранить HTML как PNG) + +Теперь происходит основная работа. Мы создаём `ImageRenderer`, указываем ему `HTMLDocument`, передаём поток вывода и вызываем `Render()`. + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +Вызов синхронный и блокирует поток, пока изображение полностью не запишется. Для больших страниц можно выполнять его в фоновом потоке, но для большинства сценариев генерации миниатюр блокирующий вызов подходит. + +**Ожидаемый результат:** файл `output.png` (800 × 600) с надписью «Bold text» чёрным жирным шрифтом на белом холсте. + +## Шаг 6 – Проверка результата (Контрольный список рендеринга HTML в PNG) + +После выполнения кода откройте PNG в любом просмотрщике изображений. Вы должны увидеть: + +- Точные размеры, которые вы задали (`Width` × `Height`). +- Белый фон (или прозрачный, если вы изменили его). +- Жирный текст, отрисованный чётко благодаря анти‑алиасингу и хинтингу. + +Если текст выглядит размытым, проверьте `UseAntialiasing` и `UseHinting`. Если файл отсутствует, убедитесь, что процесс имеет права записи в целевую папку. + +### Часто задаваемые вопросы и особые случаи + +| Вопрос | Ответ | +|----------|--------| +| **Можно ли рендерить полную веб‑страницу с внешними CSS/JS?** | Да. Загрузите HTML по URL (`new HTMLDocument("https://example.com")`) или прочитайте файл с диска, и Aspose автоматически получит подключённые таблицы стилей (при условии их доступности). | +| **Что делать, если нужен более высокий DPI для печати?** | Установите `renderingOptions.DpiX` и `renderingOptions.DpiY` (по умолчанию 96). Более высокий DPI даёт большие файлы, но более чёткий вывод. | +| **Как обрабатывать SVG или Canvas?** | Aspose.HTML нативно поддерживает SVG. Canvas рендерится на основе выполненного JavaScript во время раскладки, поэтому включите выполнение скриптов (`htmlDocument.EnableJavaScript = true`). | +| **Можно ли пакетно конвертировать множество HTML‑файлов?** | Оберните логику рендеринга в цикл `foreach`, переиспользуя один экземпляр `ImageRenderingOptions` для ускорения. | +| **Можно ли выводить JPEG вместо PNG?** | Используйте `JpegRenderingOptions` и измените расширение файла на `.jpg`. Остальной код остаётся тем же. | + +## Полный рабочий пример (Все шаги в одном файле) + +Ниже представлена готовая к копированию программа. Она компилируется командой `dotnet run` и создаёт описанный PNG. + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +Запустите программу, и в консоли появится сообщение о создании файла. Откройте `output.png` и проверьте жирный текст — вуаля, вы только что **сохранили HTML как PNG**. + +{{< /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..d5e28b1a3 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#. @@ -67,6 +68,9 @@ Aspose.HTML для .NET выделяется как лучший выбор дл ### [Как отрендерить HTML в PNG с помощью Aspose – Полное руководство](./how-to-render-html-to-png-with-aspose-complete-guide/) Подробный пошаговый учебник по рендерингу HTML в PNG с использованием Aspose.HTML для .NET. +### [Рендеринг HTML в PNG и сохранение в ZIP с C# – Полное руководство](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +Подробный пошаговый учебник по рендерингу HTML в PNG и упаковке результатов в ZIP‑архив с использованием Aspose.HTML для .NET на C#. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/russian/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/russian/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..e183447cb --- /dev/null +++ b/html/russian/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,265 @@ +--- +category: general +date: 2026-02-14 +description: Отображение HTML в PNG на C# и изучение того, как преобразовать HTML + в изображение, записать поток в ZIP и быстро создать zip‑архив на C#. +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: ru +og_description: Рендеринг HTML в PNG на C# и узнайте, как преобразовать HTML в изображение, + записать поток в ZIP и эффективно создать zip‑архив на C#. +og_title: Рендеринг HTML в PNG и сохранение в ZIP с помощью C# – Полное руководство +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: Рендер HTML в PNG и сохранение в ZIP с помощью C# – Полное руководство +url: /ru/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Отображение HTML в PNG и сохранение в ZIP с C# – Полное руководство + +Когда‑нибудь вам нужно было **render HTML to PNG**, но вы не знали, как сохранить изображение и исходную разметку вместе? Вы не одиноки — многие разработчики сталкиваются с этой проблемой при создании инструментов отчетности, миниатюр писем или офлайн‑пакетов документации. + +Хорошая новость? В этом руководстве мы пройдем через единое, автономное решение, которое **converts HTML to image**, записывает полученный поток в ZIP‑файл и даже сохраняет исходный HTML рядом с ним. К концу вы получите исполняемую программу, выполняющую всё от начала до конца, и поймете, почему каждый элемент важен. + +Мы также добавим советы по **write stream to zip**, обсудим нюансы **create zip archive c#** и покажем, как **save html to zip** без сторонних zip‑утилит. Никаких внешних ссылок не требуется — только код и объяснение. + +--- + +## Что понадобится + +- .NET 6.0 или новее (API работает и на .NET Core, и на .NET Framework) +- Aspose.HTML for .NET (пакет NuGet `Aspose.Html`) – он выполняет основную работу по рендерингу HTML. +- Небольшое знакомство с `System.IO.Compression` — мы будем использовать встроенный класс `ZipArchive`. + +Вот и всё. Возьмите текстовый редактор или Visual Studio и приступим. + +--- + +## Шаг 1: Настройте пользовательский ResourceHandler для записи потока в ZIP + +Когда Aspose.HTML сохраняет документ, он запрашивает у `ResourceHandler` `Stream`, куда должен помещаться каждый ресурс (изображения, CSS и т.д.). Наследуясь от `ResourceHandler`, мы можем направлять каждый ресурс в **zip archive** вместо файловой системы. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**Почему это может быть важно:** Хранение HTML в памяти позволяет позже **save html to zip** без повторного чтения с диска. Это также упрощает модульное тестирование. + +## Шаг 4: Отрендерите HTML в PNG и сохраните его в ZIP + +Теперь наступает сердце руководства — рендеринг документа и передача полученного потока непосредственно в архив. + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### Ожидаемый результат + +После завершения программы вы найдете файл `result.zip` в папке исполняемого файла. Откройте его, и вы увидите: + +- **page.png** – растровый снимок HTML (наш вывод **render html to png**). +- **index.html** (или любое имя, которое назначит Aspose.HTML) – оригинальная разметка, подтверждающая, что мы успешно **save html to zip**. + +Вы можете извлечь zip с помощью любого архиватора и просмотреть PNG, чтобы проверить качество рендеринга. + +## Шаг 5: Обработка граничных случаев и распространённых подводных камней + +| Ситуация | На что обратить внимание | Рекомендуемое решение | +|-----------|--------------------------|------------------------| +| **Large HTML pages** | Потребление памяти резко растёт, потому что мы держим весь PNG в `MemoryStream`. | Перейдите на временный файловый поток (`FileStream`), если изображение превышает несколько мегабайт. | +| **Existing zip file** | Открытие zip в режиме `Update` сохраняет существующие записи, но дублирующиеся имена вызывают исключения. | Сначала удалите запись: `zipArchive.GetEntry(name)?.Delete();` перед созданием новой. | +| **Unsupported CSS** | Aspose.HTML может игнорировать некоторые современные возможности CSS. | Тестируйте рендеринг локально; при необходимости используйте встроенные стили для критически важного макета. | +| **Thread safety** | `ZipArchive` не является потокобезопасным. | Выполняйте рендеринг и упаковку в zip в одном потоке или используйте отдельные архивы для каждого потока. | + +**Почему это важно:** Понимание ограничений **write stream to zip** помогает избежать сбоев во время выполнения и делает приложение надёжным при масштабировании до пакетной обработки десятков страниц. + +## Шаг 6: Полный готовый к запуску пример + +Ниже представлен полный код программы, который можно скопировать и вставить в консольный проект. Он включает все директивы using, комментарии и правильные шаблоны освобождения ресурсов. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +Запустите программу (`dotnet run`), и вы увидите сообщение подтверждения. Откройте `result.zip`, чтобы убедиться, что оба файла присутствуют. + +## Часто задаваемые вопросы (FAQ) + +**Q: Работает ли это на .NET Framework 4.7?** +A: Да. API `System.IO.Compression` стабилен с .NET 4.5, а Aspose.HTML поддерживает полный .NET Framework. Просто подключите соответствующий DLL Aspose.HTML. + +**Q: Могу ли я добавить дополнительные ресурсы, такие как CSS или шрифты?** +A: Конечно. Любой внешний ресурс, указанный в HTML, вызовет `HandleResource`, и он автоматически окажется в том же zip‑файле. + +**Q: Что если мне нужен другой формат изображения (например, JPEG)?** +A: Измените конструктор `ImageRenderer`, чтобы использовать `JpegRenderer`, или задайте `ImageFormat` в `ImageRenderingOptions`. Остальная часть конвейера остаётся без изменений. + +**Q: Защищён ли zip паролем?** +A: Встроенный `ZipArchive` не поддерживает шифрование. Для этого рассмотрите стороннюю библиотеку, например `SharpZipLib`, и адаптируйте `ZipHandler` соответственно. + +## Заключение + +Теперь вы + +{{< /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/working-with-html-documents/_index.md b/html/russian/net/working-with-html-documents/_index.md index 843e2ebed..b6ab2f013 100644 --- a/html/russian/net/working-with-html-documents/_index.md +++ b/html/russian/net/working-with-html-documents/_index.md @@ -37,6 +37,9 @@ HTML-документы являются основой Интернета, и Теперь давайте поднимем ваши навыки на новый уровень. Редактирование HTML-документов — обычная задача для веб-разработчиков, и Aspose.HTML значительно упрощает этот процесс. В этом разделе мы рассмотрим создание, обработку и стилизацию документов. Вы узнаете, как улучшить внешний вид и функциональность вашего веб-контента, сделав его привлекательным и удобным для пользователя. ### [Как сохранить HTML в C# – Полное руководство с использованием пользовательского обработчика ресурсов](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) + +### [Как сохранить HTML в C# с пользовательским обработчиком ресурсов](./how-to-save-html-in-c-with-custom-resource-handler/) + ### [Как сделать заголовок жирным с помощью CSS и C# – Полное пошаговое руководство](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/russian/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/russian/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..edf00f31d --- /dev/null +++ b/html/russian/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-02-14 +description: Узнайте, как сохранять HTML с помощью Aspose.HTML в C#. Это пошаговое + руководство показывает, как записать HTML‑файл, загрузить HTML из строки, преобразовать + HTML в файл и использовать пользовательский обработчик ресурсов. +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: ru +og_description: Как быстро сохранять HTML с помощью Aspose.HTML. Узнайте, как записать + HTML‑файл, загрузить HTML из строки, преобразовать HTML в файл и реализовать пользовательский + обработчик ресурсов. +og_title: Как сохранить HTML в C# – Полное руководство +tags: +- Aspose.HTML +- C# +- File I/O +title: Как сохранить HTML в C# с пользовательским обработчиком ресурсов +url: /ru/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +and title. + +We must preserve headers (# etc). Also preserve block shortcodes at top and bottom. + +Let's produce final content. + +We need to ensure we keep all placeholders unchanged. + +Proceed to translate each paragraph. + +Let's write. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как сохранить HTML в C# с помощью пользовательского обработчика ресурсов + +Когда‑то задавались вопросом **как сохранить html** напрямую из строки, не записывая его на диск? Вы не одиноки — многие разработчики сталкиваются с этой проблемой, когда нужно генерировать отчёты «на лету» или передавать контент в браузер. Хорошая новость: Aspose.HTML делает весь процесс простым, а также позволяет подключить собственную логику хранения через пользовательский обработчик ресурсов. + +В этом руководстве мы пройдёмся по загрузке HTML из строки, настройке собственного обработчика и окончательной записи HTML в файл. К концу вы узнаете, как **write html file**, как **load html from string**, как **convert html to file**, и как создать **custom resource handler**, подходящий для любой сценария хранения. + +> **Что вы получите:** полностью готовую к запуску программу на C#, объяснения каждой строки и рекомендации по расширению решения для облачного хранилища или конвейеров в памяти. + +## Требования + +- .NET 6.0 или новее (API работает одинаково и в .NET Framework 4.6+) +- NuGet‑пакет Aspose.HTML for .NET (`Aspose.Html`) +- Базовое понимание синтаксиса C# (если вы комфортно используете `using`, то всё в порядке) + +Никаких дополнительных файлов конфигурации не требуется — просто новый консольный проект и код ниже. + + + +## Шаг 1: Загрузка HTML из строки (часть «load html from string») + +Прежде всего — нам нужен экземпляр `HTMLDocument`. Aspose.HTML позволяет передать «сырой» разметку прямо в конструктор, что значит, что вы можете **load html from string** без промежуточных файлов. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +¿Por qué `HTMLDocument` y no una cadena simple? Aspose analiza el marcado, construye un DOM y aplica CSS exactamente como lo haría un navegador. Ese es el núcleo de **cómo renderizar html** correctamente, especialmente cuando luego añades hojas de estilo externas o contenido generado por JavaScript. + +## Paso 3 – Configurar opciones de renderizado de imagen (Convertir HTML a Imagen) + +A continuación indicamos al renderizador qué tamaño, fondo y calidad queremos. Estas configuraciones afectan directamente al PNG final, así que ajústalas según tu caso de uso. + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*Caso límite:* Si necesitas un fondo transparente (p. ej., para miniaturas superpuestas), establece `BackgroundColor = Color.Transparent` y asegúrate de que el formato de salida soporte alfa (PNG lo hace). + +## Paso 4 – Aplicar opciones de fuente globales (Opcional pero útil) + +A veces deseas que cada fragmento de texto del documento sea negrita, cursiva o una fuente web específica. Aspose te permite establecer `DefaultFontOptions` en el documento. + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +Esta es una forma rápida de **convertir HTML a imagen** con un estilo uniforme, sin tocar el CSS de cada elemento. Si luego cargas CSS externo que define su propio `font-weight`, esas reglas sobrescribirán la configuración global—exactamente como se comporta un navegador. + +## Paso 5 – Renderizar y guardar el PNG (Guardar HTML como PNG) + +Ahora ocurre el trabajo pesado. Creamos un `ImageRenderer`, lo apuntamos al `HTMLDocument`, le pasamos el flujo de salida y llamamos a `Render()`. + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +La llamada es síncrona y bloquea hasta que la imagen se escribe completamente. Para páginas grandes podrías ejecutarla en un hilo de fondo, pero para la mayoría de los escenarios de generación de miniaturas la llamada bloqueante está bien. + +**Resultado esperado:** un archivo llamado `output.png` (800 × 600) que contiene la palabra “Bold text” en negro, con fuente en negrita, sobre un lienzo blanco. + +## Paso 6 – Verificar la salida (Lista de verificación para renderizar HTML a PNG) + +Después de ejecutar el código, abre el PNG en cualquier visor de imágenes. Deberías ver: + +- Las dimensiones exactas que configuraste (`Width` × `Height`). +- Fondo blanco (o transparente si lo cambiaste). +- Texto en negrita renderizado limpiamente, gracias al antialiasing y al hinting. + +Si el texto se ve borroso, verifica `UseAntialiasing` y `UseHinting`. Si el archivo falta, asegura que el proceso tenga permiso de escritura en la carpeta de destino. + +### Preguntas comunes y casos límite + +| Question | Answer | +|----------|--------| +| **¿Puedo renderizar una página completa con CSS/JS externos?** | Sí. Carga el HTML desde una URL (`new HTMLDocument("https://example.com")`) o lee el archivo desde disco, y Aspose obtendrá automáticamente las hojas de estilo enlazadas (siempre que sean accesibles). | +| **¿Qué pasa si necesito un DPI más alto para impresión?** | Establece `renderingOptions.DpiX` y `renderingOptions.DpiY` (el valor predeterminado es 96). Un DPI mayor genera archivos más grandes pero con salida más nítida. | +| **¿Cómo manejo elementos SVG o Canvas?** | Aspose.HTML soporta SVG de forma nativa. Canvas se renderiza según el JavaScript ejecutado durante el layout, así que asegúrate de habilitar la ejecución de scripts (`htmlDocument.EnableJavaScript = true`). | +| **¿Existe una forma de convertir en lote muchos archivos HTML?** | Envuelve la lógica de renderizado en un bucle `foreach`, reutilizando la misma instancia de `ImageRenderingOptions` para mayor velocidad. | +| **¿Puedo generar JPEG en lugar de PNG?** | Usa `JpegRenderingOptions` y cambia la extensión del archivo a `.jpg`. El resto del código permanece igual. | + +## Ejemplo completo (Todos los pasos en un solo archivo) + +A continuación tienes el programa completo, listo para copiar y pegar. Compila con `dotnet run` y produce el PNG descrito arriba. + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +Ejecuta el programa y verás el mensaje en la consola que confirma la creación del archivo. Abre `output.png` y verifica el texto en negrita—¡voilà, acabas de **guardar HTML como PNG**! + +{{< /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..3e5571ddf 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. +### [Renderizar HTML a PNG y Guardar en ZIP con C# – Guía Completa](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +Aprenda a convertir HTML a PNG y comprimirlo en un archivo ZIP usando C# y Aspose.HTML. Guía paso a paso completa. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/spanish/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/spanish/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..c44385b4a --- /dev/null +++ b/html/spanish/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,265 @@ +--- +category: general +date: 2026-02-14 +description: Renderizar HTML a PNG en C# y aprender cómo convertir HTML a imagen, + escribir el flujo en ZIP y crear rápidamente un archivo zip en C#. +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: es +og_description: Renderiza HTML a PNG en C# y descubre cómo convertir HTML a imagen, + escribir el flujo en ZIP y crear un archivo zip en C# de manera eficiente. +og_title: Renderizar HTML a PNG y Guardar en ZIP con C# – Guía Completa +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: Renderizar HTML a PNG y Guardar en ZIP con C# – Guía Completa +url: /es/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Render HTML a PNG y Guardar en ZIP con C# – Guía Completa + +¿Alguna vez necesitaste **renderizar HTML a PNG** pero no estabas seguro de cómo mantener la imagen y el marcado original juntos? No estás solo—muchos desarrolladores se topan con ese mismo obstáculo al crear herramientas de informes, miniaturas de correos electrónicos o paquetes de documentación offline. + +¿La buena noticia? En este tutorial recorreremos una solución única y autocontenida que **convierte HTML a imagen**, escribe el flujo resultante en un archivo ZIP y, incluso, almacena el HTML fuente junto a él. Al final, tendrás un programa ejecutable que hace todo de principio a fin, y comprenderás por qué cada pieza es importante. + +También incluiremos consejos sobre **write stream to zip**, discutiremos los matices de **create zip archive c#**, y te mostraremos cómo **save html to zip** sin utilidades zip de terceros. No se requieren referencias externas—solo el código y el razonamiento detrás de él. + +--- + +## Lo que necesitarás + +- .NET 6.0 o posterior (la API funciona también en .NET Core y .NET Framework) +- Aspose.HTML para .NET (el paquete NuGet `Aspose.Html`) – maneja la mayor parte del trabajo de renderizado de HTML. +- Un poco de familiaridad con `System.IO.Compression` – utilizaremos la clase incorporada `ZipArchive`. + +Eso es todo. Usa un editor de texto o Visual Studio, y vamos a sumergirnos. + +--- + +## Paso 1: Configurar un ResourceHandler personalizado para escribir el flujo en ZIP + +Cuando Aspose.HTML guarda un documento, solicita a un `ResourceHandler` un `Stream` donde debe ir cada recurso (imágenes, CSS, etc.). Al subclasificar `ResourceHandler` podemos dirigir cada recurso a un **zip archive** en lugar del sistema de archivos. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**Por qué podría importarte:** Mantener el HTML en memoria significa que puedes **save html to zip** más tarde sin volver a leer desde el disco. También facilita las pruebas unitarias. + +## Paso 4: Renderizar el HTML a PNG y almacenarlo en el ZIP + +Ahora llega el corazón del tutorial—renderizar el documento y alimentar el flujo resultante directamente en el archivo. + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### Resultado esperado + +Después de que el programa termine, encontrarás un archivo llamado `result.zip` en la carpeta del ejecutable. Ábrelo y verás: + +- **page.png** – una captura rasterizada del HTML (nuestro resultado de **render html to png**). +- **index.html** (o cualquier nombre que Aspose.HTML asigne) – el marcado original, confirmando que hemos **save html to zip** con éxito. + +Puedes extraer el zip con cualquier gestor de archivos y ver el PNG para verificar la calidad del renderizado. + +## Paso 5: Manejo de casos límite y errores comunes + +| Situación | Qué observar | Corrección recomendada | +|-----------|--------------|------------------------| +| **Páginas HTML grandes** | El consumo de memoria aumenta porque mantenemos todo el PNG en un `MemoryStream`. | Cambiar a un flujo de archivo temporal (`FileStream`) si la imagen supera unos pocos megabytes. | +| **Archivo zip existente** | Abrir un zip en modo `Update` preservará las entradas existentes, pero los nombres duplicados causan excepciones. | Eliminar la entrada primero: `zipArchive.GetEntry(name)?.Delete();` antes de crear una nueva. | +| **CSS no soportado** | Aspose.HTML puede ignorar algunas características modernas de CSS. | Prueba el renderizado localmente; recurre a estilos en línea para el diseño crítico. | +| **Seguridad en hilos** | `ZipArchive` no es seguro para hilos. | Mantén el renderizado y el zip en un solo hilo o usa archivos separados por hilo. | + +**Por qué es importante:** Conocer los límites de **write stream to zip** te ayuda a evitar fallos en tiempo de ejecución y mantiene tu aplicación robusta cuando más adelante escales para procesar por lotes decenas de páginas. + +## Paso 6: Ejemplo completo listo para ejecutar + +A continuación se muestra el programa completo que puedes copiar y pegar en un proyecto de consola. Incluye todas las directivas `using`, comentarios y patrones de disposición adecuados. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +Ejecuta el programa (`dotnet run`) y verás el mensaje de confirmación. Abre `result.zip` para confirmar que ambos archivos están presentes. + +## Preguntas frecuentes (FAQ) + +**Q: ¿Funciona esto en .NET Framework 4.7?** +A: Sí. La API `System.IO.Compression` ha sido estable desde .NET 4.5, y Aspose.HTML soporta el .NET Framework completo. Simplemente referencia el DLL de Aspose.HTML correspondiente. + +**Q: ¿Puedo añadir más recursos como CSS o fuentes?** +A: Por supuesto. Cualquier recurso externo referenciado por el HTML activará `HandleResource`, por lo que terminarán automáticamente en el mismo zip. + +**Q: ¿Qué pasa si necesito un formato de imagen diferente (p.ej., JPEG)?** +A: Cambia el constructor de `ImageRenderer` para usar un `JpegRenderer` o establece `ImageFormat` en `ImageRenderingOptions`. El resto del flujo permanece igual. + +**Q: ¿El zip está protegido con contraseña?** +A: El `ZipArchive` incorporado no soporta encriptación. Para eso, considera una biblioteca de terceros como `SharpZipLib` y adapta el `ZipHandler` en consecuencia. + +## Conclusión + +Ahora tienes + +{{< /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/working-with-html-documents/_index.md b/html/spanish/net/working-with-html-documents/_index.md index e0db1c958..9148933e0 100644 --- a/html/spanish/net/working-with-html-documents/_index.md +++ b/html/spanish/net/working-with-html-documents/_index.md @@ -37,6 +37,10 @@ Una vez que haya comprendido los conceptos básicos, profundizaremos en el proce Ahora, llevemos tus habilidades al siguiente nivel. Editar documentos HTML es una tarea común para los desarrolladores web, y Aspose.HTML simplifica este proceso significativamente. En esta sección, cubriremos la creación, manipulación y estilo de documentos. Descubrirás cómo mejorar la apariencia y la funcionalidad de tu contenido web, haciéndolo atractivo y fácil de usar. ### [Cómo guardar HTML en C# – Guía completa usando un controlador de recursos personalizado](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) +### [Cómo guardar HTML en C# con controlador de recursos personalizado](./how-to-save-html-in-c-with-custom-resource-handler/) + +Aprenda a guardar HTML en C# utilizando un controlador de recursos personalizado de forma sencilla y eficaz. + ### [Cómo poner en negrita un encabezado con CSS y C# – Guía completa paso a paso](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) Aprenda a aplicar estilo negrita a encabezados usando CSS y C# con este tutorial detallado. diff --git a/html/spanish/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/spanish/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..3967fd216 --- /dev/null +++ b/html/spanish/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,250 @@ +--- +category: general +date: 2026-02-14 +description: Aprende a guardar HTML usando Aspose.HTML en C#. Esta guía paso a paso + muestra cómo escribir un archivo HTML, cargar HTML desde una cadena, convertir HTML + a archivo y usar un controlador de recursos personalizado. +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: es +og_description: Cómo guardar HTML rápidamente con Aspose.HTML. Aprende a escribir + un archivo HTML, cargar HTML desde una cadena, convertir HTML a archivo e implementar + un controlador de recursos personalizado. +og_title: Cómo guardar HTML en C# – Guía completa +tags: +- Aspose.HTML +- C# +- File I/O +title: Cómo guardar HTML en C# con un manejador de recursos personalizado +url: /es/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +" + +Paragraph: "¿Alguna vez te has preguntado **cómo guardar html** directamente desde una cadena sin tocar el disco primero? No estás solo—muchos desarrolladores se topan con este problema cuando necesitan generar informes al vuelo o transmitir contenido a un navegador. La buena noticia es que Aspose.HTML hace que todo el proceso sea pan comido, y puedes incluso conectar tu propia lógica de almacenamiento con un controlador de recursos personalizado." + +Continue. + +Make sure to keep bold formatting. + +Now produce final answer.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo guardar HTML en C# con un controlador de recursos personalizado + +¿Alguna vez te has preguntado **cómo guardar html** directamente desde una cadena sin tocar el disco primero? No estás solo—muchos desarrolladores se topan con este problema cuando necesitan generar informes al vuelo o transmitir contenido a un navegador. La buena noticia es que Aspose.HTML hace que todo el proceso sea pan comido, y puedes incluso conectar tu propia lógica de almacenamiento con un controlador de recursos personalizado. + +En este tutorial recorreremos la carga de HTML desde una cadena, la configuración de un controlador personalizado y, finalmente, la escritura del HTML en un archivo. Al final sabrás cómo **escribir archivo html**, cómo **cargar html desde cadena**, cómo **convertir html a archivo**, y cómo crear un **controlador de recursos personalizado** que se adapte a cualquier escenario de almacenamiento. + +> **Lo que obtendrás:** un programa C# completo, listo para ejecutar, explicaciones de cada línea y consejos para extender la solución a almacenamiento en la nube o canalizaciones en memoria. + +## Requisitos previos + +- .NET 6.0 o posterior (la API funciona igual en .NET Framework 4.6+) +- Paquete NuGet Aspose.HTML for .NET (`Aspose.Html`) +- Un conocimiento básico de la sintaxis de C# (si te sientes cómodo con las sentencias `using`, estás listo) + +No se necesitan archivos de configuración adicionales—solo un proyecto de consola nuevo y el código a continuación. + + + +## Paso 1: Cargar HTML desde una cadena (la parte “cargar html desde cadena”) + +Lo primero es obtener una instancia de `HTMLDocument`. Aspose.HTML te permite alimentar el marcado bruto directamente en el constructor, lo que significa que puedes **cargar html desde cadena** sin archivos intermedios. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +Varför `HTMLDocument` och inte en vanlig sträng? Aspose parsar markupen, bygger ett DOM och applicerar CSS exakt som en webbläsare skulle. Det är grunden för **hur man renderar html** korrekt, särskilt när du senare lägger till externa stilmallar eller JavaScript‑genererat innehåll. + +## Steg 3 – Konfigurera bildrenderingsalternativ (Konvertera HTML till bild) + +Nästa steg är att tala om för renderaren vilken storlek, bakgrund och kvalitet vi vill ha. Dessa inställningar påverkar den slutgiltiga PNG‑filen direkt, så justera dem efter ditt användningsområde. + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*Edge case:* Om du behöver en transparent bakgrund (t.ex. för överlagrade miniatyrer), sätt `BackgroundColor = Color.Transparent` och se till att output‑formatet stödjer alfa (PNG gör det). + +## Steg 4 – Applicera globala teckensnittsinställningar (Valfritt men praktiskt) + +Ibland vill du att varje textstycke i dokumentet ska vara fet, kursiv eller ha ett specifikt webb‑font. Aspose låter dig sätta `DefaultFontOptions` på dokumentet. + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +Detta är ett snabbt sätt att **konvertera HTML till bild** med enhetlig stil, utan att röra varje elements CSS. Om du senare laddar extern CSS som sätter eget `font-weight` så kommer de reglerna att åsidosätta den globala inställningen — exakt som en webbläsare beter sig. + +## Steg 5 – Rendera och spara PNG‑filen (Spara HTML som PNG) + +Nu sker den tunga lyften. Vi skapar en `ImageRenderer`, pekar den på `HTMLDocument`, matar den med en output‑ström och anropar `Render()`. + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +Anropet är synkront och blockerar tills bilden är helt skriven. För stora sidor kan du vilja köra det på en bakgrundstråd, men för de flesta miniatyrgenererings‑scenarier är det blockerande anropet tillräckligt. + +**Förväntat resultat:** en fil med namnet `output.png` (800 × 600) som innehåller ordet “Bold text” i svart, fetstil på en vit canvas. + +## Steg 6 – Verifiera resultatet (Rendera HTML till PNG‑checklista) + +När koden har körts, öppna PNG‑filen i någon bildvisare. Du bör se: + +- Exakt de dimensioner du angav (`Width` × `Height`). +- Vit bakgrund (eller transparent om du ändrade den). +- Fet text som renderas rent, tack vare antialiasing och hinting. + +Om texten ser suddig ut, dubbelkolla `UseAntialiasing` och `UseHinting`. Om filen saknas, kontrollera att processen har skrivrättigheter till mål‑mappen. + +### Vanliga frågor & edge cases + +| Fråga | Svar | +|----------|--------| +| **Kan jag rendera en hel webbsida med extern CSS/JS?** | Ja. Ladda HTML från en URL (`new HTMLDocument("https://example.com")`) eller läs filen från disk, så hämtar Aspose automatiskt länkade stilmallar (förutsatt att de är åtkomliga). | +| **Vad gör jag om jag behöver högre DPI för utskrift?** | Sätt `renderingOptions.DpiX` och `renderingOptions.DpiY` (standard är 96). Högre DPI ger större filer men skarpare output. | +| **Hur hanterar jag SVG‑ eller Canvas‑element?** | Aspose.HTML stöder SVG nativt. Canvas renderas baserat på JavaScript som körs under layout, så se till att du aktiverar skriptkörning (`htmlDocument.EnableJavaScript = true`). | +| **Finns det ett sätt att batch‑konvertera många HTML‑filer?** | Packa in renderingslogiken i en `foreach`‑loop och återanvänd samma `ImageRenderingOptions`‑instans för bättre prestanda. | +| **Kan jag outputa JPEG istället för PNG?** | Använd `JpegRenderingOptions` och ändra filändelsen till `.jpg`. Resten av koden förblir densamma. | + +## Fullt fungerande exempel (Alla steg i en fil) + +Nedan är det kompletta, kopiera‑och‑klistra‑klara programmet. Det kompileras med `dotnet run` och producerar PNG‑filen som beskrivits ovan. + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +Kör programmet, så får du ett konsolmeddelande som bekräftar att filen skapats. Öppna `output.png` och verifiera den feta texten — voilà, du har just **sparat HTML som PNG**. + +{{< /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..275b0e5f3 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. +### [Rendera HTML till PNG och spara i ZIP med C# – Komplett guide](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +Lär dig hur du med Aspose.HTML för .NET konverterar HTML till PNG och packar dem i en ZIP‑fil i en komplett C#‑guide. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/swedish/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/swedish/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..790ce7ff0 --- /dev/null +++ b/html/swedish/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,263 @@ +--- +category: general +date: 2026-02-14 +description: Rendera HTML till PNG i C# och lär dig hur du konverterar HTML till bild, + skriver en ström till ZIP och snabbt skapar ett zip‑arkiv i C#. +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: sv +og_description: Rendera HTML till PNG i C# och upptäck hur du konverterar HTML till + bild, skriver ström till ZIP och skapar ett zip‑arkiv i C# på ett effektivt sätt. +og_title: Rendera HTML till PNG och spara i ZIP med C# – Komplett guide +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: Rendera HTML till PNG och spara i ZIP med C# – Komplett guide +url: /sv/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Rendera HTML till PNG och spara till ZIP med C# – Komplett guide + +Har du någonsin behövt **rendera HTML till PNG** men varit osäker på hur du behåller bilden och den ursprungliga markupen tillsammans? Du är inte ensam—många utvecklare stöter på exakt detta hinder när de bygger rapportverktyg, e‑post‑miniatyrer eller offline‑dokumentationspaket. + +Den goda nyheten? I den här handledningen går vi igenom en enda, självständig lösning som **konverterar HTML till bild**, skriver den resulterande strömmen till en ZIP‑fil och till och med lagrar käll‑HTML:n bredvid den. I slutet har du ett körbart program som gör allt från början till slut, och du förstår varför varje del är viktig. + +Vi kommer också att strö över tips om **write stream to zip**, diskutera nyanserna av **create zip archive c#**, och visa dig hur du **save html to zip** utan några tredjeparts‑zip‑verktyg. Inga externa referenser behövs—bara koden och resonemanget bakom den. + +--- + +## Vad du behöver + +- .NET 6.0 eller senare (API:et fungerar på .NET Core och .NET Framework också) +- Aspose.HTML för .NET (NuGet‑paketet `Aspose.Html`) – det hanterar den tunga lyftningen av HTML‑rendering. +- Lite förtrogenhet med `System.IO.Compression` – vi kommer att använda den inbyggda `ZipArchive`‑klassen. + +Det är allt. Ta en textredigerare eller Visual Studio, så dyker vi in. + +## Steg 1: Ställ in en anpassad ResourceHandler för att skriva ström till ZIP + +När Aspose.HTML sparar ett dokument ber den en `ResourceHandler` om en `Stream` där varje resurs (bilder, CSS osv.) ska placeras. Genom att subklassa `ResourceHandler` kan vi dirigera varje resurs till ett **zip‑arkiv** istället för filsystemet. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**Varför du kan bry dig:** Att hålla HTML i minnet betyder att du senare kan **save html to zip** utan att läsa från disk igen. Det gör också enhetstestning enkelt. + +## Steg 4: Rendera HTML till PNG och lagra det i ZIP‑en + +Nu kommer hjärtat i handledningen—rendering av dokumentet och att mata den resulterande strömmen direkt in i arkivet. + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### Förväntat resultat + +När programmet är klart hittar du en fil som heter `result.zip` i programmets mapp. Öppna den så ser du: + +- **page.png** – en rasteriserad ögonblicksbild av HTML‑en (vårt **render html to png**‑utdata). +- **index.html** (eller vilket namn Aspose.HTML än tilldelar) – den ursprungliga markupen, vilket bekräftar att vi framgångsrikt **save html to zip**. + +Du kan extrahera zip‑en med valfri arkivhanterare och visa PNG‑en för att verifiera renderingskvaliteten. + +## Steg 5: Hantera kantfall och vanliga fallgropar + +| Situation | Vad att hålla utkik efter | Rekommenderad åtgärd | +|-----------|---------------------------|---------------------| +| **Stora HTML‑sidor** | Minnesanvändningen skjuter i höjden eftersom vi behåller hela PNG‑en i ett `MemoryStream`. | Byt till en temporär filström (`FileStream`) om bilden överstiger några megabyte. | +| **Existerande zip‑fil** | Att öppna en zip i `Update`‑läge bevarar befintliga poster, men dubblettnamn orsakar undantag. | Ta bort posten först: `zipArchive.GetEntry(name)?.Delete();` innan du skapar en ny. | +| **Ej stödjande CSS** | Aspose.HTML kan ignorera vissa moderna CSS‑funktioner. | Testa renderingen lokalt; falla tillbaka till inline‑stilar för kritisk layout. | +| **Trådsäkerhet** | `ZipArchive` är inte trådsäker. | Håll rendering och zip‑ning på en enda tråd eller använd separata arkiv per tråd. | + +**Varför detta är viktigt:** Att känna till gränserna för **write stream to zip** hjälper dig att undvika krasch‑vid‑körning och håller din applikation robust när du senare skalar upp till att batch‑processa dussintals sidor. + +## Steg 6: Fullt, körklart exempel + +Nedan är det kompletta programmet som du kan kopiera‑klistra in i ett konsolprojekt. Det inkluderar alla using‑direktiv, kommentarer och korrekta disponeringsmönster. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +Kör programmet (`dotnet run`) så ser du bekräftelsemeddelandet. Öppna `result.zip` för att bekräfta att båda filerna finns. + +## Vanliga frågor (FAQ) + +**Q: Fungerar detta på .NET Framework 4.7?** +A: Ja. `System.IO.Compression`‑API:et har varit stabilt sedan .NET 4.5, och Aspose.HTML stödjer hela .NET Framework. Referera bara till rätt Aspose.HTML‑DLL. + +**Q: Kan jag lägga till fler resurser som CSS eller teckensnitt?** +A: Absolut. Alla externa resurser som refereras av HTML:n kommer att trigga `HandleResource`, så de hamnar automatiskt i samma zip. + +**Q: Vad händer om jag behöver ett annat bildformat (t.ex. JPEG)?** +A: Ändra `ImageRenderer`‑konstruktorn för att rikta mot en `JpegRenderer` eller sätt `ImageFormat` i `ImageRenderingOptions`. Resten av pipeline förblir densamma. + +**Q: Är zip‑filen lösenordsskyddad?** +A: Den inbyggda `ZipArchive`‑klassen stödjer ingen kryptering. För det, överväg ett tredjepartsbibliotek som `SharpZipLib` och anpassa `ZipHandler` därefter. + +## Slutsats + +Du har nu + +{{< /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/working-with-html-documents/_index.md b/html/swedish/net/working-with-html-documents/_index.md index a3260bb44..e662ebd7d 100644 --- a/html/swedish/net/working-with-html-documents/_index.md +++ b/html/swedish/net/working-with-html-documents/_index.md @@ -39,6 +39,11 @@ Låt oss nu ta dina färdigheter till nästa nivå. Att redigera HTML-dokument ### [Hur man sparar HTML i C# – Komplett guide med en anpassad resurs‑hanterare](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) Lär dig spara HTML i C# med en anpassad resurs‑hanterare och generera kompletta HTML‑filer programatiskt. + +### [Hur du sparar HTML i C# med anpassad resurs‑hanterare](./how-to-save-html-in-c-with-custom-resource-handler/) + +Lär dig spara HTML i C# med en anpassad resurs‑hanterare och generera kompletta HTML‑filer programatiskt. + ### [Hur du gör rubriker fetstil med CSS & C# – Komplett steg‑för‑steg‑guide](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) Lär dig hur du använder CSS och C# för att göra rubriker fetstilta i dina HTML‑dokument med en steg‑för‑steg‑guide. diff --git a/html/swedish/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/swedish/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..56d982ac9 --- /dev/null +++ b/html/swedish/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,270 @@ +--- +category: general +date: 2026-02-14 +description: Lär dig hur du sparar HTML med Aspose.HTML i C#. Denna steg‑för‑steg‑guide + visar hur du skriver en HTML‑fil, laddar HTML från en sträng, konverterar HTML till + en fil och använder en anpassad resurs‑hanterare. +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: sv +og_description: Hur man sparar HTML snabbt med Aspose.HTML. Lär dig att skriva HTML‑fil, + läsa in HTML från en sträng, konvertera HTML till fil och implementera en anpassad + resurs‑hanterare. +og_title: Hur man sparar HTML i C# – Komplett guide +tags: +- Aspose.HTML +- C# +- File I/O +title: Hur man sparar HTML i C# med en anpassad resurs‑hanterare +url: /sv/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +produce final content. + +Check for any other text: "Result you’ll see:" translate. + +"Expected output" translate. + +"Common Questions & Edge Cases" translate. + +List items under that. + +Also "What if I need to embed images?" translate. + +"Can I change the encoding?" translate. + +Also "Pro tip:" translate. + +"Why this matters:" translate. + +"What's happening:" translate. + +"Result you’ll see:" translate. + +"Expected output (console):" translate. + +Ok. + +Now produce final content. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur man sparar HTML i C# med en anpassad resurs‑hanterare + +Har du någonsin undrat **hur man sparar html** direkt från en sträng utan att först skriva till disk? Du är inte ensam – många utvecklare stöter på detta problem när de måste generera rapporter i farten eller strömma innehåll till en webbläsare. Den goda nyheten är att Aspose.HTML gör hela processen till en barnlek, och du kan dessutom ansluta din egen lagringslogik med en anpassad resurs‑hanterare. + +I den här handledningen går vi igenom hur man laddar HTML från en sträng, konfigurerar en anpassad hanterare och slutligen skriver HTML till en fil. När du är klar vet du hur man **skriver html‑fil**, hur man **laddar html från sträng**, hur man **konverterar html till fil**, och hur man skapar en **anpassad resurs‑hanterare** som passar alla lagringsscenarier. + +> **Vad du får:** ett komplett, körklart C#‑program, förklaringar av varje rad och tips för att utöka lösningen till molnlagring eller minnes‑pipelines. + +## Förutsättningar + +- .NET 6.0 eller senare (API‑et fungerar likadant på .NET Framework 4.6+) +- Aspose.HTML för .NET NuGet‑paket (`Aspose.Html`) +- Grundläggande kunskap om C#‑syntax (om du är bekväm med `using`‑satser är du klar) + +Inga extra konfigurationsfiler behövs – bara ett nytt konsolprojekt och koden nedan. + + + +## Steg 1: Ladda HTML från en sträng (delen “ladda html från sträng”) + +Först och främst – vi behöver en `HTMLDocument`‑instans. Aspose.HTML låter dig mata in rå markup direkt i konstruktorn, vilket betyder att du kan **ladda html från sträng** utan några mellanfiler. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +ทำไมต้องใช้ `HTMLDocument` ไม่ใช่สตริงธรรมดา? Aspose จะทำการแยกวิเคราะห์ markup, สร้าง DOM, และนำ CSS ไปใช้เหมือนกับเบราว์เซอร์ นี่คือหัวใจของ **วิธีเรนเดอร์ html** อย่างถูกต้อง, โดยเฉพาะเมื่อคุณเพิ่มสไตล์ชีตภายนอกหรือเนื้อหาที่สร้างด้วย JavaScript ในภายหลัง. + +## ขั้นตอนที่ 3 – ตั้งค่าตัวเลือกการเรนเดอร์ภาพ (แปลง HTML เป็นภาพ) + +ต่อไปเราจะบอก renderer ว่าต้องการขนาด, พื้นหลัง, และคุณภาพอย่างไร การตั้งค่าเหล่านี้ส่งผลโดยตรงต่อ PNG สุดท้าย, ดังนั้นปรับให้ตรงกับกรณีการใช้งานของคุณ. + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*Edge case:* หากคุณต้องการพื้นหลังโปร่งใส (เช่นสำหรับรูปย่อแบบ overlay), ตั้งค่า `BackgroundColor = Color.Transparent` และตรวจสอบให้แน่ใจว่ารูปแบบเอาต์พุตรองรับ alpha (PNG รองรับ). + +## ขั้นตอนที่ 4 – ตั้งค่าฟอนต์ทั่วโลก (ไม่บังคับแต่เป็นประโยชน์) + +บางครั้งคุณต้องการให้ข้อความทั้งหมดในเอกสารเป็นตัวหนา, ตัวเอียง, หรือฟอนต์เว็บเฉพาะ. Aspose ให้คุณตั้งค่า `DefaultFontOptions` บนเอกสารได้. + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +นี่เป็นวิธีเร็วในการ **แปลง HTML เป็นภาพ** ด้วยสไตล์เดียวกัน, โดยไม่ต้องแก้ไข CSS ของแต่ละองค์ประกอบ. หากคุณโหลด CSS ภายนอกที่กำหนด `font-weight` ของตนเอง, กฎเหล่านั้นจะลบการตั้งค่าทั่วโลกออก – ทำงานเหมือนเบราว์เซอร์จริง ๆ. + +## ขั้นตอนที่ 5 – เรนเดอร์และบันทึก PNG (บันทึก HTML เป็น PNG) + +ตอนนี้การทำงานหนักเริ่มขึ้น. เราจะสร้าง `ImageRenderer`, ชี้ไปที่ `HTMLDocument`, ส่งสตรีมเอาต์พุต, แล้วเรียก `Render()`. + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +การเรียกนี้ทำแบบ synchronous และบล็อกจนกว่าภาพจะถูกเขียนเสร็จสมบูรณ์. สำหรับหน้าใหญ่คุณอาจต้องรันบนเธรดพื้นหลัง, แต่สำหรับสถานการณ์สร้างรูปย่อส่วนใหญ่ การเรียกแบบบล็อกก็เพียงพอ. + +**ผลลัพธ์ที่คาดหวัง:** ไฟล์ชื่อ `output.png` (800 × 600) ที่มีคำว่า “Bold text” สีดำ, ตัวอักษรหนา, บนผืนพื้นสีขาว. + +## ขั้นตอนที่ 6 – ตรวจสอบผลลัพธ์ (เช็คลิสต์เรนเดอร์ HTML เป็น PNG) + +หลังจากโค้ดทำงาน, เปิด PNG ด้วยโปรแกรมดูภาพใดก็ได้. คุณควรเห็น: + +- มิติที่คุณตั้งค่าไว้ (`Width` × `Height`) อย่างแม่นยำ +- พื้นหลังสีขาว (หรือโปร่งใสถ้าคุณได้เปลี่ยน) +- ข้อความตัวหนาที่เรนเดอร์อย่างคมชัด, ขอบคุณการใช้ antialiasing และ hinting + +หากข้อความดูเบลอ, ตรวจสอบ `UseAntialiasing` และ `UseHinting` อีกครั้ง. หากไฟล์หาย, ตรวจสอบให้แน่ใจว่ากระบวนการมีสิทธิ์เขียนไปยังโฟลเดอร์เป้าหมาย. + +### คำถามที่พบบ่อย & กรณีขอบ + +| คำถาม | คำตอบ | +|----------|--------| +| **ฉันสามารถเรนเดอร์หน้าเว็บเต็มพร้อม CSS/JS ภายนอกได้หรือไม่?** | ได้. โหลด HTML จาก URL (`new HTMLDocument("https://example.com")`) หรืออ่านไฟล์จากดิสก์, แล้ว Aspose จะดึงสไตล์ชีตที่เชื่อมโยงโดยอัตโนมัติ (หากสามารถเข้าถึงได้). | +| **ถ้าต้องการ DPI สูงขึ้นสำหรับการพิมพ์จะทำอย่างไร?** | ตั้งค่า `renderingOptions.DpiX` และ `renderingOptions.DpiY` (ค่าเริ่มต้นคือ 96). DPI สูงขึ้นทำให้ไฟล์ใหญ่ขึ้นแต่ผลลัพธ์คมชัดยิ่งขึ้น. | +| **จะจัดการกับองค์ประกอบ SVG หรือ Canvas อย่างไร?** | Aspose.HTML รองรับ SVG โดยตรง. Canvas จะถูกเรนเดอร์ตาม JavaScript ที่ทำงานในระหว่างการจัดวาง, ดังนั้นต้องเปิดการทำงานของสคริปต์ (`htmlDocument.EnableJavaScript = true`). | +| **มีวิธีแปลงหลายไฟล์ HTML เป็นภาพพร้อมกันหรือไม่?** | ห่อโลจิกการเรนเดอร์ในลูป `foreach`, ใช้ instance ของ `ImageRenderingOptions` เดียวกันเพื่อความเร็ว. | +| **ฉันสามารถเอาต์พุตเป็น JPEG แทน PNG ได้หรือไม่?** | ใช้ `JpegRenderingOptions` และเปลี่ยนนามสกุลไฟล์เป็น `.jpg`. โค้ดส่วนอื่นคงเดิม. | + +## ตัวอย่างทำงานเต็มรูปแบบ (ทุกขั้นตอนในไฟล์เดียว) + +ด้านล่างเป็นโปรแกรมที่พร้อมคัดลอกและวาง. สามารถคอมไพล์ด้วย `dotnet run` และจะสร้าง PNG ตามที่อธิบายข้างต้น. + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +รันโปรแกรม, คุณจะเห็นข้อความในคอนโซลยืนยันการสร้างไฟล์. เปิด `output.png` และตรวจสอบข้อความตัวหนา—voilà, คุณเพิ่ง **บันทึก HTML เป็น PNG** + +{{< /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..b31f59021 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 และบันทึกเป็น ZIP ด้วย C# – คู่มือฉบับสมบูรณ์](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +เรียนรู้วิธีเรนเดอร์ HTML เป็น PNG แล้วบันทึกเป็นไฟล์ ZIP ด้วย C# อย่างละเอียดในคู่มือฉบับสมบูรณ์นี้! {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/thai/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/thai/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..a7028ec7e --- /dev/null +++ b/html/thai/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,265 @@ +--- +category: general +date: 2026-02-14 +description: เรนเดอร์ HTML เป็น PNG ด้วย C# และเรียนรู้วิธีแปลง HTML เป็นภาพ, เขียนสตรีมเป็น + ZIP, และสร้างไฟล์ zip ด้วย C# อย่างรวดเร็ว. +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: th +og_description: เรนเดอร์ HTML เป็น PNG ด้วย C# และค้นหาวิธีแปลง HTML เป็นภาพ, เขียนสตรีมเป็น + ZIP, และสร้างไฟล์ ZIP ด้วย C# อย่างมีประสิทธิภาพ. +og_title: เรนเดอร์ HTML เป็น PNG และบันทึกเป็น ZIP ด้วย C# – คู่มือฉบับสมบูรณ์ +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: เรนเดอร์ HTML เป็น PNG และบันทึกเป็น ZIP ด้วย C# – คู่มือฉบับสมบูรณ์ +url: /th/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +construct final answer.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# แปลง HTML เป็น PNG และบันทึกเป็น ZIP ด้วย C# – คู่มือฉบับสมบูรณ์ + +เคยต้องการ **render HTML to PNG** แต่ไม่แน่ใจว่าจะเก็บภาพและ markup ดั้งเดิมไว้ด้วยกันอย่างไรหรือไม่? คุณไม่ได้เป็นคนเดียว—นักพัฒนาหลายคนเจออุปสรรคเดียวกันเมื่อต้องสร้างเครื่องมือรายงาน, รูปย่ออีเมล, หรือชุดเอกสารออฟไลน์ + +ข่าวดี? ในบทแนะนำนี้เราจะพาคุณผ่านโซลูชันแบบอิสระเดียวที่ **converts HTML to image**, เขียนสตรีมที่ได้ลงในไฟล์ ZIP, และแม้แต่เก็บ HTML ต้นฉบับไว้คู่กับมัน. เมื่อจบคุณจะมีโปรแกรมที่รันได้ซึ่งทำทุกอย่างตั้งแต่ต้นจนจบ, และคุณจะเข้าใจว่าทำไมแต่ละส่วนจึงสำคัญ + +เราจะใส่เคล็ดลับเกี่ยวกับ **write stream to zip**, พูดถึงรายละเอียดของ **create zip archive c#**, และแสดงวิธี **save html to zip** โดยไม่ต้องใช้ยูทิลิตี้ zip ของบุคคลที่สาม. ไม่ต้องอ้างอิงภายนอก—เพียงโค้ดและเหตุผลเบื้องหลังมัน + +--- + +## สิ่งที่คุณต้องการ + +- .NET 6.0 หรือใหม่กว่า (API ทำงานบน .NET Core และ .NET Framework ด้วย) +- Aspose.HTML for .NET (แพ็กเกจ NuGet `Aspose.Html`) – มันจัดการการเรนเดอร์ HTML อย่างหนัก +- ความคุ้นเคยเล็กน้อยกับ `System.IO.Compression` – เราจะใช้คลาสในตัว `ZipArchive` + +เท่านี้เอง. เปิดโปรแกรมแก้ไขข้อความหรือ Visual Studio แล้วเริ่มกันเลย + +--- + +## ขั้นตอนที่ 1: ตั้งค่า Custom ResourceHandler เพื่อ Write Stream to ZIP + +เมื่อ Aspose.HTML บันทึกเอกสาร, มันจะขอ `ResourceHandler` ให้ส่ง `Stream` ที่จะเก็บแต่ละทรัพยากร (ภาพ, CSS, ฯลฯ). โดยการสืบทอด `ResourceHandler` เราสามารถส่งทรัพยากรทั้งหมดไปยัง **zip archive** แทนระบบไฟล์ + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**ทำไมคุณอาจสนใจ:** การเก็บ HTML ในหน่วยความจำหมายความว่าคุณสามารถ **save html to zip** ภายหลังโดยไม่ต้องอ่านจากดิสก์อีกครั้ง. นอกจากนี้ยังทำให้การทดสอบหน่วยเป็นเรื่องง่าย + +## ขั้นตอนที่ 4: เรนเดอร์ HTML เป็น PNG และเก็บไว้ใน ZIP + +ตอนนี้มาถึงหัวใจของบทแนะนำ—การเรนเดอร์เอกสารและส่งสตรีมผลลัพธ์ตรงไปยัง archive + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### ผลลัพธ์ที่คาดหวัง + +เมื่อโปรแกรมทำงานเสร็จ, คุณจะพบไฟล์ชื่อ `result.zip` ในโฟลเดอร์ของไฟล์ executable. เปิดไฟล์และคุณจะเห็น: + +- **page.png** – ภาพสแนปช็อตแบบแรสเตอร์ของ HTML (ผลลัพธ์ **render html to png** ของเรา). +- **index.html** (หรือชื่อใดก็ได้ที่ Aspose.HTML กำหนด) – markup ดั้งเดิม, ยืนยันว่าเราสามารถ **save html to zip** ได้สำเร็จ + +คุณสามารถแตกไฟล์ zip ด้วยโปรแกรมจัดการ archive ใดก็ได้และดู PNG เพื่อยืนยันคุณภาพการเรนเดอร์ + +## ขั้นตอนที่ 5: จัดการ Edge Cases และข้อผิดพลาดทั่วไป + +| สถานการณ์ | สิ่งที่ต้องระวัง | วิธีแก้แนะนำ | +|-----------|-------------------|-----------------| +| **Large HTML pages** | การใช้หน่วยความจำพุ่งสูงเนื่องจากเรารักษา PNG ทั้งหมดใน `MemoryStream`. | เปลี่ยนเป็นสตรีมไฟล์ชั่วคราว (`FileStream`) หากภาพมีขนาดเกินหลายเมกะไบต์. | +| **Existing zip file** | การเปิด zip ในโหมด `Update` จะรักษาเอนทรีที่มีอยู่, แต่ชื่อซ้ำจะทำให้เกิดข้อยกเว้น. | ลบเอนทรีก่อน: `zipArchive.GetEntry(name)?.Delete();` ก่อนสร้างใหม่. | +| **Unsupported CSS** | Aspose.HTML อาจละเลยคุณลักษณะ CSS สมัยใหม่บางอย่าง. | ทดสอบการเรนเดอร์ในเครื่อง; ใช้สไตล์อินไลน์เป็นสำรองสำหรับเลย์เอาต์สำคัญ. | +| **Thread safety** | `ZipArchive` ไม่ปลอดภัยต่อการทำงานหลายเธรด. | ทำการเรนเดอร์และบีบอัดในเธรดเดียวหรือใช้ archive แยกสำหรับแต่ละเธรด. | + +**ทำไมเรื่องเหล่านี้สำคัญ:** การรู้ขีดจำกัดของ **write stream to zip** ช่วยให้คุณหลีกเลี่ยงการพังของแอปพลิเคชันและทำให้แอปของคุณแข็งแรงเมื่อต้องขยายเพื่อประมวลผลหลายสิบหน้าพร้อมกัน + +## ขั้นตอนที่ 6: ตัวอย่างเต็มพร้อมรัน + +ด้านล่างเป็นโปรแกรมเต็มที่คุณสามารถคัดลอก‑วางลงในโปรเจกต์คอนโซล. มันรวมทุก using directive, คอมเมนต์, และรูปแบบการปล่อยทรัพยากรที่เหมาะสม + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +รันโปรแกรม (`dotnet run`) แล้วคุณจะเห็นข้อความยืนยัน. เปิด `result.zip` เพื่อยืนยันว่ามีไฟล์ทั้งสองอยู่ + +## คำถามที่พบบ่อย (FAQ) + +**Q: ทำงานบน .NET Framework 4.7 ได้หรือไม่?** +A: ใช่. API `System.IO.Compression` มีความเสถียรตั้งแต่ .NET 4.5, และ Aspose.HTML รองรับ .NET Framework เต็มรูปแบบ. เพียงอ้างอิง Aspose.HTML DLL ที่เหมาะสม + +**Q: ฉันสามารถเพิ่มทรัพยากรเพิ่มเติมเช่น CSS หรือฟอนต์ได้หรือไม่?** +A: แน่นอน. ทรัพยากรภายนอกใด ๆ ที่ HTML อ้างอิงจะทำให้ `HandleResource` ทำงาน, ดังนั้นพวกมันจะถูกเก็บใน zip เดียวโดยอัตโนมัติ + +**Q: ถ้าต้องการรูปแบบภาพอื่น (เช่น JPEG) จะทำอย่างไร?** +A: เปลี่ยนคอนสตรัคเตอร์ของ `ImageRenderer` ให้ใช้ `JpegRenderer` หรือกำหนด `ImageFormat` ใน `ImageRenderingOptions`. ส่วนที่เหลือของ pipeline ยังคงเหมือนเดิม + +**Q: zip มีการป้องกันด้วยรหัสผ่านหรือไม่?** +A: `ZipArchive` ในตัวไม่รองรับการเข้ารหัส. หากต้องการ, พิจารณาใช้ไลบรารีของบุคคลที่สามเช่น `SharpZipLib` และปรับ `ZipHandler` ให้สอดคล้อง + +## สรุป + +คุณตอนนี้ + +{{< /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/working-with-html-documents/_index.md b/html/thai/net/working-with-html-documents/_index.md index d8de34f36..031e743a0 100644 --- a/html/thai/net/working-with-html-documents/_index.md +++ b/html/thai/net/working-with-html-documents/_index.md @@ -37,6 +37,7 @@ url: /th/net/working-with-html-documents/ ตอนนี้ มาพัฒนาทักษะของคุณไปอีกขั้น การแก้ไขเอกสาร HTML เป็นงานทั่วไปสำหรับนักพัฒนาเว็บ และ Aspose.HTML ช่วยลดความยุ่งยากของกระบวนการนี้ได้อย่างมาก ในส่วนนี้ เราจะพูดถึงการสร้าง การจัดการ และการจัดรูปแบบเอกสาร คุณจะค้นพบวิธีปรับปรุงรูปลักษณ์และฟังก์ชันการทำงานของเนื้อหาเว็บของคุณ ให้ดึงดูดและใช้งานง่าย ### [วิธีบันทึก HTML ใน C# – คู่มือฉบับสมบูรณ์โดยใช้ Custom Resource Handler](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) +### [วิธีบันทึก HTML ใน C# ด้วย Custom Resource Handler](./how-to-save-html-in-c-with-custom-resource-handler/) ### [วิธีทำให้หัวเรื่องเป็นตัวหนาด้วย CSS & C# – คู่มือขั้นตอนเต็ม](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) เรียนรู้วิธีทำให้หัวเรื่องเป็นตัวหนาด้วย CSS ใน C# อย่างละเอียด พร้อมขั้นตอนครบถ้วนเพื่อปรับปรุงการออกแบบเว็บของคุณ diff --git a/html/thai/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/thai/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..6b6b40493 --- /dev/null +++ b/html/thai/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-02-14 +description: เรียนรู้วิธีบันทึก HTML ด้วย Aspose.HTML ใน C# คู่มือขั้นตอนต่อขั้นตอนนี้แสดงวิธีเขียนไฟล์ + HTML, โหลด HTML จากสตริง, แปลง HTML เป็นไฟล์, และใช้ตัวจัดการทรัพยากรแบบกำหนดเอง +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: th +og_description: วิธีบันทึก HTML อย่างรวดเร็วด้วย Aspose.HTML เรียนรู้การเขียนไฟล์ + HTML, โหลด HTML จากสตริง, แปลง HTML เป็นไฟล์, และการใช้งานตัวจัดการทรัพยากรแบบกำหนดเอง +og_title: วิธีบันทึก HTML ใน C# – คู่มือครบถ้วน +tags: +- Aspose.HTML +- C# +- File I/O +title: วิธีบันทึก HTML ใน C# ด้วยตัวจัดการทรัพยากรแบบกำหนดเอง +url: /th/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +title translation. + +Step headings: "Step 1: Load HTML from a String (the “load html from string” part)" -> translate but keep phrase "load html from string" unchanged. + +Similarly for other steps. + +Blockquote texts: translate. + +Result you’ll see: translate. + +Common Questions & Edge Cases heading and bullet items. + +Make sure to keep code block placeholders. + +Now produce final output. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีบันทึก HTML ใน C# ด้วย Custom Resource Handler + +เคยสงสัย **how to save html** โดยตรงจากสตริงโดยไม่ต้องเขียนลงดิสก์บ้างไหม? คุณไม่ได้เป็นคนเดียว—นักพัฒนาหลายคนเจอปัญหานี้เมื่อต้องสร้างรายงานแบบเรียลไทม์หรือสตรีมเนื้อหาไปยังเบราว์เซอร์ ข่าวดีคือ Aspose.HTML ทำให้กระบวนการทั้งหมดเป็นเรื่องง่าย และคุณยังสามารถเชื่อมต่อโลจิกการจัดเก็บของคุณเองด้วย custom resource handler ได้อีกด้วย + +ในบทเรียนนี้เราจะอธิบายขั้นตอนการโหลด HTML จากสตริง, การตั้งค่า handler แบบกำหนดเอง, และสุดท้ายการเขียน HTML ลงไฟล์. เมื่อจบคุณจะรู้วิธี **write html file**, วิธี **load html from string**, วิธี **convert html to file**, และวิธีสร้าง **custom resource handler** ที่เหมาะกับสถานการณ์การจัดเก็บใด ๆ + +> **What you’ll get:** โปรแกรม C# ที่พร้อมรันครบชุด, คำอธิบายทุกบรรทัด, และเคล็ดลับในการขยายโซลูชันไปยังคลาวด์สตอเรจหรือ pipeline ที่ทำงานในหน่วยความจำ + +## Prerequisites + +- .NET 6.0 หรือใหม่กว่า (API ทำงานเช่นเดียวกันบน .NET Framework 4.6+) +- Aspose.HTML for .NET NuGet package (`Aspose.Html`) +- ความเข้าใจพื้นฐานของไวยากรณ์ C# (ถ้าคุณคุ้นเคยกับคำสั่ง `using` ก็พร้อมแล้ว) + +ไม่ต้องมีไฟล์การตั้งค่าเพิ่มเติม—แค่สร้างโปรเจกต์คอนโซลใหม่และใส่โค้ดด้านล่าง + + + +## Step 1: Load HTML from a String (the “load html from string” part) + +ก่อนอื่นเราต้องมีอินสแตนซ์ `HTMLDocument`. Aspose.HTML ให้คุณส่ง markup ดิบตรงเข้าไปในคอนสตรัคเตอร์ ซึ่งหมายความว่าคุณสามารถ **load html from string** ได้โดยไม่ต้องสร้างไฟล์กลาง + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +Why `HTMLDocument` and not a plain string? Aspose parses the markup, builds a DOM, and applies CSS exactly like a browser would. That’s the core of **how to render html** correctly, especially when you later add external stylesheets or JavaScript‑generated content. + +## Step 3 – Configure Image Rendering Options (Convert HTML to Image) + +Next we tell the renderer what size, background, and quality we want. These settings directly affect the final PNG, so tweak them to match your use case. + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*Edge case:* If you need a transparent background (e.g., for overlay thumbnails), set `BackgroundColor = Color.Transparent` and make sure the output format supports alpha (PNG does). + +## Step 4 – Apply Global Font Options (Optional but Handy) + +Sometimes you want every piece of text in the document to be bold, italic, or a particular web font. Aspose lets you set `DefaultFontOptions` on the document. + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +This is a quick way to **convert HTML to image** with a uniform style, without touching each element’s CSS. If you later load external CSS that sets its own `font-weight`, those rules will override the global setting—exactly how a browser behaves. + +## Step 5 – Render and Save the PNG (Save HTML as PNG) + +Now the heavy lifting happens. We create an `ImageRenderer`, point it at the `HTMLDocument`, feed it the output stream, and call `Render()`. + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +The call is synchronous and blocks until the image is fully written. For large pages you might want to run it on a background thread, but for most thumbnail‑generation scenarios the blocking call is fine. + +**Expected result:** a file named `output.png` (800 × 600) containing the word “Bold text” in black, bold‑styled font on a white canvas. + +## Step 6 – Verify the Output (Render HTML to PNG Checklist) + +After the code runs, open the PNG in any image viewer. You should see: + +- The exact dimensions you set (`Width` × `Height`). +- White background (or transparent if you changed it). +- Bold text rendered cleanly, thanks to antialiasing and hinting. + +If the text looks fuzzy, double‑check `UseAntialiasing` and `UseHinting`. If the file is missing, ensure the process has write permission to the target folder. + +### Common Questions & Edge Cases + +| Question | Answer | +|----------|--------| +| **Can I render a full webpage with external CSS/JS?** | Yes. Load the HTML from a URL (`new HTMLDocument("https://example.com")`) or read the file from disk, and Aspose will fetch linked stylesheets automatically (provided they’re reachable). | +| **What if I need a higher DPI for print?** | Set `renderingOptions.DpiX` and `renderingOptions.DpiY` (default is 96). Higher DPI yields larger files but sharper output. | +| **How do I handle SVG or Canvas elements?** | Aspose.HTML supports SVG natively. Canvas is rendered based on the JavaScript executed during layout, so make sure you enable script execution (`htmlDocument.EnableJavaScript = true`). | +| **Is there a way to batch‑convert many HTML files?** | Wrap the rendering logic in a `foreach` loop, re‑using the same `ImageRenderingOptions` instance for speed. | +| **Can I output JPEG instead of PNG?** | Use `JpegRenderingOptions` and change the file extension to `.jpg`. The rest of the code stays the same. | + +## Full Working Example (All Steps in One File) + +Below is the complete, copy‑paste‑ready program. It compiles with `dotnet run` and produces the PNG described above. + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +Run the program, and you’ll see the console message confirming the file’s creation. Open `output.png` and verify the bold text—voilà, you’ve just **saved HTML as PNG + +{{< /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/working-with-html-documents/_index.md b/html/turkish/net/working-with-html-documents/_index.md index 1aee408b6..4676977b2 100644 --- a/html/turkish/net/working-with-html-documents/_index.md +++ b/html/turkish/net/working-with-html-documents/_index.md @@ -37,8 +37,11 @@ Temelleri kavradığınızda, oluşturma sürecine daha derinlemesine dalacağı Şimdi becerilerinizi bir üst seviyeye taşıyalım. HTML belgelerini düzenlemek web geliştiricileri için yaygın bir görevdir ve Aspose.HTML bu süreci önemli ölçüde basitleştirir. Bu bölümde, belge oluşturma, düzenleme ve biçimlendirmeyi ele alacağız. Web içeriğinizin görünümünü ve işlevselliğini nasıl geliştireceğinizi, onu ilgi çekici ve kullanıcı dostu hale getireceğinizi keşfedeceksiniz. ### [C#'ta HTML Kaydetme – Özel Kaynak İşleyicisi Kullanarak Tam Kılavuz](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) + ### [CSS ve C# ile Başlığı Kalınlaştırma – Tam Adım Adım Kılavuz](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) +### [C#'ta HTML Kaydetme – Özel Kaynak İşleyicisi Kullanarak](./how-to-save-html-in-c-with-custom-resource-handler/) + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/turkish/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/turkish/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..ae32c6c7d --- /dev/null +++ b/html/turkish/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-02-14 +description: Aspose.HTML'i C# ile kullanarak HTML kaydetmeyi öğrenin. Bu adım adım + kılavuz, HTML dosyası yazmayı, HTML'i dizeden yüklemeyi, HTML'i dosyaya dönüştürmeyi + ve özel bir kaynak işleyicisi kullanmayı gösterir. +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: tr +og_description: Aspose.HTML ile HTML'yi hızlı bir şekilde nasıl kaydedilir. HTML dosyası + yazmayı, HTML'yi dizeden yüklemeyi, HTML'yi dosyaya dönüştürmeyi ve özel bir kaynak + işleyicisi uygulamayı öğrenin. +og_title: C#'ta HTML Nasıl Kaydedilir – Tam Rehber +tags: +- Aspose.HTML +- C# +- File I/O +title: C#'ta Özel Kaynak İşleyicisi ile HTML Nasıl Kaydedilir +url: /tr/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +save html flow". Should translate that too. + +Also translate the "What you’ll get:" etc. + +Make sure not to translate code placeholders. + +Also keep markdown formatting. + +Let's produce translation. + +We need to keep shortcodes at top and bottom unchanged. + +Proceed. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# ile Özel Kaynak İşleyici Kullanarak HTML Kaydetme + +Hiç **html kaydetmenin** doğrudan bir dizeden, diske dokunmadan nasıl yapılacağını merak ettiniz mi? Yalnız değilsiniz—birçok geliştirici, raporları anında oluşturmak ya da içeriği bir tarayıcıya akıtmak istediklerinde bu soruna takılıyor. İyi haber şu ki Aspose.HTML tüm süreci çocuk oyuncağı hâline getiriyor ve hatta kendi depolama mantığınızı özel bir kaynak işleyiciyle entegre edebiliyorsunuz. + +Bu öğreticide bir dizeden HTML yüklemeyi, özel bir işleyici yapılandırmayı ve sonunda HTML'i bir dosyaya yazmayı adım adım göstereceğiz. Sonunda **html dosyası yazma**, **dizeden html yükleme**, **html'i dosyaya dönüştürme** ve **herhangi bir depolama senaryosuna uyan özel kaynak işleyici** oluşturma konularında bilgi sahibi olacaksınız. + +> **Neler elde edeceksiniz:** tamamen çalışır durumda bir C# programı, her satırın açıklamaları ve çözümü bulut depolamaya ya da bellek içi boru hatlarına genişletmek için ipuçları. + +## Önkoşullar + +- .NET 6.0 veya daha yenisi (API, .NET Framework 4.6+ üzerinde aynı şekilde çalışır) +- Aspose.HTML for .NET NuGet paketi (`Aspose.Html`) +- C# sözdizimi hakkında temel bir anlayış (eğer `using` ifadeleriyle rahat iseniz, sorun yok) + +Ek yapılandırma dosyalarına gerek yok—sadece yeni bir konsol projesi ve aşağıdaki kod. + + + +## Adım 1: Dizeden HTML Yükleme (“dizeden html yükleme” bölümü) + +İlk iş olarak bir `HTMLDocument` örneğine ihtiyacımız var. Aspose.HTML, ham işaretlemeyi doğrudan yapıcıya almanıza izin verir; bu sayede **dizeden html yükleme** ara dosyalara gerek kalmadan yapılabilir. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "Bold text
"); +``` + +Tại sao lại dùng `HTMLDocument` chứ không phải một chuỗi đơn? Aspose phân tích markup, xây dựng DOM và áp dụng CSS chính xác như trình duyệt. Đó là cốt lõi của **how to render html** một cách đúng đắn, đặc biệt khi bạn sau này thêm các stylesheet bên ngoài hoặc nội dung được tạo bởi JavaScript. + +## Bước 3 – Cấu hình tùy chọn render ảnh (Convert HTML to Image) + +Tiếp theo, chúng ta chỉ định cho renderer kích thước, nền và chất lượng mong muốn. Các thiết lập này ảnh hưởng trực tiếp đến PNG cuối cùng, vì vậy hãy điều chỉnh chúng cho phù hợp với trường hợp sử dụng của bạn. + +```csharp +using Aspose.Html.Rendering.Image; + +// Step 3: Set up image rendering options (size, background, and text quality) +ImageRenderingOptions renderingOptions = new ImageRenderingOptions +{ + Width = 800, // Desired image width in pixels + Height = 600, // Desired image height in pixels + BackgroundColor = Color.White, // Opaque white background + UseAntialiasing = true, // Smoother edges for vector shapes + UseHinting = true // Sharper glyph rendering +}; +``` + +*Edge case:* Nếu bạn cần nền trong suốt (ví dụ, cho thumbnail overlay), đặt `BackgroundColor = Color.Transparent` và đảm bảo định dạng đầu ra hỗ trợ alpha (PNG có hỗ trợ). + +## Bước 4 – Áp dụng tùy chọn phông chữ toàn cục (Tùy chọn nhưng hữu ích) + +Đôi khi bạn muốn mọi đoạn văn bản trong tài liệu đều là đậm, nghiêng, hoặc một phông web cụ thể. Aspose cho phép bạn đặt `DefaultFontOptions` trên tài liệu. + +```csharp +using Aspose.Html.Drawing; + +// Step 4: Define font options to apply a bold style globally +FontOptions boldFontOptions = new FontOptions +{ + Style = WebFontStyle.Bold // Replaces the older FontStyle.Bold enum +}; +htmlDocument.DefaultFontOptions = boldFontOptions; +``` + +Đây là cách nhanh để **convert HTML to image** với kiểu đồng nhất, mà không cần chỉnh sửa CSS của từng phần tử. Nếu sau này bạn tải CSS bên ngoài có thiết lập `font-weight` riêng, các quy tắc đó sẽ ghi đè cài đặt toàn cục — đúng như cách trình duyệt hoạt động. + +## Bước 5 – Render và lưu PNG (Save HTML as PNG) + +Bây giờ công việc nặng nề diễn ra. Chúng ta tạo một `ImageRenderer`, chỉ tới `HTMLDocument`, đưa vào stream đầu ra, và gọi `Render()`. + +```csharp +using System; +using System.IO; +using Aspose.Html.Rendering.Image; + +// Step 5: Create a file stream for the output PNG image +using (FileStream outputStream = new FileStream("output.png", FileMode.Create)) +{ + // Step 6: Render the HTML document to the image stream using the configured options + ImageRenderer renderer = new ImageRenderer(htmlDocument, outputStream, renderingOptions); + renderer.Render(); // The PNG file is written to the specified path +} +``` + +Lệnh gọi này đồng bộ và chặn cho đến khi ảnh được ghi hoàn toàn. Đối với các trang lớn, bạn có thể muốn chạy trên một thread nền, nhưng trong hầu hết các kịch bản tạo thumbnail, việc chặn này là ổn. + +**Kết quả mong đợi:** một file tên `output.png` (800 × 600) chứa từ “Bold text” màu đen, phông chữ đậm trên nền trắng. + +## Bước 6 – Xác minh đầu ra (Render HTML to PNG Checklist) + +Sau khi code chạy, mở PNG bằng bất kỳ trình xem ảnh nào. Bạn sẽ thấy: + +- Kích thước chính xác bạn đã đặt (`Width` × `Height`). +- Nền trắng (hoặc trong suốt nếu bạn đã thay đổi). +- Văn bản đậm được render sạch sẽ, nhờ antialiasing và hinting. + +Nếu văn bản trông mờ, hãy kiểm tra lại `UseAntialiasing` và `UseHinting`. Nếu file thiếu, hãy chắc chắn quá trình có quyền ghi vào thư mục đích. + +### Các câu hỏi thường gặp & Trường hợp đặc biệt + +| Question | Answer | +|----------|--------| +| **Can I render a full webpage with external CSS/JS?** | **Có thể render một trang web đầy đủ với CSS/JS bên ngoài không?** Yes. Load the HTML from a URL (`new HTMLDocument("https://example.com")`) or read the file from disk, and Aspose will fetch linked stylesheets automatically (provided they’re reachable). | +| **What if I need a higher DPI for print?** | **Nếu tôi cần DPI cao hơn cho việc in thì sao?** Set `renderingOptions.DpiX` and `renderingOptions.DpiY` (default is 96). Higher DPI yields larger files but sharper output. | +| **How do I handle SVG or Canvas elements?** | **Làm sao để xử lý các phần tử SVG hoặc Canvas?** Aspose.HTML supports SVG natively. Canvas is rendered based on the JavaScript executed during layout, so make sure you enable script execution (`htmlDocument.EnableJavaScript = true`). | +| **Is there a way to batch‑convert many HTML files?** | **Có cách nào để batch‑convert nhiều file HTML không?** Wrap the rendering logic in a `foreach` loop, re‑using the same `ImageRenderingOptions` instance for speed. | +| **Can I output JPEG instead of PNG?** | **Có thể xuất ra JPEG thay vì PNG không?** Use `JpegRenderingOptions` and change the file extension to `.jpg`. The rest of the code stays the same. | + +## Ví dụ hoạt động đầy đủ (Tất cả các bước trong một file) + +Dưới đây là chương trình hoàn chỉnh, sẵn sàng copy‑paste. Nó biên dịch bằng `dotnet run` và tạo ra PNG như mô tả ở trên. + +```csharp +// --------------------------------------------------------------- +// Create PNG from HTML – Complete Example +// --------------------------------------------------------------- +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load a tiny HTML snippet (you could load a file or URL instead) + HTMLDocument htmlDocument = new HTMLDocument( + "Bold text
"); + + // 2️⃣ Configure how the image should look + ImageRenderingOptions renderingOptions = new ImageRenderingOptions + { + Width = 800, + Height = 600, + BackgroundColor = Color.White, + UseAntialiasing = true, + UseHinting = true + }; + + // 3️⃣ Apply a global bold style (optional but demonstrates FontOptions) + FontOptions boldFontOptions = new FontOptions + { + Style = WebFontStyle.Bold + }; + htmlDocument.DefaultFontOptions = boldFontOptions; + + // 4️⃣ Render and save as PNG + using (FileStream output = new FileStream("output.png", FileMode.Create)) + { + ImageRenderer renderer = new ImageRenderer(htmlDocument, output, renderingOptions); + renderer.Render(); // The PNG is written here + } + + Console.WriteLine("✅ PNG created successfully – check output.png"); + } +} +``` + +Chạy chương trình, và bạn sẽ thấy thông báo console xác nhận file đã được tạo. Mở `output.png` và kiểm tra văn bản đậm — voilà, bạn vừa **saved HTML as PNG** + +{{< /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..0ed772976 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#. +### [Render HTML thành PNG và lưu vào ZIP với C# – Hướng dẫn toàn diện](./render-html-to-png-and-save-to-zip-with-c-complete-guide/) +Học cách chuyển đổi HTML sang PNG và nén thành tệp ZIP bằng C# với 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/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md b/html/vietnamese/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md new file mode 100644 index 000000000..3b06ec537 --- /dev/null +++ b/html/vietnamese/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/_index.md @@ -0,0 +1,265 @@ +--- +category: general +date: 2026-02-14 +description: Kết xuất HTML thành PNG trong C# và học cách chuyển đổi HTML sang hình + ảnh, ghi luồng vào ZIP, và tạo một tệp zip trong C# nhanh chóng. +draft: false +keywords: +- render html to png +- convert html to image +- save html to zip +- write stream to zip +- create zip archive c# +language: vi +og_description: Kết xuất HTML sang PNG trong C# và khám phá cách chuyển đổi HTML thành + hình ảnh, ghi luồng vào ZIP, và tạo một tệp zip trong C# một cách hiệu quả. +og_title: Chuyển đổi HTML sang PNG và Lưu vào ZIP bằng C# – Hướng dẫn toàn diện +tags: +- Aspose.HTML +- C# +- Image Rendering +- ZIP Compression +title: Chuyển đổi HTML sang PNG và Lưu vào ZIP bằng C# – Hướng dẫn đầy đủ +url: /vi/net/rendering-html-documents/render-html-to-png-and-save-to-zip-with-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Render HTML to PNG và Lưu vào ZIP với C# – Hướng Dẫn Toàn Diện + +Bạn đã bao giờ cần **render HTML to PNG** nhưng không chắc làm sao để giữ cả hình ảnh và mã gốc lại với nhau? Bạn không phải là người duy nhất—nhiều nhà phát triển gặp phải rào cản này khi xây dựng công cụ báo cáo, hình thu nhỏ email, hoặc các gói tài liệu offline. + +Tin tốt? Trong hướng dẫn này, chúng ta sẽ đi qua một giải pháp duy nhất, tự chứa, cho phép **converts HTML to image**, ghi luồng kết quả vào một tệp ZIP, và thậm chí lưu mã HTML nguồn bên cạnh. Khi kết thúc, bạn sẽ có một chương trình có thể chạy được thực hiện mọi thứ từ đầu đến cuối, và bạn sẽ hiểu tại sao mỗi phần lại quan trọng. + +Chúng tôi cũng sẽ đưa vào các mẹo về **write stream to zip**, thảo luận về các chi tiết của **create zip archive c#**, và chỉ cho bạn cách **save html to zip** mà không cần bất kỳ công cụ zip bên thứ ba nào. Không cần tham chiếu bên ngoài—chỉ cần mã và lý do phía sau nó. + +--- + +## Những gì bạn cần + +- .NET 6.0 trở lên (API hoạt động trên .NET Core và .NET Framework cũng vậy) +- Aspose.HTML cho .NET (gói NuGet `Aspose.Html`) – nó thực hiện phần xử lý nặng của việc render HTML. +- Một chút quen thuộc với `System.IO.Compression` – chúng ta sẽ sử dụng lớp `ZipArchive` tích hợp. + +Chỉ vậy thôi. Mở một trình soạn thảo văn bản hoặc Visual Studio, và chúng ta bắt đầu. + +--- + +## Bước 1: Thiết lập Custom ResourceHandler để Write Stream to ZIP + +Khi Aspose.HTML lưu một tài liệu, nó yêu cầu một `ResourceHandler` cung cấp một `Stream` cho mỗi tài nguyên (hình ảnh, CSS, v.v.) sẽ được lưu. Bằng cách kế thừa `ResourceHandler`, chúng ta có thể chuyển mọi tài nguyên vào **zip archive** thay vì hệ thống tệp. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+"; +var htmlDoc = new HTMLDocument(htmlContent); +``` + +**Tại sao bạn có thể quan tâm:** Giữ HTML trong bộ nhớ có nghĩa là bạn có thể **save html to zip** sau này mà không cần đọc lại từ đĩa. Nó cũng giúp việc kiểm thử đơn vị trở nên dễ dàng. + +## Bước 4: Render HTML thành PNG và lưu vào ZIP + +Bây giờ là phần cốt lõi của hướng dẫn—render tài liệu và đưa luồng kết quả trực tiếp vào archive. + +```csharp +using (var zipHandler = new ZipHandler("result.zip")) +{ + // Render HTML to a PNG inside a MemoryStream first. + using (var pngStream = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, pngStream, imageOptions); + renderer.Render(); // This does the heavy lifting. + pngStream.Seek(0, SeekOrigin.Begin); // Reset for reading. + + // Create a resource entry named "page.png" inside the zip. + var imageResource = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntryStream = zipHandler.HandleResource(imageResource)) + { + pngStream.CopyTo(zipEntryStream); // Write the PNG bytes into the zip. + } + } + + // Step 5: Save the original HTML into the same archive. + var htmlSaveOptions = new HTMLSaveOptions { OutputStorage = zipHandler }; + htmlDoc.Save(htmlSaveOptions); // This triggers HandleResource for the HTML file. +} +``` + +### Kết quả mong đợi + +Sau khi chương trình kết thúc, bạn sẽ thấy một tệp có tên `result.zip` trong thư mục chứa thực thi. Mở nó và bạn sẽ thấy: + +- **page.png** – một ảnh chụp raster của HTML (kết quả **render html to png** của chúng ta). +- **index.html** (hoặc bất kỳ tên nào Aspose.HTML gán) – markup gốc, xác nhận rằng chúng ta đã **save html to zip** thành công. + +Bạn có thể giải nén zip bằng bất kỳ trình quản lý archive nào và xem PNG để xác minh chất lượng render. + +## Bước 5: Xử lý các trường hợp góc cạnh và các lỗi thường gặp + +| Tình huống | Cần chú ý | Cách khắc phục | +|-----------|-----------|----------------| +| **Các trang HTML lớn** | Tiêu thụ bộ nhớ tăng đột biến vì chúng ta giữ toàn bộ PNG trong `MemoryStream`. | Chuyển sang luồng tệp tạm (`FileStream`) nếu hình ảnh vượt quá vài megabyte. | +| **Tệp zip đã tồn tại** | Mở zip ở chế độ `Update` sẽ giữ lại các mục hiện có, nhưng tên trùng sẽ gây ngoại lệ. | Xóa mục trước: `zipArchive.GetEntry(name)?.Delete();` trước khi tạo mục mới. | +| **CSS không được hỗ trợ** | Aspose.HTML có thể bỏ qua một số tính năng CSS hiện đại. | Kiểm tra render cục bộ; sử dụng inline styles cho bố cục quan trọng. | +| **An toàn đa luồng** | `ZipArchive` không an toàn khi đa luồng. | Giữ việc render và zip trên một luồng duy nhất hoặc sử dụng các archive riêng cho mỗi luồng. | + +**Tại sao những điều này quan trọng:** Biết giới hạn của **write stream to zip** giúp bạn tránh các lỗi runtime và giữ cho ứng dụng của bạn ổn định khi mở rộng để xử lý hàng chục trang đồng thời. + +## Bước 6: Mẫu đầy đủ, sẵn sàng chạy + +Dưới đây là chương trình hoàn chỉnh mà bạn có thể sao chép‑dán vào dự án console. Nó bao gồm tất cả các chỉ thị using, chú thích và mẫu giải phóng tài nguyên đúng cách. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +///This PNG lives inside a zip.
+ "; + var htmlDoc = new HTMLDocument(html); + + // 2️⃣ Set up image rendering options (convert html to image). + var imgOpts = new ImageRenderingOptions + { + UseAntialiasing = true, + UseHinting = true, + Width = 800, + Height = 600, + BackgroundColor = Color.White + }; + + // 3️⃣ Create a ZipHandler (write stream to zip) that will hold everything. + using (var zip = new ZipHandler("result.zip")) + { + // 4️⃣ Render the HTML to a PNG stored in a memory stream. + using (var png = new MemoryStream()) + { + var renderer = new ImageRenderer(htmlDoc, png, imgOpts); + renderer.Render(); // Render now. + png.Seek(0, SeekOrigin.Begin); // Reset position. + + // 5️⃣ Add the PNG as a resource inside the zip. + var pngInfo = new ResourceInfo("page.png", ResourceType.Image); + using (var zipEntry = zip.HandleResource(pngInfo)) + { + png.CopyTo(zipEntry); + } + } + + // 6️⃣ Save the HTML itself into the same archive (save html to zip). + var htmlOpts = new HTMLSaveOptions { OutputStorage = zip }; + htmlDoc.Save(htmlOpts); + } + + Console.WriteLine("✅ Rendering complete. Check 'result.zip' for page.png and the HTML file."); + } +} +``` + +Chạy chương trình (`dotnet run`) và bạn sẽ thấy thông báo xác nhận. Mở `result.zip` để xác nhận cả hai tệp đều có. + +## Câu hỏi thường gặp (FAQ) + +**Q: Điều này có hoạt động trên .NET Framework 4.7 không?** +A: Có. API `System.IO.Compression` đã ổn định từ .NET 4.5, và Aspose.HTML hỗ trợ đầy đủ .NET Framework. Chỉ cần tham chiếu tới DLL Aspose.HTML phù hợp. + +**Q: Tôi có thể thêm các tài nguyên khác như CSS hoặc phông chữ không?** +A: Chắc chắn. Bất kỳ tài nguyên bên ngoài nào được HTML tham chiếu sẽ kích hoạt `HandleResource`, vì vậy chúng sẽ tự động được đưa vào cùng một zip. + +**Q: Nếu tôi cần định dạng hình ảnh khác (ví dụ, JPEG) thì sao?** +A: Thay đổi constructor của `ImageRenderer` để sử dụng `JpegRenderer` hoặc đặt `ImageFormat` trong `ImageRenderingOptions`. Các phần còn lại của quy trình vẫn giữ nguyên. + +**Q: Zip có được bảo vệ bằng mật khẩu không?** +A: `ZipArchive` tích hợp không hỗ trợ mã hoá. Đối với trường hợp này, hãy cân nhắc thư viện bên thứ ba như `SharpZipLib` và điều chỉnh `ZipHandler` cho phù hợp. + +## Kết luận + +Bạn bây giờ + +{{< /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/working-with-html-documents/_index.md b/html/vietnamese/net/working-with-html-documents/_index.md index ce506e288..489482e39 100644 --- a/html/vietnamese/net/working-with-html-documents/_index.md +++ b/html/vietnamese/net/working-with-html-documents/_index.md @@ -38,6 +38,8 @@ Bây giờ, hãy đưa kỹ năng của bạn lên một tầm cao mới. Chỉn ### [Cách lưu HTML trong C# – Hướng dẫn đầy đủ sử dụng Trình xử lý tài nguyên tùy chỉnh](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) +### [Cách lưu HTML trong C# với Trình xử lý tài nguyên tùy chỉnh](./how-to-save-html-in-c-with-custom-resource-handler/) + ### [Cách làm tiêu đề đậm bằng CSS & C# – Hướng dẫn chi tiết từng bước](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) Hướng dẫn chi tiết cách sử dụng CSS và C# để làm tiêu đề in đậm, kèm ví dụ mã và các bước thực hiện cụ thể. diff --git a/html/vietnamese/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md b/html/vietnamese/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md new file mode 100644 index 000000000..1265713f3 --- /dev/null +++ b/html/vietnamese/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-02-14 +description: Học cách lưu HTML bằng Aspose.HTML trong C#. Hướng dẫn từng bước này + chỉ cách ghi tệp HTML, tải HTML từ chuỗi, chuyển đổi HTML thành tệp và sử dụng trình + xử lý tài nguyên tùy chỉnh. +draft: false +keywords: +- how to save html +- write html file +- load html from string +- convert html to file +- custom resource handler +language: vi +og_description: Cách lưu HTML nhanh chóng với Aspose.HTML. Tìm hiểu cách ghi tệp HTML, + tải HTML từ chuỗi, chuyển đổi HTML thành tệp và triển khai trình xử lý tài nguyên + tùy chỉnh. +og_title: Cách Lưu HTML trong C# – Hướng Dẫn Toàn Diện +tags: +- Aspose.HTML +- C# +- File I/O +title: Cách lưu HTML trong C# với trình xử lý tài nguyên tùy chỉnh +url: /vi/net/working-with-html-documents/how-to-save-html-in-c-with-custom-resource-handler/ +--- + +content.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách Lưu HTML trong C# với Trình Xử Lý Tài Nguyên Tùy Chỉnh + +Bạn đã bao giờ tự hỏi **cách lưu html** trực tiếp từ một chuỗi mà không cần chạm tới đĩa chưa? Bạn không phải là người duy nhất—nhiều nhà phát triển gặp phải vấn đề này khi cần tạo báo cáo ngay lập tức hoặc truyền nội dung tới trình duyệt. Tin tốt là Aspose.HTML làm cho toàn bộ quá trình trở nên đơn giản, và bạn thậm chí có thể gắn logic lưu trữ của riêng mình bằng một trình xử lý tài nguyên tùy chỉnh. + +Trong hướng dẫn này, chúng ta sẽ đi qua việc tải HTML từ chuỗi, cấu hình trình xử lý tùy chỉnh, và cuối cùng ghi HTML ra file. Khi hoàn thành, bạn sẽ biết cách **ghi file html**, cách **tải html từ chuỗi**, cách **chuyển html thành file**, và cách tạo một **trình xử lý tài nguyên tùy chỉnh** phù hợp với bất kỳ kịch bản lưu trữ nào. + +> **Bạn sẽ nhận được:** một chương trình C# hoàn chỉnh, sẵn sàng chạy, giải thích từng dòng code, và các mẹo mở rộng giải pháp sang lưu trữ đám mây hoặc pipeline trong bộ nhớ. + +## Yêu cầu trước + +- .NET 6.0 trở lên (API hoạt động tương tự trên .NET Framework 4.6+) +- Gói NuGet Aspose.HTML for .NET (`Aspose.Html`) +- Kiến thức cơ bản về cú pháp C# (nếu bạn đã quen với các câu lệnh `using`, bạn đã sẵn sàng) + +Không cần bất kỳ tệp cấu hình bổ sung nào—chỉ cần một dự án console mới và đoạn code dưới đây. + + + +## Bước 1: Tải HTML từ Chuỗi (phần “load html from string”) + +Đầu tiên, chúng ta cần một thể hiện `HTMLDocument`. Aspose.HTML cho phép bạn truyền markup thô trực tiếp vào constructor, nghĩa là bạn có thể **tải html từ chuỗi** mà không cần bất kỳ tệp trung gian nào. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // The HTML we want to save – think of it as a template you might generate elsewhere. + string rawHtml = "