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..f9e8650c5 100644 --- a/html/arabic/net/generate-jpg-and-png-images/_index.md +++ b/html/arabic/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML for .NET هي مكتبة قوية تتيح للمطورين إنشا تعلم كيفية تمكين مضاد التعرج عند تحويل ملفات DOCX إلى صور PNG أو JPG باستخدام Aspose.HTML. ### [تحويل docx إلى png – إنشاء أرشيف zip في C# – دليل تعليمي](./convert-docx-to-png-create-zip-archive-c-tutorial/) تعلم كيفية تحويل ملفات docx إلى صور PNG وإنشاء أرشيف ZIP باستخدام C# و Aspose.HTML. +### [تحويل HTML إلى PNG باستخدام C# – دليل كامل خطوة بخطوة](./render-html-to-png-in-c-complete-step-by-step-guide/) +تعلم كيفية تحويل HTML إلى PNG باستخدام C# مع Aspose.HTML خطوة بخطوة. ## خاتمة diff --git a/html/arabic/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/arabic/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..520cf0308 --- /dev/null +++ b/html/arabic/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,244 @@ +--- +category: general +date: 2026-03-28 +description: تعلم كيفية تحويل HTML إلى PNG في C# باستخدام Aspose.HTML. يغطي هذا الدليل + أيضًا كيفية تحويل صفحة الويب إلى صورة، حفظ HTML كملف PNG، تصدير HTML كصورة، وحفظ + صفحة الويب كملف PNG. +draft: false +keywords: +- render html to png +- convert webpage to image +- save html as png +- export html as image +- save webpage as png +language: ar +og_description: تعلم كيفية تحويل HTML إلى PNG في C# باستخدام Aspose.HTML. اتبع هذا + الدرس السهل لتحويل صفحة الويب إلى صورة، حفظ HTML كملف PNG، وتصدير HTML كصورة. +og_title: تحويل HTML إلى PNG في C# – دليل كامل خطوة بخطوة +tags: +- C# +- Aspose.HTML +- Image Rendering +- .NET +title: تحويل HTML إلى PNG في C# – دليل خطوة بخطوة كامل +url: /ar/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# تحويل HTML إلى PNG في C# – دليل خطوة‑بخطوة كامل + +هل تحتاج إلى **تحويل HTML إلى PNG** بسرعة؟ في هذا الدرس سنرشدك خطوة بخطوة إلى كيفية تحويل HTML إلى PNG باستخدام مكتبة Aspose.HTML لـ .NET. سواء كنت تبني خدمة مصغرات، أو تولد معاينات بريد إلكتروني، أو فقط تحتاج إلى **تحويل صفحة ويب إلى صورة** للتقارير، فإن الخطوات أدناه ستوصلك إلى ذلك بسهولة. + +الأمر هو أن معظم المطورين يلجؤون إلى أداة لقطة شاشة المتصفح وينتهي بهم الأمر إلى التعامل مع ملفات Chrome بدون رأس. هذا يعمل، لكنه يضيف الكثير من العبء. باستخدام Aspose.HTML يمكنك **حفظ HTML كـ PNG** مباشرةً من الشيفرة، دون الحاجة إلى عملية خارجية. بنهاية هذا الدليل ستكون قادرًا على **تصدير HTML كصورة**، وتخزين النتيجة على القرص، وحتى تعديل مضاد التسنين أو الأبعاد لتناسب واجهة المستخدم الخاصة بك. + +## ما ستتعلمه + +- كيفية تثبيت Aspose.HTML عبر NuGet. +- إعداد `ImageRenderingOptions` للحصول على مخرجات عالية الجودة. +- تحميل صفحة على الإنترنت أو سلسلة HTML محلية. +- تحويل الصفحة إلى ملف PNG. +- المشكلات الشائعة عند **حفظ صفحة ويب كـ PNG** وكيفية تجنبها. + +لا تحتاج إلى أي خبرة سابقة مع Aspose؛ فقط إعداد أساسي لـ C#/.NET واتصال بالإنترنت. + +## المتطلبات المسبقة + +- .NET 6.0 أو أحدث (الكود يعمل على .NET Core، .NET Framework 4.6+، و .NET 7). +- Visual Studio 2022 (أو أي بيئة تطوير تفضلها). +- الوصول إلى NuGet لجلب حزمة `Aspose.HTML`. +- مجلد لديك صلاحية كتابة فيه للملف PNG المُولد. + +> **نصيحة احترافية:** إذا كنت تخطط لتشغيل هذا على خادم، تأكد من أن الحساب الذي يشغل العملية يملك صلاحية كتابة إلى دليل الإخراج؛ وإلا ستفشل خطوة التحويل بصمت. + +## الخطوة 1: تثبيت Aspose.HTML + +أولاً، أضف مكتبة Aspose.HTML إلى مشروعك. افتح وحدة تحكم مدير الحزم NuGet وشغّل: + +```powershell +Install-Package Aspose.HTML +``` + +أو، إذا كنت تفضّل الواجهة الرسومية، ابحث عن **Aspose.HTML** وانقر **Install**. سيقوم ذلك بجلب جميع ملفات DLL الضرورية، بما في ذلك محرك التحويل. + +> **لماذا هذا مهم:** Aspose.HTML يتعامل مع تحليل HTML، وتخطيط CSS، وتحويل الصور إلى نقطية داخليًا، لذا لا تحتاج إلى تشغيل متصفح بدون رأس. كما أنه مُدار بالكامل، مما يعني عدم وجود تبعيات أصلية تحتاج إلى شحنها. + +## الخطوة 2: تكوين خيارات تحويل الصورة + +قبل التحويل، قرّر حجم وجودة المخرجات. توفر لك فئة `ImageRenderingOptions` تحكمًا دقيقًا. + +```csharp +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +// Step 2: Create and configure image rendering options +var imageOptions = new ImageRenderingOptions +{ + // Antialiasing improves visual quality, especially for text and lines + UseAntialiasing = true, + // Desired image dimensions – adjust to your needs + Width = 800, // pixels + Height = 600 // pixels +}; +``` + +> **لماذا تمكين مضاد التسنين؟** بدون ذلك، قد تبدو الحواف متعرجة، وهذا واضح خاصةً على الشاشات عالية الدقة DPI. تشغيله يضيف تكلفة أداء بسيطة لكنه ينتج PNG أنظف بكثير. + +## الخطوة 3: تحميل محتوى HTML + +يمكنك تحويل عنوان URL بعيد، ملف محلي، أو حتى سلسلة HTML خام. في هذا المثال سنجلب صفحة حية. + +```csharp +// Step 3: Load the HTML document from a URL +var htmlDoc = new HTMLDocument("https://example.com"); +``` + +إذا كان لديك HTML مخزن في سلسلة، استخدم الدالة التي تقبل `MemoryStream`: + +```csharp +string rawHtml = "
`، نُدخل النمط الذي أنشأناه، ونحدد محتوى النص. + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +إذا فحصت `paragraph.OuterHtml` ستظهر لك شيئًا مثل: + +```html +
Bold & Italic text
+``` + +هذا السطر يوضح **add bold italic text** دون الحاجة لكتابة سلاسل CSS يدوية. + +## الخطوة 5: إلحاق الفقرة إلى الـ Body + +أخيرًا، نـ **append element to body**. هذه هي القطعة الأخيرة التي تجعل الفقرة تظهر فعليًا على الصفحة. + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +يمكنك أيضًا استدعاء `htmlDoc.Body.InsertBefore` أو `ReplaceChild` إذا احتجت إلى تموضع أكثر تعقيدًا. في معظم السيناريوهات، يكفي `AppendChild` بسيط. + +## الخطوة 6: إخراج سلسلة HTML (أو حفظها إلى ملف) + +بعد أن بنينا الـ DOM، لنستخرج الـ HTML النهائي. Aspose.HTML يتيح لك تسلسل المستند بنداء واحد. + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +عند فتح `result.html` في المتصفح سترى فقرة واحدة غامقة ومائلة، تمامًا كما أردنا. + +### النتيجة المتوقعة + +```html + + + + +Bold & Italic text
+ + +``` + +إذا كنت تولد HTML لبريد إلكتروني، ما عليك سوى وضع `finalHtml` في جسم البريد وستحافظ التنسيقات على معظم العملاء الحديثين. + +## تنوعات شائعة وحالات حافة + +- **أنماط متعددة:** هل تريد إضافة لون خلفية أيضًا؟ وسّع `CSSStyleDeclaration`: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **عناصر مختلفة:** بدلاً من ``، يمكنك إنشاء `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +شغّل هذا البرنامج، افتح `result.html`، وسترى الفقرة المنسقة تُعرض كما هو موضح. لا تجميع سلاسل يدوية، ولا نصوص HTML هشة—فقط تعديل DOM نظيف وآمن نوعيًا. + +## الخلاصة + +أجبنا على سؤال **كيفية إنشاء HTML** من الصفر باستخدام Aspose.HTML، وعرضنا **append element to body**، وأظهرنا طريقة واضحة **create paragraph element**، وشرحنا **add bold italic text**، وتطرقنا إلى تفاصيل **add css style programmatically**. + +إذا ارتحت لهذا النمط، يمكنك توسيعه لتوليد صفحات كاملة: جداول، صور، وحتى سكريبتات تفاعلية. المبادئ نفسها تُطبق—عرّف الأنماط، أنشئ العناصر، اضبط الخصائص، وألحقها في المكان المناسب. + +### ما التالي؟ + +- **محتوى ديناميكي:** اسحب البيانات من قاعدة بيانات وكرّر لإنشاء صفوف في جدول. +- **مكتبات تنسيق:** دمج هذا النهج مع ملفات CSS خارجية للمشاريع الكبيرة. +- **خيارات تصدير:** مرّر `HTMLDocument` مباشرة إلى Aspose.PDF أو Aspose.Words لإنتاج ملفات PDF أو DOCX دون الحاجة لسلسلة وسيطة. + +لا تتردد في التجربة، وكسر الأشياء، ثم إصلاحها—هذه أسرع طريقة لاستيعاب برمجة الـ DOM في 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/arabic/net/rendering-html-documents/_index.md b/html/arabic/net/rendering-html-documents/_index.md index 7d8baa5d7..0cbbd79ae 100644 --- a/html/arabic/net/rendering-html-documents/_index.md +++ b/html/arabic/net/rendering-html-documents/_index.md @@ -45,11 +45,13 @@ url: /ar/net/rendering-html-documents/ ### [كيفية تحويل HTML إلى PNG – دليل C# كامل](./how-to-render-html-as-png-complete-c-guide/) تعلم خطوة بخطوة كيفية تحويل مستندات HTML إلى صور PNG باستخدام Aspose.HTML وC# في هذا الدليل الشامل. + ### [كيفية استخدام Aspose لتحويل HTML إلى PNG – دليل خطوة بخطوة](./how-to-use-aspose-to-render-html-to-png-step-by-step-guide/) تعلم كيفية تحويل مستندات HTML إلى صور PNG باستخدام Aspose.HTML في .NET خطوة بخطوة. ### [إنشاء PNG من HTML – دليل كامل للتصيير باستخدام C#](./create-png-from-html-full-c-rendering-guide/) تعلم كيفية تحويل صفحات HTML إلى صور PNG باستخدام Aspose.HTML في دليل شامل يوضح كل خطوة في C#. + ### [عرض EPUB بتنسيق XPS في .NET باستخدام Aspose.HTML](./render-epub-as-xps/) تعرف على كيفية إنشاء مستندات HTML وعرضها باستخدام Aspose.HTML لـ .NET في هذا البرنامج التعليمي الشامل. انغمس في عالم معالجة HTML وكشط الويب والمزيد. @@ -68,6 +70,12 @@ url: /ar/net/rendering-html-documents/ ### [كيفية تحويل HTML إلى PNG باستخدام Aspose – دليل كامل](./how-to-render-html-to-png-with-aspose-complete-guide/) تعلم خطوة بخطوة كيفية تحويل مستندات HTML إلى صور PNG باستخدام Aspose.HTML في .NET. +### [إنشاء مستند PDF C# – تحويل HTML إلى PDF باستخدام Aspose](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +تعلم كيفية إنشاء مستند PDF من HTML باستخدام Aspose.HTML في C# خطوة بخطوة. + +### [تحويل HTML إلى PDF وضغطه – دليل C# كامل](./render-html-to-pdf-and-zip-it-complete-c-guide/) +تعلم خطوة بخطوة كيفية تحويل مستندات HTML إلى PDF وضغطها في ملف ZIP باستخدام Aspose.HTML في C#. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/arabic/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/arabic/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..02f7043c3 --- /dev/null +++ b/html/arabic/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-03-28 +description: إنشاء مستند PDF باستخدام C# و Aspose HTML إلى PDF. تعلّم كيفية عرض HTML + كملف PDF، وتحويل HTML إلى PDF، وتمكين التلميحات لنظام Linux. +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: ar +og_description: إنشاء مستند PDF باستخدام C# فورًا. يوضح هذا الدليل كيفية تحويل HTML + إلى PDF، وعرض HTML كملف PDF، واستخدام Aspose HTML إلى PDF مع تلميحات النص. +og_title: إنشاء مستند PDF بلغة C# – تحويل HTML إلى PDF باستخدام Aspose +tags: +- Aspose +- C# +- PDF generation +title: إنشاء مستند PDF باستخدام C# – تحويل HTML إلى PDF باستخدام Aspose +url: /ar/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# إنشاء مستند PDF C# – تحويل HTML إلى PDF باستخدام Aspose + +هل احتجت يومًا إلى **إنشاء مستند PDF C#** من سلسلة HTML ديناميكية وتساءلت لماذا يبدو النص غير واضح على لينكس؟ لست الوحيد الذي يحك رأسه. الخبر السار هو أن Aspose HTML يجعل من السهل **تحويل HTML إلى PDF**، ومع بضع خيارات إضافية يمكنك الحصول على حروف حادة كالموس حتى على الخوادم بدون واجهة. + +في هذا الدرس سنستعرض مثالًا كاملاً جاهزًا للتنفيذ **يحوِّل HTML إلى PDF** باستخدام مكتبة Aspose HTML for .NET. سنشرح أيضًا لماذا قد ترغب في تمكين الـ hinting، وكيفية إعداد خط أنابيب العرض، وما يجب فعله إذا احتجت لتخصيص حجم الصفحة أو DPI لاحقًا. لا حاجة لأي مستندات خارجية—فقط انسخ، الصق، وشغِّل. + +## ما ستحتاجه + +- **.NET 6+** (أو .NET Framework 4.6.2+). يدعم Aspose HTML كلاهما، لكن المثال أدناه يستهدف .NET 6 للبساطة. +- حزمة NuGet **Aspose.HTML for .NET** (`Aspose.Html`). ثبِّتها عبر وحدة تحكم مدير الحزم: + + ```powershell + Install-Package Aspose.Html + ``` + +- بيئة **Linux أو Windows**. علمية الـ hinting مفيدة بشكل خاص على لينكس، لكن الشيفرة تعمل في أي مكان. +- محرر أو بيئة تطوير من اختيارك (Visual Studio، VS Code، Rider…). + +هذا كل شيء—لا خطوط إضافية، لا برامج تشغيل طابعة PDF، مجرد DLL واحد. + +## الخطوة 1: تكوين خيارات عرض النص (الكلمة المفتاحية الأساسية في التنفيذ) + +أول ما نفعله هو إخبار Aspose كيف يتعامل مع عرض الحروف. على لينكس قد ينتج الـ rasterizer الافتراضي أحرفًا غير واضحة، لذا نقوم بتفعيل الـ hinting. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**لماذا؟** +`UseHinting` يجبر العارض على محاذاة المخططات المتجهية إلى شبكة البكسل، مما يقضي على الحواف الضبابية التي تراها غالبًا في ملفات PDF المُولَّدة على حاويات لينكس بدون واجهة. خاصية `FontSize` ليست إلزامية، لكنها تمنحك خط أساس متوقع لأي HTML لا يحدد حجمه الخاص. + +> **نصيحة احترافية:** إذا كنت تستهدف Windows فقط، يمكنك تخطي الـ hinting—Windows يطبق بالفعل العرض تحت‑بكسلي تلقائيًا. + +## الخطوة 2: إرفاق خيارات النص بإعدادات عرض PDF + +بعد ذلك ننشئ كائن `PdfRenderingOptions` ونربط به `TextOptions` التي قمنا بتكوينها. هذا الكائن يتحكم في عملية التحويل بأكملها. + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**لماذا ربطهما؟** +كائن `PdfRenderingOptions` هو الجسر بين محرك HTML وكاتب PDF. من خلال تعيين `TextOptions` هنا، سيتوارث كل صفحة مُعالجة تكوين الـ hinting، مما يضمن مخرجات متسقة عبر المستند بأكمله. + +## الخطوة 3: تحميل محتوى HTML الخاص بك + +يسمح لك Aspose بإدخال HTML من سلسلة نصية، ملف، أو حتى URL. في هذا الدرس سنبقي الأمور بسيطة ونستخدم سلسلة نصية في الذاكرة. + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**لماذا سلسلة نصية؟** +عند توليد تقارير في الوقت الفعلي (مثل الفواتير، الإيصالات)، غالبًا ما تُجمع HTML باستخدام الاستبدال النصي أو محرك قوالب. تمرير السلسلة مباشرة يجنّب الملفات المؤقتة ويسرّع خط الأنابيب. + +## الخطوة 4: حفظ PDF باستخدام الخيارات المكوَّنة + +الآن نكتب ملف PDF إلى القرص. طريقة `Save` تستقبل مسار الهدف وخيارات العرض التي أعددناها مسبقًا. + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**ما ستراه:** +افتح `hinted.pdf` بأي عارض PDF. يجب أن يظهر الفقرة “Hinted text on Linux” بوضوح، مع خط Arial مُظهرًا بنقاء. على لينكس ستلاحظ الفرق مقارنةً بملف PDF تم توليده بدون `UseHinting`. + +> **الناتج المتوقع:** ملف PDF من صفحة واحدة يحتوي على الفقرة بحجم 14‑pt Arial، دون حواف ضبابية. + +### مثال كامل يعمل + +فيما يلي البرنامج الكامل الذي يمكنك نسخه إلى مشروع تطبيق Console. يتضمن جميع عبارات `using`، معالجة الأخطاء، وتعليقات للتوضيح. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +شغِّل البرنامج (`dotnet run`)، وستحصل على ملف PDF جاهز للتوزيع، الأرشفة، أو المعالجة الإضافية. + + + +## الأسئلة المتكررة (FAQ) + +### هل يعمل هذا مع **aspose html to pdf** على .NET Core؟ +بالتأكيد. نفس واجهة الـ API متاحة عبر .NET Framework، .NET Core، و .NET 5/6. فقط تأكد من أن نسخة حزمة NuGet تتطابق مع إطار العمل المستهدف. + +### كيف يمكنني **تحويل HTML إلى PDF** بحجم صفحة مخصص؟ +أنشئ كائن `PdfPageSetup`، عيّن `Width`، `Height` أو `Size`، ثم اسندّه إلى `pdfRenderOptions.PageSetup`. مثال: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### ماذا لو احتجت إلى **تحويل HTML إلى PDF** في واجهة برمجة تطبيقات ويب؟ +أرجع الـ PDF كـ `FileResult`: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### هل يمكنني استخدام هذا لـ **html to pdf c#** في حاوية Docker على لينكس؟ +نعم. علمية الـ hinting صُممت خصيصًا لبيئات لينكس بدون واجهة. فقط ثبِّت حزمة `libgdiplus` إذا كنت على Alpine، وستعمل عملية التحويل مباشرةً. + +## تعديلات متقدمة (ما وراء الأساسيات) + +- **Embedding Fonts:** إذا كان HTML الخاص بك يشير إلى خطوط مخصصة، استدعِ `htmlDoc.Fonts.Add("MyFont", fontBytes);` قبل العرض. +- **Image Handling:** فعّل `pdfRenderOptions.ImageResolution = 300;` للحصول على رسومات عالية الـ DPI. +- **Security:** استخدم `PdfSaveOptions` لحماية المخرجات بكلمة مرور (`PdfSaveOptions.Password = "secret";`). + +هذه الخيارات تسمح لك بتحويل مقتطف **convert html to pdf** بسيط إلى خدمة جاهزة للإنتاج. + +## ملخص + +لقد أوضحنا كيف **إنشاء مستند PDF C#** عن طريق عرض HTML باستخدام Aspose HTML، وتمكين hinting للحصول على مخرجات أكثر حدة على لينكس، وحفظ النتيجة باستدعاء طريقة واحدة. الخطوات التي غطيناها: + +1. إعداد `TextOptions` (hinting). +2. ربطها بـ `PdfRenderingOptions`. +3. تحميل HTML من سلسلة نصية. +4. حفظ PDF. + +الآن لديك أساس قوي لأي سيناريو يتطلب **aspose html to pdf**، **render html to pdf**، **convert html to pdf**، أو **html to pdf c#**. لا تتردد في تجربة تخطيطات صفحات مختلفة، خطوط مدمجة، أو بث الـ PDF مباشرةً إلى العميل. + +--- + +**الخطوات التالية:** +- جرّب تحويل تقرير HTML متعدد الصفحات يحتوي على جداول وصور. +- استكشف API `PdfDocument` الخاص بـ Aspose للمعالجة اللاحقة (إضافة فواصل مرجعية، علامات مائية). +- اجمع هذا التحويل مع طابور مهام خلفية (مثل Hangfire) لتوليد PDFs عند الطلب. + +برمجة سعيدة، ولتظل ملفات 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/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/arabic/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..11b1e44e7 --- /dev/null +++ b/html/arabic/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-03-28 +description: تحويل HTML إلى PDF مباشرةً من عنوان URL وضغط النتيجة في ملف ZIP. تعلم + كيفية تحويل URL إلى PDF، إنشاء PDF من موقع ويب، وضغط ملف PDF في C#. +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: ar +og_description: تحويل HTML إلى PDF مباشرةً من عنوان URL، ثم ضغط ملف PDF إلى ملف ZIP. + يوضح هذا الدليل خطوة بخطوة كيفية تحويل URL إلى PDF، إنشاء PDF من موقع ويب، وضغط + ملف PDF باستخدام C#. +og_title: تحويل HTML إلى PDF وضغطه – دليل C# الكامل +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: تحويل HTML إلى PDF وضغطه – دليل C# الكامل +url: /ar/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# تحويل HTML إلى PDF وضغطه – دليل C# كامل + +هل احتجت يوماً إلى **تحويل HTML إلى PDF** في الوقت الفعلي ثم إرسال الملف إلى العميل كأرشيف واحد؟ ربما تقوم بإنشاء خدمة تقارير تسحب صفحة ويب حية، تحولها إلى PDF، وتخزن النتيجة في ملف zip لتسهيل التحميل. في هذا الشرح سنستعرض ذلك بالضبط—تحويل صفحة ويب عن بُعد إلى PDF، ثم **ضغط الـ PDF داخل ملف zip** دون لمس القرص الصلب أبداً. + +سنتناول أيضاً كيفية **تحويل URL إلى PDF**، **إنشاء PDF من موقع ويب**، وأخيراً **ضغط ملف PDF** لتتمكن من إرساله إلى أي مكان تحتاجه. لا إطالة، مجرد حل عملي يمكنك إدراجه في مشروع .NET 6+ اليوم. + +## ما ستحتاجه + +- **.NET 6** أو أحدث (الكود يعمل أيضاً مع .NET Framework 4.6+). +- **Aspose.HTML for .NET** – المكتبة التي تقوم بالعمل الشاق لتحويل HTML إلى PDF. +- قليل من الخبرة في C#—إذا كنت تستطيع كتابة `Console.WriteLine` فأنت جاهز. +- بيئة تطوير من اختيارك (Visual Studio، Rider، VS Code…). + +> **نصيحة احترافية:** Aspose.HTML يقدم نسخة تجريبية مجانية تشمل جميع ميزات التحويل. احصل عليها من [موقع Aspose](https://products.aspose.com/html/net/) قبل أن تبدأ. + +الآن بعد أن انتهينا من المتطلبات، لنبدأ. + +## الخطوة 1 – تحميل مستند HTML عن بُعد (تحويل URL إلى PDF) + +أول شيء يجب فعله هو إخبار Aspose.HTML بمكان المصدر. في مثالنا هو URL عام، لكن يمكنك أيضاً تمرير سلسلة نصية تحتوي على HTML خام. + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**لماذا هذا مهم:** تحميل المستند من URL يعني أن المُحَوِّل سيجلب جميع الموارد المرتبطة (CSS، صور، خطوط) تلقائياً، مما يمنحك نسخة PDF مطابقة للموقع الحي. تخطي هذه الخطوة وتمرير نص عادي سيحذف تلك الأصول، وهو ما نادرًا ما يكون مرغوبًا عندما *تنشئ PDF من موقع ويب*. + +## الخطوة 2 – ضبط خيارات تحويل PDF (الجودة مهمة) + +Aspose.HTML يتيح لك تعديل مظهر PDF. الـ Antialiasing وتلميحات الخط (font hinting) هما إعدادان يجعلان المخرجات واضحة على الشاشة وفي الطباعة. + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**لماذا نضبط هذه الإعدادات:** بدون الـ antialiasing قد تظهر الرسومات الخطية والفيكتورية متعرجة، خاصة على الشاشات ذات الكثافة العالية DPI. أما الـ hinting، فيخبر محرك PDF كيف يضبط الحروف على حدود البكسل، تعديل بسيط غالبًا ما يحدث فرقًا بصريًا كبيرًا. + +## الخطوة 3 – إعداد أرشيف ZIP في الذاكرة (ضغط ملف PDF) + +بدلاً من كتابة الـ PDF إلى القرص أولاً ثم ضغطه—عملية I/O مزدوجة—سنقوم ببث البيانات مباشرةً إلى مدخل zip. هذا يبقي كل شيء في الذاكرة، وهو مثالي لواجهات API أو الوظائف الخلفية. + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**ملاحظة حول الحالات القصوى:** إذا كنت تتعامل مع ملفات PDF ضخمة (مئات الميجابايت)، فكر في توجيه الـ zip مباشرةً إلى تدفق الاستجابة بدلاً من الاحتفاظ به بالكامل في الذاكرة. بالنسبة للتقارير العادية تحت 20 ميغابايت، هذا الأسلوب آمن وسريع. + +## الخطوة 4 – بث الـ PDF مباشرةً إلى مدخل ZIP + +إليك الجزء الذكي: ننشئ مدخل zip باسم `output.pdf` ونعطي تدفقه إلى Aspose.HTML. المُحَوِّل يكتب بايتات الـ PDF مباشرةً داخل مدخل zip—دون الحاجة إلى ملف مؤقت. + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**لماذا نفعل ذلك بهذه الطريقة:** عبر تزويد كاتب الـ PDF بتدفق يشير إلى مدخل zip، نتجنب دورة “الكتابة إلى القرص → الضغط → الحذف”. هذا لا يقلل فقط من عبء I/O بل يزيل أيضًا خطر ترك ملفات غير مرغوب فيها على الخادم. + +## الخطوة 5 – إغلاق ZIP وحفظه + +بعد كتابة الـ PDF، نحتاج إلى إغلاق أرشيف zip حتى يتم تفريغ الدليل المركزي، ثم نكتب الملف بالكامل إلى القرص (أو نعيده من API). + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**النتيجة التي ستراها:** ملف اسمه `result.zip` يحتوي على مدخل واحد `output.pdf`. فتح الـ PDF يعرض لقطة دقيقة من `https://example.com` مع جميع الأنماط والصور. + + + +*نص بديل للصورة: تحويل html إلى pdf – لقطة شاشة للـ PDF المُولد داخل أرشيف ZIP.* + +## مثال كامل يعمل + +نجمع كل ما سبق في برنامج جاهز للنسخ واللصق: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### ما الذي تتوقعه + +- يظهر **`result.zip`** في `C:\Temp`. +- داخل الأرشيف ستجد **`output.pdf`**. +- فتح الـ PDF يعرض الصفحة الحية من `https://example.com` محوَّلة بدقة. + +إذا شغّلت البرنامج وكان الـ zip فارغًا، تحقق من أن الـ URL قابل للوصول وأن Aspose.HTML يملك صلاحية تنزيل الموارد الخارجية (جدران الحماية، إعدادات البروكسي، إلخ). + +## أسئلة شائعة وحالات خاصة + +| السؤال | الجواب | +|----------|--------| +| *ماذا لو كانت الصفحة تشير إلى خطوط خارجية؟* | Aspose.HTML يقوم تلقائيًا بتحميل الخطوط الويب المشار إليها عبر `@font-face`. تأكد من أن الخادم يستطيع الوصول إلى عناوين الخطوط. | +| *هل يمكنني إضافة عدة ملفات PDF داخل نفس الـ ZIP؟* | نعم—فقط استدعِ `zipArchive.CreateEntry("report2.pdf")` وحوِّل `HTMLDocument` آخر إلى ذلك التدفق. | +| *كيف أُعيّن اسم ملف PDF مخصص؟* | غيّر السلسلة الممررة إلى `CreateEntry`، مثلًا `CreateEntry("my‑invoice.pdf")`. | +| *هل من الآمن استخدام هذا في تطبيق ويب متعدد الخيوط؟* | يجب على كل طلب إنشاء `MemoryStream` و`ZipArchive` خاص به. الكائنات غير آمنة للخلط بين الخيوط، لذا فإن الاستخدام المشترك سيسبب فسادًا. | +| *ماذا عن ملفات PDF الكبيرة؟* | للملفات التي تتجاوز 100 ميغابايت، فكر في البث مباشرةً إلى استجابة HTTP (`Response.Body`) بدلاً من التخزين المؤقت في الذاكرة. | + +## الخلاصة + +لقد أظهرنا لك كيفية **تحويل HTML إلى PDF**، **تحويل URL إلى PDF**، **إنشاء PDF من موقع ويب**، وأخيرًا **ضغط ملف 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/working-with-html-documents/_index.md b/html/arabic/net/working-with-html-documents/_index.md index 30c32a306..1b61d5794 100644 --- a/html/arabic/net/working-with-html-documents/_index.md +++ b/html/arabic/net/working-with-html-documents/_index.md @@ -38,6 +38,7 @@ url: /ar/net/working-with-html-documents/ ### [كيفية حفظ 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 من سلسلة في C# – دليل كامل مع تدفق الذاكرة](./create-html-from-string-in-c-full-guide-with-memory-stream/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/arabic/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/arabic/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..d62014ff3 --- /dev/null +++ b/html/arabic/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,276 @@ +--- +category: general +date: 2026-03-28 +description: إنشاء HTML من سلسلة باستخدام Aspose.Html والتقاطه إلى تدفق. تعلم تحويل + HTML إلى سلسلة، ومعالج موارد مخصص، وكتابة HTML إلى تدفق. +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: ar +og_description: إنشاء HTML من سلسلة باستخدام Aspose.Html، التقاطه في الذاكرة، وتحويل + HTML إلى سلسلة. دليل خطوة بخطوة لمعالج الموارد المخصص وكتابة HTML إلى تدفق. +og_title: إنشاء HTML من سلسلة نصية في C# – دليل شامل لتدفق الذاكرة +tags: +- Aspose.Html +- C# +- MemoryStream +title: إنشاء HTML من نص في C# – دليل كامل مع تدفق الذاكرة +url: /ar/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# إنشاء HTML من سلسلة في C# – دليل كامل مع Memory Stream + +هل احتجت يومًا إلى **إنشاء HTML من سلسلة** والاحتفاظ بكل شيء في الذاكرة دون لمس نظام الملفات؟ لست وحدك. يواجه العديد من المطورين هذه المشكلة عندما يرغبون في توليد علامات ديناميكية في الوقت الفعلي—مثل قالب بريد إلكتروني أو تحويل إلى PDF—مع أنهم لا يريدون ملفًا مؤقتًا يملأ القرص. + +الأخبار السارة؟ باستخدام Aspose.Html يمكنك إنشاء `HTMLDocument` مباشرةً من سلسلة، وإدخاله في **معالج موارد مخصص**، و**كتابة HTML إلى تدفق** للاستخدام لاحقًا. في هذا الدرس سنستعرض كل خطوة، من السلسلة الأولية إلى النتيجة النهائية من نوع `string`، ونشرح *لماذا* كل جزء مهم. + +بحلول نهاية هذا الدليل ستتمكن من: + +* إنشاء HTML من سلسلة باستخدام Aspose.Html. +* تحويل HTML إلى سلسلة دون كتابة إلى القرص. +* التقاط HTML باستخدام معالج موارد مخصص. +* كتابة HTML إلى `MemoryStream` وقراءته مرة أخرى. +* اكتشاف المشكلات الشائعة وتطبيق نصائح أفضل الممارسات. + +لا توجد تبعيات خارجية بخلاف Aspose.Html—فقط مشروع .NET وبعض عبارات `using`. + +--- + +## المتطلبات المسبقة + +* .NET 6.0 أو أحدث (الكود يعمل أيضًا على .NET Framework). +* حزمة NuGet الخاصة بـ Aspose.Html for .NET (`Install-Package Aspose.Html`). +* معرفة أساسية بـ C#—إذا كتبت `Console.WriteLine` من قبل، فأنت جاهز. + +--- + +## الخطوة 1: إنشاء HTML من سلسلة – نقطة الانطلاق + +أول شيء نحتاجه هو سلسلة HTML خام. فكر فيها كالهياكل التي تلصقها عادةً في ملف `.html`. + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "` 标签,注入前面构建的样式,并设置其文本内容。 + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +如果检查 `paragraph.OuterHtml`,会看到类似如下的输出: + +```html +
Bold & Italic text
+``` + +该行演示了 **add bold italic text**,而无需手写原始 CSS 字符串。 + +## 第 5 步:将段落追加到 Body + +最后,我们 **append element to body**。这一步是将段落真正渲染到页面上的关键。 + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +如果需要更复杂的定位,也可以调用 `htmlDoc.Body.InsertBefore` 或 `ReplaceChild`。在大多数场景下,简单的 `AppendChild` 已足够。 + +## 第 6 步:输出 HTML 字符串(或保存为文件) + +现在 DOM 已构建完成,提取最终的 HTML 吧。Aspose.HTML 只需一次调用即可序列化文档。 + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +在浏览器中打开 `result.html` 时,你会看到一个同时具备粗体和斜体的单段落,正如我们预期的那样。 + +### 预期输出 + +```html + + + + +Bold & Italic text
+ + +``` + +如果你为电子邮件生成 HTML,只需将 `finalHtml` 放入邮件正文,样式在大多数现代客户端中都能正常显示。 + +## 常见变体与边缘情况 + +- **多重样式:** 还想添加背景颜色吗?可以扩展 `CSSStyleDeclaration`: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **不同元素:** 除了 ``,你也可以使用 `htmlDoc.CreateElement("div")` 创建 `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +运行此程序,打开 `result.html`,即可看到如描述那样渲染的带样式段落。无需手动字符串拼接,也不必使用脆弱的 HTML 字面量——仅靠干净、类型安全的 DOM 操作即可。 + +## 总结 + +我们已经回答了使用 Aspose.HTML **how to create HTML** 的完整方法,演示了 **append element to body**,展示了 **create paragraph element** 的明确用法,解释了 **add bold italic text**,并涵盖了 **add css style programmatically** 的细节。 + +如果你已经熟悉此模式,可以进一步扩展生成完整页面:表格、图片,甚至交互脚本。相同的原则依旧适用——定义样式、创建元素、设置属性,然后将其追加到合适的位置。 + +### 接下来怎么做? + +- **动态内容:** 从数据库读取数据并循环生成表格行。 +- **样式库:** 将此方法与外部 CSS 文件结合,适用于更大型的项目。 +- **导出选项:** 将 `HTMLDocument` 直接传递给 Aspose.PDF 或 Aspose.Words,以生成 PDF 或 DOCX 文件,无需中间字符串。 + +随意实验、打破再修复——这是在 C# 中内化 DOM 编程的最快方式。有什么问题或不同的使用场景?在下方留言吧,祝编码愉快! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/chinese/net/rendering-html-documents/_index.md b/html/chinese/net/rendering-html-documents/_index.md index 320ef98cc..146d4dda6 100644 --- a/html/chinese/net/rendering-html-documents/_index.md +++ b/html/chinese/net/rendering-html-documents/_index.md @@ -66,9 +66,16 @@ Aspose.HTML for .NET 凭借其丰富的功能、出色的文档和活跃的社 ### [使用 Aspose.HTML 在 .NET 中将 SVG 文档渲染为 PNG](./render-svg-doc-as-png/) 解锁 Aspose.HTML for .NET 的强大功能!了解如何轻松将 SVG Doc 渲染为 PNG。深入了解分步示例和常见问题解答。立即开始! + ### [使用 Aspose.HTML 在 .NET 中从 HTML 创建 PNG – 完整 C# 渲染指南](./create-png-from-html-full-c-rendering-guide/) 完整的 C# 示例,展示如何使用 Aspose.HTML 将 HTML 渲染为 PNG,涵盖所有关键步骤和最佳实践。 +### [使用 Aspose.HTML 在 .NET 中将 HTML 渲染为 PDF(C#)](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +学习如何使用 Aspose.HTML for .NET 将 HTML 内容渲染为 PDF 文档,提供完整的 C# 示例和关键步骤。 + +### [将 HTML 渲染为 PDF 并压缩 – 完整 C# 指南](./render-html-to-pdf-and-zip-it-complete-c-guide/) +学习如何使用 Aspose.HTML for .NET 将 HTML 渲染为 PDF 并打包为 ZIP,提供完整的 C# 示例和关键步骤。 + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/chinese/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/chinese/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..675dbb077 --- /dev/null +++ b/html/chinese/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,230 @@ +--- +category: general +date: 2026-03-28 +description: 使用 Aspose HTML to PDF 在 C# 中创建 PDF 文档。了解如何将 HTML 渲染为 PDF、将 HTML 转换为 PDF,并在 + Linux 上启用 hinting。 +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: zh +og_description: 即时使用 C# 创建 PDF 文档。本指南展示了如何将 HTML 渲染为 PDF、将 HTML 转换为 PDF,以及使用 Aspose + HTML 转 PDF 并进行文字提示。 +og_title: 使用 C# 创建 PDF 文档 – 使用 Aspose 将 HTML 渲染为 PDF +tags: +- Aspose +- C# +- PDF generation +title: 使用 C# 创建 PDF 文档 – 使用 Aspose 将 HTML 渲染为 PDF +url: /zh/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 创建 PDF 文档 C# – 使用 Aspose 将 HTML 渲染为 PDF + +是否曾需要从动态 HTML 字符串 **create PDF document C#** 并且想知道为什么在 Linux 上文本看起来模糊?你并不是唯一感到困惑的人。好消息是 Aspose HTML 让 **render HTML to PDF** 变得轻而易举,并且通过几个额外选项,即使在无头服务器上也能获得锐利的字形。 + +在本教程中,我们将逐步演示一个完整的、可直接运行的示例,使用 Aspose HTML for .NET 库 **converts HTML to PDF**。我们还会介绍为何可能需要启用 hinting、如何设置渲染管道,以及如果以后需要自定义页面大小或 DPI 时该怎么办。无需外部文档——只需复制、粘贴并运行。 + +## 您需要的条件 + +- **.NET 6+**(或 .NET Framework 4.6.2+)。Aspose HTML 两者皆支持,但下面的示例为了简化使用 .NET 6。 +- **Aspose.HTML for .NET** NuGet 包 (`Aspose.Html`)。通过包管理器控制台安装: + + ```powershell + Install-Package Aspose.Html + ``` + +- 一个 **Linux 或 Windows** 环境。hinting 标志在 Linux 上尤为有用,但代码在任何平台都能运行。 +- 您选择的任意 IDE 或编辑器(Visual Studio、VS Code、Rider…)。 + +就是这样——无需额外字体、PDF 打印机驱动,只需一个 DLL。 + +## 步骤 1:配置文本渲染选项(关键字实际演示) + +我们首先告诉 Aspose 如何处理字形渲染。在 Linux 上默认的光栅化器可能会产生模糊字符,因此我们开启 hinting。 + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**Why?** +`UseHinting` 强制渲染器将矢量轮廓对齐到像素网格,从而消除在无头 Linux 容器生成的 PDF 中常见的模糊边缘。`FontSize` 属性不是必需的,但它为未指定大小的 HTML 提供了可预测的基准。 + +> **Pro tip:** 如果仅面向 Windows,可以跳过 hinting——Windows 已经自动应用子像素渲染。 + +## 步骤 2:将文本选项附加到 PDF 渲染设置 + +接下来我们创建一个 `PdfRenderingOptions` 实例,并将刚才配置好的 `TextOptions` 插入其中。该对象管理整个转换过程。 + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**为什么要绑定它们?** +`PdfRenderingOptions` 对象是 HTML 引擎与 PDF 写入器之间的桥梁。通过在此分配 `TextOptions`,每个渲染的页面都会继承 hinting 配置,确保整个文档输出一致。 + +## 步骤 3:加载 HTML 内容 + +Aspose 允许您从字符串、文件甚至 URL 提供 HTML。为了本教程的简洁,我们将使用内存中的字符串。 + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**为什么使用字符串?** +当您实时生成报告(例如发票、收据)时,通常会使用字符串插值或模板引擎组装 HTML。直接传递字符串可以避免临时文件并加快流水线速度。 + +## 步骤 4:使用配置好的选项保存 PDF + +现在我们终于将 PDF 写入磁盘。`Save` 方法接受目标路径和我们之前准备的渲染选项。 + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**您将看到:** +使用任意 PDF 查看器打开 `hinted.pdf`。段落 “Hinted text on Linux” 应该显示清晰,Arial 字体渲染干净。在 Linux 上您会注意到与未使用 `UseHinting` 生成的 PDF 之间的差异。 + +> **Expected output:** 一个包含 14 pt Arial 段落的单页 PDF,且没有模糊边缘。 + +### 完整工作示例 + +下面是完整的程序代码,您可以复制到控制台应用项目中。它包含所有 using 语句、错误处理以及为清晰起见的注释。 + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +运行程序(`dotnet run`),即可得到可用于分发、归档或进一步处理的 PDF。 + + + +## 常见问题 (FAQ) + +### 这在 .NET Core 上的 **aspose html to pdf** 能工作吗? + +当然可以。相同的 API 在 .NET Framework、.NET Core 和 .NET 5/6 上均可使用。只需确保 NuGet 包版本与您的目标框架匹配。 + +### 如何使用自定义页面大小 **render HTML to PDF**? + +创建一个 `PdfPageSetup` 对象,设置 `Width`、`Height` 或 `Size`,并将其分配给 `pdfRenderOptions.PageSetup`。示例: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### 如果我需要在 Web API 中 **convert HTML to PDF**,该怎么办? + +将 PDF 作为 `FileResult` 返回: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### 我可以在 Linux Docker 容器中使用 **html to pdf c#** 吗? + +可以。hinting 标志专为无头 Linux 环境设计。如果您使用 Alpine,只需安装 `libgdiplus` 包,即可开箱即用完成转换。 + +## 高级调优(超出基础) + +- **嵌入字体:** 如果您的 HTML 引用了自定义字体,请在渲染前调用 `htmlDoc.Fonts.Add("MyFont", fontBytes);`。 +- **图像处理:** 设置 `pdfRenderOptions.ImageResolution = 300;` 以获得高 DPI 图形。 +- **安全性:** 使用 `PdfSaveOptions` 为输出设置密码保护(`PdfSaveOptions.Password = "secret";`)。 + +这些选项可以让您将简单的 **convert html to pdf** 代码片段转变为生产就绪的服务。 + +## 回顾 + +我们刚刚演示了如何通过 Aspose HTML 渲染 HTML 来 **create PDF document C#**,在 Linux 上启用文本 hinting 以获得更清晰的输出,并使用单一方法调用保存结果。涵盖的步骤如下: + +1. 设置 `TextOptions`(hinting)。 +2. 将其附加到 `PdfRenderingOptions`。 +3. 从字符串加载 HTML。 +4. 保存 PDF。 + +现在您拥有了适用于任何需要 **aspose html to pdf**、**render html to pdf**、**convert html to pdf** 或 **html to pdf c#** 场景的坚实基础。随意尝试页面布局、嵌入字体或直接将 PDF 流式传输给客户端。 + +--- + +**接下来的步骤:** +- 尝试转换包含表格和图像的多页 HTML 报告。 +- 探索 Aspose 的 `PdfDocument` API 进行后处理(添加书签、水印)。 +- 将此转换与后台作业队列(例如 Hangfire)结合,以按需生成 PDF。 + +祝编码愉快,愿您的 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/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/chinese/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..2ebae95e6 --- /dev/null +++ b/html/chinese/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,232 @@ +--- +category: general +date: 2026-03-28 +description: 直接从 URL 将 HTML 渲染为 PDF,并将结果压缩成 ZIP 文件。了解如何将 URL 转换为 PDF、从网站生成 PDF,以及在 + C# 中压缩 PDF 文件。 +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: zh +og_description: 直接从 URL 将 HTML 渲染为 PDF,然后将 PDF 压缩为 ZIP 文件。本分步教程展示了如何将 URL 转换为 PDF、从网站生成 + PDF,以及在 C# 中压缩 PDF 文件。 +og_title: 将HTML渲染为PDF并压缩 – 完整C#指南 +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: 将HTML渲染为PDF并压缩 – 完整C#指南 +url: /zh/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 将 HTML 渲染为 PDF 并压缩 – 完整 C# 指南 + +是否曾经需要在运行时 **render HTML to PDF** 并将文件作为单个压缩包发送给客户端?也许你正在构建一个报告服务,它抓取实时网页,将其转换为 PDF,并将结果存储在 zip 中以便轻松下载。在本教程中,我们将一步步演示——将远程网页渲染为 PDF,然后 **compressing the PDF in a zip**,且不涉及磁盘操作。 + +我们还会介绍如何 **convert URL to PDF**、**generate PDF from website**,以及最终 **zip PDF file**,让你可以在任何需要的地方交付它们。没有冗余内容,只有可以直接放入 .NET 6+ 项目中的可运行方案。 + +## 您需要的条件 + +- **.NET 6** 或更高版本(代码同样适用于 .NET Framework 4.6+)。 +- **Aspose.HTML for .NET** – 为 HTML‑to‑PDF 渲染提供强大支持的库。 +- 适度的 C# 经验——只要会写 `Console.WriteLine`,就可以上手。 +- 任意你喜欢的 IDE(Visual Studio、Rider、VS Code…)。 + +> **Pro tip:** Aspose.HTML 提供包含全部渲染功能的免费试用版。请在开始前从 [Aspose website](https://products.aspose.com/html/net/) 获取。 + +现在前置条件已经就绪,让我们开始吧。 + +## 第一步 – 加载远程 HTML 文档(Convert URL to PDF) + +我们首先需要告诉 Aspose.HTML 源文件所在的位置。这里使用的是公开的 URL,但你也可以直接传入包含原始 HTML 的字符串。 + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Why this matters:** 从 URL 加载文档意味着渲染器会自动获取所有关联资源(CSS、图片、字体),从而为你提供与现场站点一致的 PDF 副本。若跳过此步骤而仅提供普通字符串,则这些资源会被剥离,这在 *generate PDF from website* 时几乎从不符合需求。 + +## 第二步 – 配置 PDF 渲染选项(Quality Matters) + +Aspose.HTML 允许你微调 PDF 的外观。抗锯齿(Antialiasing)和字体提示(font hinting)是两个能让输出在屏幕和打印时都保持清晰的设置。 + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Why we set these:** 没有抗锯齿,线条艺术和矢量图形在高 DPI 显示器上会出现锯齿。字体提示则告诉 PDF 引擎如何将字形对齐到像素边界,这一细微调整常常带来显著的视觉提升。 + +## 第三步 – 准备内存中的 ZIP 存档(Zip PDF File) + +我们不先将 PDF 写入磁盘再压缩——那是两步 I/O 的噩梦——而是直接流入 zip 条目。这样所有内容都保留在内存中,非常适合 Web API 或后台任务。 + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Edge case note:** 如果处理的是巨大的 PDF(数百 MB),建议将 zip 直接管道输出到响应流,而不是全部缓存在内存中。对于通常小于 20 MB 的报告,这种做法既安全又快速。 + +## 第四步 – 将 PDF 直接流入 ZIP 条目 + +关键所在:我们创建一个名为 `output.pdf` 的 zip 条目,并把它的流交给 Aspose.HTML。渲染器会把 PDF 字节直接写入该 zip 条目——无需临时文件。 + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Why we do it this way:** 通过把 PDF 写入器指向 zip 条目的流,我们避免了 “写入磁盘 → 压缩 → 删除” 的循环。这不仅降低了 I/O 开销,还消除了服务器上残留文件的风险。 + +## 第五步 – 完成 ZIP 并持久化 + +PDF 写入完成后,需要关闭 zip 存档以刷新中心目录,然后将整体写入磁盘(或从 API 返回)。 + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Result you’ll see:** 一个名为 `result.zip` 的文件,内部仅包含一个条目 `output.pdf`。打开 PDF 可看到 `https://example.com` 的像素级完美快照,样式和图片完整保留。 + + + +*Image alt text: render html to pdf – 生成的 PDF 在 ZIP 存档中的截图。* + +## 完整工作示例 + +下面把所有步骤组合起来,给出完整的、可直接复制运行的程序: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### 预期结果 + +- **`result.zip`** 出现在 `C:\Temp`。 +- 在压缩包内部你会找到 **`output.pdf`**。 +- 打开 PDF 可看到来自 `https://example.com` 的实时页面,渲染忠实。 + +如果运行程序后 zip 为空,请再次确认 URL 可访问,并确保 Aspose.HTML 有权限下载外部资源(防火墙、代理设置等)。 + +## 常见问题与边缘情况 + +| Question | Answer | +|----------|--------| +| *What if the page references external fonts?* | Aspose.HTML 自动下载通过 `@font-face` 引用的网络字体。确保服务器能够访问这些字体的 URL。 | +| *Can I add multiple PDFs into the same ZIP?* | 可以——只需调用 `zipArchive.CreateEntry("report2.pdf")` 并将另一个 `HTMLDocument` 渲染到该流中。 | +| *How do I set a custom PDF filename?* | 更改传递给 `CreateEntry` 的字符串,例如 `CreateEntry("my‑invoice.pdf")`。 | +| *Is it safe to use this in a multi‑threaded web app?* | 每个请求应创建各自的 `MemoryStream` 和 `ZipArchive`。这些对象并非线程安全,共享实例会导致损坏。 | +| *What about large PDFs?* | 对于超过 100 MB 的 PDF,建议直接流式写入 HTTP 响应 (`Response.Body`) 而不是缓存在内存中。 | + +## 总结 + +我们已经演示了如何 **render HTML to PDF**、**convert URL to PDF**、**generate PDF from website**,以及最终 **zip PDF file**——全部在干净的内存工作流中完成。 + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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..a28b37487 100644 --- a/html/chinese/net/working-with-html-documents/_index.md +++ b/html/chinese/net/working-with-html-documents/_index.md @@ -37,7 +37,8 @@ HTML 文档是 Web 的支柱,能够有效地创建和操作 HTML 文档是任 现在,让我们将您的技能提升到一个新的水平。编辑 HTML 文档是 Web 开发人员的常见任务,而 Aspose.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/) +### [使用 CSS 和 C# 加粗标题 – 完整分步指南](./how-to-bold-heading-with-c-complete-step-by-step-guide/) +### [在 C# 中从字符串创建 HTML – 使用内存流的完整指南](./create-html-from-string-in-c-full-guide-with-memory-stream/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/chinese/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/chinese/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..3b0fa0678 --- /dev/null +++ b/html/chinese/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,276 @@ +--- +category: general +date: 2026-03-28 +description: 使用 Aspose.Html 从字符串创建 HTML 并将其捕获到流中。学习将 HTML 转换为字符串、自定义资源处理程序以及将 HTML + 写入流。 +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: zh +og_description: 使用 Aspose.Html 从字符串创建 HTML,将其捕获到内存中,并将 HTML 转换为字符串。自定义资源处理程序和将 HTML + 写入流的分步指南。 +og_title: 在 C# 中从字符串创建 HTML – 完整的 Memory‑Stream 教程 +tags: +- Aspose.Html +- C# +- MemoryStream +title: 在 C# 中从字符串创建 HTML – 使用内存流的完整指南 +url: /zh/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 C# 中从字符串创建 HTML – 完整指南(使用 Memory Stream) + +是否曾需要 **从字符串创建 HTML**,并且全部保存在内存中而不触及文件系统?你并不是唯一遇到这种情况的开发者。许多开发者在需要即时生成动态标记(例如邮件模板或 PDF 转换)时,会遇到这种障碍——他们不想在磁盘上留下临时文件。 + +好消息是?使用 Aspose.Html,你可以直接从字符串实例化一个 `HTMLDocument`,将其传递给 **自定义资源处理器**,并 **将 HTML 写入流** 以供后续使用。在本教程中,我们将逐步演示从最初的字符串到最终的 `string` 结果的每一步,并解释 *为什么* 每个环节都很重要。 + +阅读完本指南后,你将能够: + +* 使用 Aspose.Html **从字符串创建 HTML**。 +* **将 HTML 转换为字符串**,且不写入磁盘。 +* 使用自定义资源处理器 **捕获 HTML**。 +* **将 HTML 写入 `MemoryStream` 并读取回去**。 +* 识别常见陷阱并应用最佳实践技巧。 + +除 Aspose.Html 之外无需其他外部依赖——只需一个 .NET 项目和几行 using 语句。 + +--- + +## 前置条件 + +* .NET 6.0 或更高版本(代码同样适用于 .NET Framework)。 +* Aspose.Html for .NET NuGet 包(`Install-Package Aspose.Html`)。 +* 基础的 C# 知识——只要会写 `Console.WriteLine`,就足够了。 + +--- + +## 第一步:从字符串创建 HTML – 起点 + +我们首先需要一个原始的 HTML 字符串。可以把它想象成平时粘贴到 `.html` 文件中的骨架。 + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "`, vložíme do něj náš styl a nastavíme jeho textový obsah. + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +Když si prohlédnete `paragraph.OuterHtml`, uvidíte něco jako: + +```html +
Bold & Italic text
+``` + +Tento řádek demonstruje **add bold italic text** bez nutnosti psát surové CSS řetězce. + +## Krok 5: Připojit odstavec k tělu + +Nakonec **append element to body**. To je poslední část skládačky, která skutečně vykreslí odstavec na stránce. + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +Můžete také použít `htmlDoc.Body.InsertBefore` nebo `ReplaceChild`, pokud potřebujete složitější umístění. Pro většinu scénářů stačí jednoduchý `AppendChild`. + +## Krok 6: Výstup HTML řetězce (nebo uložení do souboru) + +Teď, když jsme DOM postavili, extrahujme finální HTML. Aspose.HTML vám umožní serializovat dokument jedním voláním. + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +Když otevřete `result.html` v prohlížeči, uvidíte jediný odstavec, který je zároveň tučný i kurzívní, přesně tak, jak jsme zamýšleli. + +### Očekávaný výstup + +```html + + + + +Bold & Italic text
+ + +``` + +Pokud generujete HTML pro e‑mail, stačí vložit `finalHtml` do těla e‑mailu a styl přežije většinu moderních klientů. + +## Běžné varianty a okrajové případy + +- **Více stylů:** Chcete přidat i barvu pozadí? Rozšiřte `CSSStyleDeclaration`: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **Různé elementy:** Místo `` můžete vytvořit `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +Spusťte tento program, otevřete `result.html` a uvidíte stylovaný odstavec vykreslený přesně tak, jak je popsáno. Žádné ruční řetězení řetězců, žádné křehké HTML literály – jen čistá, typově bezpečná manipulace s DOM. + +## Závěr + +Odpověděli jsme na **jak vytvořit HTML** od nuly pomocí Aspose.HTML, ukázali **append element to body**, představili **create paragraph element**, vysvětlili **add bold italic text** a probrali nuance **add css style programmatically**. + +Pokud vám tento vzor vyhovuje, můžete jej rozšířit na generování plnohodnotných stránek: tabulky, obrázky, dokonce interaktivní skripty. Stejné principy platí – definujte styly, vytvořte elementy, nastavte atributy a připojte je tam, kam patří. + +### Co dál? + +- **Dynamický obsah:** Načtěte data z databáze a v cyklu generujte řádky v tabulce. +- **Stylingové knihovny:** Kombinujte tento přístup s externími CSS soubory pro větší projekty. +- **Exportní možnosti:** Předávejte `HTMLDocument` přímo do Aspose.PDF nebo Aspose.Words a vytvářejte PDF nebo DOCX soubory bez mezikroku řetězce. + +Klidně experimentujte, rozbíjejte věci a pak je opravujte – to je nejrychlejší cesta, jak si osvojit DOM programování v C#. Máte otázky nebo jiný případ použití? Zanechte komentář níže a šťastné kódování! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/czech/net/rendering-html-documents/_index.md b/html/czech/net/rendering-html-documents/_index.md index 5e42f8047..f0d2e9183 100644 --- a/html/czech/net/rendering-html-documents/_index.md +++ b/html/czech/net/rendering-html-documents/_index.md @@ -69,6 +69,12 @@ Kompletní návod, jak pomocí Aspose.HTML v .NET převést HTML soubory do PNG ### [Vytvořte PNG z HTML – Kompletní průvodce renderováním v C#](./create-png-from-html-full-c-rendering-guide/) Naučte se, jak pomocí Aspose.HTML pro .NET převést HTML do PNG pomocí kompletního C# průvodce. +### [Vytvořte PDF dokument C# – Vykreslete HTML do PDF pomocí Aspose](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +Naučte se, jak pomocí Aspose.HTML v .NET převést HTML do PDF v C# s podrobnými ukázkami. + +### [Renderujte HTML do PDF a zabalte jej – Kompletní průvodce C#](./render-html-to-pdf-and-zip-it-complete-c-guide/) +Naučte se pomocí Aspose.HTML v .NET převést HTML do PDF a následně jej zkomprimovat do ZIP souboru v C#. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/czech/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/czech/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..eb062e7d3 --- /dev/null +++ b/html/czech/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,230 @@ +--- +category: general +date: 2026-03-28 +description: Vytvořte PDF dokument v C# pomocí Aspose HTML to PDF. Naučte se, jak + renderovat HTML do PDF, převádět HTML na PDF a povolit hintování pro Linux. +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: cs +og_description: Vytvořte PDF dokument v C# okamžitě. Tento průvodce ukazuje, jak renderovat + HTML do PDF, převést HTML na PDF a použít Aspose HTML to PDF s hintováním textu. +og_title: Vytvořte PDF dokument v C# – Převod HTML na PDF pomocí Aspose +tags: +- Aspose +- C# +- PDF generation +title: Vytvořte PDF dokument v C# – Převod HTML do PDF pomocí Aspose +url: /cs/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Vytvoření PDF dokumentu C# – Renderování HTML do PDF s Aspose + +Už jste někdy potřebovali **create PDF document C#** z dynamického HTML řetězce a přemýšleli, proč text vypadá rozmazaně na Linuxu? Nejste jediní, kdo si poškrábe hlavu. Dobrou zprávou je, že Aspose HTML to umožňuje snadno **render HTML to PDF**, a s několika dalšími možnostmi můžete získat ostré glyfy i na headless serverech. + +V tomto tutoriálu projdeme kompletním, připraveným příkladem, který **converts HTML to PDF** pomocí knihovny Aspose HTML pro .NET. Také se podíváme, proč byste mohli chtít povolit hinting, jak nastavit renderovací pipeline a co dělat, pokud budete později potřebovat přizpůsobit velikost stránky nebo DPI. Nepotřebujete žádnou externí dokumentaci – stačí zkopírovat, vložit a spustit. + +## Co budete potřebovat + +- **.NET 6+** (nebo .NET Framework 4.6.2+). Aspose HTML podporuje oba, ale níže uvedený příklad cílí na .NET 6 pro jednoduchost. +- **Aspose.HTML for .NET** NuGet balíček (`Aspose.Html`). Nainstalujte jej pomocí Package Manager Console: + + ```powershell + Install-Package Aspose.Html + ``` + +- **Linux nebo Windows** prostředí. Příznak hintingu je zvláště užitečný na Linuxu, ale kód funguje všude. +- IDE nebo editor dle vašeho výběru (Visual Studio, VS Code, Rider…). + +To je vše – žádné extra fonty, žádné PDF tiskové ovladače, jen jedna DLL. + +## Krok 1: Konfigurace možností renderování textu (Primary Keyword in Action) + +První věc, kterou uděláme, je říct Aspose, jak má zacházet s renderováním glyfů. Na Linuxu může výchozí rasterizér vytvářet rozmazané znaky, takže zapneme hinting. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**Proč?** +`UseHinting` nutí renderér zarovnat vektorové obrysy k pixelové mřížce, což eliminuje rozmazané hrany, které často vidíte v PDF generovaných v headless Linux kontejnerech. Vlastnost `FontSize` není povinná, ale poskytuje předvídatelný základ pro jakýkoli HTML, který nespecifikuje vlastní velikost. + +> **Pro tip:** Pokud cílíte pouze na Windows, můžete hinting přeskočit — Windows již automaticky používá sub‑pixelové renderování. + +## Krok 2: Připojení textových možností k nastavením PDF renderování + +Dále vytvoříme instanci `PdfRenderingOptions` a připojíme k ní `TextOptions`, které jsme právě nakonfigurovali. Tento objekt řídí celý proces konverze. + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**Proč je svázat?** +Objekt `PdfRenderingOptions` je mostem mezi HTML enginem a PDF zapisovačem. Při přiřazení `TextOptions` zde, každá vykreslená stránka zdědí konfiguraci hintingu, což zajišťuje konzistentní výstup v celém dokumentu. + +## Krok 3: Načtení vašeho HTML obsahu + +Aspose vám umožňuje předat HTML ze řetězce, souboru nebo dokonce URL. Pro tento tutoriál to zjednodušíme a použijeme řetězec v paměti. + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**Proč řetězec?** +Když generujete reporty za běhu (např. faktury, účtenky), často sestavujete HTML pomocí interpolace řetězců nebo šablonovacího enginu. Přímé předání řetězce eliminuje dočasné soubory a urychluje pipeline. + +## Krok 4: Uložení PDF s nakonfigurovanými možnostmi + +Nyní konečně zapíšeme PDF na disk. Metoda `Save` přijímá cílovou cestu a renderovací možnosti, které jsme připravili dříve. + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**Co uvidíte:** +Otevřete `hinted.pdf` v libovolném PDF prohlížeči. Odstavec „Hinted text on Linux“ by měl být ostrý, s fontem Arial vykresleným čistě. Na Linuxu si všimnete rozdílu oproti PDF generovanému bez `UseHinting`. + +> **Očekávaný výstup:** jednostránkové PDF obsahující odstavec v 14‑pt Arial, bez rozmazaných okrajů. + +### Kompletní funkční příklad + +Níže je kompletní program, který můžete zkopírovat do projektu konzolové aplikace. Obsahuje všechny using direktivy, ošetření chyb a komentáře pro přehlednost. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +Spusťte program (`dotnet run`) a získáte PDF připravené k distribuci, archivaci nebo dalšímu zpracování. + + + +## Často kladené otázky (FAQ) + +### Funguje to s **aspose html to pdf** na .NET Core? + +Ano. Stejná API vrstva je k dispozici napříč .NET Framework, .NET Core a .NET 5/6. Jen se ujistěte, že verze NuGet balíčku odpovídá vašemu cílovému frameworku. + +### Jak mohu **render HTML to PDF** s vlastní velikostí stránky? + +Vytvořte objekt `PdfPageSetup`, nastavte `Width`, `Height` nebo `Size` a přiřaďte jej k `pdfRenderOptions.PageSetup`. Příklad: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### Co když potřebuji **convert HTML to PDF** ve webovém API? + +Vraťte PDF jako `FileResult`: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### Můžu to použít pro **html to pdf c#** v Linux Docker kontejneru? + +Ano. Příznak hintingu je speciálně navržen pro headless Linux prostředí. Stačí nainstalovat balíček `libgdiplus`, pokud používáte Alpine, a konverze bude fungovat ihned. + +## Pokročilé úpravy (mimo základy) + +- **Embedding Fonts:** Pokud váš HTML odkazuje na vlastní fonty, zavolejte `htmlDoc.Fonts.Add("MyFont", fontBytes);` před renderováním. +- **Image Handling:** Povolte `pdfRenderOptions.ImageResolution = 300;` pro grafiku s vysokým DPI. +- **Security:** Použijte `PdfSaveOptions` k ochraně výstupu heslem (`PdfSaveOptions.Password = "secret";`). + +Tyto možnosti vám umožní proměnit jednoduchý úryvek **convert html to pdf** na službu připravenou do produkce. + +## Shrnutí + +Právě jsme ukázali, jak **create PDF document C#** pomocí renderování HTML s Aspose HTML, povolením hintingu textu pro ostřejší výstup na Linuxu, a uložení výsledku jedním voláním metody. Pokryté kroky: + +1. Nastavte `TextOptions` (hinting). +2. Připojte je k `PdfRenderingOptions`. +3. Načtěte HTML ze řetězce. +4. Uložte PDF. + +Nyní máte pevný základ pro jakýkoli scénář, který vyžaduje **aspose html to pdf**, **render html to pdf**, **convert html to pdf**, nebo **html to pdf c#**. Klidně experimentujte s rozvržením stránek, vloženými fonty nebo streamováním PDF přímo klientovi. + +--- + +**Další kroky:** +- Zkuste převést vícestránkový HTML report s tabulkami a obrázky. +- Prozkoumejte Aspose `PdfDocument` API pro post‑processing (přidání záložek, vodoznaků). +- Kombinujte tuto konverzi s frontou úloh na pozadí (např. Hangfire) pro generování PDF na vyžádání. + +Šťastné kódování a ať jsou vaše PDF vždy ostré! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/czech/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/czech/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..73c9c13b8 --- /dev/null +++ b/html/czech/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-28 +description: Vykreslete HTML do PDF přímo z URL a výsledek zkomprimujte do ZIP souboru. + Naučte se, jak převést URL na PDF, generovat PDF z webové stránky a zabalit PDF + soubor do ZIP v C#. +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: cs +og_description: Vykreslete HTML do PDF přímo z URL a poté PDF zkomprimujte do ZIP + souboru. Tento krok‑za‑krokem návod ukazuje, jak převést URL na PDF, vygenerovat + PDF z webové stránky a zabalit PDF soubor do ZIP v C#. +og_title: Vykreslete HTML do PDF a zkomprimujte – Kompletní průvodce C# +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: Převod HTML do PDF a zkomprimování – Kompletní průvodce C# +url: /cs/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Render HTML to PDF a Zip It – Kompletní průvodce v C# + +Už jste někdy potřebovali **renderovat HTML do PDF** za běhu a poté poslat soubor klientovi jako jeden archiv? Možná budujete službu pro reportování, která načte živou webovou stránku, převede ji na PDF a výsledek uloží do zipu pro snadné stažení. V tomto tutoriálu vás provedeme přesně tím – renderování vzdálené webové stránky do PDF a následné **komprimování PDF v zipu** bez jakéhokoli zápisu na disk. + +Také se podíváme na to, jak **převést URL na PDF**, **generovat PDF z webu** a nakonec **zabalit PDF soubor do zipu**, abyste jej mohli odeslat kamkoli potřebujete. Žádné zbytečnosti, jen funkční řešení, které můžete dnes vložit do projektu .NET 6+. + +## Co budete potřebovat + +- **.NET 6** nebo novější (kód funguje také s .NET Framework 4.6+). +- **Aspose.HTML for .NET** – knihovna, která provádí těžkou práci při renderování HTML → PDF. +- Základní zkušenost s C# – pokud umíte napsat `Console.WriteLine`, jste připraveni. +- IDE dle vlastního výběru (Visual Studio, Rider, VS Code…). + +> **Tip:** Aspose.HTML nabízí bezplatnou zkušební verzi, která obsahuje všechny funkce renderování. Stáhněte si ji z [Aspose webu](https://products.aspose.com/html/net/) ještě před začátkem. + +Nyní, když jsou předpoklady za námi, pojďme na to. + +## Krok 1 – Načtení vzdáleného HTML dokumentu (Convert URL to PDF) + +Prvním úkolem je říct Aspose.HTML, kde se nachází zdroj. V našem případě jde o veřejnou URL, ale můžete mu také předat řetězec s čistým HTML. + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Proč je to důležité:** Načtení dokumentu z URL způsobí, že renderer automaticky stáhne všechny propojené zdroje (CSS, obrázky, fonty) a vytvoří tak věrnou PDF repliku živé stránky. Přeskočení tohoto kroku a předání prostého řetězce by odebralo tyto assety, což zřídka kdy chcete při *generování PDF z webu*. + +## Krok 2 – Nastavení možností renderování PDF (Quality Matters) + +Aspose.HTML vám umožní doladit vzhled PDF. Antialiasing a font hinting jsou dvě nastavení, která zajistí ostrý výstup na obrazovce i v tisku. + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Proč tato nastavení:** Bez antialiasingu mohou čáry a vektorová grafika vypadat zubatě, zejména na displejích s vysokým DPI. Hinting naopak říká PDF enginu, jak zarovnat glyfy k pixelovým hranám – drobná úprava, která často přináší velký vizuální rozdíl. + +## Krok 3 – Příprava ZIP archivu v paměti (Zip PDF File) + +Místo toho, abychom nejprve zapisovali PDF na disk a pak jej zipovali – dvoustupňová I/O noční můra – budeme streamovat přímo do zipové položky. To vše zůstane v paměti, což je ideální pro webová API nebo background úlohy. + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Poznámka k okrajovým případům:** Pokud pracujete s obrovskými PDF (stovky MB), zvažte přímé streamování zipu do odpovědního proudu místo držení celého souboru v paměti. Pro typické reporty pod 20 MB je tento přístup bezpečný a rychlý. + +## Krok 4 – Streamování PDF přímo do ZIP položky + +Zde je ten chytrý trik: vytvoříme zipovou položku pojmenovanou `output.pdf` a předáme její stream Aspose.HTML. Renderer zapíše PDF bajty přímo do zipové položky – žádný dočasný soubor není potřeba. + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Proč to děláme takto:** Poskytnutím streamu, který ukazuje na zipovou položku, se vyhneme cyklu „zapsat na disk → zipovat → smazat“. Tím se snižuje I/O zátěž a eliminuje se riziko zanechání osamělých souborů na serveru. + +## Krok 5 – Dokončení ZIP a uložení + +Po zápisu PDF musíme uzavřít zipový archiv, aby se zapsal centrální adresář, a poté celý soubor uložit na disk (nebo vrátit z API). + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Výsledek, který uvidíte:** Soubor `result.zip` obsahující jedinou položku `output.pdf`. Otevření PDF ukáže pixel‑perfektní snímek `https://example.com` se všemi styly a obrázky. + + + +*Alt text obrázku: render html to pdf – snímek vygenerovaného PDF uvnitř ZIP archivu.* + +## Kompletní funkční příklad + +Spojením všech částí získáte kompletní, připravený program ke kopírování: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### Co můžete očekávat + +- **`result.zip`** se objeví v `C:\Temp`. +- V archivu najdete **`output.pdf`**. +- Otevřením PDF uvidíte živou stránku z `https://example.com` věrně vykreslenou. + +Pokud spustíte program a zip bude prázdný, zkontrolujte, zda je URL dostupná a zda má Aspose.HTML oprávnění stahovat externí zdroje (firewally, proxy nastavení atd.). + +## Často kladené otázky a okrajové případy + +| Otázka | Odpověď | +|----------|--------| +| *Co když stránka odkazuje na externí fonty?* | Aspose.HTML automaticky stáhne web‑fonty uvedené pomocí `@font-face`. Ujistěte se, že server může dosáhnout na URL fontů. | +| *Mohu přidat více PDF do stejného ZIP?* | Ano – stačí zavolat `zipArchive.CreateEntry("report2.pdf")` a renderovat další `HTMLDocument` do toho streamu. | +| *Jak nastavit vlastní název PDF souboru?* | Změňte řetězec předávaný do `CreateEntry`, např. `CreateEntry("my‑invoice.pdf")`. | +| *Je to bezpečné použít v multi‑threaded webové aplikaci?* | Každý požadavek by měl vytvořit vlastní `MemoryStream` a `ZipArchive`. Objekt není thread‑safe, takže sdílené instance povedou ke korupci. | +| *Co s velkými PDF?* | Pro PDF > 100 MB zvažte streamování přímo do HTTP odpovědi (`Response.Body`) místo bufferování v paměti. | + +## Závěr + +Ukázali jsme vám, jak **renderovat HTML do PDF**, **převést URL na PDF**, **generovat PDF z webu** a nakonec **zabalit PDF soubor do zipu** – vše v čistém, paměťově‑orientovaném workflow. + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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..886dbca8b 100644 --- a/html/czech/net/working-with-html-documents/_index.md +++ b/html/czech/net/working-with-html-documents/_index.md @@ -37,8 +37,11 @@ Jakmile pochopíte základy, ponoříme se hlouběji do procesu tvorby. V této Nyní posuňte vaše dovednosti na další úroveň. Úpravy HTML dokumentů jsou běžným úkolem webových vývojářů a Aspose.HTML tento proces výrazně zjednodušuje. V této části se budeme zabývat tvorbou dokumentu, manipulací s ním a stylováním. Zjistíte, jak vylepšit vzhled a funkčnost vašeho webového obsahu, aby byl poutavý a uživatelsky přívětivý. ### [Jak uložit HTML v C# – Kompletní průvodce pomocí vlastního resource handleru](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) + ### [Jak zvýraznit nadpis tučným písmem pomocí CSS a C# – Kompletní průvodce krok za krokem](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) +### [Vytvoření HTML ze řetězce v C# – Kompletní průvodce s Memory Stream](./create-html-from-string-in-c-full-guide-with-memory-stream/) + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/czech/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/czech/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..5d19b472d --- /dev/null +++ b/html/czech/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,278 @@ +--- +category: general +date: 2026-03-28 +description: Vytvořte HTML ze řetězce pomocí Aspose.Html a zachyťte jej do proudu. + Naučte se převádět HTML na řetězec, použít vlastní obslužný program zdrojů a zapisovat + HTML do proudu. +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: cs +og_description: Vytvořte HTML ze řetězce pomocí Aspose.Html, zachyťte jej v paměti + a převést HTML na řetězec. Podrobný návod krok za krokem pro vlastní zpracovatel + zdrojů a zápis HTML do proudu. +og_title: Vytvořte HTML z řetězce v C# – Kompletní tutoriál o Memory‑Stream +tags: +- Aspose.Html +- C# +- MemoryStream +title: Vytvořte HTML ze stringu v C# – Kompletní průvodce s MemoryStream +url: /cs/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Vytvoření HTML ze stringu v C# – Kompletní průvodce s Memory Stream + +Už jste někdy potřebovali **vytvořit HTML ze stringu** a mít vše v paměti, aniž byste se dotkli souborového systému? Nejste v tom sami. Mnoho vývojářů narazí na tento problém, když chtějí za běhu generovat dynamický markup – například pro e‑mailový šablonu nebo konverzi do PDF – a nechtějí mít dočasný soubor na disku. + +Dobrá zpráva? S Aspose.Html můžete vytvořit `HTMLDocument` přímo ze stringu, předat ho **vlastnímu resource handleru** a **zapsat HTML do streamu** pro pozdější použití. V tomto tutoriálu projdeme každý krok, od počátečního stringu až po finální výsledek `string`, a vysvětlíme *proč* je každá část důležitá. + +Na konci tohoto průvodce budete schopni: + +* Vytvořit HTML ze stringu pomocí Aspose.Html. +* Převést HTML na string bez zápisu na disk. +* Zachytit HTML pomocí vlastního resource handleru. +* Zapsat HTML do `MemoryStream` a přečíst jej zpět. +* Rozpoznat běžné úskalí a aplikovat tipy z osvědčených postupů. + +Žádné externí závislosti kromě Aspose.Html nejsou potřeba – stačí .NET projekt a několik `using` direktiv. + +--- + +## Požadavky + +* .NET 6.0 nebo novější (kód funguje i na .NET Framework). +* NuGet balíček Aspose.Html for .NET (`Install-Package Aspose.Html`). +* Základní znalost C# – pokud už jste někdy použili `Console.WriteLine`, jste připraveni. + +--- + +## Krok 1: Vytvoření HTML ze stringu – výchozí bod + +Prvním, co potřebujeme, je surový HTML string. Představte si ho jako kostru, kterou byste normálně vložili do souboru `.html`. + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "`‑tag, injecteren de stijl die we hebben gebouwd, en stellen de tekstinhoud in. + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +Als je `paragraph.OuterHtml` inspecteert, zie je iets als: + +```html +
Bold & Italic text
+``` + +Die regel demonstreert **add bold italic text** zonder ooit ruwe CSS‑strings te schrijven. + +## Stap 5: De alinea aan de body toevoegen + +Tot slot, we **append element to body**. Dit is het laatste puzzelstuk dat de alinea daadwerkelijk op de pagina rendert. + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +Je kunt ook `htmlDoc.Body.InsertBefore` of `ReplaceChild` aanroepen als je een complexere positionering nodig hebt. Voor de meeste scenario's volstaat een eenvoudige `AppendChild`. + +## Stap 6: De HTML‑string outputten (of opslaan naar bestand) + +Nu we de DOM hebben opgebouwd, laten we de uiteindelijke HTML extraheren. Aspose.HTML laat je het document serialiseren met één enkele aanroep. + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +Wanneer je `result.html` opent in een browser, zie je een enkele alinea die zowel vet als cursief is, precies zoals we bedoeld hebben. + +### Verwachte output + +```html + + + + +Bold & Italic text
+ + +``` + +Als je HTML genereert voor een e‑mail, plaats dan gewoon `finalHtml` in de e‑mail‑body en de styling zal de meeste moderne clients overleven. + +## Veelvoorkomende variaties & randgevallen + +- **Multiple Styles:** Wil je ook een achtergrondkleur toevoegen? Breid de `CSSStyleDeclaration` uit: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **Different Elements:** In plaats van een `` kun je een `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +Voer dit programma uit, open `result.html`, en je ziet de gestylede alinea precies zoals beschreven. Geen handmatige string‑concatenatie, geen fragiele HTML‑literals — gewoon schone, type‑veilige DOM‑manipulatie. + +## Afronding + +We hebben **how to create HTML** vanaf nul beantwoord met Aspose.HTML, **append element to body** gedemonstreerd, een duidelijke manier getoond om **create paragraph element** te gebruiken, **add bold italic text** uitgelegd, en de nuances van **add css style programmatically** behandeld. + +Als je vertrouwd bent met dit patroon, kun je het uitbreiden om volledige pagina's te genereren: tabellen, afbeeldingen, zelfs interactieve scripts. Dezelfde principes gelden — definieer stijlen, maak elementen, stel attributen in, en voeg ze toe waar ze horen. + +### Wat is het volgende? + +- **Dynamic Content:** Haal gegevens uit een database en loop om rijen in een tabel te genereren. +- **Styling Libraries:** Combineer deze aanpak met externe CSS‑bestanden voor grotere projecten. +- **Export Options:** Stuur het `HTMLDocument` direct naar Aspose.PDF of Aspose.Words om PDF‑ of DOCX‑bestanden te produceren zonder een tussenliggende string. + +Voel je vrij om te experimenteren, dingen kapot te maken en ze daarna te repareren — dat is de snelste manier om DOM‑programmering in C# te internaliseren. Heb je vragen of een ander gebruiksgeval? 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/rendering-html-documents/_index.md b/html/dutch/net/rendering-html-documents/_index.md index 088e7bab1..9fb7cf3d8 100644 --- a/html/dutch/net/rendering-html-documents/_index.md +++ b/html/dutch/net/rendering-html-documents/_index.md @@ -60,6 +60,10 @@ Leer hoe u met Aspose.HTML HTML naar PNG kunt renderen met een duidelijke stap Leer stap voor stap hoe u HTML naar PNG converteert met Aspose.HTML in deze volledige gids. ### [PNG maken vanuit HTML – Volledige C# Renderinggids](./create-png-from-html-full-c-rendering-guide/) Leer hoe u met Aspose.HTML voor .NET HTML naar PNG converteert met een volledige C#-renderinggids. +### [PDF-document maken in C# – HTML renderen naar PDF met Aspose](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +Leer hoe u met Aspose.HTML voor .NET HTML naar PDF converteert en een PDF-document genereert met C#. +### [HTML renderen naar PDF en zippen – Complete C#-gids](./render-html-to-pdf-and-zip-it-complete-c-guide/) +Leer stap voor stap hoe u HTML naar PDF rendert en vervolgens zipt met C# en Aspose.HTML in deze volledige gids. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/dutch/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/dutch/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..b46622365 --- /dev/null +++ b/html/dutch/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-03-28 +description: Maak een PDF‑document in C# met Aspose HTML naar PDF. Leer hoe je HTML + naar PDF rendert, HTML naar PDF converteert en hinting voor Linux inschakelt. +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: nl +og_description: Maak direct een PDF-document in C#. Deze gids laat zien hoe je HTML + naar PDF rendert, HTML naar PDF converteert en Aspose HTML naar PDF gebruikt met + teksthinting. +og_title: PDF-document maken in C# – HTML naar PDF renderen met Aspose +tags: +- Aspose +- C# +- PDF generation +title: PDF-document maken C# – HTML naar PDF renderen met Aspose +url: /nl/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF-document maken C# – HTML renderen naar PDF met Aspose + +Heb je ooit **PDF-document C#** moeten maken vanuit een dynamische HTML‑string en je afgevraagd waarom de tekst er wazig uitziet op Linux? Je bent niet de enige die zich afvraagt. Het goede nieuws is dat Aspose HTML het een fluitje van een cent maakt om **HTML naar PDF te renderen**, en met een paar extra opties kun je zelfs op headless servers razendscherpe glyphs krijgen. + +In deze tutorial lopen we een compleet, kant‑klaar voorbeeld door dat **HTML naar PDF converteert** met behulp van de Aspose HTML voor .NET bibliotheek. We behandelen ook waarom je hinting wilt inschakelen, hoe je de render‑pipeline opzet, en wat je moet doen als je later de paginagrootte of DPI wilt aanpassen. Geen externe documentatie nodig—gewoon kopiëren, plakken en uitvoeren. + +## Wat je nodig hebt + +- **.NET 6+** (of .NET Framework 4.6.2+). Aspose HTML ondersteunt beide, maar het voorbeeld hieronder richt zich op .NET 6 voor de eenvoud. +- **Aspose.HTML for .NET** NuGet‑pakket (`Aspose.Html`). Installeer het via de Package Manager Console: + + ```powershell + Install-Package Aspose.Html + ``` + +- Een **Linux‑ of Windows**‑omgeving. De hint‑vlag is vooral nuttig op Linux, maar de code werkt overal. +- Een IDE of editor naar keuze (Visual Studio, VS Code, Rider…). + +Dat is alles—geen extra lettertypen, geen PDF‑printerdrivers, slechts één enkele DLL. + +## Stap 1: Tekst‑renderopties configureren (Primary Keyword in Action) + +Het eerste wat we doen is Aspose vertellen hoe glyph‑rendering moet worden afgehandeld. Op Linux kan de standaard rasterizer vage tekens produceren, dus schakelen we hinting in. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**Waarom?** +`UseHinting` dwingt de renderer om vectorcontouren op het pixelraster uit te lijnen, waardoor de vage randen die je vaak ziet in PDF‑s die op headless Linux‑containers worden gegenereerd, verdwijnen. De `FontSize`‑eigenschap is niet verplicht, maar geeft je een voorspelbare basis voor elke HTML die geen eigen grootte opgeeft. + +> **Pro tip:** Als je alleen op Windows richt, kun je hinting overslaan—Windows past al automatisch sub‑pixel rendering toe. + +## Stap 2: Tekstopties koppelen aan PDF‑renderinstellingen + +Vervolgens maken we een `PdfRenderingOptions`‑instantie aan en koppelen we de `TextOptions` die we zojuist hebben geconfigureerd. Dit object regelt het volledige conversieproces. + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**Waarom koppelen?** +Het `PdfRenderingOptions`‑object is de brug tussen de HTML‑engine en de PDF‑schrijver. Door hier `TextOptions` toe te wijzen, erft elke gerenderde pagina de hint‑configuratie, waardoor consistente output over het hele document wordt gegarandeerd. + +## Stap 3: Laad je HTML‑inhoud + +Aspose laat je HTML invoeren vanuit een string, een bestand of zelfs een URL. Voor deze tutorial houden we het simpel en gebruiken we een in‑memory string. + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**Waarom een string?** +Wanneer je rapporten on‑the‑fly genereert (bijv. facturen, bonnen), stel je HTML vaak samen met string‑interpolatie of een templating‑engine. Een string direct doorgeven voorkomt tijdelijke bestanden en versnelt de pipeline. + +## Stap 4: Sla de PDF op met de geconfigureerde opties + +Nu schrijven we eindelijk de PDF naar schijf. De `Save`‑methode neemt het doelpad en de render‑opties die we eerder hebben voorbereid. + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**Wat je zult zien:** +Open `hinted.pdf` met een PDF‑viewer. De alinea “Hinted text on Linux” zou scherp moeten verschijnen, met het Arial‑lettertype netjes gerenderd. Op Linux zul je het verschil merken vergeleken met een PDF die zonder `UseHinting` is gegenereerd. + +> **Verwachte output:** een één‑pagina PDF met de alinea in 14‑pt Arial, zonder vage randen. + +### Volledig werkend voorbeeld + +Hieronder staat het volledige programma dat je kunt kopiëren naar een console‑app project. Het bevat alle using‑statements, foutafhandeling en commentaren voor duidelijkheid. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +Voer het programma uit (`dotnet run`), en je hebt een PDF klaar voor distributie, archivering of verdere verwerking. + + + +## Veelgestelde vragen (FAQ) + +### Werkt dit met **aspose html to pdf** op .NET Core? + +Absoluut. Hetzelfde API‑oppervlak wordt blootgesteld op .NET Framework, .NET Core en .NET 5/6. Zorg er alleen voor dat de NuGet‑pakketversie overeenkomt met je doel‑framework. + +### Hoe kan ik **HTML naar PDF renderen** met een aangepaste paginagrootte? + +Maak een `PdfPageSetup`‑object, stel `Width`, `Height` of `Size` in, en wijs het toe aan `pdfRenderOptions.PageSetup`. Voorbeeld: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### Wat als ik **HTML naar PDF moet converteren** in een web‑API? + +Retourneer de PDF als een `FileResult`: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### Kan ik dit gebruiken voor **html to pdf c#** in een Linux Docker‑container? + +Ja. De hint‑vlag is specifiek ontworpen voor headless Linux‑omgevingen. Installeer gewoon het `libgdiplus`‑pakket als je op Alpine bent, en de conversie werkt direct. + +## Geavanceerde aanpassingen (Voorbij de basis) + +- **Lettertypen insluiten:** Als je HTML aangepaste lettertypen verwijst, roep dan `htmlDoc.Fonts.Add("MyFont", fontBytes);` aan vóór het renderen. +- **Afbeeldingsverwerking:** Schakel `pdfRenderOptions.ImageResolution = 300;` in voor high‑DPI‑graphics. +- **Beveiliging:** Gebruik `PdfSaveOptions` om de output met een wachtwoord te beveiligen (`PdfSaveOptions.Password = "secret";`). + +Deze opties laten je een eenvoudige **convert html to pdf**‑snippet omzetten in een productie‑klare service. + +## Samenvatting + +We hebben zojuist laten zien hoe je **PDF-document C#** maakt door HTML te renderen met Aspose HTML, tekst‑hinting in te schakelen voor scherpere output op Linux, en het resultaat op te slaan met één methode‑aanroep. De behandelde stappen: + +1. Stel `TextOptions` in (hinting). +2. Koppel ze aan `PdfRenderingOptions`. +3. Laad HTML vanuit een string. +4. Sla de PDF op. + +Nu heb je een solide basis voor elk scenario dat **aspose html to pdf**, **render html to pdf**, **convert html to pdf**, of **html to pdf c#** vereist. Voel je vrij om te experimenteren met paginalay-outs, ingesloten lettertypen, of het streamen van de PDF direct naar een client. + +--- + +**Volgende stappen:** +- Probeer een meer‑pagina HTML‑rapport met tabellen en afbeeldingen te converteren. +- Verken Aspose’s `PdfDocument`‑API voor post‑processing (boekmerken, watermerken toevoegen). +- Combineer deze conversie met een achtergrond‑taak‑queue (bijv. Hangfire) om PDF’s op aanvraag te genereren. + +Veel plezier met coderen, en moge je PDF’s altijd scherp zijn! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/dutch/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/dutch/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..5c36c055e --- /dev/null +++ b/html/dutch/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-28 +description: Render HTML naar PDF direct vanuit een URL en comprimeer het resultaat + in een ZIP‑bestand. Leer hoe je een URL naar PDF converteert, een PDF genereert + van een website en een PDF‑bestand zipt in C#. +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: nl +og_description: Render HTML naar PDF direct vanuit een URL en comprimeer vervolgens + de PDF tot een ZIP‑bestand. Deze stapsgewijze tutorial laat zien hoe je een URL + naar PDF converteert, een PDF genereert van een website en een PDF‑bestand zipt + in C#. +og_title: Render HTML naar PDF en zip het – Complete C#‑gids +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: Render HTML naar PDF en zip het – Complete C#‑gids +url: /nl/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Render HTML naar PDF en Zip het – Complete C# Gids + +Heb je ooit **HTML naar PDF** moeten renderen on-the-fly en vervolgens het bestand naar een client sturen als één enkel archief? Misschien bouw je een rapportageservice die een live webpagina ophaalt, deze omzet in een PDF, en het resultaat opslaat in een zip voor eenvoudige download. In deze tutorial lopen we precies dat door—een externe webpagina renderen naar PDF, en vervolgens **de PDF comprimeren in een zip** zonder ooit de schijf te raken. + +We behandelen ook hoe je **URL naar PDF** kunt **converteren**, **PDF kunt genereren van een website**, en uiteindelijk **PDF‑bestand zippen** zodat je het overal kunt verzenden waar je maar wilt. Geen poespas, alleen een werkende oplossing die je vandaag nog in een .NET 6+ project kunt gebruiken. + +## Wat je nodig hebt + +- **.NET 6** of later (de code werkt ook met .NET Framework 4.6+). +- **Aspose.HTML for .NET** – de bibliotheek die het zware werk doet voor HTML‑naar‑PDF rendering. +- Een bescheiden hoeveelheid C#‑ervaring—als je een `Console.WriteLine` kunt schrijven, ben je klaar. +- Een IDE naar keuze (Visual Studio, Rider, VS Code…). + +> **Pro tip:** Aspose.HTML biedt een gratis proefversie die alle renderfuncties bevat. Haal het van de [Aspose website](https://products.aspose.com/html/net/) voordat je begint. + +Nu de vereisten geregeld zijn, duiken we erin. + +## Stap 1 – Laad het externe HTML-document (URL naar PDF converteren) + +Het eerste wat we moeten doen is Aspose.HTML vertellen waar de bron zich bevindt. In ons geval is het een openbare URL, maar je kunt het net zo gemakkelijk een string met ruwe HTML geven. + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Waarom dit belangrijk is:** Het laden van het document vanaf een URL betekent dat de renderer alle gekoppelde bronnen (CSS, afbeeldingen, lettertypen) automatisch ophaalt, waardoor je een getrouwe PDF-replicatie van de live site krijgt. Deze stap overslaan en een gewone string geven zou die assets verwijderen, wat zelden is wat je wilt wanneer je *PDF genereert van een website*. + +## Stap 2 – Configureer PDF-renderopties (Kwaliteit telt) + +Aspose.HTML laat je aanpassen hoe de PDF eruitziet. Antialiasing en font hinting zijn twee instellingen die de output scherp laten lijken op scherm en in print. + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Waarom we dit instellen:** Zonder antialiasing kunnen lijntekeningen en vectorafbeeldingen er gekarteld uitzien, vooral op high‑DPI displays. Hinting daarentegen vertelt de PDF-engine hoe glyphs op pixelranden uitgelijnd moeten worden, een kleine aanpassing die vaak een groot visueel verschil maakt. + +## Stap 3 – Bereid een in‑memory ZIP‑archief voor (PDF zippen) + +In plaats van de PDF eerst naar schijf te schrijven en daarna te zippen—een twee‑stappen I/O nachtmerrie—streamen we direct naar een zip‑entry. Dit houdt alles in het geheugen, wat perfect is voor web‑API’s of achtergrondtaken. + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Opmerking voor randgevallen:** Als je met enorme PDF’s (honderden MB) werkt, overweeg dan om de zip direct naar een response‑stream te pipen in plaats van het geheel in het geheugen te houden. Voor typische rapporten onder 20 MB is deze aanpak veilig en snel. + +## Stap 4 – Stream de PDF direct in een ZIP‑entry + +Dit is het slimme deel: we maken een zip‑entry met de naam `output.pdf` en geven de stream ervan terug aan Aspose.HTML. De renderer schrijft de PDF‑bytes direct in de zip‑entry—geen tijdelijk bestand nodig. + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Waarom we het op deze manier doen:** Door de PDF‑writer een stream te geven die naar een zip‑entry wijst, vermijden we de “schrijf‑naar‑schijf → zip → verwijder” cyclus. Dit vermindert niet alleen I/O‑overhead maar elimineert ook het risico op achtergebleven bestanden op de server. + +## Stap 5 – Voltooi de ZIP en sla deze op + +Nadat de PDF is geschreven, moeten we het zip‑archief sluiten zodat de centrale directory wordt weggeschreven, en vervolgens het geheel naar schijf schrijven (of teruggeven vanuit een API). + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Resultaat dat je ziet:** Een bestand genaamd `result.zip` met één entry `output.pdf`. Het openen van de PDF toont een pixel‑perfecte weergave van `https://example.com`, compleet met stijlen en afbeeldingen. + + + +*Afbeeldingsalt‑tekst: render html to pdf – screenshot van gegenereerde PDF in een ZIP‑archief.* + +## Volledig werkend voorbeeld + +Alles bij elkaar, hier is het volledige, kant‑klaar programma: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### Wat je kunt verwachten + +- **`result.zip`** verschijnt in `C:\Temp`. +- In het archief vind je **`output.pdf`**. +- Het openen van de PDF toont de live pagina van `https://example.com` getrouw gerenderd. + +Als je het programma uitvoert en de zip is leeg, controleer dan of de URL bereikbaar is en of Aspose.HTML toestemming heeft om externe bronnen te downloaden (firewalls, proxy‑instellingen, enz.). + +## Veelgestelde vragen & randgevallen + +| Vraag | Antwoord | +|----------|--------| +| *Wat als de pagina externe lettertypen verwijst?* | Aspose.HTML downloadt automatisch web‑fonts die via `@font-face` worden verwezen. Zorg ervoor dat de server de font‑URL’s kan bereiken. | +| *Kan ik meerdere PDF’s toevoegen aan dezelfde ZIP?* | Ja—roep gewoon `zipArchive.CreateEntry("report2.pdf")` aan en render een andere `HTMLDocument` naar die stream. | +| *Hoe stel ik een aangepaste PDF‑bestandsnaam in?* | Verander de string die aan `CreateEntry` wordt doorgegeven, bijv. `CreateEntry("my‑invoice.pdf")`. | +| *Is het veilig om dit te gebruiken in een multi‑threaded web‑app?* | Elke request moet zijn eigen `MemoryStream` en `ZipArchive` aanmaken. De objecten zijn niet thread‑safe, dus gedeelde instanties veroorzaken corruptie. | +| *Wat als de PDF’s groot zijn?* | Voor > 100 MB PDF’s, overweeg direct te streamen naar de HTTP‑response (`Response.Body`) in plaats van te bufferen in het geheugen. | + +## Afronding + +We hebben je zojuist laten zien hoe je **HTML naar PDF rendert**, **URL naar PDF converteert**, **PDF genereert van een website**, en uiteindelijk **PDF‑bestand zippt**—alles in een schone, in‑memory workflow. + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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..f5a193396 100644 --- a/html/dutch/net/working-with-html-documents/_index.md +++ b/html/dutch/net/working-with-html-documents/_index.md @@ -39,6 +39,8 @@ Laten we nu uw vaardigheden naar een hoger niveau tillen. Het bewerken van HTML- ### [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/) +### [HTML maken vanuit string in C# – Volledige gids met Memory Stream](./create-html-from-string-in-c-full-guide-with-memory-stream/) + Leer hoe u met CSS en C# kopteksten vet maakt in een .NET‑applicatie, stap voor stap met voorbeeldcode. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/dutch/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/dutch/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..276c3fcbc --- /dev/null +++ b/html/dutch/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,278 @@ +--- +category: general +date: 2026-03-28 +description: Maak HTML van een string met Aspose.Html en leg het vast in een stream. + Leer hoe je HTML naar een string converteert, een aangepaste resourcehandler gebruikt + en HTML naar een stream schrijft. +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: nl +og_description: Maak HTML van een string met Aspose.Html, leg het vast in het geheugen + en converteer HTML naar een string. Stapsgewijze handleiding voor een aangepaste + resourcehandler en het schrijven van HTML naar een stream. +og_title: HTML maken vanuit een string in C# – Complete Memory‑Stream‑tutorial +tags: +- Aspose.Html +- C# +- MemoryStream +title: HTML genereren vanuit een string in C# – Volledige gids met Memory Stream +url: /nl/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML maken vanuit string in C# – Volledige gids met Memory Stream + +Heb je ooit **HTML moeten maken vanuit een string** en alles in het geheugen willen houden zonder het bestandssysteem aan te raken? Je bent niet de enige. Veel ontwikkelaars lopen tegen dit obstakel aan wanneer ze dynamische markup on‑the‑fly willen genereren — bijvoorbeeld voor een e‑mailtemplate of een PDF‑conversie — maar geen tijdelijk bestand op de schijf willen laten liggen. + +Het goede nieuws? Met Aspose.Html kun je een `HTMLDocument` direct vanuit een string opzetten, deze doorgeven aan een **aangepaste resource‑handler**, en **HTML naar stream schrijven** voor later gebruik. In deze tutorial lopen we elke stap door, van de initiële string tot het uiteindelijke `string`‑resultaat, en leggen we *waarom* elk onderdeel belangrijk is. + +Aan het einde van deze gids kun je: + +* HTML maken vanuit string met Aspose.Html. +* HTML omzetten naar string zonder naar schijf te schrijven. +* HTML vastleggen met een aangepaste resource‑handler. +* HTML naar een `MemoryStream` schrijven en deze weer uitlezen. +* Veelvoorkomende valkuilen herkennen en best‑practice tips toepassen. + +Er zijn geen externe afhankelijkheden nodig buiten Aspose.Html — alleen een .NET‑project en een paar `using`‑statements. + +--- + +## Prerequisites + +* .NET 6.0 of later (de code werkt ook op .NET Framework). +* Aspose.Html for .NET NuGet‑package (`Install-Package Aspose.Html`). +* Basiskennis van C# — als je eerder een `Console.WriteLine` hebt geschreven, ben je klaar. + +--- + +## Stap 1: HTML maken vanuit string – het startpunt + +Het eerste wat we nodig hebben is een ruwe HTML‑string. Beschouw het als het skelet dat je normaal in een `.html`‑bestand zou plakken. + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "` tag, inject the style we built, and set its text content. + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +If you inspect `paragraph.OuterHtml` you’ll see something like: + +```html +
Bold & Italic text
+``` + +That line demonstrates **add bold italic text** without ever writing raw CSS strings. + +## Step 5: Append the Paragraph to the Body + +Finally, we **append element to body**. This is the last piece of the puzzle that actually renders the paragraph on the page. + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +You could also call `htmlDoc.Body.InsertBefore` or `ReplaceChild` if you needed more complex positioning. For most scenarios, a simple `AppendChild` does the trick. + +## Step 6: Output the HTML String (or Save to File) + +Now that we’ve built the DOM, let’s extract the final HTML. Aspose.HTML lets you serialize the document with a single call. + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +When you open `result.html` in a browser you’ll see a single paragraph that is both bold and italic, exactly as we intended. + +### Expected Output + +```html + + + + +Bold & Italic text
+ + +``` + +If you’re generating HTML for an email, just drop `finalHtml` into your email body and the styling will survive most modern clients. + +## Common Variations & Edge Cases + +- **Multiple Styles:** Want to add a background color as well? Extend the `CSSStyleDeclaration`: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **Different Elements:** Instead of a ``, you could create a `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +Run this program, open `result.html`, and you’ll see the styled paragraph rendered exactly as described. No manual string concatenation, no fragile HTML literals—just clean, type‑safe DOM manipulation. + +## Wrapping Up + +We’ve answered **how to create HTML** from scratch using Aspose.HTML, demonstrated **append element to body**, showed a clear way to **create paragraph element**, explained **add bold italic text**, and covered the nuances of **add css style programmatically**. + +If you’re comfortable with this pattern, you can expand it to generate full‑blown pages: tables, images, even interactive scripts. The same principles apply—define styles, create elements, set attributes, and append them where they belong. + +### What’s Next? + +- **Dynamic Content:** Pull data from a database and loop to generate rows in a table. +- **Styling Libraries:** Combine this approach with external CSS files for larger projects. +- **Export Options:** Feed the `HTMLDocument` directly into Aspose.PDF or Aspose.Words to produce PDFs or DOCX files without an intermediate string. + +Feel free to experiment, break things, and then fix them—that’s the fastest way to internalize DOM programming in C#. Got questions or a different use‑case? Drop a comment below, and happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/english/net/rendering-html-documents/_index.md b/html/english/net/rendering-html-documents/_index.md index e7f281cce..07a837570 100644 --- a/html/english/net/rendering-html-documents/_index.md +++ b/html/english/net/rendering-html-documents/_index.md @@ -48,6 +48,10 @@ Step-by-step C# guide to render HTML pages as PNG images using Aspose.HTML for . Step by step guide to render HTML to PNG using Aspose.HTML for .NET. Learn the process, code examples, and best practices. ### [How to Render HTML to PNG with Aspose – Complete Guide](./how-to-render-html-to-png-with-aspose-complete-guide/) Comprehensive guide to render HTML to PNG using Aspose.HTML for .NET. Includes code examples and best practices. +### [Create PDF Document C# – Render HTML to PDF with Aspose](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +Learn how to generate PDF documents from HTML using Aspose.HTML for .NET with a step‑by‑step C# guide. +### [Render HTML to PDF and Zip It – Complete C# Guide](./render-html-to-pdf-and-zip-it-complete-c-guide/) +Learn how to render HTML to PDF and compress it into a ZIP file using Aspose.HTML for .NET with a step‑by‑step C# guide. ### [Create PNG from HTML – Full C# Rendering Guide](./create-png-from-html-full-c-rendering-guide/) Learn how to generate high-quality PNG images from HTML using Aspose.HTML for .NET with a complete C# rendering guide. ### [Render EPUB as XPS in .NET with Aspose.HTML](./render-epub-as-xps/) diff --git a/html/english/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/english/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..fef8f2572 --- /dev/null +++ b/html/english/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-03-28 +description: Create PDF document C# using Aspose HTML to PDF. Learn how to render + HTML to PDF, convert HTML to PDF, and enable hinting for Linux. +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: en +og_description: Create PDF document C# instantly. This guide shows how to render HTML + to PDF, convert HTML to PDF, and use Aspose HTML to PDF with text hinting. +og_title: Create PDF Document C# – Render HTML to PDF with Aspose +tags: +- Aspose +- C# +- PDF generation +title: Create PDF Document C# – Render HTML to PDF with Aspose +url: /net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Create PDF Document C# – Render HTML to PDF with Aspose + +Ever needed to **create PDF document C#** from a dynamic HTML string and wondered why the text looks fuzzy on Linux? You're not the only one scratching your head. The good news is that Aspose HTML makes it a breeze to **render HTML to PDF**, and with a couple of extra options you can get razor‑sharp glyphs even on headless servers. + +In this tutorial we’ll walk through a complete, ready‑to‑run example that **converts HTML to PDF** using the Aspose HTML for .NET library. We'll also cover why you might want to enable hinting, how to set up the rendering pipeline, and what to do if you need to customize page size or DPI later on. No external docs required—just copy, paste, and run. + +## What You’ll Need + +- **.NET 6+** (or .NET Framework 4.6.2+). Aspose HTML supports both, but the example below targets .NET 6 for simplicity. +- **Aspose.HTML for .NET** NuGet package (`Aspose.Html`). Install it via the Package Manager Console: + + ```powershell + Install-Package Aspose.Html + ``` + +- A **Linux or Windows** environment. The hinting flag is especially useful on Linux, but the code works everywhere. +- An IDE or editor of your choice (Visual Studio, VS Code, Rider…). + +That’s it—no extra fonts, no PDF printer drivers, just a single DLL. + +## Step 1: Configure Text Rendering Options (Primary Keyword in Action) + +The first thing we do is tell Aspose how to handle glyph rendering. On Linux the default rasterizer can produce blurry characters, so we turn on hinting. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**Why?** +`UseHinting` forces the renderer to align vector outlines to the pixel grid, which eliminates the fuzzy edges you often see in PDFs generated on headless Linux containers. The `FontSize` property isn’t mandatory, but it gives you a predictable baseline for any HTML that doesn’t specify its own size. + +> **Pro tip:** If you’re targeting Windows only, you can skip hinting—Windows already applies sub‑pixel rendering automatically. + +## Step 2: Attach Text Options to PDF Rendering Settings + +Next we create a `PdfRenderingOptions` instance and plug the `TextOptions` we just configured. This object governs the whole conversion process. + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**Why bind them?** +The `PdfRenderingOptions` object is the bridge between the HTML engine and the PDF writer. By assigning `TextOptions` here, every page rendered will inherit the hinting configuration, ensuring consistent output across the entire document. + +## Step 3: Load Your HTML Content + +Aspose lets you feed HTML from a string, a file, or even a URL. For this tutorial we’ll keep it simple and use an in‑memory string. + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**Why a string?** +When you generate reports on the fly (e.g., invoices, receipts), you often assemble HTML using string interpolation or a templating engine. Passing a string directly avoids temporary files and speeds up the pipeline. + +## Step 4: Save the PDF with the Configured Options + +Now we finally write the PDF to disk. The `Save` method takes the target path and the rendering options we prepared earlier. + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**What you’ll see:** +Open `hinted.pdf` with any PDF viewer. The paragraph “Hinted text on Linux” should appear crisp, with the Arial font rendered cleanly. On Linux you’ll notice the difference compared to a PDF generated without `UseHinting`. + +> **Expected output:** a single‑page PDF containing the paragraph in 14‑pt Arial, with no blurry edges. + +### Full Working Example + +Below is the complete program you can copy into a console app project. It includes all using statements, error handling, and comments for clarity. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +Run the program (`dotnet run`), and you’ll have a PDF ready for distribution, archiving, or further processing. + + + +## Frequently Asked Questions (FAQ) + +### Does this work with **aspose html to pdf** on .NET Core? +Absolutely. The same API surface is exposed across .NET Framework, .NET Core, and .NET 5/6. Just make sure the NuGet package version matches your target framework. + +### How can I **render HTML to PDF** with custom page size? +Create a `PdfPageSetup` object, set `Width`, `Height`, or `Size`, and assign it to `pdfRenderOptions.PageSetup`. Example: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### What if I need to **convert HTML to PDF** in a web API? +Return the PDF as a `FileResult`: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### Can I use this for **html to pdf c#** in a Linux Docker container? +Yes. The hinting flag is specifically designed for headless Linux environments. Just install the `libgdiplus` package if you’re on Alpine, and the conversion will work out of the box. + +## Advanced Tweaks (Beyond the Basics) + +- **Embedding Fonts:** If your HTML references custom fonts, call `htmlDoc.Fonts.Add("MyFont", fontBytes);` before rendering. +- **Image Handling:** Enable `pdfRenderOptions.ImageResolution = 300;` for high‑DPI graphics. +- **Security:** Use `PdfSaveOptions` to password‑protect the output (`PdfSaveOptions.Password = "secret";`). + +These options let you turn a simple **convert html to pdf** snippet into a production‑ready service. + +## Recap + +We just demonstrated how to **create PDF document C#** by rendering HTML with Aspose HTML, enabling text hinting for sharper output on Linux, and saving the result with a single method call. The steps covered: + +1. Set up `TextOptions` (hinting). +2. Attach them to `PdfRenderingOptions`. +3. Load HTML from a string. +4. Save the PDF. + +Now you have a solid foundation for any scenario that requires **aspose html to pdf**, **render html to pdf**, **convert html to pdf**, or **html to pdf c#**. Feel free to experiment with page layouts, embedded fonts, or streaming the PDF directly to a client. + +--- + +**Next steps:** +- Try converting a multi‑page HTML report with tables and images. +- Explore Aspose’s `PdfDocument` API for post‑processing (adding bookmarks, watermarks). +- Combine this conversion with a background job queue (e.g., Hangfire) to generate PDFs on demand. + +Happy coding, and may your PDFs always be crisp! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/english/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/english/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..3fa178805 --- /dev/null +++ b/html/english/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-28 +description: Render HTML to PDF directly from a URL and compress the result into a + ZIP file. Learn how to convert URL to PDF, generate PDF from website, and zip PDF + file in C#. +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: en +og_description: Render HTML to PDF directly from a URL, then compress the PDF into + a ZIP file. This step‑by‑step tutorial shows how to convert URL to PDF, generate + PDF from website, and zip PDF file in C#. +og_title: Render HTML to PDF and Zip It – Complete C# Guide +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: Render HTML to PDF and Zip It – Complete C# Guide +url: /net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Render HTML to PDF and Zip It – Complete C# Guide + +Ever needed to **render HTML to PDF** on the fly and then send the file to a client as a single archive? Maybe you're building a reporting service that pulls a live webpage, turns it into a PDF, and stores the result in a zip for easy download. In this tutorial we’ll walk through exactly that—rendering a remote web page to PDF, then **compressing the PDF in a zip** without ever touching the disk. + +We'll also cover how to **convert URL to PDF**, **generate PDF from website**, and finally **zip PDF file** so you can ship it wherever you need. No fluff, just a working solution you can drop into a .NET 6+ project today. + +## What You’ll Need + +- **.NET 6** or later (the code works with .NET Framework 4.6+ as well). +- **Aspose.HTML for .NET** – the library that does the heavy lifting for HTML‑to‑PDF rendering. +- A modest amount of C# experience—if you can write a `Console.WriteLine`, you’re good to go. +- An IDE of your choice (Visual Studio, Rider, VS Code…). + +> **Pro tip:** Aspose.HTML offers a free trial that includes all rendering features. Grab it from the [Aspose website](https://products.aspose.com/html/net/) before you start. + +Now that the prerequisites are out of the way, let’s dive in. + +## Step 1 – Load the Remote HTML Document (Convert URL to PDF) + +The first thing we have to do is tell Aspose.HTML where the source lives. In our case it’s a public URL, but you could just as easily feed it a string containing raw HTML. + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Why this matters:** Loading the document from a URL means the renderer will fetch all linked resources (CSS, images, fonts) automatically, giving you a faithful PDF replica of the live site. Skipping this step and feeding a plain string would strip away those assets, which is rarely what you want when you *generate PDF from website*. + +## Step 2 – Configure PDF Rendering Options (Quality Matters) + +Aspose.HTML lets you tweak how the PDF looks. Antialiasing and font hinting are two settings that make the output look crisp on screen and in print. + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Why we set these:** Without antialiasing, line art and vector graphics can appear jagged, especially on high‑DPI displays. Hinting, on the other hand, tells the PDF engine how to align glyphs to pixel boundaries, a tiny tweak that often makes a big visual difference. + +## Step 3 – Prepare an In‑Memory ZIP Archive (Zip PDF File) + +Instead of writing the PDF to disk first and then zipping it—a two‑step I/O nightmare—we’ll stream straight into a zip entry. This keeps everything in memory, which is perfect for web APIs or background jobs. + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Edge case note:** If you’re dealing with massive PDFs (hundreds of MB), consider piping the zip directly to a response stream instead of keeping the whole thing in memory. For typical reports under 20 MB, this approach is safe and fast. + +## Step 4 – Stream the PDF Directly into a ZIP Entry + +Here’s the clever part: we create a zip entry named `output.pdf` and hand its stream back to Aspose.HTML. The renderer writes the PDF bytes straight into the zip entry—no temporary file needed. + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Why we do it this way:** By feeding the PDF writer a stream that points at a zip entry, we avoid the “write‑to‑disk → zip → delete” cycle. This not only reduces I/O overhead but also eliminates the risk of leaving stray files on the server. + +## Step 5 – Finalize the ZIP and Persist It + +After the PDF is written, we need to close the zip archive so the central directory gets flushed, then write the whole thing to disk (or return it from an API). + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Result you’ll see:** A file called `result.zip` containing a single entry `output.pdf`. Opening the PDF shows a pixel‑perfect snapshot of `https://example.com`, complete with styles and images. + + + +*Image alt text: render html to pdf – screenshot of generated PDF inside a ZIP archive.* + +## Full Working Example + +Putting it all together, here’s the complete, copy‑paste‑ready program: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### What to Expect + +- **`result.zip`** appears in `C:\Temp`. +- Inside the archive you’ll find **`output.pdf`**. +- Opening the PDF shows the live page from `https://example.com` rendered faithfully. + +If you run the program and the zip is empty, double‑check that the URL is reachable and that Aspose.HTML has permission to download external resources (firewalls, proxy settings, etc.). + +## Common Questions & Edge Cases + +| Question | Answer | +|----------|--------| +| *What if the page references external fonts?* | Aspose.HTML automatically downloads web‑fonts referenced via `@font-face`. Ensure the server can reach the font URLs. | +| *Can I add multiple PDFs into the same ZIP?* | Yes—just call `zipArchive.CreateEntry("report2.pdf")` and render another `HTMLDocument` into that stream. | +| *How do I set a custom PDF filename?* | Change the string passed to `CreateEntry`, e.g., `CreateEntry("my‑invoice.pdf")`. | +| *Is it safe to use this in a multi‑threaded web app?* | Each request should create its own `MemoryStream` and `ZipArchive`. The objects are not thread‑safe, so shared instances will cause corruption. | +| *What about large PDFs?* | For > 100 MB PDFs, consider streaming directly to the HTTP response (`Response.Body`) instead of buffering in memory. | + +## Wrapping Up + +We’ve just shown you how to **render HTML to PDF**, **convert URL to PDF**, **generate PDF from website**, and finally **zip PDF file**—all in a clean, in‑memory workflow. + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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..513770eaf 100644 --- a/html/english/net/working-with-html-documents/_index.md +++ b/html/english/net/working-with-html-documents/_index.md @@ -38,6 +38,7 @@ Now, let's take your skills to the next level. Editing HTML documents is a commo ### [How to Save HTML in C# – Complete Guide Using a Custom Resource Handler](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) ### [How to Bold Heading with CSS & C# – Complete Step‑by‑Step Guide](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) +### [Create HTML from string in C# – Full Guide with Memory Stream](./create-html-from-string-in-c-full-guide-with-memory-stream/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/english/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/english/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..54023d4b4 --- /dev/null +++ b/html/english/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,277 @@ +--- +category: general +date: 2026-03-28 +description: Create HTML from string using Aspose.Html and capture it to a stream. + Learn to convert HTML to string, custom resource handler and write HTML to stream. +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: en +og_description: Create HTML from string with Aspose.Html, capture it in memory, and + convert HTML to string. Step‑by‑step guide for custom resource handler and writing + HTML to stream. +og_title: Create HTML from string in C# – Complete Memory‑Stream Tutorial +tags: +- Aspose.Html +- C# +- MemoryStream +title: Create HTML from string in C# – Full Guide with Memory Stream +url: /net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Create HTML from string in C# – Full Guide with Memory Stream + +Ever needed to **create HTML from string** and keep everything in memory without touching the file system? You're not the only one. Many developers hit this roadblock when they want to generate dynamic markup on the fly—say for an email template or a PDF conversion—yet they don't want a temporary file littering the disk. + +The good news? With Aspose.Html you can spin up an `HTMLDocument` straight from a string, feed it into a **custom resource handler**, and **write HTML to stream** for later use. In this tutorial we’ll walk through every step, from the initial string to the final `string` result, and explain *why* each piece matters. + +By the end of this guide you’ll be able to: + +* Create HTML from string using Aspose.Html. +* Convert HTML to string without writing to disk. +* Capture HTML with a custom resource handler. +* Write HTML to a `MemoryStream` and read it back. +* Spot common pitfalls and apply best‑practice tips. + +No external dependencies beyond Aspose.Html are required—just a .NET project and a few using statements. + +--- + +## Prerequisites + +* .NET 6.0 or later (the code works on .NET Framework as well). +* Aspose.Html for .NET NuGet package (`Install-Package Aspose.Html`). +* Basic C# knowledge—if you’ve written a `Console.WriteLine` before, you’re good. + +--- + +## Step 1: Create HTML from string – the starting point + +The first thing we need is a raw HTML string. Think of it as the skeleton you’d normally paste into an `.html` file. + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "`, injecter le style que nous avons créé, et définir son contenu texte. + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +Si vous inspectez `paragraph.OuterHtml`, vous verrez quelque chose comme : + +```html +
Bold & Italic text
+``` + +Cette ligne montre **add bold italic text** sans jamais écrire de chaînes CSS brutes. + +## Étape 5 : Ajouter le paragraphe au corps + +Enfin, nous **append element to body**. C’est la dernière pièce du puzzle qui rend réellement le paragraphe sur la page. + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +Vous pourriez également appeler `htmlDoc.Body.InsertBefore` ou `ReplaceChild` si vous aviez besoin d'un positionnement plus complexe. Dans la plupart des cas, un simple `AppendChild` suffit. + +## Étape 6 : Produire la chaîne HTML (ou enregistrer dans un fichier) + +Maintenant que nous avons construit le DOM, extrayons le HTML final. Aspose.HTML vous permet de sérialiser le document en un seul appel. + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +Lorsque vous ouvrez `result.html` dans un navigateur, vous verrez un seul paragraphe à la fois gras et italique, exactement comme prévu. + +### Résultat attendu + +```html + + + + +Bold & Italic text
+ + +``` + +Si vous générez du HTML pour un e‑mail, il suffit d’insérer `finalHtml` dans le corps de votre e‑mail et le style survivra à la plupart des clients modernes. + +## Variations courantes & cas limites + +- **Multiple Styles :** Vous souhaitez également ajouter une couleur d'arrière‑plan ? Étendez le `CSSStyleDeclaration` : + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **Different Elements :** Au lieu d'un ``, vous pourriez créer un `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +Exécutez ce programme, ouvrez `result.html`, et vous verrez le paragraphe stylisé rendu exactement comme décrit. Aucun concaténation manuelle de chaînes, aucune littérale HTML fragile—juste une manipulation du DOM propre et type‑safe. + +## Conclusion + +Nous avons répondu à **how to create HTML** à partir de zéro avec Aspose.HTML, démontré **append element to body**, montré une façon claire de **create paragraph element**, expliqué **add bold italic text**, et couvert les subtilités de **add css style programmatically**. + +Si vous êtes à l'aise avec ce modèle, vous pouvez l'étendre pour générer des pages complètes : tableaux, images, voire des scripts interactifs. Les mêmes principes s'appliquent — définir les styles, créer les éléments, définir les attributs, et les ajouter à l'endroit approprié. + +### Et après ? + +- **Dynamic Content :** Récupérez des données depuis une base de données et bouclez pour générer des lignes dans un tableau. +- **Styling Libraries :** Combinez cette approche avec des fichiers CSS externes pour des projets plus importants. +- **Export Options :** Alimentez le `HTMLDocument` directement dans Aspose.PDF ou Aspose.Words pour produire des PDF ou des fichiers DOCX sans chaîne intermédiaire. + +N'hésitez pas à expérimenter, à casser des choses, puis à les réparer—c’est la façon la plus rapide d’assimiler la programmation DOM en C#. Vous avez des questions ou un cas d'utilisation différent ? Laissez un commentaire ci‑dessous, et bon codage ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/french/net/rendering-html-documents/_index.md b/html/french/net/rendering-html-documents/_index.md index b8ecffbeb..a9cef0cda 100644 --- a/html/french/net/rendering-html-documents/_index.md +++ b/html/french/net/rendering-html-documents/_index.md @@ -45,6 +45,7 @@ Apprenez à travailler avec Aspose.HTML pour .NET : manipulez du HTML, converti ### [Comment utiliser Aspose pour rendre du HTML en PNG – Guide étape par étape](./how-to-use-aspose-to-render-html-to-png-step-by-step-guide/) Apprenez à convertir du HTML en images PNG avec Aspose.HTML pour .NET grâce à ce guide détaillé étape par étape. + ### [Créer un PNG à partir de HTML – Guide complet de rendu C#](./create-png-from-html-full-c-rendering-guide/) Apprenez à générer des images PNG à partir de HTML en utilisant Aspose.HTML pour .NET avec un guide complet en C#. @@ -65,9 +66,16 @@ Libérez la puissance d'Aspose.HTML pour .NET ! Apprenez à restituer un docume ### [Comment rendre HTML au format PNG – Guide complet C#](./how-to-render-html-as-png-complete-c-guide/) Apprenez à convertir du HTML en PNG avec C# grâce à ce guide complet et pratique. + ### [Comment rendre le HTML en PNG avec Aspose – Guide complet](./how-to-render-html-to-png-with-aspose-complete-guide/) Apprenez à convertir du HTML en images PNG avec Aspose grâce à ce guide complet et détaillé. +### [Créer un document PDF C# – Rendre le HTML en PDF avec Aspose](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +Apprenez à créer un document PDF à partir de HTML en C# avec Aspose.HTML pour .NET. + +### [Rendre le HTML en PDF et le zipper – Guide complet C#](./render-html-to-pdf-and-zip-it-complete-c-guide/) +Apprenez à convertir du HTML en PDF puis à le compresser dans une archive ZIP avec Aspose.HTML pour .NET en C#. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/french/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/french/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..9e7a495d5 --- /dev/null +++ b/html/french/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-03-28 +description: Créer un document PDF en C# avec Aspose HTML to PDF. Apprenez à rendre + le HTML en PDF, à convertir le HTML en PDF et à activer le hinting sous Linux. +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: fr +og_description: Créez instantanément un document PDF en C#. Ce guide montre comment + rendre le HTML en PDF, convertir le HTML en PDF et utiliser Aspose HTML vers PDF + avec l’optimisation du texte. +og_title: Créer un document PDF C# – Convertir le HTML en PDF avec Aspose +tags: +- Aspose +- C# +- PDF generation +title: Créer un document PDF en C# – Convertir du HTML en PDF avec Aspose +url: /fr/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Créer un document PDF C# – Rendre du HTML en PDF avec Aspose + +Vous avez déjà eu besoin de **create PDF document C#** à partir d'une chaîne HTML dynamique et vous êtes demandé pourquoi le texte apparaît flou sous Linux ? Vous n'êtes pas le seul à vous creuser la tête. La bonne nouvelle, c'est qu'Aspose HTML rend très simple le **render HTML to PDF**, et avec quelques options supplémentaires vous pouvez obtenir des glyphes ultra‑nets même sur des serveurs sans interface graphique. + +Dans ce tutoriel, nous passerons en revue un exemple complet, prêt à l'exécution, qui **converts HTML to PDF** en utilisant la bibliothèque Aspose HTML for .NET. Nous aborderons également pourquoi vous pourriez vouloir activer le hinting, comment configurer le pipeline de rendu, et quoi faire si vous devez personnaliser la taille de page ou le DPI plus tard. Aucun document externe requis—il suffit de copier, coller et exécuter. + +## Ce dont vous avez besoin + +- **.NET 6+** (ou .NET Framework 4.6.2+). Aspose HTML prend en charge les deux, mais l'exemple ci‑dessous cible .NET 6 pour plus de simplicité. +- **Aspose.HTML for .NET** package NuGet (`Aspose.Html`). Installez‑le via la console du gestionnaire de packages : + + ```powershell + Install-Package Aspose.Html + ``` + +- Un environnement **Linux ou Windows**. Le drapeau de hinting est particulièrement utile sous Linux, mais le code fonctionne partout. +- Un IDE ou éditeur de votre choix (Visual Studio, VS Code, Rider…). + +C’est tout—pas de polices supplémentaires, pas de pilotes d’imprimante PDF, juste une seule DLL. + +## Étape 1 : Configurer les options de rendu du texte (Mot‑clé principal en action) + +La première chose que nous faisons est d'indiquer à Aspose comment gérer le rendu des glyphes. Sous Linux, le rasteriseur par défaut peut produire des caractères flous, donc nous activons le hinting. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**Pourquoi ?** +`UseHinting` force le moteur de rendu à aligner les contours vectoriels sur la grille de pixels, ce qui élimine les bords flous que l’on voit souvent dans les PDF générés sur des conteneurs Linux sans interface graphique. La propriété `FontSize` n’est pas obligatoire, mais elle vous fournit une base prévisible pour tout HTML qui ne spécifie pas sa propre taille. + +> **Astuce :** Si vous ciblez uniquement Windows, vous pouvez ignorer le hinting—Windows applique déjà le rendu sous‑pixel automatiquement. + +## Étape 2 : Attacher les options de texte aux paramètres de rendu PDF + +Ensuite, nous créons une instance de `PdfRenderingOptions` et y branchons les `TextOptions` que nous venons de configurer. Cet objet gouverne l’ensemble du processus de conversion. + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**Pourquoi les lier ?** +L’objet `PdfRenderingOptions` fait le pont entre le moteur HTML et le générateur PDF. En assignant `TextOptions` ici, chaque page rendue héritera de la configuration de hinting, garantissant une sortie cohérente sur l’ensemble du document. + +## Étape 3 : Charger votre contenu HTML + +Aspose vous permet d’alimenter le HTML à partir d’une chaîne, d’un fichier ou même d’une URL. Pour ce tutoriel, nous resterons simples et utiliserons une chaîne en mémoire. + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**Pourquoi une chaîne ?** +Lorsque vous générez des rapports à la volée (par ex., factures, reçus), vous assemblez souvent le HTML à l’aide d’interpolations de chaînes ou d’un moteur de templates. Passer directement une chaîne évite les fichiers temporaires et accélère le pipeline. + +## Étape 4 : Enregistrer le PDF avec les options configurées + +Nous écrivons enfin le PDF sur le disque. La méthode `Save` prend le chemin cible et les options de rendu que nous avons préparées précédemment. + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**Ce que vous verrez :** +Ouvrez `hinted.pdf` avec n’importe quel lecteur PDF. Le paragraphe « Hinted text on Linux » devrait apparaître net, avec la police Arial rendue proprement. Sous Linux, vous remarquerez la différence comparée à un PDF généré sans `UseHinting`. + +> **Sortie attendue :** un PDF d’une seule page contenant le paragraphe en Arial 14 pt, sans bords flous. + +### Exemple complet fonctionnel + +Voici le programme complet que vous pouvez copier dans un projet d’application console. Il inclut toutes les instructions using, la gestion des erreurs et des commentaires pour plus de clarté. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +Exécutez le programme (`dotnet run`), et vous aurez un PDF prêt pour la distribution, l’archivage ou un traitement ultérieur. + + + +## Questions fréquentes (FAQ) + +### Cela fonctionne-t-il avec **aspose html to pdf** sur .NET Core ? + +Absolument. La même surface d’API est exposée sur .NET Framework, .NET Core et .NET 5/6. Assurez‑vous simplement que la version du package NuGet correspond à votre framework cible. + +### Comment puis‑je **render HTML to PDF** avec une taille de page personnalisée ? + +Create a `PdfPageSetup` object, set `Width`, `Height`, or `Size`, and assign it to `pdfRenderOptions.PageSetup`. Example: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### Et si j’ai besoin de **convert HTML to PDF** dans une API web ? + +Return the PDF as a `FileResult`: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### Puis‑je utiliser cela pour **html to pdf c#** dans un conteneur Docker Linux ? + +Oui. Le drapeau de hinting est spécifiquement conçu pour les environnements Linux sans interface graphique. Il suffit d’installer le package `libgdiplus` si vous êtes sur Alpine, et la conversion fonctionnera immédiatement. + +## Ajustements avancés (au‑delà des bases) + +- **Embedding Fonts :** Si votre HTML fait référence à des polices personnalisées, appelez `htmlDoc.Fonts.Add("MyFont", fontBytes);` avant le rendu. +- **Image Handling :** Activez `pdfRenderOptions.ImageResolution = 300;` pour des graphiques haute‑DPI. +- **Security :** Utilisez `PdfSaveOptions` pour protéger le fichier de sortie par mot de passe (`PdfSaveOptions.Password = "secret";`). + +Ces options vous permettent de transformer un simple extrait **convert html to pdf** en un service prêt pour la production. + +## Récapitulatif + +Nous venons de démontrer comment **create PDF document C#** en rendant du HTML avec Aspose HTML, en activant le hinting du texte pour un rendu plus net sous Linux, et en enregistrant le résultat avec un seul appel de méthode. Les étapes couvertes : + +1. Configurer `TextOptions` (hinting). +2. Les attacher à `PdfRenderingOptions`. +3. Charger le HTML depuis une chaîne. +4. Enregistrer le PDF. + +Vous disposez maintenant d’une base solide pour tout scénario nécessitant **aspose html to pdf**, **render html to pdf**, **convert html to pdf**, ou **html to pdf c#**. N’hésitez pas à expérimenter avec les mises en page, les polices intégrées, ou le streaming du PDF directement vers un client. + +--- + +**Prochaines étapes :** +- Essayez de convertir un rapport HTML multi‑pages avec tableaux et images. +- Explorez l’API `PdfDocument` d’Aspose pour le post‑traitement (ajout de signets, filigranes). +- Combinez cette conversion avec une file d’attente de tâches en arrière‑plan (par ex., Hangfire) pour générer des PDF à la demande. + +Bon codage, et que vos PDF restent toujours nets ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/french/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/french/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..7dda13f3a --- /dev/null +++ b/html/french/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-28 +description: Rendre le HTML en PDF directement à partir d’une URL et compresser le + résultat dans un fichier ZIP. Apprenez comment convertir une URL en PDF, générer + un PDF à partir d’un site web et zipper le fichier PDF en C#. +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: fr +og_description: Rendre le HTML en PDF directement à partir d’une URL, puis compresser + le PDF dans un fichier ZIP. Ce tutoriel étape par étape montre comment convertir + une URL en PDF, générer un PDF à partir d’un site web et zipper le fichier PDF en + C#. +og_title: Convertir le HTML en PDF et le zipper – Guide complet C# +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: Convertir le HTML en PDF et le zipper – Guide complet C# +url: /fr/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Rendre du HTML en PDF et le compresser – Guide complet C# + +Vous avez déjà eu besoin de **rendre du HTML en PDF** à la volée puis d’envoyer le fichier à un client sous forme d’une archive unique ? Peut‑être créez‑vous un service de reporting qui récupère une page web en direct, la transforme en PDF, puis stocke le résultat dans un zip pour un téléchargement facile. Dans ce tutoriel, nous allons parcourir exactement cela : rendre une page web distante en PDF, puis **compresser le PDF dans un zip** sans jamais toucher le disque. + +Nous aborderons également comment **convertir une URL en PDF**, **générer un PDF à partir d’un site web**, et enfin **zipper le fichier PDF** afin que vous puissiez le livrer où vous le souhaitez. Pas de blabla, juste une solution fonctionnelle que vous pouvez intégrer dès aujourd’hui dans un projet .NET 6+. + +## Ce dont vous avez besoin + +- **.NET 6** ou version ultérieure (le code fonctionne également avec .NET Framework 4.6+). +- **Aspose.HTML for .NET** – la bibliothèque qui effectue le travail lourd de rendu HTML → PDF. +- Un minimum d’expérience en C# — si vous savez écrire un `Console.WriteLine`, vous êtes prêt. +- Un IDE de votre choix (Visual Studio, Rider, VS Code…). + +> **Astuce pro :** Aspose.HTML propose une version d’essai gratuite incluant toutes les fonctionnalités de rendu. Téléchargez‑la depuis le [site Aspose](https://products.aspose.com/html/net/) avant de commencer. + +Maintenant que les prérequis sont réglés, plongeons‑y. + +## Étape 1 – Charger le document HTML distant (Convertir URL en PDF) + +La première chose à faire est d’indiquer à Aspose.HTML où se trouve la source. Dans notre cas il s’agit d’une URL publique, mais vous pourriez tout aussi bien lui fournir une chaîne contenant du HTML brut. + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Pourquoi c’est important :** Charger le document depuis une URL permet au moteur de récupérer automatiquement toutes les ressources liées (CSS, images, polices), vous offrant ainsi une réplique PDF fidèle du site en direct. Ignorer cette étape et fournir une simple chaîne de caractères supprimerait ces actifs, ce qui est rarement souhaitable lorsqu’on *génère un PDF à partir d’un site web*. + +## Étape 2 – Configurer les options de rendu PDF (La qualité compte) + +Aspose.HTML vous laisse ajuster l’apparence du PDF. L’anticrénelage et le hinting des polices sont deux paramètres qui rendent le rendu net à l’écran comme à l’impression. + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Pourquoi nous les définissons :** Sans anticrénelage, les traits et graphiques vectoriels peuvent apparaître dentelés, surtout sur des écrans à haute résolution DPI. Le hinting, quant à lui, indique au moteur PDF comment aligner les glyphes aux limites de pixels, un petit réglage qui fait souvent une grande différence visuelle. + +## Étape 3 – Préparer une archive ZIP en mémoire (Compresser le PDF) + +Au lieu d’écrire d’abord le PDF sur le disque puis de le zipper — une double opération d’E/S pénible — nous allons le diffuser directement dans une entrée zip. Cela garde tout en mémoire, idéal pour les API web ou les tâches en arrière‑plan. + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Note de cas limite :** Si vous traitez des PDF très volumineux (des centaines de Mo), envisagez de diffuser le zip directement vers un flux de réponse plutôt que de le garder entièrement en mémoire. Pour des rapports typiques de moins de 20 Mo, cette approche est sûre et rapide. + +## Étape 4 – Diffuser le PDF directement dans une entrée ZIP + +Voici la partie astucieuse : nous créons une entrée zip nommée `output.pdf` et nous transmettons son flux à Aspose.HTML. Le rendu écrit les octets du PDF directement dans l’entrée zip—aucun fichier temporaire n’est nécessaire. + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Pourquoi procéder ainsi :** En alimentant le générateur PDF avec un flux pointant vers une entrée zip, on évite le cycle « écrire sur disque → zipper → supprimer ». Cela réduit non seulement la surcharge d’I/O mais élimine aussi le risque de laisser des fichiers résiduels sur le serveur. + +## Étape 5 – Finaliser le ZIP et le persister + +Une fois le PDF écrit, nous devons fermer l’archive zip afin que le répertoire central soit flushé, puis écrire le tout sur le disque (ou le renvoyer depuis une API). + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Résultat attendu :** Un fichier nommé `result.zip` contenant une seule entrée `output.pdf`. L’ouverture du PDF montre un instantané pixel‑perfect de `https://example.com`, complet avec styles et images. + + + +*Texte alternatif de l’image : render html to pdf – capture d’écran du PDF généré à l’intérieur d’une archive ZIP.* + +## Exemple complet fonctionnel + +En réunissant tous les morceaux, voici le programme complet, prêt à copier‑coller : + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### À quoi s’attendre + +- **`result.zip`** apparaît dans `C:\Temp`. +- À l’intérieur de l’archive vous trouverez **`output.pdf`**. +- L’ouverture du PDF montre la page en direct de `https://example.com` rendue fidèlement. + +Si vous exécutez le programme et que le zip est vide, vérifiez que l’URL est accessible et que Aspose.HTML dispose des autorisations nécessaires pour télécharger les ressources externes (pare‑feu, paramètres de proxy, etc.). + +## Questions fréquentes & cas limites + +| Question | Réponse | +|----------|---------| +| *Et si la page référence des polices externes ?* | Aspose.HTML télécharge automatiquement les web‑fonts référencés via `@font-face`. Assurez‑vous que le serveur puisse atteindre les URLs des polices. | +| *Puis‑je ajouter plusieurs PDF dans le même ZIP ?* | Oui—appelez simplement `zipArchive.CreateEntry("report2.pdf")` et rendez un autre `HTMLDocument` dans ce flux. | +| *Comment définir un nom de fichier PDF personnalisé ?* | Modifiez la chaîne passée à `CreateEntry`, par ex. `CreateEntry("my‑invoice.pdf")`. | +| *Est‑ce sûr de l’utiliser dans une application web multithread ?* | Chaque requête doit créer son propre `MemoryStream` et `ZipArchive`. Les objets ne sont pas thread‑safe, donc les instances partagées entraîneront des corruptions. | +| *Qu’en est‑il des gros PDF ?* | Pour des PDF > 100 Mo, envisagez de diffuser directement vers la réponse HTTP (`Response.Body`) au lieu de les mettre en mémoire tampon. | + +## Conclusion + +Nous venons de vous montrer comment **rendre du HTML en PDF**, **convertir une URL en PDF**, **générer un PDF à partir d’un site web**, puis **compresser le fichier PDF**—le tout dans un flux de travail propre, entièrement en mémoire. + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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..b155ee20f 100644 --- a/html/french/net/working-with-html-documents/_index.md +++ b/html/french/net/working-with-html-documents/_index.md @@ -41,6 +41,8 @@ Maintenant, passons à un niveau supérieur de compétences. L'édition de docum 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 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/) +### [Créer du HTML à partir d'une chaîne en C# – Guide complet avec Memory Stream](./create-html-from-string-in-c-full-guide-with-memory-stream/) + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/french/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/french/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..80a8d249f --- /dev/null +++ b/html/french/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,278 @@ +--- +category: general +date: 2026-03-28 +description: Créer du HTML à partir d’une chaîne en utilisant Aspose.Html et le capturer + dans un flux. Apprenez à convertir du HTML en chaîne, à gérer les ressources personnalisées + et à écrire du HTML dans un flux. +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: fr +og_description: Créer du HTML à partir d’une chaîne avec Aspose.Html, le capturer + en mémoire et convertir le HTML en chaîne. Guide étape par étape pour le gestionnaire + de ressources personnalisé et l’écriture du HTML dans un flux. +og_title: Créer du HTML à partir d'une chaîne en C# – Tutoriel complet sur Memory‑Stream +tags: +- Aspose.Html +- C# +- MemoryStream +title: Créer du HTML à partir d'une chaîne en C# – Guide complet avec Memory Stream +url: /fr/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Créer du HTML à partir d'une chaîne en C# – Guide complet avec Memory Stream + +Vous avez déjà eu besoin de **create HTML from string** et de tout garder en mémoire sans toucher le système de fichiers ? Vous n'êtes pas le seul. De nombreux développeurs rencontrent cet obstacle lorsqu'ils souhaitent générer du balisage dynamique à la volée—par exemple pour un modèle d'e‑mail ou une conversion PDF—mais ils ne veulent pas d'un fichier temporaire qui encombre le disque. + +Bonne nouvelle ? Avec Aspose.Html, vous pouvez créer un `HTMLDocument` directement à partir d'une chaîne, le fournir à un **custom resource handler**, et **write HTML to stream** pour une utilisation ultérieure. Dans ce tutoriel, nous parcourrons chaque étape, de la chaîne initiale au résultat final en `string`, et expliquerons *pourquoi* chaque élément est important. + +À la fin de ce guide, vous serez capable de : + +* Créer du HTML à partir d'une chaîne en utilisant Aspose.Html. +* Convertir du HTML en chaîne sans écrire sur le disque. +* Capturer le HTML avec un custom resource handler. +* Écrire le HTML dans un `MemoryStream` et le relire. +* Identifier les pièges courants et appliquer les meilleures pratiques. + +Aucune dépendance externe au-delà d'Aspose.Html n'est requise—juste un projet .NET et quelques instructions using. + +--- + +## Prérequis + +* .NET 6.0 ou ultérieur (le code fonctionne également sur .NET Framework). +* Package NuGet Aspose.Html pour .NET (`Install-Package Aspose.Html`). +* Connaissances de base en C#—si vous avez déjà écrit un `Console.WriteLine`, vous êtes bon. + +--- + +## Étape 1 : Créer du HTML à partir d'une chaîne – le point de départ + +La première chose dont nous avons besoin est une chaîne HTML brute. Considérez‑la comme le squelette que vous colleriez normalement dans un fichier `.html`. + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "`‑Tag, fügen den zuvor erstellten Stil hinzu und setzen dessen Textinhalt. + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +Wenn Sie `paragraph.OuterHtml` inspizieren, sehen Sie etwa Folgendes: + +```html +
Bold & Italic text
+``` + +Diese Zeile demonstriert **add bold italic text**, ohne jemals rohe CSS‑Strings zu schreiben. + +## Schritt 5: Absatz an den Body anhängen + +Schließlich **append element to body**. Das ist das letzte Puzzleteil, das den Absatz tatsächlich auf der Seite rendert. + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +Sie könnten auch `htmlDoc.Body.InsertBefore` oder `ReplaceChild` verwenden, wenn Sie komplexere Positionierungen benötigen. Für die meisten Szenarien reicht ein einfaches `AppendChild` aus. + +## Schritt 6: HTML‑String ausgeben (oder in Datei speichern) + +Jetzt, wo wir das DOM aufgebaut haben, extrahieren wir das finale HTML. Aspose.HTML ermöglicht die Serialisierung des Dokuments mit einem einzigen Aufruf. + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +Wenn Sie `result.html` im Browser öffnen, sehen Sie einen einzelnen Absatz, der sowohl fett als auch kursiv ist – genau wie beabsichtigt. + +### Erwartete Ausgabe + +```html + + + + +Bold & Italic text
+ + +``` + +Wenn Sie HTML für eine E‑Mail generieren, setzen Sie einfach `finalHtml` in den E‑Mail‑Body – das Styling überlebt die meisten modernen Clients. + +## Häufige Varianten & Sonderfälle + +- **Mehrere Stile:** Möchten Sie zusätzlich eine Hintergrundfarbe hinzufügen? Erweitern Sie die `CSSStyleDeclaration`: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **Andere Elemente:** Anstelle eines `` könnten Sie ein `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +Führen Sie dieses Programm aus, öffnen Sie `result.html` und Sie sehen den formatierten Absatz exakt wie beschrieben. Keine manuelle String‑Verkettung, keine fragilen HTML‑Literal‑Strings – nur saubere, typensichere DOM‑Manipulation. + +## Fazit + +Wir haben **wie man HTML erstellt** von Grund auf mit Aspose.HTML beantwortet, **append element to body** gezeigt, einen klaren Weg zum **create paragraph element** demonstriert, **add bold italic text** erklärt und die Feinheiten von **add css style programmatically** behandelt. + +Wenn Ihnen dieses Muster vertraut ist, können Sie es erweitern, um komplette Seiten zu erzeugen: Tabellen, Bilder, sogar interaktive Skripte. Die gleichen Prinzipien gelten – Stile definieren, Elemente erstellen, Attribute setzen und sie dort anhängen, wo sie hingehören. + +### Was kommt als Nächstes? + +- **Dynamischer Inhalt:** Daten aus einer Datenbank holen und in einer Schleife Zeilen für eine Tabelle generieren. +- **Styling‑Bibliotheken:** Dieser Ansatz mit externen CSS‑Dateien für größere Projekte kombinieren. +- **Export‑Optionen:** Das `HTMLDocument` direkt an Aspose.PDF oder Aspose.Words übergeben, um PDFs oder DOCX‑Dateien ohne Zwischenspeicher‑String zu erzeugen. + +Probieren Sie es aus, brechen Sie Dinge und reparieren Sie sie anschließend – das ist der schnellste Weg, DOM‑Programmierung in C# zu verinnerlichen. Fragen oder ein anderer Anwendungsfall? Hinterlassen Sie einen Kommentar unten, und happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/german/net/rendering-html-documents/_index.md b/html/german/net/rendering-html-documents/_index.md index ad113650f..b24e8a2be 100644 --- a/html/german/net/rendering-html-documents/_index.md +++ b/html/german/net/rendering-html-documents/_index.md @@ -45,6 +45,7 @@ Erfahren Sie, wie Sie mit Aspose.HTML für .NET arbeiten: HTML bearbeiten, in ve ### [HTML als PNG rendern – Vollständiger C#-Leitfaden](./how-to-render-html-as-png-complete-c-guide/) Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML in PNG konvertieren, inklusive vollständigem C#-Beispiel und Schritt‑für‑Schritt‑Anleitung. + ### [Wie Sie Aspose zum Rendern von HTML nach PNG verwenden – Schritt‑für‑Schritt‑Anleitung](./how-to-use-aspose-to-render-html-to-png-step-by-step-guide/) Erfahren Sie, wie Sie mit Aspose.HTML HTML‑Inhalte in PNG‑Bilder umwandeln – detaillierte Schritt‑für‑Schritt‑Anleitung. @@ -53,6 +54,7 @@ Erfahren Sie, wie Sie HTML‑Inhalte mit Aspose in PNG‑Bilder umwandeln – ei ### [PNG aus HTML erstellen – Vollständiger C#-Rendering-Leitfaden](./create-png-from-html-full-c-rendering-guide/) Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML in PNG konvertieren – ein umfassender Leitfaden für C#-Entwickler. + ### [Rendern Sie EPUB als XPS in .NET mit Aspose.HTML](./render-epub-as-xps/) Erfahren Sie in diesem umfassenden Tutorial, wie Sie mit Aspose.HTML für .NET HTML-Dokumente erstellen und rendern. Tauchen Sie ein in die Welt der HTML-Manipulation, des Web Scraping und mehr. @@ -60,13 +62,20 @@ Erfahren Sie in diesem umfassenden Tutorial, wie Sie mit Aspose.HTML für .NET H Erfahren Sie, wie Sie Rendering-Timeouts in Aspose.HTML für .NET effektiv steuern. Erkunden Sie Rendering-Optionen und sorgen Sie für ein reibungsloses Rendering von HTML-Dokumenten. ### [Rendern Sie MHTML als XPS in .NET mit Aspose.HTML](./render-mhtml-as-xps/) - Lernen Sie, MHTML mit Aspose.HTML in .NET als XPS zu rendern. Verbessern Sie Ihre HTML-Manipulationsfähigkeiten und steigern Sie Ihre Webentwicklungsprojekte! + Lernen Sie, MHTML mit Aspose.HTML in .NET als XPS zu rendern. Verbessern Sie Ihre HTML‑Manipulationsfähigkeiten und steigern Sie Ihre Webentwicklungsprojekte! ### [Rendern Sie mehrere Dokumente in .NET mit Aspose.HTML](./render-multiple-documents/) Erfahren Sie, wie Sie mit Aspose.HTML für .NET mehrere HTML-Dokumente rendern. Steigern Sie Ihre Dokumentverarbeitungsfunktionen mit dieser leistungsstarken Bibliothek. ### [Rendern Sie SVG-Dokumente als PNG in .NET mit Aspose.HTML](./render-svg-doc-as-png/) Entfesseln Sie die Leistungsfähigkeit von Aspose.HTML für .NET! Erfahren Sie, wie Sie SVG-Dokumente mühelos als PNG rendern. Tauchen Sie ein in Schritt‑für‑Schritt‑Beispiele und FAQs. Jetzt loslegen! + +### [PDF-Dokument erstellen in C# – HTML mit Aspose zu PDF rendern](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML in PDF konvertieren und ein PDF‑Dokument in C# erstellen. + +### [HTML zu PDF rendern und zippen – Vollständiger C#‑Leitfaden](./render-html-to-pdf-and-zip-it-complete-c-guide/) +Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML in PDF konvertieren und das Ergebnis zippen – ein umfassender C#‑Leitfaden. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/german/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/german/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..bd03e9d91 --- /dev/null +++ b/html/german/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-28 +description: PDF-Dokument in C# mit Aspose HTML to PDF erstellen. Erfahren Sie, wie + Sie HTML zu PDF rendern, HTML in PDF konvertieren und Hinting für Linux aktivieren. +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: de +og_description: Erstellen Sie sofort ein PDF‑Dokument in C#. Dieser Leitfaden zeigt, + wie man HTML nach PDF rendert, HTML in PDF konvertiert und Aspose HTML zu PDF mit + Text‑Hinting verwendet. +og_title: PDF-Dokument in C# erstellen – HTML zu PDF mit Aspose rendern +tags: +- Aspose +- C# +- PDF generation +title: PDF-Dokument erstellen C# – HTML zu PDF rendern mit Aspose +url: /de/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF-Dokument erstellen C# – HTML zu PDF rendern mit Aspose + +Haben Sie jemals **PDF-Dokument C#** aus einem dynamischen HTML-String erstellen müssen und sich gefragt, warum der Text unter Linux unscharf aussieht? Sie sind nicht der Einzige, der sich den Kopf zerbricht. Die gute Nachricht ist, dass Aspose HTML das **Rendern von HTML zu PDF** zum Kinderspiel macht, und mit ein paar zusätzlichen Optionen erhalten Sie messerscharfe Glyphen selbst auf headless Servern. + +In diesem Tutorial führen wir Sie durch ein komplettes, sofort ausführbares Beispiel, das **HTML zu PDF konvertiert** mithilfe der Aspose HTML for .NET‑Bibliothek. Wir erklären außerdem, warum Sie Hinting aktivieren sollten, wie Sie die Rendering‑Pipeline einrichten und was zu tun ist, wenn Sie später die Seitengröße oder DPI anpassen müssen. Keine externen Dokumente nötig – einfach kopieren, einfügen und ausführen. + +## Was Sie benötigen + +- **.NET 6+** (oder .NET Framework 4.6.2+). Aspose HTML unterstützt beides, aber das untenstehende Beispiel zielt aus Gründen der Einfachheit auf .NET 6 ab. +- **Aspose.HTML for .NET** NuGet‑Paket (`Aspose.Html`). Installieren Sie es über die Package Manager Console: + + ```powershell + Install-Package Aspose.Html + ``` + +- Eine **Linux‑ oder Windows**‑Umgebung. Der Hinting‑Schalter ist besonders nützlich unter Linux, aber der Code funktioniert überall. +- Eine IDE oder ein Editor Ihrer Wahl (Visual Studio, VS Code, Rider …). + +Das war’s – keine zusätzlichen Schriftarten, keine PDF‑Druckertreiber, nur eine einzige DLL. + +## Schritt 1: Text-Renderoptionen konfigurieren (Primäres Schlüsselwort in Aktion) + +Das Erste, was wir tun, ist Aspose mitzuteilen, wie Glyphen gerendert werden sollen. Unter Linux kann der Standard‑Rasterizer unscharfe Zeichen erzeugen, daher aktivieren wir Hinting. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**Warum?** +`UseHinting` zwingt den Renderer, Vektor‑Konturen an das Pixel‑Raster anzupassen, wodurch die unscharfen Kanten, die Sie häufig in PDFs sehen, die in headless Linux‑Containern erzeugt werden, eliminiert werden. Die Eigenschaft `FontSize` ist nicht zwingend erforderlich, gibt Ihnen jedoch eine vorhersehbare Basis für jedes HTML, das keine eigene Größe angibt. + +> **Pro‑Tipp:** Wenn Sie ausschließlich Windows anvisieren, können Sie Hinting überspringen – Windows wendet bereits Sub‑Pixel‑Rendering automatisch an. + +## Schritt 2: Textoptionen an PDF-Render‑Einstellungen anhängen + +Als Nächstes erstellen wir eine Instanz von `PdfRenderingOptions` und stecken die gerade konfigurierten `TextOptions` hinein. Dieses Objekt steuert den gesamten Konvertierungsprozess. + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**Warum sie binden?** +Das Objekt `PdfRenderingOptions` ist die Brücke zwischen der HTML‑Engine und dem PDF‑Writer. Durch das Zuweisen von `TextOptions` hier erbt jede gerenderte Seite die Hinting‑Konfiguration, was einen konsistenten Output über das gesamte Dokument hinweg sicherstellt. + +## Schritt 3: Laden Sie Ihren HTML-Inhalt + +Aspose erlaubt das Einspeisen von HTML aus einem String, einer Datei oder sogar einer URL. Für dieses Tutorial halten wir es einfach und verwenden einen In‑Memory‑String. + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**Warum ein String?** +Wenn Sie Berichte on‑the‑fly erzeugen (z. B. Rechnungen, Quittungen), setzen Sie HTML häufig mittels String‑Interpolation oder einer Template‑Engine zusammen. Das direkte Übergeben eines Strings vermeidet temporäre Dateien und beschleunigt die Pipeline. + +## Schritt 4: Speichern Sie das PDF mit den konfigurierten Optionen + +Jetzt schreiben wir das PDF endgültig auf die Festplatte. Die Methode `Save` nimmt den Zielpfad und die zuvor vorbereiteten Rendering‑Optionen entgegen. + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**Was Sie sehen werden:** +Öffnen Sie `hinted.pdf` mit einem beliebigen PDF‑Betrachter. Der Absatz „Hinted text on Linux“ sollte klar und scharf erscheinen, wobei die Arial‑Schrift sauber gerendert wird. Unter Linux werden Sie den Unterschied zu einem PDF ohne `UseHinting` bemerken. + +> **Erwartetes Ergebnis:** ein einseitiges PDF, das den Absatz in 14‑pt Arial enthält, ohne unscharfe Kanten. + +### Vollständiges funktionierendes Beispiel + +Unten finden Sie das komplette Programm, das Sie in ein Konsolen‑App‑Projekt kopieren können. Es enthält alle `using`‑Anweisungen, Fehlerbehandlung und Kommentare zur Klarheit. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +Führen Sie das Programm aus (`dotnet run`), und Sie erhalten ein PDF, das bereit für Verteilung, Archivierung oder weitere Verarbeitung ist. + + + +## Häufig gestellte Fragen (FAQ) + +### Funktioniert das mit **aspose html to pdf** auf .NET Core? +Absolut. Die gleiche API‑Oberfläche wird über .NET Framework, .NET Core und .NET 5/6 hinweg bereitgestellt. Achten Sie lediglich darauf, dass die NuGet‑Paketversion zu Ihrem Ziel‑Framework passt. + +### Wie kann ich **HTML zu PDF rendern** mit benutzerdefinierter Seitengröße? +Erzeugen Sie ein `PdfPageSetup`‑Objekt, setzen Sie `Width`, `Height` oder `Size` und weisen Sie es `pdfRenderOptions.PageSetup` zu. Beispiel: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### Was tun, wenn ich **HTML zu PDF konvertieren** in einer Web‑API muss? +Geben Sie das PDF als `FileResult` zurück: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### Kann ich das für **html to pdf c#** in einem Linux‑Docker‑Container verwenden? +Ja. Der Hinting‑Schalter ist speziell für headless Linux‑Umgebungen konzipiert. Installieren Sie lediglich das Paket `libgdiplus`, falls Sie Alpine nutzen, und die Konvertierung funktioniert sofort. + +## Erweiterte Anpassungen (Jenseits der Grundlagen) + +- **Einbetten von Schriftarten:** Wenn Ihr HTML benutzerdefinierte Schriftarten referenziert, rufen Sie `htmlDoc.Fonts.Add("MyFont", fontBytes);` vor dem Rendern auf. +- **Bildverarbeitung:** Aktivieren Sie `pdfRenderOptions.ImageResolution = 300;` für hochauflösende Grafiken. +- **Sicherheit:** Verwenden Sie `PdfSaveOptions`, um die Ausgabe mit einem Passwort zu schützen (`PdfSaveOptions.Password = "secret";`). + +Diese Optionen ermöglichen es Ihnen, ein einfaches **convert html to pdf**‑Snippet in einen produktionsreifen Service zu verwandeln. + +## Zusammenfassung + +Wir haben gerade gezeigt, wie man **PDF-Dokument C#** erstellt, indem man HTML mit Aspose HTML rendert, Text‑Hinting für schärfere Ausgabe unter Linux aktiviert und das Ergebnis mit einem einzigen Methodenaufruf speichert. Die behandelten Schritte: + +1. `TextOptions` (Hinting) einrichten. +2. Diese an `PdfRenderingOptions` anhängen. +3. HTML aus einem String laden. +4. Das PDF speichern. + +Jetzt verfügen Sie über ein solides Fundament für jedes Szenario, das **aspose html to pdf**, **render html to pdf**, **convert html to pdf** oder **html to pdf c#** erfordert. Experimentieren Sie gern mit Seitenlayouts, eingebetteten Schriftarten oder dem direkten Streaming des PDFs an einen Client. + +--- + +**Nächste Schritte:** +- Versuchen Sie, einen mehrseitigen HTML‑Report mit Tabellen und Bildern zu konvertieren. +- Erkunden Sie Asposes `PdfDocument`‑API für die Nachbearbeitung (Hinzufügen von Lesezeichen, Wasserzeichen). +- Kombinieren Sie diese Konvertierung mit einer Hintergrund‑Job‑Queue (z. B. Hangfire), um PDFs bei Bedarf zu erzeugen. + +Viel Spaß beim Coden, und mögen Ihre PDFs stets gestochen scharf sein! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/german/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/german/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..c0d9e7096 --- /dev/null +++ b/html/german/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-28 +description: HTML direkt von einer URL in PDF rendern und das Ergebnis in eine ZIP-Datei + komprimieren. Erfahren Sie, wie Sie eine URL in PDF konvertieren, ein PDF von einer + Website erzeugen und die PDF‑Datei in C# zippen. +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: de +og_description: HTML direkt von einer URL zu PDF rendern und das PDF anschließend + in eine ZIP‑Datei komprimieren. Dieses Schritt‑für‑Schritt‑Tutorial zeigt, wie man + eine URL in PDF umwandelt, ein PDF von einer Website erstellt und die PDF‑Datei + in C# zippt. +og_title: HTML zu PDF rendern und zippen – Vollständiger C#‑Leitfaden +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: HTML in PDF rendern und zippen – Vollständiger C#‑Leitfaden +url: /de/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML zu PDF rendern und zippen – Vollständiger C# Leitfaden + +Haben Sie jemals **HTML zu PDF** on‑the‑fly rendern müssen und dann die Datei als einzelnes Archiv an einen Client senden wollen? Vielleicht bauen Sie einen Reporting‑Service, der eine Live‑Webseite abruft, in ein PDF umwandelt und das Ergebnis in einem Zip für einen einfachen Download speichert. In diesem Tutorial gehen wir genau darauf ein – wir rendern eine entfernte Webseite zu PDF und **komprimieren das PDF in einem Zip**, ohne jemals die Festplatte zu berühren. + +Wir behandeln außerdem, wie man **URL zu PDF konvertiert**, **PDF von einer Website erzeugt** und schließlich **PDF-Datei zippt**, sodass Sie es überall einsetzen können, wo Sie es benötigen. Kein Schnickschnack, nur eine funktionierende Lösung, die Sie noch heute in ein .NET 6+ Projekt einbinden können. + +## Was Sie benötigen + +- **.NET 6** oder neuer (der Code funktioniert auch mit .NET Framework 4.6+). +- **Aspose.HTML for .NET** – die Bibliothek, die das schwere Heben beim HTML‑zu‑PDF‑Rendering übernimmt. +- Ein wenig C#‑Erfahrung – wenn Sie `Console.WriteLine` schreiben können, sind Sie startklar. +- Eine IDE Ihrer Wahl (Visual Studio, Rider, VS Code …). + +> **Pro‑Tipp:** Aspose.HTML bietet eine kostenlose Testversion, die alle Rendering‑Funktionen enthält. Holen Sie sie von der [Aspose‑Website](https://products.aspose.com/html/net/) bevor Sie beginnen. + +Jetzt, wo die Voraussetzungen geklärt sind, legen wir los. + +## Schritt 1 – Laden des entfernten HTML‑Dokuments (URL zu PDF konvertieren) + +Das Erste, was wir tun müssen, ist Aspose.HTML mitzuteilen, wo die Quelle liegt. In unserem Fall ist es eine öffentliche URL, aber Sie könnten genauso gut einen String mit rohem HTML übergeben. + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Warum das wichtig ist:** Das Laden des Dokuments von einer URL bewirkt, dass der Renderer alle verknüpften Ressourcen (CSS, Bilder, Schriften) automatisch abruft und Ihnen ein getreues PDF‑Abbild der Live‑Seite liefert. Würden Sie diesen Schritt überspringen und einen reinen String verwenden, würden diese Assets fehlen – selten das gewünschte Ergebnis, wenn Sie *PDF von einer Website erzeugen*. + +## Schritt 2 – PDF‑Render‑Optionen konfigurieren (Qualität zählt) + +Aspose.HTML lässt Sie anpassen, wie das PDF aussieht. Antialiasing und Font‑Hinting sind zwei Einstellungen, die das Ergebnis auf dem Bildschirm und im Druck scharf erscheinen lassen. + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Warum wir das setzen:** Ohne Antialiasing können Liniengrafiken und Vektorgrafiken gezackt wirken, besonders auf hochauflösenden Displays. Hinting hingegen sagt der PDF‑Engine, wie Glyphen an Pixelgrenzen ausgerichtet werden sollen – eine kleine Anpassung, die oft einen großen visuellen Unterschied macht. + +## Schritt 3 – In‑Memory‑ZIP‑Archiv vorbereiten (PDF zippen) + +Anstatt das PDF zuerst auf die Festplatte zu schreiben und dann zu zippen – ein zweistufiges I/O‑Alptraum – streamen wir direkt in einen Zip‑Eintrag. Das hält alles im Speicher, ideal für Web‑APIs oder Hintergrundjobs. + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Hinweis für Randfälle:** Wenn Sie mit riesigen PDFs (Hunderte MB) arbeiten, sollten Sie das Zip‑Archiv direkt in einen Response‑Stream leiten, anstatt das gesamte Ergebnis im Speicher zu halten. Für typische Berichte unter 20 MB ist dieser Ansatz sicher und schnell. + +## Schritt 4 – PDF direkt in einen ZIP‑Eintrag streamen + +Hier kommt der clevere Teil: Wir erstellen einen Zip‑Eintrag namens `output.pdf` und geben dessen Stream an Aspose.HTML zurück. Der Renderer schreibt die PDF‑Bytes direkt in den Zip‑Eintrag – keine temporäre Datei nötig. + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Warum wir das so machen:** Indem wir dem PDF‑Writer einen Stream geben, der auf einen Zip‑Eintrag zeigt, vermeiden wir den Zyklus „auf Festplatte schreiben → zippen → löschen“. Das reduziert I/O‑Overhead und eliminiert das Risiko, verwaiste Dateien auf dem Server zu hinterlassen. + +## Schritt 5 – ZIP finalisieren und persistieren + +Nachdem das PDF geschrieben wurde, schließen wir das Zip‑Archiv, damit das zentrale Verzeichnis geschrieben wird, und speichern das Ganze auf die Festplatte (oder geben es von einer API zurück). + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Ergebnis, das Sie sehen werden:** Eine Datei namens `result.zip` mit einem einzigen Eintrag `output.pdf`. Öffnet man das PDF, sieht man einen pixelgenauen Schnappschuss von `https://example.com`, komplett mit Styles und Bildern. + + + +*Bild‑Alt‑Text: render html to pdf – Screenshot des erzeugten PDFs innerhalb eines ZIP‑Archivs.* + +## Vollständiges funktionierendes Beispiel + +Alles zusammengefügt, hier das komplette, copy‑paste‑bereite Programm: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### Was Sie erwarten können + +- **`result.zip`** erscheint in `C:\Temp`. +- Im Archiv finden Sie **`output.pdf`**. +- Öffnet man das PDF, wird die Live‑Seite von `https://example.com` getreu wiedergegeben. + +Wenn Sie das Programm ausführen und das Zip leer ist, prüfen Sie, ob die URL erreichbar ist und ob Aspose.HTML die Berechtigung hat, externe Ressourcen herunterzuladen (Firewall, Proxy‑Einstellungen usw.). + +## Häufige Fragen & Randfälle + +| Frage | Antwort | +|----------|--------| +| *Was, wenn die Seite externe Schriften referenziert?* | Aspose.HTML lädt Web‑Fonts, die über `@font-face` eingebunden sind, automatisch herunter. Stellen Sie sicher, dass der Server die Font‑URLs erreichen kann. | +| *Kann ich mehrere PDFs in dasselbe ZIP packen?* | Ja – rufen Sie einfach `zipArchive.CreateEntry("report2.pdf")` auf und rendern Sie ein weiteres `HTMLDocument` in diesen Stream. | +| *Wie setze ich einen benutzerdefinierten PDF‑Dateinamen?* | Ändern Sie den String, der an `CreateEntry` übergeben wird, z. B. `CreateEntry("my‑invoice.pdf")`. | +| *Ist das sicher in einer multithreaded Web‑App zu verwenden?* | Jeder Request sollte seine eigenen `MemoryStream`‑ und `ZipArchive`‑Instanzen erzeugen. Die Objekte sind nicht thread‑sicher, geteilte Instanzen führen zu Korruption. | +| *Wie gehe ich mit sehr großen PDFs um?* | Für PDFs > 100 MB sollten Sie direkt in den HTTP‑Response (`Response.Body`) streamen, anstatt alles im Speicher zu puffern. | + +## Fazit + +Wir haben Ihnen gezeigt, wie Sie **HTML zu PDF rendern**, **URL zu PDF konvertieren**, **PDF von einer Website erzeugen** und schließlich **PDF-Datei zippen** – alles in einem sauberen, in‑Memory‑Workflow. + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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..662b213d8 100644 --- a/html/german/net/working-with-html-documents/_index.md +++ b/html/german/net/working-with-html-documents/_index.md @@ -41,6 +41,10 @@ Lassen Sie uns nun Ihre Fähigkeiten auf die nächste Ebene bringen. Das Bearbei Erfahren Sie, wie Sie HTML in C# 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/) +### [HTML aus Zeichenkette in C# erstellen – Vollständige Anleitung mit Memory Stream](./create-html-from-string-in-c-full-guide-with-memory-stream/) + +Erfahren Sie, wie Sie HTML aus einer Zeichenkette in C# generieren und mit einem Memory Stream verarbeiten. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/german/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/german/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..e5297a059 --- /dev/null +++ b/html/german/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,278 @@ +--- +category: general +date: 2026-03-28 +description: Erstellen Sie HTML aus einem String mit Aspose.Html und erfassen Sie + es in einem Stream. Lernen Sie, HTML in einen String zu konvertieren, einen benutzerdefinierten + Ressourcen‑Handler zu verwenden und HTML in einen Stream zu schreiben. +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: de +og_description: Erstellen Sie HTML aus einem String mit Aspose.Html, erfassen Sie + es im Speicher und konvertieren Sie HTML in einen String. Schritt‑für‑Schritt‑Anleitung + für benutzerdefinierten Ressourcen‑Handler und das Schreiben von HTML in einen Stream. +og_title: HTML aus einem String in C# erstellen – Vollständiges Memory‑Stream‑Tutorial +tags: +- Aspose.Html +- C# +- MemoryStream +title: HTML aus einem String in C# erstellen – Vollständige Anleitung mit Memory‑Stream +url: /de/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML aus Zeichenkette in C# erstellen – Vollständiger Leitfaden mit Memory Stream + +Haben Sie jemals **HTML aus einer Zeichenkette erstellen** müssen und dabei alles im Speicher behalten, ohne das Dateisystem zu berühren? Sie sind nicht allein. Viele Entwickler stoßen auf dieses Problem, wenn sie dynamisches Markup on the fly erzeugen wollen – zum Beispiel für ein E‑Mail‑Template oder eine PDF‑Konvertierung – und dabei keine temporäre Datei auf der Festplatte hinterlassen möchten. + +Die gute Nachricht? Mit Aspose.Html können Sie ein `HTMLDocument` direkt aus einer Zeichenkette erzeugen, es in einen **benutzerdefinierten Ressourcen‑Handler** einspeisen und **HTML in einen Stream schreiben** für die spätere Verwendung. In diesem Tutorial gehen wir jeden Schritt durch, von der Anfangs‑Zeichenkette bis zum finalen `string`‑Ergebnis, und erklären *warum* jedes Element wichtig ist. + +Am Ende dieses Leitfadens können Sie: + +* HTML aus einer Zeichenkette mit Aspose.Html erstellen. +* HTML in eine Zeichenkette konvertieren, ohne auf die Festplatte zu schreiben. +* HTML mit einem benutzerdefinierten Ressourcen‑Handler erfassen. +* HTML in einen `MemoryStream` schreiben und wieder auslesen. +* Häufige Fallstricke erkennen und Best‑Practice‑Tipps anwenden. + +Keine externen Abhängigkeiten außer Aspose.Html sind erforderlich – nur ein .NET‑Projekt und ein paar using‑Anweisungen. + +--- + +## Voraussetzungen + +* .NET 6.0 oder höher (der Code funktioniert auch unter .NET Framework). +* Aspose.Html für .NET NuGet‑Paket (`Install-Package Aspose.Html`). +* Grundlegende C#‑Kenntnisse – wenn Sie schon einmal `Console.WriteLine` geschrieben haben, sind Sie bereit. + +--- + +## Schritt 1: HTML aus Zeichenkette erstellen – der Ausgangspunkt + +Das Erste, was wir benötigen, ist eine rohe HTML‑Zeichenkette. Betrachten Sie sie als das Gerüst, das Sie normalerweise in eine `.html`‑Datei einfügen würden. + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "`, θα ενσωματώσουμε το στυλ που κατασκευάσαμε και θα ορίσουμε το περιεχόμενο κειμένου της. + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +Αν ελέγξετε το `paragraph.OuterHtml` θα δείτε κάτι σαν: + +```html +
Bold & Italic text
+``` + +Αυτή η γραμμή δείχνει **add bold italic text** χωρίς ποτέ να γράψετε ακατέργαστες συμβολοσειρές CSS. + +## Βήμα 5: Προσθήκη της παραγράφου στο σώμα + +Τέλος, **append element to body**. Αυτό είναι το τελευταίο κομμάτι του παζλ που πραγματικά αποδίδει την παράγραφο στη σελίδα. + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +Μπορείτε επίσης να καλέσετε `htmlDoc.Body.InsertBefore` ή `ReplaceChild` αν χρειάζεστε πιο σύνθετη τοποθέτηση. Για τις περισσότερες περιπτώσεις, ένα απλό `AppendChild` κάνει τη δουλειά. + +## Βήμα 6: Εξαγωγή της HTML συμβολοσειράς (ή αποθήκευση σε αρχείο) + +Τώρα που έχουμε χτίσει το DOM, ας εξάγουμε το τελικό HTML. Το Aspose.HTML σας επιτρέπει να σειριοποιήσετε το έγγραφο με μία μόνο κλήση. + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +Όταν ανοίξετε το `result.html` σε έναν περιηγητή, θα δείτε μια ενιαία παράγραφο που είναι τόσο έντονη όσο και πλάγια, ακριβώς όπως το θέλαμε. + +### Αναμενόμενο αποτέλεσμα + +```html + + + + +Bold & Italic text
+ + +``` + +Αν δημιουργείτε HTML για email, απλώς τοποθετήστε το `finalHtml` στο σώμα του email και το στυλ θα παραμείνει σε όλους τους σύγχρονους πελάτες. + +## Κοινές παραλλαγές & Ακραίες περιπτώσεις + +- **Πολλαπλά Στυλ:** Θέλετε επίσης να προσθέσετε χρώμα φόντου; Επεκτείνετε το `CSSStyleDeclaration`: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **Διαφορετικά Στοιχεία:** Αντί σε ``, μπορείτε να δημιουργήσετε ένα `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +Τρέξτε αυτό το πρόγραμμα, ανοίξτε το `result.html` και θα δείτε την μορφοποιημένη παράγραφο να αποδίδεται ακριβώς όπως περιγράφηκε. Χωρίς χειροκίνητη συνένωση συμβολοσειρών, χωρίς ευαίσθητα HTML literals—απλώς καθαρός, ασφαλής τύπου χειρισμός DOM. + +## Συμπεράσματα + +Απαντήσαμε στο **πώς να δημιουργήσετε HTML** από το μηδέν χρησιμοποιώντας Aspose.HTML, δείξαμε **append element to body**, παρουσιάσαμε έναν σαφή τρόπο **create paragraph element**, εξηγήσαμε **add bold italic text**, και καλύψαμε τις λεπτομέρειες του **add css style programmatically**. + +Αν νιώθετε άνετα με αυτό το μοτίβο, μπορείτε να το επεκτείνετε για τη δημιουργία πλήρων σελίδων: πίνακες, εικόνες, ακόμη και διαδραστικά scripts. Οι ίδιες αρχές ισχύουν—ορίστε στυλ, δημιουργήστε στοιχεία, ορίστε ιδιότητες και προσθέστε τα εκεί που ανήκουν. + +### Τι ακολουθεί; + +- **Δυναμικό Περιεχόμενο:** Ανάκτηση δεδομένων από βάση και βρόχος για δημιουργία γραμμών σε πίνακα. +- **Βιβλιοθήκες Στυλ:** Συνδυάστε αυτήν την προσέγγιση με εξωτερικά αρχεία CSS για μεγαλύτερα έργα. +- **Επιλογές Εξαγωγής:** Στείλτε το `HTMLDocument` απευθείας στο Aspose.PDF ή Aspose.Words για παραγωγή PDF ή DOCX χωρίς ενδιάμεση συμβολοσειρά. + +Νιώστε ελεύθεροι να πειραματιστείτε, να σπάσετε πράγματα και μετά να τα διορθώσετε—είναι ο πιο γρήγορος τρόπος να εσωτερικεύσετε τον προγραμματισμό DOM σε 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/greek/net/rendering-html-documents/_index.md b/html/greek/net/rendering-html-documents/_index.md index f874e075c..01d25dbf7 100644 --- a/html/greek/net/rendering-html-documents/_index.md +++ b/html/greek/net/rendering-html-documents/_index.md @@ -60,6 +60,10 @@ url: /el/net/rendering-html-documents/ Μάθετε πώς να μετατρέψετε HTML σε PNG χρησιμοποιώντας το Aspose.HTML για .NET σε αυτόν τον πλήρη οδηγό. ### [Δημιουργία PNG από HTML – Πλήρης Οδηγός Απόδοσης C#](./create-png-from-html-full-c-rendering-guide/) Μάθετε πώς να δημιουργήσετε PNG από HTML χρησιμοποιώντας το Aspose.HTML για .NET με πλήρη οδηγό C#. +### [Δημιουργία εγγράφου PDF C# – Απόδοση HTML σε PDF με το Aspose](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +Μάθετε πώς να μετατρέψετε HTML σε PDF με C# χρησιμοποιώντας το Aspose.HTML για .NET σε αυτό το ολοκληρωμένο σεμινάριο. +### [Απόδοση HTML σε PDF και Συμπίεση – Πλήρης Οδηγός C#](./render-html-to-pdf-and-zip-it-complete-c-guide/) +Μάθετε πώς να μετατρέψετε HTML σε PDF και να το συμπιέσετε σε αρχείο ZIP χρησιμοποιώντας C# και Aspose.HTML. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/greek/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/greek/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..16f87ea6b --- /dev/null +++ b/html/greek/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,232 @@ +--- +category: general +date: 2026-03-28 +description: Δημιουργήστε έγγραφο PDF με C# χρησιμοποιώντας το Aspose HTML σε PDF. + Μάθετε πώς να αποδίδετε HTML σε PDF, να μετατρέπετε HTML σε PDF και να ενεργοποιείτε + υποδείξεις για Linux. +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: el +og_description: Δημιουργήστε άμεσα έγγραφο PDF με C#. Αυτός ο οδηγός δείχνει πώς να + αποδίδετε HTML σε PDF, να μετατρέπετε HTML σε PDF και να χρησιμοποιείτε το Aspose + HTML σε PDF με υποδείξεις κειμένου. +og_title: Δημιουργία εγγράφου PDF C# – Μετατροπή HTML σε PDF με το Aspose +tags: +- Aspose +- C# +- PDF generation +title: Δημιουργία εγγράφου PDF C# – Απόδοση HTML σε PDF με το Aspose +url: /el/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Δημιουργία εγγράφου PDF C# – Απόδοση HTML σε PDF με Aspose + +Έχετε ποτέ χρειαστεί να **create PDF document C#** από μια δυναμική συμβολοσειρά HTML και αναρωτηθήκατε γιατί το κείμενο φαίνεται θολό στο Linux; Δεν είστε ο μόνος που σκεπάζει το κεφάλι του. Τα καλά νέα είναι ότι το Aspose HTML κάνει εύκολη την **render HTML to PDF**, και με μερικές επιπλέον επιλογές μπορείτε να έχετε εξαιρετικά καθαρά γλύφους ακόμη και σε headless servers. + +Σε αυτό το tutorial θα περάσουμε βήμα‑βήμα από ένα πλήρες, έτοιμο‑για‑εκτέλεση παράδειγμα που **converts HTML to PDF** χρησιμοποιώντας τη βιβλιοθήκη Aspose HTML for .NET. Θα καλύψουμε επίσης γιατί μπορεί να θέλετε να ενεργοποιήσετε το hinting, πώς να ρυθμίσετε τη γραμμή απόδοσης, και τι να κάνετε αν χρειαστεί να προσαρμόσετε το μέγεθος σελίδας ή το DPI αργότερα. Δεν απαιτούνται εξωτερικά έγγραφα—απλώς αντιγράψτε, επικολλήστε και τρέξτε. + +## Τι Θα Χρειαστείτε + +- **.NET 6+** (ή .NET Framework 4.6.2+). Το Aspose HTML υποστηρίζει και τα δύο, αλλά το παράδειγμα παρακάτω στοχεύει στο .NET 6 για απλότητα. +- **Aspose.HTML for .NET** πακέτο NuGet (`Aspose.Html`). Εγκαταστήστε το μέσω του Package Manager Console: + + ```powershell + Install-Package Aspose.Html + ``` + +- Ένα περιβάλλον **Linux ή Windows**. Η σημαία hinting είναι ιδιαίτερα χρήσιμη στο Linux, αλλά ο κώδικας λειτουργεί παντού. +- Ένα IDE ή επεξεργαστή της επιλογής σας (Visual Studio, VS Code, Rider…). + +Αυτό είναι όλο—χωρίς επιπλέον γραμματοσειρές, χωρίς οδηγούς εκτυπωτή PDF, μόνο ένα μόνο DLL. + +## Βήμα 1: Διαμόρφωση Επιλογών Απόδοσης Κειμένου (Primary Keyword in Action) + +Το πρώτο που κάνουμε είναι να πούμε στο Aspose πώς να χειριστεί την απόδοση των glyphs. Στο Linux ο προεπιλεγμένος rasterizer μπορεί να παράγει θολούς χαρακτήρες, γι' αυτό ενεργοποιούμε το hinting. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**Why?** +`UseHinting` αναγκάζει τον renderer να ευθυγραμμίζει τα διανυσματικά περιγράμματα στο πλέγμα των pixel, κάτι που εξαλείφει τις θολές άκρες που συχνά βλέπετε σε PDF που δημιουργούνται σε headless Linux containers. Η ιδιότητα `FontSize` δεν είναι υποχρεωτική, αλλά σας δίνει μια προβλέψιμη βάση για οποιοδήποτε HTML που δεν καθορίζει το δικό του μέγεθος. + +> **Pro tip:** Αν στοχεύετε μόνο σε Windows, μπορείτε να παραλείψετε το hinting—τα Windows εφαρμόζουν αυτόματα sub‑pixel rendering. + +## Βήμα 2: Σύνδεση Επιλογών Κειμένου με Ρυθμίσεις Απόδοσης PDF + +Στη συνέχεια δημιουργούμε ένα αντικείμενο `PdfRenderingOptions` και συνδέουμε τις `TextOptions` που μόλις διαμορφώσαμε. Αυτό το αντικείμενο ελέγχει ολόκληρη τη διαδικασία μετατροπής. + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**Why bind them?** +Το αντικείμενο `PdfRenderingOptions` είναι η γέφυρα μεταξύ της μηχανής HTML και του συγγραφέα PDF. Αναθέτοντας εδώ τις `TextOptions`, κάθε σελίδα που θα αποδοθεί θα κληρονομήσει τη ρύθμιση hinting, εξασφαλίζοντας συνεπή έξοδο σε όλο το έγγραφο. + +## Βήμα 3: Φόρτωση του Περιεχομένου HTML + +Το Aspose σας επιτρέπει να τροφοδοτήσετε HTML από μια συμβολοσειρά, ένα αρχείο ή ακόμη και ένα URL. Για αυτό το tutorial θα το κρατήσουμε απλό και θα χρησιμοποιήσουμε μια συμβολοσειρά στη μνήμη. + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**Why a string?** +Όταν δημιουργείτε αναφορές επί τόπου (π.χ. τιμολόγια, αποδείξεις), συχνά συναρμολογείτε το HTML χρησιμοποιώντας string interpolation ή μια μηχανή templating. Η άμεση μεταβίβαση μιας συμβολοσειράς αποφεύγει προσωρινά αρχεία και επιταχύνει τη γραμμή εργασίας. + +## Βήμα 4: Αποθήκευση του PDF με τις Διαμορφωμένες Επιλογές + +Τώρα τελικά γράφουμε το PDF στο δίσκο. Η μέθοδος `Save` παίρνει τη διαδρομή προορισμού και τις επιλογές απόδοσης που προετοιμάσαμε νωρίτερα. + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**What you’ll see:** +Ανοίξτε το `hinted.pdf` με οποιονδήποτε προβολέα PDF. Η παράγραφος «Hinted text on Linux» θα εμφανιστεί καθαρή, με τη γραμματοσειρά Arial να αποδίδεται χωρίς θόρυβο. Στο Linux θα παρατηρήσετε τη διαφορά σε σχέση με ένα PDF που δημιουργήθηκε χωρίς `UseHinting`. + +> **Expected output:** ένα PDF μιας σελίδας που περιέχει την παράγραφο σε Arial 14 pt, χωρίς θολές άκρες. + +### Πλήρες Παράδειγμα Εργασίας + +Παρακάτω υπάρχει το πλήρες πρόγραμμα που μπορείτε να αντιγράψετε σε ένα project console app. Περιλαμβάνει όλες τις δηλώσεις using, χειρισμό σφαλμάτων και σχόλια για σαφήνεια. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +Τρέξτε το πρόγραμμα (`dotnet run`), και θα έχετε ένα PDF έτοιμο για διανομή, αρχειοθέτηση ή περαιτέρω επεξεργασία. + + + +## Συχνές Ερωτήσεις (FAQ) + +### Λειτουργεί αυτό με **aspose html to pdf** στο .NET Core; + +Απολύτως. Η ίδια διεπαφή API είναι διαθέσιμη σε .NET Framework, .NET Core και .NET 5/6. Απλώς βεβαιωθείτε ότι η έκδοση του πακέτου NuGet ταιριάζει με το target framework σας. + +### Πώς μπορώ να **render HTML to PDF** με προσαρμοσμένο μέγεθος σελίδας; + +Δημιουργήστε ένα αντικείμενο `PdfPageSetup`, ορίστε `Width`, `Height` ή `Size`, και αναθέστε το στο `pdfRenderOptions.PageSetup`. Παράδειγμα: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### Τι γίνεται αν χρειαστεί να **convert HTML to PDF** σε ένα web API; + +Επιστρέψτε το PDF ως `FileResult`: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### Μπορώ να το χρησιμοποιήσω για **html to pdf c#** σε Linux Docker container; + +Ναι. Η σημαία hinting έχει σχεδιαστεί ειδικά για headless περιβάλλοντα Linux. Απλώς εγκαταστήστε το πακέτο `libgdiplus` αν χρησιμοποιείτε Alpine, και η μετατροπή θα λειτουργήσει αμέσως. + +## Προχωρημένες Ρυθμίσεις (Πέρα από τα Βασικά) + +- **Embedding Fonts:** Αν το HTML σας αναφέρει προσαρμοσμένες γραμματοσειρές, καλέστε `htmlDoc.Fonts.Add("MyFont", fontBytes);` πριν από την απόδοση. +- **Image Handling:** Ενεργοποιήστε `pdfRenderOptions.ImageResolution = 300;` για γραφικά υψηλής ανάλυσης DPI. +- **Security:** Χρησιμοποιήστε `PdfSaveOptions` για προστασία με κωδικό πρόσβασης του αποτελέσματος (`PdfSaveOptions.Password = "secret";`). + +Αυτές οι επιλογές σας επιτρέπουν να μετατρέψετε ένα απλό απόσπασμα **convert html to pdf** σε μια υπηρεσία έτοιμη για παραγωγή. + +## Ανακεφαλαίωση + +Δείξαμε πώς να **create PDF document C#** αποδίδοντας HTML με το Aspose HTML, ενεργοποιώντας το hinting για πιο καθαρή έξοδο σε Linux, και αποθηκεύοντας το αποτέλεσμα με μία μόνο κλήση μεθόδου. Τα βήματα που καλύψαμε: + +1. Ρύθμιση `TextOptions` (hinting). +2. Σύνδεσή τους με `PdfRenderingOptions`. +3. Φόρτωση HTML από συμβολοσειρά. +4. Αποθήκευση του PDF. + +Τώρα έχετε μια σταθερή βάση για οποιοδήποτε σενάριο απαιτεί **aspose html to pdf**, **render html to pdf**, **convert html to pdf**, ή **html to pdf c#**. Μη διστάσετε να πειραματιστείτε με διατάξεις σελίδας, ενσωματωμένες γραμματοσειρές ή ροή του PDF απευθείας σε πελάτη. + +--- + +**Επόμενα βήματα:** +- Προσπαθήστε να μετατρέψετε μια αναφορά HTML πολλαπλών σελίδων με πίνακες και εικόνες. +- Εξερευνήστε το API `PdfDocument` του Aspose για μετα-επεξεργασία (προσθήκη σελιδοδεικτών, υδατογραφήματα). +- Συνδυάστε αυτή τη μετατροπή με μια ουρά εργασιών στο παρασκήνιο (π.χ., Hangfire) για δημιουργία PDF κατ' απαίτηση. + +Καλή προγραμματιστική δουλειά, και οι 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/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/greek/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..b0caac1a0 --- /dev/null +++ b/html/greek/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-28 +description: Αποδώστε HTML σε PDF απευθείας από ένα URL και συμπιέστε το αποτέλεσμα + σε αρχείο ZIP. Μάθετε πώς να μετατρέψετε ένα URL σε PDF, να δημιουργήσετε PDF από + ιστότοπο και να συμπιέσετε το αρχείο PDF σε ZIP με C#. +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: el +og_description: Αποδώστε HTML σε PDF απευθείας από ένα URL και, στη συνέχεια, συμπιέστε + το PDF σε αρχείο ZIP. Αυτός ο βήμα‑βήμα οδηγός δείχνει πώς να μετατρέψετε ένα URL + σε PDF, να δημιουργήσετε PDF από έναν ιστότοπο και να συμπιέσετε το αρχείο PDF σε + ZIP με C#. +og_title: Μετατροπή HTML σε PDF και Συμπίεση – Πλήρης Οδηγός C# +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: Απόδοση HTML σε PDF και Συμπίεση – Πλήρης Οδηγός C# +url: /el/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Απόδοση HTML σε PDF και Συμπίεση – Πλήρης Οδηγός C# + +Έχετε ποτέ χρειαστεί να **αποδώσετε HTML σε PDF** άμεσα και στη συνέχεια να στείλετε το αρχείο σε έναν πελάτη ως ένα ενιαίο αρχείο; Ίσως δημιουργείτε μια υπηρεσία αναφορών που αντλεί μια ζωντανή ιστοσελίδα, τη μετατρέπει σε PDF και αποθηκεύει το αποτέλεσμα σε zip για εύκολη λήψη. Σε αυτό το tutorial θα περάσουμε ακριβώς από αυτό—απόδοση μιας απομακρυσμένης ιστοσελίδας σε PDF, και στη συνέχεια **συμπίεση του PDF σε zip** χωρίς ποτέ να αγγίξουμε το δίσκο. + +Θα καλύψουμε επίσης πώς να **μετατρέψετε URL σε PDF**, **δημιουργήσετε PDF από ιστοσελίδα**, και τελικά **συμπιέσετε αρχείο PDF** ώστε να το στείλετε όπου χρειάζεται. Χωρίς περιττές πληροφορίες, μόνο μια λειτουργική λύση που μπορείτε να ενσωματώσετε σε ένα έργο .NET 6+ σήμερα. + +## Τι Θα Χρειαστεί + +- **.NET 6** ή νεότερο (ο κώδικας λειτουργεί επίσης με .NET Framework 4.6+). +- **Aspose.HTML for .NET** – η βιβλιοθήκη που κάνει τη βαριά δουλειά για την απόδοση HTML‑σε‑PDF. +- Μια μέτρια εμπειρία σε C#—αν μπορείτε να γράψετε ένα `Console.WriteLine`, είστε έτοιμοι. +- Ένα IDE της επιλογής σας (Visual Studio, Rider, VS Code…). + +> **Συμβουλή επαγγελματία:** Η Aspose.HTML προσφέρει δωρεάν δοκιμαστική έκδοση που περιλαμβάνει όλες τις δυνατότητες απόδοσης. Κατεβάστε την από την [Aspose website](https://products.aspose.com/html/net/) πριν ξεκινήσετε. + +Τώρα που οι προαπαιτήσεις έχουν καλυφθεί, ας βουτήξουμε. + +## Βήμα 1 – Φόρτωση του Απομακρυσμένου Εγγράφου HTML (Μετατροπή URL σε PDF) + +Το πρώτο που πρέπει να κάνουμε είναι να πούμε στην Aspose.HTML πού βρίσκεται η πηγή. Στην περίπτωσή μας είναι ένα δημόσιο URL, αλλά μπορείτε εξίσου εύκολα να της δώσετε μια συμβολοσειρά που περιέχει ακατέργαστο HTML. + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Γιατί είναι σημαντικό:** Η φόρτωση του εγγράφου από ένα URL σημαίνει ότι ο renderer θα κατεβάσει αυτόματα όλους τους συνδεδεμένους πόρους (CSS, εικόνες, γραμματοσειρές), παρέχοντάς σας μια πιστή αναπαράσταση PDF του ζωντανού ιστότοπου. Η παράλειψη αυτού του βήματος και η παροχή μιας απλής συμβολοσειράς θα αφαιρέσει αυτά τα στοιχεία, κάτι που σπάνια θέλετε όταν *δημιουργείτε PDF από ιστοσελίδα*. + +## Βήμα 2 – Διαμόρφωση Επιλογών Απόδοσης PDF (Η Ποιότητα Μετράει) + +Η Aspose.HTML σας επιτρέπει να ρυθμίσετε την εμφάνιση του PDF. Η αντι‑αποκοπή (antialiasing) και η υποδείξη γραμματοσειρών (font hinting) είναι δύο ρυθμίσεις που κάνουν το αποτέλεσμα καθαρό στην οθόνη και στην εκτύπωση. + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Γιατί τις ορίζουμε:** Χωρίς antialiasing, τα γραφικά γραμμής και τα διανυσματικά γραφικά μπορεί να εμφανίζονται κοφτερά, ειδικά σε οθόνες υψηλής ανάλυσης (high‑DPI). Η υποδείξη (hinting), από την άλλη, λέει στη μηχανή PDF πώς να ευθυγραμμίσει τα γλύφους στα όρια των pixel, μια μικρή ρύθμιση που συχνά κάνει μεγάλη οπτική διαφορά. + +## Βήμα 3 – Προετοιμασία Αρχείου ZIP στη Μνήμη (Συμπίεση Αρχείου PDF) + +Αντί να γράψουμε το PDF πρώτα στο δίσκο και μετά να το συμπιέσουμε—μια διαδικασία I/O δύο βημάτων—θα το ρέουμε απευθείας σε μια καταχώρηση zip. Αυτό διατηρεί τα πάντα στη μνήμη, κάτι τέλειο για web APIs ή εργασίες παρασκηνίου. + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Σημείωση για ειδικές περιπτώσεις:** Εάν διαχειρίζεστε τεράστια PDFs (εκατοντάδες MB), σκεφτείτε να διοχετεύσετε το zip απευθείας σε ροή απόκρισης αντί να το κρατάτε ολόκληρο στη μνήμη. Για τυπικές αναφορές κάτω των 20 MB, αυτή η προσέγγιση είναι ασφαλής και γρήγορη. + +## Βήμα 4 – Ροή του PDF Απευθείας σε Καταχώρηση ZIP + +Αυτή είναι η έξυπνη μέρος: δημιουργούμε μια καταχώρηση zip με όνομα `output.pdf` και δίνουμε τη ροή της πίσω στην Aspose.HTML. Ο renderer γράφει τα bytes του PDF απευθείας στην καταχώρηση zip—χωρίς προσωρινό αρχείο. + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Γιατί το κάνουμε έτσι:** Με το να τροφοδοτούμε τον δημιουργό PDF με μια ροή που δείχνει σε μια καταχώρηση zip, αποφεύγουμε τον κύκλο «εγγραφή‑στο‑δίσκο → zip → διαγραφή». Αυτό όχι μόνο μειώνει το φορτίο I/O αλλά επίσης εξαλείφει τον κίνδυνο να μείνουν ανεπιθύμητα αρχεία στον διακομιστή. + +## Βήμα 5 – Ολοκλήρωση του ZIP και Αποθήκευση + +Αφού γραφτεί το PDF, πρέπει να κλείσουμε το αρχείο zip ώστε ο κεντρικός κατάλογος να εκκαθαριστεί, και στη συνέχεια να γράψουμε ολόκληρο το αρχείο στο δίσκο (ή να το επιστρέψουμε από ένα API). + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Αποτέλεσμα που θα δείτε:** Ένα αρχείο με όνομα `result.zip` που περιέχει μια μόνο καταχώρηση `output.pdf`. Ανοίγοντας το PDF βλέπετε ένα pixel‑perfect στιγμιότυπο του `https://example.com`, με όλα τα στυλ και τις εικόνες. + + + +*Κείμενο εναλλακτικής εικόνας: render html to pdf – στιγμιότυπο του παραγόμενου PDF μέσα σε αρχείο ZIP.* + +## Πλήρες Παράδειγμα Λειτουργίας + +Συνδυάζοντας όλα τα παραπάνω, εδώ είναι το πλήρες, έτοιμο για αντιγραφή‑επικόλληση πρόγραμμα: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### Τι Να Περιμένετε + +- **`result.zip`** εμφανίζεται στο `C:\Temp`. +- Μέσα στο αρχείο θα βρείτε **`output.pdf`**. +- Ανοίγοντας το PDF βλέπετε τη ζωντανή σελίδα από `https://example.com` αποδομένη πιστά. + +Αν εκτελέσετε το πρόγραμμα και το zip είναι κενό, ελέγξτε ξανά ότι το URL είναι προσβάσιμο και ότι η Aspose.HTML έχει άδεια να κατεβάσει εξωτερικούς πόρους (τείχη προστασίας, ρυθμίσεις proxy κλπ.). + +## Συχνές Ερωτήσεις & Ειδικές Περιπτώσεις + +| Ερώτηση | Απάντηση | +|----------|--------| +| *Τι γίνεται αν η σελίδα αναφέρει εξωτερικές γραμματοσειρές;* | Η Aspose.HTML κατεβάζει αυτόματα τις web‑fonts που αναφέρονται μέσω `@font-face`. Βεβαιωθείτε ότι ο διακομιστής μπορεί να φτάσει στα URLs των γραμματοσειρών. | +| *Μπορώ να προσθέσω πολλαπλά PDF στο ίδιο ZIP;* | Ναι—απλώς καλέστε `zipArchive.CreateEntry("report2.pdf")` και αποδώστε ένα άλλο `HTMLDocument` σε αυτή τη ροή. | +| *Πώς ορίζω προσαρμοσμένο όνομα αρχείου PDF;* | Αλλάξτε τη συμβολοσειρά που περνάτε στο `CreateEntry`, π.χ., `CreateEntry("my‑invoice.pdf")`. | +| *Είναι ασφαλές να το χρησιμοποιήσω σε πολυνηματική web εφαρμογή;* | Κάθε αίτηση πρέπει να δημιουργεί το δικό της `MemoryStream` και `ZipArchive`. Τα αντικείμενα δεν είναι thread‑safe, οπότε κοινές εμφανίσεις θα προκαλέσουν διαφθορά. | +| *Τι γίνεται με μεγάλα PDFs;* | Για PDFs > 100 MB, σκεφτείτε να ρέξετε απευθείας στην HTTP απόκριση (`Response.Body`) αντί για προσωρινή αποθήκευση στη μνήμη. | + +## Συμπεράσματα + +Μόλις σας δείξαμε πώς να **αποδώσετε HTML σε PDF**, **μετατρέψετε URL σε PDF**, **δημιουργήσετε PDF από ιστοσελίδα**, και τελικά **συμπιέσετε αρχείο 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/working-with-html-documents/_index.md b/html/greek/net/working-with-html-documents/_index.md index 1990362d0..847744dfa 100644 --- a/html/greek/net/working-with-html-documents/_index.md +++ b/html/greek/net/working-with-html-documents/_index.md @@ -41,6 +41,10 @@ url: /el/net/working-with-html-documents/ Μάθετε πώς να αποθηκεύετε HTML σε C# χρησιμοποιώντας έναν προσαρμοσμένο διαχειριστή πόρων, βήμα-βήμα οδηγός. ### [Πώς να κάνετε έντονο τίτλο με CSS & C# – Πλήρης οδηγός βήμα‑βήμα](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) +### [Δημιουργία HTML από συμβολοσειρά σε C# – Πλήρης οδηγός με Memory Stream](./create-html-from-string-in-c-full-guide-with-memory-stream/) + +Μάθετε πώς να δημιουργήσετε έγγραφο HTML από συμβολοσειρά χρησιμοποιώντας Memory Stream σε C# βήμα-βήμα. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/greek/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/greek/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..37cad071e --- /dev/null +++ b/html/greek/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,278 @@ +--- +category: general +date: 2026-03-28 +description: Δημιουργήστε HTML από συμβολοσειρά χρησιμοποιώντας το Aspose.Html και + καταγράψτε το σε ροή. Μάθετε πώς να μετατρέπετε το HTML σε συμβολοσειρά, να δημιουργείτε + προσαρμοσμένο χειριστή πόρων και να γράφετε HTML σε ροή. +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: el +og_description: Δημιουργήστε HTML από συμβολοσειρά με το Aspose.Html, καταγράψτε το + στη μνήμη και μετατρέψτε το HTML σε συμβολοσειρά. Οδηγός βήμα‑προς‑βήμα για προσαρμοσμένο + διαχειριστή πόρων και εγγραφή HTML σε ροή. +og_title: Δημιουργία HTML από συμβολοσειρά σε C# – Πλήρης οδηγός Memory‑Stream +tags: +- Aspose.Html +- C# +- MemoryStream +title: Δημιουργία HTML από συμβολοσειρά σε C# – Πλήρης οδηγός με Memory Stream +url: /el/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Δημιουργία HTML από συμβολοσειρά σε C# – Πλήρης Οδηγός με Memory Stream + +Έχετε ποτέ χρειαστεί να **δημιουργήσετε HTML από συμβολοσειρά** και να κρατήσετε τα πάντα στη μνήμη χωρίς να αγγίξετε το σύστημα αρχείων; Δεν είστε μόνοι. Πολλοί προγραμματιστές αντιμετωπίζουν αυτό το πρόβλημα όταν θέλουν να δημιουργήσουν δυναμικό markup άμεσα—π.χ. για ένα πρότυπο email ή για μετατροπή σε PDF—αλλά δεν θέλουν ένα προσωρινό αρχείο να κατακλύζει το δίσκο. + +Τα καλά νέα; Με το Aspose.Html μπορείτε να δημιουργήσετε ένα `HTMLDocument` απευθείας από μια συμβολοσειρά, να το δώσετε σε έναν **custom resource handler**, και να **write HTML to stream** για μελλοντική χρήση. Σε αυτό το tutorial θα περάσουμε από κάθε βήμα, από την αρχική συμβολοσειρά μέχρι το τελικό αποτέλεσμα `string`, και θα εξηγήσουμε *γιατί* κάθε μέρος είναι σημαντικό. + +Με το τέλος αυτού του οδηγού θα μπορείτε να: + +* Δημιουργήσετε HTML από συμβολοσειρά χρησιμοποιώντας Aspose.Html. +* Μετατρέψετε HTML σε συμβολοσειρά χωρίς να γράψετε στο δίσκο. +* Καταγράψετε HTML με έναν custom resource handler. +* Γράψετε HTML σε `MemoryStream` και το διαβάσετε ξανά. +* Εντοπίσετε κοινά προβλήματα και εφαρμόσετε συμβουλές βέλτιστων πρακτικών. + +Δεν απαιτούνται εξωτερικές εξαρτήσεις εκτός από το Aspose.Html—απλώς ένα .NET project και μερικές δηλώσεις using. + +--- + +## Προαπαιτούμενα + +* .NET 6.0 ή νεότερο (ο κώδικας λειτουργεί και σε .NET Framework). +* Πακέτο NuGet Aspose.Html for .NET (`Install-Package Aspose.Html`). +* Βασικές γνώσεις C#—αν έχετε γράψει ποτέ `Console.WriteLine`, είστε έτοιμοι. + +--- + +## Βήμα 1: Δημιουργία HTML από συμβολοσειρά – το αρχικό σημείο + +Το πρώτο που χρειαζόμαστε είναι μια ακατέργαστη συμβολοσειρά HTML. Σκεφτείτε το ως το σκελετό που κανονικά θα επικολλούσατε σε ένα αρχείο `.html`. + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "` टैग जनरेट करेंगे, हमने जो स्टाइल बनाया है उसे इन्जेक्ट करेंगे, और उसका टेक्स्ट कंटेंट सेट करेंगे। + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +यदि आप `paragraph.OuterHtml` को inspect करेंगे तो आपको कुछ इस तरह दिखेगा: + +```html +
Bold & Italic text
+``` + +यह लाइन **add bold italic text** को बिना किसी रॉ CSS स्ट्रिंग लिखे प्रदर्शित करती है। + +## चरण 5: पैराग्राफ को बॉडी में जोड़ें + +अंत में, हम **append element to body** करते हैं। यह पहेली का अंतिम टुकड़ा है जो वास्तव में पैराग्राफ को पेज पर रेंडर करता है। + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +यदि आपको अधिक जटिल पोजिशनिंग चाहिए तो आप `htmlDoc.Body.InsertBefore` या `ReplaceChild` भी कॉल कर सकते हैं। अधिकांश परिदृश्यों में, एक साधारण `AppendChild` ही काम करता है। + +## चरण 6: HTML स्ट्रिंग आउटपुट करें (या फ़ाइल में सेव करें) + +अब जब हमने DOM बना लिया है, चलिए अंतिम HTML निकालते हैं। Aspose.HTML आपको एक ही कॉल के साथ दस्तावेज़ को सीरियलाइज़ करने की सुविधा देता है। + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +जब आप `result.html` को ब्राउज़र में खोलेंगे तो आपको एक ही पैराग्राफ दिखेगा जो बोल्ड और इटैलिक दोनों है, बिल्कुल वही जैसा हमने इरादा किया था। + +### अपेक्षित आउटपुट + +```html + + + + +Bold & Italic text
+ + +``` + +यदि आप ईमेल के लिए HTML जनरेट कर रहे हैं, तो बस `finalHtml` को अपने ईमेल बॉडी में डाल दें और स्टाइलिंग अधिकांश आधुनिक क्लाइंट्स में बनी रहेगी। + +## सामान्य विविधताएँ और किनारे के मामले + +- **Multiple Styles:** क्या आप बैकग्राउंड कलर भी जोड़ना चाहते हैं? `CSSStyleDeclaration` को विस्तारित करें: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **Different Elements:** `` के बजाय आप `htmlDoc.CreateElement("div")` का उपयोग करके `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +इस प्रोग्राम को चलाएँ, `result.html` खोलें, और आप देखेंगे कि स्टाइल किया हुआ पैराग्राफ ठीक उसी तरह रेंडर हुआ जैसा वर्णित है। कोई मैनुअल स्ट्रिंग कंकैटनेशन नहीं, कोई नाज़ुक HTML लिटरल नहीं—सिर्फ साफ़, टाइप‑सेफ DOM मैनिपुलेशन। + +## समापन + +हमने **HTML कैसे बनाएं** को Aspose.HTML का उपयोग करके शुरू से उत्तर दिया, **append element to body** दिखाया, **create paragraph element** का स्पष्ट तरीका प्रस्तुत किया, **add bold italic text** समझाया, और **add css style programmatically** की बारीकियों को कवर किया। + +यदि आप इस पैटर्न में सहज हैं, तो आप इसे पूर्ण‑पेजेज़ जनरेट करने के लिए विस्तारित कर सकते हैं: टेबल्स, इमेजेज, यहाँ तक कि इंटरैक्टिव स्क्रिप्ट्स। वही सिद्धांत लागू होते हैं—स्टाइल्स परिभाषित करें, एलिमेंट्स बनाएं, एट्रिब्यूट सेट करें, और उन्हें जहाँ चाहिए वहाँ जोड़ें। + +### आगे क्या? + +- **Dynamic Content:** डेटाबेस से डेटा खींचें और टेबल में रो जनरेट करने के लिए लूप चलाएँ। +- **Styling Libraries:** बड़े प्रोजेक्ट्स के लिए इस दृष्टिकोण को बाहरी CSS फ़ाइलों के साथ मिलाएँ। +- **Export Options:** `HTMLDocument` को सीधे Aspose.PDF या Aspose.Words में फीड करें ताकि बिना मध्यवर्ती स्ट्रिंग के PDF या DOCX फ़ाइलें बन सकें। + +बिना हिचकिचाए प्रयोग करें, चीज़ें तोड़ें, फिर उन्हें ठीक करें—यह C# में DOM प्रोग्रामिंग को आंतरिक रूप से समझने का सबसे तेज़ तरीका है। कोई प्रश्न या अलग उपयोग‑केस है? नीचे कमेंट करें, और कोडिंग का आनंद लें! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/hindi/net/rendering-html-documents/_index.md b/html/hindi/net/rendering-html-documents/_index.md index f656f4636..3c854c877 100644 --- a/html/hindi/net/rendering-html-documents/_index.md +++ b/html/hindi/net/rendering-html-documents/_index.md @@ -58,9 +58,9 @@ Aspose.HTML for .NET में रेंडरिंग टाइमआउट ### [Aspose.HTML के साथ .NET में SVG दस्तावेज़ को PNG के रूप में प्रस्तुत करें](./render-svg-doc-as-png/) .NET के लिए Aspose.HTML की शक्ति अनलॉक करें! SVG Doc को आसानी से PNG के रूप में रेंडर करना सीखें। चरण-दर-चरण उदाहरणों और FAQ में गोता लगाएँ। अभी शुरू करें! ### [HTML को PNG के रूप में रेंडर करने का पूर्ण C# गाइड](./how-to-render-html-as-png-complete-c-guide/) -C# में Aspose.HTML का उपयोग करके HTML को PNG में बदलने के चरण-दर-चरण निर्देश। +C# में Aspose.HTML का उपयोग करके HTML को PNG में बदलने के चरण-दर-स्टेप निर्देश। -### [Aspose का उपयोग करके HTML को PNG में रेंडर करने का चरण‑दर‑चरण गाइड](./how-to-use-aspose-to-render-html-to-png-step-by-step-guide/) +### [Aspose का उपयोग करके HTML को PNG में रेंडर करने का चरण‑दर‑शरण गाइड](./how-to-use-aspose-to-render-html-to-png-step-by-step-guide/) Aspose.HTML के साथ HTML को PNG फ़ॉर्मेट में बदलने की पूरी प्रक्रिया सीखें, कोड उदाहरण और टिप्स के साथ। ### [Aspose के साथ HTML को PNG में रेंडर करने का पूर्ण गाइड](./how-to-render-html-to-png-with-aspose-complete-guide/) @@ -68,6 +68,12 @@ Aspose.HTML का उपयोग करके HTML को PNG फ़ॉर् ### [HTML से PNG बनाएं – पूर्ण C# रेंडरिंग गाइड](./create-png-from-html-full-c-rendering-guide/) HTML को PNG में बदलने के लिए पूर्ण C# रेंडरिंग चरणों को सीखें और Aspose.HTML का उपयोग करके उच्च गुणवत्ता वाले परिणाम प्राप्त करें। +### [PDF दस्तावेज़ बनाएं C# – Aspose के साथ HTML को PDF में रेंडर करें](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +Aspose.HTML का उपयोग करके C# में HTML को PDF में बदलने की पूरी प्रक्रिया सीखें। + +### [HTML को PDF में रेंडर करें और ज़िप करें – पूर्ण C# गाइड](./render-html-to-pdf-and-zip-it-complete-c-guide/) +Aspose.HTML का उपयोग करके HTML को PDF में बदलें और ज़िप फ़ाइल बनाएं। C# में चरण‑दर‑शरण गाइड। + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/hindi/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/hindi/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..23f77cccb --- /dev/null +++ b/html/hindi/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-03-28 +description: Aspose HTML to PDF का उपयोग करके C# में PDF दस्तावेज़ बनाएं। जानें कि + HTML को PDF में कैसे रेंडर करें, HTML को PDF में कैसे परिवर्तित करें, और Linux के + लिए हिन्टिंग कैसे सक्षम करें। +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: hi +og_description: C# में तुरंत PDF दस्तावेज़ बनाएं। यह गाइड दिखाता है कि HTML को PDF + में कैसे रेंडर करें, HTML को PDF में कैसे परिवर्तित करें, और टेक्स्ट हिंटिंग के + साथ Aspose HTML को PDF में कैसे उपयोग करें। +og_title: PDF दस्तावेज़ बनाएं C# – Aspose के साथ HTML को PDF में रेंडर करें +tags: +- Aspose +- C# +- PDF generation +title: PDF दस्तावेज़ बनाएं C# – Aspose के साथ HTML को PDF में रेंडर करें +url: /hi/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF दस्तावेज़ C# बनाना – Aspose के साथ HTML को PDF में रेंडर करना + +क्या आपको कभी डायनामिक HTML स्ट्रिंग से **create PDF document C#** बनाने की ज़रूरत पड़ी है और आश्चर्य हुआ कि Linux पर टेक्स्ट धुंधला क्यों दिखता है? आप अकेले नहीं हैं। अच्छी खबर यह है कि Aspose HTML के साथ **render HTML to PDF** बहुत आसान हो जाता है, और कुछ अतिरिक्त विकल्पों के साथ आप हेडलेस सर्वरों पर भी तेज़‑तीक्ष्ण glyphs प्राप्त कर सकते हैं। + +इस ट्यूटोरियल में हम एक पूर्ण, तैयार‑चलाने‑योग्य उदाहरण के माध्यम से चलेंगे जो Aspose HTML for .NET लाइब्रेरी का उपयोग करके **converts HTML to PDF** करता है। हम यह भी बताएँगे कि आपको hinting क्यों सक्षम करना चाहिए, रेंडरिंग पाइपलाइन कैसे सेट‑अप करें, और बाद में पेज साइज या DPI को कस्टमाइज़ करने की आवश्यकता होने पर क्या करना है। कोई बाहरी दस्तावेज़ नहीं चाहिए—सिर्फ कॉपी, पेस्ट और रन करें। + +## What You’ll Need + +- **.NET 6+** (या .NET Framework 4.6.2+). Aspose HTML दोनों को सपोर्ट करता है, लेकिन नीचे दिया गया उदाहरण सरलता के लिए .NET 6 को टार्गेट करता है। +- **Aspose.HTML for .NET** NuGet पैकेज (`Aspose.Html`). इसे Package Manager Console के माध्यम से इंस्टॉल करें: + + ```powershell + Install-Package Aspose.Html + ``` + +- एक **Linux या Windows** वातावरण। hinting फ़्लैग विशेष रूप से Linux पर उपयोगी है, लेकिन कोड हर जगह काम करता है। +- आपका पसंदीदा IDE या एडिटर (Visual Studio, VS Code, Rider…)। + +बस इतना ही—कोई अतिरिक्त फ़ॉन्ट नहीं, कोई PDF प्रिंटर ड्राइवर नहीं, सिर्फ एक सिंगल DLL। + +## Step 1: Configure Text Rendering Options (Primary Keyword in Action) + +पहला काम हम Aspose को बताते हैं कि glyph रेंडरिंग को कैसे हैंडल करना है। Linux पर डिफ़ॉल्ट rasterizer धुंधले कैरेक्टर बना सकता है, इसलिए हम hinting को ऑन कर देते हैं। + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**Why?** +`UseHinting` renderer को वेक्टर outlines को pixel grid के साथ align करने के लिए मजबूर करता है, जिससे headless Linux containers में उत्पन्न PDFs में अक्सर देखे जाने वाले धुंधले किनारे समाप्त हो जाते हैं। `FontSize` प्रॉपर्टी अनिवार्य नहीं है, लेकिन यह किसी भी HTML के लिए एक पूर्वानुमेय बेसलाइन देती है जो अपना आकार निर्दिष्ट नहीं करता। + +> **Pro tip:** यदि आप केवल Windows को टार्गेट कर रहे हैं, तो आप hinting को स्किप कर सकते हैं—Windows पहले से ही स्वचालित रूप से sub‑pixel rendering लागू करता है। + +## Step 2: Attach Text Options to PDF Rendering Settings + +अब हम एक `PdfRenderingOptions` इंस्टेंस बनाते हैं और अभी कॉन्फ़िगर किए गए `TextOptions` को इसमें प्लग करते हैं। यह ऑब्जेक्ट पूरी कन्वर्ज़न प्रक्रिया को नियंत्रित करता है। + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**Why bind them?** +`PdfRenderingOptions` ऑब्जेक्ट HTML इंजन और PDF राइटर के बीच पुल का काम करता है। यहाँ `TextOptions` असाइन करके, प्रत्येक रेंडर किया गया पेज hinting कॉन्फ़िगरेशन को विरासत में लेगा, जिससे पूरे दस्तावेज़ में आउटपुट सुसंगत रहेगा। + +## Step 3: Load Your HTML Content + +Aspose आपको HTML को स्ट्रिंग, फ़ाइल, या यहाँ तक कि URL से फीड करने की अनुमति देता है। इस ट्यूटोरियल के लिए हम इसे सरल रखते हुए इन‑मे़मोरी स्ट्रिंग का उपयोग करेंगे। + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**Why a string?** +जब आप ऑन‑द‑फ़्लाई रिपोर्ट (जैसे invoices, receipts) जनरेट करते हैं, तो आप अक्सर स्ट्रिंग इंटरपोलेशन या टेम्प्लेटिंग इंजन का उपयोग करके HTML असेंबल करते हैं। स्ट्रिंग को सीधे पास करने से टेम्पररी फ़ाइलों की आवश्यकता नहीं रहती और पाइपलाइन तेज़ हो जाती है। + +## Step 4: Save the PDF with the Configured Options + +अब हम अंततः PDF को डिस्क पर लिखते हैं। `Save` मेथड टार्गेट पाथ और पहले तैयार किए गए रेंडरिंग ऑप्शन्स को लेता है। + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**What you’ll see:** +`hinted.pdf` को किसी भी PDF व्यूअर में खोलें। पैराग्राफ “Hinted text on Linux” साफ़ दिखना चाहिए, Arial फ़ॉन्ट साफ़ रेंडर हुआ होगा। Linux पर आप `UseHinting` के बिना जनरेट किए गए PDF की तुलना में अंतर देखेंगे। + +> **Expected output:** एक सिंगल‑पेज PDF जिसमें 14‑pt Arial में पैराग्राफ हो, बिना किसी धुंधले किनारे के। + +### Full Working Example + +नीचे पूरा प्रोग्राम दिया गया है जिसे आप एक कंसोल ऐप प्रोजेक्ट में कॉपी कर सकते हैं। इसमें सभी using स्टेटमेंट्स, एरर हैंडलिंग, और स्पष्टता के लिए कमेंट्स शामिल हैं। + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +प्रोग्राम चलाएँ (`dotnet run`), और आपके पास वितरण, आर्काइविंग, या आगे की प्रोसेसिंग के लिए तैयार PDF होगा। + + + +## Frequently Asked Questions (FAQ) + +### Does this work with **aspose html to pdf** on .NET Core? +बिल्कुल। वही API सतह .NET Framework, .NET Core, और .NET 5/6 में उपलब्ध है। बस यह सुनिश्चित करें कि NuGet पैकेज संस्करण आपके टार्गेट फ्रेमवर्क से मेल खाता हो। + +### How can I **render HTML to PDF** with custom page size? +एक `PdfPageSetup` ऑब्जेक्ट बनाएँ, `Width`, `Height`, या `Size` सेट करें, और इसे `pdfRenderOptions.PageSetup` को असाइन करें। उदाहरण: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### What if I need to **convert HTML to PDF** in a web API? +PDF को `FileResult` के रूप में रिटर्न करें: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### Can I use this for **html to pdf c#** in a Linux Docker container? +हां। hinting फ़्लैग विशेष रूप से हेडलेस Linux एनवायरनमेंट के लिए डिज़ाइन किया गया है। यदि आप Alpine पर हैं तो `libgdiplus` पैकेज इंस्टॉल करें, और कन्वर्ज़न बॉक्स से बाहर काम करेगा। + +## Advanced Tweaks (Beyond the Basics) + +- **Embedding Fonts:** यदि आपका HTML कस्टम फ़ॉन्ट्स रेफ़र करता है, तो रेंडरिंग से पहले `htmlDoc.Fonts.Add("MyFont", fontBytes);` कॉल करें। +- **Image Handling:** हाई‑DPI ग्राफ़िक्स के लिए `pdfRenderOptions.ImageResolution = 300;` सक्षम करें। +- **Security:** आउटपुट को पासवर्ड‑प्रोटेक्ट करने के लिए `PdfSaveOptions` उपयोग करें (`PdfSaveOptions.Password = "secret";`)। + +इन विकल्पों से आप एक साधारण **convert html to pdf** स्निपेट को प्रोडक्शन‑रेडी सर्विस में बदल सकते हैं। + +## Recap + +हमने अभी दिखाया कि कैसे **create PDF document C#** को Aspose HTML के साथ HTML रेंडर करके, Linux पर तेज़ आउटपुट के लिए टेक्स्ट hinting सक्षम करके, और एक ही मेथड कॉल से परिणाम सहेजकर किया जाता है। कवर किए गए चरण: + +1. `TextOptions` सेट करें (hinting)। +2. उन्हें `PdfRenderingOptions` से जोड़ें। +3. स्ट्रिंग से HTML लोड करें। +4. PDF सहेजें। + +अब आपके पास कोई भी परिदृश्य संभालने के लिए एक ठोस आधार है जिसमें **aspose html to pdf**, **render html to pdf**, **convert html to pdf**, या **html to pdf c#** की आवश्यकता होती है। पेज लेआउट, एम्बेडेड फ़ॉन्ट्स, या PDF को सीधे क्लाइंट को स्ट्रीम करने के साथ प्रयोग करने में संकोच न करें। + +--- + +**Next steps:** +- टेबल्स और इमेजेज़ वाले मल्टी‑पेज HTML रिपोर्ट को कन्वर्ट करने की कोशिश करें। +- पोस्ट‑प्रोसेसिंग (बुकमार्क, वॉटरमार्क जोड़ना) के लिए Aspose के `PdfDocument` API को एक्सप्लोर करें। +- इस कन्वर्ज़न को बैकग्राउंड जॉब क्यू (जैसे Hangfire) के साथ जोड़ें ताकि मांग पर PDFs जनरेट हो सकें। + +Happy coding, and may your PDFs always be crisp! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/hindi/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/hindi/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..ec8381534 --- /dev/null +++ b/html/hindi/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-03-28 +description: HTML को सीधे URL से PDF में रेंडर करें और परिणाम को ZIP फ़ाइल में संपीड़ित + करें। जानें कि URL को PDF में कैसे बदलें, वेबसाइट से PDF कैसे जनरेट करें, और C# + में PDF फ़ाइल को ज़िप कैसे करें। +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: hi +og_description: HTML को सीधे URL से PDF में रेंडर करें, फिर PDF को ZIP फ़ाइल में संकुचित + करें। यह चरण‑दर‑चरण ट्यूटोरियल दिखाता है कि URL को PDF में कैसे बदलें, वेबसाइट से + PDF कैसे जनरेट करें, और C# में PDF फ़ाइल को ज़िप कैसे करें। +og_title: HTML को PDF में रेंडर करें और ज़िप करें – पूर्ण C# गाइड +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: HTML को PDF में रेंडर करें और ज़िप करें – पूर्ण C# गाइड +url: /hi/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML को PDF में रेंडर करें और ज़िप करें – पूर्ण C# गाइड + +क्या आपको कभी **HTML को PDF में रेंडर** करने की ज़रूरत पड़ी है और फिर फ़ाइल को क्लाइंट को एक ही आर्काइव के रूप में भेजना था? शायद आप एक रिपोर्टिंग सर्विस बना रहे हैं जो लाइव वेबपेज को खींचती है, उसे PDF में बदलती है, और आसान डाउनलोड के लिए परिणाम को ज़िप में स्टोर करती है। इस ट्यूटोरियल में हम ठीक यही करेंगे—एक रिमोट वेब पेज को PDF में रेंडर करेंगे, फिर **PDF को ज़िप में कॉम्प्रेस** करेंगे बिना डिस्क को छुए। + +हम यह भी कवर करेंगे कि **URL को PDF में कैसे बदलें**, **वेबसाइट से PDF जेनरेट करें**, और अंत में **PDF फ़ाइल को ज़िप करें** ताकि आप इसे जहाँ भी चाहें भेज सकें। कोई फज़ूल बात नहीं, सिर्फ एक काम करने वाला समाधान जिसे आप आज ही .NET 6+ प्रोजेक्ट में डाल सकते हैं। + +## आपको क्या चाहिए + +- **.NET 6** या बाद का (कोड .NET Framework 4.6+ के साथ भी काम करता है)। +- **Aspose.HTML for .NET** – वह लाइब्रेरी जो HTML‑to‑PDF रेंडरिंग का भारी काम करती है। +- थोड़ा‑बहुत C# का अनुभव—यदि आप `Console.WriteLine` लिख सकते हैं, तो आप तैयार हैं। +- आपका पसंदीदा IDE (Visual Studio, Rider, VS Code…)। + +> **Pro tip:** Aspose.HTML एक फ्री ट्रायल देता है जिसमें सभी रेंडरिंग फीचर शामिल हैं। शुरू करने से पहले इसे [Aspose वेबसाइट](https://products.aspose.com/html/net/) से प्राप्त करें। + +अब जब प्रीक्विज़िट्स दूर हो गए हैं, चलिए आगे बढ़ते हैं। + +## Step 1 – Load the Remote HTML Document (Convert URL to PDF) + +सबसे पहले हमें Aspose.HTML को बताना है कि स्रोत कहाँ है। हमारे केस में यह एक पब्लिक URL है, लेकिन आप इसे आसानी से एक स्ट्रिंग में रॉ HTML दे भी सकते हैं। + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Why this matters:** URL से डॉक्यूमेंट लोड करने पर रेंडरर सभी लिंक्ड रिसोर्सेज (CSS, इमेजेज, फ़ॉन्ट्स) को ऑटोमैटिकली फ़ेच करता है, जिससे आपको लाइव साइट की एक सटीक PDF प्रतिलिपि मिलती है। इस स्टेप को स्किप करके सिर्फ़ स्ट्रिंग पास करने से ये एसेट्स हट जाएंगे, जो अक्सर *वेबसाइट से PDF जेनरेट* करने पर नहीं चाहिए होते। + +## Step 2 – Configure PDF Rendering Options (Quality Matters) + +Aspose.HTML आपको PDF के लुक को ट्यून करने की सुविधा देता है। एंटी‑एलियासिंग और फ़ॉन्ट हिन्टिंग दो सेटिंग्स हैं जो आउटपुट को स्क्रीन और प्रिंट दोनों पर तेज़ बनाती हैं। + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Why we set these:** एंटी‑एलियासिंग के बिना लाइन आर्ट और वेक्टर ग्राफ़िक्स जगरड दिख सकते हैं, ख़ासकर हाई‑DPI डिस्प्ले पर। हिन्टिंग, दूसरी ओर, PDF इंजन को बताती है कि ग्लिफ़्स को पिक्सेल बाउंड्रीज़ पर कैसे अलाइन किया जाए, एक छोटा ट्यून जो अक्सर बड़ी विज़ुअल डिफ़रेंस लाता है। + +## Step 3 – Prepare an In‑Memory ZIP Archive (Zip PDF File) + +PDF को पहले डिस्क पर लिखने और फिर ज़िप करने की दो‑स्टेप I/O परेशानी की बजाय, हम सीधे एक ज़िप एंट्री में स्ट्रीम करेंगे। यह सब मेमोरी में रहता है, जो वेब API या बैकग्राउंड जॉब्स के लिए परफ़ेक्ट है। + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Edge case note:** यदि आप बहुत बड़े PDF (सैकड़ों MB) के साथ काम कर रहे हैं, तो ज़िप को सीधे रिस्पॉन्स स्ट्रीम में पाइप करने पर विचार करें बजाय पूरी चीज़ को मेमोरी में रखने के। सामान्य रिपोर्ट्स जो 20 MB से कम हैं, इस एप्रोच के लिए सुरक्षित और तेज़ है। + +## Step 4 – Stream the PDF Directly into a ZIP Entry + +यहाँ है चालाकी: हम `output.pdf` नाम की एक ज़िप एंट्री बनाते हैं और उसका स्ट्रीम Aspose.HTML को देते हैं। रेंडरर PDF बाइट्स को सीधे ज़िप एंट्री में लिखता है—कोई टेम्पररी फ़ाइल नहीं। + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Why we do it this way:** PDF राइटर को ऐसे स्ट्रीम से फ़ीड करके जो ज़िप एंट्री की ओर इशारा करता है, हम “डिस्क → ज़िप → डिलीट” साइकिल से बचते हैं। इससे I/O ओवरहेड कम होता है और सर्वर पर अनजाने फ़ाइलें बची रहने का जोखिम नहीं रहता। + +## Step 5 – Finalize the ZIP and Persist It + +PDF लिखे जाने के बाद हमें ज़िप आर्काइव को बंद करना पड़ता है ताकि सेंट्रल डायरेक्टरी फ्लश हो जाए, फिर पूरी चीज़ को डिस्क पर लिखें (या API से रिटर्न करें)। + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Result you’ll see:** `result.zip` नाम की फ़ाइल जिसमें एक ही एंट्री `output.pdf` होगी। PDF खोलने पर `https://example.com` का पिक्सेल‑परफ़ेक्ट स्नैपशॉट दिखेगा, पूरी स्टाइल्स और इमेजेज के साथ। + + +*छवि वैकल्पिक पाठ: रेंडर HTML से PDF उदाहरण – ज़िप आर्काइव के अंदर जेनरेटेड PDF का स्क्रीनशॉट।* + +## Full Working Example + +सब कुछ एक साथ मिलाकर, यहाँ पूरा, कॉपी‑पेस्ट‑रेडी प्रोग्राम है: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### What to Expect + +- **`result.zip`** `C:\Temp` में बनता है। +- आर्काइव के अंदर **`output.pdf`** मिलेगा। +- PDF खोलने पर `https://example.com` का लाइव पेज सटीक रूप से रेंडर हुआ दिखेगा। + +यदि आप प्रोग्राम चलाते हैं और ज़िप खाली है, तो जाँचें कि URL पहुँच योग्य है और Aspose.HTML को बाहरी रिसोर्सेज डाउनलोड करने की अनुमति है (फ़ायरवॉल, प्रॉक्सी सेटिंग्स आदि)। + +## Common Questions & Edge Cases + +| प्रश्न | उत्तर | +|----------|--------| +| *यदि पेज एक्सटर्नल फ़ॉन्ट्स रेफ़र करता है तो क्या होगा?* | Aspose.HTML `@font-face` द्वारा रेफ़र किए गए वेब‑फ़ॉन्ट्स को ऑटोमैटिकली डाउनलोड करता है। सुनिश्चित करें कि सर्वर फ़ॉन्ट URLs तक पहुँच सके। | +| *क्या मैं एक ही ज़िप में कई PDFs जोड़ सकता हूँ?* | हाँ—सिर्फ़ `zipArchive.CreateEntry("report2.pdf")` कॉल करें और दूसरे `HTMLDocument` को उस स्ट्रीम में रेंडर करें। | +| *कस्टम PDF फ़ाइलनाम कैसे सेट करें?* | `CreateEntry` को पास किए गए स्ट्रिंग को बदलें, जैसे `CreateEntry("my‑invoice.pdf")`। | +| *क्या यह मल्टी‑थ्रेडेड वेब ऐप में सुरक्षित है?* | प्रत्येक रिक्वेस्ट को अपना `MemoryStream` और `ZipArchive` बनाना चाहिए। ये ऑब्जेक्ट्स थ्रेड‑सेफ़ नहीं हैं, इसलिए साझा इंस्टेंस से करप्शन हो सकता है। | +| *बड़े PDFs के बारे में क्या?* | 100 MB से बड़े PDFs के लिए मेमोरी में बफ़र करने की बजाय सीधे HTTP रिस्पॉन्स (`Response.Body`) में स्ट्रीम करने पर विचार करें। | + +## Wrapping Up + +हमने आपको दिखाया कि कैसे **HTML को PDF में रेंडर करें**, **URL को PDF में बदलें**, **वेबसाइट से PDF जेनरेट करें**, और अंत में **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/hindi/net/working-with-html-documents/_index.md b/html/hindi/net/working-with-html-documents/_index.md index 4c5be51ef..4a00fe67f 100644 --- a/html/hindi/net/working-with-html-documents/_index.md +++ b/html/hindi/net/working-with-html-documents/_index.md @@ -38,6 +38,7 @@ 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 बनाना – मेमोरी स्ट्रीम के साथ पूर्ण गाइड](./create-html-from-string-in-c-full-guide-with-memory-stream/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/hindi/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/hindi/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..271bd518e --- /dev/null +++ b/html/hindi/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,278 @@ +--- +category: general +date: 2026-03-28 +description: Aspose.Html का उपयोग करके स्ट्रिंग से HTML बनाएं और उसे स्ट्रीम में कैप्चर + करें। HTML को स्ट्रिंग में बदलना, कस्टम रिसोर्स हैंडलर और HTML को स्ट्रीम में लिखना + सीखें। +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: hi +og_description: Aspose.Html के साथ स्ट्रिंग से HTML बनाएं, इसे मेमोरी में कैप्चर करें, + और HTML को स्ट्रिंग में बदलें। कस्टम रिसोर्स हैंडलर और HTML को स्ट्रीम में लिखने + के लिए चरण‑दर‑चरण गाइड। +og_title: C# में स्ट्रिंग से HTML बनाएं – पूर्ण मेमोरी‑स्ट्रीम ट्यूटोरियल +tags: +- Aspose.Html +- C# +- MemoryStream +title: C# में स्ट्रिंग से HTML बनाएं – मेमोरी स्ट्रीम के साथ पूर्ण गाइड +url: /hi/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# में स्ट्रिंग से HTML बनाएं – मेमोरी स्ट्रीम के साथ पूर्ण गाइड + +क्या आपको कभी **स्ट्रिंग से HTML बनाना** और सब कुछ मेमोरी में रखना पड़ा है बिना फ़ाइल सिस्टम को छुए? आप अकेले नहीं हैं। कई डेवलपर्स इस समस्या का सामना करते हैं जब वे डायनामिक मार्कअप तुरंत जनरेट करना चाहते हैं—जैसे ईमेल टेम्पलेट या PDF कन्वर्ज़न के लिए—पर वे डिस्क पर अस्थायी फ़ाइल नहीं चाहते। + +अच्छी खबर? Aspose.Html के साथ आप एक `HTMLDocument` को सीधे स्ट्रिंग से बना सकते हैं, उसे **कस्टम रिसोर्स हैंडलर** में फीड कर सकते हैं, और **HTML को स्ट्रीम में लिख सकते हैं** बाद में उपयोग के लिए। इस ट्यूटोरियल में हम हर कदम को विस्तार से देखेंगे, शुरुआती स्ट्रिंग से लेकर अंतिम `string` परिणाम तक, और समझाएंगे *क्यों* प्रत्येक भाग महत्वपूर्ण है। + +इस गाइड के अंत तक आप सक्षम होंगे: + +* Aspose.Html का उपयोग करके स्ट्रिंग से HTML बनाना। +* डिस्क पर लिखे बिना HTML को स्ट्रिंग में बदलना। +* कस्टम रिसोर्स हैंडलर के साथ HTML को कैप्चर करना। +* `MemoryStream` में HTML लिखना और उसे पढ़ना। +* सामान्य पिटफ़ॉल्स को पहचानना और बेस्ट‑प्रैक्टिस टिप्स लागू करना। + +Aspose.Html के अलावा कोई बाहरी डिपेंडेंसी आवश्यक नहीं है—सिर्फ एक .NET प्रोजेक्ट और कुछ `using` स्टेटमेंट्स। + +--- + +## Prerequisites + +* .NET 6.0 या बाद का (कोड .NET Framework पर भी काम करता है)। +* Aspose.Html for .NET NuGet पैकेज (`Install-Package Aspose.Html`)। +* बेसिक C# ज्ञान—अगर आपने पहले `Console.WriteLine` लिखा है, तो आप तैयार हैं। + +--- + +## Step 1: Create HTML from string – the starting point + +पहला काम है एक रॉ HTML स्ट्रिंग बनाना। इसे आप ऐसे समझ सकते हैं जैसे आप सामान्यतः `.html` फ़ाइल में पेस्ट करते हैं। + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "` 標籤、套用先前建立的樣式,並設定文字內容。 + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +若你檢查 `paragraph.OuterHtml`,會看到類似以下的結果: + +```html +
Bold & Italic text
+``` + +這行程式碼示範了 **add bold italic text**,且全程不需要手寫 CSS 字串。 + +## 步驟 5:將段落附加到 Body + +最後,我們 **append element to body**。這是讓段落真的出現在頁面上的最後一步。 + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +如果需要更複雜的定位,也可以使用 `htmlDoc.Body.InsertBefore` 或 `ReplaceChild`。在大多數情況下,簡單的 `AppendChild` 已足夠。 + +## 步驟 6:輸出 HTML 字串(或儲存為檔案) + +DOM 建立完成後,讓我們把最終的 HTML 取出。Aspose.HTML 只要一行呼叫即可序列化文件。 + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +當你在瀏覽器開啟 `result.html` 時,會看到一個同時具備粗體與斜體的段落,正如我們預期的那樣。 + +### 預期輸出 + +```html + + + + +Bold & Italic text
+ + +``` + +如果你是為電子郵件產生 HTML,只要把 `finalHtml` 放入郵件內容,樣式在大多數現代客戶端都能正常顯示。 + +## 常見變化與邊緣案例 + +- **多重樣式:** 想同時加入背景色嗎?只要擴充 `CSSStyleDeclaration`: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **不同元素:** 若不想使用 ``,也可以使用 `htmlDoc.CreateElement("div")` 或 `htmlDoc.CreateElement("span")`。`SetAttribute` 的用法相同。 + +- **附加多個節點:** 迭代字串集合,為每筆資料建立段落並依序附加到 body。若樣式相同,請重複使用同一個 `CSSStyleDeclaration`,不必每次都重新建立。 + +- **編碼注意事項:** `TextContent` 會自動對特殊字元(`&`、`<`、`>`)進行 HTML 編碼。若需要原始 HTML,請改用 `InnerHtml`,但要留意可能的注入風險。 + +## 完整範例程式 + +以下是可直接複製貼上的完整程式碼,示範從頭到尾的整個流程。 + +```csharp +using System; +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; + +class Program +{ + static void Main() + { + // 1️⃣ Define CSS style (bold + italic) + var textStyle = new CSSStyleDeclaration + { + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic + }; + + // 2️⃣ Create a new HTML document + var htmlDoc = new HTMLDocument(); + + // 3️⃣ Build a
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +執行此程式,開啟 `result.html`,即可看到如前所述的樣式化段落。沒有手動字串拼接,沒有脆弱的 HTML 文字——只有乾淨、型別安全的 DOM 操作。 + +## 小結 + +我們已說明 **如何建立 HTML**,示範 **append element to body**,展示 **create paragraph element** 的寫法,解釋 **add bold italic text**,以及 **add css style programmatically** 的細節。 + +如果你已熟悉此模式,便可擴展至產生完整頁面:表格、圖片,甚至互動腳本。原理相同——定義樣式、建立元素、設定屬性,最後將它們附加到正確的位置。 + +### 接下來可以做什麼? + +- **動態內容:** 從資料庫撈取資料,迴圈產生表格列。 +- **樣式庫結合:** 在大型專案中,將此方式與外部 CSS 檔案結合使用。 +- **匯出選項:** 直接把 `HTMLDocument` 交給 Aspose.PDF 或 Aspose.Words,產生 PDF 或 DOCX,無需中間字串。 + +盡情實驗、嘗試、再修正——這是快速熟悉 C# DOM 程式設計的最佳方式。若有任何問題或其他使用情境,歡迎在下方留言,祝開發順利! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/hongkong/net/rendering-html-documents/_index.md b/html/hongkong/net/rendering-html-documents/_index.md index dcea15c4c..08540a44e 100644 --- a/html/hongkong/net/rendering-html-documents/_index.md +++ b/html/hongkong/net/rendering-html-documents/_index.md @@ -45,6 +45,7 @@ Aspose.HTML for .NET 因其豐富的功能、優秀的文件和活躍的社群 ### [如何將 HTML 渲染為 PNG – 完整 C# 指南](./how-to-render-html-as-png-complete-c-guide/) 學習使用 Aspose.HTML for .NET 在 C# 中將 HTML 渲染為 PNG,涵蓋完整步驟與最佳實踐。 + ### [從 HTML 建立 PNG – 完整 C# 渲染指南](./create-png-from-html-full-c-rendering-guide/) 學習如何使用 Aspose.HTML for .NET 以 C# 完整渲染 HTML 並將其保存為 PNG 圖像。 @@ -69,6 +70,12 @@ Aspose.HTML for .NET 因其豐富的功能、優秀的文件和活躍的社群 ### [如何使用 Aspose 將 HTML 渲染為 PNG – 完整指南](./how-to-render-html-to-png-with-aspose-complete-guide/) 完整步驟教您使用 Aspose.HTML for .NET 將 HTML 轉換為 PNG 圖像,掌握所有設定與最佳實踐。 +### [建立 PDF 文件 C# – 使用 Aspose 將 HTML 渲染為 PDF](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +學習使用 Aspose.HTML for .NET 在 C# 中將 HTML 渲染為 PDF,完整步驟與最佳實踐。 + +### [將 HTML 渲染為 PDF 並壓縮 – 完整 C# 指南](./render-html-to-pdf-and-zip-it-complete-c-guide/) +學習使用 Aspose.HTML for .NET 在 C# 中將 HTML 渲染為 PDF,並將結果壓縮為 ZIP,完整步驟與最佳實踐。 + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/hongkong/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/hongkong/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..19fdb807d --- /dev/null +++ b/html/hongkong/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,230 @@ +--- +category: general +date: 2026-03-28 +description: 使用 Aspose HTML 轉 PDF 於 C# 建立 PDF 文件。學習如何將 HTML 渲染為 PDF、將 HTML 轉換為 PDF,並在 + Linux 上啟用 hinting。 +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: zh-hant +og_description: 即時使用 C# 建立 PDF 文件。本指南說明如何將 HTML 渲染成 PDF、將 HTML 轉換為 PDF,以及使用 Aspose + HTML 轉 PDF 並加入文字提示。 +og_title: 建立 PDF 文件 C# – 使用 Aspose 將 HTML 轉換為 PDF +tags: +- Aspose +- C# +- PDF generation +title: 使用 C# 建立 PDF 文件 – 使用 Aspose 將 HTML 轉換為 PDF +url: /zh-hant/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 建立 PDF 文件 C# – 使用 Aspose 將 HTML 轉換為 PDF + +是否曾需要從動態 HTML 字串 **create PDF document C#**,卻發現 Linux 上的文字模糊不清?你並不是唯一感到困惑的人。好消息是 Aspose HTML 讓 **render HTML to PDF** 變得輕而易舉,只要加上幾個額外選項,即使在無頭伺服器上也能得到銳利的字形。 + +在本教學中,我們將逐步說明一個完整、可直接執行的範例,使用 Aspose HTML for .NET 函式庫 **converts HTML to PDF**。我們也會說明為何需要啟用 hinting、如何設定渲染管線,以及日後若需自訂頁面大小或 DPI 時的處理方式。無需額外文件——只要複製、貼上並執行即可。 + +## 您需要的條件 + +- **.NET 6+**(或 .NET Framework 4.6.2+)。Aspose HTML 兩者皆支援,但以下範例為簡化起見以 .NET 6 為目標。 +- **Aspose.HTML for .NET** NuGet 套件(`Aspose.Html`)。透過 Package Manager Console 安裝: + + ```powershell + Install-Package Aspose.Html + ``` + +- **Linux 或 Windows** 環境。Hinting 旗標在 Linux 上特別有用,但程式碼在任何平台皆可執行。 +- 您偏好的 IDE 或編輯器(Visual Studio、VS Code、Rider…)。 + +就這樣——不需要額外字型、不需要 PDF 印表機驅動程式,只需一個 DLL。 + +## 步驟 1:設定文字渲染選項(主要關鍵字示範) + +我們首先要告訴 Aspose 如何處理字形渲染。在 Linux 上,預設的光柵化器可能會產生模糊的字元,因此我們開啟 hinting。 + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**Why?** +`UseHinting` 強制渲染器將向量輪廓對齊至像素格,從而消除在無頭 Linux 容器中產生的 PDF 常見的模糊邊緣。`FontSize` 屬性不是必須的,但它能為未指定字體大小的 HTML 提供可預測的基準。 + +> **Pro tip:** 如果您只針對 Windows,則可省略 hinting——Windows 已自動套用次像素渲染。 + +## 步驟 2:將文字選項附加至 PDF 渲染設定 + +接著我們建立 `PdfRenderingOptions` 實例,並插入剛剛設定好的 `TextOptions`。此物件負責整個轉換流程。 + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**Why bind them?** +`PdfRenderingOptions` 物件是 HTML 引擎與 PDF 寫入器之間的橋樑。將 `TextOptions` 指派於此後,所有渲染的頁面都會繼承 hinting 設定,確保整份文件的輸出一致。 + +## 步驟 3:載入您的 HTML 內容 + +Aspose 允許您從字串、檔案,甚至 URL 輸入 HTML。於本教學,我們將保持簡單,使用記憶體中的字串。 + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**Why a string?** +在即時產生報表(例如發票、收據)時,通常會使用字串插值或模板引擎組合 HTML。直接傳遞字串可避免暫存檔,並加快處理流程。 + +## 步驟 4:使用已設定的選項儲存 PDF + +現在我們最終將 PDF 寫入磁碟。`Save` 方法接受目標路徑以及先前準備好的渲染選項。 + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**What you’ll see:** +使用任何 PDF 檢視器開啟 `hinted.pdf`。段落「Hinted text on Linux」應該顯示清晰,Arial 字型渲染乾淨。在 Linux 上,您會注意到與未使用 `UseHinting` 產生的 PDF 之間的差異。 + +> **Expected output:** 單頁 PDF,內含 14 點 Arial 字型的段落,且無模糊邊緣。 + +### 完整範例程式 + +以下是完整程式碼,您可以複製到 Console 應用程式專案中。它包含所有 using 陳述式、錯誤處理與說明註解,以提升可讀性。 + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +執行程式 (`dotnet run`),即可取得可供發佈、存檔或進一步處理的 PDF。 + + + +## 常見問題 (FAQ) + +### 這在 .NET Core 上的 **aspose html to pdf** 能運作嗎? + +絕對可以。相同的 API 在 .NET Framework、.NET Core 以及 .NET 5/6 上皆可使用。只要確保 NuGet 套件版本與您的目標框架相符即可。 + +### 如何使用自訂頁面大小 **render HTML to PDF**? + +建立 `PdfPageSetup` 物件,設定 `Width`、`Height` 或 `Size`,再指派給 `pdfRenderOptions.PageSetup`。範例: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### 若要在 Web API 中 **convert HTML to PDF**,該怎麼做? + +將 PDF 以 `FileResult` 回傳: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### 能否在 Linux Docker 容器中使用 **html to pdf c#**? + +可以。Hinting 旗標專為無頭 Linux 環境設計。若您使用 Alpine,只需安裝 `libgdiplus` 套件,即可直接完成轉換。 + +## 進階調整(超越基礎) + +- **Embedding Fonts:** 若您的 HTML 參考自訂字型,請在渲染前呼叫 `htmlDoc.Fonts.Add("MyFont", fontBytes);`。 +- **Image Handling:** 設定 `pdfRenderOptions.ImageResolution = 300;` 以取得高 DPI 圖形。 +- **Security:** 使用 `PdfSaveOptions` 為輸出設定密碼保護(`PdfSaveOptions.Password = "secret";`)。 + +這些選項讓您能將簡單的 **convert html to pdf** 程式碼片段升級為可投入生產的服務。 + +## 重點回顧 + +我們剛剛示範了如何透過 Aspose HTML 渲染 HTML,使用 **create PDF document C#**,在 Linux 上啟用文字 hinting 以獲得更銳利的輸出,並以單一方法呼叫儲存結果。以下為步驟概述: + +1. 設定 `TextOptions`(hinting)。 +2. 將其附加至 `PdfRenderingOptions`。 +3. 從字串載入 HTML。 +4. 儲存 PDF。 + +現在您已具備堅實基礎,能應對任何需要 **aspose html to pdf**、**render html to pdf**、**convert html to pdf** 或 **html to pdf c#** 的情境。歡迎自行嘗試頁面版面配置、嵌入字型,或將 PDF 直接串流至客戶端。 + +--- + +**Next steps:** +- 嘗試將包含表格與圖片的多頁 HTML 報表轉換。 +- 探索 Aspose 的 `PdfDocument` API 進行後處理(加入書籤、浮水印)。 +- 結合此轉換與背景工作佇列(例如 Hangfire),以按需產生 PDF。 + +祝程式開發順利,願您的 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/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/hongkong/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..eb31094fa --- /dev/null +++ b/html/hongkong/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-03-28 +description: 直接從 URL 渲染 HTML 為 PDF,並將結果壓縮成 ZIP 檔案。學習如何將 URL 轉換為 PDF、從網站產生 PDF,以及在 + C# 中壓縮 PDF 檔案。 +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: zh-hant +og_description: 直接從 URL 渲染 HTML 為 PDF,然後將 PDF 壓縮成 ZIP 檔案。本分步教學示範如何將 URL 轉換為 PDF、從網站產生 + PDF,以及在 C# 中壓縮 PDF 檔案。 +og_title: 將 HTML 渲染為 PDF 並壓縮 – 完整 C# 指南 +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: 將 HTML 渲染成 PDF 並壓縮 – 完整 C# 指南 +url: /zh-hant/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 將 HTML 轉換為 PDF 並壓縮 – 完整 C# 指南 + +是否曾需要即時 **render HTML to PDF**,然後將檔案以單一壓縮檔的形式傳送給客戶?或許你正在建置一個報表服務,從即時網頁抓取內容、轉成 PDF,並將結果存入 zip 方便下載。在本教學中,我們將一步步示範——將遠端網頁渲染成 PDF,接著 **compressing the PDF in a zip**,且全程不觸碰磁碟。 + +我們也會說明如何 **convert URL to PDF**、**generate PDF from website**,最後 **zip PDF file**,讓你可以把它送到任何需要的地方。沒有多餘的說明,只有可直接放入 .NET 6+ 專案的實作範例。 + +## 您需要的條件 + +- **.NET 6** 或更新版本(程式碼同樣支援 .NET Framework 4.6+)。 +- **Aspose.HTML for .NET** – 負責執行 HTML‑to‑PDF 渲染的核心函式庫。 +- 具備基本的 C# 經驗——只要會寫 `Console.WriteLine` 即可上手。 +- 任一你慣用的 IDE(Visual Studio、Rider、VS Code…)。 + +> **Pro tip:** Aspose.HTML 提供包含全部渲染功能的免費試用版。請先從 [Aspose website](https://products.aspose.com/html/net/) 下載取得。 + +現在前置作業已完成,讓我們開始吧。 + +## Step 1 – Load the Remote HTML Document (Convert URL to PDF) + +首先,我們必須告訴 Aspose.HTML 資源的來源位置。此範例使用公開的 URL,你也可以直接傳入包含原始 HTML 的字串。 + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Why this matters:** 從 URL 載入文件會讓渲染器自動抓取所有相關資源(CSS、圖片、字型),從而產生與即時網站相符的 PDF。若改為直接傳入純文字字串,這些資源將會遺失,這在 *generate PDF from website* 時通常不是你想要的結果。 + +## Step 2 – Configure PDF Rendering Options (Quality Matters) + +Aspose.HTML 允許你微調 PDF 的呈現效果。抗鋸齒 (Antialiasing) 與字型微調 (font hinting) 兩項設定,可讓輸出在螢幕與列印時都保持銳利。 + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Why we set these:** 若未啟用抗鋸齒,線條與向量圖形在高 DPI 螢幕上會顯得鋸齒狀。字型微調則告訴 PDF 引擎如何將字形對齊至像素邊界,這看似微小的調整卻常能帶來顯著的視覺提升。 + +## Step 3 – Prepare an In‑Memory ZIP Archive (Zip PDF File) + +我們不會先把 PDF 寫入磁碟再壓縮——那樣會產生兩段 I/O 的麻煩。相反地,我們直接將資料串流寫入 zip 條目,全部保留在記憶體中,特別適合 Web API 或背景工作。 + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Edge case note:** 若處理的 PDF 體積龐大(數百 MB),建議直接將 zip 串流寫入回應 (response) 並即時傳送,而非全部緩存在記憶體。對於一般小於 20 MB 的報表,此方式既安全又快速。 + +## Step 4 – Stream the PDF Directly into a ZIP Entry + +聰明的做法在此:我們建立名為 `output.pdf` 的 zip 條目,並把它的串流交給 Aspose.HTML。渲染器會直接把 PDF 位元組寫入該條目,完全不需要暫存檔案。 + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Why we do it this way:** 透過把 PDF 寫入指向 zip 條目的串流,我們省去「寫入磁碟 → 壓縮 → 刪除」的流程。這不只減少 I/O 開銷,也避免了在伺服器上留下孤兒檔案的風險。 + +## Step 5 – Finalize the ZIP and Persist It + +PDF 寫入完成後,我們必須關閉 zip 壓縮檔,以確保目錄資訊寫入,接著將整個檔案寫至磁碟(或從 API 回傳)。 + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Result you’ll see:** 產生一個名為 `result.zip` 的檔案,內含單一條目 `output.pdf`。開啟 PDF 後,即可看到 `https://example.com` 的像素完美快照,樣式與圖片皆完整保留。 + + +*Image alt text: render html to pdf – 產生的 PDF 在 ZIP 檔案內的螢幕截圖。* + +## Full Working Example + +以下為完整、可直接複製貼上的程式碼: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### What to Expect + +- **`result.zip`** 會出現在 `C:\Temp`。 +- 壓縮檔內會看到 **`output.pdf`**。 +- 開啟 PDF 後,可看到來自 `https://example.com` 的即時頁面,渲染結果相當忠實。 + +如果執行程式後 zip 為空,請再次確認 URL 是否可連線,以及 Aspose.HTML 是否具備下載外部資源的權限(防火牆、代理伺服器設定等)。 + +## Common Questions & Edge Cases + +| Question | Answer | +|----------|--------| +| *What if the page references external fonts?* | Aspose.HTML 會自動下載透過 `@font-face` 引用的網路字型。請確保伺服器能夠存取這些字型 URL。 | +| *Can I add multiple PDFs into the same ZIP?* | 可以——只要呼叫 `zipArchive.CreateEntry("report2.pdf")`,再把另一個 `HTMLDocument` 渲染至該串流即可。 | +| *How do I set a custom PDF filename?* | 修改傳入 `CreateEntry` 的字串,例如 `CreateEntry("my‑invoice.pdf")`。 | +| *Is it safe to use this in a multi‑threaded web app?* | 每個請求都應自行建立 `MemoryStream` 與 `ZipArchive`。這些物件本身不具備執行緒安全性,共用實例會導致檔案損毀。 | +| *What about large PDFs?* | 若 PDF 大於 100 MB,建議直接串流至 HTTP 回應 (`Response.Body`) 而非先緩存在記憶體。 | + +## Wrapping Up + +我們已示範如何 **render HTML to PDF**、**convert URL to PDF**、**generate PDF from website**,最後 **zip PDF file**——全部在乾淨的記憶體工作流程中完成。 + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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..2d8c21434 100644 --- a/html/hongkong/net/working-with-html-documents/_index.md +++ b/html/hongkong/net/working-with-html-documents/_index.md @@ -41,6 +41,8 @@ HTML 文件是網路的支柱,能夠有效地創建和操作它們對於任何 本教學說明如何在 C# 中使用自訂資源處理程式將 HTML 內容保存至檔案或串流,涵蓋完整步驟與範例。 ### [如何使用 CSS 與 C# 加粗標題 – 完整步驟指南](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) +### [在 C# 中從字串建立 HTML – 使用記憶體串流的完整指南](./create-html-from-string-in-c-full-guide-with-memory-stream/) + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/hongkong/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/hongkong/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..c20f77a56 --- /dev/null +++ b/html/hongkong/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,275 @@ +--- +category: general +date: 2026-03-28 +description: 使用 Aspose.Html 從字串建立 HTML 並將其捕獲至串流。學習將 HTML 轉換為字串、自訂資源處理程式,以及將 HTML 寫入串流。 +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: zh-hant +og_description: 使用 Aspose.Html 從字串建立 HTML,將其捕獲於記憶體中,並將 HTML 轉換為字串。自訂資源處理程式與將 HTML + 寫入串流的逐步指南。 +og_title: 在 C# 中從字串建立 HTML – 完整的 Memory‑Stream 教學 +tags: +- Aspose.Html +- C# +- MemoryStream +title: 在 C# 中從字串建立 HTML – 完整指南(含 Memory Stream) +url: /zh-hant/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 C# 中從字串建立 HTML – 完整指南與記憶體串流 + +有沒有曾經需要 **從字串建立 HTML**,且全部保存在記憶體中而不觸及檔案系統?你並不是唯一遇到這種情況的人。許多開發者在想即時產生動態標記(例如電子郵件範本或 PDF 轉換)時,都會碰到這個障礙,卻不想在磁碟上留下暫存檔。 + +好消息是?使用 Aspose.Html,你可以直接從字串建立 `HTMLDocument`,將它傳入 **自訂資源處理程式**,並 **將 HTML 寫入串流** 以供之後使用。在本教學中,我們會逐步說明每個步驟,從最初的字串到最終的 `string` 結果,並解釋 *為何* 每個環節重要。 + +完成本指南後,你將能夠: + +* 使用 Aspose.Html 從字串建立 HTML。 +* 在不寫入磁碟的情況下將 HTML 轉換為字串。 +* 使用自訂資源處理程式擷取 HTML。 +* 將 HTML 寫入 `MemoryStream` 並讀回。 +* 發現常見陷阱並套用最佳實踐技巧。 + +不需要除 Aspose.Html 之外的外部相依性——只要一個 .NET 專案與少量 using 陳述式即可。 + +--- + +## 前置條件 + +* .NET 6.0 或更新版本(此程式碼亦可在 .NET Framework 上執行)。 +* Aspose.Html for .NET NuGet 套件(`Install-Package Aspose.Html`)。 +* 基本的 C# 知識——只要寫過 `Console.WriteLine` 就沒問題。 + +--- + +## 步驟 1:從字串建立 HTML – 起始點 + +我們首先需要的是一個原始的 HTML 字串。可以把它想像成平常會貼到 `.html` 檔案中的骨架。 + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "` elemet, beállítjuk a korábban épített stílust, és megadjuk a szövegtartalmat. + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +Ha megnézed a `paragraph.OuterHtml` értékét, valami ilyesmit látsz majd: + +```html +
Bold & Italic text
+``` + +Ez a sor demonstrálja a **add bold italic text** műveletet anélkül, hogy bármilyen nyers CSS stringet írnál. + +## 5. lépés: A bekezdés hozzáadása a body‑hoz + +Végül **append element to body**. Ez a puzzle utolsó darabja, amely ténylegesen megjeleníti a bekezdést az oldalon. + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +Használhatod a `htmlDoc.Body.InsertBefore` vagy `ReplaceChild` metódusokat is, ha összetettebb pozicionálásra van szükség. A legtöbb esetben egy egyszerű `AppendChild` elegendő. + +## 6. lépés: HTML‑string kiírása (vagy fájlba mentése) + +Miután felépítettük a DOM‑ot, vonjuk ki a végső HTML‑t. Az Aspose.HTML egyetlen hívással tudja sorosítani a dokumentumot. + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +Amikor a `result.html` fájlt megnyitod egy böngészőben, egyetlen bekezdést látsz, amely egyszerre félkövér és dőlt, pontosan úgy, ahogy terveztük. + +### Várható kimenet + +```html + + + + +Bold & Italic text
+ + +``` + +Ha e‑mailhez generálsz HTML‑t, egyszerűen helyezd a `finalHtml` változót az e‑mail szövegébe, és a formázás a legtöbb modern kliensben megmarad. + +## Gyakori variációk és széljegyek + +- **Több stílus:** Szeretnél háttérszínt is hozzáadni? Bővítsd a `CSSStyleDeclaration`-t: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **Különböző elemek:** `` helyett létrehozhatsz `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +Futtasd a programot, nyisd meg a `result.html` fájlt, és a leírt módon formázott bekezdést fogod látni. Nincs kézi string‑összefűzés, nincs törékeny HTML‑literál – csak tiszta, típus‑biztos DOM‑manipuláció. + +## Összegzés + +Megválaszoltuk, **hogyan hozhatsz létre HTML‑t** a semmiből az Aspose.HTML segítségével, bemutattuk az **append element to body** műveletet, egyértelműen ismertettük a **create paragraph element** lépést, elmagyaráztuk a **add bold italic text** technikát, és kitértünk a **add css style programmatically** részleteire. + +Ha már magabiztos vagy ebben a mintában, kibővítheted úgy, hogy teljes oldalak jöjjenek létre: táblázatok, képek, akár interaktív szkriptek. Ugyanazok a szabályok – definiáld a stílusokat, hozd létre az elemeket, állítsd be a attribútumokat, és add hozzá őket a megfelelő helyre. + +### Mi a következő? + +- **Dinamikus tartalom:** Hozz adatokat egy adatbázisból, és ciklusban generálj sorokat egy táblázatban. +- **Stíluskönyvtárak:** Kombináld ezt a megközelítést külső CSS‑fájlokkal nagyobb projektekhez. +- **Exportálási lehetőségek:** Tedd a `HTMLDocument`‑et közvetlenül az Aspose.PDF vagy Aspose.Words felé, hogy PDF‑ vagy DOCX‑fájlokat állíts elő köztes string nélkül. + +Kísérletezz, törj el dolgokat, majd javítsd ki őket – ez a leggyorsabb módja a DOM‑programozás elsajátításának C#‑ban. Van kérdésed vagy más felhasználási eseted? Írj egy megjegyzést alább, és jó kódolást! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/hungarian/net/rendering-html-documents/_index.md b/html/hungarian/net/rendering-html-documents/_index.md index 39529197d..55e07025b 100644 --- a/html/hungarian/net/rendering-html-documents/_index.md +++ b/html/hungarian/net/rendering-html-documents/_index.md @@ -60,6 +60,10 @@ Tanulja meg, hogyan renderelhet HTML-t PNG formátumba az Aspose segítségével Ismerje meg, hogyan konvertálhatja a HTML-t PNG-be az Aspose segítségével .NET környezetben, lépésről lépésre. ### [PNG létrehozása HTML-ből – Teljes C# renderelési útmutató](./create-png-from-html-full-c-rendering-guide/) Tanulja meg, hogyan hozhat létre PNG képeket HTML-ből C#-ban az Aspose.HTML segítségével. +### [PDF dokumentum létrehozása C# – HTML renderelése PDF-be Aspose-szal](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +Tanulja meg, hogyan hozhat létre PDF dokumentumot C#-ban az Aspose.HTML segítségével, HTML-t PDF-be konvertálva. +### [HTML renderelése PDF-be és zip-elése – Teljes C# útmutató](./render-html-to-pdf-and-zip-it-complete-c-guide/) +Tanulja meg, hogyan renderelhet HTML-t PDF-be, majd tömörítheti zip fájlba az Aspose.HTML for .NET használatával C#-ban. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/hungarian/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/hungarian/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..137eec4b8 --- /dev/null +++ b/html/hungarian/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-03-28 +description: PDF dokumentum létrehozása C#-ban az Aspose HTML to PDF használatával. + Tanulja meg, hogyan rendereljen HTML-t PDF-be, konvertáljon HTML-t PDF-be, és engedélyezze + a hintinget Linuxon. +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: hu +og_description: Készíts PDF dokumentumot C#-ban azonnal. Ez az útmutató bemutatja, + hogyan lehet HTML-t PDF-re renderelni, HTML-t PDF-re konvertálni, és az Aspose HTML + to PDF-t szöveges hinteléssel használni. +og_title: PDF dokumentum létrehozása C# – HTML PDF-be konvertálása Aspose-szal +tags: +- Aspose +- C# +- PDF generation +title: PDF dokumentum létrehozása C# – HTML PDF-re konvertálása Aspose segítségével +url: /hu/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF dokumentum létrehozása C#‑ban – HTML renderelése PDF‑re az Aspose‑szal + +Valaha is szükséged volt **create PDF document C#** dinamikus HTML karakterláncból, és azon tűnődtél, miért lesz a szöveg homályos Linuxon? Nem vagy egyedül a fejét kaparással. A jó hír, hogy az Aspose HTML könnyedén lehetővé teszi a **render HTML to PDF** műveletet, és néhány extra beállítással még fej nélküli szervereken is éles, szikrázó karaktereket kaphatsz. + +Ebben az útmutatóban végigvezetünk egy teljes, azonnal futtatható példán, amely **converts HTML to PDF** az Aspose HTML for .NET könyvtár használatával. Kitérünk arra is, miért érdemes engedélyezni a hintinget, hogyan állítsuk be a renderelési csővezetéket, és mit tegyünk, ha később testre kell szabni az oldal méretét vagy a DPI‑t. Nem szükséges külső dokumentáció – csak másold, illeszd be és futtasd. + +## Amire szükséged lesz + +- **.NET 6+** (vagy .NET Framework 4.6.2+). Az Aspose HTML mindkettőt támogatja, de az alábbi példa egyszerűség kedvéért a .NET 6‑ra céloz. +- **Aspose.HTML for .NET** NuGet csomag (`Aspose.Html`). Telepítsd a Package Manager Console‑on keresztül: + + ```powershell + Install-Package Aspose.Html + ``` + +- **Linux vagy Windows** környezet. A hinting kapcsoló különösen hasznos Linuxon, de a kód mindenhol működik. +- A választott IDE vagy szerkesztő (Visual Studio, VS Code, Rider…). + +Ennyi – nincs extra betűkészlet, nincs PDF nyomtató driver, csak egyetlen DLL. + +## 1. lépés: Szöveg renderelési beállítások konfigurálása (Primary Keyword in Action) + +Az első dolog, amit teszünk, hogy megmondjuk az Aspose‑nak, hogyan kezelje a gliffrenderelést. Linuxon az alapértelmezett rasterizáló elmosódott karaktereket eredményezhet, ezért bekapcsoljuk a hintinget. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**Miért?** +`UseHinting` arra kényszeríti a renderelőt, hogy a vektoros kontúrokat a pixelrácshoz igazítsa, ezáltal megszünteti a homályos széleket, amelyeket gyakran látsz a fej nélküli Linux konténerekben generált PDF‑ekben. A `FontSize` tulajdonság nem kötelező, de egy kiszámítható alapvonalat biztosít minden olyan HTML‑nek, amely nem határozza meg a saját méretét. + +> **Pro tipp:** Ha csak Windowsra célozol, kihagyhatod a hintinget – a Windows már automatikusan alkalmaz alpixel renderelést. + +## 2. lépés: Szövegbeállítások csatolása a PDF renderelési beállításokhoz + +Ezután létrehozunk egy `PdfRenderingOptions` példányt, és beillesztjük a most beállított `TextOptions`‑t. Ez az objektum irányítja a teljes konverziós folyamatot. + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**Miért kössük össze őket?** +A `PdfRenderingOptions` objektum a HTML motor és a PDF író közötti híd. A `TextOptions` itt történő hozzárendelésével minden renderelt oldal örökli a hinting beállítást, biztosítva a konzisztens kimenetet az egész dokumentumban. + +## 3. lépés: HTML tartalom betöltése + +Az Aspose lehetővé teszi, hogy HTML‑t adjon meg karakterláncból, fájlból vagy akár URL‑ből. Ebben az útmutatóban egyszerűen egy memóriában lévő karakterláncot használunk. + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**Miért karakterlánc?** +Amikor helyben generálsz jelentéseket (pl. számlák, nyugták), gyakran karakterlánc‑interpolációval vagy sablonmotorral állítod össze a HTML‑t. Egy karakterlánc közvetlen átadása elkerüli az ideiglenes fájlokat és felgyorsítja a csővezetéket. + +## 4. lépés: PDF mentése a konfigurált beállításokkal + +Most végül a PDF‑et a lemezre írjuk. A `Save` metódus megkapja a célútvonalat és a korábban előkészített renderelési beállításokat. + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**Mit fogsz látni:** +Nyisd meg a `hinted.pdf`‑et bármely PDF‑nézővel. A „Hinted text on Linux” bekezdésnek élesnek kell lennie, az Arial betűtípus tisztán renderelve. Linuxon észre fogod venni a különbséget egy `UseHinting` nélküli PDF‑hez képest. + +> **Várható kimenet:** egy egyoldalas PDF, amely a bekezdést 14‑pt Arial betűtípussal tartalmazza, homályos szélek nélkül. + +### Teljes működő példa + +Az alábbiakban a teljes program található, amelyet beilleszthetsz egy konzolos alkalmazás projektbe. Tartalmazza az összes using utasítást, a hibakezelést és a magyarázó megjegyzéseket. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +Futtasd a programot (`dotnet run`), és lesz egy PDF, amely készen áll a terjesztésre, archiválásra vagy további feldolgozásra. + + + +## Gyakran Ismételt Kérdések (FAQ) + +### Működik ez **aspose html to pdf**-vel .NET Core‑on? +Természetesen. Ugyanaz az API felület elérhető a .NET Framework, .NET Core és .NET 5/6 között. Csak győződj meg róla, hogy a NuGet csomag verziója megfelel a célkeretrendszernek. + +### Hogyan **render HTML to PDF** egyedi oldalmérettel? +Hozz létre egy `PdfPageSetup` objektumot, állítsd be a `Width`, `Height` vagy `Size` értékeket, és rendeld hozzá a `pdfRenderOptions.PageSetup`‑hez. Példa: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### Mit tegyek, ha **convert HTML to PDF**-t kell végrehajtanom egy web API‑ban? +Térj vissza a PDF‑el `FileResult`‑ként: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### Használhatom ezt **html to pdf c#**-hez Linux Docker konténerben? +Igen. A hinting kapcsoló kifejezetten fej nélküli Linux környezetekhez készült. Csak telepítsd a `libgdiplus` csomagot, ha Alpine‑on vagy, és a konverzió azonnal működni fog. + +## Haladó finomhangolások (Az alapokon túl) + +- **Betűkészletek beágyazása:** Ha a HTML egyedi betűkészletekre hivatkozik, a renderelés előtt hívd meg a `htmlDoc.Fonts.Add("MyFont", fontBytes);` metódust. +- **Képek kezelése:** Engedélyezd a `pdfRenderOptions.ImageResolution = 300;` beállítást a nagy DPI‑s grafikákhoz. +- **Biztonság:** Használd a `PdfSaveOptions`‑t a kimenet jelszóval való védelméhez (`PdfSaveOptions.Password = "secret";`). + +Ezek a beállítások lehetővé teszik, hogy egy egyszerű **convert html to pdf** kódrészletet egy éles környezetre kész szolgáltatássá alakítsd. + +## Összefoglalás + +Most bemutattuk, hogyan **create PDF document C#** HTML renderelésével az Aspose HTML‑lel, a szöveg hinting engedélyezésével a Linuxon élesebb kimenetért, és az eredmény egyetlen metódushívással történő mentésével. A lefedett lépések: + +1. Állítsd be a `TextOptions`‑t (hinting). +2. Csatold őket a `PdfRenderingOptions`‑hez. +3. Tölts be HTML‑t egy karakterláncból. +4. Mentsd el a PDF‑et. + +Most már van egy szilárd alapod bármilyen olyan szituációhoz, amely **aspose html to pdf**, **render html to pdf**, **convert html to pdf**, vagy **html to pdf c#**-t igényel. Nyugodtan kísérletezz oldalelrendezésekkel, beágyazott betűkészletekkel vagy a PDF közvetlen streamelésével a kliens felé. + +--- + +**Következő lépések:** +- Próbáld meg konvertálni egy többoldalas HTML jelentést táblázatokkal és képekkel. +- Fedezd fel az Aspose `PdfDocument` API‑ját a post‑processzáláshoz (könyvjelzők, vízjelek hozzáadása). +- Kombináld ezt a konverziót egy háttérmunka-sorral (pl. Hangfire), hogy igény szerint generálj PDF‑eket. + +Boldog kódolást, és legyenek a PDF‑eid mindig élesek! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/hungarian/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/hungarian/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..453c082d8 --- /dev/null +++ b/html/hungarian/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-28 +description: HTML-t PDF-be renderel közvetlenül egy URL-ből, és a végeredményt ZIP-fájlba + tömöríti. Tanulja meg, hogyan konvertáljon URL-t PDF-re, hogyan generáljon PDF-et + egy weboldalról, és hogyan csomagolja ZIP-be a PDF-fájlt C#-ban. +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: hu +og_description: HTML közvetlenül egy URL‑ből PDF‑be renderelése, majd a PDF ZIP‑fájlba + tömörítése. Ez a lépésről‑lépésre útmutató bemutatja, hogyan konvertáljunk URL‑t + PDF‑be, hogyan generáljunk PDF‑et a weboldalról, és hogyan zipeljük a PDF‑fájlt + C#‑ban. +og_title: HTML renderelése PDF-be és zipelése – Teljes C# útmutató +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: HTML PDF-be konvertálása és zipelése – Teljes C# útmutató +url: /hu/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML renderelése PDF‑be és archiválás – Teljes C# útmutató + +Szükséged volt már **HTML PDF‑be renderelésére** menet közben, majd a fájlt egyetlen archívumként elküldeni a kliensnek? Talán egy jelentési szolgáltatást építesz, amely egy élő weboldalt lekér, PDF‑vé alakítja, és a végeredményt egy zip‑ben tárolja a könnyű letöltés érdekében. Ebben az útmutatóban pontosan ezt mutatjuk be – egy távoli weboldal PDF‑re renderelése, majd **a PDF zip‑be tömörítése** anélkül, hogy a lemezre írnánk. + +Kitérünk arra is, hogyan **URL‑t PDF‑re konvertáljunk**, **PDF‑t generáljunk weboldalból**, és végül **PDF fájlt zip‑eljünk**, hogy bárhová eljuttathasd. Nincs felesleges részlet, csak egy működő megoldás, amelyet ma beilleszthetsz egy .NET 6+ projektbe. + +## Amire szükséged lesz + +- **.NET 6** vagy újabb (a kód .NET Framework 4.6+‑vel is működik). +- **Aspose.HTML for .NET** – a könyvtár, amely a HTML‑PDF renderelés nehéz részét végzi. +- Alap C# ismeretek – ha tudsz `Console.WriteLine`‑t írni, már jó úton vagy. +- A kedvenc IDE‑d (Visual Studio, Rider, VS Code…). + +> **Pro tipp:** Az Aspose.HTML ingyenes próbaverziót kínál, amely tartalmazza az összes renderelési funkciót. Szerezd be a [Aspose weboldaláról](https://products.aspose.com/html/net/) a kezdés előtt. + +Most, hogy a követelmények rendben vannak, vágjunk bele. + +## 1. lépés – Távoli HTML dokumentum betöltése (URL PDF‑re konvertálása) + +Az első dolog, amit meg kell tennünk, hogy megmondjuk az Aspose.HTML‑nek, hol található a forrás. Ebben az esetben egy nyilvános URL‑ről van szó, de akár egy nyers HTML‑t tartalmazó stringet is beadhatsz. + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Miért fontos ez:** A dokumentum URL‑ről történő betöltése azt jelenti, hogy a renderelő automatikusan letölti az összes hivatkozott erőforrást (CSS, képek, betűkészletek), így egy hű PDF‑másolatot kapsz az élő oldalról. Ha ezt a lépést kihagyod, és csak egy egyszerű stringet adsz meg, azok az eszközök elvesznek, ami ritkán kívánatos, amikor **PDF‑t generálsz weboldalból**. + +## 2. lépés – PDF renderelési beállítások konfigurálása (A minőség számít) + +Az Aspose.HTML lehetővé teszi, hogy finomhangold a PDF megjelenését. Az antialiasing és a font hinting két olyan beállítás, amely a kimenetet élesebbé teszi képernyőn és nyomtatásban egyaránt. + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Miért állítjuk be ezeket:** Antialiasing nélkül a vonalrajzok és vektorgrafikák szaggatottak lehetnek, különösen nagy felbontású kijelzőkön. A hinting ezzel szemben azt mondja a PDF‑motornak, hogyan igazítsa a glifeket a pixelhatárokhoz – egy apró trükk, amely gyakran nagy vizuális különbséget eredményez. + +## 3. lépés – Memóriában lévő ZIP archívum előkészítése (PDF archiválása ZIP‑be) + +Ahelyett, hogy először a PDF‑et a lemezre írnánk, majd azt zip‑elnénk – egy kétlépéses I/O rémálom –, közvetlenül egy zip‑bejegyzésbe stream‑eljük. Így minden memóriában marad, ami tökéletes web‑API‑k vagy háttérfeladatok számára. + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Különleges eset megjegyzés:** Ha hatalmas PDF‑ekkel (százak MB) dolgozol, érdemes a zip‑et közvetlenül egy válasz‑streambe irányítani ahelyett, hogy az egészet memóriában tartanád. Átlagos, 20 MB alatti jelentések esetén ez a megközelítés biztonságos és gyors. + +## 4. lépés – PDF közvetlen streamelése ZIP bejegyzésbe + +Itt jön a trükk: létrehozunk egy `output.pdf` nevű zip‑bejegyzést, és a stream‑jét visszaadjuk az Aspose.HTML‑nek. A renderelő a PDF bájtjait közvetlenül ebbe a zip‑bejegyzésbe írja – nincs szükség ideiglenes fájlra. + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Miért így csináljuk:** Azáltal, hogy a PDF‑író egy olyan streamet kap, amely egy zip‑bejegyzésre mutat, elkerüljük a „lemezre írás → zip → törlés” ciklust. Ez nem csak csökkenti az I/O terhelést, hanem megszünteti a szerveren esetlegesen hátra maradt fájlok kockázatát is. + +## 5. lépés – ZIP befejezése és mentése + +Miután a PDF elkészült, le kell zárnunk a zip archívumot, hogy a központi könyvtár ki legyen írása, majd az egészet lemezre (vagy egy API‑válaszként) írjuk. + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Az eredmény, amit látsz:** Egy `result.zip` nevű fájl, amely egyetlen `output.pdf` bejegyzést tartalmaz. A PDF megnyitása egy pixel‑tökéletes pillanatképet mutat a `https://example.com` oldalról, a stílusokkal és képekkel együtt. + + + +*Image alt text: render html to pdf – a generált PDF képernyőképe egy ZIP archívumban.* + +## Teljes működő példa + +Összeállítva, itt a teljes, másolásra kész program: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### Mire számíthatsz + +- **`result.zip`** megjelenik a `C:\Temp` könyvtárban. +- Az archívumban megtalálod a **`output.pdf`** fájlt. +- A PDF megnyitása a `https://example.com` élő oldalának hű renderelését mutatja. + +Ha a programot futtatod, és a zip üres, ellenőrizd, hogy az URL elérhető‑e, és hogy az Aspose.HTML‑nek van‑e engedélye a külső erőforrások letöltésére (tűzfalak, proxy beállítások stb.). + +## Gyakori kérdések és különleges esetek + +| Kérdés | Válasz | +|----------|--------| +| *Mi van, ha az oldal külső betűtípusokra hivatkozik?* | Az Aspose.HTML automatikusan letölti a `@font-face`‑en keresztül hivatkozott web‑betűtípusokat. Győződj meg róla, hogy a szerver elérheti a betűtípus‑URL‑eket. | +| *Hozzáadhatok több PDF‑et ugyanahhoz a ZIP‑hez?* | Igen – egyszerűen hívd meg a `zipArchive.CreateEntry("report2.pdf")`‑t, és renderelj egy másik `HTMLDocument`‑et abba a stream‑be. | +| *Hogyan állíthatok be egy egyedi PDF fájlnevet?* | Módosítsd a `CreateEntry`‑nek átadott stringet, pl. `CreateEntry("my‑invoice.pdf")`. | +| *Biztonságos ez egy több szálas webalkalmazásban?* | Minden kérésnek saját `MemoryStream`‑et és `ZipArchive`‑t kell létrehoznia. Az objektumok nem szálbiztosak, így a megosztott példányok korrupciót okozhatnak. | +| *Mi a helyzet a nagy PDF‑ekkel?* | 100 MB‑nál nagyobb PDF‑ek esetén érdemes közvetlenül az HTTP válasz streamjébe (`Response.Body`) stream‑elni a zip‑et, a memóriában való tárolás helyett. | + +## Összegzés + +Most megmutattuk, hogyan **renderelj HTML‑t PDF‑be**, **konvertálj URL‑t PDF‑re**, **generálj PDF‑t weboldalból**, és végül **PDF‑t zip‑elj**, mindezt egy tiszta, memóriában zajló munkafolyamatban. + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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..cfd1f33bb 100644 --- a/html/hungarian/net/working-with-html-documents/_index.md +++ b/html/hungarian/net/working-with-html-documents/_index.md @@ -37,10 +37,15 @@ 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/) Ismerje meg, hogyan formázhatja félkövérre a HTML‑címeket CSS‑sel és C#‑kóddal, részletes példákkal. +### [HTML létrehozása karakterláncból C#-ban – Teljes útmutató memóriafolyammal](./create-html-from-string-in-c-full-guide-with-memory-stream/) + +Tanulja meg, hogyan hozhat létre HTML-t egy stringből C#-ban memóriafolyam használatával, lépésről‑lépésre útmutató. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/hungarian/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/hungarian/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..83d4a9be1 --- /dev/null +++ b/html/hungarian/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,274 @@ +--- +category: general +date: 2026-03-28 +description: HTML létrehozása karakterláncból az Aspose.Html használatával, és rögzítése + egy adatfolyamba. Tanulja meg, hogyan konvertálja a HTML-t karakterláncra, egyéni + erőforráskezelőt használjon, és írja a HTML-t adatfolyamba. +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: hu +og_description: HTML létrehozása karakterláncból az Aspose.Html segítségével, memóriában + való rögzítése, és a HTML karakterlánccá konvertálása. Lépésről lépésre útmutató + egyedi erőforráskezelőhöz és a HTML streambe írásához. +og_title: HTML létrehozása karakterláncból C#‑ban – Teljes Memory‑Stream útmutató +tags: +- Aspose.Html +- C# +- MemoryStream +title: HTML létrehozása karakterláncból C#‑ban – Teljes útmutató memóriafolyam használatával +url: /hu/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML létrehozása karakterláncból C#-ban – Teljes útmutató memóriafolyammal + +Valaha is szükséged volt **HTML létrehozására karakterláncból**, és mindent a memóriában tartani anélkül, hogy a fájlrendszert érintenéd? Nem vagy egyedül. Sok fejlesztő találkozik ezzel a problémával, amikor dinamikus jelölőt szeretne létrehozni menet közben – például egy e‑mail sablonhoz vagy PDF konverzióhoz –, de nem akar egy ideiglenes fájlt a lemezen hagyni. + +A jó hír? Az Aspose.Html segítségével egy `HTMLDocument`-et indíthatsz el közvetlenül egy karakterláncból, betáplálhatod egy **custom resource handler**‑be, és **write HTML to stream**-et használhatsz későbbi felhasználáshoz. Ebben az útmutatóban minden lépést végigvezetünk, a kezdeti karakterlánctól a végső `string` eredményig, és elmagyarázzuk, *miért* fontos minden rész. + +A végére képes leszel: + +* HTML létrehozása karakterláncból az Aspose.Html használatával. +* HTML konvertálása karakterlánccá a lemez írása nélkül. +* HTML rögzítése egy custom resource handler segítségével. +* `HTML` írása egy `MemoryStream`‑be és visszaolvasása. +* Gyakori buktatók felismerése és a legjobb gyakorlatok alkalmazása. + +Nem szükséges külső függőség az Aspose.Html-en kívül – csak egy .NET projekt és néhány using utasítás. + +--- + +## Előkövetelmények + +* .NET 6.0 vagy újabb (a kód .NET Framework‑ön is működik). +* Aspose.Html for .NET NuGet csomag (`Install-Package Aspose.Html`). +* Alap C# tudás – ha már írtál `Console.WriteLine`‑t, akkor rendben vagy. + +--- + +## 1. lépés: HTML létrehozása karakterláncból – a kiindulópont + +Az első dolog, amire szükségünk van, egy nyers HTML karakterlánc. Gondolj rá úgy, mint egy vázra, amit általában egy `.html` fájlba illesztesz. + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "`, menyuntikkan gaya yang telah kami buat, dan mengatur konten teksnya. + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +Jika Anda memeriksa `paragraph.OuterHtml` Anda akan melihat sesuatu seperti: + +```html +
Bold & Italic text
+``` + +Baris itu menunjukkan **add bold italic text** tanpa pernah menulis string CSS mentah. + +## Langkah 5: Tambahkan Paragraf ke Body + +Akhirnya, kita **append element to body**. Ini adalah bagian terakhir yang sebenarnya menampilkan paragraf di halaman. + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +Anda juga dapat memanggil `htmlDoc.Body.InsertBefore` atau `ReplaceChild` jika membutuhkan penempatan yang lebih kompleks. Untuk kebanyakan skenario, `AppendChild` sederhana sudah cukup. + +## Langkah 6: Output String HTML (atau Simpan ke File) + +Sekarang setelah kami membangun DOM, mari ekstrak HTML akhir. Aspose.HTML memungkinkan Anda menyerialisasi dokumen dengan satu panggilan. + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +Saat Anda membuka `result.html` di browser, Anda akan melihat satu paragraf yang tebal dan miring, persis seperti yang kami maksud. + +### Output yang Diharapkan + +```html + + + + +Bold & Italic text
+ + +``` + +Jika Anda membuat HTML untuk email, cukup sisipkan `finalHtml` ke dalam body email dan styling akan tetap berfungsi di kebanyakan klien modern. + +## Variasi Umum & Kasus Tepi + +- **Multiple Styles:** Ingin menambahkan warna latar belakang juga? Perluas `CSSStyleDeclaration`: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **Different Elements:** Alih‑alih ``, Anda dapat membuat `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +Jalankan program ini, buka `result.html`, dan Anda akan melihat paragraf yang ditata muncul persis seperti yang dijelaskan. Tanpa penggabungan string manual, tanpa literal HTML yang rapuh—hanya manipulasi DOM yang bersih dan type‑safe. + +## Kesimpulan + +Kami telah menjawab **how to create HTML** dari awal menggunakan Aspose.HTML, mendemonstrasikan **append element to body**, menunjukkan cara jelas untuk **create paragraph element**, menjelaskan **add bold italic text**, dan membahas nuansa **add css style programmatically**. + +Jika Anda nyaman dengan pola ini, Anda dapat memperluasnya untuk menghasilkan halaman lengkap: tabel, gambar, bahkan skrip interaktif. Prinsip yang sama berlaku—definisikan gaya, buat elemen, atur atribut, dan tambahkan ke tempat yang tepat. + +### Apa Selanjutnya? + +- **Dynamic Content:** Ambil data dari basis data dan loop untuk menghasilkan baris dalam tabel. +- **Styling Libraries:** Gabungkan pendekatan ini dengan file CSS eksternal untuk proyek yang lebih besar. +- **Export Options:** Masukkan `HTMLDocument` langsung ke Aspose.PDF atau Aspose.Words untuk menghasilkan file PDF atau DOCX tanpa string perantara. + +Silakan bereksperimen, memecahkan sesuatu, lalu memperbaikinya—itulah cara tercepat untuk memahami pemrograman DOM di C#. Ada pertanyaan atau kasus penggunaan yang berbeda? 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/rendering-html-documents/_index.md b/html/indonesian/net/rendering-html-documents/_index.md index b7c974319..0d21e63e7 100644 --- a/html/indonesian/net/rendering-html-documents/_index.md +++ b/html/indonesian/net/rendering-html-documents/_index.md @@ -68,6 +68,12 @@ Pelajari cara menggunakan Aspose untuk mengonversi HTML menjadi PNG dengan pandu ### [Cara Merender HTML ke PNG dengan Aspose – Panduan Lengkap](./how-to-render-html-to-png-with-aspose-complete-guide/) Pelajari cara merender HTML menjadi PNG menggunakan Aspose dengan panduan lengkap langkah demi langkah. +### [Buat Dokumen PDF C# – Render HTML ke PDF dengan Aspose](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +Pelajari cara membuat dokumen PDF dari HTML menggunakan Aspose.HTML untuk .NET dengan contoh kode C# lengkap. + +### [Render HTML ke PDF dan Zip – Panduan Lengkap C#](./render-html-to-pdf-and-zip-it-complete-c-guide/) +Pelajari cara merender HTML menjadi PDF dan mengompresnya menjadi file ZIP menggunakan Aspose.HTML untuk .NET dengan contoh kode C# lengkap. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/indonesian/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/indonesian/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..35e4fdc8a --- /dev/null +++ b/html/indonesian/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-28 +description: Buat dokumen PDF C# menggunakan Aspose HTML ke PDF. Pelajari cara merender + HTML ke PDF, mengonversi HTML ke PDF, dan mengaktifkan hinting untuk Linux. +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: id +og_description: Buat dokumen PDF dengan C# secara instan. Panduan ini menunjukkan + cara merender HTML ke PDF, mengonversi HTML ke PDF, dan menggunakan Aspose HTML + ke PDF dengan petunjuk teks. +og_title: Buat Dokumen PDF C# – Render HTML ke PDF dengan Aspose +tags: +- Aspose +- C# +- PDF generation +title: Buat Dokumen PDF C# – Render HTML ke PDF dengan Aspose +url: /id/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Buat Dokumen PDF C# – Render HTML ke PDF dengan Aspose + +Pernah perlu **create PDF document C#** dari string HTML dinamis dan bertanya-tanya mengapa teks terlihat buram di Linux? Anda bukan satu‑satunya yang kebingungan. Kabar baiknya, Aspose HTML memudahkan **render HTML to PDF**, dan dengan beberapa opsi tambahan Anda dapat mendapatkan glyph yang sangat tajam bahkan di server tanpa tampilan. + +Dalam tutorial ini kami akan membahas contoh lengkap yang siap dijalankan yang **converts HTML to PDF** menggunakan pustaka Aspose HTML for .NET. Kami juga akan menjelaskan mengapa Anda mungkin ingin mengaktifkan hinting, cara menyiapkan pipeline rendering, dan apa yang harus dilakukan jika Anda perlu menyesuaikan ukuran halaman atau DPI nanti. Tidak memerlukan dokumen eksternal—cukup salin, tempel, dan jalankan. + +## Apa yang Anda Butuhkan + +- **.NET 6+** (atau .NET Framework 4.6.2+). Aspose HTML mendukung keduanya, tetapi contoh di bawah menargetkan .NET 6 untuk kesederhanaan. +- **Aspose.HTML for .NET** paket NuGet (`Aspose.Html`). Instal melalui Package Manager Console: + + ```powershell + Install-Package Aspose.Html + ``` + +- Lingkungan **Linux atau Windows**. Flag hinting sangat berguna di Linux, tetapi kode berfungsi di mana saja. +- IDE atau editor pilihan Anda (Visual Studio, VS Code, Rider…). + +Itu saja—tidak ada font tambahan, tidak ada driver printer PDF, hanya satu DLL. + +## Langkah 1: Konfigurasikan Opsi Rendering Teks (Primary Keyword in Action) + +Hal pertama yang kami lakukan adalah memberi tahu Aspose cara menangani rendering glyph. Di Linux rasterizer default dapat menghasilkan karakter yang buram, sehingga kami mengaktifkan hinting. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**Mengapa?** +`UseHinting` memaksa renderer menyelaraskan outline vektor ke grid piksel, yang menghilangkan tepi buram yang sering Anda lihat pada PDF yang dihasilkan di kontainer Linux tanpa tampilan. Properti `FontSize` tidak wajib, tetapi memberikan baseline yang dapat diprediksi untuk HTML apa pun yang tidak menentukan ukuran sendiri. + +> **Pro tip:** Jika Anda hanya menargetkan Windows, Anda dapat melewatkan hinting—Windows sudah menerapkan rendering sub‑pixel secara otomatis. + +## Langkah 2: Lampirkan Opsi Teks ke Pengaturan Rendering PDF + +Selanjutnya kami membuat instance `PdfRenderingOptions` dan menyambungkan `TextOptions` yang baru saja kami konfigurasikan. Objek ini mengatur seluruh proses konversi. + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**Mengapa mengikatnya?** +Objek `PdfRenderingOptions` adalah jembatan antara mesin HTML dan penulis PDF. Dengan menetapkan `TextOptions` di sini, setiap halaman yang dirender akan mewarisi konfigurasi hinting, memastikan output yang konsisten di seluruh dokumen. + +## Langkah 3: Muat Konten HTML Anda + +Aspose memungkinkan Anda memasukkan HTML dari string, file, atau bahkan URL. Untuk tutorial ini kami akan menyederhanakan dengan menggunakan string dalam memori. + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**Mengapa string?** +Ketika Anda menghasilkan laporan secara dinamis (mis., faktur, kwitansi), Anda sering menyusun HTML menggunakan interpolasi string atau mesin templating. Mengirimkan string secara langsung menghindari file sementara dan mempercepat pipeline. + +## Langkah 4: Simpan PDF dengan Opsi yang Dikonfigurasi + +Sekarang kami akhirnya menulis PDF ke disk. Metode `Save` menerima path target dan opsi rendering yang kami siapkan sebelumnya. + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**Apa yang akan Anda lihat:** +Buka `hinted.pdf` dengan penampil PDF apa pun. Paragraf “Hinted text on Linux” harus muncul tajam, dengan font Arial dirender bersih. Di Linux Anda akan memperhatikan perbedaannya dibandingkan PDF yang dihasilkan tanpa `UseHinting`. + +> **Output yang diharapkan:** PDF satu halaman yang berisi paragraf dengan Arial 14‑pt, tanpa tepi buram. + +### Contoh Lengkap yang Berfungsi + +Berikut adalah program lengkap yang dapat Anda salin ke proyek aplikasi console. Program ini mencakup semua pernyataan using, penanganan error, dan komentar untuk kejelasan. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +Jalankan program (`dotnet run`), dan Anda akan memiliki PDF yang siap untuk distribusi, pengarsipan, atau pemrosesan lanjutan. + + + +## Pertanyaan yang Sering Diajukan (FAQ) + +### Apakah ini bekerja dengan **aspose html to pdf** pada .NET Core? +Tentu saja. Antarmuka API yang sama tersedia di .NET Framework, .NET Core, dan .NET 5/6. Pastikan versi paket NuGet cocok dengan kerangka target Anda. + +### Bagaimana saya dapat **render HTML to PDF** dengan ukuran halaman khusus? +Buat objek `PdfPageSetup`, atur `Width`, `Height`, atau `Size`, dan tetapkan ke `pdfRenderOptions.PageSetup`. Contoh: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### Bagaimana jika saya perlu **convert HTML to PDF** dalam sebuah web API? +Kembalikan PDF sebagai `FileResult`: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### Bisakah saya menggunakan ini untuk **html to pdf c#** di kontainer Docker Linux? +Ya. Flag hinting dirancang khusus untuk lingkungan Linux tanpa tampilan. Cukup instal paket `libgdiplus` jika Anda menggunakan Alpine, dan konversi akan langsung berfungsi. + +## Penyesuaian Lanjutan (Di Luar Dasar) + +- **Embedding Fonts:** Jika HTML Anda merujuk pada font khusus, panggil `htmlDoc.Fonts.Add("MyFont", fontBytes);` sebelum rendering. +- **Image Handling:** Aktifkan `pdfRenderOptions.ImageResolution = 300;` untuk grafik ber‑DPI tinggi. +- **Security:** Gunakan `PdfSaveOptions` untuk melindungi output dengan password (`PdfSaveOptions.Password = "secret";`). + +Opsi-opsi ini memungkinkan Anda mengubah potongan kode **convert html to pdf** sederhana menjadi layanan siap produksi. + +## Ringkasan + +Kami baru saja mendemonstrasikan cara **create PDF document C#** dengan merender HTML menggunakan Aspose HTML, mengaktifkan hinting teks untuk output yang lebih tajam di Linux, dan menyimpan hasilnya dengan satu panggilan metode. Langkah‑langkah yang dibahas: + +1. Siapkan `TextOptions` (hinting). +2. Lampirkan ke `PdfRenderingOptions`. +3. Muat HTML dari string. +4. Simpan PDF. + +Sekarang Anda memiliki fondasi yang kuat untuk skenario apa pun yang memerlukan **aspose html to pdf**, **render html to pdf**, **convert html to pdf**, atau **html to pdf c#**. Silakan bereksperimen dengan tata letak halaman, font tersemat, atau streaming PDF langsung ke klien. + +--- + +**Langkah selanjutnya:** +- Coba konversi laporan HTML multi‑halaman dengan tabel dan gambar. +- Jelajahi API `PdfDocument` Aspose untuk pemrosesan lanjutan (menambahkan bookmark, watermark). +- Gabungkan konversi ini dengan antrian pekerjaan latar belakang (mis., Hangfire) untuk menghasilkan PDF sesuai permintaan. + +Selamat coding, semoga PDF Anda selalu tajam! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/indonesian/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/indonesian/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..58fc53af1 --- /dev/null +++ b/html/indonesian/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-28 +description: Render HTML ke PDF langsung dari URL dan kompres hasilnya menjadi file + ZIP. Pelajari cara mengonversi URL ke PDF, menghasilkan PDF dari situs web, dan + meng-zip file PDF dalam C#. +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: id +og_description: Render HTML ke PDF langsung dari URL, lalu kompres PDF menjadi file + ZIP. Tutorial langkah demi langkah ini menunjukkan cara mengonversi URL ke PDF, + menghasilkan PDF dari situs web, dan meng-zip file PDF menggunakan C#. +og_title: Render HTML ke PDF dan Zip – Panduan Lengkap C# +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: Render HTML ke PDF dan Zip – Panduan Lengkap C# +url: /id/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Render HTML ke PDF dan Zip – Panduan Lengkap C# + +Pernahkah Anda perlu **render HTML ke PDF** secara langsung dan kemudian mengirim file tersebut ke klien sebagai satu arsip? Mungkin Anda sedang membangun layanan pelaporan yang mengambil halaman web hidup, mengubahnya menjadi PDF, dan menyimpan hasilnya dalam zip untuk memudahkan unduhan. Pada tutorial ini kami akan membahas langkah demi langkah—merender halaman web remote ke PDF, lalu **mengompres PDF dalam zip** tanpa pernah menyentuh disk. + +Kami juga akan membahas cara **mengonversi URL ke PDF**, **menghasilkan PDF dari situs web**, dan akhirnya **men-zip file PDF** sehingga Anda dapat mengirimkannya ke mana pun diperlukan. Tanpa basa‑basi, hanya solusi kerja yang dapat Anda masukkan ke proyek .NET 6+ hari ini. + +## Apa yang Anda Butuhkan + +- **.NET 6** atau lebih baru (kode ini juga bekerja dengan .NET Framework 4.6+). +- **Aspose.HTML for .NET** – perpustakaan yang menangani proses render HTML‑ke‑PDF. +- Sedikit pengalaman C#—jika Anda bisa menulis `Console.WriteLine`, Anda sudah siap. +- IDE pilihan Anda (Visual Studio, Rider, VS Code…). + +> **Pro tip:** Aspose.HTML menawarkan trial gratis yang mencakup semua fitur render. Dapatkan di [situs Aspose](https://products.aspose.com/html/net/) sebelum Anda mulai. + +Setelah prasyarat selesai, mari kita mulai. + +## Langkah 1 – Muat Dokumen HTML Remote (Konversi URL ke PDF) + +Hal pertama yang harus kita lakukan adalah memberi tahu Aspose.HTML di mana sumbernya berada. Dalam contoh ini URL bersifat publik, tetapi Anda juga dapat memberinya string berisi HTML mentah. + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Mengapa ini penting:** Memuat dokumen dari URL berarti renderer akan mengambil semua sumber yang terhubung (CSS, gambar, font) secara otomatis, sehingga Anda mendapatkan replika PDF yang setia dari situs live. Melewatkan langkah ini dan memberi string biasa akan menghilangkan aset‑aset tersebut, yang jarang diinginkan saat Anda *menghasilkan PDF dari situs web*. + +## Langkah 2 – Konfigurasikan Opsi Render PDF (Kualitas Penting) + +Aspose.HTML memungkinkan Anda menyesuaikan tampilan PDF. Antialiasing dan font hinting adalah dua pengaturan yang membuat output tampak tajam di layar dan cetakan. + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Mengapa kami mengatur ini:** Tanpa antialiasing, garis dan grafik vektor dapat terlihat bergerigi, terutama pada tampilan DPI tinggi. Hinting, di sisi lain, memberi tahu mesin PDF cara menyelaraskan glif ke batas piksel, penyesuaian kecil yang sering menghasilkan perbedaan visual besar. + +## Langkah 3 – Siapkan Arsip ZIP In‑Memory (Zip File PDF) + +Alih‑alih menulis PDF ke disk terlebih dahulu lalu men‑zip‑nya—dua langkah I/O yang merepotkan—kami akan langsung men‑stream ke entri zip. Ini menjaga semuanya tetap di memori, yang sempurna untuk API web atau pekerjaan latar belakang. + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Catatan kasus tepi:** Jika Anda menangani PDF berukuran besar (ratusan MB), pertimbangkan untuk men‑pipe zip langsung ke aliran respons alih‑alih menyimpannya seluruhnya di memori. Untuk laporan tipikal di bawah 20 MB, pendekatan ini aman dan cepat. + +## Langkah 4 – Stream PDF Langsung ke Entri ZIP + +Berikut bagian cerdiknya: kami membuat entri zip bernama `output.pdf` dan memberikan alirannya kembali ke Aspose.HTML. Renderer menulis byte PDF langsung ke entri zip—tanpa file sementara. + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Mengapa kami melakukannya seperti ini:** Dengan memberi penulis PDF sebuah stream yang menunjuk ke entri zip, kami menghindari siklus “tulis‑ke‑disk → zip → hapus”. Ini tidak hanya mengurangi overhead I/O tetapi juga menghilangkan risiko meninggalkan file sampah di server. + +## Langkah 5 – Selesaikan ZIP dan Simpan + +Setelah PDF selesai ditulis, kami harus menutup arsip zip agar direktori pusat ter‑flush, kemudian menulis seluruhnya ke disk (atau mengembalikannya dari API). + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Hasil yang akan Anda lihat:** Sebuah file bernama `result.zip` yang berisi satu entri `output.pdf`. Membuka PDF menampilkan snapshot pixel‑perfect dari `https://example.com`, lengkap dengan gaya dan gambar. + + + +*Teks alt gambar: render html to pdf – tangkapan layar PDF yang dihasilkan di dalam arsip ZIP.* + +## Contoh Lengkap yang Siap Pakai + +Menggabungkan semuanya, berikut program lengkap yang dapat Anda salin‑tempel: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### Apa yang Diharapkan + +- **`result.zip`** muncul di `C:\Temp`. +- Di dalam arsip terdapat **`output.pdf`**. +- Membuka PDF menampilkan halaman live dari `https://example.com` yang ter‑render dengan setia. + +Jika Anda menjalankan program dan zip kosong, periksa kembali apakah URL dapat dijangkau dan apakah Aspose.HTML memiliki izin untuk mengunduh sumber eksternal (firewall, pengaturan proxy, dll.). + +## Pertanyaan Umum & Kasus Tepi + +| Pertanyaan | Jawaban | +|------------|---------| +| *Bagaimana jika halaman merujuk ke font eksternal?* | Aspose.HTML secara otomatis mengunduh web‑font yang direferensikan via `@font-face`. Pastikan server dapat mengakses URL font tersebut. | +| *Bisakah saya menambahkan beberapa PDF ke ZIP yang sama?* | Ya—cukup panggil `zipArchive.CreateEntry("report2.pdf")` dan render `HTMLDocument` lain ke stream tersebut. | +| *Bagaimana cara mengatur nama file PDF khusus?* | Ubah string yang diberikan ke `CreateEntry`, misalnya `CreateEntry("my‑invoice.pdf")`. | +| *Apakah aman digunakan di aplikasi web multi‑thread?* | Setiap permintaan harus membuat `MemoryStream` dan `ZipArchive` sendiri. Objek‑objek tersebut tidak thread‑safe, jadi instance bersama akan menyebabkan korupsi. | +| *Bagaimana dengan PDF berukuran besar?* | Untuk PDF > 100 MB, pertimbangkan streaming langsung ke respons HTTP (`Response.Body`) alih‑alih men‑buffer di memori. | + +## Penutup + +Kami baru saja menunjukkan cara **render HTML ke PDF**, **mengonversi URL ke PDF**, **menghasilkan PDF dari situs web**, dan akhirnya **men‑zip file PDF**—semua dalam alur kerja bersih yang berada di memori. + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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..57f9ee2ab 100644 --- a/html/indonesian/net/working-with-html-documents/_index.md +++ b/html/indonesian/net/working-with-html-documents/_index.md @@ -38,6 +38,7 @@ Sekarang, mari tingkatkan keterampilan Anda ke tingkat berikutnya. Mengedit doku ### [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/) +### [Membuat HTML dari string di C# – Panduan Lengkap dengan Memory Stream](./create-html-from-string-in-c-full-guide-with-memory-stream/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/indonesian/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/indonesian/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..70c74629e --- /dev/null +++ b/html/indonesian/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,278 @@ +--- +category: general +date: 2026-03-28 +description: Buat HTML dari string menggunakan Aspose.Html dan tangkap ke dalam stream. + Pelajari cara mengonversi HTML ke string, penangan sumber daya khusus, dan menulis + HTML ke stream. +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: id +og_description: Buat HTML dari string dengan Aspose.Html, tangkap dalam memori, dan + konversi HTML menjadi string. Panduan langkah demi langkah untuk penangan sumber + daya khusus dan menulis HTML ke aliran. +og_title: Buat HTML dari string di C# – Tutorial Lengkap Memory‑Stream +tags: +- Aspose.Html +- C# +- MemoryStream +title: Buat HTML dari string di C# – Panduan Lengkap dengan Memory Stream +url: /id/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Buat HTML dari string di C# – Panduan Lengkap dengan Memory Stream + +Pernah perlu **membuat HTML dari string** dan menyimpan semuanya di memori tanpa menyentuh sistem file? Anda bukan satu‑satunya. Banyak pengembang mengalami kendala ini ketika ingin menghasilkan markup dinamis secara langsung—misalnya untuk templat email atau konversi PDF—tetapi tidak ingin ada file sementara yang menumpuk di disk. + +Kabar baiknya? Dengan Aspose.Html Anda dapat membuat `HTMLDocument` langsung dari sebuah string, memberikannya ke **custom resource handler**, dan **menulis HTML ke stream** untuk penggunaan selanjutnya. Pada tutorial ini kami akan membahas setiap langkah, mulai dari string awal hingga hasil akhir berupa `string`, serta menjelaskan *mengapa* setiap bagian penting. + +Pada akhir panduan ini Anda akan dapat: + +* Membuat HTML dari string menggunakan Aspose.Html. +* Mengonversi HTML ke string tanpa menulis ke disk. +* Menangkap HTML dengan custom resource handler. +* Menulis HTML ke `MemoryStream` dan membacanya kembali. +* Mengenali jebakan umum dan menerapkan tips praktik terbaik. + +Tidak ada ketergantungan eksternal selain Aspose.Html—hanya proyek .NET dan beberapa pernyataan `using`. + +--- + +## Prasyarat + +* .NET 6.0 atau yang lebih baru (kode ini juga berfungsi di .NET Framework). +* Paket NuGet Aspose.Html untuk .NET (`Install-Package Aspose.Html`). +* Pengetahuan dasar C#—jika Anda pernah menulis `Console.WriteLine`, Anda sudah siap. + +--- + +## Langkah 1: Buat HTML dari string – titik awal + +Hal pertama yang kita butuhkan adalah string HTML mentah. Anggap saja ini sebagai kerangka yang biasanya Anda tempelkan ke file `.html`. + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "`, inietteremo lo stile che abbiamo creato e imposteremo il suo contenuto testuale. + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +Se ispezioni `paragraph.OuterHtml` vedrai qualcosa del genere: + +```html +
Bold & Italic text
+``` + +Quella riga dimostra **add bold italic text** senza mai scrivere stringhe CSS grezze. + +## Passo 5: Aggiungere il paragrafo al body + +Infine, noi **append element to body**. Questo è l'ultimo pezzo del puzzle che effettivamente rende il paragrafo sulla pagina. + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +Puoi anche chiamare `htmlDoc.Body.InsertBefore` o `ReplaceChild` se ti serve un posizionamento più complesso. Nella maggior parte dei casi, un semplice `AppendChild` fa al caso tuo. + +## Passo 6: Generare la stringa HTML (o salvare su file) + +Ora che abbiamo costruito il DOM, estraiamo l'HTML finale. Aspose.HTML ti permette di serializzare il documento con una singola chiamata. + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +Quando apri `result.html` in un browser vedrai un unico paragrafo sia in grassetto che in corsivo, esattamente come avevamo previsto. + +### Output previsto + +```html + + + + +Bold & Italic text
+ + +``` + +Se stai generando HTML per un'email, inserisci semplicemente `finalHtml` nel corpo dell'email e lo stile sopravviverà nella maggior parte dei client moderni. + +## Variazioni comuni e casi limite + +- **Multiple Styles:** Vuoi aggiungere anche un colore di sfondo? Estendi il `CSSStyleDeclaration`: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **Different Elements:** Invece di un ``, potresti creare un `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +Esegui questo programma, apri `result.html` e vedrai il paragrafo stilizzato renderizzato esattamente come descritto. Nessuna concatenazione manuale di stringhe, nessun letterale HTML fragile—solo una manipolazione del DOM pulita e type‑safe. + +## Conclusioni + +Abbiamo risposto a **how to create HTML** da zero usando Aspose.HTML, dimostrato **append element to body**, mostrato un modo chiaro per **create paragraph element**, spiegato **add bold italic text**, e coperto le sfumature di **add css style programmatically**. + +Se ti trovi a tuo agio con questo schema, puoi espanderlo per generare pagine complete: tabelle, immagini, persino script interattivi. Gli stessi principi si applicano—definisci gli stili, crea gli elementi, imposta gli attributi e aggiungili dove appartengono. + +### Cosa viene dopo? + +- **Dynamic Content:** Preleva dati da un database e itera per generare righe in una tabella. +- **Styling Libraries:** Combina questo approccio con file CSS esterni per progetti più grandi. +- **Export Options:** Passa direttamente l'`HTMLDocument` a Aspose.PDF o Aspose.Words per produrre file PDF o DOCX senza una stringa intermedia. + +Sentiti libero di sperimentare, rompere le cose e poi sistemarle—è il modo più veloce per interiorizzare la programmazione DOM in C#. Hai domande o un caso d'uso diverso? Lascia un commento qui sotto, e buona programmazione! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/italian/net/rendering-html-documents/_index.md b/html/italian/net/rendering-html-documents/_index.md index 1239e762f..fc5edca9b 100644 --- a/html/italian/net/rendering-html-documents/_index.md +++ b/html/italian/net/rendering-html-documents/_index.md @@ -60,6 +60,11 @@ Scopri come controllare efficacemente i timeout di rendering in Aspose.HTML per Impara a eseguire il rendering di più documenti HTML utilizzando Aspose.HTML per .NET. Aumenta le tue capacità di elaborazione dei documenti con questa potente libreria. ### [Rendi il documento SVG come PNG in .NET con Aspose.HTML](./render-svg-doc-as-png/) Sblocca la potenza di Aspose.HTML per .NET! Scopri come rendere SVG Doc come PNG senza sforzo. Immergiti in esempi passo dopo passo e FAQ. Inizia subito! +### [Crea documento PDF C# – Renderizza HTML in PDF con Aspose](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +Scopri come convertire HTML in PDF usando Aspose.HTML per .NET con C#. Segui la guida passo passo per ottenere PDF di alta qualità. +### [Renderizza HTML in PDF e zip – Guida completa C#](./render-html-to-pdf-and-zip-it-complete-c-guide/) +Scopri come convertire HTML in PDF e comprimerlo in un file ZIP usando Aspose.HTML per .NET con C# passo passo. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/italian/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/italian/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..3588f8cf3 --- /dev/null +++ b/html/italian/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-28 +description: Crea un documento PDF in C# usando Aspose HTML to PDF. Scopri come rendere + HTML in PDF, convertire HTML in PDF e abilitare il hinting per Linux. +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: it +og_description: Crea documenti PDF in C# istantaneamente. Questa guida mostra come + rendere HTML in PDF, convertire HTML in PDF e utilizzare Aspose HTML to PDF con + hinting del testo. +og_title: Crea documento PDF C# – Renderizza HTML in PDF con Aspose +tags: +- Aspose +- C# +- PDF generation +title: Crea documento PDF C# – Renderizza HTML in PDF con Aspose +url: /it/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crea documento PDF C# – Renderizza HTML in PDF con Aspose + +Hai mai avuto bisogno di **creare documento PDF C#** da una stringa HTML dinamica e ti sei chiesto perché il testo appare sfocato su Linux? Non sei l'unico a grattarsi la testa. La buona notizia è che Aspose HTML rende un gioco **renderizzare HTML in PDF**, e con un paio di opzioni aggiuntive puoi ottenere glifi nitidi come un rasoio anche su server headless. + +In questo tutorial percorreremo un esempio completo, pronto‑all'uso, che **converte HTML in PDF** utilizzando la libreria Aspose HTML per .NET. Tratteremo anche perché potresti voler abilitare l'hinting, come configurare la pipeline di rendering e cosa fare se in seguito dovessi personalizzare le dimensioni della pagina o il DPI. Nessuna documentazione esterna necessaria—basta copiare, incollare e eseguire. + +## Cosa ti servirà + +- **.NET 6+** (o .NET Framework 4.6.2+). Aspose HTML supporta entrambi, ma l'esempio qui sotto utilizza .NET 6 per semplicità. +- **Aspose.HTML for .NET** pacchetto NuGet (`Aspose.Html`). Installalo tramite la Package Manager Console: + + ```powershell + Install-Package Aspose.Html + ``` + +- Un ambiente **Linux o Windows**. Il flag di hinting è particolarmente utile su Linux, ma il codice funziona ovunque. +- Un IDE o editor a tua scelta (Visual Studio, VS Code, Rider…). + +È tutto—nessun font aggiuntivo, nessun driver di stampa PDF, solo una singola DLL. + +## Passo 1: Configura le Opzioni di Rendering del Testo (Parola chiave principale in azione) + +La prima cosa che facciamo è dire ad Aspose come gestire il rendering dei glifi. Su Linux il rasterizzatore predefinito può produrre caratteri sfocati, quindi attiviamo l'hinting. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**Perché?** +`UseHinting` costringe il renderer ad allineare i contorni vettoriali alla griglia dei pixel, eliminando i bordi sfocati che spesso si vedono nei PDF generati su container Linux headless. La proprietà `FontSize` non è obbligatoria, ma fornisce una base prevedibile per qualsiasi HTML che non specifichi una propria dimensione. + +> **Consiglio professionale:** Se il tuo target è solo Windows, puoi saltare l'hinting—Windows applica già il rendering sub‑pixel automaticamente. + +## Passo 2: Associa le Opzioni di Testo alle Impostazioni di Rendering PDF + +Successivamente creiamo un'istanza di `PdfRenderingOptions` e colleghiamo le `TextOptions` appena configurate. Questo oggetto governa l'intero processo di conversione. + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**Perché collegarle?** +L'oggetto `PdfRenderingOptions` è il ponte tra il motore HTML e lo scrittore PDF. Assegnando qui le `TextOptions`, ogni pagina renderizzata erediterà la configurazione di hinting, garantendo un output coerente su tutto il documento. + +## Passo 3: Carica il tuo contenuto HTML + +Aspose ti permette di fornire HTML da una stringa, un file o anche un URL. Per questo tutorial lo manterremo semplice e useremo una stringa in memoria. + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**Perché una stringa?** +Quando generi report al volo (ad esempio fatture, ricevute), spesso componi l'HTML usando l'interpolazione di stringhe o un motore di templating. Passare direttamente una stringa evita file temporanei e velocizza la pipeline. + +## Passo 4: Salva il PDF con le Opzioni Configurate + +Ora scriviamo finalmente il PDF su disco. Il metodo `Save` accetta il percorso di destinazione e le opzioni di rendering che abbiamo preparato in precedenza. + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**Cosa vedrai:** +Apri `hinted.pdf` con qualsiasi visualizzatore PDF. Il paragrafo “Hinted text on Linux” dovrebbe apparire nitido, con il font Arial renderizzato correttamente. Su Linux noterai la differenza rispetto a un PDF generato senza `UseHinting`. + +> **Output previsto:** un PDF di una sola pagina contenente il paragrafo in Arial 14 pt, senza bordi sfocati. + +### Esempio completo funzionante + +Di seguito trovi il programma completo che puoi copiare in un progetto console. Include tutte le istruzioni using, la gestione degli errori e i commenti per chiarezza. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +Esegui il programma (`dotnet run`) e avrai un PDF pronto per la distribuzione, l'archiviazione o ulteriori elaborazioni. + + + +## Domande Frequenti (FAQ) + +### Funziona con **aspose html to pdf** su .NET Core? +Assolutamente. La stessa superficie API è esposta su .NET Framework, .NET Core e .NET 5/6. Assicurati solo che la versione del pacchetto NuGet corrisponda al tuo framework di destinazione. + +### Come posso **renderizzare HTML in PDF** con dimensioni di pagina personalizzate? +Crea un oggetto `PdfPageSetup`, imposta `Width`, `Height` o `Size`, e assegnalo a `pdfRenderOptions.PageSetup`. Esempio: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### Cosa fare se devo **convertire HTML in PDF** in una Web API? +Restituisci il PDF come `FileResult`: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### Posso usarlo per **html to pdf c#** in un container Docker Linux? +Sì. Il flag di hinting è specificamente progettato per ambienti Linux headless. Basta installare il pacchetto `libgdiplus` se sei su Alpine, e la conversione funzionerà subito. + +## Ottimizzazioni Avanzate (Oltre le Basi) + +- **Incorporamento dei Font:** Se il tuo HTML fa riferimento a font personalizzati, chiama `htmlDoc.Fonts.Add("MyFont", fontBytes);` prima del rendering. +- **Gestione delle Immagini:** Abilita `pdfRenderOptions.ImageResolution = 300;` per grafica ad alta DPI. +- **Sicurezza:** Usa `PdfSaveOptions` per proteggere con password l'output (`PdfSaveOptions.Password = "secret";`). + +Queste opzioni ti permettono di trasformare un semplice snippet **convert html to pdf** in un servizio pronto per la produzione. + +## Riepilogo + +Abbiamo appena dimostrato come **creare documento PDF C#** renderizzando HTML con Aspose HTML, abilitando l'hinting del testo per un output più nitido su Linux, e salvando il risultato con una singola chiamata di metodo. I passaggi coperti: + +1. Configura `TextOptions` (hinting). +2. Associali a `PdfRenderingOptions`. +3. Carica l'HTML da una stringa. +4. Salva il PDF. + +Ora disponi di una solida base per qualsiasi scenario che richieda **aspose html to pdf**, **render html to pdf**, **convert html to pdf**, o **html to pdf c#**. Sentiti libero di sperimentare con layout di pagina, font incorporati o lo streaming del PDF direttamente a un client. + +--- + +**Passi successivi:** +- Prova a convertire un report HTML multi‑pagina con tabelle e immagini. +- Esplora l'API `PdfDocument` di Aspose per il post‑processing (aggiunta di segnalibri, filigrane). +- Combina questa conversione con una coda di job in background (ad esempio, Hangfire) per generare PDF su richiesta. + +Buon coding, e che i tuoi PDF siano sempre nitidi! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/italian/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/italian/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..757881b64 --- /dev/null +++ b/html/italian/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-28 +description: Genera PDF da HTML direttamente da un URL e comprimi il risultato in + un file ZIP. Scopri come convertire un URL in PDF, generare PDF da un sito web e + comprimere il file PDF in C#. +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: it +og_description: Converti HTML in PDF direttamente da un URL, quindi comprimi il PDF + in un file ZIP. Questo tutorial passo‑passo mostra come convertire un URL in PDF, + generare un PDF dal sito web e comprimere il file PDF in ZIP con C#. +og_title: Converti HTML in PDF e comprimilo – Guida completa C# +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: Converti HTML in PDF e comprimilo – Guida completa a C# +url: /it/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Render HTML in PDF e Zip – Guida Completa C# + +Ti è mai capitato di **render HTML to PDF** al volo e poi inviare il file a un client come un unico archivio? Forse stai creando un servizio di reporting che recupera una pagina web live, la trasforma in PDF e memorizza il risultato in un zip per un facile download. In questo tutorial ti guideremo passo passo—renderizzare una pagina web remota in PDF, poi **comprimere il PDF in un zip** senza mai toccare il disco. + +Tratteremo anche come **convert URL to PDF**, **generate PDF from website**, e infine **zip PDF file** così potrai distribuirlo ovunque ti serva. Niente superfluo, solo una soluzione funzionante che puoi inserire in un progetto .NET 6+ oggi. + +## Cosa Ti Serve + +- **.NET 6** o versioni successive (il codice funziona anche con .NET Framework 4.6+). +- **Aspose.HTML for .NET** – la libreria che gestisce il lavoro pesante per il rendering HTML‑to‑PDF. +- Una modesta esperienza in C#—se sai scrivere un `Console.WriteLine`, sei pronto. +- Un IDE a tua scelta (Visual Studio, Rider, VS Code…). + +> **Suggerimento:** Aspose.HTML offre una prova gratuita che include tutte le funzionalità di rendering. Scaricala dal [sito Aspose](https://products.aspose.com/html/net/) prima di iniziare. + +Ora che i prerequisiti sono sistemati, immergiamoci. + +## Passo 1 – Carica il Documento HTML Remoto (Convert URL to PDF) + +La prima cosa da fare è indicare ad Aspose.HTML dove si trova la sorgente. Nel nostro caso è un URL pubblico, ma potresti altrettanto facilmente fornirgli una stringa contenente HTML grezzo. + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Perché è importante:** Caricare il documento da un URL fa sì che il renderer recuperi automaticamente tutte le risorse collegate (CSS, immagini, font), fornendoti una replica fedele in PDF del sito live. Saltare questo passo e fornire una semplice stringa rimuoverebbe quegli asset, cosa raramente desiderata quando *generate PDF from website*. + +## Passo 2 – Configura le Opzioni di Rendering PDF (La Qualità Conta) + +Aspose.HTML ti permette di regolare l'aspetto del PDF. L'antialiasing e il hinting dei font sono due impostazioni che rendono l'output nitido su schermo e in stampa. + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Perché le impostiamo:** Senza antialiasing, le linee e le grafiche vettoriali possono apparire frastagliate, soprattutto su display ad alta DPI. Il hinting, invece, indica al motore PDF come allineare i glifi ai bordi dei pixel, una piccola regolazione che spesso produce una grande differenza visiva. + +## Passo 3 – Prepara un Archivio ZIP In‑Memoria (Zip PDF File) + +Invece di scrivere prima il PDF su disco e poi comprimerlo—un incubo I/O a due passaggi—streameremo direttamente in una voce zip. Questo mantiene tutto in memoria, perfetto per API web o processi in background. + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Nota caso limite:** Se gestisci PDF di grandi dimensioni (centinaia di MB), considera di inviare lo zip direttamente a uno stream di risposta invece di mantenerlo interamente in memoria. Per report tipici sotto i 20 MB, questo approccio è sicuro e veloce. + +## Passo 4 – Streamma il PDF Direttamente in una Voce ZIP + +Ecco la parte intelligente: creiamo una voce zip chiamata `output.pdf` e passiamo il suo stream ad Aspose.HTML. Il renderer scrive i byte del PDF direttamente nella voce zip—senza file temporaneo. + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Perché lo facciamo così:** Fornendo al writer PDF uno stream che punta a una voce zip, evitiamo il ciclo “scrivi su disco → zip → elimina”. Questo non solo riduce il carico I/O ma elimina anche il rischio di lasciare file residui sul server. + +## Passo 5 – Finalizza lo ZIP e Salvalo + +Dopo che il PDF è stato scritto, dobbiamo chiudere l'archivio zip così che la directory centrale venga svuotata, quindi scrivere il tutto su disco (o restituirlo da un'API). + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Risultato che vedrai:** Un file chiamato `result.zip` contenente una singola voce `output.pdf`. Aprendo il PDF si vede una replica pixel‑perfect di `https://example.com`, completa di stili e immagini. + + + +*Testo alternativo immagine: render html to pdf – screenshot del PDF generato all'interno di un archivio ZIP.* + +## Esempio Completo Funzionante + +Mettendo tutto insieme, ecco il programma completo, pronto per il copia‑incolla: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### Cosa Aspettarsi + +- **`result.zip`** appare in `C:\Temp`. +- All'interno dell'archivio troverai **`output.pdf`**. +- Aprendo il PDF si vede la pagina live da `https://example.com` renderizzata fedelmente. + +Se esegui il programma e lo zip è vuoto, verifica che l'URL sia raggiungibile e che Aspose.HTML abbia i permessi per scaricare risorse esterne (firewall, impostazioni proxy, ecc.). + +## Domande Frequenti & Casi Limite + +| Question | Answer | +|----------|--------| +| *E se la pagina fa riferimento a font esterni?* | Aspose.HTML scarica automaticamente i web‑font referenziati tramite `@font-face`. Assicurati che il server possa raggiungere gli URL dei font. | +| *Posso aggiungere più PDF nello stesso ZIP?* | Sì—basta chiamare `zipArchive.CreateEntry("report2.pdf")` e renderizzare un altro `HTMLDocument` in quello stream. | +| *Come impostare un nome file PDF personalizzato?* | Modifica la stringa passata a `CreateEntry`, ad esempio `CreateEntry("my‑invoice.pdf")`. | +| *È sicuro usarlo in un'app web multithread?* | Ogni richiesta dovrebbe creare il proprio `MemoryStream` e `ZipArchive`. Gli oggetti non sono thread‑safe, quindi le istanze condivise provocheranno corruzione. | +| *E i PDF di grandi dimensioni?* | Per PDF > 100 MB, considera lo streaming diretto alla risposta HTTP (`Response.Body`) invece di bufferizzare in memoria. | + +## Conclusione + +Ti abbiamo appena mostrato come **render HTML to PDF**, **convert URL to PDF**, **generate PDF from website**, e infine **zip PDF file**—tutto in un flusso di lavoro pulito e in‑memoria. + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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..0d50cd3d4 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/) +### [Creare HTML da stringa in C# – Guida completa con Memory Stream](./create-html-from-string-in-c-full-guide-with-memory-stream/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/italian/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/italian/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..362a87423 --- /dev/null +++ b/html/italian/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,278 @@ +--- +category: general +date: 2026-03-28 +description: Crea HTML da una stringa usando Aspose.Html e catturalo in uno stream. + Impara a convertire HTML in stringa, gestire risorse personalizzate e scrivere HTML + su stream. +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: it +og_description: Crea HTML da una stringa con Aspose.Html, catturalo in memoria e converti + l'HTML in stringa. Guida passo‑passo per gestore di risorse personalizzato e scrittura + dell'HTML su stream. +og_title: Crea HTML da stringa in C# – Tutorial completo su Memory‑Stream +tags: +- Aspose.Html +- C# +- MemoryStream +title: Crea HTML da una stringa in C# – Guida completa con Memory Stream +url: /it/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crea HTML da stringa in C# – Guida completa con Memory Stream + +Hai mai avuto bisogno di **creare HTML da stringa** e mantenere tutto in memoria senza toccare il file system? Non sei l'unico. Molti sviluppatori incontrano questo ostacolo quando vogliono generare markup dinamico al volo—ad esempio per un modello di email o una conversione PDF—ma non vogliono un file temporaneo che inquina il disco. + +La buona notizia? Con Aspose.Html puoi creare un `HTMLDocument` direttamente da una stringa, alimentarlo in un **custom resource handler**, e **write HTML to stream** per un uso successivo. In questo tutorial percorreremo ogni passaggio, dalla stringa iniziale al risultato finale `string`, e spiegheremo *perché* ogni elemento è importante. + +Entro la fine di questa guida sarai in grado di: + +* Creare HTML da stringa usando Aspose.Html. +* Convertire HTML in stringa senza scrivere su disco. +* Catturare HTML con un custom resource handler. +* Scrivere HTML in un `MemoryStream` e leggerlo nuovamente. +* Individuare problemi comuni e applicare consigli di best‑practice. + +Non sono necessarie dipendenze esterne oltre a Aspose.Html—solo un progetto .NET e qualche istruzione `using`. + +--- + +## Prerequisiti + +* .NET 6.0 o successivo (il codice funziona anche su .NET Framework). +* Pacchetto NuGet Aspose.Html per .NET (`Install-Package Aspose.Html`). +* Conoscenze di base di C#—se hai già scritto un `Console.WriteLine`, sei a posto. + +--- + +## Passo 1: Crea HTML da stringa – il punto di partenza + +La prima cosa di cui abbiamo bisogno è una stringa HTML grezza. Pensala come lo scheletro che normalmente incolleresti in un file `.html`. + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "` タグを生成し、先ほど作ったスタイルを注入し、テキストコンテンツを設定します。 + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +`paragraph.OuterHtml` を確認すると次のようになります: + +```html +
Bold & Italic text
+``` + +この行は **太字イタリックテキストを追加** していることを示しており、CSS 文字列を直接書く必要はありません。 + +## 手順 5: 段落を Body に追加する + +最後に **要素を Body に追加** します。これが実際にページ上に段落を描画する最後のステップです。 + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +より複雑な位置指定が必要な場合は `htmlDoc.Body.InsertBefore` や `ReplaceChild` を使用できますが、ほとんどのシナリオではシンプルな `AppendChild` で十分です。 + +## 手順 6: HTML 文字列を出力(またはファイルに保存) + +DOM の構築が完了したら、最終的な HTML を抽出します。Aspose.HTML ではドキュメントをシリアライズするだけで完了です。 + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +`result.html` をブラウザで開くと、太字かつイタリックの単一段落が表示されます。これが意図した通りの結果です。 + +### 期待される出力 + +```html + + + + +Bold & Italic text
+ + +``` + +メール用の HTML を生成する場合は、`finalHtml` をメール本文にそのまま埋め込めば、ほとんどのモダンクライアントでスタイルが保持されます。 + +## よくあるバリエーションとエッジケース + +- **複数のスタイル:** 背景色も追加したいですか? `CSSStyleDeclaration` を拡張します: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **別の要素:** `` の代わりに `htmlDoc.CreateElement("div")` や `htmlDoc.CreateElement("span")` で `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +このプログラムを実行し、`result.html` を開くと、説明どおりにスタイルが適用された段落が正確に表示されます。文字列の手動結合や壊れやすい HTML リテラルは不要です。型安全なクリーンな DOM 操作だけです。 + +## まとめ + +Aspose.HTML を使って **HTML を作成** する方法、**要素を Body に追加** する手順、**段落要素を作成** する方法、**太字イタリックテキストを追加** するやり方、そして **CSS スタイルをプログラムで追加** するコツを解説しました。 + +このパターンに慣れたら、テーブルや画像、インタラクティブなスクリプトなど、フルページの生成へと拡張できます。原則は同じです – スタイルを定義し、要素を作成し、属性を設定し、適切な場所に追加する。 + +### 次にやること + +- **動的コンテンツ:** データベースからデータを取得し、テーブルの行をループで生成する。 +- **スタイリングライブラリ:** 大規模プロジェクトでは外部 CSS ファイルと組み合わせる。 +- **エクスポートオプション:** `HTMLDocument` を直接 Aspose.PDF や Aspose.Words に渡し、文字列を介さずに PDF や DOCX を生成する。 + +ぜひ実験し、失敗してから修正してみてください。これが C# で DOM プログラミングを習得する最速の方法です。質問や別のユースケースがあれば、下のコメント欄にどうぞ。ハッピーコーディング! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/japanese/net/rendering-html-documents/_index.md b/html/japanese/net/rendering-html-documents/_index.md index 0d786f01c..f9ee9272b 100644 --- a/html/japanese/net/rendering-html-documents/_index.md +++ b/html/japanese/net/rendering-html-documents/_index.md @@ -42,6 +42,7 @@ Aspose.HTML for .NET のセットアップが完了したら、HTML レンダリ ### [Aspose.HTML を使用して .NET で HTML を PNG としてレンダリングする](./render-html-as-png/) Aspose.HTML for .NET の使い方を学びます。HTML の操作、さまざまな形式への変換などを行います。この包括的なチュートリアルをぜひご覧ください。 + ### [HTML を PNG にレンダリングする方法 – 完全 C# ガイド](./how-to-render-html-as-png-complete-c-guide/) C# を使用して HTML を PNG 画像に変換する手順をステップバイステップで解説します。完全ガイドで初心者も安心です。 @@ -65,9 +66,16 @@ Aspose.HTML for .NET のパワーを解き放ちましょう。SVG ドキュメ ### [Aspose を使用して HTML を PNG にレンダリングする完全ガイド](./how-to-render-html-to-png-with-aspose-complete-guide/) Aspose.HTML for .NET を使い、HTML を高品質な PNG 画像に変換する手順を完全に解説します。 + ### [HTML から PNG を作成 – 完全な C# レンダリング ガイド](./create-png-from-html-full-c-rendering-guide/) Aspose.HTML for .NET を使用して、HTML を PNG 画像に変換する完全な C# ガイドです。ステップバイステップで解説します。 +### [C# で PDF ドキュメントを作成 – Aspose を使用して HTML を PDF にレンダリング](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +Aspose.HTML for .NET を使って、HTML コンテンツを高品質な PDF に変換する方法をステップバイステップで解説します。 + +### [HTML を PDF にレンダリングし、ZIP に圧縮 – 完全 C# ガイド](./render-html-to-pdf-and-zip-it-complete-c-guide/) +C# を使用して HTML を PDF に変換し、さらに ZIP アーカイブにまとめる手順をステップバイステップで解説します。 + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/japanese/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/japanese/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..562f3e62e --- /dev/null +++ b/html/japanese/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-03-28 +description: Aspose HTML to PDF を使用して C# で PDF ドキュメントを作成します。HTML を PDF にレンダリングする方法、HTML + を PDF に変換する方法、そして Linux 用のヒンティングを有効にする方法を学びましょう。 +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: ja +og_description: C#ですぐにPDFドキュメントを作成します。このガイドでは、HTMLをPDFにレンダリングする方法、HTMLをPDFに変換する方法、そしてテキストヒンティングを使用したAspose + HTML to PDFの使い方を示します。 +og_title: PDFドキュメント作成(C#) – AsposeでHTMLをPDFに変換 +tags: +- Aspose +- C# +- PDF generation +title: C#でPDFドキュメントを作成 – AsposeでHTMLをPDFにレンダリング +url: /ja/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Create PDF Document C# – Render HTML to PDF with Aspose + +動的な HTML 文字列から **create PDF document C#** を作成したいが、Linux で文字がぼやけて見えることに悩んだことはありませんか? あなただけではありません。 良いニュースは、Aspose HTML を使えば **render HTML to PDF** がとても簡単にでき、いくつかの追加オプションを設定すれば、ヘッドレスサーバー上でも文字をくっきりと表示できるということです。 + +このチュートリアルでは、Aspose HTML for .NET ライブラリを使用して **converts HTML to PDF** する、完全に実行可能なサンプルを順を追って解説します。 ヒンティングを有効にする理由、レンダリング パイプラインの設定方法、後でページサイズや DPI をカスタマイズしたい場合の対処法もカバーします。 外部ドキュメントは不要です—コピーして貼り付け、実行するだけです。 + +## What You’ll Need + +- **.NET 6+**(または .NET Framework 4.6.2+)。Aspose HTML は両方をサポートしていますが、以下の例はシンプルさのため .NET 6 を対象としています。 +- **Aspose.HTML for .NET** NuGet パッケージ(`Aspose.Html`)。Package Manager Console でインストールします: + + ```powershell + Install-Package Aspose.Html + ``` + +- **Linux または Windows** 環境。ヒンティング フラグは特に Linux で有用ですが、コードはどこでも動作します。 +- お好みの IDE またはエディタ(Visual Studio、VS Code、Rider など)。 + +以上です—追加フォントや PDF プリンタードライバは不要で、DLL が 1 つだけです。 + +## Step 1: Configure Text Rendering Options (Primary Keyword in Action) + +最初に行うのは、Aspose に文字グリフの描画方法を指示することです。Linux ではデフォルトのラスタライザが文字をぼやけさせることがあるため、ヒンティングを有効にします。 + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**Why?** +`UseHinting` はレンダラにベクトル輪郭をピクセルグリッドに合わせさせ、ヘッドレス Linux コンテナで生成された PDF によく見られるぼやけたエッジを排除します。`FontSize` プロパティは必須ではありませんが、サイズが指定されていない HTML に対して予測可能な基準線を提供します。 + +> **Pro tip:** Windows のみを対象とする場合はヒンティングを省略できます—Windows は自動的にサブピクセルレンダリングを適用します。 + +## Step 2: Attach Text Options to PDF Rendering Settings + +次に `PdfRenderingOptions` インスタンスを作成し、先ほど設定した `TextOptions` を組み込みます。このオブジェクトが変換プロセス全体を制御します。 + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**Why bind them?** +`PdfRenderingOptions` オブジェクトは HTML エンジンと PDF ライタの橋渡し役です。ここで `TextOptions` を割り当てることで、レンダリングされるすべてのページがヒンティング設定を継承し、ドキュメント全体で一貫した出力が保証されます。 + +## Step 3: Load Your HTML Content + +Aspose は文字列、ファイル、URL のいずれからでも HTML を読み込めます。このチュートリアルではシンプルにインメモリ文字列を使用します。 + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**Why a string?** +レポート(請求書や領収書など)をリアルタイムで生成する際は、文字列補間やテンプレートエンジンで HTML を組み立てることが多いです。文字列を直接渡すことで一時ファイルを作成せずにパイプラインが高速化します。 + +## Step 4: Save the PDF with the Configured Options + +最後に PDF をディスクに書き出します。`Save` メソッドは保存先パスと、事前に用意したレンダリング オプションを受け取ります。 + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**What you’ll see:** +任意の PDF ビューアで `hinted.pdf` を開きます。段落「Hinted text on Linux」はくっきりと表示され、Arial フォントが綺麗にレンダリングされます。Linux では `UseHinting` を付けた場合と付けなかった場合の違いがはっきりと分かります。 + +> **Expected output:** 14pt Arial の段落が 1 ページに収まった PDF で、ぼやけたエッジはありません。 + +### Full Working Example + +以下はコンソール アプリ プロジェクトにコピーできる完全なプログラムです。using 文、エラーハンドリング、コメントがすべて含まれています。 + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +プログラムを実行(`dotnet run`)すると、配布やアーカイブ、さらなる処理に使える PDF が生成されます。 + + + +## Frequently Asked Questions (FAQ) + +### Does this work with **aspose html to pdf** on .NET Core? +Absolutely. The same API surface is exposed across .NET Framework, .NET Core, and .NET 5/6. Just make sure the NuGet package version matches your target framework. + +### How can I **render HTML to PDF** with custom page size? +Create a `PdfPageSetup` object, set `Width`, `Height`, or `Size`, and assign it to `pdfRenderOptions.PageSetup`. Example: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### What if I need to **convert HTML to PDF** in a web API? +Return the PDF as a `FileResult`: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### Can I use this for **html to pdf c#** in a Linux Docker container? +Yes. The hinting flag is specifically designed for headless Linux environments. Just install the `libgdiplus` package if you’re on Alpine, and the conversion will work out of the box. + +## Advanced Tweaks (Beyond the Basics) + +- **Embedding Fonts:** If your HTML references custom fonts, call `htmlDoc.Fonts.Add("MyFont", fontBytes);` before rendering. +- **Image Handling:** Enable `pdfRenderOptions.ImageResolution = 300;` for high‑DPI graphics. +- **Security:** Use `PdfSaveOptions` to password‑protect the output (`PdfSaveOptions.Password = "secret";`). + +These options let you turn a simple **convert html to pdf** snippet into a production‑ready service. + +## Recap + +We just demonstrated how to **create PDF document C#** by rendering HTML with Aspose HTML, enabling text hinting for sharper output on Linux, and saving the result with a single method call. The steps covered: + +1. Set up `TextOptions` (hinting). +2. Attach them to `PdfRenderingOptions`. +3. Load HTML from a string. +4. Save the PDF. + +Now you have a solid foundation for any scenario that requires **aspose html to pdf**, **render html to pdf**, **convert html to pdf**, or **html to pdf c#**. Feel free to experiment with page layouts, embedded fonts, or streaming the PDF directly to a client. + +--- + +**Next steps:** +- Try converting a multi‑page HTML report with tables and images. +- Explore Aspose’s `PdfDocument` API for post‑processing (adding bookmarks, watermarks). +- Combine this conversion with a background job queue (e.g., Hangfire) to generate PDFs on demand. + +Happy coding, and may your PDFs always be crisp! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/japanese/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/japanese/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..924b099a2 --- /dev/null +++ b/html/japanese/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,232 @@ +--- +category: general +date: 2026-03-28 +description: URL から直接 HTML を PDF に変換し、結果を ZIP ファイルに圧縮します。URL を PDF に変換する方法、Web サイトから + PDF を生成する方法、そして C# で PDF ファイルを ZIP に圧縮する方法を学びましょう。 +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: ja +og_description: URL から直接 HTML を PDF に変換し、PDF を ZIP ファイルに圧縮します。このステップバイステップのチュートリアルでは、URL + を PDF に変換し、ウェブサイトから PDF を生成し、C# で PDF ファイルを ZIP にする方法を紹介します。 +og_title: HTML を PDF に変換して ZIP する – 完全 C# ガイド +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: HTML を PDF に変換し、ZIP にまとめる – 完全 C# ガイド +url: /ja/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML を PDF にレンダリングして Zip にまとめる – 完全 C# ガイド + +リアルタイムで **render HTML to PDF** を行い、そのファイルを単一のアーカイブとしてクライアントに送信したことはありますか?ライブページを取得して PDF に変換し、ダウンロードしやすい zip に保存するレポートサービスを構築しているかもしれません。このチュートリアルでは、リモートのウェブページを PDF にレンダリングし、**compressing the PDF in a zip** をディスクに書き込むことなく実行する方法をステップバイステップで解説します。 + +**convert URL to PDF**、**generate PDF from website**、そして最終的に **zip PDF file** の方法もカバーしますので、必要な場所へ配布できます。余計な説明は省き、すぐに .NET 6+ プロジェクトに組み込める実用的なソリューションを提供します。 + +## 必要なもの + +- **.NET 6** またはそれ以降(コードは .NET Framework 4.6+ でも動作します)。 +- **Aspose.HTML for .NET** – HTML‑to‑PDF レンダリングの重い処理を担うライブラリ。 +- C# の基本的な経験が少しあれば OK — `Console.WriteLine` が書ければ問題ありません。 +- お好みの IDE(Visual Studio、Rider、VS Code など)。 + +> **Pro tip:** Aspose.HTML はすべてのレンダリング機能を含む無料トライアルを提供しています。開始前に [Aspose website](https://products.aspose.com/html/net/) から取得してください。 + +前提条件が整ったので、さっそく始めましょう。 + +## Step 1 – リモート HTML ドキュメントの読み込み(Convert URL to PDF) + +最初に行うべきことは、Aspose.HTML にソースの場所を指示することです。今回の例では公開 URL を使用しますが、生の HTML を含む文字列を渡すことも同様に可能です。 + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Why this matters:** URL からドキュメントを読み込むと、レンダラはリンクされたすべてのリソース(CSS、画像、フォント)を自動的に取得し、ライブサイトの忠実な PDF レプリカを生成します。このステップを省いて単なる文字列を渡すと、これらのアセットが失われてしまい、*generate PDF from website* を行う際に望む結果にはなりません。 + +## Step 2 – PDF レンダリングオプションの設定(Quality Matters) + +Aspose.HTML では PDF の外観を微調整できます。アンチエイリアシングとフォントヒンティングは、画面上でも印刷時でも出力を鮮明にする2つの設定です。 + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Why we set these:** アンチエイリアシングが無いと、特に高 DPI ディスプレイで線画やベクターグラフィックがギザギザに見えることがあります。一方、ヒンティングは PDF エンジンにグリフをピクセル境界に合わせる方法を指示し、視覚的な差が大きくなる小さな調整です。 + +## Step 3 – メモリ内 ZIP アーカイブの準備(Zip PDF File) + +PDF をまずディスクに書き出し、次に ZIP 圧縮するという二段階の I/O 悪夢を避け、直接 zip エントリにストリームします。これによりすべてがメモリ上に留まり、Web API やバックグラウンドジョブに最適です。 + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Edge case note:** 数百 MB という大容量 PDF を扱う場合は、全体をメモリに保持するのではなく、zip を直接レスポンスストリームにパイプすることを検討してください。通常の 20 MB 未満のレポートであれば、この方法は安全かつ高速です。 + +## Step 4 – PDF を直接 ZIP エントリにストリームする + +ここがポイントです。`output.pdf` という名前の zip エントリを作成し、そのストリームを Aspose.HTML に渡します。レンダラは PDF バイト列を直接 zip エントリに書き込むため、一時ファイルは不要です。 + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Why we do it this way:** PDF ライタに zip エントリを指すストリームを渡すことで、“ディスクへ書き込み → zip → 削除” のサイクルを回避します。これにより I/O のオーバーヘッドが減少し、サーバー上に不要なファイルが残るリスクもなくなります。 + +## Step 5 – ZIP を完了させて永続化する + +PDF の書き込みが完了したら、中央ディレクトリがフラッシュされるよう zip アーカイブを閉じ、全体をディスクに書き出す(または API から返す)必要があります。 + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Result you’ll see:** `result.zip` という名前のファイルが作成され、その中に `output.pdf` という単一エントリが含まれます。PDF を開くと、`https://example.com` のスタイルと画像をすべて保持したピクセルパーフェクトなスナップショットが表示されます。 + + + +*HTML を PDF にレンダリング – ZIP アーカイブ内に生成された PDF のスクリーンショット。* + +## 完全な動作例 + +すべてをまとめると、以下が完全なコピー&ペースト可能なプログラムです: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### 期待される結果 + +- **`result.zip`** が `C:\Temp` に作成されます。 +- アーカイブ内に **`output.pdf`** が含まれます。 +- PDF を開くと、`https://example.com` のライブページが忠実にレンダリングされていることが確認できます。 + +プログラムを実行して zip が空の場合は、URL が到達可能か、Aspose.HTML が外部リソースをダウンロードする権限(ファイアウォール、プロキシ設定など)があるかを再確認してください。 + +## よくある質問とエッジケース + +| Question | Answer | +|----------|--------| +| *ページが外部フォントを参照している場合はどうしますか?* | Aspose.HTML は `@font-face` で参照されるウェブフォントを自動的にダウンロードします。サーバーがフォントの URL に到達できることを確認してください。 | +| *同じ ZIP に複数の PDF を追加できますか?* | はい。`zipArchive.CreateEntry("report2.pdf")` を呼び出し、別の `HTMLDocument` をそのストリームにレンダリングすれば追加できます。 | +| *カスタム PDF ファイル名はどう設定しますか?* | `CreateEntry` に渡す文字列を変更します。例: `CreateEntry("my‑invoice.pdf")`。 | +| *マルチスレッドの Web アプリで使用しても安全ですか?* | 各リクエストごとに `MemoryStream` と `ZipArchive` を個別に作成すべきです。これらのオブジェクトはスレッドセーフではないため、インスタンスを共有すると破損します。 | +| *大容量 PDF はどう扱いますか?* | 100 MB 超の PDF では、メモリにバッファせずに HTTP レスポンス (`Response.Body`) に直接ストリーミングすることを検討してください。 | + +## まとめ + +ここでは、**render HTML to PDF**、**convert URL to PDF**、**generate PDF from website**、そして最終的に **zip PDF file** を、クリーンなメモリ内ワークフローで実現する方法をご紹介しました。 + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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..8c3706851 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 を作成する – メモリストリームを使用した完全ガイド](./create-html-from-string-in-c-full-guide-with-memory-stream/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/japanese/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/japanese/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..30ce54c1c --- /dev/null +++ b/html/japanese/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-03-28 +description: Aspose.Html を使用して文字列から HTML を作成し、ストリームにキャプチャします。HTML を文字列に変換する方法、カスタム + リソース ハンドラ、および HTML をストリームに書き込む方法を学びます。 +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: ja +og_description: Aspose.Html を使用して文字列から HTML を作成し、メモリにキャプチャして HTML を文字列に変換します。カスタムリソースハンドラと + HTML をストリームに書き込む手順ガイド。 +og_title: C#で文字列からHTMLを作成する – 完全なMemory‑Streamチュートリアル +tags: +- Aspose.Html +- C# +- MemoryStream +title: C#で文字列からHTMLを生成 – メモリストリームによる完全ガイド +url: /ja/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#で文字列からHTMLを作成 – メモリストリームを使用した完全ガイド + +文字列からHTMLを**作成**し、ファイルシステムに触れずにすべてをメモリ上に保持したいことはありませんか? あなただけではありません。多くの開発者が、メールテンプレートやPDF変換など、動的なマークアップをその場で生成したいときに、この問題に直面しますが、一時ファイルがディスクに残るのは避けたいと考えています。 + +良いニュースです。Aspose.Html を使用すれば、文字列から直接 `HTMLDocument` を作成し、**カスタムリソースハンドラ**に渡し、**HTML をストリームに書き込む**ことができます。このチュートリアルでは、最初の文字列から最終的な `string` 結果まで、すべての手順を順に解説し、各要素がなぜ重要なのかを説明します。 + +このガイドが終わる頃には、以下ができるようになります。 + +* Aspose.Html を使用して文字列からHTMLを作成する。 +* ディスクに書き込まずにHTMLを文字列に変換する。 +* カスタムリソースハンドラでHTMLをキャプチャする。 +* `MemoryStream` にHTMLを書き込み、再度読み取る。 +* よくある落とし穴を見つけ、ベストプラクティスのヒントを適用する。 + +Aspose.Html 以外の外部依存は不要です — .NET プロジェクトといくつかの `using` 文さえあれば完了します。 + +--- + +## 前提条件 + +* .NET 6.0 以降(コードは .NET Framework でも動作します)。 +* Aspose.Html for .NET NuGet パッケージ(`Install-Package Aspose.Html`)。 +* 基本的な C# の知識 — `Console.WriteLine` を書いたことがあれば問題ありません。 + +## Step 1: Create HTML from string – the starting point + +最初に必要なのは、生の HTML 文字列です。通常 `.html` ファイルに貼り付けるような骨組みと考えてください。 + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "` 태그를 생성하고, 앞서 만든 스타일을 주입한 뒤 텍스트 내용을 설정합니다. + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +`paragraph.OuterHtml`를 검사하면 다음과 같은 결과가 나타납니다: + +```html +
Bold & Italic text
+``` + +이 라인은 원시 CSS 문자열을 작성하지 않고도 **굵은 이탤릭 텍스트를 추가**하는 방법을 보여줍니다. + +## 단계 5: 단락을 Body에 추가하기 + +마지막으로, **append element to body**를 수행합니다. 이것이 페이지에 실제로 단락을 렌더링하는 퍼즐의 마지막 조각입니다. + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +보다 복잡한 위치 지정이 필요하다면 `htmlDoc.Body.InsertBefore` 또는 `ReplaceChild`를 호출할 수도 있습니다. 대부분의 경우 간단한 `AppendChild`가 충분합니다. + +## 단계 6: HTML 문자열 출력(또는 파일 저장) + +이제 DOM을 구축했으니 최종 HTML을 추출해 보겠습니다. Aspose.HTML은 한 번의 호출로 문서를 직렬화할 수 있게 해줍니다. + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +브라우저에서 `result.html`을 열면 굵고 이탤릭체인 단일 단락이 표시되며, 우리가 의도한 그대로입니다. + +### 예상 출력 + +```html + + + + +Bold & Italic text
+ + +``` + +이메일용 HTML을 생성하는 경우, `finalHtml`을 이메일 본문에 삽입하면 대부분의 최신 클라이언트에서 스타일이 유지됩니다. + +## 일반적인 변형 및 엣지 케이스 + +- **Multiple Styles:** 배경색도 추가하고 싶나요? `CSSStyleDeclaration`을 확장합니다: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **Different Elements:** `` 대신 `htmlDoc.CreateElement("div")`와 같이 `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +이 프로그램을 실행하고 `result.html`을 열면 설명한 대로 스타일이 적용된 단락이 정확히 렌더링됩니다. 수동 문자열 연결이나 깨지기 쉬운 HTML 리터럴 없이—깨끗하고 타입 안전한 DOM 조작만으로 구현됩니다. + +## 마무리 + +우리는 Aspose.HTML을 사용하여 처음부터 **HTML을 만드는 방법**을 설명하고, **append element to body**를 시연했으며, **create paragraph element**를 명확히 보여주고, **add bold italic text**를 설명했으며, **add css style programmatically**의 미묘한 차이점도 다루었습니다. + +이 패턴에 익숙해졌다면 테이블, 이미지, 심지어 인터랙티브 스크립트와 같은 완전한 페이지를 생성하도록 확장할 수 있습니다. 동일한 원칙이 적용됩니다—스타일 정의, 요소 생성, 속성 설정, 그리고 적절한 위치에 추가하기. + +### 다음 단계는? + +- **Dynamic Content:** 데이터베이스에서 데이터를 가져와 루프를 돌며 테이블에 행을 생성합니다. +- **Styling Libraries:** 대규모 프로젝트를 위해 외부 CSS 파일과 이 방식을 결합합니다. +- **Export Options:** `HTMLDocument`를 직접 Aspose.PDF 또는 Aspose.Words에 전달하여 중간 문자열 없이 PDF 또는 DOCX 파일을 생성합니다. + +자유롭게 실험하고, 문제를 일으키고, 다시 고쳐 보세요—이것이 C#에서 DOM 프로그래밍을 내재화하는 가장 빠른 방법입니다. 질문이나 다른 사용 사례가 있나요? 아래에 댓글을 남겨 주세요. 즐거운 코딩 되세요! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/korean/net/rendering-html-documents/_index.md b/html/korean/net/rendering-html-documents/_index.md index 7178d36b0..04d31ac39 100644 --- a/html/korean/net/rendering-html-documents/_index.md +++ b/html/korean/net/rendering-html-documents/_index.md @@ -63,6 +63,10 @@ Aspose.HTML for .NET을 사용하여 여러 HTML 문서를 렌더링하는 방 .NET용 Aspose.HTML의 힘을 활용하세요! SVG 문서를 PNG로 손쉽게 렌더링하는 방법을 알아보세요. 단계별 예제와 FAQ를 살펴보세요. 지금 시작하세요! ### [HTML에서 PNG 생성 – 전체 C# 렌더링 가이드](./create-png-from-html-full-c-rendering-guide/) .NET용 Aspose.HTML을 사용해 HTML을 PNG 이미지로 변환하는 전체 C# 렌더링 과정을 배워보세요. +### [PDF 문서 만들기 C# – Aspose를 사용하여 HTML을 PDF로 렌더링](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +Aspose.HTML for .NET을 사용해 C#으로 HTML을 PDF로 변환하는 전체 과정을 단계별로 안내합니다. +### [HTML을 PDF로 렌더링하고 ZIP 파일로 압축 – 완전한 C# 가이드](./render-html-to-pdf-and-zip-it-complete-c-guide/) +Aspose.HTML for .NET을 사용해 HTML을 PDF로 변환하고 ZIP 파일로 압축하는 전체 과정을 단계별로 안내합니다. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/korean/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/korean/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..828412c6c --- /dev/null +++ b/html/korean/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,230 @@ +--- +category: general +date: 2026-03-28 +description: Aspose HTML to PDF를 사용하여 C#에서 PDF 문서를 생성합니다. HTML을 PDF로 렌더링하고, HTML을 + PDF로 변환하는 방법을 배우며, Linux에서 힌팅을 활성화합니다. +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: ko +og_description: C#로 PDF 문서를 즉시 생성하세요. 이 가이드는 HTML을 PDF로 렌더링하고, HTML을 PDF로 변환하며, 텍스트 + 힌팅을 사용한 Aspose HTML to PDF 활용 방법을 보여줍니다. +og_title: C#로 PDF 문서 만들기 – Aspose를 사용하여 HTML을 PDF로 변환 +tags: +- Aspose +- C# +- PDF generation +title: C#로 PDF 문서 만들기 – Aspose를 사용한 HTML을 PDF로 변환 +url: /ko/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF 문서 만들기 C# – Aspose로 HTML을 PDF로 렌더링 + +동적인 HTML 문자열에서 **create PDF document C#**을(를) 만들고 싶었지만 Linux에서 텍스트가 흐릿하게 보이는 이유가 궁금했나요? 당신만 그런 것이 아닙니다. 좋은 소식은 Aspose HTML을 사용하면 **render HTML to PDF**가 매우 쉬워지고, 몇 가지 추가 옵션을 통해 헤드리스 서버에서도 날카로운 글리프를 얻을 수 있다는 것입니다. + +이 튜토리얼에서는 Aspose HTML for .NET 라이브러리를 사용하여 **converts HTML to PDF**하는 완전하고 바로 실행 가능한 예제를 단계별로 살펴보겠습니다. 또한 힌팅을 활성화해야 하는 이유, 렌더링 파이프라인 설정 방법, 그리고 나중에 페이지 크기나 DPI를 맞춤 설정해야 할 경우에 대한 내용도 다룹니다. 외부 문서는 필요 없으며, 복사·붙여넣기만 하면 됩니다. + +## 필요 사항 + +- **.NET 6+** (또는 .NET Framework 4.6.2+). Aspose HTML은 두 버전을 모두 지원하지만, 아래 예제는 간단함을 위해 .NET 6을 대상으로 합니다. +- **Aspose.HTML for .NET** NuGet 패키지 (`Aspose.Html`). 패키지 관리 콘솔을 통해 설치하세요: + + ```powershell + Install-Package Aspose.Html + ``` + +- **Linux 또는 Windows** 환경. 힌팅 플래그는 특히 Linux에서 유용하지만, 코드는 모든 환경에서 동작합니다. +- 원하는 IDE 또는 편집기 (Visual Studio, VS Code, Rider 등). + +그게 전부입니다—추가 폰트나 PDF 프린터 드라이버가 필요 없으며, 단일 DLL만 있으면 됩니다. + +## 단계 1: 텍스트 렌더링 옵션 구성 (Primary Keyword in Action) + +먼저 Aspose에 글리프 렌더링 방식을 알려줍니다. Linux에서는 기본 래스터라이저가 흐릿한 문자를 만들 수 있으므로 힌팅을 활성화합니다. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**왜?** +`UseHinting`은 렌더러가 벡터 윤곽선을 픽셀 그리드에 맞추도록 강제하여, 헤드리스 Linux 컨테이너에서 생성된 PDF에서 흔히 보이는 흐릿한 가장자리를 없애줍니다. `FontSize` 속성은 필수는 아니지만, 자체 크기를 지정하지 않은 HTML에 대해 예측 가능한 기준선을 제공합니다. + +> **Pro tip:** Windows만 대상이라면 힌팅을 건너뛸 수 있습니다—Windows는 이미 서브픽셀 렌더링을 자동으로 적용합니다. + +## 단계 2: 텍스트 옵션을 PDF 렌더링 설정에 연결 + +다음으로 `PdfRenderingOptions` 인스턴스를 생성하고 방금 구성한 `TextOptions`를 연결합니다. 이 객체가 전체 변환 프로세스를 관리합니다. + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**왜 연결하나요?** +`PdfRenderingOptions` 객체는 HTML 엔진과 PDF 라이터 사이의 다리 역할을 합니다. 여기서 `TextOptions`를 할당하면 렌더링되는 모든 페이지가 힌팅 구성을 상속받아 문서 전체에 일관된 출력이 보장됩니다. + +## 단계 3: HTML 콘텐츠 로드 + +Aspose는 문자열, 파일 또는 URL에서 HTML을 제공할 수 있게 해줍니다. 이 튜토리얼에서는 간단히 메모리 내 문자열을 사용합니다. + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**왜 문자열인가요?** +실시간으로 보고서(예: 인보이스, 영수증)를 생성할 때는 문자열 보간이나 템플릿 엔진을 사용해 HTML을 조합하는 경우가 많습니다. 문자열을 직접 전달하면 임시 파일을 피하고 파이프라인 속도가 빨라집니다. + +## 단계 4: 구성된 옵션으로 PDF 저장 + +이제 PDF를 디스크에 저장합니다. `Save` 메서드는 대상 경로와 앞서 준비한 렌더링 옵션을 인수로 받습니다. + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**보이는 내용:** +任意의 PDF 뷰어로 `hinted.pdf`를 열어보세요. “Hinted text on Linux” 문단이 선명하게 표시되고 Arial 폰트가 깔끔하게 렌더링됩니다. Linux에서는 `UseHinting` 없이 생성된 PDF와 차이를 확인할 수 있습니다. + +> **예상 출력:** 14‑pt Arial로 된 문단이 포함된 단일 페이지 PDF이며, 흐릿한 가장자리가 없습니다. + +### 전체 작업 예제 + +아래는 콘솔 앱 프로젝트에 복사해 넣을 수 있는 전체 프로그램입니다. 모든 using 문, 오류 처리 및 명확성을 위한 주석이 포함되어 있습니다. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +프로그램을 실행(`dotnet run`)하면 배포, 보관 또는 추가 처리에 사용할 수 있는 PDF가 생성됩니다. + + + +## 자주 묻는 질문 (FAQ) + +### **aspose html to pdf**가 .NET Core에서 작동하나요? + +네, 가능합니다. 동일한 API가 .NET Framework, .NET Core, 그리고 .NET 5/6 전반에 걸쳐 제공됩니다. NuGet 패키지 버전이 대상 프레임워크와 일치하는지 확인하세요. + +### 사용자 정의 페이지 크기로 **render HTML to PDF**하려면 어떻게 해야 하나요? + +`PdfPageSetup` 객체를 생성하고 `Width`, `Height` 또는 `Size`를 설정한 뒤 `pdfRenderOptions.PageSetup`에 할당합니다. 예시: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### 웹 API에서 **convert HTML to PDF**가 필요하면 어떻게 하나요? + +PDF를 `FileResult`로 반환합니다: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### Linux Docker 컨테이너에서 **html to pdf c#**에 사용할 수 있나요? + +네. 힌팅 플래그는 헤드리스 Linux 환경을 위해 특별히 설계되었습니다. Alpine을 사용 중이라면 `libgdiplus` 패키지를 설치하면 바로 변환이 작동합니다. + +## 고급 조정 (기본을 넘어) + +- **Embedding Fonts:** HTML이 사용자 정의 폰트를 참조하는 경우, 렌더링 전에 `htmlDoc.Fonts.Add("MyFont", fontBytes);`를 호출합니다. +- **Image Handling:** 고해상도 그래픽을 위해 `pdfRenderOptions.ImageResolution = 300;`을 활성화합니다. +- **Security:** `PdfSaveOptions`를 사용해 출력에 비밀번호를 설정합니다 (`PdfSaveOptions.Password = "secret";`). + +이 옵션들을 사용하면 간단한 **convert html to pdf** 스니펫을 프로덕션 수준 서비스로 전환할 수 있습니다. + +## 요약 + +우리는 Aspose HTML을 사용해 HTML을 렌더링하고, Linux에서 더 선명한 출력을 위해 텍스트 힌팅을 활성화한 뒤, 단일 메서드 호출로 결과를 저장함으로써 **create PDF document C#**을 구현하는 방법을 시연했습니다. 다룬 단계는 다음과 같습니다: + +1. `TextOptions` (hinting) 설정. +2. `PdfRenderingOptions`에 연결. +3. 문자열에서 HTML 로드. +4. PDF 저장. + +이제 **aspose html to pdf**, **render html to pdf**, **convert html to pdf**, 또는 **html to pdf c#**가 필요한 모든 시나리오에 대한 탄탄한 기반을 갖추었습니다. 페이지 레이아웃, 임베드된 폰트, 혹은 PDF를 클라이언트에 직접 스트리밍하는 등 자유롭게 실험해 보세요. + +--- + +**다음 단계:** +- 표와 이미지가 포함된 다중 페이지 HTML 보고서를 변환해 보세요. +- Aspose의 `PdfDocument` API를 사용해 후처리(북마크 추가, 워터마크 삽입)를 탐색하세요. +- 이 변환을 백그라운드 작업 큐(예: Hangfire)와 결합해 필요 시 PDF를 생성하세요. + +코딩을 즐기세요, 그리고 여러분의 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/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/korean/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..79ef7cc30 --- /dev/null +++ b/html/korean/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,232 @@ +--- +category: general +date: 2026-03-28 +description: URL에서 직접 HTML을 PDF로 렌더링하고 결과를 ZIP 파일로 압축합니다. URL을 PDF로 변환하고, 웹사이트에서 PDF를 + 생성하며, C#에서 PDF 파일을 ZIP으로 압축하는 방법을 배워보세요. +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: ko +og_description: URL에서 직접 HTML을 PDF로 렌더링한 다음 PDF를 ZIP 파일로 압축합니다. 이 단계별 튜토리얼에서는 URL을 + PDF로 변환하고, 웹사이트에서 PDF를 생성하며, C#에서 PDF 파일을 ZIP으로 압축하는 방법을 보여줍니다. +og_title: HTML을 PDF로 변환하고 압축하기 – 완전 C# 가이드 +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: HTML을 PDF로 변환하고 압축하기 – 완전한 C# 가이드 +url: /ko/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML을 PDF로 렌더링하고 압축하기 – 완전한 C# 가이드 + +실시간으로 **HTML을 PDF로 렌더링**하고 그 파일을 단일 아카이브로 클라이언트에게 전송해야 했던 적이 있나요? 라이브 웹 페이지를 가져와 PDF로 변환하고 결과를 ZIP에 저장해 쉽게 다운로드할 수 있는 보고 서비스를 구축하고 있을지도 모릅니다. 이 튜토리얼에서는 바로 그 과정을 단계별로 살펴보겠습니다—원격 웹 페이지를 PDF로 렌더링하고, **ZIP으로 PDF를 압축**하여 디스크에 저장하지 않는 방법을 다룹니다. + +우리는 또한 **URL을 PDF로 변환**, **웹사이트에서 PDF 생성**, 그리고 최종적으로 **PDF 파일을 ZIP**하는 방법을 다룰 것입니다. 불필요한 내용 없이 바로 오늘 .NET 6+ 프로젝트에 넣어 사용할 수 있는 실용적인 솔루션을 제공합니다. + +## 필요 사항 + +- **.NET 6** 또는 그 이후 버전(.NET Framework 4.6+에서도 작동합니다). +- **Aspose.HTML for .NET** – HTML‑to‑PDF 렌더링을 담당하는 라이브러리. +- 약간의 C# 경험—`Console.WriteLine`을 쓸 수만 하면 충분합니다. +- 원하는 IDE(Visual Studio, Rider, VS Code 등). + +> **Pro tip:** Aspose.HTML은 모든 렌더링 기능을 포함한 무료 체험판을 제공합니다. 시작하기 전에 [Aspose website](https://products.aspose.com/html/net/)에서 받아주세요. + +필수 사항을 모두 확인했으니, 이제 시작해봅시다. + +## 1단계 – 원격 HTML 문서 로드 (URL을 PDF로 변환) + +먼저 해야 할 일은 Aspose.HTML에 소스 위치를 알려주는 것입니다. 여기서는 공개 URL을 사용하지만, 원시 HTML 문자열을 직접 전달할 수도 있습니다. + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Why this matters:** URL에서 문서를 로드하면 렌더러가 연결된 모든 리소스(CSS, 이미지, 폰트)를 자동으로 가져와 실시간 사이트와 동일한 PDF를 생성합니다. 이 단계를 생략하고 단순 문자열을 전달하면 이러한 자산이 사라져, *웹사이트에서 PDF 생성* 시 원하는 결과를 얻기 어렵습니다. + +## 2단계 – PDF 렌더링 옵션 구성 (품질이 중요) + +Aspose.HTML을 사용하면 PDF의 모양을 세밀하게 조정할 수 있습니다. 안티앨리어싱과 폰트 힌팅은 화면 및 인쇄 시 출력이 선명하게 보이도록 하는 두 가지 설정입니다. + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Why we set these:** 안티앨리어싱이 없으면 선 그림 및 벡터 그래픽이 특히 고 DPI 디스플레이에서 들쭉날쭉하게 보일 수 있습니다. 반면 힌팅은 PDF 엔진에 글리프를 픽셀 경계에 맞추도록 알려주며, 작은 조정이지만 시각적인 차이를 크게 만들 수 있습니다. + +## 3단계 – 메모리 내 ZIP 아카이브 준비 (PDF 파일 압축) + +PDF를 먼저 디스크에 쓰고 그 후에 압축하는 두 단계 I/O 작업 대신, ZIP 엔트리로 바로 스트리밍합니다. 이렇게 하면 모든 작업이 메모리 내에서 이루어져 웹 API나 백그라운드 작업에 이상적입니다. + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Edge case note:** 수백 MB에 달하는 대용량 PDF를 다루는 경우, 전체를 메모리에 보관하는 대신 ZIP을 바로 응답 스트림으로 파이프하는 것을 고려하세요. 일반적인 20 MB 이하 보고서라면 이 방법이 안전하고 빠릅니다. + +## 4단계 – PDF를 ZIP 엔트리로 직접 스트리밍 + +핵심은 다음과 같습니다: `output.pdf`라는 ZIP 엔트리를 생성하고 해당 스트림을 Aspose.HTML에 전달합니다. 렌더러는 PDF 바이트를 바로 ZIP 엔트리에 기록하므로 임시 파일이 필요 없습니다. + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Why we do it this way:** PDF 라이터에 ZIP 엔트리를 가리키는 스트림을 제공함으로써 “디스크에 쓰기 → 압축 → 삭제” 과정을 피합니다. 이는 I/O 오버헤드를 줄일 뿐만 아니라 서버에 남는 불필요한 파일 위험도 없앱니다. + +## 5단계 – ZIP 마무리 및 저장 + +PDF가 작성된 후에는 중앙 디렉터리가 플러시되도록 ZIP 아카이브를 닫고, 전체를 디스크에 저장하거나 API에서 반환해야 합니다. + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Result you’ll see:** `result.zip`이라는 파일 안에 `output.pdf` 하나가 들어 있습니다. PDF를 열면 `https://example.com`의 스타일과 이미지가 모두 포함된 픽셀 단위 정확한 스냅샷을 확인할 수 있습니다. + + + +*이미지 대체 텍스트: HTML을 PDF로 렌더링 – ZIP 아카이브 안에 생성된 PDF의 스크린샷.* + +## 전체 작업 예제 + +모든 코드를 합치면, 아래와 같이 복사‑붙여넣기만 하면 되는 완전한 프로그램이 됩니다: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### 기대 결과 + +- **`result.zip`**이 `C:\Temp`에 생성됩니다. +- 아카이브 안에는 **`output.pdf`**가 들어 있습니다. +- PDF를 열면 `https://example.com`의 실시간 페이지가 충실히 렌더링된 것을 확인할 수 있습니다. + +프로그램을 실행했는데 ZIP이 비어 있다면, URL에 접근 가능한지와 Aspose.HTML이 외부 리소스를 다운로드할 권한이 있는지(방화벽, 프록시 설정 등) 확인하세요. + +## 자주 묻는 질문 및 엣지 케이스 + +| 질문 | 답변 | +|----------|--------| +| *페이지가 외부 폰트를 참조하면 어떻게 되나요?* | Aspose.HTML은 `@font-face`로 참조된 웹 폰트를 자동으로 다운로드합니다. 서버가 폰트 URL에 접근할 수 있는지 확인하세요. | +| *같은 ZIP에 여러 PDF를 추가할 수 있나요?* | 예—`zipArchive.CreateEntry("report2.pdf")`를 호출하고 다른 `HTMLDocument`를 해당 스트림에 렌더링하면 됩니다. | +| *맞춤 PDF 파일명을 어떻게 설정하나요?* | `CreateEntry`에 전달하는 문자열을 바꾸면 됩니다. 예: `CreateEntry("my‑invoice.pdf")`. | +| *멀티스레드 웹 앱에서 사용해도 안전한가요?* | 각 요청마다 자체 `MemoryStream`과 `ZipArchive`를 생성해야 합니다. 해당 객체들은 스레드 안전하지 않으므로 공유 인스턴스를 사용하면 손상이 발생합니다. | +| *대용량 PDF는 어떻게 처리하나요?* | 100 MB 이상의 PDF는 메모리에 버퍼링하는 대신 HTTP 응답(`Response.Body`)으로 직접 스트리밍하는 것을 고려하세요. | + +## 마무리 + +이제 **HTML을 PDF로 렌더링**, **URL을 PDF로 변환**, **웹사이트에서 PDF 생성**, 그리고 최종적으로 **PDF 파일을 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..d4cce2c71 100644 --- a/html/korean/net/working-with-html-documents/_index.md +++ b/html/korean/net/working-with-html-documents/_index.md @@ -41,6 +41,10 @@ HTML 문서는 웹의 중추이며, 효과적으로 만들고 조작할 수 있 사용자 정의 리소스 핸들러를 사용해 C#에서 HTML을 저장하는 방법을 단계별로 안내합니다. ### [CSS와 C#로 제목을 굵게 만드는 방법 – 완전 단계별 가이드](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) +### [C#에서 문자열로 HTML 만들기 – 메모리 스트림을 활용한 완전 가이드](./create-html-from-string-in-c-full-guide-with-memory-stream/) + +문자열을 메모리 스트림으로 변환하여 HTML을 생성하고 저장하는 방법을 단계별로 안내합니다. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/korean/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/korean/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..95bcc111f --- /dev/null +++ b/html/korean/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,276 @@ +--- +category: general +date: 2026-03-28 +description: Aspose.Html를 사용하여 문자열에서 HTML을 생성하고 스트림에 캡처합니다. HTML을 문자열로 변환하고, 사용자 지정 + 리소스 핸들러를 사용하며, HTML을 스트림에 쓰는 방법을 배웁니다. +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: ko +og_description: Aspose.Html를 사용해 문자열에서 HTML을 생성하고 메모리에서 캡처한 뒤 HTML을 문자열로 변환합니다. 사용자 + 지정 리소스 핸들러와 HTML을 스트림에 쓰는 단계별 가이드. +og_title: C#에서 문자열로 HTML 만들기 – 완전한 메모리 스트림 튜토리얼 +tags: +- Aspose.Html +- C# +- MemoryStream +title: C#에서 문자열을 사용해 HTML 생성 – 메모리 스트림을 이용한 전체 가이드 +url: /ko/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 문자열에서 HTML 생성 (C#) – 메모리 스트림을 활용한 전체 가이드 + +파일 시스템에 손대지 않고 메모리 안에서 **문자열로부터 HTML을 생성**해야 할 때가 있나요? 당신만 그런 것이 아닙니다. 많은 개발자들이 동적으로 마크업을 생성해야 할 때—예를 들어 이메일 템플릿이나 PDF 변환용—임시 파일이 디스크에 남는 것을 원하지 않습니다. + +좋은 소식은? Aspose.Html을 사용하면 문자열에서 바로 `HTMLDocument`를 만들고, **커스텀 리소스 핸들러**에 전달한 뒤, **HTML을 스트림에 쓰기**하여 나중에 사용할 수 있습니다. 이번 튜토리얼에서는 초기 문자열부터 최종 `string` 결과까지 모든 단계를 살펴보고, 각 단계가 왜 중요한지 설명합니다. + +이 가이드를 마치면 다음을 할 수 있게 됩니다: + +* Aspose.Html을 사용해 문자열에서 HTML 생성 +* 디스크에 쓰지 않고 HTML을 문자열로 변환 +* 커스텀 리소스 핸들러로 HTML 캡처 +* `MemoryStream`에 HTML을 쓰고 다시 읽기 +* 흔히 발생하는 함정과 베스트 프랙티스 팁 적용 + +Aspose.Html 외에 추가 외부 의존성은 필요하지 않습니다—.NET 프로젝트와 몇 개의 `using` 문만 있으면 됩니다. + +--- + +## 사전 요구 사항 + +* .NET 6.0 이상 (코드는 .NET Framework에서도 동작합니다) +* Aspose.Html for .NET NuGet 패키지 (`Install-Package Aspose.Html`) +* 기본적인 C# 지식—`Console.WriteLine` 정도는 작성해 본 적 있으면 충분합니다 + +--- + +## 1단계: 문자열에서 HTML 생성 – 시작점 + +먼저 원시 HTML 문자열이 필요합니다. 보통 `.html` 파일에 붙여넣는 골격이라고 생각하면 됩니다. + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "`, wstrzykniemy zbudowany styl i ustawimy jego zawartość tekstową. + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +Jeśli sprawdzisz `paragraph.OuterHtml`, zobaczysz coś w rodzaju: + +```html +
Bold & Italic text
+``` + +Ten wiersz demonstruje **add bold italic text** (dodawanie pogrubionego kursywnego tekstu) bez konieczności ręcznego pisania ciągów CSS. + +## Krok 5: Dodanie akapitu do elementu body + +Na koniec **append element to body** (dodajemy element do body). To ostatni element układanki, który faktycznie renderuje akapit na stronie. + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +Możesz także wywołać `htmlDoc.Body.InsertBefore` lub `ReplaceChild`, jeśli potrzebujesz bardziej złożonego pozycjonowania. W większości przypadków prosty `AppendChild` wystarczy. + +## Krok 6: Wyjście ciągu HTML (lub zapis do pliku) + +Teraz, gdy zbudowaliśmy DOM, wyodrębnijmy ostateczny HTML. Aspose.HTML umożliwia serializację dokumentu jednym wywołaniem. + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +Po otwarciu `result.html` w przeglądarce zobaczysz pojedynczy akapit, który jest zarówno pogrubiony, jak i kursywny, dokładnie tak, jak zamierzaliśmy. + +### Oczekiwany wynik + +```html + + + + +Bold & Italic text
+ + +``` + +Jeśli generujesz HTML dla e‑maila, po prostu wstaw `finalHtml` do treści wiadomości, a styl przetrwa w większości nowoczesnych klientów. + +## Typowe warianty i przypadki brzegowe + +- **Multiple Styles:** Chcesz dodać także kolor tła? Rozszerz `CSSStyleDeclaration`: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **Different Elements:** Zamiast `` możesz utworzyć `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +Uruchom ten program, otwórz `result.html` i zobaczysz stylowany akapit wyświetlony dokładnie tak, jak opisano. Bez ręcznego łączenia łańcuchów, bez kruchego literału HTML — po prostu czysta, typowo‑bezpieczna manipulacja DOM. + +## Podsumowanie + +Odpowiedzieliśmy na pytanie **how to create HTML** (jak tworzyć HTML) od podstaw przy użyciu Aspose.HTML, pokazaliśmy **append element to body**, przedstawiliśmy jasny sposób **create paragraph element**, wyjaśniliśmy **add bold italic text**, oraz omówiliśmy niuanse **add css style programmatically**. + +Jeśli czujesz się komfortowo z tym wzorcem, możesz go rozbudować, aby generować pełne strony: tabele, obrazy, nawet interaktywne skrypty. Te same zasady obowiązują — definiuj style, twórz elementy, ustaw atrybuty i dodawaj je tam, gdzie powinny. + +### Co dalej? + +- **Dynamic Content:** Pobierz dane z bazy i w pętli generuj wiersze w tabeli. +- **Styling Libraries:** Połącz to podejście z zewnętrznymi plikami CSS w większych projektach. +- **Export Options:** Przekaż `HTMLDocument` bezpośrednio do Aspose.PDF lub Aspose.Words, aby generować pliki PDF lub DOCX bez pośredniego ciągu. + +Śmiało eksperymentuj, łam rzeczy, a potem je naprawiaj — to najszybszy sposób na przyswojenie programowania DOM w C#. Masz pytania lub inny przypadek użycia? 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/rendering-html-documents/_index.md b/html/polish/net/rendering-html-documents/_index.md index 41f09366a..1360762e5 100644 --- a/html/polish/net/rendering-html-documents/_index.md +++ b/html/polish/net/rendering-html-documents/_index.md @@ -45,6 +45,7 @@ Naucz się pracować z Aspose.HTML dla .NET: Manipuluj HTML, konwertuj do różn ### [Jak renderować HTML jako PNG – Kompletny przewodnik C#](./how-to-render-html-as-png-complete-c-guide/) Pełny przewodnik C# pokazujący, jak przy użyciu Aspose.HTML renderować HTML jako PNG, krok po kroku. + ### [Jak używać Aspose do renderowania HTML do PNG – przewodnik krok po kroku](./how-to-use-aspose-to-render-html-to-png-step-by-step-guide/) Naucz się, jak przy użyciu Aspose renderować HTML do formatu PNG w kilku prostych krokach. @@ -58,7 +59,7 @@ Dowiedz się, jak tworzyć i renderować dokumenty HTML za pomocą Aspose.HTML d Dowiedz się, jak skutecznie kontrolować limity czasu renderowania w Aspose.HTML dla .NET. Poznaj opcje renderowania i zapewnij płynne renderowanie dokumentów HTML. ### [Renderuj MHTML jako XPS w .NET za pomocą Aspose.HTML](./render-mhtml-as-xps/) - Naucz się renderować MHTML jako XPS w .NET z Aspose.HTML. Udoskonal swoje umiejętności manipulacji HTML i przyspiesz swoje projekty rozwoju sieci! +Naucz się renderować MHTML jako XPS w .NET z Aspose.HTML. Udoskonal swoje umiejętności manipulacji HTML i przyspiesz swoje projekty rozwoju sieci! Naucz się renderować MHTML jako XPS w .NET z Aspose.HTML. Udoskonal swoje umiejętności manipulacji HTML i przyspiesz swoje projekty rozwoju sieci! ### [Renderowanie wielu dokumentów w .NET za pomocą Aspose.HTML](./render-multiple-documents/) @@ -66,9 +67,16 @@ Naucz się renderować wiele dokumentów HTML za pomocą Aspose.HTML dla .NET. Z ### [Renderuj SVG Doc jako PNG w .NET za pomocą Aspose.HTML](./render-svg-doc-as-png/) Odblokuj moc Aspose.HTML dla .NET! Dowiedz się, jak bez wysiłku renderować SVG Doc jako PNG. Zanurz się w przykładach krok po kroku i FAQ. Zacznij teraz! + ### [Utwórz PNG z HTML – Pełny przewodnik renderowania w C#](./create-png-from-html-full-c-rendering-guide/) Naucz się, jak przy pomocy Aspose.HTML w C# konwertować HTML do plików PNG w pełnym, krok po kroku przewodniku. +### [Utwórz dokument PDF w C# – Renderowanie HTML do PDF przy użyciu Aspose](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +Dowiedz się, jak przy pomocy Aspose.HTML w C# konwertować HTML do pliku PDF krok po kroku. + +### [Renderuj HTML do PDF i spakuj go – Kompletny przewodnik C#](./render-html-to-pdf-and-zip-it-complete-c-guide/) +Pełny przewodnik C# pokazujący, jak przy użyciu Aspose.HTML konwertować HTML do PDF i spakować wynik do pliku ZIP. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/polish/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/polish/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..6001cb6e1 --- /dev/null +++ b/html/polish/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,232 @@ +--- +category: general +date: 2026-03-28 +description: Utwórz dokument PDF w C# przy użyciu Aspose HTML to PDF. Dowiedz się, + jak renderować HTML do PDF, konwertować HTML na PDF oraz włączać podpowiedzi dla + systemu Linux. +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: pl +og_description: Twórz dokument PDF w C# natychmiast. Ten przewodnik pokazuje, jak + renderować HTML do PDF, konwertować HTML na PDF oraz używać Aspose HTML do PDF z + podpowiedziami tekstowymi. +og_title: Utwórz dokument PDF w C# – renderowanie HTML do PDF przy użyciu Aspose +tags: +- Aspose +- C# +- PDF generation +title: Tworzenie dokumentu PDF w C# – Renderowanie HTML do PDF przy użyciu Aspose +url: /pl/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Utwórz dokument PDF C# – Renderowanie HTML do PDF przy użyciu Aspose + +Czy kiedykolwiek potrzebowałeś **create PDF document C#** z dynamicznego łańcucha HTML i zastanawiałeś się, dlaczego tekst wygląda rozmycie na Linuksie? Nie jesteś jedyną osobą drapiącą się po głowie. Dobrą wiadomością jest to, że Aspose HTML sprawia, że **render HTML to PDF** jest dziecinnie proste, a przy kilku dodatkowych opcjach możesz uzyskać ostrzejsze glify nawet na serwerach bez interfejsu graficznego. + +W tym samouczku przeprowadzimy Cię przez kompletny, gotowy do uruchomienia przykład, który **converts HTML to PDF** przy użyciu biblioteki Aspose HTML for .NET. Omówimy również, dlaczego warto włączyć hinting, jak skonfigurować pipeline renderowania oraz co zrobić, jeśli później będziesz musiał dostosować rozmiar strony lub DPI. Nie potrzebujesz zewnętrznych dokumentacji — po prostu skopiuj, wklej i uruchom. + +## Czego będziesz potrzebować + +- **.NET 6+** (lub .NET Framework 4.6.2+). Aspose HTML obsługuje oba, ale poniższy przykład celuje w .NET 6 dla prostoty. +- **Aspose.HTML for .NET** pakiet NuGet (`Aspose.Html`). Zainstaluj go za pomocą Package Manager Console: + + ```powershell + Install-Package Aspose.Html + ``` + +- Środowisko **Linux lub Windows**. Flaga hintingu jest szczególnie przydatna na Linuksie, ale kod działa wszędzie. +- IDE lub edytor według własnego wyboru (Visual Studio, VS Code, Rider…). + +To wszystko — bez dodatkowych czcionek, bez sterowników drukarki PDF, tylko pojedynczy plik DLL. + +## Krok 1: Skonfiguruj opcje renderowania tekstu (Główne słowo kluczowe w akcji) + +Pierwszą rzeczą, którą robimy, jest poinformowanie Aspose, jak obsługiwać renderowanie glifów. Na Linuksie domyślny rasterizer może generować rozmyte znaki, więc włączamy hinting. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**Dlaczego?** +`UseHinting` wymusza na rendererze wyrównanie wektorowych konturów do siatki pikseli, co eliminuje rozmyte krawędzie, które często widzisz w PDF‑ach generowanych w kontenerach Linuksa bez interfejsu graficznego. Właściwość `FontSize` nie jest obowiązkowa, ale zapewnia przewidywalną bazę dla każdego HTML, który nie określa własnego rozmiaru. + +> **Porada:** Jeśli celujesz wyłącznie w Windows, możesz pominąć hinting — Windows już automatycznie stosuje renderowanie sub‑pikselowe. + +## Krok 2: Dołącz opcje tekstowe do ustawień renderowania PDF + +Następnie tworzymy instancję `PdfRenderingOptions` i podłączamy `TextOptions`, które właśnie skonfigurowaliśmy. Ten obiekt zarządza całym procesem konwersji. + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**Dlaczego je powiązać?** +Obiekt `PdfRenderingOptions` jest mostem między silnikiem HTML a zapisem PDF. Przypisując tutaj `TextOptions`, każda renderowana strona odziedziczy konfigurację hintingu, zapewniając spójny wynik w całym dokumencie. + +## Krok 3: Załaduj zawartość HTML + +Aspose pozwala wprowadzić HTML ze stringa, pliku lub nawet URL. W tym samouczku zachowamy prostotę i użyjemy łańcucha w pamięci. + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**Dlaczego string?** +Kiedy generujesz raporty w locie (np. faktury, paragony), często składasz HTML przy użyciu interpolacji stringów lub silnika szablonów. Przekazanie stringa bezpośrednio unika plików tymczasowych i przyspiesza pipeline. + +## Krok 4: Zapisz PDF z skonfigurowanymi opcjami + +Teraz w końcu zapisujemy PDF na dysku. Metoda `Save` przyjmuje ścieżkę docelową oraz opcje renderowania, które przygotowaliśmy wcześniej. + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**Co zobaczysz:** +Otwórz `hinted.pdf` w dowolnym przeglądarce PDF. Akapit „Hinted text on Linux” powinien wyglądać wyraźnie, z czystym renderowaniem czcionki Arial. Na Linuksie zauważysz różnicę w porównaniu do PDF wygenerowanego bez `UseHinting`. + +> **Oczekiwany wynik:** jednosktronicowy PDF zawierający akapit w 14‑pt Arial, bez rozmytych krawędzi. + +### Pełny działający przykład + +Poniżej znajduje się kompletny program, który możesz skopiować do projektu aplikacji konsolowej. Zawiera wszystkie dyrektywy using, obsługę błędów i komentarze dla przejrzystości. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +Uruchom program (`dotnet run`), a otrzymasz PDF gotowy do dystrybucji, archiwizacji lub dalszego przetwarzania. + + + +## Najczęściej zadawane pytania (FAQ) + +### Czy to działa z **aspose html to pdf** na .NET Core? + +Zdecydowanie. To samo API jest dostępne w .NET Framework, .NET Core oraz .NET 5/6. Upewnij się tylko, że wersja pakietu NuGet odpowiada Twojemu docelowemu frameworkowi. + +### Jak mogę **render HTML to PDF** z niestandardowym rozmiarem strony? + +Utwórz obiekt `PdfPageSetup`, ustaw `Width`, `Height` lub `Size`, i przypisz go do `pdfRenderOptions.PageSetup`. Przykład: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### Co zrobić, jeśli potrzebuję **convert HTML to PDF** w API webowym? + +Zwróć PDF jako `FileResult`: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### Czy mogę użyć tego do **html to pdf c#** w kontenerze Docker na Linuksie? + +Tak. Flaga hintingu jest specjalnie zaprojektowana dla środowisk Linuksa bez interfejsu graficznego. Po prostu zainstaluj pakiet `libgdiplus`, jeśli używasz Alpine, a konwersja będzie działać od razu. + +## Zaawansowane dostosowania (poza podstawami) + +- **Embedding Fonts:** Jeśli Twój HTML odwołuje się do niestandardowych czcionek, wywołaj `htmlDoc.Fonts.Add("MyFont", fontBytes);` przed renderowaniem. +- **Image Handling:** Włącz `pdfRenderOptions.ImageResolution = 300;` dla grafiki wysokiej rozdzielczości (high‑DPI). +- **Security:** Użyj `PdfSaveOptions` aby zabezpieczyć wyjście hasłem (`PdfSaveOptions.Password = "secret";`). + +Te opcje pozwalają przekształcić prosty fragment **convert html to pdf** w usługę gotową do produkcji. + +## Podsumowanie + +Właśnie pokazaliśmy, jak **create PDF document C#** poprzez renderowanie HTML przy użyciu Aspose HTML, włączając hinting tekstu dla ostrzejszego wyniku na Linuksie i zapisując rezultat jednym wywołaniem metody. Omówione kroki: + +1. Skonfiguruj `TextOptions` (hinting). +2. Dołącz je do `PdfRenderingOptions`. +3. Załaduj HTML ze stringa. +4. Zapisz PDF. + +Teraz masz solidną podstawę dla każdego scenariusza, który wymaga **aspose html to pdf**, **render html to pdf**, **convert html to pdf**, lub **html to pdf c#**. Śmiało eksperymentuj z układami stron, wbudowanymi czcionkami lub strumieniowaniem PDF bezpośrednio do klienta. + +--- + +**Kolejne kroki:** +- Spróbuj konwertować wielostronicowy raport HTML z tabelami i obrazami. +- Zbadaj API `PdfDocument` Aspose’a do post‑processingu (dodawanie zakładek, znaków wodnych). +- Połącz tę konwersję z kolejką zadań w tle (np. Hangfire), aby generować PDF‑y na żądanie. + +Miłego kodowania i niech Twoje PDF‑y zawsze będą ostre! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/polish/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/polish/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..6f6d7290c --- /dev/null +++ b/html/polish/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-28 +description: Renderuj HTML do PDF bezpośrednio z adresu URL i skompresuj wynik do + pliku ZIP. Dowiedz się, jak konwertować URL na PDF, generować PDF ze strony internetowej + i spakować plik PDF do ZIP w C#. +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: pl +og_description: Renderuj HTML do PDF bezpośrednio z adresu URL, a następnie skompresuj + plik PDF do archiwum ZIP. Ten krok‑po‑kroku poradnik pokazuje, jak przekształcić + URL na PDF, wygenerować PDF ze strony internetowej i spakować plik PDF do ZIP w + C#. +og_title: Renderuj HTML do PDF i spakuj go – Kompletny przewodnik C# +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: Renderuj HTML do PDF i spakuj go – Kompletny przewodnik C# +url: /pl/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Renderowanie HTML do PDF i spakowanie do ZIP – Kompletny przewodnik C# + +Kiedykolwiek potrzebowałeś **renderować HTML do PDF** w locie, a następnie wysłać plik do klienta jako pojedynczy archiwum? Być może tworzysz usługę raportowania, która pobiera bieżącą stronę internetową, zamienia ją na PDF i przechowuje wynik w zipie dla łatwego pobrania. W tym samouczku przejdziemy krok po kroku przez dokładnie to – renderowanie zdalnej strony internetowej do PDF, a potem **kompresję PDF w zipie** bez zapisywania czegokolwiek na dysku. + +Omówimy także, jak **przekształcić URL do PDF**, **generować PDF ze strony internetowej**, i w końcu **spakować plik PDF** tak, abyś mógł go wysłać gdziekolwiek potrzebujesz. Bez zbędnych wstępów, tylko działające rozwiązanie, które możesz włożyć do projektu .NET 6+ już dziś. + +## Co będzie potrzebne + +- **.NET 6** lub nowszy (kod działa także z .NET Framework 4.6+). +- **Aspose.HTML for .NET** – biblioteka, która wykonuje ciężką pracę przy renderowaniu HTML‑do‑PDF. +- Trochę doświadczenia w C# – jeśli potrafisz napisać `Console.WriteLine`, jesteś gotowy. +- Ulubione IDE (Visual Studio, Rider, VS Code…). + +> **Pro tip:** Aspose.HTML oferuje darmową wersję próbną, która zawiera wszystkie funkcje renderowania. Pobierz ją ze [strony Aspose](https://products.aspose.com/html/net/) przed rozpoczęciem. + +Teraz, gdy wymagania wstępne są załatwione, zanurzmy się w temat. + +## Krok 1 – Załaduj zdalny dokument HTML (Konwersja URL do PDF) + +Pierwszą rzeczą, którą musimy zrobić, jest poinformowanie Aspose.HTML, gdzie znajduje się źródło. W naszym przypadku jest to publiczny URL, ale równie łatwo można podać ciąg znaków zawierający surowy HTML. + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Dlaczego to ważne:** Ładowanie dokumentu z URL powoduje, że renderer automatycznie pobiera wszystkie powiązane zasoby (CSS, obrazy, czcionki), dając Ci wierną kopię PDF żywej witryny. Pominięcie tego kroku i podanie zwykłego ciągu znaków spowoduje usunięcie tych zasobów, co rzadko jest pożądane przy *generowaniu PDF ze strony internetowej*. + +## Krok 2 – Skonfiguruj opcje renderowania PDF (Jakość ma znaczenie) + +Aspose.HTML pozwala dostosować wygląd PDF. Antyaliasing i hinting czcionek to dwa ustawienia, które sprawiają, że wynik wygląda ostro zarówno na ekranie, jak i w druku. + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Dlaczego to ustawiamy:** Bez antyaliasingu grafika wektorowa i linie mogą wyglądać na ząbkowane, zwłaszcza na wyświetlaczach o wysokiej rozdzielczości. Hinting natomiast instruuje silnik PDF, jak wyrównać glify do granic pikseli – drobna zmiana, która często robi dużą różnicę wizualną. + +## Krok 3 – Przygotuj archiwum ZIP w pamięci (Spakuj plik PDF) + +Zamiast najpierw zapisywać PDF na dysku, a potem go zipować – dwustopniowego koszmaru I/O – będziemy strumieniować bezpośrednio do wpisu w zipie. Dzięki temu wszystko pozostaje w pamięci, co jest idealne dla API webowych lub zadań w tle. + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Uwaga o skrajnych przypadkach:** Jeśli masz do czynienia z ogromnymi PDF‑ami (setki MB), rozważ przesyłanie zipa bezpośrednio do strumienia odpowiedzi zamiast trzymać go w całości w pamięci. Dla typowych raportów poniżej 20 MB takie podejście jest bezpieczne i szybkie. + +## Krok 4 – Strumieniuj PDF bezpośrednio do wpisu ZIP + +Oto sprytny fragment: tworzymy wpis zip o nazwie `output.pdf` i przekazujemy jego strumień z powrotem do Aspose.HTML. Renderer zapisuje bajty PDF bezpośrednio w tym wpisie – bez potrzeby pliku tymczasowego. + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Dlaczego tak robimy:** Dostarczając pisarzowi PDF strumień wskazujący na wpis zip, unikamy cyklu „zapisz‑na‑dysk → zip → usuń”. To nie tylko redukuje obciążenie I/O, ale także eliminuje ryzyko pozostawienia niechcianych plików na serwerze. + +## Krok 5 – Zakończ ZIP i zapisz go + +Po zapisaniu PDF musimy zamknąć archiwum zip, aby centralny katalog został wyłuskany, a następnie zapisać całość na dysku (lub zwrócić z API). + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Rezultat, który zobaczysz:** Plik o nazwie `result.zip` zawierający pojedynczy wpis `output.pdf`. Otwierając PDF, zobaczysz idealną migawkę `https://example.com`, wraz ze stylami i obrazami. + + + +*Tekst alternatywny obrazu: renderowanie html do pdf – zrzut ekranu wygenerowanego PDF‑a wewnątrz archiwum ZIP.* + +## Pełny działający przykład + +Łącząc wszystko razem, oto kompletny, gotowy do skopiowania program: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### Czego się spodziewać + +- **`result.zip`** pojawia się w `C:\Temp`. +- W archiwum znajdziesz **`output.pdf`**. +- Otwierając PDF, zobaczysz wiernie odtworzoną żywą stronę z `https://example.com`. + +Jeśli uruchomisz program, a zip będzie pusty, sprawdź, czy URL jest dostępny oraz czy Aspose.HTML ma uprawnienia do pobierania zasobów zewnętrznych (zapory, ustawienia proxy itp.). + +## Częste pytania i skrajne przypadki + +| Pytanie | Odpowiedź | +|----------|-----------| +| *Co jeśli strona odwołuje się do zewnętrznych czcionek?* | Aspose.HTML automatycznie pobiera czcionki web‑fonty zadeklarowane w `@font-face`. Upewnij się, że serwer może dotrzeć do adresów URL czcionek. | +| *Czy mogę dodać wiele PDF‑ów do tego samego ZIP?* | Tak – po prostu wywołaj `zipArchive.CreateEntry("report2.pdf")` i wyrenderuj kolejny `HTMLDocument` do tego strumienia. | +| *Jak ustawić własną nazwę pliku PDF?* | Zmień łańcuch przekazywany do `CreateEntry`, np. `CreateEntry("my‑invoice.pdf")`. | +| *Czy to jest bezpieczne w wielowątkowej aplikacji webowej?* | Każde żądanie powinno tworzyć własny `MemoryStream` i `ZipArchive`. Obiekty nie są wątkowo‑bezpieczne, więc współdzielenie ich spowoduje uszkodzenie danych. | +| *Co z dużymi PDF‑ami?* | Dla PDF‑ów > 100 MB rozważ strumieniowanie bezpośrednio do odpowiedzi HTTP (`Response.Body`) zamiast buforowania w pamięci. | + +## Podsumowanie + +Pokazaliśmy, jak **renderować HTML do PDF**, **przekształcić URL do PDF**, **generować PDF ze strony internetowej**, i w końcu **spakować plik PDF** – wszystko w czystym, pamięciowym przepływie pracy. + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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..b6d9b0f55 100644 --- a/html/polish/net/working-with-html-documents/_index.md +++ b/html/polish/net/working-with-html-documents/_index.md @@ -43,6 +43,8 @@ Poznaj metodę zapisu HTML w C# z własnym obsługiwaczem zasobów, umożliwiaj Dowiedz się, jak użyć CSS i C# do pogrubienia nagłówka w HTML, krok po kroku, z praktycznymi przykładami. +### [Tworzenie HTML z ciągu znaków w C# – Kompletny przewodnik z użyciem strumienia pamięci](./create-html-from-string-in-c-full-guide-with-memory-stream/) + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/polish/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/polish/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..9a670a16e --- /dev/null +++ b/html/polish/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,278 @@ +--- +category: general +date: 2026-03-28 +description: Utwórz HTML z ciągu znaków przy użyciu Aspose.Html i przechwyć go do + strumienia. Dowiedz się, jak konwertować HTML na ciąg znaków, obsługiwać własny + handler zasobów oraz zapisywać HTML do strumienia. +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: pl +og_description: Utwórz HTML z ciągu znaków przy użyciu Aspose.Html, przechwyć go w + pamięci i przekształć HTML na ciąg znaków. Przewodnik krok po kroku dotyczący niestandardowego + obsługującego zasoby i zapisywania HTML do strumienia. +og_title: Tworzenie HTML z ciągu znaków w C# – Kompletny samouczek Memory‑Stream +tags: +- Aspose.Html +- C# +- MemoryStream +title: Tworzenie HTML z ciągu znaków w C# – Pełny przewodnik z Memory Stream +url: /pl/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tworzenie HTML z łańcucha znaków w C# – Pełny przewodnik z Memory Stream + +Czy kiedykolwiek potrzebowałeś **create HTML from string** i zachować wszystko w pamięci, nie dotykając systemu plików? Nie jesteś jedyny. Wielu programistów napotyka ten problem, gdy chcą generować dynamiczny markup w locie — na przykład dla szablonu e‑mail lub konwersji do PDF — ale nie chcą, aby tymczasowy plik zaśmiecał dysk. + +Dobre wieści? Z Aspose.Html możesz utworzyć `HTMLDocument` bezpośrednio z łańcucha znaków, przekazać go do **custom resource handler**, i **write HTML to stream** do późniejszego użycia. W tym tutorialu przeprowadzimy Cię przez każdy krok, od początkowego łańcucha po ostateczny wynik `string`, i wyjaśnimy *dlaczego* każdy element ma znaczenie. + +Na koniec tego przewodnika będziesz w stanie: + +* Create HTML from string using Aspose.Html. +* Convert HTML to string without writing to disk. +* Capture HTML with a custom resource handler. +* Write HTML to a `MemoryStream` and read it back. +* Spot common pitfalls and apply best‑practice tips. + +Nie są wymagane żadne zewnętrzne zależności poza Aspose.Html — wystarczy projekt .NET i kilka dyrektyw using. + +--- + +## Wymagania wstępne + +* .NET 6.0 lub nowszy (kod działa również na .NET Framework). +* Pakiet NuGet Aspose.Html for .NET (`Install-Package Aspose.Html`). +* Podstawowa znajomość C# — jeśli kiedykolwiek użyłeś `Console.WriteLine`, jesteś gotowy. + +--- + +## Krok 1: Create HTML from string – punkt wyjścia + +Pierwszą rzeczą, której potrzebujemy, jest surowy łańcuch HTML. Traktuj go jak szkielet, który normalnie wklejasz do pliku `.html`. + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "`, injetar o estilo que criamos e definir seu conteúdo de texto. + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +Se você inspecionar `paragraph.OuterHtml` verá algo como: + +```html +
Bold & Italic text
+``` + +Essa linha demonstra **add bold italic text** sem nunca escrever strings CSS brutas. + +## Etapa 5: Anexar o Parágrafo ao Body + +Finalmente, nós **append element to body**. Esta é a última peça do quebra‑cabeça que realmente renderiza o parágrafo na página. + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +Você também poderia chamar `htmlDoc.Body.InsertBefore` ou `ReplaceChild` se precisasse de um posicionamento mais complexo. Na maioria dos cenários, um simples `AppendChild` resolve. + +## Etapa 6: Gerar a String HTML (ou Salvar em Arquivo) + +Agora que construímos o DOM, vamos extrair o HTML final. Aspose.HTML permite serializar o documento com uma única chamada. + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +Quando você abrir `result.html` em um navegador, verá um único parágrafo que está tanto em negrito quanto em itálico, exatamente como pretendido. + +### Saída Esperada + +```html + + + + +Bold & Italic text
+ + +``` + +Se você estiver gerando HTML para um e‑mail, basta inserir `finalHtml` no corpo do seu e‑mail e o estilo sobreviverá na maioria dos clientes modernos. + +## Variações Comuns & Casos de Borda + +- **Múltiplos Estilos:** Quer adicionar também uma cor de fundo? Expanda o `CSSStyleDeclaration`: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **Elementos Diferentes:** Em vez de um ``, você pode criar um `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +Execute este programa, abra `result.html` e você verá o parágrafo estilizado renderizado exatamente como descrito. Sem concatenação manual de strings, sem literais HTML frágeis—apenas manipulação de DOM limpa e tipada. + +## Conclusão + +Respondemos **how to create HTML** do zero usando Aspose.HTML, demonstramos **append element to body**, mostramos uma forma clara de **create paragraph element**, explicamos **add bold italic text**, e cobrimos as nuances de **add css style programmatically**. + +Se você está confortável com esse padrão, pode expandi‑lo para gerar páginas completas: tabelas, imagens, até scripts interativos. Os mesmos princípios se aplicam—defina estilos, crie elementos, defina atributos e anexe‑os onde pertencem. + +### O Que Vem a Seguir? + +- **Conteúdo Dinâmico:** Extraia dados de um banco de dados e faça loop para gerar linhas em uma tabela. +- **Bibliotecas de Estilização:** Combine esta abordagem com arquivos CSS externos para projetos maiores. +- **Opções de Exportação:** Alimente o `HTMLDocument` diretamente no Aspose.PDF ou Aspose.Words para produzir PDFs ou arquivos DOCX sem uma string intermediária. + +Sinta‑se à vontade para experimentar, quebrar coisas e depois consertá‑las—essa é a maneira mais rápida de internalizar a programação DOM em C#. Tem perguntas ou um caso de uso diferente? Deixe um comentário abaixo, e feliz codificação! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/portuguese/net/rendering-html-documents/_index.md b/html/portuguese/net/rendering-html-documents/_index.md index 3646fe093..f0384da14 100644 --- a/html/portuguese/net/rendering-html-documents/_index.md +++ b/html/portuguese/net/rendering-html-documents/_index.md @@ -62,6 +62,10 @@ Aprenda a renderizar vários documentos HTML usando Aspose.HTML para .NET. Aumen Desbloqueie o poder do Aspose.HTML para .NET! Aprenda como renderizar SVG Doc como PNG sem esforço. Mergulhe em exemplos passo a passo e FAQs. Comece agora! ### [Criar PNG a partir de HTML – Guia Completo de Renderização em C#](./create-png-from-html-full-c-rendering-guide/) Aprenda a gerar imagens PNG a partir de HTML usando Aspose.HTML para .NET com um guia completo em C#. +### [Criar documento PDF C# – Renderizar HTML para PDF com Aspose](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +Aprenda a gerar documentos PDF a partir de HTML usando Aspose.HTML para .NET com um guia completo em C#. +### [Renderizar HTML para PDF e Zipar – Guia Completo em C#](./render-html-to-pdf-and-zip-it-complete-c-guide/) +Aprenda a converter HTML em PDF e compactar o resultado em um arquivo ZIP usando Aspose.HTML para .NET com C#. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/portuguese/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/portuguese/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..b3f41f756 --- /dev/null +++ b/html/portuguese/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-03-28 +description: Criar documento PDF em C# usando Aspose HTML para PDF. Aprenda como renderizar + HTML para PDF, converter HTML para PDF e habilitar dicas para Linux. +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: pt +og_description: Crie documento PDF C# instantaneamente. Este guia mostra como renderizar + HTML para PDF, converter HTML em PDF e usar Aspose HTML para PDF com sugestão de + texto. +og_title: Criar Documento PDF C# – Renderizar HTML para PDF com Aspose +tags: +- Aspose +- C# +- PDF generation +title: Criar documento PDF C# – Renderizar HTML para PDF com Aspose +url: /pt/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Criar Documento PDF C# – Renderizar HTML para PDF com Aspose + +Já precisou **create PDF document C#** a partir de uma string HTML dinâmica e se perguntou por que o texto parece borrado no Linux? Você não é o único coçando a cabeça. A boa notícia é que o Aspose HTML facilita **render HTML to PDF**, e com algumas opções extras você pode obter glifos extremamente nítidos mesmo em servidores sem interface gráfica. + +Neste tutorial, percorreremos um exemplo completo, pronto‑para‑executar, que **converts HTML to PDF** usando a biblioteca Aspose HTML for .NET. Também abordaremos por que você pode querer habilitar o hinting, como configurar o pipeline de renderização e o que fazer se precisar personalizar o tamanho da página ou DPI mais tarde. Nenhuma documentação externa necessária—basta copiar, colar e executar. + +## O que você precisará + +- **.NET 6+** (ou .NET Framework 4.6.2+). Aspose HTML suporta ambos, mas o exemplo abaixo tem como alvo o .NET 6 para simplificar. +- **Aspose.HTML for .NET** pacote NuGet (`Aspose.Html`). Instale‑o via o Package Manager Console: + + ```powershell + Install-Package Aspose.Html + ``` + +- Um ambiente **Linux or Windows**. A flag de hinting é especialmente útil no Linux, mas o código funciona em qualquer lugar. +- Uma IDE ou editor de sua escolha (Visual Studio, VS Code, Rider…). + +É isso—nenhuma fonte extra, nenhum driver de impressora PDF, apenas uma única DLL. + +## Etapa 1: Configurar Opções de Renderização de Texto (Palavra‑chave Primária em Ação) + +A primeira coisa que fazemos é dizer ao Aspose como lidar com a renderização de glifos. No Linux, o rasterizador padrão pode produzir caracteres borrados, então ativamos o hinting. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**Por quê?** +`UseHinting` força o renderizador a alinhar os contornos vetoriais à grade de pixels, o que elimina as bordas borradas que você costuma ver em PDFs gerados em contêineres Linux sem interface gráfica. A propriedade `FontSize` não é obrigatória, mas fornece uma linha de base previsível para qualquer HTML que não especifique seu próprio tamanho. + +> **Dica profissional:** Se você estiver direcionando apenas Windows, pode pular o hinting—o Windows já aplica renderização sub‑pixel automaticamente. + +## Etapa 2: Anexar Opções de Texto às Configurações de Renderização de PDF + +Em seguida, criamos uma instância de `PdfRenderingOptions` e conectamos as `TextOptions` que acabamos de configurar. Este objeto governa todo o processo de conversão. + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**Por que vinculá‑las?** +O objeto `PdfRenderingOptions` é a ponte entre o motor HTML e o gravador de PDF. Ao atribuir `TextOptions` aqui, cada página renderizada herdará a configuração de hinting, garantindo uma saída consistente em todo o documento. + +## Etapa 3: Carregar Seu Conteúdo HTML + +O Aspose permite que você forneça HTML a partir de uma string, um arquivo ou até mesmo uma URL. Para este tutorial, manteremos simples e usaremos uma string em memória. + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**Por que uma string?** +Quando você gera relatórios dinamicamente (por exemplo, faturas, recibos), costuma montar o HTML usando interpolação de strings ou um motor de templates. Passar uma string diretamente evita arquivos temporários e acelera o pipeline. + +## Etapa 4: Salvar o PDF com as Opções Configuradas + +Agora finalmente gravamos o PDF no disco. O método `Save` recebe o caminho de destino e as opções de renderização que preparamos anteriormente. + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**O que você verá:** +Abra `hinted.pdf` com qualquer visualizador de PDF. O parágrafo “Hinted text on Linux” deve aparecer nítido, com a fonte Arial renderizada de forma limpa. No Linux, você notará a diferença em comparação com um PDF gerado sem `UseHinting`. + +> **Saída esperada:** um PDF de página única contendo o parágrafo em Arial 14 pt, sem bordas borradas. + +### Exemplo Completo Funcional + +Abaixo está o programa completo que você pode copiar para um projeto de aplicativo console. Ele inclui todas as declarações using, tratamento de erros e comentários para clareza. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +Execute o programa (`dotnet run`) e você terá um PDF pronto para distribuição, arquivamento ou processamento adicional. + + + +## Perguntas Frequentes (FAQ) + +### Isso funciona com **aspose html to pdf** no .NET Core? + +Absolutamente. A mesma superfície de API está exposta em .NET Framework, .NET Core e .NET 5/6. Apenas certifique‑se de que a versão do pacote NuGet corresponde ao seu framework de destino. + +### Como posso **render HTML to PDF** com tamanho de página personalizado? + +Crie um objeto `PdfPageSetup`, defina `Width`, `Height` ou `Size`, e atribua‑o a `pdfRenderOptions.PageSetup`. Exemplo: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### E se eu precisar **convert HTML to PDF** em uma API web? + +Retorne o PDF como um `FileResult`: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### Posso usar isso para **html to pdf c#** em um contêiner Docker Linux? + +Sim. A flag de hinting foi projetada especificamente para ambientes Linux sem interface gráfica. Basta instalar o pacote `libgdiplus` se você estiver no Alpine, e a conversão funcionará imediatamente. + +## Ajustes Avançados (Além do Básico) + +- **Embedding Fonts:** Se seu HTML referencia fontes personalizadas, chame `htmlDoc.Fonts.Add("MyFont", fontBytes);` antes da renderização. +- **Image Handling:** Ative `pdfRenderOptions.ImageResolution = 300;` para gráficos de alta DPI. +- **Security:** Use `PdfSaveOptions` para proteger a saída com senha (`PdfSaveOptions.Password = "secret";`). + +Essas opções permitem transformar um snippet simples de **convert html to pdf** em um serviço pronto para produção. + +## Recapitulação + +Acabamos de demonstrar como **create PDF document C#** renderizando HTML com Aspose HTML, habilitando o hinting de texto para uma saída mais nítida no Linux, e salvando o resultado com uma única chamada de método. As etapas cobertas: + +1. Configurar `TextOptions` (hinting). +2. Anexá‑las a `PdfRenderingOptions`. +3. Carregar HTML a partir de uma string. +4. Salvar o PDF. + +Agora você tem uma base sólida para qualquer cenário que exija **aspose html to pdf**, **render html to pdf**, **convert html to pdf**, ou **html to pdf c#**. Sinta‑se à vontade para experimentar layouts de página, fontes incorporadas ou transmitir o PDF diretamente para um cliente. + +--- + +**Próximos passos:** +- Tente converter um relatório HTML de várias páginas com tabelas e imagens. +- Explore a API `PdfDocument` da Aspose para pós‑processamento (adicionar marcadores, marcas d'água). +- Combine esta conversão com uma fila de trabalhos em segundo plano (por exemplo, Hangfire) para gerar PDFs sob demanda. + +Feliz codificação, e que seus PDFs estejam sempre nítidos! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/portuguese/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/portuguese/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..cc4d8fcf3 --- /dev/null +++ b/html/portuguese/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-28 +description: Render HTML para PDF diretamente a partir de uma URL e comprima o resultado + em um arquivo ZIP. Aprenda como converter URL para PDF, gerar PDF a partir de um + site e compactar o arquivo PDF em C#. +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: pt +og_description: Renderize HTML em PDF diretamente a partir de uma URL e, em seguida, + compacte o PDF em um arquivo ZIP. Este tutorial passo a passo mostra como converter + URL em PDF, gerar PDF a partir de um site e compactar o arquivo PDF em C#. +og_title: Renderizar HTML para PDF e compactar – Guia completo de C# +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: Renderizar HTML em PDF e Compactá-lo – Guia Completo de C# +url: /pt/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Render HTML para PDF e Compacte – Guia Completo em C# + +Já precisou **renderizar HTML para PDF** em tempo real e depois enviar o arquivo para um cliente como um único arquivo compactado? Talvez você esteja construindo um serviço de relatórios que captura uma página da web ao vivo, a converte em PDF e armazena o resultado em um zip para download fácil. Neste tutorial vamos percorrer exatamente isso—renderizar uma página web remota para PDF e, em seguida, **compactar o PDF em um zip** sem nunca tocar no disco. + +Também vamos cobrir como **converter URL para PDF**, **gerar PDF a partir de site**, e finalmente **compactar arquivo PDF** para que você possa enviá‑lo onde precisar. Sem enrolação, apenas uma solução funcional que você pode inserir em um projeto .NET 6+ hoje. + +## O que você precisará + +- **.NET 6** ou posterior (o código funciona também com .NET Framework 4.6+). +- **Aspose.HTML for .NET** – a biblioteca que faz o trabalho pesado de renderização de HTML‑para‑PDF. +- Uma quantidade modesta de experiência em C#—se você sabe escrever um `Console.WriteLine`, está pronto para prosseguir. +- Uma IDE de sua escolha (Visual Studio, Rider, VS Code…). + +> **Dica profissional:** Aspose.HTML oferece uma avaliação gratuita que inclui todos os recursos de renderização. Baixe‑a no [site da Aspose](https://products.aspose.com/html/net/) antes de começar. + +Agora que os pré‑requisitos foram resolvidos, vamos mergulhar. + +## Etapa 1 – Carregar o Documento HTML Remoto (Converter URL para PDF) + +A primeira coisa que precisamos fazer é dizer ao Aspose.HTML onde está a fonte. No nosso caso é uma URL pública, mas você também pode fornecer uma string contendo HTML bruto. + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Por que isso importa:** Carregar o documento a partir de uma URL faz com que o renderizador busque todos os recursos vinculados (CSS, imagens, fontes) automaticamente, fornecendo uma réplica fiel em PDF do site ao vivo. Pular esta etapa e fornecer uma string simples removeria esses recursos, o que raramente é o desejado ao *gerar PDF a partir de site*. + +## Etapa 2 – Configurar Opções de Renderização de PDF (Qualidade Importa) + +Aspose.HTML permite ajustar a aparência do PDF. Antialiasing e hinting de fontes são duas configurações que deixam a saída nítida na tela e na impressão. + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Por que definimos isso:** Sem antialiasing, arte de linhas e gráficos vetoriais podem aparecer serrilhados, especialmente em telas de alta DPI. O hinting, por sua vez, indica ao motor PDF como alinhar os glifos aos limites dos pixels, um ajuste pequeno que frequentemente faz uma grande diferença visual. + +## Etapa 3 – Preparar um Arquivo ZIP em Memória (Compactar Arquivo PDF) + +Em vez de gravar o PDF no disco primeiro e depois compactá‑lo — um pesadelo de I/O em duas etapas — vamos transmitir diretamente para uma entrada zip. Isso mantém tudo em memória, o que é perfeito para APIs web ou jobs em segundo plano. + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Observação de caso extremo:** Se você estiver lidando com PDFs massivos (centenas de MB), considere direcionar o zip diretamente para um stream de resposta em vez de mantê‑lo inteiro na memória. Para relatórios típicos com menos de 20 MB, essa abordagem é segura e rápida. + +## Etapa 4 – Transmitir o PDF Diretamente para uma Entrada ZIP + +Aqui está a parte inteligente: criamos uma entrada zip chamada `output.pdf` e entregamos seu stream de volta ao Aspose.HTML. O renderizador grava os bytes do PDF diretamente na entrada zip — sem necessidade de arquivo temporário. + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Por que fazemos assim:** Ao fornecer ao escritor de PDF um stream que aponta para uma entrada zip, evitamos o ciclo “escrever‑no‑disco → zip → excluir”. Isso não só reduz a sobrecarga de I/O, como também elimina o risco de deixar arquivos órfãos no servidor. + +## Etapa 5 – Finalizar o ZIP e Persisti‑lo + +Depois que o PDF for escrito, precisamos fechar o arquivo zip para que o diretório central seja gravado, e então salvar tudo no disco (ou retorná‑lo de uma API). + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Resultado que você verá:** Um arquivo chamado `result.zip` contendo uma única entrada `output.pdf`. Abrir o PDF mostra uma captura pixel‑perfeita de `https://example.com`, completa com estilos e imagens. + + + +*Imagem alt text: render html to pdf – captura de tela do PDF gerado dentro de um arquivo ZIP.* + +## Exemplo Completo Funcional + +Juntando tudo, aqui está o programa completo, pronto para copiar e colar: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### O que esperar + +- **`result.zip`** aparece em `C:\Temp`. +- Dentro do arquivo você encontrará **`output.pdf`**. +- Abrir o PDF mostra a página ao vivo de `https://example.com` renderizada fielmente. + +Se você executar o programa e o zip estiver vazio, verifique se a URL está acessível e se o Aspose.HTML tem permissão para baixar recursos externos (firewalls, configurações de proxy, etc.). + +## Perguntas Frequentes & Casos de Borda + +| Pergunta | Resposta | +|----------|----------| +| *E se a página referenciar fontes externas?* | Aspose.HTML baixa automaticamente as web‑fonts referenciadas via `@font-face`. Certifique‑se de que o servidor pode acessar as URLs das fontes. | +| *Posso adicionar vários PDFs no mesmo ZIP?* | Sim—basta chamar `zipArchive.CreateEntry("report2.pdf")` e renderizar outro `HTMLDocument` nesse stream. | +| *Como definir um nome de arquivo PDF personalizado?* | Altere a string passada para `CreateEntry`, por exemplo, `CreateEntry("my‑invoice.pdf")`. | +| *É seguro usar isso em um aplicativo web multithread?* | Cada requisição deve criar seu próprio `MemoryStream` e `ZipArchive`. Os objetos não são thread‑safe, portanto instâncias compartilhadas causarão corrupção. | +| *E PDFs grandes?* | Para PDFs > 100 MB, considere transmitir diretamente para a resposta HTTP (`Response.Body`) em vez de armazenar em memória. | + +## Conclusão + +Acabamos de mostrar como **renderizar HTML para PDF**, **converter URL para PDF**, **gerar PDF a partir de site**, e finalmente **compactar arquivo PDF** — tudo em um fluxo limpo, em memória. + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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..e05d70fda 100644 --- a/html/portuguese/net/working-with-html-documents/_index.md +++ b/html/portuguese/net/working-with-html-documents/_index.md @@ -38,6 +38,7 @@ Agora, vamos levar suas habilidades para o próximo nível. Editar documentos HT ### [Como salvar HTML em C# – Guia completo usando um manipulador de recursos personalizado](./how-to-save-html-in-c-complete-guide-using-a-custom-resource/) ### [Como deixar o título em negrito com CSS e C# – Guia completo passo a passo](./how-to-bold-heading-with-css-c-complete-step-by-step-guide/) +### [Criar HTML a partir de string em C# – Guia completo com Memory Stream](./create-html-from-string-in-c-full-guide-with-memory-stream/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/portuguese/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/portuguese/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..4714f84f6 --- /dev/null +++ b/html/portuguese/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,278 @@ +--- +category: general +date: 2026-03-28 +description: Crie HTML a partir de uma string usando Aspose.Html e capture-o em um + fluxo. Aprenda a converter HTML em string, manipulador de recursos personalizado + e escrever HTML em um fluxo. +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: pt +og_description: Crie HTML a partir de uma string com Aspose.Html, capture-o na memória + e converta o HTML em string. Guia passo a passo para manipulador de recursos personalizado + e gravação de HTML em fluxo. +og_title: Criar HTML a partir de string em C# – Tutorial completo de Memory‑Stream +tags: +- Aspose.Html +- C# +- MemoryStream +title: Criar HTML a partir de string em C# – Guia completo com Memory Stream +url: /pt/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Criar HTML a partir de string em C# – Guia Completo com Memory Stream + +Já precisou **criar HTML a partir de string** e manter tudo na memória sem tocar no sistema de arquivos? Você não está sozinho. Muitos desenvolvedores encontram esse obstáculo quando querem gerar marcação dinâmica em tempo real — por exemplo, para um modelo de e‑mail ou uma conversão para PDF — mas não desejam um arquivo temporário ocupando o disco. + +A boa notícia? Com Aspose.Html você pode criar um `HTMLDocument` diretamente a partir de uma string, alimentá‑lo em um **custom resource handler**, e **write HTML to stream** para uso posterior. Neste tutorial vamos percorrer cada passo, da string inicial ao resultado final `string`, e explicar *por que* cada parte importa. + +Ao final deste guia você será capaz de: + +* Criar HTML a partir de string usando Aspose.Html. +* Converter HTML para string sem gravar no disco. +* Capturar HTML com um custom resource handler. +* Gravar HTML em um `MemoryStream` e lê‑lo de volta. +* Identificar armadilhas comuns e aplicar dicas de boas práticas. + +Nenhuma dependência externa além do Aspose.Html é necessária — apenas um projeto .NET e algumas declarações using. + +--- + +## Pré-requisitos + +* .NET 6.0 ou superior (o código funciona também no .NET Framework). +* Pacote NuGet Aspose.Html for .NET (`Install-Package Aspose.Html`). +* Conhecimento básico de C# — se você já escreveu um `Console.WriteLine`, está pronto. + +--- + +## Etapa 1: Criar HTML a partir de string – ponto de partida + +A primeira coisa que precisamos é uma string HTML bruta. Pense nela como o esqueleto que você normalmente colaria em um arquivo `.html`. + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "`, применим построенный стиль и зададим его текстовое содержимое. + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +Если вы проверите `paragraph.OuterHtml`, вы увидите что‑то вроде: + +```html +
Bold & Italic text
+``` + +Эта строка демонстрирует **add bold italic text** без необходимости писать сырые CSS‑строки. + +## Шаг 5: Добавьте абзац в тело + +Наконец, мы **append element to body**. Это последний кусок головоломки, который действительно отображает абзац на странице. + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +Вы также можете вызвать `htmlDoc.Body.InsertBefore` или `ReplaceChild`, если требуется более сложное позиционирование. Для большинства сценариев достаточно простого `AppendChild`. + +## Шаг 6: Выведите строку HTML (или сохраните в файл) + +Теперь, когда мы построили DOM, извлечём окончательный HTML. Aspose.HTML позволяет сериализовать документ одним вызовом. + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +Когда вы откроете `result.html` в браузере, вы увидите один абзац, который одновременно полужирный и курсивный, точно как мы задумали. + +### Ожидаемый вывод + +```html + + + + +Bold & Italic text
+ + +``` + +Если вы генерируете HTML для письма, просто вставьте `finalHtml` в тело письма, и стили сохранятся в большинстве современных почтовых клиентов. + +## Общие варианты и граничные случаи + +- **Multiple Styles:** Хотите также добавить цвет фона? Расширьте `CSSStyleDeclaration`: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **Different Elements:** Вместо `` вы можете создать `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +Запустите эту программу, откройте `result.html`, и вы увидите стилизованный абзац, отрисованный точно как описано. Никакой ручной конкатенации строк, никаких хрупких HTML‑литералов — только чистая, типобезопасная работа с DOM. + +## Итоги + +Мы ответили на вопрос **how to create HTML** с нуля, используя Aspose.HTML, продемонстрировали **append element to body**, показали простой способ **create paragraph element**, объяснили **add bold italic text** и рассмотрели нюансы **add css style programmatically**. + +Если вам комфортно работать по этой схеме, вы можете расширить её для генерации полноценных страниц: таблиц, изображений, даже интерактивных скриптов. Принципы те же — определяйте стили, создавайте элементы, задавайте атрибуты и добавляйте их туда, где они нужны. + +### Что дальше? + +- **Dynamic Content:** Получайте данные из базы данных и в цикле генерируйте строки таблицы. +- **Styling Libraries:** Сочетайте этот подход с внешними CSS‑файлами для более крупных проектов. +- **Export Options:** Передавайте `HTMLDocument` напрямую в Aspose.PDF или Aspose.Words для создания PDF‑ или DOCX‑файлов без промежуточной строки. + +Не стесняйтесь экспериментировать, ломать вещи и потом исправлять их — так вы быстрее освоите программирование DOM в 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/russian/net/rendering-html-documents/_index.md b/html/russian/net/rendering-html-documents/_index.md index 80263a376..cdab6e29a 100644 --- a/html/russian/net/rendering-html-documents/_index.md +++ b/html/russian/net/rendering-html-documents/_index.md @@ -45,6 +45,7 @@ Aspose.HTML для .NET выделяется как лучший выбор дл ### [Как отрендерить HTML в PNG – Полное руководство C#](./how-to-render-html-as-png-complete-c-guide/) Полное руководство по рендерингу HTML в PNG с использованием Aspose.HTML и C#. + ### [Создание PNG из HTML – Полное руководство по рендерингу на C#](./create-png-from-html-full-c-rendering-guide/) Подробный учебник по созданию PNG из HTML с использованием Aspose.HTML для .NET на C#. @@ -64,9 +65,16 @@ Aspose.HTML для .NET выделяется как лучший выбор дл Откройте для себя мощь Aspose.HTML для .NET! Узнайте, как легко визуализировать SVG Doc как PNG. Погрузитесь в пошаговые примеры и часто задаваемые вопросы. Начните прямо сейчас! ### [Как использовать Aspose для рендеринга HTML в PNG – пошаговое руководство](./how-to-use-aspose-to-render-html-to-png-step-by-step-guide/) Подробный пошаговый учебник по использованию Aspose.HTML для конвертации HTML в PNG в .NET. + ### [Как отрендерить HTML в PNG с помощью Aspose – Полное руководство](./how-to-render-html-to-png-with-aspose-complete-guide/) Подробный пошаговый учебник по рендерингу HTML в PNG с использованием Aspose.HTML для .NET. +### [Создание PDF-документа C# – Рендеринг HTML в PDF с Aspose](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +Подробный учебник по созданию PDF из HTML с помощью Aspose.HTML для .NET на C#. + +### [Рендеринг HTML в PDF и архивирование – Полное руководство C#](./render-html-to-pdf-and-zip-it-complete-c-guide/) +Подробный учебник по конвертации HTML в PDF и последующей упаковке в ZIP с использованием Aspose.HTML для .NET на C#. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/russian/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/russian/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..ad3498d44 --- /dev/null +++ b/html/russian/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-28 +description: Создайте PDF‑документ на C# с использованием Aspose HTML to PDF. Узнайте, + как рендерить HTML в PDF, конвертировать HTML в PDF и включить подсказки для Linux. +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: ru +og_description: Создавайте PDF‑документ на C# мгновенно. Это руководство показывает, + как рендерить HTML в PDF, конвертировать HTML в PDF и использовать Aspose HTML в + PDF с подсказкой текста. +og_title: Создать PDF‑документ C# – Преобразовать HTML в PDF с помощью Aspose +tags: +- Aspose +- C# +- PDF generation +title: Создание PDF‑документа C# – Преобразование HTML в PDF с помощью Aspose +url: /ru/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Создание PDF‑документа C# – Преобразование HTML в PDF с помощью Aspose + +Когда‑нибудь вам нужно было **create PDF document C#** из динамической строки HTML и вы задавались вопросом, почему текст выглядит размытым в Linux? Вы не одиноки в этом. Хорошая новость в том, что Aspose HTML упрощает **render HTML to PDF**, и с парой дополнительных опций вы можете получить кристально‑четкие глифы даже на безголовых серверах. + +В этом руководстве мы пройдем полный, готовый к запуску пример, который **converts HTML to PDF** с использованием библиотеки Aspose HTML for .NET. Мы также расскажем, почему может потребоваться включить хинтинг, как настроить конвейер рендеринга и что делать, если позже понадобится изменить размер страницы или DPI. Никакой внешней документации не требуется — просто скопируйте, вставьте и запустите. + +## Что понадобится + +- **.NET 6+** (или .NET Framework 4.6.2+). Aspose HTML поддерживает обе платформы, но пример ниже ориентирован на .NET 6 для простоты. +- **Aspose.HTML for .NET** NuGet‑пакет (`Aspose.Html`). Установите его через консоль диспетчера пакетов: + + ```powershell + Install-Package Aspose.Html + ``` + +- Окружение **Linux или Windows**. Флаг хинтинга особенно полезен в Linux, но код работает везде. +- Любая IDE или редактор по вашему выбору (Visual Studio, VS Code, Rider…). + +Вот и всё — никаких дополнительных шрифтов, драйверов PDF‑принтера, только один DLL. + +## Шаг 1: Настройка параметров рендеринга текста (Primary Keyword in Action) + +Первое, что мы делаем, — говорим Aspose, как обрабатывать рендеринг глифов. В Linux стандартный растеризатор может создавать размытые символы, поэтому мы включаем хинтинг. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**Почему?** +`UseHinting` заставляет рендерер выравнивать векторные контуры по пиксельной сетке, что устраняет размытые края, часто встречающиеся в PDF, созданных в безголовых Linux‑контейнерах. Свойство `FontSize` не обязательно, но оно задаёт предсказуемую базовую величину для любого HTML, который не указывает собственный размер. + +> **Pro tip:** Если вы нацелены только на Windows, можете пропустить хинтинг — Windows уже автоматически применяет субпиксельный рендеринг. + +## Шаг 2: Привязка параметров текста к настройкам рендеринга PDF + +Далее мы создаём экземпляр `PdfRenderingOptions` и подключаем к нему `TextOptions`, которые только что настроили. Этот объект управляет всем процессом конвертации. + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**Зачем их связывать?** +Объект `PdfRenderingOptions` служит мостом между HTML‑движком и PDF‑писателем. Присвоив ему `TextOptions`, каждый отрисованный лист наследует конфигурацию хинтинга, обеспечивая единообразный результат по всему документу. + +## Шаг 3: Загрузка вашего HTML‑контента + +Aspose позволяет передавать HTML из строки, файла или даже URL. Для этого руководства мы упростим задачу и используем строку в памяти. + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**Почему строка?** +Когда вы генерируете отчёты «на лету» (например, счета, чеки), часто собираете HTML с помощью интерполяции строк или шаблонизатора. Передача строки напрямую избавляет от временных файлов и ускоряет конвейер. + +## Шаг 4: Сохранение PDF с настроенными параметрами + +Теперь мы наконец записываем PDF на диск. Метод `Save` принимает путь назначения и параметры рендеринга, подготовленные ранее. + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**Что вы увидите:** +Откройте `hinted.pdf` в любом PDF‑просмотрщике. Параграф «Hinted text on Linux» должен выглядеть чётко, шрифт Arial отрисован без артефактов. В Linux вы заметите разницу по сравнению с PDF, созданным без `UseHinting`. + +> **Expected output:** одностраничный PDF, содержащий параграф шрифтом Arial 14 pt без размытых краёв. + +### Полный рабочий пример + +Ниже представлен полный код программы, который можно скопировать в проект консольного приложения. В нём включены все директивы `using`, обработка ошибок и комментарии для ясности. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +Запустите программу (`dotnet run`), и у вас будет готовый PDF для распространения, архивирования или дальнейшей обработки. + + + +## Часто задаваемые вопросы (FAQ) + +### Работает ли это с **aspose html to pdf** на .NET Core? +Абсолютно. Один и тот же набор API доступен в .NET Framework, .NET Core и .NET 5/6. Просто убедитесь, что версия NuGet‑пакета соответствует вашей целевой платформе. + +### Как я могу **render HTML to PDF** с пользовательским размером страницы? +Создайте объект `PdfPageSetup`, задайте `Width`, `Height` или `Size` и присвойте его свойству `pdfRenderOptions.PageSetup`. Пример: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### Что делать, если нужно **convert HTML to PDF** в веб‑API? +Верните PDF как `FileResult`: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### Можно ли использовать это для **html to pdf c#** в Linux‑Docker контейнере? +Да. Флаг хинтинга специально разработан для безголовых Linux‑окружений. Просто установите пакет `libgdiplus`, если вы работаете на Alpine, и конверсия будет работать «из коробки». + +## Расширенные настройки (Beyond the Basics) + +- **Embedding Fonts:** Если ваш HTML ссылается на пользовательские шрифты, вызовите `htmlDoc.Fonts.Add("MyFont", fontBytes);` перед рендерингом. +- **Image Handling:** Включите `pdfRenderOptions.ImageResolution = 300;` для графики с высоким DPI. +- **Security:** Используйте `PdfSaveOptions` для защиты паролем (`PdfSaveOptions.Password = "secret";`). + +Эти параметры позволяют превратить простой фрагмент **convert html to pdf** в готовый к продакшену сервис. + +## Итоги + +Мы только что продемонстрировали, как **create PDF document C#** путем рендеринга HTML с помощью Aspose HTML, включив хинтинг текста для более чёткого вывода в Linux, и сохранив результат одним вызовом метода. Охваченные шаги: + +1. Настройка `TextOptions` (хинтинг). +2. Привязка их к `PdfRenderingOptions`. +3. Загрузка HTML из строки. +4. Сохранение PDF. + +Теперь у вас есть надёжная база для любого сценария, требующего **aspose html to pdf**, **render html to pdf**, **convert html to pdf** или **html to pdf c#**. Не стесняйтесь экспериментировать с макетами страниц, встроенными шрифтами или потоковой передачей PDF напрямую клиенту. + +--- + +**Следующие шаги:** +- Попробуйте конвертировать многостраничный HTML‑отчёт с таблицами и изображениями. +- Изучите API `PdfDocument` от Aspose для постобработки (добавление закладок, водяных знаков). +- Объедините эту конверсию с очередью фоновых задач (например, Hangfire) для генерации PDF по запросу. + +Счастливого кодинга, и пусть ваши 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/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/russian/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..59afabb22 --- /dev/null +++ b/html/russian/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-28 +description: Преобразуйте HTML в PDF напрямую из URL и упакуйте результат в ZIP‑файл. + Узнайте, как конвертировать URL в PDF, генерировать PDF с сайта и архивировать PDF‑файл + в C#. +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: ru +og_description: Преобразуйте HTML в PDF напрямую из URL, а затем сожмите PDF в ZIP‑архив. + Этот пошаговый учебник показывает, как конвертировать URL в PDF, генерировать PDF + с сайта и упаковать PDF‑файл в ZIP в C#. +og_title: Преобразование HTML в PDF и упаковка в ZIP — Полное руководство по C# +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: Преобразование HTML в PDF и упаковка в ZIP — Полное руководство по C# +url: /ru/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Преобразование HTML в PDF и упаковка в ZIP – Полное руководство на C# + +Когда‑нибудь нужно **преобразовать HTML в PDF** «на лету», а затем отправить файл клиенту в виде единого архива? Возможно, вы создаёте сервис отчётов, который получает живую веб‑страницу, превращает её в PDF и сохраняет результат в zip‑файле для удобного скачивания. В этом руководстве мы шаг за шагом пройдём весь процесс — от рендеринга удалённой веб‑страницы в PDF до **сжатия PDF в zip** без записи на диск. + +Мы также рассмотрим, как **конвертировать URL в PDF**, **генерировать PDF с сайта**, и в конце **упаковать PDF в zip**, чтобы вы могли отправлять его куда угодно. Без лишних слов, только рабочее решение, которое можно сразу добавить в проект .NET 6+. + +## Что понадобится + +- **.NET 6** или новее (код также работает с .NET Framework 4.6+). +- **Aspose.HTML for .NET** — библиотека, выполняющая тяжёлую работу по рендерингу HTML‑в‑PDF. +- Базовые знания C# — если вы умеете писать `Console.WriteLine`, вам достаточно. +- Любая IDE (Visual Studio, Rider, VS Code…). + +> **Pro tip:** Aspose.HTML предлагает бесплатную пробную версию со всеми функциями рендеринга. Скачайте её с [сайта Aspose](https://products.aspose.com/html/net/) перед началом. + +Теперь, когда предпосылки улажены, приступим. + +## Шаг 1 — Загрузка удалённого HTML‑документа (Convert URL to PDF) + +Первое, что нужно сделать, — сообщить Aspose.HTML, где находится источник. В нашем случае это публичный URL, но вы также можете передать строку с «сырой» разметкой. + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Почему это важно:** Загрузка документа по URL заставляет рендерер автоматически получать все связанные ресурсы (CSS, изображения, шрифты), что даёт точную PDF‑копию живого сайта. Если пропустить этот шаг и передать простую строку, все эти активы будут утеряны, а это редко бывает желаемым при *generate PDF from website*. + +## Шаг 2 — Настройка параметров рендеринга PDF (Quality Matters) + +Aspose.HTML позволяет тонко настроить внешний вид PDF. Анти‑алиасинг и хинтинг шрифтов — это два параметра, которые делают вывод чётким как на экране, так и в печати. + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Зачем мы это делаем:** Без анти‑алиасинга линии и векторная графика могут выглядеть «зубчатыми», особенно на дисплеях с высоким DPI. Хинтинг, в свою очередь, подсказывает PDF‑движку, как выравнивать глифы по пиксельным границам, небольшая настройка, но часто дающая заметный визуальный эффект. + +## Шаг 3 — Подготовка ZIP‑архива в памяти (Zip PDF File) + +Вместо того чтобы сначала записывать PDF на диск, а потом упаковывать его — двухшаговый кошмар ввода‑вывода, мы будем сразу стримить данные в запись zip‑архива. Всё остаётся в памяти, что идеально подходит для веб‑API или фоновых задач. + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Примечание о граничных случаях:** Если вы работаете с огромными PDF (сотни мегабайт), лучше передавать zip‑поток напрямую в ответ, а не держать весь архив в памяти. Для типичных отчётов до 20 МБ такой подход безопасен и быстр. + +## Шаг 4 — Стриминг PDF напрямую в запись ZIP + +Вот умный момент: мы создаём запись zip с именем `output.pdf` и передаём её поток обратно Aspose.HTML. Рендерер пишет байты PDF сразу в запись zip — без временных файлов. + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Почему так:** Передавая PDF‑писателю поток, указывающий на запись zip, мы избавляемся от цикла «записать на диск → zip → удалить». Это уменьшает нагрузку ввода‑вывода и исключает риск оставления лишних файлов на сервере. + +## Шаг 5 — Завершение ZIP и сохранение + +После записи PDF необходимо закрыть zip‑архив, чтобы центральный каталог был сброшен, а затем записать всё целиком на диск (или вернуть из API). + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Что вы увидите:** Файл `result.zip`, содержащий одну запись `output.pdf`. При открытии PDF вы получите пиксель‑точную копию `https://example.com` со всеми стилями и изображениями. + + + +*Текст alt изображения: render html to pdf – скриншот сгенерированного PDF внутри ZIP‑архива.* + +## Полный рабочий пример + +Собираем всё вместе, вот полностью готовая к копированию программа: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### Что ожидать + +- **`result.zip`** появляется в `C:\Temp`. +- Внутри архива находится **`output.pdf`**. +- Открывая PDF, вы видите живую страницу `https://example.com`, точно отрендеренную. + +Если программа запустилась, а zip пустой, проверьте доступность URL и то, что Aspose.HTML имеет право скачивать внешние ресурсы (фаерволы, прокси и т.п.). + +## Часто задаваемые вопросы и граничные случаи + +| Question | Answer | +|----------|--------| +| *What if the page references external fonts?* | Aspose.HTML автоматически скачивает веб‑шрифты, указанные через `@font-face`. Убедитесь, что сервер может достичь URL шрифтов. | +| *Can I add multiple PDFs into the same ZIP?* | Yes—just call `zipArchive.CreateEntry("report2.pdf")` and render another `HTMLDocument` into that stream. | +| *How do I set a custom PDF filename?* | Change the string passed to `CreateEntry`, e.g., `CreateEntry("my‑invoice.pdf")`. | +| *Is it safe to use this in a multi‑threaded web app?* | Each request should create its own `MemoryStream` and `ZipArchive`. The objects are not thread‑safe, so shared instances will cause corruption. | +| *What about large PDFs?* | For > 100 MB PDFs, consider streaming directly to the HTTP response (`Response.Body`) instead of buffering in memory. | + +## Подведение итогов + +Мы показали, как **преобразовать HTML в PDF**, **конвертировать URL в PDF**, **генерировать PDF с сайта**, и в конце **упаковать PDF в 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..34c75706d 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 из строки в C# – Полное руководство с Memory Stream](./create-html-from-string-in-c-full-guide-with-memory-stream/) + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/russian/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/russian/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..7d777633c --- /dev/null +++ b/html/russian/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,278 @@ +--- +category: general +date: 2026-03-28 +description: Создайте HTML из строки с помощью Aspose.Html и захватите его в поток. + Узнайте, как преобразовать HTML в строку, использовать пользовательский обработчик + ресурсов и записать HTML в поток. +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: ru +og_description: Создайте HTML из строки с помощью Aspose.Html, захватите его в памяти + и преобразуйте HTML в строку. Пошаговое руководство по пользовательскому обработчику + ресурсов и записи HTML в поток. +og_title: Создание HTML из строки в C# – Полный учебник по Memory‑Stream +tags: +- Aspose.Html +- C# +- MemoryStream +title: Создание HTML из строки в C# – Полное руководство с Memory Stream +url: /ru/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Создание HTML из строки в C# – Полное руководство с Memory Stream + +Когда‑то вам нужно **создать HTML из строки** и держать всё в памяти, не трогая файловую систему? Вы не одиноки. Многие разработчики сталкиваются с этой проблемой, когда хотят генерировать динамическую разметку «на лету» — например, для шаблона письма или конвертации в PDF — но не желают оставлять временный файл на диске. + +Хорошие новости? С Aspose.Html вы можете создать `HTMLDocument` прямо из строки, передать его в **пользовательский обработчик ресурсов** и **записать HTML в поток** для последующего использования. В этом руководстве мы пройдём каждый шаг, от исходной строки до конечного результата `string`, и объясним, *почему* каждый элемент важен. + +К концу этого руководства вы сможете: + +* Создавать HTML из строки с помощью Aspose.Html. +* Преобразовывать HTML в строку без записи на диск. +* Захватывать HTML с помощью пользовательского обработчика ресурсов. +* Записывать HTML в `MemoryStream` и считывать его обратно. +* Выявлять распространённые подводные камни и применять рекомендации лучшей практики. + +Никаких внешних зависимостей, кроме Aspose.Html, не требуется — только проект .NET и несколько операторов `using`. + +--- + +## Требования + +* .NET 6.0 или новее (код также работает на .NET Framework). +* NuGet‑пакет Aspose.Html for .NET (`Install-Package Aspose.Html`). +* Базовые знания C# — если вы уже писали `Console.WriteLine`, вам достаточно. + +--- + +## Шаг 1: Создать HTML из строки – исходная точка + +Первое, что нам нужно, — это необработанная строка HTML. Представьте её как скелет, который обычно вставляют в файл `.html`. + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "`, inyectaremos el estilo que creamos y estableceremos su contenido de texto. + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +Si inspeccionas `paragraph.OuterHtml` verás algo como: + +```html +
Bold & Italic text
+``` + +Esa línea demuestra **add bold italic text** sin escribir nunca cadenas CSS crudas. + +## Paso 5: Añadir el párrafo al cuerpo + +Finalmente, nosotros **append element to body**. Esta es la última pieza del rompecabezas que realmente renderiza el párrafo en la página. + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +También podrías llamar a `htmlDoc.Body.InsertBefore` o `ReplaceChild` si necesitas una posición más compleja. Para la mayoría de los escenarios, un simple `AppendChild` funciona. + +## Paso 6: Generar la cadena HTML (o guardar en archivo) + +Ahora que hemos construido el DOM, extraigamos el HTML final. Aspose.HTML te permite serializar el documento con una sola llamada. + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +Cuando abras `result.html` en un navegador verás un solo párrafo que está tanto en negrita como en cursiva, exactamente como lo pretendíamos. + +### Salida esperada + +```html + + + + +Bold & Italic text
+ + +``` + +Si estás generando HTML para un correo electrónico, simplemente inserta `finalHtml` en el cuerpo de tu email y el estilo sobrevivirá en la mayoría de los clientes modernos. + +## Variaciones comunes y casos límite + +- **Estilos múltiples:** ¿Quieres añadir también un color de fondo? Extiende el `CSSStyleDeclaration`: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **Elementos diferentes:** En lugar de un ``, podrías crear un `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +Ejecuta este programa, abre `result.html` y verás el párrafo con estilo renderizado exactamente como se describe. Sin concatenación manual de cadenas, sin literales HTML frágiles—solo manipulación limpia y tipada del DOM. + +## Conclusión + +Hemos respondido **cómo crear HTML** desde cero usando Aspose.HTML, demostrado **append element to body**, mostrado una forma clara de **create paragraph element**, explicado **add bold italic text**, y cubierto los matices de **add css style programmatically**. + +Si te sientes cómodo con este patrón, puedes ampliarlo para generar páginas completas: tablas, imágenes, incluso scripts interactivos. Los mismos principios se aplican—definir estilos, crear elementos, establecer atributos y añadirlos donde corresponda. + +### ¿Qué sigue? + +- **Contenido dinámico:** Obtén datos de una base de datos y recorre para generar filas en una tabla. +- **Bibliotecas de estilos:** Combina este enfoque con archivos CSS externos para proyectos más grandes. +- **Opciones de exportación:** Alimenta el `HTMLDocument` directamente a Aspose.PDF o Aspose.Words para producir archivos PDF o DOCX sin una cadena intermedia. + +Siéntete libre de experimentar, romper cosas y luego arreglarlas—esa es la forma más rápida de interiorizar la programación DOM en C#. ¿Tienes preguntas o un caso de uso diferente? Deja un comentario abajo, ¡y feliz codificación! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/spanish/net/rendering-html-documents/_index.md b/html/spanish/net/rendering-html-documents/_index.md index aa3ec875b..5beaa07c5 100644 --- a/html/spanish/net/rendering-html-documents/_index.md +++ b/html/spanish/net/rendering-html-documents/_index.md @@ -60,6 +60,10 @@ Aprenda a representar múltiples documentos HTML con Aspose.HTML para .NET. Aume Aprenda paso a paso a convertir HTML a PNG usando C# y Aspose.HTML. Guía completa con ejemplos claros. ### [Cómo renderizar HTML a PNG con Aspose – Guía completa](./how-to-render-html-to-png-with-aspose-complete-guide/) Aprenda a convertir HTML a PNG usando Aspose.HTML para .NET con esta guía completa paso a paso. +### [Crear documento PDF en C# – Renderizar HTML a PDF con Aspose](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +Aprenda a generar documentos PDF a partir de HTML usando Aspose.HTML para .NET con ejemplos en C#. +### [Renderizar HTML a PDF y comprimirlo – Guía completa en C#](./render-html-to-pdf-and-zip-it-complete-c-guide/) +Aprenda a convertir HTML a PDF y comprimir el resultado en un archivo ZIP usando Aspose.HTML para .NET con ejemplos en C#. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/spanish/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/spanish/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..36caeae5e --- /dev/null +++ b/html/spanish/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,230 @@ +--- +category: general +date: 2026-03-28 +description: Crear documento PDF en C# usando Aspose HTML a PDF. Aprende cómo renderizar + HTML a PDF, convertir HTML a PDF y habilitar el hinting para Linux. +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: es +og_description: Crea documentos PDF en C# al instante. Esta guía muestra cómo renderizar + HTML a PDF, convertir HTML a PDF y usar Aspose HTML a PDF con sugerencias de texto. +og_title: Crear documento PDF C# – Renderizar HTML a PDF con Aspose +tags: +- Aspose +- C# +- PDF generation +title: Crear documento PDF C# – Renderizar HTML a PDF con Aspose +url: /es/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crear documento PDF C# – Renderizar HTML a PDF con Aspose + +¿Alguna vez necesitaste **create PDF document C#** a partir de una cadena HTML dinámica y te preguntaste por qué el texto se ve borroso en Linux? No eres el único rascándote la cabeza. La buena noticia es que Aspose HTML lo hace muy fácil para **render HTML to PDF**, y con un par de opciones adicionales puedes obtener glifos ultra nítidos incluso en servidores sin interfaz gráfica. + +En este tutorial recorreremos un ejemplo completo y listo para ejecutar que **converts HTML to PDF** usando la biblioteca Aspose HTML para .NET. También cubriremos por qué podrías querer habilitar el hinting, cómo configurar la canalización de renderizado y qué hacer si necesitas personalizar el tamaño de página o DPI más adelante. No se requieren documentos externos, solo copia, pega y ejecuta. + +## Lo que necesitarás + +- **.NET 6+** (o .NET Framework 4.6.2+). Aspose HTML admite ambos, pero el ejemplo a continuación está dirigido a .NET 6 por simplicidad. +- **Aspose.HTML for .NET** paquete NuGet (`Aspose.Html`). Instálalo mediante la consola del Administrador de paquetes: + + ```powershell + Install-Package Aspose.Html + ``` + +- Un entorno **Linux o Windows**. La bandera de hinting es especialmente útil en Linux, pero el código funciona en cualquier lugar. +- Un IDE o editor de tu elección (Visual Studio, VS Code, Rider…). + +Eso es todo—sin fuentes adicionales, sin controladores de impresora PDF, solo una única DLL. + +## Paso 1: Configurar opciones de renderizado de texto (Palabra clave principal en acción) + +Lo primero que hacemos es indicarle a Aspose cómo manejar el renderizado de glifos. En Linux el rasterizador predeterminado puede producir caracteres borrosos, por lo que activamos el hinting. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**¿Por qué?** +`UseHinting` obliga al renderizador a alinear los contornos vectoriales a la cuadrícula de píxeles, lo que elimina los bordes difusos que a menudo se ven en PDFs generados en contenedores Linux sin cabeza. La propiedad `FontSize` no es obligatoria, pero te brinda una línea base predecible para cualquier HTML que no especifique su propio tamaño. + +> **Consejo profesional:** Si solo apuntas a Windows, puedes omitir el hinting—Windows ya aplica renderizado subpíxel automáticamente. + +## Paso 2: Adjuntar opciones de texto a la configuración de renderizado PDF + +A continuación creamos una instancia de `PdfRenderingOptions` y conectamos las `TextOptions` que acabamos de configurar. Este objeto gobierna todo el proceso de conversión. + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**¿Por qué enlazarlos?** +El objeto `PdfRenderingOptions` es el puente entre el motor HTML y el escritor de PDF. Al asignar `TextOptions` aquí, cada página renderizada heredará la configuración de hinting, garantizando una salida consistente en todo el documento. + +## Paso 3: Cargar tu contenido HTML + +Aspose te permite proporcionar HTML desde una cadena, un archivo o incluso una URL. Para este tutorial lo mantendremos simple y usaremos una cadena en memoria. + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**¿Por qué una cadena?** +Cuando generas informes al vuelo (p. ej., facturas, recibos), a menudo ensamblas HTML usando interpolación de cadenas o un motor de plantillas. Pasar una cadena directamente evita archivos temporales y acelera la canalización. + +## Paso 4: Guardar el PDF con las opciones configuradas + +Ahora finalmente escribimos el PDF en disco. El método `Save` recibe la ruta de destino y las opciones de renderizado que preparamos anteriormente. + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**Lo que verás:** +Abre `hinted.pdf` con cualquier visor de PDF. El párrafo “Hinted text on Linux” debería aparecer nítido, con la fuente Arial renderizada limpiamente. En Linux notarás la diferencia comparado con un PDF generado sin `UseHinting`. + +> **Salida esperada:** un PDF de una sola página que contiene el párrafo en Arial de 14 pt, sin bordes borrosos. + +### Ejemplo completo en funcionamiento + +A continuación está el programa completo que puedes copiar en un proyecto de aplicación de consola. Incluye todas las declaraciones using, manejo de errores y comentarios para mayor claridad. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +Ejecuta el programa (`dotnet run`), y tendrás un PDF listo para distribución, archivado o procesamiento adicional. + + + +## Preguntas frecuentes (FAQ) + +### ¿Esto funciona con **aspose html to pdf** en .NET Core? + +Absolutamente. La misma superficie de API está disponible en .NET Framework, .NET Core y .NET 5/6. Solo asegúrate de que la versión del paquete NuGet coincida con tu framework objetivo. + +### ¿Cómo puedo **render HTML to PDF** con tamaño de página personalizado? + +Crea un objeto `PdfPageSetup`, establece `Width`, `Height` o `Size`, y asígnalo a `pdfRenderOptions.PageSetup`. Ejemplo: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### ¿Qué pasa si necesito **convert HTML to PDF** en una API web? + +Devuelve el PDF como un `FileResult`: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### ¿Puedo usar esto para **html to pdf c#** en un contenedor Docker Linux? + +Sí. La bandera de hinting está diseñada específicamente para entornos Linux sin cabeza. Simplemente instala el paquete `libgdiplus` si estás en Alpine, y la conversión funcionará de inmediato. + +## Ajustes avanzados (Más allá de lo básico) + +- **Embedding Fonts:** Si tu HTML hace referencia a fuentes personalizadas, llama a `htmlDoc.Fonts.Add("MyFont", fontBytes);` antes de renderizar. +- **Image Handling:** Habilita `pdfRenderOptions.ImageResolution = 300;` para gráficos de alta DPI. +- **Security:** Usa `PdfSaveOptions` para proteger con contraseña la salida (`PdfSaveOptions.Password = "secret";`). + +Estas opciones te permiten convertir un fragmento simple de **convert html to pdf** en un servicio listo para producción. + +## Resumen + +Acabamos de demostrar cómo **create PDF document C#** renderizando HTML con Aspose HTML, habilitando el hinting de texto para una salida más nítida en Linux, y guardando el resultado con una única llamada a método. Los pasos cubiertos: + +1. Configurar `TextOptions` (hinting). +2. Adjuntarlas a `PdfRenderingOptions`. +3. Cargar HTML desde una cadena. +4. Guardar el PDF. + +Ahora tienes una base sólida para cualquier escenario que requiera **aspose html to pdf**, **render html to pdf**, **convert html to pdf**, o **html to pdf c#**. Siéntete libre de experimentar con diseños de página, fuentes incrustadas o transmitir el PDF directamente a un cliente. + +--- + +**Próximos pasos:** +- Intenta convertir un informe HTML de varias páginas con tablas e imágenes. +- Explora la API `PdfDocument` de Aspose para post‑procesamiento (agregar marcadores, marcas de agua). +- Combina esta conversión con una cola de trabajos en segundo plano (p. ej., Hangfire) para generar PDFs bajo demanda. + +¡Feliz codificación, y que tus PDFs siempre sean nítidos! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/spanish/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/spanish/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..1c81b548b --- /dev/null +++ b/html/spanish/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-28 +description: Renderizar HTML a PDF directamente desde una URL y comprimir el resultado + en un archivo ZIP. Aprende cómo convertir una URL a PDF, generar PDF a partir de + un sitio web y comprimir el archivo PDF en C#. +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: es +og_description: Renderiza HTML a PDF directamente desde una URL, luego comprime el + PDF en un archivo ZIP. Este tutorial paso a paso muestra cómo convertir una URL + a PDF, generar PDF a partir de un sitio web y comprimir el archivo PDF en C#. +og_title: Renderizar HTML a PDF y comprimirlo – Guía completa de C# +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: Renderizar HTML a PDF y comprimirlo – Guía completa de C# +url: /es/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Render HTML to PDF and Zip It – Complete C# Guide + +¿Alguna vez necesitaste **renderizar HTML a PDF** al vuelo y luego enviar el archivo a un cliente como un único archivo comprimido? Tal vez estés construyendo un servicio de informes que extrae una página web en vivo, la convierte en PDF y almacena el resultado en un zip para una descarga sencilla. En este tutorial recorreremos exactamente eso: renderizar una página web remota a PDF y luego **comprimir el PDF en un zip** sin tocar el disco. + +También cubriremos cómo **convertir URL a PDF**, **generar PDF desde un sitio web**, y finalmente **comprimir archivo PDF** para que puedas enviarlo donde lo necesites. Sin rodeos, solo una solución funcional que puedes incorporar a un proyecto .NET 6+ hoy mismo. + +## What You’ll Need + +- **.NET 6** o posterior (el código también funciona con .NET Framework 4.6+). +- **Aspose.HTML for .NET** – la biblioteca que realiza el trabajo pesado de renderizado HTML‑a‑PDF. +- Una cantidad modesta de experiencia en C#—si puedes escribir un `Console.WriteLine`, estás listo. +- Un IDE de tu elección (Visual Studio, Rider, VS Code…). + +> **Pro tip:** Aspose.HTML ofrece una prueba gratuita que incluye todas las funciones de renderizado. Obténla desde el [Aspose website](https://products.aspose.com/html/net/) antes de comenzar. + +Ahora que los requisitos están cubiertos, vamos al grano. + +## Step 1 – Load the Remote HTML Document (Convert URL to PDF) + +Lo primero que debemos hacer es indicarle a Aspose.HTML dónde está la fuente. En nuestro caso es una URL pública, pero también podrías pasarle una cadena que contenga HTML sin procesar. + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Why this matters:** Cargar el documento desde una URL hace que el renderizador obtenga automáticamente todos los recursos enlazados (CSS, imágenes, fuentes), dándote una réplica fiel en PDF del sitio en vivo. Omitir este paso y pasar una cadena simple eliminaría esos recursos, lo cual rara vez es lo que deseas cuando *generate PDF from website*. + +## Step 2 – Configure PDF Rendering Options (Quality Matters) + +Aspose.HTML te permite ajustar cómo se ve el PDF. El antialiasing y el hinting de fuentes son dos configuraciones que hacen que la salida se vea nítida en pantalla y en impresión. + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Why we set these:** Sin antialiasing, el arte lineal y los gráficos vectoriales pueden aparecer dentados, especialmente en pantallas de alta DPI. El hinting, por otro lado, indica al motor PDF cómo alinear los glifos a los límites de píxeles, un pequeño ajuste que a menudo produce una gran diferencia visual. + +## Step 3 – Prepare an In‑Memory ZIP Archive (Zip PDF File) + +En lugar de escribir el PDF en disco primero y luego comprimirlo —una pesadilla de I/O en dos pasos— transmitiremos directamente a una entrada del zip. Esto mantiene todo en memoria, lo cual es perfecto para APIs web o trabajos en segundo plano. + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Edge case note:** Si estás manejando PDFs masivos (cientos de MB), considera canalizar el zip directamente a un stream de respuesta en lugar de mantener todo en memoria. Para informes típicos de menos de 20 MB, este enfoque es seguro y rápido. + +## Step 4 – Stream the PDF Directly into a ZIP Entry + +Aquí está la parte ingeniosa: creamos una entrada zip llamada `output.pdf` y le entregamos su stream a Aspose.HTML. El renderizador escribe los bytes del PDF directamente en la entrada del zip—no se necesita archivo temporal. + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Why we do it this way:** Al proporcionar al escritor de PDF un stream que apunta a una entrada zip, evitamos el ciclo “escribir‑en‑disco → zip → eliminar”. Esto no solo reduce la sobrecarga de I/O, sino que también elimina el riesgo de dejar archivos huérfanos en el servidor. + +## Step 5 – Finalize the ZIP and Persist It + +Una vez escrito el PDF, debemos cerrar el archivo zip para que el directorio central se vacíe, y luego escribir todo en disco (o devolverlo desde una API). + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Result you’ll see:** Un archivo llamado `result.zip` que contiene una única entrada `output.pdf`. Al abrir el PDF verás una captura pixel‑perfecta de `https://example.com`, completa con estilos e imágenes. + + + +*Image alt text: render html to pdf – captura de pantalla del PDF generado dentro de un archivo ZIP.* + +## Full Working Example + +Juntando todo, aquí tienes el programa completo listo para copiar y pegar: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### What to Expect + +- **`result.zip`** aparece en `C:\Temp`. +- Dentro del archivo encontrarás **`output.pdf`**. +- Al abrir el PDF verás la página en vivo de `https://example.com` renderizada fielmente. + +Si ejecutas el programa y el zip está vacío, verifica que la URL sea accesible y que Aspose.HTML tenga permiso para descargar recursos externos (firewalls, configuraciones de proxy, etc.). + +## Common Questions & Edge Cases + +| Pregunta | Respuesta | +|----------|-----------| +| *¿Qué pasa si la página referencia fuentes externas?* | Aspose.HTML descarga automáticamente las web‑fonts referenciadas mediante `@font-face`. Asegúrate de que el servidor pueda alcanzar las URLs de las fuentes. | +| *¿Puedo añadir varios PDFs en el mismo ZIP?* | Sí—simplemente llama a `zipArchive.CreateEntry("report2.pdf")` y renderiza otro `HTMLDocument` en ese stream. | +| *¿Cómo establezco un nombre de archivo PDF personalizado?* | Cambia la cadena pasada a `CreateEntry`, por ejemplo `CreateEntry("my‑invoice.pdf")`. | +| *¿Es seguro usar esto en una aplicación web multihilo?* | Cada solicitud debe crear su propio `MemoryStream` y `ZipArchive`. Los objetos no son thread‑safe, por lo que instancias compartidas provocarán corrupción. | +| *¿Qué ocurre con PDFs muy grandes?* | Para PDFs > 100 MB, considera transmitir directamente a la respuesta HTTP (`Response.Body`) en lugar de almacenar todo en memoria. | + +## Wrapping Up + +Acabamos de mostrarte cómo **renderizar HTML a PDF**, **convertir URL a PDF**, **generar PDF desde un sitio web**, y finalmente **comprimir archivo PDF**—todo en un flujo de trabajo limpio y en memoria. + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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..be63aa3c0 100644 --- a/html/spanish/net/working-with-html-documents/_index.md +++ b/html/spanish/net/working-with-html-documents/_index.md @@ -41,6 +41,8 @@ Ahora, llevemos tus habilidades al siguiente nivel. Editar documentos HTML es un Aprenda a aplicar estilo negrita a encabezados usando CSS y C# con este tutorial detallado. +### [Crear HTML a partir de una cadena en C# – Guía completa con Memory Stream](./create-html-from-string-in-c-full-guide-with-memory-stream/) + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/spanish/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/spanish/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..6fac0c405 --- /dev/null +++ b/html/spanish/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,278 @@ +--- +category: general +date: 2026-03-28 +description: Crear HTML a partir de una cadena usando Aspose.Html y capturarlo en + un flujo. Aprende a convertir HTML a cadena, manejar recursos personalizados y escribir + HTML en un flujo. +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: es +og_description: Crear HTML a partir de una cadena con Aspose.Html, capturarlo en memoria + y convertir HTML a cadena. Guía paso a paso para un controlador de recursos personalizado + y escribir HTML en un flujo. +og_title: Crear HTML a partir de una cadena en C# – Tutorial completo de Memory‑Stream +tags: +- Aspose.Html +- C# +- MemoryStream +title: Crear HTML a partir de una cadena en C# – Guía completa con Memory Stream +url: /es/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crear HTML a partir de una cadena en C# – Guía completa con Memory Stream + +¿Alguna vez necesitaste **crear HTML a partir de una cadena** y mantener todo en memoria sin tocar el sistema de archivos? No eres el único. Muchos desarrolladores se encuentran con este obstáculo cuando quieren generar marcado dinámico al vuelo—por ejemplo para una plantilla de correo electrónico o una conversión a PDF—pero no quieren un archivo temporal que ensucie el disco. + +¿La buena noticia? Con Aspose.Html puedes crear un `HTMLDocument` directamente a partir de una cadena, alimentarlo a un **custom resource handler**, y **write HTML to stream** para uso posterior. En este tutorial recorreremos cada paso, desde la cadena inicial hasta el resultado final de tipo `string`, y explicaremos *por qué* cada pieza es importante. + +Al final de esta guía podrás: + +* Crear HTML a partir de una cadena usando Aspose.Html. +* Convertir HTML a string sin escribir en disco. +* Capturar HTML con un custom resource handler. +* Escribir HTML a un `MemoryStream` y leerlo de nuevo. +* Identificar problemas comunes y aplicar consejos de mejores prácticas. + +No se requieren dependencias externas más allá de Aspose.Html—solo un proyecto .NET y unas cuantas declaraciones using. + +--- + +## Requisitos previos + +* .NET 6.0 o posterior (el código también funciona en .NET Framework). +* Paquete NuGet Aspose.Html for .NET (`Install-Package Aspose.Html`). +* Conocimientos básicos de C#—si has escrito un `Console.WriteLine` antes, estás listo. + +--- + +## Paso 1: Crear HTML a partir de una cadena – el punto de partida + +Lo primero que necesitamos es una cadena HTML cruda. Piensa en ella como el esqueleto que normalmente pegarías en un archivo `.html`. + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "`‑tagg, injicera den stil vi byggt och sätta dess textinnehåll. + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +Om du inspekterar `paragraph.OuterHtml` kommer du att se något liknande: + +```html +
Bold & Italic text
+``` + +Den raden demonstrerar **add bold italic text** utan att någonsin skriva råa CSS‑strängar. + +## Steg 5: Lägg till stycket i body + +Till sist **append element to body**. Detta är den sista pusselbiten som faktiskt renderar stycket på sidan. + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +Du kan också anropa `htmlDoc.Body.InsertBefore` eller `ReplaceChild` om du behöver mer komplex placering. För de flesta scenarier räcker en enkel `AppendChild`. + +## Steg 6: Skriv ut HTML‑strängen (eller spara till fil) + +Nu när vi har byggt DOM‑en, låt oss extrahera den slutgiltiga HTML‑en. Aspose.HTML låter dig serialisera dokumentet med ett enda anrop. + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +När du öppnar `result.html` i en webbläsare ser du ett enda stycke som är både fet och kursiv, exakt som vi avsåg. + +### Förväntat resultat + +```html + + + + +Bold & Italic text
+ + +``` + +Om du genererar HTML för ett e‑postmeddelande, släng bara `finalHtml` i ditt e‑postmeddelande och stilen kommer att överleva i de flesta moderna klienter. + +## Vanliga variationer & kantfall + +- **Multiple Styles:** Vill du också lägga till en bakgrundsfärg? Utöka `CSSStyleDeclaration`: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **Different Elements:** Istället för en `` kan du skapa en `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +Kör detta program, öppna `result.html`, och du kommer att se det stylade stycket renderat exakt som beskrivet. Ingen manuell strängkonkatenering, inga sköra HTML‑litteraler—bara ren, typ‑säker DOM‑manipulering. + +## Avslutning + +Vi har svarat på **how to create HTML** från grunden med Aspose.HTML, demonstrerat **append element to body**, visat ett tydligt sätt att **create paragraph element**, förklarat **add bold italic text**, och gått igenom nyanserna av **add css style programmatically**. + +Om du är bekväm med detta mönster kan du expandera det för att generera fullständiga sidor: tabeller, bilder, till och med interaktiva skript. Samma principer gäller—definiera stilar, skapa element, sätt attribut och lägg till dem där de hör hemma. + +### Vad blir nästa? + +- **Dynamic Content:** Hämta data från en databas och loopa för att generera rader i en tabell. +- **Styling Libraries:** Kombinera detta tillvägagångssätt med externa CSS‑filer för större projekt. +- **Export Options:** Skicka `HTMLDocument` direkt till Aspose.PDF eller Aspose.Words för att producera PDF‑ eller DOCX‑filer utan en mellanliggande sträng. + +Känn dig fri att experimentera, bryta saker och sedan fixa dem—det är det snabbaste sättet att internalisera DOM‑programmering i C#. Har du frågor eller ett annat användningsfall? Lämna en kommentar nedanför, och lycka till med kodandet! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/swedish/net/rendering-html-documents/_index.md b/html/swedish/net/rendering-html-documents/_index.md index 72cae28c3..1f9b4a19f 100644 --- a/html/swedish/net/rendering-html-documents/_index.md +++ b/html/swedish/net/rendering-html-documents/_index.md @@ -60,6 +60,10 @@ Lås upp kraften i Aspose.HTML för .NET! Lär dig hur du renderar SVG-dokument Lär dig hur du med Aspose.HTML för .NET konverterar HTML till PNG i en detaljerad steg‑för‑steg‑handledning. ### [Hur man renderar HTML till PNG med Aspose – Komplett guide](./how-to-render-html-to-png-with-aspose-complete-guide/) Lär dig hur du med Aspose.HTML för .NET konverterar HTML till PNG i en komplett guide. +### [Skapa PDF-dokument C# – Rendera HTML till PDF med Aspose](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +Lär dig hur du med Aspose.HTML för .NET konverterar HTML till PDF i en detaljerad guide. +### [Rendera HTML till PDF och zippa det – Komplett C#-guide](./render-html-to-pdf-and-zip-it-complete-c-guide/) +Lär dig hur du med Aspose.HTML för .NET konverterar HTML till PDF och packar dem i en zip-fil i en komplett guide. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/swedish/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/swedish/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..5174a966b --- /dev/null +++ b/html/swedish/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-03-28 +description: Skapa PDF-dokument i C# med Aspose HTML till PDF. Lär dig hur du renderar + HTML till PDF, konverterar HTML till PDF och aktiverar hinting för Linux. +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: sv +og_description: Skapa PDF-dokument i C# omedelbart. Den här guiden visar hur man renderar + HTML till PDF, konverterar HTML till PDF och använder Aspose HTML till PDF med texthintning. +og_title: Skapa PDF-dokument C# – Rendera HTML till PDF med Aspose +tags: +- Aspose +- C# +- PDF generation +title: Skapa PDF-dokument C# – Rendera HTML till PDF med Aspose +url: /sv/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Skapa PDF-dokument C# – Rendera HTML till PDF med Aspose + +Har du någonsin behövt **create PDF document C#** från en dynamisk HTML-sträng och undrat varför texten ser suddig ut på Linux? Du är inte den enda som kliar dig i huvudet. Den goda nyheten är att Aspose HTML gör det enkelt att **render HTML to PDF**, och med ett par extra alternativ kan du få knivskarpa glyfer även på huvudlösa servrar. + +I den här handledningen går vi igenom ett komplett, färdigt‑att‑köra exempel som **converts HTML to PDF** med Aspose HTML för .NET-biblioteket. Vi kommer också att gå igenom varför du kanske vill aktivera hinting, hur du ställer in renderings‑pipeline, och vad du ska göra om du behöver anpassa sidstorlek eller DPI senare. Inga externa dokument behövs—bara kopiera, klistra in och kör. + +## Vad du behöver + +- **.NET 6+** (eller .NET Framework 4.6.2+). Aspose HTML stöder båda, men exemplet nedan riktar sig mot .NET 6 för enkelhet. +- **Aspose.HTML for .NET** NuGet‑paket (`Aspose.Html`). Installera det via Package Manager Console: + + ```powershell + Install-Package Aspose.Html + ``` + +- En **Linux or Windows**‑miljö. Hint‑flaggan är särskilt användbar på Linux, men koden fungerar överallt. +- En IDE eller redigerare efter eget val (Visual Studio, VS Code, Rider…). + +Det är allt—inga extra typsnitt, inga PDF‑skrivar‑drivrutiner, bara en enda DLL. + +## Steg 1: Konfigurera Text Rendering Options (Primary Keyword in Action) + +Det första vi gör är att tala om för Aspose hur glyfrendering ska hanteras. På Linux kan standard‑rasterizern producera suddiga tecken, så vi aktiverar hinting. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**Varför?** +`UseHinting` tvingar renderaren att justera vektor‑konturer till pixel‑gittret, vilket eliminerar de suddiga kanterna du ofta ser i PDF‑filer som genereras på huvudlösa Linux‑containrar. `FontSize`‑egenskapen är inte obligatorisk, men den ger dig en förutsägbar baslinje för all HTML som inte specificerar sin egen storlek. + +> **Pro tip:** Om du endast riktar dig mot Windows kan du hoppa över hinting—Windows tillämpar redan sub‑pixel‑rendering automatiskt. + +## Steg 2: Anslut Text Options till PDF Rendering Settings + +Nästa steg är att skapa en `PdfRenderingOptions`‑instans och ansluta de `TextOptions` vi just konfigurerade. Detta objekt styr hela konverteringsprocessen. + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**Varför binda dem?** +`PdfRenderingOptions`‑objektet är bron mellan HTML‑motorn och PDF‑skrivaren. Genom att tilldela `TextOptions` här kommer varje renderad sida att ärva hint‑konfigurationen, vilket säkerställer konsekvent output i hela dokumentet. + +## Steg 3: Ladda ditt HTML‑innehåll + +Aspose låter dig mata in HTML från en sträng, en fil eller till och med en URL. För den här handledningen håller vi det enkelt och använder en in‑memory‑sträng. + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**Varför en sträng?** +När du genererar rapporter i farten (t.ex. fakturor, kvitton) samlar du ofta HTML med stränginterpolering eller en mallmotor. Att skicka en sträng direkt undviker temporära filer och snabbar upp pipeline‑processen. + +## Steg 4: Spara PDF‑filen med de konfigurerade alternativen + +Nu skriver vi äntligen PDF‑filen till disk. `Save`‑metoden tar mål‑sökvägen och renderingsalternativen som vi förberedde tidigare. + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**Vad du kommer att se:** +Öppna `hinted.pdf` med någon PDF‑visare. Stycket “Hinted text on Linux” bör visas skarpt, med Arial‑typsnittet renderat rent. På Linux kommer du att märka skillnaden jämfört med en PDF som genererats utan `UseHinting`. + +> **Expected output:** en enkelsidig PDF som innehåller stycket i 14‑pt Arial, utan suddiga kanter. + +### Fullt fungerande exempel + +Nedan är det kompletta programmet som du kan kopiera in i ett konsol‑app‑projekt. Det inkluderar alla using‑satser, felhantering och kommentarer för tydlighet. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +Kör programmet (`dotnet run`), så har du en PDF redo för distribution, arkivering eller vidare bearbetning. + + + +## Vanliga frågor (FAQ) + +### Fungerar detta med **aspose html to pdf** på .NET Core? +Absolut. Samma API‑yta exponeras över .NET Framework, .NET Core och .NET 5/6. Se bara till att NuGet‑paketets version matchar ditt mål‑ramverk. + +### Hur kan jag **render HTML to PDF** med anpassad sidstorlek? +Skapa ett `PdfPageSetup`‑objekt, sätt `Width`, `Height` eller `Size`, och tilldela det till `pdfRenderOptions.PageSetup`. Exempel: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### Vad händer om jag behöver **convert HTML to PDF** i ett web‑API? +Returnera PDF‑filen som ett `FileResult`: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### Kan jag använda detta för **html to pdf c#** i en Linux Docker‑container? +Ja. Hint‑flaggan är speciellt designad för huvudlösa Linux‑miljöer. Installera bara `libgdiplus`‑paketet om du är på Alpine, så fungerar konverteringen direkt. + +## Avancerade justeringar (bortom grunderna) + +- **Embedding Fonts:** Om din HTML refererar till anpassade typsnitt, anropa `htmlDoc.Fonts.Add("MyFont", fontBytes);` före rendering. +- **Image Handling:** Aktivera `pdfRenderOptions.ImageResolution = 300;` för hög‑DPI‑grafik. +- **Security:** Använd `PdfSaveOptions` för att lösenordsskydda output (`PdfSaveOptions.Password = "secret";`). + +Dessa alternativ låter dig förvandla ett enkelt **convert html to pdf**‑snutt till en produktionsklar tjänst. + +## Sammanfattning + +Vi har precis demonstrerat hur man **create PDF document C#** genom att rendera HTML med Aspose HTML, aktivera text‑hinting för skarpare output på Linux, och spara resultatet med ett enda metodanrop. Stegen som täcktes: + +1. Ställ in `TextOptions` (hinting). +2. Anslut dem till `PdfRenderingOptions`. +3. Ladda HTML från en sträng. +4. Spara PDF‑filen. + +Nu har du en solid grund för alla scenarier som kräver **aspose html to pdf**, **render html to pdf**, **convert html to pdf**, eller **html to pdf c#**. Känn dig fri att experimentera med sidlayouter, inbäddade typsnitt eller att streama PDF‑filen direkt till en klient. + +--- + +**Nästa steg:** +- Försök konvertera en flersidig HTML‑rapport med tabeller och bilder. +- Utforska Aspose’s `PdfDocument`‑API för efterbehandling (lägga till bokmärken, vattenstämplar). +- Kombinera denna konvertering med en bakgrunds‑jobbkö (t.ex. Hangfire) för att generera PDF‑filer på begäran. + +Lycka till med kodningen, och må dina PDF‑filer alltid vara skarpa! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/swedish/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/swedish/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..8202fb54c --- /dev/null +++ b/html/swedish/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-28 +description: Rendera HTML till PDF direkt från en URL och komprimera resultatet till + en ZIP‑fil. Lär dig hur du konverterar URL till PDF, genererar PDF från en webbplats + och zippar PDF‑filen i C#. +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: sv +og_description: Rendera HTML till PDF direkt från en URL och komprimera sedan PDF-filen + till ett ZIP‑arkiv. Denna steg‑för‑steg‑handledning visar hur du konverterar en + URL till PDF, genererar PDF från en webbplats och zippar PDF-filen i C#. +og_title: Rendera HTML till PDF och zipa det – Komplett C#‑guide +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: Rendera HTML till PDF och zipa det – Komplett C#‑guide +url: /sv/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Rendera HTML till PDF och zippa det – Komplett C#‑guide + +Har du någonsin behövt **render HTML to PDF** i realtid och sedan skicka filen till en klient som ett enda arkiv? Kanske bygger du en rapporttjänst som hämtar en live‑webbsida, omvandlar den till en PDF och lagrar resultatet i en zip för enkel nedladdning. I den här handledningen går vi igenom exakt det – renderar en fjärrwebbsida till PDF och sedan **compress the PDF in a zip** utan att någonsin röra disken. + +Vi kommer också att gå igenom hur man **convert URL to PDF**, **generate PDF from website**, och slutligen **zip PDF file** så att du kan skicka den var du än behöver. Inga onödiga detaljer, bara en fungerande lösning som du kan släppa in i ett .NET 6+‑projekt idag. + +## Vad du behöver + +- **.NET 6** eller senare (koden fungerar även med .NET Framework 4.6+). +- **Aspose.HTML for .NET** – biblioteket som gör det tunga lyftet för HTML‑to‑PDF‑rendering. +- En viss erfarenhet av C#—om du kan skriva en `Console.WriteLine` är du redo. +- En IDE du föredrar (Visual Studio, Rider, VS Code…). + +> **Pro tip:** Aspose.HTML erbjuder en gratis provversion som inkluderar alla renderingsfunktioner. Hämta den från [Aspose website](https://products.aspose.com/html/net/) innan du börjar. + +Nu när förutsättningarna är avklarade, låt oss dyka in. + +## Steg 1 – Ladda det fjärranslutna HTML‑dokumentet (Convert URL to PDF) + +Det första vi måste göra är att tala om för Aspose.HTML var källan finns. I vårt fall är det en publik URL, men du kan lika gärna mata in en sträng som innehåller rå HTML. + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Why this matters:** Att ladda dokumentet från en URL innebär att renderaren automatiskt hämtar alla länkade resurser (CSS, bilder, typsnitt), vilket ger dig en trogen PDF‑replik av den live‑sidan. Att hoppa över detta steg och mata in en vanlig sträng skulle ta bort dessa tillgångar, vilket sällan är vad du vill när du *generate PDF from website*. + +## Steg 2 – Konfigurera PDF‑renderingsalternativ (Kvalitet är viktigt) + +Aspose.HTML låter dig finjustera hur PDF‑filen ser ut. Antialiasing och font hinting är två inställningar som får resultatet att se skarpt ut på skärm och i utskrift. + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Why we set these:** Utan antialiasing kan linjekonst och vektorgrafik se hackig ut, särskilt på hög‑DPI‑skärmar. Hinting, å andra sidan, instruerar PDF‑motorn hur tecken ska justeras till pixelgränser, en liten justering som ofta gör en stor visuell skillnad. + +## Steg 3 – Förbered ett ZIP‑arkiv i minnet (Zip PDF File) + +Istället för att först skriva PDF‑filen till disk och sedan zipa den – ett tvåstegs‑I/O‑mardröm – kommer vi att strömma direkt in i ett zip‑objekt. Detta håller allt i minnet, vilket är perfekt för webb‑API:er eller bakgrundsjobb. + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Edge case note:** Om du hanterar massiva PDF‑filer (hundratals MB), överväg att leda zip‑filen direkt till ett svar‑ström istället för att hålla hela i minnet. För vanliga rapporter under 20 MB är detta tillvägagångssätt säkert och snabbt. + +## Steg 4 – Strömma PDF‑filen direkt in i ett ZIP‑objekt + +Här är den smarta delen: vi skapar ett zip‑objekt med namnet `output.pdf` och ger dess ström tillbaka till Aspose.HTML. Renderaren skriver PDF‑bytena direkt in i zip‑objektet – ingen temporär fil behövs. + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Why we do it this way:** Genom att ge PDF‑skrivaren en ström som pekar på ett zip‑objekt undviker vi cykeln ”skriv‑till‑disk → zip → radera”. Detta minskar inte bara I/O‑belastningen utan eliminerar också risken för överblivna filer på servern. + +## Steg 5 – Slutför ZIP‑filen och spara den + +När PDF‑filen har skrivits måste vi stänga zip‑arkivet så att den centrala katalogen skrivs ut, och sedan skriva hela paketet till disk (eller returnera det från ett API). + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Result you’ll see:** En fil kallad `result.zip` som innehåller ett enda objekt `output.pdf`. När du öppnar PDF‑filen visas en pixel‑perfekt avbildning av `https://example.com`, komplett med stilar och bilder. + + + +*Bildtext: render html to pdf – skärmdump av genererad PDF i ett ZIP‑arkiv.* + +## Fullständigt fungerande exempel + +Sätter vi ihop allt, här är det kompletta, kopiera‑och‑klistra‑klara programmet: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### Vad du kan förvänta dig + +- **`result.zip`** visas i `C:\Temp`. +- I arkivet hittar du **`output.pdf`**. +- När du öppnar PDF‑filen visas den live‑sida från `https://example.com` återgiven troget. + +Om du kör programmet och zip‑filen är tom, dubbelkolla att URL‑en är nåbar och att Aspose.HTML har behörighet att ladda ner externa resurser (brandväggar, proxy‑inställningar osv.). + +## Vanliga frågor & edge‑cases + +| Fråga | Svar | +|----------|--------| +| *Vad händer om sidan refererar till externa typsnitt?* | Aspose.HTML laddar automatiskt ner web‑fonts som refereras via `@font-face`. Se till att servern kan nå typsnitts‑URL:erna. | +| *Kan jag lägga till flera PDF‑filer i samma ZIP?* | Ja – anropa bara `zipArchive.CreateEntry("report2.pdf")` och rendera ett annat `HTMLDocument` till den strömmen. | +| *Hur sätter jag ett eget PDF‑filnamn?* | Ändra strängen som skickas till `CreateEntry`, t.ex. `CreateEntry("my‑invoice.pdf")`. | +| *Är det säkert att använda detta i en flertrådad webbapp?* | Varje begäran bör skapa sin egen `MemoryStream` och `ZipArchive`. Objektet är inte trådsäkert, så delade instanser kan leda till korruption. | +| *Vad händer med stora PDF‑filer?* | För PDF‑filer > 100 MB, överväg att strömma direkt till HTTP‑svaret (`Response.Body`) istället för att buffra i minnet. | + +## Avslutning + +Vi har just visat dig hur du **render HTML to PDF**, **convert URL to PDF**, **generate PDF from website**, och slutligen **zip PDF file** – allt i ett rent, minnes‑baserat arbetsflöde. + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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..b9ef8fe62 100644 --- a/html/swedish/net/working-with-html-documents/_index.md +++ b/html/swedish/net/working-with-html-documents/_index.md @@ -43,6 +43,8 @@ Lär dig spara HTML i C# med en anpassad resurs‑hanterare och generera komplet 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. +### [Skapa HTML från en sträng i C# – Fullständig guide med minnesström](./create-html-from-string-in-c-full-guide-with-memory-stream/) + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/swedish/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/swedish/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..83386c837 --- /dev/null +++ b/html/swedish/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,278 @@ +--- +category: general +date: 2026-03-28 +description: Skapa HTML från en sträng med Aspose.Html och fånga den till en ström. + Lär dig att konvertera HTML till sträng, anpassad resurs‑hanterare och skriva HTML + till en ström. +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: sv +og_description: Skapa HTML från en sträng med Aspose.Html, fånga den i minnet och + konvertera HTML till en sträng. Steg‑för‑steg‑guide för anpassad resurs‑hanterare + och skrivning av HTML till en ström. +og_title: Skapa HTML från en sträng i C# – Komplett Memory‑Stream‑tutorial +tags: +- Aspose.Html +- C# +- MemoryStream +title: Skapa HTML från en sträng i C# – Fullständig guide med minnesström +url: /sv/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Skapa HTML från sträng i C# – Fullständig guide med minnesström + +Har du någonsin behövt **create HTML from string** och hålla allt i minnet utan att röra filsystemet? Du är inte ensam. Många utvecklare stöter på detta hinder när de vill generera dynamisk markup i farten—t.ex. för en e‑postmall eller en PDF‑konvertering—men de vill inte ha en tillfällig fil som skräpar ner disken. + +Den goda nyheten? Med Aspose.Html kan du skapa ett `HTMLDocument` direkt från en sträng, mata in det i en **custom resource handler**, och **write HTML to stream** för senare bruk. I den här handledningen går vi igenom varje steg, från den ursprungliga strängen till det slutliga `string`‑resultatet, och förklarar *varför* varje del är viktig. + +När du är klar med den här guiden kommer du att kunna: + +* Skapa HTML från sträng med Aspose.Html. +* Konvertera HTML till sträng utan att skriva till disk. +* Fånga HTML med en custom resource handler. +* Skriv HTML till en `MemoryStream` och läs tillbaka den. +* Identifiera vanliga fallgropar och tillämpa best‑practice‑tips. + +Inga externa beroenden utöver Aspose.Html krävs—bara ett .NET‑projekt och några using‑satser. + +--- + +## Förutsättningar + +* .NET 6.0 eller senare (koden fungerar även på .NET Framework). +* Aspose.Html for .NET NuGet‑paket (`Install-Package Aspose.Html`). +* Grundläggande C#‑kunskaper—om du har skrivit en `Console.WriteLine` tidigare, är du klar. + +--- + +## Steg 1: Skapa HTML från sträng – startpunkten + +Det första vi behöver är en rå HTML‑sträng. Tänk på den som skelettet du normalt skulle klistra in i en `.html`‑fil. + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "` tag, inject the style we built, and set its text content. + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +If you inspect `paragraph.OuterHtml` you’ll see something like: + +```html +
Bold & Italic text
+``` + +That line demonstrates **add bold italic text** without ever writing raw CSS strings. + +## ขั้นตอนที่ 5: เพิ่ม Paragraph ลงใน Body + +Finally, we **append element to body**. This is the last piece of the puzzle that actually renders the paragraph on the page. + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +You could also call `htmlDoc.Body.InsertBefore` or `ReplaceChild` if you needed more complex positioning. For most scenarios, a simple `AppendChild` does the trick. + +## ขั้นตอนที่ 6: ส่งออกสตริง HTML (หรือบันทึกเป็นไฟล์) + +Now that we’ve built the DOM, let’s extract the final HTML. Aspose.HTML lets you serialize the document with a single call. + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +When you open `result.html` in a browser you’ll see a single paragraph that is both bold and italic, exactly as we intended. + +### ผลลัพธ์ที่คาดหวัง + +```html + + + + +Bold & Italic text
+ + +``` + +If you’re generating HTML for an email, just drop `finalHtml` into your email body and the styling will survive most modern clients. + +## การเปลี่ยนแปลงทั่วไปและกรณีขอบ + +- **Multiple Styles:** Want to add a background color as well? Extend the `CSSStyleDeclaration`: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **Different Elements:** Instead of a ``, you could create a `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +Run this program, open `result.html`, and you’ll see the styled paragraph rendered exactly as described. No manual string concatenation, no fragile HTML literals—just clean, type‑safe DOM manipulation. + +## สรุป + +We’ve answered **how to create HTML** from scratch using Aspose.HTML, demonstrated **append element to body**, showed a clear way to **create paragraph element**, explained **add bold italic text**, and covered the nuances of **add css style programmatically**. + +If you’re comfortable with this pattern, you can expand it to generate full‑blown pages: tables, images, even interactive scripts. The same principles apply—define styles, create elements, set attributes, and append them where they belong. + +### สิ่งต่อไปที่ควรทำ? + +- **Dynamic Content:** Pull data from a database and loop to generate rows in a table. +- **Styling Libraries:** Combine this approach with external CSS files for larger projects. +- **Export Options:** Feed the `HTMLDocument` directly into Aspose.PDF or Aspose.Words to produce PDFs or DOCX files without an intermediate string. + +Feel free to experiment, break things, and then fix them—that’s the fastest way to internalize DOM programming in C#. Got questions or a different use‑case? 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/thai/net/rendering-html-documents/_index.md b/html/thai/net/rendering-html-documents/_index.md index 9266aa954..5df2a1c49 100644 --- a/html/thai/net/rendering-html-documents/_index.md +++ b/html/thai/net/rendering-html-documents/_index.md @@ -62,6 +62,11 @@ Aspose.HTML สำหรับ .NET ถือเป็นตัวเลือ เรียนรู้วิธีการเรนเดอร์ไฟล์ HTML เป็น PNG ด้วย Aspose.HTML สำหรับ .NET อย่างละเอียดในคู่มือขั้นตอนนี้! ### [วิธีเรนเดอร์ HTML เป็น PNG ด้วย Aspose – คู่มือฉบับสมบูรณ์](./how-to-render-html-to-png-with-aspose-complete-guide/) เรียนรู้วิธีการเรนเดอร์ไฟล์ HTML เป็น PNG อย่างละเอียดด้วย Aspose.HTML สำหรับ .NET ในคู่มือฉบับสมบูรณ์นี้! +### [สร้างเอกสาร PDF C# – เรนเดอร์ HTML เป็น PDF ด้วย Aspose](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +เรียนรู้วิธีสร้างไฟล์ PDF จาก HTML ด้วย C# และ Aspose.HTML สำหรับ .NET อย่างละเอียดในคู่มือฉบับสมบูรณ์นี้! + +### [เรนเดอร์ HTML เป็น PDF และบีบอัดเป็น Zip – คู่มือ C# ฉบับสมบูรณ์](./render-html-to-pdf-and-zip-it-complete-c-guide/) +เรียนรู้วิธีการเรนเดอร์ไฟล์ HTML เป็น PDF แล้วบีบอัดเป็นไฟล์ Zip ด้วย C# อย่างละเอียดในคู่มือฉบับสมบูรณ์นี้! {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/thai/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/thai/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..e5b2b7a51 --- /dev/null +++ b/html/thai/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-03-28 +description: สร้างเอกสาร PDF ด้วย C# โดยใช้ Aspose HTML to PDF. เรียนรู้วิธีเรนเดอร์ + HTML เป็น PDF, แปลง HTML เป็น PDF, และเปิดใช้งานการให้คำแนะนำสำหรับ Linux. +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: th +og_description: สร้างเอกสาร PDF ด้วย C# อย่างทันที คู่มือนี้แสดงวิธีการเรนเดอร์ HTML + เป็น PDF, แปลง HTML เป็น PDF, และใช้ Aspose HTML to PDF พร้อมการบ่งชี้ข้อความ. +og_title: สร้างเอกสาร PDF ด้วย C# – แปลง HTML เป็น PDF ด้วย Aspose +tags: +- Aspose +- C# +- PDF generation +title: สร้างเอกสาร PDF ด้วย C# – แปลง HTML เป็น PDF ด้วย Aspose +url: /th/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# สร้างเอกสาร PDF ด้วย C# – แปลง HTML เป็น PDF ด้วย Aspose + +เคยต้อง **สร้างเอกสาร PDF ด้วย C#** จากสตริง HTML ที่สร้างแบบไดนามิกและสงสัยว่าทำไมข้อความถึงดูเบลอบน Linux หรือไม่? คุณไม่ได้เป็นคนเดียวที่สับสน ข่าวดีคือ Aspose HTML ทำให้การ **แปลง HTML เป็น PDF** เป็นเรื่องง่าย และด้วยตัวเลือกเพิ่มเติมเล็กน้อย คุณก็สามารถได้ตัวอักษรคมชัดแม้บนเซิร์ฟเวอร์แบบ headless + +ในบทแนะนำนี้เราจะเดินผ่านตัวอย่างที่สมบูรณ์พร้อมรันได้ทันทีที่ **แปลง HTML เป็น PDF** ด้วยไลบรารี Aspose HTML for .NET เราจะอธิบายว่าทำไมคุณอาจต้องเปิดใช้งาน hinting, วิธีตั้งค่าท่อการแปลง, และวิธีปรับขนาดหน้า หรือ DPI หากต้องการในภายหลัง ไม่ต้องอ้างอิงเอกสารภายนอก—แค่คัดลอก วาง แล้วรัน + +## สิ่งที่คุณต้องมี + +- **.NET 6+** (หรือ .NET Framework 4.6.2+). Aspose HTML รองรับทั้งสอง แต่ตัวอย่างด้านล่างมุ่งเป้าไปที่ .NET 6 เพื่อความง่าย +- **Aspose.HTML for .NET** NuGet package (`Aspose.Html`). ติดตั้งผ่าน Package Manager Console: + + ```powershell + Install-Package Aspose.Html + ``` + +- สภาพแวดล้อม **Linux หรือ Windows**. ธง hinting มีประโยชน์เป็นพิเศษบน Linux แต่โค้ดทำงานได้ทุกที่ +- IDE หรือ editor ที่คุณชอบ (Visual Studio, VS Code, Rider …) + +เท่านี้—ไม่ต้องฟอนต์เสริม ไม่ต้องไดรเวอร์พิมพ์ PDF เพียง DLL เดียวก็พอ + +## ขั้นตอนที่ 1: ตั้งค่าตัวเลือกการเรนเดอร์ข้อความ (Primary Keyword in Action) + +สิ่งแรกที่เราทำคือบอก Aspose ว่าจะจัดการการเรนเดอร์ glyph อย่างไร บน Linux ตัว rasterizer เริ่มต้นอาจทำให้ตัวอักษรเบลอ ดังนั้นเราจึงเปิดใช้ hinting + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**ทำไมต้องทำเช่นนี้?** +`UseHinting` บังคับให้ renderer จัดแนว outlines ของเวกเตอร์ให้ตรงกับกริดพิกเซล ซึ่งขจัดขอบเบลอที่มักพบใน PDF ที่สร้างบนคอนเทนเนอร์ Linux แบบ headless `FontSize` ไม่ได้เป็นข้อบังคับ แต่ช่วยให้คุณมี baseline ที่คาดการณ์ได้สำหรับ HTML ที่ไม่ได้กำหนดขนาดของตัวเอง + +> **เคล็ดลับ:** หากคุณมุ่งเป้าไปที่ Windows เท่านั้น สามารถข้ามการใช้ hinting ได้—Windows มีการเรนเดอร์ sub‑pixel อยู่แล้ว + +## ขั้นตอนที่ 2: แนบ Text Options ไปยัง PDF Rendering Settings + +ต่อไปเราจะสร้างอินสแตนซ์ `PdfRenderingOptions` แล้วใส่ `TextOptions` ที่เราตั้งค่าไว้ วัตถุนี้จะควบคุมกระบวนการแปลงทั้งหมด + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**ทำไมต้องผูกกัน?** +อ็อบเจกต์ `PdfRenderingOptions` เป็นสะพานระหว่างเอนจิน HTML กับตัวเขียน PDF โดยการกำหนด `TextOptions` ที่นี่ ทุกหน้าที่เรนเดอร์จะสืบทอดการตั้งค่า hinting ทำให้ผลลัพธ์คงที่ทั่วทั้งเอกสาร + +## ขั้นตอนที่ 3: โหลดเนื้อหา HTML ของคุณ + +Aspose ให้คุณป้อน HTML จากสตริง, ไฟล์ หรือแม้แต่ URL สำหรับบทแนะนำนี้เราจะใช้สตริงในหน่วยความจำเพื่อความง่าย + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**ทำไมถึงใช้สตริง?** +เมื่อคุณสร้างรายงานแบบไดนามิก (เช่น ใบแจ้งหนี้, ใบเสร็จ) คุณมักประกอบ HTML ด้วยการแทรกสตริงหรือเทมเพลต การส่งสตริงโดยตรงช่วยหลีกเลี่ยงไฟล์ชั่วคราวและเร่งกระบวนการ + +## ขั้นตอนที่ 4: บันทึก PDF ด้วยตัวเลือกที่กำหนดไว้ + +ตอนนี้เราจะเขียน PDF ลงดิสก์จริง `Save` เมธอดรับพาธเป้าหมายและตัวเลือกการเรนเดอร์ที่เตรียมไว้ก่อนหน้า + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**สิ่งที่คุณจะเห็น:** +เปิด `hinted.pdf` ด้วยโปรแกรมดู PDF ใดก็ได้ ย่อหน้าที่มีข้อความ “Hinted text on Linux” ควรแสดงคมชัดด้วยฟอนต์ Arial ที่เรนเดอร์อย่างสะอาด บน Linux คุณจะสังเกตความแตกต่างเมื่อเทียบกับ PDF ที่สร้างโดยไม่มี `UseHinting` + +> **ผลลัพธ์ที่คาดหวัง:** PDF หนึ่งหน้า ที่มีย่อหน้าในขนาด 14‑pt Arial โดยไม่มีขอบเบลอ + +### ตัวอย่างทำงานเต็มรูปแบบ + +ด้านล่างเป็นโปรแกรมเต็มที่คุณสามารถคัดลอกไปใส่ในโปรเจคคอนโซล มันรวมคำสั่ง `using` ทั้งหมด, การจัดการข้อผิดพลาด, และคอมเมนต์เพื่อความชัดเจน + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +รันโปรแกรม (`dotnet run`) แล้วคุณจะได้ PDF พร้อมใช้งานสำหรับการแจกจ่าย, การเก็บถาวร, หรือการประมวลผลต่อ + + + +## คำถามที่พบบ่อย (FAQ) + +### ทำงานกับ **aspose html to pdf** บน .NET Core ได้หรือไม่? +ทำได้แน่นอน API ชุดเดียวกันเปิดให้ใช้ได้บน .NET Framework, .NET Core, และ .NET 5/6 เพียงตรวจสอบให้เวอร์ชัน NuGet ตรงกับเฟรมเวิร์กเป้าหมายของคุณ + +### จะ **render HTML to PDF** ด้วยขนาดหน้าที่กำหนดเองอย่างไร? +สร้างอ็อบเจกต์ `PdfPageSetup` ตั้งค่า `Width`, `Height` หรือ `Size` แล้วกำหนดให้กับ `pdfRenderOptions.PageSetup` ตัวอย่าง: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### ถ้าต้อง **convert HTML to PDF** ใน Web API จะทำอย่างไร? +คืนค่า PDF เป็น `FileResult`: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### สามารถใช้กับ **html to pdf c#** ในคอนเทนเนอร์ Docker บน Linux ได้หรือไม่? +ได้ ธง hinting ถูกออกแบบมาสำหรับสภาพแวดล้อม Linux แบบ headless เพียงติดตั้งแพคเกจ `libgdiplus` หากใช้ Alpine แล้วการแปลงจะทำงานได้ทันที + +## การปรับแต่งขั้นสูง (Beyond the Basics) + +- **Embedding Fonts:** หาก HTML ของคุณอ้างอิงฟอนต์กำหนดเอง ให้เรียก `htmlDoc.Fonts.Add("MyFont", fontBytes);` ก่อนทำการเรนเดอร์ +- **Image Handling:** เปิด `pdfRenderOptions.ImageResolution = 300;` เพื่อกราฟิกความละเอียดสูง DPI +- **Security:** ใช้ `PdfSaveOptions` ตั้งรหัสผ่านให้ไฟล์ (`PdfSaveOptions.Password = "secret";`) + +ตัวเลือกเหล่านี้ทำให้คุณเปลี่ยนสคริปต์ **convert html to pdf** ง่าย ๆ ให้กลายเป็นบริการพร้อมผลิต + +## สรุป + +เราได้สาธิตวิธี **สร้างเอกสาร PDF ด้วย C#** โดยการเรนเดอร์ HTML ด้วย Aspose HTML, เปิดใช้ text hinting เพื่อให้ผลลัพธ์คมชัดบน Linux, และบันทึกผลลัพธ์ด้วยเมธอดเดียว ขั้นตอนที่ครอบคลุม: + +1. ตั้งค่า `TextOptions` (hinting) +2. แนบไปยัง `PdfRenderingOptions` +3. โหลด HTML จากสตริง +4. บันทึก PDF + +ตอนนี้คุณมีพื้นฐานที่มั่นคงสำหรับทุกสถานการณ์ที่ต้องการ **aspose html to pdf**, **render html to pdf**, **convert html to pdf**, หรือ **html to pdf c#** อย่าลังเลที่จะทดลองปรับเลย์เอาต์หน้า, ฝังฟอนต์, หรือสตรีม PDF ไปยังไคลเอนต์โดยตรง + +--- + +**ขั้นตอนต่อไป:** +- ลองแปลงรายงาน HTML หลายหน้าที่มีตารางและรูปภาพ +- สำรวจ API `PdfDocument` ของ Aspose สำหรับการประมวลผลต่อ (เพิ่ม bookmark, watermark) +- ผสานการแปลงนี้กับคิวงานพื้นหลัง (เช่น Hangfire) เพื่อสร้าง PDF ตามความต้องการ + +ขอให้เขียนโค้ดสนุกและ 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/thai/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/thai/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..dffb5fd45 --- /dev/null +++ b/html/thai/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,232 @@ +--- +category: general +date: 2026-03-28 +description: เรนเดอร์ HTML เป็น PDF โดยตรงจาก URL และบีบอัดผลลัพธ์เป็นไฟล์ ZIP เรียนรู้วิธีแปลง + URL เป็น PDF, สร้าง PDF จากเว็บไซต์, และบีบอัดไฟล์ PDF เป็น ZIP ด้วย C# +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: th +og_description: เรนเดอร์ HTML เป็น PDF โดยตรงจาก URL แล้วบีบอัด PDF เป็นไฟล์ ZIP คำแนะนำทีละขั้นตอนนี้แสดงวิธีแปลง + URL เป็น PDF, สร้าง PDF จากเว็บไซต์, และบีบอัดไฟล์ PDF เป็น ZIP ด้วย C# +og_title: แปลง HTML เป็น PDF แล้วบีบอัดเป็น Zip – คู่มือ C# ฉบับสมบูรณ์ +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: แปลง HTML เป็น PDF แล้วบีบอัดเป็น Zip – คู่มือ C# ฉบับสมบูรณ์ +url: /th/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Render HTML to PDF and Zip It – Complete C# Guide + +เคยต้อง **render HTML to PDF** แบบทันทีแล้วส่งไฟล์ให้ลูกค้าเป็นไฟล์อาร์ไคฟ์เดียวกันหรือไม่? บางทีคุณอาจกำลังสร้างบริการรายงานที่ดึงหน้าเว็บสด แปลงเป็น PDF แล้วเก็บผลลัพธ์ไว้ใน zip เพื่อให้ดาวน์โหลดง่าย ในบทแนะนำนี้เราจะพาคุณทำตามขั้นตอนนั้น—render หน้าเว็บระยะไกลเป็น PDF แล้ว **บีบอัด PDF ลงใน zip** โดยไม่ต้องเขียนลงดิสก์เลย + +เราจะครอบคลุมวิธี **convert URL to PDF**, **generate PDF from website**, และสุดท้าย **zip PDF file** เพื่อให้คุณสามารถส่งออกไปที่ไหนก็ได้ ไม่มีส่วนเกิน เพียงโซลูชันทำงานที่คุณสามารถนำไปใส่ในโปรเจกต์ .NET 6+ ได้ทันที + +## What You’ll Need + +- **.NET 6** หรือใหม่กว่า (โค้ดนี้ยังทำงานกับ .NET Framework 4.6+ ด้วย) +- **Aspose.HTML for .NET** – ไลบรารีที่ทำหน้าที่หนักในการ render HTML‑to‑PDF +- ความรู้พื้นฐานของ C# เล็กน้อย—ถ้าคุณเขียน `Console.WriteLine` ได้ก็พร้อมแล้ว +- IDE ที่คุณชอบ (Visual Studio, Rider, VS Code …) + +> **Pro tip:** Aspose.HTML มีเวอร์ชันทดลองฟรีที่รวมฟีเจอร์การ render ทั้งหมด ดาวน์โหลดได้จาก [Aspose website](https://products.aspose.com/html/net/) ก่อนเริ่มใช้งาน + +ตอนนี้เมื่อข้อกำหนดพื้นฐานเรียบร้อยแล้ว ไปดูกันต่อ + +## Step 1 – Load the Remote HTML Document (Convert URL to PDF) + +สิ่งแรกที่เราต้องทำคือบอก Aspose.HTML ว่าแหล่งข้อมูลอยู่ที่ไหน ในกรณีของเราคือ URL สาธารณะ แต่คุณก็สามารถส่งสตริงที่มี HTML ดิบได้เช่นกัน + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Why this matters:** การโหลดเอกสารจาก URL ทำให้ renderer ดึงทรัพยากรที่เชื่อมโยงทั้งหมด (CSS, รูปภาพ, ฟอนต์) อัตโนมัติ ให้คุณได้ PDF ที่ตรงกับเว็บไซต์สดอย่างครบถ้วน หากข้ามขั้นตอนนี้และส่งสตริงธรรมดา จะทำให้ทรัพยากรเหล่านั้นหายไป ซึ่งไม่ใช่สิ่งที่คุณต้องการเมื่อ *generate PDF from website* + +## Step 2 – Configure PDF Rendering Options (Quality Matters) + +Aspose.HTML ให้คุณปรับแต่งลักษณะของ PDF ได้ เช่น Antialiasing และ Font Hinting ซึ่งช่วยให้ผลลัพธ์ดูคมชัดบนหน้าจอและการพิมพ์ + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Why we set these:** หากไม่มี antialiasing งานศิลปะเส้นและกราฟิกเวกเตอร์อาจดูหยัก ๆ โดยเฉพาะบนหน้าจอ DPI สูง ส่วน hinting จะบอกเอนจิน PDF ว่าจะจัดตำแหน่ง glyphs ให้ตรงพิกเซลอย่างไร ซึ่งเป็นการปรับเล็ก ๆ ที่มักทำให้ภาพรวมดูดีขึ้นอย่างมาก + +## Step 3 – Prepare an In‑Memory ZIP Archive (Zip PDF File) + +แทนที่จะเขียน PDF ลงดิสก์ก่อนแล้วค่อย zip — ขั้นตอน I/O สองขั้นตอนที่ยุ่งยาก — เราจะสตรีมโดยตรงเข้า zip entry วิธีนี้ทำให้ทุกอย่างอยู่ในหน่วยความจำ เหมาะกับ API เว็บหรืองาน background + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Edge case note:** หากคุณต้องจัดการกับ PDF ขนาดใหญ่มาก (หลายร้อย MB) ควรพิจารณา pipe zip ไปยัง response stream แทนการเก็บทั้งหมดในหน่วยความจำ สำหรับรายงานทั่วไปที่มีขนาดต่ำกว่า 20 MB วิธีนี้ปลอดภัยและเร็ว + +## Step 4 – Stream the PDF Directly into a ZIP Entry + +นี่คือส่วนที่ชาญฉลาด: เราสร้าง zip entry ชื่อ `output.pdf` แล้วส่งสตรีมของมันกลับไปให้ Aspose.HTML ตัว renderer จะเขียนไบต์ของ PDF ลงใน zip entry โดยตรง — ไม่ต้องสร้างไฟล์ชั่วคราว + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Why we do it this way:** การให้ PDF writer เขียนลงสตรีมที่ชี้ไปที่ zip entry ทำให้เราข้ามวงจร “write‑to‑disk → zip → delete” ได้ ลดภาระ I/O และป้องกันไม่ให้ไฟล์เหลืออยู่บนเซิร์ฟเวอร์โดยไม่ได้ตั้งใจ + +## Step 5 – Finalize the ZIP and Persist It + +หลังจาก PDF ถูกเขียนเสร็จ เราต้องปิด zip archive เพื่อให้ central directory ถูก flush แล้วจึงเขียนทั้งหมดลงดิสก์ (หรือคืนค่าให้ API) + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Result you’ll see:** ไฟล์ชื่อ `result.zip` ที่มี entry เดียวคือ `output.pdf` เปิด PDF จะเห็นภาพสแนปช็อตที่ pixel‑perfect ของ `https://example.com` พร้อมสไตล์และรูปภาพครบถ้วน + + + +*Image alt text: render html to pdf – screenshot of generated PDF inside a ZIP archive.* + +## Full Working Example + +รวมทุกขั้นตอนเข้าด้วยกัน นี่คือโปรแกรมพร้อมคัดลอก‑วางที่ทำงานได้เต็มที่: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### What to Expect + +- **`result.zip`** จะปรากฏใน `C:\Temp` +- ภายใน archive จะมี **`output.pdf`** +- เปิด PDF จะเห็นหน้าเว็บสดจาก `https://example.com` ที่ถูก render อย่างแม่นยำ + +หากคุณรันโปรแกรมแล้ว zip ว่างเปล่า ให้ตรวจสอบว่า URL เข้าถึงได้และ Aspose.HTML มีสิทธิ์ดาวน์โหลดทรัพยากรภายนอก (ไฟร์วอลล์, การตั้งค่า proxy ฯลฯ) + +## Common Questions & Edge Cases + +| Question | Answer | +|----------|--------| +| *What if the page references external fonts?* | Aspose.HTML จะดาวน์โหลดเว็บ‑ฟอนต์ที่อ้างอิงผ่าน `@font-face` โดยอัตโนมัติ ตรวจสอบให้เซิร์ฟเวอร์สามารถเข้าถึง URL ของฟอนต์ได้ | +| *Can I add multiple PDFs into the same ZIP?* | Yes—just call `zipArchive.CreateEntry("report2.pdf")` and render another `HTMLDocument` into that stream. | +| *How do I set a custom PDF filename?* | Change the string passed to `CreateEntry`, e.g., `CreateEntry("my‑invoice.pdf")`. | +| *Is it safe to use this in a multi‑threaded web app?* | Each request should create its own `MemoryStream` and `ZipArchive`. The objects are not thread‑safe, so shared instances will cause corruption. | +| *What about large PDFs?* | For > 100 MB PDFs, consider streaming directly to the HTTP response (`Response.Body`) instead of buffering in memory. | + +## Wrapping Up + +เราได้แสดงวิธี **render HTML to PDF**, **convert URL to PDF**, **generate PDF from website**, และสุดท้าย **zip PDF file** — ทั้งหมดใน workflow ที่ทำงานแบบในหน่วยความจำเท่านั้น + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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..cbef88b32 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 จากสตริงใน C# – คู่มือฉบับเต็มด้วย Memory Stream](./create-html-from-string-in-c-full-guide-with-memory-stream/) +เรียนรู้วิธีสร้าง HTML จากสตริงใน C# ด้วย Memory Stream อย่างละเอียดและครบถ้วน + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/thai/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/thai/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..44b6c2bf6 --- /dev/null +++ b/html/thai/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,277 @@ +--- +category: general +date: 2026-03-28 +description: สร้าง HTML จากสตริงโดยใช้ Aspose.Html และบันทึกลงสตรีม เรียนรู้การแปลง + HTML เป็นสตริง, ตัวจัดการทรัพยากรแบบกำหนดเอง และการเขียน HTML ลงสตรีม +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: th +og_description: สร้าง HTML จากสตริงด้วย Aspose.Html, เก็บไว้ในหน่วยความจำ, และแปลง + HTML เป็นสตริง คู่มือขั้นตอนโดยละเอียดสำหรับตัวจัดการทรัพยากรแบบกำหนดเองและการเขียน + HTML ไปยังสตรีม +og_title: สร้าง HTML จากสตริงใน C# – บทเรียนเต็มเกี่ยวกับ Memory‑Stream +tags: +- Aspose.Html +- C# +- MemoryStream +title: สร้าง HTML จากสตริงใน C# – คู่มือเต็มพร้อม Memory Stream +url: /th/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# สร้าง HTML จากสตริงใน C# – คู่มือเต็มด้วย Memory Stream + +เคยต้อง **สร้าง HTML จากสตริง** แล้วเก็บทั้งหมดในหน่วยความจำโดยไม่ต้องสัมผัสระบบไฟล์หรือไม่? คุณไม่ได้เป็นคนเดียวที่เจอปัญหานี้ นักพัฒนาหลายคนเจออุปสรรคเมื่ออยากสร้างมาร์กอัปแบบไดนามิกแบบทันที—เช่นสำหรับเทมเพลตอีเมลหรือการแปลงเป็น PDF—แต่ไม่ต้องการไฟล์ชั่วคราวที่กระจายอยู่บนดิสก์ + +ข่าวดีคือ? ด้วย Aspose.Html คุณสามารถสร้าง `HTMLDocument` ตรงจากสตริง, ส่งให้กับ **custom resource handler**, และ **write HTML to stream** เพื่อใช้ต่อในภายหลัง ในบทแนะนำนี้เราจะเดินผ่านทุกขั้นตอน ตั้งแต่สตริงเริ่มต้นจนถึงผลลัพธ์ `string` สุดท้าย และอธิบาย *ทำไม* แต่ละส่วนถึงสำคัญ + +เมื่อจบคู่มือคุณจะสามารถ: + +* สร้าง HTML จากสตริงด้วย Aspose.Html +* แปลง HTML เป็นสตริงโดยไม่ต้องเขียนลงดิสก์ +* จับ HTML ด้วย custom resource handler +* เขียน HTML ไปยัง `MemoryStream` แล้วอ่านกลับมา +* ตรวจจับข้อผิดพลาดทั่วไปและใช้เคล็ดลับตามแนวทางที่ดีที่สุด + +ไม่ต้องพึ่งพาไลบรารีภายนอกใด ๆ นอกจาก Aspose.Html—เพียงโปรเจกต์ .NET และ `using` บางบรรทัด + +--- + +## สิ่งที่ต้องเตรียม + +* .NET 6.0 หรือใหม่กว่า (โค้ดนี้ทำงานบน .NET Framework ได้เช่นกัน) +* NuGet package Aspose.Html for .NET (`Install-Package Aspose.Html`) +* ความรู้พื้นฐาน C#—ถ้าคุณเคยเขียน `Console.WriteLine` มาก่อนก็พร้อมแล้ว + +--- + +## ขั้นตอนที่ 1: สร้าง HTML จากสตริง – จุดเริ่มต้น + +สิ่งแรกที่เราต้องการคือสตริง HTML ดิบ คิดว่าเป็นโครงกระดูกที่คุณปกติจะวางลงในไฟล์ `.html` + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "` etiketi oluşturacağız, oluşturduğumuz stili enjekte edeceğiz ve metin içeriğini ayarlayacağız. + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +`paragraph.OuterHtml`'yi incelerseniz şöyle bir şey göreceksiniz: + +```html +
Bold & Italic text
+``` + +Bu satır, ham CSS dizgileri yazmadan **add bold italic text** işlemini gösterir. + +## Adım 5: Paragrafı Body'ye Ekle + +Son olarak, **append element to body** yapıyoruz. Bu, paragrafı sayfada gerçekten render eden bulmacanın son parçasıdır. + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +`htmlDoc.Body.InsertBefore` veya `ReplaceChild`'ı daha karmaşık konumlandırma gerektiğinde de çağırabilirsiniz. Çoğu senaryoda, basit bir `AppendChild` yeterlidir. + +## Adım 6: HTML Dizesini Çıktılayın (veya Dosyaya Kaydedin) + +Artık DOM'u oluşturduğumuza göre, son HTML'i çıkaralım. Aspose.HTML, belgeyi tek bir çağrı ile serileştirmenizi sağlar. + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +`result.html` dosyasını bir tarayıcıda açtığınızda, hem kalın hem de italik olan tek bir paragraf göreceksiniz; tam da planladığımız gibi. + +### Beklenen Çıktı + +```html + + + + +Bold & Italic text
+ + +``` + +E‑posta için HTML oluşturuyorsanız, `finalHtml`'yi e‑posta gövdenize yerleştirin; stil çoğu modern istemcide korunur. + +## Yaygın Varyasyonlar ve Kenar Durumları + +- **Multiple Styles:** Arka plan rengi de eklemek ister misiniz? `CSSStyleDeclaration`'ı genişletin: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **Different Elements:** `` yerine `htmlDoc.CreateElement("div")` kullanarak bir `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +Bu programı çalıştırın, `result.html` dosyasını açın ve stil verilen paragrafın tam olarak tarif edildiği gibi render edildiğini göreceksiniz. Elle dize birleştirme yok, kırılgan HTML sabitleri yok—sadece temiz, tip‑güvenli DOM manipülasyonu. + +## Sonuç + +Aspose.HTML kullanarak sıfırdan **HTML nasıl oluşturulur** sorusunu yanıtladık, **append element to body** gösterdik, **create paragraph element** için net bir yol sunduk, **add bold italic text** açıklamasını yaptık ve **add css style programmatically** inceliklerini ele aldık. + +Bu desenle rahat hissediyorsanız, tam sayfalar üretmek için genişletebilirsiniz: tablolar, görseller, hatta etkileşimli betikler. Aynı prensipler geçerlidir—stillleri tanımlayın, elemanları oluşturun, öznitelikleri ayarlayın ve ait oldukları yere ekleyin. + +### Sıradaki Adımlar + +- **Dynamic Content:** Veritabanından veri çekin ve bir tabloda satırları üretmek için döngü kullanın. +- **Styling Libraries:** Bu yaklaşımı daha büyük projeler için harici CSS dosyalarıyla birleştirin. +- **Export Options:** `HTMLDocument`'i doğrudan Aspose.PDF veya Aspose.Words'e besleyerek ara bir dizeye ihtiyaç duymadan PDF veya DOCX dosyaları oluşturun. + +Denemekten, şeyleri kırmaktan ve ardından düzeltmekten çekinmeyin—bu, C#'ta DOM programlamayı içselleştirmenin en hızlı yoludur. Sorularınız veya farklı bir kullanım senaryonuz mu var? Aşağıya bir yorum bırakın, iyi kodlamalar! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/turkish/net/rendering-html-documents/_index.md b/html/turkish/net/rendering-html-documents/_index.md index 6cce1b921..432451aef 100644 --- a/html/turkish/net/rendering-html-documents/_index.md +++ b/html/turkish/net/rendering-html-documents/_index.md @@ -60,6 +60,10 @@ Aspose.HTML for .NET ile HTML dosyalarını PNG formatına dönüştürmeyi adı Aspose.HTML for .NET kullanarak HTML dosyalarını PNG formatına dönüştürmenin tüm adımlarını öğrenin. ### [HTML'den PNG Oluşturma – Tam C# Render Rehberi](./create-png-from-html-full-c-rendering-guide/) HTML'den PNG oluşturmayı tam C# render rehberiyle adım adım öğrenin. +### [PDF Belgesi Oluşturma C# – Aspose ile HTML'yi PDF'ye Dönüştürme](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +Aspose.HTML for .NET kullanarak C# ile HTML içeriğini PDF belgesine dönüştürmeyi adım adım öğrenin. +### [HTML'yi PDF'ye Dönüştür ve Zipleyin – Tam C# Rehberi](./render-html-to-pdf-and-zip-it-complete-c-guide/) +HTML'yi PDF'ye dönüştürüp sıkıştırarak tek bir arşiv oluşturmayı adım adım öğrenin. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/turkish/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/turkish/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..c54dd484e --- /dev/null +++ b/html/turkish/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-03-28 +description: Aspose HTML to PDF kullanarak C# ile PDF belgesi oluşturun. HTML'yi PDF'ye + nasıl render edeceğinizi, HTML'yi PDF'ye nasıl dönüştüreceğinizi öğrenin ve Linux + için ipucu desteğini etkinleştirin. +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: tr +og_description: C# ile PDF belgesi anında oluşturun. Bu kılavuz, HTML'yi PDF'ye nasıl + render edeceğinizi, HTML'yi PDF'ye nasıl dönüştüreceğinizi ve metin ipucu ile Aspose + HTML'den PDF'ye nasıl kullanılacağını gösterir. +og_title: C# ile PDF Belgesi Oluştur – Aspose ile HTML'yi PDF'ye Dönüştür +tags: +- Aspose +- C# +- PDF generation +title: PDF Belgesi Oluşturma C# – Aspose ile HTML'yi PDF'ye Dönüştürme +url: /tr/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF Belgesi Oluştur C# – Aspose ile HTML'yi PDF'ye Dönüştür + +Dinamik bir HTML dizesinden **create PDF document C#** oluşturmanız ve metnin Linux'ta neden bulanık göründüğünü merak etmeniz oldu mu? Tek başınıza değilsiniz. İyi haber, Aspose HTML sayesinde **render HTML to PDF** çok kolay ve birkaç ekstra seçenekle başsız sunucularda bile bıçak gibi keskin glifler elde edebilirsiniz. + +Bu öğreticide, Aspose HTML for .NET kütüphanesini kullanarak **converts HTML to PDF** yapan eksiksiz, hemen çalıştırılabilir bir örnek üzerinden adım adım ilerleyeceğiz. Ayrıca neden hinting'i etkinleştirmeniz gerektiğini, renderleme hattını nasıl kuracağınızı ve daha sonra sayfa boyutu ya da DPI'ı özelleştirmeniz gerekirse ne yapmanız gerektiğini de ele alacağız. Harici belgeler gerekmez—sadece kopyalayıp yapıştırın ve çalıştırın. + +## Gerekenler + +- **.NET 6+** (veya .NET Framework 4.6.2+). Aspose HTML her ikisini destekler, ancak aşağıdaki örnek basitlik açısından .NET 6 hedeflemektedir. +- **Aspose.HTML for .NET** NuGet paketi (`Aspose.Html`). Paket Yöneticisi Konsolu üzerinden kurun: + + ```powershell + Install-Package Aspose.Html + ``` + +- **Linux veya Windows** ortamı. Hinting bayrağı özellikle Linux'ta faydalıdır, ancak kod her yerde çalışır. +- Tercih ettiğiniz bir IDE veya editör (Visual Studio, VS Code, Rider…). + +Hepsi bu—ekstra font yok, PDF yazıcı sürücüleri yok, sadece tek bir DLL. + +## Adım 1: Metin Renderleme Seçeneklerini Yapılandırma (Primary Keyword in Action) + +İlk yaptığımız şey, Aspose'a glif renderlamasını nasıl ele alacağını söylemektir. Linux'ta varsayılan rasterizer bulanık karakterler üretebilir, bu yüzden hinting'i açıyoruz. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**Why?** +`UseHinting` renderlayıcıyı vektör konturlarını piksel ızgarasına hizalamaya zorlar, bu da başsız Linux konteynerlerinde oluşturulan PDF'lerde sıkça gördüğünüz bulanık kenarları ortadan kaldırır. `FontSize` özelliği zorunlu değildir, ancak kendi boyutunu belirtmeyen HTML'ler için öngörülebilir bir temel sağlar. + +> **Pro tip:** Yalnızca Windows hedefliyorsanız, hinting'i atlayabilirsiniz—Windows zaten otomatik olarak alt‑piksel renderlamasını uygular. + +## Adım 2: Metin Seçeneklerini PDF Render Ayarlarına Bağlama + +Sonra bir `PdfRenderingOptions` örneği oluşturur ve az önce yapılandırdığımız `TextOptions`'ı bağlarız. Bu nesne tüm dönüşüm sürecini yönetir. + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**Why bind them?** +`PdfRenderingOptions` nesnesi HTML motoru ile PDF yazıcısı arasındaki köprüdür. Burada `TextOptions` atandığında, renderlanan her sayfa hinting yapılandırmasını miras alır ve tüm belge boyunca tutarlı bir çıktı sağlar. + +## Adım 3: HTML İçeriğinizi Yükleyin + +Aspose, HTML'i bir dizeden, dosyadan ya da hatta bir URL'den almanıza izin verir. Bu öğreticide işi basit tutacağız ve bellekteki bir dizeyi kullanacağız. + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**Why a string?** +Raporları anında (ör. faturalar, makbuzlar) oluşturduğunuzda, genellikle string interpolasyonu veya bir şablon motoru kullanarak HTML'i birleştirirsiniz. Bir dizeyi doğrudan geçirmek geçici dosyalardan kaçınır ve pipeline'ı hızlandırır. + +## Adım 4: PDF'i Yapılandırılmış Seçeneklerle Kaydedin + +Şimdi PDF'i diske yazıyoruz. `Save` metodu hedef yolu ve daha önce hazırladığımız renderleme seçeneklerini alır. + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**What you’ll see:** +`hinted.pdf` dosyasını herhangi bir PDF görüntüleyiciyle açın. “Hinted text on Linux” paragrafı net bir şekilde, Arial fontu temiz renderlanmış olarak görünmelidir. Linux'ta `UseHinting` olmadan oluşturulan bir PDF ile karşılaştırıldığında farkı göreceksiniz. + +> **Expected output:** 14‑pt Arial paragrafını içeren, bulanık kenarları olmayan tek sayfalık bir PDF. + +### Tam Çalışan Örnek + +Aşağıda, bir konsol uygulaması projesine kopyalayabileceğiniz tam program bulunmaktadır. Tüm using ifadelerini, hata yönetimini ve açıklayıcı yorumları içerir. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +Programı çalıştırın (`dotnet run`) ve dağıtım, arşivleme veya daha fazla işleme hazır bir PDF elde edeceksiniz. + + + +## Sık Sorulan Sorular (SSS) + +### **aspose html to pdf** .NET Core üzerinde çalışıyor mu? +Kesinlikle. Aynı API yüzeyi .NET Framework, .NET Core ve .NET 5/6 arasında sunulur. NuGet paketi sürümünün hedef çerçevenizle eşleştiğinden emin olun. + +### Özel sayfa boyutu ile **render HTML to PDF** nasıl yapılır? +`PdfPageSetup` nesnesi oluşturun, `Width`, `Height` veya `Size` ayarlayın ve `pdfRenderOptions.PageSetup`'a atayın. Örnek: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### Web API'de **convert HTML to PDF** yapmam gerekirse ne olur? +PDF'i bir `FileResult` olarak döndürün: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### Linux Docker konteynerinde **html to pdf c#** için bunu kullanabilir miyim? +Evet. Hinting bayrağı özellikle başsız Linux ortamları için tasarlanmıştır. Alpine kullanıyorsanız `libgdiplus` paketini kurmanız yeterlidir, dönüşüm kutudan çıkar çıkmaz çalışır. + +## İleri Düzey Ayarlamalar (Temellerin Ötesinde) + +- **Embedding Fonts:** HTML'iniz özel fontlara referans veriyorsa, renderlamadan önce `htmlDoc.Fonts.Add("MyFont", fontBytes);` çağırın. +- **Image Handling:** Yüksek DPI grafikler için `pdfRenderOptions.ImageResolution = 300;` etkinleştirin. +- **Security:** Çıktıyı şifrelemek için `PdfSaveOptions` kullanın (`PdfSaveOptions.Password = "secret";`). + +Bu seçenekler, basit bir **convert html to pdf** kod parçacığını üretim‑hazır bir hizmete dönüştürmenizi sağlar. + +## Özet + +Aspose HTML ile HTML'i renderlayarak, Linux'ta daha keskin çıktı için metin hinting'ini etkinleştirerek ve sonucu tek bir metod çağrısıyla kaydederek **create PDF document C#** nasıl yapılacağını gösterdik. Kapsanan adımlar: + +1. `TextOptions` (hinting) ayarlayın. +2. `PdfRenderingOptions`'a bağlayın. +3. HTML'i bir dizeden yükleyin. +4. PDF'i kaydedin. + +Artık **aspose html to pdf**, **render html to pdf**, **convert html to pdf** veya **html to pdf c#** gerektiren herhangi bir senaryo için sağlam bir temele sahipsiniz. Sayfa düzenleri, gömülü fontlar veya PDF'i doğrudan bir istemciye akıtma gibi konularda denemeler yapmaktan çekinmeyin. + +--- + +**Next steps:** +- Çok sayfalı bir HTML raporunu tablolar ve görsellerle dönüştürmeyi deneyin. +- Aspose'un `PdfDocument` API'sını post‑processing için keşfedin (yer imleri, filigran ekleme). +- Bu dönüşümü bir arka plan iş kuyruğu (ör. Hangfire) ile birleştirerek talep üzerine PDF üretin. + +Kodlamaktan keyif alın, ve PDF'leriniz her zaman net olsun! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/turkish/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/turkish/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..e6e8feffb --- /dev/null +++ b/html/turkish/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-28 +description: HTML'yi doğrudan bir URL'den PDF'ye dönüştürün ve sonucu bir ZIP dosyasına + sıkıştırın. URL'yi PDF'ye nasıl dönüştüreceğinizi, web sitesinden PDF oluşturmayı + ve C#'ta PDF dosyasını ziplemeyi öğrenin. +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: tr +og_description: HTML'yi doğrudan bir URL'den PDF'ye dönüştürün, ardından PDF'yi bir + ZIP dosyasına sıkıştırın. Bu adım adım öğretici, URL'yi PDF'ye nasıl dönüştüreceğinizi, + web sitesinden PDF oluşturmayı ve C#'ta PDF dosyasını ziplemeyi gösterir. +og_title: HTML'yi PDF'ye Dönüştür ve Sıkıştır – Tam C# Rehberi +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: HTML'yi PDF'ye Dönüştür ve Ziple – Tam C# Rehberi +url: /tr/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML'yi PDF'ye Dönüştür ve Zip'le – Tam C# Rehberi + +Canlı olarak **HTML'yi PDF'ye dönüştürmek** ve ardından dosyayı tek bir arşiv olarak bir müşteriye göndermek hiç ihtiyacınız oldu mu? Belki bir raporlama servisi oluşturuyorsunuz; canlı bir web sayfasını alıp PDF'ye çeviriyor ve indirmeyi kolaylaştırmak için sonucu bir zip içinde saklıyor. Bu öğreticide tam olarak bunu yapacağız—uzak bir web sayfasını PDF'ye dönüştürmek, ardından **PDF'yi bir zip içinde sıkıştırmak** ve diske hiç dokunmadan işlemi tamamlamak. + +Ayrıca **URL'yi PDF'ye dönüştürme**, **web sitesinden PDF oluşturma** ve son olarak **PDF dosyasını zip'leme** konularını da ele alacağız, böylece ihtiyacınız olan yere gönderebilirsiniz. Gereksiz ayrıntı yok, bugün .NET 6+ projenize ekleyebileceğiniz çalışan bir çözüm. + +## Gereksinimler + +- **.NET 6** veya daha yeni (kod .NET Framework 4.6+ ile de çalışır). +- **Aspose.HTML for .NET** – HTML‑to‑PDF dönüşümü için ağır işi yapan kütüphane. +- Biraz C# deneyimi—eğer `Console.WriteLine` yazabiliyorsanız, hazırsınız. +- Tercih ettiğiniz bir IDE (Visual Studio, Rider, VS Code…). + +> **Pro ipucu:** Aspose.HTML, tüm render özelliklerini içeren ücretsiz bir deneme sürümü sunar. Başlamadan önce [Aspose web sitesinden](https://products.aspose.com/html/net/) edinin. + +Şimdi ön koşullar ortadan kalktı, hadi başlayalım. + +## Step 1 – Load the Remote HTML Document (Convert URL to PDF) + +İlk yapmamız gereken, Aspose.HTML'e kaynağın nerede olduğunu söylemek. Bizim örneğimizde bu bir genel URL, ancak aynı şekilde ham HTML içeren bir dize de verebilirsiniz. + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Neden önemli:** Belgeyi bir URL'den yüklemek, render motorunun tüm bağlı kaynakları (CSS, görseller, fontlar) otomatik olarak indirmesini sağlar ve size canlı sitenin eksiksiz bir PDF kopyasını verir. Bu adımı atlayıp sadece bir dize verirseniz, bu varlıklar kaybolur; bu da *generate PDF from website* istediğinizde nadiren istenen bir durumdur. + +## Step 2 – Configure PDF Rendering Options (Quality Matters) + +Aspose.HTML, PDF'nin nasıl görüneceğini ayarlamanıza izin verir. Antialiasing ve font hinting, çıktının ekranda ve baskıda net görünmesini sağlayan iki ayardır. + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Neden ayarlıyoruz:** Antialiasing olmadan, çizgi sanatı ve vektör grafikler özellikle yüksek DPI ekranlarda pikselli görünebilir. Hinting ise PDF motoruna glifleri piksel sınırlarına hizalama talimatı verir; küçük bir ayar, görsel olarak büyük bir fark yaratabilir. + +## Step 3 – Prepare an In‑Memory ZIP Archive (Zip PDF File) + +PDF'yi önce diske yazıp ardından zip'lemek yerine—iki adımlı bir I/O kabusu—doğrudan bir zip girdisine akıtacağız. Bu, her şeyi bellekte tutar ve web API'leri ya da arka plan görevleri için mükemmeldir. + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Köşe durum notu:** Çok büyük PDF'lerle (yüzlerce MB) çalışıyorsanız, tüm zip'i bellekte tutmak yerine zip'i doğrudan bir yanıt akışına yönlendirmeyi düşünün. 20 MB altında tipik raporlar için bu yöntem güvenli ve hızlıdır. + +## Step 4 – Stream the PDF Directly into a ZIP Entry + +İşte akıllı kısım: `output.pdf` adlı bir zip girdisi oluşturup akışını Aspose.HTML'e veriyoruz. Render motoru PDF baytlarını doğrudan zip girdisine yazar—geçici bir dosyaya ihtiyaç yok. + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Neden bu şekilde yapıyoruz:** PDF yazarına zip girdisine işaret eden bir akış sağladığımızda “diske yaz → zip → sil” döngüsünden kaçınırız. Bu sadece I/O yükünü azaltmakla kalmaz, aynı zamanda sunucuda gereksiz dosyaların kalma riskini de ortadan kaldırır. + +## Step 5 – Finalize the ZIP and Persist It + +PDF yazıldıktan sonra zip arşivini kapatmamız gerekir; böylece merkezi dizin flush edilir ve ardından tüm zip'i diske (veya bir API'den döndürülerek) yazarız. + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Görürsünüz sonuç:** `result.zip` adlı bir dosya içinde tek bir `output.pdf` girdisi bulunur. PDF'i açtığınızda `https://example.com` sitesinin stiller ve görsellerle tam bir anlık görüntüsü gösterilir. + + + +*Görsel alt metni: html'yi pdf'ye dönüştür – ZIP arşivi içinde oluşturulan PDF'in ekran görüntüsü.* + +## Full Working Example + +Hepsini bir araya getirdiğimizde, işte kopyala‑yapıştır‑hazır tam program: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### What to Expect + +- **`result.zip`** `C:\Temp` içinde görünür. +- Arşivin içinde **`output.pdf`** bulacaksınız. +- PDF'i açtığınızda `https://example.com` adresindeki canlı sayfa eksiksiz olarak render edilmiş olur. + +Programı çalıştırıp zip boş çıkarsa, URL'nin erişilebilir olduğundan ve Aspose.HTML'in dış kaynakları indirme iznine (güvenlik duvarları, proxy ayarları vb.) sahip olduğundan emin olun. + +## Common Questions & Edge Cases + +| Soru | Cevap | +|----------|--------| +| *Sayfa dış fontlara referans veriyorsa ne olur?* | Aspose.HTML, `@font-face` ile belirtilen web‑fontları otomatik olarak indirir. Sunucunun font URL'lerine ulaşabildiğinden emin olun. | +| *Aynı ZIP içinde birden fazla PDF ekleyebilir miyim?* | Evet—sadece `zipArchive.CreateEntry("report2.pdf")` çağırın ve başka bir `HTMLDocument`'i o akışa render edin. | +| *Özel bir PDF dosya adı nasıl ayarlanır?* | `CreateEntry`'e geçen dizeyi değiştirin, örn. `CreateEntry("my‑invoice.pdf")`. | +| *Bu çoklu iş parçacıklı bir web uygulamasında güvenli mi?* | Her istek kendi `MemoryStream` ve `ZipArchive` nesnesini oluşturmalı. Nesneler thread‑safe değildir, paylaşılan örnekler bozulmaya yol açar. | +| *Büyük PDF'ler nasıl ele alınır?* | 100 MB üzerindeki PDF'ler için, bellekte tamponlamaktan kaçınarak doğrudan HTTP yanıtına (`Response.Body`) akıtmayı düşünün. | + +## Wrapping Up + +**HTML'yi PDF'ye render etme**, **URL'yi PDF'ye dönüştürme**, **web sitesinden PDF oluşturma** ve son olarak **PDF dosyasını zip'leme** işlemlerini temiz, bellek içi bir iş akışıyla nasıl yapacağınızı gösterdik. + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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..54eb0cf6a 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 Dizeden HTML Oluşturma – Bellek Akışı Kullanarak Tam Kılavuz](./create-html-from-string-in-c-full-guide-with-memory-stream/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/turkish/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/turkish/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..f03e4d578 --- /dev/null +++ b/html/turkish/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,277 @@ +--- +category: general +date: 2026-03-28 +description: Aspose.Html kullanarak bir dizeden HTML oluşturun ve bir akışa yakalayın. + HTML'yi dizeye dönüştürmeyi, özel kaynak işleyicisini ve HTML'yi akışa yazmayı öğrenin. +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: tr +og_description: Aspose.Html ile bir dizeden HTML oluşturun, bellekte yakalayın ve + HTML'yi dizeye dönüştürün. Özel kaynak işleyicisi ve HTML'yi akışa yazma konusunda + adım adım kılavuz. +og_title: C#'ta dizeden HTML oluşturma – Tam Memory‑Stream kılavuzu +tags: +- Aspose.Html +- C# +- MemoryStream +title: C#'ta Dizeden HTML Oluşturma – Bellek Akışıyla Tam Kılavuz +url: /tr/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#'ta Dizeden HTML Oluşturma – Bellek Akışıyla Tam Kılavuz + +Hiç **create HTML from string**'i kullanarak ve dosya sistemine dokunmadan her şeyi bellekte tutmanız gerekti mi? Tek başınıza değilsiniz. Birçok geliştirici, dinamik işaretlemeyi anında—örneğin bir e-posta şablonu veya PDF dönüşümü için—oluşturmak istediklerinde bu engelle karşılaşıyor, ancak geçici bir dosyanın diske yayılmasını istemiyor. + +İyi haber? Aspose.Html ile bir `HTMLDocument`'i doğrudan bir dizeden oluşturabilir, **custom resource handler**'a besleyebilir ve daha sonra kullanmak üzere **write HTML to stream** yapabilirsiniz. Bu öğreticide, ilk dizeden son `string` sonucuna kadar her adımı adım adım inceleyecek ve her parçanın *neden* önemli olduğunu açıklayacağız. + +Bu kılavuzun sonunda şunları yapabilecek durumdasınız: + +* Aspose.Html kullanarak dizeden HTML oluşturma. +* HTML'i diske yazmadan string'e dönüştürme. +* HTML'i bir custom resource handler ile yakalama. +* `MemoryStream`'e HTML yazma ve geri okuma. +* Yaygın tuzakları tespit etme ve en iyi uygulama ipuçlarını uygulama. + +Aspose.Html dışındaki dış bağımlılıklar gerekmez—sadece bir .NET projesi ve birkaç using ifadesi. + +--- + +## Önkoşullar + +* .NET 6.0 veya üzeri (kod .NET Framework'te de çalışır). +* Aspose.Html for .NET NuGet paketi (`Install-Package Aspose.Html`). +* Temel C# bilgisi—eğer daha önce bir `Console.WriteLine` yazdıysanız, hazırsınız. + +--- + +## Adım 1: Dizeden HTML Oluşturma – Başlangıç Noktası + +İlk ihtiyacımız ham bir HTML dizesi. Bunu, normalde bir `.html` dosyasına yapıştıracağınız iskelet olarak düşünün. + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "`, chèn style đã xây dựng, và đặt nội dung văn bản. + +```csharp +// Step 4 – Build the
element +var paragraph = htmlDoc.CreateElement("p"); + +// Attach the CSS we defined earlier +paragraph.SetAttribute("style", textStyle.CssText); + +// Insert the actual text – notice the bold & italic styling will apply automatically +paragraph.TextContent = "Bold & Italic text"; +``` + +Nếu bạn kiểm tra `paragraph.OuterHtml` sẽ thấy một thứ gì đó như: + +```html +
Bold & Italic text
+``` + +Dòng này minh họa **add bold italic text** mà không cần viết chuỗi CSS thô. + +## Bước 5: Thêm Đoạn Văn Vào Body + +Cuối cùng, chúng ta **append element to body**. Đây là mảnh ghép cuối cùng thực sự hiển thị đoạn văn trên trang. + +```csharp +// Step 5 – Append the paragraph to the document body +htmlDoc.Body.AppendChild(paragraph); +``` + +Bạn cũng có thể gọi `htmlDoc.Body.InsertBefore` hoặc `ReplaceChild` nếu cần vị trí phức tạp hơn. Đối với hầu hết các trường hợp, một `AppendChild` đơn giản đã đủ. + +## Bước 6: Xuất Chuỗi HTML (hoặc Lưu Thành File) + +Bây giờ chúng ta đã xây dựng DOM, hãy trích xuất HTML cuối cùng. Aspose.HTML cho phép bạn serialize tài liệu chỉ bằng một lệnh. + +```csharp +// Step 6 – Serialize the document to a string +string finalHtml = htmlDoc.ToString(); + +// Optionally write to a .html file for inspection +System.IO.File.WriteAllText("result.html", finalHtml); +``` + +Khi mở `result.html` trong trình duyệt, bạn sẽ thấy một đoạn văn duy nhất vừa in đậm vừa nghiêng, chính xác như mong muốn. + +### Kết Quả Dự Kiến + +```html + + + + +Bold & Italic text
+ + +``` + +Nếu bạn đang tạo HTML cho email, chỉ cần chèn `finalHtml` vào phần thân email và style sẽ được giữ trong hầu hết các client hiện đại. + +## Các Biến Thể Thông Thường & Trường Hợp Cạnh + +- **Nhiều Style:** Muốn thêm màu nền nữa? Mở rộng `CSSStyleDeclaration`: + + ```csharp + textStyle.BackgroundColor = new CSSColor("lightyellow"); + ``` + +- **Phần Tử Khác:** Thay vì ``, bạn có thể tạo `
element with the style + var paragraph = htmlDoc.CreateElement("p"); + paragraph.SetAttribute("style", textStyle.CssText); + paragraph.TextContent = "Bold & Italic text"; + + // 4️⃣ Append the paragraph to the
+ htmlDoc.Body.AppendChild(paragraph); + + // 5️⃣ Serialize to string (or file) + string finalHtml = htmlDoc.ToString(); + Console.WriteLine("Generated HTML:"); + Console.WriteLine(finalHtml); + + // Optional: write to disk for visual inspection + System.IO.File.WriteAllText("result.html", finalHtml); + } +} +``` + +Chạy chương trình này, mở `result.html`, và bạn sẽ thấy đoạn văn đã được định dạng đúng như mô tả. Không cần nối chuỗi thủ công, không có HTML literal dễ vỡ—chỉ có thao tác DOM sạch sẽ, an toàn kiểu. + +## Kết Luận + +Chúng ta đã trả lời **cách tạo HTML** từ đầu bằng Aspose.HTML, trình bày **append element to body**, chỉ ra cách **create paragraph element**, giải thích **add bold italic text**, và đề cập tới chi tiết **add css style programmatically**. + +Nếu bạn đã quen với mẫu này, có thể mở rộng để tạo các trang phức tạp: bảng, hình ảnh, thậm chí script tương tác. Nguyên tắc vẫn giống—định nghĩa style, tạo phần tử, đặt thuộc tính, và thêm chúng vào vị trí thích hợp. + +### Tiếp Theo? + +- **Nội Dung Động:** Lấy dữ liệu từ cơ sở dữ liệu và lặp để tạo các hàng trong bảng. +- **Thư Viện Định Dạng:** Kết hợp cách này với các file CSS bên ngoài cho dự án lớn. +- **Tùy Chọn Xuất:** Đưa `HTMLDocument` trực tiếp vào Aspose.PDF hoặc Aspose.Words để tạo PDF hoặc DOCX mà không cần chuỗi trung gian. + +Hãy thoải mái thử nghiệm, phá vỡ và sau đó sửa lại—đó là cách nhanh nhất để nắm vững lập trình DOM trong C#. Có câu hỏi hoặc trường hợp sử dụng khác? Để 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/rendering-html-documents/_index.md b/html/vietnamese/net/rendering-html-documents/_index.md index 8ef7cb5b6..990ee1ee4 100644 --- a/html/vietnamese/net/rendering-html-documents/_index.md +++ b/html/vietnamese/net/rendering-html-documents/_index.md @@ -60,6 +60,10 @@ Học cách chuyển đổi HTML sang PNG một cách dễ dàng với Aspose.HT Học cách chuyển đổi HTML sang PNG một cách dễ dàng với Aspose.HTML cho .NET. Khám phá hướng dẫn chi tiết từng bước. ### [Tạo PNG từ HTML – Hướng dẫn đầy đủ C# Rendering](./create-png-from-html-full-c-rendering-guide/) Học cách chuyển đổi HTML thành PNG bằng Aspose.HTML cho .NET với hướng dẫn chi tiết bằng C#. +### [Tạo tài liệu PDF C# – Render HTML sang PDF với Aspose](./create-pdf-document-c-render-html-to-pdf-with-aspose/) +Học cách tạo tài liệu PDF từ HTML bằng C# với Aspose.HTML, bao gồm các bước chi tiết và mẹo thực tiễn. +### [Render HTML sang PDF và Nén Zip – Hướng dẫn C# đầy đủ](./render-html-to-pdf-and-zip-it-complete-c-guide/) +Học cách chuyển đổi HTML sang PDF và nén thành file ZIP bằng C# với Aspose.HTML, bao gồm các bước chi tiết và mẹo thực tiễn. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/vietnamese/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md b/html/vietnamese/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md new file mode 100644 index 000000000..20f20b1e1 --- /dev/null +++ b/html/vietnamese/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-03-28 +description: Tạo tài liệu PDF bằng C# sử dụng Aspose HTML to PDF. Tìm hiểu cách render + HTML sang PDF, chuyển đổi HTML sang PDF và bật hinting cho Linux. +draft: false +keywords: +- create pdf document c# +- aspose html to pdf +- render html to pdf +- convert html to pdf +- html to pdf c# +language: vi +og_description: Tạo tài liệu PDF bằng C# ngay lập tức. Hướng dẫn này chỉ cách render + HTML sang PDF, chuyển đổi HTML sang PDF và sử dụng Aspose HTML to PDF với tính năng + gợi ý văn bản. +og_title: Tạo tài liệu PDF bằng C# – Chuyển đổi HTML sang PDF với Aspose +tags: +- Aspose +- C# +- PDF generation +title: Tạo tài liệu PDF C# – Chuyển đổi HTML sang PDF với Aspose +url: /vi/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tạo tài liệu PDF C# – Render HTML sang PDF với Aspose + +Bạn đã bao giờ cần **create PDF document C#** từ một chuỗi HTML động và tự hỏi tại sao văn bản lại mờ trên Linux? Bạn không phải là người duy nhất bối rối. Tin tốt là Aspose HTML giúp bạn dễ dàng **render HTML to PDF**, và với một vài tùy chọn bổ sung, bạn có thể có các glyph sắc nét ngay cả trên các máy chủ không giao diện. + +Trong hướng dẫn này, chúng ta sẽ đi qua một ví dụ hoàn chỉnh, sẵn sàng chạy mà **converts HTML to PDF** bằng thư viện Aspose HTML for .NET. Chúng tôi cũng sẽ giải thích lý do bạn có thể muốn bật hinting, cách thiết lập pipeline render, và cách thực hiện nếu cần tùy chỉnh kích thước trang hoặc DPI sau này. Không cần tài liệu bên ngoài—chỉ cần sao chép, dán và chạy. + +## Những gì bạn cần + +- **.NET 6+** (hoặc .NET Framework 4.6.2+). Aspose HTML hỗ trợ cả hai, nhưng ví dụ dưới đây nhắm tới .NET 6 để đơn giản. +- **Aspose.HTML for .NET** gói NuGet (`Aspose.Html`). Cài đặt nó qua Package Manager Console: + + ```powershell + Install-Package Aspose.Html + ``` + +- Một môi trường **Linux hoặc Windows**. Cờ hinting đặc biệt hữu ích trên Linux, nhưng mã hoạt động ở mọi nơi. +- Một IDE hoặc trình soạn thảo tuỳ chọn (Visual Studio, VS Code, Rider…). + +Chỉ vậy—không cần phông chữ bổ sung, không cần driver máy in PDF, chỉ một DLL duy nhất. + +## Bước 1: Cấu hình Text Rendering Options (Primary Keyword in Action) + +Điều đầu tiên chúng ta làm là chỉ cho Aspose cách xử lý việc render glyph. Trên Linux, rasterizer mặc định có thể tạo ra các ký tự mờ, vì vậy chúng ta bật hinting. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; + +// Step 1 – set up text options +TextOptions textOptions = new TextOptions +{ + // Enable hinting for clearer glyphs on Linux + UseHinting = true, + // Optional: set a base font size if you want consistency + FontSize = 14 +}; +``` + +**Tại sao?** +`UseHinting` buộc renderer căn chỉnh các đường viền vector vào lưới pixel, loại bỏ các cạnh mờ mà bạn thường thấy trong PDF được tạo trên các container Linux không giao diện. Thuộc tính `FontSize` không bắt buộc, nhưng nó cung cấp một baseline dự đoán cho bất kỳ HTML nào không chỉ định kích thước riêng. + +> **Mẹo chuyên nghiệp:** Nếu bạn chỉ nhắm tới Windows, có thể bỏ qua hinting—Windows đã tự động áp dụng render sub‑pixel. + +## Bước 2: Gắn Text Options vào PDF Rendering Settings + +Tiếp theo chúng ta tạo một thể hiện `PdfRenderingOptions` và gắn `TextOptions` vừa cấu hình. Đối tượng này điều khiển toàn bộ quá trình chuyển đổi. + +```csharp +// Step 2 – create PDF rendering options and attach text options +PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions +{ + TextOptions = textOptions +}; +``` + +**Tại sao lại gắn chúng?** +Đối tượng `PdfRenderingOptions` là cầu nối giữa engine HTML và trình ghi PDF. Bằng cách gán `TextOptions` ở đây, mọi trang được render sẽ kế thừa cấu hình hinting, đảm bảo đầu ra nhất quán trên toàn bộ tài liệu. + +## Bước 3: Tải nội dung HTML của bạn + +Aspose cho phép bạn cung cấp HTML từ một chuỗi, một tệp, hoặc thậm chí một URL. Trong hướng dẫn này, chúng tôi sẽ giữ đơn giản và sử dụng một chuỗi trong bộ nhớ. + +```csharp +// Step 3 – create an HTML document from a raw string +string htmlContent = "Hinted text on Linux
"; +HTMLDocument htmlDoc = new HTMLDocument(htmlContent); +``` + +**Tại sao lại là chuỗi?** +Khi bạn tạo báo cáo ngay lập tức (ví dụ: hoá đơn, biên lai), bạn thường ghép HTML bằng string interpolation hoặc một engine templating. Truyền trực tiếp một chuỗi tránh các tệp tạm thời và tăng tốc pipeline. + +## Bước 4: Lưu PDF với các tùy chọn đã cấu hình + +Bây giờ chúng ta cuối cùng ghi PDF ra đĩa. Phương thức `Save` nhận đường dẫn đích và các tùy chọn render mà chúng ta đã chuẩn bị trước. + +```csharp +// Step 4 – export the HTML as a PDF +string outputPath = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); +htmlDoc.Save(outputPath, pdfRenderOptions); +Console.WriteLine($"PDF created successfully at: {outputPath}"); +``` + +**Bạn sẽ thấy:** +Mở `hinted.pdf` bằng bất kỳ trình xem PDF nào. Đoạn văn “Hinted text on Linux” sẽ hiển thị sắc nét, với phông Arial được render sạch sẽ. Trên Linux bạn sẽ nhận thấy sự khác biệt so với PDF được tạo mà không có `UseHinting`. + +> **Kết quả mong đợi:** một PDF một trang chứa đoạn văn với kích thước 14‑pt Arial, không có cạnh mờ. + +### Ví dụ đầy đủ hoạt động + +Dưới đây là chương trình hoàn chỉnh bạn có thể sao chép vào dự án console app. Nó bao gồm tất cả các using, xử lý lỗi, và chú thích để rõ ràng. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Drawing; + +namespace AsposeHtmlToPdfDemo +{ + class Program + { + static void Main(string[] args) + { + try + { + // 1️⃣ Configure text rendering (hinting improves Linux output) + TextOptions textOptions = new TextOptions + { + UseHinting = true, + FontSize = 14 + }; + + // 2️⃣ Attach text options to PDF rendering settings + PdfRenderingOptions pdfRenderOptions = new PdfRenderingOptions + { + TextOptions = textOptions + }; + + // 3️⃣ Load HTML from a string (replace with your own markup if needed) + string html = "" + + "Hinted text on Linux
" + + ""; + HTMLDocument htmlDoc = new HTMLDocument(html); + + // 4️⃣ Save as PDF + string outputFile = Path.Combine(Environment.CurrentDirectory, "hinted.pdf"); + htmlDoc.Save(outputFile, pdfRenderOptions); + + Console.WriteLine($"✅ PDF successfully created at: {outputFile}"); + } + catch (Exception ex) + { + Console.Error.WriteLine($"❌ An error occurred: {ex.Message}"); + } + } + } +} +``` + +Chạy chương trình (`dotnet run`), và bạn sẽ có một PDF sẵn sàng để phân phối, lưu trữ, hoặc xử lý tiếp. + + + +## Câu hỏi thường gặp (FAQ) + +### Điều này có hoạt động với **aspose html to pdf** trên .NET Core không? + +Chắc chắn. Cùng một API được cung cấp trên .NET Framework, .NET Core, và .NET 5/6. Chỉ cần đảm bảo phiên bản gói NuGet phù hợp với framework mục tiêu của bạn. + +### Làm thế nào tôi có thể **render HTML to PDF** với kích thước trang tùy chỉnh? + +Tạo một đối tượng `PdfPageSetup`, đặt `Width`, `Height`, hoặc `Size`, và gán nó cho `pdfRenderOptions.PageSetup`. Ví dụ: + +```csharp +pdfRenderOptions.PageSetup.Size = PageSize.A4; +``` + +### Nếu tôi cần **convert HTML to PDF** trong một web API thì sao? + +Trả về PDF dưới dạng `FileResult`: + +```csharp +byte[] pdfBytes = htmlDoc.Save(pdfRenderOptions); +return File(pdfBytes, "application/pdf", "report.pdf"); +``` + +### Tôi có thể sử dụng điều này cho **html to pdf c#** trong container Docker Linux không? + +Có. Cờ hinting được thiết kế đặc biệt cho môi trường Linux không giao diện. Chỉ cần cài đặt gói `libgdiplus` nếu bạn đang dùng Alpine, và việc chuyển đổi sẽ hoạt động ngay. + +## Tinh chỉnh nâng cao (Ngoài những điều cơ bản) + +- **Embedding Fonts:** Nếu HTML của bạn tham chiếu tới phông chữ tùy chỉnh, gọi `htmlDoc.Fonts.Add("MyFont", fontBytes);` trước khi render. +- **Image Handling:** Bật `pdfRenderOptions.ImageResolution = 300;` cho đồ họa high‑DPI. +- **Security:** Sử dụng `PdfSaveOptions` để bảo vệ mật khẩu cho đầu ra (`PdfSaveOptions.Password = "secret";`). + +Các tùy chọn này cho phép bạn biến một đoạn mã **convert html to pdf** đơn giản thành một dịch vụ sẵn sàng cho sản xuất. + +## Tóm tắt + +Chúng tôi vừa trình diễn cách **create PDF document C#** bằng cách render HTML với Aspose HTML, bật hinting cho đầu ra sắc nét hơn trên Linux, và lưu kết quả bằng một lời gọi phương thức duy nhất. Các bước đã đề cập: + +1. Cài đặt `TextOptions` (hinting). +2. Gắn chúng vào `PdfRenderingOptions`. +3. Tải HTML từ một chuỗi. +4. Lưu PDF. + +Bây giờ bạn có nền tảng vững chắc cho bất kỳ kịch bản nào yêu cầu **aspose html to pdf**, **render html to pdf**, **convert html to pdf**, hoặc **html to pdf c#**. Hãy thoải mái thử nghiệm với bố cục trang, phông chữ nhúng, hoặc stream PDF trực tiếp tới client. + +--- + +**Các bước tiếp theo:** +- Thử chuyển đổi một báo cáo HTML đa trang có bảng và hình ảnh. +- Khám phá API `PdfDocument` của Aspose để xử lý sau (thêm bookmark, watermark). +- Kết hợp việc chuyển đổi này với hàng đợi công việc nền (ví dụ: Hangfire) để tạo PDF theo yêu cầu. + +Chúc lập trình vui vẻ, và mong các PDF của bạn luôn sắc nét! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/vietnamese/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md b/html/vietnamese/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md new file mode 100644 index 000000000..de3be84dd --- /dev/null +++ b/html/vietnamese/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-28 +description: Kết xuất HTML sang PDF trực tiếp từ URL và nén kết quả thành tệp ZIP. + Tìm hiểu cách chuyển đổi URL sang PDF, tạo PDF từ trang web và nén tệp PDF thành + ZIP trong C#. +draft: false +keywords: +- render html to pdf +- convert url to pdf +- zip pdf file +- generate pdf from website +- compress pdf in zip +language: vi +og_description: Chuyển đổi HTML sang PDF trực tiếp từ URL, sau đó nén PDF thành tệp + ZIP. Hướng dẫn từng bước này chỉ cách chuyển URL sang PDF, tạo PDF từ trang web + và nén tệp PDF thành ZIP trong C#. +og_title: Chuyển đổi HTML sang PDF và Nén thành Zip – Hướng dẫn C# toàn diện +tags: +- C# +- Aspose.HTML +- PDF generation +- ZIP compression +title: Chuyển đổi HTML sang PDF và Nén Zip – Hướng dẫn C# toàn diện +url: /vi/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Render HTML sang PDF và Nén Thành ZIP – Hướng Dẫn C# Đầy Đủ + +Bạn đã bao giờ cần **render HTML to PDF** ngay lập tức và sau đó gửi tệp cho khách hàng dưới dạng một kho lưu trữ duy nhất? Có thể bạn đang xây dựng một dịch vụ báo cáo lấy một trang web trực tiếp, chuyển nó thành PDF, và lưu kết quả trong một zip để tải xuống dễ dàng. Trong hướng dẫn này, chúng tôi sẽ hướng dẫn chi tiết—render một trang web từ xa thành PDF, sau đó **compressing the PDF in a zip** mà không cần chạm vào đĩa. + +Chúng tôi cũng sẽ đề cập cách **convert URL to PDF**, **generate PDF from website**, và cuối cùng **zip PDF file** để bạn có thể gửi nó đến bất cứ nơi nào bạn cần. Không có phần thừa, chỉ có giải pháp hoạt động mà bạn có thể đưa vào dự án .NET 6+ ngay hôm nay. + +## Những Gì Bạn Cần + +- **.NET 6** hoặc phiên bản mới hơn (mã này cũng hoạt động với .NET Framework 4.6+). +- **Aspose.HTML for .NET** – thư viện thực hiện phần lớn công việc chuyển HTML‑to‑PDF. +- Một chút kinh nghiệm C#—nếu bạn có thể viết `Console.WriteLine`, bạn đã sẵn sàng. +- Một IDE mà bạn chọn (Visual Studio, Rider, VS Code…). + +> **Mẹo chuyên nghiệp:** Aspose.HTML cung cấp bản dùng thử miễn phí bao gồm tất cả các tính năng render. Tải về từ [Aspose website](https://products.aspose.com/html/net/) trước khi bắt đầu. + +Bây giờ các điều kiện tiên quyết đã sẵn sàng, chúng ta hãy bắt đầu. + +## Bước 1 – Tải Tài Liệu HTML Từ Xa (Convert URL to PDF) + +Điều đầu tiên chúng ta phải làm là cho Aspose.HTML biết nguồn tài liệu nằm ở đâu. Trong trường hợp của chúng ta, đó là một URL công khai, nhưng bạn cũng có thể cung cấp một chuỗi chứa HTML thô. + +```csharp +using Aspose.Html; + +// ... + +// Load the HTML page from a remote URL +var htmlDoc = new HTMLDocument("https://example.com"); + +// If you need to pass custom headers or authentication, use the overload that accepts a WebRequest object. +``` + +**Why this matters:** Tải tài liệu từ URL có nghĩa là trình render sẽ tự động tải tất cả các tài nguyên liên kết (CSS, hình ảnh, phông chữ), cung cấp cho bạn một bản sao PDF trung thực của trang web trực tiếp. Bỏ qua bước này và cung cấp một chuỗi đơn giản sẽ loại bỏ các tài nguyên đó, điều mà hiếm khi bạn muốn khi *generate PDF from website*. + +## Bước 2 – Cấu Hình Tùy Chọn Render PDF (Quality Matters) + +Aspose.HTML cho phép bạn điều chỉnh cách PDF hiển thị. Antialiasing và font hinting là hai cài đặt giúp đầu ra trông sắc nét trên màn hình và khi in. + +```csharp +using Aspose.Html.Rendering.Pdf; + +// ... + +var pdfOptions = new PdfRenderingOptions +{ + // Enable sub‑pixel antialiasing for smoother graphics + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true }, + + // Turn on font hinting so text stays sharp at small sizes + TextOptions = new TextOptions { UseHinting = true } +}; +``` + +**Why we set these:** Nếu không có antialiasing, đồ họa đường nét và vector có thể xuất hiện răng cưa, đặc biệt trên màn hình high‑DPI. Hinting, ngược lại, chỉ cho engine PDF cách căn chỉnh glyphs tới ranh giới pixel, một điều chỉnh nhỏ nhưng thường tạo ra sự khác biệt lớn về hình ảnh. + +## Bước 3 – Chuẩn Bị Lưu Trữ ZIP Trong Bộ Nhớ (Zip PDF File) + +Thay vì ghi PDF ra đĩa trước rồi nén lại—một quy trình I/O hai bước gây phiền phức—chúng ta sẽ stream trực tiếp vào một mục zip. Điều này giữ mọi thứ trong bộ nhớ, rất phù hợp cho các API web hoặc công việc nền. + +```csharp +using System.IO; +using System.IO.Compression; + +// ... + +// Create a reusable MemoryStream that will hold the final ZIP file +using var zipMemory = new MemoryStream(); + +// Initialise a ZipArchive in Create mode; leaveOpen=true so we can read the stream later +var zipArchive = new ZipArchive(zipMemory, ZipArchiveMode.Create, leaveOpen: true); +``` + +**Edge case note:** Nếu bạn đang xử lý các PDF khổng lồ (hàng trăm MB), hãy cân nhắc truyền zip trực tiếp tới response stream thay vì giữ toàn bộ trong bộ nhớ. Đối với các báo cáo thông thường dưới 20 MB, cách tiếp cận này an toàn và nhanh. + +## Bước 4 – Stream PDF Trực Tiếp Vào Mục ZIP + +Đây là phần thông minh: chúng ta tạo một mục zip có tên `output.pdf` và truyền stream của nó cho Aspose.HTML. Trình render sẽ ghi các byte PDF trực tiếp vào mục zip—không cần tệp tạm thời. + +```csharp +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +// ... + +// Create a zip entry that will hold the PDF +var pdfEntry = zipArchive.CreateEntry("output.pdf"); + +// Open the entry’s stream; this is where Aspose will write the PDF +using var pdfStream = pdfEntry.Open(); + +// Save the HTML document as PDF, directing the output to our zip entry stream +htmlDoc.Save(pdfStream, pdfOptions); +``` + +**Why we do it this way:** Bằng cách cung cấp cho PDF writer một stream trỏ tới mục zip, chúng ta tránh vòng lặp “ghi‑ra‑đĩa → zip → xóa”. Điều này không chỉ giảm tải I/O mà còn loại bỏ nguy cơ để lại các tệp rác trên máy chủ. + +## Bước 5 – Hoàn Thành ZIP và Lưu Trữ + +Sau khi PDF được ghi, chúng ta cần đóng archive zip để thư mục trung tâm được flush, sau đó ghi toàn bộ ra đĩa (hoặc trả về từ API). + +```csharp +// Dispose the archive to finalize the ZIP structure +zipArchive.Dispose(); + +// Reset the memory stream position before reading +zipMemory.Position = 0; + +// Write the ZIP file to disk – replace the path with your own location +File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + +// If you’re in an ASP.NET Core controller, you could return File(zipMemory.ToArray(), "application/zip", "report.zip"); +``` + +**Result you’ll see:** Một tệp có tên `result.zip` chứa một mục duy nhất `output.pdf`. Mở PDF sẽ hiển thị một ảnh chụp pixel‑perfect của `https://example.com`, đầy đủ các kiểu và hình ảnh. + + + +*Văn bản thay thế hình ảnh: render html to pdf – ảnh chụp màn hình PDF đã tạo trong một tệp ZIP.* + +## Ví Dụ Hoàn Chỉnh Hoạt Động + +Kết hợp tất cả lại, đây là chương trình hoàn chỉnh, sẵn sàng sao chép và dán: + +```csharp +using System; +using System.IO; +using System.IO.Compression; +using Aspose.Html; +using Aspose.Html.Rendering.Pdf; +using Aspose.Html.Saving; +using Aspose.Html.Drawing; + +class ZipPdfHandler : ResourceHandler +{ + private readonly ZipArchive _zip; + public ZipPdfHandler(Stream zipStream) => + _zip = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true); + + public override Stream HandleResource(ResourceInfo info) + { + // Create a zip entry for each referenced resource (images, CSS, etc.) + var entry = _zip.CreateEntry(info.Uri.ToString().TrimStart('/')); + return entry.Open(); // Aspose streams directly into the entry + } +} + +class Program +{ + static void Main() + { + // 1️⃣ Load the remote HTML document (convert URL to PDF) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 2️⃣ Set up PDF rendering options with antialiasing and hinting + var pdfOptions = new PdfRenderingOptions + { + TextOptions = new TextOptions { UseHinting = true }, + ImageOptions = new ImageRenderingOptions { UseAntialiasing = true } + }; + + // 3️⃣ Prepare an in‑memory ZIP archive (zip PDF file) + using var zipMemory = new MemoryStream(); + var zipHandler = new ZipPdfHandler(zipMemory); + + // 4️⃣ Render the HTML to PDF; the PDF streams into the ZIP entry "output.pdf" + htmlDoc.Save(zipHandler, pdfOptions); + + // 5️⃣ Finalize the ZIP and save it (compress PDF in zip) + zipHandler.Dispose(); // closes all entries + zipMemory.Position = 0; + File.WriteAllBytes(@"C:\Temp\result.zip", zipMemory.ToArray()); + + Console.WriteLine("✅ PDF rendered and zipped successfully!"); + } +} +``` + +### Những Điều Bạn Sẽ Nhận Được + +- **`result.zip`** xuất hiện trong `C:\Temp`. +- Bên trong archive bạn sẽ thấy **`output.pdf`**. +- Mở PDF sẽ hiển thị trang trực tiếp từ `https://example.com` được render trung thực. + +Nếu bạn chạy chương trình và zip rỗng, hãy kiểm tra lại URL có thể truy cập được và Aspose.HTML có quyền tải các tài nguyên bên ngoài (tường lửa, cài đặt proxy, v.v.). + +## Câu Hỏi Thường Gặp & Trường Hợp Cạnh + +| Question | Answer | +|----------|--------| +| *Nếu trang tham chiếu các phông chữ bên ngoài?* | Aspose.HTML tự động tải xuống các web‑fonts được tham chiếu qua `@font-face`. Đảm bảo máy chủ có thể truy cập các URL của phông chữ. | +| *Tôi có thể thêm nhiều PDF vào cùng một ZIP không?* | Có—chỉ cần gọi `zipArchive.CreateEntry("report2.pdf")` và render một `HTMLDocument` khác vào stream đó. | +| *Làm thế nào để đặt tên tệp PDF tùy chỉnh?* | Thay đổi chuỗi truyền vào `CreateEntry`, ví dụ `CreateEntry("my‑invoice.pdf")`. | +| *Có an toàn khi sử dụng trong ứng dụng web đa luồng không?* | Mỗi yêu cầu nên tạo riêng `MemoryStream` và `ZipArchive`. Các đối tượng này không thread‑safe, vì vậy việc chia sẻ thể hiện sẽ gây hỏng dữ liệu. | +| *Còn các PDF lớn thì sao?* | Đối với PDF > 100 MB, hãy cân nhắc stream trực tiếp tới phản hồi HTTP (`Response.Body`) thay vì lưu trong bộ nhớ. | + +## Kết Luận + +Chúng tôi vừa cho bạn thấy cách **render HTML to PDF**, **convert URL to PDF**, **generate PDF from website**, và cuối cùng **zip PDF file**—tất cả trong một quy trình sạch, trong bộ nhớ. + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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..65f18b4d1 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ể. + +### [Tạo HTML từ chuỗi trong C# – Hướng dẫn đầy đủ với Memory Stream](./create-html-from-string-in-c-full-guide-with-memory-stream/) + +Hướng dẫn chi tiết cách tạo HTML từ chuỗi trong C# bằng Memory Stream, kèm ví dụ mã và các bước thực hiện. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/html/vietnamese/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md b/html/vietnamese/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md new file mode 100644 index 000000000..4b025c13e --- /dev/null +++ b/html/vietnamese/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md @@ -0,0 +1,278 @@ +--- +category: general +date: 2026-03-28 +description: Tạo HTML từ chuỗi bằng Aspose.Html và ghi nó vào một luồng. Tìm hiểu + cách chuyển đổi HTML thành chuỗi, trình xử lý tài nguyên tùy chỉnh và ghi HTML vào + luồng. +draft: false +keywords: +- create html from string +- convert html to string +- how to capture html +- custom resource handler +- write html to stream +language: vi +og_description: Tạo HTML từ chuỗi bằng Aspose.Html, lưu trữ trong bộ nhớ và chuyển + HTML thành chuỗi. Hướng dẫn chi tiết từng bước về bộ xử lý tài nguyên tùy chỉnh + và ghi HTML vào luồng. +og_title: Tạo HTML từ chuỗi trong C# – Hướng dẫn đầy đủ về Memory‑Stream +tags: +- Aspose.Html +- C# +- MemoryStream +title: Tạo HTML từ chuỗi trong C# – Hướng dẫn đầy đủ với Memory Stream +url: /vi/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tạo HTML từ chuỗi trong C# – Hướng dẫn đầy đủ với Memory Stream + +Bạn đã bao giờ cần **tạo HTML từ chuỗi** và giữ mọi thứ trong bộ nhớ mà không chạm tới hệ thống tệp? 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 tạo markup động ngay lập tức—ví dụ cho mẫu email hoặc chuyển đổi PDF—nhưng không muốn tạo tệp tạm thời trên đĩa. + +Tin tốt? Với Aspose.Html bạn có thể khởi tạo một `HTMLDocument` trực tiếp từ chuỗi, đưa nó vào **bộ xử lý tài nguyên tùy chỉnh**, và **ghi HTML vào stream** để sử dụng sau. Trong tutorial này chúng ta sẽ đi qua từng bước, từ chuỗi đầu vào tới kết quả `string` cuối cùng, và giải thích *tại sao* mỗi phần lại quan trọng. + +Sau khi hoàn thành hướng dẫn này, bạn sẽ có thể: + +* Tạo HTML từ chuỗi bằng Aspose.Html. +* Chuyển HTML sang chuỗi mà không ghi vào đĩa. +* Bắt HTML bằng một bộ xử lý tài nguyên tùy chỉnh. +* Ghi HTML vào `MemoryStream` và đọc lại. +* Phát hiện các lỗi thường gặp và áp dụng các mẹo thực tiễn. + +Không cần bất kỳ phụ thuộc bên ngoài nào ngoài Aspose.Html—chỉ cần một dự án .NET và một vài câu lệnh `using`. + +--- + +## Yêu cầu trước + +* .NET 6.0 trở lên (mã cũng chạy trên .NET Framework). +* Gói NuGet Aspose.Html for .NET (`Install-Package Aspose.Html`). +* Kiến thức cơ bản về C#—nếu bạn đã từng viết `Console.WriteLine` thì đã đủ. + +--- + +## Bước 1: Tạo HTML từ chuỗi – điểm khởi đầu + +Điều đầu tiên chúng ta cần là một chuỗi HTML thô. Hãy tưởng tượng nó như khung xương mà bạn thường dán vào một tệp `.html`. + +```csharp +// A simple HTML snippet we want to work with. +string rawHtml = "