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..2a2ef0afa 100644 --- a/html/arabic/net/generate-jpg-and-png-images/_index.md +++ b/html/arabic/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML for .NET هي مكتبة قوية تتيح للمطورين إنشا تعلم كيفية تمكين مضاد التعرج عند تحويل ملفات DOCX إلى صور PNG أو JPG باستخدام Aspose.HTML. ### [تحويل docx إلى png – إنشاء أرشيف zip في C# – دليل تعليمي](./convert-docx-to-png-create-zip-archive-c-tutorial/) تعلم كيفية تحويل ملفات docx إلى صور PNG وإنشاء أرشيف ZIP باستخدام C# و Aspose.HTML. +### [إنشاء PNG من HTML في C# – دليل خطوة بخطوة](./create-png-from-html-in-c-step-by-step-guide/) +تعلم كيفية تحويل ملفات HTML إلى صور PNG باستخدام C# و Aspose.HTML من خلال دليل شامل خطوة بخطوة. ## خاتمة diff --git a/html/arabic/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/arabic/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..d17c31872 --- /dev/null +++ b/html/arabic/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-02-27 +description: إنشاء PNG من HTML بسرعة باستخدام Aspose.HTML في C#. تعلم كيفية تحويل + HTML إلى صورة، وتحديد عرض وارتفاع الصورة، وتحويل HTML إلى PNG في دقائق. +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: ar +og_description: إنشاء PNG من HTML باستخدام Aspose.HTML. يوضح هذا الدليل كيفية تحويل + HTML إلى صورة، وتحديد عرض وارتفاع الصورة، وتحويل HTML إلى PNG بكفاءة. +og_title: إنشاء PNG من HTML في C# – دليل كامل +tags: +- Aspose.HTML +- C# +- Image Rendering +title: إنشاء صورة PNG من HTML في C# – دليل خطوة بخطوة +url: /ar/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +Ok. + +Let's craft final output.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# إنشاء PNG من HTML في C# – دليل كامل + +هل احتجت يوماً إلى **إنشاء PNG من HTML** لكنك لم تكن متأكدًا أي مكتبة ستعطيك نتائج دقيقة إلى البكسل؟ لست وحدك—العديد من المطورين يواجهون نفس المشكلة عندما يحاولون تحويل صفحة ويب إلى صورة ثابتة للبريد الإلكتروني، التقارير، أو المصغرات. + +الخبر السار؟ باستخدام Aspose.HTML يمكنك **تحويل HTML إلى صورة**، التحكم بالأبعاد الدقيقة، و**حفظ HTML كـ PNG** ببضع أسطر من C#. في هذا الدرس سنستعرض العملية بالكامل، من تحميل ملف HTML إلى تعديل تحسين النص وأخيرًا كتابة PNG على القرص. في النهاية ستعرف كيف **تضبط عرض وارتفاع الصورة** برمجياً وستحصل على مقطع شفرة يمكن استخدامه في أي مشروع .NET. + +## ما ستتعلمه + +- كيفية تحميل مستند HTML باستخدام Aspose.HTML. +- الفرق بين `ImageRenderingOptions` و `TextOptions` ولماذا هما مهمان. +- كيفية **تحويل HTML إلى PNG** مع الحفاظ على الخطوط، التنعيم، وأنماط الخط السفلي. +- نصائح لتجاوز المشكلات الشائعة مثل الخطوط المفقودة أو الأحجام غير المتوقعة للصور. +- عينة شفرة كاملة جاهزة للتنفيذ يمكنك نسخها ولصقها في Visual Studio. + +> **المتطلبات المسبقة:** .NET 6+ (أو .NET Framework 4.6.2+)، Aspose.HTML for .NET مثبت عبر NuGet، وفهم أساسي للغة C#. لا توجد أدوات خارجية أخرى مطلوبة. + +--- + +## الخطوة 1: تحميل مستند HTML – بدء إنشاء PNG + +أولاً، نحتاج إلى كائن `HTMLDocument` يشير إلى ملف المصدر. هذا هو الأساس لأي عملية **إنشاء PNG من HTML**. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*لماذا هذه الخطوة مهمة:* فئة `HTMLDocument` تحلل العلامات، تحل CSS، وتبني DOM يمكن لمحرك العرض لاحقًا رسمه على bitmap. إذا كان المسار غير صحيح، ستظهر استثناء `FileNotFoundException` في خطوة **render html to image** التالية. + +--- + +## الخطوة 2: ضبط عرض وارتفاع الصورة – التحكم في حجم الناتج + +عند **تحويل HTML إلى صورة**، غالبًا ما تحتاج إلى دقة محددة—مثل مصغرة يجب أن تكون بالضبط 1200 × 800 بكسل. هنا يأتي دور `ImageRenderingOptions`. + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*نصيحة محترف:* إذا حذفت `Width` و `Height`، سيستخدم Aspose.HTML الحجم الطبيعي للصفحة، والذي قد يكون كبيرًا جدًا لتضمينه في البريد الإلكتروني. + +--- + +## الخطوة 3: تحسين عرض النص – جعل النص واضحًا + +النص على Linux غالبًا ما يبدو غير واضح ما لم تقم بتمكين الـ hinting. كائن `TextOptions` يتيح لك التحكم بذلك، مما يضمن أن تكون PNG النهائية حادة على كل منصة. + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*لماذا الـ hinting؟* الـ hinting يضبط شكل كل حرف ليتماشى مع شبكة البكسل، وهو أمر حاسم عندما **تحول HTML إلى PNG** لشاشات منخفضة الدقة. + +--- + +## الخطوة 4: دمج الخيارات وإضافة الأنماط – تكوين العرض الكامل + +الآن ندمج إعدادات الصورة والنص، ونوضح أيضًا كيفية تطبيق نمط خط عالمي، مثل وضع خط سفلي على كل النص. هذه الخطوة هي التي تقوم فعليًا بـ **حفظ HTML كـ PNG** مع أنماط مخصصة. + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*ملاحظة:* `WebFontStyle` يدعم العديد من العلامات (Bold, Italic, إلخ). يمكنك دمجها باستخدام عملية OR البتية إذا احتجت إلى عدة أنماط. + +--- + +## الخطوة 5: العرض والحفظ – اللحظة التي **تنشئ فيها PNG من HTML** + +بعد تكوين كل شيء، المكالمة النهائية هي سطر واحد يرسم الـ DOM على bitmap ويكتبها على القرص. + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +بعد تنفيذ هذا السطر، ستجد `output.png` في المجلد المحدد، بدقة 1200 × 800 بكسل، مع رسومات مضادة للتنعيم ونص محسّن بالـ hinting. + +--- + +## مثال كامل يعمل – الصق، شغّل، وتحقق + +فيما يلي البرنامج الكامل الذي يمكنك تجميعه كتطبيق console. يتضمن جميع عبارات `using`، معالجة الأخطاء، وتعليقات تحتاجها. + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**النتيجة المتوقعة:** ملف باسم `output.png` يظهر بجانب الملف التنفيذي، يعرض النسخة المرسومة من `sample.html`. افتحه بأي عارض صور لتتأكد من الأبعاد والأنماط. + +--- + +## المشكلات الشائعة وكيفية تجنبها + +| المشكلة | العرض | الحل | +|-------|----------|-----| +| الخطوط مفقودة | يظهر النص كخط sans‑serif عام | ثبّت الخطوط المطلوبة على الجهاز أو أدمج خطوط الويب في HTML. | +| أبعاد غير صحيحة | PNG أكبر أو أصغر من المتوقع | راجع قيم `Width` و `Height` في `ImageRenderingOptions`. | +| حواف غير واضحة | لا يوجد antialiasing | تأكد من `UseAntialiasing = true`. | +| تشوهات في العرض على Linux | النص يبدو غير واضح | عيّن `UseHinting = true` في `TextOptions`. | + +*نصيحة محترف:* عند **تحويل HTML إلى صورة** على خادم بدون واجهة (headless)، تأكد من أن الخادم يحتوي على المكتبات النظامية اللازمة (مثل `libgdiplus` على Linux) وإلا قد يلجأ Aspose.HTML إلى مُعالج برمجي بجودة أقل. + +--- + +## توسيع الحل – الخطوات التالية + +- **تحويل دفعي:** كرّر العملية على قائمة من ملفات HTML لإنتاج معرض من PNGs. +- **صيغ مختلفة:** استبدل `output.png` بـ `output.jpg` أو `output.bmp` بتغيير امتداد الملف؛ Aspose.HTML يختار الترميز المناسب تلقائيًا. +- **تحديد حجم ديناميكي:** احسب `Width` و `Height` بناءً على وسمة viewport في HTML لتصاميم متجاوبة. +- **إضافة علامة مائية:** استخدم `Aspose.Html.Drawing` لإدراج شعار قبل الحفظ. + +هذه الأفكار تسمح لك بالانتقال من مقطع **إنشاء PNG من HTML** بسيط إلى خدمة توليد صور متكاملة. + +--- + +## الخلاصة + +استعرضنا كل ما تحتاجه لت **إنشاء PNG من HTML** باستخدام Aspose.HTML لـ .NET: تحميل المستند، ضبط **عرض وارتفاع الصورة**، تحسين النص بالـ hinting، وأخيرًا **حفظ HTML كـ PNG**. مثال الشفرة الكامل جاهز للإدراج في مشروعك، والنصائح أعلاه ستساعدك على تجنب المشكلات الشائعة. + +الآن بعد أن أصبحت قادرًا على **تحويل HTML إلى صورة** بثقة، لماذا لا تجرب أنماط مختلفة، معالجة دفعات، أو حتى التحويل إلى PDF في نفس السلسلة؟ السماء هي الحد، والشفرة بين يديك. + +برمجة سعيدة، ولا تتردد في مشاركة نتائجك أو طرح أسئلتك في التعليقات! + +![Create PNG from HTML example](/images/create-png-from-html.png "Create PNG from HTML using Aspose.HTML") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/arabic/net/html-extensions-and-conversions/_index.md b/html/arabic/net/html-extensions-and-conversions/_index.md index 980eb7013..a86d6005b 100644 --- a/html/arabic/net/html-extensions-and-conversions/_index.md +++ b/html/arabic/net/html-extensions-and-conversions/_index.md @@ -41,6 +41,8 @@ url: /ar/net/html-extensions-and-conversions/ قم بتحويل HTML إلى PDF بسهولة باستخدام Aspose.HTML for .NET. اتبع دليلنا خطوة بخطوة واكتشف قوة تحويل HTML إلى PDF. ### [إنشاء PDF من HTML – دليل خطوة بخطوة بلغة C#](./create-pdf-from-html-c-step-by-step-guide/) دليل خطوة بخطوة لإنشاء ملف PDF من HTML باستخدام C# ومكتبة Aspose.HTML. +### [إنشاء PDF من HTML – دليل خطوة بخطوة للمطورين](./create-pdf-from-html-step-by-step-guide-for-developers/) +دليل خطوة بخطوة لإنشاء ملف PDF من HTML للمطورين باستخدام Aspose.HTML. ### [إنشاء مستند HTML بنص منسق وتصديره إلى PDF – دليل كامل](./create-html-document-with-styled-text-and-export-to-pdf-full/) دليل شامل لإنشاء مستند HTML بنص منسق وتصديره إلى PDF باستخدام Aspose.HTML. ### [تحويل EPUB إلى صورة في .NET باستخدام Aspose.HTML](./convert-epub-to-image/) @@ -73,6 +75,8 @@ url: /ar/net/html-extensions-and-conversions/ تعلم كيفية حفظ مستند HTML كملف ZIP باستخدام Aspose.HTML في C# خطوة بخطوة. ### [حفظ HTML إلى ZIP في C# – مثال كامل في الذاكرة](./save-html-to-zip-in-c-complete-in-memory-example/) تعلم كيفية حفظ مستند HTML كملف ZIP في الذاكرة باستخدام C# ومكتبة Aspose.HTML. +### [حفظ HTML كملف ZIP في C# – دليل كامل](./save-html-as-zip-in-c-complete-guide/) +تعلم كيفية حفظ مستندات HTML كملفات ZIP في C# باستخدام Aspose.HTML خطوة بخطوة مع أمثلة عملية. ## خاتمة diff --git a/html/arabic/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/arabic/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..161d819dc --- /dev/null +++ b/html/arabic/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,204 @@ +--- +category: general +date: 2026-02-27 +description: إنشاء ملف PDF من HTML بسرعة مع مثال كامل بلغة C#. تعلم تحويل HTML إلى + PDF، حفظ HTML كملف PDF، وتصدير HTML إلى PDF باستخدام إعدادات أفضل الممارسات. +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: ar +og_description: إنشاء ملف PDF من HTML في C# مع مثال جاهز للتنفيذ. يشرح هذا الدليل + كيفية تحويل HTML إلى PDF، وحفظ HTML كملف PDF، وتصدير HTML إلى PDF. +og_title: إنشاء PDF من HTML – دليل C# الكامل +tags: +- C# +- PDF +- HTML +title: إنشاء PDF من HTML – دليل خطوة بخطوة للمطورين +url: /ar/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# إنشاء PDF من HTML – دليل C# كامل + +هل احتجت يوماً إلى **إنشاء PDF من HTML** لكن لم تكن متأكدًا من أي استدعاءات API تستخدم؟ لست وحدك. سواء كنت تبني لوحة تقارير، مولد فواتير، أو أداة تصدير موقع ثابت، فإن تحويل HTML إلى PDF هو طلب شائع لتطبيقات الويب الحديثة. + +في هذا الدرس سنستعرض **مثال C# كامل وقابل للتنفيذ** يوضح لك كيفية **تحويل HTML إلى PDF**، ضبط خيارات العرض للحصول على ناتج واضح، وأخيرًا **حفظ HTML كـ PDF** على القرص. بنهاية الدرس ستحصل على نمط ثابت وجاهز للإنتاج لـ **تصدير HTML إلى PDF** يمكنك إدراجه في أي مشروع .NET. + +## ما ستتعلمه + +- كيفية تحميل ملف HTML محلي باستخدام `HTMLDocument`. +- أي خيارات العرض تحسن وزن الخط، سلاسة الصور، وتلميحات النص. +- الاستدعاء الدقيق لـ **تصدير HTML إلى PDF** باستخدام طريقة `Save` واحدة. +- نصائح للتعامل مع المستندات الكبيرة، تصحيح الأخطاء الشائعة، والتحقق من النتيجة. +- عينة كود كاملة يمكنك نسخها ولصقها وتشغيلها اليوم. + +### المتطلبات المسبقة + +- .NET 6+ (أو .NET Framework 4.7+). الـ API الذي نستخدمه يعمل على كلاهما. +- إشارة إلى المكتبة الافتراضية `HtmlToPdfLib` (استبدلها باسم المكتبة الفعلية التي تستخدمها). +- ملف `input.html` موجود في مجلد تتحكم فيه (سنسميه `YOUR_DIRECTORY`). + +إذا كان لديك هذه المكونات بالفعل، لنبدأ—لا حاجة لإعداد إضافي. + +## الخطوة 1: تحميل مستند HTML لـ **إنشاء PDF من HTML** + +الشيء الأول الذي تحتاجه هو كائن `HTMLDocument` يشير إلى ملف المصدر. فكر فيه كفتح دفتر ملاحظات قبل أن تبدأ الكتابة—بدون مستند، لا شيء يمكن عرضه. + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **لماذا هذا مهم:** تحميل ملف HTML مبكرًا يسمح للمكتبة بتحليل DOM، حل CSS، وتحميل الصور مسبقًا. تخطي هذه الخطوة أو تمرير HTML غير صالح غالبًا ما يؤدي إلى صفحات فارغة أثناء **تحويل html إلى pdf**. + +## الخطوة 2: ضبط خيارات العرض لـ **تحويل HTML إلى PDF** + +خيارات العرض هي الصلصة السرية التي تحول PDF عادي إلى مستند احترافي. هنا نقوم بتمكين الخطوط الغامقة، مضاد التسنين للصور، وتلميحات النص—ميزات يتغافل عنها معظم المطورين لكنها تحسن بشكل كبير من جودة المظهر البصري. + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **نصيحة احترافية:** إذا كنت تتعامل مع خط خاص بالعلامة التجارية، عيّن `FontFamily` داخل `pdfOptions` أيضًا. هذا يمنع الانتقال إلى خطوط عامة أثناء **تحويل HTML إلى PDF**. + +## الخطوة 3: حفظ الملف و **تصدير HTML إلى PDF** + +الآن بعد أن تم تحميل المستند وضبط الخيارات، الخطوة الأخيرة هي سطر واحد يكتب الـ PDF إلى القرص. طريقة `Save` تقوم داخليًا بـ **تحويل html إلى pdf**، مطبقة جميع تعديلات العرض التي حددناها. + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **ما يجب أن تراه:** فتح `output.pdf` في أي عارض سيظهر تخطيط HTML الأصلي، مع عناوين غامقة، صور ناعمة، ونص واضح. إذا لاحظت فقدان الأنماط، تحقق من أن ملفات CSS الخاصة بك يمكن الوصول إليها بالنسبة إلى `input.html`. + +![create pdf from html example](/images/create-pdf-from-html.png "لقطة شاشة للـ PDF المُولد – إنشاء pdf من html") + +*الصورة أعلاه (النص البديل: “مثال إنشاء pdf من html”) تُظهر PDF تم عرضه مع الحفاظ على تنسيق HTML الأصلي.* + +## المشكلات الشائعة عند **تحويل HTML إلى PDF** + +حتى مع سير عمل بسيط، يواجه المطورون أحيانًا عقبات. إليك أكثر ثلاث مشكلات شيوعًا وكيفية تجنبها. + +### 1. الموارد المفقودة (صور، CSS، خطوط) + +إذا كان HTML الخاص بك يشير إلى أصول خارجية عبر مسارات نسبية، قد لا يتمكن المحول من العثور عليها. استخدم دائمًا مسارات مطلقة أو عيّن عنوان URL أساسي: + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. المستندات الكبيرة تؤدي إلى انتهاء المهلة + +عند التعامل مع تقارير متعددة الصفحات، زد من إعداد مهلة المكتبة: + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. استبدال الخط يؤدي إلى مظهر غير متوقع + +حدد عائلة الخط الدقيقة التي تحتاجها: + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +معالجة هذه القضايا مبكرًا توفر عليك جلسات تصحيح محبطة أثناء عمليات **حفظ HTML كـ PDF**. + +## متقدم: إضافة صفحة غلاف قبل **تصدير HTML إلى PDF** + +أحيانًا تحتاج إلى غلاف مخصص—ربما صفحة عنوان مع شعار. يمكنك إلحاق مقطع HTML بسيط قبل المستند الرئيسي: + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **لماذا تفعل ذلك:** إضافة غلاف مباشرة في HTML يبقي خط أنابيب إنشاء PDF بسيطًا، متجنبًا أدوات المعالجة اللاحقة مثل iText أو PdfSharp. + +## التحقق من النتيجة برمجيًا + +إذا كنت بحاجة إلى التأكد من أن الـ PDF تم إنشاؤه بشكل صحيح (مثلاً في خطوط CI)، يمكنك فحص حجم الملف أو عدد الصفحات: + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +عدد صفحات غير صفرية يؤكد أن خطوة **تحويل HTML إلى PDF** نجحت. + +## ملخص وخطوات تالية + +لقد استعرضنا للتو **مثالًا كاملاً من البداية إلى النهاية** حول كيفية **إنشاء PDF من HTML** باستخدام C#. سير العمل هو: + +1. تحميل HTML المصدر (`HTMLDocument`). +2. ضبط العرض باستخدام `PdfRenderingOptions`. +3. استدعاء `Save` لـ **تصدير HTML إلى PDF**. + +من هنا يمكنك استكشاف: + +- **معالجة دفعات**: حلقة عبر مجلد من ملفات HTML وإنشاء PDFs بالجملة. +- **HTML ديناميكي**: استخدام محرك Razor لإنشاء HTML في الوقت الفعلي قبل التحويل. +- **الأمان**: عزل عملية التحويل إذا كنت تقبل HTML من المستخدمين (يمنع حقن السكريبت). + +لا تتردد في تجربة خيارات مختلفة—ربما التحول إلى توافق `PdfA` للأرشفة، أو تضمين JavaScript لـ PDFs تفاعلية. النمط الأساسي يبقى هو نفسه، والآن لديك أساس موثوق لأي متطلب **حفظ HTML كـ PDF**. + +--- + +*برمجة سعيدة! إذا صادفت أي شذوذ، اترك تعليقًا أدناه أو تفقد صفحة المشكلات على GitHub للمكتبة. المجتمع رائع في مشاركة التعديلات التي تجعل **تحويل html إلى pdf** أكثر سلاسة.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/arabic/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/arabic/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..7fec94d1c --- /dev/null +++ b/html/arabic/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,282 @@ +--- +category: general +date: 2026-02-27 +description: احفظ HTML كملف PDF في C# بسرعة باستخدام Aspose.HTML. تعلّم كيفية تحويل + HTML إلى PDF، وإنشاء PDF من HTML باستخدام خطوط مخصصة وتنسيق في بضع خطوات فقط. +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: ar +og_description: احفظ HTML كملف PDF في C# بسرعة باستخدام Aspose.HTML. يوضح هذا الدرس + كيفية تحويل HTML إلى PDF، وإنشاء PDF من HTML وتطبيق خطوط مخصصة. +og_title: حفظ HTML كملف PDF في C# – دليل شامل مع الخطوط +tags: +- csharp +- pdf +- html +title: حفظ HTML كملف PDF في C# – دليل كامل مع الخطوط +url: /ar/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +marker. + +Proceed paragraphs. + +Will translate. + +Let's craft final output. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# حفظ HTML كـ PDF في C# – دليل كامل مع الخطوط + +هل احتجت يوماً إلى **حفظ HTML كـ PDF** من تطبيق C# لكن لم تكن متأكدًا أي مكتبة تختار؟ لست وحدك. يواجه العديد من المطورين هذه المشكلة عندما يرغبون في إرسال الفواتير، التقارير، أو إيصالات قابلة للطباعة مباشرةً من محتوى الويب. + +الخبر السار؟ باستخدام Aspose.HTML يمكنك **تحويل HTML إلى PDF**، **إنشاء PDF من HTML**، وحتى **إنشاء PDF مع الخطوط** ببضع أسطر فقط. في هذا الدرس سنستعرض العملية بالكامل، نشرح لماذا كل إعداد مهم، ونقدم لك مثالًا جاهزًا للتنفيذ. + +## ما ستتعلمه + +- كيفية تحميل ملف HTML محلي أو بعيد في C# +- أي خيارات العرض تمنحك خطوطًا غامقة/مائلة، وتنعيمًا (antialiasing)، وتلميحات نصية (text hinting) +- كيفية حفظ النتيجة كملف PDF على القرص +- نصائح للتعامل مع الخطوط المخصصة ومشكلات شائعة + +لا تحتاج إلى خبرة سابقة مع Aspose.HTML—فقط بيئة تطوير .NET (Visual Studio 2022 أو أحدث) وحزمة Aspose.HTML for .NET عبر NuGet. + +## المتطلبات المسبقة + +| المتطلب | لماذا يهم | +|-------------|----------------| +| .NET 6.0 أو أحدث | يوفر بيئة تشغيل Aspose.HTML | +| Aspose.HTML for .NET (NuGet) | المكتبة التي تقوم بالمعالجة الفعلية | +| ملف HTML تجريبي (`sample.html`) | المحتوى المصدر الذي سنحوّله | +| معرفة أساسية بـ C# | لفهم مقتطفات الشيفرة | + +إذا كان لديك هذه المتطلبات، لنبدأ. + +## الخطوة 1: تثبيت Aspose.HTML عبر NuGet + +افتح مشروعك في Visual Studio، انقر بزر الماوس الأيمن على عقدة **Dependencies**، واختر **Manage NuGet Packages**. ابحث عن `Aspose.HTML` واضغط **Install**. + +```powershell +dotnet add package Aspose.HTML +``` + +> **نصيحة محترف:** استخدم أحدث نسخة مستقرة (اعتبارًا من 2026‑02‑27 هي 23.11) للحصول على أحدث تحسينات العرض. + +## الخطوة 2: تحميل مستند HTML المصدر + +أول شيء نحتاجه هو كائن `HTMLDocument` يشير إلى ملفنا. هذه الفئة تقوم بتحليل العلامات، حل CSS، وتحضير كل شيء للعرض. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **لماذا هذه الخطوة؟** +> تحميل HTML إلى `HTMLDocument` يعزل مرحلة التحليل عن مرحلة العرض، مما يعني أنه يمكنك فحص الـ DOM أو إجراء تعديلات وقت التشغيل قبل إنشاء الـ PDF فعليًا. + +## الخطوة 3: ضبط خيارات عرض PDF + +توفر Aspose.HTML تحكمًا دقيقًا في مظهر الـ PDF النهائي. في هذا المثال سنفعّل أنماط الخط الغامق + المائل، التنعيم للرسومات، وتلميحات النص للحصول على مخرجات بدقة منخفضة واضحة. + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### لماذا هذه الإعدادات؟ + +- **`FontStyle`** – يدمج أي وسوم `` أو `` مع الخط الأساسي، مما يضمن أن الـ PDF يحافظ على التنسيق الأصلي. +- **`UseAntialiasing`** – يقلل الحواف المتعرجة في المخططات، الأيقونات، أو أي محتوى نقطي. +- **`UseHinting`** – يضبط حدود الحروف على شبكة البكسل، وهو مفيد خصوصًا عندما يُعرض الـ PDF على أجهزة منخفضة الدقة. + +إذا احتجت خطوطًا مخصصة (مثل خط علامة تجارية)، ضع ملفات `.ttf` في مجلد واضبط `pdfRenderOptions.FontProvider` وفقًا لذلك. هذا موضوع كامل بحد ذاته، لكن الفكرة الأساسية هي: + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## الخطوة 4: تحويل مستند HTML إلى PDF + +الآن نجمع المستند مع الخيارات، ثم نطلب من Aspose.HTML كتابة ملف الإخراج. + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +بعد تنفيذ هذا السطر، ستجد `output.pdf` بجوار ملف التنفيذ الخاص بك. افتحه—يجب أن ترى HTML الأصلي مع تنسيقات غامقة/مائلة، رسومات ناعمة، ونص واضح. + +> **النتيجة المتوقعة:** +> PDF يعكس تخطيط `sample.html`، مع جميع العناوين غامقة، والنص المؤكد مائل، وأي صور مدمجة تُعرض دون حواف متعرجة. + +## الخطوة 5: التحقق والتعديل (اختياري) + +### برنامج التحقق السريع + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +إذا بدا الـ PDF غير صحيح، ففكر في هذه التعديلات الشائعة: + +| المشكلة | السبب المحتمل | الحل | +|-------|--------------|-----| +| الخطوط مفقودة | الخط غير مضمّن أو غير موجود | استخدم `FontProvider.AddFont` وتأكد من إمكانية الوصول إلى ملف الخط | +| الصور تظهر ضبابية | التنعيم (Antialiasing) معطل | اضبط `UseAntialiasing = true` | +| النص يبدو رفيعًا جدًا على الشاشة | التلميحات (Hinting) معطلة | فعّل `UseHinting = true` | +| تغير التخطيط عند فاصل الصفحة | قواعد CSS `page-break` تم تجاهلها | أضف `page-break-before/after` صريحة في HTML/CSS الخاص بك | + +## مثال كامل يعمل + +فيما يلي البرنامج الكامل الذي يمكنك نسخه‑ولصقه في تطبيق Console جديد. يتضمن جميع توجيهات `using`، معالجة الأخطاء، وتعليقات للتوضيح. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +شغّل المشروع (`dotnet run`)، ويجب أن ترى رسالة نجاح تليها إنشاء `output.pdf` جديد. + +## أسئلة شائعة وحالات خاصة + +### هل يمكنني **تحويل HTML إلى PDF** من عنوان URL بدلًا من ملف محلي؟ + +بالطبع. فقط استبدل مسار الملف بسلسلة URL: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +ستقوم Aspose.HTML بتحميل الصفحة، حل الموارد الخارجية، وعرضها. + +### ماذا عن **ملفات HTML الكبيرة** أو **الصفحات المتعددة**؟ + +تقوم Aspose.HTML ببث المحتوى، لذا يبقى استهلاك الذاكرة معقولًا. إذا أردت كل قسم HTML على صفحة PDF منفصلة، أدخل فواصل صفحات يدوية في HTML: + +```html +
+``` + +### هل يعمل هذا مع **.NET Core** و **.NET 7**؟ + +نعم. المكتبة متعددة المنصات؛ فقط تأكد من استهداف إطار عمل متوافق (net6.0، net7.0، إلخ) وتثبيت حزمة NuGet المناسبة. + +### كيف أُضمّن الخطوط لجعل الـ PDF قابلًا للنقل بالكامل؟ + +اضبط `pdfRenderOptions.FontProvider` كما هو موضح سابقًا، وفعل أيضًا تضمين الخطوط: + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +هذا يضمن أن الـ PDF سيظهر بنفس الشكل على أي جهاز، حتى وإن لم يكن الخط مثبتًا محليًا. + +## مثال بصري + +![save html as pdf example](example.png){alt="مثال على حفظ HTML كـ PDF"} + +*تُظهر لقطة الشاشة الـ PDF المُولد المفتوح في Adobe Acrobat، مع الحفاظ على الأنماط الغامقة/المائلة والصور الناعمة.* + +## الخلاصة + +غطّينا كل ما تحتاجه **لحفظ HTML كـ PDF** باستخدام C#. من تحميل العلامات، ضبط خيارات العرض، إلى كتابة الـ PDF النهائي، العملية بسيطة وقابلة للتخصيص بدرجة عالية. + +باتباعك لهذا الدليل يمكنك أيضًا **تحويل HTML إلى PDF**، **إنشاء PDF من HTML**، و**إنشاء PDF مع الخطوط** لأي سيناريو تقارير أو توليد مستندات. لا تتردد في تجربة خيارات إضافية—علامات مائية، تشفير، أو أحجام صفحات مخصصة—فـ Aspose.HTML يمنحك هذه المرونة. + +**خطوات مستقبلية** قد تستكشفها: + +- استخدم فئة `PdfSaveOptions` لتحديد نسخة PDF أو مستوى الضغط. +- دمج عدة كائنات `HTMLDocument` في PDF واحد لتقارير متعددة الأقسام. +- دمج سير العمل هذا في API ASP.NET Core حتى يتمكن خدمتك من إرجاع PDFs عند الطلب. + +هل لديك أسئلة حول حالات خاصة أو تحتاج مساعدة في تعديل خط أنابيب العرض؟ اترك تعليقًا أدناه، وتمنياتنا لك ببرمجة سعيدة! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/arabic/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/arabic/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..66efbb0c7 --- /dev/null +++ b/html/arabic/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,267 @@ +--- +category: general +date: 2026-02-27 +description: حفظ HTML كملف ZIP باستخدام C# ZipArchive – مثال خطوة بخطوة مع معالج موارد + مخصص، بالإضافة إلى نصائح حول كيفية تصدير HTML إلى ZIP وإنشاء أرشيف ZIP باستخدام + كود C#. +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: ar +og_description: احفظ HTML كملف ZIP باستخدام C# ZipArchive. تعرف على كيفية تصدير HTML + إلى ZIP مع مثال كامل، ومعالج موارد مخصص، وأفضل الممارسات. +og_title: حفظ HTML كملف ZIP في C# – دليل كامل +tags: +- C# +- ZipArchive +- HTML export +title: حفظ HTML كملف ZIP في C# – دليل شامل +url: /ar/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +Translate: "حفظ HTML كملف ZIP في C# – دليل كامل" + +Then paragraph. + +We'll translate. + +Make sure to keep **bold** formatting. + +Proceed. + +Also blockquote > **Prerequisites** – You’ll need .NET 6+ ... translate. + +Lists: bullet points. + +Tables: keep pipe structure but translate cells. + +Let's craft. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# حفظ HTML كملف ZIP في C# – دليل كامل + +هل احتجت يوماً إلى **حفظ HTML كملف ZIP** لكن لم تكن متأكدًا من الفئات (.NET) التي يجب استخدامها؟ لست وحدك—العديد من المطورين يواجهون هذه المشكلة عندما يرغبون في تجميع صفحة ويب مع مواردها للاستخدام دون اتصال أو للتوزيع. الخبر السار؟ باستخدام `System.IO.Compression.ZipArchive` المدمج يمكنك إنجاز ذلك في بضع أسطر فقط، وستحصل أيضاً على طريقة نظيفة للتحكم في كيفية كتابة كل مورد. + +في هذا الدرس سنستعرض **مثالًا كاملاً قابلاً للتنفيذ** يوضح لك بالضبط كيفية تصدير مستند HTML إلى ملف ZIP، باستخدام `ResourceHandler` مخصص لبث كل أصل داخل الأرشيف. على طول الطريق سنضيف بعض مقتطفات **c# ziparchive example**، نناقش **how to export html to zip** في سيناريوهات العالم الحقيقي، ونشير إلى الفروقات الدقيقة عندما تريد **create zip archive c#** برامج تحتاج إلى الصمود. + +> **المتطلبات المسبقة** – ستحتاج إلى .NET 6+ (أو .NET Core 3.1) وإشارة إلى المكتبة التي توفر `HTMLDocument` و `HTMLSaveOptions` و `ResourceHandler`. إذا كنت تستخدم Aspose.HTML أو حزمة مشابهة، فقط أضفها عبر NuGet. لا توجد أدوات طرف ثالث أخرى مطلوبة. + +--- + +## ما سيغطيه هذا الدرس + +- إعداد **ZipArchive** الذي سيستقبل ملف HTML والموارد المرتبطة به. +- تنفيذ **معالج موارد مخصص** (`ZipHandler`) يوجه كل تدفق مورد إلى الأرشيف. +- استخدام **HTMLSaveOptions** لربط كل شيء معًا وفعليًا **حفظ HTML كملف ZIP**. +- الأخطاء الشائعة عند التعامل مع المسارات، الإدخالات المكررة، والموارد الكبيرة. +- نصائح لتوسيع الحل—مثل إضافة ملف بيان أو تشفير الـ ZIP. + +بنهاية الدرس ستحصل على طريقة مستقلة يمكنك إدراجها في أي مشروع C# لت **save html as zip** بثقة. + +--- + +## الخطوة 1: إضافة المساحات الاسمية المطلوبة + +قبل تشغيل أي كود، تأكد من أن المترجم يعرف الفئات الخاصة بالضغط ومكتبة HTML التي تستخدمها. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*لماذا هذا مهم:* `System.IO.Compression` يزودك بـ `ZipArchive`، بينما مساحات أسماء `Aspose.Html` تكشف عن `HTMLDocument` و `HTMLSaveOptions` وفئة القاعدة `ResourceHandler` التي سنمدها. إذا كنت تستخدم محرك HTML مختلف، ابحث عن الأنواع المماثلة. + +--- + +## الخطوة 2: إنشاء معالج موارد مخصص (الكلمة المفتاحية الأساسية في التنفيذ) + +جوهر **حفظ HTML كملف ZIP** هو إخبار المحرك إلى أين يذهب كل مورد خارجي (صور، CSS، سكريبتات). من خلال الوراثة من `ResourceHandler` نحصل على التحكم في التدفق الذي يستقبل البيانات. + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**نقاط رئيسية** + +- `info.Uri` هو عنوان URL النسبي الذي يحاول محرك HTML كتابته. استخدامه كاسم الإدخال يحافظ على هيكل المجلد داخل الـ ZIP. +- `CreateEntry` سيُنشئ تلقائيًا أي مجلدات مطلوبة؛ لا تحتاج لإدارتها بنفسك. +- إرجاع التدفق المفتوح يسمح للمحرك ببث البيانات مباشرة—بدون ملفات مؤقتة، بدون نسخ إضافية للذاكرة. + +--- + +## الخطوة 3: تهيئة ZipArchive + +الآن نقوم بإنشاء `ZipArchive` في وضع **Update**. هذا الوضع يتيح لنا إضافة إدخالات أثناء العمل، وكذلك استبدال الموجودة إذا شغلت الكود عدة مرات. + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*نصيحة محترف:* استخدم `FileMode.Create` لاستبدال أي ملف سابق، أو بدّل إلى `FileMode.OpenOrCreate` إذا أردت إلحاق محتوى إلى أرشيف موجود. كذلك، احwrap `ZipArchive` داخل جملة `using`—هذا يضمن إغلاق الأرشيف بشكل صحيح وإطلاق مقبض الملف. + +--- + +## الخطوة 4: تحميل مستند HTML الذي تريد تصديره + +هنا تحدد المكتبة إلى ملف HTML المصدر. قد يشير المستند إلى ملفات CSS أو صور أو جافاسكريبت موجودة بجانبه. + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +إذا كان HTML الخاص بك يحتوي على عناوين URL نسبية، تأكد من أن دليل العمل للعملية يطابق المجلد الذي يحتوي على تلك الأصول. وإلا لن يتمكن المحرك من العثور عليها، وسيفقد الـ ZIP تلك الملفات. + +--- + +## الخطوة 5: تكوين خيارات الحفظ – لحظة **حفظ HTML كملف ZIP** الحقيقية + +الآن نربط `ZipHandler` بـ `HTMLSaveOptions`. ضبط `SaveFormat` إلى `ZIP` يخبر المكتبة بتجميع كل شيء، بينما يحدد معالجنا إلى أين يذهب كل جزء. + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*لماذا هذا مهم:* بدون تعيين `ResourceHandler`، ستعود المكتبة إلى كتابة الموارد على نظام الملفات، مما يُفقد الهدف من **how to export html to zip** في أرشيف واحد. + +--- + +## الخطوة 6: تنفيذ عملية الحفظ + +أخيرًا، اطلب من المستند أن يحفظ نفسه باستخدام الخيارات التي أنشأناها للتو. ستستدعي المكتبة `ZipHandler.HandleResource` لكل أصل خارجي تصادفه. + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +عند انتهاء كتلة `using` الخاصة بـ `zipArchive`، يُنهى الأرشيف ويصبح الملف جاهزًا للتوزيع. + +--- + +## مثال كامل يعمل (جميع الخطوات مجمعة) + +فيما يلي البرنامج الكامل الذي يمكنك نسخه‑ولصقه في تطبيق Console. يوضح **c# ziparchive example** الذي **creates zip archive c#**، ويجيب بالكامل على سؤال **how to export html to zip**. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**النتيجة المتوقعة:** بعد تشغيل البرنامج، سيحتوي `output.zip` على `index.html` (أو الاسم الذي ضبطته) بالإضافة إلى كل صورة، ورقة نمط، وسكريبت تم الإشارة إليها في الصفحة الأصلية، مع الحفاظ على هيكل المجلدات. افتح الـ ZIP، استخرج المحتويات، وانقر مزدوجًا على `index.html`—يجب أن تُظهر الصفحة كما كانت على الإنترنت، لكن الآن هي حزمة قابلة للنقل. + +--- + +## الحالات الخاصة الشائعة وكيفية التعامل معها + +| الحالة | السبب | الحل المقترح | +|-----------|----------------|---------------| +| **أسماء موارد مكررة** (مثلاً صورتان بنفس الاسم في مجلدين مختلفين) | `CreateEntry` سيطرح `InvalidOperationException` إذا كان اسم الإدخال موجودًا بالفعل. | أضف مسارًا نسبيًا كبادئة (`info.Uri` يفعل ذلك بالفعل) أو نظّف الأسماء يدويًا قبل إنشاء الإدخال. | +| **موارد ثنائية كبيرة** (فيديوهات، صور عالية الدقة) | البث مباشرة إلى الـ ZIP جيد، لكن حجم المخزن المؤقت الافتراضي قد يستهلك ذاكرة عالية. | غيّر `HandleResource` لتغليف التدفق المرجع بـ `BufferedStream` بحجم مخزن معتدل (مثلاً 64 KB). | +| **موارد مفقودة** | إذا كان HTML يحتوي على رابط مكسور، يتلقى المعالج طلبًا لملف غير موجود، ما ينتج عنه إدخال فارغ. | تحقق من وجود الملف بـ `File.Exists` قبل إنشاء الإدخال، أو سجّل تحذيرًا لتعرف أن شيئًا ما مفقود. | +| **أسماء ملفات يونيكود** | بعض أدوات ZIP القديمة لا تتعامل جيدًا مع أسماء UTF‑8. | تأكد من استهداف .NET 6+، الذي يكتب UTF‑8 افتراضيًا. إذا احتجت توافقًا قديمًا، اضبط `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);`. | +| **الحاجة إلى بيان** (قائمة الملفات داخل الـ ZIP) | بعض المستهلكين يرغبون بملف `manifest.json` للتحقق. | بعد الحفظ الرئيسي، أنشئ إدخالًا جديدًا `"manifest.json"` واكتب قائمة JSON من `zipArchive.Entries`. | + +--- + +## نصائح احترافية لتطبيقات **Save HTML as ZIP** جاهزة للإنتاج + +1. **تحقق من المخرجات** – بعد الحفظ، افتح الـ ZIP برمجيًا وتأكد من وجود `index.html` وأن `Length` لكل إدخال > 0. هذا يكتشف الأخطاء الصامتة مبكرًا. +2. **التنفيذ المتوازي للموارد الكبيرة** – إذا كان لديك عشرات الميغابايت من الصور، فكر في وضع استدعاءات `HandleResource` في مجموعة `Task` وكتابتها إلى الأرشيف بشكل متزامن (مع الحفاظ على طبيعة الكاتب الوحيد لـ `ZipArchive`). +3. **ضغط ذكي** – `ZipArchive` يستخدم Deflate افتراضيًا. للملفات المضغوطة مسبقًا (JPEG, PNG) يمكنك ضبط `entry.CompressionLevel = CompressionLevel.NoCompression` لتسريع العملية. +4. **الأمان** – إذا كان الـ ZIP + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/arabic/net/working-with-html-documents/_index.md b/html/arabic/net/working-with-html-documents/_index.md index 30c32a306..ed50d8cd6 100644 --- a/html/arabic/net/working-with-html-documents/_index.md +++ b/html/arabic/net/working-with-html-documents/_index.md @@ -37,6 +37,7 @@ 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 كملف ZIP في C# – دليل كامل باستخدام معالج موارد مخصص](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) ### [كيفية جعل العنوان غامقًا باستخدام 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/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/arabic/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..992920752 --- /dev/null +++ b/html/arabic/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,236 @@ +--- +category: general +date: 2026-02-27 +description: احفظ ملف HTML كملف ZIP في C# باستخدام معالج موارد مخصص وأنشئ أرشيف ZIP + في C#. اتبع هذا الدليل خطوة بخطوة لتجميع HTML ومحتوياته. +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: ar +og_description: احفظ HTML كملف ZIP في C# باستخدام معالج موارد مخصص. تعلم كيفية إنشاء + أرشيف ZIP في C# وتضمين الموارد بسهولة. +og_title: حفظ HTML كملف ZIP في C# – دليل كامل +tags: +- Aspose.HTML +- C# +- ZIP +title: حفظ HTML كملف ZIP في C# – دليل شامل مع معالج موارد مخصص +url: /ar/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# حفظ HTML كملف ZIP في C# – دليل كامل مع معالج الموارد المخصص + +هل تساءلت يومًا كيف **تحفظ HTML كملف ZIP** في C# دون أن تزعج نفسك؟ لست الوحيد—العديد من المطورين يواجهون صعوبة عندما يحتاجون إلى شحن صفحة HTML مع الصور، CSS، أو ملفات JavaScript. الخبر السار؟ مع Aspose.HTML يمكنك القيام بذلك في بضع خطوات مرتبة، و**معالج الموارد المخصص** يجعل العملية سهلة. + +في هذا الدرس سنستعرض كل ما تحتاج معرفته: من تثبيت المكتبة، كتابة معالج يبث الموارد مباشرةً إلى **إنشاء أرشيف ZIP في C#**، إلى التحقق من الحزمة النهائية. في النهاية ستحصل على حل جاهز للاستخدام يمكنك إدراجه في أي مشروع .NET. + +![Save HTML as ZIP example](/images/save-html-as-zip.png "Diagram showing HTML saved as a ZIP file") + +## حفظ HTML كملف ZIP – ما يغطيه هذا الدليل + +سنغطي كامل سير العمل: + +1. **المتطلبات المسبقة** – الأدوات والحزم الأساسية التي تحتاجها. +2. **معالج الموارد المخصص** – لماذا تحتاجه وكيفية تنفيذه. +3. **إنشاء أرشيف ZIP في C#** – باستخدام `System.IO.Compression`. +4. **تهيئة خيارات حفظ Aspose.HTML** لتوجيهها إلى المعالج. +5. **تشغيل الكود** والتحقق من النتيجة. + +إذا كنت مرتاحًا مع أساسيات لغة C# ولديك Visual Studio (أو VS Code) مثبتًا، فأنت جاهز للغوص في الموضوع. لا حاجة إلى وثائق خارجية—كل شيء هنا. + +--- + +## الخطوة 1: إعداد المشروع وتثبيت Aspose.HTML + +قبل كتابة أي كود، تأكد من أن مشروعك يمكنه الإشارة إلى مكتبة Aspose.HTML. + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*نصيحة احترافية:* أحدث حزمة NuGet (اعتبارًا من فبراير 2026) تستهدف .NET 6+، لذا يمكنك استخدام مشروع بنمط SDK الحديث دون القلق بشأن الأطر القديمة. + +بعد استعادة الحزمة، افتح `Program.cs`. سنستبدل المحتوى الافتراضي بالمثال الكامل لاحقًا، لكن الآن فقط احتفظ بالملف مفتوحًا. + +--- + +## تنفيذ معالج موارد مخصص + +### لماذا نحتاج إلى معالج موارد مخصص؟ + +عند حفظ Aspose.HTML لمستند HTML كحزمة ZIP، يحتاج إلى جلب كل مورد خارجي (صور، خطوط، سكريبتات) وكتابته في مكان ما. السلوك الافتراضي يكتبها في مجلد مؤقت على القرص. من خلال توفير **معالج موارد مخصص**، تخبر المكتبة بالضبط أين يجب أن يذهب كل مورد—في حالتنا، مباشرةً إلى أرشيف ZIP. هذا يتجنب عمليات I/O إضافية، يبقي كل شيء منظمًا، ويمنحك تحكمًا كاملًا في التسمية. + +### الكود: فئة المعالج + +أنشئ ملف فئة جديد باسم `MyHandler.cs` (أو ضعها داخل `Program.cs` إذا تفضّل عرضًا بملف واحد). + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**شرح:** +* `ResourceHandler` هي فئة مجردة من Aspose.HTML تسمح لك باعتراض جلب الموارد. +* من خلال إرجاع الـ `Stream` المستخرج من `ZipArchiveEntry.Open()`، نوفر للمكتبة أنبوب كتابة مباشر إلى ملف ZIP. لا ملفات مؤقتة، ولا حاجة لتنظيف إضافي. + +--- + +## إنشاء أرشيف ZIP في C# + +الآن بعد أن أصبح المعالج جاهزًا، نحتاج إلى مكان لكتابة البيانات فيه. فئة `ZipArchive` في .NET تقوم بالعمل الشاق. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### ما الذي يفعله هذا + +1. **ينشئ مستند HTML في الذاكرة** مع إشارة إلى `logo.png`. +2. **يفتح `FileStream`** الذي سيصبح `output.zip`. +3. **يعين الـ `ZipArchive`** إلى الحقل الثابت في `MyHandler`. +4. **يضبط `HTMLSaveOptions`** إلى `SaveFormat.ZIP` ويربط معالجنا. +5. **ينفذ `document.Save`** – يقوم Aspose.HTML بتحليل HTML، جلب `logo.png`، وبثه إلى الأرشيف عبر `MyHandler`. + +نظرًا لأن المعالج يستخدم URI المورد (`logo.png`) كاسم للمدخل، فإن ملف ZIP الناتج يحتوي على ملف يحمل هذا الاسم بالضبط، مع الحفاظ على المسار النسبي الأصلي. + +--- + +## تهيئة خيارات الحفظ لحزمة ZIP + +كائن `HTMLSaveOptions` هو المكان الذي تخبر فيه Aspose.HTML **كيف** يُحزم المخرجات. بخلاف `ResourceHandler`، يمكنك تعديل بعض الخصائص المفيدة: + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*لماذا نهتم بـ `EnableCompression`؟* +إذا كنت تتعامل مع صور كبيرة، فإن تمكين الضغط يمكن أن يقلص حجم الأرشيف النهائي حتى 70 ٪. ومع ذلك، بالنسبة لملفات PNG المضغوطة مسبقًا فإن الفائدة قليلة، لذا قد تفضّل إيقافه لتسريع عملية الحفظ. + +--- + +## تشغيل الكود والتحقق من النتيجة + +Compile and run the program: + +```bash +dotnet run +``` + +يجب أن ترى رسالة النجاح مطبوعة في وحدة التحكم. انتقل إلى الدليل الذي تم طباعته وافتح `output.zip`. داخل الأرشيف ستجد: + +- `index.html` – ملف HTML المحفوظ. +- `logo.png` – الصورة التي تم الإشارة إليها في العلامات. + +افتح `index.html` مباشرةً من داخل ZIP (معظم مستكشفات الملفات في أنظمة التشغيل تسمح بمعاينتها) وسترى العنوان والصورة معروضة تمامًا كما في النص الأصلي. + +**حالات خاصة يجب مراعاتها** + +| الحالة | ما الذي يجب فعله | +|-----------|------------| +| الـ HTML يشير إلى **عنوان URL بعيد** (مثال: `https://example.com/style.css`) | سيستقبل المعالج `ResourceInfo.Uri` كما هو. تأكد من أن بيئتك يمكنها الوصول إلى العنوان، أو قم بتحميل المورد مسبقًا وعدل الـ HTML ليشير إلى مسار محلي. | +| تحتاج إلى **هيكل مجلدات** داخل الـ ZIP (مثال: `images/logo.png`) | عدل `HandleResource` لإضافة اسم مجلد مسبقًا: `var entry = ZipArchive.CreateEntry($"assets/{info.Uri}");` | +| فشل تحميل المورد (**404**) | سيُستدعى المعالج، لكن الـ stream سيستقبل صفر بايت. غلف استدعاء الحفظ داخل `try/catch` وتفقد `info.Status` إذا كنت تحتاج إلى معالجة أخطاء مخصصة. | + +--- + +## ملخص: حفظ HTML كملف ZIP في تدفق واحد مدمج + +- **الهدف الأساسي:** تجميع صفحة HTML وجميع أصولها الخارجية في ملف ZIP واحد باستخدام C#. +- **الأدوات الرئيسية:** Aspose.HTML (`HTMLDocument`, `HTMLSaveOptions`)، `System.IO.Compression.ZipArchive`، و**معالج موارد مخصص**. +- **النتيجة:** ملف `output.zip` قابل للنقل يمكن شحنه، تخزينه، أو إرساله عبر الشبكة، ثم استخراجها لاحقًا دون فقدان روابط الموارد. + +--- + +## ما التالي؟ توسيع سير العمل + +الآن بعد أن أتقنت **حفظ HTML كملف ZIP**، قد ترغب في استكشاف سيناريوهات ذات صلة: + +- **حفظ HTML كملف PDF** – استبدل `SaveFormat.ZIP` بـ `SaveFormat.PDF` واضبط الخيارات وفقًا لذلك. +- **تضمين الخطوط** – استخدم `@font-face` في HTML ودع المعالج يلتقط ملفات الخط. +- **معالجة دفعات** – كرّر عبر مجموعة من سلاسل HTML، مع إعادة استخدام نفس `ZipArchive` لإنشاء حزمة متعددة المستندات. + +جميع هذه تعتمد على نمط **معالج الموارد المخصص** نفسه وتقنية **إنشاء أرشيف ZIP في C#** التي تعلمتها للتو. + +### أفكار ختامية + +لقد رأيت للتو مدى سهولة **حفظ HTML كملف ZIP** في C# عندما تسمح لـ Aspose.HTML + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/chinese/net/generate-jpg-and-png-images/_index.md b/html/chinese/net/generate-jpg-and-png-images/_index.md index 3a7bc53dc..19886f780 100644 --- a/html/chinese/net/generate-jpg-and-png-images/_index.md +++ b/html/chinese/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML for .NET 提供了一种将 HTML 转换为图像的简单方法。 了解如何在使用 Aspose.HTML for .NET 将 DOCX 文档转换为 PNG 或 JPG 图像时启用抗锯齿,以提升图像质量。 ### [使用 C# 将 docx 转换为 png 并创建 zip 存档教程](./convert-docx-to-png-create-zip-archive-c-tutorial/) 学习如何使用 C# 将 DOCX 文档转换为 PNG 图像并打包为 ZIP 文件的完整步骤。 +### [使用 C# 将 HTML 转换为 PNG – 步骤指南](./create-png-from-html-in-c-step-by-step-guide/) +学习如何使用 C# 将 HTML 内容转换为 PNG 图像的完整步骤。 ## 结论 diff --git a/html/chinese/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/chinese/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..9e28c9027 --- /dev/null +++ b/html/chinese/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,209 @@ +--- +category: general +date: 2026-02-27 +description: 使用 Aspose.HTML 在 C# 中快速将 HTML 生成 PNG。学习将 HTML 渲染为图像、设置图像宽高,并在几分钟内将 HTML + 转换为 PNG。 +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: zh +og_description: 使用 Aspose.HTML 将 HTML 生成 PNG。本指南展示了如何将 HTML 渲染为图像、设置图像宽高,以及高效地将 HTML + 转换为 PNG。 +og_title: 在 C# 中从 HTML 创建 PNG – 完整教程 +tags: +- Aspose.HTML +- C# +- Image Rendering +title: 使用 C# 将 HTML 转换为 PNG – 步骤指南 +url: /zh/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 C# 中从 HTML 创建 PNG – 完整教程 + +是否曾经需要**从 HTML 创建 PNG**,但不确定哪个库能提供像素级完美的效果?你并不是唯一的——许多开发者在尝试将网页转换为电子邮件、报告或缩略图的静态图像时都会遇到同样的难题。 + +好消息是?使用 Aspose.HTML,你可以**将 HTML 渲染为图像**,控制精确的尺寸,并仅用几行 C#代码**将 HTML 保存为 PNG**。在本教程中,我们将完整演示整个过程,从加载 HTML 文件、微调文本 hinting(提示)到最终将 PNG 写入磁盘。结束时,你将了解如何以编程方式**设置图像宽高**,并拥有一个可在任何 .NET 项目中直接使用的代码片段。 + +## 你将学习 + +- 使用 Aspose.HTML 加载 HTML 文档的方法。 +- `ImageRenderingOptions` 与 `TextOptions` 的区别以及它们为何重要。 +- 如何在保留字体、抗锯齿和下划线样式的同时**将 HTML 转换为 PNG**。 +- 排查常见问题的技巧,例如缺少字体或意外的图像尺寸。 +- 一个完整的、可直接运行的代码示例,您可以复制粘贴到 Visual Studio 中。 + +> **先决条件:** .NET 6+(或 .NET Framework 4.6.2+),通过 NuGet 安装的 Aspose.HTML for .NET,以及对 C# 的基本了解。无需其他外部工具。 + +--- + +## 步骤 1:加载 HTML 文档 – 开始 PNG 创建 + +首先,我们需要一个指向源文件的 `HTMLDocument` 对象。这是任何**从 HTML 创建 PNG**操作的基础。 + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*此步骤重要原因:* `HTMLDocument` 类会解析标记、解析 CSS,并构建一个 DOM,渲染引擎随后可以将其绘制到位图上。如果路径错误,后续的**将 HTML 渲染为图像**步骤将抛出 `FileNotFoundException`。 + +## 步骤 2:设置图像宽高 – 控制输出尺寸 + +当你**将 HTML 渲染为图像**时,通常需要特定的分辨率——比如必须恰好 1200 × 800 像素的缩略图。这时 `ImageRenderingOptions` 就显得尤为重要。 + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*专业提示:* 如果省略 `Width` 和 `Height`,Aspose.HTML 将使用页面的自然尺寸,这可能对电子邮件嵌入来说太大。 + +## 步骤 3:微调文本渲染 – 让文字更清晰 + +在 Linux 上,文本常常显得模糊,除非启用 hinting。`TextOptions` 对象可以让你控制这一点,确保最终的 PNG 在所有平台上都保持锐利。 + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*为什么需要 hinting?* Hinting 会调整每个字形的形状,使其对齐到像素网格,这在为低分辨率显示器**将 HTML 转换为 PNG**时至关重要。 + +## 步骤 4:合并选项并添加样式 – 完整渲染配置 + +现在我们合并图像和文本设置,并演示如何应用全局字体样式,例如为所有文字添加下划线。此步骤即是使用自定义样式**将 HTML 保存为 PNG**的关键。 + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*注意:* `WebFontStyle` 支持多种标志(Bold、Italic 等)。如果需要多种样式,可以使用按位或(OR)进行组合。 + +## 步骤 5:渲染并保存 – **从 HTML 创建 PNG**的时刻 + +在完成所有配置后,最后只需一行代码即可将 DOM 绘制到位图并写入磁盘。 + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +此行代码执行后,你将在指定文件夹中找到 `output.png`,尺寸恰好为 1200 × 800 像素,具备抗锯齿图形和 hinting 文本。 + +## 完整工作示例 – 粘贴、运行、验证 + +下面是可以编译为控制台应用的完整程序。它包含所有 using 语句、错误处理以及你需要的注释。 + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**预期结果:** 在可执行文件旁会生成名为 `output.png` 的文件,显示 `sample.html` 的渲染结果。使用任意图像查看器打开以确认尺寸和样式。 + +## 常见陷阱及规避方法 + +| 问题 | 症状 | 解决方案 | +|------|------|----------| +| 缺少字体 | 文本显示为通用无衬线字体 | 在主机上安装所需字体或在 HTML 中嵌入网络字体。 | +| 尺寸错误 | PNG 大小与预期不符 | 再次检查 `ImageRenderingOptions` 中的 `Width` 和 `Height` 值。 | +| 边缘模糊 | 未启用抗锯齿 | 确保 `UseAntialiasing = true`。 | +| Linux 渲染伪影 | 文本模糊 | 在 `TextOptions` 中设置 `UseHinting = true`。 | + +*专业提示:* 在无头服务器上**将 HTML 渲染为图像**时,确保服务器已安装必要的系统库(例如 Linux 上的 `libgdiplus`),否则 Aspose.HTML 可能会回退到质量较低的软件渲染器。 + +## 扩展方案 – 下一步 + +- **批量转换:** 遍历 HTML 文件列表,调用相同的渲染逻辑生成 PNG 画廊。 +- **不同格式:** 通过更改文件扩展名将 `output.png` 替换为 `output.jpg` 或 `output.bmp`;Aspose.HTML 会自动选择合适的编码器。 +- **动态尺寸:** 根据 HTML 的 viewport meta 标签计算 `Width` 和 `Height`,以适应响应式设计。 +- **水印:** 使用 `Aspose.Html.Drawing` 在保存前叠加徽标。 + +这些思路可帮助你从简单的**从 HTML 创建 PNG**代码片段扩展到完整的图像生成服务。 + +## 结论 + +我们已经完整演示了使用 Aspose.HTML for .NET **从 HTML 创建 PNG**所需的全部步骤:加载文档、配置**设置图像宽高**、使用 hinting 微调文本,最后**将 HTML 保存为 PNG**。完整的代码示例可直接嵌入你的项目,上述技巧也能帮助你避免常见的麻烦。 + +既然你已经能够可靠地**将 HTML 渲染为图像**,何不尝试不同的样式、批量处理,甚至在同一流水线中转换为 PDF?无限可能,代码已在你手中。 + +祝编码愉快,欢迎在评论区分享你的成果或提问! + +![创建 PNG 示例](/images/create-png-from-html.png "使用 Aspose.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/html-extensions-and-conversions/_index.md b/html/chinese/net/html-extensions-and-conversions/_index.md index a6c24babf..89eef8f6e 100644 --- a/html/chinese/net/html-extensions-and-conversions/_index.md +++ b/html/chinese/net/html-extensions-and-conversions/_index.md @@ -39,6 +39,8 @@ Aspose.HTML for .NET 不仅仅是一个库;它是 Web 开发领域的变革者 ## HTML 扩展和转换教程 ### [使用 Aspose.HTML 在 .NET 中将 HTML 转换为 PDF](./convert-html-to-pdf/) 使用 Aspose.HTML for .NET 轻松将 HTML 转换为 PDF。按照我们的分步指南,释放 HTML 到 PDF 转换的强大功能。 +### [使用 Aspose.HTML 在 .NET 中将 HTML 创建为 PDF – 开发者分步指南](./create-pdf-from-html-step-by-step-guide-for-developers/) +使用 Aspose.HTML for .NET 将 HTML 转换为 PDF 的完整分步指南,涵盖代码示例和最佳实践,帮助开发者轻松生成 PDF。 ### [使用 Aspose.HTML 在 .NET 中将 EPUB 转换为图像](./convert-epub-to-image/) 了解如何使用 Aspose.HTML for .NET 将 EPUB 转换为图像。带有代码示例和可自定义选项的分步教程。 ### [使用 Aspose.HTML 在 .NET 中将 EPUB 转换为 PDF](./convert-epub-to-pdf/) @@ -65,6 +67,8 @@ Aspose.HTML for .NET 不仅仅是一个库;它是 Web 开发领域的变革者 探索 Aspose.HTML for .NET 的强大功能:轻松将 HTML 转换为 XPS。包含先决条件、分步指南和常见问题解答。 ### [如何在 C# 中压缩 HTML – 将 HTML 保存为 Zip](./how-to-zip-html-in-c-save-html-to-zip/) 使用 Aspose.HTML for .NET 在 C# 中将 HTML 打包并保存为 Zip 文件的分步教程。 +### [在 C# 中将 HTML 保存为 ZIP – 完整指南](./save-html-as-zip-in-c-complete-guide/) +使用 Aspose.HTML for .NET 在 C# 中将 HTML 打包为 ZIP 的完整分步指南。 ### [使用 Aspose.HTML 在 .NET 中创建带样式文本的 HTML 文档并导出为 PDF – 完整指南](./create-html-document-with-styled-text-and-export-to-pdf-full/) 本完整指南展示如何使用 Aspose.HTML for .NET 创建带样式的 HTML 文档并将其导出为 PDF,包含详细步骤和代码示例。 ### [使用 Aspose.HTML 在 C# 中将 HTML 创建为 PDF – 完整指南](./create-pdf-from-html-c-step-by-step-guide/) @@ -72,6 +76,9 @@ Aspose.HTML for .NET 不仅仅是一个库;它是 Web 开发领域的变革者 ### [使用 Aspose.HTML 在 .NET 中将 HTML 保存为 ZIP – 完整的 C# 教程](./save-html-as-zip-complete-c-tutorial/) 使用 Aspose.HTML for .NET 将 HTML 内容打包为 ZIP 文件的完整 C# 示例,包含代码演示和关键步骤。 +### [在 C# 中将 HTML 保存为 PDF – 完整指南(含字体)](./save-html-as-pdf-in-c-complete-guide-with-fonts/) +使用 Aspose.HTML for .NET 在 C# 中将 HTML 保存为 PDF,并嵌入自定义字体的完整分步指南。 + ### [在 C# 中将 HTML 保存为 ZIP – 完整内存示例](./save-html-to-zip-in-c-complete-in-memory-example/) 演示如何使用 Aspose.HTML for .NET 在 C# 中将 HTML 内容压缩为 ZIP 文件,完整的内存操作示例。 diff --git a/html/chinese/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/chinese/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..5df67a1c9 --- /dev/null +++ b/html/chinese/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,208 @@ +--- +category: general +date: 2026-02-27 +description: 使用完整的 C# 示例快速将 HTML 生成 PDF。学习将 HTML 转换为 PDF、将 HTML 保存为 PDF,以及使用最佳实践设置导出 + HTML 为 PDF。 +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: zh +og_description: 使用可直接运行的示例在 C# 中将 HTML 创建为 PDF。本指南将带您完成 HTML 转 PDF、将 HTML 保存为 PDF,以及导出 + HTML 为 PDF 的过程。 +og_title: 从HTML创建PDF – 完整C#教程 +tags: +- C# +- PDF +- HTML +title: 从HTML创建PDF – 开发者分步指南 +url: /zh/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +HTML 示例". Title "Screenshot of the generated PDF – create pdf from html" -> "生成的 PDF 截图 – 创建 PDF 从 HTML". The caption sentence also translate. + +Proceed. + +Now produce final content.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 从 HTML 创建 PDF – 完整 C# 教程 + +是否曾经需要**从 HTML 创建 PDF**,但不确定该使用哪些 API 调用?你并不孤单。无论是构建报表仪表盘、发票生成器,还是静态站点导出工具,将 HTML 转换为 PDF 是现代 Web 为中心的应用程序的常见需求。 + +在本教程中,我们将演示一个**完整、可运行的 C# 示例**,展示如何**将 HTML 转换为 PDF**,配置渲染选项以获得清晰的输出,最后**将 HTML 保存为 PDF**到磁盘。完成后,你将拥有一个稳固、可投入生产的**导出 HTML 为 PDF**模式,能够直接嵌入任何 .NET 项目。 + +## 你将学到 + +- 如何使用 `HTMLDocument` 加载本地 HTML 文件。 +- 哪些渲染选项可以提升字体粗细、图像平滑度和文字提示。 +- 使用单一的 `Save` 方法**导出 HTML 为 PDF**的确切调用方式。 +- 处理大文档、调试常见陷阱以及验证结果的技巧。 +- 一个完整的、可直接复制粘贴的代码示例,今天即可运行。 + +### 前置条件 + +- .NET 6+(或 .NET Framework 4.7+)。我们使用的 API 在两者上均可运行。 +- 对假设的 `HtmlToPdfLib`(请替换为实际使用的库名称)的引用。 +- 一个放置在你可控文件夹中的 `input.html` 文件(我们将其称为 `YOUR_DIRECTORY`)。 + +如果这些条件已经具备,下面直接开始——无需额外设置。 + +## 第 1 步:加载 HTML 文档以**从 HTML 创建 PDF** + +首先需要一个指向源文件的 `HTMLDocument` 实例。可以把它想象成在写作前打开笔记本——没有文档,就没有可渲染的内容。 + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **为什么重要:** 预先加载 HTML 文件可以让库解析 DOM、解析 CSS 并预加载图像。跳过此步骤或提供格式错误的 HTML 往往会导致**html to pdf conversion**时出现空白页。 + +## 第 2 步:配置渲染选项以实现**HTML to PDF Conversion** + +渲染选项是让普通 PDF 变得专业的关键调味料。这里我们启用粗体字体、图像抗锯齿以及文字 hinting——这些特性常被开发者忽视,却能显著提升视觉保真度。 + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **专业提示:** 如果使用品牌专用字体,请在 `pdfOptions` 中同时设置 `FontFamily`。这可以防止在**convert HTML to PDF**时回退到通用字体。 + +## 第 3 步:保存文件并**导出 HTML 为 PDF** + +文档已加载且选项已调优后,最后只需一行代码即可将 PDF 写入磁盘。`Save` 方法内部执行**html to pdf conversion**,并应用我们定义的所有渲染调整。 + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **预期结果:** 在任何查看器中打开 `output.pdf`,都能看到原始 HTML 布局,标题加粗、图像平滑、文字清晰。如果发现样式缺失,请检查相对于 `input.html` 的 CSS 文件路径是否可达。 + +![创建 PDF 从 HTML 示例](/images/create-pdf-from-html.png "生成的 PDF 截图 – 创建 PDF 从 HTML") + +*上述截图(alt 文本:“创建 PDF 从 HTML 示例”)展示了一个保留原始 HTML 样式的渲染 PDF。* + +## 常见陷阱——在**将 HTML 转换为 PDF**时需要注意 + +即使流程看似简单,开发者仍会遇到各种卡点。下面列出最常见的三大问题及其规避办法。 + +### 1. 资源缺失(图片、CSS、字体) + +如果 HTML 通过相对路径引用外部资源,转换器可能找不到它们。请始终使用绝对路径或设置基准 URL: + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. 大文档导致超时 + +处理多页报告时,需要提升库的超时设置: + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. 字体替换导致外观异常 + +明确指定所需的字体族: + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +提前解决这些问题,可避免在**save HTML as PDF**过程中出现令人沮丧的调试环节。 + +## 高级:在**导出 HTML 为 PDF**前添加封面页 + +有时需要自定义封面——比如带有徽标的标题页。你可以在主文档前预先插入一段简单的 HTML 代码: + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **为何这样做:** 直接在 HTML 中添加封面可以保持 PDF 生成流水线的简洁,避免使用 iText 或 PdfSharp 等后处理工具。 + +## 以编程方式验证输出 + +如果需要在 CI 流水线中断言 PDF 已正确生成(例如检查文件大小或页数),可以这样做: + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +非零的页数即表明**convert HTML to PDF**步骤成功。 + +## 小结与后续 + +我们已经完整演示了在 C# 中**从 HTML 创建 PDF**的端到端示例。流程如下: + +1. 加载源 HTML(`HTMLDocument`)。 +2. 使用 `PdfRenderingOptions` 微调渲染。 +3. 调用 `Save` **导出 HTML 为 PDF**。 + +接下来,你可以探索: + +- **批量处理**:遍历文件夹中的多个 HTML 文件,批量生成 PDF。 +- **动态 HTML**:使用 Razor 视图引擎在转换前动态生成 HTML。 +- **安全性**:如果接受用户提供的 HTML,请对转换过程进行沙箱隔离(防止脚本注入)。 + +尽情尝试不同选项——比如切换到 `PdfA` 合规以满足归档需求,或嵌入 JavaScript 实现交互式 PDF。核心模式保持不变,而你现在已经拥有可靠的基础,满足任何**save HTML as PDF**需求。 + +--- + +*祝编码愉快!如果遇到奇怪的问题,欢迎在下方留言或查看库的 GitHub Issues 页面。社区会分享许多让**html to pdf conversion**更顺畅的技巧。* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/chinese/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/chinese/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..bec6f737f --- /dev/null +++ b/html/chinese/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,274 @@ +--- +category: general +date: 2026-02-27 +description: 使用 Aspose.HTML 在 C# 中快速将 HTML 保存为 PDF。了解如何将 HTML 转换为 PDF,仅需几步即可使用自定义字体和样式从 + HTML 生成 PDF。 +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: zh +og_description: 使用 Aspose.HTML 在 C# 中快速将 HTML 保存为 PDF。本教程展示了如何将 HTML 转换为 PDF、从 HTML + 生成 PDF 并应用自定义字体。 +og_title: 在 C# 中将 HTML 保存为 PDF – 完整指南(含字体) +tags: +- csharp +- pdf +- html +title: 在 C# 中将 HTML 保存为 PDF – 完整指南(含字体) +url: /zh/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 C# 中将 HTML 保存为 PDF – 完整指南(含字体) + +是否曾经需要在 C# 应用程序中 **将 HTML 保存为 PDF**,但不确定该选哪个库?你并不孤单。许多开发者在想要直接从网页内容生成发票、报告或可打印收据时都会遇到这个难题。 + +好消息是?使用 Aspose.HTML,你可以 **将 HTML 转换为 PDF**、**从 HTML 生成 PDF**,甚至 **使用字体创建 PDF**,只需几行代码。在本教程中,我们将完整演示整个过程,解释每个设置的意义,并提供一个可直接运行的示例。 + +## 你将学到 + +- 如何在 C# 中加载本地或远程的 HTML 文件 +- 哪些渲染选项可以提供粗体/斜体字体、抗锯齿和文字 hinting +- 如何将结果保存为磁盘上的 PDF 文件 +- 处理自定义字体和常见陷阱的技巧 + +不需要任何 Aspose.HTML 的先前经验——只需一个 .NET 开发环境(Visual Studio 2022 或更高)以及 Aspose.HTML for .NET NuGet 包。 + +## 前提条件 + +| 需求 | 为什么重要 | +|------|-----------| +| .NET 6.0 or later | 为 Aspose.HTML 提供运行时 | +| Aspose.HTML for .NET (NuGet) | 执行核心功能的库 | +| A sample HTML file (`sample.html`) | 待转换的源内容 | +| Basic C# knowledge | 理解代码片段所需的基础 C# 知识 | + +如果你已经准备好这些,让我们开始吧。 + +## 步骤 1:通过 NuGet 安装 Aspose.HTML + +在 Visual Studio 中打开你的项目,右键点击 **Dependencies** 节点,选择 **Manage NuGet Packages**。搜索 `Aspose.HTML` 并点击 **Install**。 + +```powershell +dotnet add package Aspose.HTML +``` + +> **小贴士:** 使用最新的稳定版本(截至 2026‑02‑27 为 23.11),以获得最新的渲染改进。 + +## 步骤 2:加载源 HTML 文档 + +我们首先需要一个指向文件的 `HTMLDocument` 对象。该类会解析标记、解析 CSS,并为渲染做好准备。 + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **为什么需要这一步?** +> 将 HTML 加载到 `HTMLDocument` 中可以将解析阶段与渲染阶段分离,这意味着在实际生成 PDF 之前,你可以检查 DOM 或进行运行时修改。 + +## 步骤 3:配置 PDF 渲染选项 + +Aspose.HTML 为最终 PDF 的外观提供了细粒度的控制。在本示例中,我们将启用粗体 + 斜体字体样式、抗锯齿以获得更平滑的图形,以及文字 hinting 以在低 DPI 输出时保持更清晰。 + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### 为什么使用这些设置? + +- **`FontStyle`** – 将任何 `` 或 `` 标签与基础字体合并,确保 PDF 保持原始样式。 +- **`UseAntialiasing`** – 减少图表、图标或任何光栅化内容的锯齿边缘。 +- **`UseHinting`** – 将字形轮廓对齐到像素网格,特别适用于在低分辨率设备上查看 PDF 时。 + +如果需要自定义字体(例如企业品牌字体),将 `.ttf` 文件放入某个文件夹并相应地设置 `pdfRenderOptions.FontProvider`。这本身就是一个完整的话题,但基本思路如下: + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## 步骤 4:将 HTML 文档渲染为 PDF + +现在我们将文档和选项组合起来,然后让 Aspose.HTML 写入输出文件。 + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +执行此行后,你会在可执行文件旁边看到 `output.pdf`。打开它,你应该会看到原始 HTML 已以粗体/斜体样式、平滑的图形和清晰的文字渲染。 + +> **预期结果:** +> 一个与 `sample.html` 布局相同的 PDF,所有标题为粗体,强调文本为斜体,任何嵌入的图像均无锯齿渲染。 + +## 步骤 5:验证并微调(可选) + +### 快速验证脚本 + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +如果 PDF 显示异常,请考虑以下常见调整: + +| 问题 | 可能原因 | 解决方案 | +|------|----------|----------| +| 缺少字体 | 字体未嵌入或未找到 | 使用 `FontProvider.AddFont` 并确保字体文件可访问 | +| 图像模糊 | 未启用抗锯齿 | 设置 `UseAntialiasing = true` | +| 文本在屏幕上显得过细 | 未启用 hinting | 启用 `UseHinting = true` | +| 页面换页时布局偏移 | CSS `page-break` 规则被忽略 | 在 HTML/CSS 中添加显式的 `page-break-before/after` | + +## 完整工作示例 + +下面是完整的程序代码,你可以复制粘贴到新的控制台应用中。它包含所有 using 指令、错误处理以及为清晰起见添加的注释。 + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +运行项目(`dotnet run`),你应该会看到成功信息,并在随后生成新的 `output.pdf`。 + +## 常见问题与边缘情况 + +### 我可以 **从 URL 而非本地文件** **将 HTML 转换为 PDF** 吗? + +当然可以。只需将文件路径替换为 URL 字符串: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +Aspose.HTML 将下载页面,解析外部资源并进行渲染。 + +### 大型 HTML 文件或 **多页** 的情况怎么办? + +Aspose.HTML 会流式处理内容,因此内存使用保持在合理范围。如果需要每个 HTML 部分在单独的 PDF 页面上显示,请在 HTML 中插入手动分页符: + +```html +
+``` + +### 这在 **.NET Core** 和 **.NET 7** 上能工作吗? + +可以。该库是跨平台的,只需确保目标框架兼容(net6.0、net7.0 等),并安装相应的 NuGet 包。 + +### 如何 **嵌入字体** 以实现 PDF 完全可移植? + +如前所示设置 `pdfRenderOptions.FontProvider`,并同时启用字体嵌入: + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +这可确保 PDF 在任何机器上都保持相同外观,即使本地未安装该字体。 + +## 可视化示例 + +![保存 HTML 为 PDF 示例](example.png){alt="保存 HTML 为 PDF 示例"} + +*该截图显示在 Adobe Acrobat 中打开的生成的 PDF,保留了粗体/斜体样式和光滑的图像。* + +## 结论 + +我们已经覆盖了使用 C# **将 HTML 保存为 PDF** 所需的全部内容。从加载标记、配置渲染选项到写入最终 PDF,整个过程简洁明了且高度可定制。 + +通过本指南,你还可以 **将 HTML 转换为 PDF**、**从 HTML 生成 PDF**,以及 **使用字体创建 PDF**,以满足任何报告或文档生成场景。随意尝试其他选项——水印、加密或自定义页面尺寸——因为 Aspose.HTML 为你提供了这种灵活性。 + +**接下来** 你可以探索以下步骤: + +- 使用 `PdfSaveOptions` 类设置 PDF 版本或压缩级别。 +- 将多个 `HTMLDocument` 实例合并为单个 PDF,以生成多章节报告。 +- 将此工作流集成到 ASP.NET Core API 中,使你的 Web 服务能够按需返回 PDF。 + +对边缘情况有疑问或需要帮助微调渲染管道?在下方留言吧,祝编码愉快! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/chinese/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/chinese/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..b6564a942 --- /dev/null +++ b/html/chinese/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,262 @@ +--- +category: general +date: 2026-02-27 +description: 使用 C# ZipArchive 将 HTML 保存为 ZIP —— 带自定义资源处理程序的逐步示例,以及导出 HTML 为 ZIP 并创建 + zip 存档的 C# 代码技巧。 +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: zh +og_description: 使用 C# ZipArchive 将 HTML 保存为 ZIP。了解如何通过完整示例、自定义资源处理程序和最佳实践将 HTML 导出为 + ZIP。 +og_title: 在 C# 中将 HTML 保存为 ZIP – 完整指南 +tags: +- C# +- ZipArchive +- HTML export +title: 在 C# 中将 HTML 保存为 ZIP – 完整指南 +url: /zh/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +in C# – Complete Guide". Translate: "# 在 C# 中将 HTML 保存为 ZIP – 完整指南". Keep the #. + +Then paragraph: "Ever needed to **save HTML as ZIP** but weren't sure which .NET classes to reach for? ..." translate. + +Proceed. + +Make sure to keep bold formatting **. + +Proceed step by step. + +Let's write translation. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 C# 中将 HTML 保存为 ZIP – 完整指南 + +是否曾经需要 **将 HTML 保存为 ZIP**,却不确定该使用哪个 .NET 类?你并不是唯一遇到这种困扰的开发者——很多人在想要将网页连同其资源打包成离线使用或分发时都会遇到这个问题。好消息是?使用内置的 `System.IO.Compression.ZipArchive`,只需几行代码,就能完成,而且还能以干净的方式控制每个资源的写入方式。 + +在本教程中,我们将通过一个 **完整、可运行的示例**,展示如何将 HTML 文档导出为 ZIP 文件,并使用自定义的 `ResourceHandler` 将每个资源流式写入归档文件。过程中我们会穿插一些 **c# ziparchive example** 代码片段,讨论 **how to export html to zip** 在真实场景中的使用,并指出在编写 **create zip archive c#** 程序时需要注意的细微差别。 + +> **先决条件** – 需要 .NET 6+(或 .NET Core 3.1)以及提供 `HTMLDocument`、`HTMLSaveOptions` 和 `ResourceHandler` 的库引用。如果使用 Aspose.HTML 或类似的包,只需通过 NuGet 添加即可。无需其他第三方工具。 + +--- + +## 本教程涵盖内容 + +- 设置一个 **ZipArchive**,用于接收 HTML 文件及其关联资源。 +- 实现一个 **自定义资源处理器**(`ZipHandler`),将每个资源流定向到归档中。 +- 使用 **HTMLSaveOptions** 将所有内容绑定在一起,真正 **save HTML as ZIP**。 +- 处理路径、重复条目和大文件时的常见陷阱。 +- 扩展方案技巧——例如添加清单文件或对 ZIP 进行加密。 + +完成后,你将拥有一个可直接嵌入任何 C# 项目的自包含方法,能够自信地 **save html as zip**。 + +--- + +## 步骤 1:添加所需的命名空间 + +在编写任何代码之前,确保编译器能够识别压缩类和你使用的 HTML 库。 + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*为什么这很重要*:`System.IO.Compression` 提供 `ZipArchive`,而 `Aspose.Html` 命名空间则暴露 `HTMLDocument`、`HTMLSaveOptions` 以及我们将要扩展的 `ResourceHandler` 基类。如果使用其他 HTML 引擎,请寻找相应的类型。 + +--- + +## 步骤 2:创建自定义资源处理器(关键字实战) + +**保存 HTML 为 ZIP** 的核心在于告诉引擎每个外部资源(图片、CSS、脚本)应放置的位置。通过继承 `ResourceHandler`,我们可以控制接收数据的流。 + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**关键要点** + +- `info.Uri` 是 HTML 引擎尝试写入的相对 URL。将其用作条目名称即可在 ZIP 内保持文件夹结构。 +- `CreateEntry` 会自动创建所需的目录;无需手动管理。 +- 返回打开的流让引擎直接写入数据——无需临时文件,也不会产生额外的内存拷贝。 + +--- + +## 步骤 3:初始化 ZipArchive + +现在我们以 **Update** 模式启动一个 `ZipArchive`。该模式允许我们在写入过程中添加条目,并在多次运行代码时替换已有条目。 + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*小技巧*:使用 `FileMode.Create` 可覆盖之前的文件,若想向已有归档追加,则改用 `FileMode.OpenOrCreate`。同时,将 `ZipArchive` 包裹在 `using` 语句中——这能确保归档正确释放、文件句柄被关闭。 + +--- + +## 步骤 4:加载要导出的 HTML 文档 + +在这里指定库要处理的源 HTML 文件。文档可能会引用与之同目录下的 CSS、图片或 JavaScript 文件。 + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +如果你的 HTML 包含相对 URL,请确保进程的工作目录与这些资源所在的文件夹一致。否则引擎将找不到它们,导致 ZIP 中缺失相应文件。 + +--- + +## 步骤 5:配置保存选项 – 真正的 “Save HTML as ZIP” 时刻 + +现在把 `ZipHandler` 绑定到 `HTMLSaveOptions`。将 `SaveFormat` 设置为 `ZIP` 告诉库将所有内容打包,而我们的处理器决定每个文件的存放位置。 + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*为什么这很重要*:如果不设置 `ResourceHandler`,库会回退到将资源写入文件系统,这就违背了 **how to export html to zip** 在单一归档中的初衷。 + +--- + +## 步骤 6:执行保存操作 + +最后,使用我们刚构建的选项让文档自行保存。库会为每个外部资源调用 `ZipHandler.HandleResource`。 + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +当 `zipArchive` 的 `using` 块结束时,归档会被最终化,文件即可用于分发。 + +--- + +## 完整工作示例(所有步骤合并) + +下面是可以直接复制到控制台应用中的完整程序。它演示了一个 **c# ziparchive example**,实现了 **creates zip archive c#** 风格,并完整回答了 **how to export html to zip**。 + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**预期结果**:运行程序后,`output.zip` 将包含 `index.html`(或你配置的名称)以及原页面引用的所有图片、样式表和脚本,保持文件夹层级。打开 ZIP,解压后双击 `index.html`——页面应与在线时完全一致,只是现在成为了可移植的打包文件。 + +--- + +## 常见边缘情况及处理方法 + +| 情况 | 产生原因 | 建议解决方案 | +|-----------|----------------|---------------| +| **资源名称重复**(例如不同文件夹下的两个同名图片) | 若条目名称完全相同,`CreateEntry` 会抛出 `InvalidOperationException`。 | 使用相对路径前缀(`info.Uri` 已经包含此信息)或在创建条目前手动清理名称。 | +| **大型二进制资产**(视频、高分辨率图片) | 直接流式写入 ZIP 没问题,但默认缓冲区可能导致较高内存占用。 | 重写 `HandleResource`,将返回的流包装在 `BufferedStream` 中,使用适当的缓冲区(如 64 KB)。 | +| **缺失资源** | HTML 中存在失效链接,处理器会请求不存在的文件,导致空条目。 | 在创建条目前检查 `File.Exists`,或记录警告以便后续排查。 | +| **Unicode 文件名** | 某些老旧 ZIP 工具无法正确处理 UTF‑8 条目名。 | 确保使用 .NET 6+(默认写入 UTF‑8)。若需兼容旧版,可设置 `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);`。 | +| **需要清单文件**(列出 ZIP 内文件的列表) | 消费方有时需要 `manifest.json` 进行校验。 | 主保存完成后,创建新条目 `"manifest.json"` 并写入 `zipArchive.Entries` 的 JSON 列表。 | + +--- + +## 生产级 **Save HTML as ZIP** 实现的专业技巧 + +1. **验证输出** – 保存后,使用代码打开 ZIP 并确认 `index.html` 存在且每个条目的 `Length` > 0。这样可以提前捕获静默失败。 +2. **并行处理大资产** – 若有数十 MB 的图片,可将 `HandleResource` 调度到 `Task` 池并并发写入(仍需遵守 `ZipArchive` 单写入者的限制)。 +3. **合理压缩** – `ZipArchive` 默认使用 Deflate。对于已压缩的文件(JPEG、PNG),可将 `entry.CompressionLevel = CompressionLevel.NoCompression` 以提升速度。 +4. **安全性** – 若 ZIP 需要加密或签名,可在写入完成后使用第三方库(如 SharpZipLib)对归档进行二次处理。 + +--- + +{{< /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..7a015229f 100644 --- a/html/chinese/net/working-with-html-documents/_index.md +++ b/html/chinese/net/working-with-html-documents/_index.md @@ -26,17 +26,14 @@ HTML 文档是 Web 的支柱,能够有效地创建和操作 HTML 文档是任 ### [使用 Aspose.HTML 在 .NET 中创建文档](./creating-a-document/) -我们旅程的第一步是学习如何使用 Aspose.HTML 从头开始或从 URL 创建 HTML 文档。我们将指导您完成整个过程,确保即使是初学者也能跟上。在本节结束时,您将掌握轻松生成 HTML 文档的技能。 - ### [使用 Aspose.HTML 在 .NET 中创建简单文档](./creating-a-simple-document/) -掌握基础知识后,我们将深入研究创建过程。在本节中,您将学习如何使用 Aspose.HTML 创建简单的 HTML 文档,我们将探索各种易于操作的功能。无论您是构建网页、生成内容还是将数据转换为 HTML,本教程都将为您提供必要的知识。 - ### [使用 Aspose.HTML 在 .NET 中编辑文档](./editing-a-document/) -现在,让我们将您的技能提升到一个新的水平。编辑 HTML 文档是 Web 开发人员的常见任务,而 Aspose.HTML 大大简化了此过程。在本节中,我们将介绍文档创建、操作和样式。您将了解如何增强 Web 内容的外观和功能,使其更具吸引力且用户友好。 - ### [如何在 C# 中保存 HTML – 使用自定义资源处理程序的完整指南](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) + +### [在 C# 中将 HTML 保存为 ZIP – 使用自定义资源处理程序的完整指南](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) + ### [使用 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/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/chinese/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..ae56fc142 --- /dev/null +++ b/html/chinese/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,240 @@ +--- +category: general +date: 2026-02-27 +description: 在 C# 中使用自定义资源处理程序将 HTML 保存为 ZIP,并创建 ZIP 存档。请按照本分步教程将 HTML 及其资源打包。 +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: zh +og_description: 在 C# 中使用自定义资源处理程序将 HTML 保存为 ZIP。了解如何在 C# 中创建 ZIP 压缩包并轻松嵌入资源。 +og_title: 在 C# 中将 HTML 保存为 ZIP – 完整教程 +tags: +- Aspose.HTML +- C# +- ZIP +title: 在 C# 中将 HTML 保存为 ZIP – 包含自定义资源处理程序的完整指南 +url: /zh/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +all shortcodes unchanged. + +Also note there is a placeholder {{< /blocks/products/pf/tutorial-page-section >}} etc. + +Now produce final content.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 C# 中将 HTML 保存为 ZIP – 使用自定义资源处理器的完整指南 + +有没有想过如何在 C# 中 **将 HTML 保存为 ZIP** 而不抓狂?你并不是唯一的——许多开发者在需要将 HTML 页面连同图像、CSS 或 JavaScript 文件一起发布时都会卡住。好消息是?使用 Aspose.HTML,你可以通过几个简洁的步骤完成,而且 **自定义资源处理器** 让整个过程轻而易举。 + +在本教程中,我们将逐步讲解你需要了解的所有内容:从安装库、编写直接将资源流式写入 **在 C# 中创建 ZIP 存档** 的处理器,到验证最终的包。完成后,你将拥有一个可直接放入任何 .NET 项目的即用解决方案。 + +![将 HTML 保存为 ZIP 示例](/images/save-html-as-zip.png "显示 HTML 保存为 ZIP 文件的示意图") + +## 将 HTML 保存为 ZIP – 本指南涵盖内容 + +我们将覆盖整个流水线: + +1. **先决条件** – 你需要的最小工具和包。 +2. **自定义资源处理器** – 为什么需要以及如何实现。 +3. **在 C# 中创建 ZIP 存档** – 使用 `System.IO.Compression`。 +4. **配置 Aspose.HTML 保存选项** 以指向该处理器。 +5. **运行代码** 并检查输出。 + +如果你对基本的 C# 语法已经熟悉,并且已安装 Visual Studio(或 VS Code),就可以直接开始。无需查阅外部文档——所有内容都在这里。 + +--- + +## Step 1: Set Up the Project and Install Aspose.HTML + +Before we write any code, make sure your project can reference the Aspose.HTML library. + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*Pro tip:* The latest NuGet package (as of February 2026) targets .NET 6+, so you can use the modern SDK‑style project without worrying about legacy frameworks. + +Once the package is restored, open `Program.cs`. We'll replace the default content with the full example later, but for now just keep the file open. + +--- + +## 实现自定义资源处理器 + +### 为什么需要自定义资源处理器? + +When Aspose.HTML saves an HTML document as a ZIP package, it needs to fetch every external resource (images, fonts, scripts) and write them somewhere. The default behavior writes them to a temporary folder on disk. By providing a **custom resource handler**, you tell the library exactly where each resource should go—in our case, directly into the ZIP archive. This avoids extra I/O, keeps everything tidy, and gives you full control over naming. + +### 代码:处理器类 + +Create a new class file called `MyHandler.cs` (or place it inside `Program.cs` if you prefer a single‑file demo). + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**Explanation:** +* `ResourceHandler` 是 Aspose.HTML 提供的抽象类,允许拦截资源获取。 +* 通过返回从 `ZipArchiveEntry.Open()` 获得的 `Stream`,我们向库提供了直接写入 ZIP 文件的可写管道。无需临时文件,也无需额外清理。 + +--- + +## 在 C# 中创建 ZIP 存档 + +Now that the handler is ready, we need a place for it to write. The .NET `ZipArchive` class does the heavy lifting. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### 这段代码的作用 + +1. **创建一个内存中的 HTML 文档**,其中引用了 `logo.png`。 +2. **打开一个 `FileStream`**,它将生成 `output.zip`。 +3. **将 `ZipArchive`** 赋值给 `MyHandler` 中的静态字段。 +4. **设置 `HTMLSaveOptions`** 为 `SaveFormat.ZIP` 并附加我们的处理器。 +5. **调用 `document.Save`** – Aspose.HTML 解析 HTML,获取 `logo.png`,并通过 `MyHandler` 将其流式写入存档。 + +因为处理器使用资源 URI(`logo.png`)作为条目名称,生成的 ZIP 中会包含一个同名文件,保持原始相对路径。 + +--- + +## 为 ZIP 包配置保存选项 + +The `HTMLSaveOptions` object is where you tell Aspose.HTML **how** to package the output. Apart from the `ResourceHandler`, you can tweak a few useful properties: + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*Why care about `EnableCompression`?* +If you’re dealing with large images, enabling compression can shrink the final archive by up to 70 %. However, for already‑compressed PNGs the gain is modest, so you might turn it off to speed up the save operation. + +--- + +## 运行代码并验证输出 + +Compile and run the program: + +```bash +dotnet run +``` + +You should see the success message printed to the console. Navigate to the directory printed and open `output.zip`. Inside you’ll find: + +- `index.html` – the saved HTML file. +- `logo.png` – the image that was referenced in the markup. + +Open `index.html` directly from the ZIP (most OS file explorers let you preview it) and you’ll see the heading and image rendered exactly as in the original string. + +**Edge Cases to Consider** + +| 情况 | 处理办法 | +|-----------|------------| +| HTML 引用了 **远程 URL**(例如 `https://example.com/style.css`) | 处理器仍会收到 `ResourceInfo.Uri`。确保你的环境能够访问该 URL,或预先下载资源并将 HTML 调整为本地路径。 | +| 需要在 ZIP 中保持 **文件夹层级**(例如 `images/logo.png`) | 修改 `HandleResource` 以在前面添加文件夹名:`var entry = ZipArchive.CreateEntry($"assets/{info.Uri}");` | +| 资源 **加载失败**(404) | 处理器会被调用,但流将收到零字节。将保存调用包装在 `try/catch` 中,并在需要自定义错误处理时检查 `info.Status`。 | + +--- + +## 小结:一次性将 HTML 保存为 ZIP 的完整流程 + +- **主要目标:** 使用 C# 将 HTML 页面及其所有外部资源打包成单个 ZIP 文件。 +- **关键工具:** Aspose.HTML(`HTMLDocument`、`HTMLSaveOptions`)、`System.IO.Compression.ZipArchive`,以及 **自定义资源处理器**。 +- **结果:** 一个可携带的 `output.zip`,可以用于分发、存储或网络传输,解压后资源链接保持完整。 + +--- + +## 接下来怎么办?扩展工作流 + +现在你已经掌握了 **将 HTML 保存为 ZIP**,可以进一步探索以下场景: + +- **将 HTML 保存为 PDF** – 将 `SaveFormat.ZIP` 替换为 `SaveFormat.PDF` 并相应调整选项。 +- **嵌入字体** – 在 HTML 中使用 `@font-face`,让处理器捕获字体文件。 +- **批量处理** – 对一组 HTML 字符串进行循环,复用同一个 `ZipArchive` 创建多文档包。 + +所有这些都基于相同的 **自定义资源处理器** 模式和 **在 C# 中创建 ZIP 存档** 技术。 + +--- + +### 最后思考 + +You’ve just seen how easy it is to **save HTML as ZIP** in C# when you let Aspose.HTML + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/czech/net/generate-jpg-and-png-images/_index.md b/html/czech/net/generate-jpg-and-png-images/_index.md index 11b9c8465..4b6d4440f 100644 --- a/html/czech/net/generate-jpg-and-png-images/_index.md +++ b/html/czech/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Naučte se používat Aspose.HTML pro .NET k manipulaci s dokumenty HTML, převo Naučte se, jak při převodu dokumentů DOCX na PNG nebo JPG povolit antialiasing pro hladší výstup. ### [Převod docx na png – vytvoření zip archivu C# tutoriál](./convert-docx-to-png-create-zip-archive-c-tutorial/) Naučte se převést soubory DOCX na PNG a zabalit je do ZIP archivu pomocí C# a Aspose.HTML. +### [Vytvořte PNG z HTML v C# – krok za krokem průvodce](./create-png-from-html-in-c-step-by-step-guide/) +Naučte se převést HTML na PNG pomocí C# a Aspose.HTML v podrobném průvodci. ## Závěr diff --git a/html/czech/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/czech/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..1731cf533 --- /dev/null +++ b/html/czech/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-02-27 +description: Rychle vytvořte PNG z HTML pomocí Aspose.HTML v C#. Naučte se renderovat + HTML do obrázku, nastavit šířku a výšku obrázku a převést HTML na PNG během několika + minut. +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: cs +og_description: Vytvořte PNG z HTML pomocí Aspose.HTML. Tento průvodce ukazuje, jak + renderovat HTML do obrázku, nastavit šířku a výšku obrázku a efektivně převést HTML + na PNG. +og_title: Vytvořte PNG z HTML v C# – kompletní tutoriál +tags: +- Aspose.HTML +- C# +- Image Rendering +title: Vytvořte PNG z HTML v C# – průvodce krok za krokem +url: /cs/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +Also "Linux rendering artifacts", "Text looks fuzzy", "Set `UseHinting = true` in `TextOptions`." + +Also "Pro tip:" lines, translate "Pro tip" maybe keep as "Tip:"? Keep as "Tip:" but translate. + +Also "Prerequisites:" translate. + +Also "Step 1:", "Step 2:" etc. + +Also blockquote > **Prerequisites:** etc. + +Also bullet lists. + +Make sure to preserve markdown formatting. + +Let's produce final translation. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Vytvoření PNG z HTML v C# – Kompletní tutoriál + +Už jste někdy potřebovali **vytvořit PNG z HTML**, ale nebyli jste si jisti, která knihovna vám poskytne pixel‑dokonalé výsledky? Nejste jediní — mnoho vývojářů narazí na stejnou překážku, když se snaží převést webovou stránku na statický obrázek pro e‑maily, reporty nebo náhledy. + +Dobrá zpráva? S Aspose.HTML můžete **renderovat HTML do obrázku**, nastavit přesné rozměry a **uložit HTML jako PNG** pomocí několika řádků C#. V tomto tutoriálu projdeme celý proces, od načtení HTML souboru po ladění textového hintingu a nakonec zápis PNG na disk. Na konci budete vědět, jak **programově nastavit šířku a výšku obrázku** a budete mít znovupoužitelný úryvek, který můžete vložit do libovolného .NET projektu. + +## Co se naučíte + +- Jak načíst HTML dokument pomocí Aspose.HTML. +- Rozdíl mezi `ImageRenderingOptions` a `TextOptions` a proč je důležitý. +- Jak **převést HTML na PNG** při zachování fontů, antialiasingu a stylů podtržení. +- Tipy pro řešení běžných problémů, jako chybějící fonty nebo neočekávané velikosti obrázku. +- Kompletní, připravený k běhu ukázkový kód, který můžete zkopírovat a vložit do Visual Studia. + +> **Předpoklady:** .NET 6+ (nebo .NET Framework 4.6.2+), Aspose.HTML pro .NET nainstalovaný přes NuGet a základní znalost C#. Žádné další externí nástroje nejsou vyžadovány. + +--- + +## Krok 1: Načtení HTML dokumentu – Zahájení tvorby PNG + +Nejprve potřebujeme objekt `HTMLDocument`, který ukazuje na zdrojový soubor. Toto je základ pro jakoukoli operaci **vytvořit PNG z HTML**. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*Proč je tento krok důležitý:* Třída `HTMLDocument` parsuje značky, řeší CSS a vytváří DOM, který renderovací engine později může vykreslit na bitmapu. Pokud je cesta špatná, následující krok **render html to image** vyhodí `FileNotFoundException`. + +--- + +## Krok 2: Nastavení šířky a výšky obrázku – Kontrola výstupní velikosti + +Když **renderujete HTML do obrázku**, často potřebujete konkrétní rozlišení — například miniaturu přesně 1200 × 800 pixelů. Zde se hodí `ImageRenderingOptions`. + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*Tip:* Pokud vynecháte `Width` a `Height`, Aspose.HTML použije přirozenou velikost stránky, která může být pro e‑mailové vložení příliš velká. + +--- + +## Krok 3: Jemné doladění renderování textu – Zajištění ostrého textu + +Text na Linuxu často vypadá rozmazaně, pokud nepovolíte hinting. Objekt `TextOptions` vám umožní to nastavit a zajistit, že finální PNG bude ostrý na každé platformě. + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*Proč hinting?* Hinting upravuje tvar každého glyfu tak, aby se zarovnal k pixelové mřížce, což je klíčové při **převodu HTML na PNG** pro nízké rozlišení displejů. + +--- + +## Krok 4: Kombinace možností a přidání stylování – Kompletní konfigurace renderování + +Nyní sloučíme nastavení obrázku a textu a také ukážeme, jak aplikovat globální styl písma, například podtržení každého textu. Tento krok je tím, kde skutečně **uložíte HTML jako PNG** s vlastním stylováním. + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*Poznámka:* `WebFontStyle` podporuje mnoho příznaků (Bold, Italic, atd.). Pokud potřebujete více stylů, můžete je kombinovat pomocí bitového OR. + +--- + +## Krok 5: Renderování a uložení – Moment, kdy **vytvoříte PNG z HTML** + +Po nastavení všeho je poslední volání jedním řádkem, který vykreslí DOM na bitmapu a zapíše ji na disk. + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +Po spuštění tohoto řádku najdete `output.png` ve zvoleném adresáři, přesně 1200 × 800 pixelů, s antialiasovanou grafikou a hintovaným textem. + +--- + +## Kompletní funkční příklad – Vložte, spusťte, ověřte + +Níže je celý program, který můžete zkompilovat jako konzolovou aplikaci. Obsahuje všechny `using` direktivy, ošetření chyb a komentáře, které potřebujete. + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**Očekávaný výsledek:** Soubor pojmenovaný `output.png` se objeví vedle vašeho spustitelného souboru a zobrazí vykreslenou verzi `sample.html`. Otevřete jej libovolným prohlížečem obrázků a ověřte rozměry i stylování. + +--- + +## Časté problémy a jak se jim vyhnout + +| Problém | Příznak | Řešení | +|---------|----------|--------| +| Chybějící fonty | Text se zobrazuje jako generický sans‑serif | Nainstalujte požadované fonty na hostitelský stroj nebo vložte webové fonty do HTML. | +| Nesprávné rozměry | PNG je větší nebo menší, než se očekává | Zkontrolujte hodnoty `Width` a `Height` v `ImageRenderingOptions`. | +| Rozmazané hrany | Žádný antialiasing | Ujistěte se, že `UseAntialiasing = true`. | +| Artefakty při renderování na Linuxu | Text vypadá rozmazaně | Nastavte `UseHinting = true` v `TextOptions`. | + +*Tip:* Když **renderujete HTML do obrázku** na serveru bez grafického rozhraní, ujistěte se, že server má potřebné systémové knihovny (např. `libgdiplus` na Linuxu), jinak může Aspose.HTML přejít na softwarový renderer s nižší kvalitou. + +--- + +## Rozšíření řešení – Další kroky + +- **Dávková konverze:** Procházejte seznam HTML souborů a volajte stejnou logiku renderování pro vytvoření galerie PNG. +- **Různé formáty:** Zaměňte `output.png` za `output.jpg` nebo `output.bmp` změnou přípony souboru; Aspose.HTML automaticky vybere správný enkodér. +- **Dynamické velikosti:** Vypočítejte `Width` a `Height` na základě meta tagu viewport v HTML pro responzivní design. +- **Vodoznak:** Použijte `Aspose.Html.Drawing` k překrytí loga před uložením. + +Tyto nápady vám umožní přejít od jednoduchého úryvku **vytvořit PNG z HTML** k plnohodnotné službě generování obrázků. + +--- + +## Závěr + +Prošli jsme vším, co potřebujete k **vytvoření PNG z HTML** pomocí Aspose.HTML pro .NET: načtení dokumentu, nastavení **set image width height**, doladění textu pomocí hintingu a nakonec **uložení HTML jako PNG**. Kompletní ukázkový kód je připravený k vložení do vašeho projektu a výše uvedené tipy by vám měly pomoci vyhnout se běžným potížím. + +Nyní, když můžete spolehlivě **renderovat HTML do obrázku**, proč neexperimentovat s různými styly, dávkovým zpracováním nebo dokonce převodem do PDF ve stejném pipeline? Možnosti jsou neomezené a kód už máte po ruce. + +Šťastné kódování a klidně sdílejte své výsledky nebo položte otázky v komentářích! + +![Vytvoření PNG z HTML příklad](/images/create-png-from-html.png "Vytvoření PNG z HTML pomocí Aspose.HTML") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/czech/net/html-extensions-and-conversions/_index.md b/html/czech/net/html-extensions-and-conversions/_index.md index dc8f6f072..2a78d77d4 100644 --- a/html/czech/net/html-extensions-and-conversions/_index.md +++ b/html/czech/net/html-extensions-and-conversions/_index.md @@ -41,6 +41,10 @@ Aspose.HTML for .NET není jen knihovna; je to změna hry ve světě vývoje web Převeďte HTML do PDF bez námahy pomocí Aspose.HTML pro .NET. Postupujte podle našeho podrobného průvodce a uvolněte sílu převodu HTML do PDF. ### [Vytvořte PDF z HTML v C# – průvodce krok za krokem](./create-pdf-from-html-c-step-by-step-guide/) Naučte se, jak pomocí Aspose.HTML v C# převést HTML dokument do PDF pomocí podrobného průvodce krok za krokem. +### [Vytvořte PDF z HTML – Průvodce krok za krokem pro vývojáře](./create-pdf-from-html-step-by-step-guide-for-developers/) +Naučte se, jak pomocí Aspose.HTML vytvořit PDF z HTML pomocí podrobného průvodce krok za krokem pro vývojáře. +### [Uložte HTML jako PDF v C# – Kompletní průvodce s fonty](./save-html-as-pdf-in-c-complete-guide-with-fonts/) +Naučte se, jak uložit HTML jako PDF v C# s podporou vlastních fontů pomocí Aspose.HTML. ### [Převeďte EPUB na obrázek v .NET pomocí Aspose.HTML](./convert-epub-to-image/) Přečtěte si, jak převést EPUB na obrázky pomocí Aspose.HTML pro .NET. Výukový program krok za krokem s příklady kódu a přizpůsobitelnými možnostmi. ### [Převeďte EPUB do PDF v .NET pomocí Aspose.HTML](./convert-epub-to-pdf/) @@ -71,6 +75,8 @@ Naučte se, jak pomocí Aspose.HTML pro .NET zabalit HTML soubor do ZIP archivu Naučte se vytvořit HTML dokument se stylovaným textem a převést jej do PDF pomocí Aspose.HTML pro .NET. ### [Uložte HTML jako ZIP – Kompletní C# tutoriál](./save-html-as-zip-complete-c-tutorial/) Naučte se, jak uložit HTML soubor jako ZIP archiv pomocí Aspose.HTML pro .NET v kompletním C# tutoriálu. +### [Uložte HTML jako ZIP v C# – Kompletní průvodce](./save-html-as-zip-in-c-complete-guide/) +Kompletní průvodce ukládáním HTML souborů do ZIP archivu v C# pomocí Aspose.HTML pro .NET. ### [Uložte HTML do ZIP v C# – Kompletní příklad v paměti](./save-html-to-zip-in-c-complete-in-memory-example/) Naučte se, jak uložit HTML soubor do ZIP archivu v paměti pomocí Aspose.HTML pro .NET v C#. diff --git a/html/czech/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/czech/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..0857ea34f --- /dev/null +++ b/html/czech/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,208 @@ +--- +category: general +date: 2026-02-27 +description: Vytvořte PDF z HTML rychle s kompletním příkladem v C#. Naučte se převádět + HTML na PDF, ukládat HTML jako PDF a exportovat HTML do PDF s nastavením podle osvědčených + postupů. +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: cs +og_description: Vytvořte PDF z HTML v C# s připraveným příkladem k okamžitému spuštění. + Tento průvodce vás provede převodem HTML na PDF, uložením HTML jako PDF a exportem + HTML do PDF. +og_title: Vytvořte PDF z HTML – kompletní C# tutoriál +tags: +- C# +- PDF +- HTML +title: Vytvořit PDF z HTML – krok za krokem průvodce pro vývojáře +url: /cs/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Vytvoření PDF z HTML – Kompletní C# tutoriál + +Už jste někdy potřebovali **vytvořit PDF z HTML**, ale nebyli jste si jisti, které API volání použít? Nejste v tom sami. Ať už budujete dashboard pro reporty, generátor faktur nebo exportér statických stránek, převod HTML do PDF je častý požadavek moderních web‑centrických aplikací. + +V tomto tutoriálu projdeme **kompletní, spustitelný C# příklad**, který vám ukáže, jak **převést HTML na PDF**, nakonfigurovat možnosti renderování pro ostrý výstup a nakonec **uložit HTML jako PDF** na disk. Na konci budete mít solidní, produkčně připravený vzor pro **export HTML do PDF**, který můžete vložit do libovolného .NET projektu. + +## Co se naučíte + +- Jak načíst lokální HTML soubor pomocí `HTMLDocument`. +- Které možnosti renderování zlepšují tloušťku písma, vyhlazení obrázků a hinting textu. +- Přesné volání pro **export HTML do PDF** jedním metodou `Save`. +- Tipy pro práci s velkými dokumenty, ladění běžných problémů a ověřování výsledku. +- Kompletní ukázkový kód, který můžete dnes zkopírovat a spustit. + +### Požadavky + +- .NET 6+ (nebo .NET Framework 4.7+). Používané API funguje na obou. +- Odkaz na hypotetickou knihovnu `HtmlToPdfLib` (nahraďte názvem vaší skutečné knihovny). +- Soubor `input.html` umístěný ve složce, kterou ovládáte (budeme ho nazývat `YOUR_DIRECTORY`). + +Pokud už máte všechny potřebné komponenty, pojďme na to — žádné další nastavení není potřeba. + +## Krok 1: Načtěte HTML dokument pro **vytvoření PDF z HTML** + +Prvním krokem je vytvořit instanci `HTMLDocument`, která ukazuje na zdrojový soubor. Představte si to jako otevření sešitu před psaním — bez dokumentu není co renderovat. + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **Proč je to důležité:** Načtení HTML souboru včas umožní knihovně parsovat DOM, vyřešit CSS a přednačíst obrázky. Přeskočení tohoto kroku nebo předání poškozeného HTML často vede k prázdným stránkám během **html to pdf conversion**. + +## Krok 2: Nakonfigurujte možnosti renderování pro **HTML to PDF Conversion** + +Možnosti renderování jsou tajnou ingrediencí, která obyčejné PDF promění v profesionálně vypadající dokument. Zde povolíme tučné fonty, antialiasing pro obrázky a hinting pro text — funkce, které většina vývojářů přehlíží, ale dramaticky zvyšují vizuální věrnost. + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **Profesionální tip:** Pokud používáte specifické firemní písmo, nastavte `FontFamily` uvnitř `pdfOptions`. Tím zabráníte přepnutí na generické fonty během **convert HTML to PDF**. + +## Krok 3: Uložte soubor a **exportujte HTML do PDF** + +Jakmile je dokument načtený a možnosti vyladěné, poslední krok je jediný řádek, který zapíše PDF na disk. Metoda `Save` interně provádí **html to pdf conversion**, aplikujíc všechny nastavené úpravy renderování. + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **Co byste měli vidět:** Otevření `output.pdf` v libovolném prohlížeči zobrazí původní rozvržení HTML s tučnými nadpisy, hladkými obrázky a ostrým textem. Pokud chybí styly, zkontrolujte, že jsou vaše CSS soubory dosažitelné relativně k `input.html`. + +![vytvoření pdf z html příklad](/images/create-pdf-from-html.png "Snímek obrazovky vygenerovaného PDF – vytvoření pdf z html") + +*Výše uvedený snímek (alternativní text: “vytvoření pdf z html příklad”) ukazuje vygenerované PDF, které zachovává původní stylování HTML.* + +## Časté problémy při **konverzi HTML do PDF** + +I při jednoduchém postupu se vývojáři často setkávají s překážkami. Níže jsou tři nejčastější problémy a způsoby, jak se jim vyhnout. + +### 1. Chybějící zdroje (obrázky, CSS, fonty) + +Pokud HTML odkazuje na externí assety pomocí relativních cest, konvertor je nemusí najít. Vždy používejte absolutní cesty nebo nastavte základní URL: + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. Velké dokumenty způsobují timeouty + +Při práci s vícestránkovými reporty zvyšte nastavení timeoutu knihovny: + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. Náhrada fontů vede k neočekávanému vzhledu + +Uveďte přesnou rodinu fontu, kterou potřebujete: + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +Řešení těchto otázek včas vám ušetří frustrující ladící sezení během operací **save HTML as PDF**. + +## Pokročilé: Přidání titulní stránky před **export HTML do PDF** + +Někdy potřebujete vlastní obálku — například titulní stránku s logem. Můžete před hlavní dokument připojit jednoduchý HTML úryvek: + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **Proč to dělat:** Přidání obálky přímo v HTML udržuje pipeline generování PDF jednoduchou, aniž byste museli používat post‑processing nástroje jako iText nebo PdfSharp. + +## Programatické ověření výstupu + +Pokud potřebujete potvrdit, že PDF bylo vygenerováno správně (např. v CI pipeline), můžete zkontrolovat velikost souboru nebo počet stránek: + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +Nenulový počet stránek potvrzuje, že krok **convert HTML to PDF** byl úspěšný. + +## Shrnutí a další kroky + +Právě jsme prošli **kompletním, end‑to‑end příkladem**, jak **vytvořit PDF z HTML** v C#. Postup je: + +1. Načtěte zdrojové HTML (`HTMLDocument`). +2. Doladěte renderování pomocí `PdfRenderingOptions`. +3. Zavolejte `Save` pro **export HTML do PDF**. + +Od sem můžete pokračovat: + +- **Dávkové zpracování**: Procházet složku s HTML soubory a generovat PDF hromadně. +- **Dynamické HTML**: Použít Razor engine k vytvoření HTML za běhu před konverzí. +- **Bezpečnost**: Sandboxovat proces konverze, pokud přijímáte HTML od uživatelů (zabráníte skriptovému injection). + +Klidně experimentujte s různými možnostmi — například přepněte na kompatibilitu `PdfA` pro archivaci, nebo vložte JavaScript pro interaktivní PDF. Základní vzor zůstává stejný a nyní máte spolehlivý základ pro jakýkoli požadavek **save HTML as PDF**. + +--- + +*Šťastné kódování! Pokud narazíte na nějaké nejasnosti, zanechte komentář níže nebo se podívejte na GitHub issue stránku knihovny. Komunita ráda sdílí tipy, které dělají **html to pdf conversion** ještě plynulejší.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/czech/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/czech/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..bc48c30c1 --- /dev/null +++ b/html/czech/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,275 @@ +--- +category: general +date: 2026-02-27 +description: Rychle uložte HTML jako PDF v C# pomocí Aspose.HTML. Naučte se, jak převést + HTML na PDF a vytvořit PDF z HTML s vlastními fonty a stylováním během několika + kroků. +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: cs +og_description: Uložte HTML jako PDF v C# rychle pomocí Aspose.HTML. Tento tutoriál + ukazuje, jak převést HTML na PDF, vygenerovat PDF z HTML a použít vlastní písma. +og_title: Uložit HTML jako PDF v C# – Kompletní průvodce s fonty +tags: +- csharp +- pdf +- html +title: Uložte HTML jako PDF v C# – Kompletní průvodce s fonty +url: /cs/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Uložení HTML jako PDF v C# – Kompletní průvodce s fonty + +Už jste někdy potřebovali **uložit HTML jako PDF** z aplikace v C#, ale nebyli jste si jisti, kterou knihovnu zvolit? Nejste v tom sami. Mnoho vývojářů narazí na tento problém, když chtějí odesílat faktury, zprávy nebo tisknutelné účtenky přímo z webového obsahu. + +Dobrá zpráva? S Aspose.HTML můžete **převést HTML na PDF**, **generovat PDF z HTML** a dokonce **vytvořit PDF s fonty** během několika řádků. V tomto tutoriálu projdeme celý proces, vysvětlíme, proč je každé nastavení důležité, a poskytneme vám připravený příklad. + +## Co se naučíte + +- Jak načíst lokální nebo vzdálený HTML soubor v C# +- Které možnosti vykreslování poskytují tučné/kurzívy fonty, antialiasing a textové hintování +- Jak uložit výsledek jako PDF soubor na disk +- Tipy pro práci s vlastními fonty a běžnými úskalími + +Žádná předchozí zkušenost s Aspose.HTML není vyžadována — stačí prostředí .NET (Visual Studio 2022 nebo novější) a NuGet balíček Aspose.HTML for .NET. + +## Požadavky + +| Požadavek | Proč je důležitý | +|-------------|----------------| +| .NET 6.0 nebo novější | Poskytuje runtime pro Aspose.HTML | +| Aspose.HTML for .NET (NuGet) | Knihovna, která provádí těžkou práci | +| Ukázkový HTML soubor (`sample.html`) | Náš zdrojový obsah, který bude transformován | +| Základní znalost C# | Pro pochopení ukázek kódu | + +Pokud je máte, pojďme na to. + +## Krok 1: Instalace Aspose.HTML přes NuGet + +Otevřete svůj projekt ve Visual Studio, klikněte pravým tlačítkem na uzel **Dependencies** a zvolte **Manage NuGet Packages**. Vyhledejte `Aspose.HTML` a klikněte na **Install**. + +```powershell +dotnet add package Aspose.HTML +``` + +> **Tip:** Použijte nejnovější stabilní verzi (k 27. 02. 2026 je to 23.11), abyste získali nejnovější vylepšení vykreslování. + +## Krok 2: Načtení zdrojového HTML dokumentu + +Prvním, co potřebujeme, je objekt `HTMLDocument`, který odkazuje na náš soubor. Tato třída parsuje značky, řeší CSS a připravuje vše k vykreslení. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Proč tento krok?** +> Načtení HTML do `HTMLDocument` odděluje fázi parsování od fáze vykreslování, což znamená, že můžete prozkoumat DOM nebo provést úpravy za běhu před tím, než skutečně vytvoříte PDF. + +## Krok 3: Konfigurace možností vykreslování PDF + +Aspose.HTML vám poskytuje detailní kontrolu nad tím, jak bude finální PDF vypadat. V tomto příkladu povolíme tučné + kurzívní styly fontů, antialiasing pro hladší grafiku a textové hintování pro ostřejší výstup při nízkém DPI. + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### Proč tato nastavení? + +- **`FontStyle`** – Sloučí jakékoli `` nebo `` tagy se základním fontem, čímž zajistí, že PDF respektuje původní stylování. +- **`UseAntialiasing`** – Snižuje zubaté hrany v grafech, ikonách nebo jakémkoli rasterizovaném obsahu. +- **`UseHinting`** – Zarovnává obrysy glifů k pixelovým mřížkám, což je zvláště užitečné, když bude PDF zobrazováno na zařízeních s nízkým rozlišením. + +Pokud potřebujete vlastní fonty (např. firemní značkový font), umístěte soubory `.ttf` do složky a nastavte `pdfRenderOptions.FontProvider` odpovídajícím způsobem. To je samostatné téma, ale základní myšlenka je: + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## Krok 4: Vykreslení HTML dokumentu do PDF + +Nyní spojíme dokument a možnosti a řekneme Aspose.HTML, aby zapsal výstupní soubor. + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +Po spuštění tohoto řádku najdete `output.pdf` vedle spustitelného souboru. Otevřete jej – měli byste vidět původní HTML vykreslené s tučným/kurzívním stylováním, hladkou grafikou a ostrým textem. + +> **Očekávaný výsledek:** +> PDF, který odráží rozvržení `sample.html`, se všemi nadpisy tučnými, zvýrazněným textem kurzívou a všemi vloženými obrázky vykreslenými bez zubatých hran. + +## Krok 5: Ověření a úpravy (volitelné) + +### Rychlý ověřovací skript + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +Pokud PDF vypadá nesprávně, zvažte tyto běžné úpravy: + +| Problém | Pravděpodobná příčina | Oprava | +|-------|--------------|-----| +| Chybějící fonty | Font není vložený nebo nebyl nalezen | Použijte `FontProvider.AddFont` a ujistěte se, že soubor fontu je přístupný | +| Obrázky jsou rozmazané | Antialiasing je vypnutý | Nastavte `UseAntialiasing = true` | +| Text vypadá na obrazovce příliš tenký | Hinting je vypnutý | Povolte `UseHinting = true` | +| Posun rozložení při zalomení stránky | Pravidla CSS `page-break` jsou ignorována | Přidejte explicitní `page-break-before/after` ve vašem HTML/CSS | + +## Kompletní funkční příklad + +Níže je kompletní program, který můžete zkopírovat a vložit do nové konzolové aplikace. Obsahuje všechny using direktivy, ošetření chyb a komentáře pro přehlednost. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +Spusťte projekt (`dotnet run`) a měli byste vidět zprávu o úspěchu následovanou nově vytvořeným `output.pdf`. + +## Časté otázky a okrajové případy + +### Můžu **převést HTML na PDF** z URL místo lokálního souboru? + +Ano. Stačí nahradit cestu k souboru řetězcem URL: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +Aspose.HTML stáhne stránku, vyřeší externí zdroje a vykreslí ji. + +### Co s **velkými HTML soubory** nebo **více stránkami**? + +Aspose.HTML streamuje obsah, takže využití paměti zůstává rozumné. Pokud potřebujete každou HTML sekci na samostatné PDF stránce, vložte manuální zalomení stránky do HTML: + +```html +
+``` + +### Funguje to s **.NET Core** a **.NET 7**? + +Ano. Knihovna je multiplatformní; jen se ujistěte, že cílíte na kompatibilní framework (net6.0, net7.0, atd.) a nainstalujete odpovídající NuGet balíček. + +### Jak **vložit fonty** pro plnou přenositelnost PDF? + +Nastavte `pdfRenderOptions.FontProvider` jak bylo ukázáno dříve a také povolte vkládání fontů: + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +Tím zajistíte, že PDF bude vypadat stejně na jakémkoli počítači, i když font není lokálně nainstalován. + +## Vizuální příklad + +![save html as pdf example](example.png){alt="ukázka uložení html jako pdf"} + +*Snímek obrazovky ukazuje vygenerované PDF otevřené v Adobe Acrobat, zachovávající tučné/kurzívní styly a hladké obrázky.* + +## Závěr + +Probrali jsme vše, co potřebujete k **uložení HTML jako PDF** pomocí C#. Od načtení značek, konfigurace možností vykreslování až po zápis finálního PDF je proces přímočarý a vysoce přizpůsobitelný. + +Podle tohoto návodu můžete také **převést HTML na PDF**, **generovat PDF z HTML** a **vytvořit PDF s fonty** pro jakýkoli scénář reportování nebo generování dokumentů. Nebojte se experimentovat s dalšími možnostmi — vodoznaky, šifrování nebo vlastní velikosti stránek — protože Aspose.HTML vám poskytuje tuto flexibilitu. + +**Další kroky**, které můžete prozkoumat: + +- Použijte třídu `PdfSaveOptions` k nastavení verze PDF nebo úrovně komprese. +- Spojte více instancí `HTMLDocument` do jednoho PDF pro vícesekční zprávy. +- Integrujte tento workflow do ASP.NET Core API, aby vaše webová služba mohla na požádání vracet PDF. + +Máte otázky ohledně okrajových případů nebo potřebujete pomoc s laděním renderovacího řetězce? Zanechte komentář níže a šťastné programování! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/czech/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/czech/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..5ee386b95 --- /dev/null +++ b/html/czech/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-02-27 +description: Uložte HTML jako ZIP pomocí C# ZipArchive – krok‑za‑krokem příklad s + vlastním handlerem zdrojů, plus tipy, jak exportovat HTML do ZIP a vytvořit zip + archiv v C# kódu. +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: cs +og_description: Uložte HTML jako ZIP pomocí C# ZipArchive. Naučte se, jak exportovat + HTML do ZIP s kompletním příkladem, vlastním správcem zdrojů a osvědčenými postupy. +og_title: Uložte HTML jako ZIP v C# – kompletní průvodce +tags: +- C# +- ZipArchive +- HTML export +title: Uložení HTML jako ZIP v C# – Kompletní průvodce +url: /cs/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Uložení HTML jako ZIP v C# – Kompletní průvodce + +Už jste někdy potřebovali **save HTML as ZIP**, ale nebyli jste si jisti, které .NET třídy použít? Nejste v tom sami – mnoho vývojářů narazí na tento problém, když chtějí zabalit webovou stránku spolu s jejími prostředky pro offline použití nebo distribuci. Dobrá zpráva? S vestavěným `System.IO.Compression.ZipArchive` to můžete udělat během několika řádků a získáte také čistý způsob, jak řídit zápis každého prostředku. + +V tomto tutoriálu projdeme **complete, runnable example**, který vám přesně ukáže, jak exportovat HTML dokument do ZIP souboru pomocí vlastního `ResourceHandler`, který streamuje každý asset do archivu. Po cestě přidáme několik úryvků **c# ziparchive example**, probereme **how to export html to zip** v reálných scénářích a upozorníme na jemné rozdíly, když chcete **create zip archive c#** programy, které musí být robustní. + +> **Prerequisites** – Budete potřebovat .NET 6+ (nebo .NET Core 3.1) a odkaz na knihovnu, která poskytuje `HTMLDocument`, `HTMLSaveOptions` a `ResourceHandler`. Pokud používáte Aspose.HTML nebo podobný balíček, stačí jej přidat přes NuGet. Žádné další nástroje třetích stran nejsou vyžadovány. + +--- + +## Co tento tutoriál pokrývá + +- Nastavení **ZipArchive**, která přijme HTML soubor a jeho propojené prostředky. +- Implementace **custom resource handler** (`ZipHandler`), který směruje každý stream prostředku do archivu. +- Použití **HTMLSaveOptions** k propojení všeho dohromady a skutečnému **save HTML as ZIP**. +- Běžné úskalí při práci s cestami, duplicitními položkami a velkými prostředky. +- Tipy pro rozšíření řešení – například přidání manifest souboru nebo šifrování ZIP. + +Na konci budete mít samostatnou metodu, kterou můžete vložit do libovolného C# projektu a s jistotou **save html as zip**. + +## Krok 1: Přidejte požadované jmenné prostory + +Než se spustí jakýkoli kód, ujistěte se, že kompilátor zná kompresní třídy a HTML knihovnu, kterou používáte. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*Proč je to důležité:* `System.IO.Compression` vám poskytuje `ZipArchive`, zatímco jmenné prostory `Aspose.Html` vystavují `HTMLDocument`, `HTMLSaveOptions` a základní třídu `ResourceHandler`, kterou rozšíříme. Pokud používáte jiný HTML engine, hledejte analogické typy. + +## Krok 2: Vytvořte vlastní Resource Handler (Primary Keyword in Action) + +Jádrem **saving HTML as ZIP** je říci engine, kam má umístit každý externí prostředek (obrázky, CSS, skripty). Děděním z `ResourceHandler` získáme kontrolu nad streamem, který data přijímá. + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**Klíčové body** + +- `info.Uri` je relativní URL, kterou se HTML engine snaží zapsat. Použití jako název položky zachovává strukturu složek uvnitř ZIP. +- `CreateEntry` automaticky vytvoří potřebné adresáře; nemusíte je spravovat ručně. +- Vrácení otevřeného streamu umožní engine streamovat data přímo – žádné dočasné soubory, žádné další kopie v paměti. + +## Krok 3: Inicializujte ZipArchive + +Nyní spustíme `ZipArchive` v režimu **Update**. Tento režim nám umožňuje přidávat položky během běhu a také nahrazovat existující, pokud kód spustíte vícekrát. + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*Tip:* Použijte `FileMode.Create` k přepsání jakéhokoli předchozího souboru, nebo přepněte na `FileMode.OpenOrCreate`, pokud chcete přidávat do existujícího archivu. Také obalte `ZipArchive` v `using` bloku – to zaručuje, že archiv bude řádně uvolněn a souborový handle bude uvolněn. + +## Krok 4: Načtěte HTML dokument, který chcete exportovat + +Zde nasměrujete knihovnu na zdrojový HTML soubor. Dokument může odkazovat na CSS, obrázky nebo JavaScript soubory, které jsou vedle něj. + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +Pokud váš HTML obsahuje relativní URL, ujistěte se, že pracovní adresář procesu odpovídá složce obsahující tyto prostředky. Jinak engine nebude schopen je najít a ZIP tyto soubory postrádat. + +## Krok 5: Nakonfigurujte možnosti uložení – Skutečný okamžik “Save HTML as ZIP” + +Nyní propojujeme `ZipHandler` s `HTMLSaveOptions`. Nastavení `SaveFormat` na `ZIP` říká knihovně, aby zabalila vše, zatímco náš handler rozhoduje, kam každá část půjde. + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*Proč je to důležité:* Bez nastavení `ResourceHandler` by knihovna přecházela k zápisu prostředků do souborového systému, což podkopává smysl **how to export html to zip** v jediném archivu. + +## Krok 6: Proveďte operaci uložení + +Nakonec požádejte dokument, aby se uložil pomocí právě vytvořených možností. Knihovna zavolá `ZipHandler.HandleResource` pro každý externí asset, na který narazí. + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +Když se ukončí `using` blok pro `zipArchive`, archiv je dokončen a soubor je připraven k distribuci. + +## Kompletní funkční příklad (všechny kroky dohromady) + +Níže je kompletní program, který můžete zkopírovat a vložit do konzolové aplikace. Ukazuje **c# ziparchive example**, který **creates zip archive c#** styl, a plně odpovídá na **how to export html to zip**. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**Expected result:** Po spuštění programu bude `output.zip` obsahovat `index.html` (nebo název, který jste nastavili) plus všechny obrázky, styly a skripty odkazované původní stránkou, zachovávající hierarchii složek. Otevřete ZIP, rozbalte a dvakrát klikněte na `index.html` – stránka by se měla zobrazit přesně tak, jak byla online, ale nyní je to přenosný balíček. + +## Běžné okrajové případy a jak je řešit + +| Situace | Proč k tomu dochází | Navrhované řešení | +|-----------|----------------|---------------| +| **Duplicate resource names** (např. dva obrázky se stejným názvem souboru v různých složkách) | `CreateEntry` vyhodí `InvalidOperationException`, pokud již existuje přesně stejný název položky. | Přidejte předponu k položce pomocí její relativní cesty (`info.Uri` to již dělá) nebo ručně očistěte názvy před vytvořením položky. | +| **Large binary assets** (videa, vysoce rozlišené obrázky) | Streamování přímo do zipu je v pořádku, ale výchozí velikost bufferu může způsobit vysokou spotřebu paměti. | Přepište `HandleResource`, aby obalil vrácený stream do `BufferedStream` s rozumným bufferem (např. 64 KB). | +| **Missing resources** | Pokud HTML obsahuje neplatný odkaz, handler obdrží požadavek na soubor, který neexistuje, což vede k prázdné položce. | Zkontrolujte `File.Exists` před vytvořením položky, nebo zaznamenejte varování, abyste věděli, že něco chybí. | +| **Unicode filenames** | Některé starší ZIP nástroje špatně zacházejí s UTF‑8 názvy položek. | Ujistěte se, že cílíte na .NET 6+, který zapisuje UTF‑8 ve výchozím nastavení. Pokud potřebujete starší kompatibilitu, nastavte `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);`. | +| **Need a manifest** (seznam souborů uvnitř zipu) | Spotřebitelé někdy chtějí `manifest.json` pro validaci. | Po hlavním uložení vytvořte novou položku `"manifest.json"` a zapište JSON seznam `zipArchive.Entries`. | + +## Pro tipy pro produkčně připravené **Save HTML as ZIP** implementace + +1. **Validate the output** – Po uložení otevřete ZIP programově a ověřte, že `index.html` existuje a že `Length` každé položky je > 0. To zachytí tiché selhání včas. +2. **Parallelize large assets** – Pokud máte desítky megabajtů obrázků, zvažte zařazení volání `HandleResource` do `Task` poolu a zápis do archivu souběžně (přesto respektujte jednorázovou povahu zápisu `ZipArchive`). +3. **Compress wisely** – `ZipArchive` používá Deflate ve výchozím nastavení. Pro již komprimované soubory (JPEG, PNG) můžete nastavit `entry.CompressionLevel = CompressionLevel.NoCompression` pro zrychlení operace. +4. **Security** – If the ZIP + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/czech/net/working-with-html-documents/_index.md b/html/czech/net/working-with-html-documents/_index.md index c00dc4697..2525ba273 100644 --- a/html/czech/net/working-with-html-documents/_index.md +++ b/html/czech/net/working-with-html-documents/_index.md @@ -38,6 +38,7 @@ Nyní posuňte vaše dovednosti na další úroveň. Úpravy HTML dokumentů jso ### [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/) +### [Uložení HTML jako ZIP v C# – Kompletní průvodce s vlastním resource handlerem](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/czech/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/czech/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..ad7ad85e2 --- /dev/null +++ b/html/czech/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-02-27 +description: Uložte HTML jako ZIP v C# pomocí vlastního resource handleru a vytvořte + ZIP archiv v C#. Postupujte podle tohoto krok‑za‑krokem tutoriálu, abyste zabalili + HTML a jeho zdroje. +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: cs +og_description: Uložte HTML jako ZIP v C# s vlastním správcem zdrojů. Naučte se, jak + vytvořit ZIP archiv v C# a snadno vkládat zdroje. +og_title: Uložte HTML jako ZIP v C# – kompletní tutoriál +tags: +- Aspose.HTML +- C# +- ZIP +title: Uložení HTML jako ZIP v C# – Kompletní průvodce s vlastním správcem zdrojů +url: /cs/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Uložení HTML jako ZIP v C# – Kompletní průvodce s vlastním manipulátorem zdrojů + +Už jste se někdy zamysleli, jak **uložit HTML jako ZIP** v C# bez toho, abyste si trhali vlasy? Nejste v tom sami – mnoho vývojářů narazí na problém, když potřebují distribuovat HTML stránku spolu s obrázky, CSS nebo JavaScript soubory. Dobrá zpráva? S Aspose.HTML to můžete provést v několika přehledných krocích a **vlastní manipulátor zdrojů** proces učiní bezbolestným. + +V tomto tutoriálu vás provedeme vším, co potřebujete vědět: od instalace knihovny, přes psaní manipulátoru, který streamuje zdroje přímo do **vytvoření ZIP archivu v C#**, až po ověření finálního balíčku. Na konci budete mít připravené řešení, které můžete vložit do libovolného .NET projektu. + +![Příklad uložení HTML jako ZIP](/images/save-html-as-zip.png "Diagram ukazující HTML uložené jako ZIP soubor") + +## Uložení HTML jako ZIP – Co tento průvodce pokrývá + +Probereme celý proces: + +1. **Prerequisites** – minimální nástroje a balíčky, které potřebujete. +2. **Custom resource handler** – proč jej potřebujete a jak jej implementovat. +3. **Creating a ZIP archive in C#** – pomocí `System.IO.Compression`. +4. **Configuring Aspose.HTML save options** – nastavení, aby ukazovaly na manipulátor. +5. **Running the code** – spuštění kódu a kontrola výstupu. + +Pokud jste obeznámeni se základní syntaxí C# a máte nainstalovaný Visual Studio (nebo VS Code), jste připraveni začít. Není potřeba žádná externí dokumentace – vše je zde. + +--- + +## Krok 1: Nastavení projektu a instalace Aspose.HTML + +Než napíšeme jakýkoli kód, ujistěte se, že váš projekt může odkazovat na knihovnu Aspose.HTML. + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*Pro tip:* Nejnovější NuGet balíček (k únoru 2026) cílí na .NET 6+, takže můžete použít moderní projekt ve stylu SDK bez obav o starší frameworky. + +Jakmile je balíček obnoven, otevřete `Program.cs`. Později nahradíme výchozí obsah kompletním příkladem, ale prozatím soubor nechte otevřený. + +## Implementace vlastního manipulátoru zdrojů + +### Proč vlastní manipulátor zdrojů? + +Když Aspose.HTML ukládá HTML dokument jako ZIP balíček, musí načíst každý externí zdroj (obrázky, fonty, skripty) a zapsat jej někam. Výchozí chování zapisuje soubory do dočasné složky na disku. Poskytnutím **vlastního manipulátoru zdrojů** řeknete knihovně přesně, kam má každý zdroj jít – v našem případě přímo do ZIP archivu. Tím se vyhnete nadbytečnému I/O, vše zůstane přehledné a získáte plnou kontrolu nad pojmenováním. + +### Kód: Třída manipulátoru + +Vytvořte nový soubor třídy s názvem `MyHandler.cs` (nebo jej umístěte do `Program.cs`, pokud dáváte přednost jednosouborové ukázce). + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**Vysvětlení:** +* `ResourceHandler` je abstraktní třída z Aspose.HTML, která vám umožňuje zachytit načítání zdrojů. +* Vrácením `Stream` získaného z `ZipArchiveEntry.Open()` předáme knihovně zapisovatelný kanál přímo do ZIP souboru. Žádné dočasné soubory, žádné další úklidy. + +## Vytvoření ZIP archivu v C# + +Jakmile je manipulátor připraven, potřebujeme místo, kam bude zapisovat. Třída .NET `ZipArchive` provádí těžkou práci. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### Co tento kód dělá + +1. **Vytvoří HTML dokument v paměti** s odkazem na `logo.png`. +2. **Otevře `FileStream`**, který se stane `output.zip`. +3. **Přiřadí `ZipArchive`** do statického pole v `MyHandler`. +4. **Nastaví `HTMLSaveOptions`** na `SaveFormat.ZIP` a připojí náš manipulátor. +5. **Volá `document.Save`** – Aspose.HTML parsuje HTML, načte `logo.png` a streamuje jej do archivu pomocí `MyHandler`. + +Protože manipulátor používá URI zdroje (`logo.png`) jako název položky, výsledný ZIP obsahuje soubor pojmenovaný přesně tak, zachovávající původní relativní cestu. + +## Konfigurace možností uložení pro ZIP balíček + +`HTMLSaveOptions` objekt je místo, kde řeknete Aspose.HTML **jak** zabalit výstup. Kromě `ResourceHandler` můžete upravit několik užitečných vlastností: + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*Proč se starat o `EnableCompression`?* +Pokud pracujete s velkými obrázky, povolení komprese může zmenšit finální archiv až o 70 %. U již komprimovaných PNG však úspora není výrazná, takže ji můžete vypnout pro rychlejší ukládání. + +## Spuštění kódu a ověření výstupu + +Compile and run the program: + +```bash +dotnet run +``` + +Měli byste vidět zprávu o úspěchu vytištěnou do konzole. Přejděte do vypsaného adresáře a otevřete `output.zip`. Uvnitř najdete: + +- `index.html` – uložený HTML soubor. +- `logo.png` – obrázek, který byl odkazován v markupu. + +Otevřete `index.html` přímo ze ZIP (většina průzkumníků souborů v OS vám umožní náhled) a uvidíte nadpis a obrázek vykreslené přesně jako v původním řetězci. + +**Okrajové případy k zvážení** + +| Situace | Co dělat | +|-----------|------------| +| HTML odkazuje na **vzdálenou URL** (např. `https://example.com/style.css`) | Manipulátor stále obdrží `ResourceInfo.Uri`. Ujistěte se, že vaše prostředí může URL dosáhnout, nebo předem stáhněte zdroj a upravte HTML na lokální cestu. | +| Potřebujete **hierarchii složek** uvnitř ZIP (např. `images/logo.png`) | Upravte `HandleResource`, aby předřadila název složky: `var entry = ZipArchive.CreateEntry($"assets/{info.Uri}");` | +| Zdroj **selže načíst** (404) | Manipulátor bude zavolán, ale stream obdrží nula bajtů. Zabalte volání `save` do `try/catch` a prozkoumejte `info.Status`, pokud potřebujete vlastní zpracování chyb. | + +## Shrnutí: Uložení HTML jako ZIP v jednom kompaktním toku + +- **Primary Goal:** Zabalit HTML stránku a všechny její externí zdroje do jediného ZIP souboru pomocí C#. +- **Key Tools:** Aspose.HTML (`HTMLDocument`, `HTMLSaveOptions`), `System.IO.Compression.ZipArchive` a **custom resource handler**. +- **Result:** Přenosný `output.zip`, který lze distribuovat, uložit nebo poslat po síti a později rozbalit bez ztráty odkazů na zdroje. + +## Co dál? Rozšíření pracovního postupu + +Nyní, když ovládáte **uložení HTML jako ZIP**, můžete chtít prozkoumat související scénáře: + +- **Uložení HTML jako PDF** – nahraďte `SaveFormat.ZIP` za `SaveFormat.PDF` a upravte možnosti podle toho. +- **Vkládání fontů** – použijte `@font-face` ve vašem HTML a nechte manipulátor zachytit soubory fontů. +- **Dávkové zpracování** – projděte kolekci HTML řetězců a opakovaně použijte stejný `ZipArchive` k vytvoření balíčku s více dokumenty. + +Všechny tyto scénáře staví na stejném **custom resource handler** vzoru a technice **create ZIP archive in C#**, kterou jste se právě naučili. + +### Závěrečné myšlenky + +Právě jste viděli, jak snadné je **uložit HTML jako ZIP** v C#, když použijete Aspose.HTML + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/dutch/net/generate-jpg-and-png-images/_index.md b/html/dutch/net/generate-jpg-and-png-images/_index.md index e05f0c0a7..d91cced71 100644 --- a/html/dutch/net/generate-jpg-and-png-images/_index.md +++ b/html/dutch/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Leer hoe u Aspose.HTML voor .NET kunt gebruiken om HTML-documenten te bewerken, Leer hoe u antialiasing inschakelt bij het omzetten van DOCX-bestanden naar PNG- of JPG-afbeeldingen met Aspose.HTML. ### [docx naar png converteren – zip-archief maken C#-tutorial](./convert-docx-to-png-create-zip-archive-c-tutorial/) Leer hoe u een DOCX-bestand naar PNG converteert en de resultaten in een zip-archief opslaat met C# en Aspose.HTML. +### [PNG maken vanuit HTML in C# – Stapsgewijze handleiding](./create-png-from-html-in-c-step-by-step-guide/) +Leer hoe u PNG-afbeeldingen genereert vanuit HTML met C# met behulp van Aspose.HTML in een stapsgewijze tutorial. ## Conclusie diff --git a/html/dutch/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/dutch/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..c72848b82 --- /dev/null +++ b/html/dutch/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-02-27 +description: Maak snel PNG van HTML met Aspose.HTML in C#. Leer hoe je HTML naar afbeelding + rendert, de breedte en hoogte van de afbeelding instelt, en HTML in enkele minuten + naar PNG converteert. +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: nl +og_description: Maak PNG van HTML met Aspose.HTML. Deze gids laat zien hoe je HTML + naar afbeelding rendert, de breedte en hoogte van de afbeelding instelt en HTML + efficiënt naar PNG converteert. +og_title: Maak PNG van HTML in C# – Complete tutorial +tags: +- Aspose.HTML +- C# +- Image Rendering +title: Maak PNG van HTML in C# – Stapsgewijze gids +url: /nl/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +Could translate "Pro tip:" to "Pro tip:" (same). Might keep as is. + +Let's write. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PNG maken van HTML in C# – Volledige tutorial + +Altijd al **PNG maken van HTML** willen, maar niet zeker welke bibliotheek pixel‑perfecte resultaten levert? Je bent niet de enige—veel ontwikkelaars lopen tegen dezelfde muur aan wanneer ze een webpagina willen omzetten naar een statische afbeelding voor e‑mails, rapporten of thumbnails. + +Het goede nieuws? Met Aspose.HTML kun je **HTML renderen naar afbeelding**, de exacte afmetingen bepalen, en **HTML opslaan als PNG** met slechts een paar regels C#. In deze tutorial lopen we het volledige proces door, van het laden van je HTML‑bestand tot het afstemmen van tekst‑hinting en uiteindelijk het wegschrijven van een PNG naar schijf. Aan het einde weet je hoe je **image width height** programmatically kunt instellen en heb je een herbruikbare snippet die je in elk .NET‑project kunt plaatsen. + +## Wat je leert + +- Hoe je een HTML‑document laadt met Aspose.HTML. +- Het verschil tussen `ImageRenderingOptions` en `TextOptions` en waarom ze belangrijk zijn. +- Hoe je **HTML naar PNG converteert** terwijl je lettertypen, antialiasing en onderstreepte stijlen behoudt. +- Tips voor het oplossen van veelvoorkomende valkuilen zoals ontbrekende lettertypen of onverwachte afbeeldingsgroottes. +- Een complete, kant‑klaar code‑voorbeeld dat je kunt copy‑pasten in Visual Studio. + +> **Voorvereisten:** .NET 6+ (of .NET Framework 4.6.2+), Aspose.HTML for .NET geïnstalleerd via NuGet, en een basiskennis van C#. Geen andere externe tools nodig. + +--- + +## Stap 1: Het HTML‑document laden – Begin van het PNG‑creatieproces + +Eerst hebben we een `HTMLDocument`‑object nodig dat naar het bronbestand wijst. Dit is de basis voor elke **create PNG from HTML**‑operatie. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*Waarom deze stap belangrijk is:* De `HTMLDocument`‑klasse parseert de markup, lost CSS op en bouwt een DOM dat de renderengine later op een bitmap kan schilderen. Als het pad onjuist is, zal de volgende **render html to image**‑stap een `FileNotFoundException` veroorzaken. + +--- + +## Stap 2: Image width height instellen – De uitvoergrootte bepalen + +Wanneer je **HTML naar afbeelding rendert**, heb je vaak een specifieke resolutie nodig—denk aan een thumbnail van exact 1200 × 800 pixels. Daar komt `ImageRenderingOptions` van pas. + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*Pro tip:* Als je `Width` en `Height` weglaat, gebruikt Aspose.HTML de natuurlijke paginagrootte, die mogelijk te groot is voor e‑mail‑embeds. + +--- + +## Stap 3: Tekst‑rendering fijn afstellen – Tekst scherp maken + +Tekst op Linux ziet er vaak wazig uit tenzij je hinting inschakelt. Het `TextOptions`‑object laat je dat regelen, zodat de uiteindelijke PNG er op elk platform scherp uitziet. + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*Waarom hinting?* Hinting past de vorm van elk glyph aan zodat het op het pixelraster uitlijnt, wat cruciaal is wanneer je **HTML naar PNG converteert** voor weergave op lage resoluties. + +--- + +## Stap 4: Opties combineren en styling toevoegen – De volledige renderconfiguratie + +Nu voegen we de beeld‑ en tekstinstellingen samen, en laten we zien hoe je een globale lettertype‑stijl toepast, zoals onderstrepen van alle tekst. Deze stap is waar je echt **HTML opslaat als PNG** met aangepaste styling. + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*Opmerking:* `WebFontStyle` ondersteunt veel vlaggen (Bold, Italic, etc.). Je kunt ze combineren met een bitwise OR als je meerdere stijlen nodig hebt. + +--- + +## Stap 5: Renderen en opslaan – Het moment dat je **PNG maakt van HTML** + +Met alles geconfigureerd is de laatste oproep een één‑regelige methode die de DOM op een bitmap schildert en naar schijf schrijft. + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +Na het uitvoeren van deze regel vind je `output.png` in de opgegeven map, exact 1200 × 800 pixels, met antialiased graphics en hinted text. + +--- + +## Volledig werkend voorbeeld – Plakken, uitvoeren, verifiëren + +Hieronder staat het complete programma dat je kunt compileren als console‑applicatie. Het bevat alle using‑statements, foutafhandeling en commentaar die je nodig hebt. + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**Verwacht resultaat:** Een bestand genaamd `output.png` verschijnt naast je executable, met de gerenderde versie van `sample.html`. Open het met een willekeurige afbeeldingsviewer om de afmetingen en styling te bevestigen. + +--- + +## Veelvoorkomende valkuilen & hoe ze te vermijden + +| Probleem | Symptoom | Oplossing | +|----------|----------|-----------| +| Ontbrekende lettertypen | Tekst verschijnt als generiek sans‑serif | Installeer de benodigde lettertypen op de hostmachine of embed webfonts in de HTML. | +| Verkeerde afmetingen | PNG is groter of kleiner dan verwacht | Controleer de waarden van `Width` en `Height` in `ImageRenderingOptions`. | +| Vage randen | Geen antialiasing | Zorg dat `UseAntialiasing = true`. | +| Rendering‑artefacten op Linux | Tekst ziet er wazig uit | Stel `UseHinting = true` in `TextOptions`. | + +*Pro tip:* Wanneer je **HTML naar afbeelding rendert** op een headless server, zorg er dan voor dat de server de benodigde systeem‑libraries heeft (bijv. `libgdiplus` op Linux), anders kan Aspose.HTML terugvallen op een software‑renderer met verminderde kwaliteit. + +--- + +## De oplossing uitbreiden – Volgende stappen + +- **Batch‑conversie:** Loop over een lijst met HTML‑bestanden en roep dezelfde renderlogica aan om een galerij van PNG’s te produceren. +- **Andere formaten:** Vervang `output.png` door `output.jpg` of `output.bmp` door de bestandsextensie te wijzigen; Aspose.HTML kiest automatisch de juiste encoder. +- **Dynamische afmetingen:** Bereken `Width` en `Height` op basis van de viewport‑meta‑tag van de HTML voor responsieve ontwerpen. +- **Watermarking:** Gebruik `Aspose.Html.Drawing` om een logo toe te voegen vóór het opslaan. + +Deze ideeën laten je doorgroeien van een eenvoudige **create PNG from HTML**‑snippet naar een volledige image‑generatieservice. + +--- + +## Conclusie + +We hebben alles doorlopen wat je nodig hebt om **PNG te maken van HTML** met Aspose.HTML voor .NET: het document laden, **image width height** instellen, tekst fijn afstemmen met hinting, en uiteindelijk **HTML opslaan als PNG**. Het complete code‑voorbeeld kun je direct in je project gebruiken, en de bovenstaande tips helpen je veelvoorkomende problemen te vermijden. + +Nu je betrouwbaar **HTML naar afbeelding kunt renderen**, waarom niet experimenteren met verschillende stijlen, batch‑verwerking, of zelfs converteren naar PDF in dezelfde pipeline? De mogelijkheden zijn eindeloos, en de code ligt al in je handen. + +Happy coding, and feel free to share your results or ask questions in the comments! + +![Create PNG from HTML example](/images/create-png-from-html.png "Create PNG from HTML using Aspose.HTML") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/dutch/net/html-extensions-and-conversions/_index.md b/html/dutch/net/html-extensions-and-conversions/_index.md index fd924a78c..6145463d7 100644 --- a/html/dutch/net/html-extensions-and-conversions/_index.md +++ b/html/dutch/net/html-extensions-and-conversions/_index.md @@ -39,6 +39,8 @@ Aspose.HTML voor .NET is niet zomaar een bibliotheek; het is een game-changer in ## HTML-extensies en conversiehandleidingen ### [Converteer HTML naar PDF in .NET met Aspose.HTML](./convert-html-to-pdf/) Converteer moeiteloos HTML naar PDF met Aspose.HTML voor .NET. Volg onze stapsgewijze handleiding en ontketen de kracht van HTML-naar-PDF-conversie. +### [HTML opslaan als PDF in C# – Complete gids met lettertypen](./save-html-as-pdf-in-c-complete-guide-with-fonts/) +Leer hoe u HTML naar PDF converteert in C# met volledige ondersteuning voor lettertypen. Volg de stapsgewijze handleiding. ### [Converteer EPUB naar afbeelding in .NET met Aspose.HTML](./convert-epub-to-image/) Leer hoe u EPUB naar afbeeldingen converteert met Aspose.HTML voor .NET. Stapsgewijze tutorial met codevoorbeelden en aanpasbare opties. ### [Converteer EPUB naar PDF in .NET met Aspose.HTML](./convert-epub-to-pdf/) @@ -48,7 +50,7 @@ Leer hoe u EPUB naar XPS converteert in .NET met Aspose.HTML voor .NET. Volg onz ### [Converteer HTML naar BMP in .NET met Aspose.HTML](./convert-html-to-bmp/) Leer hoe u HTML naar BMP converteert in .NET met Aspose.HTML voor .NET. Uitgebreide handleiding voor webontwikkelaars voor het benutten van Aspose.HTML voor .NET. ### [Converteer HTML naar DOC en DOCX in .NET met Aspose.HTML](./convert-html-to-doc-docx/) -Leer hoe u de kracht van Aspose.HTML voor .NET kunt benutten in deze stapsgewijze handleiding. Converteer moeiteloos HTML naar DOCX en breng uw .NET-projecten naar een hoger niveau. Ga vandaag nog aan de slag! +Leer de kracht van Aspose.HTML voor .NET kunt benutten in deze stapsgewijze handleiding. Converteer moeiteloos HTML naar DOCX en breng uw .NET-projecten naar een hoger niveau. Ga vandaag nog aan de slag! ### [Converteer HTML naar GIF in .NET met Aspose.HTML](./convert-html-to-gif/) Ontdek de kracht van Aspose.HTML voor .NET: een stapsgewijze handleiding voor het converteren van HTML naar GIF. Vereisten, codevoorbeelden, FAQ's en meer! Optimaliseer uw HTML-manipulatie met Aspose.HTML. ### [Converteer HTML naar JPEG in .NET met Aspose.HTML](./convert-html-to-jpeg/) @@ -69,7 +71,10 @@ Leer hoe u HTML-bestanden comprimeert naar een zip‑archief met C# en Aspose.HT Leer hoe u een HTML-document met opgemaakte tekst maakt en deze volledig naar PDF exporteert met Aspose.HTML voor .NET. ### [Maak PDF van HTML – C# Stapsgewijze handleiding](./create-pdf-from-html-c-step-by-step-guide/) Leer hoe u met Aspose.HTML voor .NET PDF's genereert vanuit HTML met een duidelijke C# stap‑voor‑stap handleiding. +### [PDF maken van HTML – Stapsgewijze handleiding voor ontwikkelaars](./create-pdf-from-html-step-by-step-guide-for-developers/) +Ontdek hoe u PDF's maakt van HTML met een gedetailleerde stap‑voor‑stap gids voor ontwikkelaars. ### [HTML opslaan als ZIP – Complete C#-tutorial](./save-html-as-zip-complete-c-tutorial/) +### [HTML opslaan als ZIP – Complete gids](./save-html-as-zip-in-c-complete-guide/) ### [HTML opslaan naar ZIP in C# – Volledig In‑Memory voorbeeld](./save-html-to-zip-in-c-complete-in-memory-example/) Leer hoe u HTML-inhoud in het geheugen comprimeert en opslaat als ZIP-bestand met Aspose.HTML voor .NET in C#. diff --git a/html/dutch/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/dutch/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..1a3959285 --- /dev/null +++ b/html/dutch/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,210 @@ +--- +category: general +date: 2026-02-27 +description: Maak snel een PDF van HTML met een volledig C#‑voorbeeld. Leer hoe je + HTML naar PDF converteert, HTML opslaat als PDF en HTML exporteert naar PDF met + best‑practice‑instellingen. +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: nl +og_description: Maak PDF van HTML in C# met een kant‑klaar voorbeeld. Deze gids leidt + je door het converteren van HTML naar PDF, het opslaan van HTML als PDF en het exporteren + van HTML naar PDF. +og_title: PDF maken van HTML – Complete C# Tutorial +tags: +- C# +- PDF +- HTML +title: PDF maken van HTML – Stapsgewijze gids voor ontwikkelaars +url: /nl/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +page? Not present. + +Now produce final content. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF maken vanuit HTML – Complete C# Tutorial + +Heb je ooit **PDF maken vanuit HTML** moeten doen, maar wist je niet welke API‑aanroepen je moet gebruiken? Je bent niet de enige. Of je nu een rapportagedashboard, een factuurgenerator of een static site exporter bouwt, HTML omzetten naar een PDF is een veelvoorkomende eis voor moderne web‑centrische apps. + +In deze tutorial lopen we een **volledig, uitvoerbaar C#‑voorbeeld** stap voor stap door dat laat zien hoe je **HTML naar PDF converteert**, render‑opties configureert voor scherpe output, en uiteindelijk **HTML als PDF opslaat** op schijf. Aan het einde heb je een solide, productie‑klaar patroon voor **HTML exporteren naar PDF** dat je in elk .NET‑project kunt gebruiken. + +## Wat je leert + +- Hoe je een lokaal HTML‑bestand laadt met `HTMLDocument`. +- Welke render‑opties het gewicht van letters, de gladheid van afbeeldingen en tekst‑hinting verbeteren. +- De exacte aanroep om **HTML naar PDF te exporteren** met één `Save`‑methode. +- Tips voor het omgaan met grote documenten, het debuggen van veelvoorkomende valkuilen en het verifiëren van het resultaat. +- Een volledige copy‑and‑paste code‑voorbeeld dat je vandaag nog kunt uitvoeren. + +### Vereisten + +- .NET 6+ (of .NET Framework 4.7+). De API die we gebruiken werkt op beide. +- Een referentie naar de hypothetische `HtmlToPdfLib` (vervang door de naam van jouw eigen bibliotheek). +- Een `input.html`‑bestand geplaatst in een map die je beheert (we noemen het `YOUR_DIRECTORY`). + +Als je deze onderdelen al hebt, duiken we erin — geen extra setup nodig. + +## Stap 1: Laad het HTML‑document om **PDF maken vanuit HTML** + +Het eerste wat je nodig hebt is een `HTMLDocument`‑instantie die naar het bronbestand wijst. Beschouw het als het openen van een notitieboek voordat je begint te schrijven — zonder document is er niets om te renderen. + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **Waarom dit belangrijk is:** Het vroeg laden van het HTML‑bestand stelt de bibliotheek in staat de DOM te parseren, CSS op te lossen en afbeeldingen voor te laden. Het overslaan van deze stap of het voeden van slecht gevormde HTML leidt vaak tot lege pagina’s tijdens **html to pdf conversion**. + +## Stap 2: Configureer render‑opties voor **HTML naar PDF Conversie** + +Render‑opties zijn de geheime saus die een eenvoudige PDF omtovert tot een professioneel uitziend document. Hier schakelen we vetgedrukte lettertypen, antialiasing voor afbeeldingen en hinting voor tekst in — functies die de meeste ontwikkelaars over het hoofd zien maar die de visuele getrouwheid dramatisch verbeteren. + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **Pro tip:** Als je werkt met een merk‑specifiek lettertype, stel dan `FontFamily` in binnen `pdfOptions`. Dit voorkomt een terugval op generieke lettertypen tijdens **convert HTML to PDF**. + +## Stap 3: Sla het bestand op en **Export HTML naar PDF** + +Nu het document geladen is en de opties zijn afgestemd, is de laatste stap één regel die de PDF naar schijf schrijft. De `Save`‑methode voert intern de **html to pdf conversion** uit, waarbij alle render‑aanpassingen die we hebben gedefinieerd worden toegepast. + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **Wat je zou moeten zien:** Het openen van `output.pdf` in een willekeurige viewer toont de oorspronkelijke HTML‑lay‑out, met vetgedrukte koppen, vloeiende afbeeldingen en scherpe tekst. Als je ontbrekende stijlen opmerkt, controleer dan of je CSS‑bestanden bereikbaar zijn ten opzichte van `input.html`. + +![voorbeeld van pdf maken vanuit html](/images/create-pdf-from-html.png "Schermafbeelding van de gegenereerde PDF – pdf maken vanuit html") + +*De bovenstaande schermafbeelding (alt‑tekst: “voorbeeld van pdf maken vanuit html”) toont een gerenderde PDF die de oorspronkelijke HTML‑styling behoudt.* + +## Veelvoorkomende valkuilen bij het **HTML naar PDF Converteren** + +Zelfs met een eenvoudige flow lopen ontwikkelaars vaak tegen problemen aan. Hieronder staan de drie meest voorkomende issues en hoe je ze kunt vermijden. + +### 1. Ontbrekende bronnen (afbeeldingen, CSS, lettertypen) + +Als je HTML externe assets via relatieve paden verwijst, kan de converter ze mogelijk niet vinden. Gebruik altijd absolute paden of stel een basis‑URL in: + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. Grote documenten veroorzaken time‑outs + +Bij multi‑page rapporten moet je de time‑out‑instelling van de bibliotheek verhogen: + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. Lettertype‑substitutie leidt tot onverwachte weergave + +Specificeer de exacte lettertype‑familie die je nodig hebt: + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +Deze zaken vroegtijdig aanpakken bespaart je frustrerende debug‑sessies tijdens **save HTML as PDF**‑operaties. + +## Geavanceerd: Een voorpagina toevoegen vóór je **HTML naar PDF Exporteert** + +Soms heb je een aangepaste voorpagina nodig — bijvoorbeeld een titelpagina met een logo. Je kunt een eenvoudig HTML‑fragment vóór het hoofd‑document plaatsen: + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **Waarom je dit zou doen:** Een voorpagina direct in HTML toevoegen houdt de PDF‑generatie‑pipeline simpel, zonder post‑processing tools zoals iText of PdfSharp. + +## Het resultaat programmatically verifiëren + +Als je moet aantonen dat de PDF correct is gegenereerd (bijv. in CI‑pipelines), kun je de bestandsgrootte of het aantal pagina’s inspecteren: + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +Een niet‑nul paginacount bevestigt dat de **convert HTML to PDF** stap geslaagd is. + +## Samenvatting & Volgende stappen + +We hebben zojuist een **volledig, end‑to‑end voorbeeld** doorlopen van hoe je **PDF maken vanuit HTML** in C# uitvoert. De flow is: + +1. Laad de bron‑HTML (`HTMLDocument`). +2. Fijn‑afstellen van rendering met `PdfRenderingOptions`. +3. Roep `Save` aan om **HTML naar PDF te exporteren**. + +Vanaf hier kun je verder gaan met: + +- **Batchverwerking**: Loop over een map met HTML‑bestanden en genereer PDF’s in bulk. +- **Dynamische HTML**: Gebruik een Razor‑view‑engine om HTML on‑the‑fly te genereren vóór conversie. +- **Beveiliging**: Sandbox het conversie‑proces als je door gebruikers geleverde HTML accepteert (voorkomt script‑injectie). + +Voel je vrij om met verschillende opties te experimenteren — misschien overschakelen naar `PdfA`‑compliance voor archiveringsdoeleinden, of JavaScript embedden voor interactieve PDF’s. Het kernpatroon blijft hetzelfde, en je hebt nu een betrouwbare basis voor elke **save HTML as PDF**‑vereiste. + +--- + +*Happy coding! Als je tegen eigenaardigheden aanloopt, laat dan een reactie achter of bekijk de GitHub‑issues‑pagina van de bibliotheek. De community deelt graag tweaks die **html to pdf conversion** nog soepeler maken.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/dutch/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/dutch/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..bb6175813 --- /dev/null +++ b/html/dutch/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,270 @@ +--- +category: general +date: 2026-02-27 +description: Bewaar HTML als PDF in C# snel met Aspose.HTML. Leer hoe je HTML naar + PDF kunt converteren, PDF kunt genereren vanuit HTML met aangepaste lettertypen + en opmaak in slechts een paar stappen. +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: nl +og_description: Sla HTML snel op als PDF in C# met Aspose.HTML. Deze tutorial laat + zien hoe je HTML naar PDF converteert, PDF genereert vanuit HTML en aangepaste lettertypen + toepast. +og_title: HTML opslaan als PDF in C# – Complete gids met lettertypen +tags: +- csharp +- pdf +- html +title: HTML opslaan als PDF in C# – Complete gids met lettertypen +url: /nl/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML opslaan als PDF in C# – Complete gids met lettertypen + +Heb je ooit **HTML als PDF** moeten opslaan vanuit een C#-applicatie, maar wist je niet welke bibliotheek je moest kiezen? Je bent niet de enige. Veel ontwikkelaars lopen tegen dit probleem aan wanneer ze facturen, rapporten of afdrukbare bonnen direct vanuit webinhoud willen verzenden. + +Het goede nieuws? Met Aspose.HTML kun je **HTML naar PDF converteren**, **PDF genereren vanuit HTML**, en zelfs **PDF maken met lettertypen** in een handvol regels. In deze tutorial lopen we het volledige proces door, leggen we uit waarom elke instelling belangrijk is, en geven we je een kant‑klaar voorbeeld. + +## Wat je zult leren + +- Hoe je een lokaal of extern HTML‑bestand laadt in C# +- Welke render‑opties je vet/italic lettertypen, anti‑aliasing en tekst‑hinting geven +- Hoe je het resultaat opslaat als een PDF‑bestand op schijf +- Tips voor het omgaan met aangepaste lettertypen en veelvoorkomende valkuilen + +Geen voorafgaande ervaring met Aspose.HTML is vereist—alleen een .NET‑ontwikkelomgeving (Visual Studio 2022 of later) en het Aspose.HTML for .NET NuGet‑pakket. + +## Vereisten + +| Vereiste | Waarom het belangrijk is | +|----------|--------------------------| +| .NET 6.0 of later | Biedt de runtime voor Aspose.HTML | +| Aspose.HTML for .NET (NuGet) | De bibliotheek die het zware werk doet | +| Een voorbeeld HTML‑bestand (`sample.html`) | Onze broninhoud die wordt omgezet | +| Basis C#‑kennis | Om de code‑fragmenten te begrijpen | + +Als je die hebt, laten we erin duiken. + +## Stap 1: Installeer Aspose.HTML via NuGet + +Open je project in Visual Studio, klik met de rechtermuisknop op **Dependencies** en kies **Manage NuGet Packages**. Zoek naar `Aspose.HTML` en klik op **Install**. + +```powershell +dotnet add package Aspose.HTML +``` + +> **Pro tip:** Gebruik de nieuwste stabiele versie (vanaf 2026‑02‑27 is dat 23.11) om de nieuwste render‑verbeteringen te krijgen. + +## Stap 2: Laad het bron‑HTML‑document + +Het eerste wat we nodig hebben is een `HTMLDocument`‑object dat naar ons bestand wijst. Deze klasse parseert de markup, lost CSS op en maakt alles klaar voor rendering. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Waarom deze stap?** +> Het laden van de HTML in een `HTMLDocument` scheidt de parse‑fase van de render‑fase, waardoor je de DOM kunt inspecteren of runtime‑aanpassingen kunt doen voordat je daadwerkelijk de PDF maakt. + +## Stap 3: Configureer PDF‑render‑opties + +Aspose.HTML geeft je fijnmazige controle over hoe de uiteindelijke PDF eruitziet. In dit voorbeeld schakelen we vet + italic lettertype‑stijlen in, anti‑aliasing voor soepelere graphics, en tekst‑hinting voor scherpere low‑dpi output. + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### Waarom deze instellingen? + +- **`FontStyle`** – Combineert eventuele ``‑ of ``‑tags met het basislettertype, zodat de PDF de oorspronkelijke opmaak behoudt. +- **`UseAntialiasing`** – Vermindert gekartelde randen op grafieken, pictogrammen of andere gerasterde inhoud. +- **`UseHinting`** – Lijnt de glyph‑contouren uit op pixelrasters, wat vooral nuttig is wanneer de PDF op apparaten met lage resolutie wordt bekeken. + +Als je aangepaste lettertypen nodig hebt (bijv. een corporate brand‑lettertype), plaats dan de `.ttf`‑bestanden in een map en stel `pdfRenderOptions.FontProvider` overeenkomstig in. Dat is een heel eigen onderwerp, maar het basisidee is: + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## Stap 4: Render het HTML‑document naar PDF + +Nu combineren we het document en de opties, en laten we Aspose.HTML het uitvoerbestand schrijven. + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +> **Verwacht resultaat:** +> Een PDF die de lay‑out van `sample.html` weerspiegelt, met alle koppen in vet, benadrukte tekst in italic, en eventuele ingesloten afbeeldingen zonder gekartelde randen. + +## Stap 5: Verifiëren en aanpassen (optioneel) + +### Snel verificatiescript + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +Als de PDF er niet goed uitziet, overweeg dan deze veelvoorkomende aanpassingen: + +| Probleem | Waarschijnlijke oorzaak | Oplossing | +|----------|--------------------------|-----------| +| Ontbrekende lettertypen | Lettertype niet ingebed of niet gevonden | Gebruik `FontProvider.AddFont` en zorg dat het lettertype‑bestand toegankelijk is | +| Afbeeldingen zijn onscherp | Anti‑aliasing uitgeschakeld | Stel `UseAntialiasing = true` in | +| Tekst ziet er te dun uit op scherm | Hinting uitgeschakeld | Schakel `UseHinting = true` in | +| Layoutverschuiving bij pagina‑einde | CSS `page-break`‑regels genegeerd | Voeg expliciete `page-break-before/after` toe in je HTML/CSS | + +## Volledig werkend voorbeeld + +Hieronder staat het complete programma dat je kunt kopiëren‑plakken in een nieuwe console‑app. Het bevat alle using‑directives, foutafhandeling en commentaar voor duidelijkheid. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +Voer het project uit (`dotnet run`), en je zou het succesbericht moeten zien gevolgd door een nieuw aangemaakte `output.pdf`. + +## Veelgestelde vragen & randgevallen + +### Kan ik **HTML naar PDF** converteren vanaf een URL in plaats van een lokaal bestand? + +Zeker. Vervang gewoon het bestandspad door een URL‑string: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +### Hoe zit het met **grote HTML‑bestanden** of **meerdere pagina's**? + +Aspose.HTML streamt de inhoud, zodat het geheugenverbruik redelijk blijft. Als je elke HTML‑sectie op een aparte PDF‑pagina wilt, voeg dan handmatige pagina‑eindes toe in de HTML: + +```html +
+``` + +### Werkt dit met **.NET Core** en **.NET 7**? + +Ja. De bibliotheek is cross‑platform; zorg er alleen voor dat je een compatibel framework target (net6.0, net7.0, etc.) en installeer het bijbehorende NuGet‑pakket. + +### Hoe embed ik lettertypen voor volledige PDF‑portabiliteit? + +Stel `pdfRenderOptions.FontProvider` in zoals eerder getoond, en schakel ook lettertype‑embedding in: + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +## Visueel voorbeeld + +![voorbeeld html opslaan als pdf](example.png){alt="voorbeeld html opslaan als pdf"} + +*De screenshot toont de gegenereerde PDF geopend in Adobe Acrobat, waarbij vet/italic stijlen en vloeiende afbeeldingen behouden blijven.* + +## Conclusie + +We hebben alles behandeld wat je nodig hebt om **HTML als PDF** op te slaan met C#. Van het laden van de markup, het configureren van render‑opties, tot het schrijven van de uiteindelijke PDF, het proces is eenvoudig en zeer aanpasbaar. + +Door deze gids te volgen kun je ook **HTML naar PDF converteren**, **PDF genereren vanuit HTML**, en **PDF maken met lettertypen** voor elke rapportage‑ of documentgeneratiescenario. Voel je vrij om te experimenteren met extra opties—watermerken, encryptie, of aangepaste paginagroottes—want Aspose.HTML geeft je die flexibiliteit. + +**Volgende stappen** die je kunt verkennen: + +- Gebruik de `PdfSaveOptions`‑klasse om de PDF‑versie of compressieniveau in te stellen. +- Combineer meerdere `HTMLDocument`‑instanties tot één PDF voor rapporten met meerdere secties. +- Integreer deze workflow in een ASP.NET Core‑API zodat je webservice PDFs op aanvraag kan retourneren. + +Heb je vragen over randgevallen of heb je hulp nodig bij het afstemmen van de render‑pipeline? Laat een reactie achter hieronder, en happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/dutch/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/dutch/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..85041d8d0 --- /dev/null +++ b/html/dutch/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,249 @@ +--- +category: general +date: 2026-02-27 +description: HTML opslaan als ZIP met C# ZipArchive – stapsgewijs voorbeeld met een + aangepaste resourcehandler, plus tips over hoe je HTML naar ZIP exporteert en een + zip‑archief maakt met C#‑code. +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: nl +og_description: HTML opslaan als ZIP met C# ZipArchive. Leer hoe je HTML naar ZIP + exporteert met een volledig voorbeeld, een aangepaste resourcehandler en best practices. +og_title: HTML opslaan als ZIP in C# – Complete gids +tags: +- C# +- ZipArchive +- HTML export +title: HTML opslaan als ZIP in C# – Complete gids +url: /nl/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML opslaan als ZIP in C# – Complete gids + +Heb je ooit **HTML als ZIP moeten opslaan** maar wist je niet welke .NET‑klassen je moest gebruiken? Je bent niet de enige—veel ontwikkelaars lopen tegen dit probleem aan wanneer ze een webpagina willen bundelen met zijn assets voor offline gebruik of distributie. Het goede nieuws? Met de ingebouwde `System.IO.Compression.ZipArchive` kun je het in een handvol regels doen, en krijg je ook een nette manier om te bepalen hoe elke resource wordt geschreven. + +In deze tutorial lopen we een **volledig, uitvoerbaar voorbeeld** door dat precies laat zien hoe je een HTML‑document exporteert naar een ZIP‑bestand, met behulp van een aangepaste `ResourceHandler` om elke asset naar het archief te streamen. Onderweg voegen we een paar **c# ziparchive example**‑fragmenten toe, bespreken we **how to export html to zip** in real‑world scenario's, en wijzen we op de subtiele verschillen wanneer je **create zip archive c#**‑programma's wilt maken die robuust moeten zijn. + +> **Voorvereisten** – Je hebt .NET 6+ (of .NET Core 3.1) en een referentie naar de bibliotheek die `HTMLDocument`, `HTMLSaveOptions` en `ResourceHandler` levert nodig. Als je Aspose.HTML of een vergelijkbaar pakket gebruikt, voeg het dan toe via NuGet. Geen andere tools van derden zijn vereist. + +--- + +## Wat deze tutorial behandelt + +- Een **ZipArchive** opzetten die het HTML‑bestand en de gekoppelde resources ontvangt. +- Een **custom resource handler** (`ZipHandler`) implementeren die elke resource‑stream naar het archief leidt. +- **HTMLSaveOptions** gebruiken om alles samen te brengen en daadwerkelijk **HTML als ZIP opslaan**. +- Veelvoorkomende valkuilen bij paden, dubbele items en grote assets. +- Tips om de oplossing uit te breiden—bijvoorbeeld een manifest‑bestand toevoegen of de ZIP versleutelen. + +Aan het einde heb je een zelfstandige methode die je in elk C#‑project kunt opnemen om **html als zip op te slaan** met vertrouwen. + +--- + +## Stap 1: Voeg de vereiste namespaces toe + +Voordat er code wordt uitgevoerd, zorg je ervoor dat de compiler de compressieklassen en de HTML‑bibliotheek die je gebruikt kent. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*Waarom dit belangrijk is:* `System.IO.Compression` levert `ZipArchive`, terwijl de `Aspose.Html`‑namespaces `HTMLDocument`, `HTMLSaveOptions` en de `ResourceHandler`‑basisklasse die we gaan uitbreiden beschikbaar stellen. Als je een andere HTML‑engine gebruikt, zoek dan naar vergelijkbare types. + +--- + +## Stap 2: Maak een aangepaste Resource Handler (Primary Keyword in Action) + +Het hart van **HTML als ZIP opslaan** is de engine vertellen waar elke externe resource (afbeeldingen, CSS, scripts) naartoe moet. Door van `ResourceHandler` te erven krijgen we controle over de stream die de gegevens ontvangt. + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**Belangrijke punten** + +- `info.Uri` is de relatieve URL die de HTML‑engine probeert te schrijven. Het gebruiken als entry‑naam behoudt de mapstructuur binnen de ZIP. +- `CreateEntry` maakt automatisch alle benodigde mappen aan; je hoeft ze niet zelf te beheren. +- Het retourneren van de geopende stream laat de engine de gegevens direct streamen—geen tijdelijke bestanden, geen extra geheugen‑kopieën. + +--- + +## Stap 3: Initialiseer de ZipArchive + +Nu starten we een `ZipArchive` in **Update**‑modus. Deze modus laat ons entries toevoegen terwijl we gaan, en ook bestaande entries vervangen als je de code meerdere keren uitvoert. + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*Pro tip:* Gebruik `FileMode.Create` om een eerder bestand te overschrijven, of schakel over naar `FileMode.OpenOrCreate` als je wilt toevoegen aan een bestaand archief. Ook, wikkel de `ZipArchive` in een `using`‑statement—dit garandeert dat het archief correct wordt vrijgegeven en de bestands‑handle wordt gesloten. + +--- + +## Stap 4: Laad het HTML‑document dat je wilt exporteren + +Hier geef je de bibliotheek het bron‑HTML‑bestand aan. Het document kan verwijzen naar CSS, afbeeldingen of JavaScript‑bestanden die zich naast het bestand bevinden. + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +Als je HTML relatieve URL's bevat, zorg er dan voor dat de werkmap van het proces overeenkomt met de map waarin die assets staan. Anders kan de engine ze niet vinden, en zal de ZIP die bestanden missen. + +--- + +## Stap 5: Configureer Save‑opties – Het echte “HTML als ZIP opslaan” moment + +We koppelen nu de `ZipHandler` aan de `HTMLSaveOptions`. Het instellen van `SaveFormat` op `ZIP` vertelt de bibliotheek alles te bundelen, terwijl onze handler bepaalt waar elk onderdeel naartoe gaat. + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*Waarom dit belangrijk is:* Zonder het instellen van `ResourceHandler` zou de bibliotheek terugvallen op het schrijven van resources naar het bestandssysteem, wat het doel van **how to export html to zip** in één archief ondermijnt. + +--- + +## Stap 6: Voer de opslaan‑operatie uit + +Vraag tenslotte het document om zichzelf op te slaan met de opties die we zojuist hebben opgebouwd. De bibliotheek zal `ZipHandler.HandleResource` aanroepen voor elke externe asset die het tegenkomt. + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +Wanneer het `using`‑blok voor `zipArchive` eindigt, wordt het archief afgerond en is het bestand klaar voor distributie. + +--- + +## Volledig werkend voorbeeld (Alle stappen gecombineerd) + +Hieronder staat het volledige programma dat je kunt copy‑pasten in een console‑app. Het demonstreert een **c# ziparchive example** die **creates zip archive c#**‑stijl, en beantwoordt volledig **how to export html to zip**. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**Verwacht resultaat:** Nadat je het programma hebt uitgevoerd, zal `output.zip` `index.html` bevatten (of de naam die je hebt geconfigureerd) plus elke afbeelding, stylesheet en script die door de oorspronkelijke pagina worden gerefereerd, waarbij de mapstructuur behouden blijft. Open de ZIP, pak uit, en dubbel‑klik op `index.html`—de pagina moet exact renderen zoals online, maar nu is het een draagbaar pakket. + +--- + +## Veelvoorkomende randgevallen & hoe ze op te lossen + +| Situation | Why it Happens | Suggested Fix | +|-----------|----------------|---------------| +| **Duplicaat resource‑namen** (bijv. twee afbeeldingen met dezelfde bestandsnaam in verschillende mappen) | `CreateEntry` zal een `InvalidOperationException` werpen als de exacte entry‑naam al bestaat. | Voorzie de entry van een prefix met het relatieve pad (`info.Uri` doet dit al) of reinig de namen handmatig voordat je de entry maakt. | +| **Grote binaire assets** (video's, hoge‑resolutie afbeeldingen) | Direct streamen naar de zip is prima, maar de standaard buffer‑grootte kan leiden tot hoog geheugenverbruik. | Override `HandleResource` om de geretourneerde stream te wikkelen in een `BufferedStream` met een bescheiden buffer (bijv. 64 KB). | +| **Ontbrekende resources** | Als de HTML een gebroken link bevat, ontvangt de handler een verzoek voor een bestand dat niet bestaat, wat leidt tot een lege entry. | Controleer `File.Exists` vóór het maken van de entry, of log een waarschuwing zodat je weet dat er iets ontbreekt. | +| **Unicode filenames** | Sommige oudere ZIP‑tools behandelen UTF‑8 entry‑namen onjuist. | Zorg ervoor dat je target .NET 6+, dat standaard UTF‑8 schrijft. Als je legacy‑compatibiliteit nodig hebt, stel `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);` in. | +| **Een manifest nodig** (lijst van bestanden in de zip) | Consumenten willen soms een `manifest.json` voor validatie. | Na de hoofd‑save, maak een nieuwe entry `"manifest.json"` aan en schrijf een JSON‑lijst van `zipArchive.Entries`. | + +--- + +## Pro‑tips voor productie‑klare **HTML als ZIP opslaan** implementaties + +1. **Valideer de output** – Na het opslaan, open de ZIP programmatisch en controleer dat `index.html` bestaat en dat elke entry's `Length` > 0 is. Dit vangt stille fouten vroeg op. +2. **Paralleliseer grote assets** – Als je tientallen megabytes aan afbeeldingen hebt, overweeg dan om `HandleResource`‑calls in een `Task`‑pool te queue'en en naar het archief te schrijven in parallel (maar nog steeds rekening houdend met de single‑writer‑aard van `ZipArchive`). +3. **Compressie verstandig gebruiken** – `ZipArchive` gebruikt standaard Deflate. Voor al gecomprimeerde bestanden (JPEG, PNG) kun je `entry.CompressionLevel = CompressionLevel.NoCompression` instellen om de operatie te versnellen. +4. **Beveiliging** – If the ZIP + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/dutch/net/working-with-html-documents/_index.md b/html/dutch/net/working-with-html-documents/_index.md index 36eb73e4a..31a0cd437 100644 --- a/html/dutch/net/working-with-html-documents/_index.md +++ b/html/dutch/net/working-with-html-documents/_index.md @@ -37,10 +37,15 @@ 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/) + ### [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. +### [HTML opslaan als ZIP in C# – Complete gids met aangepaste resourcehandler](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) + +Leer hoe u HTML-bestanden opslaat als ZIP‑archief in C# met een aangepaste resourcehandler. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/dutch/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/dutch/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..529743ea4 --- /dev/null +++ b/html/dutch/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-02-27 +description: HTML opslaan als ZIP in C# met een aangepaste resourcehandler en een + ZIP‑archief maken in C#. Volg deze stapsgewijze tutorial om HTML en de bijbehorende + assets te bundelen. +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: nl +og_description: Sla HTML op als ZIP in C# met een aangepaste resourcehandler. Leer + hoe je een ZIP‑archief maakt in C# en resources moeiteloos embed. +og_title: HTML opslaan als ZIP in C# – Volledige tutorial +tags: +- Aspose.HTML +- C# +- ZIP +title: HTML opslaan als ZIP in C# – Complete gids met aangepaste resourcehandler +url: /nl/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML opslaan als ZIP in C# – Complete gids met Custom Resource Handler + +Ever wondered how to **save HTML as ZIP** in C# without pulling your hair out? You're not the only one—many developers hit a wall when they need to ship an HTML page together with images, CSS, or JavaScript files. The good news? With Aspose.HTML you can do it in a few tidy steps, and a **custom resource handler** makes the process painless. + +In this tutorial we’ll walk through everything you need to know: from installing the library, writing a handler that streams resources straight into a **create ZIP archive in C#**, to verifying the final package. By the end you’ll have a ready‑to‑use solution you can drop into any .NET project. + +![Voorbeeld van HTML opslaan als ZIP](/images/save-html-as-zip.png "Diagram dat laat zien hoe HTML wordt opgeslagen als een ZIP‑bestand") + +## HTML opslaan als ZIP – Wat deze gids behandelt + +We'll cover the entire pipeline: + +1. **Prerequisites** – de minimale tools en pakketten die je nodig hebt. +2. **Custom resource handler** – waarom je er één nodig hebt en hoe je deze implementeert. +3. **Creating a ZIP archive in C#** – met `System.IO.Compression`. +4. **Configuring Aspose.HTML save options** om naar de handler te wijzen. +5. **Running the code** en het controleren van de output. + +If you’re comfortable with basic C# syntax and have Visual Studio (or VS Code) installed, you’re ready to dive in. No external documentation required—everything is right here. + +--- + +## Stap 1: Het project opzetten en Aspose.HTML installeren + +Before we write any code, make sure your project can reference the Aspose.HTML library. + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*Pro tip:* Het nieuwste NuGet‑pakket (vanaf februari 2026) richt zich op .NET 6+, dus je kunt het moderne SDK‑style project gebruiken zonder je zorgen te maken over verouderde frameworks. + +Once the package is restored, open `Program.cs`. We'll replace the default content with the full example later, but for now just keep the file open. + +## Een Custom Resource Handler implementeren + +### Waarom een Custom Resource Handler? + +When Aspose.HTML saves an HTML document as a ZIP package, it needs to fetch every external resource (images, fonts, scripts) and write them somewhere. The default behavior writes them to a temporary folder on disk. By providing a **custom resource handler**, you tell the library exactly where each resource should go—in our case, directly into the ZIP archive. This avoids extra I/O, keeps everything tidy, and gives you full control over naming. + +### Code: De Handler‑klasse + +Create a new class file called `MyHandler.cs` (or place it inside `Program.cs` if you prefer a single‑file demo). + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**Uitleg:** +* `ResourceHandler` is een abstracte klasse van Aspose.HTML die je in staat stelt het ophalen van bronnen te onderscheppen. +* Door de `Stream` terug te geven die verkregen wordt via `ZipArchiveEntry.Open()`, geven we de bibliotheek een schrijfbare pijp rechtstreeks naar het ZIP‑bestand. Geen tijdelijke bestanden, geen extra opruimen. + +## Maak het ZIP‑archief in C# + +Now that the handler is ready, we need a place for it to write. The .NET `ZipArchive` class does the heavy lifting. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### Wat dit doet + +1. **Maakt een in‑memory HTML‑document** met een verwijzing naar `logo.png`. +2. **Opent een `FileStream`** die `output.zip` zal worden. +3. **Wijst de `ZipArchive`** toe aan het statische veld in `MyHandler`. +4. **Stelt `HTMLSaveOptions`** in op `SaveFormat.ZIP` en koppelt onze handler. +5. **Roept `document.Save` aan** – Aspose.HTML parseert de HTML, haalt `logo.png` op, en streamt deze naar het archief via `MyHandler`. + +Because the handler uses the resource URI (`logo.png`) as the entry name, the resulting ZIP contains a file named exactly that, preserving the original relative path. + +## Configureer Save‑opties voor het ZIP‑pakket + +The `HTMLSaveOptions` object is where you tell Aspose.HTML **how** to package the output. Apart from the `ResourceHandler`, you can tweak a few useful properties: + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*Waarom `EnableCompression` belangrijk is?* +If you’re dealing with large images, enabling compression can shrink the final archive by up to 70 %. However, for already‑compressed PNGs the gain is modest, so you might turn it off to speed up the save operation. + +## Voer de code uit en controleer de output + +Compile and run the program: + +```bash +dotnet run +``` + +You should see the success message printed to the console. Navigate to the directory printed and open `output.zip`. Inside you’ll find: + +- `index.html` – het opgeslagen HTML‑bestand. +- `logo.png` – de afbeelding die in de markup werd verwezen. + +Open `index.html` direct vanuit de ZIP (de meeste bestandsverkenners van besturingssystemen laten je een voorbeeld zien) en je ziet de koptekst en afbeelding precies zoals in de oorspronkelijke string weergegeven. + +**Randgevallen om te overwegen** + +| Situatie | Wat te doen | +|-----------|------------| +| De HTML verwijst naar een **remote URL** (bijv. `https://example.com/style.css`) | De handler ontvangt nog steeds een `ResourceInfo.Uri`. Zorg ervoor dat je omgeving de URL kan bereiken, of download de bron vooraf en pas de HTML aan naar een lokaal pad. | +| Je hebt een **maphiërarchie** nodig binnen de ZIP (bijv. `images/logo.png`) | Pas `HandleResource` aan om een mapnaam voor te voegen: `var entry = ZipArchive.CreateEntry($"assets/{info.Uri}");` | +| De bron **kan niet worden geladen** (404) | De handler wordt aangeroepen, maar de stream ontvangt nul bytes. Plaats de save‑aanroep in een `try/catch` en inspecteer `info.Status` als je aangepaste foutafhandeling nodig hebt. | + +## Samenvatting: HTML opslaan als ZIP in één compacte stroom + +- **Primair doel:** Een HTML‑pagina en al zijn externe assets bundelen in één ZIP‑bestand met C#. +- **Belangrijke tools:** Aspose.HTML (`HTMLDocument`, `HTMLSaveOptions`), `System.IO.Compression.ZipArchive`, en een **custom resource handler**. +- **Resultaat:** Een draagbare `output.zip` die kan worden verzonden, opgeslagen of over het netwerk kan worden gestuurd, en later kan worden uitgepakt zonder verlies van resource‑links. + +## Wat nu? De workflow uitbreiden + +Now that you’ve mastered **save HTML as ZIP**, you might want to explore related scenarios: + +- **HTML opslaan als PDF** – vervang `SaveFormat.ZIP` door `SaveFormat.PDF` en pas de opties dienovereenkomstig aan. +- **Lettertypen insluiten** – gebruik `@font-face` in je HTML en laat de handler de lettertypebestanden vastleggen. +- **Batchverwerking** – loop over een collectie HTML‑strings, hergebruik dezelfde `ZipArchive` om een multi‑document pakket te maken. + +All of these builds on the same **custom resource handler** pattern and the **create ZIP archive in C#** technique you just learned. + +### Slotgedachten + +You’ve just seen how easy it is to **save HTML as ZIP** in C# when you let Aspose.HTML + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/english/net/generate-jpg-and-png-images/_index.md b/html/english/net/generate-jpg-and-png-images/_index.md index 3cc4b6acd..4f1c8dcd2 100644 --- a/html/english/net/generate-jpg-and-png-images/_index.md +++ b/html/english/net/generate-jpg-and-png-images/_index.md @@ -34,7 +34,7 @@ Creating images is just the first step. Aspose.HTML for .NET allows you to furth ## Integrating with .NET Projects -Integrating Aspose.HTML for .NET into your .NET projects is hassle-free. The library is designed to seamlessly blend with your existing code, making it an excellent choice for developers. You can use it to enhance your applications with image generation capabilities effortlessly. +Integrating Aspose.HTML for .NET into your .NET projects is hassle‑free. The library is designed to seamlessly blend with your existing code, making it an excellent choice for developers. You can use it to enhance your applications with image generation capabilities effortlessly. ## Generate JPG and PNG Images Tutorials ### [Generate JPG Images by ImageDevice in .NET with Aspose.HTML](./generate-jpg-images-by-imagedevice/) @@ -45,6 +45,8 @@ Learn to use Aspose.HTML for .NET to manipulate HTML documents, convert HTML to Learn how to enable antialiasing for sharper PNG/JPG output when converting DOCX files using Aspose.HTML for .NET. ### [convert docx to png – create zip archive c# tutorial](./convert-docx-to-png-create-zip-archive-c-tutorial/) Learn how to convert DOCX files to PNG images and package them into a ZIP archive using C# and Aspose.HTML. +### [Create PNG from HTML in C# – Step‑by‑Step Guide](./create-png-from-html-in-c-step-by-step-guide/) +Learn how to create PNG images from HTML using C# and Aspose.HTML in a step‑by‑step tutorial. ## Conclusion diff --git a/html/english/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/english/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..6aefdf611 --- /dev/null +++ b/html/english/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-02-27 +description: Create PNG from HTML quickly using Aspose.HTML in C#. Learn to render + HTML to image, set image width height, and convert HTML to PNG in minutes. +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: en +og_description: Create PNG from HTML with Aspose.HTML. This guide shows how to render + HTML to image, set image width height, and convert HTML to PNG efficiently. +og_title: Create PNG from HTML in C# – Complete Tutorial +tags: +- Aspose.HTML +- C# +- Image Rendering +title: Create PNG from HTML in C# – Step‑by‑Step Guide +url: /net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Create PNG from HTML in C# – Complete Tutorial + +Ever needed to **create PNG from HTML** but weren’t sure which library would give you pixel‑perfect results? You're not the only one—many developers hit the same wall when they try to turn a web page into a static image for emails, reports, or thumbnails. + +The good news? With Aspose.HTML you can **render HTML to image**, control the exact dimensions, and **save HTML as PNG** with just a few lines of C#. In this tutorial we’ll walk through the entire process, from loading your HTML file to tweaking text hinting and finally writing a PNG to disk. By the end you’ll know how to **set image width height** programmatically and have a reusable snippet you can drop into any .NET project. + +## What You’ll Learn + +- How to load an HTML document using Aspose.HTML. +- The difference between `ImageRenderingOptions` and `TextOptions` and why they matter. +- How to **convert HTML to PNG** while preserving fonts, antialiasing, and underline styles. +- Tips for troubleshooting common pitfalls like missing fonts or unexpected image sizes. +- A complete, ready‑to‑run code sample that you can copy‑paste into Visual Studio. + +> **Prerequisites:** .NET 6+ (or .NET Framework 4.6.2+), Aspose.HTML for .NET installed via NuGet, and a basic understanding of C#. No other external tools are required. + +--- + +## Step 1: Load the HTML Document – Starting the PNG Creation + +First, we need an `HTMLDocument` object that points to the source file. This is the foundation for any **create PNG from HTML** operation. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*Why this step matters:* The `HTMLDocument` class parses the markup, resolves CSS, and builds a DOM that the rendering engine can later paint onto a bitmap. If the path is wrong, the subsequent **render html to image** step will throw a `FileNotFoundException`. + +--- + +## Step 2: Set Image Width Height – Controlling the Output Size + +When you **render HTML to image**, you often need a specific resolution—think of a thumbnail that must be exactly 1200 × 800 pixels. That’s where `ImageRenderingOptions` shines. + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*Pro tip:* If you omit `Width` and `Height`, Aspose.HTML will use the page’s natural size, which might be too large for email embeds. + +--- + +## Step 3: Fine‑Tune Text Rendering – Making Text Crisp + +Text on Linux often looks fuzzy unless you enable hinting. The `TextOptions` object lets you control that, ensuring the final PNG looks sharp on every platform. + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*Why hinting?* Hinting adjusts the shape of each glyph to align with the pixel grid, which is crucial when you **convert HTML to PNG** for low‑resolution displays. + +--- + +## Step 4: Combine Options and Add Styling – The Full Render Configuration + +Now we merge the image and text settings, and we also demonstrate how to apply a global font style, such as underlining every piece of text. This step is where you truly **save HTML as PNG** with custom styling. + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*Note:* `WebFontStyle` supports many flags (Bold, Italic, etc.). You can combine them using bitwise OR if you need multiple styles. + +--- + +## Step 5: Render and Save – The Moment You **Create PNG from HTML** + +With everything configured, the final call is a one‑liner that paints the DOM onto a bitmap and writes it to disk. + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +After this line runs, you’ll find `output.png` in the specified folder, exactly 1200 × 800 pixels, with antialiased graphics and hinted text. + +--- + +## Full Working Example – Paste, Run, Verify + +Below is the complete program you can compile as a console app. It includes all the using statements, error handling, and comments you need. + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**Expected result:** A file named `output.png` appears beside your executable, showing the rendered version of `sample.html`. Open it with any image viewer to confirm the dimensions and styling. + +--- + +## Common Pitfalls & How to Avoid Them + +| Issue | Symptom | Fix | +|-------|----------|-----| +| Missing fonts | Text appears as generic sans‑serif | Install the required fonts on the host machine or embed web fonts in the HTML. | +| Wrong dimensions | PNG is larger or smaller than expected | Double‑check `Width` and `Height` values in `ImageRenderingOptions`. | +| Blurry edges | No antialiasing | Ensure `UseAntialiasing = true`. | +| Linux rendering artifacts | Text looks fuzzy | Set `UseHinting = true` in `TextOptions`. | + +*Pro tip:* When you **render HTML to image** on a headless server, make sure the server has the necessary system libraries (e.g., `libgdiplus` on Linux) otherwise Aspose.HTML may fallback to a software renderer with reduced quality. + +--- + +## Extending the Solution – Next Steps + +- **Batch conversion:** Loop over a list of HTML files and call the same rendering logic to produce a gallery of PNGs. +- **Different formats:** Swap `output.png` for `output.jpg` or `output.bmp` by changing the file extension; Aspose.HTML automatically picks the right encoder. +- **Dynamic sizing:** Calculate `Width` and `Height` based on the HTML’s viewport meta tag for responsive designs. +- **Watermarking:** Use `Aspose.Html.Drawing` to overlay a logo before saving. + +These ideas let you go from a simple **create PNG from HTML** snippet to a full‑featured image generation service. + +--- + +## Conclusion + +We’ve walked through everything you need to **create PNG from HTML** using Aspose.HTML for .NET: loading the document, configuring **set image width height**, fine‑tuning text with hinting, and finally **saving HTML as PNG**. The complete code example is ready to drop into your project, and the tips above should keep you from common headaches. + +Now that you can **render HTML to image** reliably, why not experiment with different styles, batch processing, or even converting to PDF in the same pipeline? The sky’s the limit, and the code is already in your hands. + +Happy coding, and feel free to share your results or ask questions in the comments! + +![Create PNG from HTML example](/images/create-png-from-html.png "Create PNG from HTML using Aspose.HTML") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/english/net/html-extensions-and-conversions/_index.md b/html/english/net/html-extensions-and-conversions/_index.md index a50bc9ccb..2dd9c32c0 100644 --- a/html/english/net/html-extensions-and-conversions/_index.md +++ b/html/english/net/html-extensions-and-conversions/_index.md @@ -41,6 +41,8 @@ Aspose.HTML for .NET is not just a library; it's a game-changer in the world of Convert HTML to PDF effortlessly with Aspose.HTML for .NET. Follow our step-by-step guide and unleash the power of HTML-to-PDF conversion. ### [Create PDF from HTML – C# Step‑by‑Step Guide](./create-pdf-from-html-c-step-by-step-guide/) Learn how to generate PDF files from HTML using Aspose.HTML for .NET with a detailed C# step‑by‑step guide. +### [Create PDF from HTML – Step‑by‑Step Guide for Developers](./create-pdf-from-html-step-by-step-guide-for-developers/) +Create PDF from HTML using Aspose.HTML for .NET. Follow this step‑by‑step guide tailored for developers to generate PDFs efficiently. ### [Convert EPUB to Image in .NET with Aspose.HTML](./convert-epub-to-image/) Learn how to convert EPUB to images using Aspose.HTML for .NET. Step-by-step tutorial with code examples and customizable options. ### [Convert EPUB to PDF in .NET with Aspose.HTML](./convert-epub-to-pdf/) @@ -71,6 +73,8 @@ Learn how to zip HTML files in C# using Aspose.HTML, saving HTML content to a ZI Learn how to create an HTML document with styled text and export it to PDF using Aspose.HTML for .NET in this comprehensive guide. ### [Save HTML as ZIP – Complete C# Tutorial](./save-html-as-zip-complete-c-tutorial/) Learn how to save HTML files as a ZIP archive using Aspose.HTML for .NET with a complete C# example. +### [Save HTML as ZIP in C# – Complete Guide](./save-html-as-zip-in-c-complete-guide/) +Learn how to save HTML files as a ZIP archive using Aspose.HTML for .NET with a complete C# example. ### [Convert EPUB to Image in .NET with Aspose.HTML](./convert-epub-to-image/) Learn how to convert EPUB to images using Aspose.HTML for .NET. Step-by-step tutorial with code examples and customizable options. ### [Convert EPUB to PDF in .NET with Aspose.HTML](./convert-epub-to-pdf/) @@ -79,6 +83,8 @@ Learn how to convert EPUB to PDF using Aspose.HTML for .NET. This step-by-step g Learn how to convert EPUB to XPS in .NET using Aspose.HTML for .NET. Follow our step-by-step guide for effortless conversions. ### [Save HTML to ZIP in C# – Complete In‑Memory Example](./save-html-to-zip-in-c-complete-in-memory-example/) Learn how to save HTML content into a ZIP archive in memory using C# and Aspose.HTML for .NET in this step-by-step tutorial. +### [Save HTML as PDF in C# – Complete Guide with Fonts](./save-html-as-pdf-in-c-complete-guide-with-fonts/) +Learn how to save HTML as PDF in C# using Aspose.HTML, including custom font embedding and detailed step‑by‑step instructions. ## Conclusion diff --git a/html/english/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/english/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..e34e9e81c --- /dev/null +++ b/html/english/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,204 @@ +--- +category: general +date: 2026-02-27 +description: Create PDF from HTML quickly with a full C# example. Learn to convert + HTML to PDF, save HTML as PDF, and export HTML to PDF with best‑practice settings. +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: en +og_description: Create PDF from HTML in C# with a ready‑to‑run example. This guide + walks you through convert HTML to PDF, save HTML as PDF, and export HTML to PDF. +og_title: Create PDF from HTML – Complete C# Tutorial +tags: +- C# +- PDF +- HTML +title: Create PDF from HTML – Step‑by‑Step Guide for Developers +url: /net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Create PDF from HTML – Complete C# Tutorial + +Ever needed to **create PDF from HTML** but weren’t sure which API calls to use? You’re not alone. Whether you’re building a reporting dashboard, an invoice generator, or a static site exporter, turning HTML into a PDF is a frequent requirement for modern web‑centric apps. + +In this tutorial we’ll walk through a **complete, runnable C# example** that shows you how to **convert HTML to PDF**, configure rendering options for crisp output, and finally **save HTML as PDF** on disk. By the end you’ll have a solid, production‑ready pattern for **export HTML to PDF** that you can drop into any .NET project. + +## What You’ll Learn + +- How to load a local HTML file with `HTMLDocument`. +- Which rendering options improve font weight, image smoothness, and text hinting. +- The exact call to **export HTML to PDF** with a single `Save` method. +- Tips for handling large documents, debugging common pitfalls, and verifying the result. +- A full, copy‑and‑paste code sample that you can run today. + +### Prerequisites + +- .NET 6+ (or .NET Framework 4.7+). The API we use works on both. +- A reference to the hypothetical `HtmlToPdfLib` (replace with your actual library name). +- An `input.html` file placed in a folder you control (we’ll call it `YOUR_DIRECTORY`). + +If you already have those pieces, let’s dive in—no extra setup required. + +## Step 1: Load the HTML Document to **Create PDF from HTML** + +The first thing you need is an `HTMLDocument` instance that points at the source file. Think of it as opening a notebook before you start writing—without a document, there’s nothing to render. + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **Why this matters:** Loading the HTML file early allows the library to parse the DOM, resolve CSS, and preload images. Skipping this step or feeding malformed HTML often results in blank pages during **html to pdf conversion**. + +## Step 2: Configure Rendering Options for **HTML to PDF Conversion** + +Rendering options are the secret sauce that turns a plain PDF into a professional‑looking document. Here we enable bold fonts, antialiasing for images, and hinting for text—features that most developers overlook but that dramatically improve visual fidelity. + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **Pro tip:** If you’re dealing with a brand‑specific font, set `FontFamily` inside `pdfOptions` as well. This prevents fallback to generic fonts during **convert HTML to PDF**. + +## Step 3: Save the File and **Export HTML to PDF** + +Now that the document is loaded and the options are tuned, the final act is a single line that writes the PDF to disk. The `Save` method internally performs the **html to pdf conversion**, applying all the rendering tweaks we defined. + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **What you should see:** Opening `output.pdf` in any viewer will display the original HTML layout, with bold headings, smooth images, and crisp text. If you notice missing styles, double‑check that your CSS files are reachable relative to `input.html`. + +![create pdf from html example](/images/create-pdf-from-html.png "Screenshot of the generated PDF – create pdf from html") + +*The above screenshot (alt text: “create pdf from html example”) shows a rendered PDF that preserves the original HTML styling.* + +## Common Pitfalls When You **Convert HTML to PDF** + +Even with a straightforward flow, developers often run into hiccups. Below are the three most frequent issues and how to avoid them. + +### 1. Missing Resources (Images, CSS, Fonts) + +If your HTML references external assets via relative paths, the converter might not locate them. Always use absolute paths or set a base URL: + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. Large Documents Trigger Timeouts + +When dealing with multi‑page reports, increase the library’s timeout setting: + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. Font Substitution Leads to Unexpected Appearance + +Specify the exact font family you need: + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +Addressing these concerns early saves you from frustrating debugging sessions during **save HTML as PDF** operations. + +## Advanced: Adding a Cover Page Before You **Export HTML to PDF** + +Sometimes you need a custom cover—perhaps a title page with a logo. You can prepend a simple HTML snippet before the main document: + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **Why you’d do this:** Adding a cover directly in HTML keeps the PDF generation pipeline simple, avoiding post‑processing tools like iText or PdfSharp. + +## Verifying the Output Programmatically + +If you need to assert that the PDF was generated correctly (e.g., in CI pipelines), you can inspect the file size or page count: + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +A non‑zero page count confirms that the **convert HTML to PDF** step succeeded. + +## Recap & Next Steps + +We’ve just walked through a **complete, end‑to‑end example** of how to **create PDF from HTML** in C#. The flow is: + +1. Load the source HTML (`HTMLDocument`). +2. Fine‑tune rendering with `PdfRenderingOptions`. +3. Call `Save` to **export HTML to PDF**. + +From here you might explore: + +- **Batch processing**: Loop over a folder of HTML files and generate PDFs in bulk. +- **Dynamic HTML**: Use a Razor view engine to generate HTML on the fly before conversion. +- **Security**: Sandbox the conversion process if you accept user‑provided HTML (prevents script injection). + +Feel free to experiment with different options—maybe switch to `PdfA` compliance for archival purposes, or embed JavaScript for interactive PDFs. The core pattern stays the same, and you now have a reliable foundation for any **save HTML as PDF** requirement. + +--- + +*Happy coding! If you run into any quirks, drop a comment below or check out the library’s GitHub issues page. The community is great at sharing tweaks that make **html to pdf conversion** even smoother.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/english/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/english/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..b88dd43af --- /dev/null +++ b/html/english/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,275 @@ +--- +category: general +date: 2026-02-27 +description: Save HTML as PDF in C# quickly using Aspose.HTML. Learn how to convert + HTML to PDF, generate PDF from HTML with custom fonts and styling in just a few + steps. +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: en +og_description: Save HTML as PDF in C# quickly using Aspose.HTML. This tutorial shows + how to convert HTML to PDF, generate PDF from HTML and apply custom fonts. +og_title: Save HTML as PDF in C# – Complete Guide with Fonts +tags: +- csharp +- pdf +- html +title: Save HTML as PDF in C# – Complete Guide with Fonts +url: /net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Save HTML as PDF in C# – Complete Guide with Fonts + +Ever needed to **save HTML as PDF** from a C# application but weren’t sure which library to pick? You’re not alone. Many developers hit this snag when they want to ship invoices, reports, or printable receipts directly from web content. + +The good news? With Aspose.HTML you can **convert HTML to PDF**, **generate PDF from HTML**, and even **create PDF with fonts** in a handful of lines. In this tutorial we’ll walk through the entire process, explain why each setting matters, and give you a ready‑to‑run example. + +## What You’ll Learn + +- How to load a local or remote HTML file in C# +- Which rendering options give you bold/italic fonts, antialiasing, and text hinting +- How to save the result as a PDF file on disk +- Tips for handling custom fonts and common pitfalls + +No prior experience with Aspose.HTML is required—just a .NET development environment (Visual Studio 2022 or later) and the Aspose.HTML for .NET NuGet package. + +## Prerequisites + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6.0 or later | Provides the runtime for Aspose.HTML | +| Aspose.HTML for .NET (NuGet) | The library that does the heavy lifting | +| A sample HTML file (`sample.html`) | Our source content to be transformed | +| Basic C# knowledge | To understand the code snippets | + +If you’ve got those, let’s dive in. + +## Step 1: Install Aspose.HTML via NuGet + +Open your project in Visual Studio, right‑click the **Dependencies** node, and choose **Manage NuGet Packages**. Search for `Aspose.HTML` and hit **Install**. + +```powershell +dotnet add package Aspose.HTML +``` + +> **Pro tip:** Use the latest stable version (as of 2026‑02‑27 it’s 23.11) to get the newest rendering improvements. + +## Step 2: Load the Source HTML Document + +The first thing we need is an `HTMLDocument` object that points to our file. This class parses the markup, resolves CSS, and prepares everything for rendering. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Why this step?** +> Loading the HTML into an `HTMLDocument` isolates the parsing stage from the rendering stage, which means you can inspect the DOM or make runtime modifications before you actually create the PDF. + +## Step 3: Configure PDF Rendering Options + +Aspose.HTML gives you fine‑grained control over how the final PDF looks. In this example we’ll enable bold + italic font styles, antialiasing for smoother graphics, and text hinting for sharper low‑dpi output. + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### Why These Settings? + +- **`FontStyle`** – Merges any `` or `` tags with the base font, ensuring that the PDF respects the original styling. +- **`UseAntialiasing`** – Reduces jagged edges on charts, icons, or any rasterized content. +- **`UseHinting`** – Aligns glyph outlines to pixel grids, which is especially helpful when the PDF will be viewed on low‑resolution devices. + +If you need custom fonts (e.g., a corporate brand font), drop the `.ttf` files into a folder and set `pdfRenderOptions.FontProvider` accordingly. That’s a whole topic on its own, but the basic idea is: + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## Step 4: Render the HTML Document to PDF + +Now we combine the document and the options, then tell Aspose.HTML to write the output file. + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +After this line runs, you’ll find `output.pdf` beside your executable. Open it—you should see the original HTML rendered with bold/italic styling, smooth graphics, and crisp text. + +> **Expected Result:** +> A PDF that mirrors the layout of `sample.html`, with all headings in bold, emphasized text in italic, and any embedded images rendered without jagged edges. + +## Step 5: Verify and Tweak (Optional) + +### Quick verification script + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +If the PDF looks off, consider these common adjustments: + +| Issue | Likely cause | Fix | +|-------|--------------|-----| +| Missing fonts | Font not embedded or not found | Use `FontProvider.AddFont` and ensure the font file is accessible | +| Images appear blurry | Antialiasing disabled | Set `UseAntialiasing = true` | +| Text looks too thin on screen | Hinting disabled | Enable `UseHinting = true` | +| Layout shift on page break | CSS `page-break` rules ignored | Add explicit `page-break-before/after` in your HTML/CSS | + +## Full Working Example + +Below is the complete program you can copy‑paste into a new console app. It includes all the using directives, error handling, and comments for clarity. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +Run the project (`dotnet run`), and you should see the success message followed by a newly created `output.pdf`. + +## Common Questions & Edge Cases + +### Can I **convert HTML to PDF** from a URL instead of a local file? + +Absolutely. Just replace the file path with a URL string: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +Aspose.HTML will download the page, resolve external resources, and render it. + +### What about **large HTML files** or **multiple pages**? + +Aspose.HTML streams the content, so memory usage stays reasonable. If you need each HTML section on a separate PDF page, insert manual page breaks in the HTML: + +```html +
+``` + +### Does this work with **.NET Core** and **.NET 7**? + +Yes. The library is cross‑platform; just make sure you target a compatible framework (net6.0, net7.0, etc.) and install the corresponding NuGet package. + +### How do I **embed fonts** for full PDF portability? + +Set `pdfRenderOptions.FontProvider` as shown earlier, and also enable font embedding: + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +This guarantees the PDF looks the same on any machine, even if the font isn’t installed locally. + +## Visual Example + +![save html as pdf example](example.png){alt="save html as pdf example"} + +*The screenshot shows the generated PDF opened in Adobe Acrobat, preserving bold/italic styles and smooth images.* + +## Conclusion + +We’ve covered everything you need to **save HTML as PDF** using C#. From loading the markup, configuring rendering options, to writing the final PDF, the process is straightforward and highly customizable. + +By following this guide you can also **convert HTML to PDF**, **generate PDF from HTML**, and **create PDF with fonts** for any reporting or document‑generation scenario. Feel free to experiment with additional options—watermarks, encryption, or custom page sizes—because Aspose.HTML gives you that flexibility. + +**Next steps** you might explore: + +- Use the `PdfSaveOptions` class to set PDF version or compression level. +- Combine multiple `HTMLDocument` instances into a single PDF for multi‑section reports. +- Integrate this workflow into an ASP.NET Core API so your web service can return PDFs on demand. + +Got questions about edge cases or need help tweaking the rendering pipeline? Drop a comment below, and happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/english/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/english/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..6dd19be48 --- /dev/null +++ b/html/english/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,249 @@ +--- +category: general +date: 2026-02-27 +description: Save HTML as ZIP using C# ZipArchive – step‑by‑step example with a custom + resource handler, plus tips on how to export HTML to ZIP and create zip archive + C# code. +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: en +og_description: Save HTML as ZIP using C# ZipArchive. Learn how to export HTML to + ZIP with a full example, custom resource handler, and best practices. +og_title: Save HTML as ZIP in C# – Complete Guide +tags: +- C# +- ZipArchive +- HTML export +title: Save HTML as ZIP in C# – Complete Guide +url: /net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Save HTML as ZIP in C# – Complete Guide + +Ever needed to **save HTML as ZIP** but weren't sure which .NET classes to reach for? You're not the only one—many developers hit this snag when they want to bundle a web page together with its assets for offline use or for distribution. The good news? With the built‑in `System.IO.Compression.ZipArchive` you can do it in a handful of lines, and you’ll also get a clean way to control how each resource is written. + +In this tutorial we’ll walk through a **complete, runnable example** that shows you exactly how to export an HTML document into a ZIP file, using a custom `ResourceHandler` to stream each asset into the archive. Along the way we’ll sprinkle in a few **c# ziparchive example** snippets, discuss **how to export html to zip** in real‑world scenarios, and point out the subtle differences when you want to **create zip archive c#** programs that need to be robust. + +> **Prerequisites** – You’ll need .NET 6+ (or .NET Core 3.1) and a reference to the library that provides `HTMLDocument`, `HTMLSaveOptions`, and `ResourceHandler`. If you’re using Aspose.HTML or a similar package, just add it via NuGet. No other third‑party tools are required. + +--- + +## What This Tutorial Covers + +- Setting up a **ZipArchive** that will receive the HTML file and its linked resources. +- Implementing a **custom resource handler** (`ZipHandler`) that directs each resource stream into the archive. +- Using **HTMLSaveOptions** to tie everything together and actually **save HTML as ZIP**. +- Common pitfalls when dealing with paths, duplicate entries, and large assets. +- Tips for extending the solution—like adding a manifest file or encrypting the ZIP. + +By the end you’ll have a self‑contained method you can drop into any C# project to **save html as zip** with confidence. + +--- + +## Step 1: Add the Required Namespaces + +Before any code runs, make sure the compiler knows about the compression classes and the HTML library you’re using. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*Why this matters:* `System.IO.Compression` gives you `ZipArchive`, while the `Aspose.Html` namespaces expose `HTMLDocument`, `HTMLSaveOptions`, and the `ResourceHandler` base class we’ll extend. If you’re using a different HTML engine, look for analogous types. + +--- + +## Step 2: Create a Custom Resource Handler (Primary Keyword in Action) + +The heart of **saving HTML as ZIP** is telling the engine where each external resource (images, CSS, scripts) should go. By inheriting from `ResourceHandler` we gain control over the stream that receives the data. + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**Key points** + +- `info.Uri` is the relative URL the HTML engine is trying to write. Using it as the entry name keeps the folder structure intact inside the ZIP. +- `CreateEntry` will automatically create any needed directories; you don’t have to manage them yourself. +- Returning the opened stream lets the engine stream the data directly—no temporary files, no extra memory copies. + +--- + +## Step 3: Initialize the ZipArchive + +Now we spin up a `ZipArchive` in **Update** mode. This mode lets us add entries as we go, and also replace existing ones if you run the code multiple times. + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*Pro tip:* Use `FileMode.Create` to overwrite any previous file, or switch to `FileMode.OpenOrCreate` if you want to append to an existing archive. Also, wrap the `ZipArchive` in a `using` statement—this guarantees the archive is properly disposed and the file handle is released. + +--- + +## Step 4: Load the HTML Document You Want to Export + +Here’s where you point the library at the source HTML file. The document may reference CSS, images, or JavaScript files that live next to it. + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +If your HTML contains relative URLs, make sure the working directory of the process matches the folder containing those assets. Otherwise the engine won’t be able to locate them, and the ZIP will miss those files. + +--- + +## Step 5: Configure Save Options – The Real “Save HTML as ZIP” Moment + +We now tie the `ZipHandler` to the `HTMLSaveOptions`. Setting the `SaveFormat` to `ZIP` tells the library to bundle everything, while our handler decides where each piece goes. + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*Why this matters:* Without setting `ResourceHandler`, the library would fall back to writing resources to the file system, which defeats the purpose of **how to export html to zip** in a single archive. + +--- + +## Step 6: Perform the Save Operation + +Finally, ask the document to save itself using the options we just built. The library will invoke `ZipHandler.HandleResource` for every external asset it encounters. + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +When the `using` block for `zipArchive` ends, the archive is finalized and the file is ready for distribution. + +--- + +## Full Working Example (All Steps Combined) + +Below is the complete program you can copy‑paste into a console app. It demonstrates a **c# ziparchive example** that **creates zip archive c#** style, and it fully answers **how to export html to zip**. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**Expected result:** After you run the program, `output.zip` will contain `index.html` (or the name you configured) plus every image, stylesheet, and script referenced by the original page, preserving the folder hierarchy. Open the ZIP, extract, and double‑click `index.html`—the page should render exactly as it did online, but now it’s a portable package. + +--- + +## Common Edge Cases & How to Handle Them + +| Situation | Why it Happens | Suggested Fix | +|-----------|----------------|---------------| +| **Duplicate resource names** (e.g., two images with the same filename in different folders) | `CreateEntry` will throw an `InvalidOperationException` if the exact entry name already exists. | Prefix the entry with its relative path (`info.Uri` already does this) or manually sanitize names before creating the entry. | +| **Large binary assets** (videos, high‑resolution images) | Streaming directly to the zip is fine, but the default buffer size may cause high memory usage. | Override `HandleResource` to wrap the returned stream in a `BufferedStream` with a modest buffer (e.g., 64 KB). | +| **Missing resources** | If the HTML contains a broken link, the handler receives a request for a file that doesn’t exist, leading to an empty entry. | Check `File.Exists` before creating the entry, or log a warning so you know something is missing. | +| **Unicode filenames** | Some older ZIP tools mishandle UTF‑8 entry names. | Ensure you’re targeting .NET 6+, which writes UTF‑8 by default. If you need legacy compatibility, set `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);`. | +| **Need a manifest** (list of files inside the zip) | Consumers sometimes want a `manifest.json` for validation. | After the main save, create a new entry `"manifest.json"` and write a JSON list of `zipArchive.Entries`. | + +--- + +## Pro Tips for Production‑Ready **Save HTML as ZIP** Implementations + +1. **Validate the output** – After saving, open the ZIP programmatically and verify that `index.html` exists and that each entry’s `Length` > 0. This catches silent failures early. +2. **Parallelize large assets** – If you have dozens of megabytes of images, consider queuing `HandleResource` calls on a `Task` pool and writing to the archive concurrently (still respecting the single‑writer nature of `ZipArchive`). +3. **Compress wisely** – `ZipArchive` uses Deflate by default. For already‑compressed files (JPEG, PNG), you can set `entry.CompressionLevel = CompressionLevel.NoCompression` to speed up the operation. +4. **Security** – If the ZIP + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/english/net/working-with-html-documents/_index.md b/html/english/net/working-with-html-documents/_index.md index 7fb231926..292615b61 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/) + +### [Save HTML as ZIP in C# – Complete Guide with Custom Resource Handler](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) + ### [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/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/english/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..31a241dc6 --- /dev/null +++ b/html/english/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-02-27 +description: Save HTML as ZIP in C# using a custom resource handler and create ZIP + archive in C#. Follow this step‑by‑step tutorial to bundle HTML and its assets. +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: en +og_description: Save HTML as ZIP in C# with a custom resource handler. Learn how to + create ZIP archive in C# and embed resources effortlessly. +og_title: Save HTML as ZIP in C# – Full Tutorial +tags: +- Aspose.HTML +- C# +- ZIP +title: Save HTML as ZIP in C# – Complete Guide with Custom Resource Handler +url: /net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Save HTML as ZIP in C# – Complete Guide with Custom Resource Handler + +Ever wondered how to **save HTML as ZIP** in C# without pulling your hair out? You're not the only one—many developers hit a wall when they need to ship an HTML page together with images, CSS, or JavaScript files. The good news? With Aspose.HTML you can do it in a few tidy steps, and a **custom resource handler** makes the process painless. + +In this tutorial we’ll walk through everything you need to know: from installing the library, writing a handler that streams resources straight into a **create ZIP archive in C#**, to verifying the final package. By the end you’ll have a ready‑to‑use solution you can drop into any .NET project. + +![Save HTML as ZIP example](/images/save-html-as-zip.png "Diagram showing HTML saved as a ZIP file") + +## Save HTML as ZIP – What This Guide Covers + +We'll cover the entire pipeline: + +1. **Prerequisites** – the minimal tools and packages you need. +2. **Custom resource handler** – why you need one and how to implement it. +3. **Creating a ZIP archive in C#** – using `System.IO.Compression`. +4. **Configuring Aspose.HTML save options** to point at the handler. +5. **Running the code** and checking the output. + +If you’re comfortable with basic C# syntax and have Visual Studio (or VS Code) installed, you’re ready to dive in. No external documentation required—everything is right here. + +--- + +## Step 1: Set Up the Project and Install Aspose.HTML + +Before we write any code, make sure your project can reference the Aspose.HTML library. + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*Pro tip:* The latest NuGet package (as of February 2026) targets .NET 6+, so you can use the modern SDK‑style project without worrying about legacy frameworks. + +Once the package is restored, open `Program.cs`. We'll replace the default content with the full example later, but for now just keep the file open. + +--- + +## Implement a Custom Resource Handler + +### Why a Custom Resource Handler? + +When Aspose.HTML saves an HTML document as a ZIP package, it needs to fetch every external resource (images, fonts, scripts) and write them somewhere. The default behavior writes them to a temporary folder on disk. By providing a **custom resource handler**, you tell the library exactly where each resource should go—in our case, directly into the ZIP archive. This avoids extra I/O, keeps everything tidy, and gives you full control over naming. + +### Code: The Handler Class + +Create a new class file called `MyHandler.cs` (or place it inside `Program.cs` if you prefer a single‑file demo). + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**Explanation:** +* `ResourceHandler` is an abstract class from Aspose.HTML that lets you intercept resource fetching. +* By returning the `Stream` obtained from `ZipArchiveEntry.Open()`, we hand the library a writable pipe directly into the ZIP file. No temporary files, no extra cleanup. + +--- + +## Create the ZIP Archive in C# + +Now that the handler is ready, we need a place for it to write. The .NET `ZipArchive` class does the heavy lifting. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### What This Does + +1. **Creates an in‑memory HTML document** with a reference to `logo.png`. +2. **Opens a `FileStream`** that will become `output.zip`. +3. **Assigns the `ZipArchive`** to the static field in `MyHandler`. +4. **Sets `HTMLSaveOptions`** to `SaveFormat.ZIP` and attaches our handler. +5. **Calls `document.Save`** – Aspose.HTML parses the HTML, fetches `logo.png`, and streams it into the archive via `MyHandler`. + +Because the handler uses the resource URI (`logo.png`) as the entry name, the resulting ZIP contains a file named exactly that, preserving the original relative path. + +--- + +## Configure Save Options for the ZIP Package + +The `HTMLSaveOptions` object is where you tell Aspose.HTML **how** to package the output. Apart from the `ResourceHandler`, you can tweak a few useful properties: + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*Why care about `EnableCompression`?* +If you’re dealing with large images, enabling compression can shrink the final archive by up to 70 %. However, for already‑compressed PNGs the gain is modest, so you might turn it off to speed up the save operation. + +--- + +## Run the Code and Verify the Output + +Compile and run the program: + +```bash +dotnet run +``` + +You should see the success message printed to the console. Navigate to the directory printed and open `output.zip`. Inside you’ll find: + +- `index.html` – the saved HTML file. +- `logo.png` – the image that was referenced in the markup. + +Open `index.html` directly from the ZIP (most OS file explorers let you preview it) and you’ll see the heading and image rendered exactly as in the original string. + +**Edge Cases to Consider** + +| Situation | What to Do | +|-----------|------------| +| The HTML references a **remote URL** (e.g., `https://example.com/style.css`) | The handler will still receive a `ResourceInfo.Uri`. Ensure your environment can reach the URL, or pre‑download the resource and adjust the HTML to a local path. | +| You need **folder hierarchy** inside the ZIP (e.g., `images/logo.png`) | Modify `HandleResource` to prepend a folder name: `var entry = ZipArchive.CreateEntry($"assets/{info.Uri}");` | +| The resource **fails to load** (404) | The handler will be called, but the stream will receive zero bytes. Wrap the save call in a `try/catch` and inspect `info.Status` if you need custom error handling. | + +--- + +## Recap: Save HTML as ZIP in One Compact Flow + +- **Primary Goal:** Bundle an HTML page and all its external assets into a single ZIP file using C#. +- **Key Tools:** Aspose.HTML (`HTMLDocument`, `HTMLSaveOptions`), `System.IO.Compression.ZipArchive`, and a **custom resource handler**. +- **Result:** A portable `output.zip` that can be shipped, stored, or sent over the network, and later extracted without losing resource links. + +--- + +## What’s Next? Extending the Workflow + +Now that you’ve mastered **save HTML as ZIP**, you might want to explore related scenarios: + +- **Save HTML as PDF** – replace `SaveFormat.ZIP` with `SaveFormat.PDF` and adjust options accordingly. +- **Embed fonts** – use `@font-face` in your HTML and let the handler capture the font files. +- **Batch processing** – loop over a collection of HTML strings, reusing the same `ZipArchive` to create a multi‑document package. + +All of these builds on the same **custom resource handler** pattern and the **create ZIP archive in C#** technique you just learned. + +--- + +### Final Thoughts + +You’ve just seen how easy it is to **save HTML as ZIP** in C# when you let Aspose.HTML + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/french/net/generate-jpg-and-png-images/_index.md b/html/french/net/generate-jpg-and-png-images/_index.md index 59ca2dad1..cb636bce7 100644 --- a/html/french/net/generate-jpg-and-png-images/_index.md +++ b/html/french/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Apprenez à utiliser Aspose.HTML pour .NET pour manipuler des documents HTML, co Apprenez à activer l'anticrénelage pour améliorer la qualité des images PNG/JPG générées à partir de documents DOCX avec Aspose.HTML. ### [Convertir docx en png – créer une archive zip tutoriel C#](./convert-docx-to-png-create-zip-archive-c-tutorial/) Apprenez à convertir des fichiers DOCX en images PNG et à les compresser dans une archive ZIP avec C#. +### [Créer un PNG à partir de HTML en C# – Guide étape par étape](./create-png-from-html-in-c-step-by-step-guide/) +Apprenez à générer des images PNG à partir de HTML en C# avec un guide complet étape par étape. ## Conclusion diff --git a/html/french/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/french/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..481069e68 --- /dev/null +++ b/html/french/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-02-27 +description: Créez rapidement un PNG à partir de HTML avec Aspose.HTML en C#. Apprenez + à rendre le HTML en image, à définir la largeur et la hauteur de l'image, et à convertir + le HTML en PNG en quelques minutes. +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: fr +og_description: Créer un PNG à partir de HTML avec Aspose.HTML. Ce guide montre comment + rendre le HTML en image, définir la largeur et la hauteur de l'image, et convertir + le HTML en PNG efficacement. +og_title: Créer un PNG à partir de HTML en C# – Tutoriel complet +tags: +- Aspose.HTML +- C# +- Image Rendering +title: Créer un PNG à partir de HTML en C# – Guide étape par étape +url: /fr/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Créer un PNG à partir de HTML en C# – Tutoriel complet + +Vous avez déjà eu besoin de **créer un PNG à partir de HTML** mais vous n'étiez pas sûr de quelle bibliothèque vous donnerait des résultats pixel‑parfait ? Vous n'êtes pas le seul — de nombreux développeurs rencontrent le même problème lorsqu'ils essaient de transformer une page web en image statique pour des e‑mails, des rapports ou des vignettes. + +Bonne nouvelle ? Avec Aspose.HTML, vous pouvez **rendre du HTML en image**, contrôler les dimensions exactes, et **enregistrer du HTML en PNG** en quelques lignes de C#. Dans ce tutoriel, nous parcourrons l’ensemble du processus, du chargement de votre fichier HTML à l’ajustement du hinting du texte, jusqu’à l’écriture du PNG sur le disque. À la fin, vous saurez comment **définir la largeur et la hauteur de l’image** par programme et disposerez d’un extrait réutilisable que vous pourrez insérer dans n’importe quel projet .NET. + +## Ce que vous apprendrez + +- Comment charger un document HTML avec Aspose.HTML. +- La différence entre `ImageRenderingOptions` et `TextOptions` et pourquoi elle est importante. +- Comment **convertir du HTML en PNG** tout en conservant les polices, l'anticrénelage et les styles de soulignement. +- Conseils pour résoudre les problèmes courants tels que les polices manquantes ou des tailles d’image inattendues. +- Un exemple de code complet, prêt à l’emploi, que vous pouvez copier‑coller dans Visual Studio. + +> **Prérequis :** .NET 6+ (ou .NET Framework 4.6.2+), Aspose.HTML pour .NET installé via NuGet, et une compréhension de base du C#. Aucun autre outil externe n’est requis. + +--- + +## Étape 1 : Charger le document HTML – Démarrer la création du PNG + +Tout d’abord, nous avons besoin d’un objet `HTMLDocument` qui pointe vers le fichier source. C’est la base de toute opération de **création de PNG à partir de HTML**. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*Pourquoi cette étape est importante :* La classe `HTMLDocument` analyse le balisage, résout le CSS et construit un DOM que le moteur de rendu pourra ensuite peindre sur un bitmap. Si le chemin est incorrect, l’étape suivante de **rendu du HTML en image** générera une `FileNotFoundException`. + +--- + +## Étape 2 : Définir la largeur et la hauteur de l’image – Contrôler la taille de sortie + +Lorsque vous **rendez du HTML en image**, vous avez souvent besoin d’une résolution spécifique—imaginez une vignette qui doit être exactement 1200 × 800 pixels. C’est là que `ImageRenderingOptions` fait la différence. + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*Astuce :* Si vous omettez `Width` et `Height`, Aspose.HTML utilisera la taille naturelle de la page, ce qui peut être trop grand pour les incrustations d’e‑mail. + +--- + +## Étape 3 : Affiner le rendu du texte – Rendre le texte net + +Le texte sous Linux apparaît souvent flou à moins d’activer le hinting. L’objet `TextOptions` vous permet de le contrôler, garantissant que le PNG final soit net sur chaque plateforme. + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*Pourquoi le hinting ?* Le hinting ajuste la forme de chaque glyphe pour l’aligner à la grille de pixels, ce qui est crucial lorsque vous **convertissez du HTML en PNG** pour des écrans à basse résolution. + +--- + +## Étape 4 : Combiner les options et ajouter du style – Configuration complète du rendu + +Nous fusionnons maintenant les paramètres d’image et de texte, et nous montrons également comment appliquer un style de police global, comme le soulignement de chaque morceau de texte. Cette étape est celle où vous **enregistrez réellement du HTML en PNG** avec un style personnalisé. + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*Remarque :* `WebFontStyle` prend en charge de nombreux indicateurs (Bold, Italic, etc.). Vous pouvez les combiner avec un OU binaire si vous avez besoin de plusieurs styles. + +--- + +## Étape 5 : Rendre et enregistrer – Le moment où vous **créez un PNG à partir de HTML** + +Une fois tout configuré, l’appel final est une seule ligne qui peint le DOM sur un bitmap et l’écrit sur le disque. + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +Après l’exécution de cette ligne, vous trouverez `output.png` dans le dossier spécifié, exactement 1200 × 800 pixels, avec des graphiques antialiasés et du texte hinté. + +--- + +## Exemple complet fonctionnel – Copier, exécuter, vérifier + +Ci-dessous se trouve le programme complet que vous pouvez compiler en tant qu’application console. Il inclut toutes les instructions `using`, la gestion des erreurs et les commentaires nécessaires. + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**Résultat attendu :** Un fichier nommé `output.png` apparaît à côté de votre exécutable, affichant la version rendue de `sample.html`. Ouvrez-le avec n’importe quel visualiseur d’image pour confirmer les dimensions et le style. + +--- + +## Pièges courants et comment les éviter + +| Problème | Symptôme | Solution | +|----------|----------|----------| +| Polices manquantes | Le texte apparaît comme une police sans‑serif générique | Installez les polices requises sur la machine hôte ou intégrez des polices web dans le HTML. | +| Dimensions incorrectes | Le PNG est plus grand ou plus petit que prévu | Vérifiez à nouveau les valeurs `Width` et `Height` dans `ImageRenderingOptions`. | +| Bords flous | Pas d’anticrénelage | Assurez‑vous que `UseAntialiasing = true`. | +| Artefacts de rendu sous Linux | Le texte semble flou | Définissez `UseHinting = true` dans `TextOptions`. | + +*Astuce :* Lorsque vous **rendez du HTML en image** sur un serveur sans interface graphique, assurez‑vous que le serveur possède les bibliothèques système nécessaires (par ex., `libgdiplus` sous Linux) sinon Aspose.HTML pourrait recourir à un rendu logiciel de qualité réduite. + +--- + +## Étendre la solution – Prochaines étapes + +- **Conversion par lots :** Parcourez une liste de fichiers HTML et appelez la même logique de rendu pour produire une galerie de PNG. +- **Formats différents :** Remplacez `output.png` par `output.jpg` ou `output.bmp` en changeant l’extension du fichier ; Aspose.HTML sélectionne automatiquement le bon encodeur. +- **Dimensionnement dynamique :** Calculez `Width` et `Height` en fonction de la balise meta viewport du HTML pour les conceptions réactives. +- **Filigrane :** Utilisez `Aspose.Html.Drawing` pour superposer un logo avant l’enregistrement. + +Ces idées vous permettent de passer d’un simple extrait **créer un PNG à partir de HTML** à un service complet de génération d’images. + +--- + +## Conclusion + +Nous avons parcouru tout ce dont vous avez besoin pour **créer un PNG à partir de HTML** avec Aspose.HTML pour .NET : charger le document, configurer **définir la largeur et la hauteur de l’image**, affiner le texte avec le hinting, et enfin **enregistrer du HTML en PNG**. L’exemple de code complet est prêt à être intégré à votre projet, et les astuces ci‑dessus devraient vous éviter les problèmes courants. + +Maintenant que vous pouvez **rendre du HTML en image** de manière fiable, pourquoi ne pas expérimenter différents styles, le traitement par lots, ou même la conversion en PDF dans le même pipeline ? Le ciel est la limite, et le code est déjà entre vos mains. + +Bon codage, et n’hésitez pas à partager vos résultats ou poser des questions dans les commentaires ! + +![Exemple de création de PNG à partir de HTML](/images/create-png-from-html.png "Créer un PNG à partir de HTML avec Aspose.HTML") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/french/net/html-extensions-and-conversions/_index.md b/html/french/net/html-extensions-and-conversions/_index.md index f4e02735c..aa7b50ce0 100644 --- a/html/french/net/html-extensions-and-conversions/_index.md +++ b/html/french/net/html-extensions-and-conversions/_index.md @@ -38,42 +38,48 @@ Aspose.HTML pour .NET n'est pas seulement une bibliothèque ; c'est un outil ré ## Tutoriels sur les extensions et conversions HTML ### [Convertir HTML en PDF dans .NET avec Aspose.HTML](./convert-html-to-pdf/) -Convertissez facilement du HTML en PDF avec Aspose.HTML pour .NET. Suivez notre guide étape par étape et exploitez la puissance de la conversion HTML en PDF. +Convertissez facilement du HTML en PDF avec Aspose.HTML pour .NET. Suivez notre guide étape à étape et exploitez la puissance de la conversion HTML en PDF. ### [Créer un PDF à partir de HTML – Guide étape par étape en C#](./create-pdf-from-html-c-step-by-step-guide/) Apprenez à créer un PDF à partir de HTML en C# avec Aspose.HTML, guide complet pas à pas. +### [Créer un PDF à partir de HTML – Guide étape par étape pour les développeurs](./create-pdf-from-html-step-by-step-guide-for-developers/) +Apprenez à créer un PDF à partir de HTML en suivant un guide complet pas à pas destiné aux développeurs. ### [Créer un document HTML avec du texte stylisé et l'exporter en PDF – Guide complet](./create-html-document-with-styled-text-and-export-to-pdf-full/) Apprenez à créer un document HTML avec du texte formaté et à le convertir en PDF à l'aide d'Aspose.HTML pour .NET. -Convertisez facilement du HTML en PDF avec Aspose.HTML pour .NET. Suivez notre guide étape par étape et exploitez la puissance de la conversion HTML en PDF. +Convertisez facilement du HTML en PDF avec Aspose.HTML pour .NET. Suivez notre guide étape à étape et exploitez la puissance de la conversion HTML en PDF. +### [Enregistrer le HTML en PDF en C# – Guide complet avec polices](./save-html-as-pdf-in-c-complete-guide-with-fonts/) +Apprenez à enregistrer du HTML en PDF en C# en incluant les polices, guide complet pas à pas. ### [Convertir EPUB en image dans .NET avec Aspose.HTML](./convert-epub-to-image/) Découvrez comment convertir un EPUB en images à l'aide d'Aspose.HTML pour .NET. Tutoriel étape par étape avec des exemples de code et des options personnalisables. ### [Convertir EPUB en PDF dans .NET avec Aspose.HTML](./convert-epub-to-pdf/) -Découvrez comment convertir un fichier EPUB en PDF à l'aide d'Aspose.HTML pour .NET. Ce guide étape par étape couvre les options de personnalisation, les FAQ et bien plus encore pour une conversion de documents fluide. +Découvrez comment convertir un fichier EPUB en PDF à l'aide d'Aspose.HTML pour .NET. Ce guide étape à étape couvre les options de personnalisation, les FAQ et bien plus encore pour une conversion de documents fluide. ### [Convertir EPUB en XPS dans .NET avec Aspose.HTML](./convert-epub-to-xps/) -Découvrez comment convertir un EPUB en XPS dans .NET à l'aide d'Aspose.HTML pour .NET. Suivez notre guide étape par étape pour des conversions sans effort. +Découvrez comment convertir un EPUB en XPS dans .NET à l'aide d'Aspose.HTML pour .NET. Suivez notre guide étape à étape pour des conversions sans effort. ### [Convertir HTML en BMP dans .NET avec Aspose.HTML](./convert-html-to-bmp/) Découvrez comment convertir du HTML en BMP dans .NET à l'aide d'Aspose.HTML pour .NET. Guide complet destiné aux développeurs Web pour tirer parti d'Aspose.HTML pour .NET. ### [Convertissez HTML en DOC et DOCX dans .NET avec Aspose.HTML](./convert-html-to-doc-docx/) -Découvrez comment exploiter la puissance d'Aspose.HTML pour .NET dans ce guide étape par étape. Convertissez facilement du HTML en DOCX et améliorez vos projets .NET. Commencez dès aujourd'hui ! +Découvrez comment exploiter la puissance d'Aspose.HTML pour .NET dans ce guide étape à étape. Convertissez facilement du HTML en DOCX et améliorez vos projets .NET. Commencez dès aujourd'hui ! ### [Convertir HTML en GIF dans .NET avec Aspose.HTML](./convert-html-to-gif/) -Découvrez la puissance d'Aspose.HTML pour .NET : un guide étape par étape pour convertir du HTML en GIF. Prérequis, exemples de code, FAQ et plus encore ! Optimisez votre manipulation HTML avec Aspose.HTML. +Découvrez la puissance d'Aspose.HTML pour .NET : un guide étape à étape pour convertir du HTML en GIF. Prérequis, exemples de code, FAQ et plus encore ! Optimisez votre manipulation HTML avec Aspose.HTML. ### [Convertir HTML en JPEG dans .NET avec Aspose.HTML](./convert-html-to-jpeg/) -Découvrez comment convertir du HTML en JPEG dans .NET avec Aspose.HTML pour .NET. Un guide étape par étape pour exploiter la puissance d'Aspose.HTML pour .NET. Optimisez vos tâches de développement Web sans effort. +Découvrez comment convertir du HTML en JPEG dans .NET avec Aspose.HTML pour .NET. Un guide étape à étape pour exploiter la puissance d'Aspose.HTML pour .NET. Optimisez vos tâches de développement Web sans effort. ### [Convertir HTML en Markdown dans .NET avec Aspose.HTML](./convert-html-to-markdown/) -Découvrez comment convertir du HTML en Markdown dans .NET à l'aide d'Aspose.HTML pour une manipulation efficace du contenu. Bénéficiez de conseils étape par étape pour un processus de conversion fluide. +Découvrez comment convertir du HTML en Markdown dans .NET à l'aide d'Aspose.HTML pour une manipulation efficace du contenu. Bénéficiez de conseils étape à étape pour un processus de conversion fluide. ### [Convertir HTML en MHTML dans .NET avec Aspose.HTML](./convert-html-to-mhtml/) -Convertissez du HTML en MHTML dans .NET avec Aspose.HTML - Un guide étape par étape pour un archivage efficace du contenu Web. Découvrez comment utiliser Aspose.HTML pour .NET pour créer des archives MHTML. +Convertissez du HTML en MHTML dans .NET avec Aspose.HTML - Un guide étape à étape pour un archivage efficace du contenu Web. Découvrez comment utiliser Aspose.HTML pour .NET pour créer des archives MHTML. ### [Convertir HTML en PNG dans .NET avec Aspose.HTML](./convert-html-to-png/) -Découvrez comment utiliser Aspose.HTML pour .NET pour manipuler et convertir des documents HTML. Guide étape par étape pour un développement .NET efficace. +Découvrez comment utiliser Aspose.HTML pour .NET pour manipuler et convertir des documents HTML. Guide étape à étape pour un développement .NET efficace. ### [Convertir HTML en TIFF dans .NET avec Aspose.HTML](./convert-html-to-tiff/) -Découvrez comment convertir du HTML en TIFF avec Aspose.HTML pour .NET. Suivez notre guide étape par étape pour une optimisation efficace du contenu Web. +Découvrez comment convertir du HTML en TIFF avec Aspose.HTML pour .NET. Suivez notre guide étape à étape pour une optimisation efficace du contenu Web. ### [Convertir HTML en XPS dans .NET avec Aspose.HTML](./convert-html-to-xps/) -Découvrez la puissance d'Aspose.HTML pour .NET : convertissez facilement du HTML en XPS. Prérequis, guide étape par étape et FAQ inclus. +Découvrez la puissance d'Aspose.HTML pour .NET : convertissez facilement du HTML en XPS. Prérequis, guide étape à étape et FAQ inclus. ### [Comment zipper du HTML en C# – Enregistrer le HTML dans un zip](./how-to-zip-html-in-c-save-html-to-zip/) Apprenez à compresser du HTML en un fichier zip avec C# grâce à notre guide détaillé. ### [Enregistrer le HTML en ZIP – Tutoriel complet C#](./save-html-as-zip-complete-c-tutorial/) Apprenez à enregistrer un document HTML dans un fichier ZIP en C# avec Aspose.HTML pour .NET. Guide complet étape par étape. ### [Enregistrer HTML en ZIP en C# – Exemple complet en mémoire](./save-html-to-zip-in-c-complete-in-memory-example/) Enregistrez du HTML dans un fichier ZIP en mémoire avec Aspose.HTML pour .NET. +### [Enregistrer le HTML en ZIP en C# – Guide complet](./save-html-as-zip-in-c-complete-guide/) +Apprenez à enregistrer un document HTML dans un fichier ZIP en C# avec Aspose.HTML, guide complet pas à pas. ## Conclusion diff --git a/html/french/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/french/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..eb467af90 --- /dev/null +++ b/html/french/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,206 @@ +--- +category: general +date: 2026-02-27 +description: Créez un PDF à partir de HTML rapidement avec un exemple complet en C#. + Apprenez à convertir HTML en PDF, à enregistrer HTML en PDF et à exporter HTML vers + PDF avec des paramètres de bonnes pratiques. +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: fr +og_description: Créez un PDF à partir de HTML en C# avec un exemple prêt à l'emploi. + Ce guide vous accompagne dans la conversion de HTML en PDF, l'enregistrement de + HTML en PDF et l'exportation de HTML vers PDF. +og_title: Créer un PDF à partir de HTML – Tutoriel complet C# +tags: +- C# +- PDF +- HTML +title: Créer un PDF à partir de HTML – Guide étape par étape pour les développeurs +url: /fr/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Créer un PDF à partir de HTML – Tutoriel complet C# + +Vous avez déjà eu besoin de **create PDF from HTML** mais vous ne saviez pas quelles appels d'API utiliser ? Vous n'êtes pas seul. Que vous construisiez un tableau de bord de reporting, un générateur de factures, ou un exportateur de site statique, transformer du HTML en PDF est une exigence fréquente pour les applications modernes centrées sur le web. + +Dans ce tutoriel, nous parcourrons un **complete, runnable C# example** qui vous montre comment **convert HTML to PDF**, configurer les options de rendu pour une sortie nette, et enfin **save HTML as PDF** sur le disque. À la fin, vous disposerez d'un modèle solide, prêt pour la production, pour **export HTML to PDF** que vous pourrez intégrer dans n'importe quel projet .NET. + +## Ce que vous apprendrez + +- Comment charger un fichier HTML local avec `HTMLDocument`. +- Quelles options de rendu améliorent le poids des polices, la fluidité des images et le hinting du texte. +- L'appel exact pour **export HTML to PDF** avec une seule méthode `Save`. +- Astuces pour gérer les gros documents, déboguer les problèmes courants et vérifier le résultat. +- Un exemple complet, copiable‑collable, que vous pouvez exécuter dès aujourd'hui. + +### Prérequis + +- .NET 6+ (ou .NET Framework 4.7+). L'API que nous utilisons fonctionne sur les deux. +- Une référence à la bibliothèque hypothétique `HtmlToPdfLib` (remplacez‑la par le nom de votre bibliothèque réelle). +- Un fichier `input.html` placé dans un dossier que vous contrôlez (nous l'appellerons `YOUR_DIRECTORY`). + +Si vous avez déjà ces éléments, plongeons‑y—aucune configuration supplémentaire n'est requise. + +## Étape 1 : Charger le document HTML pour **Create PDF from HTML** + +La première chose dont vous avez besoin est une instance `HTMLDocument` qui pointe vers le fichier source. Pensez‑y comme à l'ouverture d'un cahier avant de commencer à écrire—sans document, il n’y a rien à rendre. + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **Why this matters:** Charger le fichier HTML tôt permet à la bibliothèque d’analyser le DOM, de résoudre le CSS et de pré‑charger les images. Ignorer cette étape ou fournir du HTML mal formé entraîne souvent des pages blanches lors de la **html to pdf conversion**. + +## Étape 2 : Configurer les options de rendu pour **HTML to PDF Conversion** + +Les options de rendu sont la sauce secrète qui transforme un PDF ordinaire en un document à l’aspect professionnel. Ici, nous activons les polices en gras, l’antialiasing pour les images et le hinting pour le texte—des fonctionnalités que la plupart des développeurs négligent mais qui améliorent considérablement la fidélité visuelle. + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **Pro tip:** Si vous travaillez avec une police spécifique à une marque, définissez également `FontFamily` dans `pdfOptions`. Cela empêche le recours à des polices génériques lors de la **convert HTML to PDF**. + +## Étape 3 : Enregistrer le fichier et **Export HTML to PDF** + +Maintenant que le document est chargé et que les options sont ajustées, l’acte final consiste en une seule ligne qui écrit le PDF sur le disque. La méthode `Save` effectue en interne la **html to pdf conversion**, appliquant tous les ajustements de rendu que nous avons définis. + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **What you should see:** Ouvrir `output.pdf` dans n'importe quel lecteur affichera la mise en page HTML d'origine, avec des titres en gras, des images fluides et du texte net. Si vous remarquez des styles manquants, vérifiez que vos fichiers CSS sont accessibles relativement à `input.html`. + +![exemple de création de pdf à partir de html](/images/create-pdf-from-html.png "Capture d'écran du PDF généré – create pdf from html") + +*La capture d'écran ci‑dessus (alt text: “create pdf from html example”) montre un PDF rendu qui conserve le style HTML original.* + +## Pièges courants lors de la **Convert HTML to PDF** + +Même avec un flux simple, les développeurs rencontrent souvent des obstacles. Voici les trois problèmes les plus fréquents et comment les éviter. + +### 1. Ressources manquantes (Images, CSS, Polices) + +Si votre HTML référence des ressources externes via des chemins relatifs, le convertisseur pourrait ne pas les localiser. Utilisez toujours des chemins absolus ou définissez une URL de base : + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. Les gros documents déclenchent des délais d'attente + +Lorsque vous traitez des rapports multi‑pages, augmentez le paramètre de timeout de la bibliothèque : + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. La substitution de police entraîne une apparence inattendue + +Spécifiez la famille de police exacte dont vous avez besoin : + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +Aborder ces préoccupations dès le départ vous évite des sessions de débogage frustrantes lors des opérations **save HTML as PDF**. + +## Avancé : Ajouter une page de couverture avant de **Export HTML to PDF** + +Parfois, vous avez besoin d’une couverture personnalisée—peut‑être une page de titre avec un logo. Vous pouvez pré‑fixer un simple extrait HTML avant le document principal : + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **Why you’ll do this:** Ajouter une couverture directement en HTML garde le pipeline de génération PDF simple, évitant les outils de post‑traitement comme iText ou PdfSharp. + +## Vérifier la sortie de manière programmatique + +Si vous devez vous assurer que le PDF a été généré correctement (par ex., dans des pipelines CI), vous pouvez inspecter la taille du fichier ou le nombre de pages : + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +Un nombre de pages non nul confirme que l’étape **convert HTML to PDF** a réussi. + +## Récapitulatif & prochaines étapes + +Nous venons de parcourir un **complete, end‑to‑end example** de comment **create PDF from HTML** en C#. Le flux est : + +1. Charger le HTML source (`HTMLDocument`). +2. Affiner le rendu avec `PdfRenderingOptions`. +3. Appeler `Save` pour **export HTML to PDF**. + +À partir d’ici, vous pourriez explorer : + +- **Batch processing** : Boucler sur un dossier de fichiers HTML et générer des PDFs en masse. +- **Dynamic HTML** : Utiliser un moteur de vues Razor pour générer du HTML à la volée avant la conversion. +- **Security** : Isoler le processus de conversion si vous acceptez du HTML fourni par les utilisateurs (prévenir les injections de scripts). + +N’hésitez pas à expérimenter avec différentes options—peut‑être passer à la conformité `PdfA` pour l’archivage, ou intégrer du JavaScript pour des PDFs interactifs. Le modèle de base reste le même, et vous disposez maintenant d’une base fiable pour toute exigence **save HTML as PDF**. + +--- + +*Happy coding! If you run into any quirks, drop a comment below or check out the library’s GitHub issues page. The community is great at sharing tweaks that make **html to pdf conversion** even smoother.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/french/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/french/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..39f8531c5 --- /dev/null +++ b/html/french/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,278 @@ +--- +category: general +date: 2026-02-27 +description: Enregistrez du HTML en PDF en C# rapidement avec Aspose.HTML. Apprenez + à convertir du HTML en PDF, à générer un PDF à partir du HTML avec des polices personnalisées + et du style en quelques étapes seulement. +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: fr +og_description: Enregistrez le HTML en PDF en C# rapidement avec Aspose.HTML. Ce tutoriel + montre comment convertir le HTML en PDF, générer un PDF à partir du HTML et appliquer + des polices personnalisées. +og_title: Enregistrer le HTML en PDF en C# – Guide complet avec les polices +tags: +- csharp +- pdf +- html +title: Enregistrer HTML en PDF avec C# – Guide complet avec les polices +url: /fr/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Enregistrer du HTML en PDF en C# – Guide complet avec polices + +Vous avez déjà eu besoin d'**enregistrer du HTML en PDF** depuis une application C# sans savoir quelle bibliothèque choisir ? Vous n'êtes pas seul. De nombreux développeurs rencontrent ce problème lorsqu'ils souhaitent générer des factures, rapports ou reçus imprimables directement à partir de contenu web. + +La bonne nouvelle ? Avec Aspose.HTML, vous pouvez **convertir du HTML en PDF**, **générer un PDF à partir de HTML**, et même **créer un PDF avec des polices** en quelques lignes seulement. Dans ce tutoriel, nous parcourrons l'ensemble du processus, expliquerons pourquoi chaque paramètre est important, et vous fournirons un exemple prêt à l'emploi. + +## Ce que vous allez apprendre + +- Comment charger un fichier HTML local ou distant en C# +- Quelles options de rendu vous donnent des polices en gras/italique, de l'anticrénelage et du hinting de texte +- Comment enregistrer le résultat sous forme de fichier PDF sur le disque +- Astuces pour gérer les polices personnalisées et les pièges courants + +Aucune expérience préalable avec Aspose.HTML n'est requise — juste un environnement de développement .NET (Visual Studio 2022 ou supérieur) et le package NuGet Aspose.HTML for .NET. + +## Prérequis + +| Exigence | Pourquoi c'est important | +|----------|---------------------------| +| .NET 6.0 ou supérieur | Fournit le runtime pour Aspose.HTML | +| Aspose.HTML for .NET (NuGet) | La bibliothèque qui effectue le travail lourd | +| Un fichier HTML d'exemple (`sample.html`) | Notre contenu source à transformer | +| Connaissances de base en C# | Pour comprendre les extraits de code | + +Si vous avez tout cela, plongeons‑y. + +## Étape 1 : Installer Aspose.HTML via NuGet + +Ouvrez votre projet dans Visual Studio, faites un clic droit sur le nœud **Dependencies**, puis choisissez **Manage NuGet Packages**. Recherchez `Aspose.HTML` et cliquez sur **Install**. + +```powershell +dotnet add package Aspose.HTML +``` + +> **Astuce pro :** Utilisez la dernière version stable (au 27‑02‑2026, c’est la 23.11) pour bénéficier des dernières améliorations de rendu. + +## Étape 2 : Charger le document HTML source + +La première chose dont nous avons besoin est un objet `HTMLDocument` qui pointe vers notre fichier. Cette classe analyse le balisage, résout le CSS et prépare tout pour le rendu. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Pourquoi cette étape ?** +> Charger le HTML dans un `HTMLDocument` sépare l'étape d'analyse de celle de rendu, ce qui vous permet d'inspecter le DOM ou d'apporter des modifications à l'exécution avant de créer réellement le PDF. + +## Étape 3 : Configurer les options de rendu PDF + +Aspose.HTML vous offre un contrôle granulaire sur l'apparence du PDF final. Dans cet exemple, nous activerons les styles de police gras + italique, l'anticrénelage pour des graphiques plus lisses, et le hinting de texte pour une sortie nette en basse résolution. + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### Pourquoi ces paramètres ? + +- **`FontStyle`** – Fusionne les balises `` ou `` avec la police de base, garantissant que le PDF respecte le style original. +- **`UseAntialiasing`** – Réduit les bords dentelés sur les graphiques, icônes ou tout contenu rasterisé. +- **`UseHinting`** – Aligne les contours des glyphes sur la grille de pixels, ce qui est particulièrement utile lorsque le PDF sera visualisé sur des appareils à faible résolution. + +Si vous avez besoin de polices personnalisées (par exemple une police de marque d’entreprise), placez les fichiers `.ttf` dans un dossier et définissez `pdfRenderOptions.FontProvider` en conséquence. C’est un sujet à part entière, mais l’idée de base est : + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## Étape 4 : Rendre le document HTML en PDF + +Nous combinons maintenant le document et les options, puis demandons à Aspose.HTML d'écrire le fichier de sortie. + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +Après l'exécution de cette ligne, vous trouverez `output.pdf` à côté de votre exécutable. Ouvrez‑le — vous devriez voir le HTML original rendu avec les styles gras/italique, des graphiques fluides et du texte net. + +> **Résultat attendu :** +> Un PDF qui reflète la mise en page de `sample.html`, avec tous les titres en gras, le texte souligné en italique, et toutes les images intégrées affichées sans bords dentelés. + +## Étape 5 : Vérifier et ajuster (facultatif) + +### Script de vérification rapide + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +Si le PDF semble incorrect, envisagez ces ajustements courants : + +| Problème | Cause probable | Solution | +|----------|----------------|----------| +| Polices manquantes | Police non incorporée ou introuvable | Utilisez `FontProvider.AddFont` et assurez‑vous que le fichier de police est accessible | +| Images floues | Anticrénelage désactivé | Définissez `UseAntialiasing = true` | +| Texte trop fin à l'écran | Hinting désactivé | Activez `UseHinting = true` | +| Décalage de mise en page lors du saut de page | Règles CSS `page-break` ignorées | Ajoutez explicitement `page-break-before/after` dans votre HTML/CSS | + +## Exemple complet fonctionnel + +Voici le programme complet que vous pouvez copier‑coller dans une nouvelle application console. Il inclut toutes les directives `using`, la gestion des erreurs et des commentaires pour plus de clarté. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +Exécutez le projet (`dotnet run`), et vous devriez voir le message de succès suivi d'un nouveau `output.pdf` créé. + +## Questions fréquentes & cas particuliers + +### Puis‑je **convertir du HTML en PDF** depuis une URL au lieu d'un fichier local ? + +Absolument. Remplacez simplement le chemin du fichier par une chaîne d'URL : + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +Aspose.HTML téléchargera la page, résoudra les ressources externes et la rendra. + +### Qu'en est‑il des **gros fichiers HTML** ou **des pages multiples** ? + +Aspose.HTML diffuse le contenu, de sorte que l'utilisation de la mémoire reste raisonnable. Si vous avez besoin que chaque section HTML apparaisse sur une page PDF distincte, insérez des sauts de page manuels dans le HTML : + +```html +
+``` + +### Cela fonctionne‑t‑il avec **.NET Core** et **.NET 7** ? + +Oui. La bibliothèque est multiplateforme ; assurez‑vous simplement de cibler un framework compatible (net6.0, net7.0, etc.) et d'installer le package NuGet correspondant. + +### Comment **intégrer des polices** pour une portabilité totale du PDF ? + +Définissez `pdfRenderOptions.FontProvider` comme montré précédemment, et activez également l'incorporation des polices : + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +Cela garantit que le PDF aura le même aspect sur n'importe quelle machine, même si la police n'est pas installée localement. + +## Exemple visuel + +![save html as pdf example](example.png){alt="exemple d'enregistrement du html en pdf"} + +*La capture d'écran montre le PDF généré ouvert dans Adobe Acrobat, conservant les styles gras/italique et les images fluides.* + +## Conclusion + +Nous avons couvert tout ce qu'il faut savoir pour **enregistrer du HTML en PDF** avec C#. De la charge du balisage, la configuration des options de rendu, à l'écriture du PDF final, le processus est simple et hautement personnalisable. + +En suivant ce guide, vous pouvez également **convertir du HTML en PDF**, **générer un PDF à partir de HTML**, et **créer un PDF avec des polices** pour tout scénario de génération de rapports ou de documents. N'hésitez pas à expérimenter avec des options supplémentaires — filigranes, chiffrement ou tailles de page personnalisées—car Aspose.HTML vous offre cette flexibilité. + +**Prochaines étapes** que vous pourriez explorer : + +- Utiliser la classe `PdfSaveOptions` pour définir la version du PDF ou le niveau de compression. +- Combiner plusieurs instances `HTMLDocument` en un seul PDF pour des rapports à sections multiples. +- Intégrer ce flux de travail dans une API ASP.NET Core afin que votre service web puisse renvoyer des PDFs à la demande. + +Des questions sur des cas particuliers ou besoin d'aide pour ajuster le pipeline de rendu ? Laissez un commentaire ci‑dessous, et bon codage ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/french/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/french/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..658fa46dd --- /dev/null +++ b/html/french/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,250 @@ +--- +category: general +date: 2026-02-27 +description: Enregistrer du HTML en ZIP avec C# ZipArchive – exemple pas à pas avec + un gestionnaire de ressources personnalisé, plus des conseils sur la façon d’exporter + du HTML en ZIP et de créer un code C# pour une archive zip. +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: fr +og_description: Enregistrez le HTML au format ZIP avec C# ZipArchive. Apprenez à exporter + du HTML en ZIP grâce à un exemple complet, un gestionnaire de ressources personnalisé + et les meilleures pratiques. +og_title: Enregistrer le HTML en ZIP avec C# – Guide complet +tags: +- C# +- ZipArchive +- HTML export +title: Enregistrer le HTML en ZIP avec C# – Guide complet +url: /fr/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Enregistrer du HTML au format ZIP en C# – Guide complet + +Vous avez déjà eu besoin d'**enregistrer du HTML au format ZIP** sans savoir quelles classes .NET utiliser ? Vous n'êtes pas seul — de nombreux développeurs rencontrent ce problème lorsqu'ils souhaitent regrouper une page web avec ses ressources pour une utilisation hors ligne ou pour la distribution. La bonne nouvelle ? Avec le `System.IO.Compression.ZipArchive` intégré, vous pouvez le faire en quelques lignes, et vous disposerez d'une méthode propre pour contrôler la façon dont chaque ressource est écrite. + +Dans ce tutoriel, nous parcourrons un **exemple complet et exécutable** qui montre exactement comment exporter un document HTML dans un fichier ZIP, en utilisant un `ResourceHandler` personnalisé pour diffuser chaque ressource dans l'archive. En chemin, nous ajouterons quelques extraits **c# ziparchive example**, discuterons **de comment exporter html to zip** dans des scénarios réels, et soulignerons les différences subtiles lorsqu'on veut **create zip archive c#** des programmes robustes. + +> **Prérequis** – Vous aurez besoin de .NET 6+ (ou .NET Core 3.1) et d’une référence à la bibliothèque qui fournit `HTMLDocument`, `HTMLSaveOptions` et `ResourceHandler`. Si vous utilisez Aspose.HTML ou un package similaire, ajoutez‑le simplement via NuGet. Aucun autre outil tiers n’est requis. + +--- + +## Ce que couvre ce tutoriel + +- Configurer un **ZipArchive** qui recevra le fichier HTML et ses ressources liées. +- Implémenter un **gestionnaire de ressources personnalisé** (`ZipHandler`) qui dirige chaque flux de ressource vers l'archive. +- Utiliser **HTMLSaveOptions** pour tout assembler et réellement **save HTML as ZIP**. +- Pièges courants liés aux chemins, aux entrées dupliquées et aux gros actifs. +- Astuces pour étendre la solution — comme ajouter un fichier manifeste ou chiffrer le ZIP. + +À la fin, vous disposerez d’une méthode autonome que vous pourrez intégrer à n’importe quel projet C# pour **save html as zip** en toute confiance. + +--- + +## Étape 1 : Ajouter les espaces de noms requis + +Avant que le code ne s’exécute, assurez‑vous que le compilateur connaît les classes de compression et la bibliothèque HTML que vous utilisez. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*Pourquoi c’est important :* `System.IO.Compression` vous fournit `ZipArchive`, tandis que les espaces de noms `Aspose.Html` exposent `HTMLDocument`, `HTMLSaveOptions` et la classe de base `ResourceHandler` que nous allons étendre. Si vous utilisez un moteur HTML différent, cherchez les types analogues. + +--- + +## Étape 2 : Créer un gestionnaire de ressources personnalisé (Mot‑clé principal en action) + +Le cœur du **saving HTML as ZIP** consiste à indiquer au moteur où chaque ressource externe (images, CSS, scripts) doit être placée. En héritant de `ResourceHandler`, nous obtenons le contrôle du flux qui reçoit les données. + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**Points clés** + +- `info.Uri` est l’URL relative que le moteur HTML tente d’écrire. L’utiliser comme nom d’entrée conserve la structure de dossiers à l’intérieur du ZIP. +- `CreateEntry` crée automatiquement les répertoires nécessaires ; vous n’avez pas à les gérer vous‑même. +- Retourner le flux ouvert permet au moteur de diffuser les données directement—pas de fichiers temporaires, pas de copies supplémentaires en mémoire. + +--- + +## Étape 3 : Initialiser le ZipArchive + +Nous créons maintenant un `ZipArchive` en mode **Update**. Ce mode nous permet d’ajouter des entrées au fur et à mesure, et aussi de remplacer les existantes si vous exécutez le code plusieurs fois. + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*Astuce pro :* Utilisez `FileMode.Create` pour écraser tout fichier précédent, ou passez à `FileMode.OpenOrCreate` si vous souhaitez ajouter à une archive existante. Enveloppez également le `ZipArchive` dans une instruction `using`—cela garantit que l’archive est correctement libérée et que le handle du fichier est fermé. + +--- + +## Étape 4 : Charger le document HTML à exporter + +C’est ici que vous indiquez à la bibliothèque le fichier HTML source. Le document peut référencer des CSS, des images ou des fichiers JavaScript qui se trouvent à côté. + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +Si votre HTML contient des URL relatives, assurez‑vous que le répertoire de travail du processus correspond au dossier contenant ces actifs. Sinon, le moteur ne pourra pas les localiser et le ZIP manquera ces fichiers. + +--- + +## Étape 5 : Configurer les options d’enregistrement – Le vrai moment du “Save HTML as ZIP” + +Nous associons maintenant le `ZipHandler` aux `HTMLSaveOptions`. Définir le `SaveFormat` sur `ZIP` indique à la bibliothèque de tout regrouper, tandis que notre gestionnaire décide où chaque élément va. + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*Pourquoi c’est important :* Sans définir `ResourceHandler`, la bibliothèque reviendrait à écrire les ressources sur le système de fichiers, ce qui annule l’objectif de **how to export html to zip** dans une archive unique. + +--- + +## Étape 6 : Effectuer l’opération d’enregistrement + +Enfin, demandez au document de s’enregistrer en utilisant les options que nous venons de créer. La bibliothèque invoquera `ZipHandler.HandleResource` pour chaque ressource externe rencontrée. + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +Lorsque le bloc `using` pour `zipArchive` se termine, l’archive est finalisée et le fichier est prêt à être distribué. + +--- + +## Exemple complet fonctionnel (Toutes les étapes combinées) + +Voici le programme complet que vous pouvez copier‑coller dans une application console. Il illustre un **c# ziparchive example** qui **creates zip archive c#** et répond pleinement à **how to export html to zip**. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**Résultat attendu :** Après l’exécution du programme, `output.zip` contiendra `index.html` (ou le nom que vous avez configuré) ainsi que chaque image, feuille de style et script référencés par la page d’origine, en conservant la hiérarchie des dossiers. Ouvrez le ZIP, extrayez‑le et double‑cliquez sur `index.html`—la page doit s’afficher exactement comme en ligne, mais maintenant sous forme de package portable. + +--- + +## Cas limites courants & comment les gérer + +| Situation | Pourquoi cela se produit | Solution proposée | +|-----------|--------------------------|-------------------| +| **Noms de ressources dupliqués** (ex. : deux images portant le même nom dans des dossiers différents) | `CreateEntry` lèvera une `InvalidOperationException` si le nom d’entrée exact existe déjà. | Préfixez l’entrée avec son chemin relatif (`info.Uri` le fait déjà) ou nettoyez manuellement les noms avant de créer l’entrée. | +| **Gros actifs binaires** (vidéos, images haute résolution) | Le streaming direct vers le zip fonctionne, mais la taille de tampon par défaut peut entraîner une forte consommation mémoire. | Surchargez `HandleResource` pour envelopper le flux retourné dans un `BufferedStream` avec un tampon modeste (ex. : 64 KB). | +| **Ressources manquantes** | Si le HTML contient un lien cassé, le gestionnaire reçoit une requête pour un fichier inexistant, ce qui crée une entrée vide. | Vérifiez `File.Exists` avant de créer l’entrée, ou consignez un avertissement afin de savoir ce qui manque. | +| **Noms de fichiers Unicode** | Certains outils ZIP anciens gèrent mal les noms d’entrée UTF‑8. | Assurez‑vous d’utiliser .NET 6+, qui écrit en UTF‑8 par défaut. Si vous avez besoin de compatibilité legacy, définissez `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);`. | +| **Besoin d’un manifeste** (liste des fichiers dans le zip) | Les consommateurs veulent parfois un `manifest.json` pour la validation. | Après l’enregistrement principal, créez une nouvelle entrée `"manifest.json"` et écrivez une liste JSON de `zipArchive.Entries`. | + +--- + +## Astuces pro pour des implémentations **Save HTML as ZIP** prêtes pour la production + +1. **Validez la sortie** – Après l’enregistrement, ouvrez le ZIP programmatique­ment et vérifiez que `index.html` existe et que chaque entrée a un `Length` > 0. Cela détecte les échecs silencieux tôt. +2. **Parallélisez les gros actifs** – Si vous avez des dizaines de mégaoctets d’images, envisagez de mettre les appels `HandleResource` dans une file d’attente `Task` et d’écrire dans l’archive de façon concurrente (tout en respectant la contrainte d’écriture unique de `ZipArchive`). +3. **Compressez intelligemment** – `ZipArchive` utilise Deflate par défaut. Pour les fichiers déjà compressés (JPEG, PNG), vous pouvez définir `entry.CompressionLevel = CompressionLevel.NoCompression` afin d’accélérer l’opération. +4. **Sécurité** – Si le ZIP + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/french/net/working-with-html-documents/_index.md b/html/french/net/working-with-html-documents/_index.md index e18bb71d7..d3ed8d3cc 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 ZIP en C# – Guide complet avec un gestionnaire de ressources personnalisé](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) + ### [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/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/french/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..7e21ed6ff --- /dev/null +++ b/html/french/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-02-27 +description: Enregistrez le HTML en ZIP en C# à l'aide d'un gestionnaire de ressources + personnalisé et créez une archive ZIP en C#. Suivez ce tutoriel étape par étape + pour regrouper le HTML et ses ressources. +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: fr +og_description: Enregistrez du HTML en ZIP avec C# et un gestionnaire de ressources + personnalisé. Apprenez à créer une archive ZIP en C# et à intégrer des ressources + sans effort. +og_title: Enregistrer le HTML en ZIP avec C# – Tutoriel complet +tags: +- Aspose.HTML +- C# +- ZIP +title: Enregistrer le HTML en ZIP en C# – Guide complet avec gestionnaire de ressources + personnalisé +url: /fr/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Enregistrer du HTML en ZIP en C# – Guide complet avec gestionnaire de ressources personnalisé + +Vous vous êtes déjà demandé comment **enregistrer du HTML en ZIP** en C# sans vous arracher les cheveux ? Vous n'êtes pas le seul — de nombreux développeurs se heurtent à un mur lorsqu'ils doivent livrer une page HTML avec des images, du CSS ou des fichiers JavaScript. Bonne nouvelle ? Avec Aspose.HTML, vous pouvez le faire en quelques étapes simples, et un **gestionnaire de ressources personnalisé** rend le processus indolore. + +Dans ce tutoriel, nous passerons en revue tout ce que vous devez savoir : de l'installation de la bibliothèque, à l'écriture d'un gestionnaire qui diffuse les ressources directement dans une **archive ZIP créée en C#**, jusqu'à la vérification du package final. À la fin, vous disposerez d'une solution prête à l'emploi que vous pourrez intégrer à n'importe quel projet .NET. + +![Exemple d'enregistrement HTML en ZIP](/images/save-html-as-zip.png "Diagramme montrant le HTML enregistré en fichier ZIP") + +## Enregistrer du HTML en ZIP – Ce que couvre ce guide + +Nous couvrirons l'ensemble du pipeline : + +1. **Prerequisites** – les outils et packages minimaux dont vous avez besoin. +2. **Custom resource handler** – pourquoi vous en avez besoin et comment le mettre en œuvre. +3. **Creating a ZIP archive in C#** – en utilisant `System.IO.Compression`. +4. **Configuring Aspose.HTML save options** pour pointer vers le gestionnaire. +5. **Running the code** et vérifier la sortie. + +Si vous êtes à l'aise avec la syntaxe C# de base et que vous avez Visual Studio (ou VS Code) installé, vous êtes prêt à plonger. Aucune documentation externe n'est requise — tout se trouve ici. + +--- + +## Étape 1 : Configurer le projet et installer Aspose.HTML + +Avant d'écrire du code, assurez-vous que votre projet peut référencer la bibliothèque Aspose.HTML. + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*Pro tip :* Le dernier package NuGet (en date de février 2026) cible .NET 6+, vous pouvez donc utiliser le projet de type SDK moderne sans vous soucier des frameworks hérités. + +Une fois le package restauré, ouvrez `Program.cs`. Nous remplacerons le contenu par défaut par l'exemple complet plus tard, mais pour l'instant laissez simplement le fichier ouvert. + +## Implémenter un gestionnaire de ressources personnalisé + +### Pourquoi un gestionnaire de ressources personnalisé ? + +Lorsque Aspose.HTML enregistre un document HTML sous forme de package ZIP, il doit récupérer chaque ressource externe (images, polices, scripts) et les écrire quelque part. Le comportement par défaut les écrit dans un dossier temporaire sur le disque. En fournissant un **custom resource handler**, vous indiquez à la bibliothèque exactement où chaque ressource doit être placée — dans notre cas, directement dans l'archive ZIP. Cela évite des I/O supplémentaires, garde tout organisé et vous donne un contrôle total sur le nommage. + +### Code : la classe du gestionnaire + +Créez un nouveau fichier de classe nommé `MyHandler.cs` (ou placez-le dans `Program.cs` si vous préférez une démonstration en un seul fichier). + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**Explication :** +* `ResourceHandler` est une classe abstraite d'Aspose.HTML qui vous permet d'intercepter la récupération des ressources. +* En renvoyant le `Stream` obtenu via `ZipArchiveEntry.Open()`, nous fournissons à la bibliothèque un tuyau d'écriture directement dans le fichier ZIP. Aucun fichier temporaire, aucun nettoyage supplémentaire. + +## Créer l'archive ZIP en C# + +Maintenant que le gestionnaire est prêt, nous avons besoin d'un endroit où il pourra écrire. La classe .NET `ZipArchive` fait le gros du travail. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### Ce que cela fait + +1. **Creates an in‑memory HTML document** avec une référence à `logo.png`. +2. **Opens a `FileStream`** qui deviendra `output.zip`. +3. **Assigns the `ZipArchive`** au champ static de `MyHandler`. +4. **Sets `HTMLSaveOptions`** à `SaveFormat.ZIP` et attache notre gestionnaire. +5. **Calls `document.Save`** – Aspose.HTML analyse le HTML, récupère `logo.png` et le diffuse dans l'archive via `MyHandler`. + +Comme le gestionnaire utilise l'URI de la ressource (`logo.png`) comme nom d'entrée, le ZIP résultant contient un fichier portant exactement ce nom, préservant le chemin relatif d'origine. + +## Configurer les options d'enregistrement pour le package ZIP + +L'objet `HTMLSaveOptions` est l'endroit où vous indiquez à Aspose.HTML **comment** empaqueter la sortie. En plus du `ResourceHandler`, vous pouvez ajuster quelques propriétés utiles : + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*Why care about `EnableCompression`?* +Si vous travaillez avec de grandes images, activer la compression peut réduire l'archive finale jusqu'à 70 %. Cependant, pour les PNG déjà compressés, le gain est modeste, vous pouvez donc la désactiver pour accélérer l'opération d'enregistrement. + +## Exécuter le code et vérifier la sortie + +Compile and run the program: + +```bash +dotnet run +``` + +Vous devriez voir le message de succès affiché dans la console. Accédez au répertoire indiqué et ouvrez `output.zip`. À l'intérieur vous trouverez : + +- `index.html` – le fichier HTML enregistré. +- `logo.png` – l'image référencée dans le balisage. + +Ouvrez `index.html` directement depuis le ZIP (la plupart des explorateurs de fichiers OS vous permettent de le prévisualiser) et vous verrez le titre et l'image rendus exactement comme dans la chaîne originale. + +**Cas particuliers à considérer** + +| Situation | Action | +|-----------|--------| +| Le HTML référence une **URL distante** (par ex., `https://example.com/style.css`) | Le gestionnaire recevra toujours un `ResourceInfo.Uri`. Assurez‑vous que votre environnement peut atteindre l'URL, ou pré‑téléchargez la ressource et ajustez le HTML vers un chemin local. | +| Vous avez besoin d'une **hiérarchie de dossiers** à l'intérieur du ZIP (par ex., `images/logo.png`) | Modifiez `HandleResource` pour préfixer un nom de dossier : `var entry = ZipArchive.CreateEntry($"assets/{info.Uri}");` | +| La ressource **ne parvient pas à se charger** (404) | Le gestionnaire sera appelé, mais le flux recevra zéro octet. Enveloppez l'appel à `Save` dans un `try/catch` et inspectez `info.Status` si vous avez besoin d'une gestion d'erreur personnalisée. | + +## Récapitulatif : Enregistrer du HTML en ZIP en un flux compact + +- **Primary Goal:** Regrouper une page HTML et tous ses actifs externes dans un seul fichier ZIP en utilisant C#. +- **Key Tools:** Aspose.HTML (`HTMLDocument`, `HTMLSaveOptions`), `System.IO.Compression.ZipArchive`, et un **custom resource handler**. +- **Result:** Un `output.zip` portable qui peut être distribué, stocké ou envoyé sur le réseau, et extrait plus tard sans perdre les liens des ressources. + +## Et après ? Étendre le flux de travail + +Maintenant que vous avez maîtrisé **save HTML as ZIP**, vous pourriez vouloir explorer des scénarios connexes : + +- **Save HTML as PDF** – remplacez `SaveFormat.ZIP` par `SaveFormat.PDF` et ajustez les options en conséquence. +- **Embed fonts** – utilisez `@font-face` dans votre HTML et laissez le gestionnaire capturer les fichiers de police. +- **Batch processing** – parcourez une collection de chaînes HTML, en réutilisant le même `ZipArchive` pour créer un package multi‑document. + +Tous ces scénarios reposent sur le même modèle de **custom resource handler** et la technique de **create ZIP archive in C#** que vous venez d'apprendre. + +### Réflexions finales + +Vous venez de voir à quel point il est simple de **save HTML as ZIP** en C# lorsque vous laissez Aspose.HTML + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/german/net/generate-jpg-and-png-images/_index.md b/html/german/net/generate-jpg-and-png-images/_index.md index 8c24c4537..82328cd6c 100644 --- a/html/german/net/generate-jpg-and-png-images/_index.md +++ b/html/german/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML-Dokumente bearbeiten, HTML Erfahren Sie, wie Sie beim Konvertieren von DOCX-Dokumenten in PNG oder JPG Antialiasing aktivieren, um hochwertige Bilder zu erhalten. ### [DOCX in PNG konvertieren – ZIP-Archiv erstellen C#‑Tutorial](./convert-docx-to-png-create-zip-archive-c-tutorial/) Erfahren Sie, wie Sie DOCX‑Dateien in PNG‑Bilder umwandeln und diese in ein ZIP‑Archiv packen – Schritt‑für‑Schritt‑Anleitung in C#. +### [PNG aus HTML in C# erstellen – Schritt‑für‑Schritt‑Anleitung](./create-png-from-html-in-c-step-by-step-guide/) +Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML in PNG-Bilder konvertieren – eine detaillierte Schritt‑für‑Schritt‑Anleitung. ## Abschluss diff --git a/html/german/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/german/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..cbe7c0712 --- /dev/null +++ b/html/german/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,211 @@ +--- +category: general +date: 2026-02-27 +description: Erstellen Sie schnell PNG aus HTML mit Aspose.HTML in C#. Lernen Sie, + HTML in ein Bild zu rendern, Bildbreite und -höhe festzulegen und HTML in PNG zu + konvertieren – in wenigen Minuten. +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: de +og_description: Erstellen Sie PNG aus HTML mit Aspose.HTML. Dieser Leitfaden zeigt, + wie Sie HTML in ein Bild rendern, Bildbreite und -höhe festlegen und HTML effizient + in PNG konvertieren. +og_title: PNG aus HTML in C# erstellen – Vollständiges Tutorial +tags: +- Aspose.HTML +- C# +- Image Rendering +title: PNG aus HTML in C# erstellen – Schritt‑für‑Schritt‑Anleitung +url: /de/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PNG aus HTML in C# erstellen – Komplettes Tutorial + +Haben Sie jemals **PNG aus HTML erstellen** müssen, waren sich aber nicht sicher, welche Bibliothek pixelgenaue Ergebnisse liefert? Sie sind nicht allein – viele Entwickler stoßen auf dasselbe Problem, wenn sie versuchen, eine Webseite in ein statisches Bild für E‑Mails, Berichte oder Thumbnails zu verwandeln. + +Die gute Nachricht? Mit Aspose.HTML können Sie **HTML in ein Bild rendern**, die genauen Abmessungen steuern und **HTML als PNG speichern** mit nur wenigen Zeilen C#. In diesem Tutorial führen wir Sie durch den gesamten Prozess, vom Laden Ihrer HTML‑Datei über das Anpassen des Text‑Hintings bis hin zum Schreiben einer PNG‑Datei auf die Festplatte. Am Ende wissen Sie, wie Sie **Bildbreite und -höhe programmatisch festlegen** und haben ein wiederverwendbares Snippet, das Sie in jedes .NET‑Projekt einbinden können. + +> **Voraussetzungen:** .NET 6+ (oder .NET Framework 4.6.2+), Aspose.HTML für .NET über NuGet installiert und Grundkenntnisse in C#. Keine weiteren externen Tools erforderlich. + +--- + +## Was Sie lernen werden + +- Wie man ein HTML‑Dokument mit Aspose.HTML lädt. +- Der Unterschied zwischen `ImageRenderingOptions` und `TextOptions` und warum er wichtig ist. +- Wie man **HTML in PNG konvertiert**, wobei Schriftarten, Antialiasing und Unterstreichungsstile erhalten bleiben. +- Tipps zur Fehlersuche bei häufigen Problemen wie fehlenden Schriftarten oder unerwarteten Bildgrößen. +- Ein vollständiges, sofort ausführbares Code‑Beispiel, das Sie in Visual Studio kopieren‑und‑einfügen können. + +## Schritt 1: HTML‑Dokument laden – Start der PNG‑Erstellung + +Zuerst benötigen wir ein `HTMLDocument`‑Objekt, das auf die Quelldatei verweist. Dies ist die Grundlage für jede **PNG aus HTML erstellen**‑Operation. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*Warum dieser Schritt wichtig ist:* Die Klasse `HTMLDocument` analysiert das Markup, löst CSS auf und baut ein DOM, das die Rendering‑Engine später auf ein Bitmap malen kann. Wenn der Pfad falsch ist, wirft der nachfolgende **render html to image**‑Schritt eine `FileNotFoundException`. + +## Schritt 2: Bildbreite und -höhe festlegen – Steuerung der Ausgabengröße + +Wenn Sie **HTML in ein Bild rendern**, benötigen Sie oft eine bestimmte Auflösung – denken Sie an ein Thumbnail, das exakt 1200 × 800 Pixel groß sein muss. Hier kommt `ImageRenderingOptions` zum Einsatz. + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*Pro‑Tipp:* Wenn Sie `Width` und `Height` weglassen, verwendet Aspose.HTML die natürliche Seitengröße, die für E‑Mail‑Einbettungen zu groß sein kann. + +## Schritt 3: Text‑Rendering feinjustieren – Text scharf darstellen + +Text unter Linux wirkt oft unscharf, wenn kein Hinting aktiviert ist. Das Objekt `TextOptions` ermöglicht es Ihnen, dies zu steuern, sodass das endgültige PNG auf jeder Plattform scharf aussieht. + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*Warum Hinting?* Hinting passt die Form jedes Glyphen an das Pixelraster an, was entscheidend ist, wenn Sie **HTML in PNG konvertieren** für Displays mit niedriger Auflösung. + +## Schritt 4: Optionen kombinieren und Styling hinzufügen – Vollständige Render‑Konfiguration + +Jetzt verbinden wir die Bild‑ und Texteinstellungen und zeigen, wie man einen globalen Schriftstil anwendet, z. B. die Unterstreichung jedes Textabschnitts. Dieser Schritt ist der, in dem Sie wirklich **HTML als PNG speichern** mit benutzerdefiniertem Styling. + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*Hinweis:* `WebFontStyle` unterstützt viele Flags (Bold, Italic usw.). Sie können sie mit einem bitweisen OR kombinieren, wenn Sie mehrere Stile benötigen. + +## Schritt 5: Rendern und speichern – Der Moment, in dem Sie **PNG aus HTML erstellen** + +Mit allen Einstellungen ist der abschließende Aufruf ein Einzeiler, der das DOM auf ein Bitmap malt und es auf die Festplatte schreibt. + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +Nachdem diese Zeile ausgeführt wurde, finden Sie `output.png` im angegebenen Ordner, exakt 1200 × 800 Pixel, mit antialiasierten Grafiken und gehintetem Text. + +## Vollständiges funktionierendes Beispiel – Einfügen, ausführen, prüfen + +Unten finden Sie das vollständige Programm, das Sie als Konsolenanwendung kompilieren können. Es enthält alle using‑Anweisungen, Fehlerbehandlung und Kommentare, die Sie benötigen. + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**Erwartetes Ergebnis:** Eine Datei namens `output.png` erscheint neben Ihrer ausführbaren Datei und zeigt die gerenderte Version von `sample.html`. Öffnen Sie sie mit einem beliebigen Bildbetrachter, um die Abmessungen und das Styling zu überprüfen. + +## Häufige Fallstricke & wie man sie vermeidet + +| Problem | Symptom | Lösung | +|---------|----------|--------| +| Fehlende Schriftarten | Text erscheint als generisches Sans‑Serif | Installieren Sie die erforderlichen Schriftarten auf dem Hostsystem oder betten Sie Web‑Fonts in das HTML ein. | +| Falsche Abmessungen | PNG ist größer oder kleiner als erwartet | Überprüfen Sie die Werte `Width` und `Height` in `ImageRenderingOptions`. | +| Unscharfe Kanten | Kein Antialiasing | Stellen Sie sicher, dass `UseAntialiasing = true`. | +| Rendering‑Artefakte unter Linux | Text wirkt unscharf | Setzen Sie `UseHinting = true` in `TextOptions`. | + +*Pro‑Tipp:* Wenn Sie **HTML in ein Bild rendern** auf einem headless Server, stellen Sie sicher, dass der Server die notwendigen Systembibliotheken (z. B. `libgdiplus` unter Linux) hat, sonst kann Aspose.HTML auf einen Software‑Renderer mit reduzierter Qualität zurückgreifen. + +## Lösung erweitern – Nächste Schritte + +- **Batch‑Konvertierung:** Durchlaufen Sie eine Liste von HTML‑Dateien und rufen Sie die gleiche Rendering‑Logik auf, um eine Galerie von PNGs zu erzeugen. +- **Verschiedene Formate:** Ersetzen Sie `output.png` durch `output.jpg` oder `output.bmp`, indem Sie die Dateierweiterung ändern; Aspose.HTML wählt automatisch den richtigen Encoder. +- **Dynamische Größen:** Berechnen Sie `Width` und `Height` basierend auf dem Viewport‑Meta‑Tag des HTML für responsive Designs. +- **Wasserzeichen:** Verwenden Sie `Aspose.Html.Drawing`, um vor dem Speichern ein Logo zu überlagern. + +Diese Ideen ermöglichen es Ihnen, von einem einfachen **PNG aus HTML erstellen**‑Snippet zu einem vollwertigen Bildgenerierungs‑Service zu gelangen. + +## Fazit + +Wir haben alles durchgegangen, was Sie benötigen, um mit Aspose.HTML für .NET **PNG aus HTML zu erstellen**: das Laden des Dokuments, das Konfigurieren von **Bildbreite und -höhe**, das Feinjustieren von Text mit Hinting und schließlich **HTML als PNG zu speichern**. Das vollständige Code‑Beispiel kann direkt in Ihr Projekt übernommen werden, und die obigen Tipps sollten Sie vor häufigen Problemen bewahren. + +Jetzt, da Sie **HTML zuverlässig in ein Bild rendern** können, warum nicht mit verschiedenen Stilen, Batch‑Verarbeitung oder sogar der Konvertierung zu PDF in derselben Pipeline experimentieren? Der Himmel ist die Grenze, und der Code liegt bereits in Ihren Händen. + +Viel Spaß beim Coden, und teilen Sie gerne Ihre Ergebnisse oder stellen Sie Fragen in den Kommentaren! + +![Beispiel für PNG aus HTML](/images/create-png-from-html.png "PNG aus HTML erstellen mit Aspose.HTML") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/german/net/html-extensions-and-conversions/_index.md b/html/german/net/html-extensions-and-conversions/_index.md index 607896d28..dae8f8d8d 100644 --- a/html/german/net/html-extensions-and-conversions/_index.md +++ b/html/german/net/html-extensions-and-conversions/_index.md @@ -22,57 +22,63 @@ Bevor wir uns in die Tutorials vertiefen, sollten wir uns kurz ansehen, was Aspo ## HTML-Erweiterungen entmystifiziert -HTML-Erweiterungen sind eine wertvolle Ressource für Entwickler. Sie ermöglichen es Ihnen, die Funktionalität Ihrer Webanwendungen durch Hinzufügen benutzerdefinierter Elemente und Attribute zu erweitern. In dieser Tutorial-Reihe werden wir die verschiedenen HTML-Erweiterungen erkunden, die Aspose.HTML für .NET bietet. Sie erfahren, wie Sie diese Erweiterungen nahtlos in Ihre Projekte integrieren und Ihre Webanwendungen dynamischer und interaktiver gestalten können. +HTML-Erweiterungen sind eine wertvolle Ressource für Entwickler. Sie ermöglichen es Ihnen, die Funktionalität Ihrer Webanwendungen durch Hinzufügen benutzerdefinierter Elemente und Attribute zu erweitern. In dieser Tutorial‑Reihe werden wir die verschiedenen HTML-Erweiterungen erkunden, die Aspose.HTML für .NET bietet. Sie erfahren, wie Sie diese Erweiterungen nahtlos in Ihre Projekte integrieren und Ihre Webanwendungen dynamischer und interaktiver gestalten können. -## Umbau-Tutorials für alle Fälle +## Umbau‑Tutorials für alle Fälle -Bei der Webentwicklung müssen HTML-Dokumente häufig in verschiedene Formate konvertiert werden. Aspose.HTML für .NET vereinfacht diesen Prozess. Unsere Tutorials führen Sie durch die Schritte zur Konvertierung von HTML in PDF, Bildformate und mehr. Egal, ob Sie Berichte erstellen, Inhalte freigeben oder einfach die Benutzererfahrung verbessern möchten, diese Konvertierungs-Tutorials helfen Ihnen dabei. +Bei der Webentwicklung müssen HTML‑Dokumente häufig in verschiedene Formate konvertiert werden. Aspose.HTML für .NET vereinfacht diesen Prozess. Unsere Tutorials führen Sie durch die Schritte zur Konvertierung von HTML in PDF, Bildformate und mehr. Egal, ob Sie Berichte erstellen, Inhalte freigeben oder einfach die Benutzererfahrung verbessern möchten, diese Konvertierungs‑Tutorials helfen Ihnen dabei. ## Erste Schritte mit Aspose.HTML -Sind Sie bereit, loszulegen? Die Tutorials von Aspose.HTML für .NET richten sich sowohl an Anfänger als auch an erfahrene Entwickler. Egal, ob Sie neu bei HTML-Erweiterungen und -Konvertierungen sind oder fortgeschrittene Tipps suchen, unsere Schritt-für-Schritt-Anleitungen sind auf Ihre Bedürfnisse zugeschnitten. +Sind Sie bereit, loszulegen? Die Tutorials von Aspose.HTML für .NET richten sich sowohl an Anfänger als auch an erfahrene Entwickler. Egal, ob Sie neu bei HTML‑Erweiterungen und -Konvertierungen sind oder fortgeschrittene Tipps suchen, unsere Schritt‑für‑Schritt‑Anleitungen sind auf Ihre Bedürfnisse zugeschnitten. ## Warum Aspose.HTML für .NET? -Aspose.HTML für .NET ist nicht nur eine Bibliothek; es verändert die Welt der Webentwicklung grundlegend. Es bietet eine umfassende Palette an Funktionen und Tools, die Ihre HTML-bezogenen Aufgaben rationalisieren. Am Ende dieser Tutorials verfügen Sie über das Wissen und die Fähigkeiten, um das Potenzial von Aspose.HTML für .NET optimal zu nutzen. +Aspose.HTML für .NET ist nicht nur eine Bibliothek; es verändert die Welt der Webentwicklung grundlegend. Es bietet eine umfassende Palette an Funktionen und Tools, die Ihre HTML‑bezogenen Aufgaben rationalisieren. Am Ende dieser Tutorials verfügen Sie über das Wissen und die Fähigkeiten, um das Potenzial von Aspose.HTML für .NET optimal zu nutzen. ## Tutorials zu HTML-Erweiterungen und -Konvertierungen ### [Konvertieren Sie HTML in .NET in PDF mit Aspose.HTML](./convert-html-to-pdf/) -Konvertieren Sie HTML mühelos in PDF mit Aspose.HTML für .NET. Folgen Sie unserer Schritt-für-Schritt-Anleitung und entfesseln Sie die Leistungsfähigkeit der HTML-zu-PDF-Konvertierung. +Konvertieren Sie HTML mühelos in PDF mit Aspose.HTML für .NET. Folgen Sie unserer Schritt‑für‑Schritt‑Anleitung und entfesseln Sie die Leistungsfähigkeit der HTML‑zu‑PDF‑Konvertierung. ### [Konvertieren Sie EPUB in .NET mit Aspose.HTML in ein Bild](./convert-epub-to-image/) -Erfahren Sie, wie Sie mit Aspose.HTML für .NET EPUB in Bilder konvertieren. Schritt-für-Schritt-Anleitung mit Codebeispielen und anpassbaren Optionen. +Erfahren Sie, wie Sie mit Aspose.HTML für .NET EPUB in Bilder konvertieren. Schritt‑für‑Schritt‑Anleitung mit Codebeispielen und anpassbaren Optionen. ### [Konvertieren Sie EPUB in .NET mit Aspose.HTML in PDF](./convert-epub-to-pdf/) -Erfahren Sie, wie Sie mit Aspose.HTML für .NET EPUB in PDF konvertieren. Diese Schritt-für-Schritt-Anleitung umfasst Anpassungsoptionen, FAQs und mehr für eine nahtlose Dokumentkonvertierung. +Erfahren Sie, wie Sie mit Aspose.HTML für .NET EPUB in PDF konvertieren. Diese Schritt‑für‑Schritt‑Anleitung umfasst Anpassungsoptionen, FAQs und mehr für eine nahtlose Dokumentkonvertierung. ### [Konvertieren Sie EPUB in XPS in .NET mit Aspose.HTML](./convert-epub-to-xps/) -Erfahren Sie, wie Sie mit Aspose.HTML für .NET EPUB in XPS in .NET konvertieren. Folgen Sie unserer Schritt-für-Schritt-Anleitung für mühelose Konvertierungen. +Erfahren Sie, wie Sie mit Aspose.HTML für .NET EPUB in XPS in .NET konvertieren. Folgen Sie unserer Schritt‑für‑Schritt‑Anleitung für mühelose Konvertierungen. ### [Konvertieren Sie HTML in BMP in .NET mit Aspose.HTML](./convert-html-to-bmp/) Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML in BMP in .NET konvertieren. Umfassender Leitfaden für Webentwickler zur Nutzung von Aspose.HTML für .NET. ### [Konvertieren Sie HTML in .NET in DOC und DOCX mit Aspose.HTML](./convert-html-to-doc-docx/) -Erfahren Sie in dieser Schritt-für-Schritt-Anleitung, wie Sie die Leistung von Aspose.HTML für .NET nutzen. Konvertieren Sie HTML mühelos in DOCX und verbessern Sie Ihre .NET-Projekte. Legen Sie noch heute los! +Erfahren Sie in dieser Schritt‑für‑Schritt‑Anleitung, wie Sie die Leistung von Aspose.HTML für .NET nutzen. Konvertieren Sie HTML mühelos in DOCX und verbessern Sie Ihre .NET-Projekte. Legen Sie noch heute los! ### [Konvertieren Sie HTML in GIF in .NET mit Aspose.HTML](./convert-html-to-gif/) -Entdecken Sie die Leistungsfähigkeit von Aspose.HTML für .NET: Eine Schritt-für-Schritt-Anleitung zur Konvertierung von HTML in GIF. Voraussetzungen, Codebeispiele, FAQs und mehr! Optimieren Sie Ihre HTML-Manipulation mit Aspose.HTML. +Entdecken Sie die Leistungsfähigkeit von Aspose.HTML für .NET: Eine Schritt‑für‑Schritt‑Anleitung zur Konvertierung von HTML in GIF. Voraussetzungen, Codebeispiele, FAQs und mehr! Optimieren Sie Ihre HTML‑Manipulation mit Aspose.HTML. ### [Konvertieren Sie HTML in JPEG in .NET mit Aspose.HTML](./convert-html-to-jpeg/) -Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML in JPEG in .NET konvertieren. Eine Schritt-für-Schritt-Anleitung zur Nutzung der Leistungsfähigkeit von Aspose.HTML für .NET. Optimieren Sie Ihre Webentwicklungsaufgaben mühelos. +Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML in JPEG in .NET konvertieren. Eine Schritt‑für‑Schritt‑Anleitung zur Nutzung der Leistungsfähigkeit von Aspose.HTML für .NET. Optimieren Sie Ihre Webentwicklungsaufgaben mühelos. ### [Konvertieren Sie HTML in .NET in Markdown mit Aspose.HTML](./convert-html-to-markdown/) -Erfahren Sie, wie Sie HTML in .NET mit Aspose.HTML in Markdown konvertieren, um Inhalte effizient zu bearbeiten. Erhalten Sie eine Schritt-für-Schritt-Anleitung für einen nahtlosen Konvertierungsprozess. +Erfahren Sie, wie Sie HTML in .NET mit Aspose.HTML in Markdown konvertieren, um Inhalte effizient zu bearbeiten. Erhalten Sie eine Schritt‑für‑Schritt‑Anleitung für einen nahtlosen Konvertierungsprozess. ### [Konvertieren Sie HTML in MHTML in .NET mit Aspose.HTML](./convert-html-to-mhtml/) -Konvertieren Sie HTML in .NET in MHTML mit Aspose.HTML – Eine Schritt-für-Schritt-Anleitung zum effizienten Archivieren von Webinhalten. Erfahren Sie, wie Sie mit Aspose.HTML für .NET MHTML-Archive erstellen. +Konvertieren Sie HTML in .NET in MHTML mit Aspose.HTML – Eine Schritt‑für‑Schritt‑Anleitung zum effizienten Archivieren von Webinhalten. Erfahren Sie, wie Sie mit Aspose.HTML für .NET MHTML-Archive erstellen. ### [Konvertieren Sie HTML in PNG in .NET mit Aspose.HTML](./convert-html-to-png/) -Entdecken Sie, wie Sie mit Aspose.HTML für .NET HTML-Dokumente bearbeiten und konvertieren. Schritt-für-Schritt-Anleitung für effektive .NET-Entwicklung. +Entdecken Sie, wie Sie mit Aspose.HTML für .NET HTML‑Dokumente bearbeiten und konvertieren. Schritt‑für‑Schritt‑Anleitung für effektive .NET‑Entwicklung. ### [Konvertieren Sie HTML in TIFF in .NET mit Aspose.HTML](./convert-html-to-tiff/) -Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML in TIFF konvertieren. Folgen Sie unserer Schritt-für-Schritt-Anleitung zur effizienten Optimierung von Webinhalten. +Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML in TIFF konvertieren. Folgen Sie unserer Schritt‑für‑Schritt‑Anleitung zur effizienten Optimierung von Webinhalten. ### [Konvertieren Sie HTML in XPS in .NET mit Aspose.HTML](./convert-html-to-xps/) -Entdecken Sie die Leistungsfähigkeit von Aspose.HTML für .NET: Konvertieren Sie HTML mühelos in XPS. Voraussetzungen, Schritt-für-Schritt-Anleitung und FAQs inklusive. +Entdecken Sie die Leistungsfähigkeit von Aspose.HTML für .NET: Konvertieren Sie HTML mühelos in XPS. Voraussetzungen, Schritt‑für‑Schritt‑Anleitung und FAQs inklusive. ### [HTML in C# zippen – HTML in Zip speichern](./how-to-zip-html-in-c-save-html-to-zip/) -Erfahren Sie, wie Sie HTML-Inhalte mit Aspose.HTML für .NET in eine ZIP-Datei komprimieren und speichern. -### [HTML-Dokument mit formatiertem Text erstellen und in PDF exportieren – Vollständige Anleitung](./create-html-document-with-styled-text-and-export-to-pdf-full/) -Erfahren Sie, wie Sie ein HTML-Dokument mit formatiertem Text erstellen und es mit Aspose.HTML für .NET in ein PDF exportieren. +Erfahren Sie, wie Sie HTML‑Inhalte mit Aspose.HTML für .NET in eine ZIP‑Datei komprimieren und speichern. +### [HTML‑Dokument mit formatiertem Text erstellen und in PDF exportieren – Vollständige Anleitung](./create-html-document-with-styled-text-and-export-to-pdf-full/) +Erfahren Sie, wie Sie ein HTML‑Dokument mit formatiertem Text erstellen und es mit Aspose.HTML für .NET in ein PDF exportieren. ### [PDF aus HTML erstellen – C# Schritt‑für‑Schritt‑Anleitung](./create-pdf-from-html-c-step-by-step-guide/) Erstellen Sie PDF aus HTML mit C# – eine detaillierte Schritt‑für‑Schritt‑Anleitung mit Aspose.HTML für .NET. -### [HTML als ZIP speichern – Komplettes C#‑Tutorial](./save-html-as-zip-complete-c-tutorial/) +### [PDF aus HTML erstellen – Schritt‑für‑Schritt‑Anleitung für Entwickler](./create-pdf-from-html-step-by-step-guide-for-developers/) +Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML in PDF konvertieren – eine detaillierte Schritt‑für‑Schritt‑Anleitung für Entwickler. +### [HTML in ZIP speichern – Komplettes C#‑Tutorial](./save-html-as-zip-complete-c-tutorial/) Erfahren Sie, wie Sie HTML‑Inhalte mit Aspose.HTML für .NET in ein ZIP‑Archiv speichern – vollständige Schritt‑für‑Schritt‑Anleitung in C#. ### [HTML in ZIP speichern in C# – Komplettes In‑Memory‑Beispiel](./save-html-to-zip-in-c-complete-in-memory-example/) -Speichern Sie HTML-Inhalte in ein ZIP-Archiv komplett im Speicher mit Aspose.HTML für .NET. Schritt‑für‑Schritt‑Anleitung. +Speichern Sie HTML‑Inhalte in ein ZIP‑Archiv komplett im Speicher mit Aspose.HTML für .NET. Schritt‑für‑Schritt‑Anleitung. +### [HTML in ZIP speichern in C# – Vollständige Anleitung](./save-html-as-zip-in-c-complete-guide/) +Erfahren Sie, wie Sie HTML‑Inhalte mit Aspose.HTML für .NET in ein ZIP‑Archiv speichern – vollständige Schritt‑für‑Schritt‑Anleitung in C#. +### [HTML in PDF speichern in C# – Vollständige Anleitung mit Schriftarten](./save-html-as-pdf-in-c-complete-guide-with-fonts/) +Erfahren Sie, wie Sie HTML mit Aspose.HTML für .NET in PDF konvertieren und Schriftarten einbetten. Schritt‑für‑Schritt‑Beispiel. ## Abschluss diff --git a/html/german/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/german/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..3445e9f18 --- /dev/null +++ b/html/german/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,208 @@ +--- +category: general +date: 2026-02-27 +description: Erstelle PDF aus HTML schnell mit einem vollständigen C#‑Beispiel. Lerne, + HTML in PDF zu konvertieren, HTML als PDF zu speichern und HTML nach PDF zu exportieren + mit Best‑Practice‑Einstellungen. +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: de +og_description: Erstelle PDF aus HTML in C# mit einem sofort einsatzbereiten Beispiel. + Dieser Leitfaden führt dich durch das Konvertieren von HTML zu PDF, das Speichern + von HTML als PDF und das Exportieren von HTML zu PDF. +og_title: PDF aus HTML erstellen – Vollständiges C#‑Tutorial +tags: +- C# +- PDF +- HTML +title: PDF aus HTML erstellen – Schritt‑für‑Schritt‑Anleitung für Entwickler +url: /de/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +quote with > **Why this matters:** etc. Keep. + +Now produce final answer.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF aus HTML erstellen – Komplettes C#‑Tutorial + +Haben Sie jemals **PDF aus HTML erstellen** müssen, waren sich aber nicht sicher, welche API‑Aufrufe Sie verwenden sollen? Sie sind nicht allein. Egal, ob Sie ein Reporting‑Dashboard, einen Rechnungs‑Generator oder einen Exporter für statische Websites bauen, HTML in ein PDF zu verwandeln, ist eine häufige Anforderung moderner web‑zentrierter Apps. + +In diesem Tutorial führen wir Sie durch ein **vollständiges, ausführbares C#‑Beispiel**, das zeigt, wie Sie **HTML zu PDF konvertieren**, Render‑Optionen für ein klares Ergebnis konfigurieren und schließlich **HTML als PDF speichern** auf dem Datenträger. Am Ende haben Sie ein robustes, produktionsreifes Muster für **HTML nach PDF exportieren**, das Sie in jedes .NET‑Projekt einbinden können. + +## Was Sie lernen werden + +- Wie man eine lokale HTML‑Datei mit `HTMLDocument` lädt. +- Welche Render‑Optionen die Schriftstärke, Bildglättung und Text‑Hinting verbessern. +- Der genaue Aufruf zum **Exportieren von HTML nach PDF** mit einer einzigen `Save`‑Methode. +- Tipps zum Umgang mit großen Dokumenten, zum Debuggen häufiger Fallstricke und zur Verifizierung des Ergebnisses. +- Ein vollständiges Copy‑and‑Paste‑Code‑Beispiel, das Sie noch heute ausführen können. + +### Voraussetzungen + +- .NET 6+ (oder .NET Framework 4.7+). Die von uns verwendete API funktioniert auf beiden. +- Ein Verweis auf die hypothetische `HtmlToPdfLib` (ersetzen Sie ihn durch den Namen Ihrer tatsächlichen Bibliothek). +- Eine `input.html`‑Datei, die in einem von Ihnen kontrollierten Ordner liegt (wir nennen ihn `YOUR_DIRECTORY`). + +Wenn Sie diese Komponenten bereits haben, lassen Sie uns loslegen – keine zusätzliche Einrichtung erforderlich. + +## Schritt 1: Laden Sie das HTML‑Dokument, um **PDF aus HTML zu erstellen** + +Das Erste, was Sie benötigen, ist eine `HTMLDocument`‑Instanz, die auf die Quelldatei zeigt. Denken Sie daran, es ist wie das Öffnen eines Notizbuchs, bevor Sie mit dem Schreiben beginnen – ohne ein Dokument gibt es nichts zu rendern. + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **Warum das wichtig ist:** Das frühe Laden der HTML‑Datei ermöglicht es der Bibliothek, das DOM zu parsen, CSS aufzulösen und Bilder vorzupuffern. Das Überspringen dieses Schrittes oder das Einspeisen fehlerhaften HTML führt häufig zu leeren Seiten während der **HTML‑zu‑PDF‑Konvertierung**. + +## Schritt 2: Render‑Optionen für **HTML‑zu‑PDF‑Konvertierung** konfigurieren + +Render‑Optionen sind das geheime Gewürz, das ein einfaches PDF in ein professionell aussehendes Dokument verwandelt. Hier aktivieren wir fette Schriftarten, Antialiasing für Bilder und Hinting für Text – Funktionen, die die meisten Entwickler übersehen, die jedoch die visuelle Treue dramatisch verbessern. + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **Pro‑Tipp:** Wenn Sie mit einer markenspezifischen Schriftart arbeiten, setzen Sie ebenfalls `FontFamily` innerhalb von `pdfOptions`. Dies verhindert das Zurückfallen auf generische Schriftarten während des **Konvertierens von HTML zu PDF**. + +## Schritt 3: Datei speichern und **HTML nach PDF exportieren** + +Jetzt, wo das Dokument geladen und die Optionen abgestimmt sind, besteht der letzte Akt aus einer einzigen Zeile, die das PDF auf die Festplatte schreibt. Die `Save`‑Methode führt intern die **HTML‑zu‑PDF‑Konvertierung** durch und wendet alle von uns definierten Rendering‑Anpassungen an. + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **Was Sie sehen sollten:** Das Öffnen von `output.pdf` in einem beliebigen Viewer zeigt das ursprüngliche HTML‑Layout mit fetten Überschriften, glatten Bildern und scharfem Text. Wenn Ihnen fehlende Stile auffallen, überprüfen Sie, ob Ihre CSS‑Dateien relativ zu `input.html` erreichbar sind. + +![Beispiel für PDF aus HTML erstellen](/images/create-pdf-from-html.png "Screenshot des erzeugten PDFs – PDF aus HTML erstellen") + +*Der obige Screenshot (Alt‑Text: „Beispiel für PDF aus HTML erstellen“) zeigt ein gerendertes PDF, das das ursprüngliche HTML‑Styling beibehält.* + +## Häufige Fallstricke beim **Konvertieren von HTML zu PDF** + +Selbst bei einem unkomplizierten Ablauf stoßen Entwickler häufig auf Probleme. Im Folgenden finden Sie die drei häufigsten Probleme und wie Sie sie vermeiden können. + +### 1. Fehlende Ressourcen (Bilder, CSS, Schriftarten) + +Wenn Ihr HTML externe Ressourcen über relative Pfade referenziert, kann der Konverter sie möglicherweise nicht finden. Verwenden Sie stets absolute Pfade oder setzen Sie eine Basis‑URL: + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. Große Dokumente verursachen Zeitüberschreitungen + +Bei mehrseitigen Berichten erhöhen Sie die Timeout‑Einstellung der Bibliothek: + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. Schriftart‑Ersetzung führt zu unerwartetem Aussehen + +Geben Sie die exakt benötigte Schriftfamilie an: + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +Das frühzeitige Ansprechen dieser Punkte erspart Ihnen frustrierende Debug‑Sitzungen während **HTML als PDF speichern**‑Operationen. + +## Fortgeschritten: Hinzufügen einer Titelseite, bevor Sie **HTML nach PDF exportieren** + +Manchmal benötigen Sie ein benutzerdefiniertes Deckblatt – vielleicht eine Titelseite mit Logo. Sie können ein einfaches HTML‑Snippet vor dem Hauptdokument einfügen: + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **Warum Sie das tun:** Das Hinzufügen eines Deckblatts direkt im HTML hält die PDF‑Erzeugungspipeline einfach und vermeidet Nachbearbeitungs‑Tools wie iText oder PdfSharp. + +## Ausgabe programmgesteuert verifizieren + +Wenn Sie sicherstellen müssen, dass das PDF korrekt erzeugt wurde (z. B. in CI‑Pipelines), können Sie die Dateigröße oder die Seitenzahl prüfen: + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +Eine von Null verschiedene Seitenzahl bestätigt, dass der **HTML‑zu‑PDF‑Konvertierung**‑Schritt erfolgreich war. + +## Zusammenfassung & nächste Schritte + +Wir haben gerade ein **vollständiges, End‑to‑End‑Beispiel** dafür durchlaufen, wie man in C# **PDF aus HTML erstellt**. Der Ablauf ist: + +1. Laden Sie das Quell‑HTML (`HTMLDocument`). +2. Feinabstimmung des Renderings mit `PdfRenderingOptions`. +3. Rufen Sie `Save` auf, um **HTML nach PDF zu exportieren**. + +Ab hier könnten Sie folgendes erkunden: + +- **Batch‑Verarbeitung**: Durchlaufen Sie einen Ordner mit HTML‑Dateien und erzeugen Sie PDFs stapelweise. +- **Dynamisches HTML**: Verwenden Sie eine Razor‑View‑Engine, um HTML on‑the‑fly vor der Konvertierung zu erzeugen. +- **Sicherheit**: Sandboxing des Konvertierungsprozesses, wenn Sie benutzer‑bereitgestelltes HTML akzeptieren (verhindert Skript‑Injection). + +Fühlen Sie sich frei, mit verschiedenen Optionen zu experimentieren – vielleicht zu `PdfA`‑Konformität für Archivierungszwecke wechseln oder JavaScript für interaktive PDFs einbetten. Das Kernmuster bleibt gleich, und Sie haben nun eine zuverlässige Grundlage für jede **HTML als PDF speichern**‑Anforderung. + +--- + +*Viel Spaß beim Coden! Wenn Sie auf Eigenheiten stoßen, hinterlassen Sie unten einen Kommentar oder schauen Sie auf der GitHub‑Issues‑Seite der Bibliothek nach. Die Community teilt gerne Anpassungen, die die **HTML‑zu‑PDF‑Konvertierung** noch reibungsloser machen.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/german/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/german/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..adaa273e6 --- /dev/null +++ b/html/german/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,284 @@ +--- +category: general +date: 2026-02-27 +description: Speichern Sie HTML schnell als PDF in C# mit Aspose.HTML. Erfahren Sie, + wie Sie HTML in PDF konvertieren und PDF aus HTML mit benutzerdefinierten Schriftarten + und Styling in nur wenigen Schritten erzeugen. +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: de +og_description: Speichern Sie HTML schnell als PDF in C# mit Aspose.HTML. Dieses Tutorial + zeigt, wie man HTML in PDF konvertiert, PDF aus HTML erzeugt und benutzerdefinierte + Schriftarten anwendet. +og_title: HTML in PDF in C# speichern – Vollständiger Leitfaden mit Schriftarten +tags: +- csharp +- pdf +- html +title: HTML in PDF in C# speichern – Vollständiger Leitfaden mit Schriftarten +url: /de/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +? You’re not alone. Many developers hit this snag when they want to ship invoices, reports, or printable receipts directly from web content." => German. + +Proceed. + +Make sure to keep markdown formatting. + +Let's write. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML in PDF speichern in C# – Vollständige Anleitung mit Schriftarten + +Haben Sie jemals **HTML als PDF** aus einer C#‑Anwendung speichern müssen, waren sich aber nicht sicher, welche Bibliothek Sie wählen sollten? Sie sind nicht allein. Viele Entwickler stoßen auf dieses Problem, wenn sie Rechnungen, Berichte oder druckbare Quittungen direkt aus Web‑Inhalten versenden wollen. + +Die gute Nachricht? Mit Aspose.HTML können Sie **HTML in PDF konvertieren**, **PDF aus HTML erzeugen** und sogar **PDF mit Schriftarten erstellen** in nur wenigen Zeilen. In diesem Tutorial führen wir Sie durch den gesamten Prozess, erklären, warum jede Einstellung wichtig ist, und geben Ihnen ein sofort einsatzbereites Beispiel. + +## Was Sie lernen werden + +- Wie Sie eine lokale oder entfernte HTML‑Datei in C# laden +- Welche Rendering‑Optionen Ihnen fette/kursive Schriftarten, Antialiasing und Text‑Hinting ermöglichen +- Wie Sie das Ergebnis als PDF‑Datei auf dem Datenträger speichern +- Tipps zum Umgang mit benutzerdefinierten Schriftarten und häufigen Stolperfallen + +Vorkenntnisse mit Aspose.HTML sind nicht erforderlich – Sie benötigen lediglich eine .NET‑Entwicklungsumgebung (Visual Studio 2022 oder neuer) und das NuGet‑Paket Aspose.HTML für .NET. + +## Voraussetzungen + +| Anforderung | Warum es wichtig ist | +|-------------|----------------------| +| .NET 6.0 oder höher | Stellt die Laufzeit für Aspose.HTML bereit | +| Aspose.HTML für .NET (NuGet) | Die Bibliothek, die die eigentliche Arbeit übernimmt | +| Eine Beispiel‑HTML‑Datei (`sample.html`) | Unser Quellinhalt, der transformiert wird | +| Grundkenntnisse in C# | Zum Verständnis der Code‑Snippets | + +Wenn Sie diese Punkte haben, legen wir los. + +## Schritt 1: Aspose.HTML über NuGet installieren + +Öffnen Sie Ihr Projekt in Visual Studio, klicken Sie mit der rechten Maustaste auf den **Dependencies**‑Knoten und wählen Sie **Manage NuGet Packages**. Suchen Sie nach `Aspose.HTML` und klicken Sie auf **Install**. + +```powershell +dotnet add package Aspose.HTML +``` + +> **Pro‑Tipp:** Verwenden Sie die neueste stabile Version (Stand 2026‑02‑27 ist das 23.11), um die neuesten Rendering‑Verbesserungen zu erhalten. + +## Schritt 2: Das Quell‑HTML‑Dokument laden + +Das Erste, was wir benötigen, ist ein `HTMLDocument`‑Objekt, das auf unsere Datei zeigt. Diese Klasse analysiert das Markup, löst CSS auf und bereitet alles für das Rendering vor. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Warum dieser Schritt?** +> Das Laden des HTML in ein `HTMLDocument` trennt die Parsing‑Phase von der Rendering‑Phase, sodass Sie den DOM inspizieren oder zur Laufzeit Änderungen vornehmen können, bevor Sie das PDF tatsächlich erzeugen. + +## Schritt 3: PDF‑Rendering‑Optionen konfigurieren + +Aspose.HTML bietet Ihnen feinkörnige Kontrolle darüber, wie das endgültige PDF aussieht. In diesem Beispiel aktivieren wir fette + kursive Schriftstile, Antialiasing für glattere Grafiken und Text‑Hinting für schärfere Ausgabe bei niedriger DPI. + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### Warum diese Einstellungen? + +- **`FontStyle`** – Fügt alle ``‑ oder ``‑Tags mit der Basis­schrift zusammen, sodass das PDF das ursprüngliche Styling beibehält. +- **`UseAntialiasing`** – Reduziert gezackte Kanten bei Diagrammen, Symbolen oder sonstigem gerasterten Inhalt. +- **`UseHinting`** – Richten die Glyphen‑Konturen an Pixelgittern aus, was besonders hilfreich ist, wenn das PDF auf Geräten mit niedriger Auflösung angezeigt wird. + +Wenn Sie benutzerdefinierte Schriftarten benötigen (z. B. eine Unternehmens‑Brand‑Font), legen Sie die `.ttf`‑Dateien in einen Ordner und setzen `pdfRenderOptions.FontProvider` entsprechend. Das ist ein eigenes Thema, aber die Grundidee lautet: + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## Schritt 4: Das HTML‑Dokument in PDF rendern + +Jetzt kombinieren wir das Dokument mit den Optionen und lassen Aspose.HTML die Ausgabedatei schreiben. + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +Nachdem diese Zeile ausgeführt wurde, finden Sie `output.pdf` neben Ihrer ausführbaren Datei. Öffnen Sie sie – Sie sollten das ursprüngliche HTML mit fetten/kursiven Stilen, glatten Grafiken und scharfem Text sehen. + +> **Erwartetes Ergebnis:** +> Ein PDF, das das Layout von `sample.html` widerspiegelt, mit allen Überschriften fett, hervorgehobenem Text kursiv und allen eingebetteten Bildern ohne gezackte Kanten. + +## Schritt 5: Überprüfen und Feinjustieren (optional) + +### Schnelles Verifizierungsskript + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +Sie das PDF nicht wie gewünscht aussieht, berücksichtigen Sie diese häufigen Anpassungen: + +| Problem | Wahrscheinliche Ursache | Lösung | +|---------|--------------------------|--------| +| Fehlende Schriftarten | Schrift nicht eingebettet oder nicht gefunden | `FontProvider.AddFont` verwenden und sicherstellen, dass die Schriftdatei zugänglich ist | +| Bilder erscheinen unscharf | Antialiasing deaktiviert | `UseAntialiasing = true` setzen | +| Text wirkt zu dünn auf dem Bildschirm | Hinting deaktiviert | `UseHinting = true` aktivieren | +| Layout‑Verschiebung beim Seitenumbruch | CSS‑`page-break`‑Regeln ignoriert | Explizite `page-break-before/after` in Ihrem HTML/CSS hinzufügen | + +## Vollständiges funktionierendes Beispiel + +Unten finden Sie das komplette Programm, das Sie in eine neue Konsolen‑App kopieren können. Es enthält alle `using`‑Direktiven, Fehlerbehandlung und Kommentare zur Klarheit. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +Starten Sie das Projekt (`dotnet run`), und Sie sollten die Erfolgsmeldung sowie ein neu erstelltes `output.pdf` sehen. + +## Häufige Fragen & Sonderfälle + +### Kann ich **HTML zu PDF** von einer URL statt einer lokalen Datei **konvertieren**? + +Natürlich. Ersetzen Sie einfach den Dateipfad durch einen URL‑String: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +Aspose.HTML lädt die Seite, löst externe Ressourcen auf und rendert sie. + +### Was ist mit **großen HTML‑Dateien** oder **mehrseitigen Dokumenten**? + +Aspose.HTML streamt den Inhalt, sodass der Speicherverbrauch überschaubar bleibt. Wenn Sie jeden HTML‑Abschnitt auf einer separaten PDF‑Seite benötigen, fügen Sie manuelle Seitenumbrüche im HTML ein: + +```html +
+``` + +### Funktioniert das mit **.NET Core** und **.NET 7**? + +Ja. Die Bibliothek ist plattformübergreifend; stellen Sie nur sicher, dass Sie ein kompatibles Framework anvisieren (net6.0, net7.0 usw.) und das entsprechende NuGet‑Paket installieren. + +### Wie **betten ich Schriftarten** für volle PDF‑Portabilität ein? + +Setzen Sie `pdfRenderOptions.FontProvider` wie oben gezeigt und aktivieren Sie zudem das Einbetten von Schriftarten: + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +Damit sieht das PDF auf jeder Maschine gleich aus, selbst wenn die Schrift lokal nicht installiert ist. + +## Visuelles Beispiel + +![save html as pdf example](example.png){alt="Beispiel für HTML‑zu‑PDF"} + +*Der Screenshot zeigt das erzeugte PDF in Adobe Acrobat, wobei fette/kursive Stile und glatte Bilder erhalten bleiben.* + +## Fazit + +Wir haben alles behandelt, was Sie benötigen, um **HTML als PDF** mit C# zu speichern. Vom Laden des Markups, über das Konfigurieren der Rendering‑Optionen bis hin zum Schreiben des finalen PDFs – der Prozess ist unkompliziert und stark anpassbar. + +Indem Sie dieser Anleitung folgen, können Sie auch **HTML zu PDF konvertieren**, **PDF aus HTML generieren** und **PDF mit Schriftarten erstellen** für jede Berichts‑ oder Dokumentenerzeugungs‑Situation. Experimentieren Sie gern mit zusätzlichen Optionen – Wasserzeichen, Verschlüsselung oder benutzerdefinierte Seitengrößen – denn Aspose.HTML bietet Ihnen diese Flexibilität. + +**Nächste Schritte**, die Sie erkunden könnten: + +- Die Klasse `PdfSaveOptions` verwenden, um PDF‑Version oder Kompressionsgrad festzulegen. +- Mehrere `HTMLDocument`‑Instanzen zu einem einzigen PDF für mehrseitige Berichte kombinieren. +- Dieser Workflow in eine ASP.NET Core‑API integrieren, sodass Ihr Web‑Service PDFs auf Abruf zurückgeben kann. + +Haben Sie Fragen zu Sonderfällen oder benötigen Hilfe beim Feintuning der Rendering‑Pipeline? Hinterlassen Sie einen Kommentar unten, und happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/german/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/german/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..ddcb97d6f --- /dev/null +++ b/html/german/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,232 @@ +--- +category: general +date: 2026-02-27 +description: HTML als ZIP speichern mit C# ZipArchive – Schritt‑für‑Schritt‑Beispiel + mit einem benutzerdefinierten Ressourcen‑Handler, plus Tipps, wie man HTML in ZIP + exportiert und C#‑Code zum Erstellen eines ZIP‑Archivs. +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: de +og_description: Speichern Sie HTML als ZIP mit C# ZipArchive. Erfahren Sie, wie Sie + HTML in ZIP exportieren – mit einem vollständigen Beispiel, einem benutzerdefinierten + Ressourcen‑Handler und bewährten Methoden. +og_title: HTML als ZIP in C# speichern – Vollständige Anleitung +tags: +- C# +- ZipArchive +- HTML export +title: HTML als ZIP in C# speichern – Vollständiger Leitfaden +url: /de/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML als ZIP in C# speichern – Komplettanleitung + +Haben Sie jemals **HTML als ZIP speichern** müssen, waren sich aber nicht sicher, welche .NET‑Klassen Sie dafür verwenden sollen? Sie sind nicht allein – viele Entwickler stoßen auf dieses Problem, wenn sie eine Webseite zusammen mit ihren Assets für die Offline‑Nutzung oder zur Verteilung bündeln wollen. Die gute Nachricht? Mit dem integrierten `System.IO.Compression.ZipArchive` können Sie das in wenigen Zeilen erledigen und erhalten zudem eine saubere Möglichkeit, zu steuern, wie jede Ressource geschrieben wird. + +In diesem Tutorial führen wir Sie durch ein **vollständiges, ausführbares Beispiel**, das genau zeigt, wie ein HTML‑Dokument in eine ZIP‑Datei exportiert wird, wobei ein benutzerdefinierter `ResourceHandler` verwendet wird, um jedes Asset in das Archiv zu streamen. Unterwegs streuen wir ein paar **c# ziparchive example**‑Snippets ein, diskutieren **how to export html to zip** in real‑world‑Szenarien und weisen auf die feinen Unterschiede hin, wenn Sie **create zip archive c#**‑Programme robust gestalten wollen. + +> **Voraussetzungen** – Sie benötigen .NET 6+ (oder .NET Core 3.1) und einen Verweis auf die Bibliothek, die `HTMLDocument`, `HTMLSaveOptions` und `ResourceHandler` bereitstellt. Wenn Sie Aspose.HTML oder ein ähnliches Paket verwenden, fügen Sie es einfach über NuGet hinzu. Es werden keine weiteren Drittanbieter‑Tools benötigt. + +--- + +## Was dieses Tutorial abdeckt + +- Einrichten eines **ZipArchive**, das die HTML‑Datei und ihre verknüpften Ressourcen empfängt. +- Implementieren eines **custom resource handler** (`ZipHandler`), der jeden Ressourcen‑Stream in das Archiv leitet. +- Verwenden von **HTMLSaveOptions**, um alles zu verbinden und tatsächlich **HTML als ZIP speichern**. +- Häufige Fallstricke beim Umgang mit Pfaden, doppelten Einträgen und großen Assets. +- Tipps zur Erweiterung der Lösung – z. B. Hinzufügen einer Manifest‑Datei oder Verschlüsseln des ZIP. + +Am Ende haben Sie eine eigenständige Methode, die Sie in jedes C#‑Projekt einbinden können, um **save html as zip** mit Zuversicht auszuführen. + +## Schritt 1: Erforderliche Namespaces hinzufügen + +Bevor irgendein Code ausgeführt wird, stellen Sie sicher, dass der Compiler die Kompressionsklassen und die von Ihnen verwendete HTML‑Bibliothek kennt. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*Warum das wichtig ist:* `System.IO.Compression` stellt `ZipArchive` bereit, während die `Aspose.Html`‑Namespaces `HTMLDocument`, `HTMLSaveOptions` und die Basis‑Klasse `ResourceHandler` expose, die wir erweitern werden. Wenn Sie eine andere HTML‑Engine verwenden, suchen Sie nach ähnlichen Typen. + +## Schritt 2: Einen benutzerdefinierten Resource Handler erstellen (Primary Keyword in Action) + +Der Kern des **saving HTML as ZIP** besteht darin, der Engine mitzuteilen, wohin jede externe Ressource (Bilder, CSS, Skripte) gespeichert werden soll. Durch das Erben von `ResourceHandler` erhalten wir die Kontrolle über den Stream, der die Daten empfängt. + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**Wichtige Punkte** + +- `info.Uri` ist die relative URL, die die HTML‑Engine zu schreiben versucht. Die Verwendung als Eintragsname bewahrt die Ordnerstruktur im ZIP. +- `CreateEntry` erstellt automatisch alle benötigten Verzeichnisse; Sie müssen diese nicht selbst verwalten. +- Das Zurückgeben des geöffneten Streams ermöglicht es der Engine, die Daten direkt zu streamen – keine temporären Dateien, keine zusätzlichen Speicher‑Kopien. + +## Schritt 3: ZipArchive initialisieren + +Jetzt erzeugen wir ein `ZipArchive` im **Update**‑Modus. Dieser Modus ermöglicht es uns, Einträge nach und nach hinzuzufügen und vorhandene zu ersetzen, wenn Sie den Code mehrfach ausführen. + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*Pro‑Tipp:* Verwenden Sie `FileMode.Create`, um eine vorherige Datei zu überschreiben, oder wechseln Sie zu `FileMode.OpenOrCreate`, wenn Sie ein bestehendes Archiv anhängen möchten. Außerdem sollten Sie das `ZipArchive` in einer `using`‑Anweisung einbetten – das garantiert, dass das Archiv ordnungsgemäß freigegeben und der Dateihandle geschlossen wird. + +## Schritt 4: Das zu exportierende HTML‑Dokument laden + +Hier geben Sie der Bibliothek die Quelle‑HTML‑Datei an. Das Dokument kann CSS-, Bild- oder JavaScript‑Dateien referenzieren, die sich im selben Verzeichnis befinden. + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +Falls Ihr HTML relative URLs enthält, stellen Sie sicher, dass das Arbeitsverzeichnis des Prozesses dem Ordner entspricht, der diese Assets enthält. Andernfalls kann die Engine sie nicht finden und das ZIP wird diese Dateien nicht enthalten. + +## Schritt 5: Save‑Optionen konfigurieren – Der eigentliche „Save HTML as ZIP“-Moment + +Jetzt verbinden wir den `ZipHandler` mit den `HTMLSaveOptions`. Das Setzen von `SaveFormat` auf `ZIP` weist die Bibliothek an, alles zu bündeln, während unser Handler entscheidet, wohin jedes Teil geht. + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*Warum das wichtig ist:* Ohne das Setzen von `ResourceHandler` würde die Bibliothek Ressourcen auf das Dateisystem schreiben, was den Zweck von **how to export html to zip** in einem einzigen Archiv zunichte macht. + +## Schritt 6: Speichervorgang ausführen + +Zum Schluss lassen Sie das Dokument sich mit den gerade erstellten Optionen speichern. Die Bibliothek ruft `ZipHandler.HandleResource` für jedes externe Asset auf, das sie findet. + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +Wenn der `using`‑Block für `zipArchive` endet, wird das Archiv finalisiert und die Datei ist bereit für die Verteilung. + +## Vollständiges funktionierendes Beispiel (Alle Schritte kombiniert) + +Unten finden Sie das komplette Programm, das Sie in eine Konsolen‑App kopieren können. Es demonstriert ein **c# ziparchive example**, das **creates zip archive c#**‑Stil zeigt, und beantwortet vollständig **how to export html to zip**. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**Erwartetes Ergebnis:** Nachdem Sie das Programm ausgeführt haben, enthält `output.zip` `index.html` (oder den von Ihnen konfigurierten Namen) sowie jedes Bild, Stylesheet und Skript, das von der Originalseite referenziert wird, wobei die Ordnerhierarchie erhalten bleibt. Öffnen Sie das ZIP, extrahieren Sie und doppelklicken Sie auf `index.html` – die Seite sollte exakt so dargestellt werden wie online, ist jetzt jedoch ein tragbares Paket. + +## Häufige Randfälle & deren Handhabung + +| Situation | Warum es passiert | Vorgeschlagene Lösung | +|-----------|-------------------|-----------------------| +| **Doppelte Ressourcennamen** (z. B. zwei Bilder mit demselben Dateinamen in verschiedenen Ordnern) | `CreateEntry` wirft eine `InvalidOperationException`, wenn der exakte Eintragsname bereits existiert. | Vorsetzen des Eintrags mit seinem relativen Pfad (`info.Uri` erledigt das bereits) oder die Namen vor dem Erstellen des Eintrags manuell bereinigen. | +| **Große Binär‑Assets** (Videos, hochauflösende Bilder) | Direktes Streaming ins ZIP ist in Ordnung, aber die Standard‑Puffergröße kann zu hohem Speicherverbrauch führen. | `HandleResource` überschreiben, um den zurückgegebenen Stream in einen `BufferedStream` mit einem moderaten Puffer (z. B. 64 KB) zu verpacken. | +| **Fehlende Ressourcen** | Enthält das HTML einen defekten Link, erhält der Handler eine Anforderung für eine nicht vorhandene Datei, was zu einem leeren Eintrag führt. | `File.Exists` vor dem Erstellen des Eintrags prüfen oder eine Warnung protokollieren, damit Sie wissen, dass etwas fehlt. | +| **Unicode‑Dateinamen** | Einige ältere ZIP‑Tools gehen mit UTF‑8‑Eintragsnamen nicht korrekt um. | Stellen Sie sicher, dass Sie .NET 6+ verwenden, das standardmäßig UTF‑8 schreibt. Bei Bedarf an Legacy‑Kompatibilität setzen Sie `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);`. | +| **Benötigt ein Manifest** (Liste der Dateien im ZIP) | Verbraucher möchten manchmal ein `manifest.json` zur Validierung. | Nach dem Haupt‑Speichervorgang einen neuen Eintrag `"manifest.json"` erstellen und eine JSON‑Liste von `zipArchive.Entries` schreiben. | + +## Pro‑Tipps für produktionsreife **Save HTML as ZIP**‑Implementierungen + +1. **Validate the output** – Nach dem Speichern das ZIP programmgesteuert öffnen und prüfen, dass `index.html` existiert und dass jede Eintrags‑`Length` > 0 ist. Das fängt stille Fehler frühzeitig auf. +2. **Parallelize large assets** – Wenn Sie Dutzende Megabytes an Bildern haben, überlegen Sie, `HandleResource`‑Aufrufe in einem `Task`‑Pool zu queueen und gleichzeitig in das Archiv zu schreiben (unter Beachtung der Single‑Writer‑Natur von `ZipArchive`). +3. **Compress wisely** – `ZipArchive` verwendet standardmäßig Deflate. Für bereits komprimierte Dateien (JPEG, PNG) können Sie `entry.CompressionLevel = CompressionLevel.NoCompression` setzen, um den Vorgang zu beschleunigen. +4. **Security** – If the ZIP + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/german/net/working-with-html-documents/_index.md b/html/german/net/working-with-html-documents/_index.md index 20ea4c9d7..bca188b12 100644 --- a/html/german/net/working-with-html-documents/_index.md +++ b/html/german/net/working-with-html-documents/_index.md @@ -39,6 +39,9 @@ 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 als ZIP in C# speichern – Vollständige Anleitung mit benutzerdefiniertem Ressourcen-Handler](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) + +Erfahren Sie, wie Sie HTML in C# als ZIP-Datei mit einem benutzerdefinierten Ressourcen‑Handler speichern können. ### [Ü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/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/german/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..8a47d002f --- /dev/null +++ b/html/german/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-02-27 +description: Speichern Sie HTML als ZIP in C# mithilfe eines benutzerdefinierten Ressourcenhandlers + und erstellen Sie ein ZIP‑Archiv in C#. Folgen Sie diesem Schritt‑für‑Schritt‑Tutorial, + um HTML und seine Ressourcen zu bündeln. +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: de +og_description: Speichern Sie HTML als ZIP in C# mit einem benutzerdefinierten Ressourcen‑Handler. + Erfahren Sie, wie Sie ein ZIP‑Archiv in C# erstellen und Ressourcen mühelos einbetten. +og_title: HTML als ZIP in C# speichern – Vollständiges Tutorial +tags: +- Aspose.HTML +- C# +- ZIP +title: HTML als ZIP in C# speichern – Vollständige Anleitung mit benutzerdefiniertem + Ressourcen‑Handler +url: /de/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML als ZIP speichern in C# – Komplettanleitung mit benutzerdefiniertem Ressourcen-Handler + +Haben Sie sich jemals gefragt, wie man **HTML als ZIP** in C# speichert, ohne sich die Haare zu raufen? Sie sind nicht der Einzige – viele Entwickler stoßen an Grenzen, wenn sie eine HTML‑Seite zusammen mit Bildern, CSS‑ oder JavaScript‑Dateien ausliefern müssen. Die gute Nachricht? Mit Aspose.HTML können Sie das in ein paar übersichtlichen Schritten erledigen, und ein **custom resource handler** macht den Prozess schmerzfrei. + +In diesem Tutorial führen wir Sie durch alles, was Sie wissen müssen: von der Installation der Bibliothek, über das Schreiben eines Handlers, der Ressourcen direkt in ein **create ZIP archive in C#** streamt, bis hin zur Überprüfung des finalen Pakets. Am Ende haben Sie eine einsatzbereite Lösung, die Sie in jedes .NET‑Projekt einbinden können. + +![HTML als ZIP speichern Beispiel](/images/save-html-as-zip.png "Diagramm, das zeigt, dass HTML als ZIP-Datei gespeichert wird") + +## HTML als ZIP speichern – Was dieser Leitfaden abdeckt + +Wir decken die gesamte Pipeline ab: + +1. **Prerequisites** – die minimalen Werkzeuge und Pakete, die Sie benötigen. +2. **Custom resource handler** – warum Sie einen benötigen und wie Sie ihn implementieren. +3. **Creating a ZIP archive in C#** – mit `System.IO.Compression`. +4. **Configuring Aspose.HTML save options** – um auf den Handler zu verweisen. +5. **Running the code** – und das Ergebnis prüfen. + +Wenn Sie mit der grundlegenden C#‑Syntax vertraut sind und Visual Studio (oder VS Code) installiert haben, können Sie loslegen. Keine externe Dokumentation nötig – alles ist hier zu finden. + +--- + +## Schritt 1: Projekt einrichten und Aspose.HTML installieren + +Bevor wir Code schreiben, stellen Sie sicher, dass Ihr Projekt die Aspose.HTML‑Bibliothek referenzieren kann. + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*Pro‑Tipp:* Das neueste NuGet‑Paket (Stand Februar 2026) zielt auf .NET 6+ ab, sodass Sie das moderne SDK‑Style‑Projekt verwenden können, ohne sich um veraltete Frameworks sorgen zu müssen. + +Nachdem das Paket wiederhergestellt wurde, öffnen Sie `Program.cs`. Wir werden den Standardinhalt später durch das vollständige Beispiel ersetzen, aber für den Moment lassen Sie die Datei geöffnet. + +## Implementieren eines benutzerdefinierten Ressourcen-Handlers + +### Warum ein benutzerdefinierter Ressourcen-Handler? + +Wenn Aspose.HTML ein HTML‑Dokument als ZIP‑Paket speichert, muss es jede externe Ressource (Bilder, Schriftarten, Skripte) abrufen und irgendwo ablegen. Das Standardverhalten schreibt sie in einen temporären Ordner auf der Festplatte. Durch Bereitstellung eines **custom resource handler** teilen Sie der Bibliothek genau mit, wohin jede Ressource gehen soll – in unserem Fall direkt in das ZIP‑Archiv. Das vermeidet zusätzlichen I/O, hält alles ordentlich und gibt Ihnen die volle Kontrolle über die Benennung. + +### Code: Die Handler‑Klasse + +Erstellen Sie eine neue Klassendatei mit dem Namen `MyHandler.cs` (oder platzieren Sie sie in `Program.cs`, wenn Sie ein Single‑File‑Demo bevorzugen). + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**Erklärung:** +* `ResourceHandler` ist eine abstrakte Klasse von Aspose.HTML, die es Ihnen ermöglicht, das Abrufen von Ressourcen abzufangen. +* Indem wir den von `ZipArchiveEntry.Open()` erhaltenen `Stream` zurückgeben, übergeben wir der Bibliothek eine beschreibbare Pipe direkt in die ZIP‑Datei. Keine temporären Dateien, kein zusätzlicher Aufräumaufwand. + +## Erstellen des ZIP‑Archivs in C# + +Jetzt, wo der Handler bereit ist, benötigen wir einen Ort, an den er schreiben kann. Die .NET‑Klasse `ZipArchive` übernimmt die schwere Arbeit. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### Was das bewirkt + +1. **Erstellt ein HTML‑Dokument im Speicher** mit einem Verweis auf `logo.png`. +2. **Öffnet einen `FileStream`**, der zu `output.zip` wird. +3. **Weist das `ZipArchive`** dem statischen Feld in `MyHandler` zu. +4. **Setzt `HTMLSaveOptions`** auf `SaveFormat.ZIP` und bindet unseren Handler ein. +5. **Ruft `document.Save` auf** – Aspose.HTML analysiert das HTML, ruft `logo.png` ab und streamt es über `MyHandler` in das Archiv. + +Da der Handler die Ressourcen‑URI (`logo.png`) als Eintragsnamen verwendet, enthält das resultierende ZIP genau diese Datei und bewahrt den ursprünglichen relativen Pfad. + +## Konfigurieren der Save‑Optionen für das ZIP‑Paket + +Das Objekt `HTMLSaveOptions` ist der Ort, an dem Sie Aspose.HTML **mitteilen**, wie die Ausgabe verpackt werden soll. Neben dem `ResourceHandler` können Sie einige nützliche Eigenschaften anpassen: + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*Warum `EnableCompression` beachten?* +Wenn Sie mit großen Bildern arbeiten, kann das Aktivieren der Kompression das endgültige Archiv um bis zu 70 % verkleinern. Bei bereits komprimierten PNGs ist der Gewinn jedoch gering, sodass Sie es deaktivieren können, um den Speichervorgang zu beschleunigen. + +## Code ausführen und Ausgabe überprüfen + +Kompilieren und führen Sie das Programm aus: + +```bash +dotnet run +``` + +Sie sollten die Erfolgsmeldung in der Konsole sehen. Navigieren Sie zum ausgegebenen Verzeichnis und öffnen Sie `output.zip`. Darin finden Sie: + +- `index.html` – die gespeicherte HTML‑Datei. +- `logo.png` – das Bild, das im Markup referenziert wurde. + +Öffnen Sie `index.html` direkt aus dem ZIP (die meisten Dateiexplorer der Betriebssysteme erlauben eine Vorschau) und Sie sehen die Überschrift und das Bild exakt wie im ursprünglichen String gerendert. + +**Zu beachtende Sonderfälle** + +| Situation | Was zu tun ist | +|-----------|----------------| +| Das HTML referenziert eine **Remote‑URL** (z. B. `https://example.com/style.css`) | Der Handler erhält weiterhin ein `ResourceInfo.Uri`. Stellen Sie sicher, dass Ihre Umgebung die URL erreichen kann, oder laden Sie die Ressource vorher herunter und passen das HTML zu einem lokalen Pfad an. | +| Sie benötigen eine **Ordnerhierarchie** im ZIP (z. B. `images/logo.png`) | Ändern Sie `HandleResource`, um einen Ordnernamen vorzupendeln: `var entry = ZipArchive.CreateEntry($\"assets/{info.Uri}\");` | +| Die Ressource **kann nicht geladen werden** (404) | Der Handler wird aufgerufen, aber der Stream erhält null Bytes. Umgeben Sie den Save‑Aufruf mit einem `try/catch` und prüfen Sie `info.Status`, falls Sie eine benutzerdefinierte Fehlerbehandlung benötigen. | + +## Zusammenfassung: HTML als ZIP in einem kompakten Ablauf speichern + +- **Hauptziel:** Eine HTML‑Seite und alle zugehörigen externen Assets in einer einzigen ZIP‑Datei mit C# bündeln. +- **Wichtige Werkzeuge:** Aspose.HTML (`HTMLDocument`, `HTMLSaveOptions`), `System.IO.Compression.ZipArchive` und ein **custom resource handler**. +- **Ergebnis:** Ein portables `output.zip`, das verteilt, gespeichert oder über das Netzwerk gesendet werden kann und später ohne Verlust von Ressourcen‑Links extrahiert werden kann. + +## Was kommt als Nächstes? Workflow erweitern + +Jetzt, wo Sie **save HTML as ZIP** gemeistert haben, möchten Sie vielleicht verwandte Szenarien erkunden: + +- **HTML als PDF speichern** – ersetzen Sie `SaveFormat.ZIP` durch `SaveFormat.PDF` und passen die Optionen entsprechend an. +- **Schriftarten einbetten** – verwenden Sie `@font-face` in Ihrem HTML und lassen den Handler die Schriftdateien erfassen. +- **Batch‑Verarbeitung** – iterieren Sie über eine Sammlung von HTML‑Strings und verwenden das gleiche `ZipArchive`, um ein Mehr‑Dokument‑Paket zu erstellen. + +All dies basiert auf dem gleichen **custom resource handler**‑Muster und der **create ZIP archive in C#**‑Technik, die Sie gerade gelernt haben. + +### Abschließende Gedanken + +Sie haben gerade gesehen, wie einfach es ist, **save HTML as ZIP** in C# zu speichern, wenn Sie Aspose.HTML + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/greek/net/generate-jpg-and-png-images/_index.md b/html/greek/net/generate-jpg-and-png-images/_index.md index 5fd47cce3..b47f8294b 100644 --- a/html/greek/net/generate-jpg-and-png-images/_index.md +++ b/html/greek/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ url: /el/net/generate-jpg-and-png-images/ Μάθετε πώς να βελτιώσετε την ποιότητα των εικόνων ενεργοποιώντας το antialiasing κατά τη μετατροπή αρχείων DOCX σε PNG ή JPG. ### [Μετατροπή docx σε png – δημιουργία αρχείου zip με C# σεμινάριο](./convert-docx-to-png-create-zip-archive-c-tutorial/) Μάθετε πώς να μετατρέψετε αρχεία DOCX σε PNG και να δημιουργήσετε αρχείο ZIP χρησιμοποιώντας C#. +### [Δημιουργήστε PNG από HTML σε C# – Οδηγός βήμα‑βήμα](./create-png-from-html-in-c-step-by-step-guide/) +Μάθετε πώς να μετατρέψετε HTML σε PNG χρησιμοποιώντας C# με αναλυτικές οδηγίες βήμα‑βήμα. ## Σύναψη diff --git a/html/greek/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/greek/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..cc7279b94 --- /dev/null +++ b/html/greek/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-02-27 +description: Δημιουργήστε PNG από HTML γρήγορα χρησιμοποιώντας το Aspose.HTML σε C#. + Μάθετε πώς να αποδίδετε HTML σε εικόνα, να ορίζετε το πλάτος και το ύψος της εικόνας + και να μετατρέπετε HTML σε PNG σε λίγα λεπτά. +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: el +og_description: Δημιουργήστε PNG από HTML με το Aspose.HTML. Αυτός ο οδηγός δείχνει + πώς να αποδώσετε HTML σε εικόνα, να ορίσετε το πλάτος και το ύψος της εικόνας και + να μετατρέψετε το HTML σε PNG αποδοτικά. +og_title: Δημιουργία PNG από HTML σε C# – Πλήρης οδηγός +tags: +- Aspose.HTML +- C# +- Image Rendering +title: Δημιουργία PNG από HTML σε C# – Οδηγός βήμα‑προς‑βήμα +url: /el/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Δημιουργία PNG από HTML σε C# – Πλήρης Εκπαίδευση + +Έχετε χρειαστεί ποτέ να **create PNG from HTML** αλλά δεν ήσασταν σίγουροι ποια βιβλιοθήκη θα σας δώσει αποτελέσματα pixel‑perfect; Δεν είστε οι μόνοι—πολλοί προγραμματιστές αντιμετωπίζουν το ίδιο πρόβλημα όταν προσπαθούν να μετατρέψουν μια ιστοσελίδα σε στατική εικόνα για email, αναφορές ή μικρογραφίες. + +Τα καλά νέα; Με το Aspose.HTML μπορείτε να **render HTML to image**, να ελέγξετε τις ακριβείς διαστάσεις και να **save HTML as PNG** με λίγες μόνο γραμμές C#. Σε αυτό το tutorial θα περάσουμε από όλη τη διαδικασία, από τη φόρτωση του αρχείου HTML μέχρι τη ρύθμιση του hinting του κειμένου και τελικά τη γραφή του PNG στο δίσκο. Στο τέλος θα ξέρετε πώς να **set image width height** προγραμματιστικά και θα έχετε ένα επαναχρησιμοποιήσιμο snippet που μπορείτε να ενσωματώσετε σε οποιοδήποτε .NET project. + +## Τι Θα Μάθετε + +- Πώς να φορτώσετε ένα HTML έγγραφο χρησιμοποιώντας Aspose.HTML. +- Η διαφορά μεταξύ `ImageRenderingOptions` και `TextOptions` και γιατί είναι σημαντική. +- Πώς να **convert HTML to PNG** διατηρώντας τις γραμματοσειρές, το antialiasing και τα στυλ υπογράμμισης. +- Συμβουλές για την αντιμετώπιση κοινών προβλημάτων όπως ελλιπείς γραμματοσειρές ή μη αναμενόμενα μεγέθη εικόνας. +- Ένα πλήρες, έτοιμο‑για‑εκτέλεση δείγμα κώδικα που μπορείτε να αντιγράψετε‑επικολλήσετε στο Visual Studio. + +> **Prerequisites:** .NET 6+ (ή .NET Framework 4.6.2+), Aspose.HTML for .NET εγκατεστημένο μέσω NuGet, και βασική κατανόηση της C#. Δεν απαιτούνται άλλα εξωτερικά εργαλεία. + +--- + +## Βήμα 1: Φόρτωση του HTML Εγγράφου – Έναρξη της Δημιουργίας PNG + +Πρώτα, χρειαζόμαστε ένα αντικείμενο `HTMLDocument` που να δείχνει στο αρχείο προέλευσης. Αυτό είναι το θεμέλιο για οποιαδήποτε λειτουργία **create PNG from HTML**. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*Why this step matters:* Η κλάση `HTMLDocument` αναλύει το markup, επιλύει το CSS και δημιουργεί ένα DOM που η μηχανή απόδοσης μπορεί αργότερα να ζωγραφίσει σε bitmap. Αν η διαδρομή είναι λανθασμένη, το επόμενο βήμα **render html to image** θα ρίξει `FileNotFoundException`. + +--- + +## Βήμα 2: Ορισμός Πλάτους και Ύψους Εικόνας – Έλεγχος του Μεγέθους Εξόδου + +Όταν **render HTML to image**, συχνά χρειάζεστε μια συγκεκριμένη ανάλυση—σκεφτείτε μια μικρογραφία που πρέπει να είναι ακριβώς 1200 × 800 pixels. Εδώ έρχεται σε βοήθεια το `ImageRenderingOptions`. + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*Pro tip:* Αν παραλείψετε τα `Width` και `Height`, το Aspose.HTML θα χρησιμοποιήσει το φυσικό μέγεθος της σελίδας, το οποίο μπορεί να είναι πολύ μεγάλο για ενσωματώσεις σε email. + +--- + +## Βήμα 3: Λεπτομερής Ρύθμιση Απόδοσης Κειμένου – Καθιστώντας το Κείμενο Καθαρό + +Το κείμενο σε Linux συχνά φαίνεται θολό εκτός αν ενεργοποιήσετε το hinting. Το αντικείμενο `TextOptions` σας επιτρέπει να το ελέγξετε, εξασφαλίζοντας ότι το τελικό PNG θα είναι ευκρινές σε κάθε πλατφόρμα. + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*Why hinting?* Το hinting προσαρμόζει το σχήμα κάθε glyph ώστε να ευθυγραμμίζεται με το πλέγμα των pixel, κάτι κρίσιμο όταν **convert HTML to PNG** για οθόνες χαμηλής ανάλυσης. + +--- + +## Βήμα 4: Συνδυασμός Επιλογών και Προσθήκη Στυλ – Η Πλήρης Διαμόρφωση Απόδοσης + +Τώρα συνδυάζουμε τις ρυθμίσεις εικόνας και κειμένου, και επίσης δείχνουμε πώς να εφαρμόσουμε ένα παγκόσμιο στυλ γραμματοσειράς, όπως η υπογράμμιση όλου του κειμένου. Αυτό το βήμα είναι όπου πραγματικά **save HTML as PNG** με προσαρμοσμένο στυλ. + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*Note:* Το `WebFontStyle` υποστηρίζει πολλές σημαίες (Bold, Italic, κ.λπ.). Μπορείτε να τις συνδυάσετε με bitwise OR αν χρειάζεστε πολλαπλά στυλ. + +--- + +## Βήμα 5: Απόδοση και Αποθήκευση – Η Στιγμή που **Create PNG from HTML** + +Με όλα ρυθμισμένα, η τελική κλήση είναι μια μιά‑γραμμή που ζωγραφίζει το DOM σε bitmap και το γράφει στο δίσκο. + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +Μετά την εκτέλεση αυτής της γραμμής, θα βρείτε το `output.png` στον καθορισμένο φάκελο, ακριβώς 1200 × 800 pixels, με antialiased γραφικά και hinted κείμενο. + +--- + +## Πλήρες Παράδειγμα Εργασίας – Επικόλληση, Εκτέλεση, Επαλήθευση + +Παρακάτω είναι το πλήρες πρόγραμμα που μπορείτε να μεταγλωττίσετε ως console app. Περιλαμβάνει όλες τις δηλώσεις using, το χειρισμό σφαλμάτων και τα σχόλια που χρειάζεστε. + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**Expected result:** Ένα αρχείο με όνομα `output.png` εμφανίζεται δίπλα στο εκτελέσιμο σας, δείχνοντας την αποδομένη έκδοση του `sample.html`. Ανοίξτε το με οποιονδήποτε προβολέα εικόνων για να επιβεβαιώσετε τις διαστάσεις και το στυλ. + +--- + +## Συνηθισμένα Προβλήματα & Πώς να τα Αποφύγετε + +| Issue | Symptom | Fix | +|-------|----------|-----| +| Missing fonts | Text appears as generic sans‑serif | Install the required fonts on the host machine or embed web fonts in the HTML. | +| Wrong dimensions | PNG is larger or smaller than expected | Double‑check `Width` and `Height` values in `ImageRenderingOptions`. | +| Blurry edges | No antialiasing | Ensure `UseAntialiasing = true`. | +| Linux rendering artifacts | Text looks fuzzy | Set `UseHinting = true` in `TextOptions`. | + +*Pro tip:* Όταν **render HTML to image** σε headless server, βεβαιωθείτε ότι ο server διαθέτει τις απαραίτητες βιβλιοθήκες συστήματος (π.χ., `libgdiplus` σε Linux) διαφορετικά το Aspose.HTML μπορεί να επιστρέψει σε software renderer με μειωμένη ποιότητα. + +--- + +## Επέκταση της Λύσης – Επόμενα Βήματα + +- **Batch conversion:** Loop over a list of HTML files and call the same rendering logic to produce a gallery of PNGs. +- **Different formats:** Swap `output.png` for `output.jpg` or `output.bmp` by changing the file extension; Aspose.HTML automatically picks the right encoder. +- **Dynamic sizing:** Calculate `Width` and `Height` based on the HTML’s viewport meta tag for responsive designs. +- **Watermarking:** Use `Aspose.Html.Drawing` to overlay a logo before saving. + +Αυτές οι ιδέες σας επιτρέπουν να μεταβείτε από ένα απλό **create PNG from HTML** snippet σε μια πλήρως εξοπλισμένη υπηρεσία δημιουργίας εικόνων. + +--- + +## Συμπέρασμα + +Διασχίσαμε όλα όσα χρειάζεστε για να **create PNG from HTML** χρησιμοποιώντας Aspose.HTML για .NET: τη φόρτωση του εγγράφου, τη διαμόρφωση **set image width height**, τη λεπτομερή ρύθμιση του κειμένου με hinting, και τελικά το **saving HTML as PNG**. Το πλήρες παράδειγμα κώδικα είναι έτοιμο να ενσωματωθεί στο project σας, και οι παραπάνω συμβουλές θα σας κρατήσουν μακριά από κοινά προβλήματα. + +Τώρα που μπορείτε αξιόπιστα να **render HTML to image**, γιατί να μην πειραματιστείτε με διαφορετικά στυλ, επεξεργασία σε batch, ή ακόμη και μετατροπή σε PDF στην ίδια αλυσίδα; Ο ουρανός είναι το όριο, και ο κώδικας είναι ήδη στα χέρια σας. + +Καλή κωδικοποίηση, και μη διστάσετε να μοιραστείτε τα αποτελέσματά σας ή να θέσετε ερωτήσεις στα σχόλια! + +![Δημιουργία PNG από HTML παράδειγμα](/images/create-png-from-html.png "Δημιουργία PNG από HTML χρησιμοποιώντας Aspose.HTML") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/greek/net/html-extensions-and-conversions/_index.md b/html/greek/net/html-extensions-and-conversions/_index.md index 013b0ec4b..af71aeaa1 100644 --- a/html/greek/net/html-extensions-and-conversions/_index.md +++ b/html/greek/net/html-extensions-and-conversions/_index.md @@ -41,6 +41,8 @@ url: /el/net/html-extensions-and-conversions/ Μετατρέψτε HTML σε PDF χωρίς κόπο με το Aspose.HTML για .NET. Ακολουθήστε τον οδηγό βήμα προς βήμα και απελευθερώστε τη δύναμη της μετατροπής HTML σε PDF. ### [Δημιουργία PDF από HTML – Οδηγός βήμα‑βήμα C#](./create-pdf-from-html-c-step-by-step-guide/) Δημιουργήστε PDF από HTML με C# χρησιμοποιώντας το Aspose.HTML. Οδηγός βήμα‑βήμα για γρήγορη και εύκολη υλοποίηση. +### [Δημιουργία PDF από HTML – Οδηγός βήμα‑βήμα για προγραμματιστές](./create-pdf-from-html-step-by-step-guide-for-developers/) +Μάθετε πώς να δημιουργήσετε PDF από HTML με οδηγίες βήμα‑βήμα, ειδικά για προγραμματιστές. ### [Μετατρέψτε το EPUB σε Εικόνα στο .NET με το Aspose.HTML](./convert-epub-to-image/) Μάθετε πώς να μετατρέπετε το EPUB σε εικόνες χρησιμοποιώντας το Aspose.HTML για .NET. Βήμα προς βήμα μάθημα με παραδείγματα κώδικα και προσαρμόσιμες επιλογές. ### [Μετατροπή EPUB σε PDF σε .NET με Aspose.HTML](./convert-epub-to-pdf/) @@ -73,6 +75,11 @@ url: /el/net/html-extensions-and-conversions/ Μάθετε πώς να αποθηκεύετε HTML σε αρχείο ZIP με C# και Aspose.HTML. ### [Αποθήκευση HTML σε ZIP σε C# – Πλήρες Παράδειγμα Εντός Μνήμης](./save-html-to-zip-in-c-complete-in-memory-example/) Μάθετε πώς να αποθηκεύετε HTML σε αρχείο ZIP με C# χρησιμοποιώντας πλήρες παράδειγμα εντός μνήμης. +### [Αποθήκευση HTML σε PDF σε C# – Πλήρης Οδηγός με Γραμματοσειρές](./save-html-as-pdf-in-c-complete-guide-with-fonts/) +Μάθετε πώς να αποθηκεύετε HTML ως PDF σε C# με πλήρη υποστήριξη γραμματοσειρών, βήμα‑βήμα οδηγίες και παραδείγματα κώδικα. + +### [Αποθήκευση HTML ως ZIP σε C# – Πλήρης Οδηγός](./save-html-as-zip-in-c-complete-guide/) +Μάθετε πώς να αποθηκεύετε HTML σε αρχείο ZIP με C# χρησιμοποιώντας πλήρη οδηγό βήμα‑βήμα. ## Σύναψη diff --git a/html/greek/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/greek/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..53b816c7e --- /dev/null +++ b/html/greek/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,206 @@ +--- +category: general +date: 2026-02-27 +description: Δημιουργήστε PDF από HTML γρήγορα με ένα πλήρες παράδειγμα C#. Μάθετε + πώς να μετατρέπετε HTML σε PDF, να αποθηκεύετε HTML ως PDF και να εξάγετε HTML σε + PDF με ρυθμίσεις βέλτιστων πρακτικών. +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: el +og_description: Δημιουργήστε PDF από HTML σε C# με ένα έτοιμο παράδειγμα εκτέλεσης. + Αυτός ο οδηγός σας καθοδηγεί στη μετατροπή HTML σε PDF, στην αποθήκευση HTML ως + PDF και στην εξαγωγή HTML σε PDF. +og_title: Δημιουργία PDF από HTML – Πλήρες Μάθημα C# +tags: +- C# +- PDF +- HTML +title: Δημιουργία PDF από HTML – Οδηγός βήμα‑προς‑βήμα για προγραμματιστές +url: /el/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Δημιουργία PDF από HTML – Πλήρες Tutorial C# + +Έχετε χρειαστεί ποτέ να **δημιουργήσετε PDF από HTML** αλλά δεν ήξερατε ποια κλήση API να χρησιμοποιήσετε; Δεν είστε μόνοι. Είτε χτίζετε έναν πίνακα ελέγχου αναφορών, έναν δημιουργό τιμολογίων ή έναν εξαγωγέα στατικών ιστοσελίδων, η μετατροπή HTML σε PDF είναι συχνή απαίτηση για σύγχρονες web‑κεντρικές εφαρμογές. + +Σε αυτό το tutorial θα περάσουμε από ένα **πλήρες, εκτελέσιμο παράδειγμα C#** που δείχνει πώς να **μετατρέψετε HTML σε PDF**, να ρυθμίσετε επιλογές απόδοσης για καθαρό αποτέλεσμα, και τελικά να **αποθηκεύσετε HTML ως PDF** στο δίσκο. Στο τέλος θα έχετε ένα στιβαρό, έτοιμο για παραγωγή μοτίβο **εξαγωγής HTML σε PDF** που μπορείτε να ενσωματώσετε σε οποιοδήποτε .NET project. + +## Τι Θα Μάθετε + +- Πώς να φορτώσετε ένα τοπικό αρχείο HTML με `HTMLDocument`. +- Ποιες επιλογές απόδοσης βελτιώνουν το βάρος γραμματοσειράς, την ομαλότητα εικόνων και το hinting κειμένου. +- Η ακριβής κλήση για **εξαγωγή HTML σε PDF** με μια μόνο μέθοδο `Save`. +- Συμβουλές για διαχείριση μεγάλων εγγράφων, εντοπισμό κοινών προβλημάτων και επαλήθευση του αποτελέσματος. +- Ένα πλήρες, αντιγραφή‑και‑επικόλληση δείγμα κώδικα που μπορείτε να τρέξετε σήμερα. + +### Προαπαιτούμενα + +- .NET 6+ (ή .NET Framework 4.7+). Το API που χρησιμοποιούμε λειτουργεί και στα δύο. +- Μια αναφορά στη φανταστική βιβλιοθήκη `HtmlToPdfLib` (αντικαταστήστε με το πραγματικό όνομα της βιβλιοθήκης σας). +- Ένα αρχείο `input.html` τοποθετημένο σε φάκελο που ελέγχετε (θα το ονομάσουμε `YOUR_DIRECTORY`). + +Αν έχετε ήδη όλα τα παραπάνω, ας ξεκινήσουμε — δεν απαιτείται επιπλέον ρύθμιση. + +## Βήμα 1: Φόρτωση του HTML Document για **Δημιουργία PDF από HTML** + +Το πρώτο που χρειάζεστε είναι μια παρουσία `HTMLDocument` που δείχνει στο αρχείο προέλευσης. Σκεφτείτε το σαν το άνοιγμα ενός σημειωματάριου πριν αρχίσετε να γράφετε — χωρίς έγγραφο, δεν υπάρχει τίποτα προς απόδοση. + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **Γιατί είναι σημαντικό:** Η φόρτωση του αρχείου HTML νωρίς επιτρέπει στη βιβλιοθήκη να αναλύσει το DOM, να επιλύσει το CSS και να προφορτώσει τις εικόνες. Η παράλειψη αυτού του βήματος ή η παροχή κατεστραμμένου HTML συχνά οδηγεί σε κενές σελίδες κατά τη **μετατροπή html σε pdf**. + +## Βήμα 2: Ρύθμιση Επιλογών Απόδοσης για **Μετατροπή HTML σε PDF** + +Οι επιλογές απόδοσης είναι η μυστική σάλτσα που μετατρέπει ένα απλό PDF σε επαγγελματικό έγγραφο. Εδώ ενεργοποιούμε έντονες γραμματοσειρές, antialiasing για εικόνες και hinting για κείμενο — χαρακτηριστικά που οι περισσότεροι προγραμματιστές παραβλέπουν αλλά βελτιώνουν δραματικά την οπτική πιστότητα. + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **Pro tip:** Αν δουλεύετε με μια γραμματοσειρά ειδική για το brand, ορίστε το `FontFamily` μέσα στο `pdfOptions` επίσης. Αυτό αποτρέπει την πτώση σε γενικές γραμματοσειρές κατά τη **μετατροπή HTML σε PDF**. + +## Βήμα 3: Αποθήκευση του Αρχείου και **Εξαγωγή HTML σε PDF** + +Τώρα που το έγγραφο είναι φορτωμένο και οι επιλογές είναι ρυθμισμένες, η τελική ενέργεια είναι μια μόνο γραμμή που γράφει το PDF στο δίσκο. Η μέθοδος `Save` εκτελεί εσωτερικά τη **μετατροπή html σε pdf**, εφαρμόζοντας όλες τις ρυθμίσεις απόδοσης που ορίσαμε. + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **Τι θα δείτε:** Το άνοιγμα του `output.pdf` σε οποιονδήποτε προβολέα θα εμφανίσει τη αρχική διάταξη HTML, με έντονους τίτλους, ομαλές εικόνες και καθαρό κείμενο. Αν παρατηρήσετε ελλιπείς στυλ, ελέγξτε ξανά ότι τα αρχεία CSS είναι προσβάσιμα σχετικά με το `input.html`. + +![create pdf from html example](/images/create-pdf-from-html.png "Screenshot of the generated PDF – create pdf from html") + +*Το παραπάνω screenshot (alt text: “create pdf from html example”) δείχνει ένα PDF που διατηρεί το αρχικό στυλ HTML.* + +## Συνηθισμένα Προβλήματα Όταν **Μετατρέπετε HTML σε PDF** + +Ακόμη και με μια απλή ροή, οι προγραμματιστές συχνά αντιμετωπίζουν δυσκολίες. Παρακάτω είναι τα τρία πιο συχνά ζητήματα και πώς να τα αποφύγετε. + +### 1. Ελλιπείς Πόροι (Εικόνες, CSS, Γραμματοσειρές) + +Αν το HTML σας αναφέρεται σε εξωτερικούς πόρους μέσω σχετικών διαδρομών, ο μετατροπέας μπορεί να μην τους βρει. Χρησιμοποιείτε πάντα απόλυτες διαδρομές ή ορίστε μια base URL: + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. Μεγάλα Έγγραφα Προκαλούν Timeouts + +Όταν δουλεύετε με αναφορές πολλαπλών σελίδων, αυξήστε τη ρύθμιση timeout της βιβλιοθήκης: + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. Αντικατάσταση Γραμματοσειράς Δημιουργεί Απροσδόκητη Εμφάνιση + +Καθορίστε ακριβώς τη γραμματοσειρά που χρειάζεστε: + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +Η αντιμετώπιση αυτών των ζητημάτων νωρίς σας εξοικονομεί πολύτιμο χρόνο debugging κατά τις λειτουργίες **αποθήκευσης HTML ως PDF**. + +## Προχωρημένο: Προσθήκη Εξώφυλλου Πριν την **Εξαγωγή HTML σε PDF** + +Μερικές φορές χρειάζεται ένα προσαρμοσμένο εξώφυλλο — ίσως μια σελίδα τίτλου με λογότυπο. Μπορείτε να προσθέσετε ένα απλό HTML snippet πριν το κύριο έγγραφο: + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **Γιατί το κάνετε:** Η προσθήκη εξώφυλλου απευθείας στο HTML κρατά την αλυσίδα δημιουργίας PDF απλή, αποφεύγοντας εργαλεία post‑processing όπως iText ή PdfSharp. + +## Επαλήθευση του Αποτελέσματος Προγραμματιστικά + +Αν χρειάζεται να βεβαιωθείτε ότι το PDF δημιουργήθηκε σωστά (π.χ. σε CI pipelines), μπορείτε να ελέγξετε το μέγεθος του αρχείου ή τον αριθμό σελίδων: + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +Ένας μη μηδενικός αριθμός σελίδων επιβεβαιώνει ότι το βήμα **μετατροπής HTML σε PDF** ολοκληρώθηκε επιτυχώς. + +## Ανακεφαλαίωση & Επόμενα Βήματα + +Μόλις περάσαμε από ένα **πλήρες, end‑to‑end παράδειγμα** για το πώς να **δημιουργήσετε PDF από HTML** σε C#. Η ροή είναι: + +1. Φορτώστε το πηγαίο HTML (`HTMLDocument`). +2. Ρυθμίστε την απόδοση με `PdfRenderingOptions`. +3. Καλέστε `Save` για **εξαγωγή HTML σε PDF**. + +Από εδώ μπορείτε να εξερευνήσετε: + +- **Batch processing**: Βρόχος πάνω από φάκελο HTML αρχείων και δημιουργία PDFs μαζικά. +- **Dynamic HTML**: Χρήση Razor engine για δημιουργία HTML on‑the‑fly πριν τη μετατροπή. +- **Security**: Απομόνωση της διαδικασίας μετατροπής αν δέχεστε HTML από χρήστες (αποτρέπει script injection). + +Πειραματιστείτε με διαφορετικές επιλογές — ίσως μεταβείτε σε συμμόρφωση `PdfA` για αρχειοθέτηση, ή ενσωματώστε JavaScript για διαδραστικά PDFs. Το βασικό μοτίβο παραμένει το ίδιο, και τώρα έχετε ένα αξιόπιστο θεμέλιο για κάθε απαίτηση **αποθήκευσης HTML ως PDF**. + +--- + +*Καλή προγραμματιστική! Αν συναντήσετε προβλήματα, αφήστε ένα σχόλιο παρακάτω ή ελέγξτε τη σελίδα ζητημάτων του GitHub της βιβλιοθήκης. Η κοινότητα είναι εξαιρετική στο να μοιράζεται βελτιώσεις που κάνουν τη **μετατροπή html σε pdf** ακόμα πιο ομαλή.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/greek/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/greek/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..ddcc2543c --- /dev/null +++ b/html/greek/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,276 @@ +--- +category: general +date: 2026-02-27 +description: Αποθηκεύστε το HTML ως PDF σε C# γρήγορα χρησιμοποιώντας το Aspose.HTML. + Μάθετε πώς να μετατρέπετε το HTML σε PDF, να δημιουργείτε PDF από HTML με προσαρμοσμένες + γραμματοσειρές και στυλ σε λίγα μόνο βήματα. +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: el +og_description: Αποθηκεύστε το HTML ως PDF σε C# γρήγορα χρησιμοποιώντας το Aspose.HTML. + Αυτό το σεμινάριο δείχνει πώς να μετατρέψετε το HTML σε PDF, να δημιουργήσετε PDF + από HTML και να εφαρμόσετε προσαρμοσμένες γραμματοσειρές. +og_title: Αποθήκευση HTML ως PDF σε C# – Πλήρης Οδηγός με Γραμματοσειρές +tags: +- csharp +- pdf +- html +title: Αποθήκευση HTML ως PDF σε C# – Πλήρης Οδηγός με Γραμματοσειρές +url: /el/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Αποθήκευση HTML ως PDF σε C# – Πλήρης Οδηγός με Γραμματοσειρές + +Έχετε χρειαστεί ποτέ να **αποθηκεύσετε HTML ως PDF** από μια εφαρμογή C# αλλά δεν ήσασταν σίγουροι ποια βιβλιοθήκη να επιλέξετε; Δεν είστε μόνοι. Πολλοί προγραμματιστές αντιμετωπίζουν αυτό το πρόβλημα όταν θέλουν να στέλνουν τιμολόγια, αναφορές ή εκτυπώσιμες αποδείξεις απευθείας από το περιεχόμενο του ιστού. + +Τα καλά νέα; Με το Aspose.HTML μπορείτε να **μετατρέψετε HTML σε PDF**, **δημιουργήσετε PDF από HTML**, και ακόμη **δημιουργήσετε PDF με γραμματοσειρές** σε λίγες γραμμές κώδικα. Σε αυτό το tutorial θα περάσουμε από όλη τη διαδικασία, θα εξηγήσουμε γιατί κάθε ρύθμιση είναι σημαντική, και θα σας δώσουμε ένα έτοιμο‑για‑εκτέλεση παράδειγμα. + +## Τι Θα Μάθετε + +- Πώς να φορτώσετε ένα τοπικό ή απομακρυσμένο αρχείο HTML σε C# +- Ποιες επιλογές απόδοσης σας δίνουν έντονες/πλάγιες γραμματοσειρές, antialiasing και text hinting +- Πώς να αποθηκεύσετε το αποτέλεσμα ως αρχείο PDF στον δίσκο +- Συμβουλές για διαχείριση προσαρμοσμένων γραμματοσειρών και κοινές παγίδες + +Δεν απαιτείται προγενέστερη εμπειρία με το Aspose.HTML — μόνο ένα περιβάλλον ανάπτυξης .NET (Visual Studio 2022 ή νεότερο) και το πακέτο NuGet Aspose.HTML for .NET. + +## Προαπαιτούμενα + +| Απαίτηση | Γιατί είναι σημαντικό | +|----------|------------------------| +| .NET 6.0 ή νεότερο | Παρέχει το runtime για το Aspose.HTML | +| Aspose.HTML for .NET (NuGet) | Η βιβλιοθήκη που κάνει τη βαριά δουλειά | +| Ένα δείγμα αρχείου HTML (`sample.html`) | Η πηγή μας που θα μετατραπεί | +| Βασικές γνώσεις C# | Για να κατανοήσετε τα αποσπάσματα κώδικα | + +Αν έχετε όλα αυτά, ας βουτήξουμε. + +## Βήμα 1: Εγκατάσταση Aspose.HTML μέσω NuGet + +Ανοίξτε το έργο σας στο Visual Studio, κάντε δεξί‑κλικ στον κόμβο **Dependencies** και επιλέξτε **Manage NuGet Packages**. Αναζητήστε το `Aspose.HTML` και πατήστε **Install**. + +```powershell +dotnet add package Aspose.HTML +``` + +> **Συμβουλή:** Χρησιμοποιήστε την πιο πρόσφατη σταθερή έκδοση (την 27‑02‑2026 είναι η 23.11) για να έχετε τις τελευταίες βελτιώσεις απόδοσης. + +## Βήμα 2: Φόρτωση του Πηγικού Εγγράφου HTML + +Το πρώτο που χρειαζόμαστε είναι ένα αντικείμενο `HTMLDocument` που δείχνει στο αρχείο μας. Αυτή η κλάση αναλύει το markup, επιλύει το CSS, και προετοιμάζει τα πάντα για απόδοση. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Γιατί αυτό το βήμα;** +> Η φόρτωση του HTML σε ένα `HTMLDocument` απομονώνει το στάδιο ανάλυσης από το στάδιο απόδοσης, πράγμα που σημαίνει ότι μπορείτε να ελέγξετε το DOM ή να κάνετε τροποποιήσεις σε χρόνο εκτέλεσης πριν δημιουργήσετε το PDF. + +## Βήμα 3: Διαμόρφωση Επιλογών Απόδοσης PDF + +Το Aspose.HTML σας δίνει λεπτομερή έλεγχο πάνω στο τελικό PDF. Σε αυτό το παράδειγμα θα ενεργοποιήσουμε έντονα + πλάγια στυλ γραμματοσειρών, antialiasing για πιο ομαλές γραφικές παραστάσεις, και text hinting για πιο καθαρό κείμενο σε χαμηλή ανάλυση. + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### Γιατί Αυτές οι Ρυθμίσεις; + +- **`FontStyle`** – Συγχωνεύει τυχόν ετικέτες `` ή `` με τη βασική γραμματοσειρά, εξασφαλίζοντας ότι το PDF διατηρεί το αρχικό στυλ. +- **`UseAntialiasing`** – Μειώνει τις γωνίες σκαλίσματος σε διαγράμματα, εικονίδια ή οποιοδήποτε rasterized περιεχόμενο. +- **`UseHinting`** – Ευθυγραμμίζει τα περιγράμματα των glyphs σε πλέγματα εικονοστοιχείων, κάτι που είναι ιδιαίτερα χρήσιμο όταν το PDF θα προβληθεί σε συσκευές χαμηλής ανάλυσης. + +Αν χρειάζεστε προσαρμοσμένες γραμματοσειρές (π.χ. εταιρική γραμματοσειρά), τοποθετήστε τα αρχεία `.ttf` σε έναν φάκελο και ορίστε το `pdfRenderOptions.FontProvider` αναλόγως. Αυτό είναι θέμα για το δικό του tutorial, αλλά η βασική ιδέα είναι: + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## Βήμα 4: Απόδοση του Εγγράφου HTML σε PDF + +Τώρα συνδυάζουμε το έγγραφο και τις επιλογές, και λέμε στο Aspose.HTML να γράψει το αρχείο εξόδου. + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +Μετά την εκτέλεση αυτής της γραμμής, θα βρείτε το `output.pdf` δίπλα στο εκτελέσιμο σας. Ανοίξτε το — θα πρέπει να δείτε το αρχικό HTML αποδομένο με έντονο/πλάγιο στυλ, ομαλές γραφικές παραστάσεις και καθαρό κείμενο. + +> **Αναμενόμενο Αποτέλεσμα:** +> Ένα PDF που αντικατοπτρίζει τη διάταξη του `sample.html`, με όλους τους τίτλους έντονους, το επισημασμένο κείμενο πλάγιο, και τυχόν ενσωματωμένες εικόνες χωρίς σκαλίσματα. + +## Βήμα 5: Επαλήθευση και Ρύθμιση (Προαιρετικό) + +### Γρήγορο script επαλήθευσης + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +Αν το PDF φαίνεται λανθασμένο, εξετάστε τις παρακάτω κοινές προσαρμογές: + +| Πρόβλημα | Πιθανή αιτία | Διόρθωση | +|----------|--------------|----------| +| Λείπουν γραμματοσειρές | Η γραμματοσειρά δεν είναι ενσωματωμένη ή δεν βρέθηκε | Χρησιμοποιήστε `FontProvider.AddFont` και βεβαιωθείτε ότι το αρχείο γραμματοσειράς είναι προσβάσιμο | +| Οι εικόνες εμφανίζονται θολές | Antialiasing απενεργοποιημένο | Ορίστε `UseAntialiasing = true` | +| Το κείμενο φαίνεται πολύ λεπτό στην οθόνη | Hinting απενεργοποιημένο | Ενεργοποιήστε `UseHinting = true` | +| Μετατόπιση διάταξης σε αλλαγή σελίδας | Οι κανόνες CSS `page-break` αγνοούνται | Προσθέστε ρητές `page-break-before/after` στο HTML/CSS σας | + +## Πλήρες Παράδειγμα Λειτουργίας + +Παρακάτω είναι το πλήρες πρόγραμμα που μπορείτε να αντιγράψετε‑και‑επικολλήσετε σε μια νέα εφαρμογή console. Περιλαμβάνει όλες τις οδηγίες `using`, διαχείριση σφαλμάτων, και σχόλια για σαφήνεια. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +Τρέξτε το έργο (`dotnet run`), και θα δείτε το μήνυμα επιτυχίας ακολουθούμενο από ένα νέο `output.pdf`. + +## Συχνές Ερωτήσεις & Ακραίες Περιπτώσεις + +### Μπορώ να **μετατρέψω HTML σε PDF** από URL αντί για τοπικό αρχείο; + +Απόλυτα. Απλώς αντικαταστήστε τη διαδρομή αρχείου με μια συμβολοσειρά URL: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +Το Aspose.HTML θα κατεβάσει τη σελίδα, θα επιλύσει τους εξωτερικούς πόρους, και θα την αποδώσει. + +### Τι γίνεται με **μεγάλα αρχεία HTML** ή **πολλές σελίδες**; + +Το Aspose.HTML κάνει streaming του περιεχομένου, έτσι η χρήση μνήμης παραμένει λογική. Αν χρειάζεστε κάθε τμήμα HTML σε ξεχωριστή σελίδα PDF, εισάγετε χειροκίνητες αλλαγές σελίδας στο HTML: + +```html +
+``` + +### Λειτουργεί αυτό με **.NET Core** και **.NET 7**; + +Ναι. Η βιβλιοθήκη είναι cross‑platform· απλώς βεβαιωθείτε ότι στοχεύετε ένα συμβατό framework (net6.0, net7.0, κ.λπ.) και εγκαταστήστε το αντίστοιχο πακέτο NuGet. + +### Πώς μπορώ να **ενσωματώσω γραμματοσειρές** για πλήρη φορητότητα PDF; + +Ορίστε `pdfRenderOptions.FontProvider` όπως φαίνεται παραπάνω, και ενεργοποιήστε επίσης την ενσωμάτωση γραμματοσειρών: + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +Αυτό εγγυάται ότι το PDF θα φαίνεται το ίδιο σε οποιονδήποτε υπολογιστή, ακόμη και αν η γραμματοσειρά δεν είναι εγκατεστημένη τοπικά. + +## Οπτικό Παράδειγμα + +![save html as pdf example](example.png){alt="αποθήκευση html ως pdf παράδειγμα"} + +*Το στιγμιότυπο δείχνει το παραγόμενο PDF ανοιγμένο στο Adobe Acrobat, διατηρώντας τα έντονα/πλάγια στυλ και τις ομαλές εικόνες.* + +## Συμπέρασμα + +Καλύψαμε όλα όσα χρειάζεστε για να **αποθηκεύσετε HTML ως PDF** χρησιμοποιώντας C#. Από τη φόρτωση του markup, τη διαμόρφωση των επιλογών απόδοσης, μέχρι την εγγραφή του τελικού PDF, η διαδικασία είναι απλή και εξαιρετικά προσαρμόσιμη. + +Ακολουθώντας αυτόν τον οδηγό μπορείτε επίσης να **μετατρέψετε HTML σε PDF**, **δημιουργήσετε PDF από HTML**, και **δημιουργήσετε PDF με γραμματοσειρές** για οποιοδήποτε σενάριο αναφοράς ή δημιουργίας εγγράφων. Μη διστάσετε να πειραματιστείτε με πρόσθετες επιλογές — υδατογραφήματα, κρυπτογράφηση ή προσαρμοσμένα μεγέθη σελίδας — επειδή το Aspose.HTML σας δίνει αυτή τη ευελιξία. + +**Επόμενα βήματα** που μπορείτε να εξερευνήσετε: + +- Χρησιμοποιήστε την κλάση `PdfSaveOptions` για να ορίσετε την έκδοση PDF ή το επίπεδο συμπίεσης. +- Συνδυάστε πολλαπλά `HTMLDocument` σε ένα ενιαίο PDF για αναφορές πολλαπλών ενοτήτων. +- Ενσωματώστε αυτή τη ροή εργασίας σε ένα ASP.NET Core API ώστε η υπηρεσία σας να επιστρέφει PDFs κατ’ απαίτηση. + +Έχετε ερωτήσεις σχετικά με ακραίες περιπτώσεις ή χρειάζεστε βοήθεια για τη βελτιστοποίηση του pipeline απόδοσης; Αφήστε ένα σχόλιο παρακάτω, και καλή προγραμματιστική! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/greek/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/greek/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..749d32b65 --- /dev/null +++ b/html/greek/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-02-27 +description: Αποθήκευση HTML ως ZIP χρησιμοποιώντας C# ZipArchive – βήμα‑βήμα παράδειγμα + με προσαρμοσμένο διαχειριστή πόρων, συν συμβουλές για το πώς να εξάγετε HTML σε + ZIP και να δημιουργήσετε κώδικα C# για τη δημιουργία αρχείου zip. +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: el +og_description: Αποθηκεύστε HTML ως ZIP χρησιμοποιώντας C# ZipArchive. Μάθετε πώς + να εξάγετε HTML σε ZIP με πλήρες παράδειγμα, προσαρμοσμένο διαχειριστή πόρων και + βέλτιστες πρακτικές. +og_title: Αποθήκευση HTML ως ZIP σε C# – Πλήρης Οδηγός +tags: +- C# +- ZipArchive +- HTML export +title: Αποθήκευση HTML ως ZIP σε C# – Πλήρης Οδηγός +url: /el/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +Greek punctuation and preserve markdown. + +Let's translate. + +I'll produce Greek translations. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Αποθήκευση HTML ως ZIP σε C# – Πλήρης Οδηγός + +Ποτέ χρειάστηκε να **αποθηκεύσετε HTML ως ZIP** αλλά δεν ήσασταν σίγουροι ποια .NET κλάση να χρησιμοποιήσετε; Δεν είστε μόνοι—πολλοί προγραμματιστές αντιμετωπίζουν αυτό το πρόβλημα όταν θέλουν να συσκευάσουν μια ιστοσελίδα μαζί με τα περιουσιακά της στοιχεία για χρήση εκτός σύνδεσης ή για διανομή. Τα καλά νέα; Με το ενσωματωμένο `System.IO.Compression.ZipArchive` μπορείτε να το κάνετε σε λίγες γραμμές, και θα έχετε επίσης έναν καθαρό τρόπο ελέγχου του τρόπου γραφής κάθε πόρου. + +Σε αυτό το tutorial θα περάσουμε από ένα **πλήρες, εκτελέσιμο παράδειγμα** που δείχνει ακριβώς πώς να εξάγετε ένα έγγραφο HTML σε αρχείο ZIP, χρησιμοποιώντας έναν προσαρμοσμένο `ResourceHandler` για τη ροή κάθε πόρου στο αρχείο. Καθ' όλη τη διάρκεια θα προσθέσουμε μερικά αποσπάσματα **c# ziparchive example**, θα συζητήσουμε **πώς να εξάγετε html σε zip** σε πραγματικές καταστάσεις, και θα επισημάνουμε τις λεπτές διαφορές όταν θέλετε να **δημιουργήσετε zip archive c#** προγράμματα που πρέπει να είναι ανθεκτικά. + +> **Prerequisites** – Θα χρειαστείτε .NET 6+ (ή .NET Core 3.1) και μια αναφορά στη βιβλιοθήκη που παρέχει `HTMLDocument`, `HTMLSaveOptions` και `ResourceHandler`. Αν χρησιμοποιείτε Aspose.HTML ή παρόμοιο πακέτο, προσθέστε το μέσω NuGet. Δεν απαιτούνται άλλα εργαλεία τρίτων. + +--- + +## Τι Καλύπτει Αυτό το Tutorial + +- Ρύθμιση ενός **ZipArchive** που θα λάβει το αρχείο HTML και τους συνδεδεμένους πόρους του. +- Υλοποίηση ενός **προσαρμοσμένου διαχειριστή πόρων** (`ZipHandler`) που κατευθύνει κάθε ροή πόρου στο αρχείο. +- Χρήση του **HTMLSaveOptions** για τη σύνδεση όλων και την πραγματική **αποθήκευση HTML ως ZIP**. +- Συνηθισμένες παγίδες σχετικά με διαδρομές, διπλότυπες καταχωρήσεις και μεγάλα αρχεία. +- Συμβουλές για επέκταση της λύσης—π.χ. προσθήκη αρχείου manifest ή κρυπτογράφηση του ZIP. + +Στο τέλος θα έχετε μια αυτόνομη μέθοδο που μπορείτε να ενσωματώσετε σε οποιοδήποτε έργο C# για **αποθήκευση html ως zip** με σιγουριά. + +## Βήμα 1: Προσθήκη των Απαιτούμενων Namespaces + +Πριν τρέξει οποιοσδήποτε κώδικας, βεβαιωθείτε ότι ο μεταγλωττιστής γνωρίζει τις κλάσεις συμπίεσης και τη βιβλιοθήκη HTML που χρησιμοποιείτε. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*Why this matters:* `System.IO.Compression` σας παρέχει το `ZipArchive`, ενώ τα namespaces του `Aspose.Html` εκθέτουν το `HTMLDocument`, το `HTMLSaveOptions` και την βασική κλάση `ResourceHandler` που θα επεκτείνουμε. Αν χρησιμοποιείτε διαφορετική μηχανή HTML, ψάξτε για ανάλογους τύπους. + +## Βήμα 2: Δημιουργία Προσαρμοσμένου Resource Handler (Primary Keyword in Action) + +Η καρδιά της **αποθήκευσης HTML ως ZIP** είναι η ενημέρωση της μηχανής για το πού πρέπει να τοποθετηθεί κάθε εξωτερικός πόρος (εικόνες, CSS, scripts). Κάνοντας κληρονομία από το `ResourceHandler` αποκτούμε έλεγχο της ροής που λαμβάνει τα δεδομένα. + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**Key points** + +- `info.Uri` είναι η σχετική URL που η μηχανή HTML προσπαθεί να γράψει. Η χρήση του ως όνομα καταχώρησης διατηρεί τη δομή φακέλων ακεραιότητα μέσα στο ZIP. +- `CreateEntry` δημιουργεί αυτόματα τυχόν απαιτούμενους καταλόγους· δεν χρειάζεται να τους διαχειριστείτε χειροκίνητα. +- Η επιστροφή του ανοιγμένου stream επιτρέπει στη μηχανή να ρέει τα δεδομένα απευθείας—χωρίς προσωρινά αρχεία, χωρίς επιπλέον αντιγραφές μνήμης. + +## Βήμα 3: Αρχικοποίηση του ZipArchive + +Τώρα δημιουργούμε ένα `ZipArchive` σε **Update** mode. Αυτό το mode μας επιτρέπει να προσθέτουμε καταχωρήσεις καθώς προχωράμε, και επίσης να αντικαθιστούμε υπάρχουσες αν τρέξετε τον κώδικα πολλές φορές. + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*Pro tip:* Χρησιμοποιήστε `FileMode.Create` για να αντικαταστήσετε τυχόν προηγούμενο αρχείο, ή αλλάξτε σε `FileMode.OpenOrCreate` αν θέλετε να προσαρτήσετε σε υπάρχον αρχείο. Επίσης, τυλίξτε το `ZipArchive` σε δήλωση `using`—αυτό εγγυάται ότι το αρχείο κλείνει σωστά και απελευθερώνεται το handle. + +## Βήμα 4: Φόρτωση του HTML Εγγράφου που Θέλετε να Εξάγετε + +Εδώ δείχνετε στη βιβλιοθήκη το αρχείο HTML προέλευσης. Το έγγραφο μπορεί να αναφέρεται σε CSS, εικόνες ή αρχεία JavaScript που βρίσκονται δίπλα του. + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +Αν το HTML σας περιέχει σχετικές URL, βεβαιωθείτε ότι ο τρέχων φάκελος της διαδικασίας ταιριάζει με το φάκελο που περιέχει αυτά τα στοιχεία. Διαφορετικά η μηχανή δεν θα μπορεί να τα εντοπίσει και το ZIP θα λείπουν αυτά τα αρχεία. + +## Βήμα 5: Διαμόρφωση των Επιλογών Αποθήκευσης – Η Πραγματική Στιγμή “Αποθήκευση HTML ως ZIP” + +Τώρα συνδέουμε το `ZipHandler` με το `HTMLSaveOptions`. Ορίζοντας το `SaveFormat` σε `ZIP` λέμε στη βιβλιοθήκη να συσκευάσει τα πάντα, ενώ ο δικός μας handler αποφασίζει πού θα τοποθετηθεί κάθε κομμάτι. + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*Why this matters:* Χωρίς τον ορισμό του `ResourceHandler`, η βιβλιοθήκη θα επανέλθει στην εγγραφή πόρων στο σύστημα αρχείων, κάτι που αναιρεί το σκοπό του **πώς να εξάγετε html σε zip** σε ένα ενιαίο αρχείο. + +## Βήμα 6: Εκτέλεση της Λειτουργίας Αποθήκευσης + +Τέλος, ζητήστε από το έγγραφο να αποθηκευτεί χρησιμοποιώντας τις επιλογές που μόλις δημιουργήσαμε. Η βιβλιοθήκη θα καλέσει το `ZipHandler.HandleResource` για κάθε εξωτερικό στοιχείο που εντοπίζει. + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +Όταν το μπλοκ `using` για το `zipArchive` λήξει, το αρχείο κλείνει οριστικά και είναι έτοιμο για διανομή. + +## Πλήρες Παράδειγμα Εργασίας (Όλα τα Βήματα Συνδυασμένα) + +Παρακάτω είναι το πλήρες πρόγραμμα που μπορείτε να αντιγράψετε‑και‑επικολλήσετε σε μια εφαρμογή console. Δείχνει ένα **c# ziparchive example** που **creates zip archive c#** στυλ, και απαντά πλήρως στο **how to export html to zip**. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**Expected result:** Μετά την εκτέλεση του προγράμματος, το `output.zip` θα περιέχει το `index.html` (ή το όνομα που έχετε ορίσει) συν όλα τα εικόνα, φύλλα στυλ και scripts που αναφέρονται στην αρχική σελίδα, διατηρώντας τη ιεραρχία φακέλων. Ανοίξτε το ZIP, εξάγετε και κάντε διπλό‑κλικ στο `index.html`—η σελίδα θα εμφανιστεί ακριβώς όπως ήταν online, αλλά τώρα είναι ένα φορητό πακέτο. + +## Συνηθισμένες Ακραίες Περιπτώσεις & Πώς να τις Διαχειριστείτε + +| Situation | Why it Happens | Suggested Fix | +|-----------|----------------|---------------| +| **Duplicate resource names** (π.χ. δύο εικόνες με το ίδιο όνομα αρχείου σε διαφορετικούς φακέλους) | `CreateEntry` θα πετάξει `InvalidOperationException` αν υπάρχει ήδη ακριβώς το ίδιο όνομα καταχώρησης. | Προσθέστε το σχετικό μονοπάτι ως πρόθεμα (`info.Uri` το κάνει ήδη) ή καθαρίστε τα ονόματα χειροκίνητα πριν δημιουργήσετε την καταχώρηση. | +| **Large binary assets** (βίντεο, εικόνες υψηλής ανάλυσης) | Η άμεση ροή στο zip είναι εντάξει, αλλά το προεπιλεγμένο μέγεθος buffer μπορεί να προκαλέσει υψηλή χρήση μνήμης. | Υπερκαλύψτε το `HandleResource` ώστε να τυλίγει το επιστρεφόμενο stream σε `BufferedStream` με μέτριο buffer (π.χ. 64 KB). | +| **Missing resources** | Αν το HTML περιέχει σπασμένο σύνδεσμο, ο handler λαμβάνει αίτημα για αρχείο που δεν υπάρχει, οδηγώντας σε κενή καταχώρηση. | Ελέγξτε `File.Exists` πριν δημιουργήσετε την καταχώρηση, ή καταγράψτε προειδοποίηση ώστε να γνωρίζετε ότι λείπει κάτι. | +| **Unicode filenames** | Ορισμένα παλαιότερα εργαλεία ZIP δεν διαχειρίζονται σωστά ονόματα UTF‑8. | Βεβαιωθείτε ότι στοχεύετε .NET 6+, που γράφει UTF‑8 εξ ορισμού. Αν χρειάζεστε συμβατότητα με παλαιότερα, ορίστε `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);`. | +| **Need a manifest** (λίστα αρχείων μέσα στο zip) | Οι χρήστες μερικές φορές θέλουν ένα `manifest.json` για επικύρωση. | Μετά την κύρια αποθήκευση, δημιουργήστε νέα καταχώρηση `"manifest.json"` και γράψτε μια λίστα JSON των `zipArchive.Entries`. | + +## Pro Tips για Παραγωγικές Υλοποιήσεις **Save HTML as ZIP** + +1. **Validate the output** – Μετά την αποθήκευση, ανοίξτε το ZIP προγραμματιστικά και ελέγξτε ότι υπάρχει το `index.html` και ότι το `Length` κάθε καταχώρησης είναι > 0. Αυτό εντοπίζει σιωπηλές αποτυχίες νωρίς. +2. **Parallelize large assets** – Αν έχετε δεκάδες megabytes εικόνων, σκεφτείτε να βάζετε τις κλήσεις `HandleResource` σε μια ουρά `Task` και να γράφετε στο αρχείο ταυτόχρονα (τηρώντας πάντα τη μονογραφική φύση του `ZipArchive`). +3. **Compress wisely** – Το `ZipArchive` χρησιμοποιεί Deflate εξ ορισμού. Για αρχεία που είναι ήδη συμπιεσμένα (JPEG, PNG), μπορείτε να ορίσετε `entry.CompressionLevel = CompressionLevel.NoCompression` για να επιταχύνετε τη διαδικασία. +4. **Security** – Αν το ZIP + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/greek/net/working-with-html-documents/_index.md b/html/greek/net/working-with-html-documents/_index.md index 1990362d0..75fe9c897 100644 --- a/html/greek/net/working-with-html-documents/_index.md +++ b/html/greek/net/working-with-html-documents/_index.md @@ -39,6 +39,9 @@ url: /el/net/working-with-html-documents/ ### [Πώς να αποθηκεύσετε HTML σε C# – Πλήρης οδηγός με χρήση προσαρμοσμένου διαχειριστή πόρων](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) Μάθετε πώς να αποθηκεύετε HTML σε C# χρησιμοποιώντας έναν προσαρμοσμένο διαχειριστή πόρων, βήμα-βήμα οδηγός. + +### [Αποθήκευση HTML ως ZIP σε C# – Πλήρης οδηγός με προσαρμοσμένο διαχειριστή πόρων](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) + ### [Πώς να κάνετε έντονο τίτλο με 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/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/greek/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..eefe1133c --- /dev/null +++ b/html/greek/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-02-27 +description: Αποθηκεύστε το HTML ως ZIP σε C# χρησιμοποιώντας έναν προσαρμοσμένο διαχειριστή + πόρων και δημιουργήστε αρχείο ZIP σε C#. Ακολουθήστε αυτό το βήμα‑βήμα οδηγό για + να συσσωρεύσετε το HTML και τα περιουσιακά του στοιχεία. +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: el +og_description: Αποθηκεύστε HTML ως ZIP σε C# με προσαρμοσμένο διαχειριστή πόρων. + Μάθετε πώς να δημιουργήσετε αρχείο ZIP σε C# και να ενσωματώσετε πόρους χωρίς κόπο. +og_title: Αποθήκευση HTML ως ZIP σε C# – Πλήρης Οδηγός +tags: +- Aspose.HTML +- C# +- ZIP +title: Αποθήκευση HTML ως ZIP σε C# – Πλήρης Οδηγός με Προσαρμοσμένο Διαχειριστή Πόρων +url: /el/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +Proceed. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Αποθήκευση HTML ως ZIP σε C# – Πλήρης Οδηγός με Προσαρμοσμένο Διαχειριστή Πόρων + +Έχετε αναρωτηθεί ποτέ πώς να **αποθηκεύσετε HTML ως ZIP** σε C# χωρίς να τσακώσετε τα μαλλιά σας; Δεν είστε μόνοι—πολλοί προγραμματιστές συναντούν πρόβλημα όταν πρέπει να στείλουν μια σελίδα HTML μαζί με εικόνες, CSS ή αρχεία JavaScript. Τα καλά νέα; Με το Aspose.HTML μπορείτε να το κάνετε σε λίγα καθαρά βήματα, και ένας **προσαρμοσμένος διαχειριστής πόρων** κάνει τη διαδικασία άνετη. + +Σε αυτό το tutorial θα περάσουμε από όλα όσα χρειάζεστε: από την εγκατάσταση της βιβλιοθήκης, τη δημιουργία ενός διαχειριστή που ρέει τους πόρους κατευθείαν σε ένα **create ZIP archive in C#**, μέχρι την επαλήθευση του τελικού πακέτου. Στο τέλος θα έχετε μια έτοιμη λύση που μπορείτε να ενσωματώσετε σε οποιοδήποτε έργο .NET. + +![Save HTML as ZIP example](/images/save-html-as-zip.png "Διάγραμμα που δείχνει το HTML αποθηκευμένο ως αρχείο ZIP") + +## Save HTML as ZIP – Τι Καλύπτει Αυτός ο Οδηγός + +Θα καλύψουμε ολόκληρη τη ροή εργασίας: + +1. **Prerequisites** – τα ελάχιστα εργαλεία και πακέτα που χρειάζεστε. +2. **Custom resource handler** – γιατί χρειάζεται και πώς να το υλοποιήσετε. +3. **Creating a ZIP archive in C#** – χρησιμοποιώντας το `System.IO.Compression`. +4. **Configuring Aspose.HTML save options** ώστε να δείχνουν στον διαχειριστή. +5. **Running the code** και έλεγχος του αποτελέσματος. + +Αν είστε άνετοι με τη βασική σύνταξη C# και έχετε εγκατεστημένο το Visual Studio (ή VS Code), είστε έτοιμοι να ξεκινήσετε. Δεν απαιτείται εξωτερική τεκμηρίωση—όλα είναι εδώ. + +--- + +## Step 1: Set Up the Project and Install Aspose.HTML + +Πριν γράψουμε κώδικα, βεβαιωθείτε ότι το έργο σας μπορεί να αναφερθεί στη βιβλιοθήκη Aspose.HTML. + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*Pro tip:* Το πιο πρόσφατο πακέτο NuGet (από Φεβρουάριο 2026) στοχεύει στο .NET 6+, οπότε μπορείτε να χρησιμοποιήσετε το σύγχρονο SDK‑style project χωρίς να ανησυχείτε για παλαιότερα frameworks. + +Μόλις επαναφερθεί το πακέτο, ανοίξτε το `Program.cs`. Θα αντικαταστήσουμε το προεπιλεγμένο περιεχόμενο με το πλήρες παράδειγμα αργότερα, αλλά προς το παρόν κρατήστε το αρχείο ανοιχτό. + +--- + +## Implement a Custom Resource Handler + +### Why a Custom Resource Handler? + +Όταν το Aspose.HTML αποθηκεύει ένα έγγραφο HTML ως πακέτο ZIP, πρέπει να ανακτήσει κάθε εξωτερικό πόρο (εικόνες, γραμματοσειρές, σενάρια) και να τον γράψει κάπου. Η προεπιλεγμένη συμπεριφορά γράφει τους πόρους σε έναν προσωρινό φάκελο στο δίσκο. Παρέχοντας έναν **custom resource handler**, λέτε στη βιβλιοθήκη ακριβώς πού πρέπει να πάει κάθε πόρος—στην περίπτωσή μας, κατευθείαν μέσα στο αρχείο ZIP. Αυτό αποφεύγει επιπλέον I/O, κρατά τα πάντα τακτικά και σας δίνει πλήρη έλεγχο πάνω στην ονομασία. + +### Code: The Handler Class + +Δημιουργήστε ένα νέο αρχείο κλάσης με όνομα `MyHandler.cs` (ή τοποθετήστε το μέσα στο `Program.cs` αν προτιμάτε μια επίδειξη μονού αρχείου). + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**Explanation:** +* `ResourceHandler` είναι μια αφηρημένη κλάση από το Aspose.HTML που σας επιτρέπει να παρεμβείτε στην ανάκτηση πόρων. +* Επιστρέφοντας το `Stream` που λαμβάνεται από `ZipArchiveEntry.Open()`, δίνουμε στη βιβλιοθήκη έναν εγγράψιμο αγωγό κατευθείαν στο αρχείο ZIP. Χωρίς προσωρινά αρχεία, χωρίς επιπλέον καθαρισμό. + +--- + +## Create the ZIP Archive in C# + +Τώρα που ο διαχειριστής είναι έτοιμος, χρειαζόμαστε ένα μέρος όπου θα γράφει. Η κλάση .NET `ZipArchive` κάνει το βαριά δουλειά. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### What This Does + +1. **Creates an in‑memory HTML document** με αναφορά στο `logo.png`. +2. **Opens a `FileStream`** που θα γίνει το `output.zip`. +3. **Assigns the `ZipArchive`** στο static πεδίο του `MyHandler`. +4. **Sets `HTMLSaveOptions`** σε `SaveFormat.ZIP` και συνδέει τον διαχειριστή μας. +5. **Calls `document.Save`** – το Aspose.HTML αναλύει το HTML, ανακτά το `logo.png` και το ρέει στο αρχείο μέσω του `MyHandler`. + +Επειδή ο διαχειριστής χρησιμοποιεί το URI του πόρου (`logo.png`) ως όνομα καταχώρησης, το παραγόμενο ZIP περιέχει ένα αρχείο με ακριβώς αυτό το όνομα, διατηρώντας τη σχετική διαδρομή. + +--- + +## Configure Save Options for the ZIP Package + +Το αντικείμενο `HTMLSaveOptions` είναι εκεί που λέτε στο Aspose.HTML **πώς** να πακετάρει το αποτέλεσμα. Εκτός από το `ResourceHandler`, μπορείτε να ρυθμίσετε μερικές χρήσιμες ιδιότητες: + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*Why care about `EnableCompression`?* +Αν δουλεύετε με μεγάλες εικόνες, η ενεργοποίηση της συμπίεσης μπορεί να μειώσει το τελικό αρχείο έως και 70 %. Ωστόσο, για ήδη συμπιεσμένα PNGs το όφελος είναι μικρό, οπότε ίσως θέλετε να το απενεργοποιήσετε για να επιταχύνετε τη διαδικασία αποθήκευσης. + +--- + +## Run the Code and Verify the Output + +Συγκεντρώστε και εκτελέστε το πρόγραμμα: + +```bash +dotnet run +``` + +Θα πρέπει να δείτε το μήνυμα επιτυχίας να εκτυπώνεται στην κονσόλα. Μεταβείτε στον κατάλογο που εμφανίζεται και ανοίξτε το `output.zip`. Μέσα θα βρείτε: + +- `index.html` – το αποθηκευμένο αρχείο HTML. +- `logo.png` – η εικόνα που αναφερόταν στο markup. + +Ανοίξτε το `index.html` απευθείας από το ZIP (οι περισσότεροι εξερευνητές αρχείων επιτρέπουν προεπισκόπηση) και θα δείτε τον τίτλο και την εικόνα να εμφανίζονται ακριβώς όπως στην αρχική συμβολοσειρά. + +**Edge Cases to Consider** + +| Situation | What to Do | +|-----------|------------| +| Το HTML αναφέρει **απομακρυσμένο URL** (π.χ., `https://example.com/style.css`) | Ο διαχειριστής θα λάβει ακόμα ένα `ResourceInfo.Uri`. Βεβαιωθείτε ότι το περιβάλλον σας μπορεί να φτάσει στο URL, ή προ‑κατεβάστε τον πόρο και προσαρμόστε το HTML σε τοπική διαδρομή. | +| Χρειάζεστε **ιεραρχία φακέλων** μέσα στο ZIP (π.χ., `images/logo.png`) | Τροποποιήστε το `HandleResource` ώστε να προσθέτει ένα όνομα φακέλου: `var entry = ZipArchive.CreateEntry($"assets/{info.Uri}");` | +| Ο πόρος **αποτυγχάνει να φορτωθεί** (404) | Ο διαχειριστής θα κληθεί, αλλά το stream θα λάβει μηδενικά bytes. Τυλίξτε την κλήση αποθήκευσης σε `try/catch` και ελέγξτε το `info.Status` αν χρειάζεστε προσαρμοσμένη διαχείριση σφαλμάτων. | + +--- + +## Recap: Save HTML as ZIP in One Compact Flow + +- **Primary Goal:** Συγκεντρώστε μια σελίδα HTML και όλα τα εξωτερικά της στοιχεία σε ένα ενιαίο αρχείο ZIP χρησιμοποιώντας C#. +- **Key Tools:** Aspose.HTML (`HTMLDocument`, `HTMLSaveOptions`), `System.IO.Compression.ZipArchive`, και ένας **custom resource handler**. +- **Result:** Ένα φορητό `output.zip` που μπορεί να αποσταλεί, αποθηκευτεί ή μεταφερθεί μέσω δικτύου, και να εξαχθεί αργότερα χωρίς να χαθούν οι σύνδεσμοι πόρων. + +--- + +## What’s Next? Extending the Workflow + +Τώρα που έχετε κατακτήσει το **save HTML as ZIP**, ίσως θέλετε να εξερευνήσετε σχετικές περιπτώσεις: + +- **Save HTML as PDF** – αντικαταστήστε το `SaveFormat.ZIP` με `SaveFormat.PDF` και προσαρμόστε τις επιλογές ανάλογα. +- **Embed fonts** – χρησιμοποιήστε `@font-face` στο HTML σας και αφήστε τον διαχειριστή να συλλάβει τα αρχεία γραμματοσειρών. +- **Batch processing** – επαναλάβετε τη διαδικασία για μια συλλογή HTML strings, επαναχρησιμοποιώντας το ίδιο `ZipArchive` για να δημιουργήσετε ένα πακέτο πολλαπλών εγγράφων. + +Όλα αυτά βασίζονται στο ίδιο **custom resource handler** pattern και στην τεχνική **create ZIP archive in C#** που μόλις μάθατε. + +--- + +### Final Thoughts + +Μόλις είδατε πόσο εύκολο είναι να **αποθηκεύσετε HTML ως ZIP** σε C# όταν αφήνετε το Aspose.HTML + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/hindi/net/generate-jpg-and-png-images/_index.md b/html/hindi/net/generate-jpg-and-png-images/_index.md index b35cbb62e..71d5cf997 100644 --- a/html/hindi/net/generate-jpg-and-png-images/_index.md +++ b/html/hindi/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ HTML दस्तावेज़ों में हेरफेर करने DOCX फ़ाइलों को PNG या JPG में परिवर्तित करते समय एंटीएलियासिंग को सक्षम करने के चरणों को जानें। ### [DOCX को PNG में परिवर्तित करें – ZIP आर्काइव बनाएं C# ट्यूटोरियल](./convert-docx-to-png-create-zip-archive-c-tutorial/) C# में DOCX फ़ाइलों को PNG छवियों में बदलें और उन्हें ZIP आर्काइव में संकलित करना सीखें। चरण-दर-चरण मार्गदर्शिका। +### [C# में HTML से PNG बनाएं – चरण‑दर‑चरण मार्गदर्शिका](./create-png-from-html-in-c-step-by-step-guide/) +HTML को PNG में बदलने के लिए C# कोड के साथ विस्तृत चरण‑दर‑चरण मार्गदर्शिका। ## निष्कर्ष diff --git a/html/hindi/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/hindi/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..0e714b31c --- /dev/null +++ b/html/hindi/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-02-27 +description: Aspose.HTML का उपयोग करके C# में HTML से जल्दी PNG बनाएं। HTML को इमेज + में रेंडर करना सीखें, इमेज की चौड़ाई और ऊँचाई सेट करें, और कुछ ही मिनटों में HTML + को PNG में बदलें। +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: hi +og_description: Aspose.HTML के साथ HTML से PNG बनाएं। यह गाइड दिखाता है कि कैसे HTML + को इमेज में रेंडर करें, इमेज की चौड़ाई और ऊँचाई सेट करें, और HTML को प्रभावी ढंग + से PNG में परिवर्तित करें। +og_title: C# में HTML से PNG बनाएं – पूर्ण ट्यूटोरियल +tags: +- Aspose.HTML +- C# +- Image Rendering +title: C# में HTML से PNG बनाएं – चरण-दर-चरण गाइड +url: /hi/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML से PNG बनाना C# में – पूर्ण ट्यूटोरियल + +क्या आपको कभी **HTML से PNG बनाना** पड़ा है लेकिन आप सुनिश्चित नहीं थे कि कौनसी लाइब्रेरी आपको पिक्सेल‑परफेक्ट परिणाम देगी? आप अकेले नहीं हैं—कई डेवलपर्स को वही समस्या आती है जब वे वेब पेज को ईमेल, रिपोर्ट या थंबनेल के लिए स्थिर इमेज में बदलने की कोशिश करते हैं। + +अच्छी खबर? Aspose.HTML के साथ आप **HTML को इमेज में रेंडर** कर सकते हैं, सटीक आयाम नियंत्रित कर सकते हैं, और सिर्फ कुछ ही C# लाइनों से **HTML को PNG के रूप में सहेज** सकते हैं। इस ट्यूटोरियल में हम पूरी प्रक्रिया को चरण‑दर‑चरण देखेंगे, HTML फ़ाइल को लोड करने से लेकर टेक्स्ट हिन्टिंग को ट्यून करने और अंत में PNG को डिस्क पर लिखने तक। अंत तक आप जानेंगे कि **प्रोग्रामेटिकली इमेज की चौड़ाई‑ऊँचाई कैसे सेट करें** और एक पुन: उपयोग योग्य स्निपेट प्राप्त करेंगे जिसे आप किसी भी .NET प्रोजेक्ट में डाल सकते हैं। + +## आप क्या सीखेंगे + +- Aspose.HTML का उपयोग करके HTML दस्तावेज़ को कैसे लोड करें। +- `ImageRenderingOptions` और `TextOptions` में क्या अंतर है और क्यों महत्वपूर्ण हैं। +- **HTML को PNG में बदलते** समय फ़ॉन्ट, एंटी‑एलियासिंग और अंडरलाइन स्टाइल को कैसे बरकरार रखें। +- अक्सर आने वाली समस्याओं जैसे गायब फ़ॉन्ट या अनपेक्षित इमेज आकार को कैसे हल करें। +- एक पूर्ण, तैयार‑चलाने‑योग्य कोड नमूना जो आप Visual Studio में कॉपी‑पेस्ट कर सकते हैं। + +> **पूर्वापेक्षाएँ:** .NET 6+ (या .NET Framework 4.6.2+), NuGet के माध्यम से स्थापित Aspose.HTML for .NET, और C# की बुनियादी समझ। कोई अतिरिक्त बाहरी टूल आवश्यक नहीं है। + +--- + +## Step 1: Load the HTML Document – Starting the PNG Creation + +सबसे पहले हमें एक `HTMLDocument` ऑब्जेक्ट चाहिए जो स्रोत फ़ाइल की ओर इशारा करता हो। यह **HTML से PNG बनाना** ऑपरेशन की बुनियाद है। + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*इस चरण का महत्व:* `HTMLDocument` क्लास मार्कअप को पार्स करता है, CSS को रिजॉल्व करता है, और एक DOM बनाता है जिसे रेंडरिंग इंजन बाद में बिटमैप पर पेंट कर सकता है। यदि पाथ गलत है, तो अगला **render html to image** चरण `FileNotFoundException` फेंकेगा। + +--- + +## Step 2: Set Image Width Height – Controlling the Output Size + +जब आप **HTML को इमेज में रेंडर** करते हैं, तो अक्सर आपको एक विशिष्ट रिज़ॉल्यूशन चाहिए—जैसे थंबनेल जो ठीक 1200 × 800 पिक्सेल हो। यही वह जगह है जहाँ `ImageRenderingOptions` काम आता है। + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*प्रो टिप:* यदि आप `Width` और `Height` को छोड़ देते हैं, तो Aspose.HTML पेज के प्राकृतिक आकार को उपयोग करेगा, जो ईमेल एम्बेड्स के लिए बहुत बड़ा हो सकता है। + +--- + +## Step 3: Fine‑Tune Text Rendering – Making Text Crisp + +Linux पर टेक्स्ट अक्सर धुंधला दिखता है जब तक आप हिन्टिंग सक्षम नहीं करते। `TextOptions` ऑब्जेक्ट आपको यह नियंत्रित करने देता है, जिससे अंतिम PNG हर प्लेटफ़ॉर्म पर तेज़ दिखे। + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*हिन्टिंग क्यों?* हिन्टिंग प्रत्येक ग्लिफ़ के आकार को पिक्सेल ग्रिड के साथ संरेखित करता है, जो **HTML को PNG में बदलते** समय लो‑रिज़ॉल्यूशन डिस्प्ले पर बहुत ज़रूरी है। + +--- + +## Step 4: Combine Options and Add Styling – The Full Render Configuration + +अब हम इमेज और टेक्स्ट सेटिंग्स को मिलाते हैं, और साथ ही एक ग्लोबल फ़ॉन्ट स्टाइल (जैसे सभी टेक्स्ट को अंडरलाइन करना) लागू करना दिखाते हैं। यह चरण वह है जहाँ आप वास्तव में **HTML को PNG के रूप में सहेज** सकते हैं, कस्टम स्टाइलिंग के साथ। + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*नोट:* `WebFontStyle` कई फ़्लैग्स (Bold, Italic, आदि) को सपोर्ट करता है। यदि आपको कई स्टाइल्स चाहिए तो आप बिटवाइज़ OR का उपयोग करके उन्हें संयोजित कर सकते हैं। + +--- + +## Step 5: Render and Save – The Moment You **Create PNG from HTML** + +सब कुछ कॉन्फ़िगर हो जाने के बाद, अंतिम कॉल एक‑लाइनर है जो DOM को बिटमैप पर पेंट करता है और डिस्क पर लिखता है। + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +इस लाइन के चलने के बाद, आप निर्दिष्ट फ़ोल्डर में `output.png` पाएँगे, बिल्कुल 1200 × 800 पिक्सेल, एंटी‑एलियास्ड ग्राफ़िक्स और हिन्टेड टेक्स्ट के साथ। + +--- + +## Full Working Example – Paste, Run, Verify + +नीचे पूरा प्रोग्राम दिया गया है जिसे आप कंसोल एप्लिकेशन के रूप में कंपाइल कर सकते हैं। इसमें सभी `using` स्टेटमेंट्स, एरर हैंडलिंग, और आवश्यक टिप्पणियाँ शामिल हैं। + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**अपेक्षित परिणाम:** आपके एक्सीक्यूटेबल के बगल में `output.png` नाम की फ़ाइल बनती है, जिसमें `sample.html` का रेंडर किया हुआ संस्करण दिखता है। किसी भी इमेज व्यूअर से खोलें और आयाम व स्टाइलिंग की पुष्टि करें। + +--- + +## Common Pitfalls & How to Avoid Them + +| समस्या | लक्षण | समाधान | +|-------|----------|-----| +| फ़ॉन्ट नहीं मिला | टेक्स्ट सामान्य sans‑serif में दिखता है | आवश्यक फ़ॉन्ट को होस्ट मशीन पर इंस्टॉल करें या HTML में वेब‑फ़ॉन्ट एम्बेड करें। | +| गलत आयाम | PNG अपेक्षा से बड़ा या छोटा है | `ImageRenderingOptions` में `Width` और `Height` मानों को दोबारा जांचें। | +| धुंधले किनारे | एंटी‑एलियासिंग नहीं है | `UseAntialiasing = true` सुनिश्चित करें। | +| Linux रेंडरिंग आर्टिफ़ैक्ट्स | टेक्स्ट धुंधला दिखता है | `TextOptions` में `UseHinting = true` सेट करें। | + +*प्रो टिप:* जब आप हेडलेस सर्वर पर **HTML को इमेज में रेंडर** करते हैं, तो सुनिश्चित करें कि सर्वर में आवश्यक सिस्टम लाइब्रेरीज़ (जैसे Linux पर `libgdiplus`) मौजूद हों, अन्यथा Aspose.HTML कम गुणवत्ता वाले सॉफ़्टवेयर रेंडरर पर फॉलबैक कर सकता है। + +--- + +## Extending the Solution – Next Steps + +- **बैच रूपांतरण:** HTML फ़ाइलों की सूची पर लूप चलाएँ और समान रेंडरिंग लॉजिक को कॉल करके PNG गैलरी बनाएँ। +- **विभिन्न फॉर्मेट:** `output.png` को `output.jpg` या `output.bmp` में बदलें फ़ाइल एक्सटेंशन बदलकर; Aspose.HTML स्वचालित रूप से सही एन्कोडर चुन लेगा। +- **डायनामिक साइजिंग:** रिस्पॉन्सिव डिज़ाइन के लिए HTML के viewport meta टैग के आधार पर `Width` और `Height` की गणना करें। +- **वॉटरमार्किंग:** सहेजने से पहले लोगो ओवरले करने के लिए `Aspose.Html.Drawing` का उपयोग करें। + +इन विचारों से आप एक साधारण **HTML से PNG बनाना** स्निपेट से एक पूर्ण‑फ़ीचर इमेज जेनरेशन सर्विस तक पहुँच सकते हैं। + +--- + +## निष्कर्ष + +हमने Aspose.HTML for .NET का उपयोग करके **HTML से PNG बनाना** के सभी आवश्यक चरणों को कवर किया: दस्तावेज़ लोड करना, **इमेज की चौड़ाई‑ऊँचाई सेट करना**, हिन्टिंग के साथ टेक्स्ट को फाइन‑ट्यून करना, और अंत में **HTML को PNG के रूप में सहेजना**। पूरा कोड उदाहरण आपके प्रोजेक्ट में ड्रॉप‑इन करने के लिए तैयार है, और ऊपर दिए गए टिप्स आपको सामान्य समस्याओं से बचाएंगे। + +अब जब आप भरोसेमंद रूप से **HTML को इमेज में रेंडर** कर सकते हैं, तो विभिन्न स्टाइल्स, बैच प्रोसेसिंग, या उसी पाइपलाइन में PDF में बदलने के साथ प्रयोग करें। संभावनाएँ असीम हैं, और कोड पहले से ही आपके हाथों में है। + +कोडिंग का आनंद लें, और अपने परिणाम साझा करने या प्रश्न पूछने के लिए कमेंट्स में लिखें! + +![HTML से PNG बनाने का उदाहरण](/images/create-png-from-html.png "Aspose.HTML का उपयोग करके 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/html-extensions-and-conversions/_index.md b/html/hindi/net/html-extensions-and-conversions/_index.md index 45408d5a1..95494bd64 100644 --- a/html/hindi/net/html-extensions-and-conversions/_index.md +++ b/html/hindi/net/html-extensions-and-conversions/_index.md @@ -30,7 +30,7 @@ HTML एक्सटेंशन डेवलपर्स के लिए ए ## Aspose.HTML के साथ आरंभ करें -क्या आप शुरू करने के लिए तैयार हैं? .NET के लिए Aspose.HTML ट्यूटोरियल शुरुआती और अनुभवी डेवलपर्स दोनों के लिए हैं। चाहे आप HTML एक्सटेंशन और रूपांतरणों के लिए नए हों या उन्नत युक्तियों की तलाश कर रहे हों, हमारे चरण-दर-चरण मार्गदर्शिकाएँ आपकी आवश्यकताओं के अनुरूप डिज़ाइन की गई हैं। +क्या आप शुरू करने के लिए तैयार हैं? .NET के लिए Aspose.HTML ट्यूटोरियल शुरुआती और अनुभवी डेवलपर्स दोनों के लिए हैं। चाहे आप HTML एक्सटेंशन और रूपांतरणों के लिए नए हों या उन्नत युक्तियों की तलाश कर रहे हों, हमारे चरण-दर-स्टेप मार्गदर्शिकाएँ आपकी आवश्यकताओं के अनुरूप डिज़ाइन की गई हैं। ## .NET के लिए Aspose.HTML क्यों? @@ -43,6 +43,9 @@ Aspose.HTML for .NET सिर्फ़ एक लाइब्रेरी न ### [HTML से PDF बनाएं – C# चरण‑दर‑चरण गाइड](./create-pdf-from-html-c-step-by-step-guide/) C# में Aspose.HTML का उपयोग करके HTML को PDF में बदलने का चरण‑दर‑चरण मार्गदर्शन। +### [HTML से PDF बनाएं – डेवलपर्स के लिए चरण‑दर‑चरण गाइड](./create-pdf-from-html-step-by-step-guide-for-developers/) +C# में Aspose.HTML का उपयोग करके HTML को PDF में बदलने के लिए विस्तृत चरण‑दर‑चरण गाइड। + ### [Aspose.HTML के साथ .NET में EPUB को छवि में बदलें](./convert-epub-to-image/) .NET के लिए Aspose.HTML का उपयोग करके EPUB को छवियों में परिवर्तित करना सीखें। कोड उदाहरणों और अनुकूलन योग्य विकल्पों के साथ चरण-दर-चरण ट्यूटोरियल। @@ -77,7 +80,7 @@ Aspose.HTML के साथ .NET में HTML को MHTML में बद .NET के लिए Aspose.HTML के साथ HTML को TIFF में कैसे बदलें, यह जानें। कुशल वेब सामग्री अनुकूलन के लिए हमारे चरण-दर-चरण मार्गदर्शिका का पालन करें। ### [Aspose.HTML के साथ .NET में HTML को XPS में बदलें](./convert-html-to-xps/) -.NET के लिए Aspose.HTML की शक्ति का पता लगाएं: HTML को XPS में आसानी से बदलें। पूर्वापेक्षाएँ, चरण-दर-चरण मार्गदर्शिका और FAQ शामिल हैं। +.NET के लिए Aspose.HTML की शक्ति का पता लगाएं: HTML को XPS में आसानी से बदलें। पूर्वापेक्षाएँ, चरण-दर-स्टेप मार्गदर्शिका और FAQ शामिल हैं। ### [HTML को ZIP के रूप में सहेजें – पूर्ण C# ट्यूटोरियल](./save-html-as-zip-complete-c-tutorial/) HTML को ZIP फ़ाइल में सहेजने के चरण-दर-चरण मार्गदर्शन, C# कोड उदाहरण और अनुकूलन विकल्प। @@ -90,6 +93,12 @@ Aspose.HTML for .NET का उपयोग करके स्टाइल् ### [C# में HTML को ZIP में सहेजें – पूर्ण इन‑मेमोरी उदाहरण](./save-html-to-zip-in-c-complete-in-memory-example/) C# में इन‑मेमोरी में HTML को ZIP फ़ाइल में सहेजने का पूरा उदाहरण देखें। +### [C# में HTML को ZIP के रूप में सहेजें – पूर्ण गाइड](./save-html-as-zip-in-c-complete-guide/) +C# में Aspose.HTML का उपयोग करके HTML को ZIP फ़ाइल में सहेजने की पूरी मार्गदर्शिका। चरण‑दर‑चरण कोड उदाहरण और सेटिंग्स। + +### [C# में HTML को PDF के रूप में सहेजें – फ़ॉन्ट्स के साथ पूर्ण गाइड](./save-html-as-pdf-in-c-complete-guide-with-fonts/) +C# में Aspose.HTML का उपयोग करके फ़ॉन्ट्स को नियंत्रित करते हुए HTML को PDF में बदलने की पूरी मार्गदर्शिका। + ## निष्कर्ष निष्कर्ष में, HTML एक्सटेंशन और रूपांतरण आधुनिक वेब विकास के आवश्यक तत्व हैं। .NET के लिए Aspose.HTML प्रक्रिया को सरल बनाता है और इसे सभी स्तरों के डेवलपर्स के लिए सुलभ बनाता है। हमारे ट्यूटोरियल का पालन करके, आप एक व्यापक कौशल सेट के साथ एक कुशल वेब डेवलपर बनने के अपने रास्ते पर अच्छी तरह से आगे बढ़ेंगे। diff --git a/html/hindi/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/hindi/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..8b5f0c1bc --- /dev/null +++ b/html/hindi/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,210 @@ +--- +category: general +date: 2026-02-27 +description: पूरा C# उदाहरण के साथ HTML से तेज़ी से PDF बनाएं। HTML को PDF में बदलना, + HTML को PDF के रूप में सहेजना, और सर्वोत्तम प्रैक्टिस सेटिंग्स के साथ HTML को PDF + में निर्यात करना सीखें। +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: hi +og_description: C# में HTML से PDF बनाएं, तैयार‑से‑चलाने योग्य उदाहरण के साथ। यह गाइड + आपको HTML को PDF में बदलने, HTML को PDF के रूप में सहेजने और HTML को PDF में निर्यात + करने की प्रक्रिया दिखाता है। +og_title: HTML से PDF बनाएं – पूर्ण C# ट्यूटोरियल +tags: +- C# +- PDF +- HTML +title: HTML से PDF बनाएं – डेवलपर्स के लिए चरण‑दर‑चरण मार्गदर्शिका +url: /hi/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +unchanged. + +Let's produce final content. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML से PDF बनाएं – पूर्ण C# ट्यूटोरियल + +क्या आपको **HTML से PDF बनाना** पड़ा है लेकिन सही API कॉल्स का पता नहीं था? आप अकेले नहीं हैं। चाहे आप एक रिपोर्टिंग डैशबोर्ड, इनवॉइस जेनरेटर, या स्टैटिक साइट एक्सपोर्टर बना रहे हों, HTML को PDF में बदलना आधुनिक वेब‑सेंटरिक ऐप्स के लिए अक्सर आवश्यक होता है। + +इस ट्यूटोरियल में हम एक **पूर्ण, चलाने योग्य C# उदाहरण** के माध्यम से दिखाएंगे कि **HTML को PDF में कैसे बदलें**, स्पष्ट आउटपुट के लिए रेंडरिंग विकल्प कैसे कॉन्फ़िगर करें, और अंत में **HTML को PDF के रूप में डिस्क पर सहेजें**। अंत तक आपके पास **HTML को PDF में एक्सपोर्ट** करने का एक ठोस, प्रोडक्शन‑रेडी पैटर्न होगा जिसे आप किसी भी .NET प्रोजेक्ट में डाल सकते हैं। + +## आप क्या सीखेंगे + +- `HTMLDocument` के साथ स्थानीय HTML फ़ाइल कैसे लोड करें। +- कौन से रेंडरिंग विकल्प फ़ॉन्ट वेट, इमेज स्मूदनेस, और टेक्स्ट हिन्टिंग को बेहतर बनाते हैं। +- एक ही `Save` मेथड के साथ **HTML को PDF में एक्सपोर्ट** करने का सटीक कॉल। +- बड़े दस्तावेज़ों को संभालने, सामान्य समस्याओं को डिबग करने, और परिणाम की पुष्टि करने के टिप्स। +- एक पूरा, कॉपी‑एंड‑पेस्ट कोड सैंपल जिसे आप आज ही चला सकते हैं। + +### पूर्वापेक्षाएँ + +- .NET 6+ (या .NET Framework 4.7+). हम जो API उपयोग कर रहे हैं वह दोनों पर काम करती है। +- काल्पनिक `HtmlToPdfLib` का रेफ़रेंस (अपने वास्तविक लाइब्रेरी नाम से बदलें)। +- एक `input.html` फ़ाइल जिसे आप नियंत्रित करने वाले फ़ोल्डर में रखें (हम इसे `YOUR_DIRECTORY` कहेंगे)। + +यदि आपके पास ये सब है, तो चलिए शुरू करते हैं—कोई अतिरिक्त सेटअप नहीं चाहिए। + +## चरण 1: HTML दस्तावेज़ लोड करें **HTML से PDF बनाने** के लिए + +सबसे पहले आपको एक `HTMLDocument` इंस्टेंस चाहिए जो स्रोत फ़ाइल की ओर इशारा करे। इसे ऐसे समझें जैसे आप लिखना शुरू करने से पहले नोटबुक खोलते हैं—दस्तावेज़ के बिना रेंडर करने को कुछ नहीं है। + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **यह क्यों महत्वपूर्ण है:** HTML फ़ाइल को पहले लोड करने से लाइब्रेरी को DOM पार्स करने, CSS रिजॉल्व करने, और इमेजेज़ प्रीलोड करने में मदद मिलती है। इस चरण को छोड़ने या खराब फ़ॉर्मेटेड HTML देने से **html to pdf conversion** के दौरान खाली पेज़ दिख सकते हैं। + +## चरण 2: **HTML to PDF Conversion** के लिए रेंडरिंग विकल्प कॉन्फ़िगर करें + +रेंडरिंग विकल्प वही “सीक्रेट सॉस” हैं जो साधारण PDF को प्रोफेशनल‑लुकिंग दस्तावेज़ में बदलते हैं। यहाँ हम बोल्ड फ़ॉन्ट, इमेजेज़ के लिए एंटी‑एलियासिंग, और टेक्स्ट के लिए हिन्टिंग सक्षम करते हैं—ऐसे फीचर जो अधिकांश डेवलपर्स नजरअंदाज़ करते हैं लेकिन विज़ुअल फ़िडेलिटी को काफी बढ़ाते हैं। + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **प्रो टिप:** यदि आप किसी ब्रांड‑स्पेसिफ़िक फ़ॉन्ट का उपयोग कर रहे हैं, तो `pdfOptions` के अंदर `FontFamily` भी सेट करें। इससे **convert HTML to PDF** के दौरान जेनरिक फ़ॉन्ट में फ़ॉलबैक होने से बचा जा सकता है। + +## चरण 3: फ़ाइल सहेजें और **HTML को PDF में एक्सपोर्ट** करें + +अब दस्तावेज़ लोड हो गया है और विकल्प ट्यून हो गए हैं, अंतिम कदम एक ही लाइन है जो PDF को डिस्क पर लिखता है। `Save` मेथड आंतरिक रूप से **html to pdf conversion** करता है, और हमने जो भी रेंडरिंग ट्यूनिंग की है, उसे लागू करता है। + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **आपको क्या दिखना चाहिए:** किसी भी व्यूअर में `output.pdf` खोलने पर मूल HTML लेआउट, बोल्ड हेडिंग्स, स्मूद इमेजेज़, और स्पष्ट टेक्स्ट दिखाई देगा। यदि स्टाइल्स गायब लगें, तो दोबारा जांचें कि आपके CSS फ़ाइलें `input.html` के सापेक्ष पहुँच योग्य हैं या नहीं। + +![create pdf from html example](/images/create-pdf-from-html.png "जेनरेटेड PDF का स्क्रीनशॉट – create pdf from html") + +*ऊपर का स्क्रीनशॉट (alt text: “create pdf from html example”) एक रेंडर किया हुआ PDF दिखाता है जो मूल HTML स्टाइलिंग को बरकरार रखता है।* + +## **HTML को PDF में बदलते** समय आम समस्याएँ + +भले ही प्रवाह सीधा हो, डेवलपर्स अक्सर अड़चनें देखते हैं। नीचे तीन सबसे सामान्य समस्याएँ और उन्हें कैसे टालें, दिया गया है। + +### 1. रिसोर्सेज़ (इमेजेज़, CSS, फ़ॉन्ट्स) नहीं मिल रहे + +यदि आपका HTML रिलेटिव पाथ्स के माध्यम से बाहरी एसेट्स रेफ़र करता है, तो कन्वर्टर उन्हें नहीं ढूँढ पाएगा। हमेशा एब्सोल्यूट पाथ्स उपयोग करें या बेस URL सेट करें: + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. बड़े दस्तावेज़ों से टाइमआउट्स + +जब मल्टी‑पेज रिपोर्ट्स से निपट रहे हों, तो लाइब्रेरी के टाइमआउट सेटिंग को बढ़ाएँ: + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. फ़ॉन्ट सब्स्टिट्यूशन से अनपेक्षित लुक + +सटीक फ़ॉन्ट फ़ैमिली निर्दिष्ट करें: + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +इन मुद्दों को शुरुआती चरण में ही हल करने से **save HTML as PDF** ऑपरेशन के दौरान निराशाजनक डिबगिंग से बचा जा सकता है। + +## उन्नत: **HTML को PDF में एक्सपोर्ट** करने से पहले कवर पेज जोड़ें + +कभी‑कभी आपको एक कस्टम कवर चाहिए होता है—शायद लोगो के साथ टाइटल पेज। आप मुख्य दस्तावेज़ से पहले एक साधारण HTML स्निपेट प्रीपेंड कर सकते हैं: + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **आप यह क्यों करेंगे:** HTML में सीधे कवर जोड़ने से PDF जेनरेशन पाइपलाइन सरल रहती है, और iText या PdfSharp जैसे पोस्ट‑प्रोसेसिंग टूल्स की जरूरत नहीं पड़ती। + +## प्रोग्रामेटिकली आउटपुट की पुष्टि + +यदि आपको यह सत्यापित करना है कि PDF सही ढंग से जेनरेट हुआ है (जैसे CI पाइपलाइन्स में), तो फ़ाइल साइज़ या पेज काउंट जांच सकते हैं: + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +शून्य‑से‑अधिक पेज काउंट यह पुष्टि करता है कि **convert HTML to PDF** स्टेप सफल रहा। + +## सारांश और अगले कदम + +हमने अभी-अभी **HTML से PDF बनाने** का **पूरा, एंड‑टू‑एंड उदाहरण** C# में देखा। प्रवाह इस प्रकार है: + +1. स्रोत HTML लोड करें (`HTMLDocument`)। +2. `PdfRenderingOptions` के साथ रेंडरिंग को फाइन‑ट्यून करें। +3. `Save` कॉल करके **HTML को PDF में एक्सपोर्ट** करें। + +अब आप आगे कर सकते हैं: + +- **बैच प्रोसेसिंग**: HTML फ़ाइलों के फ़ोल्डर पर लूप चलाकर बड़े पैमाने पर PDF बनाएं। +- **डायनामिक HTML**: Razor व्यू इंजन का उपयोग करके रन‑टाइम पर HTML जेनरेट करें और फिर कन्वर्ट करें। +- **सिक्योरिटी**: यदि आप यूज़र‑प्रोवाइडेड HTML स्वीकार करते हैं तो कन्वर्ज़न प्रोसेस को सैंडबॉक्स करें (स्क्रिप्ट इंजेक्शन रोकें)। + +विभिन्न विकल्पों के साथ प्रयोग करें—शायद आर्काइविंग के लिए `PdfA` कॉम्प्लायंस इस्तेमाल करें, या इंटरैक्टिव PDFs के लिए JavaScript एम्बेड करें। मूल पैटर्न वही रहता है, और अब आपके पास कोई भी **save HTML as PDF** आवश्यकता पूरी करने के लिए एक भरोसेमंद बुनियाद है। + +--- + +*हैप्पी कोडिंग! यदि आपको कोई अजीब समस्या मिले, तो नीचे कमेंट करें या लाइब्रेरी के GitHub इश्यूज़ पेज़ देखें। कम्युनिटी अक्सर ऐसे ट्यूनिंग शेयर करती है जो **html to pdf conversion** को और भी स्मूद बनाते हैं।* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/hindi/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/hindi/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..c45a65078 --- /dev/null +++ b/html/hindi/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,289 @@ +--- +category: general +date: 2026-02-27 +description: Aspose.HTML का उपयोग करके C# में HTML को जल्दी PDF के रूप में सहेजें। + जानिए कैसे HTML को PDF में बदलें, कस्टम फ़ॉन्ट्स और स्टाइलिंग के साथ HTML से PDF + बनाएं, केवल कुछ ही चरणों में। +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: hi +og_description: Aspose.HTML का उपयोग करके C# में HTML को तेज़ी से PDF में सहेजें। + यह ट्यूटोरियल दिखाता है कि HTML को PDF में कैसे बदलें, HTML से PDF कैसे जनरेट करें + और कस्टम फ़ॉन्ट कैसे लागू करें। +og_title: C# में HTML को PDF के रूप में सहेजें – फ़ॉन्ट्स के साथ पूर्ण गाइड +tags: +- csharp +- pdf +- html +title: C# में HTML को PDF के रूप में सहेजें – फ़ॉन्ट्स के साथ पूर्ण गाइड +url: /hi/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +. +- Integrate this workflow into an ASP.NET Core API so your web service can return PDFs on demand. + +Translate. + +Got questions... translate. + +Finally closing shortcodes. + +Now produce final content. + +Be careful to keep code block placeholders unchanged. Also preserve markdown formatting. + +Let's craft final answer.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# में HTML को PDF के रूप में सहेजें – फ़ॉन्ट्स के साथ पूर्ण गाइड + +क्या आपको कभी C# एप्लिकेशन से **HTML को PDF के रूप में सहेजने** की ज़रूरत पड़ी है लेकिन यह तय नहीं कर पाए कि कौन‑सी लाइब्रेरी चुनें? आप अकेले नहीं हैं। कई डेवलपर्स को यह समस्या आती है जब वे वेब कंटेंट से सीधे इनवॉइस, रिपोर्ट या प्रिंटेबल रसीदें भेजना चाहते हैं। + +अच्छी खबर? Aspose.HTML के साथ आप **HTML को PDF में बदल सकते हैं**, **HTML से PDF जेनरेट कर सकते हैं**, और यहाँ तक कि **फ़ॉन्ट्स के साथ PDF बना सकते हैं** कुछ ही लाइनों में। इस ट्यूटोरियल में हम पूरी प्रक्रिया को चरण‑दर‑चरण देखेंगे, प्रत्येक सेटिंग क्यों महत्वपूर्ण है समझाएंगे, और आपको एक तैयार‑चलाने‑योग्य उदाहरण देंगे। + +## आप क्या सीखेंगे + +- C# में स्थानीय या रिमोट HTML फ़ाइल को कैसे लोड करें +- कौन‑से रेंडरिंग विकल्प आपको बोल्ड/इटैलिक फ़ॉन्ट्स, एंटी‑एलियासिंग, और टेक्स्ट हिन्टिंग देते हैं +- परिणाम को डिस्क पर PDF फ़ाइल के रूप में कैसे सहेजें +- कस्टम फ़ॉन्ट्स को संभालने और सामान्य समस्याओं से बचने के टिप्स + +Aspose.HTML का कोई पूर्व अनुभव आवश्यक नहीं—सिर्फ एक .NET डेवलपमेंट एनवायरनमेंट (Visual Studio 2022 या बाद का) और Aspose.HTML for .NET NuGet पैकेज। + +## आवश्यकताएँ + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6.0 या बाद का | Aspose.HTML के लिए रनटाइम प्रदान करता है | +| Aspose.HTML for .NET (NuGet) | वह लाइब्रेरी जो भारी काम करती है | +| एक सैंपल HTML फ़ाइल (`sample.html`) | वह स्रोत कंटेंट जिसे हम ट्रांसफ़ॉर्म करेंगे | +| बेसिक C# नॉलेज | कोड स्निपेट्स को समझने के लिए | + +यदि आपके पास ये सब है, तो चलिए शुरू करते हैं। + +## Step 1: Install Aspose.HTML via NuGet + +Visual Studio में अपना प्रोजेक्ट खोलें, **Dependencies** नोड पर राइट‑क्लिक करें, और **Manage NuGet Packages** चुनें। `Aspose.HTML` खोजें और **Install** पर क्लिक करें। + +```powershell +dotnet add package Aspose.HTML +``` + +> **Pro tip:** नवीनतम स्थिर संस्करण (2026‑02‑27 तक यह 23.11 है) का उपयोग करें ताकि आपको नवीनतम रेंडरिंग सुधार मिलें। + +## Step 2: Load the Source HTML Document + +सबसे पहले हमें एक `HTMLDocument` ऑब्जेक्ट चाहिए जो हमारी फ़ाइल की ओर इशारा करे। यह क्लास मार्कअप को पार्स करती है, CSS को रिज़ॉल्व करती है, और रेंडरिंग के लिए सब कुछ तैयार करती है। + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Why this step?** +> HTML को `HTMLDocument` में लोड करने से पार्सिंग चरण को रेंडरिंग चरण से अलग किया जाता है, जिससे आप PDF बनाने से पहले DOM को निरीक्षण कर सकते हैं या रन‑टाइम पर संशोधन कर सकते हैं। + +## Step 3: Configure PDF Rendering Options + +Aspose.HTML आपको अंतिम PDF के लुक पर सूक्ष्म नियंत्रण देता है। इस उदाहरण में हम बोल्ड + इटैलिक फ़ॉन्ट स्टाइल, स्मूथ ग्राफ़िक्स के लिए एंटी‑एलियासिंग, और तेज़ लो‑DPI आउटपुट के लिए टेक्स्ट हिन्टिंग सक्षम करेंगे। + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### Why These Settings? + +- **`FontStyle`** – किसी भी `` या `` टैग को बेस फ़ॉन्ट के साथ मर्ज करता है, जिससे PDF मूल स्टाइलिंग को बरकरार रखता है। +- **`UseAntialiasing`** – चार्ट, आइकन या किसी भी रास्टराइज़्ड कंटेंट पर जैग्ड एजेज़ को कम करता है। +- **`UseHinting`** – ग्लिफ़ आउटलाइन को पिक्सेल ग्रिड पर संरेखित करता है, जो विशेष रूप से तब उपयोगी है जब PDF कम‑रिज़ॉल्यूशन डिवाइस पर देखा जाएगा। + +यदि आपको कस्टम फ़ॉन्ट्स (जैसे कंपनी का ब्रांड फ़ॉन्ट) चाहिए, तो `.ttf` फ़ाइलों को किसी फ़ोल्डर में रखें और `pdfRenderOptions.FontProvider` को उसी अनुसार सेट करें। यह एक अलग विषय है, लेकिन मूल विचार यह है: + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## Step 4: Render the HTML Document to PDF + +अब हम दस्तावेज़ और विकल्पों को मिलाते हैं, फिर Aspose.HTML को आउटपुट फ़ाइल लिखने के लिए कहते हैं। + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +इस लाइन के चलने के बाद, आपको `output.pdf` अपने एक्सीक्यूटेबल के बगल में मिलेगा। इसे खोलें—आपको मूल HTML का रेंडरिंग बोल्ड/इटैलिक स्टाइलिंग, स्मूथ ग्राफ़िक्स और स्पष्ट टेक्स्ट के साथ दिखना चाहिए। + +> **Expected Result:** +> एक PDF जो `sample.html` की लेआउट को प्रतिबिंबित करता है, सभी हेडिंग्स बोल्ड, इम्फ़ेसाइज़्ड टेक्स्ट इटैलिक, और एम्बेडेड इमेजेज़ बिना जैग्ड एजेज़ के रेंडर होते हैं। + +## Step 5: Verify and Tweak (Optional) + +### Quick verification script + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +यदि PDF सही नहीं दिख रहा है, तो इन सामान्य समायोजनों पर विचार करें: + +| Issue | Likely cause | Fix | +|-------|--------------|-----| +| फ़ॉन्ट्स गायब | फ़ॉन्ट एम्बेड नहीं हुआ या नहीं मिला | `FontProvider.AddFont` का उपयोग करें और सुनिश्चित करें कि फ़ॉन्ट फ़ाइल एक्सेसिबल है | +| इमेजेज़ ब्लरी दिख रही हैं | एंटी‑एलियासिंग बंद है | `UseAntialiasing = true` सेट करें | +| टेक्स्ट स्क्रीन पर बहुत पतला दिख रहा है | हिन्टिंग बंद है | `UseHinting = true` सक्षम करें | +| पेज ब्रेक पर लेआउट शिफ्ट | CSS `page-break` नियम अनदेखा हो रहे हैं | अपने HTML/CSS में स्पष्ट `page-break-before/after` जोड़ें | + +## Full Working Example + +नीचे पूरा प्रोग्राम दिया गया है जिसे आप नई कंसोल ऐप में कॉपी‑पेस्ट कर सकते हैं। इसमें सभी `using` निर्देश, एरर हैंडलिंग, और स्पष्टता के लिए कमेंट्स शामिल हैं। + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +प्रोजेक्ट चलाएँ (`dotnet run`), और आपको सफलता संदेश के साथ एक नया `output.pdf` बनते हुए दिखेगा। + +## Common Questions & Edge Cases + +### क्या मैं **HTML को PDF में बदल** सकता हूँ URL से, स्थानीय फ़ाइल की बजाय? + +बिल्कुल। फ़ाइल पाथ को URL स्ट्रिंग से बदल दें: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +Aspose.HTML पेज को डाउनलोड करेगा, बाहरी रिसोर्सेज़ को रिज़ॉल्व करेगा, और उसे रेंडर करेगा। + +### **बड़ी HTML फ़ाइलों** या **एकाधिक पेजों** के बारे में क्या? + +Aspose.HTML कंटेंट को स्ट्रीम करता है, इसलिए मेमोरी उपयोग यथोचित रहता है। यदि आप प्रत्येक HTML सेक्शन को अलग PDF पेज पर चाहते हैं, तो HTML में मैन्युअल पेज ब्रेक डालें: + +```html +
+``` + +### क्या यह **.NET Core** और **.NET 7** के साथ काम करता है? + +हां। लाइब्रेरी क्रॉस‑प्लेटफ़ॉर्म है; बस सुनिश्चित करें कि आप संगत फ्रेमवर्क (net6.0, net7.0, आदि) टारगेट कर रहे हैं और संबंधित NuGet पैकेज इंस्टॉल किया है। + +### पूर्ण PDF पोर्टेबिलिटी के लिए **फ़ॉन्ट एम्बेड** कैसे करें? + +पहले दिखाए गए अनुसार `pdfRenderOptions.FontProvider` सेट करें, और फ़ॉन्ट एम्बेडिंग भी सक्षम करें: + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +यह सुनिश्चित करता है कि PDF किसी भी मशीन पर समान दिखे, भले ही फ़ॉन्ट स्थानीय रूप से इंस्टॉल न हो। + +## Visual Example + +![save html as pdf example](example.png){alt="HTML को PDF के रूप में सहेजने का उदाहरण"} + +*स्क्रीनशॉट दिखाता है कि जनरेटेड PDF Adobe Acrobat में खुला है, जिसमें बोल्ड/इटैलिक स्टाइल और स्मूथ इमेजेज़ बरकरार हैं।* + +## निष्कर्ष + +हमने वह सब कवर किया जो आपको C# में **HTML को PDF के रूप में सहेजने** के लिए चाहिए। मार्कअप लोड करने, रेंडरिंग विकल्प कॉन्फ़िगर करने, और अंतिम PDF लिखने की प्रक्रिया सीधी और अत्यधिक कस्टमाइज़ेबल है। + +इस गाइड का पालन करके आप **HTML को PDF में बदल**, **HTML से PDF जेनरेट**, और **फ़ॉन्ट्स के साथ PDF बना** सकते हैं किसी भी रिपोर्टिंग या डॉक्यूमेंट‑जेनरेशन परिदृश्य के लिए। अतिरिक्त विकल्पों—जैसे वॉटरमार्क, एन्क्रिप्शन, या कस्टम पेज साइज—के साथ प्रयोग करने में संकोच न करें, क्योंकि Aspose.HTML आपको वह लचीलापन देता है। + +**अगले कदम** जिन्हें आप एक्सप्लोर कर सकते हैं: + +- `PdfSaveOptions` क्लास का उपयोग करके PDF संस्करण या कॉम्प्रेशन लेवल सेट करें। +- कई `HTMLDocument` इंस्टेंस को एक ही PDF में मिलाकर मल्टी‑सेक्शन रिपोर्ट बनाएं। +- इस वर्कफ़्लो को ASP.NET Core API में इंटीग्रेट करें ताकि आपका वेब सर्विस ऑन‑डिमांड PDFs रिटर्न कर सके। + +यदि आपके पास एज केसों के बारे में प्रश्न हैं या रेंडरिंग पाइपलाइन को ट्यून करने में मदद चाहिए, तो नीचे कमेंट करें, और हैप्पी कोडिंग! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/hindi/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/hindi/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..49d3ee268 --- /dev/null +++ b/html/hindi/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,249 @@ +--- +category: general +date: 2026-02-27 +description: C# ZipArchive का उपयोग करके HTML को ZIP के रूप में सहेजें – कस्टम रिसोर्स + हैंडलर के साथ चरण‑दर‑चरण उदाहरण, साथ ही HTML को ZIP में निर्यात करने और ZIP आर्काइव + बनाने के लिए C# कोड के टिप्स। +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: hi +og_description: C# ZipArchive का उपयोग करके HTML को ZIP के रूप में सहेजें। पूर्ण उदाहरण, + कस्टम रिसोर्स हैंडलर और सर्वोत्तम प्रथाओं के साथ HTML को ZIP में निर्यात करना सीखें। +og_title: C# में HTML को ZIP के रूप में सहेजें – पूर्ण गाइड +tags: +- C# +- ZipArchive +- HTML export +title: C# में HTML को ZIP के रूप में सहेजें – पूर्ण गाइड +url: /hi/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# में HTML को ZIP के रूप में सहेजें – पूर्ण गाइड + +क्या आपको कभी **HTML को ZIP के रूप में सहेजने** की जरूरत पड़ी है लेकिन आप नहीं जानते थे कि कौन सी .NET क्लासेज़ इस्तेमाल करें? आप अकेले नहीं हैं—कई डेवलपर्स को यह समस्या आती है जब वे वेब पेज को उसके एसेट्स के साथ ऑफ़लाइन उपयोग या वितरण के लिए पैकेज करना चाहते हैं। अच्छी खबर? बिल्ट‑इन `System.IO.Compression.ZipArchive` के साथ आप इसे कुछ ही लाइनों में कर सकते हैं, और आपको प्रत्येक रिसोर्स को कैसे लिखा जाए, इसका साफ़ तरीका भी मिलेगा। + +इस ट्यूटोरियल में हम एक **पूर्ण, चलाने योग्य उदाहरण** के माध्यम से चलेंगे जो आपको दिखाएगा कि कैसे एक HTML दस्तावेज़ को ZIP फ़ाइल में एक्सपोर्ट किया जाए, एक कस्टम `ResourceHandler` का उपयोग करके प्रत्येक एसेट को आर्काइव में स्ट्रीम किया जाए। रास्ते में हम कुछ **c# ziparchive example** स्निपेट्स जोड़ेंगे, **how to export html to zip** के वास्तविक‑दुनिया के परिदृश्यों पर चर्चा करेंगे, और जब आप **create zip archive c#** प्रोग्राम बनाना चाहते हैं तो सूक्ष्म अंतर भी बताएंगे। + +> **Prerequisites** – आपको .NET 6+ (या .NET Core 3.1) की आवश्यकता होगी और उस लाइब्रेरी का रेफ़रेंस चाहिए जो `HTMLDocument`, `HTMLSaveOptions`, और `ResourceHandler` प्रदान करती है। यदि आप Aspose.HTML या समान पैकेज का उपयोग कर रहे हैं, तो इसे NuGet के माध्यम से जोड़ें। अन्य कोई थर्ड‑पार्टी टूल्स आवश्यक नहीं हैं। + +--- + +## इस ट्यूटोरियल में क्या कवर किया गया है + +- HTML फ़ाइल और उसके लिंक्ड रिसोर्सेज़ को प्राप्त करने के लिए **ZipArchive** सेट अप करना। +- **custom resource handler** (`ZipHandler`) को लागू करना जो प्रत्येक रिसोर्स स्ट्रीम को आर्काइव में निर्देशित करता है। +- **HTMLSaveOptions** का उपयोग करके सब कुछ जोड़ना और वास्तव में **HTML को ZIP के रूप में सहेजना**। +- पाथ्स, डुप्लिकेट एंट्रीज़, और बड़े एसेट्स से निपटते समय सामान्य समस्याएँ। +- समाधान को विस्तारित करने के टिप्स—जैसे मैनिफेस्ट फ़ाइल जोड़ना या ZIP को एन्क्रिप्ट करना। + +अंत तक आपके पास एक स्व-निहित मेथड होगा जिसे आप किसी भी C# प्रोजेक्ट में डाल सकते हैं ताकि आप **HTML को ZIP के रूप में सहेजने** में आत्मविश्वास महसूस करें। + +--- + +## चरण 1: आवश्यक नेमस्पेसेस जोड़ें + +कोड चलाने से पहले, सुनिश्चित करें कि कंपाइलर को संपीड़न क्लासेज़ और आप जिस HTML लाइब्रेरी का उपयोग कर रहे हैं, उसके बारे में पता हो। + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*Why this matters:* `System.IO.Compression` आपको `ZipArchive` देता है, जबकि `Aspose.Html` नेमस्पेसेस `HTMLDocument`, `HTMLSaveOptions`, और `ResourceHandler` बेस क्लास को उजागर करते हैं जिसे हम विस्तारित करेंगे। यदि आप कोई अलग HTML इंजन उपयोग कर रहे हैं, तो समान प्रकारों की तलाश करें। + +--- + +## चरण 2: एक कस्टम रिसोर्स हैंडलर बनाएं (प्राइमरी कीवर्ड इन एक्शन) + +**HTML को ZIP के रूप में सहेजने** का मूल भाग यह है कि इंजन को बताया जाए कि प्रत्येक बाहरी रिसोर्स (इमेजेज़, CSS, स्क्रिप्ट्स) कहाँ जाना चाहिए। `ResourceHandler` से इनहेरिट करके हम उस स्ट्रीम पर नियंत्रण प्राप्त करते हैं जो डेटा प्राप्त करता है। + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**मुख्य बिंदु** + +- `info.Uri` वह रिलेटिव URL है जिसे HTML इंजन लिखने की कोशिश कर रहा है। इसे एंट्री नाम के रूप में उपयोग करने से ZIP के अंदर फ़ोल्डर संरचना बरकरार रहती है। +- `CreateEntry` स्वचालित रूप से आवश्यक सभी डायरेक्टरीज़ बना देगा; आपको उन्हें स्वयं मैनेज करने की ज़रूरत नहीं है। +- खुले हुए स्ट्रीम को रिटर्न करने से इंजन डेटा को सीधे स्ट्रीम कर सकता है—कोई टेम्पररी फ़ाइल नहीं, कोई अतिरिक्त मेमोरी कॉपी नहीं। + +--- + +## चरण 3: ZipArchive को इनिशियलाइज़ करें + +अब हम **Update** मोड में एक `ZipArchive` बनाते हैं। यह मोड हमें एंट्रीज़ को क्रमशः जोड़ने देता है, और यदि आप कोड कई बार चलाते हैं तो मौजूदा एंट्रीज़ को भी बदल सकता है। + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*Pro tip:* किसी भी पिछले फ़ाइल को ओवरराइट करने के लिए `FileMode.Create` का उपयोग करें, या यदि आप मौजूदा आर्काइव में जोड़ना चाहते हैं तो `FileMode.OpenOrCreate` पर स्विच करें। साथ ही, `ZipArchive` को `using` स्टेटमेंट में रैप करें—यह सुनिश्चित करता है कि आर्काइव सही ढंग से डिस्पोज़ हो और फ़ाइल हैंडल रिलीज़ हो जाए। + +--- + +## चरण 4: वह HTML दस्तावेज़ लोड करें जिसे आप एक्सपोर्ट करना चाहते हैं + +यहाँ आप लाइब्रेरी को स्रोत HTML फ़ाइल की ओर इंगित करते हैं। दस्तावेज़ CSS, इमेजेज़, या जावास्क्रिप्ट फ़ाइलों को संदर्भित कर सकता है जो उसके साथ ही स्थित हैं। + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +यदि आपके HTML में रिलेटिव URL हैं, तो सुनिश्चित करें कि प्रोसेस की वर्किंग डायरेक्टरी उन एसेट्स वाले फ़ोल्डर से मेल खाती हो। अन्यथा इंजन उन्हें ढूंढ नहीं पाएगा, और ZIP उन फ़ाइलों को छोड़ देगा। + +--- + +## चरण 5: सेव ऑप्शन्स कॉन्फ़िगर करें – वास्तविक “HTML को ZIP के रूप में सहेजें” क्षण + +अब हम `ZipHandler` को `HTMLSaveOptions` से जोड़ते हैं। `SaveFormat` को `ZIP` सेट करने से लाइब्रेरी को सब कुछ बंडल करने का निर्देश मिलता है, जबकि हमारा हैंडलर तय करता है कि प्रत्येक भाग कहाँ जाएगा। + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*Why this matters:* `ResourceHandler` सेट न करने पर, लाइब्रेरी रिसोर्सेज़ को फ़ाइल सिस्टम पर लिखेगी, जो कि **how to export html to zip** को एक ही आर्काइव में करने के उद्देश्य को नाकाम कर देता है। + +--- + +## चरण 6: सेव ऑपरेशन निष्पादित करें + +अंत में, दस्तावेज़ को उन विकल्पों का उपयोग करके स्वयं को सहेजने को कहें जो हमने अभी बनाए हैं। लाइब्रेरी प्रत्येक बाहरी एसेट के लिए `ZipHandler.HandleResource` को कॉल करेगी। + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +जब `zipArchive` के लिए `using` ब्लॉक समाप्त होता है, तो आर्काइव अंतिम रूप ले लेता है और फ़ाइल वितरण के लिए तैयार हो जाती है। + +--- + +## पूर्ण कार्यशील उदाहरण (सभी चरण एक साथ) + +नीचे पूरा प्रोग्राम है जिसे आप कॉपी‑पेस्ट करके एक कंसोल ऐप में उपयोग कर सकते हैं। यह एक **c# ziparchive example** दर्शाता है जो **creates zip archive c#** शैली में है, और यह पूरी तरह से **how to export html to zip** का उत्तर देता है। + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**अपेक्षित परिणाम:** प्रोग्राम चलाने के बाद, `output.zip` में `index.html` (या आपने जो नाम सेट किया है) के साथ मूल पेज द्वारा संदर्भित सभी इमेजेज़, स्टाइलशीट्स, और स्क्रिप्ट्स शामिल होंगे, फ़ोल्डर हाइरार्की को संरक्षित रखते हुए। ZIP खोलें, एक्सट्रैक्ट करें, और `index.html` पर डबल‑क्लिक करें—पेज बिल्कुल उसी तरह रेंडर होना चाहिए जैसा ऑनलाइन था, लेकिन अब यह एक पोर्टेबल पैकेज है। + +--- + +## सामान्य किनारी मामलों और उन्हें कैसे संभालें + +| Situation | Why it Happens | Suggested Fix | +|-----------|----------------|---------------| +| **डुप्लिकेट रिसोर्स नाम** (जैसे, विभिन्न फ़ोल्डरों में समान फ़ाइलनाम वाली दो इमेजेज़) | यदि बिल्कुल वही एंट्री नाम पहले से मौजूद है तो `CreateEntry` `InvalidOperationException` फेंकेगा। | एंट्री को उसके रिलेटिव पाथ (`info.Uri` पहले से यही करता है) के साथ प्रीफ़िक्स करें या एंट्री बनाने से पहले नामों को मैन्युअली साफ़ करें। | +| **बड़े बाइनरी एसेट्स** (वीडियो, हाई‑रेज़ोल्यूशन इमेजेज़) | सीधे ज़िप में स्ट्रीम करना ठीक है, लेकिन डिफ़ॉल्ट बफ़र साइज से मेमोरी उपयोग बढ़ सकता है। | `HandleResource` को ओवरराइड करके रिटर्नेड स्ट्रीम को `BufferedStream` में एक मध्यम बफ़र (जैसे, 64 KB) के साथ रैप करें। | +| **गुम रिसोर्सेज़** | यदि HTML में टूटे लिंक हैं, तो हैंडलर को ऐसी फ़ाइल के लिए अनुरोध मिलेगा जो मौजूद नहीं है, जिससे एक खाली एंट्री बनती है। | एंट्री बनाने से पहले `File.Exists` जांचें, या एक चेतावनी लॉग करें ताकि आपको पता चले कि कुछ गायब है। | +| **यूनिकोड फ़ाइलनाम** | कुछ पुराने ZIP टूल्स UTF‑8 एंट्री नामों को सही से नहीं संभालते। | सुनिश्चित करें कि आप .NET 6+ टार्गेट कर रहे हैं, जो डिफ़ॉल्ट रूप से UTF‑8 लिखता है। यदि आपको लेगेसी संगतता चाहिए, तो `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);` सेट करें। | +| **मैनिफेस्ट की आवश्यकता** (ZIP के अंदर फ़ाइलों की सूची) | उपभोक्ता कभी‑कभी वैधता के लिए `manifest.json` चाहते हैं। | मुख्य सेव के बाद, एक नई एंट्री `"manifest.json"` बनाएं और `zipArchive.Entries` की JSON सूची लिखें। | + +--- + +## प्रोडक्शन‑रेडी **HTML को ZIP के रूप में सहेजें** इम्प्लीमेंटेशन्स के लिए प्रो टिप्स + +1. आउटपुट को वैलिडेट करें – सेव करने के बाद, प्रोग्रामेटिकली ZIP खोलें और जांचें कि `index.html` मौजूद है और प्रत्येक एंट्री का `Length` > 0 है। यह चुपचाप होने वाली विफलताओं को जल्दी पकड़ता है। +2. बड़े एसेट्स को पैरललाइज़ करें – यदि आपके पास कई मेगाबाइट इमेजेज़ हैं, तो `HandleResource` कॉल्स को `Task` पूल में क्यू करने और आर्काइव में एक साथ लिखने पर विचार करें (फिर भी `ZipArchive` की सिंगल‑राइटर प्रकृति का सम्मान करते हुए)। +3. स्मार्टली कम्प्रेस करें – `ZipArchive` डिफ़ॉल्ट रूप से Deflate उपयोग करता है। पहले से कम्प्रेस्ड फ़ाइलों (JPEG, PNG) के लिए आप `entry.CompressionLevel = CompressionLevel.NoCompression` सेट करके ऑपरेशन को तेज़ कर सकते हैं। +4. सुरक्षा – यदि ZIP + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/hindi/net/working-with-html-documents/_index.md b/html/hindi/net/working-with-html-documents/_index.md index 4c5be51ef..e66b0cab8 100644 --- a/html/hindi/net/working-with-html-documents/_index.md +++ b/html/hindi/net/working-with-html-documents/_index.md @@ -37,8 +37,11 @@ HTML दस्तावेज़ वेब की रीढ़ हैं, और अब, आइए अपने कौशल को अगले स्तर पर ले जाएं। HTML दस्तावेज़ों को संपादित करना वेब डेवलपर्स के लिए एक सामान्य कार्य है, और Aspose.HTML इस प्रक्रिया को काफी सरल बनाता है। इस अनुभाग में, हम दस्तावेज़ निर्माण, हेरफेर और स्टाइलिंग को कवर करेंगे। आप जानेंगे कि अपनी वेब सामग्री की उपस्थिति और कार्यक्षमता को कैसे बढ़ाया जाए, जिससे यह आकर्षक और उपयोगकर्ता के अनुकूल बन सके। ### [C# में HTML को सहेजना – कस्टम रिसोर्स हैंडलर का उपयोग करके पूर्ण गाइड](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) + ### [CSS और C# के साथ हेडिंग को बोल्ड कैसे बनाएं – पूर्ण चरण-दर-चरण गाइड](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) +### [C# में HTML को ZIP के रूप में सहेजना – कस्टम रिसोर्स हैंडलर के साथ पूर्ण गाइड](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/hindi/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/hindi/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..594e03392 --- /dev/null +++ b/html/hindi/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-02-27 +description: C# में एक कस्टम रिसोर्स हैंडलर का उपयोग करके HTML को ZIP के रूप में सहेजें + और C# में ZIP आर्काइव बनाएं। HTML और उसके एसेट्स को बंडल करने के लिए इस चरण‑दर‑चरण + ट्यूटोरियल का पालन करें। +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: hi +og_description: कस्टम रिसोर्स हैंडलर के साथ C# में HTML को ZIP के रूप में सहेजें। + जानिए कैसे C# में ZIP आर्काइव बनाएं और संसाधनों को आसानी से एम्बेड करें। +og_title: C# में HTML को ZIP के रूप में सहेजें – पूर्ण ट्यूटोरियल +tags: +- Aspose.HTML +- C# +- ZIP +title: C# में HTML को ZIP के रूप में सहेजें – कस्टम रिसोर्स हैंडलर के साथ पूर्ण गाइड +url: /hi/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# में HTML को ZIP के रूप में सहेजें – कस्टम रिसोर्स हैंडलर के साथ पूर्ण गाइड + +क्या आप कभी सोचते थे कि C# में **HTML को ZIP के रूप में सहेजें** बिना सिर दर्द के? आप अकेले नहीं हैं—कई डेवलपर्स को तब रुकावट आती है जब उन्हें HTML पेज को इमेजेज, CSS, या JavaScript फ़ाइलों के साथ पैकेज करना होता है। अच्छी खबर? Aspose.HTML के साथ आप इसे कुछ सरल चरणों में कर सकते हैं, और एक **कस्टम रिसोर्स हैंडलर** प्रक्रिया को बिलकुल आसान बना देता है। + +इस ट्यूटोरियल में हम सब कुछ कवर करेंगे: लाइब्रेरी को इंस्टॉल करने से लेकर एक हैंडलर लिखने तक जो रिसोर्सेज़ को सीधे **C# में ZIP आर्काइव बनाते समय** स्ट्रीम करता है, और अंतिम पैकेज की जाँच तक। अंत तक आपके पास एक तैयार‑से‑उपयोग समाधान होगा जिसे आप किसी भी .NET प्रोजेक्ट में डाल सकते हैं। + +![Save HTML as ZIP example](/images/save-html-as-zip.png "Diagram showing HTML saved as a ZIP file") + +## Save HTML as ZIP – इस गाइड में क्या कवर किया गया है + +हम पूरी पाइपलाइन को कवर करेंगे: + +1. **Prerequisites** – वह न्यूनतम टूल्स और पैकेज जो आपको चाहिए। +2. **Custom resource handler** – आपको इसकी क्यों ज़रूरत है और इसे कैसे इम्प्लीमेंट करें। +3. **Creating a ZIP archive in C#** – `System.IO.Compression` का उपयोग करके। +4. **Configuring Aspose.HTML save options** ताकि हैंडलर को पॉइंट किया जा सके। +5. **Running the code** और आउटपुट की जाँच। + +यदि आप बेसिक C# सिंटैक्स से परिचित हैं और Visual Studio (या VS Code) इंस्टॉल किया हुआ है, तो आप शुरू करने के लिए तैयार हैं। कोई बाहरी डॉक्यूमेंटेशन आवश्यक नहीं—सब कुछ यहाँ उपलब्ध है। + +--- + +## Step 1: Set Up the Project and Install Aspose.HTML + +कोड लिखने से पहले, सुनिश्चित करें कि आपका प्रोजेक्ट Aspose.HTML लाइब्रेरी को रेफ़रेंस कर सके। + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*Pro tip:* नवीनतम NuGet पैकेज (फ़रवरी 2026 तक) .NET 6+ को टार्गेट करता है, इसलिए आप आधुनिक SDK‑स्टाइल प्रोजेक्ट का उपयोग कर सकते हैं बिना लेगेसी फ्रेमवर्क की चिंता किए। + +पैकेज रिस्टोर हो जाने के बाद, `Program.cs` खोलें। हम बाद में डिफ़ॉल्ट कंटेंट को पूरे उदाहरण से बदलेंगे, लेकिन अभी के लिए फ़ाइल को खुला रखें। + +--- + +## Implement a Custom Resource Handler + +### Why a Custom Resource Handler? + +जब Aspose.HTML HTML डॉक्यूमेंट को ZIP पैकेज के रूप में सहेजता है, तो उसे हर बाहरी रिसोर्स (इमेजेज, फ़ॉन्ट्स, स्क्रिप्ट्स) को फ़ेच करना और कहीं लिखना पड़ता है। डिफ़ॉल्ट व्यवहार इन्हें डिस्क पर एक टेम्पररी फ़ोल्डर में लिखता है। एक **कस्टम रिसोर्स हैंडलर** प्रदान करके आप लाइब्रेरी को ठीक वही जगह बता सकते हैं जहाँ प्रत्येक रिसोर्स जाना चाहिए—हमारे केस में सीधे ZIP आर्काइव में। इससे अतिरिक्त I/O नहीं होता, सब कुछ व्यवस्थित रहता है, और आपको नामकरण पर पूरी कंट्रोल मिलती है। + +### Code: The Handler Class + +`MyHandler.cs` नाम की नई क्लास फ़ाइल बनाएं (या यदि आप सिंगल‑फ़ाइल डेमो पसंद करते हैं तो इसे `Program.cs` के अंदर रखें)। + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**Explanation:** +* `ResourceHandler` Aspose.HTML की एक एब्स्ट्रैक्ट क्लास है जो आपको रिसोर्स फ़ेचिंग को इंटरसेप्ट करने देती है। +* `ZipArchiveEntry.Open()` से प्राप्त `Stream` को रिटर्न करके, हम लाइब्रेरी को एक राइटेबल पाइप सीधे ZIP फ़ाइल में देते हैं। कोई टेम्पररी फ़ाइल नहीं, कोई अतिरिक्त क्लीन‑अप नहीं। + +--- + +## Create the ZIP Archive in C# + +अब जब हैंडलर तैयार है, हमें एक जगह चाहिए जहाँ वह लिख सके। .NET का `ZipArchive` क्लास इस काम को संभालता है। + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### What This Does + +1. **Creates an in‑memory HTML document** जिसमें `logo.png` का रेफ़रेंस है। +2. **Opens a `FileStream`** जो `output.zip` बन जाएगा। +3. **Assigns the `ZipArchive`** को `MyHandler` की स्टैटिक फ़ील्ड में सेट करता है। +4. **Sets `HTMLSaveOptions`** को `SaveFormat.ZIP` पर और हमारे हैंडलर को अटैच करता है। +5. **Calls `document.Save`** – Aspose.HTML HTML को पार्स करता है, `logo.png` को फ़ेच करता है, और `MyHandler` के ज़रिए उसे आर्काइव में स्ट्रीम करता है। + +चूँकि हैंडलर रिसोर्स URI (`logo.png`) को एंट्री नाम के रूप में उपयोग करता है, परिणामी ZIP में बिल्कुल वही फ़ाइल नाम रहेगा, जिससे मूल रिलेटिव पाथ संरक्षित रहता है। + +--- + +## Configure Save Options for the ZIP Package + +`HTMLSaveOptions` ऑब्जेक्ट वह जगह है जहाँ आप Aspose.HTML को बताते हैं कि **कैसे** आउटपुट पैकेज करना है। `ResourceHandler` के अलावा आप कुछ उपयोगी प्रॉपर्टीज़ भी ट्यून कर सकते हैं: + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*Why care about `EnableCompression`?* +यदि आप बड़े इमेजेज़ के साथ काम कर रहे हैं, तो कम्प्रेशन को एनेबल करने से अंतिम आर्काइव का आकार 70 % तक घट सकता है। हालांकि, पहले से कम्प्रेस्ड PNG के लिए लाभ सीमित रहता है, इसलिए आप सेव ऑपरेशन को तेज़ करने के लिए इसे बंद भी रख सकते हैं। + +--- + +## Run the Code and Verify the Output + +प्रोग्राम को कंपाइल और रन करें: + +```bash +dotnet run +``` + +आपको कंसोल में सफलता संदेश दिखाई देना चाहिए। प्रिंट किए गए डायरेक्टरी में जाएँ और `output.zip` खोलें। अंदर आपको मिलेगा: + +- `index.html` – सहेजा गया HTML फ़ाइल। +- `logo.png` – मार्कअप में रेफ़रेंस की गई इमेज। + +ZIP से सीधे `index.html` खोलें (अधिकांश OS फ़ाइल एक्सप्लोरर इसे प्रीव्यू करने देते हैं) और आपको हेडिंग और इमेज बिल्कुल उसी तरह रेंडर होते दिखेंगे जैसा मूल स्ट्रिंग में था। + +**Edge Cases to Consider** + +| Situation | What to Do | +|-----------|------------| +| The HTML references a **remote URL** (e.g., `https://example.com/style.css`) | The handler will still receive a `ResourceInfo.Uri`. Ensure your environment can reach the URL, or pre‑download the resource and adjust the HTML to a local path. | +| You need **folder hierarchy** inside the ZIP (e.g., `images/logo.png`) | Modify `HandleResource` to prepend a folder name: `var entry = ZipArchive.CreateEntry($"assets/{info.Uri}");` | +| The resource **fails to load** (404) | The handler will be called, but the stream will receive zero bytes. Wrap the save call in a `try/catch` and inspect `info.Status` if you need custom error handling. | + +--- + +## Recap: Save HTML as ZIP in One Compact Flow + +- **Primary Goal:** एक HTML पेज और उसकी सभी बाहरी एसेट्स को C# में एक ही ZIP फ़ाइल में बंडल करना। +- **Key Tools:** Aspose.HTML (`HTMLDocument`, `HTMLSaveOptions`), `System.IO.Compression.ZipArchive`, और एक **कस्टम रिसोर्स हैंडलर**। +- **Result:** एक पोर्टेबल `output.zip` जिसे आप शिप, स्टोर या नेटवर्क पर भेज सकते हैं, और बाद में एक्सट्रैक्ट करने पर रिसोर्स लिंक नहीं टूटते। + +--- + +## What’s Next? Extending the Workflow + +अब जब आप **HTML को ZIP के रूप में सहेजना** में माहिर हो गए हैं, तो आप संबंधित परिदृश्यों को भी एक्सप्लोर कर सकते हैं: + +- **Save HTML as PDF** – `SaveFormat.ZIP` को `SaveFormat.PDF` से बदलें और विकल्पों को उसी अनुसार एडजस्ट करें। +- **Embed fonts** – अपने HTML में `@font-face` का उपयोग करें और हैंडलर को फ़ॉन्ट फ़ाइलें कैप्चर करने दें। +- **Batch processing** – कई HTML स्ट्रिंग्स पर लूप चलाएँ, वही `ZipArchive` री‑यूज़ करके मल्टी‑डॉक्यूमेंट पैकेज बनाएं। + +इन सभी को आप उसी **कस्टम रिसोर्स हैंडलर** पैटर्न और **C# में ZIP आर्काइव बनाना** तकनीक पर आधारित कर सकते हैं जो आपने अभी सीखी है। + +--- + +### Final Thoughts + +आपने अभी देखा कि Aspose.HTML को उपयोग करके C# में **HTML को ZIP के रूप में सहेजना** कितना आसान है + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/hongkong/net/generate-jpg-and-png-images/_index.md b/html/hongkong/net/generate-jpg-and-png-images/_index.md index 33103bd04..d401a4e00 100644 --- a/html/hongkong/net/generate-jpg-and-png-images/_index.md +++ b/html/hongkong/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML for .NET 提供了一種將 HTML 轉換為映像的簡單方法。 了解如何在使用 Aspose.HTML for .NET 將 DOCX 轉換為 PNG 或 JPG 時啟用抗鋸齒,以提升圖像品質。 ### [使用 Aspose.HTML 在 .NET 中將 docx 轉換為 png 並建立 zip 壓縮檔 C# 教學](./convert-docx-to-png-create-zip-archive-c-tutorial/) 學習如何使用 Aspose.HTML for .NET 將 docx 轉換為 png,並將圖像打包成 zip 壓縮檔的完整步驟。 +### [在 C# 中從 HTML 建立 PNG – 步驟指南](./create-png-from-html-in-c-step-by-step-guide/) +本教學示範如何使用 Aspose.HTML for .NET 在 C# 中將 HTML 轉換為 PNG 圖像,步驟詳盡,適合新手。 ## 結論 diff --git a/html/hongkong/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/hongkong/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..fa1012043 --- /dev/null +++ b/html/hongkong/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-02-27 +description: 使用 Aspose.HTML 於 C# 快速將 HTML 轉換為 PNG。學習如何將 HTML 渲染成圖像、設定圖像寬高,並在數分鐘內完成 + HTML 到 PNG 的轉換。 +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: zh-hant +og_description: 使用 Aspose.HTML 從 HTML 建立 PNG。此指南說明如何將 HTML 轉換為圖像、設定圖像寬度與高度,以及高效地將 + HTML 轉換為 PNG。 +og_title: 在 C# 中從 HTML 產生 PNG – 完整教學 +tags: +- Aspose.HTML +- C# +- Image Rendering +title: 使用 C# 從 HTML 產生 PNG – 逐步指南 +url: /zh-hant/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 C# 中從 HTML 建立 PNG – 完整教學 + +是否曾經需要 **create PNG from HTML**,卻不確定哪個函式庫能提供像素完美的結果?你並不孤單——許多開發者在將網頁轉成靜態圖像(用於電子郵件、報告或縮圖)時都會卡關。 + +好消息是?使用 Aspose.HTML,你可以 **render HTML to image**、精確控制尺寸,並只需幾行 C# 程式碼就能 **save HTML as PNG**。本教學將一步步說明整個流程,從載入 HTML 檔案、微調文字 hinting,到最終寫入 PNG 至磁碟。完成後,你將會知道如何以程式方式 **set image width height**,並擁有一段可直接放入任何 .NET 專案的可重用程式碼。 + +## 您將學習 + +- 如何使用 Aspose.HTML 載入 HTML 文件。 +- `ImageRenderingOptions` 與 `TextOptions` 的差異以及它們為何重要。 +- 如何 **convert HTML to PNG** 同時保留字型、抗鋸齒與底線樣式。 +- 解決常見問題(如缺少字型或意外的圖像尺寸)的技巧。 +- 完整、可直接執行的程式碼範例,讓你可直接 copy‑paste 到 Visual Studio。 + +> **先決條件:** .NET 6+(或 .NET Framework 4.6.2+)、透過 NuGet 安裝 Aspose.HTML for .NET,以及對 C# 的基本了解。無需其他外部工具。 + +--- + +## 步驟 1:載入 HTML 文件 – 開始建立 PNG + +首先,我們需要一個指向來源檔案的 `HTMLDocument` 物件。這是任何 **create PNG from HTML** 作業的基礎。 + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*為什麼這一步很重要:* `HTMLDocument` 類別會解析標記、解析 CSS,並建立渲染引擎稍後可以繪製到位圖的 DOM。若路徑錯誤,接下來的 **render html to image** 步驟將拋出 `FileNotFoundException`。 + +--- + +## 步驟 2:設定圖像寬高 – 控制輸出尺寸 + +當你 **render HTML to image** 時,常常需要特定的解析度——例如必須正好 1200 × 800 像素的縮圖。這時 `ImageRenderingOptions` 就派上用場。 + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*小技巧:* 若省略 `Width` 與 `Height`,Aspose.HTML 會使用頁面的自然大小,這在電子郵件嵌入時可能會太大。 + +--- + +## 步驟 3:微調文字渲染 – 讓文字更銳利 + +在 Linux 上文字常會顯得模糊,除非啟用 hinting。`TextOptions` 物件讓你可以控制這項設定,確保最終的 PNG 在任何平台上都保持清晰。 + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*為什麼要使用 hinting?* Hinting 會將每個字形的輪廓對齊到像素格,對於在低解析度顯示器上 **convert HTML to PNG** 時尤為關鍵。 + +--- + +## 步驟 4:合併設定並加入樣式 – 完整的渲染配置 + +現在我們將圖像與文字設定合併,並示範如何套用全域字型樣式,例如為所有文字加底線。這一步就是使用自訂樣式 **save HTML as PNG** 的關鍵。 + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*注意:* `WebFontStyle` 支援多種旗標(Bold、Italic 等),若需要同時使用多種樣式,可使用位元 OR 進行組合。 + +--- + +## 步驟 5:渲染與儲存 – 正式 **Create PNG from HTML** + +所有設定完成後,最後只要一行程式碼即可將 DOM 繪製到位圖並寫入磁碟。 + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +執行此行程式後,你會在指定的資料夾中找到 `output.png`,尺寸正好為 1200 × 800 像素,且具備抗鋸齒圖形與 hinting 文字。 + +--- + +## 完整範例 – 貼上、執行、驗證 + +以下是可編譯為主控台應用程式的完整程式碼,包含所有 using 陳述式、錯誤處理與說明註解。 + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**預期結果:** 執行後會在可執行檔旁產生名為 `output.png` 的檔案,顯示 `sample.html` 的渲染結果。使用任何圖像檢視器開啟,即可確認尺寸與樣式是否正確。 + +--- + +## 常見問題與避免方法 + +| 問題 | 症狀 | 解決方式 | +|------|------|----------| +| 缺少字型 | 文字顯示為通用無襯線字型 | 在主機上安裝所需字型,或在 HTML 中嵌入 Web Font。 | +| 尺寸不符 | PNG 大小與預期不同 | 再次確認 `ImageRenderingOptions` 中的 `Width` 與 `Height` 設定。 | +| 邊緣模糊 | 沒有抗鋸齒 | 確保 `UseAntialiasing = true`。 | +| Linux 渲染異常 | 文字模糊 | 在 `TextOptions` 中設定 `UseHinting = true`。 | + +*小技巧:* 在無頭伺服器上 **render HTML to image** 時,請確保伺服器已安裝必要的系統函式庫(例如 Linux 上的 `libgdiplus`),否則 Aspose.HTML 可能會退回品質較低的軟體渲染器。 + +--- + +## 延伸應用 – 下一步 + +- **批次轉換:** 迴圈處理多個 HTML 檔案,呼叫相同的渲染邏輯,產生 PNG 圖庫。 +- **不同格式:** 將 `output.png` 改為 `output.jpg` 或 `output.bmp`,只要更改副檔名,Aspose.HTML 會自動選擇相應編碼器。 +- **動態尺寸:** 依據 HTML 的 viewport meta 標籤計算 `Width` 與 `Height`,支援響應式設計。 +- **加水印:** 使用 `Aspose.Html.Drawing` 在儲存前覆蓋 logo。 + +以上想法可讓你從簡單的 **create PNG from HTML** 程式碼片段,發展成完整的圖像產生服務。 + +--- + +## 結論 + +我們已完整說明如何使用 Aspose.HTML for .NET **create PNG from HTML**:載入文件、設定 **set image width height**、透過 hinting 微調文字,最後 **save HTML as PNG**。完整程式碼已可直接放入你的專案,且上述技巧能幫助你避免常見的痛點。 + +現在你已能可靠地 **render HTML to image**,不妨嘗試不同樣式、批次處理,甚至在同一流程中轉成 PDF。可能性無限,程式碼已在手。 + +祝開發順利,歡迎在留言區分享成果或提出問題! + +![從 HTML 建立 PNG 範例](/images/create-png-from-html.png "Create PNG from HTML using Aspose.HTML") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/hongkong/net/html-extensions-and-conversions/_index.md b/html/hongkong/net/html-extensions-and-conversions/_index.md index 3d146ada2..9a563168c 100644 --- a/html/hongkong/net/html-extensions-and-conversions/_index.md +++ b/html/hongkong/net/html-extensions-and-conversions/_index.md @@ -41,6 +41,8 @@ Aspose.HTML for .NET 不只是一個函式庫;它還是一個函式庫。它 使用 Aspose.HTML for .NET 輕鬆將 HTML 轉換為 PDF。遵循我們的逐步指南,釋放 HTML 到 PDF 轉換的強大功能。 ### [使用 C# 從 HTML 建立 PDF – 完整步驟指南](./create-pdf-from-html-c-step-by-step-guide/) 使用 Aspose.HTML for .NET,透過 C# 將 HTML 轉換為 PDF 的完整步驟說明與範例。 +### [從 HTML 建立 PDF – 開發人員逐步指南](./create-pdf-from-html-step-by-step-guide-for-developers/) +透過 Aspose.HTML for .NET,提供開發人員從 HTML 產生 PDF 的完整步驟與範例。 ### [使用 Aspose.HTML 將 EPUB 轉換為 .NET 中的映像](./convert-epub-to-image/) 了解如何使用 Aspose.HTML for .NET 將 EPUB 轉換為映像。包含程式碼範例和可自訂選項的逐步教學。 ### [使用 Aspose.HTML 將 EPUB 轉換為 .NET 中的 PDF](./convert-epub-to-pdf/) @@ -71,8 +73,14 @@ Aspose.HTML for .NET 不只是一個函式庫;它還是一個函式庫。它 使用 Aspose.HTML for .NET 建立帶樣式文字的 HTML 文件,並將其匯出為 PDF 的完整步驟指南。 ### [使用 Aspose.HTML 將 HTML 儲存為 ZIP – 完整 C# 教學](./save-html-as-zip-complete-c-tutorial/) 使用 Aspose.HTML for .NET 將 HTML 文件壓縮為 ZIP 檔案,提供完整的 C# 範例與步驟說明。 + +### [在 C# 中將 HTML 儲存為 ZIP – 完整指南](./save-html-as-zip-in-c-complete-guide/) +使用 Aspose.HTML for .NET 在 C# 中將 HTML 儲存為 ZIP,提供完整步驟與範例說明。 + ### [在 C# 中將 HTML 儲存為 ZIP – 完整的記憶體內示例](./save-html-to-zip-in-c-complete-in-memory-example/) 示範如何在 C# 中使用 Aspose.HTML 將 HTML 內容直接壓縮成 ZIP 檔案,全部在記憶體中完成。 +### [在 C# 中將 HTML 儲存為 PDF – 完整指南(含字型)](./save-html-as-pdf-in-c-complete-guide-with-fonts/) +使用 Aspose.HTML for .NET,在 C# 中將 HTML 轉換為 PDF,並嵌入自訂字型的完整步驟說明。 ## 結論 diff --git a/html/hongkong/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/hongkong/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..3f3711a48 --- /dev/null +++ b/html/hongkong/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,204 @@ +--- +category: general +date: 2026-02-27 +description: 使用完整的 C# 範例快速將 HTML 轉換為 PDF。學習如何將 HTML 轉換為 PDF、將 HTML 儲存為 PDF,以及使用最佳實踐設定匯出 + HTML 為 PDF。 +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: zh-hant +og_description: 使用 C# 及即用範例,將 HTML 產生 PDF。本指南將手把手教您將 HTML 轉換為 PDF、將 HTML 儲存為 PDF,以及將 + HTML 匯出為 PDF。 +og_title: 從 HTML 產生 PDF – 完整 C# 教學 +tags: +- C# +- PDF +- HTML +title: 從 HTML 產生 PDF – 開發者逐步指南 +url: /zh-hant/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 從 HTML 建立 PDF – 完整 C# 教學 + +是否曾需要 **create PDF from HTML** 但不確定該使用哪個 API 呼叫?你並不孤單。無論你是在建立報表儀表板、發票產生器,或是靜態網站匯出工具,將 HTML 轉換成 PDF 是現代以 Web 為中心的應用程式常見需求。 + +在本教學中,我們將逐步說明一個 **complete, runnable C# example**,示範如何 **convert HTML to PDF**、設定渲染選項以獲得清晰的輸出,最後在磁碟上 **save HTML as PDF**。完成後,你將擁有一套穩固、可投入生產環境的 **export HTML to PDF** 模式,能直接套用於任何 .NET 專案。 + +## 你將學到什麼 + +- 如何使用 `HTMLDocument` 載入本機 HTML 檔案。 +- 哪些渲染選項能提升字體粗細、影像平滑度與文字 hinting。 +- 使用單一 `Save` 方法呼叫 **export HTML to PDF** 的精確方式。 +- 處理大型文件、除錯常見問題以及驗證結果的技巧。 +- 完整的可直接複製貼上、即時執行的程式碼範例。 + +### 前置條件 + +- .NET 6+(或 .NET Framework 4.7+)。我們使用的 API 兩者皆相容。 +- 對假設的 `HtmlToPdfLib` 之參考(請以實際使用的函式庫名稱取代)。 +- 一個放置於你可控制的資料夾中的 `input.html` 檔案(我們稱之為 `YOUR_DIRECTORY`)。 + +如果你已具備上述項目,讓我們直接開始——不需要額外設定。 + +## 步驟 1:載入 HTML 文件以 **Create PDF from HTML** + +你首先需要的是指向來源檔案的 `HTMLDocument` 實例。可以把它想像成在開始寫作前先打開筆記本——若沒有文件,就無法渲染任何內容。 + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **Why this matters:** 及早載入 HTML 檔案可讓函式庫解析 DOM、解析 CSS,並預先載入圖片。跳過此步驟或提供格式錯誤的 HTML 常會導致 **html to pdf conversion** 時出現空白頁面。 + +## 步驟 2:設定渲染選項以 **HTML to PDF Conversion** + +渲染選項是讓普通 PDF 變成專業外觀文件的祕密調味料。在此我們啟用粗體字、影像抗鋸齒以及文字 hinting——這些功能常被開發者忽略,但能顯著提升視覺真實度。 + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **Pro tip:** 若使用品牌專屬字型,亦請在 `pdfOptions` 中設定 `FontFamily`。這可防止在 **convert HTML to PDF** 時退回至通用字型。 + +## 步驟 3:儲存檔案並 **Export HTML to PDF** + +現在文件已載入且選項已調整完畢,最後只需一行程式碼即可將 PDF 寫入磁碟。`Save` 方法在內部執行 **html to pdf conversion**,套用我們先前定義的所有渲染調整。 + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **What you should see:** 在任何檢視器中開啟 `output.pdf` 後,將會呈現原始 HTML 版面,包含粗體標題、平滑影像與清晰文字。若發現樣式缺失,請再次確認相對於 `input.html` 的 CSS 檔案是否可被存取。 + +![create pdf from html example](/images/create-pdf-from-html.png "Screenshot of the generated PDF – create pdf from html") + +*上述螢幕截圖(alt text: “create pdf from html example”)顯示了保留原始 HTML 樣式的 PDF 渲染結果。* + +## 常見陷阱:**Convert HTML to PDF** 時 + +即使流程簡單,開發者仍常遇到問題。以下列出三個最常見的問題以及避免方法。 + +### 1. 資源遺失(圖片、CSS、字型) + +如果你的 HTML 透過相對路徑引用外部資源,轉換器可能找不到它們。請始終使用絕對路徑或設定 base URL: + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. 大型文件導致逾時 + +處理多頁報告時,請提升函式庫的逾時設定: + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. 字型替換導致意外外觀 + +明確指定所需的字型族: + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +提前處理這些問題,可避免在 **save HTML as PDF** 操作中遭遇令人沮喪的除錯階段。 + +## 進階:在 **Export HTML to PDF** 前加入封面頁 + +有時你需要自訂封面——例如帶有商標的標題頁。你可以在主文件前加入簡單的 HTML 片段: + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **Why you’d do this:** 直接在 HTML 中加入封面,可保持 PDF 產生流程簡潔,避免使用 iText 或 PdfSharp 等後處理工具。 + +## 程式化驗證輸出 + +如果需要驗證 PDF 是否正確產生(例如在 CI 流程中),你可以檢查檔案大小或頁數: + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +非零的頁數即證明 **convert HTML to PDF** 步驟已成功。 + +## 重點回顧與後續步驟 + +我們剛剛示範了一個 **complete, end‑to‑end example**,說明如何在 C# 中 **create PDF from HTML**。流程如下: + +1. 載入來源 HTML(`HTMLDocument`)。 +2. 使用 `PdfRenderingOptions` 微調渲染。 +3. 呼叫 `Save` 以 **export HTML to PDF**。 + +接下來你可以探索: + +- **Batch processing**:遍歷 HTML 檔案資料夾,批次產生 PDF。 +- **Dynamic HTML**:使用 Razor 視圖引擎即時產生 HTML 再進行轉換。 +- **Security**:若接受使用者提供的 HTML,請將轉換程序沙箱化(防止腳本注入)。 + +歡迎嘗試不同選項——例如切換至 `PdfA` 相容性以作為歸檔,或嵌入 JavaScript 以產生互動式 PDF。核心模式保持不變,現在你已擁有可靠的基礎,可應對任何 **save HTML as PDF** 的需求。 + +--- + +*祝編程愉快!若遇到任何問題,歡迎在下方留言或查看函式庫的 GitHub issue 頁面。社群熱衷分享各種技巧,使 **html to pdf conversion** 更加順暢。* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/hongkong/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/hongkong/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..d453ab579 --- /dev/null +++ b/html/hongkong/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,274 @@ +--- +category: general +date: 2026-02-27 +description: 使用 Aspose.HTML 在 C# 中快速將 HTML 儲存為 PDF。了解如何將 HTML 轉換為 PDF,僅需幾個步驟即可使用自訂字型與樣式從 + HTML 產生 PDF。 +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: zh-hant +og_description: 使用 Aspose.HTML 在 C# 中快速將 HTML 另存為 PDF。本教學示範如何將 HTML 轉換為 PDF、從 HTML + 生成 PDF 以及套用自訂字型。 +og_title: 在 C# 中將 HTML 另存為 PDF – 完整指南(含字型) +tags: +- csharp +- pdf +- html +title: 在 C# 中將 HTML 轉存為 PDF – 完整字體指南 +url: /zh-hant/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 C# 中將 HTML 另存為 PDF – 完整指南與字體支援 + +是否曾需要在 C# 應用程式中 **將 HTML 另存為 PDF**,卻不確定該選哪個函式庫?你並不孤單。許多開發者在想要直接從網頁內容產生發票、報表或可列印收據時,都會碰到這個問題。 + +好消息是?使用 Aspose.HTML,你可以 **將 HTML 轉換為 PDF**、**從 HTML 產生 PDF**,甚至 **使用字體建立 PDF**,只需幾行程式碼。本教學將完整示範整個流程,說明每個設定的意義,並提供一個可直接執行的範例。 + +## 你將學會 + +- 如何在 C# 中載入本機或遠端的 HTML 檔案 +- 哪些渲染選項能提供粗體/斜體字型、抗鋸齒與文字微調 +- 如何將結果儲存為磁碟上的 PDF 檔案 +- 處理自訂字體與常見陷阱的技巧 + +不需要事先了解 Aspose.HTML——只要有 .NET 開發環境(Visual Studio 2022 或更新版)以及 Aspose.HTML for .NET NuGet 套件即可。 + +## 前置條件 + +| 前置條件 | 為何重要 | +|----------|----------| +| .NET 6.0 或更新版 | 為 Aspose.HTML 提供執行時環境 | +| Aspose.HTML for .NET(NuGet) | 負責執行所有繁重工作 | +| 範例 HTML 檔案(`sample.html`) | 我們要轉換的來源內容 | +| 基本 C# 知識 | 了解程式碼片段所需的基礎 | + +只要具備上述條件,我們就可以開始了。 + +## 步驟 1:透過 NuGet 安裝 Aspose.HTML + +在 Visual Studio 中開啟專案,於 **Dependencies** 節點上點右鍵,選擇 **Manage NuGet Packages**。搜尋 `Aspose.HTML` 後點選 **Install**。 + +```powershell +dotnet add package Aspose.HTML +``` + +> **小技巧:** 使用最新的穩定版(截至 2026‑02‑27 為 23.11)以取得最新的渲染改進。 + +## 步驟 2:載入來源 HTML 文件 + +首先,我們需要一個指向檔案的 `HTMLDocument` 物件。此類別會解析標記、解析 CSS,並為渲染做好準備。 + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **為什麼要這樣做?** +> 將 HTML 載入 `HTMLDocument` 可以把解析階段與渲染階段分離,讓你在真正產生 PDF 前,先檢查 DOM 或進行即時修改。 + +## 步驟 3:設定 PDF 渲染選項 + +Aspose.HTML 讓你對最終 PDF 的外觀擁有細緻的控制。在本範例中,我們會啟用粗體 + 斜體字型樣式、抗鋸齒以產生更平滑的圖形,並開啟文字微調以提升低 DPI 輸出的銳利度。 + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### 為什麼要這些設定? + +- **`FontStyle`** – 會將 `` 或 `` 標籤合併至基礎字型,確保 PDF 能保留原始樣式。 +- **`UseAntialiasing`** – 減少圖表、圖示或任何點陣內容的鋸齒。 +- **`UseHinting`** – 將字形輪廓對齊至像素格,特別適合在低解析度裝置上檢視 PDF 時使用。 + +如果需要自訂字體(例如企業品牌字體),只要把 `.ttf` 檔放入資料夾,並相應設定 `pdfRenderOptions.FontProvider`。這是一個較大的主題,但基本概念如下: + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## 步驟 4:將 HTML 文件渲染為 PDF + +現在把文件與選項結合,然後指示 Aspose.HTML 寫入輸出檔案。 + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +執行完此行程式後,你會在可執行檔旁看到 `output.pdf`。打開它,你應該會看到原始 HTML 已以粗體/斜體樣式、平滑圖形與清晰文字呈現。 + +> **預期結果:** +> 一份與 `sample.html` 版面相同的 PDF,所有標題皆為粗體,強調文字為斜體,且任何內嵌圖像皆不會出現鋸齒。 + +## 步驟 5:驗證與微調(可選) + +### 快速驗證腳本 + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +如果 PDF 顯示異常,請考慮以下常見調整: + +| 問題 | 可能原因 | 解決方式 | +|------|----------|----------| +| 缺少字體 | 字體未嵌入或找不到 | 使用 `FontProvider.AddFont` 並確保字體檔可存取 | +| 圖像模糊 | 抗鋸齒未啟用 | 設定 `UseAntialiasing = true` | +| 文字在螢幕上過細 | 微調未啟用 | 開啟 `UseHinting = true` | +| 換頁時版面移位 | CSS `page-break` 規則被忽略 | 在 HTML/CSS 中加入明確的 `page-break-before/after` | + +## 完整範例程式 + +以下是可直接貼到新 Console 應用程式的完整程式碼,包含所有 using 指令、錯誤處理與說明註解。 + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +執行專案(`dotnet run`),你應該會看到成功訊息,並在執行目錄下產生 `output.pdf`。 + +## 常見問題與特殊情況 + +### 能否 **將 HTML 轉換為 PDF**,直接使用 URL 而非本機檔案? + +當然可以。只要把檔案路徑改成 URL 字串即可: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +Aspose.HTML 會下載該頁面、解析外部資源,然後渲染。 + +### 大型 HTML 檔或多頁文件該怎麼處理? + +Aspose.HTML 會以串流方式處理內容,記憶體使用量保持在合理範圍。若希望每個 HTML 區段出現在不同的 PDF 頁面,只需在 HTML 中插入手動分頁: + +```html +
+``` + +### 這在 **.NET Core** 與 **.NET 7** 上可用嗎? + +可以。此函式庫是跨平台的,只要目標框架相容(net6.0、net7.0 等),並安裝相對應的 NuGet 套件即可。 + +### 如何 **嵌入字體** 以確保 PDF 可攜帶性? + +如前所示設定 `pdfRenderOptions.FontProvider`,同時啟用字體嵌入: + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +如此一來,即使目標機器未安裝該字體,PDF 仍會保持相同外觀。 + +## 視覺範例 + +![save html as pdf example](example.png){alt="將 HTML 另存為 PDF 範例"} + +*此螢幕截圖顯示在 Adobe Acrobat 中開啟的產生 PDF,保留了粗體/斜體樣式與平滑圖像。* + +## 結論 + +我們已完整說明如何使用 C# **將 HTML 另存為 PDF**。從載入標記、設定渲染選項,到寫入最終 PDF,整個流程簡單且高度可客製化。 + +依照本指南,你也能 **將 HTML 轉換為 PDF**、**從 HTML 產生 PDF**,以及 **使用字體建立 PDF**,滿足各種報表或文件產生需求。歡迎自行嘗試額外選項——例如浮水印、加密或自訂頁面尺寸——因為 Aspose.HTML 為你提供了這些彈性。 + +**接下來可以探索的方向:** + +- 使用 `PdfSaveOptions` 類別設定 PDF 版本或壓縮等級。 +- 將多個 `HTMLDocument` 合併成單一 PDF,以產生多段落報告。 +- 將此工作流程整合至 ASP.NET Core API,讓你的 Web 服務即時回傳 PDF。 + +對於特殊情況有疑問或需要協助微調渲染流程?歡迎在下方留言,祝開發順利! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/hongkong/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/hongkong/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..f2453da34 --- /dev/null +++ b/html/hongkong/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,250 @@ +--- +category: general +date: 2026-02-27 +description: 使用 C# ZipArchive 將 HTML 儲存為 ZIP – 步驟說明範例,搭配自訂資源處理程式,並提供將 HTML 匯出為 ZIP + 以及建立 ZIP 壓縮檔的 C# 程式碼技巧。 +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: zh-hant +og_description: 使用 C# ZipArchive 將 HTML 儲存為 ZIP。了解如何透過完整範例、客製化資源處理程式以及最佳實踐將 HTML 匯出為 + ZIP。 +og_title: 在 C# 中將 HTML 儲存為 ZIP – 完整指南 +tags: +- C# +- ZipArchive +- HTML export +title: 在 C# 中將 HTML 儲存為 ZIP – 完整指南 +url: /zh-hant/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Save HTML as ZIP in C# – 完整指南 + +是否曾需要 **將 HTML 儲存為 ZIP**,卻不確定該使用哪個 .NET 類別?你並非唯一遇到這個問題的開發者——許多人在想要將網頁連同資源打包成離線或可分發的檔案時,都會卡在這裡。好消息是?只要使用內建的 `System.IO.Compression.ZipArchive`,只需幾行程式碼,就能完成,同時還能清楚控制每個資源的寫入方式。 + +在本教學中,我們將一步步示範 **完整、可執行的範例**,說明如何將 HTML 文件匯出成 ZIP 檔,並使用自訂的 `ResourceHandler` 把每個資產串流寫入壓縮檔。過程中會穿插一些 **c# ziparchive example** 程式碼片段,討論 **how to export html to zip** 的實務情境,並指出在 **create zip archive c#** 程式需要具備的細節差異。 + +> **Prerequisites** – 需要 .NET 6+(或 .NET Core 3.1)以及提供 `HTMLDocument`、`HTMLSaveOptions`、`ResourceHandler` 的函式庫參考。若使用 Aspose.HTML 或類似套件,只要透過 NuGet 加入即可。無需其他第三方工具。 + +--- + +## 本教學涵蓋內容 + +- 設定一個 **ZipArchive**,用來接收 HTML 檔案及其相關資源。 +- 實作 **自訂資源處理器** (`ZipHandler`),將每個資源串流導入壓縮檔。 +- 使用 **HTMLSaveOptions** 把所有設定串起來,真正 **save HTML as ZIP**。 +- 常見的路徑、重複條目與大型資產問題。 +- 延伸解法小技巧——例如加入 manifest 檔或加密 ZIP。 + +完成後,你將擁有一個可直接嵌入任何 C# 專案的自包含方法,讓你 **save html as zip** 時更有信心。 + +--- + +## 步驟 1:加入必要的命名空間 + +在撰寫程式碼之前,先確保編譯器能辨識壓縮相關類別與 HTML 函式庫。 + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*為什麼需要這樣做:* `System.IO.Compression` 提供 `ZipArchive`,而 `Aspose.Html` 命名空間則提供 `HTMLDocument`、`HTMLSaveOptions` 與我們即將繼承的 `ResourceHandler` 基底類別。若使用其他 HTML 引擎,請尋找對應的類型。 + +--- + +## 步驟 2:建立自訂資源處理器(主要關鍵字示範) + +**將 HTML 儲存為 ZIP** 的核心在於告訴引擎每個外部資源(圖片、CSS、腳本)應該寫入哪裡。透過繼承 `ResourceHandler`,即可掌控接收資料的串流。 + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**重點說明** + +- `info.Uri` 為 HTML 引擎欲寫入的相對 URL。直接使用它作為條目名稱,可保留 ZIP 內的資料夾結構。 +- `CreateEntry` 會自動建立必要的目錄;不必自行管理。 +- 回傳開啟的串流讓引擎直接寫入資料——不會產生暫存檔,也不會額外複製記憶體。 + +--- + +## 步驟 3:初始化 ZipArchive + +現在以 **Update** 模式建立 `ZipArchive`。此模式允許在寫入過程中持續新增條目,若多次執行程式亦可覆寫既有條目。 + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*小技巧:* 使用 `FileMode.Create` 會覆寫先前的檔案;若想要在既有壓縮檔後面追加,可改用 `FileMode.OpenOrCreate`。同時,將 `ZipArchive` 包在 `using` 陳述式中,可確保壓縮檔正確釋放資源與檔案句柄。 + +--- + +## 步驟 4:載入欲匯出的 HTML 文件 + +在這裡指向來源 HTML 檔案。文件可能會引用同目錄下的 CSS、圖片或 JavaScript。 + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +如果你的 HTML 使用相對 URL,請確保程式的工作目錄與資源所在的資料夾相同。否則引擎找不到檔案,ZIP 內也會遺漏這些資源。 + +--- + +## 步驟 5:設定儲存選項 – 真正的「Save HTML as ZIP」時刻 + +現在把 `ZipHandler` 綁定到 `HTMLSaveOptions`。將 `SaveFormat` 設為 `ZIP`,即告訴函式庫把所有內容打包;而我們的處理器則決定每個檔案的寫入位置。 + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*為什麼重要:* 若未設定 `ResourceHandler`,函式庫會退回寫入檔案系統的行為,這樣就失去了 **how to export html to zip** 在單一壓縮檔內完成的目的。 + +--- + +## 步驟 6:執行儲存操作 + +最後,呼叫文件的 `Save` 方法,傳入剛剛組好的選項。函式庫會為每個外部資產呼叫 `ZipHandler.HandleResource`。 + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +當 `using` 區塊結束時,壓縮檔會自動完成封存,檔案即可供分發使用。 + +--- + +## 完整範例(結合所有步驟) + +以下程式碼可直接貼到 Console 應用程式中。它示範了一個 **c# ziparchive example**,同時也是 **create zip archive c#** 的實作,完整回答 **how to export html to zip**。 + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**預期結果:** 執行程式後,`output.zip` 內會包含 `index.html`(或你自行設定的名稱)以及原始頁面所引用的所有圖片、樣式表與腳本,且保持資料夾層級。解壓後雙擊 `index.html`,頁面應與線上時完全相同,只是變成可攜式的封裝檔。 + +--- + +## 常見邊緣案例與處理方式 + +| 情境 | 為何會發生 | 建議解決方式 | +|-----------|----------------|---------------| +| **重複的資源名稱**(例如不同資料夾下的兩張同名圖片) | 若條目名稱完全相同,`CreateEntry` 會拋出 `InvalidOperationException`。 | 使用相對路徑作為前綴(`info.Uri` 已自動包含),或在建立條目前自行清理名稱。 | +| **大型二進位資產**(影片、高解析度圖片) | 直接串流寫入 zip 可行,但預設緩衝區可能導致記憶體使用量升高。 | 在 `HandleResource` 中將回傳的串流包裝成 `BufferedStream`,設定較小的緩衝(例如 64 KB)。 | +| **遺失的資源** | HTML 含有斷裂連結時,處理器會收到不存在檔案的請求,導致空條目。 | 在建立條目前先檢查 `File.Exists`,或記錄警告以便後續追蹤。 | +| **Unicode 檔名** | 部分舊版 ZIP 工具無法正確處理 UTF‑8 名稱。 | 確保使用 .NET 6+,預設即以 UTF‑8 寫入。如需相容舊版,可設定 `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);`。 | +| **需要 manifest**(列出 zip 內檔案清單) | 消費端有時需要 `manifest.json` 進行驗證。 | 在主要儲存完成後,新增條目 `"manifest.json"`,寫入 `zipArchive.Entries` 的 JSON 列表。 | + +--- + +## 讓 **Save HTML as ZIP** 更上層樓的專業技巧 + +1. **驗證輸出** – 儲存後,以程式方式開啟 ZIP,確認 `index.html` 存在且每個條目的 `Length` > 0。可提前捕捉靜默失敗。 +2. **平行處理大型資產** – 若有數十 MB 的圖片,可將 `HandleResource` 的工作排入 `Task` 池,並同時寫入壓縮檔(仍需遵守 `ZipArchive` 單一寫入者的限制)。 +3. **智慧壓縮** – `ZipArchive` 預設使用 Deflate。對已壓縮的檔案(JPEG、PNG)可設定 `entry.CompressionLevel = CompressionLevel.NoCompression`,加快處理速度。 +4. **安全性** – 若 ZIP 需要加密或防止未授權存取,可在寫入完成後使用第三方加密函式庫(如 `SharpZipLib`)重新加密檔案,或在 `ZipArchive` 建立時自行實作加密流。 + +--- + +{{< /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..344d7895b 100644 --- a/html/hongkong/net/working-with-html-documents/_index.md +++ b/html/hongkong/net/working-with-html-documents/_index.md @@ -26,19 +26,14 @@ HTML 文件是網路的支柱,能夠有效地創建和操作它們對於任何 ### [使用 Aspose.HTML 在 .NET 中建立文檔](./creating-a-document/) -我們旅程的第一步是學習如何使用 Aspose.HTML 從頭開始或從 URL 建立 HTML 文件。我們將指導您完成整個過程,確保即使是初學者也能跟上。學完本節後,您將掌握輕鬆產生 HTML 文件的技能。 - ### [使用 Aspose.HTML 在 .NET 中建立簡單文檔](./creating-a-simple-document/) -一旦您掌握了基礎知識,我們將更深入地研究創建過程。在本節中,您將學習如何使用 Aspose.HTML 建立簡單的 HTML 文檔,並且我們將探索允許輕鬆操作的各種功能。無論您是建立網頁、生成內容還是將資料轉換為 HTML,本教學都將為您提供必要的知識。 - ### [使用 Aspose.HTML 在 .NET 中編輯文檔](./editing-a-document/) -現在,讓我們將您的技能提升到一個新的水平。編輯 HTML 文件是 Web 開發人員的常見任務,而 Aspose.HTML 則顯著簡化了此過程。在本節中,我們將介紹文件建立、操作和樣式設定。您將了解如何增強網路內容的外觀和功能,使其更具吸引力且用戶友好。 - ### [如何在 C# 中保存 HTML – 使用自訂資源處理程式的完整指南](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) -本教學說明如何在 C# 中使用自訂資源處理程式將 HTML 內容保存至檔案或串流,涵蓋完整步驟與範例。 +### [如何在 C# 中將 HTML 保存為 ZIP – 使用自訂資源處理程式的完整指南](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) + ### [如何使用 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/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/hongkong/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..f575fa401 --- /dev/null +++ b/html/hongkong/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,222 @@ +--- +category: general +date: 2026-02-27 +description: 在 C# 中使用自訂資源處理程式將 HTML 儲存為 ZIP,並建立 ZIP 壓縮檔。請依照此一步一步教學,將 HTML 及其資源打包。 +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: zh-hant +og_description: 在 C# 中使用自訂資源處理程式將 HTML 儲存為 ZIP。了解如何在 C# 中建立 ZIP 壓縮檔並輕鬆嵌入資源。 +og_title: 在 C# 中將 HTML 儲存為 ZIP – 完整教學 +tags: +- Aspose.HTML +- C# +- ZIP +title: 將 HTML 儲存為 ZIP(C#)— 完整指南與自訂資源處理程式 +url: /zh-hant/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 C# 中將 HTML 保存為 ZIP – 完整指南與自訂資源處理程式 + +有沒有想過如何在 C# 中 **將 HTML 保存為 ZIP** 而不讓自己抓狂?你並不是唯一遇到這個問題的人——許多開發者在需要將 HTML 頁面與圖片、CSS 或 JavaScript 檔案一起打包時會卡住。好消息是?使用 Aspose.HTML 只要幾個簡潔步驟就能完成,而 **自訂資源處理程式** 讓整個過程變得輕鬆無痛。 + +在本教學中,我們將逐步說明您需要了解的所有內容:從安裝函式庫、編寫將資源直接串流至 **在 C# 中建立 ZIP 壓縮檔** 的處理程式,到驗證最終封包。完成後,您將擁有一個可直接放入任何 .NET 專案的即用解決方案。 + +![Save HTML as ZIP example](/images/save-html-as-zip.png "Diagram showing HTML saved as a ZIP file") + +## Save HTML as ZIP – 本指南涵蓋內容 + +我們將涵蓋整個流程: + +1. **Prerequisites** – 您所需的最少工具與套件。 +2. **Custom resource handler** – 為何需要以及如何實作。 +3. **Creating a ZIP archive in C#** – 使用 `System.IO.Compression`。 +4. **Configuring Aspose.HTML save options** – 指定自訂處理程式。 +5. **Running the code** – 執行程式並檢查輸出。 + +如果您已熟悉基本的 C# 語法且已安裝 Visual Studio(或 VS Code),即可立即開始。無需外部文件說明——所有內容都在此處。 + +--- + +## 步驟 1:設定專案並安裝 Aspose.HTML + +在撰寫任何程式碼之前,請確保您的專案能參考 Aspose.HTML 函式庫。 + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*Pro tip:* 最新的 NuGet 套件(截至 2026 年 2 月)支援 .NET 6+,因此您可以使用現代的 SDK‑style 專案,而不必擔心舊版框架。 + +套件還原完成後,開啟 `Program.cs`。我們稍後會將預設內容替換為完整範例,現在先保持檔案開啟狀態即可。 + +## 實作自訂資源處理程式 + +### 為何需要自訂資源處理程式? + +當 Aspose.HTML 將 HTML 文件保存為 ZIP 套件時,它必須取得每個外部資源(圖片、字型、腳本)並寫入某處。預設行為是將它們寫入磁碟的暫存資料夾。透過提供 **custom resource handler**,您可以告訴函式庫每個資源的確切寫入位置——在我們的情況下,直接寫入 ZIP 壓縮檔。這樣可避免額外的 I/O、保持整潔,並讓您完整掌控命名方式。 + +### 程式碼:處理程式類別 + +建立一個名為 `MyHandler.cs` 的新類別檔(或如果您偏好單檔示範,可直接放在 `Program.cs` 中)。 + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**Explanation:** +* `ResourceHandler` 是 Aspose.HTML 提供的抽象類別,可讓您攔截資源取得。 +* 透過回傳從 `ZipArchiveEntry.Open()` 取得的 `Stream`,我們直接提供一條可寫入 ZIP 檔的管道。無需暫存檔案,也不需額外清理。 + +## 在 C# 中建立 ZIP 壓縮檔 + +處理程式準備好之後,我們需要一個寫入的目標。.NET 的 `ZipArchive` 類別負責主要工作。 + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### 這段程式碼的作用 + +1. **Creates an in‑memory HTML document** – 建立一個記憶體中的 HTML 文件,並引用 `logo.png`。 +2. **Opens a `FileStream`** – 開啟一個將成為 `output.zip` 的 `FileStream`。 +3. **Assigns the `ZipArchive`** – 把 `ZipArchive` 指派給 `MyHandler` 中的靜態欄位。 +4. **Sets `HTMLSaveOptions`** – 設定 `HTMLSaveOptions` 為 `SaveFormat.ZIP` 並附加我們的處理程式。 +5. **Calls `document.Save`** – Aspose.HTML 解析 HTML、取得 `logo.png`,並透過 `MyHandler` 串流寫入壓縮檔。 + +由於處理程式使用資源 URI(`logo.png`)作為條目名稱,最終的 ZIP 會包含一個同名檔案,保留原始的相對路徑。 + +## 設定 ZIP 套件的儲存選項 + +`HTMLSaveOptions` 物件是您告訴 Aspose.HTML **如何**打包輸出的地方。除了 `ResourceHandler`,您還可以調整一些實用屬性: + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*為何要關注 `EnableCompression`?* +如果您處理的是大型圖片,啟用壓縮可將最終壓縮檔縮小最多 70 %。然而,對於已經壓縮過的 PNG,效果有限,您可能會關閉它以加快儲存速度。 + +## 執行程式並驗證輸出 + +Compile and run the program: + +```bash +dotnet run +``` + +您應該會在主控台看到成功訊息。前往顯示的目錄並開啟 `output.zip`。裡面會有: + +- `index.html` – 已儲存的 HTML 檔案。 +- `logo.png` – 標記中引用的圖片。 + +直接從 ZIP 中開啟 `index.html`(大多數作業系統的檔案總管都支援預覽),您會看到標題與圖片如同原始字串般正確呈現。 + +**需要留意的邊緣情況** + +| 情況 | 處理方式 | +|-----------|------------| +| HTML 參考了 **遠端 URL**(例如 `https://example.com/style.css`) | 處理程式仍會收到 `ResourceInfo.Uri`。請確保環境能連線至該 URL,或先下載資源並將 HTML 調整為本機路徑。 | +| 需要在 ZIP 中保留 **資料夾層級**(例如 `images/logo.png`) | 修改 `HandleResource`,在前面加上資料夾名稱,例如:`var entry = ZipArchive.CreateEntry($\"assets/{info.Uri}\");` | +| 資源 **載入失敗**(404) | 處理程式仍會被呼叫,但串流會收到零位元組。若需自訂錯誤處理,請將儲存呼叫包在 `try/catch` 中,並檢查 `info.Status`。 | + +## 重點回顧:一次完成 HTML 保存為 ZIP 的完整流程 + +- **Primary Goal:** 使用 C# 將 HTML 頁面及其所有外部資產打包成單一 ZIP 檔。 +- **Key Tools:** Aspose.HTML(`HTMLDocument`、`HTMLSaveOptions`)、`System.IO.Compression.ZipArchive`,以及 **custom resource handler**。 +- **Result:** 可攜帶的 `output.zip`,可供發佈、儲存或透過網路傳輸,之後解壓仍能保持資源連結。 + +## 接下來?擴充工作流程 + +現在您已掌握 **save HTML as ZIP**,可以進一步探索相關情境: + +- **Save HTML as PDF** – 將 `SaveFormat.ZIP` 改為 `SaveFormat.PDF`,並相應調整選項。 +- **Embed fonts** – 在 HTML 中使用 `@font-face`,讓處理程式捕捉字型檔案。 +- **Batch processing** – 針對多個 HTML 字串迭代,重複使用同一個 `ZipArchive` 以建立多文件套件。 + +上述皆基於相同的 **custom resource handler** 模式與 **create ZIP archive in C#** 技術。 + +### 最後的想法 + +您剛剛看到,當使用 Aspose.HTML 時,將 HTML **保存為 ZIP** 在 C# 中是多麼簡單。 + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/hungarian/net/generate-jpg-and-png-images/_index.md b/html/hungarian/net/generate-jpg-and-png-images/_index.md index dc2c2b0ac..3a0bb8fd0 100644 --- a/html/hungarian/net/generate-jpg-and-png-images/_index.md +++ b/html/hungarian/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Tanulja meg az Aspose.HTML for .NET használatát HTML-dokumentumok kezeléséhe Ismerje meg, hogyan állíthatja be az antialiasingot a DOCX dokumentumok PNG vagy JPG képekké konvertálásakor az Aspose.HTML for .NET használatával. ### [docx konvertálása png-re – zip archívum létrehozása C# oktatóanyag](./convert-docx-to-png-create-zip-archive-c-tutorial/) Ismerje meg, hogyan konvertálhat docx fájlokat png képekké, majd csomagolhatja őket zip archívumba C#-ban az Aspose.HTML segítségével. +### [PNG létrehozása HTML-ből C#-ban – Lépésről‑lépésre útmutató](./create-png-from-html-in-c-step-by-step-guide/) +Ismerje meg, hogyan konvertálhat HTML-t PNG képpé C#-ban az Aspose.HTML segítségével, részletes lépésekkel. ## Következtetés diff --git a/html/hungarian/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/hungarian/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..9fc6b18c4 --- /dev/null +++ b/html/hungarian/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,211 @@ +--- +category: general +date: 2026-02-27 +description: Készíts PNG-t HTML-ből gyorsan az Aspose.HTML használatával C#-ban. Tanulja + meg, hogyan renderelje a HTML-t képre, állítsa be a kép szélességét és magasságát, + és konvertálja a HTML-t PNG-re percek alatt. +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: hu +og_description: Készíts PNG-t HTML-ből az Aspose.HTML segítségével. Ez az útmutató + bemutatja, hogyan lehet a HTML-t képpé renderelni, beállítani a kép szélességét + és magasságát, valamint hatékonyan HTML-t PNG-re konvertálni. +og_title: PNG létrehozása HTML-ből C#-ban – Teljes útmutató +tags: +- Aspose.HTML +- C# +- Image Rendering +title: PNG létrehozása HTML‑ből C#‑ban – Lépésről lépésre útmutató +url: /hu/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PNG létrehozása HTML-ből C#-ban – Teljes útmutató + +Valaha szükséged volt **PNG létrehozására HTML-ből**, de nem tudtad, melyik könyvtár adna pixel‑tökéletes eredményt? Nem vagy egyedül – sok fejlesztő ugyanazzal a problémával szembesül, amikor egy weboldalt statikus képpé szeretne alakítani e‑mailekhez, jelentésekhez vagy bélyegképekhez. + +A jó hír? Az Aspose.HTML segítségével **render HTML to image**, pontos méreteket szabályozhatsz, és **save HTML as PNG** néhány C# sorral. Ebben az útmutatóban végigvezetünk a teljes folyamaton, a HTML fájl betöltésétől a szöveg hinting finomhangolásáig, egészen a PNG lemezre írásáig. A végére megtanulod, hogyan **set image width height** programozottan, és egy újrahasználható kódrészletet kapsz, amelyet bármely .NET projektbe beilleszthetsz. + +## Mit fogsz megtanulni + +- Hogyan tölts be egy HTML dokumentumot az Aspose.HTML használatával. +- `ImageRenderingOptions` és `TextOptions` közötti különbség, és miért fontosak. +- Hogyan **convert HTML to PNG** a betűtípusok, antialiasing és aláhúzási stílusok megőrzésével. +- Tippek a gyakori hibák, például hiányzó betűtípusok vagy váratlan képméretek hibaelhárításához. +- Egy teljes, azonnal futtatható kódminta, amelyet másolhatsz‑beilleszthetsz a Visual Studio-ba. + +> **Előfeltételek:** .NET 6+ (vagy .NET Framework 4.6.2+), Aspose.HTML for .NET telepítve NuGet-en keresztül, és alapvető C# ismeretek. Más külső eszköz nem szükséges. + +--- + +## 1. lépés: HTML dokumentum betöltése – A PNG létrehozásának megkezdése + +Először szükségünk van egy `HTMLDocument` objektumra, amely a forrásfájlra mutat. Ez a bármely **create PNG from HTML** művelet alapja. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*Miért fontos ez a lépés:* A `HTMLDocument` osztály feldolgozza a markupot, feloldja a CSS‑t, és felépít egy DOM‑ot, amelyet a renderelő motor később bitmapre festhet. Ha az útvonal hibás, a következő **render html to image** lépés `FileNotFoundException`‑t dob. + +## 2. lépés: Kép szélesség és magasság beállítása – A kimeneti méret szabályozása + +Amikor **render HTML to image**, gyakran egy adott felbontásra van szükség – például egy bélyegképre, amelynek pontosan 1200 × 800 pixelnek kell lennie. Itt jön képbe a `ImageRenderingOptions`. + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*Pro tipp:* Ha kihagyod a `Width` és `Height` beállítását, az Aspose.HTML a lap természetes méretét használja, ami túl nagy lehet e‑mail beágyazásokhoz. + +## 3. lépés: Szöveg renderelés finomhangolása – Éles szöveg + +A Linuxon a szöveg gyakran homályos, hacsak nem engedélyezed a hintinget. A `TextOptions` objektum lehetővé teszi ennek vezérlését, biztosítva, hogy a végső PNG minden platformon éles legyen. + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*Miért a hinting?* A hinting minden glif alakját a pixelrácshoz igazítja, ami kulcsfontosságú, amikor **convert HTML to PNG** alacsony felbontású kijelzőkhöz. + +## 4. lépés: Opciók kombinálása és stílus hozzáadása – A teljes render konfiguráció + +Most egyesítjük a kép- és szövegbeállításokat, és bemutatjuk, hogyan alkalmazzunk globális betűstílust, például minden szöveg aláhúzását. Ebben a lépésben valóban **save HTML as PNG** egyedi stílussal. + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*Megjegyzés:* A `WebFontStyle` számos jelzőt támogat (Bold, Italic, stb.). Több stílus esetén bitwise OR‑ral kombinálhatod őket. + +## 5. lépés: Renderelés és mentés – Az a pillanat, amikor **Create PNG from HTML** + +Minden beállítva, a végső hívás egy egyetlen sor, amely a DOM‑ot bitmapre festi és a lemezre írja. + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +A sor futtatása után megtalálod a `output.png` fájlt a megadott mappában, pontosan 1200 × 800 pixel mérettel, antialiasing‑gel és hintelt szöveggel. + +## Teljes működő példa – Másold, futtasd, ellenőrizd + +Az alábbiakban a teljes program látható, amelyet konzolalkalmazásként fordíthatsz. Tartalmazza az összes using utasítást, hibakezelést és a szükséges megjegyzéseket. + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**Várt eredmény:** Egy `output.png` nevű fájl jelenik meg a futtatható mellé, amely a `sample.html` renderelt változatát mutatja. Nyisd meg bármely képnézővel a méretek és a stílus ellenőrzéséhez. + +## Gyakori hibák és elkerülésük módjai + +| Probléma | Tünet | Megoldás | +|----------|-------|----------| +| Hiányzó betűtípusok | A szöveg általános sans‑serifként jelenik meg | Telepítsd a szükséges betűtípusokat a gépre, vagy ágyazz be web‑betűtípusokat a HTML‑be. | +| Helytelen méretek | A PNG nagyobb vagy kisebb, mint várható | Ellenőrizd a `Width` és `Height` értékeket az `ImageRenderingOptions`‑ban. | +| Homályos élek | Nincs antialiasing | Győződj meg róla, hogy `UseAntialiasing = true`. | +| Linux renderelési hibák | A szöveg homályos | Állítsd `UseHinting = true`-ra a `TextOptions`‑ban. | + +*Pro tipp:* Ha **render HTML to image** egy fej nélküli szerveren, győződj meg róla, hogy a szerveren a szükséges rendszerkönyvtárak (pl. `libgdiplus` Linuxon) telepítve vannak, különben az Aspose.HTML egy alacsonyabb minőségű szoftveres renderelőre vált. + +## A megoldás bővítése – Következő lépések + +- **Batch conversion:** Egy HTML fájlok listáján iterálva hívja meg ugyanazt a renderelési logikát, hogy PNG galériát hozzon létre. +- **Different formats:** Cseréld le a `output.png`-t `output.jpg`-ra vagy `output.bmp`-re a fájlkiterjesztés módosításával; az Aspose.HTML automatikusan a megfelelő enkódert választja. +- **Dynamic sizing:** Számold ki a `Width` és `Height` értékeket a HTML viewport meta tagje alapján a reszponzív tervezéshez. +- **Watermarking:** Használd a `Aspose.Html.Drawing`-ot, hogy a mentés előtt logót helyezz a kép fölé. + +Ezek az ötletek lehetővé teszik, hogy egy egyszerű **create PNG from HTML** kódrészletből egy teljes funkcionalitású képgeneráló szolgáltatás legyen. + +## Összegzés + +Áttekintettük mindazt, amire szükséged van a **create PNG from HTML** elvégzéséhez az Aspose.HTML for .NET használatával: a dokumentum betöltése, a **set image width height** beállítása, a szöveg hintinggel való finomhangolása, és végül a **saving HTML as PNG**. A teljes kódpélda készen áll a projektedbe illeszteni, és a fenti tippek segítenek elkerülni a gyakori fejfájásokat. + +Most, hogy megbízhatóan **render HTML to image** tudsz, miért ne kísérleteznél különböző stílusokkal, kötegelt feldolgozással, vagy akár PDF‑re konvertálással ugyanabban a folyamatban? A lehetőségek végtelenek, és a kód már a kezedben van. + +Boldog kódolást, és nyugodtan oszd meg az eredményeidet vagy tegyél fel kérdéseket a megjegyzésekben! + +![Create PNG from HTML example](/images/create-png-from-html.png "Create PNG from HTML using Aspose.HTML") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/hungarian/net/html-extensions-and-conversions/_index.md b/html/hungarian/net/html-extensions-and-conversions/_index.md index 53dd8b575..02a12b64c 100644 --- a/html/hungarian/net/html-extensions-and-conversions/_index.md +++ b/html/hungarian/net/html-extensions-and-conversions/_index.md @@ -38,6 +38,7 @@ Az Aspose.HTML for .NET nem csak egy könyvtár; ez egy változás a webfejleszt ## HTML-kiterjesztések és -konverziók oktatóanyagok ### [Konvertálja a HTML-t PDF-be .NET-ben az Aspose.HTML-lel](./convert-html-to-pdf/) +### [HTML mentése PDF-be C#‑ban – Teljes útmutató betűtípusokkal](./save-html-as-pdf-in-c-complete-guide-with-fonts/) ### [Az Aspose.HTML segítségével EPUB-t konvertáljon képpé .NET-ben](./convert-epub-to-image/) ### [Konvertálja az EPUB-t PDF-be .NET-ben az Aspose.HTML segítségével](./convert-epub-to-pdf/) ### [Konvertálja az EPUB-t XPS-re .NET-ben az Aspose.HTML segítségével](./convert-epub-to-xps/) @@ -57,9 +58,13 @@ Ismerje meg, hogyan csomagolhatja be a HTML-fájlokat zip-archívumba C#-ban az Hozzon létre HTML-dokumentumot formázott szöveggel, majd exportálja PDF-be az Aspose.HTML for .NET segítségével. Lépésről lépésre útmutató. ### [PDF létrehozása HTML-ből – C# lépésről‑lépésre útmutató](./create-pdf-from-html-c-step-by-step-guide/) Ismerje meg, hogyan hozhat létre PDF-et HTML-ből C#‑ban az Aspose.HTML for .NET segítségével, részletes lépésről‑lépésre útmutatóval. +### [PDF létrehozása HTML‑ből – Lépésről‑lépésre útmutató fejlesztőknek](./create-pdf-from-html-step-by-step-guide-for-developers/) +Ismerje meg, hogyan hozhat PDF-et HTML‑ből C#‑ban az Aspose.HTML for .NET segítségével, részletes fejlesztői útmutatóval. ### [HTML mentése ZIP-ként – Teljes C# oktatóanyag](./save-html-as-zip-complete-c-tutorial/) ### [HTML mentése ZIP-be C#‑ban – Teljes memória‑beli példa](./save-html-to-zip-in-c-complete-in-memory-example/) Mentse a HTML-t közvetlenül memóriában ZIP-archívumba az Aspose.HTML for .NET C#‑ban. +### [HTML mentése ZIP-be C#‑ban – Teljes útmutató](./save-html-as-zip-in-c-complete-guide/) +Tanulja meg, hogyan menthet HTML-fájlokat ZIP-archívumba C#‑ban az Aspose.HTML for .NET használatával, lépésről‑lépésre útmutatóval. ## Következtetés diff --git a/html/hungarian/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/hungarian/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..2ed2ae958 --- /dev/null +++ b/html/hungarian/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,224 @@ +--- +category: general +date: 2026-02-27 +description: Készíts PDF-et HTML-ből gyorsan egy teljes C# példával. Tanulj meg HTML-t + PDF-re konvertálni, HTML-t PDF-ként menteni, és HTML-t PDF-be exportálni a legjobb + gyakorlatok szerinti beállításokkal. +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: hu +og_description: PDF létrehozása HTML‑ből C#‑ban egy kész példával. Ez az útmutató + végigvezet a HTML PDF‑re konvertálásán, a HTML PDF‑ként mentésén és a HTML PDF‑be + exportálásán. +og_title: PDF létrehozása HTML-ből – Teljes C# oktatóanyag +tags: +- C# +- PDF +- HTML +title: PDF létrehozása HTML‑ből – Lépésről‑lépésre útmutató fejlesztőknek +url: /hu/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +zpontú alkalmazásokban." + +Continue. + +"In this tutorial we’ll walk through a **complete, runnable C# example** that shows you how to **convert HTML to PDF**, configure rendering options for crisp output, and finally **save HTML as PDF** on disk. By the end you’ll have a solid, production‑ready pattern for **export HTML to PDF** that you can drop into any .NET project." + +Translate. + +Proceed similarly. + +Make sure to keep markdown formatting like **bold**. + +Lists: keep bullet points. + +Code block placeholders remain. + +Image alt and title translate. + +Let's craft final output.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF létrehozása HTML‑ből – Teljes C# útmutató + +Valaha is szükséged volt **PDF létrehozására HTML‑ből**, de nem tudtad, mely API‑hívásokat kell használni? Nem vagy egyedül. Akár jelentéskészítő irányítópultot, számlagenerátort vagy statikus weboldal‑exportert építesz, a HTML PDF‑vé alakítása gyakori igény a modern web‑központú alkalmazásokban. + +Ebben az útmutatóban egy **teljes, futtatható C# példán** keresztül mutatjuk be, hogyan **konvertálj HTML‑t PDF‑be**, hogyan állítsd be a renderelési opciókat a tiszta megjelenéshez, és végül hogyan **mentsd el a HTML‑t PDF‑ként** a lemezre. A végére egy stabil, production‑kész mintát kapsz a **HTML exportálásához PDF‑be**, amelyet bármely .NET projektbe beilleszthetsz. + +## Amit megtanulsz + +- Hogyan tölts be egy helyi HTML‑fájlt a `HTMLDocument`‑del. +- Mely renderelési opciók javítják a betűvastagságot, a képek simaságát és a szöveg hintingjét. +- A pontos hívás a **HTML exportálásához PDF‑be** egyetlen `Save` metódussal. +- Tippek nagy dokumentumok kezeléséhez, a gyakori hibák hibakereséséhez és az eredmény ellenőrzéséhez. +- Egy teljes, másolás‑beillesztés kódminta, amelyet még ma futtathatsz. + +### Előfeltételek + +- .NET 6+ (vagy .NET Framework 4.7+). Az általunk használt API mindkettőn működik. +- Hivatkozás a hipotetikus `HtmlToPdfLib`‑re (cseréld le a saját könyvtárad nevére). +- Egy `input.html` fájl, amelyet egy általad irányított mappában helyezel el (most `YOUR_DIRECTORY`‑nek hívjuk). + +Ha már megvannak ezek a darabok, vágjunk bele – nincs szükség további beállításra. + +## 1. lépés: Töltsd be a HTML‑dokumentumot a **PDF létrehozásához HTML‑ből** + +Az első dolog, amire szükséged van, egy `HTMLDocument` példány, amely a forrásfájlra mutat. Olyan, mintha megnyitnál egy jegyzetfüzetet, mielőtt elkezdenél írni – dokumentum nélkül nincs mit renderelni. + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **Miért fontos:** A HTML‑fájl korai betöltése lehetővé teszi a könyvtár számára a DOM elemzését, a CSS feloldását és a képek előtöltését. Ennek kihagyása vagy hibás HTML átadása gyakran üres oldalakhoz vezet a **html to pdf conversion** során. + +## 2. lépés: Renderelési opciók beállítása a **HTML‑t PDF‑be konvertáláshoz** + +A renderelési opciók a titkos szósz, amely egy egyszerű PDF‑et professzionális megjelenésű dokumentummá varázsol. Itt engedélyezzük a félkövér betűket, a képek antialiasing‑ját és a szöveg hintingjét – olyan funkciók, amelyeket a legtöbb fejlesztő figyelmen kívül hagy, de drámaian javítják a vizuális hűséget. + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **Pro tipp:** Ha egy márkára specifikus betűtípussal dolgozol, állítsd be a `FontFamily`‑t a `pdfOptions`‑ben is. Ez megakadályozza, hogy a **convert HTML to PDF** során általános betűtípusra váltson a rendszer. + +## 3. lépés: Fájl mentése és **HTML exportálása PDF‑be** + +Miután a dokumentum betöltődött és az opciók finomhangolásra kerültek, az utolsó lépés egyetlen sor, amely a PDF‑et a lemezre írja. A `Save` metódus belsőleg végrehajtja a **html to pdf conversion**‑t, alkalmazva az összes korábban definiált renderelési beállítást. + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **Ami látnod kell:** A `output.pdf` megnyitása bármely nézőben megjeleníti az eredeti HTML elrendezést, félkövér címsorokkal, sima képekkel és éles szöveggel. Ha hiányzó stílusokat észlelsz, ellenőrizd, hogy a CSS‑fájlok elérhetők‑e relatívan az `input.html`‑hez képest. + +![create pdf from html example](/images/create-pdf-from-html.png "A generált PDF képernyőképe – PDF létrehozása HTML‑ből") + +*Az előző képernyőkép (alt szöveg: “PDF létrehozása HTML‑ből példa”) egy renderelt PDF‑et mutat, amely megőrzi az eredeti HTML stílusát.* + +## Gyakori buktatók a **HTML‑t PDF‑be konvertálásakor** + +Még egy egyszerű folyamat esetén is gyakran akadnak problémák. Az alábbiakban a három leggyakoribb hibát és azok elkerülésének módját mutatjuk be. + +### 1. Hiányzó erőforrások (képek, CSS, betűtípusok) + +Ha a HTML külső erőforrásokra hivatkozik relatív útvonalakkal, a konverter nem találhatja meg őket. Mindig használj abszolút útvonalakat vagy állíts be egy alap‑URL‑t: + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. Nagy dokumentumok időtúllépést okoznak + +Többoldalas jelentések esetén növeld a könyvtár timeout beállítását: + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. Betűtípus‑helyettesítés váratlan megjelenést eredményez + +Add meg pontosan a szükséges betűcsaládot: + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +Ezeknek a kérdéseknek a korai kezelése megspórolja a frusztráló hibakeresést a **save HTML as PDF** műveletek során. + +## Haladó: Borítóoldal hozzáadása a **HTML‑t PDF‑be exportálás előtt** + +Néha szükség van egy egyedi borítóra – például egy címlapra logóval. Egyszerűen előreilleszthetsz egy HTML‑részletet a fő dokumentum előtt: + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **Miért érdemes:** A borító közvetlenül HTML‑ben történő hozzáadása egyszerűsíti a PDF‑generálási folyamatot, elkerülve a későbbi iText vagy PdfSharp‑szerű utófeldolgozó eszközöket. + +## A kimenet programozott ellenőrzése + +Ha azt szeretnéd, hogy a PDF helyesen jött létre (pl. CI‑pipeline‑okban), ellenőrizheted a fájlméretet vagy az oldalszámot: + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +A nulla‑tól eltérő oldalszám megerősíti, hogy a **convert HTML to PDF** lépés sikeres volt. + +## Összefoglalás és következő lépések + +Épp most végigjártunk egy **teljes, vég‑től‑végig példán** arról, hogyan **hozzunk létre PDF‑et HTML‑ből** C#‑ben. A folyamat: + +1. Töltsd be a forrás‑HTML‑t (`HTMLDocument`). +2. Finomhangold a renderelést a `PdfRenderingOptions`‑szal. +3. Hívd meg a `Save`‑et a **HTML exportálásához PDF‑be**. + +Innen továbbfejlesztheted: + +- **Kötegelt feldolgozás**: Egy mappa HTML‑fájljait ciklusba véve generálj PDF‑eket tömegesen. +- **Dinamikus HTML**: Használj Razor nézetmotort a HTML‑k dinamikus előállításához a konverzió előtt. +- **Biztonság**: Szandoboxold a konverziót, ha felhasználó‑által biztosított HTML‑t fogadsz (megelőzi a script‑injekciót). + +Nyugodtan kísérletezz különböző opciókkal – például `PdfA` megfelelőség archiváláshoz, vagy JavaScript beágyazása interaktív PDF‑ekhez. A fő minta változatlan marad, és most már egy megbízható alapod van minden **save HTML as PDF** igényhez. + +--- + +*Boldog kódolást! Ha bármilyen furcsaságra bukkansz, írj egy megjegyzést alább, vagy nézd meg a könyvtár GitHub‑issues oldalát. A közösség szívesen oszt meg olyan finomításokat, amelyek a **html to pdf conversion**‑t még gördülékenyebbé teszik.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/hungarian/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/hungarian/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..8ba87455a --- /dev/null +++ b/html/hungarian/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,276 @@ +--- +category: general +date: 2026-02-27 +description: Mentse el a HTML-t PDF formátumban C#-ban gyorsan az Aspose.HTML segítségével. + Tanulja meg, hogyan konvertálhatja a HTML-t PDF-re, és hogyan generálhat PDF-et + HTML-ből egyedi betűtípusokkal és stílusokkal, mindössze néhány lépésben. +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: hu +og_description: Mentse el a HTML-t PDF-ként C#-ban gyorsan az Aspose.HTML használatával. + Ez az útmutató bemutatja, hogyan konvertálhatja a HTML-t PDF-be, hogyan generálhat + PDF-et HTML-ből, és hogyan alkalmazhat egyedi betűtípusokat. +og_title: HTML PDF-be mentése C#-ban – Teljes útmutató betűtípusokkal +tags: +- csharp +- pdf +- html +title: HTML mentése PDF-ként C#-ban – Teljes útmutató betűtípusokkal +url: /hu/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML mentése PDF‑ként C#‑ban – Teljes útmutató betűtípusokkal + +Szükséged volt már **HTML PDF‑ként mentésére** egy C# alkalmazásból, de nem tudtad, melyik könyvtárat válaszd? Nem vagy egyedül. Sok fejlesztő ütközik ebbe a helyzetbe, amikor számlákat, jelentéseket vagy nyomtatható nyugtákat szeretne közvetlenül a webes tartalomból előállítani. + +A jó hír? Az Aspose.HTML‑el **konvertálhatod a HTML‑t PDF‑re**, **generálhatsz PDF‑et HTML‑ből**, sőt **PDF‑et hozhatsz létre betűtípusokkal** néhány sor kóddal. Ebben a tutorialban végigvezetünk a teljes folyamaton, elmagyarázzuk, miért fontos minden beállítás, és egy azonnal futtatható példát adunk. + +## Mit tanulhatsz meg + +- Hogyan tölts be helyi vagy távoli HTML‑fájlt C#‑ban +- Mely renderelési beállítások biztosítják a félkövér/dőlt betűket, antialiasing‑et és a szöveg‑hintinget +- Hogyan mentheted az eredményt PDF‑fájlként a lemezre +- Tippek egyedi betűtípusok kezeléséhez és gyakori buktatók + +Az Aspose.HTML előzetes ismerete nem szükséges – csak egy .NET fejlesztői környezet (Visual Studio 2022 vagy újabb) és az Aspose.HTML for .NET NuGet csomag. + +## Előfeltételek + +| Követelmény | Miért fontos | +|-------------|--------------| +| .NET 6.0 vagy újabb | Biztosítja a futtatókörnyezetet az Aspose.HTML‑hez | +| Aspose.HTML for .NET (NuGet) | A nehéz munkát végző könyvtár | +| Egy minta HTML‑fájl (`sample.html`) | A forrás tartalom, amit átalakítunk | +| Alap C# ismeretek | A kódrészletek megértéséhez | + +Ha ezek megvannak, merüljünk el. + +## 1. lépés: Aspose.HTML telepítése NuGet‑en keresztül + +Nyisd meg a projektet a Visual Studio‑ban, kattints jobb‑gombbal a **Dependencies** csomópontra, és válaszd a **Manage NuGet Packages** lehetőséget. Keresd meg a `Aspose.HTML`‑t, majd kattints a **Install** gombra. + +```powershell +dotnet add package Aspose.HTML +``` + +> **Pro tipp:** Használd a legújabb stabil verziót (2026‑02‑27‑i állapot szerint a 23.11), hogy a legfrissebb renderelési fejlesztéseket kapd. + +## 2. lépés: A forrás HTML dokumentum betöltése + +Az első dolog, amire szükségünk van, egy `HTMLDocument` objektum, amely a fájlra mutat. Ez az osztály beolvassa a markup‑ot, feloldja a CSS‑t, és előkészíti a renderelést. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Miért ez a lépés?** +> A HTML betöltése egy `HTMLDocument`‑be elkülöníti a parse‑lépést a rendereléstől, ami azt jelenti, hogy a PDF létrehozása előtt megvizsgálhatod a DOM‑ot vagy futásidőben módosíthatod azt. + +## 3. lépés: PDF renderelési beállítások konfigurálása + +Az Aspose.HTML finomhangolt vezérlést biztosít a végső PDF megjelenéséhez. Ebben a példában engedélyezzük a félkövér + dőlt betűstílusokat, az antialiasing‑et a simább grafikákért, és a szöveg‑hintinget a tisztább alacsony DPI‑os kimenetért. + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### Miért ezek a beállítások? + +- **`FontStyle`** – Összevonja a `` vagy `` tageket az alapbetűtípussal, biztosítva, hogy a PDF megőrizze az eredeti stílusokat. +- **`UseAntialiasing`** – Csökkenti a lépcsőzetes éleket diagramok, ikonok vagy bármely rasterizált tartalom esetén. +- **`UseHinting`** – A glifvonalakat pixelrácshoz igazítja, ami különösen hasznos, ha a PDF alacsony felbontású eszközökön lesz megtekintve. + +Ha egyedi betűtípusokra (pl. vállalati márkabetűtípus) van szükséged, helyezd a `.ttf` fájlokat egy mappába, és állítsd be a `pdfRenderOptions.FontProvider`‑t ennek megfelelően. Ez egy önálló téma, de az alapötlet: + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## 4. lépés: A HTML dokumentum renderelése PDF‑be + +Most összekapcsoljuk a dokumentumot a beállításokkal, majd elmondjuk az Aspose.HTML‑nek, hogy írja ki a kimeneti fájlt. + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +Ez a sor lefutás után a `output.pdf` a futtatható állományod mellé kerül. Nyisd meg – látnod kell az eredeti HTML‑t félkövér/dőlt stílusokkal, sima grafikákkal és éles szöveggel renderelve. + +> **Várható eredmény:** +> Egy PDF, amely tükrözi a `sample.html` elrendezését, minden címsor félkövérrel, a kiemelt szöveg dőlt betűvel, és a beágyazott képek szaggatások nélkül jelennek meg. + +## 5. lépés: Ellenőrzés és finomhangolás (opcionális) + +### Gyors ellenőrző szkript + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +Ha a PDF nem megfelelő, fontold meg az alábbi gyakori módosításokat: + +| Probléma | Valószínű ok | Megoldás | +|----------|--------------|----------| +| Hiányzó betűtípusok | Betűtípus nincs beágyazva vagy nem található | Használd a `FontProvider.AddFont`‑t, és győződj meg róla, hogy a betűtípusfájl elérhető | +| Képek elmosódottak | Antialiasing letiltva | Állítsd `UseAntialiasing = true` | +| Szöveg túl vékony a képernyőn | Hinting letiltva | Engedélyezd `UseHinting = true` | +| Elrendezéseltolódás oldaltörésnél | CSS `page-break` szabályok figyelmen kívül hagyva | Adj explicit `page-break-before/after` szabályokat a HTML/CSS‑ben | + +## Teljes működő példa + +Az alábbi programot másold be egy új konzolos alkalmazásba. Tartalmazza az összes `using` direktívát, hibakezelést és megjegyzéseket a tisztaság kedvéért. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +Futtasd a projektet (`dotnet run`), és a sikerüzenet után egy frissen létrehozott `output.pdf` fájlt kell látnod. + +## Gyakori kérdések és speciális esetek + +### **Konvertálhatok HTML‑t PDF‑re URL‑ről is?** + +Természetesen. Csak cseréld le a fájlútvonalat egy URL‑re: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +Az Aspose.HTML letölti az oldalt, feloldja a külső erőforrásokat, és rendereli. + +### **Mi a helyzet nagy HTML‑fájlokkal vagy több oldallal?** + +Az Aspose.HTML streameli a tartalmat, így a memóriahasználat mérsékelt marad. Ha minden HTML‑szakaszt külön PDF‑oldalon szeretnél, illessz manuális oldaltöréseket a HTML‑be: + +```html +
+``` + +### **Működik .NET Core‑dal és .NET 7‑tel?** + +Igen. A könyvtár platformfüggetlen; csak győződj meg róla, hogy kompatibilis keretrendszert céloz (net6.0, net7.0, stb.) és telepítsd a megfelelő NuGet csomagot. + +### **Hogyan ágyazhatok be betűtípusokat a teljes PDF‑portabilitásért?** + +Állítsd be a `pdfRenderOptions.FontProvider`‑t, ahogy korábban mutattuk, és engedélyezd a betűtípus‑beágyazást: + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +Ez garantálja, hogy a PDF minden gépen ugyanúgy néz ki, még akkor is, ha a betűtípus nincs helyben telepítve. + +## Vizuális példa + +![save html as pdf example](example.png){alt="HTML PDF‑ként mentése példa"} + +*A képernyőkép a generált PDF‑et mutatja az Adobe Acrobat‑ban, megőrizve a félkövér/dőlt stílusokat és a sima képeket.* + +## Összegzés + +Mindent lefedtünk, ami ahhoz kell, hogy **HTML‑t PDF‑ként ments C#‑ban**. A markup betöltésétől, a renderelési beállítások konfigurálásán át a végső PDF írásáig a folyamat egyszerű és erősen testreszabható. + +Ezzel az útmutatóval **konvertálhatsz HTML‑t PDF‑re**, **generálhatsz PDF‑et HTML‑ből**, és **hozhatsz létre PDF‑et betűtípusokkal** bármilyen jelentés- vagy dokumentum‑generálási szituációban. Nyugodtan kísérletezz további opciókkal – vízjelek, titkosítás vagy egyedi oldalméretek – mert az Aspose.HTML megadja ezt a rugalmasságot. + +**Következő lépések**, amiket érdemes felfedezni: + +- Használd a `PdfSaveOptions` osztályt a PDF verzió vagy tömörítési szint beállításához. +- Kombináld több `HTMLDocument` példányt egyetlen PDF‑be több szakaszos jelentéshez. +- Integráld ezt a munkafolyamatot egy ASP.NET Core API‑ba, hogy a webszolgáltatásod kérésre PDF‑eket adjon vissza. + +Van kérdésed a speciális esetekkel kapcsolatban, vagy segítségre van szükséged a renderelési csővezeték finomhangolásához? Írj egy kommentet alább, és jó kódolást! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/hungarian/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/hungarian/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..78286c57f --- /dev/null +++ b/html/hungarian/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,232 @@ +--- +category: general +date: 2026-02-27 +description: HTML mentése ZIP-ként C# ZipArchive használatával – lépésről‑lépésre + példa egy egyedi erőforráskezelővel, valamint tippek arra, hogyan exportáljuk a + HTML-t ZIP-be és hogyan hozzunk létre ZIP-archívumot C# kóddal. +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: hu +og_description: HTML mentése ZIP-be C# ZipArchive használatával. Tanulja meg, hogyan + exportálja a HTML-t ZIP-be egy teljes példával, egyedi erőforráskezelővel és a legjobb + gyakorlatokkal. +og_title: HTML mentése ZIP-ként C#-ban – Teljes útmutató +tags: +- C# +- ZipArchive +- HTML export +title: HTML mentése ZIP-ként C#-ban – Teljes útmutató +url: /hu/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML mentése ZIP‑ként C#‑ban – Teljes útmutató + +Valaha szükséged volt **HTML mentése ZIP‑ként**, de nem tudtad, mely .NET osztályokat kellene használnod? Nem vagy egyedül – sok fejlesztő szembesül ezzel a problémával, amikor egy weboldalt szeretne a kapcsolódó erőforrásaival együtt offline használatra vagy terjesztésre csomagolni. A jó hír? A beépített `System.IO.Compression.ZipArchive` segítségével néhány sorban megoldható, és tiszta módot is biztosít az egyes erőforrások írásának vezérlésére. + +Ebben az útmutatóban egy **teljes, futtatható példán** keresztül vezetünk végig, amely pontosan megmutatja, hogyan exportálj egy HTML dokumentumot ZIP‑fájlba, egy egyedi `ResourceHandler` használatával, amely minden erőforrást az archívumba streamel. Útközben bevetünk néhány **c# ziparchive example** kódrészletet, megvitatjuk a **how to export html to zip** valós helyzetekben, és kiemeljük a finom különbségeket, amikor **create zip archive c#** programokat szeretnél robusztusan megvalósítani. + +> **Előfeltételek** – Szükséged lesz .NET 6+ (vagy .NET Core 3.1) környezetre, valamint egy hivatkozásra a könyvtárra, amely biztosítja a `HTMLDocument`, `HTMLSaveOptions` és `ResourceHandler` osztályokat. Ha az Aspose.HTML‑t vagy hasonló csomagot használsz, egyszerűen add hozzá a NuGet‑en keresztül. Más harmadik fél eszközére nincs szükség. + +--- + +## Amit ez az útmutató lefed + +- A **ZipArchive** beállítása, amely a HTML-fájlt és a kapcsolódó erőforrásokat fogadja. +- Egy **custom resource handler** (`ZipHandler`) megvalósítása, amely minden erőforrás streamet az archívumba irányít. +- **HTMLSaveOptions** használata az egységesítéshez, és a **save HTML as ZIP** tényleges végrehajtása. +- Gyakori buktatók útvonalakkal, duplikált bejegyzésekkel és nagy méretű erőforrásokkal kapcsolatban. +- Tippek a megoldás kibővítéséhez – például manifest fájl hozzáadása vagy a ZIP titkosítása. + +A végére egy önálló módszert kapsz, amelyet bármely C# projektbe beilleszthetsz, hogy **save html as zip** magabiztosan. + +## 1. lépés: A szükséges névterek hozzáadása + +Mielőtt bármilyen kód futna, győződj meg arról, hogy a fordító ismeri a tömörítési osztályokat és a használt HTML könyvtárat. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*Miért fontos ez:* A `System.IO.Compression` biztosítja a `ZipArchive`‑t, míg az `Aspose.Html` névterek a `HTMLDocument`, `HTMLSaveOptions` és a `ResourceHandler` alaposztályt teszik elérhetővé, amelyet kibővítünk. Ha másik HTML motorral dolgozol, keresd az analóg típusokat. + +## 2. lépés: Egy egyedi Resource Handler létrehozása (Elsődleges kulcsszó akcióban) + +A **saving HTML as ZIP** lényege, hogy megmondjuk a motornak, hová kerüljön minden külső erőforrás (képek, CSS, szkriptek). A `ResourceHandler` öröklésével irányítjuk a bejövő adatstreamet. + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**Kulcsfontosságú pontok** + +- `info.Uri` a relatív URL, amelyet a HTML motor írni próbál. Ennek használata bejegyzésnévként megőrzi a mappaszerkezetet a ZIP‑ben. +- `CreateEntry` automatikusan létrehozza a szükséges könyvtárakat; neked nem kell őket kezelni. +- A megnyitott stream visszaadása lehetővé teszi, hogy a motor közvetlenül streamelje az adatot – nincs szükség ideiglenes fájlokra vagy extra memória másolatokra. + +## 3. lépés: A ZipArchive inicializálása + +Most egy `ZipArchive`‑t hozunk létre **Update** módban. Ez a mód lehetővé teszi, hogy a futás közben bejegyzéseket adjunk hozzá, és akár meglévőket is felülírjunk, ha többször futtatod a kódot. + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*Pro tipp:* Használd a `FileMode.Create`‑t a korábbi fájl felülírásához, vagy válts `FileMode.OpenOrCreate`‑ra, ha egy meglévő archívumhoz szeretnél hozzáfűzni. Emellett tedd a `ZipArchive`‑t egy `using` blokkba – ez garantálja, hogy az archívum megfelelően le legyen zárva és a fájlkezelő felszabaduljon. + +## 4. lépés: A kívánt HTML dokumentum betöltése exportáláshoz + +Itt adod meg a könyvtárnak a forrás HTML fájlt. A dokumentum hivatkozhat CSS‑re, képekre vagy JavaScript fájlokra, amelyek mellette helyezkednek el. + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +Ha a HTML relatív URL‑eket tartalmaz, győződj meg arról, hogy a folyamat munkakönyvtára megegyezik az erőforrásokat tartalmazó mappával. Ellenkező esetben a motor nem fogja megtalálni őket, és a ZIP hiányozni fog ezekből a fájlokból. + +## 5. lépés: Mentési beállítások konfigurálása – A valódi “Save HTML as ZIP” pillanat + +Most összekapcsoljuk a `ZipHandler`‑t a `HTMLSaveOptions`‑szal. A `SaveFormat` `ZIP`‑ra állítása azt mondja a könyvtárnak, hogy mindent csomagoljon, míg a handlerünk határozza meg, hová kerüljön az egyes elemek. + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*Miért fontos ez:* `ResourceHandler` beállítása nélkül a könyvtár a fájlrendszerbe írna erőforrásokat, ami aláássa a **how to export html to zip** egyetlen archívumba történő célját. + +## 6. lépés: A mentési művelet végrehajtása + +Végül kérd meg a dokumentumot, hogy a most épített beállításokkal mentse el magát. A könyvtár minden külső erőforrásra meghívja a `ZipHandler.HandleResource`‑t. + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +Amikor a `zipArchive`‑re vonatkozó `using` blokk befejeződik, az archívum lezárásra kerül, és a fájl készen áll a terjesztésre. + +## Teljes működő példa (az összes lépés egyben) + +Az alábbiakban a teljes program látható, amelyet beilleszthetsz egy konzolos alkalmazásba. Bemutat egy **c# ziparchive example**‑t, amely **creates zip archive c#** stílusban működik, és teljes körű választ ad a **how to export html to zip** kérdésre. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**Várható eredmény:** A program futtatása után az `output.zip` tartalmazni fogja az `index.html`‑t (vagy a beállított nevet), valamint minden képet, stíluslapot és szkriptet, amelyet az eredeti oldal hivatkozott, megőrizve a mappaszerkezetet. Nyisd meg a ZIP‑et, csomagold ki, és duplán kattints az `index.html`‑re – az oldal pontosan úgy fog megjelenni, mint online, de most már hordozható csomagként. + +## Gyakori szélhelyzetek és a kezelésük módja + +| Helyzet | Miért fordul elő | Javasolt megoldás | +|-----------|----------------|---------------| +| **Duplikált erőforrásnevek** (pl. két kép azonos fájlnévvel különböző mappákban) | `CreateEntry` `InvalidOperationException`‑t dob, ha a pontos bejegyzésnév már létezik. | Az bejegyzést előtagként add meg a relatív útvonallal (`info.Uri` már ezt teszi), vagy manuálisan tisztítsd meg a neveket a bejegyzés létrehozása előtt. | +| **Nagy bináris erőforrások** (videók, nagy felbontású képek) | A közvetlen streamelés a ZIP‑be rendben van, de az alapértelmezett pufferméret magas memóriahasználathoz vezethet. | Írd felül a `HandleResource`‑t, hogy a visszaadott streamet egy `BufferedStream`‑be csomagolja mérsékelt puffermérettel (pl. 64 KB). | +| **Hiányzó erőforrások** | Ha a HTML hibás hivatkozást tartalmaz, a handler egy nem létező fájlra kér kérést, ami üres bejegyzéshez vezet. | Ellenőrizd a `File.Exists`‑t a bejegyzés létrehozása előtt, vagy naplózz egy figyelmeztetést, hogy tudd, mi hiányzik. | +| **Unicode fájlnevek** | Néhány régebbi ZIP eszköz helytelenül kezeli az UTF‑8 bejegyzésneveket. | Győződj meg arról, hogy .NET 6+ célplatformot használsz, amely alapértelmezés szerint UTF‑8‑at ír. Ha régi kompatibilitásra van szükség, állítsd be a `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);`. | +| **Manifest szükségessége** (a zip‑en belüli fájlok listája) | A felhasználók néha egy `manifest.json`‑t igényelnek az ellenőrzéshez. | A fő mentés után hozz létre egy új bejegyzést `"manifest.json"` néven, és írj egy JSON listát a `zipArchive.Entries`‑ből. | + +## Pro tippek a termelés‑kész **Save HTML as ZIP** megvalósításokhoz + +1. **Az eredmény validálása** – Mentés után programból nyisd meg a ZIP‑et, és ellenőrizd, hogy létezik-e az `index.html`, valamint hogy minden bejegyzés `Length` > 0. Ez időben felfedezi a csendes hibákat. +2. **Nagy erőforrások párhuzamosítása** – Ha több tucat megabájt képed van, fontold meg a `HandleResource` hívások sorba állítását egy `Task` poolban, és írd az archívumba párhuzamosan (még mindig tiszteletben tartva a `ZipArchive` egyetlen író jellegét). +3. **Ésszerű tömörítés** – A `ZipArchive` alapértelmezés szerint Deflate‑et használ. Már tömörített fájloknál (JPEG, PNG) beállíthatod a `entry.CompressionLevel = CompressionLevel.NoCompression`‑t a művelet felgyorsításához. +4. **Security** – If the ZIP + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/hungarian/net/working-with-html-documents/_index.md b/html/hungarian/net/working-with-html-documents/_index.md index 81c4e72f3..6f664b0f3 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 ZIP‑ként C#‑ban – Teljes útmutató egy egyéni erőforráskezelővel](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) + 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/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/hungarian/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..12f838bff --- /dev/null +++ b/html/hungarian/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,244 @@ +--- +category: general +date: 2026-02-27 +description: HTML mentése ZIP-ként C#‑ban egy egyedi erőforráskezelő használatával, + és ZIP-archívum létrehozása C#‑ban. Kövesd ezt a lépésről‑lépésre útmutatót, hogy + összecsomagold a HTML‑t és annak eszközeit. +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: hu +og_description: HTML mentése ZIP-ként C#-ban egy egyedi erőforráskezelővel. Tanulja + meg, hogyan hozhat létre ZIP-archívumot C#-ban, és hogyan ágyazhat be erőforrásokat + könnyedén. +og_title: HTML mentése ZIP-ként C#-ban – Teljes útmutató +tags: +- Aspose.HTML +- C# +- ZIP +title: HTML mentése ZIP-fájlba C#-ban – Teljes útmutató egyedi erőforráskezelővel +url: /hu/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +code block placeholders. Ensure we kept them. + +Also ensure we didn't translate URLs inside image alt text? We changed alt text but URL unchanged. + +Now output.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML mentése ZIP-ként C#-ban – Teljes útmutató egyedi erőforráskezelővel + +Gondolkodtál már azon, hogyan **mentheted el a HTML-t ZIP-ként** C#-ban anélkül, hogy a hajadhoz nyúlnál? Nem vagy egyedül – sok fejlesztő akad el, amikor egy HTML oldalt kell együtt szállítania képekkel, CSS‑sel vagy JavaScript‑fájlokkal. A jó hír? Az Aspose.HTML segítségével néhány egyszerű lépésben megoldható, és egy **egyedi erőforráskezelő** teszi a folyamatot fájdalommentessé. + +Ebben az útmutatóban mindent végigvázolunk, amit tudnod kell: a könyvtár telepítésétől, egy olyan kezelő írásáig, amely közvetlenül egy **ZIP archívumot hoz létre C#-ban**, egészen a végleges csomag ellenőrzéséig. A végére egy kész‑használatra kész megoldást kapsz, amelyet bármely .NET projektbe beilleszthetsz. + +![HTML mentése ZIP példaként](/images/save-html-as-zip.png "Diagram, amely a HTML-t ZIP-fájlba mentve mutatja") + +## HTML mentése ZIP‑ként – Amit ez az útmutató lefed + +Az egész folyamatot lefedjük: + +1. **Előkövetelmények** – a legszükségesebb eszközök és csomagok, amikre szükséged van. +2. **Egyedi erőforráskezelő** – miért van rá szükség, és hogyan valósítható meg. +3. **ZIP archívum létrehozása C#-ban** – a `System.IO.Compression` használatával. +4. **Aspose.HTML mentési beállítások konfigurálása** a kezelőre mutatva. +5. **A kód futtatása** és a kimenet ellenőrzése. + +Ha már jártas vagy az alap C# szintaxisban, és telepítve van a Visual Studio (vagy a VS Code), készen állsz a mélyebbre merülésre. Külső dokumentációra nincs szükség – minden itt megtalálható. + +--- + +## 1. lépés: A projekt beállítása és az Aspose.HTML telepítése + +Mielőtt kódot írnánk, győződj meg róla, hogy a projekted hivatkozhat az Aspose.HTML könyvtárra. + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*Pro tipp:* A legújabb NuGet csomag (2026 februárjától) a .NET 6+ verziókra céloz, így a modern SDK‑stílusú projektet használhatod anélkül, hogy a régi keretrendszerektől kellene tartanod. + +Miután a csomag vissza lett állítva, nyisd meg a `Program.cs`-t. Később lecseréljük az alapértelmezett tartalmat a teljes példára, de most csak tartsd nyitva a fájlt. + +--- + +## Egyedi erőforráskezelő megvalósítása + +### Miért egy egyedi erőforráskezelő? + +Amikor az Aspose.HTML egy HTML dokumentumot ZIP csomagként ment, minden külső erőforrást (képeket, betűtípusokat, szkripteket) le kell kérnie, és valahová írnia. Alapértelmezés szerint egy ideiglenes mappába írja őket a lemezen. Egy **egyedi erőforráskezelő** biztosításával pontosan megmondod a könyvtárnak, hová kerüljön az egyes erőforrások – jelen esetben közvetlenül a ZIP archívumba. Ez elkerüli a felesleges I/O‑t, rendben tartja a dolgokat, és teljes irányítást ad a névadás felett. + +### Kód: A kezelő osztály + +Hozz létre egy új osztályfájlt `MyHandler.cs` néven (vagy helyezd el a `Program.cs`-ben, ha egyetlen fájlos demót szeretnél). + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**Magyarázat:** +* A `ResourceHandler` egy absztrakt osztály az Aspose.HTML‑ből, amely lehetővé teszi az erőforrás lekérésének elfogását. +* A `ZipArchiveEntry.Open()`‑ból kapott `Stream` visszaadásával egy írható csövet adunk a könyvtárnak közvetlenül a ZIP fájlba. Nincsenek ideiglenes fájlok, nincs extra takarítás. + +--- + +## ZIP archívum létrehozása C#-ban + +Miután a kezelő készen áll, szükségünk van egy helyre, ahová írhat. A .NET `ZipArchive` osztály végzi a nehéz munkát. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### Mit csinál ez + +1. **Létrehoz egy memóriában lévő HTML dokumentumot** `logo.png` hivatkozással. +2. **Megnyit egy `FileStream`‑et**, amely `output.zip`‑ként fog működni. +3. **A `ZipArchive`‑t** a `MyHandler` statikus mezőjéhez rendeli. +4. **Beállítja a `HTMLSaveOptions`‑t** `SaveFormat.ZIP` értékre, és csatolja a saját kezelőnket. +5. **Meghívja a `document.Save`‑t** – az Aspose.HTML feldolgozza a HTML‑t, lekéri a `logo.png`‑t, és a `MyHandler`‑en keresztül áramolja azt az archívumba. + +Mivel a kezelő a erőforrás URI‑t (`logo.png`) használja bejegyzésnévként, a keletkezett ZIP pontosan ezt a fájlt tartalmazza, megőrizve az eredeti relatív útvonalat. + +--- + +## Mentési beállítások konfigurálása a ZIP csomaghoz + +A `HTMLSaveOptions` objektumban adod meg az Aspose.HTML‑nek, **hogyan** csomagolja a kimenetet. A `ResourceHandler` mellett néhány hasznos tulajdonságot is finomhangolhatsz: + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*Miért fontos az `EnableCompression`?* +Ha nagy képekkel dolgozol, a tömörítés engedélyezése akár 70 %-kal is csökkentheti a végső archívum méretét. Azonban már tömörített PNG‑eknél a nyereség mérsékelt, ezért kikapcsolhatod a mentési művelet felgyorsítása érdekében. + +--- + +## A kód futtatása és a kimenet ellenőrzése + +Fordítsd le és futtasd a programot: + +```bash +dotnet run +``` + +A konzolon meg kell jelennie a sikerüzenetnek. Navigálj a kiírt könyvtárba, és nyisd meg az `output.zip`-et. Benne megtalálod: + +- `index.html` – a mentett HTML fájl. +- `logo.png` – a jelölőnyelvben hivatkozott kép. + +Nyisd meg az `index.html`-t közvetlenül a ZIP‑ből (a legtöbb operációs rendszer fájlböngészője lehetővé teszi az előnézetet), és a címsor és a kép pontosan úgy jelenik meg, mint az eredeti szövegben. + +**Figyelembe veendő szélhelyzetek** + +| Szituáció | Mit kell tenni | +|-----------|----------------| +| A HTML **távoli URL-re** hivatkozik (pl. `https://example.com/style.css`) | A kezelő továbbra is megkapja a `ResourceInfo.Uri`‑t. Győződj meg róla, hogy a környezet eléri az URL‑t, vagy töltsd le előre az erőforrást, és módosítsd a HTML‑t helyi útvonalra. | +| **Mappaszerkezetre** van szükség a ZIP‑ben (pl. `images/logo.png`) | Módosítsd a `HandleResource`‑t, hogy előtagként mappanevet adjon: `var entry = ZipArchive.CreateEntry($"assets/{info.Uri}");` | +| Az erőforrás **nem töltődik be** (404) | A kezelő meghívásra kerül, de a stream nulla bájtot kap. Tedd a mentési hívást `try/catch`‑be, és vizsgáld meg az `info.Status`‑t, ha egyedi hibakezelésre van szükség. | + +--- + +## Összefoglalás: HTML mentése ZIP‑ként egy kompakt folyamatban + +- **Elsődleges cél:** Egy HTML oldal és minden külső erőforrás egyetlen ZIP fájlba csomagolása C# használatával. +- **Kulcseszközök:** Aspose.HTML (`HTMLDocument`, `HTMLSaveOptions`), `System.IO.Compression.ZipArchive`, és egy **egyedi erőforráskezelő**. +- **Eredmény:** Egy hordozható `output.zip`, amely szállítható, tárolható vagy hálózaton keresztül küldhető, és később kicsomagolható anélkül, hogy elveszítené az erőforrás hivatkozásokat. + +--- + +## Mi a következő? A munkafolyamat kiterjesztése + +Miután elsajátítottad a **HTML ZIP‑ként mentését**, érdemes lehet kapcsolódó forgatókönyveket is felfedezni: + +- **HTML mentése PDF‑ként** – cseréld le a `SaveFormat.ZIP`‑t `SaveFormat.PDF`‑re, és állítsd be ennek megfelelően a beállításokat. +- **Betűtípusok beágyazása** – használj `@font-face`‑t a HTML‑ben, és hagyd, hogy a kezelő elkapja a betűtípus fájlokat. +- **Kötegelt feldolgozás** – iterálj egy HTML‑sztringek gyűjteményén, ugyanazt a `ZipArchive`‑t újrahasználva több dokumentumot tartalmazó csomag létrehozásához. + +Mindegyik ugyanazon **egyedi erőforráskezelő** mintára és a **ZIP archívum létrehozása C#‑ban** technikára épül, amelyet most megtanultál. + +--- + +### Záró gondolatok + +Most láttad, milyen egyszerű a **HTML ZIP‑ként mentése** C#‑ban, ha az Aspose.HTML-t használod + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/indonesian/net/generate-jpg-and-png-images/_index.md b/html/indonesian/net/generate-jpg-and-png-images/_index.md index 4e885ce32..7c3fac6dc 100644 --- a/html/indonesian/net/generate-jpg-and-png-images/_index.md +++ b/html/indonesian/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Pelajari cara menggunakan Aspose.HTML untuk .NET guna memanipulasi dokumen HTML, Pelajari cara mengaktifkan antialiasing untuk meningkatkan kualitas gambar PNG atau JPG saat mengonversi dokumen DOCX menggunakan Aspose.HTML. ### [Konversi DOCX ke PNG – Membuat Arsip ZIP dengan C# Tutorial](./convert-docx-to-png-create-zip-archive-c-tutorial/) Pelajari cara mengonversi file DOCX menjadi PNG dan mengemasnya ke dalam arsip ZIP menggunakan C# dengan Aspose.HTML. +### [Buat PNG dari HTML di C# – Panduan Langkah-demi-Langkah](./create-png-from-html-in-c-step-by-step-guide/) +Pelajari cara mengonversi HTML menjadi gambar PNG menggunakan C# dengan Aspose.HTML dalam panduan langkah demi langkah yang mudah diikuti. ## Kesimpulan diff --git a/html/indonesian/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/indonesian/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..9ad4c00b8 --- /dev/null +++ b/html/indonesian/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-02-27 +description: Buat PNG dari HTML dengan cepat menggunakan Aspose.HTML di C#. Pelajari + cara merender HTML ke gambar, mengatur lebar dan tinggi gambar, serta mengonversi + HTML ke PNG dalam hitungan menit. +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: id +og_description: Buat PNG dari HTML dengan Aspose.HTML. Panduan ini menunjukkan cara + merender HTML menjadi gambar, mengatur lebar dan tinggi gambar, serta mengonversi + HTML ke PNG secara efisien. +og_title: Buat PNG dari HTML di C# – Tutorial Lengkap +tags: +- Aspose.HTML +- C# +- Image Rendering +title: Buat PNG dari HTML di C# – Panduan Langkah demi Langkah +url: /id/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Buat PNG dari HTML di C# – Tutorial Lengkap + +Pernah membutuhkan untuk **create PNG from HTML** tetapi tidak yakin perpustakaan mana yang akan memberikan hasil pixel‑perfect? Anda bukan satu-satunya—banyak pengembang mengalami hal yang sama ketika mencoba mengubah halaman web menjadi gambar statis untuk email, laporan, atau thumbnail. + +Berita baiknya? Dengan Aspose.HTML Anda dapat **render HTML to image**, mengontrol dimensi yang tepat, dan **save HTML as PNG** dengan hanya beberapa baris C#. Dalam tutorial ini kami akan membahas seluruh proses, mulai dari memuat file HTML Anda hingga menyesuaikan hinting teks dan akhirnya menulis PNG ke disk. Pada akhir tutorial Anda akan tahu cara **set image width height** secara programatis dan memiliki potongan kode yang dapat digunakan kembali dalam proyek .NET apa pun. + +## Apa yang Akan Anda Pelajari + +- Cara memuat dokumen HTML menggunakan Aspose.HTML. +- Perbedaan antara `ImageRenderingOptions` dan `TextOptions` serta mengapa keduanya penting. +- Cara **convert HTML to PNG** sambil mempertahankan font, antialiasing, dan gaya underline. +- Tips untuk memecahkan masalah umum seperti font yang hilang atau ukuran gambar yang tidak terduga. +- Contoh kode lengkap yang siap‑jalan yang dapat Anda copy‑paste ke Visual Studio. + +> **Prasyarat:** .NET 6+ (atau .NET Framework 4.6.2+), Aspose.HTML untuk .NET yang diinstal melalui NuGet, dan pemahaman dasar tentang C#. Tidak diperlukan alat eksternal lainnya. + +--- + +## Langkah 1: Muat Dokumen HTML – Memulai Pembuatan PNG + +Pertama, kita memerlukan objek `HTMLDocument` yang menunjuk ke file sumber. Ini adalah fondasi untuk setiap operasi **create PNG from HTML**. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*Mengapa langkah ini penting:* Kelas `HTMLDocument` mem‑parsing markup, menyelesaikan CSS, dan membangun DOM yang kemudian dapat digambar oleh mesin rendering ke bitmap. Jika path salah, langkah **render html to image** berikutnya akan melempar `FileNotFoundException`. + +--- + +## Langkah 2: Atur Lebar Tinggi Gambar – Mengontrol Ukuran Output + +Saat Anda **render HTML to image**, Anda sering membutuhkan resolusi tertentu—misalnya thumbnail yang harus tepat 1200 × 800 piksel. Di sinilah `ImageRenderingOptions` berperan. + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*Pro tip:* Jika Anda mengabaikan `Width` dan `Height`, Aspose.HTML akan menggunakan ukuran alami halaman, yang mungkin terlalu besar untuk disisipkan dalam email. + +--- + +## Langkah 3: Penyempurnaan Rendering Teks – Membuat Teks Tajam + +Teks di Linux sering terlihat buram kecuali Anda mengaktifkan hinting. Objek `TextOptions` memungkinkan Anda mengontrol hal itu, memastikan PNG akhir terlihat tajam di setiap platform. + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*Mengapa hinting?* Hinting menyesuaikan bentuk setiap glyph agar sejajar dengan grid piksel, yang penting ketika Anda **convert HTML to PNG** untuk tampilan beresolusi rendah. + +--- + +## Langkah 4: Gabungkan Opsi dan Tambahkan Styling – Konfigurasi Render Lengkap + +Sekarang kami menggabungkan pengaturan gambar dan teks, serta menunjukkan cara menerapkan gaya font global, seperti menggarisbawahi setiap teks. Langkah ini adalah tempat Anda benar‑benar **save HTML as PNG** dengan styling khusus. + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*Catatan:* `WebFontStyle` mendukung banyak flag (Bold, Italic, dll.). Anda dapat menggabungkannya menggunakan operasi OR bitwise jika membutuhkan beberapa gaya. + +--- + +## Langkah 5: Render dan Simpan – Saat Anda **Create PNG from HTML** + +Dengan semua konfigurasi selesai, panggilan akhir adalah satu baris kode yang melukis DOM ke bitmap dan menuliskannya ke disk. + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +Setelah baris ini dijalankan, Anda akan menemukan `output.png` di folder yang ditentukan, tepat 1200 × 800 piksel, dengan grafik antialiasing dan teks yang di‑hint. + +--- + +## Contoh Kerja Lengkap – Tempel, Jalankan, Verifikasi + +Berikut adalah program lengkap yang dapat Anda kompilasi sebagai aplikasi console. Program ini mencakup semua pernyataan using, penanganan error, dan komentar yang Anda perlukan. + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**Hasil yang diharapkan:** Sebuah file bernama `output.png` muncul di samping executable Anda, menampilkan versi render dari `sample.html`. Buka dengan penampil gambar apa pun untuk mengonfirmasi dimensi dan styling. + +--- + +## Kesulitan Umum & Cara Menghindarinya + +| Masalah | Gejala | Solusi | +|-------|----------|-----| +| Font hilang | Teks muncul sebagai sans‑serif generik | Instal font yang diperlukan pada mesin host atau sematkan web font dalam HTML. | +| Dimensi salah | PNG lebih besar atau lebih kecil dari yang diharapkan | Periksa kembali nilai `Width` dan `Height` di `ImageRenderingOptions`. | +| Tepi buram | Tidak ada antialiasing | Pastikan `UseAntialiasing = true`. | +| Artefak rendering di Linux | Teks terlihat buram | Set `UseHinting = true` di `TextOptions`. | + +*Pro tip:* Saat Anda **render HTML to image** pada server tanpa UI (headless), pastikan server memiliki pustaka sistem yang diperlukan (mis., `libgdiplus` di Linux) jika tidak Aspose.HTML dapat beralih ke renderer perangkat lunak dengan kualitas yang lebih rendah. + +--- + +## Memperluas Solusi – Langkah Selanjutnya + +- **Batch conversion:** Loop melalui daftar file HTML dan panggil logika rendering yang sama untuk menghasilkan galeri PNG. +- **Different formats:** Ganti `output.png` dengan `output.jpg` atau `output.bmp` dengan mengubah ekstensi file; Aspose.HTML secara otomatis memilih encoder yang tepat. +- **Dynamic sizing:** Hitung `Width` dan `Height` berdasarkan meta tag viewport HTML untuk desain responsif. +- **Watermarking:** Gunakan `Aspose.Html.Drawing` untuk menambahkan logo sebelum menyimpan. + +Ide-ide ini memungkinkan Anda beralih dari potongan kode **create PNG from HTML** sederhana ke layanan generasi gambar yang lengkap. + +--- + +## Kesimpulan + +Kami telah membahas semua yang Anda perlukan untuk **create PNG from HTML** menggunakan Aspose.HTML untuk .NET: memuat dokumen, mengonfigurasi **set image width height**, menyempurnakan teks dengan hinting, dan akhirnya **saving HTML as PNG**. Contoh kode lengkap siap disisipkan ke proyek Anda, dan tips di atas seharusnya melindungi Anda dari masalah umum. + +Sekarang Anda dapat **render HTML to image** dengan andal, mengapa tidak bereksperimen dengan gaya berbeda, pemrosesan batch, atau bahkan mengonversi ke PDF dalam pipeline yang sama? Langit adalah batasnya, dan kode sudah ada di tangan Anda. + +Selamat coding, dan silakan bagikan hasil Anda atau ajukan pertanyaan di kolom komentar! + +![Create PNG from HTML example](/images/create-png-from-html.png "Create PNG from HTML using Aspose.HTML") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/indonesian/net/html-extensions-and-conversions/_index.md b/html/indonesian/net/html-extensions-and-conversions/_index.md index 6ac5368ff..5229a3a3b 100644 --- a/html/indonesian/net/html-extensions-and-conversions/_index.md +++ b/html/indonesian/net/html-extensions-and-conversions/_index.md @@ -41,6 +41,8 @@ Aspose.HTML untuk .NET bukan sekadar pustaka; pustaka ini merupakan pengubah per Ubah HTML ke PDF dengan mudah menggunakan Aspose.HTML untuk .NET. Ikuti panduan langkah demi langkah kami dan manfaatkan kekuatan konversi HTML ke PDF. ### [Buat PDF dari HTML – Panduan Langkah‑demi‑Langkah C#](./create-pdf-from-html-c-step-by-step-guide/) Pelajari cara membuat PDF dari HTML menggunakan C# dengan panduan langkah demi langkah menggunakan Aspose.HTML. +### [Buat PDF dari HTML – Panduan Langkah‑demi‑Langkah untuk Pengembang](./create-pdf-from-html-step-by-step-guide-for-developers/) +Panduan lengkap untuk membuat PDF dari HTML menggunakan Aspose.HTML di .NET, cocok untuk pengembang dengan contoh kode dan penjelasan detail. ### [Konversi EPUB ke Gambar dalam .NET dengan Aspose.HTML](./convert-epub-to-image/) Pelajari cara mengonversi EPUB ke gambar menggunakan Aspose.HTML untuk .NET. Tutorial langkah demi langkah dengan contoh kode dan opsi yang dapat disesuaikan. ### [Konversi EPUB ke PDF dalam .NET dengan Aspose.HTML](./convert-epub-to-pdf/) @@ -73,6 +75,10 @@ Pelajari cara membuat dokumen HTML dengan teks berformat dan mengekspornya ke PD Pelajari cara menyimpan file HTML sebagai arsip ZIP menggunakan Aspose.HTML untuk .NET dengan contoh kode C# lengkap. ### [Simpan HTML ke ZIP di C# – Contoh In‑Memory Lengkap](./save-html-to-zip-in-c-complete-in-memory-example/) Pelajari cara menyimpan file HTML ke dalam arsip ZIP secara langsung di memori menggunakan C# dan Aspose.HTML. +### [Simpan HTML sebagai ZIP di C# – Panduan Lengkap](./save-html-as-zip-in-c-complete-guide/) +Pelajari cara menyimpan HTML sebagai arsip ZIP di C# dengan panduan lengkap menggunakan Aspose.HTML. +### [Simpan HTML sebagai PDF di C# – Panduan Lengkap dengan Font](./save-html-as-pdf-in-c-complete-guide-with-fonts/) +Pelajari cara menyimpan HTML menjadi PDF menggunakan C# dengan dukungan font lengkap dalam panduan langkah demi langkah. ## Kesimpulan diff --git a/html/indonesian/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/indonesian/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..3096fede0 --- /dev/null +++ b/html/indonesian/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,206 @@ +--- +category: general +date: 2026-02-27 +description: Buat PDF dari HTML dengan cepat menggunakan contoh lengkap C#. Pelajari + cara mengonversi HTML ke PDF, menyimpan HTML sebagai PDF, dan mengekspor HTML ke + PDF dengan pengaturan praktik terbaik. +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: id +og_description: Buat PDF dari HTML di C# dengan contoh siap jalankan. Panduan ini + memandu Anda melalui cara mengonversi HTML ke PDF, menyimpan HTML sebagai PDF, dan + mengekspor HTML ke PDF. +og_title: Buat PDF dari HTML – Tutorial C# Lengkap +tags: +- C# +- PDF +- HTML +title: Buat PDF dari HTML – Panduan Langkah-demi-Langkah untuk Pengembang +url: /id/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Membuat PDF dari HTML – Tutorial C# Lengkap + +Pernah perlu **membuat PDF dari HTML** tetapi tidak yakin panggilan API mana yang harus dipakai? Anda tidak sendirian. Baik Anda sedang membangun dasbor pelaporan, generator faktur, atau pengekspor situs statis, mengubah HTML menjadi PDF adalah kebutuhan yang sering muncul untuk aplikasi berbasis web modern. + +Dalam tutorial ini kami akan menelusuri **contoh C# lengkap yang dapat dijalankan** yang menunjukkan cara **mengonversi HTML ke PDF**, mengonfigurasi opsi rendering untuk hasil yang tajam, dan akhirnya **menyimpan HTML sebagai PDF** ke disk. Pada akhir tutorial Anda akan memiliki pola produksi‑siap untuk **mengekspor HTML ke PDF** yang dapat Anda sisipkan ke proyek .NET mana pun. + +## Apa yang Akan Anda Pelajari + +- Cara memuat file HTML lokal dengan `HTMLDocument`. +- Opsi rendering mana yang meningkatkan ketebalan font, kelancaran gambar, dan hinting teks. +- Panggilan tepat untuk **mengekspor HTML ke PDF** dengan satu metode `Save`. +- Tips menangani dokumen besar, men-debug jebakan umum, dan memverifikasi hasil. +- Contoh kode lengkap yang dapat Anda salin‑tempel dan jalankan hari ini. + +### Prasyarat + +- .NET 6+ (atau .NET Framework 4.7+). API yang kami gunakan berfungsi di keduanya. +- Referensi ke `HtmlToPdfLib` hipotetis (ganti dengan nama pustaka Anda yang sebenarnya). +- File `input.html` yang ditempatkan di folder yang Anda kontrol (kami sebut `YOUR_DIRECTORY`). + +Jika Anda sudah memiliki semua itu, mari kita mulai—tidak ada penyiapan tambahan yang diperlukan. + +## Langkah 1: Muat Dokumen HTML untuk **Membuat PDF dari HTML** + +Hal pertama yang Anda perlukan adalah instance `HTMLDocument` yang menunjuk ke file sumber. Anggap saja ini seperti membuka buku catatan sebelum mulai menulis—tanpa dokumen, tidak ada yang dapat dirender. + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **Mengapa ini penting:** Memuat file HTML lebih awal memungkinkan pustaka untuk mengurai DOM, menyelesaikan CSS, dan memuat gambar sebelumnya. Melewatkan langkah ini atau memberi HTML yang tidak valid sering menghasilkan halaman kosong selama **html to pdf conversion**. + +## Langkah 2: Konfigurasikan Opsi Rendering untuk **Konversi HTML ke PDF** + +Opsi rendering adalah bumbu rahasia yang mengubah PDF biasa menjadi dokumen yang tampak profesional. Di sini kami mengaktifkan font tebal, antialiasing untuk gambar, dan hinting untuk teks—fitur yang sering diabaikan oleh pengembang tetapi secara dramatis meningkatkan fidelitas visual. + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **Tip pro:** Jika Anda menggunakan font khusus merek, tetapkan `FontFamily` di dalam `pdfOptions` juga. Ini mencegah fallback ke font generik selama **convert HTML to PDF**. + +## Langkah 3: Simpan File dan **Ekspor HTML ke PDF** + +Setelah dokumen dimuat dan opsi disetel, aksi akhir cukup satu baris yang menulis PDF ke disk. Metode `Save` secara internal melakukan **html to pdf conversion**, menerapkan semua penyesuaian rendering yang telah kita definisikan. + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **Apa yang akan Anda lihat:** Membuka `output.pdf` di penampil apa pun akan menampilkan tata letak HTML asli, dengan judul tebal, gambar halus, dan teks tajam. Jika Anda melihat gaya yang hilang, periksa kembali bahwa file CSS Anda dapat diakses relatif terhadap `input.html`. + +![create pdf from html example](/images/create-pdf-from-html.png "Screenshot of the generated PDF – create pdf from html") + +*Screenshot di atas (teks alternatif: “create pdf from html example”) menampilkan PDF yang dirender dan mempertahankan gaya HTML asli.* + +## Kesulitan Umum Saat Anda **Mengonversi HTML ke PDF** + +Meskipun alurnya sederhana, pengembang sering menemui hambatan. Berikut tiga masalah paling sering dan cara menghindarinya. + +### 1. Sumber Daya Hilang (Gambar, CSS, Font) + +Jika HTML Anda merujuk aset eksternal dengan jalur relatif, konverter mungkin tidak dapat menemukannya. Selalu gunakan jalur absolut atau tetapkan URL dasar: + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. Dokumen Besar Memicu Timeout + +Saat menangani laporan multi‑halaman, tingkatkan pengaturan timeout pustaka: + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. Substitusi Font Menyebabkan Tampilan Tak Terduga + +Tentukan keluarga font yang tepat yang Anda butuhkan: + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +Menangani hal‑hal ini sejak awal menghemat Anda dari sesi debugging yang menyebalkan selama operasi **save HTML as PDF**. + +## Lanjutan: Menambahkan Halaman Sampul Sebelum Anda **Mengekspor HTML ke PDF** + +Kadang‑kadang Anda memerlukan sampul khusus—misalnya halaman judul dengan logo. Anda dapat menambahkan potongan HTML sederhana sebelum dokumen utama: + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **Mengapa melakukan ini:** Menambahkan sampul langsung dalam HTML menjaga pipeline pembuatan PDF tetap sederhana, menghindari alat pasca‑proses seperti iText atau PdfSharp. + +## Memverifikasi Output Secara Programatis + +Jika Anda perlu memastikan PDF dihasilkan dengan benar (misalnya, dalam pipeline CI), Anda dapat memeriksa ukuran file atau jumlah halaman: + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +Jumlah halaman yang tidak nol mengonfirmasi bahwa langkah **convert HTML to PDF** berhasil. + +## Ringkasan & Langkah Selanjutnya + +Kami baru saja menelusuri **contoh lengkap end‑to‑end** tentang cara **membuat PDF dari HTML** di C#. Alurnya: + +1. Muat HTML sumber (`HTMLDocument`). +2. Sesuaikan rendering dengan `PdfRenderingOptions`. +3. Panggil `Save` untuk **mengekspor HTML ke PDF**. + +Dari sini Anda dapat mengeksplorasi: + +- **Pemrosesan batch**: Loop melalui folder berisi file HTML dan hasilkan PDF secara massal. +- **HTML dinamis**: Gunakan mesin tampilan Razor untuk menghasilkan HTML secara dinamis sebelum konversi. +- **Keamanan**: Isolasi proses konversi jika Anda menerima HTML dari pengguna (mencegah injeksi skrip). + +Silakan bereksperimen dengan opsi berbeda—mungkin beralih ke kepatuhan `PdfA` untuk keperluan arsip, atau menyematkan JavaScript untuk PDF interaktif. Pola inti tetap sama, dan kini Anda memiliki fondasi andal untuk setiap kebutuhan **save HTML as PDF**. + +--- + +*Selamat coding! Jika Anda menemukan kejanggalan, tinggalkan komentar di bawah atau periksa halaman isu GitHub pustaka tersebut. Komunitas sangat membantu dalam berbagi trik yang membuat **html to pdf conversion** semakin mulus.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/indonesian/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/indonesian/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..60637fa4f --- /dev/null +++ b/html/indonesian/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,290 @@ +--- +category: general +date: 2026-02-27 +description: Simpan HTML sebagai PDF di C# dengan cepat menggunakan Aspose.HTML. Pelajari + cara mengonversi HTML ke PDF, menghasilkan PDF dari HTML dengan font khusus dan + gaya dalam beberapa langkah saja. +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: id +og_description: Simpan HTML sebagai PDF di C# dengan cepat menggunakan Aspose.HTML. + Tutorial ini menunjukkan cara mengonversi HTML ke PDF, menghasilkan PDF dari HTML, + dan menerapkan font khusus. +og_title: Simpan HTML sebagai PDF di C# – Panduan Lengkap dengan Font +tags: +- csharp +- pdf +- html +title: Simpan HTML sebagai PDF di C# – Panduan Lengkap dengan Font +url: /id/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +_0}} etc. + +We need to translate headings, bullet points, paragraphs, etc. + +Let's proceed. + +Start with shortcodes unchanged. + +Then heading "# Save HTML as PDF in C# – Complete Guide with Fonts" translate to Indonesian: "# Simpan HTML sebagai PDF di C# – Panduan Lengkap dengan Font". Keep same heading level. + +Proceed. + +I'll produce final content. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Simpan HTML sebagai PDF di C# – Panduan Lengkap dengan Font + +Pernah perlu **menyimpan HTML sebagai PDF** dari aplikasi C# tetapi tidak yakin library mana yang harus dipilih? Anda tidak sendirian. Banyak pengembang mengalami kendala ini ketika ingin mengirim faktur, laporan, atau kwitansi yang dapat dicetak langsung dari konten web. + +Kabar baiknya? Dengan Aspose.HTML Anda dapat **mengonversi HTML ke PDF**, **menghasilkan PDF dari HTML**, dan bahkan **membuat PDF dengan font** dalam beberapa baris kode. Pada tutorial ini kami akan membahas seluruh proses, menjelaskan mengapa setiap pengaturan penting, dan memberikan contoh yang siap dijalankan. + +## Apa yang Akan Anda Pelajari + +- Cara memuat file HTML lokal atau remote di C# +- Opsi rendering mana yang memberikan font tebal/miring, antialiasing, dan text hinting +- Cara menyimpan hasilnya sebagai file PDF di disk +- Tips menangani font khusus dan jebakan umum + +Tidak diperlukan pengalaman sebelumnya dengan Aspose.HTML—hanya lingkungan pengembangan .NET (Visual Studio 2022 atau lebih baru) dan paket NuGet Aspose.HTML untuk .NET. + +## Prasyarat + +| Persyaratan | Mengapa penting | +|-------------|----------------| +| .NET 6.0 atau lebih baru | Menyediakan runtime untuk Aspose.HTML | +| Aspose.HTML untuk .NET (NuGet) | Perpustakaan yang melakukan pekerjaan berat | +| File HTML contoh (`sample.html`) | Konten sumber yang akan diubah | +| Pengetahuan dasar C# | Untuk memahami potongan kode | + +Jika Anda sudah memiliki semua itu, mari kita mulai. + +## Langkah 1: Instal Aspose.HTML via NuGet + +Buka proyek Anda di Visual Studio, klik kanan pada node **Dependencies**, dan pilih **Manage NuGet Packages**. Cari `Aspose.HTML` dan tekan **Install**. + +```powershell +dotnet add package Aspose.HTML +``` + +> **Pro tip:** Gunakan versi stabil terbaru (per 2026‑02‑27 adalah 23.11) untuk mendapatkan perbaikan rendering terbaru. + +## Langkah 2: Muat Dokumen HTML Sumber + +Hal pertama yang kita perlukan adalah objek `HTMLDocument` yang menunjuk ke file kita. Kelas ini mem-parsing markup, menyelesaikan CSS, dan menyiapkan semuanya untuk rendering. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Mengapa langkah ini?** +> Memuat HTML ke dalam `HTMLDocument` memisahkan tahap parsing dari tahap rendering, yang berarti Anda dapat memeriksa DOM atau melakukan modifikasi pada runtime sebelum benar‑benarnya membuat PDF. + +## Langkah 3: Konfigurasi Opsi Rendering PDF + +Aspose.HTML memberi Anda kontrol detail tentang tampilan PDF akhir. Pada contoh ini kami akan mengaktifkan gaya font tebal + miring, antialiasing untuk grafik yang lebih halus, dan text hinting untuk output low‑dpi yang lebih tajam. + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### Mengapa Pengaturan Ini? + +- **`FontStyle`** – Menggabungkan tag `` atau `` apa pun dengan font dasar, memastikan PDF menghormati gaya asli. +- **`UseAntialiasing`** – Mengurangi tepi bergerigi pada diagram, ikon, atau konten raster apa pun. +- **`UseHinting`** – Menyelaraskan outline glyph ke grid piksel, yang sangat membantu ketika PDF akan dilihat pada perangkat beresolusi rendah. + +Jika Anda memerlukan font khusus (misalnya font merek perusahaan), letakkan file `.ttf` ke dalam folder dan atur `pdfRenderOptions.FontProvider` sesuai. Itu topik tersendiri, tetapi idenya dasar adalah: + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## Langkah 4: Render Dokumen HTML ke PDF + +Sekarang kami menggabungkan dokumen dan opsi, lalu memberi tahu Aspose.HTML untuk menulis file output. + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +Setelah baris ini dijalankan, Anda akan menemukan `output.pdf` di samping executable Anda. Buka file tersebut—Anda seharusnya melihat HTML asli yang dirender dengan gaya tebal/miring, grafik halus, dan teks tajam. + +> **Hasil yang Diharapkan:** +> PDF yang mencerminkan tata letak `sample.html`, dengan semua heading dalam tebal, teks yang ditekankan dalam miring, dan gambar yang tertanam dirender tanpa tepi bergerigi. + +## Langkah 5: Verifikasi dan Penyesuaian (Opsional) + +### Skrip verifikasi cepat + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +Jika PDF terlihat tidak tepat, pertimbangkan penyesuaian umum berikut: + +| Masalah | Penyebab kemungkinan | Solusi | +|-------|--------------|-----| +| Font hilang | Font tidak ter-embed atau tidak ditemukan | Gunakan `FontProvider.AddFont` dan pastikan file font dapat diakses | +| Gambar terlihat buram | Antialiasing dinonaktifkan | Atur `UseAntialiasing = true` | +| Teks terlalu tipis di layar | Hinting dinonaktifkan | Aktifkan `UseHinting = true` | +| Pergeseran tata letak pada pemisahan halaman | Aturan CSS `page-break` diabaikan | Tambahkan `page-break-before/after` secara eksplisit di HTML/CSS Anda | + +## Contoh Lengkap yang Berfungsi + +Berikut adalah program lengkap yang dapat Anda salin‑tempel ke aplikasi console baru. Termasuk semua directive `using`, penanganan error, dan komentar untuk kejelasan. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +Jalankan proyek (`dotnet run`), dan Anda akan melihat pesan sukses diikuti oleh `output.pdf` yang baru dibuat. + +## Pertanyaan Umum & Kasus Khusus + +### Bisakah saya **mengonversi HTML ke PDF** dari URL alih‑alih file lokal? + +Tentu saja. Ganti saja path file dengan string URL: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +Aspose.HTML akan mengunduh halaman, menyelesaikan sumber eksternal, dan merendernya. + +### Bagaimana dengan **file HTML besar** atau **banyak halaman**? + +Aspose.HTML melakukan streaming konten, sehingga penggunaan memori tetap wajar. Jika Anda menginginkan setiap bagian HTML pada halaman PDF terpisah, sisipkan pemisah halaman manual di HTML: + +```html +
+``` + +### Apakah ini bekerja dengan **.NET Core** dan **.NET 7**? + +Ya. Perpustakaan ini lintas‑platform; pastikan Anda menargetkan framework yang kompatibel (net6.0, net7.0, dll.) dan menginstal paket NuGet yang sesuai. + +### Bagaimana cara **menyematkan font** untuk portabilitas PDF penuh? + +Atur `pdfRenderOptions.FontProvider` seperti yang ditunjukkan sebelumnya, dan juga aktifkan penyematan font: + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +Ini menjamin PDF terlihat sama di mesin mana pun, bahkan jika font tidak terpasang secara lokal. + +## Contoh Visual + +![contoh menyimpan html sebagai pdf](example.png){alt="contoh menyimpan html sebagai pdf"} + +*Tangkap layar menunjukkan PDF yang dihasilkan dibuka di Adobe Acrobat, mempertahankan gaya tebal/miring dan gambar yang halus.* + +## Kesimpulan + +Kami telah membahas semua yang Anda perlukan untuk **menyimpan HTML sebagai PDF** menggunakan C#. Dari memuat markup, mengonfigurasi opsi rendering, hingga menulis PDF akhir, prosesnya sederhana dan sangat dapat disesuaikan. + +Dengan mengikuti panduan ini Anda juga dapat **mengonversi HTML ke PDF**, **menghasilkan PDF dari HTML**, dan **membuat PDF dengan font** untuk skenario pelaporan atau pembuatan dokumen apa pun. Jangan ragu bereksperimen dengan opsi tambahan—watermark, enkripsi, atau ukuran halaman khusus—karena Aspose.HTML memberi Anda fleksibilitas tersebut. + +**Langkah selanjutnya** yang dapat Anda jelajahi: + +- Gunakan kelas `PdfSaveOptions` untuk mengatur versi PDF atau tingkat kompresi. +- Gabungkan beberapa instance `HTMLDocument` menjadi satu PDF untuk laporan multi‑bagian. +- Integrasikan alur kerja ini ke dalam API ASP.NET Core sehingga layanan web Anda dapat mengembalikan PDF sesuai permintaan. + +Punya pertanyaan tentang kasus khusus atau butuh bantuan menyesuaikan pipeline rendering? Tinggalkan komentar di bawah, dan selamat coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/indonesian/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/indonesian/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..235a94171 --- /dev/null +++ b/html/indonesian/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-02-27 +description: Simpan HTML sebagai ZIP menggunakan C# ZipArchive – contoh langkah demi + langkah dengan penangan sumber daya khusus, plus tips tentang cara mengekspor HTML + ke ZIP dan membuat kode C# untuk arsip zip. +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: id +og_description: Simpan HTML sebagai ZIP menggunakan C# ZipArchive. Pelajari cara mengekspor + HTML ke ZIP dengan contoh lengkap, penangan sumber daya khusus, dan praktik terbaik. +og_title: Simpan HTML sebagai ZIP di C# – Panduan Lengkap +tags: +- C# +- ZipArchive +- HTML export +title: Simpan HTML sebagai ZIP di C# – Panduan Lengkap +url: /id/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +formatting. + +Let's craft final answer.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Simpan HTML sebagai ZIP di C# – Panduan Lengkap + +Pernah membutuhkan untuk **save HTML as ZIP** tetapi tidak yakin kelas .NET mana yang harus digunakan? Anda bukan satu-satunya—banyak pengembang mengalami kendala ini ketika mereka ingin menggabungkan halaman web beserta asetnya untuk penggunaan offline atau distribusi. Kabar baik? Dengan `System.IO.Compression.ZipArchive` bawaan, Anda dapat melakukannya dalam beberapa baris kode, dan Anda juga akan mendapatkan cara yang bersih untuk mengontrol bagaimana setiap sumber daya ditulis. + +Dalam tutorial ini kami akan membahas **complete, runnable example** yang menunjukkan secara tepat cara mengekspor dokumen HTML ke dalam file ZIP, menggunakan `ResourceHandler` khusus untuk men-stream setiap aset ke dalam arsip. Sepanjang jalan kami akan menyelipkan beberapa potongan **c# ziparchive example**, membahas **how to export html to zip** dalam skenario dunia nyata, dan menunjukkan perbedaan halus ketika Anda ingin **create zip archive c#** program yang perlu kuat. + +> **Prerequisites** – Anda akan membutuhkan .NET 6+ (atau .NET Core 3.1) dan referensi ke pustaka yang menyediakan `HTMLDocument`, `HTMLSaveOptions`, dan `ResourceHandler`. Jika Anda menggunakan Aspose.HTML atau paket serupa, cukup tambahkan melalui NuGet. Tidak diperlukan alat pihak ketiga lainnya. + +--- + +## Apa yang Dibahas dalam Tutorial Ini + +- Menyiapkan **ZipArchive** yang akan menerima file HTML dan sumber daya yang terhubung. +- Mengimplementasikan **custom resource handler** (`ZipHandler`) yang mengarahkan setiap stream sumber daya ke dalam arsip. +- Menggunakan **HTMLSaveOptions** untuk menghubungkan semuanya dan benar-benar **save HTML as ZIP**. +- Masalah umum saat menangani jalur, entri duplikat, dan aset besar. +- Tips untuk memperluas solusi—seperti menambahkan file manifest atau mengenkripsi ZIP. + +Pada akhir tutorial, Anda akan memiliki metode mandiri yang dapat Anda sisipkan ke dalam proyek C# mana pun untuk **save html as zip** dengan percaya diri. + +## Langkah 1: Tambahkan Namespace yang Diperlukan + +Sebelum kode apa pun dijalankan, pastikan kompilator mengetahui kelas kompresi dan pustaka HTML yang Anda gunakan. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*Mengapa ini penting:* `System.IO.Compression` memberikan Anda `ZipArchive`, sementara namespace `Aspose.Html` mengekspos `HTMLDocument`, `HTMLSaveOptions`, dan kelas dasar `ResourceHandler` yang akan kami perpanjang. Jika Anda menggunakan mesin HTML yang berbeda, cari tipe yang analog. + +## Langkah 2: Buat Custom Resource Handler (Kata Kunci Utama dalam Aksi) + +Inti dari **saving HTML as ZIP** adalah memberi tahu mesin ke mana setiap sumber daya eksternal (gambar, CSS, skrip) harus ditempatkan. Dengan mewarisi dari `ResourceHandler` kami mendapatkan kontrol atas stream yang menerima data. + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**Poin penting** + +- `info.Uri` adalah URL relatif yang coba ditulis oleh mesin HTML. Menggunakannya sebagai nama entry menjaga struktur folder tetap utuh di dalam ZIP. +- `CreateEntry` akan secara otomatis membuat direktori yang diperlukan; Anda tidak perlu mengelolanya secara manual. +- Mengembalikan stream yang dibuka memungkinkan mesin men-stream data secara langsung—tanpa file sementara, tanpa salinan memori tambahan. + +## Langkah 3: Inisialisasi ZipArchive + +Sekarang kami membuat `ZipArchive` dalam mode **Update**. Mode ini memungkinkan kami menambahkan entry secara bertahap, dan juga mengganti yang sudah ada jika Anda menjalankan kode beberapa kali. + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*Tip pro:* Gunakan `FileMode.Create` untuk menimpa file sebelumnya, atau beralih ke `FileMode.OpenOrCreate` jika Anda ingin menambahkan ke arsip yang sudah ada. Juga, bungkus `ZipArchive` dalam pernyataan `using`—ini menjamin arsip dibuang dengan benar dan handle file dilepaskan. + +## Langkah 4: Muat Dokumen HTML yang Ingin Anda Ekspor + +Di sinilah Anda menunjuk pustaka ke file HTML sumber. Dokumen tersebut mungkin merujuk ke file CSS, gambar, atau JavaScript yang berada di sampingnya. + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +Jika HTML Anda berisi URL relatif, pastikan direktori kerja proses cocok dengan folder yang berisi aset tersebut. Jika tidak, mesin tidak akan dapat menemukan mereka, dan ZIP akan kehilangan file-file tersebut. + +## Langkah 5: Konfigurasikan Opsi Penyimpanan – Momen “Save HTML as ZIP” yang Sebenarnya + +Sekarang kami menghubungkan `ZipHandler` ke `HTMLSaveOptions`. Menetapkan `SaveFormat` ke `ZIP` memberi tahu pustaka untuk menggabungkan semuanya, sementara handler kami memutuskan ke mana setiap bagian pergi. + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*Mengapa ini penting:* Tanpa mengatur `ResourceHandler`, pustaka akan kembali menulis sumber daya ke sistem file, yang mengalahkan tujuan **how to export html to zip** dalam satu arsip. + +## Langkah 6: Lakukan Operasi Penyimpanan + +Akhirnya, minta dokumen menyimpan dirinya sendiri menggunakan opsi yang baru saja kami buat. Pustaka akan memanggil `ZipHandler.HandleResource` untuk setiap aset eksternal yang ditemukannya. + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +Ketika blok `using` untuk `zipArchive` berakhir, arsip diselesaikan dan file siap untuk didistribusikan. + +## Contoh Lengkap yang Berfungsi (Semua Langkah Digabungkan) + +Berikut adalah program lengkap yang dapat Anda salin‑tempel ke aplikasi konsol. Ini menunjukkan **c# ziparchive example** yang **creates zip archive c#** style, dan sepenuhnya menjawab **how to export html to zip**. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**Hasil yang diharapkan:** Setelah Anda menjalankan program, `output.zip` akan berisi `index.html` (atau nama yang Anda konfigurasikan) plus setiap gambar, stylesheet, dan skrip yang direferensikan oleh halaman asli, mempertahankan hierarki folder. Buka ZIP, ekstrak, dan klik dua kali `index.html`—halaman akan ditampilkan persis seperti saat online, tetapi kini menjadi paket yang dapat dipindahkan. + +## Kasus Tepi Umum & Cara Menanganinya + +| Situation | Why it Happens | Suggested Fix | +|-----------|----------------|---------------| +| **Duplicate resource names** (mis., dua gambar dengan nama file yang sama di folder berbeda) | `CreateEntry` akan melempar `InvalidOperationException` jika nama entry yang persis sudah ada. | Awali entry dengan jalur relatifnya (`info.Uri` sudah melakukannya) atau bersihkan nama secara manual sebelum membuat entry. | +| **Large binary assets** (video, gambar beresolusi tinggi) | Streaming langsung ke zip baik-baik saja, tetapi ukuran buffer default dapat menyebabkan penggunaan memori tinggi. | Timpa `HandleResource` untuk membungkus stream yang dikembalikan dalam `BufferedStream` dengan buffer yang wajar (mis., 64 KB). | +| **Missing resources** | Jika HTML berisi tautan rusak, handler menerima permintaan untuk file yang tidak ada, menghasilkan entry kosong. | Periksa `File.Exists` sebelum membuat entry, atau log peringatan agar Anda tahu ada yang hilang. | +| **Unicode filenames** | Beberapa alat ZIP lama menangani nama entry UTF‑8 dengan buruk. | Pastikan Anda menargetkan .NET 6+, yang menulis UTF‑8 secara default. Jika Anda memerlukan kompatibilitas lama, set `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);`. | +| **Need a manifest** (daftar file di dalam zip) | Pengguna kadang menginginkan `manifest.json` untuk validasi. | Setelah penyimpanan utama, buat entry baru `"manifest.json"` dan tulis daftar JSON dari `zipArchive.Entries`. | + +## Tips Pro untuk Implementasi **Save HTML as ZIP** Siap Produksi + +1. **Validate the output** – Setelah menyimpan, buka ZIP secara programatik dan verifikasi bahwa `index.html` ada dan setiap entry `Length`‑nya > 0. Ini menangkap kegagalan diam-diam lebih awal. +2. **Parallelize large assets** – Jika Anda memiliki puluhan megabyte gambar, pertimbangkan untuk mengantri panggilan `HandleResource` pada pool `Task` dan menulis ke arsip secara bersamaan (tetap menghormati sifat single‑writer dari `ZipArchive`). +3. **Compress wisely** – `ZipArchive` menggunakan Deflate secara default. Untuk file yang sudah terkompresi (JPEG, PNG), Anda dapat mengatur `entry.CompressionLevel = CompressionLevel.NoCompression` untuk mempercepat operasi. +4. **Security** – Jika ZIP + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/indonesian/net/working-with-html-documents/_index.md b/html/indonesian/net/working-with-html-documents/_index.md index b7ad357be..0c24b46a0 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 sebagai ZIP di C# – Panduan Lengkap dengan Penangan Sumber Daya Kustom](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/indonesian/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/indonesian/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..82d407e61 --- /dev/null +++ b/html/indonesian/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,224 @@ +--- +category: general +date: 2026-02-27 +description: Simpan HTML sebagai ZIP di C# menggunakan penangan sumber daya khusus + dan buat arsip ZIP di C#. Ikuti tutorial langkah demi langkah ini untuk menggabungkan + HTML dan aset‑asetnya. +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: id +og_description: Simpan HTML sebagai ZIP di C# dengan penangan sumber daya khusus. + Pelajari cara membuat arsip ZIP di C# dan menyematkan sumber daya dengan mudah. +og_title: Simpan HTML sebagai ZIP di C# – Tutorial Lengkap +tags: +- Aspose.HTML +- C# +- ZIP +title: Simpan HTML sebagai ZIP di C# – Panduan Lengkap dengan Penangan Sumber Daya + Kustom +url: /id/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Simpan HTML sebagai ZIP di C# – Panduan Lengkap dengan Penangan Sumber Daya Kustom + +Pernah bertanya-tanya bagaimana cara **menyimpan HTML sebagai ZIP** di C# tanpa membuat frustasi? Anda bukan satu-satunya—banyak pengembang mengalami kebuntuan ketika harus mengirimkan halaman HTML bersama gambar, CSS, atau file JavaScript. Kabar baik? Dengan Aspose.HTML Anda dapat melakukannya dalam beberapa langkah rapi, dan **penangan sumber daya kustom** membuat prosesnya mudah. + +Di tutorial ini kami akan membahas semua yang perlu Anda ketahui: mulai dari menginstal pustaka, menulis penangan yang mengalirkan sumber daya langsung ke **arsip ZIP yang dibuat di C#**, hingga memverifikasi paket akhir. Pada akhir tutorial Anda akan memiliki solusi siap‑pakai yang dapat Anda sisipkan ke proyek .NET mana pun. + +![Contoh Simpan HTML sebagai ZIP](/images/save-html-as-zip.png "Diagram yang menunjukkan HTML disimpan sebagai file ZIP") + +## Simpan HTML sebagai ZIP – Apa yang Dibahas dalam Panduan Ini + +1. **Prerequisites** – alat dan paket minimal yang Anda butuhkan. +2. **Custom resource handler** – mengapa Anda membutuhkannya dan cara mengimplementasikannya. +3. **Creating a ZIP archive in C#** – menggunakan `System.IO.Compression`. +4. **Configuring Aspose.HTML save options** untuk menunjuk ke penangan. +5. **Running the code** dan memeriksa output. + +Jika Anda sudah nyaman dengan sintaks C# dasar dan telah menginstal Visual Studio (atau VS Code), Anda siap untuk mulai. Tidak diperlukan dokumentasi eksternal—semuanya ada di sini. + +--- + +## Langkah 1: Siapkan Proyek dan Instal Aspose.HTML + +Sebelum menulis kode apa pun, pastikan proyek Anda dapat merujuk ke pustaka Aspose.HTML. + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*Tip Pro:* Paket NuGet terbaru (per Februari 2026) menargetkan .NET 6+, sehingga Anda dapat menggunakan proyek gaya SDK modern tanpa khawatir tentang kerangka kerja lama. + +Setelah paket dipulihkan, buka `Program.cs`. Kami akan mengganti konten default dengan contoh lengkap nanti, tetapi untuk saat ini biarkan file tetap terbuka. + +## Implementasikan Penangan Sumber Daya Kustom + +### Mengapa Penangan Sumber Daya Kustom? + +Saat Aspose.HTML menyimpan dokumen HTML sebagai paket ZIP, ia harus mengambil setiap sumber daya eksternal (gambar, font, skrip) dan menuliskannya ke suatu tempat. Perilaku default menuliskannya ke folder sementara di disk. Dengan menyediakan **penangan sumber daya kustom**, Anda memberi tahu pustaka secara tepat ke mana setiap sumber daya harus ditempatkan—dalam kasus kami, langsung ke dalam arsip ZIP. Ini menghindari I/O tambahan, menjaga semuanya rapi, dan memberi Anda kontrol penuh atas penamaan. + +### Kode: Kelas Penangan + +Buat file kelas baru bernama `MyHandler.cs` (atau letakkan di dalam `Program.cs` jika Anda lebih suka demo satu‑file). + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**Penjelasan:** +* `ResourceHandler` adalah kelas abstrak dari Aspose.HTML yang memungkinkan Anda menyela pengambilan sumber daya. +* Dengan mengembalikan `Stream` yang diperoleh dari `ZipArchiveEntry.Open()`, kami memberikan pustaka pipa yang dapat ditulis langsung ke file ZIP. Tanpa file sementara, tanpa pembersihan tambahan. + +## Buat Arsip ZIP di C# + +Sekarang penangan sudah siap, kami membutuhkan tempat untuk menulis. Kelas .NET `ZipArchive` melakukan pekerjaan berat. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### Apa yang Dilakukan Kode Ini + +1. **Membuat dokumen HTML dalam memori** dengan referensi ke `logo.png`. +2. **Membuka `FileStream`** yang akan menjadi `output.zip`. +3. **Menetapkan `ZipArchive`** ke bidang statis di `MyHandler`. +4. **Mengatur `HTMLSaveOptions`** ke `SaveFormat.ZIP` dan melampirkan penangan kami. +5. **Memanggil `document.Save`** – Aspose.HTML mem-parsing HTML, mengambil `logo.png`, dan mengalirkannya ke dalam arsip melalui `MyHandler`. + +Karena penangan menggunakan URI sumber daya (`logo.png`) sebagai nama entri, ZIP yang dihasilkan berisi file dengan nama persis itu, mempertahankan jalur relatif asli. + +## Konfigurasikan Opsi Penyimpanan untuk Paket ZIP + +Objek `HTMLSaveOptions` adalah tempat Anda memberi tahu Aspose.HTML **bagaimana** mengemas output. Selain `ResourceHandler`, Anda dapat menyesuaikan beberapa properti berguna: + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*Mengapa memperhatikan `EnableCompression`?* +Jika Anda menangani gambar berukuran besar, mengaktifkan kompresi dapat memperkecil arsip akhir hingga 70 %. Namun, untuk PNG yang sudah terkompresi, peningkatannya terbatas, sehingga Anda mungkin mematikannya untuk mempercepat proses penyimpanan. + +## Jalankan Kode dan Verifikasi Output + +Kompilasi dan jalankan program: + +```bash +dotnet run +``` + +Anda harus melihat pesan keberhasilan tercetak di konsol. Arahkan ke direktori yang ditampilkan dan buka `output.zip`. Di dalamnya Anda akan menemukan: + +- `index.html` – file HTML yang disimpan. +- `logo.png` – gambar yang direferensikan dalam markup. + +Buka `index.html` langsung dari ZIP (sebagian besar penjelajah file OS memungkinkan Anda menampilkannya) dan Anda akan melihat judul serta gambar ditampilkan persis seperti pada string asli. + +**Kasus Edge yang Perlu Dipertimbangkan** + +| Situasi | Apa yang Harus Dilakukan | +|-----------|------------| +| HTML merujuk ke **URL remote** (mis., `https://example.com/style.css`) | Penangan masih akan menerima `ResourceInfo.Uri`. Pastikan lingkungan Anda dapat mengakses URL tersebut, atau unduh terlebih dahulu sumber daya dan sesuaikan HTML ke jalur lokal. | +| Anda membutuhkan **hierarki folder** di dalam ZIP (mis., `images/logo.png`) | Modifikasi `HandleResource` untuk menambahkan nama folder di depan: `var entry = ZipArchive.CreateEntry($"assets/{info.Uri}");` | +| Sumber daya **gagal dimuat** (404) | Penangan akan dipanggil, tetapi aliran akan menerima nol byte. Bungkus pemanggilan `save` dalam `try/catch` dan periksa `info.Status` jika Anda memerlukan penanganan kesalahan khusus. | + +## Ringkasan: Simpan HTML sebagai ZIP dalam Satu Alur Ringkas + +- **Tujuan Utama:** Menggabungkan halaman HTML dan semua aset eksternalnya ke dalam satu file ZIP menggunakan C#. +- **Alat Utama:** Aspose.HTML (`HTMLDocument`, `HTMLSaveOptions`), `System.IO.Compression.ZipArchive`, dan **penangan sumber daya kustom**. +- **Hasil:** `output.zip` yang dapat dipindahkan, disimpan, atau dikirim melalui jaringan, dan kemudian diekstrak tanpa kehilangan tautan sumber daya. + +## Apa Selanjutnya? Memperluas Alur Kerja + +Sekarang Anda telah menguasai **menyimpan HTML sebagai ZIP**, Anda mungkin ingin menjelajahi skenario terkait: + +- **Simpan HTML sebagai PDF** – ganti `SaveFormat.ZIP` dengan `SaveFormat.PDF` dan sesuaikan opsi yang relevan. +- **Sematkan font** – gunakan `@font-face` dalam HTML Anda dan biarkan penangan menangkap file font. +- **Pemrosesan batch** – iterasi koleksi string HTML, menggunakan kembali `ZipArchive` yang sama untuk membuat paket multi‑dokumen. + +Semua ini dibangun di atas pola **penangan sumber daya kustom** yang sama dan teknik **membuat arsip ZIP di C#** yang baru saja Anda pelajari. + +### Pemikiran Akhir + +Anda baru saja melihat betapa mudahnya **menyimpan HTML sebagai ZIP** di C# ketika Anda membiarkan Aspose.HTML + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/italian/net/generate-jpg-and-png-images/_index.md b/html/italian/net/generate-jpg-and-png-images/_index.md index f6e8b2d8a..6cba21f1b 100644 --- a/html/italian/net/generate-jpg-and-png-images/_index.md +++ b/html/italian/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Impara a usare Aspose.HTML per .NET per manipolare documenti HTML, convertire HT Scopri come abilitare l'antialiasing durante la conversione di documenti DOCX in immagini PNG o JPG con Aspose.HTML per .NET. ### [Converti docx in PNG – crea archivio zip C# tutorial](./convert-docx-to-png-create-zip-archive-c-tutorial/) Impara a convertire documenti DOCX in PNG e a comprimerli in un archivio ZIP usando C# e Aspose.HTML. +### [Crea PNG da HTML in C# – Guida passo‑passo](./create-png-from-html-in-c-step-by-step-guide/) +Impara a convertire HTML in immagini PNG usando C# con Aspose.HTML, seguendo una guida dettagliata passo dopo passo. ## Conclusione diff --git a/html/italian/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/italian/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..e95abe89b --- /dev/null +++ b/html/italian/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-02-27 +description: Crea PNG da HTML rapidamente usando Aspose.HTML in C#. Impara a renderizzare + HTML in immagine, impostare larghezza e altezza dell'immagine e convertire HTML + in PNG in pochi minuti. +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: it +og_description: Crea PNG da HTML con Aspose.HTML. Questa guida mostra come renderizzare + HTML in immagine, impostare larghezza e altezza dell'immagine e convertire HTML + in PNG in modo efficiente. +og_title: Crea PNG da HTML in C# – Tutorial completo +tags: +- Aspose.HTML +- C# +- Image Rendering +title: Crea PNG da HTML in C# – Guida passo passo +url: /it/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crea PNG da HTML in C# – Tutorial Completo + +Hai mai dovuto **creare PNG da HTML** ma non sapevi quale libreria ti garantisse risultati pixel‑perfect? Non sei l’unico: molti sviluppatori si trovano di fronte allo stesso ostacolo quando cercano di trasformare una pagina web in un’immagine statica per email, report o miniature. + +La buona notizia? Con Aspose.HTML puoi **renderizzare HTML in immagine**, controllare le dimensioni esatte e **salvare HTML come PNG** con poche righe di C#. In questo tutorial percorreremo l’intero processo, dal caricamento del file HTML alla regolazione del hinting del testo fino alla scrittura del PNG su disco. Alla fine saprai come **impostare larghezza e altezza dell’immagine** programmaticamente e avrai uno snippet riutilizzabile da inserire in qualsiasi progetto .NET. + +## Cosa Imparerai + +- Come caricare un documento HTML usando Aspose.HTML. +- La differenza tra `ImageRenderingOptions` e `TextOptions` e perché è importante. +- Come **convertire HTML in PNG** mantenendo font, antialiasing e stili di sottolineatura. +- Consigli per risolvere problemi comuni come font mancanti o dimensioni inattese dell’immagine. +- Un esempio di codice completo, pronto‑da‑eseguire, da copiare‑incollare in Visual Studio. + +> **Prerequisiti:** .NET 6+ (o .NET Framework 4.6.2+), Aspose.HTML per .NET installato via NuGet e una conoscenza di base di C#. Non sono richiesti altri strumenti esterni. + +--- + +## Passo 1: Carica il Documento HTML – Avviare la Creazione del PNG + +Per prima cosa, ci serve un oggetto `HTMLDocument` che punti al file sorgente. Questa è la base per qualsiasi operazione di **creare PNG da HTML**. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*Perché questo passo è importante:* la classe `HTMLDocument` analizza il markup, risolve i CSS e costruisce un DOM che il motore di rendering può successivamente dipingere su una bitmap. Se il percorso è errato, il passo successivo di **render html to image** genererà una `FileNotFoundException`. + +--- + +## Passo 2: Imposta Larghezza Altezza Immagine – Controllare le Dimensioni di Output + +Quando **renderizzi HTML in immagine**, spesso serve una risoluzione specifica—ad esempio una miniatura che deve essere esattamente 1200 × 800 pixel. È qui che `ImageRenderingOptions` brilla. + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*Consiglio professionale:* se ometti `Width` e `Height`, Aspose.HTML utilizzerà la dimensione naturale della pagina, che potrebbe risultare troppo grande per gli embed nelle email. + +--- + +## Passo 3: Ottimizza il Rendering del Testo – Rendere il Testo Nitido + +Il testo su Linux appare spesso sfocato a meno che non si abiliti il hinting. L’oggetto `TextOptions` ti permette di controllare questo aspetto, garantendo che il PNG finale sia nitido su ogni piattaforma. + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*Perché il hinting?* Il hinting regola la forma di ogni glifo per allinearlo alla griglia dei pixel, fondamentale quando **converti HTML in PNG** per display a bassa risoluzione. + +--- + +## Passo 4: Combina le Opzioni e Aggiungi Stili – Configurazione Completa del Rendering + +Ora uniamo le impostazioni di immagine e testo, e dimostriamo anche come applicare uno stile di font globale, ad esempio sottolineare ogni pezzo di testo. Questo è il passo in cui realmente **salvi HTML come PNG** con stile personalizzato. + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*Nota:* `WebFontStyle` supporta molte bandiere (Bold, Italic, ecc.). Puoi combinarle usando l’operatore OR bitwise se ti servono più stili. + +--- + +## Passo 5: Renderizza e Salva – Il Momento in cui **Crei PNG da HTML** + +Con tutto configurato, la chiamata finale è una singola riga che dipinge il DOM su una bitmap e lo scrive su disco. + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +Dopo l’esecuzione di questa riga, troverai `output.png` nella cartella specificata, esattamente 1200 × 800 pixel, con grafica antialiasata e testo hintato. + +--- + +## Esempio Completo – Incolla, Esegui, Verifica + +Di seguito trovi il programma completo che puoi compilare come console app. Include tutti i `using`, la gestione degli errori e i commenti necessari. + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**Risultato atteso:** Un file chiamato `output.png` appare accanto all’eseguibile, mostrando la versione renderizzata di `sample.html`. Aprilo con qualsiasi visualizzatore di immagini per confermare dimensioni e stile. + +--- + +## Problemi Comuni & Come Evitarli + +| Problema | Sintomo | Soluzione | +|----------|----------|-----------| +| Font mancanti | Il testo appare come sans‑serif generico | Installa i font richiesti sulla macchina host o incorpora web font nell’HTML. | +| Dimensioni errate | PNG più grande o più piccolo del previsto | Ricontrolla i valori di `Width` e `Height` in `ImageRenderingOptions`. | +| Bordi sfocati | Nessun antialiasing | Assicurati che `UseAntialiasing = true`. | +| Artefatti su Linux | Il testo appare sfocato | Imposta `UseHinting = true` in `TextOptions`. | + +*Consiglio professionale:* quando **renderizzi HTML in immagine** su un server headless, verifica che il server disponga delle librerie di sistema necessarie (ad es. `libgdiplus` su Linux), altrimenti Aspose.HTML potrebbe ricorrere a un renderer software di qualità inferiore. + +--- + +## Estendere la Soluzione – Prossimi Passi + +- **Conversione batch:** cicla su una lista di file HTML e chiama la stessa logica di rendering per produrre una galleria di PNG. +- **Formati diversi:** sostituisci `output.png` con `output.jpg` o `output.bmp` cambiando l’estensione del file; Aspose.HTML sceglierà automaticamente l’encoder corretto. +- **Dimensionamento dinamico:** calcola `Width` e `Height` in base al meta tag viewport dell’HTML per design responsivi. +- **Watermark:** usa `Aspose.Html.Drawing` per sovrapporre un logo prima del salvataggio. + +Queste idee ti permettono di passare da un semplice snippet di **creare PNG da HTML** a un servizio completo di generazione di immagini. + +--- + +## Conclusione + +Abbiamo esaminato tutto ciò che serve per **creare PNG da HTML** usando Aspose.HTML per .NET: caricamento del documento, configurazione di **set image width height**, ottimizzazione del testo con hinting e infine **salvare HTML come PNG**. L’esempio di codice completo è pronto per essere inserito nel tuo progetto, e i consigli sopra dovrebbero aiutarti a evitare le difficoltà più comuni. + +Ora che puoi **renderizzare HTML in immagine** in modo affidabile, perché non sperimentare con stili diversi, elaborazione batch o addirittura la conversione in PDF nello stesso flusso? Il cielo è il limite, e il codice è già nelle tue mani. + +Buon coding, e sentiti libero di condividere i tuoi risultati o fare domande nei commenti! + +![Esempio di creazione PNG da HTML](/images/create-png-from-html.png "Creazione PNG da HTML con Aspose.HTML") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/italian/net/html-extensions-and-conversions/_index.md b/html/italian/net/html-extensions-and-conversions/_index.md index fcf4daa30..82b5158bd 100644 --- a/html/italian/net/html-extensions-and-conversions/_index.md +++ b/html/italian/net/html-extensions-and-conversions/_index.md @@ -39,6 +39,8 @@ Aspose.HTML per .NET non è solo una libreria; è un punto di svolta nel mondo d ## Tutorial sulle estensioni e conversioni HTML ### [Convertire HTML in PDF in .NET con Aspose.HTML](./convert-html-to-pdf/) Converti HTML in PDF senza sforzo con Aspose.HTML per .NET. Segui la nostra guida passo dopo passo e libera la potenza della conversione da HTML a PDF. +### [Salva HTML in PDF in C# – Guida completa con i font](./save-html-as-pdf-in-c-complete-guide-with-fonts/) +Scopri come salvare un documento HTML in PDF mantenendo i font con Aspose.HTML per .NET in C#. ### [Crea documento HTML con testo formattato ed esporta in PDF – Guida completa](./create-html-document-with-styled-text-and-export-to-pdf-full/) Impara a creare un documento HTML con testo stilizzato e a convertirlo in PDF usando Aspose.HTML per .NET, passo dopo passo. ### [Convertire EPUB in immagine in .NET con Aspose.HTML](./convert-epub-to-image/) @@ -50,7 +52,7 @@ Scopri come convertire EPUB in XPS in .NET usando Aspose.HTML per .NET. Segui la ### [Convertire HTML in BMP in .NET con Aspose.HTML](./convert-html-to-bmp/) Scopri come convertire HTML in BMP in .NET utilizzando Aspose.HTML per .NET. Guida completa per sviluppatori web su come sfruttare Aspose.HTML per .NET. ### [Convertire HTML in DOC e DOCX in .NET con Aspose.HTML](./convert-html-to-doc-docx/) -Scopri come sfruttare la potenza di Aspose.HTML per .NET in questa guida passo-passo. Converti HTML in DOCX senza sforzo e potenzia i tuoi progetti .NET. Inizia oggi stesso! +Scopri sfruttare la potenza di Aspose.HTML per .NET in questa guida passo-passo. Converti HTML in DOCX senza sforzo e potenzia i tuoi progetti .NET. Inizia oggi stesso! ### [Convertire HTML in GIF in .NET con Aspose.HTML](./convert-html-to-gif/) Scopri la potenza di Aspose.HTML per .NET: una guida passo passo per convertire HTML in GIF. Prerequisiti, esempi di codice, FAQ e altro ancora! Ottimizza la tua manipolazione HTML con Aspose.HTML. ### [Convertire HTML in JPEG in .NET con Aspose.HTML](./convert-html-to-jpeg/) @@ -69,10 +71,14 @@ Scopri la potenza di Aspose.HTML per .NET: converti HTML in XPS senza sforzo. Pr Scopri come comprimere un documento HTML in un file ZIP usando Aspose.HTML per .NET in C#. ### [Creare PDF da HTML – Guida passo‑a‑passo C#](./create-pdf-from-html-c-step-by-step-guide/) Crea un PDF da HTML in C# con Aspose.HTML per .NET. Segui la nostra guida passo passo per una conversione semplice ed efficace. -### [Salva HTML come ZIP – Tutorial completo C#](./save-html-as-zip-complete-c-tutorial/) +### [Crea PDF da HTML – Guida passo‑a‑passo per sviluppatori](./create-pdf-from-html-step-by-step-guide-for-developers/) +Crea un PDF da HTML in modo semplice con Aspose.HTML per .NET, seguendo la nostra guida passo‑a‑passo per sviluppatori. +### [Salva HTML come ZIP – Guida passo‑a‑passo C#](./save-html-as-zip-complete-c-tutorial/) Salva HTML come archivio ZIP con Aspose.HTML per .NET. Guida passo passo per creare file ZIP contenenti HTML in C#. ### [Salva HTML in ZIP in C# – Esempio completo in memoria](./save-html-to-zip-in-c-complete-in-memory-example/) Scopri come salvare un documento HTML in un archivio ZIP interamente in memoria usando Aspose.HTML per .NET. +### [Salva HTML come ZIP in C# – Guida completa](./save-html-as-zip-in-c-complete-guide/) +Scopri come salvare un documento HTML in un archivio ZIP usando Aspose.HTML per .NET in C# con una guida completa passo‑passo. ## Conclusione diff --git a/html/italian/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/italian/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..2eb80fe5f --- /dev/null +++ b/html/italian/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,214 @@ +--- +category: general +date: 2026-02-27 +description: Crea PDF da HTML rapidamente con un esempio completo in C#. Impara a + convertire HTML in PDF, salvare HTML come PDF ed esportare HTML in PDF con impostazioni + di best‑practice. +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: it +og_description: Crea PDF da HTML in C# con un esempio pronto all'uso. Questa guida + ti accompagna nella conversione da HTML a PDF, nel salvataggio di HTML come PDF + e nell'esportazione di HTML in PDF. +og_title: Crea PDF da HTML – Tutorial completo C# +tags: +- C# +- PDF +- HTML +title: Crea PDF da HTML – Guida passo‑passo per sviluppatori +url: /it/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +, etc. + +Let's translate step by step. + +Will keep code block placeholders unchanged. + +Proceed. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crea PDF da HTML – Tutorial Completo C# + +Ti è mai capitato di **creare PDF da HTML** senza sapere quali chiamate API utilizzare? Non sei solo. Che tu stia costruendo un cruscotto di report, un generatore di fatture o un esportatore di siti statici, trasformare HTML in PDF è una necessità frequente per le app moderne orientate al web. + +In questo tutorial percorreremo un **esempio completo e funzionante in C#** che mostra come **convertire HTML in PDF**, configurare le opzioni di rendering per un output nitido e, infine, **salvare HTML come PDF** su disco. Alla fine avrai un modello solido, pronto per la produzione, per **esportare HTML in PDF** da inserire in qualsiasi progetto .NET. + +## Cosa Imparerai + +- Come caricare un file HTML locale con `HTMLDocument`. +- Quali opzioni di rendering migliorano il peso dei caratteri, la fluidità delle immagini e l’hinting del testo. +- La chiamata esatta per **esportare HTML in PDF** con un unico metodo `Save`. +- Consigli per gestire documenti di grandi dimensioni, debug di problemi comuni e verifica del risultato. +- Un esempio di codice completo, pronto da copiare‑incollare e da eseguire subito. + +### Prerequisiti + +- .NET 6+ (o .NET Framework 4.7+). L’API che utilizziamo funziona su entrambi. +- Un riferimento alla ipotetica `HtmlToPdfLib` (sostituiscila con il nome della tua libreria reale). +- Un file `input.html` posizionato in una cartella di tua scelta (lo chiameremo `YOUR_DIRECTORY`). + +Se hai già questi elementi, immergiamoci—non è necessario alcun setup aggiuntivo. + +## Passo 1: Carica il Documento HTML per **Creare PDF da HTML** + +La prima cosa di cui hai bisogno è un’istanza `HTMLDocument` che punti al file sorgente. Pensala come aprire un quaderno prima di iniziare a scrivere—senza documento non c’è nulla da renderizzare. + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **Perché è importante:** Caricare il file HTML in anticipo permette alla libreria di analizzare il DOM, risolvere i CSS e pre‑caricare le immagini. Saltare questo passaggio o fornire HTML malformato porta spesso a pagine vuote durante la **conversione da html a pdf**. + +## Passo 2: Configura le Opzioni di Rendering per **Conversione HTML in PDF** + +Le opzioni di rendering sono il “sugo segreto” che trasforma un PDF semplice in un documento dall’aspetto professionale. Qui abilitiamo caratteri in grassetto, antialiasing per le immagini e hinting per il testo—funzionalità che la maggior parte degli sviluppatori trascura ma che migliorano drasticamente la fedeltà visiva. + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **Consiglio da esperto:** Se utilizzi un font specifico del brand, imposta `FontFamily` all’interno di `pdfOptions`. Questo evita il fallback a font generici durante la **conversione da HTML a PDF**. + +## Passo 3: Salva il File e **Esporta HTML in PDF** + +Ora che il documento è caricato e le opzioni sono ottimizzate, l’atto finale è una singola riga che scrive il PDF su disco. Il metodo `Save` esegue internamente la **conversione da html a pdf**, applicando tutte le modifiche di rendering definite. + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **Cosa dovresti vedere:** Aprendo `output.pdf` in qualsiasi visualizzatore verrà mostrato il layout HTML originale, con intestazioni in grassetto, immagini fluide e testo nitido. Se noti stili mancanti, verifica che i tuoi file CSS siano raggiungibili in modo relativo a `input.html`. + +![esempio di creazione pdf da html](/images/create-pdf-from-html.png "Screenshot del PDF generato – crea pdf da html") + +*Lo screenshot sopra (testo alternativo: “esempio di creazione pdf da html”) mostra un PDF renderizzato che preserva lo stile originale dell’HTML.* + +## Problemi Comuni Quando **Converti HTML in PDF** + +Anche con un flusso lineare, gli sviluppatori incontrano spesso intoppi. Di seguito i tre problemi più frequenti e come evitarli. + +### 1. Risorse Mancanti (Immagini, CSS, Font) + +Se il tuo HTML fa riferimento a risorse esterne tramite percorsi relativi, il convertitore potrebbe non trovarle. Usa sempre percorsi assoluti o imposta un URL di base: + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. Documenti Grandi Generano Timeout + +Quando gestisci report multi‑pagina, aumenta il timeout della libreria: + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. Sostituzione dei Font Porta a Aspetto Inaspettato + +Specifica esattamente la famiglia di font di cui hai bisogno: + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +Affrontare questi aspetti fin da subito ti salva da sessioni di debug frustranti durante le operazioni di **salvataggio HTML come PDF**. + +## Avanzato: Aggiungere una Copertina Prima di **Esportare HTML in PDF** + +A volte è necessaria una copertina personalizzata—ad esempio una pagina titolo con logo. Puoi anteporre un semplice frammento HTML prima del documento principale: + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **Perché farlo:** Aggiungere una copertina direttamente in HTML mantiene la pipeline di generazione PDF semplice, evitando strumenti di post‑processing come iText o PdfSharp. + +## Verifica del Risultato in Modo Programmatico + +Se devi accertarti che il PDF sia stato generato correttamente (ad esempio in pipeline CI), puoi controllare la dimensione del file o il conteggio delle pagine: + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +Un conteggio di pagine diverso da zero conferma che il passo di **conversione da HTML a PDF** è riuscito. + +## Riepilogo & Prossimi Passi + +Abbiamo appena percorso un **esempio completo, end‑to‑end** su come **creare PDF da HTML** in C#. Il flusso è: + +1. Carica l’HTML sorgente (`HTMLDocument`). +2. Affina il rendering con `PdfRenderingOptions`. +3. Chiama `Save` per **esportare HTML in PDF**. + +Da qui potresti esplorare: + +- **Elaborazione batch**: cicla su una cartella di file HTML e genera PDF in blocco. +- **HTML dinamico**: usa un motore di visualizzazione Razor per generare HTML al volo prima della conversione. +- **Sicurezza**: esegui il processo di conversione in sandbox se accetti HTML fornito dagli utenti (previene injection di script). + +Sentiti libero di sperimentare con opzioni diverse—magari passare a conformità `PdfA` per scopi di archiviazione, o incorporare JavaScript per PDF interattivi. Il modello di base rimane lo stesso, e ora hai una solida base per qualsiasi esigenza di **salvataggio HTML come PDF**. + +--- + +*Buon coding! Se incontri qualche strano comportamento, lascia un commento qui sotto o consulta la pagina delle issue su GitHub della libreria. La community è ottima nel condividere trucchi che rendono la **conversione da html a pdf** ancora più fluida.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/italian/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/italian/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..e583bb1d4 --- /dev/null +++ b/html/italian/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,275 @@ +--- +category: general +date: 2026-02-27 +description: Salva HTML come PDF in C# rapidamente usando Aspose.HTML. Scopri come + convertire HTML in PDF, generare PDF da HTML con font e stile personalizzati in + pochi passaggi. +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: it +og_description: Salva HTML come PDF in C# rapidamente usando Aspose.HTML. Questo tutorial + mostra come convertire HTML in PDF, generare PDF da HTML e applicare font personalizzati. +og_title: Salva HTML come PDF in C# – Guida completa con i font +tags: +- csharp +- pdf +- html +title: Salva HTML come PDF in C# – Guida completa con i font +url: /it/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Salva HTML come PDF in C# – Guida Completa con Font + +Hai mai dovuto **salvare HTML come PDF** da un'applicazione C# ma non sapevi quale libreria scegliere? Non sei solo. Molti sviluppatori incontrano questo ostacolo quando vogliono inviare fatture, report o ricevute stampabili direttamente dal contenuto web. + +La buona notizia? Con Aspose.HTML puoi **convertire HTML in PDF**, **generare PDF da HTML**, e persino **creare PDF con font** in poche righe. In questo tutorial percorreremo l'intero processo, spiegheremo perché ogni impostazione è importante e ti forniremo un esempio pronto all'uso. + +## Cosa Imparerai + +- Come caricare un file HTML locale o remoto in C# +- Quali opzioni di rendering forniscono font grassetto/corsivo, antialiasing e hinting del testo +- Come salvare il risultato come file PDF su disco +- Suggerimenti per gestire font personalizzati e le insidie più comuni + +Non è necessaria alcuna esperienza pregressa con Aspose.HTML—basta un ambiente di sviluppo .NET (Visual Studio 2022 o successivo) e il pacchetto NuGet Aspose.HTML per .NET. + +## Prerequisiti + +| Requisito | Perché è importante | +|-----------|----------------------| +| .NET 6.0 o successivo | Fornisce il runtime per Aspose.HTML | +| Aspose.HTML per .NET (NuGet) | La libreria che esegue il lavoro pesante | +| Un file HTML di esempio (`sample.html`) | Il nostro contenuto sorgente da trasformare | +| Conoscenze di base di C# | Per comprendere gli snippet di codice | + +Se hai tutto questo, immergiamoci. + +## Passo 1: Installa Aspose.HTML via NuGet + +Apri il tuo progetto in Visual Studio, fai clic destro sul nodo **Dependencies** e scegli **Manage NuGet Packages**. Cerca `Aspose.HTML` e premi **Install**. + +```powershell +dotnet add package Aspose.HTML +``` + +> **Consiglio professionale:** Usa l'ultima versione stabile (al 27‑02‑2026 è la 23.11) per ottenere i più recenti miglioramenti di rendering. + +## Passo 2: Carica il Documento HTML Sorgente + +La prima cosa di cui abbiamo bisogno è un oggetto `HTMLDocument` che punti al nostro file. Questa classe analizza il markup, risolve il CSS e prepara tutto per il rendering. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Perché questo passo?** +> Caricare l'HTML in un `HTMLDocument` isola la fase di parsing da quella di rendering, il che significa che puoi ispezionare il DOM o apportare modifiche a runtime prima di creare effettivamente il PDF. + +## Passo 3: Configura le Opzioni di Rendering PDF + +Aspose.HTML ti offre un controllo granulare su come appare il PDF finale. In questo esempio abiliteremo gli stili di font grassetto + corsivo, l'antialiasing per grafica più fluida e il hinting del testo per output a bassa risoluzione più nitido. + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### Perché Queste Impostazioni? + +- **`FontStyle`** – Unisce eventuali tag `` o `` con il font di base, garantendo che il PDF rispetti lo stile originale. +- **`UseAntialiasing`** – Riduce i bordi frastagliati su grafici, icone o qualsiasi contenuto rasterizzato. +- **`UseHinting`** – Allinea i contorni dei glifi alla griglia dei pixel, utile soprattutto quando il PDF verrà visualizzato su dispositivi a bassa risoluzione. + +Se ti servono font personalizzati (ad esempio un font aziendale), inserisci i file `.ttf` in una cartella e imposta `pdfRenderOptions.FontProvider` di conseguenza. È un argomento a sé stante, ma l'idea di base è: + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## Passo 4: Renderizza il Documento HTML in PDF + +Ora combiniamo il documento e le opzioni, quindi chiediamo ad Aspose.HTML di scrivere il file di output. + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +Dopo l'esecuzione di questa riga, troverai `output.pdf` accanto all'eseguibile. Aprilo—dovresti vedere l'HTML originale renderizzato con stili grassetto/corsivo, grafica fluida e testo nitido. + +> **Risultato Atteso:** +> Un PDF che rispecchia il layout di `sample.html`, con tutti i titoli in grassetto, il testo enfatizzato in corsivo e le immagini incorporate renderizzate senza bordi frastagliati. + +## Passo 5: Verifica e Regola (Opzionale) + +### Script di verifica rapido + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +Se il PDF appare errato, considera questi aggiustamenti comuni: + +| Problema | Probabile causa | Correzione | +|----------|-----------------|------------| +| Font mancanti | Font non incorporato o non trovato | Usa `FontProvider.AddFont` e assicurati che il file del font sia accessibile | +| Immagini sfocate | Antialiasing disabilitato | Imposta `UseAntialiasing = true` | +| Testo troppo sottile sullo schermo | Hinting disabilitato | Abilita `UseHinting = true` | +| Spostamento del layout al salto di pagina | Regole CSS `page-break` ignorate | Aggiungi esplicitamente `page-break-before/after` nel tuo HTML/CSS | + +## Esempio Completo Funzionante + +Di seguito trovi il programma completo da copiare‑incollare in una nuova console app. Include tutte le direttive `using`, la gestione degli errori e i commenti per chiarezza. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +Esegui il progetto (`dotnet run`) e dovresti vedere il messaggio di successo seguito da un nuovo `output.pdf`. + +## Domande Frequenti & Casi Limite + +### Posso **convertire HTML in PDF** da un URL invece che da un file locale? + +Assolutamente. Basta sostituire il percorso del file con una stringa URL: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +Aspose.HTML scaricherà la pagina, risolverà le risorse esterne e la renderà. + +### E per **file HTML di grandi dimensioni** o **pagine multiple**? + +Aspose.HTML trasmette (stream) il contenuto, quindi l'uso della memoria rimane ragionevole. Se desideri che ogni sezione HTML sia su una pagina PDF separata, inserisci interruzioni di pagina manuali nell'HTML: + +```html +
+``` + +### Funziona con **.NET Core** e **.NET 7**? + +Sì. La libreria è cross‑platform; basta assicurarsi di targettare un framework compatibile (net6.0, net7.0, ecc.) e installare il relativo pacchetto NuGet. + +### Come **incorporare i font** per una piena portabilità del PDF? + +Imposta `pdfRenderOptions.FontProvider` come mostrato prima e abilita anche l'incorporamento dei font: + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +Questo garantisce che il PDF abbia lo stesso aspetto su qualsiasi macchina, anche se il font non è installato localmente. + +## Esempio Visivo + +![save html as pdf example](example.png){alt="salva html come pdf esempio"} + +*Lo screenshot mostra il PDF generato aperto in Adobe Acrobat, con stili grassetto/corsivo preservati e immagini fluide.* + +## Conclusione + +Abbiamo coperto tutto ciò che ti serve per **salvare HTML come PDF** usando C#. Dal caricamento del markup, alla configurazione delle opzioni di rendering, fino alla scrittura del PDF finale, il processo è lineare e altamente personalizzabile. + +Seguendo questa guida potrai anche **convertire HTML in PDF**, **generare PDF da HTML**, e **creare PDF con font** per qualsiasi scenario di reporting o generazione di documenti. Sentiti libero di sperimentare con opzioni aggiuntive—filigrane, crittografia o dimensioni di pagina personalizzate—perché Aspose.HTML ti offre quella flessibilità. + +**Passi successivi** da esplorare: + +- Usa la classe `PdfSaveOptions` per impostare la versione PDF o il livello di compressione. +- Combina più istanze di `HTMLDocument` in un unico PDF per report a più sezioni. +- Integra questo flusso di lavoro in un'API ASP.NET Core così il tuo servizio web può restituire PDF su richiesta. + +Hai domande su casi particolari o hai bisogno di aiuto per affinare la pipeline di rendering? Lascia un commento qui sotto, e buona programmazione! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/italian/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/italian/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..fb2481515 --- /dev/null +++ b/html/italian/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-02-27 +description: Salva HTML come ZIP usando C# ZipArchive – esempio passo‑passo con un + gestore di risorse personalizzato, più consigli su come esportare HTML in ZIP e + creare codice C# per archivio zip. +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: it +og_description: Salva HTML come ZIP usando C# ZipArchive. Scopri come esportare HTML + in ZIP con un esempio completo, gestore di risorse personalizzato e le migliori + pratiche. +og_title: Salva HTML come ZIP in C# – Guida completa +tags: +- C# +- ZipArchive +- HTML export +title: Salva HTML come ZIP in C# – Guida completa +url: /it/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +. + +Also there is a final incomplete sentence "Security – If the ZIP" cut off; keep as is. + +Also there are shortcodes at the end. + +Let's produce final answer.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Salva HTML come ZIP in C# – Guida Completa + +Ti è mai capitato di dover **salvare HTML come ZIP** senza sapere quali classi .NET utilizzare? Non sei l’unico: molti sviluppatori incontrano questo ostacolo quando vogliono raggruppare una pagina web con le sue risorse per uso offline o per distribuzione. La buona notizia? Con la classe integrata `System.IO.Compression.ZipArchive` puoi farlo in poche righe, ottenendo anche un modo pulito per controllare come ogni risorsa viene scritta. + +In questo tutorial percorreremo un **esempio completo, eseguibile** che mostra esattamente come esportare un documento HTML in un file ZIP, usando un `ResourceHandler` personalizzato per trasmettere ogni asset nell’archivio. Lungo il percorso inseriremo alcuni **c# ziparchive example** snippet, discuteremo **come esportare html in zip** in scenari reali e evidenzieremo le sottili differenze quando vuoi **creare zip archive c#** in programmi robusti. + +> **Prerequisiti** – Avrai bisogno di .NET 6+ (o .NET Core 3.1) e di un riferimento alla libreria che fornisce `HTMLDocument`, `HTMLSaveOptions` e `ResourceHandler`. Se usi Aspose.HTML o un pacchetto simile, aggiungilo tramite NuGet. Non sono richiesti altri strumenti di terze parti. + +--- + +## Cosa Copre Questo Tutorial + +- Configurare un **ZipArchive** che riceverà il file HTML e le sue risorse collegate. +- Implementare un **handler di risorse personalizzato** (`ZipHandler`) che indirizza ogni stream di risorsa nell’archivio. +- Usare **HTMLSaveOptions** per collegare il tutto e realmente **salvare HTML come ZIP**. +- Trappole comuni nella gestione di percorsi, voci duplicate e risorse di grandi dimensioni. +- Consigli per estendere la soluzione—ad esempio aggiungere un file manifesto o crittografare lo ZIP. + +Al termine avrai un metodo autonomo da inserire in qualsiasi progetto C# per **salvare html come zip** con sicurezza. + +--- + +## Passo 1: Aggiungi i Namespace Necessari + +Prima che qualsiasi codice venga eseguito, assicurati che il compilatore conosca le classi di compressione e la libreria HTML che stai usando. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*Perché è importante:* `System.IO.Compression` fornisce `ZipArchive`, mentre gli spazi dei nomi `Aspose.Html` espongono `HTMLDocument`, `HTMLSaveOptions` e la classe base `ResourceHandler` che estenderemo. Se usi un motore HTML diverso, cerca tipi analoghi. + +--- + +## Passo 2: Crea un Handler di Risorse Personalizzato (Parola Chiave Principale in Azione) + +Il cuore del **salvataggio HTML come ZIP** è indicare al motore dove posizionare ogni risorsa esterna (immagini, CSS, script). Ereditando da `ResourceHandler` otteniamo il controllo sullo stream che riceve i dati. + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**Punti chiave** + +- `info.Uri` è l’URL relativo che il motore HTML sta tentando di scrivere. Usarlo come nome della voce mantiene intatta la struttura delle cartelle all’interno dello ZIP. +- `CreateEntry` crea automaticamente le directory necessarie; non devi gestirle manualmente. +- Restituire lo stream aperto permette al motore di trasmettere i dati direttamente—senza file temporanei, senza copie di memoria aggiuntive. + +--- + +## Passo 3: Inizializza lo ZipArchive + +Ora avviamo uno `ZipArchive` in modalità **Update**. Questa modalità consente di aggiungere voci man mano e anche di sostituire quelle esistenti se esegui il codice più volte. + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*Consiglio esperto:* Usa `FileMode.Create` per sovrascrivere eventuali file precedenti, oppure `FileMode.OpenOrCreate` se vuoi aggiungere a un archivio esistente. Inoltre, avvolgi lo `ZipArchive` in una dichiarazione `using`—questo garantisce che l’archivio venga correttamente smaltito e che la maniglia del file venga rilasciata. + +--- + +## Passo 4: Carica il Documento HTML da Esportare + +Qui indichi alla libreria il file HTML di origine. Il documento può fare riferimento a CSS, immagini o file JavaScript che si trovano nella stessa cartella. + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +Se il tuo HTML contiene URL relativi, assicurati che la directory di lavoro del processo corrisponda alla cartella contenente quelle risorse. Altrimenti il motore non sarà in grado di individuarle e lo ZIP perderà quei file. + +--- + +## Passo 5: Configura le Opzioni di Salvataggio – Il Momento Reale del “Salva HTML come ZIP” + +Ora colleghiamo il `ZipHandler` a `HTMLSaveOptions`. Impostare `SaveFormat` su `ZIP` indica alla libreria di raggruppare tutto, mentre il nostro handler decide dove va ogni pezzo. + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*Perché è importante:* Senza impostare `ResourceHandler`, la libreria ricorrerebbe alla scrittura delle risorse sul file system, vanificando lo scopo di **come esportare html in zip** in un unico archivio. + +--- + +## Passo 6: Esegui l’Operazione di Salvataggio + +Infine, chiedi al documento di salvare se stesso usando le opzioni appena costruite. La libreria invocherà `ZipHandler.HandleResource` per ogni asset esterno che incontra. + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +Quando il blocco `using` per `zipArchive` termina, l’archivio viene finalizzato e il file è pronto per la distribuzione. + +--- + +## Esempio Completo (Tutti i Passi Combinati) + +Di seguito trovi il programma completo che puoi copiare‑incollare in una console app. Dimostra un **c# ziparchive example** che **crea zip archive c#** e risponde pienamente a **come esportare html in zip**. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**Risultato atteso:** Dopo aver eseguito il programma, `output.zip` conterrà `index.html` (o il nome che hai configurato) più ogni immagine, foglio di stile e script referenziati dalla pagina originale, preservando la gerarchia delle cartelle. Apri lo ZIP, estrai e fai doppio click su `index.html`—la pagina dovrebbe renderizzarsi esattamente come online, ma ora è un pacchetto portatile. + +--- + +## Casi Limite Comuni & Come Gestirli + +| Situazione | Perché Accade | Correzione Suggerita | +|------------|---------------|----------------------| +| **Nomi di risorsa duplicati** (es. due immagini con lo stesso nome in cartelle diverse) | `CreateEntry` lancia `InvalidOperationException` se il nome della voce esiste già. | Prefissa la voce con il percorso relativo (`info.Uri` lo fa già) o sanitizza manualmente i nomi prima di creare la voce. | +| **Asset binari di grandi dimensioni** (video, immagini ad alta risoluzione) | Lo streaming diretto nello zip è corretto, ma la dimensione predefinita del buffer può provocare un uso elevato di memoria. | Sovrascrivi `HandleResource` per avvolgere lo stream restituito in un `BufferedStream` con un buffer più contenuto (es. 64 KB). | +| **Risorse mancanti** | Se l’HTML contiene un link rotto, l’handler riceve una richiesta per un file inesistente, generando una voce vuota. | Verifica `File.Exists` prima di creare la voce, o registra un avviso così da sapere cosa manca. | +| **Nomi file Unicode** | Alcuni tool ZIP più vecchi gestiscono male i nomi UTF‑8. | Assicurati di targettizzare .NET 6+, che scrive UTF‑8 di default. Se serve compatibilità legacy, imposta `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);`. | +| **Necessità di un manifesto** (elenco dei file dentro lo zip) | I consumatori a volte vogliono un `manifest.json` per la validazione. | Dopo il salvataggio principale, crea una nuova voce `"manifest.json"` e scrivi una lista JSON di `zipArchive.Entries`. | + +--- + +## Consigli Pro per Implementazioni **Save HTML as ZIP** Pronte per la Produzione + +1. **Valida l’output** – Dopo il salvataggio, apri lo ZIP programmaticamente e verifica che `index.html` esista e che la `Length` di ogni voce sia > 0. Questo intercetta fallimenti silenziosi subito. +2. **Parallelizza le risorse grandi** – Se hai decine di megabyte di immagini, considera di mettere in coda le chiamate a `HandleResource` su un pool di `Task` e scrivere nell’archivio in modo concorrente (rispettando comunque la natura a singolo scrittore di `ZipArchive`). +3. **Comprimi con saggezza** – `ZipArchive` usa Deflate per impostazione predefinita. Per file già compressi (JPEG, PNG), puoi impostare `entry.CompressionLevel = CompressionLevel.NoCompression` per velocizzare l’operazione. +4. **Sicurezza** – Se lo ZIP + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/italian/net/working-with-html-documents/_index.md b/html/italian/net/working-with-html-documents/_index.md index 0d466ec95..afc16857b 100644 --- a/html/italian/net/working-with-html-documents/_index.md +++ b/html/italian/net/working-with-html-documents/_index.md @@ -38,6 +38,7 @@ Ora, portiamo le tue competenze al livello successivo. La modifica di documenti ### [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 rendere grassetto un'intestazione con CSS e C# – Guida completa passo‑passo](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) +### [Come salvare HTML come ZIP in C# – Guida completa con un gestore di risorse personalizzato](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/italian/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/italian/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..f65ae8e59 --- /dev/null +++ b/html/italian/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,247 @@ +--- +category: general +date: 2026-02-27 +description: Salva HTML come ZIP in C# usando un gestore di risorse personalizzato + e crea un archivio ZIP in C#. Segui questo tutorial passo‑passo per raggruppare + HTML e le sue risorse. +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: it +og_description: Salva HTML come ZIP in C# con un gestore di risorse personalizzato. + Scopri come creare un archivio ZIP in C# e incorporare le risorse senza sforzo. +og_title: Salva HTML come ZIP in C# – Tutorial completo +tags: +- Aspose.HTML +- C# +- ZIP +title: Salva HTML come ZIP in C# – Guida completa con gestore di risorse personalizzato +url: /it/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +#. + +Proceed. + +Let's translate each paragraph. + +Will produce final content. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Salva HTML come ZIP in C# – Guida completa con gestore di risorse personalizzato + +Ti sei mai chiesto come **salvare HTML come ZIP** in C# senza impazzire? Non sei il solo: molti sviluppatori si trovano in difficoltà quando devono distribuire una pagina HTML insieme a immagini, CSS o file JavaScript. La buona notizia? Con Aspose.HTML puoi farlo in pochi semplici passaggi, e un **gestore di risorse personalizzato** rende il processo indolore. + +In questo tutorial percorreremo tutto ciò che devi sapere: dall'installazione della libreria, alla scrittura di un gestore che trasmette le risorse direttamente in un **create ZIP archive in C#**, fino alla verifica del pacchetto finale. Alla fine avrai una soluzione pronta all'uso da inserire in qualsiasi progetto .NET. + +![Save HTML as ZIP example](/images/save-html-as-zip.png "Diagramma che mostra HTML salvato come file ZIP") + +## Salva HTML come ZIP – Cosa copre questa guida + +Tratteremo l'intero flusso di lavoro: + +1. **Prerequisiti** – gli strumenti e i pacchetti minimi di cui hai bisogno. +2. **Gestore di risorse personalizzato** – perché ne hai bisogno e come implementarlo. +3. **Creazione di un archivio ZIP in C#** – usando `System.IO.Compression`. +4. **Configurazione delle opzioni di salvataggio di Aspose.HTML** per puntare al gestore. +5. **Esecuzione del codice** e verifica dell'output. + +Se sei a tuo agio con la sintassi base di C# e hai Visual Studio (o VS Code) installato, sei pronto per immergerti. Nessuna documentazione esterna necessaria—tutto è qui. + +--- + +## Passo 1: Configura il progetto e installa Aspose.HTML + +Prima di scrivere codice, assicurati che il tuo progetto possa fare riferimento alla libreria Aspose.HTML. + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*Consiglio:* l'ultimo pacchetto NuGet (a febbraio 2026) è destinato a .NET 6+, quindi puoi usare il progetto in stile SDK moderno senza preoccuparti di framework legacy. + +Una volta ripristinato il pacchetto, apri `Program.cs`. Sostituiremo il contenuto predefinito con l'esempio completo più avanti, ma per ora tieni il file aperto. + +--- + +## Implementa un gestore di risorse personalizzato + +### Perché un gestore di risorse personalizzato? + +Quando Aspose.HTML salva un documento HTML come pacchetto ZIP, deve recuperare ogni risorsa esterna (immagini, font, script) e scriverla da qualche parte. Il comportamento predefinito le scrive in una cartella temporanea sul disco. Fornendo un **gestore di risorse personalizzato**, indichi alla libreria esattamente dove deve andare ogni risorsa—in questo caso, direttamente nell'archivio ZIP. Questo evita I/O aggiuntivo, mantiene tutto ordinato e ti dà il pieno controllo sui nomi. + +### Codice: la classe del gestore + +Crea un nuovo file di classe chiamato `MyHandler.cs` (oppure inseriscilo in `Program.cs` se preferisci una demo a file unico). + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**Spiegazione:** +* `ResourceHandler` è una classe astratta di Aspose.HTML che ti permette di intercettare il recupero delle risorse. +* Restituendo lo `Stream` ottenuto da `ZipArchiveEntry.Open()`, forniamo alla libreria un canale scrivibile direttamente nel file ZIP. Nessun file temporaneo, nessuna pulizia extra. + +--- + +## Crea l'archivio ZIP in C# + +Ora che il gestore è pronto, ci serve un luogo dove scrivere. La classe .NET `ZipArchive` fa il lavoro pesante. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### Cosa fa questo codice + +1. **Crea un documento HTML in memoria** con un riferimento a `logo.png`. +2. **Apre un `FileStream`** che diventerà `output.zip`. +3. **Assegna il `ZipArchive`** al campo statico in `MyHandler`. +4. **Imposta `HTMLSaveOptions`** su `SaveFormat.ZIP` e collega il nostro gestore. +5. **Chiama `document.Save`** – Aspose.HTML analizza l'HTML, recupera `logo.png` e lo trasmette nell'archivio tramite `MyHandler`. + +Poiché il gestore usa l'URI della risorsa (`logo.png`) come nome dell'entry, lo ZIP risultante contiene un file con esattamente quel nome, preservando il percorso relativo originale. + +--- + +## Configura le opzioni di salvataggio per il pacchetto ZIP + +L'oggetto `HTMLSaveOptions` è dove indichi ad Aspose.HTML **come** impacchettare l'output. Oltre al `ResourceHandler`, puoi regolare alcune proprietà utili: + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*Perché preoccuparsi di `EnableCompression`?* +Se lavori con immagini di grandi dimensioni, abilitare la compressione può ridurre l'archivio finale fino al 70 %. Tuttavia, per PNG già compressi il guadagno è modesto, quindi potresti disattivarla per velocizzare l'operazione di salvataggio. + +--- + +## Esegui il codice e verifica l'output + +Compila ed esegui il programma: + +```bash +dotnet run +``` + +Dovresti vedere il messaggio di successo stampato sulla console. Vai nella directory indicata e apri `output.zip`. All'interno troverai: + +- `index.html` – il file HTML salvato. +- `logo.png` – l'immagine referenziata nel markup. + +Apri `index.html` direttamente dallo ZIP (la maggior parte degli esploratori di file OS permette l'anteprima) e vedrai il titolo e l'immagine renderizzati esattamente come nella stringa originale. + +**Casi limite da considerare** + +| Situazione | Cosa fare | +|------------|-----------| +| L'HTML referenzia un **URL remoto** (es. `https://example.com/style.css`) | Il gestore riceverà comunque un `ResourceInfo.Uri`. Assicurati che l'ambiente possa raggiungere l'URL, oppure scarica la risorsa in anticipo e modifica l'HTML con un percorso locale. | +| Hai bisogno di **gerarchia di cartelle** dentro lo ZIP (es. `images/logo.png`) | Modifica `HandleResource` per aggiungere un prefisso di cartella: `var entry = ZipArchive.CreateEntry($"assets/{info.Uri}");` | +| La risorsa **non si carica** (404) | Il gestore verrà chiamato, ma lo stream riceverà zero byte. Avvolgi la chiamata a `Save` in un `try/catch` e controlla `info.Status` se ti serve una gestione errori personalizzata. | + +--- + +## Riepilogo: Salva HTML come ZIP in un unico flusso compatto + +- **Obiettivo principale:** raggruppare una pagina HTML e tutte le sue risorse esterne in un unico file ZIP usando C#. +- **Strumenti chiave:** Aspose.HTML (`HTMLDocument`, `HTMLSaveOptions`), `System.IO.Compression.ZipArchive` e un **gestore di risorse personalizzato**. +- **Risultato:** un `output.zip` portatile che può essere distribuito, archiviato o inviato in rete, e successivamente estratto senza perdere i collegamenti alle risorse. + +--- + +## Qual è il prossimo passo? Estendere il flusso di lavoro + +Ora che hai padroneggiato **salvare HTML come ZIP**, potresti voler esplorare scenari correlati: + +- **Salvare HTML come PDF** – sostituisci `SaveFormat.ZIP` con `SaveFormat.PDF` e adatta le opzioni di conseguenza. +- **Incorporare font** – usa `@font-face` nel tuo HTML e lascia che il gestore catturi i file dei font. +- **Elaborazione batch** – itera su una collezione di stringhe HTML, riutilizzando lo stesso `ZipArchive` per creare un pacchetto multi‑documento. + +Tutti questi si basano sullo stesso pattern del **gestore di risorse personalizzato** e sulla tecnica **create ZIP archive in C#** appena appresa. + +--- + +### Considerazioni finali + +Hai appena visto quanto sia semplice **salvare HTML come ZIP** in C# quando utilizzi Aspose.HTML + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/japanese/net/generate-jpg-and-png-images/_index.md b/html/japanese/net/generate-jpg-and-png-images/_index.md index 57de57175..589292af2 100644 --- a/html/japanese/net/generate-jpg-and-png-images/_index.md +++ b/html/japanese/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML for .NET を使用して HTML ドキュメントを操作したり DOCX 文書を PNG または JPG 画像に変換する際に、アンチエイリアシングを有効にして高品質な出力を得る手順を解説します。 ### [DOCX を PNG に変換 – ZIP アーカイブを作成する C# チュートリアル](./convert-docx-to-png-create-zip-archive-c-tutorial/) C# で DOCX を PNG に変換し、ZIP アーカイブを作成する方法を学びます。 +### [C# で HTML から PNG を作成する – ステップバイステップ ガイド](./create-png-from-html-in-c-step-by-step-guide/) +Aspose.HTML for .NET を使用して、C# で HTML を PNG 画像に変換する手順を詳しく解説します。 ## 結論 diff --git a/html/japanese/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/japanese/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..afba590d1 --- /dev/null +++ b/html/japanese/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,222 @@ +--- +category: general +date: 2026-02-27 +description: C#でAspose.HTMLを使用してHTMLからPNGを迅速に作成します。HTMLを画像にレンダリングし、画像の幅と高さを設定し、数分でHTMLをPNGに変換する方法を学びましょう。 +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: ja +og_description: Aspose.HTML を使用して HTML から PNG を作成します。このガイドでは、HTML を画像にレンダリングし、画像の幅と高さを設定し、HTML + を効率的に PNG に変換する方法を示します。 +og_title: C#でHTMLからPNGを作成する – 完全チュートリアル +tags: +- Aspose.HTML +- C# +- Image Rendering +title: C#でHTMLからPNGを作成する – ステップバイステップガイド +url: /ja/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#でHTMLからPNGを作成 – 完全チュートリアル + +**HTMLからPNGを作成**したいけど、どのライブラリがピクセル単位で正確に描画できるか分からないことはありませんか?同じ壁にぶつかる開発者は多いです。ウェブページをメールやレポート、サムネイル用の静的画像に変換したいときに特に悩みます。 + +良いニュースです。Aspose.HTML を使えば **HTMLを画像にレンダリング**し、正確なサイズを制御し、数行の C# だけで **HTMLをPNGとして保存**できます。このチュートリアルでは、HTML ファイルの読み込みからテキストヒンティングの調整、最終的に PNG をディスクに書き出すまでの全工程を解説します。最後まで読めば、プログラムで **画像の幅と高さを設定** する方法が分かり、任意の .NET プロジェクトに貼り付けられる再利用可能なコードスニペットが手に入ります。 + +## 学べること + +- Aspose.HTML を使って HTML ドキュメントをロードする方法 +- `ImageRenderingOptions` と `TextOptions` の違いと重要性 +- フォント、アンチエイリアス、下線スタイルを保持しながら **HTMLをPNGに変換**する方法 +- フォントが見つからない、画像サイズが予期せぬものになるといった一般的な落とし穴の対処法 +- Visual Studio にコピペできる、すぐに実行可能なコードサンプル + +> **前提条件:** .NET 6 以上(または .NET Framework 4.6.2 以上)、NuGet でインストールした Aspose.HTML for .NET、C# の基本的な知識。その他の外部ツールは不要です。 + +--- + +## Step 1: Load the HTML Document – PNG 作成の開始 + +まず、ソースファイルを指す `HTMLDocument` オブジェクトが必要です。これが **HTMLからPNGを作成** するすべての操作の基盤となります。 + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*このステップが重要な理由:* `HTMLDocument` クラスはマークアップを解析し、CSS を解決し、後でビットマップに描画できる DOM を構築します。パスが間違っていると、次の **HTMLを画像にレンダリング** ステップで `FileNotFoundException` がスローされます。 + +--- + +## Step 2: Set Image Width Height – 出力サイズの制御 + +**HTMLを画像にレンダリング**する際、特定の解像度が必要になることがよくあります。たとえば、サムネイルは正確に 1200 × 800 ピクセルでなければなりません。ここで `ImageRenderingOptions` が活躍します。 + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*プロのコツ:* `Width` と `Height` を省略すると、Aspose.HTML はページの自然サイズを使用します。メール埋め込み用には大きすぎることがあります。 + +--- + +## Step 3: Fine‑Tune Text Rendering – テキストを鮮明に + +Linux 環境ではヒンティングを有効にしないとテキストがぼやけて見えることがあります。`TextOptions` オブジェクトでこれを制御し、最終的な PNG がすべてのプラットフォームでシャープに表示されるようにします。 + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*ヒンティングが必要な理由:* ヒンティングは各グリフの形状をピクセルグリッドに合わせて調整します。低解像度ディスプレイ向けに **HTMLをPNGに変換** する際に重要です。 + +--- + +## Step 4: Combine Options and Add Styling – 完全なレンダリング設定 + +ここで画像設定とテキスト設定を統合し、さらに全テキストに下線を付けるなどのグローバルフォントスタイルを適用する方法を示します。このステップが **HTMLをPNGとして保存** する本番の処理です。 + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*注記:* `WebFontStyle` は多数のフラグ(Bold、Italic など)をサポートしています。複数のスタイルが必要な場合はビット単位の OR で組み合わせられます。 + +--- + +## Step 5: Render and Save – **HTMLからPNGを作成**する瞬間 + +すべての設定が完了したら、DOM をビットマップに描画し、ディスクに書き出すワンライナーを実行します。 + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +この行が実行されると、指定したフォルダーに `output.png` が生成され、サイズは正確に 1200 × 800 ピクセル、アンチエイリアスとヒンティングが適用された状態になります。 + +--- + +## Full Working Example – コピーして実行、結果を確認 + +以下はコンソールアプリとしてコンパイルできる完全なプログラムです。using 文、エラーハンドリング、コメントがすべて含まれています。 + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**期待される結果:** 実行ファイルの隣に `output.png` が作成され、`sample.html` のレンダリング結果が表示されます。任意の画像ビューアで開き、サイズとスタイリングを確認してください。 + +--- + +## Common Pitfalls & How to Avoid Them + +| 問題 | 症状 | 対策 | +|------|------|------| +| フォントが見つからない | テキストが汎用のサンセリフになる | 必要なフォントをホストマシンにインストールするか、HTML に Web フォントを埋め込む | +| サイズが合わない | PNG が期待より大きい/小さい | `ImageRenderingOptions` の `Width` と `Height` の値を再確認 | +| エッジがぼやける | アンチエイリアスが無効 | `UseAntialiasing = true` を設定 | +| Linux で描画アーティファクトが出る | テキストがぼやける | `TextOptions` の `UseHinting = true` を設定 | + +*プロのコツ:* ヘッドレスサーバーで **HTMLを画像にレンダリング** する場合、必要なシステムライブラリ(例: Linux の `libgdiplus`)がインストールされていることを確認してください。未インストールだと Aspose.HTML が品質の低いソフトウェアレンダラにフォールバックします。 + +--- + +## Extending the Solution – 次のステップ + +- **バッチ変換:** HTML ファイルのリストをループし、同じレンダリングロジックで PNG ギャラリーを生成 +- **別フォーマット:** `output.png` を `output.jpg` や `output.bmp` に置き換えるだけで、拡張子に応じたエンコーダが自動選択されます +- **動的サイズ:** HTML の viewport メタタグを解析し、レスポンシブデザインに合わせて `Width` と `Height` を計算 +- **透かし:** `Aspose.Html.Drawing` を使って保存前にロゴをオーバーレイ + +これらのアイデアで、シンプルな **HTMLからPNGを作成** スニペットからフル機能の画像生成サービスへと拡張できます。 + +--- + +## Conclusion + +Aspose.HTML for .NET を使って **HTMLからPNGを作成** するために必要なすべての手順を解説しました:ドキュメントの読み込み、**画像の幅と高さを設定**、ヒンティングでテキストを調整、そして最終的に **HTMLをPNGとして保存**。完全なコード例はそのままプロジェクトに組み込めますし、上記のヒントで一般的なトラブルを回避できます。 + +これで **HTMLを画像にレンダリング** できるようになったので、スタイルを変えてみたり、バッチ処理に挑戦したり、同じパイプラインで PDF へ変換したりと、可能性は無限です。ぜひ試してみて、結果や質問をコメントで共有してください! + +![HTMLからPNGを作成する例](/images/create-png-from-html.png "Aspose.HTMLを使用した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/japanese/net/html-extensions-and-conversions/_index.md b/html/japanese/net/html-extensions-and-conversions/_index.md index 4110fd8e8..50b5cdcc4 100644 --- a/html/japanese/net/html-extensions-and-conversions/_index.md +++ b/html/japanese/net/html-extensions-and-conversions/_index.md @@ -40,9 +40,15 @@ Aspose.HTML for .NET は単なるライブラリではありません。Web 開 ### [Aspose.HTML を使用して .NET で HTML を PDF に変換する](./convert-html-to-pdf/) Aspose.HTML for .NET を使用すると、HTML を PDF に簡単に変換できます。ステップ バイ ステップ ガイドに従って、HTML から PDF への変換のパワーを解放しましょう。 +### [C# で HTML を PDF に保存 – フォント付き 完全ガイド](./save-html-as-pdf-in-c-complete-guide-with-fonts/) +Aspose.HTML for .NET を使用して、フォントを埋め込んだ状態で C# から HTML を PDF に変換する手順をステップバイステップで解説します。 + ### [HTML から PDF を作成する – C# ステップバイステップ ガイド](./create-pdf-from-html-c-step-by-step-guide/) Aspose.HTML for .NET を使用して、C# で HTML から PDF を作成する手順をステップバイステップで解説します。 +### [HTML から PDF を作成 – 開発者向けステップバイステップガイド](./create-pdf-from-html-step-by-step-guide-for-developers/) +Aspose.HTML for .NET を使用して、開発者向けに HTML から PDF を作成する手順をステップバイステップで解説します。 + ### [スタイル付きテキストで HTML ドキュメントを作成し、PDF にエクスポートする – 完全ガイド](./create-html-document-with-styled-text-and-export-to-pdf-full/) Aspose.HTML for .NET を使用して、スタイル付きテキストを含む HTML ドキュメントを作成し、PDF にエクスポートする手順を詳しく解説します。 @@ -75,9 +81,13 @@ Aspose.HTML for .NET を使用して、HTML コンテンツを ZIP アーカイ ### [C# で HTML を Zip に圧縮する方法 – HTML を Zip に保存](./how-to-zip-html-in-c-save-html-to-zip/) C# と Aspose.HTML を使用して、HTML コンテンツを Zip アーカイブに保存する手順をステップバイステップで解説します。 + ### [C# で HTML を ZIP に保存 – 完全インメモリ例](./save-html-to-zip-in-c-complete-in-memory-example/) Aspose.HTML for .NET を使用して、HTML をメモリ内で ZIP アーカイブに保存する手順をステップバイステップで解説します。 +### [C# で HTML を ZIP に保存 – 完全ガイド](./save-html-as-zip-in-c-complete-guide/) +Aspose.HTML for .NET を使用して、HTML コンテンツを ZIP アーカイブとして保存する完全ガイドをステップバイステップで紹介します。 + ## 結論 結論として、HTML の拡張と変換は、現代の Web 開発に不可欠な要素です。Aspose.HTML for .NET はプロセスを簡素化し、あらゆるレベルの開発者が利用できるようにします。当社のチュートリアルに従うことで、幅広いスキルを備えた熟練した Web 開発者になるための道を順調に進むことができます。 diff --git a/html/japanese/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/japanese/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..bbb17c2bb --- /dev/null +++ b/html/japanese/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,207 @@ +--- +category: general +date: 2026-02-27 +description: C# の完全なサンプルで HTML から PDF を素早く作成します。HTML を PDF に変換する方法、HTML を PDF として保存する方法、ベストプラクティス設定で + HTML を PDF にエクスポートする方法を学びましょう。 +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: ja +og_description: C#でHTMLからPDFを作成する、すぐに実行できるサンプル付き。このガイドでは、HTMLをPDFに変換し、HTMLをPDFとして保存し、HTMLをPDFへエクスポートする手順を詳しく解説します。 +og_title: HTMLからPDFを作成する – 完全C#チュートリアル +tags: +- C# +- PDF +- HTML +title: HTMLからPDFを作成する – 開発者向けステップバイステップガイド +url: /ja/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +lists. + +Now produce final content. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTMLからPDFを作成 – 完全なC#チュートリアル + +**HTMLからPDFを作成**したいけれど、どの API 呼び出しを使えばいいのか分からないことはありませんか? あなたは一人ではありません。レポートダッシュボード、請求書ジェネレータ、あるいは静的サイトエクスポーターを構築している場合でも、HTML を PDF に変換することは、モダンな Web 中心のアプリケーションにおいて頻繁に求められる要件です。 + +このチュートリアルでは、**HTML を PDF に変換**し、鮮明な出力のためにレンダリングオプションを設定し、最終的に **HTML を PDF としてディスクに保存**する **完全で実行可能な C# サンプル**を順を追って解説します。最後まで読めば、**HTML を PDF にエクスポート**するための堅牢で本番環境でも使えるパターンが手に入り、任意の .NET プロジェクトに組み込めるようになります。 + +## 学べること + +- `HTMLDocument` を使ってローカルの HTML ファイルを読み込む方法 +- フォントの太さ、画像の滑らかさ、テキストのヒンティングを向上させるレンダリングオプション +- **HTML を PDF にエクスポート**するための `Save` メソッドの正確な呼び出し方 +- 大容量ドキュメントの取り扱い、一般的な落とし穴のデバッグ、結果の検証に関するヒント +- 今日すぐに実行できる、コピー&ペースト可能な完全コードサンプル + +### 前提条件 + +- .NET 6+(または .NET Framework 4.7+)。本チュートリアルで使用する API は両方で動作します。 +- 仮想の `HtmlToPdfLib` への参照(実際に使用しているライブラリ名に置き換えてください)。 +- `input.html` ファイルを任意のフォルダー(ここでは `YOUR_DIRECTORY` と呼びます)に配置しておくこと。 + +これらが揃っていれば、追加のセットアップは不要です。さっそく始めましょう。 + +## Step 1: Load the HTML Document to **Create PDF from HTML** + +最初に必要なのは、ソースファイルを指す `HTMLDocument` インスタンスです。これは、執筆を始める前にノートブックを開くようなものです。ドキュメントがなければ、何もレンダリングできません。 + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **Why this matters:** HTML ファイルを早めに読み込むことで、ライブラリは DOM を解析し、CSS を解決し、画像を事前にロードできます。このステップを省略したり、構文が不正な HTML を渡すと、**html to pdf conversion** 時に空白ページが生成されることが多くなります。 + +## Step 2: Configure Rendering Options for **HTML to PDF Conversion** + +レンダリングオプションは、普通の PDF をプロフェッショナルな仕上がりに変える秘密の調味料です。ここでは太字フォント、画像のアンチエイリアス、テキストのヒンティングを有効にします。多くの開発者が見落としがちですが、視覚的忠実度を劇的に向上させます。 + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **Pro tip:** ブランド固有のフォントを使用する場合は、`pdfOptions` 内でも `FontFamily` を設定してください。これにより、**convert HTML to PDF** 時に汎用フォントへフォールバックすることを防げます。 + +## Step 3: Save the File and **Export HTML to PDF** + +ドキュメントが読み込まれ、オプションが調整されたら、最後は PDF をディスクに書き出す一行です。`Save` メソッドは内部で **html to pdf conversion** を実行し、先ほど設定したすべてのレンダリング調整を適用します。 + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **What you should see:** 任意のビューアで `output.pdf` を開くと、元の HTML レイアウトがそのまま表示され、見出しは太字、画像は滑らか、テキストは鮮明です。スタイルが欠けている場合は、`input.html` からの相対パスで CSS ファイルが正しく参照できているか確認してください。 + +![HTMLからPDFを作成した例](/images/create-pdf-from-html.png "生成された PDF のスクリーンショット – HTMLからPDFを作成") + +*上記のスクリーンショット(代替テキスト: “HTMLからPDFを作成した例”)は、元の HTML スタイルを保持したレンダリング済み PDF を示しています。* + +## Common Pitfalls When You **Convert HTML to PDF** + +シンプルなフローでも、開発者はしばしば問題に直面します。以下に最も頻出する 3 つの課題と回避策を示します。 + +### 1. Missing Resources (Images, CSS, Fonts) + +HTML が相対パスで外部アセットを参照している場合、コンバータがそれらを見つけられないことがあります。必ず絶対パスを使用するか、ベース URL を設定してください。 + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. Large Documents Trigger Timeouts + +ページ数の多いレポートを処理する際は、ライブラリのタイムアウト設定を伸ばす必要があります。 + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. Font Substitution Leads to Unexpected Appearance + +必要なフォントファミリーを明示的に指定してください。 + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +これらの対策を早めに講じることで、**save HTML as PDF** 操作中のフラストレーションの原因となるデバッグ作業を回避できます。 + +## Advanced: Adding a Cover Page Before You **Export HTML to PDF** + +カスタム表紙が必要なケースもあります。たとえばロゴ付きのタイトルページなどです。メインドキュメントの前にシンプルな HTML スニペットを付加すれば実現できます。 + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **Why you’d do this:** 表紙を HTML で直接追加すれば、PDF 生成パイプラインがシンプルになり、iText や PdfSharp といったポストプロセッシングツールを使う必要がなくなります。 + +## Verifying the Output Programmatically + +CI パイプラインなどで PDF が正しく生成されたかを検証したい場合、ファイルサイズやページ数をチェックできます。 + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +ページ数が 0 でなければ、**convert HTML to PDF** ステップが正常に完了したことが確認できます。 + +## Recap & Next Steps + +ここまでで、C# で **HTMLからPDFを作成**する **完全なエンドツーエンド例** を体験しました。流れは以下の通りです。 + +1. ソース HTML を `HTMLDocument` で読み込む +2. `PdfRenderingOptions` でレンダリングを微調整 +3. `Save` を呼び出して **HTML を PDF にエクスポート** + +次に取り組めること例: + +- **バッチ処理**:フォルダー内の HTML ファイルを一括で PDF に変換 +- **動的 HTML**:Razor ビューエンジンで HTML をその場で生成し、変換前に組み込む +- **セキュリティ**:ユーザー提供の HTML を受け付ける場合はサンドボックス化してスクリプトインジェクションを防止 + +さまざまなオプションを試してみてください。たとえばアーカイブ目的で `PdfA` 準拠に切り替えたり、インタラクティブ PDF 用に JavaScript を埋め込んだりできます。コアパターンは変わりませんので、**save HTML as PDF** の要件に対して信頼できる基盤が手に入りました。 + +--- + +*Happy coding! If you run into any quirks, drop a comment below or check out the library’s GitHub issues page. The community is great at sharing tweaks that make **html to pdf conversion** even smoother.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/japanese/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/japanese/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..053287937 --- /dev/null +++ b/html/japanese/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,274 @@ +--- +category: general +date: 2026-02-27 +description: Aspose.HTML を使用して C# で HTML を PDF にすばやく保存します。HTML を PDF に変換する方法や、カスタムフォントとスタイリングを使用して + HTML から PDF を生成する方法を、数ステップで学びましょう。 +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: ja +og_description: Aspose.HTML を使用して C# で HTML を PDF にすばやく保存します。このチュートリアルでは、HTML を PDF + に変換する方法、HTML から PDF を生成する方法、カスタムフォントを適用する方法を示します。 +og_title: C#でHTMLをPDFに保存する – フォント付き完全ガイド +tags: +- csharp +- pdf +- html +title: C#でHTMLをPDFに保存する – フォント付き完全ガイド +url: /ja/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#でHTMLをPDFとして保存 – フォント付き完全ガイド + +C# アプリケーションから **HTML を PDF として保存** したいと思ったことはありませんか?どのライブラリを選べば良いか分からずに悩んだことがある開発者は少なくありません。請求書、レポート、印刷可能な領収書などを Web コンテンツから直接出力したいときに、この壁にぶつかります。 + +朗報です!Aspose.HTML を使えば **HTML から PDF へ変換**、**HTML から PDF を生成**、さらには **フォント付き PDF を作成** することが数行のコードで可能です。本チュートリアルでは、全工程を順に解説し、各設定の意味を説明しながら、すぐに実行できるサンプルを提供します。 + +## 学べること + +- C# でローカルまたはリモートの HTML ファイルを読み込む方法 +- 太字・斜体フォント、アンチエイリアス、テキストヒンティングを有効にするレンダリングオプション +- 結果をディスク上の PDF ファイルとして保存する手順 +- カスタムフォントの扱い方とよくある落とし穴への対処法 + +Aspose.HTML の事前知識は不要です。必要なのは .NET 開発環境(Visual Studio 2022 以降)と Aspose.HTML for .NET の NuGet パッケージだけです。 + +## 前提条件 + +| 必要条件 | 理由 | +|-------------|----------------| +| .NET 6.0 以降 | Aspose.HTML が動作するランタイムを提供 | +| Aspose.HTML for .NET (NuGet) | 実際の変換処理を行うライブラリ | +| サンプル HTML ファイル (`sample.html`) | 変換対象となるソースコンテンツ | +| 基本的な C# の知識 | コードスニペットを理解するため | + +これらが揃ったら、さっそく始めましょう。 + +## 手順 1: NuGet で Aspose.HTML をインストール + +Visual Studio でプロジェクトを開き、**Dependencies** ノードを右クリックして **Manage NuGet Packages** を選択します。`Aspose.HTML` を検索し、**Install** をクリックします。 + +```powershell +dotnet add package Aspose.HTML +``` + +> **プロのコツ:** 最新の安定版(2026‑02‑27 時点では 23.11)を使用すると、最新のレンダリング改善が利用できます。 + +## 手順 2: ソース HTML ドキュメントを読み込む + +最初に必要なのは、ファイルを指す `HTMLDocument` オブジェクトです。このクラスはマークアップを解析し、CSS を解決し、レンダリングの準備を行います。 + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **なぜこの手順が必要か?** +> HTML を `HTMLDocument` にロードすることで、パース段階とレンダリング段階を分離できます。これにより、PDF を生成する前に DOM を確認したり、実行時に変更を加えたりできます。 + +## 手順 3: PDF レンダリングオプションを設定 + +Aspose.HTML は最終 PDF の外観を細かく制御できます。この例では、太字+斜体フォント、滑らかなグラフィックのためのアンチエイリアス、低 DPI 出力でも鮮明になるテキストヒンティングを有効にします。 + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### これらの設定の理由 + +- **`FontStyle`** – `` や `` タグをベースフォントにマージし、PDF が元のスタイリングを保持できるようにします。 +- **`UseAntialiasing`** – グラフやアイコン、ラスタライズされたコンテンツのギザギザを減らします。 +- **`UseHinting`** – グリフの輪郭をピクセルグリッドに合わせ、低解像度デバイスでも文字がくっきり見えるようにします。 + +カスタムフォント(例: 企業ブランドフォント)を使用したい場合は、`.ttf` ファイルをフォルダーに配置し、`pdfRenderOptions.FontProvider` を設定します。これは別テーマになりますが、基本的なイメージは次の通りです。 + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## 手順 4: HTML ドキュメントを PDF にレンダリング + +ドキュメントとオプションを組み合わせ、Aspose.HTML に出力ファイルを書き出すよう指示します。 + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +この行が実行されると、実行ファイルと同じディレクトリに `output.pdf` が生成されます。開いてみてください。太字・斜体のスタイリングが反映され、グラフィックが滑らかで、文字が鮮明に表示されているはずです。 + +> **期待される結果:** +> `sample.html` のレイアウトを忠実に再現した PDF。見出しは太字、強調テキストは斜体、埋め込み画像はジャギーなしで描画されます。 + +## 手順 5: 検証と微調整(任意) + +### 簡易検証スクリプト + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +PDF が期待通りでない場合は、以下の一般的な調整を検討してください。 + +| 問題 | 想定原因 | 対策 | +|-------|--------------|-----| +| フォントが欠落 | フォントが埋め込まれていない、または見つからない | `FontProvider.AddFont` を使用し、フォントファイルへのパスを確保 | +| 画像がぼやける | アンチエイリアスが無効 | `UseAntialiasing = true` に設定 | +| 文字が画面上で細すぎる | ヒンティングが無効 | `UseHinting = true` を有効化 | +| ページ区切りでレイアウトがずれる | CSS の `page-break` ルールが無視される | HTML/CSS に明示的な `page-break-before/after` を追加 | + +## 完全動作サンプル + +以下は新規コンソール アプリにそのまま貼り付けられる完全プログラムです。using ディレクティブ、エラーハンドリング、コメントをすべて含んでいます。 + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +プロジェクトを実行(`dotnet run`)すると、成功メッセージとともに新しく作成された `output.pdf` が表示されます。 + +## よくある質問とエッジケース + +### URL から **HTML を PDF に変換** できますか? + +もちろんです。ファイルパスの代わりに URL 文字列を指定するだけです。 + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +Aspose.HTML がページをダウンロードし、外部リソースを解決してレンダリングします。 + +### 大容量の HTML ファイルや複数ページの場合は? + +Aspose.HTML はストリーミングで処理するため、メモリ使用量は抑えられます。各 HTML セクションを別ページにしたい場合は、HTML に手動でページブレークを挿入してください。 + +```html +
+``` + +### **.NET Core** や **.NET 7** でも動作しますか? + +はい。ライブラリはクロスプラットフォーム対応で、対象フレームワーク(net6.0、net7.0 など)に合わせて NuGet パッケージをインストールすれば動作します。 + +### 完全な PDF ポータビリティのために **フォントを埋め込む** 方法は? + +先ほどの `pdfRenderOptions.FontProvider` 設定に加えて、フォント埋め込みを有効にします。 + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +これにより、ローカルにフォントがインストールされていなくても、どのマシンでも同一の見た目で PDF が表示されます。 + +## ビジュアル例 + +![HTMLをPDFとして保存する例](example.png){alt="HTMLをPDFとして保存する例"} + +*スクリーンショットは Adobe Acrobat で開いた生成 PDF を示しています。太字・斜体スタイルと滑らかな画像が保持されています。* + +## まとめ + +C# で **HTML を PDF として保存** するために必要なすべてを網羅しました。マークアップの読み込み、レンダリングオプションの設定、最終 PDF の書き出しまで、手順はシンプルで高度にカスタマイズ可能です。 + +このガイドに従えば、**HTML から PDF への変換**、**HTML から PDF の生成**、**フォント付き PDF の作成** があらゆるレポートや文書生成シナリオで簡単に実現できます。さらにウォーターマーク、暗号化、カスタムページサイズなどのオプションにも挑戦してみてください。Aspose.HTML はその柔軟性を提供します。 + +**次のステップ例** + +- `PdfSaveOptions` クラスで PDF バージョンや圧縮レベルを設定 +- 複数の `HTMLDocument` インスタンスを結合して、マルチセクションレポートを作成 +- このワークフローを ASP.NET Core API に統合し、Web サービスからオンデマンドで PDF を返却 + +エッジケースやレンダリングパイプラインの調整で質問があれば、下のコメント欄にどうぞ。Happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/japanese/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/japanese/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..a37ee579e --- /dev/null +++ b/html/japanese/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-02-27 +description: C# の ZipArchive を使用して HTML を ZIP として保存 – カスタムリソースハンドラを用いたステップバイステップの例、HTML + を ZIP にエクスポートする方法や zip アーカイブを作成する C# コードのヒントを含む。 +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: ja +og_description: C# の ZipArchive を使用して HTML を ZIP に保存します。完全なサンプル、カスタムリソースハンドラ、ベストプラクティスを通じて、HTML + を ZIP にエクスポートする方法を学びましょう。 +og_title: C#でHTMLをZIPとして保存する – 完全ガイド +tags: +- C# +- ZipArchive +- HTML export +title: C#でHTMLをZIP形式で保存する – 完全ガイド +url: /ja/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# で HTML を ZIP として保存 – 完全ガイド + +HTML を **ZIP として保存** したいと思ったことはありませんか?どの .NET クラスを使えば良いか分からないこともあるでしょう。実は多くの開発者が、オフラインでの利用や配布のために Web ページとそのアセットをまとめたいときに同じ壁にぶつかります。朗報です!組み込みの `System.IO.Compression.ZipArchive` を使えば、数行のコードで実現でき、各リソースの書き込み方法もきれいに制御できます。 + +このチュートリアルでは、**完全で実行可能なサンプル** を通して、HTML ドキュメントを ZIP ファイルにエクスポートする方法を詳しく解説します。カスタム `ResourceHandler` を使って各アセットをアーカイブにストリームしながら、途中で **c# ziparchive example** のコードスニペットを紹介し、実務での **how to export html to zip** のシナリオを議論し、**create zip archive c#** プログラムを堅牢にするための微妙な違いにも触れます。 + +> **Prerequisites** – .NET 6+(または .NET Core 3.1)と、`HTMLDocument`、`HTMLSaveOptions`、`ResourceHandler` を提供するライブラリへの参照が必要です。Aspose.HTML などのパッケージを使用している場合は、NuGet で追加するだけで済みます。その他のサードパーティツールは不要です。 + +--- + +## このチュートリアルでカバーする内容 + +- HTML ファイルとそのリンクされたリソースを受け取る **ZipArchive** の設定方法。 +- 各リソースストリームをアーカイブに振り分ける **カスタムリソースハンドラ**(`ZipHandler`)の実装方法。 +- **HTMLSaveOptions** を使って全体を結び付け、実際に **HTML を ZIP として保存** する手順。 +- パスや重複エントリ、大容量アセットを扱う際の一般的な落とし穴。 +- マニフェストファイルの追加や ZIP の暗号化など、ソリューションを拡張するためのヒント。 + +最後まで読むと、任意の C# プロジェクトに **HTML を ZIP として保存** できる自己完結型メソッドが手に入ります。 + +--- + +## Step 1: 必要な名前空間を追加 + +コードを実行する前に、コンプレッション関連クラスと使用している HTML ライブラリをコンパイラに認識させておきます。 + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*ポイント:* `System.IO.Compression` が `ZipArchive` を提供し、`Aspose.Html` 名前空間が `HTMLDocument`、`HTMLSaveOptions`、そして拡張対象の `ResourceHandler` を公開します。他の HTML エンジンを使用している場合は、同等の型を探してください。 + +--- + +## Step 2: カスタムリソースハンドラを作成(主要キーワードの実装) + +**HTML を ZIP として保存** の核心は、エンジンに対して外部リソース(画像、CSS、スクリプト)の保存先を指示することです。`ResourceHandler` を継承することで、データを受け取るストリームを制御できます。 + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**重要ポイント** + +- `info.Uri` は HTML エンジンが書き込みを試みる相対 URL です。これをエントリ名として使用すれば、ZIP 内でフォルダー構造がそのまま保たれます。 +- `CreateEntry` は必要なディレクトリを自動的に作成します。自分で管理する必要はありません。 +- 開いたストリームを返すことで、エンジンはデータを直接ストリームへ書き込みます。中間ファイルや余分なメモリコピーは発生しません。 + +--- + +## Step 3: ZipArchive を初期化 + +ここで **Update** モードの `ZipArchive` を作成します。このモードではエントリを随時追加でき、コードを複数回実行した場合は既存エントリを上書きできます。 + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*プロのコツ:* `FileMode.Create` を使えば既存ファイルを上書きできます。既存アーカイブに追記したい場合は `FileMode.OpenOrCreate` に切り替えてください。また、`ZipArchive` を `using` 文で囲むことで、アーカイブが確実に破棄され、ファイルハンドルが解放されます。 + +--- + +## Step 4: エクスポートしたい HTML ドキュメントを読み込む + +ここでライブラリに対象の HTML ファイルを指示します。ドキュメントは CSS、画像、JavaScript など、同じフォルダーにあるリソースを参照することがあります。 + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +HTML に相対 URL が含まれている場合、プロセスの作業ディレクトリがそれらアセットが格納されたフォルダーと一致していることを確認してください。そうでないとエンジンがリソースを見つけられず、ZIP にファイルが欠落します。 + +--- + +## Step 5: 保存オプションを設定 – 本番の「HTML を ZIP として保存」瞬間 + +ここで `ZipHandler` を `HTMLSaveOptions` に結び付けます。`SaveFormat` を `ZIP` に設定することで、ライブラリはすべてを一つのアーカイブにまとめ、ハンドラが各要素の保存先を決定します。 + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*ポイント:* `ResourceHandler` を設定しないと、ライブラリはリソースをファイルシステムに書き出してしまい、**how to export html to zip** の目的が失われます。 + +--- + +## Step 6: 保存処理を実行 + +最後に、先ほど構築したオプションを使ってドキュメント自身に保存を指示します。ライブラリは外部アセットを検出するたびに `ZipHandler.HandleResource` を呼び出します。 + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +`using` ブロックが終了すると、アーカイブは確定され、配布可能なファイルが完成します。 + +--- + +## 完全動作サンプル(全ステップ統合) + +以下はコンソールアプリにそのまま貼り付けられる完全プログラムです。**c# ziparchive example** として **creates zip archive c#** スタイルを示し、**how to export html to zip** の疑問に完全に答えます。 + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**期待される結果:** プログラム実行後、`output.zip` には `index.html`(または設定した名前)と、元ページが参照しているすべての画像、スタイルシート、スクリプトがフォルダー階層を保ったまま格納されます。ZIP を展開し `index.html` をダブルクリックすれば、オンライン時と同様にページが表示されますが、今度はポータブルなパッケージになっています。 + +--- + +## よくあるエッジケースと対処法 + +| Situation | Why it Happens | Suggested Fix | +|-----------|----------------|---------------| +| **Duplicate resource names**(同名リソースが異なるフォルダーにある) | `CreateEntry` は同一エントリ名が既に存在すると `InvalidOperationException` をスローします。 | エントリ名に相対パス(`info.Uri` が既に実装)を付与するか、作成前に名前をサニタイズしてください。 | +| **Large binary assets**(動画や高解像度画像) | 直接ストリームで書き込むのは問題ありませんが、デフォルトのバッファサイズがメモリ使用量を増やす可能性があります。 | `HandleResource` をオーバーライドし、`BufferedStream`(例: 64 KB バッファ)でラップして書き込みます。 | +| **Missing resources**(欠損リソース) | HTML に壊れたリンクがあると、ハンドラは存在しないファイルへのリクエストを受け取り、空エントリが作成されます。 | `File.Exists` をチェックしてからエントリを作成するか、警告をログに残して欠損を把握します。 | +| **Unicode filenames**(Unicode ファイル名) | 古い ZIP ツールは UTF‑8 エントリ名を正しく扱えないことがあります。 | .NET 6+ ではデフォルトで UTF‑8 が使用されます。レガシー互換が必要な場合は `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);` を設定してください。 | +| **Need a manifest**(ZIP 内ファイル一覧が欲しい) | 利用者が検証用に `manifest.json` を求めることがあります。 | メイン保存後に新しいエントリ `"manifest.json"` を作成し、`zipArchive.Entries` の JSON リストを書き込みます。 | + +--- + +## 本番向け **HTML を ZIP として保存** 実装のプロ Tips + +1. **出力を検証** – 保存後にプログラムで ZIP を開き、`index.html` が存在し、各エントリの `Length` が 0 より大きいことを確認します。これによりサイレント失敗を早期に検出できます。 +2. **大容量アセットの並列化** – 画像が数十 MB に及ぶ場合、`HandleResource` の呼び出しを `Task` プールにキューイングし、`ZipArchive` の単一書き込み制約を守りつつ並列処理を検討してください。 +3. **圧縮設定の最適化** – `ZipArchive` はデフォルトで Deflate を使用します。JPEG や PNG など既に圧縮済みのファイルには `entry.CompressionLevel = CompressionLevel.NoCompression` を設定して速度を向上させます。 +4. **セキュリティ** – If the ZIP + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/japanese/net/working-with-html-documents/_index.md b/html/japanese/net/working-with-html-documents/_index.md index b81b2fd9c..87ef069f5 100644 --- a/html/japanese/net/working-with-html-documents/_index.md +++ b/html/japanese/net/working-with-html-documents/_index.md @@ -38,6 +38,7 @@ HTML ドキュメントは Web のバックボーンであり、それを効果 ### [カスタムリソースハンドラを使用した C# での HTML 保存完全ガイド](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) ### [CSS と C# で見出しを太字にする方法 – 完全ステップバイステップガイド](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) +### [C# で HTML を ZIP として保存する完全ガイド – カスタムリソースハンドラ](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/japanese/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/japanese/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..6b2b708cf --- /dev/null +++ b/html/japanese/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,236 @@ +--- +category: general +date: 2026-02-27 +description: C# のカスタムリソースハンドラを使用して HTML を ZIP として保存し、C# で ZIP アーカイブを作成します。HTML とそのアセットをまとめるステップバイステップのチュートリアルをご覧ください。 +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: ja +og_description: カスタムリソースハンドラを使用して、C#でHTMLをZIPとして保存します。C#でZIPアーカイブを作成し、リソースを簡単に埋め込む方法を学びましょう。 +og_title: C#でHTMLをZIPとして保存 – 完全チュートリアル +tags: +- Aspose.HTML +- C# +- ZIP +title: C#でHTMLをZIPとして保存 – カスタムリソースハンドラ付き完全ガイド +url: /ja/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# で HTML を ZIP として保存 – カスタムリソースハンドラ付き 完全ガイド + +HTML ページと画像、CSS、JavaScript ファイルを一緒に出荷したいとき、**HTML を ZIP として保存**する方法で悩んだことはありませんか? 同じ壁にぶつかる開発者は多いです。朗報です! Aspose.HTML を使えば数ステップで実現でき、**カスタムリソースハンドラ**を使うことで手間なく処理できます。 + +このチュートリアルでは、ライブラリのインストールから、リソースを **C# で ZIP アーカイブに直接ストリーム**するハンドラの作成、最終パッケージの検証まで、必要なすべてを解説します。最後まで読めば、任意の .NET プロジェクトにすぐ組み込めるソリューションが手に入ります。 + +![Save HTML as ZIP example](/images/save-html-as-zip.png "HTML が ZIP ファイルとして保存される様子を示す図") + +## Save HTML as ZIP – 本ガイドでカバーする内容 + +以下のパイプラインを網羅します。 + +1. **前提条件** – 必要最低限のツールとパッケージ。 +2. **カスタムリソースハンドラ** – 必要性と実装方法。 +3. **C# で ZIP アーカイブを作成** – `System.IO.Compression` の使用例。 +4. **Aspose.HTML の保存オプション** をハンドラに紐付ける方法。 +5. **コード実行と出力確認**。 + +C# の基本構文に慣れていて、Visual Studio(または VS Code)がインストール済みならすぐに始められます。外部ドキュメントは不要です—ここにすべて揃っています。 + +--- + +## Step 1: プロジェクトのセットアップと Aspose.HTML のインストール + +コードを書く前に、プロジェクトが Aspose.HTML ライブラリを参照できるようにします。 + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*プロのコツ:* 最新の NuGet パッケージ(2026 年 2 月時点)は .NET 6+ を対象としているため、レガシーフレームワークを気にせずモダンな SDK スタイルのプロジェクトで利用できます。 + +パッケージが復元されたら `Program.cs` を開きます。後ほどサンプル全体に差し替えますが、今はファイルを開いたままにしておいてください。 + +--- + +## カスタムリソースハンドラの実装 + +### カスタムリソースハンドラが必要な理由 + +Aspose.HTML が HTML ドキュメントを ZIP パッケージとして保存する際、外部リソース(画像、フォント、スクリプト)をすべて取得してどこかに書き出す必要があります。デフォルトでは一時フォルダーに書き出しますが、**カスタムリソースハンドラ**を提供すれば、各リソースを直接 ZIP アーカイブへ書き込む場所を指定できます。これにより余計な I/O が省かれ、整理された状態で保存でき、名前付けも自由にコントロールできます。 + +### コード: ハンドラクラス + +`MyHandler.cs` という新しいクラスファイルを作成するか、デモ用に `Program.cs` に直接書き込んでも構いません。 + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**解説:** +* `ResourceHandler` は Aspose.HTML が提供する抽象クラスで、リソース取得をフックできます。 +* `ZipArchiveEntry.Open()` で取得した `Stream` を返すことで、ライブラリに対して ZIP ファイル内への書き込みパイプを直接渡しています。これにより一時ファイルは不要で、クリーンアップも不要です。 + +--- + +## C# で ZIP アーカイブを作成 + +ハンドラの準備ができたら、実際に書き込む場所を用意します。`.NET` の `ZipArchive` クラスがその役割を担います。 + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### 何が行われているか + +1. `logo.png` を参照した **インメモリ HTML ドキュメント** を作成。 +2. `output.zip` になる **FileStream** を開く。 +3. `MyHandler` の static フィールドに `ZipArchive` を割り当て。 +4. `HTMLSaveOptions` を `SaveFormat.ZIP` に設定し、ハンドラを添付。 +5. `document.Save` を呼び出す – Aspose.HTML が HTML を解析し、`logo.png` を取得して `MyHandler` 経由でアーカイブにストリームします。 + +ハンドラはリソース URI(`logo.png`)をエントリ名として使用するため、生成された ZIP には元の相対パスと同名のファイルが入ります。 + +--- + +## ZIP パッケージ用の保存オプション設定 + +`HTMLSaveOptions` オブジェクトは、Aspose.HTML に **どのように** 出力をパッケージ化するか指示する場所です。`ResourceHandler` に加えて、いくつか便利なプロパティを調整できます。 + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*`EnableCompression` にこだわる理由* +大きな画像を扱う場合、圧縮を有効にすると最終アーカイブが最大 70 % 縮小されることがあります。ただし、既に圧縮済みの PNG では効果が小さいため、保存速度を優先したいときはオフにしても構いません。 + +--- + +## コード実行と出力の検証 + +プログラムをビルドして実行します。 + +```bash +dotnet run +``` + +コンソールに成功メッセージが表示されるはずです。表示されたディレクトリに移動し、`output.zip` を開いてみてください。中身は以下の通りです。 + +- `index.html` – 保存された HTML ファイル。 +- `logo.png` – マークアップで参照された画像。 + +ZIP 内の `index.html` を直接開く(多くの OS のファイルエクスプローラはプレビュー機能を提供)と、元の文字列と同じ見出しと画像が正しく表示されます。 + +**考慮すべきエッジケース** + +| 状況 | 対応策 | +|-----------|------------| +| HTML が **リモート URL**(例: `https://example.com/style.css`)を参照している | ハンドラは依然として `ResourceInfo.Uri` を受け取ります。環境がその URL に到達できることを確認するか、事前にリソースをダウンロードしてローカルパスに書き換えてください。 | +| ZIP 内に **フォルダー階層**(例: `images/logo.png`)が必要 | `HandleResource` を修正し、`var entry = ZipArchive.CreateEntry($"assets/{info.Uri}");` のようにフォルダー名を前置します。 | +| リソースの取得に **失敗**(404)した場合 | ハンドラは呼び出されますが、ストリームには 0 バイトが書き込まれます。`try/catch` で `document.Save` をラップし、必要に応じて `info.Status` をチェックして独自のエラーハンドリングを実装してください。 | + +--- + +## まとめ: 1 つのコンパクトフローで HTML を ZIP に保存 + +- **主目的:** C# で HTML ページとすべての外部アセットを単一の ZIP ファイルにまとめる。 +- **主要ツール:** Aspose.HTML(`HTMLDocument`, `HTMLSaveOptions`)、`System.IO.Compression.ZipArchive`、そして **カスタムリソースハンドラ**。 +- **結果:** 配布、保存、ネットワーク送信が可能なポータブルな `output.zip` が生成され、リソースリンクを失うことなく後から展開できます。 + +--- + +## 次のステップ: ワークフローの拡張 + +**HTML を ZIP として保存** に慣れたら、以下のシナリオにも挑戦できます。 + +- **HTML を PDF に保存** – `SaveFormat.ZIP` を `SaveFormat.PDF` に置き換え、オプションを調整。 +- **フォント埋め込み** – HTML に `@font-face` を記述し、ハンドラでフォントファイルを取得。 +- **バッチ処理** – 複数の HTML 文字列をループ処理し、同一 `ZipArchive` に複数ドキュメントを格納してマルチドキュメントパッケージを作成。 + +これらすべては、今回学んだ **カスタムリソースハンドラ** パターンと **C# で ZIP アーカイブを作成** するテクニックをベースにしています。 + +--- + +### 最後に + +Aspose.HTML を活用すれば、C# で **HTML を ZIP として保存**する作業がいかに簡単かをご体感いただけたはずです。 + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/korean/net/generate-jpg-and-png-images/_index.md b/html/korean/net/generate-jpg-and-png-images/_index.md index 2f2fd11d0..85f6733c4 100644 --- a/html/korean/net/generate-jpg-and-png-images/_index.md +++ b/html/korean/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML for .NET을 .NET 프로젝트에 통합하는 것은 번거롭지 DOCX 문서를 PNG 또는 JPG 이미지로 변환할 때 안티앨리어싱을 적용하는 방법을 단계별로 안내합니다. ### [DOCX를 PNG로 변환하고 ZIP 아카이브 만들기 C# 튜토리얼](./convert-docx-to-png-create-zip-archive-c-tutorial/) C#을 사용해 DOCX 파일을 PNG 이미지로 변환하고, 결과를 ZIP 파일로 압축하는 방법을 단계별로 안내합니다. +### [C#에서 HTML을 PNG로 만들기 – 단계별 가이드](./create-png-from-html-in-c-step-by-step-guide/) +C#을 사용해 HTML을 PNG 이미지로 변환하는 방법을 단계별로 안내합니다. ## 결론 diff --git a/html/korean/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/korean/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..3f707fc95 --- /dev/null +++ b/html/korean/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-02-27 +description: C#에서 Aspose.HTML을 사용하여 HTML을 빠르게 PNG로 만들기. HTML을 이미지로 렌더링하고, 이미지의 너비와 + 높이를 설정하며, HTML을 몇 분 안에 PNG로 변환하는 방법을 배워보세요. +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: ko +og_description: Aspose.HTML를 사용하여 HTML에서 PNG 만들기. 이 가이드는 HTML을 이미지로 렌더링하고, 이미지의 너비와 + 높이를 설정하며, HTML을 효율적으로 PNG로 변환하는 방법을 보여줍니다. +og_title: C#로 HTML에서 PNG 만들기 – 완전 튜토리얼 +tags: +- Aspose.HTML +- C# +- Image Rendering +title: C#에서 HTML을 PNG로 만들기 – 단계별 가이드 +url: /ko/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#에서 HTML을 PNG로 만들기 – 완전 튜토리얼 + +웹 페이지를 이메일, 보고서 또는 썸네일용 정적 이미지로 변환하려고 할 때 **HTML에서 PNG 만들기**가 필요했지만 어떤 라이브러리가 픽셀 단위로 완벽한 결과를 제공할지 몰라 고민한 적이 있나요? 당신만 그런 것이 아닙니다—많은 개발자들이 같은 문제에 부딪히곤 합니다. + +좋은 소식은? Aspose.HTML을 사용하면 **HTML을 이미지로 렌더링**하고 정확한 크기를 제어하며 **HTML을 PNG로 저장**하는 작업을 C# 몇 줄만으로 수행할 수 있습니다. 이번 튜토리얼에서는 HTML 파일을 로드하고 텍스트 힌팅을 조정한 뒤 PNG를 디스크에 저장하는 전체 과정을 단계별로 살펴봅니다. 마지막에는 **이미지 너비와 높이 설정**을 프로그래밍 방식으로 하는 방법을 익히고, 어떤 .NET 프로젝트에도 바로 넣어 사용할 수 있는 재사용 가능한 코드를 제공받게 됩니다. + +## 배울 내용 + +- Aspose.HTML을 사용해 HTML 문서를 로드하는 방법 +- `ImageRenderingOptions`와 `TextOptions`의 차이점 및 중요성 +- **HTML을 PNG로 변환**하면서 폰트, 안티앨리어싱, 밑줄 스타일을 보존하는 방법 +- 폰트 누락이나 예상치 못한 이미지 크기와 같은 일반적인 문제 해결 팁 +- Visual Studio에 복사‑붙여넣기만 하면 바로 실행 가능한 완전한 코드 샘플 + +> **Prerequisites:** .NET 6+ (또는 .NET Framework 4.6.2+), NuGet을 통해 설치한 Aspose.HTML for .NET, 그리고 C#에 대한 기본 이해. 다른 외부 도구는 필요하지 않습니다. + +--- + +## Step 1: Load the HTML Document – Starting the PNG Creation + +먼저 소스 파일을 가리키는 `HTMLDocument` 객체가 필요합니다. 이는 **HTML에서 PNG 만들기** 작업의 기본이 됩니다. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*왜 중요한가:* `HTMLDocument` 클래스는 마크업을 파싱하고 CSS를 해석하며, 렌더링 엔진이 나중에 비트맵에 그릴 수 있는 DOM을 구축합니다. 경로가 잘못되면 이후 **HTML을 이미지로 렌더링** 단계에서 `FileNotFoundException`이 발생합니다. + +--- + +## Step 2: Set Image Width Height – Controlling the Output Size + +**HTML을 이미지로 렌더링**할 때는 종종 특정 해상도가 필요합니다—예를 들어 정확히 1200 × 800 픽셀인 썸네일을 만들고 싶을 때 말이죠. 이때 `ImageRenderingOptions`가 빛을 발합니다. + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*Pro tip:* `Width`와 `Height`를 생략하면 Aspose.HTML은 페이지의 자연스러운 크기를 사용합니다. 이는 이메일에 삽입하기엔 너무 클 수 있습니다. + +--- + +## Step 3: Fine‑Tune Text Rendering – Making Text Crisp + +Linux 환경에서는 힌팅을 활성화하지 않으면 텍스트가 흐릿하게 보이는 경우가 많습니다. `TextOptions` 객체를 사용하면 이를 제어할 수 있어 최종 PNG가 모든 플랫폼에서 선명하게 표시됩니다. + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*왜 힌팅이 필요한가?* 힌팅은 각 글리프의 형태를 픽셀 그리드에 맞추도록 조정합니다. 이는 **HTML을 PNG로 변환**할 때 저해상도 디스플레이에서 특히 중요합니다. + +--- + +## Step 4: Combine Options and Add Styling – The Full Render Configuration + +이제 이미지와 텍스트 설정을 병합하고, 전역 폰트 스타일(예: 모든 텍스트에 밑줄) 적용 방법을 보여줍니다. 이 단계가 바로 **HTML을 PNG로 저장**하면서 사용자 정의 스타일을 적용하는 부분입니다. + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*Note:* `WebFontStyle`은 여러 플래그(굵게, 기울임 등)를 지원합니다. 여러 스타일이 필요하면 비트 연산자 OR(`|`)을 사용해 결합하면 됩니다. + +--- + +## Step 5: Render and Save – The Moment You **Create PNG from HTML** + +모든 설정이 끝났다면, DOM을 비트맵에 그려 디스크에 저장하는 한 줄 코드만 남았습니다. + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +이 라인이 실행된 후 지정한 폴더에 `output.png`가 생성되며, 정확히 1200 × 800 픽셀, 안티앨리어싱이 적용된 그래픽과 힌팅된 텍스트가 들어 있습니다. + +--- + +## Full Working Example – Paste, Run, Verify + +아래는 콘솔 앱으로 컴파일할 수 있는 전체 프로그램입니다. 모든 `using` 구문, 오류 처리, 주석이 포함되어 있습니다. + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**Expected result:** 실행 파일 옆에 `output.png` 파일이 생성되고, `sample.html`의 렌더링 결과가 표시됩니다. 이미지 뷰어로 열어 크기와 스타일을 확인해 보세요. + +--- + +## Common Pitfalls & How to Avoid Them + +| Issue | Symptom | Fix | +|-------|----------|-----| +| Missing fonts | 텍스트가 일반적인 sans‑serif로 표시 | 호스트 머신에 필요한 폰트를 설치하거나 HTML에 웹 폰트를 포함 | +| Wrong dimensions | PNG 크기가 예상보다 크거나 작음 | `ImageRenderingOptions`의 `Width`와 `Height` 값을 다시 확인 | +| Blurry edges | 안티앨리어싱이 적용되지 않음 | `UseAntialiasing = true` 설정 | +| Linux rendering artifacts | 텍스트가 흐릿함 | `TextOptions`에서 `UseHinting = true` 설정 | + +*Pro tip:* 헤드리스 서버에서 **HTML을 이미지로 렌더링**할 경우, Linux라면 `libgdiplus`와 같은 필수 시스템 라이브러리가 설치되어 있는지 확인하세요. 그렇지 않으면 Aspose.HTML이 품질이 낮은 소프트웨어 렌더러로 대체될 수 있습니다. + +--- + +## Extending the Solution – Next Steps + +- **배치 변환:** HTML 파일 목록을 순회하면서 동일한 렌더링 로직을 호출해 PNG 갤러리를 생성합니다. +- **다른 포맷:** 파일 확장자를 `output.jpg` 또는 `output.bmp`로 바꾸면 Aspose.HTML이 자동으로 적절한 인코더를 선택합니다. +- **동적 크기 조정:** 반응형 디자인을 위해 HTML의 viewport 메타 태그를 분석해 `Width`와 `Height`를 계산합니다. +- **워터마크:** 저장하기 전에 `Aspose.Html.Drawing`을 사용해 로고를 오버레이합니다. + +이러한 아이디어를 통해 간단한 **HTML에서 PNG 만들기** 스니펫을 전체 기능을 갖춘 이미지 생성 서비스로 확장할 수 있습니다. + +--- + +## Conclusion + +Aspose.HTML for .NET을 이용해 **HTML에서 PNG 만들기**에 필요한 모든 과정을 살펴보았습니다: 문서 로드, **이미지 너비와 높이 설정**, 힌팅을 통한 텍스트 미세 조정, 그리고 최종적으로 **HTML을 PNG로 저장**하는 방법. 완전한 코드 예제가 프로젝트에 바로 삽입할 수 있도록 준비되어 있으며, 위 팁을 통해 흔히 겪는 문제들을 예방할 수 있습니다. + +이제 **HTML을 이미지로 렌더링**하는 방법을 알게 되었으니, 다양한 스타일을 실험하거나 배치 처리, 혹은 같은 파이프라인에서 PDF 변환까지 시도해 보세요. 가능성은 무한하고, 코드는 이미 여러분 손에 있습니다. + +행복한 코딩 되시고, 결과물을 공유하거나 질문이 있으면 댓글로 알려 주세요! + +![Create PNG from HTML example](/images/create-png-from-html.png "Create PNG from HTML using Aspose.HTML") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/korean/net/html-extensions-and-conversions/_index.md b/html/korean/net/html-extensions-and-conversions/_index.md index 38fc3bd7e..f86beef82 100644 --- a/html/korean/net/html-extensions-and-conversions/_index.md +++ b/html/korean/net/html-extensions-and-conversions/_index.md @@ -73,6 +73,12 @@ Aspose.HTML for .NET을 사용하여 스타일이 적용된 텍스트가 포함 Aspose.HTML for .NET을 사용해 HTML을 ZIP 파일로 저장하는 전체 C# 단계별 튜토리얼. ### [C#에서 HTML을 ZIP으로 저장 – 완전 인메모리 예제](./save-html-to-zip-in-c-complete-in-memory-example/) Aspose.HTML for .NET을 사용하여 메모리 내에서 HTML을 ZIP 파일로 저장하는 방법을 단계별로 안내합니다. +### [C#에서 HTML을 ZIP으로 저장 – 전체 가이드](./save-html-as-zip-in-c-complete-guide/) +Aspose.HTML for .NET을 사용해 C#에서 HTML을 ZIP 파일로 저장하는 전체 단계별 가이드를 확인하세요. +### [C#에서 HTML을 PDF로 저장하기 – 글꼴 포함 전체 가이드](./save-html-as-pdf-in-c-complete-guide-with-fonts/) +Aspose.HTML for .NET을 사용해 C#에서 글꼴을 포함한 HTML을 PDF로 저장하는 전체 단계별 가이드를 확인하세요. +### [HTML에서 PDF 만들기 – 개발자를 위한 단계별 가이드](./create-pdf-from-html-step-by-step-guide-for-developers/) +Aspose.HTML for .NET을 활용해 HTML을 PDF로 변환하는 개발자용 단계별 가이드입니다. ## 결론 diff --git a/html/korean/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/korean/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..730423c73 --- /dev/null +++ b/html/korean/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,216 @@ +--- +category: general +date: 2026-02-27 +description: 전체 C# 예제로 HTML에서 PDF를 빠르게 생성하세요. HTML을 PDF로 변환하고, HTML을 PDF로 저장하며, 모범 + 사례 설정으로 HTML을 PDF로 내보내는 방법을 배워보세요. +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: ko +og_description: C#에서 HTML을 PDF로 변환하는 실행 가능한 예제로 PDF를 생성하세요. 이 가이드는 HTML을 PDF로 변환하고, + HTML을 PDF로 저장하며, HTML을 PDF로 내보내는 과정을 단계별로 안내합니다. +og_title: HTML에서 PDF 만들기 – 완전 C# 튜토리얼 +tags: +- C# +- PDF +- HTML +title: HTML에서 PDF 만들기 – 개발자를 위한 단계별 가이드 +url: /ko/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +Tutorial" => Korean: "# HTML에서 PDF 생성 – 완전한 C# 튜토리얼" + +Paragraph: "Ever needed to **create PDF from HTML** but weren’t sure which API calls to use? ..." translate. + +We'll translate each paragraph. + +Make sure to keep **bold** formatting. + +Also keep list items. + +Proceed. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML에서 PDF 생성 – 완전한 C# 튜토리얼 + +HTML을 **PDF로 만들** 필요가 있었지만 어떤 API 호출을 사용해야 할지 몰랐던 적이 있나요? 여러분만 그런 것이 아닙니다. 보고서 대시보드, 청구서 생성기, 정적 사이트 내보내기 등, HTML을 PDF로 변환하는 일은 현대 웹 중심 애플리케이션에서 흔히 요구되는 작업입니다. + +이 튜토리얼에서는 **HTML을 PDF로 변환**하는 **완전하고 실행 가능한 C# 예제**를 단계별로 살펴보고, 선명한 출력물을 위한 렌더링 옵션을 구성한 뒤, 최종적으로 **HTML을 PDF로 저장**하는 방법을 보여드립니다. 끝까지 따라오면 **HTML을 PDF로 내보내기**에 대한 견고하고 프로덕션 수준의 패턴을 얻을 수 있으며, 이를 어떤 .NET 프로젝트에도 바로 적용할 수 있습니다. + +## 배울 내용 + +- `HTMLDocument` 로 로컬 HTML 파일을 로드하는 방법 +- 글꼴 두께, 이미지 부드러움, 텍스트 힌팅을 개선하는 렌더링 옵션 +- 단일 `Save` 메서드로 **HTML을 PDF로 내보내는** 정확한 호출법 +- 대용량 문서 처리, 일반적인 함정 디버깅, 결과 검증 팁 +- 오늘 바로 실행할 수 있는 전체 복사‑붙여넣기 코드 샘플 + +### 사전 요구 사항 + +- .NET 6+ (또는 .NET Framework 4.7+). 사용하는 API는 두 환경 모두에서 동작합니다. +- 가상의 `HtmlToPdfLib`에 대한 참조 (실제 사용 중인 라이브러리 이름으로 교체) +- `input.html` 파일을 제어 가능한 폴더에 배치 (예: `YOUR_DIRECTORY`) + +위 항목이 준비되었다면, 별도 설정 없이 바로 시작해 보세요. + +## Step 1: Load the HTML Document to **Create PDF from HTML** + +먼저 소스 파일을 가리키는 `HTMLDocument` 인스턴스를 만들어야 합니다. 이는 글을 쓰기 전에 노트북을 여는 것과 같으며, 문서가 없으면 렌더링할 것이 없습니다. + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **왜 중요한가:** HTML 파일을 미리 로드하면 라이브러리가 DOM을 파싱하고 CSS를 해석하며 이미지를 미리 불러올 수 있습니다. 이 단계를 건너뛰거나 잘못된 HTML을 전달하면 **html to pdf conversion** 과정에서 빈 페이지가 생성되는 경우가 많습니다. + +## Step 2: Configure Rendering Options for **HTML to PDF Conversion** + +렌더링 옵션은 평범한 PDF를 전문가 수준의 문서로 바꾸는 비밀 소스입니다. 여기서는 굵은 글꼴, 이미지 안티앨리어싱, 텍스트 힌팅을 활성화합니다—대부분의 개발자가 간과하지만 시각적 충실도를 크게 높이는 기능들입니다. + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **프로 팁:** 브랜드 전용 글꼴을 사용할 경우 `pdfOptions` 안에 `FontFamily` 를 지정하세요. 이렇게 하면 **convert HTML to PDF** 과정에서 일반 글꼴로 대체되는 것을 방지할 수 있습니다. + +## Step 3: Save the File and **Export HTML to PDF** + +문서를 로드하고 옵션을 조정했으니, 이제 단 한 줄로 PDF를 디스크에 저장합니다. `Save` 메서드는 내부적으로 **html to pdf conversion**을 수행하며, 앞서 정의한 모든 렌더링 설정을 적용합니다. + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **예상 결과:** `output.pdf` 를 어떤 뷰어에서 열어도 원본 HTML 레이아웃이 그대로 표시되며, 굵은 제목, 부드러운 이미지, 선명한 텍스트가 보일 것입니다. 스타일이 누락된 경우 `input.html` 기준으로 CSS 파일이 올바르게 접근 가능한지 확인하세요. + +![HTML에서 PDF 생성 예시](/images/create-pdf-from-html.png "생성된 PDF의 스크린샷 – HTML에서 PDF 생성") + +*위 스크린샷(alt 텍스트: “HTML에서 PDF 생성 예시”)은 원본 HTML 스타일을 그대로 유지한 PDF 렌더링 결과를 보여줍니다.* + +## Common Pitfalls When You **Convert HTML to PDF** + +간단한 흐름이라 할지라도 개발자들은 종종 문제에 부딪힙니다. 아래는 가장 흔히 발생하는 세 가지 이슈와 회피 방법입니다. + +### 1. Missing Resources (Images, CSS, Fonts) + +HTML이 상대 경로로 외부 자산을 참조하면 변환기가 이를 찾지 못할 수 있습니다. 절대 경로나 베이스 URL을 설정하세요: + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. Large Documents Trigger Timeouts + +다중 페이지 보고서를 처리할 때는 라이브러리의 타임아웃 설정을 늘려야 합니다: + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. Font Substitution Leads to Unexpected Appearance + +필요한 정확한 글꼴 패밀리를 지정하세요: + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +이러한 문제를 초기에 해결하면 **save HTML as PDF** 작업 중에 발생할 수 있는 좌절스러운 디버깅 시간을 크게 줄일 수 있습니다. + +## Advanced: Adding a Cover Page Before You **Export HTML to PDF** + +때때로 로고가 포함된 표지 페이지가 필요합니다. 메인 문서 앞에 간단한 HTML 스니펫을 앞에 붙여 넣을 수 있습니다: + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **왜 이렇게 하는가:** HTML 단계에서 표지를 추가하면 PDF 생성 파이프라인을 단순하게 유지할 수 있어, iText나 PdfSharp 같은 후처리 도구를 사용할 필요가 없습니다. + +## Verifying the Output Programmatically + +CI 파이프라인 등에서 PDF가 정상적으로 생성됐는지 검증하려면 파일 크기나 페이지 수를 확인하면 됩니다: + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +페이지 수가 0이 아닌 경우 **convert HTML to PDF** 단계가 성공했음을 의미합니다. + +## Recap & Next Steps + +우리는 **HTML에서 PDF 생성**을 C#으로 구현하는 **완전하고 엔드‑투‑엔드 예제**를 살펴보았습니다. 흐름은 다음과 같습니다: + +1. 소스 HTML을 `HTMLDocument` 로 로드 +2. `PdfRenderingOptions` 로 렌더링 세부 조정 +3. `Save` 로 **HTML을 PDF로 내보내기** 실행 + +다음 단계로 고려해볼 내용: + +- **배치 처리**: 폴더에 있는 여러 HTML 파일을 한 번에 PDF로 변환 +- **동적 HTML**: Razor 뷰 엔진을 사용해 변환 직전에 HTML을 실시간 생성 +- **보안**: 사용자 제공 HTML을 받아들이는 경우 변환 프로세스를 샌드박스화해 스크립트 인젝션 방지 + +옵션을 자유롭게 실험해 보세요—예를 들어 보관용 `PdfA` 규격을 적용하거나 인터랙티브 PDF를 위해 JavaScript를 삽입하는 등. 핵심 패턴은 동일하며, 이제 **save HTML as PDF** 요구 사항을 만족시킬 신뢰할 수 있는 기반을 갖추었습니다. + +--- + +*코딩을 즐기세요! 문제가 발생하면 아래 댓글을 남기거나 라이브러리 GitHub 이슈 페이지를 확인해 보세요. 커뮤니티가 **html to pdf conversion**을 더욱 원활하게 만드는 다양한 팁을 공유하고 있습니다.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/korean/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/korean/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..817f03029 --- /dev/null +++ b/html/korean/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,274 @@ +--- +category: general +date: 2026-02-27 +description: Aspose.HTML을 사용하여 C#에서 HTML을 빠르게 PDF로 저장하세요. HTML을 PDF로 변환하고, 사용자 정의 + 글꼴 및 스타일을 적용하여 몇 단계만에 HTML에서 PDF를 생성하는 방법을 배워보세요. +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: ko +og_description: Aspose.HTML을 사용하여 C#에서 HTML을 빠르게 PDF로 저장합니다. 이 튜토리얼에서는 HTML을 PDF로 + 변환하고, HTML에서 PDF를 생성하며, 사용자 지정 글꼴을 적용하는 방법을 보여줍니다. +og_title: C#에서 HTML을 PDF로 저장하기 – 글꼴 포함 완전 가이드 +tags: +- csharp +- pdf +- html +title: C#에서 HTML을 PDF로 저장하기 – 폰트 포함 완전 가이드 +url: /ko/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#에서 HTML을 PDF로 저장하기 – 폰트 포함 전체 가이드 + +HTML을 PDF로 **저장**해야 하는데 어떤 라이브러리를 선택해야 할지 몰라 고민한 적 있나요? 혼자가 아닙니다. 많은 개발자들이 인보이스, 보고서, 혹은 인쇄 가능한 영수증을 웹 콘텐츠에서 바로 생성하려 할 때 이 문제에 부딪힙니다. + +좋은 소식은? Aspose.HTML을 사용하면 **HTML을 PDF로 변환**, **HTML에서 PDF 생성**, 그리고 **폰트가 포함된 PDF 만들기**를 몇 줄의 코드만으로 할 수 있습니다. 이번 튜토리얼에서는 전체 과정을 단계별로 살펴보고, 각 설정이 왜 중요한지 설명한 뒤 바로 실행 가능한 예제를 제공하겠습니다. + +## 배울 내용 + +- C#에서 로컬 또는 원격 HTML 파일을 로드하는 방법 +- 굵은/기울임꼴 폰트, 안티앨리어싱, 텍스트 힌팅을 제공하는 렌더링 옵션 +- 결과물을 디스크에 PDF 파일로 저장하는 방법 +- 사용자 정의 폰트를 다루는 팁 및 흔히 발생하는 문제점 + +Aspose.HTML에 대한 사전 지식은 필요 없습니다—.NET 개발 환경(Visual Studio 2022 이상)과 Aspose.HTML for .NET NuGet 패키지만 있으면 됩니다. + +## 사전 요구 사항 + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6.0 이상 | Aspose.HTML이 실행되는 런타임을 제공 | +| Aspose.HTML for .NET (NuGet) | 핵심 기능을 수행하는 라이브러리 | +| 샘플 HTML 파일 (`sample.html`) | 변환할 원본 콘텐츠 | +| 기본 C# 지식 | 코드 스니펫을 이해하기 위해 | + +위 항목들을 준비했으면 바로 시작해 보세요. + +## 1단계: NuGet을 통해 Aspose.HTML 설치 + +Visual Studio에서 프로젝트를 연 뒤 **Dependencies** 노드를 오른쪽 클릭하고 **Manage NuGet Packages**를 선택합니다. `Aspose.HTML`을 검색하고 **Install**를 클릭합니다. + +```powershell +dotnet add package Aspose.HTML +``` + +> **Pro tip:** 최신 안정 버전(2026‑02‑27 기준 23.11)을 사용하면 최신 렌더링 개선 사항을 바로 적용할 수 있습니다. + +## 2단계: 소스 HTML 문서 로드 + +먼저 파일을 가리키는 `HTMLDocument` 객체가 필요합니다. 이 클래스는 마크업을 파싱하고 CSS를 해석해 렌더링 준비를 합니다. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **왜 이 단계가 필요한가?** +> HTML을 `HTMLDocument`에 로드하면 파싱 단계와 렌더링 단계를 분리할 수 있어, PDF를 만들기 전에 DOM을 검사하거나 런타임에 수정할 수 있습니다. + +## 3단계: PDF 렌더링 옵션 구성 + +Aspose.HTML은 최종 PDF의 모양을 세밀하게 제어할 수 있는 옵션을 제공합니다. 여기서는 굵은 + 기울임꼴 폰트 스타일, 부드러운 그래픽을 위한 안티앨리어싱, 저해상도에서도 선명한 텍스트를 위한 힌팅을 활성화합니다. + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### 왜 이러한 설정을 사용하는가? + +- **`FontStyle`** – `` 또는 `` 태그를 기본 폰트와 병합해 PDF가 원본 스타일을 그대로 유지하도록 함. +- **`UseAntialiasing`** – 차트, 아이콘 등 래스터화된 콘텐츠의 톱니 현상을 감소시킴. +- **`UseHinting`** – 글리프 윤곽을 픽셀 그리드에 맞추어 저해상도 디바이스에서도 선명하게 표시됨. + +기업 브랜드 폰트와 같이 사용자 정의 폰트가 필요하면 `.ttf` 파일을 폴더에 넣고 `pdfRenderOptions.FontProvider`를 설정하면 됩니다. 이는 별도의 주제가 되지만 기본 아이디어는 다음과 같습니다. + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## 4단계: HTML 문서를 PDF로 렌더링 + +이제 문서와 옵션을 결합하고 Aspose.HTML에 출력 파일을 작성하도록 지시합니다. + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +위 코드를 실행하면 실행 파일 옆에 `output.pdf`가 생성됩니다. 열어 보면 원본 HTML이 굵은/기울임꼴 스타일, 부드러운 그래픽, 선명한 텍스트와 함께 렌더링된 것을 확인할 수 있습니다. + +> **예상 결과:** +> `sample.html` 레이아웃을 그대로 반영한 PDF이며, 모든 헤딩은 굵게, 강조 텍스트는 기울임꼴, 삽입된 이미지들은 톱니 현상 없이 매끄럽게 표시됩니다. + +## 5단계: 검증 및 조정 (선택 사항) + +### 간단한 검증 스크립트 + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +PDF가 기대와 다르면 다음과 같은 일반적인 조정을 고려해 보세요. + +| Issue | Likely cause | Fix | +|-------|--------------|-----| +| 폰트 누락 | 폰트가 포함되지 않았거나 찾을 수 없음 | `FontProvider.AddFont` 사용 및 폰트 파일 접근 가능 여부 확인 | +| 이미지 흐림 | 안티앨리어싱 비활성화 | `UseAntialiasing = true` 설정 | +| 화면에서 텍스트가 얇게 보임 | 힌팅 비활성화 | `UseHinting = true` 활성화 | +| 페이지 나눔 시 레이아웃 이동 | CSS `page-break` 규칙 무시 | HTML/CSS에 명시적 `page-break-before/after` 추가 | + +## 전체 작업 예제 + +아래는 새 콘솔 앱에 복사·붙여넣기 할 수 있는 완전한 프로그램입니다. 모든 `using` 지시문, 예외 처리, 주석이 포함되어 있어 이해하기 쉽습니다. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +프로젝트를 실행(`dotnet run`)하면 성공 메시지와 함께 새로 만든 `output.pdf`가 생성됩니다. + +## 자주 묻는 질문 및 엣지 케이스 + +### URL에서 **HTML을 PDF로 변환**할 수 있나요? + +가능합니다. 파일 경로 대신 URL 문자열을 사용하면 됩니다. + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +Aspose.HTML이 페이지를 다운로드하고 외부 리소스를 해석한 뒤 렌더링합니다. + +### **대용량 HTML 파일**이나 **다중 페이지**는 어떻게 처리하나요? + +Aspose.HTML은 스트리밍 방식으로 콘텐츠를 처리하므로 메모리 사용량이 적당합니다. 각 HTML 섹션을 별도 PDF 페이지에 넣고 싶다면 HTML에 수동 페이지 나눔을 삽입하면 됩니다. + +```html +
+``` + +### **.NET Core**와 **.NET 7**에서도 동작하나요? + +네. 라이브러리는 크로스‑플랫폼이며, 호환 가능한 프레임워크(net6.0, net7.0 등)를 타깃하고 해당 NuGet 패키지를 설치하기만 하면 됩니다. + +### **폰트를 포함**해 PDF 이동성을 보장하려면? + +앞서 보여준 대로 `pdfRenderOptions.FontProvider`를 설정하고 폰트 임베딩도 활성화합니다. + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +이렇게 하면 로컬에 폰트가 설치되지 않아도 모든 머신에서 동일하게 PDF가 표시됩니다. + +## 시각 예시 + +![save html as pdf example](example.png){alt="HTML을 PDF로 저장한 예시"} + +*스크린샷은 Adobe Acrobat에서 열어 본 생성된 PDF를 보여주며, 굵은/기울임꼴 스타일과 부드러운 이미지가 보존된 모습을 확인할 수 있습니다.* + +## 결론 + +C#을 사용해 **HTML을 PDF로 저장**하는 전체 과정을 살펴보았습니다. 마크업 로드, 렌더링 옵션 설정, 최종 PDF 저장까지 단계가 명확하고 커스터마이징도 자유롭습니다. + +이 가이드를 따라 하면 **HTML을 PDF로 변환**, **HTML에서 PDF 생성**, **폰트가 포함된 PDF 만들기**를 어떤 보고서나 문서 생성 시나리오에서도 손쉽게 구현할 수 있습니다. 워터마크, 암호화, 사용자 정의 페이지 크기 등 추가 옵션을 실험해 보세요—Aspose.HTML이 그 유연성을 제공합니다. + +**다음 단계**로 고려해 볼 내용: + +- `PdfSaveOptions` 클래스로 PDF 버전이나 압축 수준 지정 +- 여러 `HTMLDocument` 인스턴스를 하나의 PDF로 결합해 다중 섹션 보고서 작성 +- 이 워크플로를 ASP.NET Core API에 통합해 웹 서비스에서 실시간 PDF 반환 + +렌더링 파이프라인에 대한 질문이나 특정 상황에 대한 도움이 필요하면 아래 댓글로 알려 주세요. 즐거운 코딩 되세요! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/korean/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/korean/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..100165fe3 --- /dev/null +++ b/html/korean/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-02-27 +description: C# ZipArchive를 사용하여 HTML을 ZIP으로 저장 – 사용자 정의 리소스 핸들러가 포함된 단계별 예제와 HTML을 + ZIP으로 내보내고 ZIP 아카이브를 생성하는 C# 코드 팁. +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: ko +og_description: C# ZipArchive를 사용하여 HTML을 ZIP으로 저장합니다. 전체 예제, 사용자 지정 리소스 핸들러 및 모범 + 사례와 함께 HTML을 ZIP으로 내보내는 방법을 배워보세요. +og_title: C#에서 HTML을 ZIP 파일로 저장하기 – 완전 가이드 +tags: +- C# +- ZipArchive +- HTML export +title: C#에서 HTML을 ZIP 파일로 저장하기 – 완전 가이드 +url: /ko/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#에서 HTML을 ZIP으로 저장하기 – 완전 가이드 + +HTML을 **ZIP으로 저장**해야 했지만 어떤 .NET 클래스를 사용해야 할지 몰랐던 적이 있나요? 당신만 그런 것이 아닙니다—많은 개발자들이 오프라인 사용이나 배포를 위해 웹 페이지와 그 자산들을 번들링하려 할 때 이 문제에 부딪힙니다. 좋은 소식은? 내장된 `System.IO.Compression.ZipArchive`를 사용하면 몇 줄의 코드로 가능하고, 각 리소스가 어떻게 기록되는지 깔끔하게 제어할 수 있습니다. + +이 튜토리얼에서는 **완전하고 실행 가능한 예제**를 통해 HTML 문서를 ZIP 파일로 내보내는 방법을 정확히 보여드리며, 커스텀 `ResourceHandler`를 사용해 각 자산을 아카이브에 스트리밍합니다. 진행하면서 몇 가지 **c# ziparchive example** 스니펫을 삽입하고, 실제 시나리오에서 **how to export html to zip**을 논의하며, **create zip archive c#** 프로그램을 견고하게 만들 때의 미묘한 차이점도 짚어보겠습니다. + +> **Prerequisites** – .NET 6+ (또는 .NET Core 3.1)와 `HTMLDocument`, `HTMLSaveOptions`, `ResourceHandler`를 제공하는 라이브러리에 대한 참조가 필요합니다. Aspose.HTML 또는 유사한 패키지를 사용한다면 NuGet을 통해 추가하면 됩니다. 다른 서드파티 도구는 필요하지 않습니다. + +--- + +## 이 튜토리얼에서 다루는 내용 + +- HTML 파일과 연결된 리소스를 받을 **ZipArchive** 설정 +- 각 리소스 스트림을 아카이브에 전달하는 **커스텀 리소스 핸들러**(`ZipHandler`) 구현 +- **HTMLSaveOptions**를 사용해 모든 것을 연결하고 실제로 **HTML을 ZIP으로 저장**하는 방법 +- 경로, 중복 항목, 대용량 자산을 다룰 때 흔히 발생하는 함정 +- 매니페스트 파일 추가나 ZIP 암호화와 같은 확장 팁 + +튜토리얼을 마치면 **html을 zip으로 저장**하는 자체 포함 메서드를 어떤 C# 프로젝트에도 자신 있게 삽입할 수 있게 됩니다. + +--- + +## Step 1: Add the Required Namespaces + +코드가 실행되기 전에 컴파일러가 압축 클래스와 사용 중인 HTML 라이브러리를 인식하도록 해야 합니다. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*Why this matters:* `System.IO.Compression`은 `ZipArchive`를 제공하고, `Aspose.Html` 네임스페이스는 `HTMLDocument`, `HTMLSaveOptions`, 그리고 우리가 확장할 `ResourceHandler` 기본 클래스를 노출합니다. 다른 HTML 엔진을 사용한다면 유사한 타입을 찾아야 합니다. + +--- + +## Step 2: Create a Custom Resource Handler (Primary Keyword in Action) + +**HTML을 ZIP으로 저장**의 핵심은 엔진에게 각 외부 리소스(이미지, CSS, 스크립트)를 어디에 넣을지 알려주는 것입니다. `ResourceHandler`를 상속하면 데이터를 받을 스트림을 직접 제어할 수 있습니다. + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**Key points** + +- `info.Uri`는 HTML 엔진이 쓰려고 시도하는 상대 URL입니다. 이를 엔트리 이름으로 사용하면 ZIP 내부 폴더 구조가 그대로 유지됩니다. +- `CreateEntry`는 필요한 디렉터리를 자동으로 생성하므로 직접 관리할 필요가 없습니다. +- 열려 있는 스트림을 반환하면 엔진이 데이터를 직접 스트리밍하므로 임시 파일이나 추가 메모리 복사가 발생하지 않습니다. + +--- + +## Step 3: Initialize the ZipArchive + +이제 **Update** 모드로 `ZipArchive`를 시작합니다. 이 모드는 진행 중에 엔트리를 추가할 수 있게 해 주며, 코드를 여러 번 실행할 경우 기존 엔트리를 교체할 수도 있습니다. + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*Pro tip:* `FileMode.Create`를 사용하면 이전 파일을 덮어쓰고, `FileMode.OpenOrCreate`를 사용하면 기존 아카이브에 추가할 수 있습니다. 또한 `using` 문으로 `ZipArchive`를 감싸면 아카이브가 올바르게 해제되고 파일 핸들이 해제됩니다. + +--- + +## Step 4: Load the HTML Document You Want to Export + +여기서 라이브러리에 원본 HTML 파일을 지정합니다. 문서는 CSS, 이미지, JavaScript 파일 등을 함께 참조할 수 있습니다. + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +HTML에 상대 URL이 포함되어 있다면 프로세스의 작업 디렉터리가 해당 자산이 있는 폴더와 일치하는지 확인하세요. 그렇지 않으면 엔진이 파일을 찾지 못해 ZIP에 해당 파일이 누락됩니다. + +--- + +## Step 5: Configure Save Options – The Real “Save HTML as ZIP” Moment + +이제 `ZipHandler`를 `HTMLSaveOptions`에 연결합니다. `SaveFormat`을 `ZIP`으로 설정하면 라이브러리가 모든 것을 하나의 아카이브에 묶게 되고, 우리의 핸들러가 각 파일이 들어갈 위치를 결정합니다. + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*Why this matters:* `ResourceHandler`를 설정하지 않으면 라이브러리는 리소스를 파일 시스템에 쓰게 되며, 이는 **how to export html to zip**을 단일 아카이브에 담는 목적에 어긋납니다. + +--- + +## Step 6: Perform the Save Operation + +마지막으로 문서에 방금 만든 옵션을 사용해 저장하도록 요청합니다. 라이브러리는 발견한 모든 외부 자산에 대해 `ZipHandler.HandleResource`를 호출합니다. + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +`using` 블록이 끝나면 아카이브가 최종화되고 파일이 배포 준비가 됩니다. + +--- + +## Full Working Example (All Steps Combined) + +아래는 콘솔 앱에 복사‑붙여넣기 할 수 있는 전체 프로그램입니다. **c# ziparchive example**을 보여주며 **creates zip archive c#** 스타일을 구현하고, **how to export html to zip** 질문에 완전하게 답합니다. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**Expected result:** 프로그램을 실행하면 `output.zip`에 `index.html`(또는 설정한 이름)과 원본 페이지가 참조하는 모든 이미지, 스타일시트, 스크립트가 폴더 구조를 유지한 채 포함됩니다. ZIP을 열어 추출한 뒤 `index.html`을 더블‑클릭하면 온라인에서 보던 그대로 페이지가 렌더링됩니다. + +--- + +## Common Edge Cases & How to Handle Them + +| Situation | Why it Happens | Suggested Fix | +|-----------|----------------|---------------| +| **Duplicate resource names** (예: 서로 다른 폴더에 같은 파일명 이미지) | `CreateEntry`는 동일한 엔트리 이름이 이미 존재하면 `InvalidOperationException`을 발생시킵니다. | 엔트리를 상대 경로(`info.Uri`)와 함께 사용해 접두사로 포함하거나, 엔트리를 만들기 전에 이름을 정리하세요. | +| **Large binary assets** (비디오, 고해상도 이미지) | 직접 스트리밍은 가능하지만 기본 버퍼 크기로 인해 메모리 사용량이 높아질 수 있습니다. | `HandleResource`를 오버라이드하여 반환 스트림을 `BufferedStream`(예: 64 KB 버퍼)으로 감싸세요. | +| **Missing resources** | HTML에 깨진 링크가 있으면 핸들러가 존재하지 않는 파일에 대한 요청을 받아 빈 엔트리가 생성됩니다. | `File.Exists`를 확인하고 엔트리를 만들기 전에 존재 여부를 검증하거나, 경고 로그를 남겨 누락된 파일을 파악하세요. | +| **Unicode filenames** | 일부 오래된 ZIP 도구는 UTF‑8 엔트리 이름을 제대로 처리하지 못합니다. | .NET 6+를 타깃으로 하면 기본적으로 UTF‑8이 사용됩니다. 레거시 호환이 필요하면 `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);`를 설정하세요. | +| **Need a manifest** (ZIP 내부 파일 목록) | 소비자가 검증을 위해 `manifest.json`을 요구할 수 있습니다. | 메인 저장이 끝난 뒤 새로운 엔트리 `"manifest.json"`을 만들고 `zipArchive.Entries` 목록을 JSON 형태로 기록하세요. | + +--- + +## Pro Tips for Production‑Ready **Save HTML as ZIP** Implementations + +1. **Validate the output** – 저장 후 프로그램matically ZIP을 열어 `index.html`이 존재하고 각 엔트리의 `Length`가 0보다 큰지 확인하세요. 이는 조용히 발생하는 실패를 조기에 잡아냅니다. +2. **Parallelize large assets** – 이미지가 수십 메가바이트에 달한다면 `HandleResource` 호출을 `Task` 풀에 큐잉하고 아카이브에 동시에 쓰도록 설계하되, `ZipArchive`는 단일 라이터만 허용한다는 점을 유의하세요. +3. **Compress wisely** – `ZipArchive`는 기본적으로 Deflate를 사용합니다. 이미 압축된 파일(JPEG, PNG)에는 `entry.CompressionLevel = CompressionLevel.NoCompression`을 지정해 속도를 높일 수 있습니다. +4. **Security** – ZIP + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/korean/net/working-with-html-documents/_index.md b/html/korean/net/working-with-html-documents/_index.md index 491b68f5a..4e968afdc 100644 --- a/html/korean/net/working-with-html-documents/_index.md +++ b/html/korean/net/working-with-html-documents/_index.md @@ -26,21 +26,19 @@ HTML 문서는 웹의 중추이며, 효과적으로 만들고 조작할 수 있 ### [Aspose.HTML을 사용하여 .NET에서 문서 만들기](./creating-a-document/) -여정의 첫 번째 단계는 Aspose.HTML을 사용하여 처음부터 또는 URL에서 HTML 문서를 만드는 방법을 배우는 것입니다. 초보자도 따라할 수 있도록 프로세스를 안내해 드리겠습니다. 이 섹션을 마치면 HTML 문서를 손쉽게 생성할 수 있는 기술을 갖추게 될 것입니다. - ### [Aspose.HTML을 사용하여 .NET에서 간단한 문서 만들기](./creating-a-simple-document/) -기본 사항을 파악한 후에는 생성 프로세스를 더 깊이 파고들 것입니다. 이 섹션에서는 Aspose.HTML을 사용하여 간단한 HTML 문서를 만드는 방법을 배우고, 쉽게 조작할 수 있는 다양한 기능을 살펴보겠습니다. 웹페이지를 구축하든, 콘텐츠를 생성하든, 데이터를 HTML로 변환하든, 이 튜토리얼은 필요한 지식을 제공합니다. - ### [Aspose.HTML을 사용하여 .NET에서 문서 편집](./editing-a-document/) -이제 여러분의 기술을 다음 단계로 끌어올려 봅시다. HTML 문서 편집은 웹 개발자에게 흔한 작업이며, Aspose.HTML은 이 프로세스를 상당히 간소화합니다. 이 섹션에서는 문서 생성, 조작 및 스타일링을 다룹니다. 웹 콘텐츠의 모양과 기능을 향상시켜 매력적이고 사용자 친화적으로 만드는 방법을 알아봅니다. - ### [C#에서 HTML 저장하기 – 사용자 정의 리소스 핸들러를 활용한 완전 가이드](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) 사용자 정의 리소스 핸들러를 사용해 C#에서 HTML을 저장하는 방법을 단계별로 안내합니다. ### [CSS와 C#로 제목을 굵게 만드는 방법 – 완전 단계별 가이드](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) +### [C#에서 HTML을 ZIP으로 저장하기 – 사용자 정의 리소스 핸들러를 활용한 완전 가이드](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) + +사용자 정의 리소스 핸들러를 사용해 C#에서 HTML을 ZIP 파일로 저장하는 방법을 단계별로 안내합니다. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/korean/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/korean/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..72c99a77e --- /dev/null +++ b/html/korean/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-02-27 +description: C#에서 사용자 정의 리소스 핸들러를 사용해 HTML을 ZIP으로 저장하고, C#으로 ZIP 아카이브를 생성합니다. HTML과 + 해당 자산을 번들링하는 단계별 튜토리얼을 따라보세요. +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: ko +og_description: 맞춤 리소스 핸들러를 사용해 C#에서 HTML을 ZIP으로 저장하세요. C#으로 ZIP 아카이브를 만드는 방법과 리소스를 + 손쉽게 포함하는 방법을 배워보세요. +og_title: C#에서 HTML을 ZIP으로 저장하기 – 전체 튜토리얼 +tags: +- Aspose.HTML +- C# +- ZIP +title: C#에서 HTML을 ZIP으로 저장하기 – 맞춤형 리소스 핸들러를 이용한 완전 가이드 +url: /ko/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#에서 HTML을 ZIP으로 저장 – 사용자 정의 리소스 핸들러 완전 가이드 + +Ever wondered how to **save HTML as ZIP** in C# without pulling your hair out? You're not the only one—many developers hit a wall when they need to ship an HTML page together with images, CSS, or JavaScript files. The good news? With Aspose.HTML you can do it in a few tidy steps, and a **custom resource handler** makes the process painless. + +In this tutorial we’ll walk through everything you need to know: from installing the library, writing a handler that streams resources straight into a **create ZIP archive in C#**, to verifying the final package. By the end you’ll have a ready‑to‑use solution you can drop into any .NET project. + +![HTML을 ZIP으로 저장 예시](/images/save-html-as-zip.png "HTML이 ZIP 파일로 저장되는 다이어그램") + +## Save HTML as ZIP – 이 가이드에서 다루는 내용 + +We'll cover the entire pipeline: + +1. **Prerequisites** – the minimal tools and packages you need. +2. **Custom resource handler** – why you need one and how to implement it. +3. **Creating a ZIP archive in C#** – using `System.IO.Compression`. +4. **Configuring Aspose.HTML save options** to point at the handler. +5. **Running the code** and checking the output. + +If you’re comfortable with basic C# syntax and have Visual Studio (or VS Code) installed, you’re ready to dive in. No external documentation required—everything is right here. + +--- + +## Step 1: 프로젝트 설정 및 Aspose.HTML 설치 + +Before we write any code, make sure your project can reference the Aspose.HTML library. + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*Pro tip:* The latest NuGet package (as of February 2026) targets .NET 6+, so you can use the modern SDK‑style project without worrying about legacy frameworks. + +Once the package is restored, open `Program.cs`. We'll replace the default content with the full example later, but for now just keep the file open. + +--- + +## 사용자 정의 리소스 핸들러 구현 + +### 왜 사용자 정의 리소스 핸들러가 필요한가? + +When Aspose.HTML saves an HTML document as a ZIP package, it needs to fetch every external resource (images, fonts, scripts) and write them somewhere. The default behavior writes them to a temporary folder on disk. By providing a **custom resource handler**, you tell the library exactly where each resource should go—in our case, directly into the ZIP archive. This avoids extra I/O, keeps everything tidy, and gives you full control over naming. + +### 코드: 핸들러 클래스 + +Create a new class file called `MyHandler.cs` (or place it inside `Program.cs` if you prefer a single‑file demo). + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**Explanation:** +* `ResourceHandler` is an abstract class from Aspose.HTML that lets you intercept resource fetching. +* By returning the `Stream` obtained from `ZipArchiveEntry.Open()`, we hand the library a writable pipe directly into the ZIP file. No temporary files, no extra cleanup. + +--- + +## C#에서 ZIP 아카이브 만들기 + +Now that the handler is ready, we need a place for it to write. The .NET `ZipArchive` class does the heavy lifting. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### What This Does + +1. **Creates an in‑memory HTML document** with a reference to `logo.png`. +2. **Opens a `FileStream`** that will become `output.zip`. +3. **Assigns the `ZipArchive`** to the static field in `MyHandler`. +4. **Sets `HTMLSaveOptions`** to `SaveFormat.ZIP` and attaches our handler. +5. **Calls `document.Save`** – Aspose.HTML parses the HTML, fetches `logo.png`, and streams it into the archive via `MyHandler`. + +Because the handler uses the resource URI (`logo.png`) as the entry name, the resulting ZIP contains a file named exactly that, preserving the original relative path. + +--- + +## ZIP 패키지를 위한 Save Options 구성 + +The `HTMLSaveOptions` object is where you tell Aspose.HTML **how** to package the output. Apart from the `ResourceHandler`, you can tweak a few useful properties: + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*Why care about `EnableCompression`?* +If you’re dealing with large images, enabling compression can shrink the final archive by up to 70 %. However, for already‑compressed PNGs the gain is modest, so you might turn it off to speed up the save operation. + +--- + +## 코드 실행 및 출력 확인 + +Compile and run the program: + +```bash +dotnet run +``` + +You should see the success message printed to the console. Navigate to the directory printed and open `output.zip`. Inside you’ll find: + +- `index.html` – the saved HTML file. +- `logo.png` – the image that was referenced in the markup. + +Open `index.html` directly from the ZIP (most OS file explorers let you preview it) and you’ll see the heading and image rendered exactly as in the original string. + +**Edge Cases to Consider** + +| Situation | What to Do | +|-----------|------------| +| The HTML references a **remote URL** (e.g., `https://example.com/style.css`) | The handler will still receive a `ResourceInfo.Uri`. Ensure your environment can reach the URL, or pre‑download the resource and adjust the HTML to a local path. | +| You need **folder hierarchy** inside the ZIP (e.g., `images/logo.png`) | Modify `HandleResource` to prepend a folder name: `var entry = ZipArchive.CreateEntry($"assets/{info.Uri}");` | +| The resource **fails to load** (404) | The handler will be called, but the stream will receive zero bytes. Wrap the save call in a `try/catch` and inspect `info.Status` if you need custom error handling. | + +--- + +## Recap: 한 번에 HTML을 ZIP으로 저장하는 흐름 + +- **Primary Goal:** Bundle an HTML page and all its external assets into a single ZIP file using C#. +- **Key Tools:** Aspose.HTML (`HTMLDocument`, `HTMLSaveOptions`), `System.IO.Compression.ZipArchive`, and a **custom resource handler**. +- **Result:** A portable `output.zip` that can be shipped, stored, or sent over the network, and later extracted without losing resource links. + +--- + +## What’s Next? 워크플로우 확장하기 + +Now that you’ve mastered **save HTML as ZIP**, you might want to explore related scenarios: + +- **Save HTML as PDF** – replace `SaveFormat.ZIP` with `SaveFormat.PDF` and adjust options accordingly. +- **Embed fonts** – use `@font-face` in your HTML and let the handler capture the font files. +- **Batch processing** – loop over a collection of HTML strings, reusing the same `ZipArchive` to create a multi‑document package. + +All of these builds on the same **custom resource handler** pattern and the **create ZIP archive in C#** technique you just learned. + +--- + +### Final Thoughts + +You’ve just seen how easy it is to **save HTML as ZIP** in C# when you let Aspose.HTML + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/polish/net/generate-jpg-and-png-images/_index.md b/html/polish/net/generate-jpg-and-png-images/_index.md index fff5f7a92..063c5d74d 100644 --- a/html/polish/net/generate-jpg-and-png-images/_index.md +++ b/html/polish/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Naucz się używać Aspose.HTML dla .NET do manipulowania dokumentami HTML, konw Dowiedz się, jak włączyć antyaliasing przy konwersji dokumentów DOCX do formatów PNG i JPG przy użyciu Aspose.HTML. ### [Konwertuj docx do png – utwórz archiwum zip w C# – samouczek](./convert-docx-to-png-create-zip-archive-c-tutorial/) Dowiedz się, jak konwertować pliki DOCX na obrazy PNG i spakować je do archiwum ZIP przy użyciu C# i Aspose.HTML. +### [Utwórz PNG z HTML w C# – przewodnik krok po kroku](./create-png-from-html-in-c-step-by-step-guide/) +Dowiedz się, jak w prosty sposób wygenerować plik PNG z kodu HTML w C# przy użyciu Aspose.HTML, krok po kroku. ## Wniosek diff --git a/html/polish/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/polish/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..543a0a719 --- /dev/null +++ b/html/polish/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-02-27 +description: Szybko twórz pliki PNG z HTML przy użyciu Aspose.HTML w C#. Dowiedz się, + jak renderować HTML do obrazu, ustawiać szerokość i wysokość obrazu oraz konwertować + HTML na PNG w kilka minut. +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: pl +og_description: Utwórz PNG z HTML przy użyciu Aspose.HTML. Ten przewodnik pokazuje, + jak renderować HTML do obrazu, ustawiać szerokość i wysokość obrazu oraz efektywnie + konwertować HTML na PNG. +og_title: Utwórz PNG z HTML w C# – Kompletny poradnik +tags: +- Aspose.HTML +- C# +- Image Rendering +title: Tworzenie PNG z HTML w C# – Przewodnik krok po kroku +url: /pl/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tworzenie PNG z HTML w C# – Kompletny Samouczek + +Kiedykolwiek potrzebowałeś **utworzyć PNG z HTML**, ale nie byłeś pewien, która biblioteka da Ci wyniki idealnie odzwierciedlające piksele? Nie jesteś sam — wielu programistów napotyka ten sam problem, gdy próbują zamienić stronę internetową w statyczny obrazek do e‑maili, raportów czy miniatur. + +Dobra wiadomość? Z Aspose.HTML możesz **renderować HTML do obrazu**, kontrolować dokładne wymiary i **zapisać HTML jako PNG** w kilku linijkach C#. W tym samouczku przeprowadzimy Cię przez cały proces, od wczytania pliku HTML po dopasowanie hintingu tekstu i ostateczne zapisanie PNG na dysku. Po zakończeniu będziesz wiedział, jak **ustawić szerokość i wysokość obrazu** programowo oraz będziesz mieć gotowy fragment kodu, który możesz wkleić do dowolnego projektu .NET. + +## Czego się nauczysz + +- Jak wczytać dokument HTML przy użyciu Aspose.HTML. +- Różnicę między `ImageRenderingOptions` a `TextOptions` oraz dlaczego ma to znaczenie. +- Jak **przekształcić HTML do PNG**, zachowując czcionki, antyaliasing i style podkreślenia. +- Wskazówki dotyczące rozwiązywania typowych problemów, takich jak brakujące czcionki czy nieoczekiwane rozmiary obrazu. +- Kompletny, gotowy do uruchomienia przykład kodu, który możesz skopiować‑wkleić do Visual Studio. + +> **Wymagania wstępne:** .NET 6+ (lub .NET Framework 4.6.2+), Aspose.HTML dla .NET zainstalowany przez NuGet oraz podstawowa znajomość C#. Nie są potrzebne żadne inne zewnętrzne narzędzia. + +--- + +## Krok 1: Wczytanie dokumentu HTML – Rozpoczęcie tworzenia PNG + +Najpierw potrzebujemy obiektu `HTMLDocument`, który wskazuje na plik źródłowy. To podstawa każdej operacji **utworzenia PNG z HTML**. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*Dlaczego ten krok jest ważny:* Klasa `HTMLDocument` parsuje znacznik, rozwiązuje CSS i buduje DOM, który silnik renderujący później może namalować na bitmapie. Jeśli ścieżka jest nieprawidłowa, kolejny krok **renderowania HTML do obrazu** zgłosi `FileNotFoundException`. + +--- + +## Krok 2: Ustawienie szerokości i wysokości obrazu – Kontrola rozmiaru wyjściowego + +Podczas **renderowania HTML do obrazu** często potrzebna jest konkretna rozdzielczość — pomyśl o miniaturce, która musi mieć dokładnie 1200 × 800 pikseli. Tutaj wkracza w grę `ImageRenderingOptions`. + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*Wskazówka:* Jeśli pominiesz `Width` i `Height`, Aspose.HTML użyje naturalnego rozmiaru strony, który może być zbyt duży dla osadzania w e‑mailach. + +--- + +## Krok 3: Dopracowanie renderowania tekstu – Uzyskanie ostrego tekstu + +Tekst w systemie Linux często wygląda rozmycie, chyba że włączysz hinting. Obiekt `TextOptions` pozwala to kontrolować, zapewniając, że końcowy PNG będzie ostry na każdej platformie. + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*Dlaczego hinting?* Hinting dostosowuje kształt każdego glifu do siatki pikseli, co jest kluczowe przy **konwersji HTML do PNG** dla wyświetlaczy o niskiej rozdzielczości. + +--- + +## Krok 4: Połączenie opcji i dodanie stylizacji – Pełna konfiguracja renderowania + +Teraz łączymy ustawienia obrazu i tekstu oraz pokazujemy, jak zastosować globalny styl czcionki, np. podkreślenie każdego fragmentu tekstu. Ten krok to właściwe **zapisanie HTML jako PNG** ze spersonalizowaną stylizacją. + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*Uwaga:* `WebFontStyle` obsługuje wiele flag (Bold, Italic, itp.). Możesz je łączyć operatorem bitowym OR, jeśli potrzebujesz kilku stylów jednocześnie. + +--- + +## Krok 5: Renderowanie i zapis – Moment, w którym **tworzysz PNG z HTML** + +Po skonfigurowaniu wszystkiego, ostateczne wywołanie to jednowierszowy kod, który maluje DOM na bitmapę i zapisuje ją na dysku. + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +Po wykonaniu tej linii znajdziesz `output.png` w określonym folderze, dokładnie 1200 × 800 pikseli, z antyaliasowanymi grafikami i hintowanym tekstem. + +--- + +## Pełny działający przykład – Wklej, uruchom, zweryfikuj + +Poniżej znajduje się kompletny program, który możesz skompilować jako aplikację konsolową. Zawiera wszystkie dyrektywy `using`, obsługę błędów i komentarze, których potrzebujesz. + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**Oczekiwany rezultat:** Plik o nazwie `output.png` pojawia się obok Twojego pliku wykonywalnego, pokazując renderowaną wersję `sample.html`. Otwórz go w dowolnej przeglądarce obrazów, aby potwierdzić wymiary i stylizację. + +--- + +## Typowe problemy i jak ich unikać + +| Problem | Objaw | Rozwiązanie | +|-------|----------|-----| +| Brakujące czcionki | Tekst wyświetla się jako ogólny sans‑serif | Zainstaluj wymagane czcionki na maszynie hosta lub osadź czcionki internetowe w HTML. | +| Nieprawidłowe wymiary | PNG jest większy lub mniejszy niż oczekiwano | Sprawdź wartości `Width` i `Height` w `ImageRenderingOptions`. | +| Rozmyte krawędzie | Brak antyaliasingu | Upewnij się, że `UseAntialiasing = true`. | +| Artefakty renderowania w Linuxie | Tekst wygląda rozmycie | Ustaw `UseHinting = true` w `TextOptions`. | + +*Wskazówka:* Gdy **renderujesz HTML do obrazu** na serwerze bez interfejsu graficznego, upewnij się, że serwer ma niezbędne biblioteki systemowe (np. `libgdiplus` w Linuxie), w przeciwnym razie Aspose.HTML może przejść na renderowanie programowe o obniżonej jakości. + +--- + +## Rozszerzanie rozwiązania – Kolejne kroki + +- **Konwersja wsadowa:** Przejdź przez listę plików HTML i wywołuj tę samą logikę renderowania, aby wygenerować galerię PNG. +- **Różne formaty:** Zamień `output.png` na `output.jpg` lub `output.bmp`, zmieniając rozszerzenie pliku; Aspose.HTML automatycznie wybierze odpowiedni enkoder. +- **Dynamiczne rozmiary:** Oblicz `Width` i `Height` na podstawie meta‑tagu viewport w HTML dla projektów responsywnych. +- **Dodawanie znaku wodnego:** Użyj `Aspose.Html.Drawing`, aby nałożyć logo przed zapisem. + +Te pomysły pozwalają przejść od prostego fragmentu **utworzenia PNG z HTML** do w pełni funkcjonalnej usługi generowania obrazów. + +--- + +## Zakończenie + +Przeszliśmy przez wszystko, co potrzebne, aby **utworzyć PNG z HTML** przy użyciu Aspose.HTML dla .NET: wczytanie dokumentu, konfigurację **ustawienia szerokości i wysokości obrazu**, dopracowanie tekstu za pomocą hintingu oraz ostateczne **zapisanie HTML jako PNG**. Pełny przykład kodu jest gotowy do wstawienia do Twojego projektu, a powyższe wskazówki pomogą uniknąć typowych problemów. + +Teraz, gdy możesz **renderować HTML do obrazu** niezawodnie, dlaczego nie poeksperymentować z różnymi stylami, przetwarzaniem wsadowym lub nawet konwersją do PDF w tym samym potoku? Niebo jest granicą, a kod już jest w Twoich rękach. + +Miłego kodowania i zachęcamy do dzielenia się wynikami lub zadawania pytań w komentarzach! + +![Create PNG from HTML example](/images/create-png-from-html.png "Create PNG from HTML using Aspose.HTML") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/polish/net/html-extensions-and-conversions/_index.md b/html/polish/net/html-extensions-and-conversions/_index.md index 5b553b002..b290ea749 100644 --- a/html/polish/net/html-extensions-and-conversions/_index.md +++ b/html/polish/net/html-extensions-and-conversions/_index.md @@ -41,6 +41,8 @@ Aspose.HTML dla .NET to nie tylko biblioteka; to przełom w świecie tworzenia s Konwertuj HTML do PDF bez wysiłku dzięki Aspose.HTML dla .NET. Postępuj zgodnie z naszym przewodnikiem krok po kroku i uwolnij moc konwersji HTML do PDF. ### [Utwórz PDF z HTML – przewodnik krok po kroku w C#](./create-pdf-from-html-c-step-by-step-guide/) Dowiedz się, jak w C# wygenerować plik PDF z kodu HTML, korzystając z Aspose.HTML – kompletny przewodnik krok po kroku. +### [Utwórz PDF z HTML – Przewodnik krok po kroku dla programistów](./create-pdf-from-html-step-by-step-guide-for-developers/) +Kompletny przewodnik dla deweloperów, jak przekształcić HTML w PDF przy użyciu Aspose.HTML w .NET. ### [Konwersja EPUB do obrazu w .NET za pomocą Aspose.HTML](./convert-epub-to-image/) Dowiedz się, jak konwertować EPUB na obrazy za pomocą Aspose.HTML dla .NET. Samouczek krok po kroku z przykładami kodu i opcjami dostosowywania. ### [Konwertuj EPUB do PDF w .NET za pomocą Aspose.HTML](./convert-epub-to-pdf/) @@ -73,6 +75,10 @@ Dowiedz się, jak stworzyć dokument HTML z formatowanym tekstem i wyeksportowa Zapisz dokument HTML jako archiwum ZIP w C# przy użyciu Aspose.HTML – kompletny przewodnik krok po kroku. ### [Zapisz HTML do ZIP w C# – Kompletny przykład w pamięci](./save-html-to-zip-in-c-complete-in-memory-example/) Zapisz dokument HTML do archiwum ZIP w pamięci przy użyciu Aspose.HTML w C#. +### [Zapisz HTML jako PDF w C# – Kompletny przewodnik z czcionkami](./save-html-as-pdf-in-c-complete-guide-with-fonts/) +Dowiedz się, jak w C# zapisać HTML jako PDF, uwzględniając czcionki, korzystając z Aspose.HTML – kompletny przewodnik krok po kroku. +### [Zapisz HTML jako ZIP w C# – Kompletny przewodnik](./save-html-as-zip-in-c-complete-guide/) +Dowiedz się, jak w C# zapisać dokument HTML jako archiwum ZIP, korzystając z Aspose.HTML – pełny przewodnik krok po kroku. ## Wniosek diff --git a/html/polish/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/polish/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..b57bd87a7 --- /dev/null +++ b/html/polish/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,206 @@ +--- +category: general +date: 2026-02-27 +description: Szybko twórz PDF z HTML przy użyciu pełnego przykładu w C#. Dowiedz się, + jak konwertować HTML na PDF, zapisywać HTML jako PDF oraz eksportować HTML do PDF + z ustawieniami zgodnymi z najlepszymi praktykami. +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: pl +og_description: Utwórz PDF z HTML w C# z gotowym przykładem do uruchomienia. Ten przewodnik + krok po kroku pokazuje, jak konwertować HTML na PDF, zapisać HTML jako PDF oraz + wyeksportować HTML do PDF. +og_title: Utwórz PDF z HTML – Kompletny samouczek C# +tags: +- C# +- PDF +- HTML +title: Tworzenie PDF z HTML – Przewodnik krok po kroku dla programistów +url: /pl/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tworzenie PDF z HTML – Kompletny samouczek C# + +Kiedykolwiek potrzebowałeś **tworzyć PDF z HTML**, ale nie byłeś pewien, które wywołania API użyć? Nie jesteś sam. Niezależnie od tego, czy tworzysz pulpit nawigacyjny raportów, generator faktur, czy eksport statycznej witryny, przekształcenie HTML w PDF jest częstym wymaganiem współczesnych aplikacji web‑centric. + +W tym samouczku przeprowadzimy Cię przez **kompletny, uruchamialny przykład C#**, który pokaże, jak **konwertować HTML do PDF**, skonfigurować opcje renderowania dla wyraźnego wyniku i w końcu **zapisać HTML jako PDF** na dysku. Po zakończeniu będziesz mieć solidny, gotowy do produkcji wzorzec **eksportu HTML do PDF**, który możesz wstawić do dowolnego projektu .NET. + +## Czego się nauczysz + +- Jak załadować lokalny plik HTML przy użyciu `HTMLDocument`. +- Które opcje renderowania poprawiają grubość czcionki, wygładzenie obrazów i hinting tekstu. +- Dokładne wywołanie **eksportu HTML do PDF** przy użyciu pojedynczej metody `Save`. +- Wskazówki dotyczące obsługi dużych dokumentów, debugowania typowych problemów i weryfikacji wyniku. +- Pełny, gotowy do skopiowania przykład kodu, który możesz uruchomić już dziś. + +### Wymagania wstępne + +- .NET 6+ (lub .NET Framework 4.7+). Używane API działa na obu. +- Odwołanie do hipotetycznej biblioteki `HtmlToPdfLib` (zastąp własną nazwą biblioteki). +- Plik `input.html` umieszczony w folderze, którym zarządzasz (nazwijmy go `YOUR_DIRECTORY`). + +Jeśli masz już te elementy, zanurzmy się — nie wymaga dodatkowej konfiguracji. + +## Krok 1: Załaduj dokument HTML, aby **tworzyć PDF z HTML** + +Pierwszą rzeczą, której potrzebujesz, jest instancja `HTMLDocument` wskazująca na plik źródłowy. Pomyśl o tym jak o otwarciu notesu przed rozpoczęciem pisania — bez dokumentu nie ma czego renderować. + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **Dlaczego to ważne:** Wczesne załadowanie pliku HTML pozwala bibliotece przetworzyć DOM, rozwiązać CSS i wstępnie załadować obrazy. Pominięcie tego kroku lub podanie niepoprawnego HTML często skutkuje pustymi stronami podczas **konwersji html do pdf**. + +## Krok 2: Skonfiguruj opcje renderowania dla **konwersji HTML do PDF** + +Opcje renderowania to tajny składnik, który zamienia zwykły PDF w dokument o profesjonalnym wyglądzie. Tutaj włączamy pogrubione czcionki, antyaliasing obrazów i hinting tekstu — funkcje, które większość programistów pomija, a które znacząco poprawiają jakość wizualną. + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **Porada:** Jeśli używasz czcionki specyficznej dla marki, ustaw `FontFamily` w `pdfOptions`. To zapobiega przejściu na czcionki domyślne podczas **konwersji HTML do PDF**. + +## Krok 3: Zapisz plik i **wyeksportuj HTML do PDF** + +Teraz, gdy dokument jest załadowany, a opcje dopasowane, ostatnim krokiem jest pojedyncza linia zapisująca PDF na dysku. Metoda `Save` wewnętrznie wykonuje **konwersję html do pdf**, stosując wszystkie zdefiniowane poprawki renderowania. + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **Co powinieneś zobaczyć:** Otworzenie `output.pdf` w dowolnym przeglądarce wyświetli oryginalny układ HTML, z pogrubionymi nagłówkami, wygładzonymi obrazami i wyraźnym tekstem. Jeśli zauważysz brakujące style, sprawdź ponownie, czy pliki CSS są dostępne względem `input.html`. + +![przykład tworzenia pdf z html](/images/create-pdf-from-html.png "Zrzut ekranu wygenerowanego PDF – tworzenie pdf z html") + +*Powyższy zrzut ekranu (tekst alternatywny: „przykład tworzenia pdf z html”) pokazuje wyrenderowany PDF, który zachowuje oryginalne style HTML.* + +## Częste problemy przy **konwersji HTML do PDF** + +Nawet przy prostym przepływie programiści często napotykają problemy. Poniżej trzy najczęstsze kwestie i sposoby ich uniknięcia. + +### 1. Brakujące zasoby (obrazy, CSS, czcionki) + +Jeśli Twój HTML odwołuje się do zewnętrznych zasobów przy użyciu ścieżek względnych, konwerter może ich nie znaleźć. Zawsze używaj ścieżek bezwzględnych lub ustaw bazowy URL: + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. Duże dokumenty wywołują przekroczenia limitu czasu + +Podczas pracy z raportami wielostronicowymi zwiększ ustawienie limitu czasu biblioteki: + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. Zastąpienie czcionki powoduje nieoczekiwany wygląd + +Określ dokładną rodzinę czcionki, której potrzebujesz: + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +Rozwiązanie tych problemów na wczesnym etapie oszczędza frustrujące sesje debugowania podczas operacji **zapisywania HTML jako PDF**. + +## Zaawansowane: Dodawanie strony tytułowej przed **eksportem HTML do PDF** + +Czasami potrzebna jest niestandardowa okładka — np. strona tytułowa z logo. Możesz dodać prosty fragment HTML przed głównym dokumentem: + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **Dlaczego to robisz:** Dodanie okładki bezpośrednio w HTML utrzymuje prosty pipeline generowania PDF, unikając narzędzi post‑processingowych takich jak iText czy PdfSharp. + +## Weryfikacja wyniku programowo + +Jeśli musisz potwierdzić, że PDF został wygenerowany poprawnie (np. w pipeline CI), możesz sprawdzić rozmiar pliku lub liczbę stron: + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +Liczba stron większa od zera potwierdza, że krok **konwersji HTML do PDF** zakończył się sukcesem. + +## Podsumowanie i kolejne kroki + +Właśnie przeszliśmy przez **kompletny, pełny przykład** pokazujący, jak **tworzyć PDF z HTML** w C#. Przebieg jest: + +1. Załaduj źródłowy HTML (`HTMLDocument`). +2. Dopracuj renderowanie przy użyciu `PdfRenderingOptions`. +3. Wywołaj `Save`, aby **wyeksportować HTML do PDF**. + +Od tego momentu możesz rozważyć: + +- **Przetwarzanie wsadowe**: Przejdź przez folder plików HTML i generuj PDF-y masowo. +- **Dynamiczny HTML**: Użyj silnika widoków Razor do generowania HTML w locie przed konwersją. +- **Bezpieczeństwo**: Izoluj proces konwersji, jeśli akceptujesz HTML dostarczany przez użytkownika (zapobiega wstrzykiwaniu skryptów). + +Śmiało eksperymentuj z różnymi opcjami — możesz przejść na zgodność `PdfA` dla celów archiwizacji lub osadzić JavaScript dla interaktywnych PDF‑ów. Główny wzorzec pozostaje taki sam, a Ty masz teraz solidną bazę dla każdego wymogu **zapisywania HTML jako PDF**. + +--- + +*Miłego kodowania! Jeśli napotkasz jakiekolwiek problemy, zostaw komentarz poniżej lub sprawdź stronę z problemami biblioteki na GitHubie. Społeczność chętnie dzieli się poprawkami, które sprawiają, że **konwersja html do pdf** jest jeszcze płynniejsza.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/polish/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/polish/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..81d110b4c --- /dev/null +++ b/html/polish/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,276 @@ +--- +category: general +date: 2026-02-27 +description: Zapisz HTML jako PDF w C# szybko przy użyciu Aspose.HTML. Dowiedz się, + jak konwertować HTML na PDF, generować PDF z HTML z własnymi czcionkami i stylami + w kilku prostych krokach. +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: pl +og_description: Zapisz HTML jako PDF w C# szybko przy użyciu Aspose.HTML. Ten samouczek + pokazuje, jak konwertować HTML do PDF, generować PDF z HTML oraz stosować własne + czcionki. +og_title: Zapisz HTML jako PDF w C# – Kompletny przewodnik z czcionkami +tags: +- csharp +- pdf +- html +title: Zapisz HTML jako PDF w C# – Kompletny przewodnik z czcionkami +url: /pl/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +craft final answer.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Zapisz HTML jako PDF w C# – Kompletny przewodnik z czcionkami + +Czy kiedykolwiek potrzebowałeś **zapisania HTML jako PDF** z aplikacji C#, ale nie byłeś pewien, której biblioteki wybrać? Nie jesteś sam. Wielu programistów napotyka ten problem, gdy chcą wysyłać faktury, raporty lub drukowalne paragony bezpośrednio z treści internetowej. + +Dobre wieści? Z Aspose.HTML możesz **konwertować HTML do PDF**, **generować PDF z HTML**, a nawet **tworzyć PDF z czcionkami** w kilku linijkach kodu. W tym samouczku przeprowadzimy Cię przez cały proces, wyjaśnimy, dlaczego każde ustawienie ma znaczenie, i dostarczymy gotowy do uruchomienia przykład. + +## Czego się nauczysz + +- Jak załadować lokalny lub zdalny plik HTML w C# +- Jakie opcje renderowania zapewniają czcionki pogrubione/pochylone, antyaliasing i hinting tekstu +- Jak zapisać wynik jako plik PDF na dysku +- Wskazówki dotyczące obsługi własnych czcionek i typowych pułapek + +Nie wymagana jest wcześniejsza znajomość Aspose.HTML — wystarczy środowisko programistyczne .NET (Visual Studio 2022 lub nowsze) oraz pakiet NuGet Aspose.HTML for .NET. + +## Wymagania wstępne + +| Wymaganie | Dlaczego ma znaczenie | +|-------------|------------------------| +| .NET 6.0 lub nowszy | Zapewnia środowisko uruchomieniowe dla Aspose.HTML | +| Aspose.HTML for .NET (NuGet) | Biblioteka, która wykonuje ciężką pracę | +| Przykładowy plik HTML (`sample.html`) | Nasza treść źródłowa do przekształcenia | +| Podstawowa znajomość C# | Aby zrozumieć fragmenty kodu | + +Jeśli masz to wszystko, zanurzmy się. + +## Krok 1: Zainstaluj Aspose.HTML przez NuGet + +Otwórz swój projekt w Visual Studio, kliknij prawym przyciskiem myszy węzeł **Dependencies** i wybierz **Manage NuGet Packages**. Wyszukaj `Aspose.HTML` i naciśnij **Install**. + +```powershell +dotnet add package Aspose.HTML +``` + +> **Wskazówka:** Użyj najnowszej stabilnej wersji (stan na 2026‑02‑27 to 23.11), aby uzyskać najnowsze ulepszenia renderowania. + +## Krok 2: Załaduj źródłowy dokument HTML + +Pierwszą rzeczą, której potrzebujemy, jest obiekt `HTMLDocument` wskazujący na nasz plik. Ta klasa parsuje znacznik, rozwiązuje CSS i przygotowuje wszystko do renderowania. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Dlaczego ten krok?** +> Ładowanie HTML do `HTMLDocument` oddziela etap parsowania od etapu renderowania, co oznacza, że możesz przeglądać DOM lub wprowadzać modyfikacje w czasie wykonywania przed faktycznym utworzeniem PDF. + +## Krok 3: Skonfiguruj opcje renderowania PDF + +Aspose.HTML daje Ci precyzyjną kontrolę nad wyglądem końcowego PDF. W tym przykładzie włączymy style czcionek pogrubione + pochylone, antyaliasing dla płynniejszych grafik oraz hinting tekstu dla wyraźniejszego wyjścia przy niskiej rozdzielczości DPI. + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### Dlaczego te ustawienia? + +- **`FontStyle`** – Łączy wszystkie tagi `` lub `` z bazową czcionką, zapewniając, że PDF zachowuje oryginalne formatowanie. +- **`UseAntialiasing`** – Redukuje ząbkowane krawędzie na wykresach, ikonach lub dowolnej zawartości rastrowej. +- **`UseHinting`** – Wyrównuje kontury glifów do siatki pikseli, co jest szczególnie przydatne, gdy PDF będzie wyświetlany na urządzeniach o niskiej rozdzielczości. + +Jeśli potrzebujesz własnych czcionek (np. czcionki firmowej), umieść pliki `.ttf` w folderze i ustaw `pdfRenderOptions.FontProvider` odpowiednio. To temat na osobny wpis, ale podstawowa idea wygląda tak: + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## Krok 4: Renderuj dokument HTML do PDF + +Teraz łączymy dokument i opcje, a następnie instruujemy Aspose.HTML, aby zapisał plik wyjściowy. + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +Po wykonaniu tej linii znajdziesz `output.pdf` obok swojego pliku wykonywalnego. Otwórz go — powinieneś zobaczyć oryginalny HTML wyrenderowany z pogrubionymi/pochylonymi stylami, płynną grafiką i wyraźnym tekstem. + +> **Oczekiwany wynik:** +> PDF, który odzwierciedla układ `sample.html`, ze wszystkimi nagłówkami w pogrubieniu, tekstem podkreślonym w kursywie oraz wszelkimi osadzonymi obrazami renderowanymi bez ząbkowanych krawędzi. + +## Krok 5: Weryfikacja i dopasowanie (opcjonalnie) + +### Szybki skrypt weryfikacyjny + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +Jeśli PDF wygląda nieprawidłowo, rozważ następujące typowe korekty: + +| Problem | Prawdopodobna przyczyna | Rozwiązanie | +|-------|--------------------------|-------------| +| Brakujące czcionki | Czcionka nie jest osadzona lub nie została znaleziona | Użyj `FontProvider.AddFont` i upewnij się, że plik czcionki jest dostępny | +| Obrazy są rozmyte | Antialiasing wyłączony | Ustaw `UseAntialiasing = true` | +| Tekst wygląda zbyt cienko na ekranie | Hinting wyłączony | Włącz `UseHinting = true` | +| Przesunięcie układu przy podziale na strony | Reguły CSS `page-break` są ignorowane | Dodaj explicite `page-break-before/after` w swoim HTML/CSS | + +## Pełny działający przykład + +Poniżej znajduje się kompletny program, który możesz skopiować i wkleić do nowej aplikacji konsolowej. Zawiera wszystkie dyrektywy `using`, obsługę błędów i komentarze dla przejrzystości. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +Uruchom projekt (`dotnet run`), a powinieneś zobaczyć komunikat sukcesu oraz nowo utworzony `output.pdf`. + +## Częste pytania i przypadki brzegowe + +### Czy mogę **konwertować HTML do PDF** z adresu URL zamiast z pliku lokalnego? + +Oczywiście. Wystarczy zamienić ścieżkę pliku na ciąg URL: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +Aspose.HTML pobierze stronę, rozwiąże zasoby zewnętrzne i ją wyrenderuje. + +### Co z **dużymi plikami HTML** lub **wieloma stronami**? + +Aspose.HTML strumieniuje zawartość, więc zużycie pamięci pozostaje rozsądne. Jeśli potrzebujesz, aby każda sekcja HTML znajdowała się na osobnej stronie PDF, wstaw ręczne podziały stron w HTML: + +```html +
+``` + +### Czy to działa z **.NET Core** i **.NET 7**? + +Tak. Biblioteka jest wieloplatformowa; wystarczy, że celujesz w kompatybilny framework (net6.0, net7.0, itp.) i zainstalujesz odpowiedni pakiet NuGet. + +### Jak **osadzić czcionki**, aby PDF był w pełni przenośny? + +Ustaw `pdfRenderOptions.FontProvider` jak pokazano wcześniej, a także włącz osadzanie czcionek: + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +To gwarantuje, że PDF wygląda tak samo na każdej maszynie, nawet jeśli czcionka nie jest zainstalowana lokalnie. + +## Przykład wizualny + +![save html as pdf example](example.png){alt="przykład zapisu html jako pdf"} + +*Zrzut ekranu pokazuje wygenerowany PDF otwarty w Adobe Acrobat, zachowujący pogrubione/pochylone style i gładkie obrazy.* + +## Zakończenie + +Omówiliśmy wszystko, co potrzebne, aby **zapisać HTML jako PDF** przy użyciu C#. Od ładowania znaczników, przez konfigurację opcji renderowania, po zapis końcowego PDF — proces jest prosty i wysoce konfigurowalny. + +Korzystając z tego przewodnika możesz także **konwertować HTML do PDF**, **generować PDF z HTML** i **tworzyć PDF z czcionkami** w dowolnym scenariuszu raportowania lub generowania dokumentów. Śmiało eksperymentuj z dodatkowymi opcjami — znakami wodnymi, szyfrowaniem czy własnymi rozmiarami stron — ponieważ Aspose.HTML daje Ci tę elastyczność. + +**Kolejne kroki**, które możesz rozważyć: + +- Użyj klasy `PdfSaveOptions`, aby ustawić wersję PDF lub poziom kompresji. +- Połącz wiele instancji `HTMLDocument` w jeden PDF dla raportów wielosekcyjnych. +- Zintegruj ten przepływ pracy z API ASP.NET Core, aby Twoja usługa internetowa mogła zwracać PDF-y na żądanie. + +Masz pytania dotyczące przypadków brzegowych lub potrzebujesz pomocy przy dostosowywaniu potoku renderowania? Zostaw komentarz poniżej i powodzenia w kodowaniu! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/polish/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/polish/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..0dcef2289 --- /dev/null +++ b/html/polish/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,232 @@ +--- +category: general +date: 2026-02-27 +description: Zapisz HTML jako ZIP przy użyciu C# ZipArchive – krok po kroku przykład + z własnym obsługiwaczem zasobów, plus wskazówki, jak wyeksportować HTML do ZIP i + utworzyć archiwum ZIP w kodzie C#. +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: pl +og_description: Zapisz HTML jako ZIP przy użyciu C# ZipArchive. Dowiedz się, jak wyeksportować + HTML do ZIP, korzystając z pełnego przykładu, własnego obsługiwacza zasobów i najlepszych + praktyk. +og_title: Zapisz HTML jako ZIP w C# – Kompletny przewodnik +tags: +- C# +- ZipArchive +- HTML export +title: Zapisz HTML jako ZIP w C# – Kompletny przewodnik +url: /pl/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Zapisz HTML jako ZIP w C# – Kompletny przewodnik + +Kiedykolwiek potrzebowałeś **zapisz HTML jako ZIP**, ale nie byłeś pewien, których klas .NET użyć? Nie jesteś jedyny — wielu programistów napotyka ten problem, gdy chcą spakować stronę internetową razem z jej zasobami do użytku offline lub dystrybucji. Dobra wiadomość? Dzięki wbudowanemu `System.IO.Compression.ZipArchive` możesz to zrobić w kilku linijkach i otrzymasz czysty sposób kontrolowania, jak każdy zasób jest zapisywany. + +W tym tutorialu przeprowadzimy Cię przez **kompletny, działający przykład**, który pokaże dokładnie, jak wyeksportować dokument HTML do pliku ZIP, używając własnego `ResourceHandler` do strumieniowego przesyłania każdego zasobu do archiwum. Po drodze wstawimy kilka fragmentów **c# ziparchive example**, omówimy **how to export html to zip** w rzeczywistych scenariuszach i wskażemy subtelne różnice, gdy chcesz **create zip archive c#** programy, które muszą być solidne. + +> **Wymagania wstępne** – Będziesz potrzebował .NET 6+ (lub .NET Core 3.1) oraz odwołania do biblioteki, która udostępnia `HTMLDocument`, `HTMLSaveOptions` i `ResourceHandler`. Jeśli używasz Aspose.HTML lub podobnego pakietu, po prostu dodaj go przez NuGet. Nie są wymagane żadne inne narzędzia firm trzecich. + +--- + +## Co obejmuje ten tutorial + +- Konfigurowanie **ZipArchive**, które otrzyma plik HTML i jego powiązane zasoby. +- Implementacja **custom resource handler** (`ZipHandler`), który kieruje każdy strumień zasobu do archiwum. +- Użycie **HTMLSaveOptions** do połączenia wszystkiego i faktycznego **save HTML as ZIP**. +- Typowe pułapki przy pracy ze ścieżkami, duplikatami wpisów i dużymi zasobami. +- Wskazówki dotyczące rozszerzania rozwiązania — np. dodanie pliku manifestu lub szyfrowanie ZIP. + +Na koniec będziesz mieć samodzielną metodę, którą możesz wkleić do dowolnego projektu C#, aby **save html as zip** z pewnością. + +## Krok 1: Dodaj wymagane przestrzenie nazw + +Zanim uruchomisz jakikolwiek kod, upewnij się, że kompilator zna klasy kompresji oraz bibliotekę HTML, której używasz. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*Dlaczego to ważne:* `System.IO.Compression` dostarcza `ZipArchive`, natomiast przestrzenie nazw `Aspose.Html` udostępniają `HTMLDocument`, `HTMLSaveOptions` oraz bazową klasę `ResourceHandler`, którą rozszerzymy. Jeśli używasz innego silnika HTML, poszukaj analogicznych typów. + +## Krok 2: Utwórz własny Resource Handler (Primary Keyword in Action) + +Sednem **saving HTML as ZIP** jest poinformowanie silnika, gdzie ma trafić każdy zewnętrzny zasób (obrazy, CSS, skrypty). Dziedzicząc po `ResourceHandler` zyskujemy kontrolę nad strumieniem, który otrzymuje dane. + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**Kluczowe punkty** + +- `info.Uri` jest względnym URL, który silnik HTML próbuje zapisać. Użycie go jako nazwy wpisu zachowuje strukturę folderów w ZIP. +- `CreateEntry` automatycznie utworzy wszystkie potrzebne katalogi; nie musisz nimi zarządzać ręcznie. +- Zwrócenie otwartego strumienia pozwala silnikowi strumieniowo przesyłać dane bezpośrednio — bez plików tymczasowych, bez dodatkowych kopi pamięci. + +## Krok 3: Zainicjuj ZipArchive + +Teraz uruchamiamy `ZipArchive` w trybie **Update**. Ten tryb pozwala dodawać wpisy w trakcie działania oraz zastępować istniejące, jeśli uruchomisz kod wielokrotnie. + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*Wskazówka:* Użyj `FileMode.Create`, aby nadpisać istniejący plik, lub przełącz na `FileMode.OpenOrCreate`, jeśli chcesz dołączyć do istniejącego archiwum. Również otocz `ZipArchive` w instrukcję `using` — zapewnia to prawidłowe zwolnienie zasobów i zamknięcie uchwytu pliku. + +## Krok 4: Załaduj dokument HTML, który chcesz wyeksportować + +Tutaj wskazujesz bibliotece plik źródłowy HTML. Dokument może odwoływać się do plików CSS, obrazów lub JavaScript, które znajdują się obok niego. + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +Jeśli Twój HTML zawiera względne URL, upewnij się, że katalog roboczy procesu odpowiada folderowi zawierającemu te zasoby. W przeciwnym razie silnik nie będzie w stanie ich znaleźć, a ZIP pominie te pliki. + +## Krok 5: Skonfiguruj opcje zapisu – prawdziwy moment “Save HTML as ZIP” + +Teraz łączymy `ZipHandler` z `HTMLSaveOptions`. Ustawienie `SaveFormat` na `ZIP` informuje bibliotekę, aby spakowała wszystko, a nasz handler decyduje, gdzie trafia każdy element. + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*Dlaczego to ważne:* Bez ustawienia `ResourceHandler` biblioteka wróciłaby do zapisywania zasobów w systemie plików, co podważa cel **how to export html to zip** w jednym archiwum. + +## Krok 6: Wykonaj operację zapisu + +Na koniec poproś dokument, aby zapisał się przy użyciu właśnie skonstruowanych opcji. Biblioteka wywoła `ZipHandler.HandleResource` dla każdego napotkanego zewnętrznego zasobu. + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +Gdy blok `using` dla `zipArchive` się zakończy, archiwum zostaje sfinalizowane i plik jest gotowy do dystrybucji. + +## Pełny działający przykład (wszystkie kroki połączone) + +Poniżej znajduje się kompletny program, który możesz skopiować i wkleić do aplikacji konsolowej. Pokazuje **c# ziparchive example**, który **creates zip archive c#** w stylu, i w pełni odpowiada na pytanie **how to export html to zip**. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**Oczekiwany rezultat:** Po uruchomieniu programu, `output.zip` będzie zawierał `index.html` (lub nazwę, którą skonfigurowałeś) oraz wszystkie obrazy, arkusze stylów i skrypty odwoływane przez oryginalną stronę, zachowując hierarchię folderów. Otwórz ZIP, rozpakuj i dwukrotnie kliknij `index.html` — strona powinna wyświetlić się dokładnie tak, jak online, ale teraz jest przenośnym pakietem. + +## Typowe przypadki brzegowe i jak sobie z nimi radzić + +| Sytuacja | Dlaczego się dzieje | Sugerowane rozwiązanie | +|----------|---------------------|------------------------| +| **Duplicate resource names** (np. dwa obrazy o tej samej nazwie pliku w różnych folderach) | `CreateEntry` zgłosi `InvalidOperationException`, jeśli dokładna nazwa wpisu już istnieje. | Dodaj przedrostek do wpisu z jego względną ścieżką (`info.Uri` już to robi) lub ręcznie oczyść nazwy przed utworzeniem wpisu. | +| **Large binary assets** (filmy, obrazy wysokiej rozdzielczości) | Strumieniowanie bezpośrednio do zip jest w porządku, ale domyślny rozmiar bufora może powodować wysokie zużycie pamięci. | Nadpisz `HandleResource`, aby opakować zwrócony strumień w `BufferedStream` z umiarkowanym buforem (np. 64 KB). | +| **Missing resources** | Jeśli HTML zawiera uszkodzony link, handler otrzymuje żądanie pliku, który nie istnieje, co prowadzi do pustego wpisu. | Sprawdź `File.Exists` przed utworzeniem wpisu lub zaloguj ostrzeżenie, aby wiedzieć, że coś brakuje. | +| **Unicode filenames** | Niektóre starsze narzędzia ZIP nie radzą sobie poprawnie z nazwami wpisów w UTF‑8. | Upewnij się, że celujesz w .NET 6+, który domyślnie zapisuje UTF‑8. Jeśli potrzebna jest starsza kompatybilność, ustaw `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);`. | +| **Need a manifest** (lista plików wewnątrz zip) | Użytkownicy czasami chcą mieć `manifest.json` do walidacji. | Po głównym zapisie, utwórz nowy wpis `"manifest.json"` i zapisz listę JSON `zipArchive.Entries`. | + +## Profesjonalne wskazówki dla produkcyjnych implementacji **Save HTML as ZIP** + +1. **Validate the output** – Po zapisaniu otwórz ZIP programowo i zweryfikuj, że `index.html` istnieje oraz że `Length` każdego wpisu > 0. To wykrywa ciche błędy wcześnie. +2. **Parallelize large assets** – Jeśli masz dziesiątki megabajtów obrazów, rozważ kolejkowanie wywołań `HandleResource` w puli `Task` i zapisywanie do archiwum równocześnie (z zachowaniem jednowątkowej natury `ZipArchive`). +3. **Compress wisely** – `ZipArchive` używa domyślnie Deflate. Dla już skompresowanych plików (JPEG, PNG) możesz ustawić `entry.CompressionLevel = CompressionLevel.NoCompression`, aby przyspieszyć operację. +4. **Security** – If the ZIP + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/polish/net/working-with-html-documents/_index.md b/html/polish/net/working-with-html-documents/_index.md index ac233f79e..2e74de74f 100644 --- a/html/polish/net/working-with-html-documents/_index.md +++ b/html/polish/net/working-with-html-documents/_index.md @@ -39,6 +39,11 @@ Teraz przenieśmy Twoje umiejętności na wyższy poziom. Edycja dokumentów HTM ### [Jak zapisać HTML w C# – Kompletny przewodnik z użyciem własnego obsługiwacza zasobów](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) Poznaj metodę zapisu HTML w C# z własnym obsługiwaczem zasobów, umożliwiającą pełną kontrolę nad zapisem i dostępem do zasobów. + +### [Zapisz HTML jako ZIP w C# – Kompletny przewodnik z własnym obsługiwaczem zasobów](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) + +Dowiedz się, jak zapisać dokument HTML jako archiwum ZIP w C# przy użyciu własnego obsługiwacza zasobów. + ### [Jak pogrubić nagłówek za pomocą CSS i C# – Kompletny przewodnik krok po kroku](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) Dowiedz się, jak użyć CSS i C# do pogrubienia nagłówka w HTML, krok po kroku, z praktycznymi przykładami. diff --git a/html/polish/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/polish/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..4fae44f1e --- /dev/null +++ b/html/polish/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,240 @@ +--- +category: general +date: 2026-02-27 +description: Zapisz HTML jako ZIP w C# używając własnego obsługującego zasoby i utwórz + archiwum ZIP w C#. Postępuj zgodnie z tym samouczkiem krok po kroku, aby spakować + HTML i jego zasoby. +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: pl +og_description: Zapisz HTML jako ZIP w C# z niestandardowym obsługiwaczem zasobów. + Dowiedz się, jak tworzyć archiwum ZIP w C# i łatwo osadzać zasoby. +og_title: Zapisz HTML jako ZIP w C# – Pełny poradnik +tags: +- Aspose.HTML +- C# +- ZIP +title: Zapisz HTML jako ZIP w C# – Kompletny przewodnik z niestandardowym handlerem + zasobów +url: /pl/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Zapisz HTML jako ZIP w C# – Kompletny przewodnik z własnym obsługą zasobów + +Zastanawiałeś się kiedyś, jak **zapisać HTML jako ZIP** w C# bez utraty włosów? Nie jesteś jedyny — wielu programistów napotyka problem, gdy muszą dostarczyć stronę HTML wraz z obrazami, CSS‑em lub plikami JavaScript. Dobra wiadomość? Dzięki Aspose.HTML możesz to zrobić w kilku prostych krokach, a **własny handler zasobów** sprawia, że proces jest bezbolesny. + +W tym tutorialu przejdziemy przez wszystko, co musisz wiedzieć: od instalacji biblioteki, przez napisanie handlera, który strumieniuje zasoby bezpośrednio do **tworzenia archiwum ZIP w C#**, po weryfikację gotowego pakietu. Po zakończeniu będziesz mieć gotowe rozwiązanie, które możesz włożyć do dowolnego projektu .NET. + +![Przykład zapisu HTML jako ZIP](/images/save-html-as-zip.png "Diagram pokazujący zapis HTML jako plik ZIP") + +## Zapisz HTML jako ZIP – Co obejmuje ten przewodnik + +Omówimy cały proces: + +1. **Wymagania wstępne** – minimalne narzędzia i pakiety, które są potrzebne. +2. **Własny handler zasobów** – dlaczego jest potrzebny i jak go zaimplementować. +3. **Tworzenie archiwum ZIP w C#** – przy użyciu `System.IO.Compression`. +4. **Konfigurowanie opcji zapisu Aspose.HTML**, aby wskazać handler. +5. **Uruchomienie kodu** i sprawdzenie wyniku. + +Jeśli znasz podstawową składnię C# i masz zainstalowane Visual Studio (lub VS Code), możesz od razu zaczynać. Nie potrzebujesz żadnej zewnętrznej dokumentacji — wszystko znajduje się tutaj. + +--- + +## Krok 1: Przygotowanie projektu i instalacja Aspose.HTML + +Zanim napiszemy jakikolwiek kod, upewnij się, że Twój projekt może odwoływać się do biblioteki Aspose.HTML. + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*Pro tip:* Najnowszy pakiet NuGet (stan na luty 2026) celuje w .NET 6+, więc możesz używać nowoczesnego projektu w stylu SDK bez obaw o przestarzałe frameworki. + +Po przywróceniu pakietu otwórz `Program.cs`. Na razie zostaw plik otwarty — później zamienimy jego zawartość na pełny przykład. + +--- + +## Implementacja własnego handlera zasobów + +### Dlaczego własny handler zasobów? + +Gdy Aspose.HTML zapisuje dokument HTML jako pakiet ZIP, musi pobrać każdy zewnętrzny zasób (obrazy, czcionki, skrypty) i zapisać go gdzieś. Domyślne zachowanie zapisuje je w tymczasowym folderze na dysku. Dostarczając **własny handler zasobów**, określasz bibliotece dokładnie, gdzie każdy zasób ma trafić — w naszym przypadku bezpośrednio do archiwum ZIP. To eliminuje dodatkowy I/O, utrzymuje porządek i daje pełną kontrolę nad nazewnictwem. + +### Kod: Klasa handlera + +Utwórz nowy plik klasy o nazwie `MyHandler.cs` (lub umieść go w `Program.cs`, jeśli wolisz jednoplikowy demo). + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**Wyjaśnienie:** +* `ResourceHandler` to abstrakcyjna klasa z Aspose.HTML, która pozwala przechwycić pobieranie zasobów. +* Zwracając `Stream` uzyskany z `ZipArchiveEntry.Open()`, przekazujemy bibliotece zapisywalny strumień bezpośrednio do pliku ZIP. Bez plików tymczasowych, bez dodatkowego sprzątania. + +--- + +## Tworzenie archiwum ZIP w C# + +Teraz, gdy handler jest gotowy, potrzebujemy miejsca, do którego będzie zapisywał. Klasa .NET `ZipArchive` wykona ciężką pracę. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### Co to robi + +1. **Tworzy w pamięci dokument HTML** z odwołaniem do `logo.png`. +2. **Otwiera `FileStream`**, który stanie się `output.zip`. +3. **Przypisuje `ZipArchive`** do pola statycznego w `MyHandler`. +4. **Ustawia `HTMLSaveOptions`** na `SaveFormat.ZIP` i podłącza nasz handler. +5. **Wywołuje `document.Save`** – Aspose.HTML parsuje HTML, pobiera `logo.png` i strumieniuje go do archiwum poprzez `MyHandler`. + +Ponieważ handler używa URI zasobu (`logo.png`) jako nazwy wpisu, wynikowy ZIP zawiera plik o dokładnie takiej nazwie, zachowując pierwotną względną ścieżkę. + +--- + +## Konfiguracja opcji zapisu dla pakietu ZIP + +Obiekt `HTMLSaveOptions` to miejsce, w którym informujesz Aspose.HTML **jak** spakować wynik. Oprócz `ResourceHandler` możesz dostosować kilka przydatnych właściwości: + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*Dlaczego warto zwrócić uwagę na `EnableCompression`?* +Jeśli pracujesz z dużymi obrazami, włączenie kompresji może zmniejszyć ostateczne archiwum nawet o 70 %. Jednak w przypadku już skompresowanych PNG‑ów zysk jest niewielki, więc możesz wyłączyć tę opcję, aby przyspieszyć operację zapisu. + +--- + +## Uruchom kod i zweryfikuj wynik + +Skompiluj i uruchom program: + +```bash +dotnet run +``` + +Powinieneś zobaczyć komunikat o sukcesie wypisany w konsoli. Przejdź do katalogu, który został wyświetlony, i otwórz `output.zip`. Wewnątrz znajdziesz: + +- `index.html` – zapisany plik HTML. +- `logo.png` – obraz, który został odwołany w znaczniku. + +Otwórz `index.html` bezpośrednio z ZIP (większość eksploratorów systemowych pozwala na podgląd) i zobaczysz nagłówek oraz obraz wyświetlone dokładnie tak, jak w oryginalnym ciągu. + +**Przypadki brzegowe do rozważenia** + +| Sytuacja | Co zrobić | +|-----------|------------| +| HTML odwołuje się do **zdalnego URL** (np. `https://example.com/style.css`) | Handler nadal otrzyma `ResourceInfo.Uri`. Upewnij się, że środowisko ma dostęp do tego URL lub pobierz zasób wcześniej i zmień HTML na ścieżkę lokalną. | +| Potrzebujesz **hierarchii folderów** w ZIP (np. `images/logo.png`) | Zmodyfikuj `HandleResource`, aby dodać prefiks folderu: `var entry = ZipArchive.CreateEntry($"assets/{info.Uri}");` | +| Zasób **nie ładuje się** (404) | Handler zostanie wywołany, ale strumień otrzyma zero bajtów. Owiń wywołanie zapisu w `try/catch` i sprawdź `info.Status`, jeśli potrzebujesz własnej obsługi błędów. | + +--- + +## Podsumowanie: Zapisz HTML jako ZIP w jednym zwartym przepływie + +- **Główny cel:** Zgrupowanie strony HTML i wszystkich jej zewnętrznych zasobów w jednym pliku ZIP przy użyciu C#. +- **Kluczowe narzędzia:** Aspose.HTML (`HTMLDocument`, `HTMLSaveOptions`), `System.IO.Compression.ZipArchive` oraz **własny handler zasobów**. +- **Rezultat:** Przenośny `output.zip`, który można wysłać, przechowywać lub przesłać w sieci, a po rozpakowaniu nie traci powiązań z zasobami. + +--- + +## Co dalej? Rozszerzanie przepływu pracy + +Teraz, gdy opanowałeś **zapis HTML jako ZIP**, możesz zbadać powiązane scenariusze: + +- **Zapis HTML jako PDF** – zamień `SaveFormat.ZIP` na `SaveFormat.PDF` i dostosuj opcje. +- **Osadzanie czcionek** – użyj `@font-face` w HTML i pozwól handlerowi przechwycić pliki czcionek. +- **Przetwarzanie wsadowe** – iteruj po kolekcji ciągów HTML, ponownie używając tego samego `ZipArchive`, aby stworzyć pakiet wielodokumentowy. + +Wszystko to opiera się na tym samym wzorcu **własnego handlera zasobów** i technice **tworzenia archiwum ZIP w C#**, którą właśnie poznałeś. + +--- + +### Ostatnie przemyślenia + +Właśnie zobaczyłeś, jak proste jest **zapisanie HTML jako ZIP** w C#, gdy pozwolisz Aspose.HTML + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/portuguese/net/generate-jpg-and-png-images/_index.md b/html/portuguese/net/generate-jpg-and-png-images/_index.md index 25a4d8da7..e9cf6ea58 100644 --- a/html/portuguese/net/generate-jpg-and-png-images/_index.md +++ b/html/portuguese/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aprenda a usar Aspose.HTML para .NET para manipular documentos HTML, converter H Aprenda a ativar antialiasing ao converter documentos DOCX em imagens PNG ou JPG usando Aspose.HTML para .NET. ### [Converter docx para png – criar arquivo zip em C# tutorial](./convert-docx-to-png-create-zip-archive-c-tutorial/) Aprenda a converter documentos DOCX em imagens PNG e compactá-los em um arquivo ZIP usando C# e Aspose.HTML. +### [Criar PNG a partir de HTML em C# – Guia passo a passo](./create-png-from-html-in-c-step-by-step-guide/) +Aprenda a gerar imagens PNG a partir de HTML em C# usando Aspose.HTML, com instruções passo a passo. ## Conclusão diff --git a/html/portuguese/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/portuguese/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..066cad3a4 --- /dev/null +++ b/html/portuguese/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-02-27 +description: Crie PNG a partir de HTML rapidamente usando Aspose.HTML em C#. Aprenda + a renderizar HTML em imagem, definir largura e altura da imagem e converter HTML + em PNG em minutos. +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: pt +og_description: Crie PNG a partir de HTML com Aspose.HTML. Este guia mostra como renderizar + HTML para imagem, definir largura e altura da imagem e converter HTML para PNG de + forma eficiente. +og_title: Criar PNG a partir de HTML em C# – Tutorial Completo +tags: +- Aspose.HTML +- C# +- Image Rendering +title: Criar PNG a partir de HTML em C# – Guia passo a passo +url: /pt/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crie PNG a partir de HTML em C# – Tutorial Completo + +Já precisou **criar PNG a partir de HTML** mas não sabia qual biblioteca entregaria resultados pixel‑perfect? Você não está sozinho—muitos desenvolvedores enfrentam o mesmo obstáculo ao tentar transformar uma página web em uma imagem estática para e‑mails, relatórios ou miniaturas. + +A boa notícia? Com Aspose.HTML você pode **renderizar HTML para imagem**, controlar as dimensões exatas e **salvar HTML como PNG** com apenas algumas linhas de C#. Neste tutorial vamos percorrer todo o processo, desde o carregamento do seu arquivo HTML até o ajuste de hinting de texto e, finalmente, a gravação do PNG no disco. Ao final, você saberá como **definir largura e altura da imagem** programaticamente e terá um trecho reutilizável que pode ser inserido em qualquer projeto .NET. + +## O que você vai aprender + +- Como carregar um documento HTML usando Aspose.HTML. +- A diferença entre `ImageRenderingOptions` e `TextOptions` e por que elas são importantes. +- Como **converter HTML para PNG** preservando fontes, antialiasing e estilos de sublinhado. +- Dicas para solucionar problemas comuns, como fontes ausentes ou tamanhos de imagem inesperados. +- Um exemplo de código completo, pronto‑para‑executar, que você pode copiar‑colar no Visual Studio. + +> **Pré‑requisitos:** .NET 6+ (ou .NET Framework 4.6.2+), Aspose.HTML para .NET instalado via NuGet e conhecimento básico de C#. Nenhuma outra ferramenta externa é necessária. + +--- + +## Etapa 1: Carregar o Documento HTML – Iniciando a Criação do PNG + +Primeiro, precisamos de um objeto `HTMLDocument` que aponte para o arquivo fonte. Esta é a base para qualquer operação de **criar PNG a partir de HTML**. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*Por que esta etapa importa:* A classe `HTMLDocument` analisa a marcação, resolve o CSS e constrói um DOM que o motor de renderização pode pintar posteriormente em um bitmap. Se o caminho estiver errado, a etapa subsequente de **renderizar html para imagem** lançará uma `FileNotFoundException`. + +--- + +## Etapa 2: Definir Largura e Altura da Imagem – Controlando o Tamanho de Saída + +Ao **renderizar HTML para imagem**, muitas vezes você precisa de uma resolução específica—pense em uma miniatura que deve ter exatamente 1200 × 800 pixels. É aqui que `ImageRenderingOptions` brilha. + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*Dica profissional:* Se você omitir `Width` e `Height`, o Aspose.HTML usará o tamanho natural da página, que pode ser grande demais para incorporações em e‑mail. + +--- + +## Etapa 3: Ajustar a Renderização de Texto – Tornando o Texto Nítido + +Texto no Linux costuma ficar borrado a menos que você habilite o hinting. O objeto `TextOptions` permite controlar isso, garantindo que o PNG final fique nítido em todas as plataformas. + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*Por que usar hinting?* O hinting ajusta a forma de cada glifo para alinhar à grade de pixels, o que é crucial ao **converter HTML para PNG** para telas de baixa resolução. + +--- + +## Etapa 4: Combinar Opções e Adicionar Estilização – Configuração Completa de Renderização + +Agora mesclamos as configurações de imagem e texto, e também demonstramos como aplicar um estilo de fonte global, como sublinhar todo o texto. Esta etapa é onde você realmente **salva HTML como PNG** com estilização personalizada. + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*Observação:* `WebFontStyle` suporta várias bandeiras (Bold, Italic, etc.). Você pode combiná‑las usando OR bit a bit se precisar de múltiplos estilos. + +--- + +## Etapa 5: Renderizar e Salvar – O Momento em que você **Cria PNG a partir de HTML** + +Com tudo configurado, a chamada final é uma única linha que pinta o DOM em um bitmap e o grava no disco. + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +Depois que esta linha for executada, você encontrará `output.png` na pasta especificada, exatamente 1200 × 800 pixels, com gráficos antialiasing e texto com hinting. + +--- + +## Exemplo Completo – Cole, Execute, Verifique + +Abaixo está o programa completo que pode ser compilado como um aplicativo de console. Ele inclui todas as declarações `using`, tratamento de erros e comentários necessários. + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**Resultado esperado:** Um arquivo chamado `output.png` aparece ao lado do seu executável, mostrando a versão renderizada de `sample.html`. Abra‑o com qualquer visualizador de imagens para confirmar as dimensões e a estilização. + +--- + +## Armadilhas Comuns & Como Evitá‑las + +| Problema | Sintoma | Solução | +|----------|----------|---------| +| Fontes ausentes | Texto aparece como sans‑serif genérico | Instale as fontes necessárias na máquina host ou incorpore web fonts no HTML. | +| Dimensões incorretas | PNG fica maior ou menor que o esperado | Verifique os valores de `Width` e `Height` em `ImageRenderingOptions`. | +| Bordas borradas | Sem antialiasing | Garanta `UseAntialiasing = true`. | +| Artefatos de renderização no Linux | Texto parece borrado | Defina `UseHinting = true` em `TextOptions`. | + +*Dica profissional:* Quando você **renderiza HTML para imagem** em um servidor sem interface gráfica, certifique‑se de que o servidor possui as bibliotecas de sistema necessárias (por exemplo, `libgdiplus` no Linux), caso contrário o Aspose.HTML pode recorrer a um renderizador de software com qualidade reduzida. + +--- + +## Expandindo a Solução – Próximos Passos + +- **Conversão em lote:** Percorra uma lista de arquivos HTML e chame a mesma lógica de renderização para gerar uma galeria de PNGs. +- **Formatos diferentes:** Troque `output.png` por `output.jpg` ou `output.bmp` alterando a extensão do arquivo; o Aspose.HTML seleciona automaticamente o codificador correto. +- **Dimensionamento dinâmico:** Calcule `Width` e `Height` com base na meta tag viewport do HTML para designs responsivos. +- **Marca d'água:** Use `Aspose.Html.Drawing` para sobrepor um logotipo antes de salvar. + +Essas ideias permitem que você evolua de um simples snippet de **criar PNG a partir de HTML** para um serviço completo de geração de imagens. + +--- + +## Conclusão + +Percorremos tudo o que você precisa para **criar PNG a partir de HTML** usando Aspose.HTML para .NET: carregamento do documento, configuração de **definir largura e altura da imagem**, ajuste fino do texto com hinting e, finalmente, **salvar HTML como PNG**. O exemplo de código completo está pronto para ser inserido no seu projeto, e as dicas acima devem evitar dores de cabeça comuns. + +Agora que você pode **renderizar HTML para imagem** de forma confiável, que tal experimentar diferentes estilos, processamento em lote ou até mesmo converter para PDF no mesmo pipeline? O céu é o limite, e o código já está em suas mãos. + +Feliz codificação, e sinta‑se à vontade para compartilhar seus resultados ou fazer perguntas nos comentários! + +![Exemplo de criação de PNG a partir de HTML](/images/create-png-from-html.png "Criação de PNG a partir de HTML usando Aspose.HTML") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/portuguese/net/html-extensions-and-conversions/_index.md b/html/portuguese/net/html-extensions-and-conversions/_index.md index 8971d46a5..5c7123009 100644 --- a/html/portuguese/net/html-extensions-and-conversions/_index.md +++ b/html/portuguese/net/html-extensions-and-conversions/_index.md @@ -40,9 +40,15 @@ Aspose.HTML para .NET não é apenas uma biblioteca; é um divisor de águas no ### [Converter HTML para PDF no .NET com Aspose.HTML](./convert-html-to-pdf/) Converta HTML para PDF sem esforço com Aspose.HTML para .NET. Siga nosso guia passo a passo e libere o poder da conversão de HTML para PDF. +### [Salvar HTML como PDF em C# – Guia Completo com Fontes](./save-html-as-pdf-in-c-complete-guide-with-fonts/) +Aprenda a salvar documentos HTML como PDF em C#, preservando fontes personalizadas, com um tutorial passo a passo. + ### [Criar PDF a partir de HTML – Guia passo a passo em C#](./create-pdf-from-html-c-step-by-step-guide/) Aprenda a criar um PDF a partir de HTML usando C# com Aspose.HTML, seguindo um guia passo a passo. +### [Criar PDF a partir de HTML – Guia passo a passo para desenvolvedores](./create-pdf-from-html-step-by-step-guide-for-developers/) +Aprenda a criar um PDF a partir de HTML usando C# com Aspose.HTML, seguindo um guia passo a passo para desenvolvedores. + ### [Criar documento HTML com texto estilizado e exportar para PDF – Guia completo](./create-html-document-with-styled-text-and-export-to-pdf-full/) Aprenda a criar um documento HTML com texto formatado e exportá-lo para PDF usando Aspose.HTML para .NET. Guia passo a passo. @@ -73,8 +79,12 @@ Descubra o poder do Aspose.HTML para .NET: Converta HTML para XPS sem esforço. ### [Salvar HTML como ZIP – Tutorial Completo em C#](./save-html-as-zip-complete-c-tutorial/) Aprenda a salvar documentos HTML em arquivos ZIP usando Aspose.HTML para .NET com um tutorial passo a passo em C#. +### [Salvar HTML como ZIP em C# – Guia Completo](./save-html-as-zip-in-c-complete-guide/) +Aprenda a salvar HTML em arquivos ZIP com Aspose.HTML para .NET em C# através de um guia passo a passo completo. + ### [Como compactar HTML em C# – Salvar HTML em ZIP](./how-to-zip-html-in-c-save-html-to-zip/) Aprenda a criar um arquivo ZIP contendo arquivos HTML usando Aspose.HTML para .NET em C#. + ### [Salvar HTML em ZIP em C# – Exemplo Completo em Memória](./save-html-to-zip-in-c-complete-in-memory-example/) Aprenda a salvar arquivos HTML em um arquivo ZIP usando C# com um exemplo completo totalmente em memória. diff --git a/html/portuguese/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/portuguese/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..e1535177b --- /dev/null +++ b/html/portuguese/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,206 @@ +--- +category: general +date: 2026-02-27 +description: Crie PDF a partir de HTML rapidamente com um exemplo completo em C#. + Aprenda a converter HTML para PDF, salvar HTML como PDF e exportar HTML para PDF + com configurações de boas práticas. +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: pt +og_description: Crie PDF a partir de HTML em C# com um exemplo pronto para executar. + Este guia orienta você a converter HTML em PDF, salvar HTML como PDF e exportar + HTML para PDF. +og_title: Criar PDF a partir de HTML – Tutorial Completo de C# +tags: +- C# +- PDF +- HTML +title: Criar PDF a partir de HTML – Guia passo a passo para desenvolvedores +url: /pt/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Criar PDF a partir de HTML – Tutorial Completo em C# + +Já precisou **criar PDF a partir de HTML** mas não sabia quais chamadas de API usar? Você não está sozinho. Seja construindo um painel de relatórios, um gerador de faturas ou um exportador de site estático, transformar HTML em PDF é uma necessidade frequente para aplicativos modernos centrados na web. + +Neste tutorial vamos percorrer um **exemplo completo e executável em C#** que mostra como **converter HTML para PDF**, configurar opções de renderização para obter resultados nítidos e, por fim, **salvar HTML como PDF** no disco. Ao final, você terá um padrão sólido e pronto para produção de **exportar HTML para PDF** que pode ser inserido em qualquer projeto .NET. + +## O que você vai aprender + +- Como carregar um arquivo HTML local com `HTMLDocument`. +- Quais opções de renderização melhoram o peso da fonte, a suavidade das imagens e o hinting de texto. +- A chamada exata para **exportar HTML para PDF** com um único método `Save`. +- Dicas para lidar com documentos grandes, depurar armadilhas comuns e verificar o resultado. +- Um exemplo completo, pronto para copiar e colar, que você pode executar hoje. + +### Pré‑requisitos + +- .NET 6+ (ou .NET Framework 4.7+). A API que usamos funciona em ambos. +- Uma referência à hipotética `HtmlToPdfLib` (substitua pelo nome da sua biblioteca real). +- Um arquivo `input.html` colocado em uma pasta que você controla (vamos chamá‑la de `YOUR_DIRECTORY`). + +Se você já tem esses itens, vamos começar — sem necessidade de configuração extra. + +## Etapa 1: Carregar o Documento HTML para **Criar PDF a partir de HTML** + +A primeira coisa que você precisa é uma instância de `HTMLDocument` que aponte para o arquivo fonte. Pense nisso como abrir um caderno antes de começar a escrever — sem um documento, não há nada para renderizar. + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **Por que isso importa:** Carregar o arquivo HTML antecipadamente permite que a biblioteca analise o DOM, resolva o CSS e pré‑carregue as imagens. Pular essa etapa ou fornecer HTML mal‑formado costuma resultar em páginas em branco durante a **conversão de html para pdf**. + +## Etapa 2: Configurar Opções de Renderização para **Conversão de HTML para PDF** + +As opções de renderização são o molho secreto que transforma um PDF simples em um documento com aparência profissional. Aqui habilitamos fontes em negrito, antialiasing para imagens e hinting para texto — recursos que a maioria dos desenvolvedores ignora, mas que melhoram drasticamente a fidelidade visual. + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **Dica de especialista:** Se você estiver usando uma fonte específica da marca, defina `FontFamily` dentro de `pdfOptions` também. Isso impede a substituição por fontes genéricas durante a **conversão de HTML para PDF**. + +## Etapa 3: Salvar o Arquivo e **Exportar HTML para PDF** + +Agora que o documento está carregado e as opções afinadas, o ato final é uma única linha que grava o PDF no disco. O método `Save` realiza internamente a **conversão de html para pdf**, aplicando todos os ajustes de renderização que definimos. + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **O que você deve ver:** Abrir `output.pdf` em qualquer visualizador exibirá o layout original do HTML, com títulos em negrito, imagens suaves e texto nítido. Se notar estilos ausentes, verifique se seus arquivos CSS são acessíveis de forma relativa ao `input.html`. + +![criar pdf a partir de html exemplo](/images/create-pdf-from-html.png "Captura de tela do PDF gerado – criar pdf a partir de html") + +*A captura de tela acima (texto alternativo: “exemplo de criar pdf a partir de html”) mostra um PDF renderizado que preserva a estilização original do HTML.* + +## Armadilhas Comuns ao **Converter HTML para PDF** + +Mesmo com um fluxo simples, desenvolvedores frequentemente encontram obstáculos. Abaixo estão as três questões mais frequentes e como evitá‑las. + +### 1. Recursos Ausentes (Imagens, CSS, Fontes) + +Se seu HTML referencia ativos externos via caminhos relativos, o conversor pode não localizá‑los. Sempre use caminhos absolutos ou defina uma URL base: + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. Documentos Grandes Geram Timeouts + +Ao lidar com relatórios de várias páginas, aumente a configuração de timeout da biblioteca: + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. Substituição de Fonte Causa Aparência Inesperada + +Especifique a família de fontes exata que você precisa: + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +Abordar essas questões antecipadamente evita sessões frustrantes de depuração durante operações de **salvar HTML como PDF**. + +## Avançado: Adicionar uma Página de Capa antes de **Exportar HTML para PDF** + +Às vezes você precisa de uma capa personalizada — talvez uma página de título com logotipo. Você pode pré‑pendar um pequeno trecho HTML antes do documento principal: + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **Por que fazer isso:** Inserir a capa diretamente em HTML mantém o pipeline de geração de PDF simples, evitando ferramentas de pós‑processamento como iText ou PdfSharp. + +## Verificando a Saída Programaticamente + +Se precisar afirmar que o PDF foi gerado corretamente (por exemplo, em pipelines de CI), você pode inspecionar o tamanho do arquivo ou a contagem de páginas: + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +Uma contagem de páginas diferente de zero confirma que a etapa de **conversão de HTML para PDF** foi bem‑sucedida. + +## Recapitulação & Próximos Passos + +Acabamos de percorrer um **exemplo completo, de ponta a ponta** de como **criar PDF a partir de HTML** em C#. O fluxo é: + +1. Carregar o HTML fonte (`HTMLDocument`). +2. Ajustar a renderização com `PdfRenderingOptions`. +3. Chamar `Save` para **exportar HTML para PDF**. + +A partir daqui você pode explorar: + +- **Processamento em lote**: percorrer uma pasta de arquivos HTML e gerar PDFs em massa. +- **HTML dinâmico**: usar um motor de visualização Razor para gerar HTML sob demanda antes da conversão. +- **Segurança**: isolar o processo de conversão se você aceitar HTML fornecido por usuários (previne injeção de scripts). + +Sinta‑se à vontade para experimentar diferentes opções — talvez mudar para conformidade `PdfA` para fins de arquivamento, ou incorporar JavaScript para PDFs interativos. O padrão central permanece o mesmo, e agora você tem uma base confiável para qualquer necessidade de **salvar HTML como PDF**. + +--- + +*Feliz codificação! Se encontrar alguma peculiaridade, deixe um comentário abaixo ou confira a página de issues no GitHub da biblioteca. A comunidade é ótima em compartilhar ajustes que tornam a **conversão de html para pdf** ainda mais fluida.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/portuguese/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/portuguese/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..a43fe73a7 --- /dev/null +++ b/html/portuguese/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,276 @@ +--- +category: general +date: 2026-02-27 +description: Salve HTML como PDF em C# rapidamente usando Aspose.HTML. Aprenda como + converter HTML para PDF, gerar PDF a partir de HTML com fontes e estilos personalizados + em apenas alguns passos. +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: pt +og_description: Salve HTML como PDF em C# rapidamente usando Aspose.HTML. Este tutorial + mostra como converter HTML para PDF, gerar PDF a partir de HTML e aplicar fontes + personalizadas. +og_title: Salvar HTML como PDF em C# – Guia Completo com Fontes +tags: +- csharp +- pdf +- html +title: Salvar HTML como PDF em C# – Guia Completo com Fontes +url: /pt/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Salvar HTML como PDF em C# – Guia Completo com Fontes + +Já precisou **salvar HTML como PDF** a partir de uma aplicação C# mas não sabia qual biblioteca escolher? Você não está sozinho. Muitos desenvolvedores encontram esse obstáculo quando querem gerar faturas, relatórios ou recibos imprimíveis diretamente a partir de conteúdo web. + +A boa notícia? Com Aspose.HTML você pode **converter HTML para PDF**, **gerar PDF a partir de HTML**, e ainda **criar PDF com fontes** em poucas linhas. Neste tutorial vamos percorrer todo o processo, explicar por que cada configuração importa e fornecer um exemplo pronto‑para‑executar. + +## O que você vai aprender + +- Como carregar um arquivo HTML local ou remoto em C# +- Quais opções de renderização fornecem fontes em negrito/itálico, antialiasing e hinting de texto +- Como salvar o resultado como um arquivo PDF no disco +- Dicas para lidar com fontes personalizadas e armadilhas comuns + +Nenhuma experiência prévia com Aspose.HTML é necessária — apenas um ambiente de desenvolvimento .NET (Visual Studio 2022 ou superior) e o pacote NuGet Aspose.HTML for .NET. + +## Pré‑requisitos + +| Requisito | Por que importa | +|-----------|-----------------| +| .NET 6.0 ou superior | Fornece o runtime para Aspose.HTML | +| Aspose.HTML for .NET (NuGet) | A biblioteca que faz o trabalho pesado | +| Um arquivo HTML de exemplo (`sample.html`) | Nosso conteúdo fonte a ser transformado | +| Conhecimento básico de C# | Para entender os trechos de código | + +Se você tem tudo isso, vamos mergulhar. + +## Etapa 1: Instalar Aspose.HTML via NuGet + +Abra seu projeto no Visual Studio, clique com o botão direito no nó **Dependencies** e escolha **Manage NuGet Packages**. Procure por `Aspose.HTML` e clique em **Install**. + +```powershell +dotnet add package Aspose.HTML +``` + +> **Dica de especialista:** Use a versão estável mais recente (em 2026‑02‑27 é a 23.11) para obter as melhorias de renderização mais recentes. + +## Etapa 2: Carregar o Documento HTML Fonte + +A primeira coisa que precisamos é de um objeto `HTMLDocument` que aponte para o nosso arquivo. Essa classe analisa a marcação, resolve o CSS e prepara tudo para a renderização. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Por que essa etapa?** +> Carregar o HTML em um `HTMLDocument` isola a fase de parsing da fase de renderização, o que significa que você pode inspecionar o DOM ou fazer modificações em tempo de execução antes de realmente criar o PDF. + +## Etapa 3: Configurar as Opções de Renderização PDF + +Aspose.HTML oferece controle fino sobre como o PDF final ficará. Neste exemplo vamos habilitar estilos de fonte negrito + itálico, antialiasing para gráficos mais suaves e hinting de texto para saída n‑dpi mais nítida. + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### Por que essas configurações? + +- **`FontStyle`** – Mescla quaisquer tags `` ou `` com a fonte base, garantindo que o PDF respeite a formatação original. +- **`UseAntialiasing`** – Reduz bordas serrilhadas em gráficos, ícones ou qualquer conteúdo rasterizado. +- **`UseHinting`** – Alinha os contornos dos glifos à grade de pixels, o que é especialmente útil quando o PDF será visualizado em dispositivos de baixa resolução. + +Se precisar de fontes personalizadas (por exemplo, a fonte da identidade visual da empresa), coloque os arquivos `.ttf` em uma pasta e configure `pdfRenderOptions.FontProvider` adequadamente. Esse é um assunto extenso, mas a ideia básica é: + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## Etapa 4: Renderizar o Documento HTML para PDF + +Agora combinamos o documento e as opções, e instruímos o Aspose.HTML a gravar o arquivo de saída. + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +Depois que esta linha for executada, você encontrará `output.pdf` ao lado do seu executável. Abra‑o — você deverá ver o HTML original renderizado com estilos negrito/itálico, gráficos suaves e texto nítido. + +> **Resultado esperado:** +> Um PDF que espelha o layout de `sample.html`, com todos os títulos em negrito, texto enfatizado em itálico e quaisquer imagens incorporadas renderizadas sem bordas serrilhadas. + +## Etapa 5: Verificar e Ajustar (Opcional) + +### Script de verificação rápida + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +Se o PDF parecer errado, considere estes ajustes comuns: + +| Problema | Causa provável | Solução | +|----------|----------------|---------| +| Fontes ausentes | Fonte não incorporada ou não encontrada | Use `FontProvider.AddFont` e garanta que o arquivo de fonte esteja acessível | +| Imagens ficam borradas | Antialiasing desativado | Defina `UseAntialiasing = true` | +| Texto parece muito fino na tela | Hinting desativado | Habilite `UseHinting = true` | +| Mudança de layout na quebra de página | Regras CSS `page-break` ignoradas | Adicione explicitamente `page-break-before/after` no seu HTML/CSS | + +## Exemplo Completo Funcionando + +Abaixo está o programa completo que você pode copiar‑colar em um novo aplicativo de console. Ele inclui todas as diretivas `using`, tratamento de erros e comentários para clareza. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +Execute o projeto (`dotnet run`) e você deverá ver a mensagem de sucesso seguida de um `output.pdf` recém‑criado. + +## Perguntas Frequentes & Casos Especiais + +### Posso **converter HTML para PDF** a partir de uma URL em vez de um arquivo local? + +Com certeza. Basta substituir o caminho do arquivo por uma string URL: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +Aspose.HTML fará o download da página, resolverá recursos externos e a renderizará. + +### E quanto a **arquivos HTML grandes** ou **múltiplas páginas**? + +Aspose.HTML faz streaming do conteúdo, então o uso de memória permanece razoável. Se precisar que cada seção HTML fique em uma página PDF separada, insira quebras de página manuais no HTML: + +```html +
+``` + +### Isso funciona com **.NET Core** e **.NET 7**? + +Sim. A biblioteca é cross‑platform; basta garantir que você esteja direcionando um framework compatível (net6.0, net7.0, etc.) e instalar o pacote NuGet correspondente. + +### Como **incorporar fontes** para total portabilidade do PDF? + +Defina `pdfRenderOptions.FontProvider` como mostrado antes e também habilite a incorporação de fontes: + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +Isso garante que o PDF tenha a mesma aparência em qualquer máquina, mesmo que a fonte não esteja instalada localmente. + +## Exemplo Visual + +![save html as pdf example](example.png){alt="exemplo de salvar html como pdf"} + +*A captura de tela mostra o PDF gerado aberto no Adobe Acrobat, preservando estilos negrito/itálico e imagens suaves.* + +## Conclusão + +Cobremos tudo o que você precisa para **salvar HTML como PDF** usando C#. Desde o carregamento da marcação, configuração das opções de renderização, até a gravação do PDF final, o processo é direto e altamente personalizável. + +Seguindo este guia você também pode **converter HTML para PDF**, **gerar PDF a partir de HTML**, e **criar PDF com fontes** para qualquer cenário de relatórios ou geração de documentos. Sinta‑se à vontade para experimentar opções adicionais — marcas d’água, criptografia ou tamanhos de página personalizados — pois o Aspose.HTML oferece essa flexibilidade. + +**Próximos passos** que você pode explorar: + +- Use a classe `PdfSaveOptions` para definir a versão do PDF ou nível de compressão. +- Combine múltiplas instâncias de `HTMLDocument` em um único PDF para relatórios de várias seções. +- Integre este fluxo de trabalho em uma API ASP.NET Core para que seu serviço web possa retornar PDFs sob demanda. + +Tem dúvidas sobre casos extremos ou precisa de ajuda para ajustar o pipeline de renderização? Deixe um comentário abaixo e feliz codificação! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/portuguese/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/portuguese/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..fa1b22d82 --- /dev/null +++ b/html/portuguese/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,259 @@ +--- +category: general +date: 2026-02-27 +description: Salvar HTML como ZIP usando C# ZipArchive – exemplo passo a passo com + um manipulador de recursos personalizado, além de dicas sobre como exportar HTML + para ZIP e criar código C# para gerar um arquivo zip. +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: pt +og_description: Salve HTML como ZIP usando C# ZipArchive. Aprenda como exportar HTML + para ZIP com um exemplo completo, manipulador de recursos personalizado e boas práticas. +og_title: Salvar HTML como ZIP em C# – Guia Completo +tags: +- C# +- ZipArchive +- HTML export +title: Salvar HTML como ZIP em C# – Guia Completo +url: /pt/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +Pro Tips for Production‑Ready **Save HTML as ZIP** Implementations" translate. + +List items translate. + +The last bullet ends with "Security – If the ZIP" incomplete; keep as is. + +We must keep shortcodes at end. + +Now produce final content. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Salvar HTML como ZIP em C# – Guia Completo + +Já precisou **salvar HTML como ZIP** mas não sabia quais classes .NET usar? Você não está sozinho — muitos desenvolvedores enfrentam esse obstáculo quando desejam agrupar uma página web com seus recursos para uso offline ou distribuição. A boa notícia? Com o `System.IO.Compression.ZipArchive` embutido você pode fazer isso em poucas linhas, e ainda obterá um modo limpo de controlar como cada recurso é gravado. + +Neste tutorial vamos percorrer um **exemplo completo e executável** que mostra exatamente como exportar um documento HTML para um arquivo ZIP, usando um `ResourceHandler` personalizado para transmitir cada ativo para o arquivo. Ao longo do caminho inseriremos alguns trechos de **c# ziparchive example**, discutiremos **how to export html to zip** em cenários reais e apontaremos as diferenças sutis ao criar programas **create zip archive c#** robustos. + +> **Pré-requisitos** – Você precisará do .NET 6+ (ou .NET Core 3.1) e de uma referência à biblioteca que fornece `HTMLDocument`, `HTMLSaveOptions` e `ResourceHandler`. Se estiver usando Aspose.HTML ou um pacote similar, basta adicioná‑lo via NuGet. Nenhuma outra ferramenta de terceiros é necessária. + +--- + +## O que este tutorial cobre + +- Configurar um **ZipArchive** que receberá o arquivo HTML e seus recursos vinculados. +- Implementar um **handler de recurso personalizado** (`ZipHandler`) que direciona cada fluxo de recurso para o arquivo. +- Usar **HTMLSaveOptions** para conectar tudo e realmente **salvar HTML como ZIP**. +- Armadilhas comuns ao lidar com caminhos, entradas duplicadas e recursos grandes. +- Dicas para estender a solução — como adicionar um arquivo de manifesto ou criptografar o ZIP. + +Ao final, você terá um método autônomo que pode inserir em qualquer projeto C# para **save html as zip** com confiança. + +--- + +## Etapa 1: Adicionar os namespaces necessários + +Antes de qualquer código ser executado, certifique‑se de que o compilador conhece as classes de compressão e a biblioteca HTML que você está usando. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*Por que isso importa:* `System.IO.Compression` fornece o `ZipArchive`, enquanto os namespaces `Aspose.Html` expõem `HTMLDocument`, `HTMLSaveOptions` e a classe base `ResourceHandler` que vamos estender. Se estiver usando outro motor HTML, procure tipos análogos. + +--- + +## Etapa 2: Criar um Resource Handler Personalizado (Palavra‑chave Principal em Ação) + +O coração de **salvar HTML como ZIP** é dizer ao motor onde cada recurso externo (imagens, CSS, scripts) deve ser colocado. Ao herdar de `ResourceHandler` ganhamos controle sobre o fluxo que recebe os dados. + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**Pontos principais** + +- `info.Uri` é a URL relativa que o motor HTML está tentando gravar. Usá‑la como nome da entrada mantém a estrutura de pastas intacta dentro do ZIP. +- `CreateEntry` criará automaticamente os diretórios necessários; você não precisa gerenciá‑los manualmente. +- Retornar o stream aberto permite que o motor transmita os dados diretamente — sem arquivos temporários, sem cópias extras de memória. + +--- + +## Etapa 3: Inicializar o ZipArchive + +Agora criamos um `ZipArchive` no modo **Update**. Esse modo permite adicionar entradas conforme avançamos e também substituir as existentes se o código for executado várias vezes. + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*Dica de especialista:* Use `FileMode.Create` para sobrescrever qualquer arquivo anterior, ou troque para `FileMode.OpenOrCreate` se quiser acrescentar a um arquivo existente. Também, envolva o `ZipArchive` em uma instrução `using` — isso garante que o arquivo seja descartado corretamente e o handle liberado. + +--- + +## Etapa 4: Carregar o Documento HTML que Você Deseja Exportar + +É aqui que você aponta a biblioteca para o arquivo HTML de origem. O documento pode referenciar CSS, imagens ou arquivos JavaScript que estejam ao seu lado. + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +Se o seu HTML contém URLs relativas, certifique‑se de que o diretório de trabalho do processo corresponde à pasta que contém esses ativos. Caso contrário, o motor não conseguirá localizá‑los e o ZIP perderá esses arquivos. + +--- + +## Etapa 5: Configurar as Opções de Salvamento – O Momento Real de “Salvar HTML como ZIP” + +Agora vinculamos o `ZipHandler` ao `HTMLSaveOptions`. Definir `SaveFormat` como `ZIP` indica à biblioteca que tudo deve ser empacotado, enquanto nosso handler decide onde cada peça vai. + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*Por que isso importa:* Sem definir `ResourceHandler`, a biblioteca recairia para gravar recursos no sistema de arquivos, o que anula o propósito de **how to export html to zip** em um único arquivo. + +--- + +## Etapa 6: Executar a Operação de Salvamento + +Por fim, solicite ao documento que se salve usando as opções que acabamos de montar. A biblioteca invocará `ZipHandler.HandleResource` para cada recurso externo encontrado. + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +Quando o bloco `using` para `zipArchive` termina, o arquivo é finalizado e está pronto para distribuição. + +--- + +## Exemplo Completo (Todas as Etapas Combinadas) + +Abaixo está o programa completo que você pode copiar‑colar em um aplicativo console. Ele demonstra um **c# ziparchive example** que **creates zip archive c#**, respondendo plenamente a **how to export html to zip**. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**Resultado esperado:** Após executar o programa, `output.zip` conterá `index.html` (ou o nome que você configurou) mais todas as imagens, folhas de estilo e scripts referenciados pela página original, preservando a hierarquia de pastas. Abra o ZIP, extraia e dê um duplo‑clique em `index.html` — a página deve ser renderizada exatamente como online, mas agora como um pacote portátil. + +--- + +## Casos de Borda Comuns & Como Lidar com Eles + +| Situação | Por que acontece | Solução sugerida | +|-----------|----------------|---------------| +| **Nomes de recurso duplicados** (ex.: duas imagens com o mesmo nome em pastas diferentes) | `CreateEntry` lançará `InvalidOperationException` se o nome exato da entrada já existir. | Prefixe a entrada com seu caminho relativo (`info.Uri` já faz isso) ou higienize os nomes manualmente antes de criar a entrada. | +| **Recursos binários grandes** (vídeos, imagens de alta resolução) | Transmitir diretamente para o zip funciona, mas o tamanho padrão do buffer pode gerar alto consumo de memória. | Sobrescreva `HandleResource` para envolver o stream retornado em um `BufferedStream` com buffer modesto (ex.: 64 KB). | +| **Recursos ausentes** | Se o HTML contém um link quebrado, o handler recebe uma solicitação para um arquivo inexistente, gerando uma entrada vazia. | Verifique `File.Exists` antes de criar a entrada, ou registre um aviso para saber que algo está faltando. | +| **Nomes de arquivos Unicode** | Algumas ferramentas ZIP antigas tratam mal nomes UTF‑8. | Garanta que você está usando .NET 6+, que grava UTF‑8 por padrão. Se precisar de compatibilidade legada, defina `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);`. | +| **Necessidade de manifesto** (lista de arquivos dentro do zip) | Consumidores às vezes querem um `manifest.json` para validação. | Após o salvamento principal, crie uma nova entrada `"manifest.json"` e escreva uma lista JSON de `zipArchive.Entries`. | + +--- + +## Dicas Profissionais para Implementações de **Save HTML as ZIP** Prontas para Produção + +1. **Valide a saída** – Depois de salvar, abra o ZIP programaticamente e verifique se `index.html` existe e se o `Length` de cada entrada > 0. Isso captura falhas silenciosas cedo. +2. **Paralelize ativos grandes** – Se houver dezenas de megabytes de imagens, considere enfileirar chamadas `HandleResource` em um pool de `Task` e escrever no arquivo de forma concorrente (respeitando a natureza de escritor único do `ZipArchive`). +3. **Comprima com sabedoria** – `ZipArchive` usa Deflate por padrão. Para arquivos já comprimidos (JPEG, PNG), você pode definir `entry.CompressionLevel = CompressionLevel.NoCompression` para acelerar a operação. +4. **Segurança** – Se o ZIP + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/portuguese/net/working-with-html-documents/_index.md b/html/portuguese/net/working-with-html-documents/_index.md index a8b4154dc..3f49c8313 100644 --- a/html/portuguese/net/working-with-html-documents/_index.md +++ b/html/portuguese/net/working-with-html-documents/_index.md @@ -37,6 +37,9 @@ 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 salvar HTML como ZIP em C# – Guia completo usando um manipulador de recursos personalizado](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) + ### [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/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/portuguese/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/portuguese/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..08bf72c99 --- /dev/null +++ b/html/portuguese/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-02-27 +description: Salvar HTML como ZIP em C# usando um manipulador de recursos personalizado + e criar um arquivo ZIP em C#. Siga este tutorial passo a passo para agrupar HTML + e seus recursos. +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: pt +og_description: Salve HTML como ZIP em C# com um manipulador de recursos personalizado. + Aprenda como criar um arquivo ZIP em C# e incorporar recursos sem esforço. +og_title: Salvar HTML como ZIP em C# – Tutorial Completo +tags: +- Aspose.HTML +- C# +- ZIP +title: Salvar HTML como ZIP em C# – Guia Completo com Manipulador de Recursos Personalizado +url: /pt/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Salvar HTML como ZIP em C# – Guia Completo com Manipulador de Recursos Personalizado + +Já se perguntou como **salvar HTML como ZIP** em C# sem perder a cabeça? Você não está sozinho — muitos desenvolvedores encontram dificuldades quando precisam distribuir uma página HTML junto com imagens, CSS ou arquivos JavaScript. A boa notícia? Com Aspose.HTML você pode fazer isso em alguns passos simples, e um **custom resource handler** torna o processo indolor. + +Neste tutorial, vamos percorrer tudo o que você precisa saber: desde a instalação da biblioteca, escrita de um manipulador que transmite recursos diretamente para um **create ZIP archive in C#**, até a verificação do pacote final. Ao final, você terá uma solução pronta‑para‑usar que pode ser inserida em qualquer projeto .NET. + +![Exemplo de salvar HTML como ZIP](/images/save-html-as-zip.png "Diagrama mostrando HTML salvo como um arquivo ZIP") + +## Salvar HTML como ZIP – O que este Guia Cobre + +We'll cover the entire pipeline: + +1. **Prerequisites** – as ferramentas e pacotes mínimos que você precisa. +2. **Custom resource handler** – por que você precisa de um e como implementá‑lo. +3. **Creating a ZIP archive in C#** – usando `System.IO.Compression`. +4. **Configuring Aspose.HTML save options** para apontar para o manipulador. +5. **Running the code** e verificando a saída. + +Se você está confortável com a sintaxe básica de C# e tem o Visual Studio (ou VS Code) instalado, está pronto para mergulhar. Nenhuma documentação externa é necessária — tudo está aqui. + +--- + +## Etapa 1: Configurar o Projeto e Instalar Aspose.HTML + +Before we write any code, make sure your project can reference the Aspose.HTML library. + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*Pro tip:* O pacote NuGet mais recente (a partir de fevereiro 2026) tem como alvo .NET 6+, então você pode usar o projeto moderno estilo SDK sem se preocupar com frameworks legados. + +Depois que o pacote for restaurado, abra `Program.cs`. Substituiremos o conteúdo padrão pelo exemplo completo mais tarde, mas por enquanto mantenha o arquivo aberto. + +## Implementar um Custom Resource Handler + +### Por que um Custom Resource Handler? + +Quando o Aspose.HTML salva um documento HTML como um pacote ZIP, ele precisa buscar cada recurso externo (imagens, fontes, scripts) e gravá‑los em algum lugar. O comportamento padrão grava‑os em uma pasta temporária no disco. Ao fornecer um **custom resource handler**, você indica à biblioteca exatamente onde cada recurso deve ir — no nosso caso, diretamente no arquivo ZIP. Isso evita I/O extra, mantém tudo organizado e lhe dá controle total sobre a nomeação. + +### Código: A Classe Handler + +Create a new class file called `MyHandler.cs` (or place it inside `Program.cs` if you prefer a single‑file demo). + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**Explicação:** +* `ResourceHandler` é uma classe abstrata do Aspose.HTML que permite interceptar a obtenção de recursos. +* Ao retornar o `Stream` obtido de `ZipArchiveEntry.Open()`, entregamos à biblioteca um pipe gravável diretamente no arquivo ZIP. Sem arquivos temporários, sem limpeza extra. + +## Criar o Arquivo ZIP em C# + +Now that the handler is ready, we need a place for it to write. The .NET `ZipArchive` class does the heavy lifting. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### O que Isso Faz + +1. **Creates an in‑memory HTML document** com uma referência a `logo.png`. +2. **Opens a `FileStream`** que se tornará `output.zip`. +3. **Assigns the `ZipArchive`** ao campo estático em `MyHandler`. +4. **Sets `HTMLSaveOptions`** para `SaveFormat.ZIP` e anexa nosso manipulador. +5. **Calls `document.Save`** – Aspose.HTML analisa o HTML, busca `logo.png` e o transmite para o arquivo via `MyHandler`. + +Como o manipulador usa o URI do recurso (`logo.png`) como nome da entrada, o ZIP resultante contém um arquivo com exatamente esse nome, preservando o caminho relativo original. + +## Configurar Opções de Salvamento para o Pacote ZIP + +O objeto `HTMLSaveOptions` é onde você indica ao Aspose.HTML **como** empacotar a saída. Além do `ResourceHandler`, você pode ajustar algumas propriedades úteis: + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*Por que se preocupar com `EnableCompression`?* +Se você está lidando com imagens grandes, habilitar a compressão pode reduzir o arquivo final em até 70 %. Contudo, para PNGs já comprimidos, o ganho é modesto, então você pode desativá‑la para acelerar a operação de salvamento. + +## Executar o Código e Verificar a Saída + +Compile e execute o programa: + +```bash +dotnet run +``` + +Você deve ver a mensagem de sucesso impressa no console. Navegue até o diretório exibido e abra `output.zip`. Dentro você encontrará: + +- `index.html` – o arquivo HTML salvo. +- `logo.png` – a imagem que foi referenciada no markup. + +Abra `index.html` diretamente do ZIP (a maioria dos exploradores de arquivos do SO permite visualizá‑lo) e você verá o título e a imagem renderizados exatamente como na string original. + +**Casos de Borda a Considerar** + +| Situação | O que fazer | +|-----------|------------| +| O HTML referencia uma **URL remota** (ex., `https://example.com/style.css`) | O manipulador ainda receberá um `ResourceInfo.Uri`. Certifique‑se de que seu ambiente pode alcançar a URL, ou pré‑baixe o recurso e ajuste o HTML para um caminho local. | +| Você precisa de **hierarquia de pastas** dentro do ZIP (ex., `images/logo.png`) | Modifique `HandleResource` para prefixar um nome de pasta: `var entry = ZipArchive.CreateEntry($"assets/{info.Uri}");` | +| O recurso **falha ao carregar** (404) | O manipulador será chamado, mas o stream receberá zero bytes. Envolva a chamada de salvamento em um `try/catch` e inspecione `info.Status` se precisar de tratamento de erro personalizado. | + +## Recapitulação: Salvar HTML como ZIP em um Fluxo Compacto + +- **Primary Goal:** Agrupar uma página HTML e todos os seus recursos externos em um único arquivo ZIP usando C#. +- **Key Tools:** Aspose.HTML (`HTMLDocument`, `HTMLSaveOptions`), `System.IO.Compression.ZipArchive` e um **custom resource handler**. +- **Result:** Um `output.zip` portátil que pode ser enviado, armazenado ou transmitido pela rede, e posteriormente extraído sem perder os links dos recursos. + +## O que vem a seguir? Estendendo o Fluxo de Trabalho + +Agora que você dominou **save HTML as ZIP**, pode querer explorar cenários relacionados: + +- **Save HTML as PDF** – substitua `SaveFormat.ZIP` por `SaveFormat.PDF` e ajuste as opções conforme necessário. +- **Embed fonts** – use `@font-face` no seu HTML e deixe o manipulador capturar os arquivos de fonte. +- **Batch processing** – itere sobre uma coleção de strings HTML, reutilizando o mesmo `ZipArchive` para criar um pacote multi‑documento. + +Todos esses se baseiam no mesmo padrão de **custom resource handler** e na técnica de **create ZIP archive in C#** que você acabou de aprender. + +### Considerações Finais + +Você acabou de ver como é fácil **save HTML as ZIP** em C# quando você permite que o Aspose.HTML + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/russian/net/generate-jpg-and-png-images/_index.md b/html/russian/net/generate-jpg-and-png-images/_index.md index 74f005949..fc6c11549 100644 --- a/html/russian/net/generate-jpg-and-png-images/_index.md +++ b/html/russian/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML для .NET предлагает простой метод прео Узнайте, как включить сглаживание при преобразовании DOCX в PNG или JPG с помощью Aspose.HTML для .NET. ### [Конвертация DOCX в PNG – создание ZIP-архива на C#](./convert-docx-to-png-create-zip-archive-c-tutorial/) Узнайте, как преобразовать файлы DOCX в PNG и упаковать их в ZIP-архив с помощью C# и Aspose.HTML. +### [Создание PNG из HTML на C# – пошаговое руководство](./create-png-from-html-in-c-step-by-step-guide/) +Подробное руководство по созданию PNG‑изображений из HTML с помощью C# и Aspose.HTML. ## Заключение diff --git a/html/russian/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/russian/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..f7aff498f --- /dev/null +++ b/html/russian/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-02-27 +description: Создайте PNG из HTML быстро с помощью Aspose.HTML в C#. Узнайте, как + отобразить HTML в изображение, задать ширину и высоту изображения и преобразовать + HTML в PNG за несколько минут. +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: ru +og_description: Создайте PNG из HTML с помощью Aspose.HTML. Это руководство показывает, + как отрисовать HTML в изображение, задать ширину и высоту изображения и эффективно + конвертировать HTML в PNG. +og_title: Создание PNG из HTML в C# – Полный учебник +tags: +- Aspose.HTML +- C# +- Image Rendering +title: Создание PNG из HTML в C# – пошаговое руководство +url: /ru/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Создание PNG из HTML на C# – Полный учебник + +Когда‑то вам нужно **создать PNG из HTML**, но вы не знали, какая библиотека даст пиксель‑точный результат? Вы не одиноки — многие разработчики сталкиваются с тем же препятствием, пытаясь превратить веб‑страницу в статическое изображение для писем, отчётов или миниатюр. + +Хорошая новость: с Aspose.HTML вы можете **рендерить HTML в изображение**, задавать точные размеры и **сохранять HTML как PNG** всего несколькими строками C#. В этом учебнике мы пройдём весь процесс: от загрузки HTML‑файла до настройки подсказок текста и окончательной записи PNG на диск. К концу вы узнаете, как **программно задать ширину и высоту изображения** и получите готовый фрагмент кода, который можно вставить в любой .NET‑проект. + +## Что вы узнаете + +- Как загрузить HTML‑документ с помощью Aspose.HTML. +- Разницу между `ImageRenderingOptions` и `TextOptions` и почему она важна. +- Как **конвертировать HTML в PNG**, сохраняя шрифты, сглаживание и стили подчёркивания. +- Советы по устранению распространённых проблем, таких как отсутствие шрифтов или неожиданные размеры изображения. +- Полный, готовый к запуску пример кода, который можно скопировать и вставить в Visual Studio. + +> **Требования:** .NET 6+ (или .NET Framework 4.6.2+), Aspose.HTML для .NET, установленный через NuGet, и базовые знания C#. Другие внешние инструменты не нужны. + +--- + +## Шаг 1: Загрузка HTML‑документа – начало создания PNG + +Сначала нам нужен объект `HTMLDocument`, указывающий на исходный файл. Это основа любой операции **create PNG from HTML**. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*Почему этот шаг важен:* Класс `HTMLDocument` разбирает разметку, обрабатывает CSS и строит DOM, который затем рендеринг‑движок может нарисовать на битмапе. Если путь указан неверно, последующий шаг **render html to image** бросит `FileNotFoundException`. + +--- + +## Шаг 2: Задание ширины и высоты изображения – контроль над размером вывода + +При **render HTML to image** часто требуется конкретное разрешение — например, миниатюра размером ровно 1200 × 800 пикселей. Здесь на помощь приходит `ImageRenderingOptions`. + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*Совет:* Если опустить `Width` и `Height`, Aspose.HTML использует естественный размер страницы, который может оказаться слишком большим для встраивания в письма. + +--- + +## Шаг 3: Точная настройка рендеринга текста – делаем текст чётким + +Текст в Linux часто выглядит размытым, если не включить подсказки. Объект `TextOptions` позволяет управлять этим, гарантируя, что итоговый PNG будет выглядеть остро на любой платформе. + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*Зачем нужны подсказки?* Подсказки (hinting) корректируют форму каждого глифа, выравнивая её по пиксельной сетке, что критично при **convert HTML to PNG** для дисплеев с низким разрешением. + +--- + +## Шаг 4: Объединение параметров и добавление стилей – полная конфигурация рендера + +Теперь мы объединяем настройки изображения и текста, а также демонстрируем, как применить глобальный стиль шрифта, например, подчёркивание всего текста. Этот шаг — реальное **save HTML as PNG** с пользовательскими стилями. + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*Примечание:* `WebFontStyle` поддерживает множество флагов (Bold, Italic и др.). Их можно комбинировать побитовым ИЛИ, если нужны несколько стилей одновременно. + +--- + +## Шаг 5: Рендеринг и сохранение – момент, когда вы **Create PNG from HTML** + +После полной настройки остаётся однострочный вызов, который рисует DOM на битмапе и сохраняет его на диск. + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +После выполнения этой строки вы найдёте `output.png` в указанной папке, точно 1200 × 800 пикселей, с анти‑алиасингом и подсказанным текстом. + +--- + +## Полный рабочий пример – вставьте, запустите, проверьте + +Ниже представлен полный код программы, которую можно собрать как консольное приложение. В нём присутствуют все `using`‑директивы, обработка ошибок и комментарии. + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**Ожидаемый результат:** Файл `output.png` появляется рядом с исполняемым файлом, показывая отрендеренную версию `sample.html`. Откройте его в любой программе‑просмотрщике, чтобы убедиться в размерах и стилизации. + +--- + +## Распространённые подводные камни и как их избежать + +| Проблема | Симптом | Решение | +|----------|---------|---------| +| Отсутствие шрифтов | Текст отображается как общий sans‑serif | Установите необходимые шрифты на хост‑машине или внедрите веб‑шрифты в HTML. | +| Неправильные размеры | PNG больше или меньше ожидаемого | Проверьте значения `Width` и `Height` в `ImageRenderingOptions`. | +| Размытие краёв | Нет анти‑алиасинга | Убедитесь, что `UseAntialiasing = true`. | +| Артефакты рендеринга в Linux | Текст выглядит размытым | Установите `UseHinting = true` в `TextOptions`. | + +*Совет:* При **render HTML to image** на безголовом сервере убедитесь, что установлены необходимые системные библиотеки (например, `libgdiplus` в Linux), иначе Aspose.HTML может переключиться на программный рендерер с пониженным качеством. + +--- + +## Расширение решения – дальнейшие шаги + +- **Пакетная конверсия:** Перебирайте список HTML‑файлов и вызывайте тот же рендеринг для создания галереи PNG. +- **Другие форматы:** Замените `output.png` на `output.jpg` или `output.bmp`, изменив расширение файла; Aspose.HTML автоматически выберет нужный кодировщик. +- **Динамическое масштабирование:** Вычисляйте `Width` и `Height` исходя из мета‑тега viewport HTML для адаптивных дизайнов. +- **Водяные знаки:** Используйте `Aspose.Html.Drawing` для наложения логотипа перед сохранением. + +Эти идеи позволяют превратить простой фрагмент **create PNG from HTML** в полноценный сервис генерации изображений. + +--- + +## Заключение + +Мы прошли всё, что нужно для **create PNG from HTML** с помощью Aspose.HTML для .NET: загрузка документа, настройка **set image width height**, точная настройка текста с подсказками и, наконец, **saving HTML as PNG**. Полный пример кода готов к вставке в ваш проект, а приведённые советы помогут избежать типичных проблем. + +Теперь, когда вы умеете надёжно **render HTML to image**, экспериментируйте с разными стилями, пакетной обработкой или даже конвертацией в PDF в том же конвейере. Возможности безграничны, а код уже у вас в руках. + +Счастливого кодинга, делитесь результатами и задавайте вопросы в комментариях! + +![Пример создания PNG из HTML](/images/create-png-from-html.png "Создание PNG из HTML с помощью Aspose.HTML") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/russian/net/html-extensions-and-conversions/_index.md b/html/russian/net/html-extensions-and-conversions/_index.md index 00354e673..2d30314ca 100644 --- a/html/russian/net/html-extensions-and-conversions/_index.md +++ b/html/russian/net/html-extensions-and-conversions/_index.md @@ -41,6 +41,8 @@ Aspose.HTML для .NET — это не просто библиотека; эт Конвертируйте HTML в PDF без усилий с Aspose.HTML для .NET. Следуйте нашему пошаговому руководству и раскройте всю мощь преобразования HTML в PDF. ### [Создайте PDF из HTML – пошаговое руководство C#](./create-pdf-from-html-c-step-by-step-guide/) Пошаговое руководство по созданию PDF из HTML с помощью Aspose.HTML в C#. +### [Создайте PDF из HTML – пошаговое руководство для разработчиков](./create-pdf-from-html-step-by-step-guide-for-developers/) +Подробное пошаговое руководство по созданию PDF из HTML с использованием Aspose.HTML для .NET, предназначенное для разработчиков. ### [Конвертируйте EPUB в изображение в .NET с помощью Aspose.HTML](./convert-epub-to-image/) Узнайте, как конвертировать EPUB в изображения с помощью Aspose.HTML для .NET. Пошаговое руководство с примерами кода и настраиваемыми параметрами. ### [Конвертируйте EPUB в PDF в .NET с помощью Aspose.HTML](./convert-epub-to-pdf/) @@ -71,8 +73,12 @@ Aspose.HTML для .NET — это не просто библиотека; эт Пошаговое руководство по созданию HTML‑документа со стилизованным текстом и его конвертации в PDF с помощью Aspose.HTML для .NET. ### [Сохраните HTML в ZIP – Полный учебник C#](./save-html-as-zip-complete-c-tutorial/) Узнайте, как сохранить HTML‑страницу в архив ZIP с помощью Aspose.HTML для .NET, используя C# в полном пошаговом руководстве. +### [Сохранить HTML в ZIP в C# – Полный учебник](./save-html-as-zip-in-c-complete-guide/) +Подробный учебник по сохранению HTML‑страницы в ZIP‑архив с помощью Aspose.HTML для .NET и C#. ### [Сохраните HTML в ZIP в C# – Полный пример в памяти](./save-html-to-zip-in-c-complete-in-memory-example/) Сохраните HTML в архив ZIP полностью в памяти с помощью Aspose.HTML для .NET, используя C#. +### [Сохранить HTML в PDF в C# – Полное руководство с шрифтами](./save-html-as-pdf-in-c-complete-guide-with-fonts/) +Подробное руководство по сохранению HTML в PDF в C# с поддержкой пользовательских шрифтов. ## Заключение diff --git a/html/russian/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/russian/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..83f6acd01 --- /dev/null +++ b/html/russian/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,206 @@ +--- +category: general +date: 2026-02-27 +description: Создавайте PDF из HTML быстро с полным примером на C#. Узнайте, как конвертировать + HTML в PDF, сохранять HTML как PDF и экспортировать HTML в PDF с настройками лучших + практик. +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: ru +og_description: Создайте PDF из HTML на C# с готовым к запуску примером. Это руководство + проведёт вас через процесс преобразования HTML в PDF, сохранения HTML как PDF и + экспорта HTML в PDF. +og_title: Создать PDF из HTML – Полный учебник C# +tags: +- C# +- PDF +- HTML +title: Создание PDF из HTML – пошаговое руководство для разработчиков +url: /ru/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Создание PDF из HTML – Полный C#‑урок + +Когда‑то вам нужно **создать PDF из HTML**, но вы не знали, какие вызовы API использовать? Вы не одиноки. Будь то построение дашборда отчётов, генератор счетов или экспорт статического сайта, преобразование HTML в PDF — частая задача современных веб‑ориентированных приложений. + +В этом уроке мы пройдём через **полный, готовый к запуску пример на C#**, который покажет, как **конвертировать HTML в PDF**, настроить параметры рендеринга для чёткого вывода и, наконец, **сохранить HTML как PDF** на диск. К концу вы получите надёжный, готовый к продакшну шаблон для **экспорта HTML в PDF**, который можно вставить в любой .NET‑проект. + +## Что вы узнаете + +- Как загрузить локальный HTML‑файл с помощью `HTMLDocument`. +- Какие параметры рендеринга улучшают толщину шрифтов, сглаживание изображений и хинтинг текста. +- Точный вызов для **экспорта HTML в PDF** одним методом `Save`. +- Советы по работе с большими документами, отладке типичных проблем и проверке результата. +- Полный пример кода, который можно скопировать и запустить прямо сейчас. + +### Предварительные требования + +- .NET 6+ (или .NET Framework 4.7+). Используемый API работает в обеих средах. +- Ссылка на гипотетическую библиотеку `HtmlToPdfLib` (замените её на название вашей библиотеки). +- Файл `input.html`, размещённый в папке, которой вы управляете (назовём её `YOUR_DIRECTORY`). + +Если у вас уже есть всё необходимое, приступаем — дополнительной настройки не требуется. + +## Шаг 1: Загрузка HTML‑документа для **создания PDF из HTML** + +Первое, что нужно, — экземпляр `HTMLDocument`, указывающий на исходный файл. Представьте, что вы открываете блокнот перед тем, как начать писать — без документа нечего рендерить. + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **Почему это важно:** Раннее загрузка HTML‑файла позволяет библиотеке проанализировать DOM, обработать CSS и предзагрузить изображения. Пропуск этого шага или передача некорректного HTML часто приводит к пустым страницам при **html to pdf conversion**. + +## Шаг 2: Настройка параметров рендеринга для **HTML to PDF Conversion** + +Параметры рендеринга — это «секретный соус», превращающий обычный PDF в документ профессионального уровня. Здесь мы включаем жирные шрифты, сглаживание изображений и хинтинг текста — функции, которые большинство разработчиков игнорируют, но которые значительно повышают визуальное качество. + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **Совет профессионала:** Если вы используете фирменный шрифт, задайте `FontFamily` внутри `pdfOptions`. Это предотвратит переход к общим шрифтам при **convert HTML to PDF**. + +## Шаг 3: Сохранение файла и **экспорт HTML в PDF** + +После загрузки документа и настройки параметров, последний шаг — одна строка, записывающая PDF на диск. Метод `Save` внутри себя выполняет **html to pdf conversion**, применяя все заданные настройки рендеринга. + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **Что вы должны увидеть:** Открытие `output.pdf` в любом просмотрщике покажет оригинальное расположение HTML, с жирными заголовками, плавными изображениями и чётким текстом. Если стили отсутствуют, проверьте, что ваши CSS‑файлы доступны относительно `input.html`. + +![пример создания pdf из html](/images/create-pdf-from-html.png "Скриншот сгенерированного PDF – create pdf from html") + +*На скриншоте выше (alt‑текст: “пример создания pdf из html”) показан отрендеренный PDF, сохраняющий оригинальное оформление HTML.* + +## Распространённые проблемы при **конвертации HTML в PDF** + +Даже при простом процессе разработчики часто сталкиваются с трудностями. Ниже перечислены три самых частых проблемы и способы их избежать. + +### 1. Отсутствие ресурсов (изображения, CSS, шрифты) + +Если ваш HTML ссылается на внешние ресурсы через относительные пути, конвертер может их не найти. Всегда используйте абсолютные пути или задавайте базовый URL: + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. Большие документы вызывают тайм‑ауты + +При работе с многостраничными отчётами увеличьте параметр тайм‑аута библиотеки: + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. Замена шрифтов приводит к неожиданному виду + +Укажите точное семейство шрифтов, которое требуется: + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +Решение этих вопросов заранее избавит вас от раздражающих отладочных сессий во время операций **save HTML as PDF**. + +## Продвинутое: Добавление титульной страницы перед **экспортом HTML в PDF** + +Иногда нужен пользовательский титул — например, страница с названием и логотипом. Вы можете добавить простой HTML‑фрагмент перед основным документом: + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **Зачем это нужно:** Добавление обложки непосредственно в HTML упрощает конвейер генерации PDF, избавляя от пост‑обработки инструментами вроде iText или PdfSharp. + +## Программная проверка результата + +Если необходимо убедиться, что PDF сгенерирован корректно (например, в CI‑конвейерах), можно проверить размер файла или количество страниц: + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +Ненулевое количество страниц подтверждает, что шаг **convert HTML to PDF** выполнен успешно. + +## Итоги и дальнейшие шаги + +Мы только что прошли через **полный, сквозной пример** создания **PDF из HTML** на C#. Последовательность такова: + +1. Загрузка исходного HTML (`HTMLDocument`). +2. Точная настройка рендеринга через `PdfRenderingOptions`. +3. Вызов `Save` для **экспорта HTML в PDF**. + +Дальше вы можете исследовать: + +- **Пакетную обработку**: перебрать папку с HTML‑файлами и массово генерировать PDF. +- **Динамический HTML**: использовать движок Razor для создания HTML «на лету» перед конвертацией. +- **Безопасность**: изолировать процесс конвертации, если принимаете HTML от пользователей (защита от внедрения скриптов). + +Экспериментируйте с различными опциями — например, переключитесь на соответствие `PdfA` для архивных целей или внедрите JavaScript для интерактивных PDF. Основной шаблон остаётся тем же, и теперь у вас есть надёжная база для любой задачи **save HTML as PDF**. + +--- + +*Приятного кодинга! Если столкнётесь с какими‑либо нюансами, оставляйте комментарий ниже или загляните в раздел Issues библиотеки на GitHub. Сообщество охотно делится приёмами, которые делают **html to pdf conversion** ещё более гладкой.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/russian/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/russian/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..2224cb3a9 --- /dev/null +++ b/html/russian/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,276 @@ +--- +category: general +date: 2026-02-27 +description: Быстро сохраняйте HTML в PDF на C# с помощью Aspose.HTML. Узнайте, как + конвертировать HTML в PDF, генерировать PDF из HTML с пользовательскими шрифтами + и стилями всего за несколько шагов. +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: ru +og_description: Сохраните HTML в PDF в C# быстро с помощью Aspose.HTML. Этот учебник + показывает, как преобразовать HTML в PDF, создать PDF из HTML и применить пользовательские + шрифты. +og_title: Сохранить HTML в PDF на C# – Полное руководство с шрифтами +tags: +- csharp +- pdf +- html +title: Сохранить HTML в PDF на C# – Полное руководство с шрифтами +url: /ru/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Сохранение HTML в PDF на C# – Полное руководство с шрифтами + +Когда‑то вам нужно было **сохранить HTML в PDF** из приложения на C#, но вы не знали, какую библиотеку выбрать? Вы не одиноки. Многие разработчики сталкиваются с этой проблемой, когда им нужно отправлять счета‑фактуры, отчёты или печатные чеки напрямую из веб‑контента. + +Хорошие новости? С Aspose.HTML вы можете **конвертировать HTML в PDF**, **генерировать PDF из HTML**, а также **создавать PDF с шрифтами** всего в паре строк кода. В этом руководстве мы пройдём весь процесс, объясним, почему важны каждое из настроек, и предоставим готовый к запуску пример. + +## Что вы узнаете + +- Как загрузить локальный или удалённый HTML‑файл в C# +- Какие параметры рендеринга дают жирные/курсивные шрифты, сглаживание и хинтинг текста +- Как сохранить результат в PDF‑файл на диске +- Советы по работе с пользовательскими шрифтами и распространёнными подводными камнями + +Опыт работы с Aspose.HTML не требуется — достаточно среды разработки .NET (Visual Studio 2022 или новее) и пакета Aspose.HTML for .NET из NuGet. + +## Требования + +| Требование | Почему это важно | +|-------------|-------------------| +| .NET 6.0 или новее | Предоставляет среду выполнения для Aspose.HTML | +| Aspose.HTML for .NET (NuGet) | Библиотека, выполняющая основную работу | +| Пример HTML‑файла (`sample.html`) | Исходный контент, который будет преобразован | +| Базовые знания C# | Чтобы понять представленные фрагменты кода | + +Если у вас есть всё это, давайте погрузимся. + +## Шаг 1: Установите Aspose.HTML через NuGet + +Откройте ваш проект в Visual Studio, щёлкните правой кнопкой мыши узел **Dependencies** и выберите **Manage NuGet Packages**. Найдите `Aspose.HTML` и нажмите **Install**. + +```powershell +dotnet add package Aspose.HTML +``` + +> **Pro tip:** Используйте последнюю стабильную версию (на 2026‑02‑27 это 23.11), чтобы получить новейшие улучшения рендеринга. + +## Шаг 2: Загрузите исходный HTML‑документ + +Первое, что нам нужно — объект `HTMLDocument`, указывающий на наш файл. Этот класс разбирает разметку, обрабатывает CSS и готовит всё к рендерингу. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Почему этот шаг?** +> Загрузка HTML в `HTMLDocument` отделяет этап парсинга от этапа рендеринга, что позволяет исследовать DOM или вносить изменения во время выполнения перед тем, как создать PDF. + +## Шаг 3: Настройте параметры рендеринга PDF + +Aspose.HTML предоставляет тонкую настройку внешнего вида конечного PDF. В этом примере мы включим стили жирный + курсив, сглаживание для более плавной графики и хинтинг текста для чёткого вывода при низком DPI. + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### Почему именно эти настройки? + +- **`FontStyle`** – Объединяет любые теги `` или `` с базовым шрифтом, гарантируя, что PDF сохранит оригинальное форматирование. +- **`UseAntialiasing`** – Снижает «зубчатость» графиков, иконок и любого растрового контента. +- **`UseHinting`** – Выравнивает контуры глифов по пиксельным сеткам, что особенно полезно при просмотре PDF на устройствах с низким разрешением. + +Если вам нужны пользовательские шрифты (например, фирменный шрифт компании), поместите файлы `.ttf` в папку и задайте `pdfRenderOptions.FontProvider` соответствующим образом. Это отдельная тема, но базовая идея такова: + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## Шаг 4: Преобразуйте HTML‑документ в PDF + +Теперь объединяем документ и параметры, а затем просим Aspose.HTML записать файл вывода. + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +После выполнения этой строки вы найдёте `output.pdf` рядом с исполняемым файлом. Откройте его — вы должны увидеть оригинальный HTML, отрендеренный с жирным/курсивным оформлением, плавной графикой и чётким текстом. + +> **Ожидаемый результат:** +> PDF, который точно воспроизводит макет `sample.html`, со всеми заголовками в жирном начертании, выделенным курсивом текстом и любыми встроенными изображениями без «зубцов». + +## Шаг 5: Проверка и доработка (по желанию) + +### Быстрый скрипт проверки + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +Если PDF выглядит некорректно, рассмотрите следующие типичные корректировки: + +| Проблема | Возможная причина | Решение | +|----------|-------------------|---------| +| Отсутствуют шрифты | Шрифт не внедрён или не найден | Используйте `FontProvider.AddFont` и убедитесь, что файл шрифта доступен | +| Изображения размыты | Сглаживание отключено | Установите `UseAntialiasing = true` | +| Текст выглядит слишком тонким на экране | Хинтинг отключён | Включите `UseHinting = true` | +| Сдвиг макета при разрыве страницы | Правила CSS `page-break` игнорируются | Добавьте явные `page-break-before/after` в ваш HTML/CSS | + +## Полный рабочий пример + +Ниже представлена полная программа, которую можно скопировать и вставить в новое консольное приложение. В ней включены все директивы `using`, обработка ошибок и комментарии для ясности. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +Запустите проект (`dotnet run`), и вы увидите сообщение об успехе, после чего появится новый файл `output.pdf`. + +## Часто задаваемые вопросы и особые случаи + +### Можно ли **конвертировать HTML в PDF** из URL вместо локального файла? + +Конечно. Просто замените путь к файлу строкой URL: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +Aspose.HTML скачает страницу, обработает внешние ресурсы и выполнит рендеринг. + +### Что насчёт **больших HTML‑файлов** или **многих страниц**? + +Aspose.HTML потоково обрабатывает контент, поэтому потребление памяти остаётся приемлемым. Если требуется разместить каждый раздел HTML на отдельной странице PDF, вставьте ручные разрывы страниц в HTML: + +```html +
+``` + +### Работает ли это с **.NET Core** и **.NET 7**? + +Да. Библиотека кросс‑платформенная; просто убедитесь, что вы целитесь в совместимую платформу (net6.0, net7.0 и т.д.) и установите соответствующий пакет NuGet. + +### Как **внедрить шрифты** для полной портативности PDF? + +Задайте `pdfRenderOptions.FontProvider`, как показано ранее, и также включите внедрение шрифтов: + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +Это гарантирует одинаковый внешний вид PDF на любой машине, даже если шрифт не установлен локально. + +## Визуальный пример + +![save html as pdf example](example.png){alt="save html as pdf example"} + +*Скриншот показывает сгенерированный PDF, открытый в Adobe Acrobat, с сохранёнными жирными/курсивными стилями и плавными изображениями.* + +## Заключение + +Мы рассмотрели всё, что нужно для **сохранения HTML в PDF** с помощью C#. От загрузки разметки, настройки параметров рендеринга до записи финального PDF — процесс прост и гибок. + +Следуя этому руководству, вы также сможете **конвертировать HTML в PDF**, **генерировать PDF из HTML** и **создавать PDF с шрифтами** для любых отчётных или документальных сценариев. Не бойтесь экспериментировать с дополнительными опциями — водяными знаками, шифрованием или пользовательскими размерами страниц — ведь Aspose.HTML предоставляет такую гибкость. + +**Следующие шаги**, которые стоит изучить: + +- Использовать класс `PdfSaveOptions` для задания версии PDF или уровня сжатия. +- Объединять несколько экземпляров `HTMLDocument` в один PDF для многоразделных отчётов. +- Интегрировать этот процесс в API ASP.NET Core, чтобы ваш веб‑сервис мог возвращать PDF‑файлы по запросу. + +Есть вопросы о сложных случаях или нужна помощь с настройкой конвейера рендеринга? Оставьте комментарий ниже, и удачной разработки! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/russian/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/russian/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..65e177cf4 --- /dev/null +++ b/html/russian/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-02-27 +description: Сохранить HTML в виде ZIP с помощью C# ZipArchive — пошаговый пример + с пользовательским обработчиком ресурсов, а также советы по экспорту HTML в ZIP + и созданию ZIP‑архива на C#. +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: ru +og_description: Сохраните HTML в ZIP с помощью C# ZipArchive. Узнайте, как экспортировать + HTML в ZIP с полным примером, пользовательским обработчиком ресурсов и лучшими практиками. +og_title: Сохранить HTML в ZIP в C# – Полное руководство +tags: +- C# +- ZipArchive +- HTML export +title: Сохранить HTML в ZIP в C# — Полное руководство +url: /ru/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Сохранить HTML как ZIP в C# – Полное руководство + +Когда‑нибудь вам нужно было **сохранить HTML как ZIP**, но вы не знали, какие классы .NET использовать? Вы не одиноки — многие разработчики сталкиваются с этой проблемой, когда хотят упаковать веб‑страницу вместе с её ресурсами для офлайн‑использования или распространения. Хорошая новость: с встроенным `System.IO.Compression.ZipArchive` это можно сделать в паре строк кода, получив при этом чистый способ контролировать запись каждого ресурса. + +В этом руководстве мы пройдём через **полный, исполняемый пример**, который покажет, как экспортировать HTML‑документ в ZIP‑файл, используя пользовательский `ResourceHandler` для потоковой передачи каждого ресурса в архив. По пути мы добавим несколько фрагментов **c# ziparchive example**, обсудим **how to export html to zip** в реальных сценариях и укажем на тонкие различия, когда вы хотите **create zip archive c#** программы, которые должны быть надёжными. + +> **Prerequisites** – Вам понадобится .NET 6+ (или .NET Core 3.1) и ссылка на библиотеку, предоставляющую `HTMLDocument`, `HTMLSaveOptions` и `ResourceHandler`. Если вы используете Aspose.HTML или аналогичный пакет, просто добавьте его через NuGet. Другие сторонние инструменты не требуются. + +--- + +## Что покрывает это руководство + +- Настройка **ZipArchive**, который будет принимать HTML‑файл и связанные с ним ресурсы. +- Реализация **custom resource handler** (`ZipHandler`), который направляет каждый поток ресурса в архив. +- Использование **HTMLSaveOptions** для объединения всего и фактического **save HTML as ZIP**. +- Распространённые подводные камни при работе с путями, дублирующими записями и большими ресурсами. +- Советы по расширению решения — например, добавление файла манифеста или шифрование ZIP. + +К концу вы получите автономный метод, который можно добавить в любой C#‑проект, чтобы **save html as zip** с уверенностью. + +## Шаг 1: Добавьте необходимые пространства имён + +Прежде чем любой код выполнится, убедитесь, что компилятор знает о классах сжатия и используемой HTML‑библиотеке. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*Почему это важно:* `System.IO.Compression` предоставляет `ZipArchive`, а пространства имён `Aspose.Html` раскрывают `HTMLDocument`, `HTMLSaveOptions` и базовый класс `ResourceHandler`, который мы будем расширять. Если вы используете другой HTML‑движок, ищите аналогичные типы. + +## Шаг 2: Создайте пользовательский Resource Handler (Primary Keyword in Action) + +Суть **saving HTML as ZIP** заключается в том, чтобы указать движку, куда помещать каждый внешний ресурс (изображения, CSS, скрипты). Наследуясь от `ResourceHandler`, мы получаем контроль над потоком, получающим данные. + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**Key points** + +- `info.Uri` — относительный URL, который HTML‑движок пытается записать. Использование его в качестве имени записи сохраняет структуру папок внутри ZIP. +- `CreateEntry` автоматически создаст все необходимые каталоги; вам не нужно управлять ими вручную. +- Возврат открытого потока позволяет движку передавать данные напрямую — без временных файлов и лишних копий в памяти. + +## Шаг 3: Инициализируйте ZipArchive + +Теперь мы создаём `ZipArchive` в режиме **Update**. Этот режим позволяет добавлять записи по мере необходимости и заменять существующие, если код запускается несколько раз. + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*Полезный совет:* используйте `FileMode.Create`, чтобы перезаписать любой предыдущий файл, или переключитесь на `FileMode.OpenOrCreate`, если хотите добавить к существующему архиву. Также оберните `ZipArchive` в оператор `using` — это гарантирует корректное освобождение архива и дескриптора файла. + +## Шаг 4: Загрузите HTML‑документ, который хотите экспортировать + +Здесь вы указываете библиотеке исходный HTML‑файл. Документ может ссылаться на CSS, изображения или JavaScript‑файлы, находящиеся рядом с ним. + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +Если ваш HTML содержит относительные URL, убедитесь, что рабочий каталог процесса совпадает с папкой, содержащей эти ресурсы. Иначе движок не сможет их найти, и ZIP‑файл будет без этих файлов. + +## Шаг 5: Настройте параметры сохранения — реальный момент “Save HTML as ZIP” + +Теперь мы связываем `ZipHandler` с `HTMLSaveOptions`. Установка `SaveFormat` в `ZIP` указывает библиотеке упаковать всё, а наш обработчик решает, куда помещать каждый элемент. + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*Почему это важно:* без установки `ResourceHandler` библиотека будет записывать ресурсы в файловую систему, что противоречит цели **how to export html to zip** в один архив. + +## Шаг 6: Выполните операцию сохранения + +Наконец, попросите документ сохранить себя, используя только что построенные параметры. Библиотека вызовет `ZipHandler.HandleResource` для каждого внешнего ресурса, который она встретит. + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +Когда блок `using` для `zipArchive` завершается, архив финализируется, и файл готов к распространению. + +## Полный рабочий пример (Все шаги вместе) + +Ниже приведена полная программа, которую можно скопировать и вставить в консольное приложение. Она демонстрирует **c# ziparchive example**, который **creates zip archive c#** в стиле, и полностью отвечает на вопрос **how to export html to zip**. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**Ожидаемый результат:** После запуска программы `output.zip` будет содержать `index.html` (или имя, которое вы указали) плюс все изображения, таблицы стилей и скрипты, на которые ссылается оригинальная страница, сохраняя иерархию папок. Откройте ZIP, извлеките и дважды щёлкните `index.html` — страница отобразится точно так же, как онлайн, но теперь это переносимый пакет. + +## Распространённые граничные случаи и как с ними справиться + +| Situation | Why it Happens | Suggested Fix | +|-----------|----------------|---------------| +| **Дублирующиеся имена ресурсов** (например, два изображения с одинаковым именем файла в разных папках) | `CreateEntry` выбросит `InvalidOperationException`, если запись с точно таким же именем уже существует. | Добавьте к записи её относительный путь (`info.Uri` уже делает это) или вручную очистите имена перед созданием записи. | +| **Большие бинарные ресурсы** (видео, изображения высокого разрешения) | Прямая потоковая запись в zip подходит, но размер буфера по умолчанию может вызвать высокое потребление памяти. | Переопределите `HandleResource`, чтобы обернуть возвращаемый поток в `BufferedStream` с умеренным буфером (например, 64 KB). | +| **Отсутствующие ресурсы** | Если HTML содержит битую ссылку, обработчик получает запрос к несуществующему файлу, что приводит к пустой записи. | Проверьте `File.Exists` перед созданием записи или запишите предупреждение, чтобы знать о недостающих файлах. | +| **Unicode‑имена файлов** | Некоторые старые ZIP‑утилиты некорректно обрабатывают имена записей в UTF‑8. | Убедитесь, что вы используете .NET 6+, который по умолчанию пишет UTF‑8. Если нужна совместимость со старыми версиями, установите `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);`. | +| **Требуется манифест** (список файлов внутри zip) | Потребители иногда хотят `manifest.json` для проверки. | После основного сохранения создайте новую запись `"manifest.json"` и запишите JSON‑список `zipArchive.Entries`. | + +## Профессиональные советы для готовых к продакшну реализаций **Save HTML as ZIP** + +1. **Validate the output** — После сохранения откройте ZIP программно и проверьте, что `index.html` существует и у каждой записи `Length` > 0. Это позволяет быстро обнаружить скрытые ошибки. +2. **Parallelize large assets** — Если у вас десятки мегабайт изображений, рассмотрите возможность постановки вызовов `HandleResource` в пул `Task` и записи в архив параллельно (с учётом однопоточной записи `ZipArchive`). +3. **Compress wisely** — `ZipArchive` по умолчанию использует Deflate. Для уже сжатых файлов (JPEG, PNG) можно установить `entry.CompressionLevel = CompressionLevel.NoCompression`, чтобы ускорить процесс. +4. **Security** — Если ZIP + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/russian/net/working-with-html-documents/_index.md b/html/russian/net/working-with-html-documents/_index.md index 843e2ebed..e6d0f5646 100644 --- a/html/russian/net/working-with-html-documents/_index.md +++ b/html/russian/net/working-with-html-documents/_index.md @@ -37,8 +37,11 @@ HTML-документы являются основой Интернета, и Теперь давайте поднимем ваши навыки на новый уровень. Редактирование HTML-документов — обычная задача для веб-разработчиков, и Aspose.HTML значительно упрощает этот процесс. В этом разделе мы рассмотрим создание, обработку и стилизацию документов. Вы узнаете, как улучшить внешний вид и функциональность вашего веб-контента, сделав его привлекательным и удобным для пользователя. ### [Как сохранить HTML в C# – Полное руководство с использованием пользовательского обработчика ресурсов](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) + ### [Как сделать заголовок жирным с помощью CSS и C# – Полное пошаговое руководство](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) +### [Сохранить HTML в виде ZIP в C# – Полное руководство с пользовательским обработчиком ресурсов](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/russian/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/russian/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..77aaa076b --- /dev/null +++ b/html/russian/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-02-27 +description: Сохраните HTML в виде ZIP в C# с использованием пользовательского обработчика + ресурсов и создайте ZIP‑архив в C#. Следуйте этому пошаговому руководству, чтобы + собрать HTML и его ресурсы. +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: ru +og_description: Сохраните HTML в виде ZIP в C# с помощью пользовательского обработчика + ресурсов. Узнайте, как создать ZIP‑архив в C# и без усилий внедрять ресурсы. +og_title: Сохранить HTML в ZIP в C# – Полный учебник +tags: +- Aspose.HTML +- C# +- ZIP +title: Сохранение HTML в ZIP в C# – Полное руководство с пользовательским обработчиком + ресурсов +url: /ru/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +sure to keep code block placeholders unchanged. + +Let's produce final output.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Сохранить HTML как ZIP в C# – Полное руководство с пользовательским обработчиком ресурсов + +Когда‑то задумывались, как **сохранить HTML как ZIP** в C# без лишних нервов? Вы не одиноки — многие разработчики сталкиваются с проблемой, когда нужно упаковать HTML‑страницу вместе с изображениями, CSS или JavaScript‑файлами. Хорошая новость: с Aspose.HTML это делается в несколько простых шагов, а **пользовательский обработчик ресурсов** делает процесс безболезненным. + +В этом руководстве мы пройдем всё, что нужно знать: от установки библиотеки, написания обработчика, который напрямую передаёт ресурсы в **создание ZIP‑архива в C#**, до проверки готового пакета. К концу вы получите готовое решение, которое можно добавить в любой .NET‑проект. + +![Save HTML as ZIP example](/images/save-html-as-zip.png "Diagram showing HTML saved as a ZIP file") + +## Save HTML as ZIP – Что покрывает это руководство + +Мы рассмотрим весь конвейер: + +1. **Prerequisites** – минимальные инструменты и пакеты, которые понадобятся. +2. **Custom resource handler** – зачем он нужен и как его реализовать. +3. **Creating a ZIP archive in C#** – с использованием `System.IO.Compression`. +4. **Configuring Aspose.HTML save options** для указания обработчика. +5. **Running the code** и проверка результата. + +Если вы знакомы с базовым синтаксисом C# и у вас установлен Visual Studio (или VS Code), вы готовы приступить. Внешняя документация не требуется — всё находится здесь. + +--- + +## Step 1: Set Up the Project and Install Aspose.HTML + +Before we write any code, make sure your project can reference the Aspose.HTML library. + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*Pro tip:* The latest NuGet package (as of February 2026) targets .NET 6+, so you can use the modern SDK‑style project without worrying about legacy frameworks. + +Once the package is restored, open `Program.cs`. We'll replace the default content with the full example later, but for now just keep the file open. + +--- + +## Implement a Custom Resource Handler + +### Why a Custom Resource Handler? + +When Aspose.HTML saves an HTML document as a ZIP package, it needs to fetch every external resource (images, fonts, scripts) and write them somewhere. The default behavior writes them to a temporary folder on disk. By providing a **custom resource handler**, you tell the library exactly where each resource should go—in our case, directly into the ZIP archive. This avoids extra I/O, keeps everything tidy, and gives you full control over naming. + +### Code: The Handler Class + +Create a new class file called `MyHandler.cs` (or place it inside `Program.cs` if you prefer a single‑file demo). + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**Explanation:** +* `ResourceHandler` is an abstract class from Aspose.HTML that lets you intercept resource fetching. +* By returning the `Stream` obtained from `ZipArchiveEntry.Open()`, we hand the library a writable pipe directly into the ZIP file. No temporary files, no extra cleanup. + +--- + +## Create the ZIP Archive in C# + +Now that the handler is ready, we need a place for it to write. The .NET `ZipArchive` class does the heavy lifting. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### What This Does + +1. **Creates an in‑memory HTML document** with a reference to `logo.png`. +2. **Opens a `FileStream`** that will become `output.zip`. +3. **Assigns the `ZipArchive`** to the static field in `MyHandler`. +4. **Sets `HTMLSaveOptions`** to `SaveFormat.ZIP` and attaches our handler. +5. **Calls `document.Save`** – Aspose.HTML parses the HTML, fetches `logo.png`, and streams it into the archive via `MyHandler`. + +Because the handler uses the resource URI (`logo.png`) as the entry name, the resulting ZIP contains a file named exactly that, preserving the original relative path. + +--- + +## Configure Save Options for the ZIP Package + +The `HTMLSaveOptions` object is where you tell Aspose.HTML **how** to package the output. Apart from the `ResourceHandler`, you can tweak a few useful properties: + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*Why care about `EnableCompression`?* +If you’re dealing with large images, enabling compression can shrink the final archive by up to 70 %. However, for already‑compressed PNGs the gain is modest, so you might turn it off to speed up the save operation. + +--- + +## Run the Code and Verify the Output + +Compile and run the program: + +```bash +dotnet run +``` + +You should see the success message printed to the console. Navigate to the directory printed and open `output.zip`. Inside you’ll find: + +- `index.html` – the saved HTML file. +- `logo.png` – the image that was referenced in the markup. + +Open `index.html` directly from the ZIP (most OS file explorers let you preview it) and you’ll see the heading and image rendered exactly as in the original string. + +**Edge Cases to Consider** + +| Situation | What to Do | +|-----------|------------| +| The HTML references a **remote URL** (e.g., `https://example.com/style.css`) | The handler will still receive a `ResourceInfo.Uri`. Ensure your environment can reach the URL, or pre‑download the resource and adjust the HTML to a local path. | +| You need **folder hierarchy** inside the ZIP (e.g., `images/logo.png`) | Modify `HandleResource` to prepend a folder name: `var entry = ZipArchive.CreateEntry($"assets/{info.Uri}");` | +| The resource **fails to load** (404) | The handler will be called, but the stream will receive zero bytes. Wrap the save call in a `try/catch` and inspect `info.Status` if you need custom error handling. | + +--- + +## Recap: Save HTML as ZIP in One Compact Flow + +- **Primary Goal:** Bundle an HTML page and all its external assets into a single ZIP file using C#. +- **Key Tools:** Aspose.HTML (`HTMLDocument`, `HTMLSaveOptions`), `System.IO.Compression.ZipArchive`, and a **custom resource handler**. +- **Result:** A portable `output.zip` that can be shipped, stored, or sent over the network, and later extracted without losing resource links. + +--- + +## What’s Next? Extending the Workflow + +Now that you’ve mastered **save HTML as ZIP**, you might want to explore related scenarios: + +- **Save HTML as PDF** – replace `SaveFormat.ZIP` with `SaveFormat.PDF` and adjust options accordingly. +- **Embed fonts** – use `@font-face` in your HTML and let the handler capture the font files. +- **Batch processing** – loop over a collection of HTML strings, reusing the same `ZipArchive` to create a multi‑document package. + +All of these builds on the same **custom resource handler** pattern and the **create ZIP archive in C#** technique you just learned. + +--- + +### Final Thoughts + +You’ve just seen how easy it is to **save HTML as ZIP** in C# when you let Aspose.HTML + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/spanish/net/generate-jpg-and-png-images/_index.md b/html/spanish/net/generate-jpg-and-png-images/_index.md index 4323c4591..dd3835cf1 100644 --- a/html/spanish/net/generate-jpg-and-png-images/_index.md +++ b/html/spanish/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aprenda a utilizar Aspose.HTML para .NET para manipular documentos HTML, convert Aprenda a activar el antialiasing al convertir documentos DOCX a imágenes PNG o JPG usando Aspose.HTML para .NET. ### [Convertir docx a PNG – crear archivo ZIP con C# tutorial](./convert-docx-to-png-create-zip-archive-c-tutorial/) Aprenda a convertir documentos DOCX a imágenes PNG y empaquetarlos en un archivo ZIP usando C#. +### [Crear PNG a partir de HTML en C# – Guía paso a paso](./create-png-from-html-in-c-step-by-step-guide/) +Aprenda a generar imágenes PNG desde HTML usando C# con Aspose.HTML paso a paso. ## Conclusión diff --git a/html/spanish/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/spanish/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..aad21f76a --- /dev/null +++ b/html/spanish/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-02-27 +description: Crea PNG a partir de HTML rápidamente usando Aspose.HTML en C#. Aprende + a renderizar HTML a imagen, establecer el ancho y alto de la imagen, y convertir + HTML a PNG en minutos. +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: es +og_description: Crea PNG a partir de HTML con Aspose.HTML. Esta guía muestra cómo + renderizar HTML a imagen, establecer el ancho y la altura de la imagen, y convertir + HTML a PNG de manera eficiente. +og_title: Crear PNG a partir de HTML en C# – Tutorial completo +tags: +- Aspose.HTML +- C# +- Image Rendering +title: Crear PNG a partir de HTML en C# – Guía paso a paso +url: /es/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crear PNG a partir de HTML en C# – Tutorial Completo + +¿Alguna vez necesitaste **crear PNG a partir de HTML** pero no estabas seguro de qué biblioteca te daría resultados píxel‑perfectos? No eres el único: muchos desarrolladores se topan con el mismo obstáculo al intentar convertir una página web en una imagen estática para correos electrónicos, informes o miniaturas. + +¿La buena noticia? Con Aspose.HTML puedes **renderizar HTML a imagen**, controlar las dimensiones exactas y **guardar HTML como PNG** con solo unas pocas líneas de C#. En este tutorial recorreremos todo el proceso, desde cargar tu archivo HTML hasta ajustar el hinting del texto y finalmente escribir un PNG en disco. Al final sabrás cómo **establecer ancho y alto de la imagen** programáticamente y tendrás un fragmento reutilizable que puedes insertar en cualquier proyecto .NET. + +## Lo que aprenderás + +- Cómo cargar un documento HTML usando Aspose.HTML. +- La diferencia entre `ImageRenderingOptions` y `TextOptions` y por qué importan. +- Cómo **convertir HTML a PNG** conservando fuentes, antialiasing y estilos de subrayado. +- Consejos para solucionar problemas comunes como fuentes faltantes o tamaños de imagen inesperados. +- Un ejemplo de código completo, listo‑para‑ejecutar, que puedes copiar‑pegar en Visual Studio. + +> **Requisitos previos:** .NET 6+ (o .NET Framework 4.6.2+), Aspose.HTML para .NET instalado vía NuGet y conocimientos básicos de C#. No se requieren otras herramientas externas. + +--- + +## Paso 1: Cargar el documento HTML – Iniciando la creación del PNG + +Primero, necesitamos un objeto `HTMLDocument` que apunte al archivo fuente. Esta es la base para cualquier operación de **crear PNG a partir de HTML**. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*Por qué este paso es importante:* La clase `HTMLDocument` analiza el marcado, resuelve CSS y construye un DOM que el motor de renderizado podrá pintar posteriormente sobre un bitmap. Si la ruta es incorrecta, el paso posterior de **renderizar html a imagen** lanzará una `FileNotFoundException`. + +--- + +## Paso 2: Establecer ancho y alto de la imagen – Controlando el tamaño de salida + +Cuando **renderizas HTML a imagen**, a menudo necesitas una resolución específica—por ejemplo, una miniatura que debe ser exactamente 1200 × 800 píxeles. Ahí es donde `ImageRenderingOptions` brilla. + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*Consejo profesional:* Si omites `Width` y `Height`, Aspose.HTML usará el tamaño natural de la página, que podría ser demasiado grande para incrustaciones en correos electrónicos. + +--- + +## Paso 3: Ajustar la renderización del texto – Logrando texto nítido + +El texto en Linux suele verse borroso a menos que habilites el hinting. El objeto `TextOptions` te permite controlar eso, asegurando que el PNG final se vea nítido en cualquier plataforma. + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*¿Por qué el hinting?* El hinting ajusta la forma de cada glifo para alinearlo con la cuadrícula de píxeles, lo cual es crucial cuando **conviertes HTML a PNG** para pantallas de baja resolución. + +--- + +## Paso 4: Combinar opciones y añadir estilo – Configuración completa de renderizado + +Ahora combinamos la configuración de imagen y texto, y también demostramos cómo aplicar un estilo de fuente global, como subrayar cada fragmento de texto. Este paso es donde realmente **guardas HTML como PNG** con estilo personalizado. + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*Nota:* `WebFontStyle` admite muchas banderas (Bold, Italic, etc.). Puedes combinarlas usando OR bit a bit si necesitas varios estilos. + +--- + +## Paso 5: Renderizar y guardar – El momento en que **creas PNG a partir de HTML** + +Con todo configurado, la llamada final es una sola línea que pinta el DOM sobre un bitmap y lo escribe en disco. + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +Después de ejecutar esta línea, encontrarás `output.png` en la carpeta especificada, exactamente 1200 × 800 píxeles, con gráficos antialiasing y texto con hinting. + +--- + +## Ejemplo completo funcionando – Pega, ejecuta, verifica + +A continuación tienes el programa completo que puedes compilar como una aplicación de consola. Incluye todas las sentencias `using`, manejo de errores y comentarios que necesitas. + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**Resultado esperado:** Aparecerá un archivo llamado `output.png` junto a tu ejecutable, mostrando la versión renderizada de `sample.html`. Ábrelo con cualquier visor de imágenes para confirmar las dimensiones y el estilo. + +--- + +## Problemas comunes y cómo evitarlos + +| Problema | Síntoma | Solución | +|----------|---------|----------| +| Fuentes faltantes | El texto aparece como sans‑serif genérico | Instala las fuentes requeridas en la máquina host o incrusta fuentes web en el HTML. | +| Dimensiones incorrectas | PNG es más grande o más pequeño de lo esperado | Verifica los valores de `Width` y `Height` en `ImageRenderingOptions`. | +| Bordes borrosos | No hay antialiasing | Asegúrate de que `UseAntialiasing = true`. | +| Artefactos de renderizado en Linux | El texto se ve borroso | Configura `UseHinting = true` en `TextOptions`. | + +*Consejo profesional:* Cuando **renderizas HTML a imagen** en un servidor sin cabeza, asegúrate de que el servidor tenga las bibliotecas del sistema necesarias (por ejemplo, `libgdiplus` en Linux), de lo contrario Aspose.HTML podría recurrir a un renderizador por software con calidad reducida. + +--- + +## Extender la solución – Próximos pasos + +- **Conversión por lotes:** Recorre una lista de archivos HTML y llama a la misma lógica de renderizado para producir una galería de PNGs. +- **Formatos diferentes:** Cambia `output.png` por `output.jpg` o `output.bmp` modificando la extensión del archivo; Aspose.HTML selecciona automáticamente el codificador correcto. +- **Tamaño dinámico:** Calcula `Width` y `Height` basándote en la metaetiqueta viewport del HTML para diseños responsivos. +- **Marca de agua:** Usa `Aspose.Html.Drawing` para superponer un logotipo antes de guardar. + +Estas ideas te permiten pasar de un simple fragmento de **crear PNG a partir de HTML** a un servicio completo de generación de imágenes. + +--- + +## Conclusión + +Hemos repasado todo lo necesario para **crear PNG a partir de HTML** usando Aspose.HTML para .NET: cargar el documento, configurar **establecer ancho y alto de la imagen**, afinar el texto con hinting y finalmente **guardar HTML como PNG**. El ejemplo de código completo está listo para integrarse en tu proyecto, y los consejos anteriores deberían evitarte dolores de cabeza comunes. + +Ahora que puedes **renderizar HTML a imagen** de forma fiable, ¿por qué no experimentar con diferentes estilos, procesamiento por lotes o incluso convertir a PDF en la misma canalización? El cielo es el límite, y el código ya está en tus manos. + +¡Feliz codificación, y no dudes en compartir tus resultados o hacer preguntas en los comentarios! + +![Crear PNG a partir de HTML ejemplo](/images/create-png-from-html.png "Crear PNG a partir de HTML usando Aspose.HTML") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/spanish/net/html-extensions-and-conversions/_index.md b/html/spanish/net/html-extensions-and-conversions/_index.md index 58e38eec4..9213cf189 100644 --- a/html/spanish/net/html-extensions-and-conversions/_index.md +++ b/html/spanish/net/html-extensions-and-conversions/_index.md @@ -39,8 +39,16 @@ Aspose.HTML para .NET no es solo una biblioteca, es un punto de inflexión en el ## Tutoriales de extensiones y conversiones de HTML ### [Convierte HTML a PDF en .NET con Aspose.HTML](./convert-html-to-pdf/) Convierta HTML a PDF sin esfuerzo con Aspose.HTML para .NET. Siga nuestra guía paso a paso y aproveche el poder de la conversión de HTML a PDF. + +### [Guardar HTML como PDF en C# – Guía completa con fuentes](./save-html-as-pdf-in-c-complete-guide-with-fonts/) +Aprenda a guardar HTML como PDF en C# con fuentes integradas, siguiendo una guía paso a paso y ejemplos de código. + ### [Crear PDF a partir de HTML – Guía paso a paso en C#](./create-pdf-from-html-c-step-by-step-guide/) Aprenda a generar un PDF desde HTML usando C# y Aspose.HTML con esta guía paso a paso. + +### [Crear PDF a partir de HTML – Guía paso a paso para desarrolladores](./create-pdf-from-html-step-by-step-guide-for-developers/) +Aprenda a generar un PDF desde HTML usando C# y Aspose.HTML con esta guía paso a paso para desarrolladores. + ### [Crear documento HTML con texto con estilo y exportarlo a PDF – Guía completa](./create-html-document-with-styled-text-and-export-to-pdf-full/) Aprenda a generar un documento HTML con texto formateado y convertirlo a PDF usando Aspose.HTML para .NET paso a paso. ### [Convertir EPUB a imagen en .NET con Aspose.HTML](./convert-epub-to-image/) @@ -65,6 +73,8 @@ Convierta HTML a MHTML en .NET con Aspose.HTML: una guía paso a paso para archi Descubra cómo utilizar Aspose.HTML para .NET para manipular y convertir documentos HTML. Guía paso a paso para un desarrollo .NET eficaz. ### [Guardar HTML como ZIP – Tutorial completo en C#](./save-html-as-zip-complete-c-tutorial/) Aprenda a guardar documentos HTML como archivos ZIP usando Aspose.HTML para .NET con este tutorial paso a paso en C#. +### [Guardar HTML como ZIP en C# – Guía completa](./save-html-as-zip-in-c-complete-guide/) +Aprenda a guardar HTML como archivo ZIP en C# con Aspose.HTML paso a paso. ### [Convierte HTML a TIFF en .NET con Aspose.HTML](./convert-html-to-tiff/) Aprenda a convertir HTML a TIFF con Aspose.HTML para .NET. Siga nuestra guía paso a paso para optimizar eficazmente el contenido web. ### [Convierta HTML a XPS en .NET con Aspose.HTML](./convert-html-to-xps/) diff --git a/html/spanish/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/spanish/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..6c67ba0a3 --- /dev/null +++ b/html/spanish/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,208 @@ +--- +category: general +date: 2026-02-27 +description: Crea PDF a partir de HTML rápidamente con un ejemplo completo en C#. + Aprende a convertir HTML a PDF, guardar HTML como PDF y exportar HTML a PDF con + configuraciones de mejores prácticas. +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: es +og_description: Crea PDF a partir de HTML en C# con un ejemplo listo para ejecutar. + Esta guía te muestra cómo convertir HTML a PDF, guardar HTML como PDF y exportar + HTML a PDF. +og_title: Crear PDF a partir de HTML – Tutorial completo de C# +tags: +- C# +- PDF +- HTML +title: Crear PDF a partir de HTML – Guía paso a paso para desarrolladores +url: /es/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +. + +Let's produce final content.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crear PDF a partir de HTML – Tutorial completo en C# + +¿Alguna vez necesitaste **crear PDF a partir de HTML** pero no estabas seguro de qué llamadas a la API usar? No estás solo. Ya sea que estés construyendo un panel de informes, un generador de facturas o un exportador de sitios estáticos, convertir HTML en PDF es un requisito frecuente para las aplicaciones modernas centradas en la web. + +En este tutorial recorreremos un **ejemplo completo y ejecutable en C#** que muestra cómo **convertir HTML a PDF**, configurar opciones de renderizado para obtener una salida nítida y, finalmente, **guardar HTML como PDF** en disco. Al terminar tendrás un patrón sólido y listo para producción para **exportar HTML a PDF** que puedes incorporar en cualquier proyecto .NET. + +## Lo que aprenderás + +- Cómo cargar un archivo HTML local con `HTMLDocument`. +- Qué opciones de renderizado mejoran el grosor de la fuente, la suavidad de las imágenes y el hinting del texto. +- La llamada exacta para **exportar HTML a PDF** con un solo método `Save`. +- Consejos para manejar documentos grandes, depurar problemas comunes y verificar el resultado. +- Un ejemplo completo, listo para copiar y pegar, que puedes ejecutar hoy. + +### Requisitos previos + +- .NET 6+ (o .NET Framework 4.7+). La API que usamos funciona en ambos. +- Una referencia a la hipotética `HtmlToPdfLib` (reemplázala con el nombre real de tu biblioteca). +- Un archivo `input.html` colocado en una carpeta que controles (lo llamaremos `YOUR_DIRECTORY`). + +Si ya tienes esos elementos, vamos al grano—no se requiere configuración adicional. + +## Paso 1: Cargar el documento HTML para **Crear PDF a partir de HTML** + +Lo primero que necesitas es una instancia de `HTMLDocument` que apunte al archivo fuente. Piensa en ello como abrir un cuaderno antes de empezar a escribir: sin un documento, no hay nada que renderizar. + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **Por qué es importante:** Cargar el archivo HTML temprano permite que la biblioteca analice el DOM, resuelva el CSS y precargue las imágenes. Omitir este paso o proporcionar HTML mal formado suele resultar en páginas en blanco durante la **conversión de html a pdf**. + +## Paso 2: Configurar opciones de renderizado para **Conversión de HTML a PDF** + +Las opciones de renderizado son la salsa secreta que convierte un PDF sencillo en un documento de aspecto profesional. Aquí habilitamos fuentes en negrita, antialiasing para imágenes y hinting para texto—características que la mayoría de los desarrolladores pasan por alto pero que mejoran drásticamente la fidelidad visual. + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **Consejo profesional:** Si trabajas con una fuente específica de la marca, establece `FontFamily` dentro de `pdfOptions` también. Esto evita que se recurra a fuentes genéricas durante la **conversión de HTML a PDF**. + +## Paso 3: Guardar el archivo y **Exportar HTML a PDF** + +Ahora que el documento está cargado y las opciones afinadas, el acto final es una sola línea que escribe el PDF en disco. El método `Save` realiza internamente la **conversión de html a pdf**, aplicando todos los ajustes de renderizado que definimos. + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **Lo que deberías ver:** Abrir `output.pdf` en cualquier visor mostrará el diseño HTML original, con encabezados en negrita, imágenes suaves y texto nítido. Si notas estilos faltantes, verifica que tus archivos CSS sean accesibles de forma relativa a `input.html`. + +![ejemplo de crear pdf a partir de html](/images/create-pdf-from-html.png "Captura de pantalla del PDF generado – crear pdf a partir de html") + +*La captura de pantalla anterior (texto alternativo: “ejemplo de crear pdf a partir de html”) muestra un PDF renderizado que conserva el estilo original del HTML.* + +## Problemas comunes al **Convertir HTML a PDF** + +Incluso con un flujo sencillo, los desarrolladores suelen encontrarse con contratiempos. A continuación, los tres problemas más frecuentes y cómo evitarlos. + +### 1. Recursos faltantes (Imágenes, CSS, Fuentes) + +Si tu HTML hace referencia a recursos externos mediante rutas relativas, el conversor podría no encontrarlos. Usa siempre rutas absolutas o establece una URL base: + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. Documentos grandes provocan tiempos de espera + +Al trabajar con informes de varias páginas, incrementa la configuración de timeout de la biblioteca: + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. Sustitución de fuentes produce una apariencia inesperada + +Especifica la familia de fuentes exacta que necesitas: + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +Abordar estas cuestiones desde el principio te ahorra sesiones de depuración frustrantes durante las operaciones de **guardar HTML como PDF**. + +## Avanzado: Añadir una portada antes de **Exportar HTML a PDF** + +A veces necesitas una portada personalizada—quizá una página de título con un logotipo. Puedes anteponer un fragmento HTML simple antes del documento principal: + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **Por qué hacerlo:** Añadir una portada directamente en HTML mantiene la canalización de generación de PDF simple, evitando herramientas de post‑procesamiento como iText o PdfSharp. + +## Verificar la salida programáticamente + +Si necesitas afirmar que el PDF se generó correctamente (por ejemplo, en pipelines de CI), puedes inspeccionar el tamaño del archivo o el número de páginas: + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +Un recuento de páginas distinto de cero confirma que el paso de **convertir HTML a PDF** se completó con éxito. + +## Resumen y próximos pasos + +Acabamos de recorrer un **ejemplo completo y de extremo a extremo** de cómo **crear PDF a partir de HTML** en C#. El flujo es: + +1. Cargar el HTML fuente (`HTMLDocument`). +2. Ajustar el renderizado con `PdfRenderingOptions`. +3. Llamar a `Save` para **exportar HTML a PDF**. + +A partir de aquí podrías explorar: + +- **Procesamiento por lotes**: Recorrer una carpeta de archivos HTML y generar PDFs en masa. +- **HTML dinámico**: Utilizar un motor de vistas Razor para generar HTML al vuelo antes de la conversión. +- **Seguridad**: Aislar el proceso de conversión si aceptas HTML provisto por usuarios (previene inyección de scripts). + +Siéntete libre de experimentar con diferentes opciones—quizá cambiar a cumplimiento `PdfA` para archivado, o incrustar JavaScript para PDFs interactivos. El patrón central sigue siendo el mismo, y ahora tienes una base fiable para cualquier requerimiento de **guardar HTML como PDF**. + +--- + +*¡Feliz codificación! Si te encuentras con algún detalle, deja un comentario abajo o revisa la página de issues de GitHub de la biblioteca. La comunidad es excelente compartiendo ajustes que hacen la **conversión de html a pdf** aún más fluida.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/spanish/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/spanish/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..f87bb073e --- /dev/null +++ b/html/spanish/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,276 @@ +--- +category: general +date: 2026-02-27 +description: Guarda HTML como PDF en C# rápidamente usando Aspose.HTML. Aprende cómo + convertir HTML a PDF, generar PDF a partir de HTML con fuentes y estilos personalizados + en solo unos pocos pasos. +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: es +og_description: Guarda HTML como PDF en C# rápidamente usando Aspose.HTML. Este tutorial + muestra cómo convertir HTML a PDF, generar PDF a partir de HTML y aplicar fuentes + personalizadas. +og_title: Guardar HTML como PDF en C# – Guía completa con fuentes +tags: +- csharp +- pdf +- html +title: Guardar HTML como PDF en C# – Guía completa con fuentes +url: /es/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Guardar HTML como PDF en C# – Guía completa con fuentes + +¿Alguna vez necesitaste **guardar HTML como PDF** desde una aplicación C# pero no sabías qué biblioteca elegir? No estás solo. Muchos desarrolladores se encuentran con este problema cuando quieren enviar facturas, informes o recibos imprimibles directamente desde contenido web. + +¿La buena noticia? Con Aspose.HTML puedes **convertir HTML a PDF**, **generar PDF desde HTML**, e incluso **crear PDF con fuentes** en unas pocas líneas. En este tutorial recorreremos todo el proceso, explicaremos por qué cada configuración es importante y te daremos un ejemplo listo‑para‑ejecutar. + +## Lo que aprenderás + +- Cómo cargar un archivo HTML local o remoto en C# +- Qué opciones de renderizado te dan fuentes en negrita/cursiva, antialiasing y hinting de texto +- Cómo guardar el resultado como un archivo PDF en disco +- Consejos para manejar fuentes personalizadas y errores comunes + +No se requiere experiencia previa con Aspose.HTML, solo un entorno de desarrollo .NET (Visual Studio 2022 o superior) y el paquete NuGet Aspose.HTML for .NET. + +## Requisitos previos + +| Requisito | Por qué es importante | +|-----------|-----------------------| +| .NET 6.0 o superior | Proporciona el runtime para Aspose.HTML | +| Aspose.HTML for .NET (NuGet) | La biblioteca que realiza el trabajo pesado | +| Un archivo HTML de ejemplo (`sample.html`) | Nuestro contenido fuente a transformar | +| Conocimientos básicos de C# | Para entender los fragmentos de código | + +Si tienes todo eso, vamos a sumergirnos. + +## Paso 1: Instalar Aspose.HTML vía NuGet + +Abre tu proyecto en Visual Studio, haz clic derecho en el nodo **Dependencies** y elige **Manage NuGet Packages**. Busca `Aspose.HTML` y pulsa **Install**. + +```powershell +dotnet add package Aspose.HTML +``` + +> **Consejo profesional:** Usa la versión estable más reciente (a 27‑02‑2026 es la 23.11) para obtener las últimas mejoras de renderizado. + +## Paso 2: Cargar el documento HTML fuente + +Lo primero que necesitamos es un objeto `HTMLDocument` que apunte a nuestro archivo. Esta clase analiza el marcado, resuelve el CSS y prepara todo para el renderizado. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **¿Por qué este paso?** +> Cargar el HTML en un `HTMLDocument` aísla la fase de análisis de la fase de renderizado, lo que significa que puedes inspeccionar el DOM o hacer modificaciones en tiempo de ejecución antes de crear realmente el PDF. + +## Paso 3: Configurar las opciones de renderizado PDF + +Aspose.HTML te brinda control granular sobre cómo se verá el PDF final. En este ejemplo habilitaremos estilos de fuente en negrita + cursiva, antialiasing para gráficos más suaves y hinting de texto para una salida n‑dpi más nítida. + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### ¿Por qué estas configuraciones? + +- **`FontStyle`** – Fusiona cualquier etiqueta `` o `` con la fuente base, asegurando que el PDF respete el estilo original. +- **`UseAntialiasing`** – Reduce los bordes dentados en gráficos, íconos o cualquier contenido rasterizado. +- **`UseHinting`** – Alinea los contornos de los glifos a la cuadrícula de píxeles, lo que es especialmente útil cuando el PDF se visualizará en dispositivos de baja resolución. + +Si necesitas fuentes personalizadas (p. ej., una fuente corporativa), coloca los archivos `.ttf` en una carpeta y configura `pdfRenderOptions.FontProvider` en consecuencia. Ese es un tema amplio por sí solo, pero la idea básica es: + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## Paso 4: Renderizar el documento HTML a PDF + +Ahora combinamos el documento y las opciones, y le indicamos a Aspose.HTML que escriba el archivo de salida. + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +Después de ejecutar esta línea, encontrarás `output.pdf` junto a tu ejecutable. Ábrelo; deberías ver el HTML original renderizado con estilos en negrita/cursiva, gráficos suaves y texto nítido. + +> **Resultado esperado:** +> Un PDF que reproduce el diseño de `sample.html`, con todos los encabezados en negrita, texto enfatizado en cursiva y cualquier imagen incrustada renderizada sin bordes dentados. + +## Paso 5: Verificar y ajustar (opcional) + +### Script de verificación rápida + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +Si el PDF se ve extraño, considera estos ajustes comunes: + +| Problema | Causa probable | Solución | +|----------|----------------|----------| +| Falta de fuentes | Fuente no incrustada o no encontrada | Usa `FontProvider.AddFont` y asegura que el archivo de fuente sea accesible | +| Imágenes aparecen borrosas | Antialiasing deshabilitado | Establece `UseAntialiasing = true` | +| El texto se ve demasiado fino en pantalla | Hinting deshabilitado | Habilita `UseHinting = true` | +| Cambio de diseño al salto de página | Reglas CSS `page-break` ignoradas | Añade explícitamente `page-break-before/after` en tu HTML/CSS | + +## Ejemplo completo funcionando + +A continuación tienes el programa completo que puedes copiar‑pegar en una nueva aplicación de consola. Incluye todas las directivas `using`, manejo de errores y comentarios para mayor claridad. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +Ejecuta el proyecto (`dotnet run`) y deberías ver el mensaje de éxito seguido de un `output.pdf` recién creado. + +## Preguntas frecuentes y casos límite + +### ¿Puedo **convertir HTML a PDF** desde una URL en lugar de un archivo local? + +Claro. Solo reemplaza la ruta del archivo por una cadena URL: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +Aspose.HTML descargará la página, resolverá los recursos externos y la renderizará. + +### ¿Qué pasa con **archivos HTML grandes** o **múltiples páginas**? + +Aspose.HTML transmite el contenido, por lo que el uso de memoria se mantiene razonable. Si necesitas que cada sección HTML aparezca en una página PDF distinta, inserta saltos de página manuales en el HTML: + +```html +
+``` + +### ¿Funciona con **.NET Core** y **.NET 7**? + +Sí. La biblioteca es multiplataforma; solo asegúrate de apuntar a un framework compatible (net6.0, net7.0, etc.) e instala el paquete NuGet correspondiente. + +### ¿Cómo **incrusto fuentes** para una portabilidad total del PDF? + +Configura `pdfRenderOptions.FontProvider` como se mostró antes y también habilita la incrustación de fuentes: + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +Esto garantiza que el PDF se vea igual en cualquier máquina, incluso si la fuente no está instalada localmente. + +## Ejemplo visual + +![save html as pdf example](example.png){alt="guardar html como pdf ejemplo"} + +*La captura de pantalla muestra el PDF generado abierto en Adobe Acrobat, conservando los estilos en negrita/cursiva y las imágenes suaves.* + +## Conclusión + +Hemos cubierto todo lo necesario para **guardar HTML como PDF** usando C#. Desde cargar el marcado, configurar opciones de renderizado, hasta escribir el PDF final, el proceso es sencillo y altamente personalizable. + +Siguiendo esta guía también puedes **convertir HTML a PDF**, **generar PDF desde HTML**, y **crear PDF con fuentes** para cualquier escenario de generación de informes o documentos. Siéntete libre de experimentar con opciones adicionales—marcas de agua, cifrado o tamaños de página personalizados—porque Aspose.HTML te brinda esa flexibilidad. + +**Próximos pasos** que podrías explorar: + +- Usa la clase `PdfSaveOptions` para establecer la versión del PDF o el nivel de compresión. +- Combina múltiples instancias de `HTMLDocument` en un solo PDF para informes de varias secciones. +- Integra este flujo de trabajo en una API ASP.NET Core para que tu servicio web devuelva PDFs bajo demanda. + +¿Tienes preguntas sobre casos límite o necesitas ayuda ajustando la cadena de renderizado? Deja un comentario abajo, ¡y feliz codificación! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/spanish/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/spanish/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..40f4edbbe --- /dev/null +++ b/html/spanish/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,249 @@ +--- +category: general +date: 2026-02-27 +description: Guardar HTML como ZIP usando C# ZipArchive – ejemplo paso a paso con + un manejador de recursos personalizado, además de consejos sobre cómo exportar HTML + a ZIP y crear código C# para generar un archivo zip. +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: es +og_description: Guarda HTML como ZIP usando C# ZipArchive. Aprende cómo exportar HTML + a ZIP con un ejemplo completo, un manejador de recursos personalizado y buenas prácticas. +og_title: Guardar HTML como ZIP en C# – Guía completa +tags: +- C# +- ZipArchive +- HTML export +title: Guardar HTML como ZIP en C# – Guía completa +url: /es/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Guardar HTML como ZIP en C# – Guía completa + +¿Alguna vez necesitaste **guardar HTML como ZIP** pero no estabas seguro de qué clases de .NET usar? No eres el único: muchos desarrolladores se topan con este problema cuando quieren empaquetar una página web junto con sus recursos para uso sin conexión o para distribución. ¿La buena noticia? Con la clase incorporada `System.IO.Compression.ZipArchive` puedes hacerlo en unas pocas líneas, y además tendrás una forma limpia de controlar cómo se escribe cada recurso. + +En este tutorial recorreremos un **ejemplo completo y ejecutable** que muestra exactamente cómo exportar un documento HTML a un archivo ZIP, usando un `ResourceHandler` personalizado para transmitir cada activo al archivo. A lo largo del camino incluiremos algunos fragmentos de **c# ziparchive example**, hablaremos de **cómo exportar html a zip** en escenarios reales y señalaremos las sutiles diferencias cuando quieras **crear zip archive c#** en programas que necesiten ser robustos. + +> **Requisitos previos** – Necesitarás .NET 6+ (o .NET Core 3.1) y una referencia a la biblioteca que proporcione `HTMLDocument`, `HTMLSaveOptions` y `ResourceHandler`. Si usas Aspose.HTML o un paquete similar, simplemente añádelo vía NuGet. No se requieren otras herramientas de terceros. + +--- + +## Qué cubre este tutorial + +- Configurar un **ZipArchive** que recibirá el archivo HTML y sus recursos vinculados. +- Implementar un **manejador de recursos personalizado** (`ZipHandler`) que dirige cada flujo de recurso al archivo. +- Usar **HTMLSaveOptions** para unir todo y realmente **guardar HTML como ZIP**. +- Trampas comunes al trabajar con rutas, entradas duplicadas y recursos grandes. +- Consejos para ampliar la solución—por ejemplo, añadir un archivo de manifiesto o encriptar el ZIP. + +Al final tendrás un método autónomo que puedes insertar en cualquier proyecto C# para **save html as zip** con confianza. + +--- + +## Paso 1: Añadir los espacios de nombres requeridos + +Antes de que se ejecute cualquier código, asegúrate de que el compilador conozca las clases de compresión y la biblioteca HTML que estás usando. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*Por qué es importante:* `System.IO.Compression` te brinda `ZipArchive`, mientras que los espacios de nombres `Aspose.Html` exponen `HTMLDocument`, `HTMLSaveOptions` y la clase base `ResourceHandler` que extenderemos. Si utilizas otro motor HTML, busca tipos análogos. + +--- + +## Paso 2: Crear un manejador de recursos personalizado (Palabra clave principal en acción) + +El corazón de **guardar HTML como ZIP** es indicarle al motor dónde debe colocar cada recurso externo (imágenes, CSS, scripts). Al heredar de `ResourceHandler` obtenemos control sobre el flujo que recibe los datos. + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**Puntos clave** + +- `info.Uri` es la URL relativa que el motor HTML está intentando escribir. Usarla como nombre de entrada mantiene la estructura de carpetas dentro del ZIP. +- `CreateEntry` creará automáticamente los directorios necesarios; no tienes que gestionarlos tú mismo. +- Devolver el flujo abierto permite al motor transmitir los datos directamente—sin archivos temporales, sin copias de memoria adicionales. + +--- + +## Paso 3: Inicializar el ZipArchive + +Ahora iniciamos un `ZipArchive` en modo **Update**. Este modo nos permite añadir entradas a medida que avanzamos y también reemplazar las existentes si ejecutas el código varias veces. + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*Consejo profesional:* Usa `FileMode.Create` para sobrescribir cualquier archivo previo, o cambia a `FileMode.OpenOrCreate` si deseas añadir a un archivo existente. Además, envuelve el `ZipArchive` en una instrucción `using`—esto garantiza que el archivo se libere y el manejador se deseche correctamente. + +--- + +## Paso 4: Cargar el documento HTML que deseas exportar + +Aquí es donde indicas a la biblioteca el archivo HTML de origen. El documento puede referenciar CSS, imágenes o archivos JavaScript que estén junto a él. + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +Si tu HTML contiene URLs relativas, asegúrate de que el directorio de trabajo del proceso coincida con la carpeta que contiene esos recursos. De lo contrario, el motor no podrá localizarlos y el ZIP omitirá esos archivos. + +--- + +## Paso 5: Configurar las opciones de guardado – El verdadero momento de “Guardar HTML como ZIP” + +Ahora vinculamos el `ZipHandler` a `HTMLSaveOptions`. Establecer `SaveFormat` a `ZIP` indica a la biblioteca que empaquete todo, mientras que nuestro manejador decide dónde va cada pieza. + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*Por qué es importante:* Sin establecer `ResourceHandler`, la biblioteca volvería a escribir los recursos en el sistema de archivos, lo que anula el objetivo de **cómo exportar html a zip** en un único archivo. + +--- + +## Paso 6: Ejecutar la operación de guardado + +Finalmente, pide al documento que se guarde usando las opciones que acabamos de crear. La biblioteca invocará `ZipHandler.HandleResource` para cada activo externo que encuentre. + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +Cuando finaliza el bloque `using` de `zipArchive`, el archivo se finaliza y está listo para su distribución. + +--- + +## Ejemplo completo (Todos los pasos combinados) + +A continuación tienes el programa completo que puedes copiar y pegar en una aplicación de consola. Demuestra un **c# ziparchive example** que **creates zip archive c#** y responde plenamente a **how to export html to zip**. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**Resultado esperado:** Después de ejecutar el programa, `output.zip` contendrá `index.html` (o el nombre que hayas configurado) más cada imagen, hoja de estilo y script referenciados por la página original, preservando la jerarquía de carpetas. Abre el ZIP, extrae y haz doble clic en `index.html`—la página debería renderizarse exactamente como en línea, pero ahora es un paquete portátil. + +--- + +## Casos límite comunes y cómo manejarlos + +| Situación | Por qué ocurre | Solución sugerida | +|-----------|----------------|-------------------| +| **Nombres de recursos duplicados** (p. ej., dos imágenes con el mismo nombre en carpetas distintas) | `CreateEntry` lanzará una `InvalidOperationException` si el nombre de entrada exacto ya existe. | Prefija la entrada con su ruta relativa (`info.Uri` ya hace esto) o sanee manualmente los nombres antes de crear la entrada. | +| **Recursos binarios grandes** (videos, imágenes de alta resolución) | Transmitir directamente al zip está bien, pero el tamaño de búfer predeterminado puede generar alto consumo de memoria. | Sobrescriba `HandleResource` para envolver el flujo devuelto en un `BufferedStream` con un búfer modesto (p. ej., 64 KB). | +| **Recursos faltantes** | Si el HTML contiene un enlace roto, el manejador recibe una solicitud para un archivo que no existe, lo que genera una entrada vacía. | Verifique `File.Exists` antes de crear la entrada, o registre una advertencia para saber que falta algo. | +| **Nombres de archivo Unicode** | Algunas herramientas ZIP antiguas manejan mal los nombres UTF‑8. | Asegúrese de estar usando .NET 6+, que escribe UTF‑8 por defecto. Si necesita compatibilidad heredada, establezca `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);`. | +| **Necesidad de un manifiesto** (lista de archivos dentro del zip) | Los consumidores a veces quieren un `manifest.json` para validación. | Después del guardado principal, cree una nueva entrada `"manifest.json"` y escriba una lista JSON de `zipArchive.Entries`. | + +--- + +## Consejos profesionales para implementaciones de **Guardar HTML como ZIP** listas para producción + +1. **Validar la salida** – Después de guardar, abra el ZIP programáticamente y verifique que `index.html` exista y que la `Length` de cada entrada sea > 0. Esto detecta fallos silenciosos temprano. +2. **Paralelizar recursos grandes** – Si tienes decenas de megabytes de imágenes, considera encolar llamadas a `HandleResource` en un pool de `Task` y escribir al archivo concurrentemente (respetando la naturaleza de un solo escritor de `ZipArchive`). +3. **Comprimir con criterio** – `ZipArchive` usa Deflate por defecto. Para archivos ya comprimidos (JPEG, PNG), puedes establecer `entry.CompressionLevel = CompressionLevel.NoCompression` para acelerar la operación. +4. **Seguridad** – Si el ZIP + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/spanish/net/working-with-html-documents/_index.md b/html/spanish/net/working-with-html-documents/_index.md index e0db1c958..980cd6214 100644 --- a/html/spanish/net/working-with-html-documents/_index.md +++ b/html/spanish/net/working-with-html-documents/_index.md @@ -37,10 +37,15 @@ 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 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. +### [Guardar HTML como ZIP en C# – Guía completa con controlador de recursos personalizado](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) + +Aprenda a comprimir documentos HTML en archivos ZIP y guardarlos usando un controlador de recursos personalizado en C#. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/spanish/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/spanish/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..a8b2a1095 --- /dev/null +++ b/html/spanish/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-02-27 +description: Guarda HTML como ZIP en C# usando un controlador de recursos personalizado + y crea un archivo ZIP en C#. Sigue este tutorial paso a paso para empaquetar HTML + y sus recursos. +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: es +og_description: Guarda HTML como ZIP en C# con un controlador de recursos personalizado. + Aprende a crear un archivo ZIP en C# e incrustar recursos sin esfuerzo. +og_title: Guardar HTML como ZIP en C# – Tutorial completo +tags: +- Aspose.HTML +- C# +- ZIP +title: Guardar HTML como ZIP en C# – Guía completa con manejador de recursos personalizado +url: /es/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +same structure. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Guardar HTML como ZIP en C# – Guía completa con controlador de recursos personalizado + +¿Alguna vez te has preguntado cómo **guardar HTML como ZIP** en C# sin volverte loco? No eres el único: muchos desarrolladores se quedan atascados cuando necesitan empaquetar una página HTML junto con imágenes, CSS o archivos JavaScript. ¿La buena noticia? Con Aspose.HTML puedes hacerlo en unos pocos pasos ordenados, y un **controlador de recursos personalizado** hace que el proceso sea sencillo. + +En este tutorial repasaremos todo lo que necesitas saber: desde la instalación de la biblioteca, la escritura de un controlador que envíe los recursos directamente a un **archivo ZIP creado en C#**, hasta la verificación del paquete final. Al terminar tendrás una solución lista para usar que podrás incorporar a cualquier proyecto .NET. + +![Save HTML as ZIP example](/images/save-html-as-zip.png "Diagram showing HTML saved as a ZIP file") + +## Guardar HTML como ZIP – Qué cubre esta guía + +Cubrirémos todo el flujo: + +1. **Prerequisites** – las herramientas y paquetes mínimos que necesitas. +2. **Custom resource handler** – por qué necesitas uno y cómo implementarlo. +3. **Creating a ZIP archive in C#** – usando `System.IO.Compression`. +4. **Configuring Aspose.HTML save options** para apuntar al controlador. +5. **Running the code** y comprobar la salida. + +Si ya manejas la sintaxis básica de C# y tienes Visual Studio (o VS Code) instalado, estás listo para comenzar. No se requiere documentación externa: todo está aquí. + +--- + +## Paso 1: Configurar el proyecto e instalar Aspose.HTML + +Antes de escribir código, asegúrate de que tu proyecto pueda referenciar la biblioteca Aspose.HTML. + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*Consejo profesional:* El paquete NuGet más reciente (a febrero 2026) está dirigido a .NET 6+, así que puedes usar el proyecto de estilo SDK moderno sin preocuparte por frameworks heredados. + +Una vez restaurado el paquete, abre `Program.cs`. Más adelante reemplazaremos el contenido predeterminado con el ejemplo completo, pero por ahora mantén el archivo abierto. + +--- + +## Implementar un controlador de recursos personalizado + +### ¿Por qué un controlador de recursos personalizado? + +Cuando Aspose.HTML guarda un documento HTML como paquete ZIP, necesita obtener cada recurso externo (imágenes, fuentes, scripts) y escribirlo en algún lugar. El comportamiento predeterminado los escribe en una carpeta temporal en disco. Al proporcionar un **controlador de recursos personalizado**, le indicas a la biblioteca exactamente dónde debe ir cada recurso —en nuestro caso, directamente dentro del archivo ZIP. Esto evita I/O adicional, mantiene todo ordenado y te da control total sobre los nombres. + +### Código: la clase del controlador + +Crea un nuevo archivo de clase llamado `MyHandler.cs` (o colócalo dentro de `Program.cs` si prefieres una demo de un solo archivo). + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**Explicación:** +* `ResourceHandler` es una clase abstracta de Aspose.HTML que te permite interceptar la obtención de recursos. +* Al devolver el `Stream` obtenido de `ZipArchiveEntry.Open()`, le entregamos a la biblioteca una tubería de escritura directamente dentro del archivo ZIP. Sin archivos temporales, sin limpieza extra. + +--- + +## Crear el archivo ZIP en C# + +Ahora que el controlador está listo, necesitamos un lugar donde escribir. La clase .NET `ZipArchive` hace el trabajo pesado. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### Qué hace esto + +1. **Crea un documento HTML en memoria** con una referencia a `logo.png`. +2. **Abre un `FileStream`** que se convertirá en `output.zip`. +3. **Asigna el `ZipArchive`** al campo estático en `MyHandler`. +4. **Configura `HTMLSaveOptions`** a `SaveFormat.ZIP` y adjunta nuestro controlador. +5. **Llama a `document.Save`** – Aspose.HTML analiza el HTML, obtiene `logo.png` y lo envía al archivo mediante `MyHandler`. + +Como el controlador usa el URI del recurso (`logo.png`) como nombre de la entrada, el ZIP resultante contiene un archivo con ese mismo nombre, preservando la ruta relativa original. + +--- + +## Configurar las opciones de guardado para el paquete ZIP + +El objeto `HTMLSaveOptions` es donde le indicas a Aspose.HTML **cómo** empaquetar la salida. Además del `ResourceHandler`, puedes ajustar algunas propiedades útiles: + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*¿Por qué preocuparse por `EnableCompression`?* +Si trabajas con imágenes grandes, habilitar la compresión puede reducir el archivo final hasta en un 70 %. Sin embargo, para PNG ya comprimidos la ganancia es modesta, por lo que podrías desactivarla para acelerar la operación de guardado. + +--- + +## Ejecutar el código y verificar la salida + +Compila y ejecuta el programa: + +```bash +dotnet run +``` + +Deberías ver el mensaje de éxito impreso en la consola. Navega al directorio que se muestra y abre `output.zip`. Dentro encontrarás: + +- `index.html` – el archivo HTML guardado. +- `logo.png` – la imagen referenciada en el marcado. + +Abre `index.html` directamente desde el ZIP (la mayoría de los exploradores de archivos del SO permiten previsualizarlo) y verás el encabezado y la imagen renderizados exactamente como en la cadena original. + +**Casos límite a considerar** + +| Situación | Qué hacer | +|-----------|-----------| +| El HTML referencia una **URL remota** (p. ej., `https://example.com/style.css`) | El controlador seguirá recibiendo un `ResourceInfo.Uri`. Asegúrate de que tu entorno pueda alcanzar la URL, o predescarga el recurso y ajusta el HTML a una ruta local. | +| Necesitas **jerarquía de carpetas** dentro del ZIP (p. ej., `images/logo.png`) | Modifica `HandleResource` para anteponer un nombre de carpeta: `var entry = ZipArchive.CreateEntry($"assets/{info.Uri}");` | +| El recurso **no se carga** (404) | El controlador será llamado, pero el stream recibirá cero bytes. Envuelve la llamada a `Save` en un `try/catch` y revisa `info.Status` si requieres manejo de errores personalizado. | + +--- + +## Recapitulación: Guardar HTML como ZIP en un flujo compacto + +- **Objetivo principal:** Agrupar una página HTML y todos sus recursos externos en un solo archivo ZIP usando C#. +- **Herramientas clave:** Aspose.HTML (`HTMLDocument`, `HTMLSaveOptions`), `System.IO.Compression.ZipArchive` y un **controlador de recursos personalizado**. +- **Resultado:** Un `output.zip` portátil que puede enviarse, almacenarse o transmitirse por red, y extraerse posteriormente sin perder los enlaces a los recursos. + +--- + +## ¿Qué sigue? Extender el flujo de trabajo + +Ahora que dominas **guardar HTML como ZIP**, podrías explorar escenarios relacionados: + +- **Guardar HTML como PDF** – sustituye `SaveFormat.ZIP` por `SaveFormat.PDF` y ajusta las opciones correspondientes. +- **Incrustar fuentes** – usa `@font-face` en tu HTML y deja que el controlador capture los archivos de fuentes. +- **Procesamiento por lotes** – recorre una colección de cadenas HTML, reutilizando el mismo `ZipArchive` para crear un paquete con varios documentos. + +Todos estos se basan en el mismo patrón de **controlador de recursos personalizado** y la técnica de **crear archivo ZIP en C#** que acabas de aprender. + +--- + +### Reflexión final + +Acabas de ver lo fácil que es **guardar HTML como ZIP** en C# cuando dejas que Aspose.HTML + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/swedish/net/generate-jpg-and-png-images/_index.md b/html/swedish/net/generate-jpg-and-png-images/_index.md index 39785fb46..cf8c51234 100644 --- a/html/swedish/net/generate-jpg-and-png-images/_index.md +++ b/html/swedish/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Lär dig att använda Aspose.HTML för .NET för att manipulera HTML-dokument, k Lär dig hur du aktiverar kantutjämning för att förbättra bildkvaliteten när du konverterar DOCX-dokument till PNG eller JPG med Aspose.HTML. ### [Konvertera DOCX till PNG – skapa zip‑arkiv C#‑handledning](./convert-docx-to-png-create-zip-archive-c-tutorial/) Lär dig hur du konverterar DOCX-filer till PNG-bilder och packar dem i ett zip‑arkiv med C# och Aspose.HTML. +### [Skapa PNG från HTML i C# – Steg‑för‑steg‑guide](./create-png-from-html-in-c-step-by-step-guide/) +Lär dig hur du konverterar HTML till PNG-bilder i C# med en detaljerad steg‑för‑steg‑handledning. ## Slutsats diff --git a/html/swedish/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/swedish/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..8fe2cf9cd --- /dev/null +++ b/html/swedish/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-02-27 +description: Skapa PNG från HTML snabbt med Aspose.HTML i C#. Lär dig rendera HTML + till bild, ange bildens bredd och höjd och konvertera HTML till PNG på några minuter. +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: sv +og_description: Skapa PNG från HTML med Aspose.HTML. Denna guide visar hur du renderar + HTML till bild, ställer in bildens bredd och höjd samt konverterar HTML till PNG + på ett effektivt sätt. +og_title: Skapa PNG från HTML i C# – Komplett handledning +tags: +- Aspose.HTML +- C# +- Image Rendering +title: Skapa PNG från HTML i C# – Steg‑för‑steg guide +url: /sv/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Skapa PNG från HTML i C# – Komplett handledning + +Har du någonsin behövt **skapa PNG från HTML** men varit osäker på vilket bibliotek som ger dig pixelperfekta resultat? Du är inte ensam – många utvecklare stöter på samma problem när de försöker omvandla en webbsida till en statisk bild för e‑post, rapporter eller miniatyrer. + +Den goda nyheten? Med Aspose.HTML kan du **rendera HTML till bild**, kontrollera exakt dimensioner och **spara HTML som PNG** med bara några rader C#. I den här handledningen går vi igenom hela processen, från att ladda din HTML‑fil till att finjustera text‑hinting och slutligen skriva en PNG till disk. När du är klar vet du hur du **sätter bildens bredd och höjd** programatiskt och har ett återanvändbart kodexempel som du kan klistra in i vilket .NET‑projekt som helst. + +## Vad du kommer att lära dig + +- Hur du laddar ett HTML‑dokument med Aspose.HTML. +- Skillnaden mellan `ImageRenderingOptions` och `TextOptions` och varför de är viktiga. +- Hur du **konverterar HTML till PNG** samtidigt som du bevarar typsnitt, antialiasing och understrykningsstilar. +- Tips för att felsöka vanliga fallgropar som saknade typsnitt eller oväntade bildstorlekar. +- Ett komplett, färdigt kodexempel som du kan kopiera och klistra in i Visual Studio. + +> **Förutsättningar:** .NET 6+ (eller .NET Framework 4.6.2+), Aspose.HTML för .NET installerat via NuGet, och en grundläggande förståelse för C#. Inga andra externa verktyg krävs. + +--- + +## Steg 1: Ladda HTML‑dokumentet – Starta PNG‑skapandet + +Först behöver vi ett `HTMLDocument`‑objekt som pekar på källfilen. Detta är grunden för varje **create PNG from HTML**‑operation. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*Varför detta steg är viktigt:* Klassen `HTMLDocument` analyserar markupen, löser CSS och bygger ett DOM‑träd som renderingsmotorn senare kan måla på en bitmap. Om sökvägen är fel kommer nästa **render html to image**‑steg att kasta ett `FileNotFoundException`. + +--- + +## Steg 2: Sätt bildens bredd och höjd – Kontrollera utdata‑storleken + +När du **renderar HTML till bild** behöver du ofta en specifik upplösning – tänk på en miniatyr som exakt ska vara 1200 × 800 pixlar. Det är här `ImageRenderingOptions` kommer till sin rätt. + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*Proffstips:* Om du utelämnar `Width` och `Height` använder Aspose.HTML sidans naturliga storlek, vilket kan bli för stort för e‑postinbäddningar. + +--- + +## Steg 3: Finjustera textrendering – Gör texten skarp + +Text på Linux ser ofta suddig ut om du inte aktiverar hinting. Objektet `TextOptions` låter dig styra detta, så att den slutgiltiga PNG‑filen blir skarp på alla plattformar. + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*Varför hinting?* Hinting justerar varje glyf så att den linjerar med pixelrutnätet, vilket är avgörande när du **konverterar HTML till PNG** för lågupplösta skärmar. + +--- + +## Steg 4: Kombinera alternativ och lägg till styling – Fullständig renderingskonfiguration + +Nu slår vi ihop bild‑ och textinställningarna och visar dessutom hur du applicerar en global teckensnittsstil, exempelvis understrykning av all text. Detta steg är där du faktiskt **sparar HTML som PNG** med anpassad styling. + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*Obs:* `WebFontStyle` stöder många flaggor (Bold, Italic, osv.). Du kan kombinera dem med bitvis OR om du behöver flera stilar. + +--- + +## Steg 5: Rendera och spara – Ögonblicket då du **skapar PNG från HTML** + +När allt är konfigurerat är det sista anropet en enkel rad som målar DOM‑trädet på en bitmap och skriver den till disk. + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +Efter att den här raden har körts hittar du `output.png` i den angivna mappen, exakt 1200 × 800 pixlar, med antialiasade grafik och hintad text. + +--- + +## Fullt fungerande exempel – Klistra in, kör, verifiera + +Nedan är hela programmet som du kan kompilera som en konsolapp. Det innehåller alla `using`‑satser, felhantering och kommentarer du behöver. + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**Förväntat resultat:** En fil med namnet `output.png` visas bredvid din körbara fil och visar den renderade versionen av `sample.html`. Öppna den i en bildvisare för att bekräfta dimensioner och styling. + +--- + +## Vanliga fallgropar & hur du undviker dem + +| Problem | Symptom | Åtgärd | +|-------|----------|-----| +| Saknade typsnitt | Text visas som generisk sans‑serif | Installera de behövda typsnitten på värdmaskinen eller bädda in webbtypsnitt i HTML‑filen. | +| Fel dimensioner | PNG är större eller mindre än förväntat | Dubbelkolla `Width` och `Height`‑värdena i `ImageRenderingOptions`. | +| Suddiga kanter | Ingen antialiasing | Säkerställ att `UseAntialiasing = true`. | +| Rendering‑artefakter på Linux | Text ser suddig ut | Ställ in `UseHinting = true` i `TextOptions`. | + +*Proffstips:* När du **renderar HTML till bild** på en huvudlös server, se till att servern har nödvändiga systembibliotek (t.ex. `libgdiplus` på Linux), annars kan Aspose.HTML falla tillbaka på en mjukvarurenderare med reducerad kvalitet. + +--- + +## Utöka lösningen – Nästa steg + +- **Batch‑konvertering:** Loopa igenom en lista med HTML‑filer och anropa samma renderingslogik för att producera ett galleri av PNG‑bilder. +- **Olika format:** Byt `output.png` mot `output.jpg` eller `output.bmp` genom att ändra filändelsen; Aspose.HTML väljer automatiskt rätt kodare. +- **Dynamisk storlek:** Beräkna `Width` och `Height` baserat på HTML:ens viewport‑meta‑tag för responsiva designer. +- **Vattenstämpel:** Använd `Aspose.Html.Drawing` för att lägga över en logotyp innan du sparar. + +Dessa idéer låter dig gå från ett enkelt **create PNG from HTML**‑exempel till en fullfjädrad bildgenereringstjänst. + +--- + +## Slutsats + +Vi har gått igenom allt du behöver för att **skapa PNG från HTML** med Aspose.HTML för .NET: ladda dokumentet, konfigurera **set image width height**, finjustera text med hinting och slutligen **spara HTML som PNG**. Det kompletta kodexemplet är redo att klistras in i ditt projekt, och tipsen ovan bör hjälpa dig undvika vanliga huvudvärk. + +Nu när du på ett pålitligt sätt kan **rendera HTML till bild**, varför inte experimentera med olika stilar, batch‑bearbetning eller till och med konvertera till PDF i samma pipeline? Himlen är gränsen, och koden ligger redan i dina händer. + +Lycka till med kodandet, och dela gärna dina resultat eller ställ frågor i kommentarerna! + +![Skapa PNG från HTML‑exempel](/images/create-png-from-html.png "Skapa PNG från HTML med Aspose.HTML") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/swedish/net/html-extensions-and-conversions/_index.md b/html/swedish/net/html-extensions-and-conversions/_index.md index 6d01c9b96..aa9ce58ef 100644 --- a/html/swedish/net/html-extensions-and-conversions/_index.md +++ b/html/swedish/net/html-extensions-and-conversions/_index.md @@ -73,6 +73,12 @@ Skapa PDF från HTML med C# och Aspose.HTML för .NET. Följ vår steg‑för‑ Lär dig hur du sparar HTML som en ZIP-fil med en komplett C#-kodexempel och steg-för-steg-instruktioner. ### [Spara HTML till ZIP i C# – Komplett minnesexempel](./save-html-to-zip-in-c-complete-in-memory-example/) Lär dig hur du sparar HTML-filer i ett ZIP‑arkiv i minnet med C# och Aspose.HTML. +### [Spara HTML som ZIP i C# – Komplett guide](./save-html-as-zip-in-c-complete-guide/) +Lär dig hur du sparar HTML som en ZIP-fil i C# med en komplett steg‑för‑steg‑guide. +### [Spara HTML som PDF i C# – Komplett guide med teckensnitt](./save-html-as-pdf-in-c-complete-guide-with-fonts/) +Lär dig hur du sparar HTML som PDF i C# med en komplett guide som inkluderar teckensnitt. +### [Skapa PDF från HTML – Steg‑för‑steg‑guide för utvecklare](./create-pdf-from-html-step-by-step-guide-for-developers/) +Skapa PDF från HTML med en steg‑för‑steg‑guide för utvecklare med Aspose.HTML för .NET. ## Slutsats diff --git a/html/swedish/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/swedish/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..b9bac6170 --- /dev/null +++ b/html/swedish/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,205 @@ +--- +category: general +date: 2026-02-27 +description: Skapa PDF från HTML snabbt med ett komplett C#‑exempel. Lär dig konvertera + HTML till PDF, spara HTML som PDF och exportera HTML till PDF med bästa praxis‑inställningar. +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: sv +og_description: Skapa PDF från HTML i C# med ett färdigt exempel. Den här guiden visar + dig hur du konverterar HTML till PDF, sparar HTML som PDF och exporterar HTML till + PDF. +og_title: Skapa PDF från HTML – Komplett C#‑handledning +tags: +- C# +- PDF +- HTML +title: Skapa PDF från HTML – Steg‑för‑steg guide för utvecklare +url: /sv/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Skapa PDF från HTML – Komplett C#‑handledning + +Har du någonsin behövt **create PDF from HTML** men varit osäker på vilka API‑anrop du ska använda? Du är inte ensam. Oavsett om du bygger en rapporteringsdashboard, en fakturagenerator eller en exportör för statiska webbplatser, är det en vanlig krav att omvandla HTML till en PDF för moderna web‑centrerade appar. + +I den här handledningen går vi igenom ett **complete, runnable C# example** som visar hur du **convert HTML to PDF**, konfigurerar renderingsalternativ för skarpt resultat och slutligen **save HTML as PDF** på disk. När du är klar har du ett robust, produktionsklart mönster för **export HTML to PDF** som du kan använda i vilket .NET‑projekt som helst. + +## Vad du kommer att lära dig + +- Hur du laddar en lokal HTML‑fil med `HTMLDocument`. +- Vilka renderingsalternativ som förbättrar teckensnittsvikt, bildsuddighet och text‑hinting. +- Det exakta anropet för att **export HTML to PDF** med en enda `Save`‑metod. +- Tips för att hantera stora dokument, felsöka vanliga fallgropar och verifiera resultatet. +- Ett komplett, kopiera‑och‑klistra‑kodexempel som du kan köra idag. + +### Förutsättningar + +- .NET 6+ (eller .NET Framework 4.7+). API‑et vi använder fungerar på båda. +- En referens till det hypotetiska `HtmlToPdfLib` (byt ut mot ditt faktiska biblioteksnamn). +- En `input.html`‑fil placerad i en mapp du kontrollerar (vi kallar den `YOUR_DIRECTORY`). + +Om du redan har dessa komponenter, låt oss dyka in – ingen extra installation krävs. + +## Steg 1: Ladda HTML‑dokumentet för att **Create PDF from HTML** + +Det första du behöver är en `HTMLDocument`‑instans som pekar på källfilen. Tänk på det som att öppna en anteckningsbok innan du börjar skriva – utan ett dokument finns det inget att rendera. + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **Why this matters:** Att ladda HTML‑filen tidigt låter biblioteket parsra DOM, lösa CSS och förladda bilder. Att hoppa över detta steg eller mata in felaktig HTML resulterar ofta i tomma sidor under **html to pdf conversion**. + +## Steg 2: Konfigurera renderingsalternativ för **HTML to PDF Conversion** + +Renderingsalternativ är den hemliga såsen som förvandlar en enkel PDF till ett professionellt dokument. Här aktiverar vi fetstil för teckensnitt, kantutjämning för bilder och hinting för text – funktioner som de flesta utvecklare förbiser men som dramatiskt förbättrar den visuella kvaliteten. + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **Pro tip:** Om du arbetar med ett varumärkes‑specifikt teckensnitt, sätt `FontFamily` i `pdfOptions` också. Detta förhindrar att man faller tillbaka på generiska teckensnitt under **convert HTML to PDF**. + +## Steg 3: Spara filen och **Export HTML to PDF** + +Nu när dokumentet är laddat och alternativen är finjusterade är sista steget en enda rad som skriver PDF‑filen till disk. `Save`‑metoden utför internt **html to pdf conversion**, med alla renderingsjusteringar vi definierat. + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **What you should see:** När du öppnar `output.pdf` i någon visare visas den ursprungliga HTML‑layouten, med feta rubriker, mjuka bilder och skarp text. Om du märker saknade stilar, dubbelkolla att dina CSS‑filer är åtkomliga relativt `input.html`. + +![exempel på skapa pdf från html](/images/create-pdf-from-html.png "Skärmbild av den genererade PDF‑filen – create pdf from html") + +*Skärmbilden ovan (alt‑text: “exempel på skapa pdf från html”) visar en renderad PDF som bevarar den ursprungliga HTML‑stylingen.* + +## Vanliga fallgropar när du **Convert HTML to PDF** + +Även med ett enkelt flöde stöter utvecklare ofta på hinder. Nedan följer de tre vanligaste problemen och hur du undviker dem. + +### 1. Saknade resurser (bilder, CSS, teckensnitt) + +Om din HTML refererar till externa resurser via relativa sökvägar kan konverteraren ha svårt att hitta dem. Använd alltid absoluta sökvägar eller ange en bas‑URL: + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. Stora dokument utlöser tidsgränser + +När du hanterar flersidiga rapporter, öka bibliotekets timeout‑inställning: + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. Teckensnittssubstitution leder till oväntat utseende + +Specificera exakt vilket teckensnitt du behöver: + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +Att ta itu med dessa frågor tidigt sparar dig från frustrerande felsökning under **save HTML as PDF**‑operationer. + +## Avancerat: Lägg till en framsida innan du **Export HTML to PDF** + +Ibland behöver du en anpassad framsida – kanske en titelsida med en logotyp. Du kan lägga till ett enkelt HTML‑snutt innan huvud‑dokumentet: + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **Why you’ll do this:** Att lägga till en framsida direkt i HTML håller PDF‑genereringspipeline enkel, utan efterbearbetningsverktyg som iText eller PdfSharp. + +## Verifiera resultatet programatiskt + +Om du behöver säkerställa att PDF‑filen genererades korrekt (t.ex. i CI‑pipelines) kan du inspektera filstorleken eller sidantalet: + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +Ett sidantal som är större än noll bekräftar att steget **convert HTML to PDF** lyckades. + +## Sammanfattning & nästa steg + +Vi har just gått igenom ett **complete, end‑to‑end example** på hur man **create PDF from HTML** i C#. Flödet är: + +1. Ladda käll‑HTML (`HTMLDocument`). +2. Finjustera rendering med `PdfRenderingOptions`. +3. Anropa `Save` för att **export HTML to PDF**. + +Från och med nu kan du utforska: + +- **Batch processing**: Loopa igenom en mapp med HTML‑filer och generera PDF‑filer i bulk. +- **Dynamic HTML**: Använd en Razor‑vy‑motor för att generera HTML i farten innan konvertering. +- **Security**: Sandlåda konverteringsprocessen om du accepterar användargenererad HTML (förhindrar skript‑injektion). + +Känn dig fri att experimentera med olika alternativ – kanske byta till `PdfA`‑kompatibilitet för arkiveringsändamål, eller bädda in JavaScript för interaktiva PDF‑filer. Kärnmönstret förblir detsamma, och du har nu en pålitlig grund för alla **save HTML as PDF**‑behov. + +--- + +*Lycka till med kodandet! Om du stöter på några konstigheter, lämna en kommentar nedan eller kolla in bibliotekets GitHub‑issues‑sida. Communityn är duktig på att dela knep som gör **html to pdf conversion** ännu smidigare.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/swedish/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/swedish/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..c5a3b28a6 --- /dev/null +++ b/html/swedish/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,276 @@ +--- +category: general +date: 2026-02-27 +description: Spara HTML som PDF i C# snabbt med Aspose.HTML. Lär dig hur du konverterar + HTML till PDF, genererar PDF från HTML med anpassade teckensnitt och styling på + bara några steg. +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: sv +og_description: Spara HTML som PDF i C# snabbt med Aspose.HTML. Den här handledningen + visar hur du konverterar HTML till PDF, genererar PDF från HTML och använder anpassade + typsnitt. +og_title: Spara HTML som PDF i C# – Komplett guide med teckensnitt +tags: +- csharp +- pdf +- html +title: Spara HTML som PDF i C# – Komplett guide med typsnitt +url: /sv/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Spara HTML som PDF i C# – Komplett guide med teckensnitt + +Har du någonsin behövt **spara HTML som PDF** från en C#‑applikation men varit osäker på vilket bibliotek du ska välja? Du är inte ensam. Många utvecklare stöter på detta problem när de vill skicka fakturor, rapporter eller utskrivbara kvitton direkt från webbinnehåll. + +Den goda nyheten? Med Aspose.HTML kan du **konvertera HTML till PDF**, **generera PDF från HTML**, och till och med **skapa PDF med teckensnitt** på några få rader. I den här handledningen går vi igenom hela processen, förklarar varför varje inställning är viktig, och ger dig ett färdigt exempel. + +## Vad du kommer att lära dig + +- Hur du laddar en lokal eller fjärrstyrd HTML‑fil i C# +- Vilka renderingsalternativ som ger dig fet/kursiv text, kantutjämning och text‑hintning +- Hur du sparar resultatet som en PDF‑fil på disk +- Tips för att hantera anpassade teckensnitt och vanliga fallgropar + +Ingen tidigare erfarenhet av Aspose.HTML krävs—bara en .NET‑utvecklingsmiljö (Visual Studio 2022 eller senare) och Aspose.HTML för .NET NuGet‑paketet. + +## Förutsättningar + +| Krav | Varför det är viktigt | +|------|-----------------------| +| .NET 6.0 eller senare | Tillhandahåller runtime‑miljön för Aspose.HTML | +| Aspose.HTML för .NET (NuGet) | Biblioteket som utför det tunga arbetet | +| En exempel‑HTML‑fil (`sample.html`) | Vårt källinnehåll som ska omvandlas | +| Grundläggande C#‑kunskaper | För att förstå kodsnuttarna | + +Om du har dem, låt oss dyka in. + +## Steg 1: Installera Aspose.HTML via NuGet + +Öppna ditt projekt i Visual Studio, högerklicka på **Dependencies**‑noden och välj **Manage NuGet Packages**. Sök efter `Aspose.HTML` och klicka på **Install**. + +```powershell +dotnet add package Aspose.HTML +``` + +> **Proffstips:** Använd den senaste stabila versionen (från och med 2026‑02‑27 är den 23.11) för att få de senaste renderingsförbättringarna. + +## Steg 2: Ladda käll‑HTML‑dokumentet + +Det första vi behöver är ett `HTMLDocument`‑objekt som pekar på vår fil. Denna klass analyserar markup‑språket, löser CSS och förbereder allt för rendering. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Varför detta steg?** +> Att ladda HTML i ett `HTMLDocument` isolerar parsingsstadiet från renderingsstadiet, vilket betyder att du kan inspektera DOM eller göra ändringar vid körning innan du faktiskt skapar PDF‑filen. + +## Steg 3: Konfigurera PDF‑renderingsalternativ + +Aspose.HTML ger dig fin‑granulär kontroll över hur den slutgiltiga PDF‑filen ser ut. I det här exemplet kommer vi att aktivera fet + kursiv teckensnittsstilar, kantutjämning för mjukare grafik och text‑hintning för skarpare låg‑dpi‑utdata. + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### Varför dessa inställningar? + +- **`FontStyle`** – Slår ihop alla ``‑ eller ``‑taggar med basisteckensnittet, vilket säkerställer att PDF‑filen bevarar den ursprungliga formateringen. +- **`UseAntialiasing`** – Minskar hackiga kanter på diagram, ikoner eller annat rasteriserat innehåll. +- **`UseHinting`** – Justerar glyf‑konturer till pixelrutnät, vilket är särskilt hjälpsamt när PDF‑filen visas på lågupplösta enheter. + +Om du behöver anpassade teckensnitt (t.ex. ett företags varumärkesfont), lägg `.ttf`‑filerna i en mapp och sätt `pdfRenderOptions.FontProvider` därefter. Det är ett eget ämne, men grundidén är: + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## Steg 4: Rendera HTML‑dokumentet till PDF + +Nu kombinerar vi dokumentet och alternativen och instruerar Aspose.HTML att skriva utdatafilen. + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +Efter att den här raden har körts hittar du `output.pdf` bredvid din körbara fil. Öppna den—du bör se den ursprungliga HTML‑en renderad med fet/kursiv stil, mjuk grafik och skarp text. + +> **Förväntat resultat:** +> En PDF som speglar layouten i `sample.html`, med alla rubriker i fet stil, markerad text i kursiv och eventuella inbäddade bilder renderade utan hackiga kanter. + +## Steg 5: Verifiera och justera (valfritt) + +### Snabb verifieringsskript + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +Om PDF‑filen ser felaktig ut, överväg dessa vanliga justeringar: + +| Problem | Trolig orsak | Åtgärd | +|---------|--------------|--------| +| Saknade teckensnitt | Teckensnittet är inte inbäddat eller hittas ej | Använd `FontProvider.AddFont` och säkerställ att teckensnittsfilen är åtkomlig | +| Bilder blir suddiga | Kantutjämning inaktiverad | Sätt `UseAntialiasing = true` | +| Texten ser för tunn ut på skärmen | Hintning inaktiverad | Aktivera `UseHinting = true` | +| Layoutförskjutning vid sidbrytning | CSS `page-break`‑regler ignoreras | Lägg till explicit `page-break-before/after` i din HTML/CSS | + +## Fullt fungerande exempel + +Nedan är det kompletta programmet som du kan kopiera‑och‑klistra in i en ny konsolapp. Det inkluderar alla using‑direktiv, felhantering och kommentarer för tydlighet. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +Kör projektet (`dotnet run`), så bör du se framgångsmeddelandet följt av en nygenererad `output.pdf`. + +## Vanliga frågor & edge‑cases + +### Kan jag **konvertera HTML till PDF** från en URL istället för en lokal fil? + +Absolut. Byt bara ut filsökvägen mot en URL‑sträng: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +Aspose.HTML kommer att ladda ner sidan, lösa externa resurser och rendera den. + +### Vad händer med **stora HTML‑filer** eller **flera sidor**? + +Aspose.HTML strömmar innehållet, så minnesanvändningen förblir rimlig. Om du vill ha varje HTML‑sektion på en separat PDF‑sida, infoga manuella sidbrytningar i HTML‑koden: + +```html +
+``` + +### Fungerar detta med **.NET Core** och **.NET 7**? + +Ja. Biblioteket är plattformsoberoende; se bara till att du riktar in dig på ett kompatibelt ramverk (net6.0, net7.0, etc.) och installerar motsvarande NuGet‑paket. + +### Hur embedder jag teckensnitt för full PDF‑portabilitet? + +Ställ in `pdfRenderOptions.FontProvider` som visat tidigare, och aktivera även inbäddning av teckensnitt: + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +Detta garanterar att PDF‑filen ser likadan ut på alla maskiner, även om teckensnittet inte är installerat lokalt. + +## Visuellt exempel + +![spara html som pdf exempel](example.png){alt="spara html som pdf exempel"} + +*Skärmdumpen visar den genererade PDF‑filen öppnad i Adobe Acrobat, med bevarade fet/kursiva stilar och mjuka bilder.* + +## Slutsats + +Vi har gått igenom allt du behöver för att **spara HTML som PDF** med C#. Från att ladda markup, konfigurera renderingsalternativ, till att skriva den slutgiltiga PDF‑filen, är processen enkel och mycket anpassningsbar. + +Genom att följa den här guiden kan du också **konvertera HTML till PDF**, **generera PDF från HTML**, och **skapa PDF med teckensnitt** för alla rapporterings‑ eller dokumentgenereringsscenarier. Känn dig fri att experimentera med ytterligare alternativ—vattenstämplar, kryptering eller anpassade sidstorlekar—eftersom Aspose.HTML ger dig den flexibiliteten. + +**Nästa steg** du kan utforska: + +- Använd `PdfSaveOptions`‑klassen för att sätta PDF‑version eller komprimeringsnivå. +- Kombinera flera `HTMLDocument`‑instanser till en enda PDF för flersektionsrapporter. +- Integrera detta arbetsflöde i ett ASP.NET Core‑API så att din webbtjänst kan returnera PDF‑filer på begäran. + +Har du frågor om edge‑cases eller behöver hjälp med att finjustera renderingspipeline? Lägg en kommentar nedan, och lycka till med kodningen! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/swedish/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/swedish/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..4bdd19c28 --- /dev/null +++ b/html/swedish/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,237 @@ +--- +category: general +date: 2026-02-27 +description: Spara HTML som ZIP med C# ZipArchive – steg‑för‑steg‑exempel med en anpassad + resurs‑hanterare, samt tips om hur du exporterar HTML till ZIP och skapar zip‑arkiv + med C#‑kod. +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: sv +og_description: Spara HTML som ZIP med C# ZipArchive. Lär dig hur du exporterar HTML + till ZIP med ett komplett exempel, en anpassad resurshanterare och bästa praxis. +og_title: Spara HTML som ZIP i C# – Komplett guide +tags: +- C# +- ZipArchive +- HTML export +title: Spara HTML som ZIP i C# – Komplett guide +url: /sv/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +all translated content. + +Check we didn't miss any text. + +Also there is a note: "For Swedish, ensure proper RTL formatting if needed" not needed. + +Now produce final answer.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Spara HTML som ZIP i C# – Komplett guide + +Har du någonsin behövt **spara HTML som ZIP** men varit osäker på vilka .NET‑klasser du ska använda? Du är inte ensam – många utvecklare stöter på detta problem när de vill paketera en webbsida tillsammans med dess resurser för offline‑användning eller distribution. Den goda nyheten? Med den inbyggda `System.IO.Compression.ZipArchive` kan du göra det på några få rader, och du får också ett rent sätt att kontrollera hur varje resurs skrivs. + +I den här handledningen går vi igenom ett **komplett, körbart exempel** som visar exakt hur du exporterar ett HTML‑dokument till en ZIP‑fil, med en anpassad `ResourceHandler` för att strömma varje tillgång in i arkivet. På vägen kommer vi att ströa in några **c# ziparchive example**‑snuttar, diskutera **how to export html to zip** i verkliga scenarier, och påpeka de subtila skillnaderna när du vill **create zip archive c#**‑program som måste vara robusta. + +> **Förutsättningar** – Du behöver .NET 6+ (eller .NET Core 3.1) och en referens till biblioteket som tillhandahåller `HTMLDocument`, `HTMLSaveOptions` och `ResourceHandler`. Om du använder Aspose.HTML eller ett liknande paket, lägg bara till det via NuGet. Inga andra tredjepartsverktyg krävs. + +--- + +## Vad den här handledningen täcker + +- Ställa in ett **ZipArchive** som kommer att ta emot HTML‑filen och dess länkade resurser. +- Implementera en **custom resource handler** (`ZipHandler`) som dirigerar varje resursström in i arkivet. +- Använda **HTMLSaveOptions** för att knyta ihop allt och faktiskt **save HTML as ZIP**. +- Vanliga fallgropar när du hanterar sökvägar, dubblettposter och stora resurser. +- Tips för att utöka lösningen – som att lägga till en manifestfil eller kryptera ZIP‑filen. + +När du är klar har du en självständig metod som du kan lägga in i vilket C#‑projekt som helst för att **save html as zip** med förtroende. + +## Steg 1: Lägg till de nödvändiga namnrymderna + +Innan någon kod körs, se till att kompilatorn känner till komprimeringsklasserna och HTML‑biblioteket du använder. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*Varför detta är viktigt:* `System.IO.Compression` ger dig `ZipArchive`, medan `Aspose.Html`‑namnrymderna exponerar `HTMLDocument`, `HTMLSaveOptions` och bas‑klassen `ResourceHandler` som vi kommer att utöka. Om du använder en annan HTML‑motor, leta efter motsvarande typer. + +## Steg 2: Skapa en anpassad resurs‑hanterare (Primärt nyckelord i handling) + +Kärnan i **saving HTML as ZIP** är att tala om för motorn var varje extern resurs (bilder, CSS, skript) ska placeras. Genom att ärva från `ResourceHandler` får vi kontroll över strömmen som tar emot datan. + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**Viktiga punkter** + +- `info.Uri` är den relativa URL som HTML‑motorn försöker skriva. Att använda den som postnamn behåller mappstrukturen intakt i ZIP‑filen. +- `CreateEntry` skapar automatiskt alla nödvändiga kataloger; du behöver inte hantera dem själv. +- Att returnera den öppnade strömmen låter motorn strömma data direkt – inga temporära filer, inga extra minneskopior. + +## Steg 3: Initiera ZipArchive + +Nu skapar vi ett `ZipArchive` i **Update**‑läge. Detta läge låter oss lägga till poster medan vi går, och även ersätta befintliga om du kör koden flera gånger. + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*Proffstips:* Använd `FileMode.Create` för att skriva över en eventuell tidigare fil, eller byt till `FileMode.OpenOrCreate` om du vill lägga till i ett befintligt arkiv. Omslut också `ZipArchive` i ett `using`‑statement – detta garanterar att arkivet tas bort korrekt och att filhandtaget frigörs. + +## Steg 4: Ladda HTML‑dokumentet du vill exportera + +Här pekar du biblioteket på käll‑HTML‑filen. Dokumentet kan referera till CSS, bilder eller JavaScript‑filer som ligger bredvid. + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +Om ditt HTML innehåller relativa URL:er, se till att processens arbetskatalog matchar mappen som innehåller dessa resurser. Annars kommer motorn inte kunna hitta dem, och ZIP‑filen kommer att sakna dessa filer. + +## Steg 5: Konfigurera spara‑alternativ – Det verkliga “Save HTML as ZIP”‑ögonblicket + +Vi kopplar nu `ZipHandler` till `HTMLSaveOptions`. Genom att sätta `SaveFormat` till `ZIP` säger vi åt biblioteket att paketera allt, medan vår hanterare bestämmer var varje del placeras. + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*Varför detta är viktigt:* Utan att sätta `ResourceHandler` skulle biblioteket falla tillbaka på att skriva resurser till filsystemet, vilket undergräver syftet med **how to export html to zip** i ett enda arkiv. + +## Steg 6: Utför spara‑operationen + +Till sist, be dokumentet att spara sig själv med de alternativ vi just byggt. Biblioteket kommer att anropa `ZipHandler.HandleResource` för varje extern tillgång det stöter på. + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +När `using`‑blocket för `zipArchive` avslutas, färdigställs arkivet och filen är klar för distribution. + +## Fullständigt fungerande exempel (Alla steg kombinerade) + +Nedan är det kompletta programmet som du kan kopiera‑och‑klistra in i en konsolapp. Det demonstrerar ett **c# ziparchive example** som **creates zip archive c#**‑stil, och det svarar fullt ut på **how to export html to zip**. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**Förväntat resultat:** Efter att du kört programmet kommer `output.zip` att innehålla `index.html` (eller det namn du konfigurerade) plus varje bild, stilark och skript som refereras av den ursprungliga sidan, med mapphierarkin bevarad. Öppna ZIP‑filen, extrahera och dubbelklicka på `index.html` – sidan bör renderas exakt som den gjorde online, men nu är den ett portabelt paket. + +## Vanliga edge‑fall & hur du hanterar dem + +| Situation | Varför det händer | Föreslagen lösning | +|-----------|-------------------|--------------------| +| **Duplicate resource names** (e.g., two images with the same filename in different folders) | `CreateEntry` will throw an `InvalidOperationException` if the exact entry name already exists. | Prefix the entry with its relative path (`info.Uri` already does this) or manually sanitize names before creating the entry. | +| **Large binary assets** (videos, high‑resolution images) | Streaming directly to the zip is fine, but the default buffer size may cause high memory usage. | Override `HandleResource` to wrap the returned stream in a `BufferedStream` with a modest buffer (e.g., 64 KB). | +| **Missing resources** | If the HTML contains a broken link, the handler receives a request for a file that doesn’t exist, leading to an empty entry. | Check `File.Exists` before creating the entry, or log a warning so you know something is missing. | +| **Unicode filenames** | Some older ZIP tools mishandle UTF‑8 entry names. | Ensure you’re targeting .NET 6+, which writes UTF‑8 by default. If you need legacy compatibility, set `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);`. | +| **Need a manifest** (list of files inside the zip) | Consumers sometimes want a `manifest.json` for validation. | After the main save, create a new entry `"manifest.json"` and write a JSON list of `zipArchive.Entries`. | + +## Proffstips för produktionsklara **Save HTML as ZIP**‑implementationer + +1. **Validate the output** – Efter att ha sparat, öppna ZIP‑filen programatiskt och verifiera att `index.html` finns och att varje posts `Length` > 0. Detta fångar tysta fel tidigt. +2. **Parallelize large assets** – Om du har tiotals megabyte bilder, överväg att köa `HandleResource`‑anrop på en `Task`‑pool och skriva till arkivet parallellt (men respektera att `ZipArchive` bara har en skrivare). +3. **Compress wisely** – `ZipArchive` använder Deflate som standard. För redan komprimerade filer (JPEG, PNG) kan du sätta `entry.CompressionLevel = CompressionLevel.NoCompression` för att snabba upp operationen. +4. **Security** – If the ZIP + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/swedish/net/working-with-html-documents/_index.md b/html/swedish/net/working-with-html-documents/_index.md index a3260bb44..f04740672 100644 --- a/html/swedish/net/working-with-html-documents/_index.md +++ b/html/swedish/net/working-with-html-documents/_index.md @@ -39,10 +39,15 @@ 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 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. +### [Spara HTML som ZIP i C# – Komplett guide med anpassad resurs‑hanterare](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) + +Lär dig hur du sparar HTML-filer som ZIP-arkiv i C# med en anpassad resurs‑hanterare. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/swedish/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/swedish/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..7aa91563b --- /dev/null +++ b/html/swedish/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,224 @@ +--- +category: general +date: 2026-02-27 +description: Spara HTML som ZIP i C# med en anpassad resurs‑hanterare och skapa ZIP‑arkiv + i C#. Följ den här steg‑för‑steg‑handledningen för att paketera HTML och dess resurser. +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: sv +og_description: Spara HTML som ZIP i C# med en anpassad resurs‑hanterare. Lär dig + hur du skapar ZIP‑arkiv i C# och enkelt bäddar in resurser. +og_title: Spara HTML som ZIP i C# – Fullständig handledning +tags: +- Aspose.HTML +- C# +- ZIP +title: Spara HTML som ZIP i C# – Komplett guide med anpassad resurshanterare +url: /sv/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Spara HTML som ZIP i C# – Komplett guide med anpassad resurshanterare + +Har du någonsin undrat hur du **sparar HTML som ZIP** i C# utan att rycka ur dig håret? Du är inte ensam—många utvecklare stöter på problem när de måste leverera en HTML‑sida tillsammans med bilder, CSS‑ eller JavaScript‑filer. Den goda nyheten? Med Aspose.HTML kan du göra det i några enkla steg, och en **custom resource handler** gör processen smärtfri. + +I den här handledningen går vi igenom allt du behöver veta: från att installera biblioteket, skriva en hanterare som strömmar resurser direkt in i ett **create ZIP archive in C#**, till att verifiera det slutgiltiga paketet. I slutet har du en färdig lösning som du kan lägga till i vilket .NET‑projekt som helst. + +![Save HTML as ZIP example](/images/save-html-as-zip.png "Diagram showing HTML saved as a ZIP file") + +## Spara HTML som ZIP – Vad den här guiden täcker + +Vi kommer att täcka hela pipeline:n: + +1. **Prerequisites** – de minsta verktygen och paket du behöver. +2. **Custom resource handler** – varför du behöver en och hur du implementerar den. +3. **Creating a ZIP archive in C#** – med `System.IO.Compression`. +4. **Configuring Aspose.HTML save options** för att peka på hanteraren. +5. **Running the code** och kontrollera resultatet. + +Om du är bekväm med grundläggande C#‑syntax och har Visual Studio (eller VS Code) installerat, är du redo att dyka in. Ingen extern dokumentation behövs—allt finns här. + +--- + +## Steg 1: Ställ in projektet och installera Aspose.HTML + +Innan vi skriver någon kod, se till att ditt projekt kan referera till Aspose.HTML‑biblioteket. + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*Pro tip:* Det senaste NuGet‑paketet (från februari 2026) riktar sig mot .NET 6+, så du kan använda det moderna SDK‑stilsprojektet utan att oroa dig för äldre ramverk. + +När paketet har återställts, öppna `Program.cs`. Vi kommer att ersätta standardinnehållet med hela exemplet senare, men håll filen öppen för tillfället. + +## Implementera en Custom Resource Handler + +### Varför en Custom Resource Handler? + +När Aspose.HTML sparar ett HTML‑dokument som ett ZIP‑paket, måste det hämta varje extern resurs (bilder, typsnitt, skript) och skriva dem någonstans. Standardbeteendet skriver dem till en temporär mapp på disken. Genom att tillhandahålla en **custom resource handler** talar du om för biblioteket exakt var varje resurs ska placeras—i vårt fall, direkt i ZIP‑arkivet. Detta undviker extra I/O, håller allt organiserat och ger dig full kontroll över namngivning. + +### Kod: Hanterarklassen + +Skapa en ny klassfil som heter `MyHandler.cs` (eller placera den i `Program.cs` om du föredrar en enkel‑fil‑demo). + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**Förklaring:** +* `ResourceHandler` är en abstrakt klass från Aspose.HTML som låter dig avbryta resurshämtning. +* Genom att returnera `Stream` som erhålls från `ZipArchiveEntry.Open()` ger vi biblioteket ett skrivbart rör direkt in i ZIP‑filen. Inga temporära filer, ingen extra städning. + +## Skapa ZIP‑arkivet i C# + +Nu när hanteraren är klar, behöver vi en plats för den att skriva till. .NET‑klassen `ZipArchive` sköter det tunga arbetet. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### Vad detta gör + +1. **Skapar ett HTML‑dokument i minnet** med en referens till `logo.png`. +2. **Öppnar en `FileStream`** som kommer att bli `output.zip`. +3. **Tilldelar `ZipArchive`** till det statiska fältet i `MyHandler`. +4. **Ställer in `HTMLSaveOptions`** till `SaveFormat.ZIP` och bifogar vår hanterare. +5. **Anropar `document.Save`** – Aspose.HTML analyserar HTML‑koden, hämtar `logo.png` och strömmar den in i arkivet via `MyHandler`. + +Eftersom hanteraren använder resurs‑URI:n (`logo.png`) som postnamn, innehåller den resulterande ZIP‑filen en fil med exakt det namnet, vilket bevarar den ursprungliga relativa sökvägen. + +## Konfigurera sparalternativ för ZIP‑paketet + +`HTMLSaveOptions`‑objektet är där du talar om för Aspose.HTML **hur** du ska paketera resultatet. Förutom `ResourceHandler` kan du justera några användbara egenskaper: + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*Varför bry sig om `EnableCompression`?* +Om du hanterar stora bilder kan aktivering av komprimering minska den slutgiltiga arkivet med upp till 70 %. För redan komprimerade PNG‑filer är vinsten dock liten, så du kan stänga av den för att snabba upp sparandet. + +## Kör koden och verifiera resultatet + +Kompilera och kör programmet: + +```bash +dotnet run +``` + +Du bör se ett lyckat meddelande skrivet i konsolen. Navigera till den utskrivna katalogen och öppna `output.zip`. Inuti hittar du: + +- `index.html` – den sparade HTML‑filen. +- `logo.png` – bilden som refererades i markup‑koden. + +Öppna `index.html` direkt från ZIP‑filen (de flesta OS‑filutforskare låter dig förhandsgranska den) och du kommer att se rubriken och bilden renderade exakt som i den ursprungliga strängen. + +**Särskilda fall att beakta** + +| Situation | Vad att göra | +|-----------|--------------| +| HTML‑dokumentet refererar till en **remote URL** (t.ex. `https://example.com/style.css`) | Hanteraren kommer fortfarande att få en `ResourceInfo.Uri`. Se till att din miljö kan nå URL:en, eller för‑ladda resursen och justera HTML‑koden till en lokal sökväg. | +| Du behöver en **folder hierarchy** i ZIP‑filen (t.ex. `images/logo.png`) | Ändra `HandleResource` så att den lägger till ett mappnamn före: `var entry = ZipArchive.CreateEntry($"assets/{info.Uri}");` | +| Resursen **fails to load** (404) | Hanteraren kommer att anropas, men strömmen får noll byte. Omslut sparningsanropet i en `try/catch` och inspektera `info.Status` om du behöver anpassad felhantering. | + +## Sammanfattning: Spara HTML som ZIP i ett kompakt flöde + +- **Primary Goal:** Packa en HTML‑sida och alla dess externa resurser i en enda ZIP‑fil med C#. +- **Key Tools:** Aspose.HTML (`HTMLDocument`, `HTMLSaveOptions`), `System.IO.Compression.ZipArchive`, och en **custom resource handler**. +- **Result:** En portabel `output.zip` som kan skickas, lagras eller överföras över nätverket, och senare extraheras utan att förlora resurssökvägar. + +## Vad blir nästa steg? Utöka arbetsflödet + +Nu när du har bemästrat **save HTML as ZIP**, kanske du vill utforska relaterade scenarier: + +- **Save HTML as PDF** – ersätt `SaveFormat.ZIP` med `SaveFormat.PDF` och justera alternativna därefter. +- **Embed fonts** – använd `@font-face` i din HTML och låt hanteraren fånga teckensnitts‑filerna. +- **Batch processing** – iterera över en samling HTML‑strängar, återanvänd samma `ZipArchive` för att skapa ett paket med flera dokument. + +Alla dessa bygger på samma **custom resource handler**‑mönster och **create ZIP archive in C#**‑teknik som du just lärt dig. + +### Avslutande tankar + +Du har just sett hur enkelt det är att **save HTML as ZIP** i C# när du låter Aspose.HTML + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/thai/net/generate-jpg-and-png-images/_index.md b/html/thai/net/generate-jpg-and-png-images/_index.md index bb3254275..df4f9e1b7 100644 --- a/html/thai/net/generate-jpg-and-png-images/_index.md +++ b/html/thai/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML สำหรับ .NET นำเสนอวิธีการง เรียนรู้วิธีเปิดใช้งาน Antialiasing เพื่อให้ภาพ PNG/JPG ที่แปลงจาก DOCX มีความคมชัดและลื่นไหล ### [แปลง DOCX เป็น PNG – สร้างไฟล์ ZIP ด้วย C#](./convert-docx-to-png-create-zip-archive-c-tutorial/) เรียนรู้วิธีแปลงไฟล์ DOCX เป็น PNG แล้วบีบอัดเป็นไฟล์ ZIP ด้วย C# โดยใช้ Aspose.HTML +### [สร้าง PNG จาก HTML ด้วย C# – คู่มือขั้นตอนโดยละเอียด](./create-png-from-html-in-c-step-by-step-guide/) +เรียนรู้วิธีแปลง HTML เป็นไฟล์ PNG ด้วย C# อย่างละเอียดผ่านขั้นตอนที่ชัดเจนและตัวอย่างโค้ด ## บทสรุป diff --git a/html/thai/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/thai/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..36dc37e81 --- /dev/null +++ b/html/thai/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-02-27 +description: สร้าง PNG จาก HTML อย่างรวดเร็วโดยใช้ Aspose.HTML ใน C#. เรียนรู้วิธีเรนเดอร์ + HTML เป็นภาพ, ตั้งค่าความกว้างและความสูงของภาพ, และแปลง HTML เป็น PNG ภายในไม่กี่นาที. +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: th +og_description: สร้าง PNG จาก HTML ด้วย Aspose.HTML คู่มือนี้แสดงวิธีเรนเดอร์ HTML + เป็นภาพ ตั้งค่าความกว้างและความสูงของภาพ และแปลง HTML เป็น PNG อย่างมีประสิทธิภาพ +og_title: สร้าง PNG จาก HTML ด้วย C# – คู่มือฉบับสมบูรณ์ +tags: +- Aspose.HTML +- C# +- Image Rendering +title: สร้าง PNG จาก HTML ด้วย C# – คู่มือแบบขั้นตอนต่อขั้นตอน +url: /th/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +– บทเรียนเต็ม" + +Proceed. + +All paragraphs translate. + +Make sure to keep **bold** formatting. + +Translate list items. + +Translate blockquote. + +Translate table. + +Translate image alt and title. + +Proceed. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# สร้าง PNG จาก HTML ด้วย C# – บทเรียนเต็ม + +เคยต้อง **สร้าง PNG จาก HTML** แต่ไม่แน่ใจว่าคลังใดจะให้ผลลัพธ์ที่พิกเซล‑เพอร์เฟ็คต์หรือไม่? คุณไม่ได้เป็นคนเดียว—นักพัฒนาหลายคนเจออุปสรรคเดียวกันเมื่อต้องแปลงหน้าเว็บเป็นภาพคงที่สำหรับอีเมล รายงาน หรือรูปย่อ + +ข่าวดีคือ? ด้วย Aspose.HTML คุณสามารถ **เรนเดอร์ HTML เป็นภาพ**, ควบคุมขนาดที่ต้องการ, และ **บันทึก HTML เป็น PNG** เพียงไม่กี่บรรทัดของ C#. ในบทเรียนนี้เราจะเดินผ่านกระบวนการทั้งหมด ตั้งแต่การโหลดไฟล์ HTML ไปจนถึงการปรับแต่งการ hint ตัวอักษรและสุดท้ายการบันทึก PNG ลงดิสก์. เมื่อเสร็จคุณจะรู้วิธี **ตั้งค่าความกว้างและความสูงของภาพ** ผ่านโค้ดและมีสแนปเพ็ตที่สามารถนำไปใช้ในโปรเจกต์ .NET ใดก็ได้. + +## สิ่งที่คุณจะได้เรียนรู้ + +- วิธีโหลดเอกสาร HTML ด้วย Aspose.HTML +- ความแตกต่างระหว่าง `ImageRenderingOptions` และ `TextOptions` และเหตุผลที่สำคัญ +- วิธี **แปลง HTML เป็น PNG** พร้อมคงฟอนต์, การแอนติอัลไลซิ่ง, และสไตล์การขีดเส้นใต้ +- เคล็ดลับการแก้ปัญหาข้อผิดพลาดทั่วไป เช่น ฟอนต์หายหรือขนาดภาพไม่ตรงตามคาด +- ตัวอย่างโค้ดที่พร้อมรันเต็มรูปแบบ ที่คุณสามารถคัดลอก‑วางลง Visual Studio ได้ทันที + +> **ข้อกำหนดเบื้องต้น:** .NET 6+ (หรือ .NET Framework 4.6.2+), Aspose.HTML for .NET ติดตั้งผ่าน NuGet, และความเข้าใจพื้นฐานของ C#. ไม่ต้องใช้เครื่องมือภายนอกอื่นใด + +--- + +## ขั้นตอนที่ 1: โหลดเอกสาร HTML – เริ่มต้นการสร้าง PNG + +ก่อนอื่นเราต้องมีอ็อบเจ็กต์ `HTMLDocument` ที่ชี้ไปยังไฟล์ต้นฉบับ. นี้คือพื้นฐานของการ **สร้าง PNG จาก HTML** ใด ๆ + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*ทำไมขั้นตอนนี้สำคัญ:* คลาส `HTMLDocument` จะทำการพาร์ส markup, แก้ไข CSS, และสร้าง DOM ที่เอนจินเรนเดอร์จะใช้วาดลงบนบิตแมพ. หากพาธไม่ถูกต้อง ขั้นตอน **เรนเดอร์ HTML เป็นภาพ** ถัดไปจะโยน `FileNotFoundException`. + +--- + +## ขั้นตอนที่ 2: ตั้งค่าความกว้างและความสูงของภาพ – ควบคุมขนาดผลลัพธ์ + +เมื่อคุณ **เรนเดอร์ HTML เป็นภาพ**, บ่อยครั้งต้องการความละเอียดเฉพาะ—เช่นรูปย่อที่ต้องมีขนาด 1200 × 800 พิกเซล. ที่นี่ `ImageRenderingOptions` จะช่วยได้ + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*เคล็ดลับ:* หากคุณละเว้น `Width` และ `Height`, Aspose.HTML จะใช้ขนาดตามธรรมชาติของหน้า ซึ่งอาจใหญ่เกินไปสำหรับการฝังในอีเมล. + +--- + +## ขั้นตอนที่ 3: ปรับแต่งการเรนเดอร์ข้อความ – ทำให้ข้อความคมชัด + +ข้อความบน Linux มักดูเบลอหากไม่ได้เปิด hinting. อ็อบเจ็กต์ `TextOptions` ให้คุณควบคุมสิ่งนี้, ทำให้ PNG สุดท้ายดูคมชัดบนทุกแพลตฟอร์ม + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*ทำไมต้องใช้ hinting?* Hinting ปรับรูปร่างของ glyph แต่ละตัวให้สอดคล้องกับกริดพิกเซล, ซึ่งสำคัญมากเมื่อคุณ **แปลง HTML เป็น PNG** สำหรับจอแสดงผลความละเอียดต่ำ. + +--- + +## ขั้นตอนที่ 4: รวมตัวเลือกและเพิ่มสไตล์ – การตั้งค่าเรนเดอร์เต็มรูปแบบ + +ตอนนี้เราจะรวมการตั้งค่าภาพและข้อความเข้าด้วยกัน, พร้อมสาธิตวิธีใช้สไตล์ฟอนต์ทั่วโลก เช่น การขีดเส้นใต้ข้อความทั้งหมด. ขั้นตอนนี้คือจุดที่คุณ **บันทึก HTML เป็น PNG** พร้อมสไตล์ที่กำหนดเอง + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*หมายเหตุ:* `WebFontStyle` รองรับหลายแฟล็ก (Bold, Italic, ฯลฯ). คุณสามารถรวมกันด้วยการใช้ bitwise OR หากต้องการหลายสไตล์พร้อมกัน. + +--- + +## ขั้นตอนที่ 5: เรนเดอร์และบันทึก – ช่วงเวลาที่คุณ **สร้าง PNG จาก HTML** + +เมื่อทุกอย่างตั้งค่าเรียบร้อย, คำสั่งสุดท้ายเป็นบรรทัดเดียวที่วาด DOM ลงบนบิตแมพและเขียนลงดิสก์ + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +หลังจากบรรทัดนี้ทำงานเสร็จ, คุณจะพบ `output.png` ในโฟลเดอร์ที่ระบุ, ขนาด 1200 × 800 พิกเซล, พร้อมกราฟิกแอนติอัลไลซด์และข้อความที่ถูก hint แล้ว. + +--- + +## ตัวอย่างทำงานเต็มรูปแบบ – คัดลอก, รัน, ตรวจสอบ + +ด้านล่างเป็นโปรแกรมเต็มที่คุณสามารถคอมไพล์เป็นแอปคอนโซล. รวมทุก `using` statements, การจัดการข้อผิดพลาด, และคอมเมนต์ที่จำเป็น + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**ผลลัพธ์ที่คาดหวัง:** ไฟล์ชื่อ `output.png` ปรากฏข้างไฟล์ executable ของคุณ, แสดงเวอร์ชันเรนเดอร์ของ `sample.html`. เปิดด้วยโปรแกรมดูภาพใดก็ได้เพื่อยืนยันขนาดและสไตล์ + +--- + +## ข้อผิดพลาดทั่วไป & วิธีหลีกเลี่ยง + +| ปัญหา | อาการ | วิธีแก้ | +|-------|----------|-----| +| ฟอนต์หาย | ข้อความแสดงเป็น sans‑serif ทั่วไป | ติดตั้งฟอนต์ที่ต้องการบนเครื่องโฮสต์หรือฝังเว็บฟอนต์ใน HTML | +| ขนาดไม่ตรง | PNG มีขนาดใหญ่หรือเล็กกว่าที่คาด | ตรวจสอบค่า `Width` และ `Height` ใน `ImageRenderingOptions` | +| ขอบเบลอ | ไม่มีแอนติอัลไลซิ่ง | ตรวจสอบให้ `UseAntialiasing = true` | +| สิ่งบกพร่องบน Linux | ข้อความดูเบลอ | ตั้งค่า `UseHinting = true` ใน `TextOptions` | + +*เคล็ดลับ:* เมื่อคุณ **เรนเดอร์ HTML เป็นภาพ** บนเซิร์ฟเวอร์แบบ headless, ตรวจสอบให้เซิร์ฟเวอร์มีไลบรารีระบบที่จำเป็น (เช่น `libgdiplus` บน Linux) มิฉะนั้น Aspose.HTML อาจสลับไปใช้เรนเดอร์ซอฟต์แวร์ที่คุณภาพต่ำลง + +--- + +## การขยายโซลูชัน – ขั้นตอนต่อไป + +- **การแปลงเป็นชุด:** วนลูปผ่านรายการไฟล์ HTML และเรียกใช้ตรรกะเรนเดอร์เดียวกันเพื่อสร้างแกลเลอรี PNG +- **รูปแบบอื่น:** เปลี่ยน `output.png` เป็น `output.jpg` หรือ `output.bmp` เพียงเปลี่ยนนามสกุลไฟล์; Aspose.HTML จะเลือก encoder ที่เหมาะสมโดยอัตโนมัติ +- **การคำนวณขนาดแบบไดนามิก:** คำนวณ `Width` และ `Height` จากเมตาแท็ก viewport ของ HTML สำหรับการออกแบบที่ตอบสนอง +- **การใส่ลายน้ำ:** ใช้ `Aspose.Html.Drawing` เพื่อวางโลโก้ก่อนบันทึก + +ไอเดียเหล่านี้ช่วยให้คุณพัฒนาจากสแนปเพ็ต **สร้าง PNG จาก HTML** อย่างง่าย ไปสู่บริการสร้างภาพที่ครบวงจร + +--- + +## สรุป + +เราได้เดินผ่านทุกขั้นตอนที่จำเป็นเพื่อ **สร้าง PNG จาก HTML** ด้วย Aspose.HTML สำหรับ .NET: การโหลดเอกสาร, การตั้งค่า **ตั้งค่าความกว้างและความสูงของภาพ**, การปรับแต่งข้อความด้วย hinting, และสุดท้าย **บันทึก HTML เป็น PNG**. ตัวอย่างโค้ดเต็มพร้อมใช้งานพร้อมให้คุณนำไปใส่ในโปรเจกต์, และเคล็ดลับข้างต้นจะช่วยหลีกเลี่ยงปัญหาที่พบบ่อย + +ตอนนี้คุณสามารถ **เรนเดอร์ HTML เป็นภาพ** อย่างมั่นใจแล้ว, ลองทดลองสไตล์ต่าง ๆ, การประมวลผลเป็นชุด, หรือแม้กระทั่งแปลงเป็น PDF ใน pipeline เดียวกันก็ได้. โอกาสไม่มีที่สิ้นสุด, และโค้ดอยู่ในมือคุณแล้ว + +ขอให้สนุกกับการเขียนโค้ด, และอย่าลังเลที่จะแบ่งปันผลลัพธ์หรือถามคำถามในคอมเมนต์! + +![ตัวอย่างการสร้าง PNG จาก HTML](/images/create-png-from-html.png "สร้าง PNG จาก HTML ด้วย Aspose.HTML") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/thai/net/html-extensions-and-conversions/_index.md b/html/thai/net/html-extensions-and-conversions/_index.md index 2474ca32c..b84f3a39a 100644 --- a/html/thai/net/html-extensions-and-conversions/_index.md +++ b/html/thai/net/html-extensions-and-conversions/_index.md @@ -65,14 +65,16 @@ Aspose.HTML สำหรับ .NET ไม่ใช่แค่ไลบรา ค้นพบพลังของ Aspose.HTML สำหรับ .NET: แปลง HTML เป็น XPS ได้อย่างง่ายดาย มีข้อกำหนดเบื้องต้น คำแนะนำทีละขั้นตอน และคำถามที่พบบ่อยรวมอยู่ด้วย ### [วิธีบีบอัด HTML เป็น Zip ใน C# – บันทึก HTML เป็น Zip](./how-to-zip-html-in-c-save-html-to-zip/) เรียนรู้วิธีบีบอัดไฟล์ HTML เป็นไฟล์ Zip ด้วย C# และ Aspose.HTML สำหรับ .NET อย่างง่ายดายและปลอดภัย -### [สร้างเอกสาร HTML พร้อมข้อความที่มีสไตล์และส่งออกเป็น PDF – คู่มือเต็ม](./create-html-document-with-styled-text-and-export-to-pdf-full/) -เรียนรู้วิธีสร้างเอกสาร HTML ที่มีข้อความจัดรูปแบบและแปลงเป็น PDF อย่างละเอียดด้วย Aspose.HTML สำหรับ .NET -### [สร้าง PDF จาก HTML – คำแนะนำขั้นตอนโดยขั้นตอน C#](./create-pdf-from-html-c-step-by-step-guide/) -เรียนรู้วิธีสร้าง PDF จากไฟล์ HTML ด้วย C# โดยใช้ Aspose.HTML สำหรับ .NET ตามขั้นตอนที่ชัดเจน ### [บันทึก HTML เป็น ZIP – คอร์สเต็ม C#](./save-html-as-zip-complete-c-tutorial/) บันทึกไฟล์ HTML เป็น ZIP อย่างครบถ้วนด้วย C# ตามขั้นตอนของเรา ### [บันทึก HTML เป็น ZIP ใน C# – ตัวอย่างทำงานในหน่วยความจำเต็มรูปแบบ](./save-html-to-zip-in-c-complete-in-memory-example/) -บันทึกไฟล์ HTML เป็นไฟล์ ZIP โดยใช้ C# ด้วยตัวอย่างทำงานในหน่วยความจำเต็มรูปแบบ +บันทึกไฟล์ HTML เป็น ZIP โดยใช้ C# ด้วยตัวอย่างทำงานในหน่วยความจำเต็มรูปแบบ +### [บันทึก HTML เป็น ZIP ใน C# – คู่มือเต็ม](./save-html-as-zip-in-c-complete-guide/) +บันทึกไฟล์ HTML เป็น ZIP อย่างครบถ้วนด้วย C# ตามขั้นตอนของเรา +### [บันทึก HTML เป็น PDF ใน C# – คู่มือเต็มพร้อมฟอนต์](./save-html-as-pdf-in-c-complete-guide-with-fonts/) +เรียนรู้วิธีบันทึก HTML เป็น PDF ใน C# พร้อมการจัดการฟอนต์อย่างครบถ้วนด้วย Aspose.HTML สำหรับ .NET +### [สร้าง PDF จาก HTML – คู่มือขั้นตอนต่อขั้นตอนสำหรับนักพัฒนา](./create-pdf-from-html-step-by-step-guide-for-developers/) +สร้าง PDF จาก HTML อย่างง่ายดายด้วย Aspose.HTML สำหรับ .NET ปฏิบัติตามคำแนะนำทีละขั้นตอนของเราเพื่อผลลัพธ์ที่แม่นยำ ## บทสรุป diff --git a/html/thai/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/thai/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..e4414712d --- /dev/null +++ b/html/thai/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,204 @@ +--- +category: general +date: 2026-02-27 +description: สร้าง PDF จาก HTML อย่างรวดเร็วด้วยตัวอย่าง C# ฉบับเต็ม เรียนรู้การแปลง + HTML เป็น PDF, การบันทึก HTML เป็น PDF, และการส่งออก HTML เป็น PDF ด้วยการตั้งค่าตามแนวทางปฏิบัติที่ดีที่สุด. +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: th +og_description: สร้าง PDF จาก HTML ด้วย C# พร้อมตัวอย่างที่พร้อมใช้งาน คำแนะนำนี้จะพาคุณผ่านการแปลง + HTML เป็น PDF, การบันทึก HTML เป็น PDF, และการส่งออก HTML เป็น PDF. +og_title: สร้าง PDF จาก HTML – คอร์สสอน C# อย่างครบถ้วน +tags: +- C# +- PDF +- HTML +title: สร้าง PDF จาก HTML – คู่มือขั้นตอนต่อขั้นตอนสำหรับนักพัฒนา +url: /th/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# สร้าง PDF จาก HTML – คำแนะนำ C# ฉบับสมบูรณ์ + +เคยต้อง **สร้าง PDF จาก HTML** แต่ไม่แน่ใจว่าจะใช้ API ใด? คุณไม่ได้อยู่คนเดียว ไม่ว่าจะเป็นการสร้างแดชบอร์ดรายงาน, ตัวสร้างใบแจ้งหนี้, หรือการส่งออกเว็บไซต์แบบสแตติก การแปลง HTML เป็น PDF เป็นความต้องการที่พบบ่อยสำหรับแอปสมัยใหม่ที่เน้นเว็บ + +ในบทเรียนนี้เราจะเดินผ่าน **ตัวอย่าง C# ที่สมบูรณ์และสามารถรันได้** ที่แสดงวิธี **แปลง HTML เป็น PDF**, ตั้งค่าตัวเลือกการเรนเดอร์เพื่อให้ได้ผลลัพธ์คมชัด, และสุดท้าย **บันทึก HTML เป็น PDF** ลงดิสก์ เมื่อจบคุณจะมีรูปแบบที่พร้อมใช้งานในระดับ production สำหรับ **ส่งออก HTML เป็น PDF** ที่สามารถนำไปใช้ในโปรเจกต์ .NET ใดก็ได้ + +## สิ่งที่คุณจะได้เรียนรู้ + +- วิธีโหลดไฟล์ HTML ภายในเครื่องด้วย `HTMLDocument` +- ตัวเลือกการเรนเดอร์ที่ช่วยปรับปรุงความหนาของฟอนต์, ความเรียบของภาพ, และการ hint ตัวอักษร +- คำสั่งที่ใช้ **ส่งออก HTML เป็น PDF** ด้วยเมธอด `Save` เพียงบรรทัดเดียว +- เคล็ดลับการจัดการเอกสารขนาดใหญ่, การดีบักข้อผิดพลาดทั่วไป, และการตรวจสอบผลลัพธ์ +- ตัวอย่างโค้ดเต็มที่คัดลอก‑และ‑วางได้ทันที + +### ข้อกำหนดเบื้องต้น + +- .NET 6+ (หรือ .NET Framework 4.7+) API ที่เราใช้ทำงานได้ทั้งสองเวอร์ชัน +- การอ้างอิงไปยัง `HtmlToPdfLib` สมมติ (เปลี่ยนเป็นชื่อไลบรารีที่คุณใช้จริง) +- ไฟล์ `input.html` ที่วางไว้ในโฟลเดอร์ที่คุณควบคุม (เราจะเรียกว่า `YOUR_DIRECTORY`) + +ถ้าคุณมีทุกอย่างแล้ว มาเริ่มกันเลย—ไม่ต้องตั้งค่าเพิ่มเติมใด ๆ + +## ขั้นตอน 1: โหลด HTML Document เพื่อ **สร้าง PDF จาก HTML** + +สิ่งแรกที่ต้องมีคืออินสแตนซ์ `HTMLDocument` ที่ชี้ไปยังไฟล์ต้นทาง คิดว่าเป็นการเปิดสมุดโน๊ตก่อนเริ่มเขียน—หากไม่มีเอกสารก็ไม่มีอะไรให้เรนเดอร์ + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **ทำไมเรื่องนี้สำคัญ:** การโหลดไฟล์ HTML ตั้งแต่ต้นทำให้ไลบรารีสามารถพาร์ส DOM, แก้ไข CSS, และพรีโหลดรูปภาพได้ การข้ามขั้นตอนนี้หรือใส่ HTML ที่ผิดรูปมักทำให้หน้าเปล่าในระหว่าง **html to pdf conversion**. + +## ขั้นตอน 2: ตั้งค่าตัวเลือกการเรนเดอร์สำหรับ **HTML to PDF Conversion** + +ตัวเลือกการเรนเดอร์คือ “ซอสลับลับ” ที่ทำให้ PDF ธรรมดากลายเป็นเอกสารระดับมืออาชีพ ที่นี่เราเปิดใช้งานฟอนต์หนา, การแอนตialiasing สำหรับรูปภาพ, และการ hint สำหรับข้อความ—ฟีเจอร์ที่นักพัฒนาส่วนใหญ่มองข้ามแต่ช่วยเพิ่มความคมชัดอย่างมาก + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **เคล็ดลับระดับโปร:** หากคุณใช้ฟอนต์เฉพาะของแบรนด์ ให้ตั้งค่า `FontFamily` ภายใน `pdfOptions` ด้วย จะช่วยป้องกันการ fallback ไปยังฟอนต์ทั่วไประหว่าง **convert HTML to PDF**. + +## ขั้นตอน 3: บันทึกไฟล์และ **ส่งออก HTML เป็น PDF** + +เมื่อเอกสารถูกโหลดและตัวเลือกต่าง ๆ ถูกปรับแต่งแล้ว ขั้นตอนสุดท้ายคือบรรทัดเดียวที่เขียน PDF ลงดิสก์ เมธอด `Save` จะทำการ **html to pdf conversion** ภายในโดยอัตโนมัติ พร้อมใช้การปรับแต่งการเรนเดอร์ทั้งหมดที่กำหนดไว้ + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **สิ่งที่คุณควรเห็น:** การเปิด `output.pdf` ด้วยโปรแกรมดูใด ๆ จะเห็นเลย์เอาต์ HTML ดั้งเดิม พร้อมหัวข้อหนา, รูปภาพเรียบ, และข้อความคมชัด หากพบสไตล์หายไป ให้ตรวจสอบว่าไฟล์ CSS ของคุณเข้าถึงได้จาก `input.html` อย่างสัมพันธ์ + +![ตัวอย่างการสร้าง pdf จาก html](/images/create-pdf-from-html.png "ภาพหน้าจอของ PDF ที่สร้าง – สร้าง pdf จาก html") + +*ภาพหน้าจอด้านบน (ข้อความแทนภาพ: “ตัวอย่างการสร้าง pdf จาก html”) แสดง PDF ที่เรนเดอร์แล้วโดยคงสไตล์ HTML ดั้งเดิมไว้* + +## ปัญหาที่พบบ่อยเมื่อคุณ **แปลง HTML เป็น PDF** + +แม้กระบวนการจะดูเรียบง่าย นักพัฒนาก็มักเจออุปสรรคบ้าง ด้านล่างคือสามปัญหาที่พบบ่อยที่สุดและวิธีหลีกเลี่ยง + +### 1. แหล่งทรัพยากรหาย (รูปภาพ, CSS, ฟอนต์) + +หาก HTML ของคุณอ้างอิงทรัพยากรภายนอกด้วยเส้นทางสัมพันธ์ ตัวแปลงอาจไม่พบไฟล์เหล่านั้น ควรใช้เส้นทางแบบ absolute หรือกำหนด base URL: + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. เอกสารขนาดใหญ่ทำให้เกิด Timeout + +เมื่อทำงานกับรายงานหลายหน้า ให้เพิ่มค่า timeout ของไลบรารี: + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. การแทนที่ฟอนต์ทำให้รูปแบบไม่คาดคิด + +ระบุฟอนต์ที่ต้องการอย่างชัดเจน: + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +การจัดการปัญหาเหล่านี้ตั้งแต่ต้นจะช่วยคุณหลีกเลี่ยงการดีบักที่น่าหงุดหงิดในระหว่างการทำ **save HTML as PDF**. + +## ขั้นสูง: เพิ่มหน้า Cover ก่อนคุณ **ส่งออก HTML เป็น PDF** + +บางครั้งคุณอาจต้องการหน้าปกแบบกำหนดเอง—เช่นหน้าชื่อเรื่องพร้อมโลโก้ คุณสามารถ prepend HTML snippet ง่าย ๆ ก่อนเอกสารหลักได้: + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **ทำไมต้องทำแบบนี้:** การเพิ่มหน้า Cover โดยตรงใน HTML ทำให้ pipeline การสร้าง PDF เรียบง่าย ไม่ต้องใช้เครื่องมือหลังการประมวลผลอย่าง iText หรือ PdfSharp + +## ตรวจสอบผลลัพธ์ด้วยโปรแกรม + +หากต้องการยืนยันว่า PDF ถูกสร้างอย่างถูกต้อง (เช่นใน pipeline CI) คุณสามารถตรวจสอบขนาดไฟล์หรือจำนวนหน้าได้: + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +จำนวนหน้าที่ไม่เป็นศูนย์ยืนยันว่าขั้นตอน **convert HTML to PDF** สำเร็จ + +## สรุป & ขั้นตอนต่อไป + +เราได้เดินผ่าน **ตัวอย่างครบวงจรจากต้นจนจบ** ของการ **สร้าง PDF จาก HTML** ด้วย C# ขั้นตอนคือ: + +1. โหลด HTML ต้นทาง (`HTMLDocument`) +2. ปรับแต่งการเรนเดอร์ด้วย `PdfRenderingOptions` +3. เรียก `Save` เพื่อ **ส่งออก HTML เป็น PDF** + +ต่อจากนี้คุณอาจสำรวจ: + +- **การประมวลผลเป็นชุด:** วนลูปโฟลเดอร์ HTML ทั้งหลายและสร้าง PDF จำนวนมากพร้อมกัน +- **HTML แบบไดนามิก:** ใช้ Razor engine สร้าง HTML แบบเรียลไทม์ก่อนแปลง +- **ความปลอดภัย:** แยก sandbox กระบวนการแปลงหากรับ HTML จากผู้ใช้ (ป้องกัน script injection) + +ลองปรับตัวเลือกต่าง ๆ ดู—อาจสลับเป็นโหมด `PdfA` เพื่อการเก็บรักษา, หรือฝัง JavaScript สำหรับ PDF แบบโต้ตอบ รูปแบบหลักยังคงเหมือนเดิม และคุณมีพื้นฐานที่มั่นคงสำหรับความต้องการ **save HTML as PDF** ใด ๆ + +--- + +*ขอให้เขียนโค้ดสนุก! หากเจอข้อบกพร่องใด ๆ คอมเมนต์ด้านล่างหรือดูหน้า Issues ของ GitHub ของไลบรารี ชุมชนพร้อมแชร์เทคนิคที่ทำให้ **html to pdf conversion** ราบรื่นยิ่งขึ้น* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/thai/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/thai/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..6c0fa32c2 --- /dev/null +++ b/html/thai/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,270 @@ +--- +category: general +date: 2026-02-27 +description: บันทึก HTML เป็น PDF ใน C# อย่างรวดเร็วด้วย Aspose.HTML. เรียนรู้วิธีแปลง + HTML เป็น PDF, สร้าง PDF จาก HTML ด้วยฟอนต์และสไตล์ที่กำหนดเองในไม่กี่ขั้นตอน. +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: th +og_description: บันทึก HTML เป็น PDF ใน C# อย่างรวดเร็วด้วย Aspose.HTML. บทเรียนนี้แสดงวิธีแปลง + HTML เป็น PDF, สร้าง PDF จาก HTML และใช้ฟอนต์ที่กำหนดเอง. +og_title: บันทึก HTML เป็น PDF ใน C# – คู่มือฉบับสมบูรณ์พร้อมฟอนต์ +tags: +- csharp +- pdf +- html +title: บันทึก HTML เป็น PDF ใน C# – คู่มือฉบับเต็มพร้อมฟอนต์ +url: /th/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# บันทึก HTML เป็น PDF ด้วย C# – คู่มือฉบับสมบูรณ์พร้อมฟอนต์ + +เคยต้องการ **บันทึก HTML เป็น PDF** จากแอปพลิเคชัน C# แต่ไม่แน่ใจว่าจะเลือกไลบรารีใดใช่ไหม? คุณไม่ได้เป็นคนเดียวที่เจอปัญหานี้ นักพัฒนาหลายคนเจออุปสรรคเมื่อพวกเขาต้องส่งใบแจ้งหนี้ รายงาน หรือใบเสร็จที่พิมพ์ได้โดยตรงจากเนื้อหาเว็บ + +ข่าวดีคือ? ด้วย Aspose.HTML คุณสามารถ **แปลง HTML เป็น PDF**, **สร้าง PDF จาก HTML**, และแม้กระทั่ง **สร้าง PDF พร้อมฟอนต์** ได้ในไม่กี่บรรทัด ในบทแนะนำนี้เราจะเดินผ่านกระบวนการทั้งหมด อธิบายว่าทำไมแต่ละการตั้งค่าถึงสำคัญ และให้ตัวอย่างที่พร้อมรัน + +## สิ่งที่คุณจะได้เรียนรู้ + +- วิธีโหลดไฟล์ HTML แบบโลคัลหรือรีโมทใน C# +- ตัวเลือกการเรนเดอร์ที่ให้ฟอนต์หนา/เอียง, การทำแอนตี้อัลไลซิง, และการให้คำแนะนำข้อความ +- วิธีบันทึกผลลัพธ์เป็นไฟล์ PDF บนดิสก์ +- เคล็ดลับในการจัดการฟอนต์กำหนดเองและข้อผิดพลาดทั่วไป + +ไม่จำเป็นต้องมีประสบการณ์กับ Aspose.HTML มาก่อน—เพียงแค่สภาพแวดล้อมการพัฒนา .NET (Visual Studio 2022 หรือใหม่กว่า) และแพคเกจ NuGet ของ Aspose.HTML for .NET + +## ข้อกำหนดเบื้องต้น + +| ความต้องการ | ทำไมจึงสำคัญ | +|-------------|----------------| +| .NET 6.0 หรือใหม่กว่า | ให้ runtime สำหรับ Aspose.HTML | +| Aspose.HTML for .NET (NuGet) | ไลบรารีที่ทำงานหนักให้ | +| ตัวอย่างไฟล์ HTML (`sample.html`) | เนื้อหาแหล่งที่มาที่จะถูกแปลง | +| ความรู้พื้นฐาน C# | เพื่อทำความเข้าใจโค้ดตัวอย่าง | + +ถ้าคุณมีทั้งหมดนี้แล้ว ไปต่อกันเลย. + +## ขั้นตอนที่ 1: ติดตั้ง Aspose.HTML ผ่าน NuGet + +เปิดโปรเจกต์ของคุณใน Visual Studio คลิกขวาที่โหนด **Dependencies** แล้วเลือก **Manage NuGet Packages** ค้นหา `Aspose.HTML` แล้วคลิก **Install**. + +```powershell +dotnet add package Aspose.HTML +``` + +> **เคล็ดลับ:** ใช้เวอร์ชันเสถียรล่าสุด (ณ วันที่ 2026‑02‑27 คือ 23.11) เพื่อรับการปรับปรุงการเรนเดอร์ใหม่ล่าสุด. + +## ขั้นตอนที่ 2: โหลดเอกสาร HTML แหล่งที่มา + +สิ่งแรกที่เราต้องการคืออ็อบเจ็กต์ `HTMLDocument` ที่ชี้ไปยังไฟล์ของเรา คลาสนี้จะทำการพาร์สมาร์กอัป, แก้ไข CSS, และเตรียมทุกอย่างสำหรับการเรนเดอร์ + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **ทำไมต้องทำขั้นตอนนี้?** +> การโหลด HTML เข้าไปใน `HTMLDocument` แยกขั้นตอนการพาร์สออกจากขั้นตอนการเรนเดอร์ ซึ่งหมายความว่าคุณสามารถตรวจสอบ DOM หรือทำการแก้ไขใน runtime ก่อนที่จะสร้าง PDF จริง + +## ขั้นตอนที่ 3: กำหนดค่าตัวเลือกการเรนเดอร์ PDF + +Aspose.HTML ให้การควบคุมอย่างละเอียดว่าผลลัพธ์ PDF จะออกมาเป็นอย่างไร ในตัวอย่างนี้เราจะเปิดใช้งานสไตล์ฟอนต์หนา + เอียง, การทำแอนตี้อัลไลซิงเพื่อกราฟิกที่เรียบเนียน, และการให้คำแนะนำข้อความเพื่อผลลัพธ์ที่คมชัดบนหน้าจอความละเอียดต่ำ + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### ทำไมต้องตั้งค่าเหล่านี้? + +- **`FontStyle`** – ผสานแท็ก `` หรือ `` ใด ๆ กับฟอนต์พื้นฐาน เพื่อให้ PDF รักษาการจัดรูปแบบเดิม +- **`UseAntialiasing`** – ลดขอบหยักบนแผนภูมิ ไอคอน หรือเนื้อหาที่แรสเตอร์ใด ๆ +- **`UseHinting`** – จัดแนวรูปร่างของ glyph ให้ตรงกับกริดพิกเซล ซึ่งเป็นประโยชน์โดยเฉพาะเมื่อ PDF จะถูกดูบนอุปกรณ์ความละเอียดต่ำ + +หากคุณต้องการฟอนต์กำหนดเอง (เช่น ฟอนต์แบรนด์ของบริษัท) ให้วางไฟล์ `.ttf` ลงในโฟลเดอร์และตั้งค่า `pdfRenderOptions.FontProvider` ให้สอดคล้อง นั่นเป็นหัวข้อที่แยกออกไป แต่แนวคิดพื้นฐานคือ: + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## ขั้นตอนที่ 4: เรนเดอร์เอกสาร HTML เป็น PDF + +ตอนนี้เราจะรวมเอกสารและตัวเลือกเข้าด้วยกัน แล้วบอก Aspose.HTML ให้เขียนไฟล์ผลลัพธ์ + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +หลังจากบรรทัดนี้ทำงานเสร็จ คุณจะพบ `output.pdf` อยู่ข้างไฟล์ executable ของคุณ เปิดไฟล์นั้น—คุณควรเห็น HTML ดั้งเดิมที่เรนเดอร์ด้วยสไตล์หนา/เอียง, กราฟิกเรียบเนียน, และข้อความคมชัด + +> **ผลลัพธ์ที่คาดหวัง:** +> PDF ที่สะท้อนเลย์เอาต์ของ `sample.html` โดยหัวข้อทั้งหมดเป็นตัวหนา, ข้อความที่เน้นเป็นตัวเอียง, และรูปภาพที่ฝังอยู่ทั้งหมดเรนเดอร์โดยไม่มีขอบหยัก + +## ขั้นตอนที่ 5: ตรวจสอบและปรับแต่ง (ทางเลือก) + +### สคริปต์ตรวจสอบอย่างรวดเร็ว + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +หาก PDF ดูผิดพลาด ให้พิจารณาการปรับแต่งทั่วไปต่อไปนี้: + +| ปัญหา | สาเหตุที่เป็นไปได้ | วิธีแก้ | +|-------|-------------------|----------| +| ฟอนต์หาย | ฟอนต์ไม่ได้ฝังหรือไม่พบ | ใช้ `FontProvider.AddFont` และตรวจสอบให้แน่ใจว่าไฟล์ฟอนต์เข้าถึงได้ | +| รูปภาพเบลอ | ปิดการทำแอนตี้อัลไลซิง | ตั้งค่า `UseAntialiasing = true` | +| ข้อความดูบางเกินบนหน้าจอ | ปิดการให้คำแนะนำ | เปิด `UseHinting = true` | +| เลย์เอาต์เปลี่ยนแปลงเมื่อมีการแบ่งหน้า | กฎ CSS `page-break` ถูกละเลย | เพิ่ม `page-break-before/after` อย่างชัดเจนใน HTML/CSS ของคุณ | + +## ตัวอย่างการทำงานเต็มรูปแบบ + +ด้านล่างเป็นโปรแกรมเต็มที่คุณสามารถคัดลอกและวางลงในแอปคอนโซลใหม่ได้ รวมถึงคำสั่ง using ทั้งหมด, การจัดการข้อผิดพลาด, และคอมเมนต์เพื่อความชัดเจน + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +รันโปรเจกต์ (`dotnet run`) แล้วคุณควรเห็นข้อความสำเร็จตามด้วยไฟล์ `output.pdf` ที่สร้างใหม่ + +## คำถามทั่วไปและกรณีขอบ + +### ฉันสามารถ **แปลง HTML เป็น PDF** จาก URL แทนไฟล์โลคัลได้หรือไม่? + +ได้เลย เพียงเปลี่ยนเส้นทางไฟล์เป็นสตริง URL: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +### แล้วไฟล์ HTML **ขนาดใหญ่** หรือ **หลายหน้า** ล่ะ? + +Aspose.HTML สตรีมเนื้อหา ทำให้การใช้หน่วยความจำอยู่ในระดับที่เหมาะสม หากคุณต้องการให้แต่ละส่วนของ HTML อยู่บนหน้า PDF แยกกัน ให้แทรกการแบ่งหน้าด้วยตนเองใน HTML: + +```html +
+``` + +### วิธีนี้ทำงานกับ **.NET Core** และ **.NET 7** หรือไม่? + +ใช่ ไลบรารีนี้เป็นแบบข้ามแพลตฟอร์ม; เพียงตรวจสอบว่าคุณตั้งค่าเป้าหมายเป็นเฟรมเวิร์กที่รองรับ (net6.0, net7.0 ฯลฯ) และติดตั้งแพคเกจ NuGet ที่สอดคล้อง + +### ฉันจะ **ฝังฟอนต์** เพื่อให้ PDF พกพาได้เต็มที่อย่างไร? + +ตั้งค่า `pdfRenderOptions.FontProvider` ตามที่แสดงก่อนหน้า และเปิดการฝังฟอนต์ด้วย: + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +## ตัวอย่างภาพ + +![ตัวอย่างการบันทึก HTML เป็น PDF](example.png){alt="ตัวอย่างการบันทึก HTML เป็น PDF"} + +*ภาพหน้าจอแสดง PDF ที่สร้างขึ้นเปิดใน Adobe Acrobat โดยคงสไตล์หนา/เอียงและภาพที่เรียบเนียน* + +## สรุป + +เราได้ครอบคลุมทุกอย่างที่คุณต้องการ **บันทึก HTML เป็น PDF** ด้วย C# ตั้งแต่การโหลดมาร์กอัป, การกำหนดค่าตัวเลือกการเรนเดอร์, จนถึงการเขียน PDF สุดท้าย กระบวนการนี้ตรงไปตรงมาและปรับแต่งได้สูง + +โดยการทำตามคู่มือนี้คุณยังสามารถ **แปลง HTML เป็น PDF**, **สร้าง PDF จาก HTML**, และ **สร้าง PDF พร้อมฟอนต์** สำหรับสถานการณ์การรายงานหรือการสร้างเอกสารใด ๆ อย่าลังเลที่จะทดลองตัวเลือกเพิ่มเติม—ลายน้ำ, การเข้ารหัส, หรือขนาดหน้ากำหนดเอง—เพราะ Aspose.HTML มอบความยืดหยุ่นนั้นให้คุณ + +**ขั้นตอนต่อไป** ที่คุณอาจสำรวจ: + +- ใช้คลาส `PdfSaveOptions` เพื่อตั้งค่าเวอร์ชัน PDF หรือระดับการบีบอัด +- รวมหลายอินสแตนซ์ของ `HTMLDocument` เป็น PDF เดียวสำหรับรายงานหลายส่วน +- ผสานกระบวนการนี้เข้ากับ ASP.NET Core API เพื่อให้บริการเว็บของคุณสามารถคืนค่า PDF ตามความต้องการ + +มีคำถามเกี่ยวกับกรณีขอบหรือจำเป็นต้องการความช่วยเหลือในการปรับแต่ง pipeline การเรนเดอร์หรือไม่? แสดงความคิดเห็นด้านล่าง แล้วขอให้สนุกกับการเขียนโค้ด! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/thai/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/thai/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..b4b2ca229 --- /dev/null +++ b/html/thai/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,230 @@ +--- +category: general +date: 2026-02-27 +description: บันทึก HTML เป็น ZIP ด้วย C# ZipArchive – ตัวอย่างแบบขั้นตอนต่อขั้นตอนพร้อมตัวจัดการทรัพยากรแบบกำหนดเอง, + พร้อมเคล็ดลับวิธีส่งออก HTML เป็น ZIP และสร้างโค้ด C# สำหรับสร้างไฟล์ zip. +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: th +og_description: บันทึก HTML เป็น ZIP ด้วย C# ZipArchive. เรียนรู้วิธีส่งออก HTML ไปเป็น + ZIP พร้อมตัวอย่างเต็ม, ตัวจัดการทรัพยากรแบบกำหนดเอง, และแนวปฏิบัติที่ดีที่สุด. +og_title: บันทึก HTML เป็น ZIP ใน C# – คู่มือฉบับสมบูรณ์ +tags: +- C# +- ZipArchive +- HTML export +title: บันทึก HTML เป็น ZIP ใน C# – คู่มือฉบับสมบูรณ์ +url: /th/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# บันทึก HTML เป็น ZIP ใน C# – คู่มือฉบับสมบูรณ์ + +เคยต้องการ **save HTML as ZIP** แต่ไม่แน่ใจว่าจะใช้คลาส .NET ตัวไหนหรือไม่? คุณไม่ได้เป็นคนเดียว—นักพัฒนาหลายคนเจอปัญหานี้เมื่อพวกเขาต้องการรวมหน้าเว็บกับทรัพยากรของมันเพื่อใช้งานออฟไลน์หรือเพื่อการแจกจ่าย ข่าวดีคือ? ด้วย `System.IO.Compression.ZipArchive` ที่มาพร้อมใน .NET คุณสามารถทำได้ในไม่กี่บรรทัด และยังได้วิธีที่สะอาดในการควบคุมการเขียนแต่ละทรัพยากร + +ในบทแนะนำนี้ เราจะเดินผ่าน **complete, runnable example** ที่แสดงให้คุณเห็นอย่างชัดเจนว่าจะแปลงเอกสาร HTML ไปเป็นไฟล์ ZIP อย่างไร โดยใช้ `ResourceHandler` แบบกำหนดเองเพื่อสตรีมแต่ละทรัพยากรเข้าไปในอาร์ไคฟ์ ในระหว่างนั้นเราจะใส่ตัวอย่าง **c# ziparchive example** บางส่วน, พูดถึง **how to export html to zip** ในสถานการณ์จริง, และชี้ให้เห็นความแตกต่างเล็กน้อยเมื่อคุณต้องการ **create zip archive c#** โปรแกรมที่ต้องมีความทนทาน + +> **Prerequisites** – คุณจะต้องมี .NET 6+ (หรือ .NET Core 3.1) และอ้างอิงถึงไลบรารีที่ให้ `HTMLDocument`, `HTMLSaveOptions`, และ `ResourceHandler`. หากคุณใช้ Aspose.HTML หรือแพคเกจที่คล้ายกัน เพียงเพิ่มผ่าน NuGet ไม่จำเป็นต้องใช้เครื่องมือของบุคคลที่สามอื่นใด + +--- + +## สิ่งที่บทแนะนำนี้ครอบคลุม + +- ตั้งค่า **ZipArchive** ที่จะรับไฟล์ HTML และทรัพยากรที่เชื่อมโยงกับมัน. +- สร้าง **custom resource handler** (`ZipHandler`) ที่กำหนดทิศทางสตรีมของแต่ละทรัพยากรเข้าสู่ archive. +- ใช้ **HTMLSaveOptions** เพื่อเชื่อมโยงทุกอย่างเข้าด้วยกันและจริง ๆ แล้ว **save HTML as ZIP**. +- ปัญหาทั่วไปเมื่อจัดการกับเส้นทาง, รายการซ้ำ, และทรัพยากรขนาดใหญ่. +- เคล็ดลับสำหรับการขยายโซลูชัน—เช่นการเพิ่มไฟล์ manifest หรือการเข้ารหัส ZIP. + +เมื่อจบคุณจะมีเมธอดที่เป็นอิสระซึ่งคุณสามารถใส่ลงในโปรเจค C# ใดก็ได้เพื่อ **save html as zip** อย่างมั่นใจ + +## ขั้นตอนที่ 1: เพิ่ม Namespaces ที่จำเป็น + +ก่อนที่โค้ดใดจะทำงาน ให้แน่ใจว่าคอมไพเลอร์รู้จักคลาสการบีบอัดและไลบรารี HTML ที่คุณใช้. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*Why this matters:* `System.IO.Compression` ให้คุณ `ZipArchive` ในขณะที่ namespaces ของ `Aspose.Html` เปิดเผย `HTMLDocument`, `HTMLSaveOptions`, และคลาสฐาน `ResourceHandler` ที่เราจะสืบทอด หากคุณใช้เอนจิน HTML ตัวอื่น ให้ค้นหาชนิดที่คล้ายกัน. + +## ขั้นตอนที่ 2: สร้าง Custom Resource Handler (Primary Keyword in Action) + +หัวใจของ **saving HTML as ZIP** คือการบอกให้เอนจินรู้ว่าทรัพยากรภายนอกแต่ละรายการ (ภาพ, CSS, สคริปต์) ควรไปที่ไหน โดยการสืบทอดจาก `ResourceHandler` เราจะได้การควบคุมสตรีมที่รับข้อมูล. + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**ประเด็นสำคัญ** + +- `info.Uri` คือ URL เชิงสัมพันธ์ที่เอนจิน HTML พยายามเขียน การใช้มันเป็นชื่อ entry จะทำให้โครงสร้างโฟลเดอร์คงอยู่ภายใน ZIP. +- `CreateEntry` จะสร้างไดเรกทอรีที่จำเป็นโดยอัตโนมัติ; คุณไม่ต้องจัดการเอง. +- การคืนสตรีมที่เปิดไว้ทำให้เอนจินสตรีมข้อมูลโดยตรง—ไม่มีไฟล์ชั่วคราว, ไม่มีการคัดลอกหน่วยความจำเพิ่มเติม. + +## ขั้นตอนที่ 3: เริ่มต้น ZipArchive + +ตอนนี้เราจะสร้าง `ZipArchive` ในโหมด **Update** โหมดนี้ทำให้เราสามารถเพิ่ม entry ได้ตามต้องการ และยังสามารถแทนที่ที่มีอยู่ได้หากคุณรันโค้ดหลายครั้ง. + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*Pro tip:* ใช้ `FileMode.Create` เพื่อเขียนทับไฟล์ที่มีอยู่ก่อนหน้า, หรือสลับเป็น `FileMode.OpenOrCreate` หากคุณต้องการต่อท้ายอาร์ไคฟ์ที่มีอยู่แล้ว นอกจากนี้ให้ห่อ `ZipArchive` ด้วยคำสั่ง `using`—ซึ่งรับประกันว่าอาร์ไคฟ์จะถูกทำลายอย่างถูกต้องและตัวจัดการไฟล์จะถูกปล่อย. + +## ขั้นตอนที่ 4: โหลดเอกสาร HTML ที่คุณต้องการส่งออก + +นี่คือจุดที่คุณชี้ไลบรารีไปที่ไฟล์ HTML ต้นฉบับ เอกสารอาจอ้างอิงไฟล์ CSS, รูปภาพ, หรือไฟล์ JavaScript ที่อยู่ข้างเคียง. + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +หาก HTML ของคุณมี URL เชิงสัมพันธ์ ตรวจสอบให้ไดเรกทอรีทำงานของโปรเซสตรงกับโฟลเดอร์ที่มีทรัพยากรเหล่านั้น มิฉะนั้นเอนจินจะไม่สามารถหาไฟล์ได้และ ZIP จะขาดไฟล์เหล่านั้น. + +## ขั้นตอนที่ 5: กำหนดค่า Save Options – ช่วงเวลาจริงของ “Save HTML as ZIP” + +ตอนนี้เราจะเชื่อม `ZipHandler` กับ `HTMLSaveOptions`. การตั้งค่า `SaveFormat` เป็น `ZIP` บอกไลบรารีให้รวมทุกอย่างไว้ในหนึ่งไฟล์, ในขณะที่ handler ของเราตัดสินใจว่าชิ้นส่วนแต่ละส่วนจะไปที่ไหน. + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*Why this matters:* หากไม่ได้ตั้งค่า `ResourceHandler`, ไลบรารีจะกลับไปเขียนทรัพยากรลงไฟล์ระบบ ซึ่งทำให้วัตถุประสงค์ของ **how to export html to zip** ในอาร์ไคฟ์เดียวเสียไป. + +## ขั้นตอนที่ 6: ดำเนินการบันทึก + +สุดท้าย ให้สั่งเอกสารบันทึกตัวเองโดยใช้ตัวเลือกที่เราสร้างขึ้น ไลบรารีจะเรียก `ZipHandler.HandleResource` สำหรับทุกทรัพยากรภายนอกที่พบ. + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +เมื่อบล็อก `using` สำหรับ `zipArchive` สิ้นสุด, อาร์ไคฟ์จะถูกสรุปและไฟล์พร้อมสำหรับการแจกจ่าย. + +## ตัวอย่างทำงานเต็มรูปแบบ (รวมทุกขั้นตอน) + +ด้านล่างเป็นโปรแกรมเต็มรูปแบบที่คุณสามารถคัดลอก‑วางลงในแอปคอนโซล มันแสดง **c# ziparchive example** ที่ **creates zip archive c#** แบบเต็มรูปแบบ และตอบครบถ้วนว่า **how to export html to zip**. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**ผลลัพธ์ที่คาดหวัง:** หลังจากคุณรันโปรแกรม, `output.zip` จะประกอบด้วย `index.html` (หรือชื่อที่คุณกำหนด) พร้อมกับรูปภาพ, stylesheet, และสคริปต์ทั้งหมดที่อ้างอิงจากหน้าเดิม, รักษาโครงสร้างโฟลเดอร์ไว้ เปิด ZIP, แยกไฟล์, และดับเบิล‑คลิก `index.html`—หน้าจะแสดงผลเหมือนเดิมบนออนไลน์ แต่ตอนนี้เป็นแพ็คเกจพกพา. + +## กรณีขอบที่พบบ่อย & วิธีจัดการ + +| Situation | Why it Happens | Suggested Fix | +|-----------|----------------|---------------| +| **Duplicate resource names** (เช่น รูปภาพสองภาพที่มีชื่อไฟล์เดียวกันในโฟลเดอร์ต่างกัน) | `CreateEntry` จะโยน `InvalidOperationException` หากชื่อ entry ที่ตรงกันมีอยู่แล้ว. | เพิ่มคำนำหน้าชื่อ entry ด้วยเส้นทางเชิงสัมพันธ์ (`info.Uri` ทำเช่นนี้อยู่แล้ว) หรือทำความสะอาดชื่อด้วยตนเองก่อนสร้าง entry. | +| **Large binary assets** (วิดีโอ, ภาพความละเอียดสูง) | การสตรีมโดยตรงไปยัง zip นั้นดี, แต่ขนาดบัฟเฟอร์เริ่มต้นอาจทำให้ใช้หน่วยความจำสูง. | Override `HandleResource` เพื่อห่อสตรีมที่คืนไว้ใน `BufferedStream` ด้วยบัฟเฟอร์ขนาดพอเหมาะ (เช่น 64 KB). | +| **Missing resources** | หาก HTML มีลิงก์ที่เสีย, handler จะได้รับคำขอไฟล์ที่ไม่มีอยู่ ทำให้ entry ว่าง. | ตรวจสอบ `File.Exists` ก่อนสร้าง entry, หรือบันทึกคำเตือนเพื่อให้คุณทราบว่ามีบางอย่างหายไป. | +| **Unicode filenames** | เครื่องมือ ZIP รุ่นเก่าบางตัวจัดการชื่อ entry แบบ UTF‑8 ไม่ถูกต้อง. | ตรวจสอบว่าคุณกำลังใช้ .NET 6+ ซึ่งเขียนเป็น UTF‑8 โดยค่าเริ่มต้น หากต้องการความเข้ากันได้กับรุ่นเก่า ให้ตั้งค่า `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);`. | +| **Need a manifest** (รายการไฟล์ภายใน zip) | ผู้ใช้บางครั้งต้องการ `manifest.json` เพื่อการตรวจสอบ. | หลังจากการบันทึกหลัก, สร้าง entry ใหม่ `"manifest.json"` และเขียนรายการ JSON ของ `zipArchive.Entries`. | + +## เคล็ดลับระดับมืออาชีพสำหรับการใช้งาน **Save HTML as ZIP** ที่พร้อมสำหรับการผลิต + +1. **Validate the output** – หลังจากบันทึก, เปิด ZIP ด้วยโปรแกรมและตรวจสอบว่า `index.html` มีอยู่และแต่ละ entry มี `Length` > 0. สิ่งนี้ช่วยจับความล้มเหลวแบบเงียบได้เร็ว. +2. **Parallelize large assets** – หากคุณมีรูปภาพหลายสิบเมกะไบต์, พิจารณาคิวการเรียก `HandleResource` บน `Task` pool และเขียนลงอาร์ไคฟ์พร้อมกัน (ยังคงเคารพลักษณะการเขียนแบบ single‑writer ของ `ZipArchive`). +3. **Compress wisely** – `ZipArchive` ใช้ Deflate เป็นค่าเริ่มต้น. สำหรับไฟล์ที่บีบอัดแล้ว (JPEG, PNG), คุณสามารถตั้งค่า `entry.CompressionLevel = CompressionLevel.NoCompression` เพื่อเร่งการทำงาน. +4. **Security** – หาก ZIP + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/thai/net/working-with-html-documents/_index.md b/html/thai/net/working-with-html-documents/_index.md index d8de34f36..9bc8881a0 100644 --- a/html/thai/net/working-with-html-documents/_index.md +++ b/html/thai/net/working-with-html-documents/_index.md @@ -37,9 +37,13 @@ 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/) + ### [วิธีทำให้หัวเรื่องเป็นตัวหนาด้วย CSS & C# – คู่มือขั้นตอนเต็ม](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) เรียนรู้วิธีทำให้หัวเรื่องเป็นตัวหนาด้วย CSS ใน C# อย่างละเอียด พร้อมขั้นตอนครบถ้วนเพื่อปรับปรุงการออกแบบเว็บของคุณ +### [บันทึก HTML เป็น ZIP ใน C# – คู่มือฉบับสมบูรณ์โดยใช้ Custom Resource Handler](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) +เรียนรู้วิธีบันทึกไฟล์ HTML เป็นไฟล์ ZIP ด้วย C# และ Custom Resource Handler อย่างละเอียด + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/thai/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/thai/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..561763748 --- /dev/null +++ b/html/thai/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-02-27 +description: บันทึก HTML เป็น ZIP ใน C# โดยใช้ตัวจัดการทรัพยากรแบบกำหนดเองและสร้างไฟล์ + ZIP ใน C# ทำตามบทแนะนำขั้นตอนต่อขั้นตอนนี้เพื่อรวม HTML กับทรัพยากรของมัน. +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: th +og_description: บันทึก HTML เป็น ZIP ใน C# ด้วยตัวจัดการทรัพยากรแบบกำหนดเอง เรียนรู้วิธีสร้างไฟล์ + ZIP ใน C# และฝังทรัพยากรได้อย่างง่ายดาย. +og_title: บันทึก HTML เป็น ZIP ใน C# – คู่มือเต็ม +tags: +- Aspose.HTML +- C# +- ZIP +title: บันทึก HTML เป็น ZIP ใน C# – คู่มือฉบับสมบูรณ์พร้อมตัวจัดการทรัพยากรแบบกำหนดเอง +url: /th/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# บันทึก HTML เป็น ZIP ใน C# – คู่มือฉบับสมบูรณ์พร้อมตัวจัดการทรัพยากรแบบกำหนดเอง + +เคยสงสัยไหมว่าจะ **บันทึก HTML เป็น ZIP** ใน C# อย่างไรโดยไม่ต้องบิดหัว? คุณไม่ได้เป็นคนเดียว—นักพัฒนาจำนวนมากเจออุปสรรคเมื่อจำเป็นต้องส่งหน้า HTML พร้อมกับรูปภาพ, CSS หรือไฟล์ JavaScript ข่าวดีคือ? ด้วย Aspose.HTML คุณสามารถทำได้ในไม่กี่ขั้นตอนที่เรียบร้อย และ **custom resource handler** ทำให้กระบวนการเป็นเรื่องง่ายไม่มีอุปสรรค + +ในบทแนะนำนี้เราจะพาคุณผ่านทุกอย่างที่คุณต้องรู้: ตั้งแต่การติดตั้งไลบรารี, การเขียนตัวจัดการที่สตรีมทรัพยากรโดยตรงเข้าสู่ **create ZIP archive in C#**, จนถึงการตรวจสอบแพ็คเกจสุดท้าย. เมื่อจบคุณจะมีโซลูชันพร้อมใช้งานที่สามารถใส่ลงในโปรเจกต์ .NET ใดก็ได้ + +![ตัวอย่างการบันทึก HTML เป็น ZIP](/images/save-html-as-zip.png "แผนภาพแสดงการบันทึก HTML เป็นไฟล์ ZIP") + +## บันทึก HTML เป็น ZIP – สิ่งที่คู่มือนี้ครอบคลุม + +เราจะครอบคลุมขั้นตอนทั้งหมด: + +1. **Prerequisites** – เครื่องมือและแพคเกจขั้นต่ำที่คุณต้องการ. +2. **Custom resource handler** – ทำไมคุณต้องใช้และวิธีการนำไปใช้. +3. **Creating a ZIP archive in C#** – ใช้ `System.IO.Compression`. +4. **Configuring Aspose.HTML save options** เพื่อชี้ไปที่ตัวจัดการ. +5. **Running the code** และตรวจสอบผลลัพธ์. + +ถ้าคุณคุ้นเคยกับไวยากรณ์พื้นฐานของ C# และมี Visual Studio (หรือ VS Code) ติดตั้งแล้ว คุณพร้อมที่จะดำดิ่งลงไป ไม่มีเอกสารภายนอกที่จำเป็น—ทุกอย่างอยู่ที่นี่ + +--- + +## ขั้นตอนที่ 1: ตั้งค่าโปรเจกต์และติดตั้ง Aspose.HTML + +ก่อนที่เราจะเขียนโค้ดใด ๆ ให้แน่ใจว่าโปรเจกต์ของคุณสามารถอ้างอิงไลบรารี Aspose.HTML ได้ + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*Pro tip:* แพคเกจ NuGet ล่าสุด (ณ กุมภาพันธ์ 2026) รองรับ .NET 6+ ดังนั้นคุณสามารถใช้โปรเจกต์สไตล์ SDK สมัยใหม่โดยไม่ต้องกังวลเกี่ยวกับเฟรมเวิร์กเก่า + +เมื่อแพคเกจถูกกู้คืนแล้ว เปิดไฟล์ `Program.cs`. เราจะเปลี่ยนเนื้อหาเริ่มต้นเป็นตัวอย่างเต็มในภายหลัง แต่ตอนนี้ให้เปิดไฟล์ไว้ + +--- + +## Implement a Custom Resource Handler + +### ทำไมต้องใช้ Custom Resource Handler? + +เมื่อ Aspose.HTML บันทึกเอกสาร HTML เป็นแพ็คเกจ ZIP มันต้องดึงทรัพยากรภายนอกทุกอย่าง (รูปภาพ, ฟอนต์, สคริปต์) แล้วเขียนลงที่ใดที่หนึ่ง พฤติกรรมเริ่มต้นจะเขียนลงในโฟลเดอร์ชั่วคราวบนดิสก์ โดยการให้ **custom resource handler** คุณบอกไลบรารีว่าแต่ละทรัพยากรควรไปที่ไหน—ในกรณีของเรา คือโดยตรงเข้าไปในไฟล์ ZIP สิ่งนี้ช่วยลด I/O เพิ่มความเป็นระเบียบและให้คุณควบคุมการตั้งชื่อได้เต็มที่ + +### โค้ด: คลาส Handler + +สร้างไฟล์คลาสใหม่ชื่อ `MyHandler.cs` (หรือวางไว้ใน `Program.cs` หากคุณต้องการสาธิตแบบไฟล์เดียว) + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**Explanation:** +* `ResourceHandler` เป็นคลาสเชิงนามธรรมจาก Aspose.HTML ที่ให้คุณดักจับการดึงทรัพยากร. +* โดยการคืนค่า `Stream` ที่ได้จาก `ZipArchiveEntry.Open()` เราจะส่งต่อท่อเขียนที่สามารถเขียนได้โดยตรงเข้าสู่ไฟล์ ZIP ไม่มีไฟล์ชั่วคราว ไม่มีการทำความสะอาดเพิ่มเติม + +--- + +## สร้าง ZIP Archive ใน C# + +ตอนนี้ตัวจัดการพร้อมแล้ว เราต้องมีที่สำหรับเขียน `ZipArchive` ของ .NET จะทำหน้าที่หนักนี้ให้ + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### สิ่งที่ทำ + +1. **Creates an in‑memory HTML document** พร้อมอ้างอิง `logo.png`. +2. **Opens a `FileStream`** ที่จะกลายเป็น `output.zip`. +3. **Assigns the `ZipArchive`** ให้กับฟิลด์ static ใน `MyHandler`. +4. **Sets `HTMLSaveOptions`** เป็น `SaveFormat.ZIP` และแนบตัวจัดการของเรา. +5. **Calls `document.Save`** – Aspose.HTML วิเคราะห์ HTML, ดึง `logo.png`, แล้วสตรีมเข้าไปใน archive ผ่าน `MyHandler`. + +เนื่องจากตัวจัดการใช้ URI ของทรัพยากร (`logo.png`) เป็นชื่อ entry ZIP ที่ได้จึงมีไฟล์ชื่อเดียวกันโดยคงเส้นทางสัมพัทธ์เดิมไว้ + +--- + +## กำหนดค่า Save Options สำหรับ ZIP Package + +อ็อบเจกต์ `HTMLSaveOptions` คือที่คุณบอก Aspose.HTML **วิธี** ที่จะบรรจุผลลัพธ์ นอกจาก `ResourceHandler` แล้ว คุณยังสามารถปรับคุณสมบัติบางอย่างที่เป็นประโยชน์ได้: + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*Why care about `EnableCompression`?* +หากคุณต้องจัดการกับรูปภาพขนาดใหญ่ การเปิดใช้งานการบีบอัดสามารถทำให้ไฟล์ archive ลดขนาดได้สูงสุดถึง 70 %. อย่างไรก็ตาม สำหรับ PNG ที่บีบอัดแล้วอยู่แล้ว ผลประโยชน์จะน้อยกว่า ดังนั้นคุณอาจปิดเพื่อเร่งความเร็วการบันทึก + +--- + +## รันโค้ดและตรวจสอบผลลัพธ์ + +คอมไพล์และรันโปรแกรม: + +```bash +dotnet run +``` + +คุณควรเห็นข้อความแสดงความสำเร็จบนคอนโซล ไปที่ไดเรกทอรีที่แสดงและเปิด `output.zip`. ภายในคุณจะพบ: + +- `index.html` – ไฟล์ HTML ที่บันทึกไว้. +- `logo.png` – รูปภาพที่อ้างอิงใน markup. + +เปิด `index.html` โดยตรงจาก ZIP (ส่วนใหญ่ของตัวสำรวจไฟล์ OS จะให้คุณพรีวิว) คุณจะเห็นหัวเรื่องและรูปภาพแสดงผลเหมือนกับสตริงต้นฉบับ + +**กรณีขอบที่ควรพิจารณา** + +| สถานการณ์ | วิธีทำ | +|-----------|--------| +| HTML อ้างอิง **remote URL** (เช่น `https://example.com/style.css`) | ตัวจัดการยังคงได้รับ `ResourceInfo.Uri`. ตรวจสอบให้แน่ใจว่าระบบของคุณสามารถเข้าถึง URL นี้ได้, หรือดาวน์โหลดทรัพยากรล่วงหน้าและปรับ HTML ให้ใช้พาธในเครื่อง | +| คุณต้องการ **folder hierarchy** ภายใน ZIP (เช่น `images/logo.png`) | ปรับ `HandleResource` ให้เพิ่มโฟลเดอร์ก่อน: `var entry = ZipArchive.CreateEntry($"assets/{info.Uri}");` | +| ทรัพยากร **fails to load** (404) | ตัวจัดการจะถูกเรียกแต่สตรีมจะได้รับศูนย์ไบต์. ห่อการเรียก `Save` ด้วย `try/catch` และตรวจสอบ `info.Status` หากต้องการจัดการข้อผิดพลาดแบบกำหนดเอง | + +--- + +## สรุป: บันทึก HTML เป็น ZIP ในขั้นตอนเดียวที่กระชับ + +- **Primary Goal:** รวมหน้า HTML และทรัพยากรภายนอกทั้งหมดไว้ในไฟล์ ZIP เดียวโดยใช้ C#. +- **Key Tools:** Aspose.HTML (`HTMLDocument`, `HTMLSaveOptions`), `System.IO.Compression.ZipArchive`, และ **custom resource handler**. +- **Result:** `output.zip` พกพาได้ที่สามารถส่งต่อ, เก็บรักษา หรือส่งผ่านเครือข่ายได้, แล้วค่อยแยกไฟล์ออกโดยไม่เสียลิงก์ของทรัพยากร + +--- + +## ขั้นตอนต่อไป? การขยาย Workflow + +ตอนนี้คุณได้เชี่ยวชาญ **save HTML as ZIP** แล้ว อาจอยากสำรวจสถานการณ์ที่เกี่ยวข้องต่อไป: + +- **Save HTML as PDF** – แทนที่ `SaveFormat.ZIP` ด้วย `SaveFormat.PDF` แล้วปรับตัวเลือกตามต้องการ. +- **Embed fonts** – ใช้ `@font-face` ใน HTML แล้วให้ตัวจัดการจับไฟล์ฟอนต์. +- **Batch processing** – วนลูปผ่านคอลเลกชันของสตริง HTML, ใช้ `ZipArchive` เดียวกันเพื่อสร้างแพ็คเกจหลายเอกสาร. + +ทั้งหมดนี้สร้างบนแพทเทิร์น **custom resource handler** เดียวกันและเทคนิค **create ZIP archive in C#** ที่คุณเพิ่งเรียนรู้ + +--- + +### ความคิดสุดท้าย + +คุณเพิ่งเห็นว่าการ **save HTML as ZIP** ใน C# ง่ายแค่ไหนเมื่อให้ Aspose.HTML + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/turkish/net/generate-jpg-and-png-images/_index.md b/html/turkish/net/generate-jpg-and-png-images/_index.md index a918363c4..6054a2fe3 100644 --- a/html/turkish/net/generate-jpg-and-png-images/_index.md +++ b/html/turkish/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ HTML belgelerini düzenlemek, HTML'yi resimlere dönüştürmek ve daha fazlası DOCX belgelerini PNG veya JPG formatına dönüştürürken antialiasing'i etkinleştirerek daha net ve pürüzsüz görüntüler elde edin. ### [docx'i png'ye dönüştür – zip arşivi oluşturma C# eğitimi](./convert-docx-to-png-create-zip-archive-c-tutorial/) C# kullanarak docx dosyalarını png formatına dönüştürüp, sonuçları zip arşivi içinde paketlemeyi öğrenin. +### [C# ile HTML'den PNG Oluşturma – Adım Adım Kılavuz](./create-png-from-html-in-c-step-by-step-guide/) +C# kullanarak HTML içeriğini PNG formatına dönüştürmeyi adım adım öğrenin. ## Çözüm diff --git a/html/turkish/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/turkish/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..c7ba5f8d7 --- /dev/null +++ b/html/turkish/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-02-27 +description: Aspose.HTML'i C#'ta kullanarak HTML'den hızlıca PNG oluşturun. HTML'yi + görüntüye render etmeyi, görüntünün genişlik ve yüksekliğini ayarlamayı ve HTML'yi + dakikalar içinde PNG'ye dönüştürmeyi öğrenin. +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: tr +og_description: Aspose.HTML ile HTML'den PNG oluşturun. Bu kılavuz, HTML'yi görüntüye + nasıl render edeceğinizi, görüntünün genişlik ve yüksekliğini nasıl ayarlayacağınızı + ve HTML'yi verimli bir şekilde PNG'ye nasıl dönüştüreceğinizi gösterir. +og_title: C#'ta HTML'den PNG Oluşturma – Tam Kılavuz +tags: +- Aspose.HTML +- C# +- Image Rendering +title: C#'te HTML'den PNG Oluşturma – Adım Adım Rehber +url: /tr/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML'den PNG Oluşturma – Tam Kılavuz + +Hiç **HTML'den PNG oluşturma** ihtiyacı duydunuz mu ama hangi kütüphanenin pikselle tam uyumlu sonuçlar vereceğinden emin değildiniz? Tek başınıza değilsiniz—birçok geliştirici, bir web sayfasını e‑postalar, raporlar veya küçük resimler için statik bir görüntüye dönüştürmeye çalışırken aynı duvara çarpıyor. + +İyi haber? Aspose.HTML ile **HTML'yi görüntüye render** edebilir, tam boyutları kontrol edebilir ve sadece birkaç C# satırıyla **HTML'yi PNG olarak kaydedebilirsiniz**. Bu öğreticide, HTML dosyanızı yüklemekten metin ipuçlarını (hinting) ayarlamaya ve sonunda bir PNG'yi diske yazmaya kadar tüm süreci adım adım göstereceğiz. Sonunda **görüntü genişliğini ve yüksekliğini** programatik olarak ayarlamayı öğrenecek ve herhangi bir .NET projesine ekleyebileceğiniz yeniden kullanılabilir bir kod parçacığına sahip olacaksınız. + +## Öğrenecekleriniz + +- Aspose.HTML kullanarak bir HTML belgesini nasıl yüklersiniz. +- `ImageRenderingOptions` ve `TextOptions` arasındaki fark ve neden önemli oldukları. +- **HTML'yi PNG'ye dönüştürme** sırasında yazı tiplerini, anti‑aliasing'i ve alt çizgi stillerini nasıl korursunuz. +- Eksik fontlar veya beklenmedik görüntü boyutları gibi yaygın sorunların nasıl giderileceğine dair ipuçları. +- Visual Studio'ya kopyalayıp yapıştırabileceğiniz, çalıştırmaya hazır tam bir kod örneği. + +> **Önkoşullar:** .NET 6+ (veya .NET Framework 4.6.2+), NuGet üzerinden yüklenmiş Aspose.HTML for .NET ve temel C# bilgisi. Başka bir dış araç gerekmez. + +--- + +## Adım 1: HTML Belgesini Yükleyin – PNG Oluşturmayı Başlatma + +İlk olarak, kaynak dosyaya işaret eden bir `HTMLDocument` nesnesine ihtiyacımız var. Bu, **HTML'den PNG oluşturma** işleminin temelidir. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*Bu adımın önemi:* `HTMLDocument` sınıfı işaretlemi (markup) ayrıştırır, CSS'i çözer ve render motorunun daha sonra bir bitmap üzerine çizebileceği bir DOM oluşturur. Yol yanlışsa, sonraki **HTML'yi görüntüye render** adımı bir `FileNotFoundException` fırlatır. + +--- + +## Adım 2: Görüntü Genişliği ve Yüksekliğini Ayarlama – Çıktı Boyutunu Kontrol Etme + +**HTML'yi görüntüye render** ederken genellikle belirli bir çözünürlük gerekir—örneğin tam 1200 × 800 piksel olması gereken bir küçük resim. İşte `ImageRenderingOptions` burada devreye girer. + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*İpucu:* `Width` ve `Height` değerlerini atlayarsanız, Aspose.HTML sayfanın doğal boyutunu kullanır; bu da e‑posta gömülmeleri için çok büyük olabilir. + +--- + +## Adım 3: Metin Render'ını İnce Ayar Yapma – Metni Keskinleştirme + +Linux'ta metin genellikle ipucu (hinting) etkinleştirilmediği sürece bulanık görünür. `TextOptions` nesnesi bu ayarı kontrol etmenizi sağlar ve son PNG'nin her platformda net görünmesini garantiler. + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*Neden hinting?* Hinting, her glifin şeklini piksel ızgarasına hizalayacak şekilde ayarlar; bu, düşük çözünürlüklü ekranlar için **HTML'yi PNG'ye dönüştürürken** kritik öneme sahiptir. + +--- + +## Adım 4: Seçenekleri Birleştirme ve Stil Ekleme – Tam Render Yapılandırması + +Şimdi görüntü ve metin ayarlarını birleştiriyoruz ve ayrıca tüm metni altı çizili gibi global bir font stiline nasıl uygulayacağımızı gösteriyoruz. Bu adım, **HTML'yi PNG olarak kaydetme** işlemini özelleştirilmiş stil ile gerçekleştirmenizi sağlar. + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*Not:* `WebFontStyle` birçok bayrağı (Bold, Italic vb.) destekler. Birden fazla stil gerekiyorsa bitwise OR ile birleştirebilirsiniz. + +--- + +## Adım 5: Render ve Kaydet – **HTML'den PNG Oluşturma** Anı + +Her şey yapılandırıldıktan sonra, DOM'u bir bitmap üzerine çizen ve diske yazan tek satırlık çağrı yapılır. + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +Bu satır çalıştıktan sonra, belirtilen klasörde `output.png` dosyasını bulacaksınız; tam 1200 × 800 piksel, anti‑aliasing uygulanmış grafikler ve ipuçlu (hinted) metin ile. + +--- + +## Çalışan Tam Örnek – Yapıştır, Çalıştır, Doğrula + +Aşağıda, bir konsol uygulaması olarak derleyebileceğiniz tam program yer alıyor. Gerekli tüm `using` ifadeleri, hata yönetimi ve yorum satırları dahildir. + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**Beklenen sonuç:** Çalıştırılabilir dosyanızın yanına `output.png` adlı bir dosya oluşur ve `sample.html`'in render edilmiş versiyonunu gösterir. Boyutları ve stili doğrulamak için herhangi bir görüntü görüntüleyicide açın. + +--- + +## Yaygın Tuzaklar ve Çözümleri + +| Sorun | Belirti | Çözüm | +|-------|----------|-----| +| Eksik fontlar | Metin genel sans‑serif olarak görünür | Gerekli fontları host makineye kurun veya web fontlarını HTML içinde gömün. | +| Yanlış boyutlar | PNG beklenenden büyük ya da küçük | `ImageRenderingOptions` içinde `Width` ve `Height` değerlerini kontrol edin. | +| Bulanık kenarlar | Anti‑aliasing yok | `UseAntialiasing = true` olduğundan emin olun. | +| Linux render artefaktları | Metin bulanık | `TextOptions` içinde `UseHinting = true` ayarlayın. | + +*İpucu:* **HTML'yi görüntüye render** ederken başsız (headless) bir sunucuda çalışıyorsanız, sunucunun gerekli sistem kütüphanelerine (ör. Linux'ta `libgdiplus`) sahip olduğundan emin olun; aksi takdirde Aspose.HTML kalite kaybına yol açan bir yazılım renderına geçebilir. + +--- + +## Çözümü Genişletme – Sonraki Adımlar + +- **Toplu dönüşüm:** Bir HTML dosyası listesi üzerinde döngü kurarak aynı render mantığını kullanıp PNG galerisi oluşturun. +- **Farklı formatlar:** `output.png` yerine `output.jpg` veya `output.bmp` kullanmak için dosya uzantısını değiştirin; Aspose.HTML doğru kodlayıcıyı otomatik seçer. +- **Dinamik boyutlandırma:** Responsive tasarımlar için HTML'in viewport meta etiketine göre `Width` ve `Height` değerlerini hesaplayın. +- **Filigran ekleme:** Kaydetmeden önce bir logo eklemek için `Aspose.Html.Drawing` kullanın. + +Bu fikirler, basit bir **HTML'den PNG oluşturma** kod parçacığından tam özellikli bir görüntü üretim servisine geçmenizi sağlar. + +--- + +## Sonuç + +Aspose.HTML for .NET ile **HTML'den PNG oluşturma** sürecinin tüm adımlarını ele aldık: belgeyi yükleme, **görüntü genişliği ve yüksekliği ayarlama**, metin ipuçlarını (hinting) ince ayar yapma ve sonunda **HTML'yi PNG olarak kaydetme**. Tam kod örneği projenize doğrudan eklenebilir ve yukarıdaki ipuçları yaygın baş ağrılarını önlemenize yardımcı olur. + +Artık **HTML'yi görüntüye render** edebildiğinize göre, farklı stiller denemek, toplu işleme yapmak ya da aynı akışta PDF'ye dönüştürmek gibi deneyler yapabilirsiniz. Gökyüzü sınırınız, kod ise elinizde. + +İyi kodlamalar, sonuçlarınızı paylaşmaktan veya yorumlarda sorular sormaktan çekinmeyin! + +![HTML'den PNG Oluşturma örneği](/images/create-png-from-html.png "Aspose.HTML kullanarak HTML'den PNG oluşturma") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/turkish/net/html-extensions-and-conversions/_index.md b/html/turkish/net/html-extensions-and-conversions/_index.md index 8dd996b05..28b0f0962 100644 --- a/html/turkish/net/html-extensions-and-conversions/_index.md +++ b/html/turkish/net/html-extensions-and-conversions/_index.md @@ -39,6 +39,8 @@ Aspose.HTML for .NET yalnızca bir kütüphane değil; web geliştirme dünyası ## HTML Uzantıları ve Dönüşümleri Eğitimleri ### [Aspose.HTML ile .NET'te HTML'yi PDF'ye dönüştürün](./convert-html-to-pdf/) Aspose.HTML for .NET ile HTML'yi zahmetsizce PDF'ye dönüştürün. Adım adım kılavuzumuzu izleyin ve HTML'den PDF'ye dönüştürmenin gücünü serbest bırakın. +### [C# ile HTML'yi PDF olarak Kaydet – Yazı Tipleriyle Tam Kılavuz](./save-html-as-pdf-in-c-complete-guide-with-fonts/) +Aspose.HTML for .NET kullanarak HTML'yi yazı tiplerini koruyarak PDF'ye nasıl kaydedeceğinizi adım adım öğrenin. ### [Aspose.HTML ile .NET'te EPUB'ı Görüntüye Dönüştürme](./convert-epub-to-image/) Aspose.HTML for .NET kullanarak EPUB'ı görsellere nasıl dönüştüreceğinizi öğrenin. Kod örnekleri ve özelleştirilebilir seçenekler içeren adım adım eğitim. ### [Aspose.HTML ile .NET'te EPUB'ı PDF'ye dönüştürün](./convert-epub-to-pdf/) @@ -65,12 +67,16 @@ Aspose.HTML for .NET ile HTML'yi TIFF'e nasıl dönüştüreceğinizi öğrenin. .NET için Aspose.HTML'nin gücünü keşfedin: HTML'yi XPS'e zahmetsizce dönüştürün. Ön koşullar, adım adım kılavuz ve SSS dahildir. ### [HTML'den PDF Oluşturma – C# Adım Adım Kılavuz](./create-pdf-from-html-c-step-by-step-guide/) Aspose.HTML for .NET kullanarak HTML'den PDF'ye nasıl dönüştüreceğinizi adım adım öğrenin. +### [HTML'den PDF Oluşturma – Geliştiriciler İçin Adım Adım Kılavuz](./create-pdf-from-html-step-by-step-guide-for-developers/) +Aspose.HTML for .NET ile HTML'den PDF'ye dönüştürmeyi ayrıntılı olarak öğrenin. ### [C#'ta HTML'i Zip Dosyasına Sıkıştırma](./how-to-zip-html-in-c-save-html-to-zip/) ### [Stil Verilmiş Metinle HTML Belgesi Oluşturma ve PDF'ye Dışa Aktarma – Tam Kılavuz](./create-html-document-with-styled-text-and-export-to-pdf-full/) ### [HTML'yi ZIP Olarak Kaydet – Tam C# Öğreticisi](./save-html-as-zip-complete-c-tutorial/) Aspose.HTML for .NET kullanarak HTML dosyalarını ZIP arşivine kaydetmeyi adım adım öğrenin. ### [C# ile HTML'yi ZIP'e Kaydet – Tam Bellek İçi Örnek](./save-html-to-zip-in-c-complete-in-memory-example/) Aspose.HTML for .NET kullanarak HTML dosyasını bellek içinde ZIP arşivine dönüştürmeyi adım adım öğrenin. +### [C# ile HTML'yi ZIP Olarak Kaydet – Tam Kılavuz](./save-html-as-zip-in-c-complete-guide/) +Aspose.HTML for .NET ile C# içinde HTML dosyalarını ZIP arşivine kaydetmeyi adım adım öğrenin. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/turkish/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/turkish/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..58c722702 --- /dev/null +++ b/html/turkish/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,206 @@ +--- +category: general +date: 2026-02-27 +description: Tam bir C# örneğiyle HTML'den hızlıca PDF oluşturun. HTML'yi PDF'ye dönüştürmeyi, + HTML'yi PDF olarak kaydetmeyi ve en iyi uygulama ayarlarıyla HTML'yi PDF'ye dışa + aktarmayı öğrenin. +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: tr +og_description: C#'ta HTML'den PDF oluşturun, hazır bir örnekle. Bu rehber, HTML'yi + PDF'ye dönüştürme, HTML'yi PDF olarak kaydetme ve HTML'yi PDF'ye dışa aktarma adımlarını + size gösterir. +og_title: HTML'den PDF Oluşturma – Tam C# Öğreticisi +tags: +- C# +- PDF +- HTML +title: HTML'den PDF Oluşturma – Geliştiriciler İçin Adım Adım Kılavuz +url: /tr/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML'den PDF Oluştur – Tam C# Öğreticisi + +HTML'den PDF oluşturmanız gerektiğinde ama hangi API çağrılarını kullanacağınızdan emin olmadığınız oldu mu? Yalnız değilsiniz. Raporlama panosu, fatura oluşturucu ya da statik site dışa aktarımı gibi şeyler inşa ediyor olun, HTML'yi PDF'ye dönüştürmek modern web‑odaklı uygulamalar için sık bir gereksinimdir. + +Bu öğreticide, **tam, çalıştırılabilir bir C# örneği** üzerinden **HTML'yi PDF'ye dönüştürmeyi**, net çıktı için render seçeneklerini yapılandırmayı ve sonunda **HTML'yi PDF olarak diske kaydetmeyi** adım adım göstereceğiz. Sonunda, **HTML'yi PDF'ye dışa aktarmak** için .NET projenize ekleyebileceğiniz sağlam, üretim‑hazır bir desen elde edeceksiniz. + +## Öğrenecekleriniz + +- `HTMLDocument` ile yerel bir HTML dosyasını nasıl yüklersiniz. +- Font kalınlığını, görsel yumuşaklığını ve metin ipuçlarını iyileştiren render seçenekleri. +- Tek bir `Save` metodu ile **HTML'yi PDF'ye dışa aktarmak** için tam çağrı. +- Büyük belgelerle başa çıkma, yaygın hataları ayıklama ve sonucu doğrulama ipuçları. +- Bugün çalıştırabileceğiniz tam bir kopyala‑yapıştır kod örneği. + +### Önkoşullar + +- .NET 6+ (veya .NET Framework 4.7+). Kullandığımız API her iki platformda da çalışır. +- Hayali `HtmlToPdfLib` referansı (gerçek kütüphane adınızla değiştirin). +- Kontrol ettiğiniz bir klasöre yerleştirilmiş bir `input.html` dosyası (biz `YOUR_DIRECTORY` diye adlandıracağız). + +Bu bileşenlere zaten sahipseniz, ek bir kurulum gerekmiyor – hemen başlayalım. + +## Adım 1: HTML Belgesini Yükleyin **HTML'den PDF Oluşturmak** için + +İlk olarak, kaynak dosyaya işaret eden bir `HTMLDocument` örneğine ihtiyacınız var. Bunu, yazmaya başlamadan önce bir not defteri açmak gibi düşünün – belge olmadan render edilecek bir şey yoktur. + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **Why this matters:** HTML dosyasını erken yüklemek, kütüphanenin DOM'u ayrıştırmasını, CSS'i çözmesini ve görselleri önceden yüklemesini sağlar. Bu adımı atlamak ya da hatalı HTML beslemek, **html to pdf conversion** sırasında boş sayfalara yol açar. + +## Adım 2: **HTML'den PDF Dönüştürme** için Rendering Seçeneklerini Yapılandırın + +Render seçenekleri, sade bir PDF'i profesyonel görünümlü bir belgeye dönüştüren gizli sosdur. Burada kalın fontları, görseller için antialiasing'i ve metin için hinting'i etkinleştiriyoruz – çoğu geliştiricinin gözden kaçırdığı, ancak görsel doğruluğu büyük ölçüde artıran özellikler. + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **Pro tip:** Markaya özgü bir fontla çalışıyorsanız, `pdfOptions` içinde `FontFamily` ayarlamayı unutmayın. Bu, **convert HTML to PDF** sırasında genel fontlara geri dönmeyi önler. + +## Adım 3: Dosyayı Kaydedin ve **HTML'yi PDF'ye Dışa Aktarın** + +Belge yüklendi ve seçenekler ayarlandıktan sonra, tek satırla PDF'i diske yazmak kalır. `Save` metodu, tanımladığımız tüm render ayarlarını uygulayarak **html to pdf conversion** işlemini içsel olarak gerçekleştirir. + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **What you should see:** `output.pdf` dosyasını herhangi bir görüntüleyicide açtığınızda, kalın başlıklar, yumuşak görseller ve net metinle orijinal HTML düzeni görüntülenecektir. Stil eksikliği fark ederseniz, CSS dosyalarınızın `input.html`'e göre erişilebilir olduğundan emin olun. + +![HTML'den PDF oluşturma örneği](/images/create-pdf-from-html.png "Oluşturulan PDF'in ekran görüntüsü – HTML'den PDF oluştur") + +*Yukarıdaki ekran görüntüsü (alt metin: “HTML'den PDF oluşturma örneği”), orijinal HTML stilini koruyan bir PDF'i gösterir.* + +## **HTML'den PDF Dönüştürürken** Yaygın Tuzaklar + +Basit bir akış olsa da, geliştiriciler sık sık sorunlarla karşılaşır. İşte en sık rastlanan üç sorun ve nasıl önlenebileceği. + +### 1. Eksik Kaynaklar (Görseller, CSS, Fontlar) + +HTML'niz dış kaynakları göreli yollarla referans veriyorsa, dönüştürücü onları bulamayabilir. Her zaman mutlak yollar kullanın ya da bir temel URL ayarlayın: + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. Büyük Belgeler Zaman Aşımına Neden Olur + +Çok sayfalı raporlarla çalışırken, kütüphanenin zaman aşımı ayarını artırın: + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. Font Değişimi Beklenmedik Görünüme Yol Açar + +İhtiyacınız olan tam font ailesini belirtin: + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +Bu konuları erken ele almak, **save HTML as PDF** işlemleri sırasında sinir bozucu hata ayıklama oturumlarından sizi korur. + +## İleri Seviye: **HTML'yi PDF'ye Dışa Aktarmadan** Önce Kapak Sayfası Eklemek + +Bazen özel bir kapak gerekir – belki bir logo içeren başlık sayfası. Ana belgeden önce basit bir HTML snippet'i ekleyebilirsiniz: + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **Why you’ll do this:** Kapak sayfasını doğrudan HTML içinde eklemek, PDF oluşturma hattını basit tutar, iText veya PdfSharp gibi son‑işlem araçlarını ortadan kaldırır. + +## Çıktıyı Programlı Olarak Doğrulama + +PDF'in doğru üretildiğini (ör. CI pipeline'larında) doğrulamanız gerekiyorsa, dosya boyutunu veya sayfa sayısını inceleyebilirsiniz: + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +Sıfırdan farklı bir sayfa sayısı, **convert HTML to PDF** adımının başarılı olduğunu gösterir. + +## Özet ve Sonraki Adımlar + +C#'ta **HTML'den PDF oluştur** konusunda **tam, uçtan uca bir örnek** üzerinden geçtik. Akış şu şekildedir: + +1. Kaynak HTML'yi yükleyin (`HTMLDocument`). +2. `PdfRenderingOptions` ile render'ı ince ayar yapın. +3. **HTML'yi PDF'ye dışa aktarmak** için `Save` çağrısını yapın. + +Bundan sonra şunları keşfedebilirsiniz: + +- **Batch processing**: Bir klasördeki HTML dosyaları üzerinde döngü kurarak toplu PDF üretimi. +- **Dynamic HTML**: Dönüştürmeden önce Razor view engine kullanarak HTML'i anlık oluşturma. +- **Security**: Kullanıcı tarafından sağlanan HTML kabul ediyorsanız dönüşüm sürecini sandbox'layarak script enjeksiyonunu önleme. + +Farklı seçeneklerle denemeler yapmaktan çekinmeyin – belki arşivleme amaçlı `PdfA` uyumluluğuna geçin ya da etkileşimli PDF'ler için JavaScript ekleyin. Temel desen aynı kalır ve artık herhangi bir **save HTML as PDF** ihtiyacı için güvenilir bir temeliniz var. + +--- + +*İyi kodlamalar! Herhangi bir tuhaflıkla karşılaşırsanız, aşağıya yorum bırakın ya da kütüphanenin GitHub sorun sayfasına göz atın. Topluluk, **html to pdf conversion** sürecini daha da sorunsuz hâle getiren ipuçlarını paylaşmakta çok yardımcıdı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/turkish/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/turkish/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..3b92459b5 --- /dev/null +++ b/html/turkish/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,276 @@ +--- +category: general +date: 2026-02-27 +description: Aspose.HTML kullanarak C#'ta HTML'yi hızlıca PDF olarak kaydedin. HTML'yi + PDF'ye nasıl dönüştüreceğinizi, özel yazı tipleri ve stillerle HTML'den PDF oluşturmayı + sadece birkaç adımda öğrenin. +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: tr +og_description: Aspose.HTML kullanarak C#'ta HTML'yi hızlıca PDF olarak kaydedin. + Bu öğreticide HTML'yi PDF'ye nasıl dönüştüreceğiniz, HTML'den PDF oluşturacağınız + ve özel yazı tipleri uygulayacağınız gösterilmektedir. +og_title: HTML'yi C#'da PDF olarak kaydet – Fontlarla Tam Rehber +tags: +- csharp +- pdf +- html +title: C#'te HTML'yi PDF olarak kaydet – Fontlarla Tam Kılavuz +url: /tr/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Save HTML as PDF in C# – Complete Guide with Fonts + +HTML'i bir C# uygulamasından **PDF olarak kaydetmeniz** gerektiğinde ama hangi kütüphaneyi seçeceğinizi bilemediğiniz oldu mu? Yalnız değilsiniz. Birçok geliştirici, faturaları, raporları veya doğrudan web içeriğinden yazdırılabilir makbuzları göndermek istediğinde bu sorunu yaşıyor. + +İyi haber? Aspose.HTML ile **HTML'yi PDF'ye dönüştürebilir**, **HTML'den PDF oluşturabilir** ve hatta **PDF'yi fontlarla birlikte yaratabilirsiniz** sadece birkaç satır kodla. Bu öğreticide tüm süreci adım adım inceleyecek, her ayarın neden önemli olduğunu açıklayacak ve çalıştırmaya hazır bir örnek sunacağız. + +## What You’ll Learn + +- C# içinde yerel ya da uzak bir HTML dosyasını nasıl yüklersiniz +- Kalın/eğik fontlar, antialiasing ve metin hinting'i sağlayan render seçenekleri +- Sonucu diske PDF dosyası olarak nasıl kaydedersiniz +- Özel fontları yönetme ipuçları ve yaygın tuzaklar + +Aspose.HTML ile ilgili önceden bir deneyime ihtiyacınız yok—sadece bir .NET geliştirme ortamı (Visual Studio 2022 veya daha yeni) ve Aspose.HTML for .NET NuGet paketi yeterli. + +## Prerequisites + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6.0 or later | Provides the runtime for Aspose.HTML | +| Aspose.HTML for .NET (NuGet) | The library that does the heavy lifting | +| A sample HTML file (`sample.html`) | Our source content to be transformed | +| Basic C# knowledge | To understand the code snippets | + +If you’ve got those, let’s dive in. + +## Step 1: Install Aspose.HTML via NuGet + +Open your project in Visual Studio, right‑click the **Dependencies** node, and choose **Manage NuGet Packages**. Search for `Aspose.HTML` and hit **Install**. + +```powershell +dotnet add package Aspose.HTML +``` + +> **Pro tip:** Use the latest stable version (as of 2026‑02‑27 it’s 23.11) to get the newest rendering improvements. + +## Step 2: Load the Source HTML Document + +The first thing we need is an `HTMLDocument` object that points to our file. This class parses the markup, resolves CSS, and prepares everything for rendering. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Why this step?** +> Loading the HTML into an `HTMLDocument` isolates the parsing stage from the rendering stage, which means you can inspect the DOM or make runtime modifications before you actually create the PDF. + +## Step 3: Configure PDF Rendering Options + +Aspose.HTML gives you fine‑grained control over how the final PDF looks. In this example we’ll enable bold + italic font styles, antialiasing for smoother graphics, and text hinting for sharper low‑dpi output. + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### Why These Settings? + +- **`FontStyle`** – Merges any `` or `` tags with the base font, ensuring that the PDF respects the original styling. +- **`UseAntialiasing`** – Reduces jagged edges on charts, icons, or any rasterized content. +- **`UseHinting`** – Aligns glyph outlines to pixel grids, which is especially helpful when the PDF will be viewed on low‑resolution devices. + +If you need custom fonts (e.g., a corporate brand font), drop the `.ttf` files into a folder and set `pdfRenderOptions.FontProvider` accordingly. That’s a whole topic on its own, but the basic idea is: + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## Step 4: Render the HTML Document to PDF + +Now we combine the document and the options, then tell Aspose.HTML to write the output file. + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +After this line runs, you’ll find `output.pdf` beside your executable. Open it—you should see the original HTML rendered with bold/italic styling, smooth graphics, and crisp text. + +> **Expected Result:** +> A PDF that mirrors the layout of `sample.html`, with all headings in bold, emphasized text in italic, and any embedded images rendered without jagged edges. + +## Step 5: Verify and Tweak (Optional) + +### Quick verification script + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +If the PDF looks off, consider these common adjustments: + +| Issue | Likely cause | Fix | +|-------|--------------|-----| +| Missing fonts | Font not embedded or not found | Use `FontProvider.AddFont` and ensure the font file is accessible | +| Images appear blurry | Antialiasing disabled | Set `UseAntialiasing = true` | +| Text looks too thin on screen | Hinting disabled | Enable `UseHinting = true` | +| Layout shift on page break | CSS `page-break` rules ignored | Add explicit `page-break-before/after` in your HTML/CSS | + +## Full Working Example + +Below is the complete program you can copy‑paste into a new console app. It includes all the using directives, error handling, and comments for clarity. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +Run the project (`dotnet run`), and you should see the success message followed by a newly created `output.pdf`. + +## Common Questions & Edge Cases + +### Can I **convert HTML to PDF** from a URL instead of a local file? + +Absolutely. Just replace the file path with a URL string: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +Aspose.HTML will download the page, resolve external resources, and render it. + +### What about **large HTML files** or **multiple pages**? + +Aspose.HTML streams the content, so memory usage stays reasonable. If you need each HTML section on a separate PDF page, insert manual page breaks in the HTML: + +```html +
+``` + +### Does this work with **.NET Core** and **.NET 7**? + +Yes. The library is cross‑platform; just make sure you target a compatible framework (net6.0, net7.0, etc.) and install the corresponding NuGet package. + +### How do I **embed fonts** for full PDF portability? + +Set `pdfRenderOptions.FontProvider` as shown earlier, and also enable font embedding: + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +This guarantees the PDF looks the same on any machine, even if the font isn’t installed locally. + +## Visual Example + +![save html as pdf example](example.png){alt="html'yi pdf olarak kaydet örneği"} + +*The screenshot shows the generated PDF opened in Adobe Acrobat, preserving bold/italic styles and smooth images.* + +## Conclusion + +We’ve covered everything you need to **save HTML as PDF** using C#. From loading the markup, configuring rendering options, to writing the final PDF, the process is straightforward and highly customizable. + +By following this guide you can also **convert HTML to PDF**, **generate PDF from HTML**, and **create PDF with fonts** for any reporting or document‑generation scenario. Feel free to experiment with additional options—watermarks, encryption, or custom page sizes—because Aspose.HTML gives you that flexibility. + +**Next steps** you might explore: + +- Use the `PdfSaveOptions` class to set PDF version or compression level. +- Combine multiple `HTMLDocument` instances into a single PDF for multi‑section reports. +- Integrate this workflow into an ASP.NET Core API so your web service can return PDFs on demand. + +Got questions about edge cases or need help tweaking the rendering pipeline? Drop a comment below, and happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/turkish/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/turkish/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..be4002921 --- /dev/null +++ b/html/turkish/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,258 @@ +--- +category: general +date: 2026-02-27 +description: C# ZipArchive kullanarak HTML'i ZIP olarak kaydet – özel bir kaynak işleyicili + adım adım örnek, ayrıca HTML'i ZIP'e dışa aktarma ve zip arşivi oluşturma C# kodu + hakkında ipuçları. +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: tr +og_description: C# ZipArchive kullanarak HTML'yi ZIP olarak kaydedin. Tam bir örnek, + özel kaynak işleyicisi ve en iyi uygulamalarla HTML'yi ZIP'e nasıl dışa aktaracağınızı + öğrenin. +og_title: C#'de HTML'yi ZIP olarak kaydet – Tam Rehber +tags: +- C# +- ZipArchive +- HTML export +title: C#'de HTML'yi ZIP olarak kaydet – Tam Kılavuz +url: /tr/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +..." translate. + +We'll translate while preserving **save HTML as ZIP** bold. + +Proceed. + +Will keep code block placeholders. + +Let's write final answer.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML'yi ZIP Olarak Kaydetme C# – Tam Kılavuz + +Hiç **save HTML as ZIP** yapmak zorunda kaldınız mı ama hangi .NET sınıflarını kullanacağınızdan emin değildiniz? Tek başınıza değilsiniz—birçok geliştirici, bir web sayfasını çevrim dışı kullanım veya dağıtım için varlıklarıyla birlikte paketlemek istediğinde bu sorunu yaşıyor. İyi haber? Yerleşik `System.IO.Compression.ZipArchive` ile bunu birkaç satırda halledebilir ve her kaynağın nasıl yazılacağını temiz bir şekilde kontrol edebilirsiniz. + +Bu öğreticide, **tam, çalıştırılabilir bir örnek** üzerinden bir HTML belgesini ZIP dosyasına nasıl dışa aktaracağınızı, her varlığı arşive akıtmak için özel bir `ResourceHandler` kullanarak göstereceğiz. Yol boyunca birkaç **c# ziparchive example** kod parçacığı ekleyecek, **how to export html to zip** gerçek dünya senaryolarını tartışacak ve **create zip archive c#** programları oluştururken ortaya çıkan ince farkları açıklayacağız. + +> **Prerequisites** – .NET 6+ (veya .NET Core 3.1) ve `HTMLDocument`, `HTMLSaveOptions` ve `ResourceHandler` sağlayan kütüphaneye bir referans gerekir. Aspose.HTML ya da benzeri bir paket kullanıyorsanız, sadece NuGet üzerinden ekleyin. Başka üçüncü‑taraf araca ihtiyacınız yok. + +--- + +## Bu Öğreticide Neler Kapsanıyor + +- **ZipArchive**'ı kurarak HTML dosyasını ve bağlı kaynaklarını alacak şekilde yapılandırma. +- Her kaynak akışını arşive yönlendiren **özel kaynak işleyicisi** (`ZipHandler`) uygulama. +- **HTMLSaveOptions** kullanarak her şeyi birleştirme ve gerçekten **save HTML as ZIP** işlemini gerçekleştirme. +- Yollar, yinelenen girişler ve büyük varlıklarla ilgili yaygın tuzaklar. +- Çözümü genişletme ipuçları—örneğin bir manifest dosyası ekleme veya ZIP'i şifreleme. + +Bu bölümü tamamladığınızda, **save html as zip** işlemini güvenle yapabileceğiniz, herhangi bir C# projesine ekleyebileceğiniz kendi içinde çalışan bir metoda sahip olacaksınız. + +--- + +## Adım 1: Gerekli Namespace'leri Ekleyin + +Herhangi bir kod çalıştırılmadan önce, derleyicinin sıkıştırma sınıflarını ve kullandığınız HTML kütüphanesini bildiğinden emin olun. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*Why this matters:* `System.IO.Compression` size `ZipArchive` sağlar, `Aspose.Html` namespace'leri ise `HTMLDocument`, `HTMLSaveOptions` ve genişleteceğimiz `ResourceHandler` temel sınıfını sunar. Farklı bir HTML motoru kullanıyorsanız, benzer tipleri arayın. + +--- + +## Adım 2: Özel Bir Resource Handler Oluşturun (Primary Keyword in Action) + +**saving HTML as ZIP** işleminin kalbi, motorun her dış kaynağın (görseller, CSS, scriptler) nereye konulacağını bilmesidir. `ResourceHandler`'dan miras alarak veri alan akışı üzerinde kontrol kazanırız. + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**Key points** + +- `info.Uri`, HTML motorunun yazmaya çalıştığı göreli URL'dir. Bunu giriş adı olarak kullanmak, ZIP içinde klasör yapısını korur. +- `CreateEntry`, gerekli klasörleri otomatik olarak oluşturur; bunları kendiniz yönetmeniz gerekmez. +- Açılan akışı döndürmek, motorun veriyi doğrudan akıtmasını sağlar—geçici dosyalar, ekstra bellek kopyaları yok. + +--- + +## Adım 3: ZipArchive'ı Başlatın + +Şimdi **Update** modunda bir `ZipArchive` oluşturuyoruz. Bu mod, ilerledikçe giriş eklememize ve kodu birden fazla kez çalıştırırsak mevcut girişleri değiştirmemize olanak tanır. + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*Pro tip:* `FileMode.Create` kullanarak önceki dosyayı üzerine yazın, ya da mevcut bir arşive eklemek isterseniz `FileMode.OpenOrCreate` tercih edin. Ayrıca `ZipArchive`'ı bir `using` ifadesi içinde tutun—bu, arşivin doğru şekilde dispose edilmesini ve dosya tutamacının serbest bırakılmasını garanti eder. + +--- + +## Adım 4: Dışa Aktarmak İstediğiniz HTML Belgesini Yükleyin + +Burada kütüphaneyi kaynak HTML dosyasına işaret ettirirsiniz. Belge, yanındaki CSS, görseller veya JavaScript dosyalarına referans verebilir. + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +HTML'niz göreli URL'ler içeriyorsa, işlemin çalışma dizininin bu varlıkların bulunduğu klasörle aynı olduğundan emin olun. Aksi takdirde motor dosyaları bulamaz ve ZIP bu dosyaları atlar. + +--- + +## Adım 5: Kaydetme Seçeneklerini Yapılandırın – Gerçek “Save HTML as ZIP” Anı + +Şimdi `ZipHandler`'ı `HTMLSaveOptions`'a bağlıyoruz. `SaveFormat`'ı `ZIP` olarak ayarlamak, kütüphaneye her şeyi paketlemesini söyler; işleyicimiz ise her parçanın nereye gideceğini belirler. + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*Why this matters:* `ResourceHandler` ayarlanmadan, kütüphane kaynakları dosya sistemine yazmaya çalışır ve **how to export html to zip** amacını tek bir arşivde tutma hedefi bozulur. + +--- + +## Adım 6: Kaydetme İşlemini Gerçekleştirin + +Son olarak, belgeyi az önce oluşturduğumuz seçeneklerle kaydetmesini isteyin. Kütüphane, karşılaştığı her dış varlık için `ZipHandler.HandleResource` metodunu çağıracaktır. + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +`using` bloğu `zipArchive` için sona erdiğinde, arşiv sonlandırılır ve dosya dağıtıma hazır hâle gelir. + +--- + +## Tam Çalışan Örnek (Tüm Adımlar Birleştirildi) + +Aşağıda, bir konsol uygulamasına kopyalayıp yapıştırabileceğiniz tam program yer alıyor. Bir **c# ziparchive example** gösteriyor, **creates zip archive c#** tarzında çalışıyor ve **how to export html to zip** sorusuna tam yanıt veriyor. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**Expected result:** Programı çalıştırdıktan sonra, `output.zip` içinde `index.html` (veya yapılandırdığınız ad) ve orijinal sayfanın referans verdiği tüm görsel, stil sayfası ve script dosyaları klasör hiyerarşisini koruyarak bulunur. ZIP'i açın, çıkarın ve `index.html`'e çift‑tıklayın—sayfa çevrimiçi olarak gördüğünüz gibi aynı şekilde render edilmelidir, ancak artık taşınabilir bir paket halindedir. + +--- + +## Yaygın Kenar Durumları & Nasıl Ele Alınır + +| Durum | Neden Oluşur | Önerilen Çözüm | +|-----------|----------------|---------------| +| **Duplicate resource names** (ör. farklı klasörlerde aynı dosya adıyla iki görsel) | `CreateEntry`, aynı giriş adı zaten varsa `InvalidOperationException` fırlatır. | Girişi göreli yolu ile önekleyin (`info.Uri` zaten bunu yapar) ya da giriş adı oluşturulmadan önce isimleri temizleyin. | +| **Large binary assets** (videolar, yüksek çözünürlüklü görseller) | Doğrudan zip'e akıtmak mümkün, ancak varsayılan tampon boyutu yüksek bellek tüketimine yol açabilir. | `HandleResource` metodunu geçersiz kılarak döndürülen akışı 64 KB gibi makul bir tamponla `BufferedStream` içine alın. | +| **Missing resources** | HTML kırık bir link içeriyorsa, işleyici var olmayan bir dosya isteği alır ve boş bir giriş oluşturur. | `File.Exists` kontrolü yapın; yoksa giriş oluşturmayın ya da eksik dosya olduğunu bildiren bir uyarı loglayın. | +| **Unicode filenames** | Eski ZIP araçları UTF‑8 giriş adlarını doğru işleyemeyebilir. | .NET 6+ hedeflediğinizden emin olun; varsayılan olarak UTF‑8 yazar. Legacy uyumluluk gerekiyorsa `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);` ayarlayın. | +| **Need a manifest** (zip içinde dosya listesi) | Tüketiciler bazen doğrulama için `manifest.json` ister. | Ana kaydetme işleminden sonra yeni bir `"manifest.json"` girişi oluşturun ve `zipArchive.Entries` listesini JSON olarak yazın. | + +--- + +## Üretim‑Hazır **Save HTML as ZIP** Uygulamaları İçin Pro İpuçları + +1. **Çıktıyı doğrulayın** – Kaydetme sonrası, programatik olarak ZIP'i açın ve `index.html`'in var olduğunu, her girişin `Length` > 0 olduğunu kontrol edin. Bu, sessiz hataları erken yakalar. +2. **Büyük varlıkları paralelleştirin** – Eğer onlarca megabaytlık görseliniz varsa, `HandleResource` çağrılarını bir `Task` havuzuna koyup arşive aynı anda yazmayı düşünebilirsiniz (ancak `ZipArchive` tek‑yazıcı doğasını koruyun). +3. **Sıkıştırmayı akıllıca seçin** – `ZipArchive` varsayılan olarak Deflate kullanır. JPEG, PNG gibi zaten sıkıştırılmış dosyalar için `entry.CompressionLevel = CompressionLevel.NoCompression` ayarlayarak işlemi hızlandırabilirsiniz. +4. **Güvenlik** – ZIP + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/turkish/net/working-with-html-documents/_index.md b/html/turkish/net/working-with-html-documents/_index.md index 1aee408b6..1c49bd222 100644 --- a/html/turkish/net/working-with-html-documents/_index.md +++ b/html/turkish/net/working-with-html-documents/_index.md @@ -38,6 +38,7 @@ Temelleri kavradığınızda, oluşturma sürecine daha derinlemesine dalacağı ### [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'yi ZIP Olarak Kaydetme – Özel Kaynak İşleyicisi Kullanarak Tam Kılavuz](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/turkish/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/turkish/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..e9d93bd07 --- /dev/null +++ b/html/turkish/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-02-27 +description: HTML'yi C#'ta özel bir kaynak işleyicisi kullanarak ZIP olarak kaydedin + ve C#'ta ZIP arşivi oluşturun. HTML ve varlıklarını bir araya getirmek için bu adım + adım öğreticiyi izleyin. +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: tr +og_description: C#'ta özel bir kaynak işleyicisiyle HTML'yi ZIP olarak kaydedin. C#'ta + ZIP arşivi oluşturmayı ve kaynakları sorunsuz bir şekilde gömmeyi öğrenin. +og_title: HTML'yi C#'da ZIP olarak kaydet – Tam Kılavuz +tags: +- Aspose.HTML +- C# +- ZIP +title: C#'ta HTML'yi ZIP olarak kaydet – Özel Kaynak İşleyicili Tam Kılavuz +url: /tr/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML'yi ZIP olarak Kaydetmek C#'ta – Özel Kaynak İşleyici ile Tam Kılavuz + +C#'ta **HTML'yi ZIP olarak kaydetmenin** nasıl yapılacağını hiç merak ettiniz mi, saçınızı yolmak zorunda kalmadan? Tek başınıza değilsiniz—birçok geliştirici, bir HTML sayfasını resimler, CSS veya JavaScript dosyalarıyla birlikte göndermeleri gerektiğinde bir duvara çarpar. İyi haber? Aspose.HTML ile bunu birkaç düzenli adımda yapabilirsiniz ve **özel bir kaynak işleyici** süreci sorunsuz hâle getirir. + +Bu öğreticide, bilmeniz gereken her şeyi adım adım göstereceğiz: kütüphaneyi kurmaktan, kaynakları doğrudan bir **C#'ta ZIP arşivi oluşturma** işlemine akıtacak bir işleyici yazmaya, son paketi doğrulamaya kadar. Sonunda, herhangi bir .NET projesine ekleyebileceğiniz hazır bir çözüm elde edeceksiniz. + +![Save HTML as ZIP example](/images/save-html-as-zip.png "Diagram showing HTML saved as a ZIP file") + +## HTML'yi ZIP olarak Kaydetmek – Bu Kılavuzda Neler Kapsanıyor + +Tüm süreci ele alacağız: + +1. **Prerequisites** – ihtiyacınız olan minimum araçlar ve paketler. +2. **Custom resource handler** – neden birine ihtiyacınız var ve nasıl uygulayacağınız. +3. **Creating a ZIP archive in C#** – `System.IO.Compression` kullanarak. +4. **Configuring Aspose.HTML save options** – işleyiciye yönlendirmek için. +5. **Running the code** – çıktıyı kontrol etmek. + +Temel C# sözdizimine hâkimseniz ve Visual Studio (veya VS Code) yüklüyse, derinlemesine incelemeye hazırsınız. Harici bir dokümantasyona gerek yok—her şey burada. + +--- + +## Step 1: Set Up the Project and Install Aspose.HTML + +Kod yazmaya başlamadan önce, projenizin Aspose.HTML kütüphanesine referans verebildiğinden emin olun. + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*Pro tip:* En son NuGet paketi (Şubat 2026 itibarıyla) .NET 6+ hedefliyor, bu yüzden eski çerçevelerle uğraşmadan modern SDK‑stil proje kullanabilirsiniz. + +Paket geri yüklendikten sonra `Program.cs` dosyasını açın. Varsayılan içeriği daha sonra tam örnekle değiştireceğiz, şimdilik dosyayı açık tutun. + +## Implement a Custom Resource Handler + +### Why a Custom Resource Handler? + +Aspose.HTML bir HTML belgesini ZIP paketi olarak kaydettiğinde, her dış kaynağı (resimler, fontlar, scriptler) almalı ve bir yere yazmalıdır. Varsayılan davranış, bunları diskte geçici bir klasöre yazar. **Özel bir kaynak işleyici** sağlayarak, kütüphaneye her kaynağın tam olarak nereye gitmesi gerektiğini söylersiniz—bizim durumumuzda doğrudan ZIP arşivine. Bu ekstra I/O'yu önler, her şeyi düzenli tutar ve adlandırma üzerinde tam kontrol sağlar. + +### Code: The Handler Class + +`MyHandler.cs` adlı yeni bir sınıf dosyası oluşturun (veya tek‑dosyalı demo istiyorsanız `Program.cs` içine yerleştirin). + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**Explanation:** +* `ResourceHandler` Aspose.HTML'den gelen, kaynak alımını yakalamanızı sağlayan soyut bir sınıftır. +* `ZipArchiveEntry.Open()` ile elde edilen `Stream`i döndürerek, kütüphaneye ZIP dosyasına doğrudan yazılabilir bir boru veriyoruz. Geçici dosyalar yok, ekstra temizlik de yok. + +## Create the ZIP Archive in C# + +İşleyici hazır olduğuna göre, yazacağı bir yere ihtiyacımız var. .NET `ZipArchive` sınıfı ağır işi üstlenir. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### What This Does + +1. **Creates an in‑memory HTML document** with a reference to `logo.png`. +2. **Opens a `FileStream`** that will become `output.zip`. +3. **Assigns the `ZipArchive`** to the static field in `MyHandler`. +4. **Sets `HTMLSaveOptions`** to `SaveFormat.ZIP` and attaches our handler. +5. **Calls `document.Save`** – Aspose.HTML parses the HTML, fetches `logo.png`, and streams it into the archive via `MyHandler`. + +İşleyici, kaynak URI'sini (`logo.png`) giriş adı olarak kullandığı için, ortaya çıkan ZIP tam olarak aynı adı taşıyan bir dosya içerir ve orijinal göreli yolu korur. + +## Configure Save Options for the ZIP Package + +`HTMLSaveOptions` nesnesi, Aspose.HTML'e çıktıyı **nasıl** paketleyeceğinizi söylediğiniz yerdir. `ResourceHandler` dışında birkaç kullanışlı özelliği de ayarlayabilirsiniz: + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*Why care about `EnableCompression`?* +Büyük resimlerle çalışıyorsanız, sıkıştırmayı etkinleştirmek final arşivi %70'e kadar küçültebilir. Ancak zaten sıkıştırılmış PNG'ler için kazanç sınırlıdır, bu yüzden kaydetme işlemini hızlandırmak için kapatabilirsiniz. + +## Run the Code and Verify the Output + +Programı derleyip çalıştırın: + +```bash +dotnet run +``` + +Konsolda başarı mesajını görmelisiniz. Yazdırılan dizine gidin ve `output.zip` dosyasını açın. İçinde şunları bulacaksınız: + +- `index.html` – kaydedilmiş HTML dosyası. +- `logo.png` – işaretlenmiş resim dosyası. + +`index.html` dosyasını ZIP içinden doğrudan açın (çoğu OS dosya gezgini önizleme imkanı sunar) ve başlığın ve resmin orijinal metindeki gibi render edildiğini göreceksiniz. + +**Edge Cases to Consider** + +| Situation | What to Do | +|-----------|------------| +| The HTML references a **remote URL** (e.g., `https://example.com/style.css`) | The handler will still receive a `ResourceInfo.Uri`. Ensure your environment can reach the URL, or pre‑download the resource and adjust the HTML to a local path. | +| You need **folder hierarchy** inside the ZIP (e.g., `images/logo.png`) | Modify `HandleResource` to prepend a folder name: `var entry = ZipArchive.CreateEntry($"assets/{info.Uri}");` | +| The resource **fails to load** (404) | The handler will be called, but the stream will receive zero bytes. Wrap the save call in a `try/catch` and inspect `info.Status` if you need custom error handling. | + +## Recap: Save HTML as ZIP in One Compact Flow + +- **Primary Goal:** Bundle an HTML page and all its external assets into a single ZIP file using C#. +- **Key Tools:** Aspose.HTML (`HTMLDocument`, `HTMLSaveOptions`), `System.IO.Compression.ZipArchive`, and a **custom resource handler**. +- **Result:** A portable `output.zip` that can be shipped, stored, or sent over the network, and later extracted without losing resource links. + +## What’s Next? Extending the Workflow + +Şimdi **HTML'yi ZIP olarak kaydetme** konusundaki ustalığınıza ek olarak ilgili senaryoları keşfetmek isteyebilirsiniz: + +- **Save HTML as PDF** – `SaveFormat.ZIP` yerine `SaveFormat.PDF` koyun ve seçenekleri ona göre ayarlayın. +- **Embed fonts** – HTML'nizde `@font-face` kullanın ve işleyicinin font dosyalarını yakalamasına izin verin. +- **Batch processing** – bir dizi HTML dizesi üzerinde döngü kurun, aynı `ZipArchive`'ı yeniden kullanarak çok‑belgeli bir paket oluşturun. + +Tüm bunlar aynı **custom resource handler** deseni ve **create ZIP archive in C#** tekniği üzerine inşa edilmiştir. + +### Final Thoughts + +You’ve just seen how easy it is to **save HTML as ZIP** in C# when you let Aspose.HTML + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/vietnamese/net/generate-jpg-and-png-images/_index.md b/html/vietnamese/net/generate-jpg-and-png-images/_index.md index 364f75161..b01a373ed 100644 --- a/html/vietnamese/net/generate-jpg-and-png-images/_index.md +++ b/html/vietnamese/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Học cách sử dụng Aspose.HTML cho .NET để thao tác với các tài li Hướng dẫn chi tiết cách bật khử răng cưa để cải thiện chất lượng hình ảnh khi chuyển đổi tài liệu DOCX sang PNG hoặc JPG bằng Aspose.HTML. ### [Chuyển đổi DOCX sang PNG – tạo tệp ZIP bằng C# – Hướng dẫn](./convert-docx-to-png-create-zip-archive-c-tutorial/) Hướng dẫn cách chuyển đổi tài liệu DOCX thành hình ảnh PNG và đóng gói chúng vào tệp ZIP bằng C#. +### [Tạo PNG từ HTML trong C# – Hướng dẫn từng bước](./create-png-from-html-in-c-step-by-step-guide/) +Hướng dẫn chi tiết cách chuyển đổi HTML thành ảnh PNG bằng C# sử dụng Aspose.HTML, bao gồm các bước cấu hình và ví dụ thực tế. ## Phần kết luận diff --git a/html/vietnamese/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md b/html/vietnamese/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..d715b39bd --- /dev/null +++ b/html/vietnamese/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-02-27 +description: Tạo PNG từ HTML nhanh chóng bằng Aspose.HTML trong C#. Học cách chuyển + đổi HTML thành hình ảnh, thiết lập chiều rộng và chiều cao của hình ảnh, và chuyển + HTML sang PNG trong vài phút. +draft: false +keywords: +- create png from html +- render html to image +- convert html to png +- save html as png +- set image width height +language: vi +og_description: Tạo PNG từ HTML với Aspose.HTML. Hướng dẫn này cho thấy cách chuyển + đổi HTML thành hình ảnh, thiết lập chiều rộng và chiều cao của hình ảnh, và chuyển + HTML sang PNG một cách hiệu quả. +og_title: Tạo PNG từ HTML trong C# – Hướng dẫn đầy đủ +tags: +- Aspose.HTML +- C# +- Image Rendering +title: Tạo PNG từ HTML trong C# – Hướng dẫn chi tiết từng bước +url: /vi/net/generate-jpg-and-png-images/create-png-from-html-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tạo PNG từ HTML trong C# – Hướng Dẫn Đầy Đủ + +Bạn đã bao giờ cần **tạo PNG từ HTML** nhưng không chắc thư viện nào sẽ cho bạn kết quả pixel‑perfect? Bạn không phải là người duy nhất—nhiều nhà phát triển gặp cùng một vấn đề khi họ cố chuyển một trang web thành hình ảnh tĩnh cho email, báo cáo, hoặc ảnh thu nhỏ. + +Tin tốt là gì? Với Aspose.HTML bạn có thể **render HTML to image**, kiểm soát kích thước chính xác, và **save HTML as PNG** chỉ với vài dòng C#. Trong hướng dẫn này chúng ta sẽ đi qua toàn bộ quy trình, từ việc tải tệp HTML của bạn đến việc tinh chỉnh hinting cho văn bản và cuối cùng ghi PNG ra đĩa. Khi kết thúc, bạn sẽ biết cách **set image width height** một cách lập trình và có một đoạn mã có thể tái sử dụng trong bất kỳ dự án .NET nào. + +## Những Điều Bạn Sẽ Học + +- Cách tải tài liệu HTML bằng Aspose.HTML. +- Sự khác nhau giữa `ImageRenderingOptions` và `TextOptions` và lý do chúng quan trọng. +- Cách **convert HTML to PNG** trong khi giữ nguyên phông chữ, antialiasing và kiểu gạch chân. +- Mẹo khắc phục các vấn đề thường gặp như thiếu phông chữ hoặc kích thước ảnh không như mong đợi. +- Một mẫu mã hoàn chỉnh, sẵn sàng chạy mà bạn có thể copy‑paste vào Visual Studio. + +> **Prerequisites:** .NET 6+ (hoặc .NET Framework 4.6.2+), Aspose.HTML for .NET đã được cài đặt qua NuGet, và hiểu biết cơ bản về C#. Không cần công cụ bên ngoài nào khác. + +--- + +## Bước 1: Load the HTML Document – Bắt Đầu Tạo PNG + +Đầu tiên, chúng ta cần một đối tượng `HTMLDocument` trỏ tới tệp nguồn. Đây là nền tảng cho bất kỳ thao tác **create PNG from HTML** nào. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +// Load the HTML file you want to convert +HTMLDocument htmlDoc = new HTMLDocument("YOUR_DIRECTORY/sample.html"); +``` + +*Why this step matters:* Lớp `HTMLDocument` phân tích markup, giải quyết CSS, và xây dựng DOM mà engine render sẽ vẽ lên bitmap sau này. Nếu đường dẫn sai, bước **render html to image** tiếp theo sẽ ném `FileNotFoundException`. + +--- + +## Bước 2: Set Image Width Height – Kiểm Soát Kích Thước Đầu Ra + +Khi bạn **render HTML to image**, thường cần một độ phân giải cụ thể—ví dụ một thumbnail phải đúng 1200 × 800 pixel. Đó là lúc `ImageRenderingOptions` tỏa sáng. + +```csharp +// Define image rendering settings (size and antialiasing for smoother graphics) +ImageRenderingOptions imageOpts = new ImageRenderingOptions +{ + Width = 1200, // <-- set image width + Height = 800, // <-- set image height + UseAntialiasing = true // smoother edges +}; +``` + +*Pro tip:* Nếu bạn bỏ qua `Width` và `Height`, Aspose.HTML sẽ dùng kích thước tự nhiên của trang, có thể quá lớn cho việc nhúng vào email. + +--- + +## Bước 3: Fine‑Tune Text Rendering – Làm Văn Bản Sắc Nét + +Văn bản trên Linux thường bị mờ nếu không bật hinting. Đối tượng `TextOptions` cho phép bạn kiểm soát điều này, đảm bảo PNG cuối cùng sắc nét trên mọi nền tảng. + +```csharp +// Define text rendering settings (hinting improves clarity on Linux) +TextOptions textOpts = new TextOptions +{ + UseHinting = true // improves glyph rendering +}; +``` + +*Why hinting?* Hinting điều chỉnh hình dạng của mỗi glyph để căn chỉnh với lưới pixel, rất quan trọng khi bạn **convert HTML to PNG** cho các màn hình độ phân giải thấp. + +--- + +## Bước 4: Combine Options and Add Styling – Cấu Hình Render Đầy Đủ + +Bây giờ chúng ta hợp nhất các thiết lập hình ảnh và văn bản, đồng thời minh họa cách áp dụng kiểu phông chữ toàn cục, chẳng hạn gạch chân toàn bộ văn bản. Đây là bước bạn thực sự **save HTML as PNG** với kiểu dáng tùy chỉnh. + +```csharp +// Combine image and text options, and set additional rendering preferences (e.g., underline text) +ImageRenderingOptions renderOpts = new ImageRenderingOptions +{ + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline // optional: underline all text +}; +``` + +*Note:* `WebFontStyle` hỗ trợ nhiều flag (Bold, Italic, v.v.). Bạn có thể kết hợp chúng bằng phép OR bitwise nếu cần nhiều kiểu đồng thời. + +--- + +## Bước 5: Render and Save – Khoảnh Khắc **Create PNG from HTML** + +Với mọi thứ đã được cấu hình, lời gọi cuối cùng chỉ là một dòng mã vẽ DOM lên bitmap và ghi ra đĩa. + +```csharp +// Render the HTML to a PNG file using the configured options +htmlDoc.Save("YOUR_DIRECTORY/output.png", renderOpts); +``` + +Sau khi dòng này chạy, bạn sẽ thấy `output.png` trong thư mục đã chỉ định, đúng 1200 × 800 pixel, với đồ họa antialiased và văn bản đã được hint. + +--- + +## Ví Dụ Hoàn Chỉnh – Dán, Chạy, Kiểm Tra + +Dưới đây là chương trình đầy đủ mà bạn có thể biên dịch thành một console app. Nó bao gồm tất cả các câu lệnh `using`, xử lý lỗi, và chú thích cần thiết. + +```csharp +// Program.cs +using System; +using Aspose.Html; +using Aspose.Html.Rendering.Image; +using Aspose.Html.Drawing; + +class Program +{ + static void Main() + { + try + { + // 1️⃣ Load the HTML file + HTMLDocument htmlDoc = new HTMLDocument("sample.html"); + + // 2️⃣ Set image dimensions (set image width height) + ImageRenderingOptions imageOpts = new ImageRenderingOptions + { + Width = 1200, + Height = 800, + UseAntialiasing = true + }; + + // 3️⃣ Enable text hinting for sharper output + TextOptions textOpts = new TextOptions + { + UseHinting = true + }; + + // 4️⃣ Merge options and apply underline style + ImageRenderingOptions renderOpts = new ImageRenderingOptions + { + ImageOptions = imageOpts, + TextOptions = textOpts, + FontStyle = WebFontStyle.Underline + }; + + // 5️⃣ Render and save as PNG (convert HTML to PNG) + htmlDoc.Save("output.png", renderOpts); + + Console.WriteLine("✅ PNG created successfully! Check output.png"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Error: {ex.Message}"); + } + } +} +``` + +**Expected result:** Một tệp tên `output.png` xuất hiện bên cạnh file thực thi của bạn, hiển thị phiên bản render của `sample.html`. Mở nó bằng bất kỳ trình xem ảnh nào để xác nhận kích thước và kiểu dáng. + +--- + +## Các Vấn Đề Thường Gặp & Cách Tránh + +| Issue | Symptom | Fix | +|-------|----------|-----| +| Missing fonts | Text appears as generic sans‑serif | Cài đặt các phông chữ cần thiết trên máy chủ hoặc nhúng web fonts trong HTML. | +| Wrong dimensions | PNG is larger or smaller than expected | Kiểm tra lại giá trị `Width` và `Height` trong `ImageRenderingOptions`. | +| Blurry edges | No antialiasing | Đảm bảo `UseAntialiasing = true`. | +| Linux rendering artifacts | Text looks fuzzy | Đặt `UseHinting = true` trong `TextOptions`. | + +*Pro tip:* Khi bạn **render HTML to image** trên máy chủ không có giao diện (headless), hãy chắc máy chủ đã cài các thư viện hệ thống cần thiết (ví dụ `libgdiplus` trên Linux) nếu không Aspose.HTML có thể chuyển sang renderer phần mềm với chất lượng giảm. + +--- + +## Mở Rộng Giải Pháp – Các Bước Tiếp Theo + +- **Batch conversion:** Lặp qua danh sách các tệp HTML và gọi cùng một logic render để tạo một bộ sưu tập PNG. +- **Different formats:** Đổi `output.png` thành `output.jpg` hoặc `output.bmp` bằng cách thay đổi phần mở rộng file; Aspose.HTML sẽ tự động chọn encoder phù hợp. +- **Dynamic sizing:** Tính `Width` và `Height` dựa trên thẻ meta viewport của HTML cho thiết kế đáp ứng. +- **Watermarking:** Sử dụng `Aspose.Html.Drawing` để chồng logo trước khi lưu. + +Những ý tưởng này giúp bạn chuyển từ một đoạn **create PNG from HTML** đơn giản sang một dịch vụ tạo ảnh đầy đủ tính năng. + +--- + +## Kết Luận + +Chúng ta đã đi qua mọi thứ cần thiết để **create PNG from HTML** bằng Aspose.HTML cho .NET: tải tài liệu, cấu hình **set image width height**, tinh chỉnh văn bản với hinting, và cuối cùng **saving HTML as PNG**. Mã mẫu hoàn chỉnh đã sẵn sàng để đưa vào dự án của bạn, và các mẹo trên sẽ giúp bạn tránh những rắc rối thường gặp. + +Bây giờ bạn đã có thể **render HTML to image** một cách tin cậy, tại sao không thử nghiệm với các kiểu dáng khác nhau, xử lý hàng loạt, hoặc thậm chí chuyển đổi sang PDF trong cùng một pipeline? Không giới hạn gì cả, và mã đã nằm trong tay bạn. + +Happy coding, and feel free to share your results or ask questions in the comments! + +![Create PNG from HTML example](/images/create-png-from-html.png "Create PNG from HTML using Aspose.HTML") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/vietnamese/net/html-extensions-and-conversions/_index.md b/html/vietnamese/net/html-extensions-and-conversions/_index.md index 169c7624f..b0b3c50d0 100644 --- a/html/vietnamese/net/html-extensions-and-conversions/_index.md +++ b/html/vietnamese/net/html-extensions-and-conversions/_index.md @@ -39,6 +39,8 @@ Aspose.HTML for .NET không chỉ là một thư viện; mà còn là một côn ## Hướng dẫn về phần mở rộng và chuyển đổi HTML ### [Chuyển đổi HTML sang PDF trong .NET với Aspose.HTML](./convert-html-to-pdf/) Chuyển đổi HTML sang PDF dễ dàng với Aspose.HTML cho .NET. Làm theo hướng dẫn từng bước của chúng tôi và giải phóng sức mạnh của việc chuyển đổi HTML sang PDF. +### [Lưu HTML thành PDF trong C# – Hướng dẫn đầy đủ với phông chữ](./save-html-as-pdf-in-c-complete-guide-with-fonts/) +Hướng dẫn chi tiết cách lưu tài liệu HTML thành PDF trong C# bằng Aspose.HTML, bao gồm cách nhúng phông chữ và tùy chỉnh. ### [Chuyển đổi EPUB sang hình ảnh trong .NET với Aspose.HTML](./convert-epub-to-image/) Tìm hiểu cách chuyển đổi EPUB sang hình ảnh bằng Aspose.HTML cho .NET. Hướng dẫn từng bước với các ví dụ về mã và tùy chọn có thể tùy chỉnh. ### [Chuyển đổi EPUB sang PDF trong .NET với Aspose.HTML](./convert-epub-to-pdf/) @@ -65,10 +67,16 @@ Tìm hiểu cách chuyển đổi HTML sang TIFF bằng Aspose.HTML cho .NET. L Khám phá sức mạnh của Aspose.HTML cho .NET: Chuyển đổi HTML sang XPS dễ dàng. Bao gồm các điều kiện tiên quyết, hướng dẫn từng bước và Câu hỏi thường gặp. ### [Cách Nén HTML thành Zip trong C# – Lưu HTML vào Zip](./how-to-zip-html-in-c-save-html-to-zip/) Hướng dẫn chi tiết cách nén HTML thành tệp Zip bằng C# và Aspose.HTML, kèm ví dụ mã và các tùy chọn cấu hình. +### [Lưu HTML dưới dạng ZIP – Hướng dẫn C# hoàn chỉnh](./save-html-as-zip-complete-c-tutorial/) +Hướng dẫn chi tiết cách lưu tài liệu HTML thành tệp ZIP bằng Aspose.HTML cho .NET với C#. +### [Lưu HTML thành ZIP trong C# – Hướng dẫn đầy đủ](./save-html-as-zip-in-c-complete-guide/) +Hướng dẫn chi tiết cách nén tài liệu HTML thành tệp ZIP trong C# bằng Aspose.HTML cho .NET. ### [Tạo tài liệu HTML với văn bản có kiểu dáng và xuất ra PDF – Hướng dẫn đầy đủ](./create-html-document-with-styled-text-and-export-to-pdf-full/) Hướng dẫn chi tiết cách tạo tài liệu HTML có văn bản định dạng và xuất ra PDF bằng Aspose.HTML cho .NET. ### [Tạo PDF từ HTML – Hướng dẫn từng bước C#](./create-pdf-from-html-c-step-by-step-guide/) Tạo PDF từ HTML trong .NET bằng C#. Hướng dẫn chi tiết từng bước để chuyển đổi HTML sang PDF nhanh chóng. +### [Tạo PDF từ HTML – Hướng dẫn từng bước cho nhà phát triển](./create-pdf-from-html-step-by-step-guide-for-developers/) +Hướng dẫn chi tiết từng bước để tạo PDF từ HTML trong .NET bằng C#. Tận dụng Aspose.HTML để chuyển đổi nhanh và dễ dàng. ### [Lưu HTML dưới dạng ZIP – Hướng dẫn C# hoàn chỉnh](./save-html-as-zip-complete-c-tutorial/) Hướng dẫn chi tiết cách lưu tài liệu HTML thành tệp ZIP bằng Aspose.HTML cho .NET với C#. ### [Lưu HTML thành ZIP trong C# – Ví dụ Toàn bộ trong Bộ nhớ](./save-html-to-zip-in-c-complete-in-memory-example/) diff --git a/html/vietnamese/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md b/html/vietnamese/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md new file mode 100644 index 000000000..719efe7a5 --- /dev/null +++ b/html/vietnamese/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/_index.md @@ -0,0 +1,212 @@ +--- +category: general +date: 2026-02-27 +description: Tạo PDF từ HTML nhanh chóng với ví dụ C# đầy đủ. Học cách chuyển đổi + HTML sang PDF, lưu HTML dưới dạng PDF và xuất HTML ra PDF với các cài đặt thực tiễn + tốt nhất. +draft: false +keywords: +- create pdf from html +- convert html to pdf +- save html as pdf +- html to pdf conversion +- export html to pdf +language: vi +og_description: Tạo PDF từ HTML trong C# với một ví dụ sẵn sàng chạy. Hướng dẫn này + sẽ đưa bạn qua quá trình chuyển đổi HTML sang PDF, lưu HTML dưới dạng PDF và xuất + HTML ra PDF. +og_title: Tạo PDF từ HTML – Hướng dẫn C# đầy đủ +tags: +- C# +- PDF +- HTML +title: Tạo PDF từ HTML – Hướng dẫn từng bước cho nhà phát triển +url: /vi/net/html-extensions-and-conversions/create-pdf-from-html-step-by-step-guide-for-developers/ +--- + +; maybe keep as is. Safer to keep unchanged to avoid mismatch. We'll translate surrounding text but keep the quoted alt text unchanged. + +Also need to keep code block placeholders unchanged. + +Proceed to translate. + +Let's produce final content.{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tạo PDF từ HTML – Hướng Dẫn C# Đầy Đủ + +Bạn đã bao giờ cần **tạo PDF từ HTML** nhưng không chắc nên gọi API nào? Bạn không đơn độc. Dù bạn đang xây dựng bảng điều khiển báo cáo, công cụ tạo hoá đơn, hay bộ xuất trang tĩnh, việc chuyển HTML thành PDF là một yêu cầu thường gặp trong các ứng dụng web‑centric hiện đại. + +Trong hướng dẫn này, chúng ta sẽ đi qua một **ví dụ C# đầy đủ, có thể chạy ngay** cho thấy cách **chuyển đổi HTML sang PDF**, cấu hình các tùy chọn render để có kết quả sắc nét, và cuối cùng **lưu HTML dưới dạng PDF** vào đĩa. Khi kết thúc, bạn sẽ có một mẫu sẵn sàng cho môi trường production để **xuất HTML sang PDF** mà bạn có thể đưa vào bất kỳ dự án .NET nào. + +## Những Điều Bạn Sẽ Học + +- Cách tải tệp HTML cục bộ bằng `HTMLDocument`. +- Những tùy chọn render nào cải thiện độ đậm phông chữ, độ mượt của ảnh và hinting cho văn bản. +- Lệnh gọi chính xác để **xuất HTML sang PDF** bằng một phương thức `Save` duy nhất. +- Mẹo xử lý tài liệu lớn, gỡ lỗi các vấn đề thường gặp, và xác minh kết quả. +- Một đoạn mã đầy đủ, copy‑and‑paste mà bạn có thể chạy ngay hôm nay. + +### Yêu Cầu Trước + +- .NET 6+ (hoặc .NET Framework 4.7+). API chúng ta dùng hoạt động trên cả hai. +- Tham chiếu tới thư viện giả định `HtmlToPdfLib` (thay bằng tên thư viện thực tế của bạn). +- Tệp `input.html` được đặt trong một thư mục bạn kiểm soát (chúng ta sẽ gọi nó là `YOUR_DIRECTORY`). + +Nếu bạn đã có những thành phần này, hãy bắt đầu—không cần cài đặt thêm nào. + +## Bước 1: Tải Tài Liệu HTML để **Tạo PDF từ HTML** + +Điều đầu tiên bạn cần là một thể hiện `HTMLDocument` trỏ tới tệp nguồn. Hãy nghĩ nó như việc mở một cuốn sổ trước khi bắt đầu viết—không có tài liệu, sẽ không có gì để render. + +```csharp +// Step 1: Load the HTML document you want to convert +// Replace YOUR_DIRECTORY with the actual path on your machine. +var htmlDoc = new HTMLDocument("YOUR_DIRECTORY/input.html"); + +// Quick sanity check – make sure the file exists. +if (!File.Exists("YOUR_DIRECTORY/input.html")) +{ + Console.WriteLine("⚠️ Input HTML not found. Double‑check the path."); + return; +} +``` + +> **Tại sao điều này quan trọng:** Việc tải tệp HTML sớm cho phép thư viện phân tích DOM, giải quyết CSS và tải trước các ảnh. Bỏ qua bước này hoặc đưa vào HTML sai cấu trúc thường dẫn tới các trang trắng trong **html to pdf conversion**. + +## Bước 2: Cấu Hình Các Tùy Chọn Render cho **HTML to PDF Conversion** + +Các tùy chọn render là “sốt bí mật” biến một PDF đơn giản thành tài liệu chuyên nghiệp. Ở đây chúng ta bật phông chữ đậm, antialias cho ảnh, và hinting cho văn bản—những tính năng mà hầu hết lập trình viên bỏ qua nhưng lại cải thiện đáng kể độ trung thực hình ảnh. + +```csharp +// Step 2: Configure PDF rendering options (bold fonts, antialiasing for images, hinting for text) +var pdfOptions = new PdfRenderingOptions +{ + // Make headings stand out by forcing a bold style. + FontStyle = WebFontStyle.Bold, + + // Smooth out raster graphics – especially useful for logos or screenshots. + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Improves the clarity of vector text on high‑DPI screens. + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +> **Mẹo chuyên nghiệp:** Nếu bạn đang dùng phông chữ riêng của thương hiệu, hãy đặt `FontFamily` trong `pdfOptions` nữa. Điều này ngăn việc fallback sang phông chữ chung trong **convert HTML to PDF**. + +## Bước 3: Lưu Tệp và **Xuất HTML sang PDF** + +Khi tài liệu đã được tải và các tùy chọn đã được tinh chỉnh, hành động cuối cùng chỉ là một dòng lệnh ghi PDF ra đĩa. Phương thức `Save` bên trong thực hiện **html to pdf conversion**, áp dụng tất cả các tinh chỉnh render mà chúng ta đã định nghĩa. + +```csharp +// Step 3: Save the document as a PDF using the configured options +string outputPath = "YOUR_DIRECTORY/output.pdf"; +htmlDoc.Save(outputPath, pdfOptions); + +// Verify that the file was created. +if (File.Exists(outputPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +> **Bạn sẽ thấy gì:** Mở `output.pdf` bằng bất kỳ trình xem nào sẽ hiển thị bố cục HTML gốc, với tiêu đề đậm, ảnh mượt và văn bản sắc nét. Nếu bạn thấy thiếu style, hãy kiểm tra lại các tệp CSS có thể truy cập được tương đối với `input.html`. + +![create pdf from html example](/images/create-pdf-from-html.png "Screenshot of the generated PDF – create pdf from html") + +*Ảnh chụp màn hình trên (alt text: “create pdf from html example”) cho thấy một PDF được render giữ nguyên phong cách HTML gốc.* + +## Những Rủi Ro Thường Gặp Khi Bạn **Chuyển Đổi HTML sang PDF** + +Ngay cả với quy trình đơn giản, các nhà phát triển vẫn thường gặp một số trục trặc. Dưới đây là ba vấn đề phổ biến nhất và cách tránh chúng. + +### 1. Thiếu Tài Nguyên (Ảnh, CSS, Font) + +Nếu HTML của bạn tham chiếu tới tài nguyên bên ngoài bằng đường dẫn tương đối, bộ chuyển đổi có thể không tìm thấy chúng. Luôn sử dụng đường dẫn tuyệt đối hoặc đặt một base URL: + +```csharp +htmlDoc.BaseUrl = "file:///YOUR_DIRECTORY/"; // Ensures relative links resolve correctly. +``` + +### 2. Tài Liệu Lớn Gây Timeout + +Khi xử lý các báo cáo đa trang, tăng thời gian chờ của thư viện: + +```csharp +pdfOptions.Timeout = TimeSpan.FromMinutes(5); +``` + +### 3. Thay Thế Font Dẫn Đến Hiện Thị Không Mong Muốn + +Xác định chính xác họ phông chữ bạn cần: + +```csharp +pdfOptions.FontFamily = "Open Sans"; +pdfOptions.FontStyle = WebFontStyle.Bold; // Reinforces boldness. +``` + +Giải quyết những vấn đề này từ sớm sẽ giúp bạn tránh những buổi gỡ lỗi gây khó chịu trong các thao tác **save HTML as PDF**. + +## Nâng Cao: Thêm Trang Bìa Trước Khi Bạn **Xuất HTML sang PDF** + +Đôi khi bạn cần một bìa tùy chỉnh—có thể là trang tiêu đề kèm logo. Bạn có thể chèn một đoạn HTML đơn giản trước tài liệu chính: + +```csharp +string coverHtml = @" + + + +

Monthly Report

Company Logo +"; + +var coverDoc = new HTMLDocument(coverHtml); +coverDoc.Append(htmlDoc); // Merge the original content after the cover. +coverDoc.Save(outputPath, pdfOptions); +``` + +> **Lý do thực hiện:** Thêm bìa trực tiếp trong HTML giữ cho pipeline tạo PDF đơn giản, tránh việc dùng các công cụ xử lý hậu kỳ như iText hay PdfSharp. + +## Xác Minh Kết Quả Bằng Chương Trình + +Nếu bạn cần khẳng định rằng PDF đã được tạo đúng (ví dụ trong pipeline CI), bạn có thể kiểm tra kích thước tệp hoặc số trang: + +```csharp +using (var pdfReader = new PdfReader(outputPath)) +{ + int pageCount = pdfReader.NumberOfPages; + Console.WriteLine($"PDF contains {pageCount} page(s)."); +} +``` + +Số trang khác 0 xác nhận bước **convert HTML to PDF** đã thành công. + +## Tóm Tắt & Các Bước Tiếp Theo + +Chúng ta vừa đi qua một **ví dụ hoàn chỉnh, đầu‑tới‑cuối** về cách **tạo PDF từ HTML** trong C#. Quy trình là: + +1. Tải HTML nguồn (`HTMLDocument`). +2. Tinh chỉnh render với `PdfRenderingOptions`. +3. Gọi `Save` để **xuất HTML sang PDF**. + +Từ đây bạn có thể khám phá: + +- **Xử lý hàng loạt**: Duyệt qua một thư mục các tệp HTML và tạo PDF hàng loạt. +- **HTML động**: Dùng Razor để tạo HTML ngay lập tức trước khi chuyển đổi. +- **Bảo mật**: Cách ly quá trình chuyển đổi nếu bạn nhận HTML do người dùng cung cấp (ngăn chặn injection script). + +Hãy thử nghiệm với các tùy chọn khác nhau—có thể chuyển sang tuân thủ `PdfA` cho mục đích lưu trữ, hoặc nhúng JavaScript cho PDF tương tác. Mẫu cơ bản vẫn giữ nguyên, và bây giờ bạn đã có nền tảng vững chắc cho bất kỳ yêu cầu **save HTML as PDF** nào. + +--- + +*Chúc lập trình vui! Nếu gặp bất kỳ vấn đề nào, hãy để lại bình luận bên dưới hoặc xem trang GitHub Issues của thư viện. Cộng đồng luôn sẵn sàng chia sẻ các tweak giúp **html to pdf conversion** trở nên mượt mà hơn.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/vietnamese/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md b/html/vietnamese/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md new file mode 100644 index 000000000..3d628944e --- /dev/null +++ b/html/vietnamese/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/_index.md @@ -0,0 +1,276 @@ +--- +category: general +date: 2026-02-27 +description: Lưu HTML thành PDF trong C# nhanh chóng bằng Aspose.HTML. Tìm hiểu cách + chuyển đổi HTML sang PDF, tạo PDF từ HTML với phông chữ và kiểu dáng tùy chỉnh chỉ + trong vài bước. +draft: false +keywords: +- save html as pdf +- convert html to pdf +- c# html to pdf +- generate pdf from html +- create pdf with fonts +language: vi +og_description: Lưu HTML dưới dạng PDF trong C# nhanh chóng bằng Aspose.HTML. Hướng + dẫn này cho thấy cách chuyển đổi HTML sang PDF, tạo PDF từ HTML và áp dụng phông + chữ tùy chỉnh. +og_title: Lưu HTML thành PDF trong C# – Hướng dẫn đầy đủ kèm phông chữ +tags: +- csharp +- pdf +- html +title: Lưu HTML thành PDF trong C# – Hướng dẫn đầy đủ kèm phông chữ +url: /vi/net/html-extensions-and-conversions/save-html-as-pdf-in-c-complete-guide-with-fonts/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Lưu HTML thành PDF trong C# – Hướng dẫn đầy đủ với phông chữ + +Bạn đã bao giờ cần **lưu HTML thành PDF** từ một ứng dụng C# nhưng không chắc nên dùng thư viện nào? Bạn không phải là người duy nhất. Nhiều nhà phát triển gặp khó khăn này khi muốn xuất hoá đơn, báo cáo, hoặc biên lai có thể in trực tiếp từ nội dung web. + +Tin tốt là gì? Với Aspose.HTML bạn có thể **chuyển đổi HTML sang PDF**, **tạo PDF từ HTML**, và thậm chí **tạo PDF có phông chữ** chỉ trong vài dòng code. Trong tutorial này chúng ta sẽ đi qua toàn bộ quy trình, giải thích tại sao mỗi thiết lập lại quan trọng, và cung cấp một ví dụ sẵn sàng chạy. + +## Những gì bạn sẽ học + +- Cách tải một tệp HTML cục bộ hoặc từ xa trong C# +- Các tùy chọn render cho phép hiển thị phông chữ đậm/nghiêng, antialiasing và text hinting +- Cách lưu kết quả thành tệp PDF trên đĩa +- Mẹo xử lý phông chữ tùy chỉnh và các lỗi thường gặp + +Bạn không cần kinh nghiệm trước với Aspose.HTML—chỉ cần một môi trường phát triển .NET (Visual Studio 2022 trở lên) và gói NuGet Aspose.HTML for .NET. + +## Điều kiện tiên quyết + +| Yêu cầu | Lý do quan trọng | +|-------------|----------------| +| .NET 6.0 hoặc mới hơn | Cung cấp runtime cho Aspose.HTML | +| Aspose.HTML for .NET (NuGet) | Thư viện thực hiện các công việc nặng | +| Một tệp HTML mẫu (`sample.html`) | Nội dung nguồn sẽ được chuyển đổi | +| Kiến thức cơ bản về C# | Để hiểu các đoạn mã mẫu | + +Nếu bạn đã có những thứ trên, hãy bắt đầu. + +## Bước 1: Cài đặt Aspose.HTML qua NuGet + +Mở dự án của bạn trong Visual Studio, nhấp chuột phải vào nút **Dependencies**, và chọn **Manage NuGet Packages**. Tìm `Aspose.HTML` và nhấn **Install**. + +```powershell +dotnet add package Aspose.HTML +``` + +> **Mẹo chuyên nghiệp:** Sử dụng phiên bản ổn định mới nhất (tính đến 27‑02‑2026 là 23.11) để nhận các cải tiến render mới nhất. + +## Bước 2: Tải tài liệu HTML nguồn + +Điều đầu tiên chúng ta cần là một đối tượng `HTMLDocument` trỏ tới tệp của chúng ta. Lớp này sẽ phân tích markup, giải quyết CSS, và chuẩn bị mọi thứ cho quá trình render. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +// Replace with the actual path to your HTML file +string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + +// Create the HTMLDocument instance +HTMLDocument htmlDoc = new HTMLDocument(htmlPath); +``` + +> **Tại sao lại cần bước này?** +> Việc tải HTML vào một `HTMLDocument` tách riêng giai đoạn phân tích khỏi giai đoạn render, cho phép bạn kiểm tra DOM hoặc thực hiện các thay đổi tại thời gian chạy trước khi thực sự tạo PDF. + +## Bước 3: Cấu hình tùy chọn render PDF + +Aspose.HTML cung cấp khả năng kiểm soát chi tiết cách PDF cuối cùng sẽ trông như thế nào. Trong ví dụ này chúng ta sẽ bật kiểu phông chữ đậm + nghiêng, antialiasing cho đồ họa mượt mà, và text hinting cho văn bản sắc nét ở độ phân giải thấp. + +```csharp +// Set up PDF rendering options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + // Apply bold and italic font styles globally + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + + // Enable antialiasing for images and vector graphics + ImageOptions = new ImageRenderingOptions + { + UseAntialiasing = true + }, + + // Turn on text hinting – improves readability on screens and printers + TextOptions = new TextOptions + { + UseHinting = true + } +}; +``` + +### Tại sao lại chọn các thiết lập này? + +- **`FontStyle`** – Kết hợp bất kỳ thẻ `` hoặc `` nào với phông chữ cơ bản, đảm bảo PDF giữ nguyên kiểu dáng gốc. +- **`UseAntialiasing`** – Giảm các cạnh răng cưa trên biểu đồ, biểu tượng, hoặc bất kỳ nội dung raster nào. +- **`UseHinting`** – Canh chỉnh đường viền glyph vào lưới pixel, rất hữu ích khi PDF sẽ được xem trên thiết bị độ phân giải thấp. + +Nếu bạn cần phông chữ tùy chỉnh (ví dụ: phông chữ thương hiệu công ty), hãy đặt các tệp `.ttf` vào một thư mục và thiết lập `pdfRenderOptions.FontProvider` cho phù hợp. Đó là một chủ đề riêng, nhưng ý tưởng cơ bản là: + +```csharp +pdfRenderOptions.FontProvider = new FontProvider(); +pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); +``` + +## Bước 4: Render tài liệu HTML thành PDF + +Bây giờ chúng ta kết hợp tài liệu và các tùy chọn, rồi yêu cầu Aspose.HTML ghi tệp đầu ra. + +```csharp +// Define the output PDF path +string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + +// Save the HTML as PDF using the configured options +htmlDoc.Save(outputPdfPath, pdfRenderOptions); +``` + +Sau khi dòng lệnh này chạy, bạn sẽ thấy `output.pdf` nằm cạnh file thực thi của mình. Mở nó lên—bạn sẽ thấy HTML gốc được render với kiểu đậm/nghiêng, đồ họa mượt mà và văn bản sắc nét. + +> **Kết quả mong đợi:** +> Một PDF phản ánh đúng bố cục của `sample.html`, với mọi tiêu đề in đậm, văn bản nhấn mạnh in nghiêng, và bất kỳ hình ảnh nhúng nào được render mà không bị răng cưa. + +## Bước 5: Kiểm tra và tinh chỉnh (Tùy chọn) + +### Script kiểm tra nhanh + +```csharp +if (File.Exists(outputPdfPath)) +{ + Console.WriteLine($"✅ PDF successfully created at: {outputPdfPath}"); +} +else +{ + Console.WriteLine("❌ Something went wrong – PDF not found."); +} +``` + +Nếu PDF trông không ổn, hãy cân nhắc các điều chỉnh phổ biến sau: + +| Vấn đề | Nguyên nhân khả dĩ | Cách khắc phục | +|-------|-------------------|----------------| +| Phông chữ bị thiếu | Phông không được nhúng hoặc không tìm thấy | Dùng `FontProvider.AddFont` và đảm bảo tệp phông có thể truy cập | +| Hình ảnh bị mờ | Antialiasing bị tắt | Đặt `UseAntialiasing = true` | +| Văn bản quá mỏng trên màn hình | Hinting bị tắt | Bật `UseHinting = true` | +| Bố cục dịch chuyển khi chuyển trang | Các quy tắc CSS `page-break` bị bỏ qua | Thêm `page-break-before/after` rõ ràng trong HTML/CSS | + +## Ví dụ hoàn chỉnh + +Dưới đây là chương trình đầy đủ mà bạn có thể sao chép‑dán vào một dự án console mới. Nó bao gồm tất cả các chỉ thị `using`, xử lý lỗi, và chú thích để dễ hiểu. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Drawing; +using Aspose.Html.Rendering.Image; + +class Program +{ + static void Main() + { + // 1️⃣ Load the HTML file + string htmlPath = Path.Combine(Environment.CurrentDirectory, "sample.html"); + if (!File.Exists(htmlPath)) + { + Console.WriteLine($"❗ HTML file not found at {htmlPath}"); + return; + } + + HTMLDocument htmlDoc = new HTMLDocument(htmlPath); + + // 2️⃣ Configure rendering options (fonts, antialiasing, hinting) + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + TextOptions = new TextOptions { UseHinting = true } + }; + + // OPTIONAL: Add custom font (uncomment and adjust path if needed) + // pdfRenderOptions.FontProvider = new FontProvider(); + // pdfRenderOptions.FontProvider.AddFont("fonts/MyBrandFont.ttf"); + + // 3️⃣ Render to PDF + string outputPdfPath = Path.Combine(Environment.CurrentDirectory, "output.pdf"); + htmlDoc.Save(outputPdfPath, pdfRenderOptions); + + // 4️⃣ Verify output + Console.WriteLine(File.Exists(outputPdfPath) + ? $"✅ PDF saved at {outputPdfPath}" + : "❌ PDF creation failed."); + } +} +``` + +Chạy dự án (`dotnet run`), và bạn sẽ thấy thông báo thành công kèm theo một tệp `output.pdf` mới được tạo. + +## Các câu hỏi thường gặp & Trường hợp đặc biệt + +### Tôi có thể **chuyển đổi HTML sang PDF** từ một URL thay vì tệp cục bộ không? + +Chắc chắn rồi. Chỉ cần thay đổi đường dẫn tệp bằng một chuỗi URL: + +```csharp +HTMLDocument htmlDoc = new HTMLDocument("https://example.com/report.html"); +``` + +Aspose.HTML sẽ tải trang, giải quyết các tài nguyên bên ngoài, và render nó. + +### Còn **các tệp HTML lớn** hoặc **nhiều trang** thì sao? + +Aspose.HTML stream nội dung, vì vậy mức sử dụng bộ nhớ vẫn ở mức hợp lý. Nếu bạn muốn mỗi phần HTML nằm trên một trang PDF riêng, hãy chèn các ngắt trang thủ công trong HTML: + +```html +
+``` + +### Điều này có hoạt động với **.NET Core** và **.NET 7** không? + +Có. Thư viện đa nền tảng; chỉ cần bạn nhắm tới một framework tương thích (net6.0, net7.0, …) và cài đặt gói NuGet tương ứng. + +### Làm sao để **nhúng phông chữ** để PDF có thể di động hoàn toàn? + +Đặt `pdfRenderOptions.FontProvider` như đã chỉ ra ở trên, đồng thời bật tính năng nhúng phông: + +```csharp +pdfRenderOptions.FontEmbeddingMode = FontEmbeddingMode.EmbedAll; +``` + +Điều này đảm bảo PDF sẽ trông giống nhau trên bất kỳ máy nào, ngay cả khi phông chữ không được cài đặt sẵn. + +## Ví dụ trực quan + +![save html as pdf example](example.png){alt="ví dụ lưu html thành pdf"} + +*Ảnh chụp màn hình hiển thị PDF đã được mở trong Adobe Acrobat, giữ nguyên kiểu đậm/nghiêng và hình ảnh mượt mà.* + +## Kết luận + +Chúng ta đã bao quát mọi thứ cần thiết để **lưu HTML thành PDF** bằng C#. Từ việc tải markup, cấu hình tùy chọn render, đến ghi PDF cuối cùng, quy trình rất đơn giản và có thể tùy biến cao. + +Bằng cách làm theo hướng dẫn này, bạn cũng có thể **chuyển đổi HTML sang PDF**, **tạo PDF từ HTML**, và **tạo PDF có phông chữ** cho bất kỳ kịch bản báo cáo hay tạo tài liệu nào. Hãy thử nghiệm thêm các tùy chọn khác—đánh dấu nước, mã hoá, hoặc kích thước trang tùy chỉnh—vì Aspose.HTML cung cấp sự linh hoạt đó. + +**Các bước tiếp theo** bạn có thể khám phá: + +- Sử dụng lớp `PdfSaveOptions` để đặt phiên bản PDF hoặc mức độ nén. +- Kết hợp nhiều đối tượng `HTMLDocument` thành một PDF duy nhất cho các báo cáo đa phần. +- Tích hợp quy trình này vào một API ASP.NET Core để dịch vụ web của bạn có thể trả về PDF theo yêu cầu. + +Có câu hỏi về các trường hợp đặc biệt hoặc cần trợ giúp tinh chỉnh pipeline render? Hãy để lại bình luận bên dưới, và chúc bạn lập trình vui vẻ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/vietnamese/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md b/html/vietnamese/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md new file mode 100644 index 000000000..3d46f49cc --- /dev/null +++ b/html/vietnamese/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/_index.md @@ -0,0 +1,250 @@ +--- +category: general +date: 2026-02-27 +description: Lưu HTML dưới dạng ZIP bằng C# ZipArchive – ví dụ chi tiết từng bước + với trình xử lý tài nguyên tùy chỉnh, kèm các mẹo về cách xuất HTML ra ZIP và tạo + mã C# để tạo tệp zip. +draft: false +keywords: +- save html as zip +- c# ziparchive example +- create zip archive c# +- how to export html to zip +- using ziparchive in c# +language: vi +og_description: Lưu HTML dưới dạng ZIP bằng C# ZipArchive. Tìm hiểu cách xuất HTML + sang ZIP với ví dụ đầy đủ, trình xử lý tài nguyên tùy chỉnh và các thực tiễn tốt + nhất. +og_title: Lưu HTML dưới dạng ZIP trong C# – Hướng dẫn toàn diện +tags: +- C# +- ZipArchive +- HTML export +title: Lưu HTML dưới dạng ZIP trong C# – Hướng dẫn đầy đủ +url: /vi/net/html-extensions-and-conversions/save-html-as-zip-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Lưu HTML dưới dạng ZIP trong C# – Hướng dẫn đầy đủ + +Bạn đã bao giờ cần **save HTML as ZIP** nhưng không chắc nên dùng lớp .NET nào? Bạn không phải là người duy nhất—nhiều nhà phát triển gặp khó khăn này khi muốn đóng gói một trang web cùng các tài nguyên của nó để sử dụng offline hoặc để phân phối. Tin tốt là gì? Với `System.IO.Compression.ZipArchive` có sẵn, bạn có thể thực hiện trong vài dòng code, và còn có cách sạch sẽ để kiểm soát cách mỗi tài nguyên được ghi. + +Trong tutorial này, chúng ta sẽ đi qua một **complete, runnable example** cho thấy cách xuất một tài liệu HTML thành tệp ZIP, sử dụng một `ResourceHandler` tùy chỉnh để truyền từng tài nguyên vào archive. Trong quá trình thực hiện, chúng ta sẽ chèn một vài đoạn **c# ziparchive example**, thảo luận **how to export html to zip** trong các tình huống thực tế, và chỉ ra những khác biệt tinh tế khi bạn muốn **create zip archive c#** các chương trình cần độ bền cao. + +> **Prerequisites** – Bạn sẽ cần .NET 6+ (hoặc .NET Core 3.1) và một tham chiếu tới thư viện cung cấp `HTMLDocument`, `HTMLSaveOptions`, và `ResourceHandler`. Nếu bạn đang dùng Aspose.HTML hoặc một package tương tự, chỉ cần thêm qua NuGet. Không cần công cụ bên thứ ba nào khác. + +--- + +## Những nội dung tutorial này sẽ đề cập + +- Thiết lập một **ZipArchive** sẽ nhận file HTML và các tài nguyên liên kết của nó. +- Cài đặt một **custom resource handler** (`ZipHandler`) để chỉ định mỗi luồng tài nguyên vào archive. +- Sử dụng **HTMLSaveOptions** để kết nối mọi thứ lại và thực sự **save HTML as ZIP**. +- Những lỗi thường gặp khi làm việc với đường dẫn, mục trùng lặp, và tài nguyên lớn. +- Mẹo mở rộng giải pháp—như thêm file manifest hoặc mã hoá ZIP. + +Khi hoàn thành, bạn sẽ có một phương pháp tự chứa có thể chèn vào bất kỳ dự án C# nào để **save html as zip** một cách tự tin. + +--- + +## Bước 1: Thêm các namespace cần thiết + +Trước khi bất kỳ đoạn code nào chạy, hãy chắc chắn trình biên dịch biết tới các lớp nén và thư viện HTML bạn đang sử dụng. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +// Assuming you have a library like Aspose.HTML +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; +``` + +*Why this matters:* `System.IO.Compression` cung cấp `ZipArchive`, trong khi các namespace `Aspose.Html` mở ra `HTMLDocument`, `HTMLSaveOptions`, và lớp cơ sở `ResourceHandler` mà chúng ta sẽ kế thừa. Nếu bạn dùng một engine HTML khác, hãy tìm các kiểu tương đương. + +--- + +## Bước 2: Tạo Custom Resource Handler (Primary Keyword in Action) + +Trái tim của **saving HTML as ZIP** là chỉ cho engine biết mỗi tài nguyên bên ngoài (hình ảnh, CSS, script) sẽ được lưu ở đâu. Bằng cách kế thừa từ `ResourceHandler` chúng ta có quyền kiểm soát luồng nhận dữ liệu. + +```csharp +/// +/// Writes each HTML resource directly into the provided ZipArchive. +/// +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + // Ensure the entry name is a valid relative path inside the zip. + // For example, "images/logo.png" or "css/style.css". + var entry = _zipArchive.CreateEntry(info.Uri); + // Open the entry for writing and hand the stream back to the HTML engine. + return entry.Open(); + } +} +``` + +**Key points** + +- `info.Uri` là URL tương đối mà engine HTML đang cố ghi. Sử dụng nó làm tên entry sẽ giữ cấu trúc thư mục nguyên vẹn bên trong ZIP. +- `CreateEntry` sẽ tự động tạo các thư mục cần thiết; bạn không phải tự quản lý chúng. +- Trả về stream đã mở cho phép engine truyền dữ liệu trực tiếp—không cần file tạm, không sao chép bộ nhớ phụ trợ. + +--- + +## Bước 3: Khởi tạo ZipArchive + +Bây giờ chúng ta khởi tạo một `ZipArchive` ở chế độ **Update**. Chế độ này cho phép chúng ta thêm entry khi tiến hành, và cũng có thể thay thế các entry đã tồn tại nếu bạn chạy code nhiều lần. + +```csharp +// Define where the final zip file will live. +string outputPath = Path.Combine("YOUR_DIRECTORY", "output.zip"); + +// Open (or create) the zip file. +using var zipArchive = new ZipArchive( + File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); +``` + +*Pro tip:* Dùng `FileMode.Create` để ghi đè bất kỳ tệp trước đó, hoặc chuyển sang `FileMode.OpenOrCreate` nếu bạn muốn nối thêm vào một archive đã tồn tại. Ngoài ra, bao `ZipArchive` trong một câu lệnh `using`—điều này đảm bảo archive được giải phóng đúng cách và handle tệp được đóng. + +--- + +## Bước 4: Tải tài liệu HTML bạn muốn xuất + +Ở đây bạn chỉ định thư viện tới file HTML nguồn. Tài liệu có thể tham chiếu tới CSS, hình ảnh, hoặc file JavaScript nằm cùng thư mục. + +```csharp +string htmlPath = Path.Combine("YOUR_DIRECTORY", "page.html"); + +// Load the HTML file into memory. +var htmlDoc = new HTMLDocument(htmlPath); +``` + +Nếu HTML của bạn chứa các URL tương đối, hãy chắc rằng thư mục làm việc của tiến trình trùng với thư mục chứa các tài sản đó. Nếu không, engine sẽ không tìm thấy chúng và ZIP sẽ thiếu các file tương ứng. + +--- + +## Bước 5: Cấu hình Save Options – Khoảnh khắc “Save HTML as ZIP” thực sự + +Bây giờ chúng ta gắn `ZipHandler` vào `HTMLSaveOptions`. Đặt `SaveFormat` thành `ZIP` báo cho thư viện đóng gói mọi thứ, trong khi handler của chúng ta quyết định mỗi phần sẽ được lưu ở đâu. + +```csharp +var zipSaveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Plug in our custom handler. + ResourceHandler = new ZipHandler(zipArchive), + + // Optional: you can control the name of the main HTML file inside the zip. + // By default it’s "index.html". + // MainFileName = "myPage.html" +}; +``` + +*Why this matters:* Nếu không thiết lập `ResourceHandler`, thư viện sẽ quay lại ghi tài nguyên ra hệ thống file, điều này làm mất mục đích của **how to export html to zip** trong một archive duy nhất. + +--- + +## Bước 6: Thực hiện thao tác Save + +Cuối cùng, yêu cầu tài liệu lưu chính nó bằng các tùy chọn vừa tạo. Thư viện sẽ gọi `ZipHandler.HandleResource` cho mỗi tài nguyên bên ngoài mà nó gặp. + +```csharp +// This call writes the main HTML file and all linked resources into the zip. +htmlDoc.Save(outputPath, zipSaveOptions); +``` + +Khi khối `using` cho `zipArchive` kết thúc, archive được hoàn thiện và tệp sẵn sàng để phân phối. + +--- + +## Ví dụ hoàn chỉnh (Tất cả các bước kết hợp) + +Dưới đây là chương trình đầy đủ bạn có thể sao chép‑dán vào một console app. Nó minh họa một **c# ziparchive example** mà **creates zip archive c#** kiểu, và trả lời đầy đủ **how to export html to zip**. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; +using Aspose.Html.Saving.Resources; + +class ZipHandler : ResourceHandler +{ + private readonly ZipArchive _zipArchive; + public ZipHandler(ZipArchive zipArchive) => _zipArchive = zipArchive; + + public override Stream HandleResource(ResourceInfo info) + { + var entry = _zipArchive.CreateEntry(info.Uri); + return entry.Open(); + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Define output zip location. + string outputZip = Path.Combine("YOUR_DIRECTORY", "output.zip"); + + // 2️⃣ Open the zip archive (Update mode lets us add entries). + using var zip = new ZipArchive( + File.Open(outputZip, FileMode.Create, FileAccess.ReadWrite), + ZipArchiveMode.Update); + + // 3️⃣ Load the HTML document you want to bundle. + string htmlFile = Path.Combine("YOUR_DIRECTORY", "page.html"); + var htmlDoc = new HTMLDocument(htmlFile); + + // 4️⃣ Set up save options with our custom resource handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new ZipHandler(zip) + }; + + // 5️⃣ Save – this writes index.html + all assets into the zip. + htmlDoc.Save(outputZip, saveOptions); + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputZip}"); + } +} +``` + +**Expected result:** Sau khi chạy chương trình, `output.zip` sẽ chứa `index.html` (hoặc tên bạn đã cấu hình) cùng mọi hình ảnh, stylesheet và script được tham chiếu bởi trang gốc, giữ nguyên cấu trúc thư mục. Mở ZIP, giải nén, và nhấp đúp `index.html`—trang sẽ hiển thị chính xác như khi trực tuyến, nhưng bây giờ là một gói di động. + +--- + +## Các trường hợp đặc biệt thường gặp & Cách xử lý + +| Situation | Why it Happens | Suggested Fix | +|-----------|----------------|---------------| +| **Duplicate resource names** (ví dụ: hai hình ảnh có cùng tên file trong các thư mục khác nhau) | `CreateEntry` sẽ ném `InvalidOperationException` nếu tên entry trùng hoàn toàn. | Thêm tiền tố đường dẫn tương đối (`info.Uri` đã làm việc này) hoặc tự động làm sạch tên trước khi tạo entry. | +| **Large binary assets** (video, hình ảnh độ phân giải cao) | Streaming trực tiếp vào zip là ổn, nhưng kích thước buffer mặc định có thể gây tiêu tốn bộ nhớ lớn. | Ghi đè `HandleResource` để bọc stream trả về trong một `BufferedStream` với buffer vừa phải (ví dụ: 64 KB). | +| **Missing resources** | Nếu HTML chứa liên kết hỏng, handler sẽ nhận yêu cầu cho một file không tồn tại, dẫn tới entry rỗng. | Kiểm tra `File.Exists` trước khi tạo entry, hoặc ghi log cảnh báo để biết có tài nguyên nào bị thiếu. | +| **Unicode filenames** | Một số công cụ ZIP cũ không xử lý đúng tên entry UTF‑8. | Đảm bảo bạn đang dùng .NET 6+ (viết UTF‑8 mặc định). Nếu cần tương thích legacy, đặt `zipArchive.EntryNameEncoding = Encoding.GetEncoding(437);`. | +| **Need a manifest** (danh sách các file trong zip) | Người tiêu dùng đôi khi muốn một `manifest.json` để xác thực. | Sau khi lưu chính, tạo một entry mới `"manifest.json"` và ghi danh sách JSON của `zipArchive.Entries`. | + +--- + +## Pro Tips cho triển khai **Save HTML as ZIP** sẵn sàng sản xuất + +1. **Validate the output** – Sau khi lưu, mở ZIP bằng code và xác nhận rằng `index.html` tồn tại và mỗi entry có `Length` > 0. Điều này giúp phát hiện lỗi im lặng sớm. +2. **Parallelize large assets** – Nếu bạn có hàng chục megabyte hình ảnh, cân nhắc đưa các lời gọi `HandleResource` vào một pool `Task` và ghi vào archive đồng thời (vẫn phải tôn trọng tính chất single‑writer của `ZipArchive`). +3. **Compress wisely** – `ZipArchive` mặc định dùng Deflate. Đối với các file đã nén sẵn (JPEG, PNG), bạn có thể đặt `entry.CompressionLevel = CompressionLevel.NoCompression` để tăng tốc quá trình. +4. **Security** – Nếu ZIP + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/vietnamese/net/working-with-html-documents/_index.md b/html/vietnamese/net/working-with-html-documents/_index.md index ce506e288..3837a633b 100644 --- a/html/vietnamese/net/working-with-html-documents/_index.md +++ b/html/vietnamese/net/working-with-html-documents/_index.md @@ -41,6 +41,11 @@ 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à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ể. + +### [Lưu HTML dưới dạng ZIP trong C# – Hướng dẫn đầy đủ với Trình xử lý tài nguyên tùy chỉnh](./save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/) + +Hướng dẫn chi tiết cách lưu tài liệu HTML dưới dạng file ZIP bằng C# và trình xử lý tài nguyên tùy chỉnh. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/vietnamese/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md b/html/vietnamese/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md new file mode 100644 index 000000000..6b23f183e --- /dev/null +++ b/html/vietnamese/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-02-27 +description: Lưu HTML dưới dạng ZIP trong C# bằng cách sử dụng trình xử lý tài nguyên + tùy chỉnh và tạo tệp ZIP trong C#. Hãy làm theo hướng dẫn từng bước này để gói HTML + và các tài nguyên của nó. +draft: false +keywords: +- save html as zip +- custom resource handler +- create zip archive in c# +language: vi +og_description: Lưu HTML dưới dạng ZIP trong C# với bộ xử lý tài nguyên tùy chỉnh. + Tìm hiểu cách tạo tệp ZIP trong C# và nhúng tài nguyên một cách dễ dàng. +og_title: Lưu HTML dưới dạng ZIP trong C# – Hướng dẫn đầy đủ +tags: +- Aspose.HTML +- C# +- ZIP +title: Lưu HTML dưới dạng ZIP trong C# – Hướng dẫn đầy đủ với Trình xử lý tài nguyên + tùy chỉnh +url: /vi/net/working-with-html-documents/save-html-as-zip-in-c-complete-guide-with-custom-resource-ha/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Lưu HTML dưới dạng ZIP trong C# – Hướng Dẫn Toàn Diện với Trình Xử Lý Tài Nguyên Tùy Chỉnh + +Bạn đã bao giờ tự hỏi làm thế nào để **lưu HTML dưới dạng ZIP** trong C# mà không phải đau đầu không? Bạn không phải là người duy nhất—nhiều nhà phát triển gặp khó khăn khi cần đóng gói một trang HTML cùng với hình ảnh, CSS hoặc tệp JavaScript. Tin tốt là gì? Với Aspose.HTML bạn có thể thực hiện trong vài bước ngắn gọn, và một **trình xử lý tài nguyên tùy chỉnh** giúp quá trình trở nên dễ dàng. + +Trong hướng dẫn này, chúng ta sẽ đi qua mọi thứ bạn cần biết: từ cài đặt thư viện, viết một trình xử lý truyền luồng tài nguyên trực tiếp vào **tạo tệp ZIP trong C#**, đến việc kiểm tra gói cuối cùng. Khi kết thúc, bạn sẽ có một giải pháp sẵn sàng sử dụng mà có thể đưa vào bất kỳ dự án .NET nào. + +![Lưu HTML dưới dạng ZIP example](/images/save-html-as-zip.png "Sơ đồ hiển thị HTML được lưu dưới dạng tệp ZIP") + +## Lưu HTML dưới dạng ZIP – Những gì hướng dẫn này đề cập + +Chúng tôi sẽ bao quát toàn bộ quy trình: + +1. **Prerequisites** – các công cụ và gói tối thiểu bạn cần. +2. **Custom resource handler** – lý do bạn cần một trình xử lý và cách triển khai nó. +3. **Creating a ZIP archive in C#** – sử dụng `System.IO.Compression`. +4. **Cấu hình tùy chọn lưu Aspose.HTML** để trỏ tới trình xử lý. +5. **Chạy mã** và kiểm tra kết quả. + +Nếu bạn đã quen với cú pháp C# cơ bản và đã cài Visual Studio (hoặc VS Code), bạn đã sẵn sàng bắt đầu. Không cần tài liệu bên ngoài—mọi thứ đều có ở đây. + +--- + +## Bước 1: Thiết lập dự án và cài đặt Aspose.HTML + +Trước khi viết bất kỳ mã nào, hãy chắc chắn dự án của bạn có thể tham chiếu tới thư viện Aspose.HTML. + +```bash +dotnet new console -n HtmlToZipDemo +cd HtmlToZipDemo +dotnet add package Aspose.HTML +``` + +*Mẹo chuyên nghiệp:* Gói NuGet mới nhất (tính đến tháng 2 2026) nhắm tới .NET 6+, vì vậy bạn có thể sử dụng dự án kiểu SDK hiện đại mà không lo về các framework cũ. + +Sau khi gói được khôi phục, mở `Program.cs`. Chúng ta sẽ thay thế nội dung mặc định bằng ví dụ đầy đủ sau, nhưng hiện tại chỉ cần giữ file mở. + +## Triển khai Trình Xử Lý Tài Nguyên Tùy Chỉnh + +### Tại sao cần Trình Xử Lý Tài Nguyên Tùy Chỉnh? + +Khi Aspose.HTML lưu một tài liệu HTML dưới dạng gói ZIP, nó cần tải mọi tài nguyên bên ngoài (hình ảnh, phông chữ, script) và ghi chúng vào một vị trí nào đó. Hành vi mặc định ghi chúng vào thư mục tạm trên đĩa. Bằng cách cung cấp một **trình xử lý tài nguyên tùy chỉnh**, bạn chỉ định cho thư viện chính xác nơi mỗi tài nguyên sẽ được lưu—trong trường hợp của chúng ta, trực tiếp vào tệp ZIP. Điều này tránh việc I/O dư thừa, giữ mọi thứ gọn gàng và cho bạn kiểm soát hoàn toàn việc đặt tên. + +### Mã: Lớp Trình Xử Lý + +Tạo một tệp lớp mới có tên `MyHandler.cs` (hoặc đặt nó trong `Program.cs` nếu bạn muốn demo một tệp duy nhất). + +```csharp +using Aspose.Html; +using Aspose.Html.Saving; +using System.IO; +using System.IO.Compression; + +/// +/// Streams each external resource straight into the supplied ZipArchive. +/// +class MyHandler : ResourceHandler +{ + // The ZipArchive is supplied via a static field for simplicity. + // In production code you might inject it through the constructor. + public static ZipArchive ZipArchive; + + /// + /// Called by Aspose.HTML for every external resource. + /// + /// Metadata about the resource (URI, MIME type, etc.). + /// A writable stream that Aspose.HTML will fill with the resource data. + public override Stream HandleResource(ResourceInfo info) + { + // Use the resource URI as the entry name – this mimics the folder structure + // you would get if you saved the page manually. + var entry = ZipArchive.CreateEntry(info.Uri); + // Return the entry's stream so Aspose.HTML can write directly. + return entry.Open(); + } +} +``` + +**Giải thích:** +* `ResourceHandler` là một lớp trừu tượng từ Aspose.HTML cho phép bạn chặn việc lấy tài nguyên. +* Bằng cách trả về `Stream` thu được từ `ZipArchiveEntry.Open()`, chúng ta cung cấp cho thư viện một ống ghi trực tiếp vào tệp ZIP. Không có tệp tạm, không cần dọn dẹp thêm. + +## Tạo Gói ZIP trong C# + +Bây giờ trình xử lý đã sẵn sàng, chúng ta cần một nơi để nó ghi. Lớp `ZipArchive` của .NET thực hiện công việc nặng. + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Saving; + +class Program +{ + static void Main() + { + // 1️⃣ Prepare a simple HTML document that references an external image. + var html = "

Hello, ZIP!

Logo"; + var document = new HTMLDocument(html); + + // 2️⃣ Open a FileStream that will become our .zip file. + string outputPath = Path.Combine(Environment.CurrentDirectory, "output.zip"); + using (var zipStream = new FileStream(outputPath, FileMode.Create)) + using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Update)) + { + // 3️⃣ Make the archive visible to the custom handler. + MyHandler.ZipArchive = zipArchive; + + // 4️⃣ Configure save options to use ZIP format and plug in the handler. + var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) + { + ResourceHandler = new MyHandler() + }; + + // 5️⃣ Save the document. The handler writes the image into the ZIP automatically. + document.Save(outputPath, saveOptions); + } + + Console.WriteLine($"✅ HTML saved as ZIP at: {outputPath}"); + } +} +``` + +### Những gì đoạn mã này thực hiện + +1. **Tạo một tài liệu HTML trong bộ nhớ** với tham chiếu tới `logo.png`. +2. **Mở một `FileStream`** sẽ trở thành `output.zip`. +3. **Gán `ZipArchive`** vào trường tĩnh trong `MyHandler`. +4. **Đặt `HTMLSaveOptions`** thành `SaveFormat.ZIP` và gắn trình xử lý của chúng ta. +5. **Gọi `document.Save`** – Aspose.HTML phân tích HTML, tải `logo.png`, và truyền luồng vào gói qua `MyHandler`. + +Vì trình xử lý sử dụng URI của tài nguyên (`logo.png`) làm tên mục, nên tệp ZIP kết quả chứa một tệp có tên chính xác như vậy, giữ nguyên đường dẫn tương đối gốc. + +## Cấu hình tùy chọn lưu cho gói ZIP + +Đối tượng `HTMLSaveOptions` là nơi bạn chỉ định cho Aspose.HTML **cách** đóng gói kết quả. Ngoài `ResourceHandler`, bạn có thể điều chỉnh một vài thuộc tính hữu ích: + +```csharp +var saveOptions = new HTMLSaveOptions(SaveFormat.ZIP) +{ + // Use a custom folder inside the ZIP if you like: + // ResourceFolder = "assets", + ResourceHandler = new MyHandler(), + // Optional: compress resources (true by default) + EnableCompression = true +}; +``` + +*Tại sao cần quan tâm đến `EnableCompression`?* +Nếu bạn làm việc với các hình ảnh lớn, bật nén có thể giảm kích thước gói cuối cùng tới 70 %. Tuy nhiên, đối với các PNG đã được nén, lợi ích là hạn chế, vì vậy bạn có thể tắt nó để tăng tốc quá trình lưu. + +## Chạy mã và xác minh kết quả + +Compile and run the program: + +```bash +dotnet run +``` + +Bạn sẽ thấy thông báo thành công được in ra console. Điều hướng tới thư mục được in và mở `output.zip`. Bên trong bạn sẽ thấy: + +- `index.html` – tệp HTML đã lưu. +- `logo.png` – hình ảnh được tham chiếu trong markup. + +Mở `index.html` trực tiếp từ ZIP (hầu hết các trình khám phá tệp hệ điều hành cho phép bạn xem trước) và bạn sẽ thấy tiêu đề và hình ảnh được hiển thị chính xác như trong chuỗi gốc. + +**Các trường hợp đặc biệt cần lưu ý** + +| Tình huống | Cách xử lý | +|-----------|------------| +| HTML tham chiếu một **URL từ xa** (ví dụ, `https://example.com/style.css`) | Trình xử lý vẫn sẽ nhận được `ResourceInfo.Uri`. Đảm bảo môi trường của bạn có thể truy cập URL, hoặc tải tài nguyên trước và điều chỉnh HTML thành đường dẫn cục bộ. | +| Bạn cần **cấu trúc thư mục** bên trong ZIP (ví dụ, `images/logo.png`) | Sửa `HandleResource` để thêm tiền tố thư mục: `var entry = ZipArchive.CreateEntry($"assets/{info.Uri}");` | +| Tài nguyên **không tải được** (404) | Trình xử lý sẽ được gọi, nhưng luồng sẽ nhận được 0 byte. Bao quanh lời gọi lưu trong `try/catch` và kiểm tra `info.Status` nếu bạn cần xử lý lỗi tùy chỉnh. | + +## Tóm tắt: Lưu HTML dưới dạng ZIP trong một quy trình gọn gàng + +- **Mục tiêu chính:** Đóng gói một trang HTML và tất cả các tài nguyên bên ngoài của nó vào một tệp ZIP duy nhất bằng C#. +- **Công cụ chính:** Aspose.HTML (`HTMLDocument`, `HTMLSaveOptions`), `System.IO.Compression.ZipArchive`, và một **trình xử lý tài nguyên tùy chỉnh**. +- **Kết quả:** Một tệp `output.zip` di động có thể được phân phối, lưu trữ hoặc gửi qua mạng, và sau này giải nén mà không mất liên kết tài nguyên. + +## Tiếp theo là gì? Mở rộng quy trình làm việc + +Bây giờ bạn đã thành thạo **lưu HTML dưới dạng ZIP**, bạn có thể muốn khám phá các kịch bản liên quan: + +- **Lưu HTML dưới dạng PDF** – thay `SaveFormat.ZIP` bằng `SaveFormat.PDF` và điều chỉnh các tùy chọn cho phù hợp. +- **Nhúng phông chữ** – sử dụng `@font-face` trong HTML và để trình xử lý bắt các tệp phông chữ. +- **Xử lý hàng loạt** – lặp qua một tập hợp các chuỗi HTML, tái sử dụng cùng một `ZipArchive` để tạo gói đa tài liệu. + +Tất cả những điều này dựa trên cùng một mẫu **trình xử lý tài nguyên tùy chỉnh** và kỹ thuật **tạo gói ZIP trong C#** mà bạn vừa học. + +### Suy nghĩ cuối cùng + +Bạn vừa thấy việc **lưu HTML dưới dạng ZIP** trong C# trở nên dễ dàng như thế nào khi để Aspose.HTML làm việc + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file