From 3a159e1719302cad28752f1a4c3b814546efd44b Mon Sep 17 00:00:00 2001 From: Muhammad Adil Date: Sat, 28 Mar 2026 11:45:07 +0000 Subject: [PATCH] Add 5 html net tutorials MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Categories: generate-jpg-and-png-images, html-document-manipulation, rendering-html-documents, working-with-html-documents Source: AI Search API Tutorials: - Create HTML from string in C# – Full Guide with Memory Stream - How to Create HTML – Append Elements and Style Text - Render HTML to PNG in C# – Complete Step‑by‑Step Guide - Create PDF Document C# – Render HTML to PDF with Aspose - Render HTML to PDF and Zip It – Complete C# Guide Auto-generated by Professionalize.Tutorials Agent --- .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 244 +++++++++++++++ .../net/html-document-manipulation/_index.md | 2 + .../_index.md | 225 ++++++++++++++ .../net/rendering-html-documents/_index.md | 8 + .../_index.md | 226 ++++++++++++++ .../_index.md | 233 +++++++++++++++ .../net/working-with-html-documents/_index.md | 1 + .../_index.md | 276 +++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 243 +++++++++++++++ .../net/html-document-manipulation/_index.md | 2 + .../_index.md | 224 ++++++++++++++ .../net/rendering-html-documents/_index.md | 7 + .../_index.md | 230 +++++++++++++++ .../_index.md | 232 +++++++++++++++ .../net/working-with-html-documents/_index.md | 3 +- .../_index.md | 276 +++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 245 +++++++++++++++ .../net/html-document-manipulation/_index.md | 2 + .../_index.md | 226 ++++++++++++++ .../net/rendering-html-documents/_index.md | 6 + .../_index.md | 230 +++++++++++++++ .../_index.md | 234 +++++++++++++++ .../net/working-with-html-documents/_index.md | 3 + .../_index.md | 278 ++++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 245 +++++++++++++++ .../net/html-document-manipulation/_index.md | 2 + .../_index.md | 227 ++++++++++++++ .../net/rendering-html-documents/_index.md | 4 + .../_index.md | 231 +++++++++++++++ .../_index.md | 235 +++++++++++++++ .../net/working-with-html-documents/_index.md | 2 + .../_index.md | 278 ++++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 4 +- .../_index.md | 245 +++++++++++++++ .../net/html-document-manipulation/_index.md | 2 + .../_index.md | 226 ++++++++++++++ .../net/rendering-html-documents/_index.md | 4 + .../_index.md | 226 ++++++++++++++ .../_index.md | 234 +++++++++++++++ .../net/working-with-html-documents/_index.md | 1 + .../_index.md | 277 +++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 246 ++++++++++++++++ .../net/html-document-manipulation/_index.md | 2 + .../_index.md | 227 ++++++++++++++ .../net/rendering-html-documents/_index.md | 8 + .../_index.md | 231 +++++++++++++++ .../_index.md | 235 +++++++++++++++ .../net/working-with-html-documents/_index.md | 2 + .../_index.md | 278 ++++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 245 +++++++++++++++ .../net/html-document-manipulation/_index.md | 2 + .../_index.md | 227 ++++++++++++++ .../net/rendering-html-documents/_index.md | 11 +- .../_index.md | 227 ++++++++++++++ .../_index.md | 235 +++++++++++++++ .../net/working-with-html-documents/_index.md | 4 + .../_index.md | 278 ++++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 246 ++++++++++++++++ .../net/html-document-manipulation/_index.md | 2 + .../_index.md | 227 ++++++++++++++ .../net/rendering-html-documents/_index.md | 4 + .../_index.md | 232 +++++++++++++++ .../_index.md | 235 +++++++++++++++ .../net/working-with-html-documents/_index.md | 4 + .../_index.md | 278 ++++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 245 +++++++++++++++ .../net/html-document-manipulation/_index.md | 12 + .../_index.md | 227 ++++++++++++++ .../net/rendering-html-documents/_index.md | 10 +- .../_index.md | 228 ++++++++++++++ .../_index.md | 233 +++++++++++++++ .../net/working-with-html-documents/_index.md | 1 + .../_index.md | 278 ++++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 243 +++++++++++++++ .../net/html-document-manipulation/_index.md | 2 + .../_index.md | 224 ++++++++++++++ .../net/rendering-html-documents/_index.md | 7 + .../_index.md | 230 +++++++++++++++ .../_index.md | 231 +++++++++++++++ .../net/working-with-html-documents/_index.md | 2 + .../_index.md | 275 +++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 245 +++++++++++++++ .../net/html-document-manipulation/_index.md | 2 + .../_index.md | 227 ++++++++++++++ .../net/rendering-html-documents/_index.md | 4 + .../_index.md | 228 ++++++++++++++ .../_index.md | 235 +++++++++++++++ .../net/working-with-html-documents/_index.md | 5 + .../_index.md | 274 +++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 245 +++++++++++++++ .../net/html-document-manipulation/_index.md | 2 + .../_index.md | 227 ++++++++++++++ .../net/rendering-html-documents/_index.md | 6 + .../_index.md | 227 ++++++++++++++ .../_index.md | 234 +++++++++++++++ .../net/working-with-html-documents/_index.md | 1 + .../_index.md | 278 ++++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 245 +++++++++++++++ .../net/html-document-manipulation/_index.md | 2 + .../_index.md | 227 ++++++++++++++ .../net/rendering-html-documents/_index.md | 5 + .../_index.md | 227 ++++++++++++++ .../_index.md | 234 +++++++++++++++ .../net/working-with-html-documents/_index.md | 1 + .../_index.md | 278 ++++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 243 +++++++++++++++ .../net/html-document-manipulation/_index.md | 2 + .../_index.md | 223 ++++++++++++++ .../net/rendering-html-documents/_index.md | 8 + .../_index.md | 226 ++++++++++++++ .../_index.md | 232 +++++++++++++++ .../net/working-with-html-documents/_index.md | 1 + .../_index.md | 256 ++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 243 +++++++++++++++ .../net/html-document-manipulation/_index.md | 2 + .../_index.md | 225 ++++++++++++++ .../net/rendering-html-documents/_index.md | 4 + .../_index.md | 230 +++++++++++++++ .../_index.md | 232 +++++++++++++++ .../net/working-with-html-documents/_index.md | 4 + .../_index.md | 276 +++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 246 ++++++++++++++++ .../net/html-document-manipulation/_index.md | 2 + .../_index.md | 227 ++++++++++++++ .../net/rendering-html-documents/_index.md | 10 +- .../_index.md | 232 +++++++++++++++ .../_index.md | 235 +++++++++++++++ .../net/working-with-html-documents/_index.md | 2 + .../_index.md | 278 ++++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 245 +++++++++++++++ .../net/html-document-manipulation/_index.md | 2 + .../_index.md | 227 ++++++++++++++ .../net/rendering-html-documents/_index.md | 4 + .../_index.md | 231 +++++++++++++++ .../_index.md | 234 +++++++++++++++ .../net/working-with-html-documents/_index.md | 1 + .../_index.md | 278 ++++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 246 ++++++++++++++++ .../net/html-document-manipulation/_index.md | 2 + .../_index.md | 227 ++++++++++++++ .../net/rendering-html-documents/_index.md | 8 + .../_index.md | 227 ++++++++++++++ .../_index.md | 234 +++++++++++++++ .../net/working-with-html-documents/_index.md | 3 + .../_index.md | 278 ++++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 245 +++++++++++++++ .../net/html-document-manipulation/_index.md | 2 + .../_index.md | 227 ++++++++++++++ .../net/rendering-html-documents/_index.md | 4 + .../_index.md | 230 +++++++++++++++ .../_index.md | 234 +++++++++++++++ .../net/working-with-html-documents/_index.md | 2 + .../_index.md | 278 ++++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 245 +++++++++++++++ .../net/html-document-manipulation/_index.md | 2 + .../_index.md | 227 ++++++++++++++ .../net/rendering-html-documents/_index.md | 4 + .../_index.md | 226 ++++++++++++++ .../_index.md | 234 +++++++++++++++ .../net/working-with-html-documents/_index.md | 2 + .../_index.md | 278 ++++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 243 +++++++++++++++ .../net/html-document-manipulation/_index.md | 2 + .../_index.md | 225 ++++++++++++++ .../net/rendering-html-documents/_index.md | 5 + .../_index.md | 226 ++++++++++++++ .../_index.md | 232 +++++++++++++++ .../net/working-with-html-documents/_index.md | 4 + .../_index.md | 277 +++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 246 ++++++++++++++++ .../net/html-document-manipulation/_index.md | 2 + .../_index.md | 227 ++++++++++++++ .../net/rendering-html-documents/_index.md | 4 + .../_index.md | 228 ++++++++++++++ .../_index.md | 234 +++++++++++++++ .../net/working-with-html-documents/_index.md | 1 + .../_index.md | 277 +++++++++++++++++ .../net/generate-jpg-and-png-images/_index.md | 2 + .../_index.md | 245 +++++++++++++++ .../net/html-document-manipulation/_index.md | 4 +- .../_index.md | 227 ++++++++++++++ .../net/rendering-html-documents/_index.md | 4 + .../_index.md | 231 +++++++++++++++ .../_index.md | 234 +++++++++++++++ .../net/working-with-html-documents/_index.md | 5 + .../_index.md | 278 ++++++++++++++++++ 207 files changed, 28116 insertions(+), 7 deletions(-) create mode 100644 html/arabic/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/arabic/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/arabic/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/arabic/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/arabic/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/chinese/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/chinese/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/chinese/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/chinese/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/chinese/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/czech/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/czech/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/czech/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/czech/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/czech/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/dutch/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/dutch/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/dutch/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/dutch/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/dutch/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/english/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/english/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/english/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/english/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/english/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/french/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/french/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/french/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/french/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/french/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/german/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/german/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/german/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/german/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/german/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/greek/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/greek/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/greek/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/greek/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/greek/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/hindi/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/hindi/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/hindi/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/hindi/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/hindi/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/hongkong/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/hongkong/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/hongkong/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/hongkong/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/hongkong/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/hungarian/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/hungarian/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/hungarian/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/hungarian/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/hungarian/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/indonesian/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/indonesian/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/indonesian/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/indonesian/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/indonesian/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/italian/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/italian/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/italian/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/italian/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/italian/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/japanese/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/japanese/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/japanese/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/japanese/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/japanese/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/korean/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/korean/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/korean/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/korean/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/korean/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/polish/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/polish/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/polish/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/polish/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/polish/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/portuguese/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/portuguese/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/portuguese/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/portuguese/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/portuguese/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/russian/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/russian/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/russian/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/russian/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/russian/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/spanish/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/spanish/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/spanish/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/spanish/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/spanish/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/swedish/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/swedish/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/swedish/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/swedish/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/swedish/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/thai/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/thai/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/thai/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/thai/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/thai/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/turkish/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/turkish/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/turkish/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/turkish/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/turkish/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md create mode 100644 html/vietnamese/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md create mode 100644 html/vietnamese/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md create mode 100644 html/vietnamese/net/rendering-html-documents/create-pdf-document-c-render-html-to-pdf-with-aspose/_index.md create mode 100644 html/vietnamese/net/rendering-html-documents/render-html-to-pdf-and-zip-it-complete-c-guide/_index.md create mode 100644 html/vietnamese/net/working-with-html-documents/create-html-from-string-in-c-full-guide-with-memory-stream/_index.md 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 = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **حالة حافة:** بعض المواقع تحظر وكلاء المستخدم غير المتصفح. إذا حصلت على صورة فارغة، اضبط رأس user‑agent مخصص على الطلب أو قم بتحميل HTML أولاً ومرره كسلسلة. + +## الخطوة 4: التحويل إلى PNG + +الآن العملية الأساسية—استدعاء `RenderToFile`. قدم المسار الكامل حيث تريد حفظ PNG. + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +بعد تنفيذ هذا السطر، ستجد `output.png` في المجلد المحدد. افتحه بأي عارض صور للتحقق من النتيجة. + +> **ما المتوقع:** سيكون PNG بدقة 800 × 600 بيكسل بالضبط، مع نص ناعم وألوان مطابقة للصفحة الأصلية. إذا استخدمت الصفحة المصدر CSS أو صورًا خارجية، سيقوم Aspose.HTML بتحميل تلك الموارد تلقائيًا، بشرط أن تكون قابلة للوصول. + +## الخطوة 5: التحقق من النتيجة واستخدامها + +تحقق سريع يضمن أنك حصلت فعليًا على صورة وليس ملفًا فارغًا. + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +يمكنك الآن **حفظ صفحة ويب كـ PNG** للأرشفة، أو تضمين الصورة في النشرات البريدية، أو تمريرها إلى خط أنابيب تعلم الآلة الذي يتوقع صفحات نقطية. + +## اختياري: تعديل لسيناريوهات مختلفة + +### 5.1 تحويل لقطة شاشة للصفحة بالكامل + +إذا كنت تريد الصفحة القابلة للتمرير بالكامل بدلاً من جزء بحجم نافذة العرض، اضبط الارتفاع إلى قيمة أكبر أو استخدم `ImageRenderingOptions.PageHeight`: + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 تغيير تنسيق الصورة + +يدعم Aspose.HTML صيغ JPEG، BMP، GIF، و TIFF. غير امتداد الملف وسيتم اختيار التنسيق تلقائيًا: + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 معالجة الصفحات المحمية بالمصادقة + +للصفحات التي تتطلب تسجيل دخول، احصل على HTML باستخدام `HttpClient` (مع ملفات تعريف الارتباط أو رموز الحامل)، ثم مرّر السلسلة إلى `HTMLDocument` كما هو موضح سابقًا. بهذه الطريقة يمكنك ما زلت **تحويل صفحة ويب إلى صورة** حتى عندما لا تكون الصفحة متاحة للجمهور. + +## مثال عملي كامل + +فيما يلي تطبيق وحدة تحكم مستقل يجمع كل شيء. انسخه والصقه في مشروع وحدة تحكم .NET جديد وشغّله—سيقوم بتحميل `https://example.com`، تحويله، وحفظ `output.png` بجوار الملف التنفيذي. + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **الناتج المتوقع:** ملف `output.png`، بدقة 800 × 600 بيكسل، يظهر الصفحة الرئيسية لـ `example.com`. افتحه بأي عارض صور لتأكيد الدقة البصرية. + +## أسئلة شائعة ومشكلات محتملة + +- **س: هل يعمل هذا على لينكس؟** + نعم. Aspose.HTML متعدد المنصات؛ فقط تأكد من تثبيت بيئة تشغيل .NET. + +- **س: صفحتي تستخدم JavaScript لإدخال محتوى—هل سيظهر؟** + Aspose.HTML **لا** ينفّذ JavaScript. للصفحات الديناميكية ستحتاج إلى تحويل HTML مسبقًا (مثلاً باستخدام Chrome بدون رأس) ثم تمرير العلامات الثابتة إلى المحول. + +- **س: ما هو الحد الأقصى لحجم الصورة قبل أن تصبح الذاكرة مشكلة؟** + تحويل الصفحات الطويلة جدًا (أكثر من 10 k بكسل) قد يستهلك مئات الميجابايت من الذاكرة RAM. إذا واجهت `OutOfMemoryException`، فكر في تحويلها على أجزاء ولصق ملفات PNG معًا. + +- **س: هل يمكنني تضمين خطوط غير مثبتة على الخادم؟** + نعم. أدرج قواعد `@font-face` في CSS أو حمّل ملفات الخط عبر وسم ``؛ سيقوم Aspose.HTML بتضمينها أثناء التحويل إلى نقطية. + +## الخلاصة + +أصبحت الآن تمتلك طريقة قوية وجاهزة للإنتاج **لتحويل HTML إلى PNG** في C#. من خلال تكوين `ImageRenderingOptions`، تحميل الصفحة المستهدفة، واستدعاء `RenderToFile`، يمكنك **تحويل صفحة ويب إلى صورة**، **حفظ HTML كـ PNG**، **تصدير HTML كصورة**، و **حفظ صفحة ويب كـ PNG** ببضع أسطر من الشيفرة فقط. + +الخطوات التالية؟ جرّب تعديل الأبعاد لقطات شاشة عالية الدقة DPI، جرب إخراج JPEG لتقليل حجم الملفات، أو دمج هذه المنطق في API ASP.NET يُعيد PNG عند الطلب. الاحتمالات لا حصر لها، وبما أن الحل مُدار بالكامل، لن تحتاج إلى التعامل مع متصفحات خارجية أو مكتبات أصلية. + +هل لديك أسئلة إضافية حول تحويل الصور أو ميزات Aspose.HTML الأخرى؟ اترك تعليقًا أدناه، وبرمجة سعيدة! + +![مثال تحويل html إلى png](placeholder.png "تحويل html إلى png") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/arabic/net/html-document-manipulation/_index.md b/html/arabic/net/html-document-manipulation/_index.md index 5dca51c48..1eadab973 100644 --- a/html/arabic/net/html-document-manipulation/_index.md +++ b/html/arabic/net/html-document-manipulation/_index.md @@ -71,6 +71,8 @@ url: /ar/net/html-document-manipulation/ أطلق العنان لإمكانات تطوير الويب باستخدام Aspose.HTML for .NET. أنشئ مستندات HTML وحولها وتعامل معها بسهولة. ### [إنشاء HTML من سلسلة في C# – دليل معالج الموارد المخصص](./create-html-from-string-in-c-custom-resource-handler-guide/) تعرف على كيفية إنشاء مستند HTML من سلسلة نصية في C# باستخدام معالج موارد مخصص. +### [كيفية إنشاء HTML – إلحاق عناصر وتنسيق النص](./how-to-create-html-append-elements-and-style-text/) +تعلم كيفية إنشاء مستند HTML وإضافة عناصر وتطبيق تنسيقات النص بسهولة باستخدام Aspose.HTML. ## خاتمة diff --git a/html/arabic/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/arabic/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..a1b30ae27 --- /dev/null +++ b/html/arabic/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-03-28 +description: كيفية إنشاء HTML برمجيًا في C#. تعلم إلحاق عنصر إلى الـ body، إنشاء عنصر + فقرة، إضافة نص غامق مائل، وإضافة نمط CSS برمجيًا. +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: ar +og_description: كيفية إنشاء HTML برمجيًا باستخدام C#. يوضح لك هذا الدليل كيفية إلحاق + عنصر بجسم الصفحة، إنشاء عنصر فقرة، إضافة نص غامق مائل، وإضافة نمط CSS برمجيًا. +og_title: كيفية إنشاء HTML – إضافة العناصر وتنسيق النص +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: كيفية إنشاء HTML – إضافة العناصر وتنسيق النص +url: /ar/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية إنشاء HTML – إلحاق العناصر وتنسيق النص + +هل تساءلت يومًا **كيف تنشئ HTML** من C# دون اللجوء إلى بناء السلاسل النصية؟ لست وحدك. في العديد من سيناريوهات أتمتة الويب أو توليد البريد الإلكتروني تحتاج إلى نهج قائم على DOM يتيح لك إلحاق عنصر إلى الـ body، وتنسيقه، والحفاظ على الأمان النوعي. + +في هذا الدرس سنستعرض الخطوات الدقيقة **كيفية إنشاء HTML** باستخدام Aspose.HTML، بدءًا من إنشاء عنصر فقرة إلى إضافة نص غامق مائل وإضافة نمط CSS برمجياً. في النهاية ستحصل على سلسلة HTML جاهزة يمكنك حقنها في متصفح، أو بريد إلكتروني، أو محول PDF. + +## ما ستحتاجه + +- **.NET 6+** (أي نسخة حديثة تعمل؛ الـ API ثابتة عبر .NET Framework أيضًا) +- حزمة **Aspose.HTML for .NET** عبر NuGet – `Install-Package Aspose.HTML` +- فهم أساسي لصياغة C# – لا شيء معقد مطلوب + +لا ملفات إعداد إضافية، ولا محركات قوالب خارجية. مجرد كود C# بسيط يتعامل مع الـ DOM. + +![مثال على كيفية إنشاء HTML](/images/how-to-create-html.png "لقطة شاشة تُظهر بنية HTML المُولدة – كيفية إنشاء HTML") + +## الخطوة 1: إعداد المشروع واستيراد المساحات الاسمية + +أولًا، أنشئ تطبيق console (أو أي مشروع .NET) وأضف مرجع Aspose.HTML. ثم استورد المساحات الاسمية التي سنستخدمها. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **نصيحة احترافية:** إذا كنت تحتاج فقط إلى تعديل الـ DOM، يمكنك حذف مساحة الاسم `Aspose.Html.Rendering` – فهي مطلوبة فقط عندما تقوم بتحويل المستند إلى صورة أو PDF. + +## الخطوة 2: تعريف نمط CSS برمجياً + +عند **إضافة نمط CSS برمجياً**، تحصل على تحكم كامل في عائلات الخطوط، الأحجام، وحتى دمج علامات نمط الخط مثل غامق + مائل. إليك كيفية إنشاء كائن النمط هذا. + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +لماذا نستخدم `WebFontStyle.Bold | WebFontStyle.Italic` بدلاً من خاصيتين منفصلتين؟ الـ API يتعامل مع نمط الخط كقائمة أعلام، لذا دمجهما ينتج الـ CSS الدقيق `font-weight: bold; font-style: italic;` الذي تكتبه يدويًا. + +## الخطوة 3: إنشاء مستند HTML جديد + +الآن نطبق **كيفية إنشاء HTML** – كائن المستند يعمل كقماشنا. فكر فيه كصفحة فارغة يمكنك الرسم عليها. + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +في هذه المرحلة يحتوي المستند على العلامات القياسية ``، ``، و ``. يمكنك فحص `htmlDoc.Body` لرؤية عنصر `` الفارغ جاهزًا للأطفال. + +## الخطوة 4: إنشاء عنصر فقرة وإضافة نص غامق مائل + +هنا يبرز دور كلمة **create paragraph element**. سننشئ علامة `

`، نُدخل النمط الذي أنشأناه، ونحدد محتوى النص. + +```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")`. نمط `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** من الصفر باستخدام 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 جاهز للتوزيع، الأرشفة، أو المعالجة الإضافية. + +![مثال إنشاء مستند PDF C#](/images/create-pdf-csharp.png) + +## الأسئلة المتكررة (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` مع جميع الأنماط والصور. + +![Render HTML to PDF example](render-html-to-pdf.png "render html to pdf") + +*نص بديل للصورة: تحويل 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 = "

Hello, world!

"; +``` + +لماذا نبدأ بسلسلة؟ لأن العديد من الـ APIs (خدمات البريد الإلكتروني، مولدات PDF، عناصر التحكم في عرض الويب) تقبل العلامات HTML مباشرة. استخدام سلسلة يبقي سير العمل خفيفًا وقابلًا للاختبار. + +--- + +## الخطوة 2: تهيئة HTMLDocument بالسلسلة + +يمكن لفئة `HTMLDocument` في Aspose.Html قراءة العلامات من سلسلة، أو URL، أو تدفق. هنا نمرر لها `rawHtml` الخاص بنا. + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +في هذه المرحلة يعيش المستند بالكامل في الذاكرة. لا يتم إنشاء أي ملف، ويمكنك تعديل DOM كما تفعل في المتصفح. + +--- + +## الخطوة 3: بناء معالج موارد مخصص لالتقاط الناتج + +**معالج موارد مخصص** يمنحك التحكم في مكان وضع كل جزء من المستند (HTML، الصور، CSS). في حالتنا نهتم فقط بالـ HTML الرئيسي، لذا سنكتب كل شيء إلى `MemoryStream`. + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**لماذا معالج مخصص؟** طريقة `Save` الافتراضية تكتب إلى مسار ملف، مما يفسد فكرة سير العمل داخل الذاكرة. عبر تجاوز `HandleResource` نستقبل كل طلب مورد ونقرر بالضبط أين يذهب. هذا هو جوهر **كيفية التقاط HTML** دون لمس القرص. + +--- + +## الخطوة 4: حفظ المستند باستخدام المعالج + +الآن نخبر Aspose.Html بترميز `HTMLDocument` داخل `MyMemoryHandler` الخاص بنا. يمكن ترك كائن `SaveOptions` فارغًا للحصول على إخراج HTML افتراضي، لكن يمكنك تعديل الترميز، أو تنسيق الطباعة الجميل، إلخ إذا لزم الأمر. + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +عند تشغيل `Save`، يتم استدعاء `HandleResource`، ويُكتب الـ HTML الرئيسي في `memoryHandler.HtmlStream`، وأي ملفات مساعدة (صور، CSS) ستحصل على تدفقات خاصة بها—رغم أننا لم نضيف أي منها في هذا المثال البسيط. + +--- + +## الخطوة 5: تحويل التدفق الملتقط مرة أخرى إلى سلسلة + +لدينا الآن الـ HTML داخل `MemoryStream`. **لتحويل HTML إلى سلسلة**، نعيد ضبط موضع التدفق ونقرأه باستخدام `StreamReader`. + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +الآن يحتوي `resultHtml` على العلامات الدقيقة التي أنتجتها Aspose.Html. يمكنك إرسالها عبر الشبكة، أو تضمينها في بريد إلكتروني، أو تمريرها إلى مكتبة أخرى. + +--- + +## الخطوة 6: التحقق من الناتج – ماذا يجب أن ترى؟ + +لنطبع النتيجة على وحدة التحكم لتتأكد من أن كل شيء يعمل. + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**الناتج المتوقع** + +```html + +

Hello, world!

+``` + +لاحظ أن علامة `` تُضاف تلقائيًا بواسطة Aspose.Html. هذا أحد الأسباب التي تجعلنا نفضّل المكتبة على الجمع اليدوي للسلاسل—فهي تُنظم العلامات لك. + +--- + +## مثال كامل قابل للتنفيذ + +فيما يلي البرنامج الكامل الذي يمكنك وضعه في تطبيق Console وتشغيله فورًا. جميع الأجزاء مجمعة، لذا لا توجد مفاجآت بخصوص عبارات `using` أو تبعيات مخفية. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +انسخ‑الصق، اضغط **F5**، وسترى الـ HTML المنسق يُطبع على وحدة التحكم. + +--- + +## أسئلة شائعة وحالات حافة + +### ماذا لو احتجت إلى التقاط الصور أو ملفات CSS؟ + +`MyMemoryHandler` ينشئ بالفعل `MemoryStream` جديد لكل مورد. يمكنك توسيعه لتخزين هذه التدفقات في قاموس مفتاحه `info.Uri`. ثم يمكنك، على سبيل المثال، تضمين الصور كسلاسل Base64 لاحقًا. + +### هل يمكن تغيير ترميز الإخراج؟ + +نعم. مرّر `Saving.HtmlSaveOptions` مع ضبط خاصية `Encoding`: + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### هل يعمل هذا مع المستندات الكبيرة؟ + +`MemoryStream` يتوسع ديناميكيًا، لكن راقب استهلاك الذاكرة للصفحات الضخمة (مئات الـ MB). في تلك السيناريوهات قد تفضّل البث مباشرةً إلى ملف أو مقبس شبكة. + +### كيف يمكنني **كتابة HTML إلى تدفق** في سطر واحد؟ + +إذا لم تحتاج إلى معالج مخصص، يمكنك استخدام `htmlDocument.Save(Stream, SaveOptions)` مباشرة: + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +هذا بديل مختصر، رغم أنك ستفقد القدرة على اعتراض الموارد المساعدة. + +--- + +## نصائح احترافية ومخاطر + +* **نصيحة احترافية:** دائمًا أعد ضبط `Position` إلى `0` قبل قراءة `MemoryStream`. نسيان ذلك ينتج عنه سلسلة فارغة. +* **احذر من:** تمرير `null` إلى `SaveOptions`—Aspose.Html سيستخدم الإعدادات الافتراضية، لكن تحديد الخيارات بوضوح يجعل نيتك أوضح. +* **خطأ شائع:** الافتراض أن `HtmlStream` مُعبأ قبل انتهاء استدعاء `Save`. التدفق يصبح متاحًا فقط بعد عودة الدالة `Save`. +* **ملاحظة أداء:** للتحويلات المتكررة، أعد استخدام نسخة واحدة من `MyMemoryHandler` وامسح تدفقاتها بين كل تشغيل لتجنب تخصيصات إضافية. + +--- + +## الخلاصة + +أظهرنا لك كيفية **إنشاء HTML من سلسلة** في C#، التقاط النتيجة باستخدام **معالج موارد مخصص**، و**كتابة HTML إلى تدفق** لمعالجة لاحقة. عبر تحويل التدفق داخل الذاكرة مرة أخرى إلى سلسلة، تحصل على طريقة موثوقة **لتحويل HTML إلى سلسلة** دون لمس نظام الملفات. + +هذا النمط مرن بما يكفي لقوالب البريد الإلكتروني، توليد PDF، أو أي سيناريو تحتاج فيه إلى العلامات HTML في الوقت الفعلي. بعد ذلك، قد تستكشف تضمين الصور كـ Base64، تعديل `HtmlSaveOptions` للتقليل من الحجم، أو تمرير السلسلة إلى Aspose.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/generate-jpg-and-png-images/_index.md b/html/chinese/net/generate-jpg-and-png-images/_index.md index 3a7bc53dc..1222e6d49 100644 --- a/html/chinese/net/generate-jpg-and-png-images/_index.md +++ b/html/chinese/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML for .NET 提供了一种将 HTML 转换为图像的简单方法。 了解如何在使用 Aspose.HTML for .NET 将 DOCX 文档转换为 PNG 或 JPG 图像时启用抗锯齿,以提升图像质量。 ### [使用 C# 将 docx 转换为 png 并创建 zip 存档教程](./convert-docx-to-png-create-zip-archive-c-tutorial/) 学习如何使用 C# 将 DOCX 文档转换为 PNG 图像并打包为 ZIP 文件的完整步骤。 +### [在 C# 中将 HTML 渲染为 PNG – 完整分步指南](./render-html-to-png-in-c-complete-step-by-step-guide/) +本教程详细演示如何使用 Aspose.HTML for .NET 在 C# 中将 HTML 渲染为 PNG 图像,包含完整步骤和示例代码。 ## 结论 diff --git a/html/chinese/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/chinese/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..21385b0e8 --- /dev/null +++ b/html/chinese/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-03-28 +description: 学习如何使用 Aspose.HTML 在 C# 中将 HTML 渲染为 PNG。本指南还涵盖如何将网页转换为图像、将 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: zh +og_description: 了解如何使用 Aspose.HTML 在 C# 中将 HTML 渲染为 PNG。跟随本简易教程,将网页转换为图像、将 HTML 保存为 + PNG,并导出 HTML 为图像。 +og_title: 在 C# 中将 HTML 渲染为 PNG – 完整的逐步指南 +tags: +- C# +- Aspose.HTML +- Image Rendering +- .NET +title: 在 C# 中将 HTML 渲染为 PNG – 完整的逐步指南 +url: /zh/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 >}} + +# 在 C# 中将 HTML 渲染为 PNG – 完整分步指南 + +需要快速 **render HTML to PNG** 吗?在本教程中,我们将逐步演示如何使用 Aspose.HTML 库 for .NET 将 HTML 渲染为 PNG。无论您是在构建缩略图服务、生成电子邮件预览,还是仅仅需要 **convert a webpage to an image** 用于报告,下面的步骤都能帮助您轻松实现。 + +事情是这样的——大多数开发者会去使用浏览器截图工具,结果要处理无头 Chrome 二进制文件。虽然可行,但会带来很多开销。使用 Aspose.HTML,您可以直接在代码中 **save HTML as PNG**,无需外部进程。阅读完本指南后,您将能够 **export HTML as image**,将结果保存到磁盘,甚至可以调整抗锯齿或尺寸以适配您的 UI。 + +## 您将学习 + +- 如何通过 NuGet 安装 Aspose.HTML。 +- 为高质量输出设置 `ImageRenderingOptions`。 +- 加载在线页面或本地 HTML 字符串。 +- 将页面渲染为 PNG 文件。 +- 在 **saving webpage as PNG** 时的常见陷阱以及如何避免。 + +不需要任何 Aspose 经验;只需基本的 C#/.NET 环境和网络连接。 + +## 前提条件 + +- .NET 6.0 或更高(代码在 .NET Core、.NET Framework 4.6+ 和 .NET 7 上均可运行)。 +- Visual Studio 2022(或您喜欢的任何 IDE)。 +- 能够访问 NuGet 以获取 `Aspose.HTML` 包。 +- 一个您对生成的 PNG 具有写入权限的文件夹。 + +> **专业提示:** 如果您计划在服务器上运行此代码,请确保运行该进程的账户对输出目录具有写入权限;否则渲染步骤会悄然失败。 + +## 步骤 1:安装 Aspose.HTML + +首先,将 Aspose.HTML 库添加到项目中。打开 NuGet 包管理器控制台并运行: + +```powershell +Install-Package Aspose.HTML +``` + +或者,如果您更喜欢使用 UI,搜索 **Aspose.HTML** 并点击 **Install**。这会拉取所有必需的 DLL,包括渲染引擎。 + +> **为什么重要:** Aspose.HTML 在内部处理 HTML 解析、CSS 布局和图像光栅化,因此您无需启动无头浏览器。它也是完全托管的,这意味着无需携带本机依赖项。 + +## 步骤 2:配置 Image Rendering Options + +在渲染之前,先决定输出的尺寸和质量。`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 = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **边缘情况:** 某些站点会阻止非浏览器的用户代理。如果得到空白图像,请在请求中设置自定义 user‑agent 头,或先下载 HTML 再以字符串形式提供。 + +## 步骤 4:渲染为 PNG + +现在进行核心操作——调用 `RenderToFile`。提供 PNG 保存的完整路径。 + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +此行执行后,您将在指定文件夹中找到 `output.png`。使用任意图像查看器打开以验证结果。 + +> **预期结果:** PNG 将恰好为 800 × 600 px,文字平滑,颜色与原页面匹配。如果源页面使用外部 CSS 或图像,Aspose.HTML 会自动下载这些资源(前提是它们可访问)。 + +## 步骤 5:验证并使用结果 + +快速的完整性检查可确保您得到的是图像而非空文件。 + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +现在您可以 **save webpage as PNG** 用于归档,将图像嵌入电子邮件通讯,或将其输入到需要光栅化页面的机器学习流水线中。 + +## 可选:针对不同场景的微调 + +### 5.1 渲染完整页面截图 + +如果您想获取整个可滚动页面而不是视口大小的切片,可将高度设为更大值,或使用 `ImageRenderingOptions.PageHeight`: + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 更改图像格式 + +Aspose.HTML 支持 JPEG、BMP、GIF 和 TIFF。更换文件扩展名,格式会自动对应。 + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 处理受身份验证保护的页面 + +对于登录后才能访问的页面,使用 `HttpClient` 获取 HTML(包括 cookie 或 bearer token),然后像前面示例那样将字符串传递给 `HTMLDocument`。这样即使页面未公开,您仍然可以 **convert webpage to image**。 + +## 完整可运行示例 + +下面是一个独立的控制台应用程序,整合了所有步骤。复制粘贴到新的 .NET 控制台项目并运行——它会下载 `https://example.com`,渲染并将 `output.png` 保存到可执行文件旁边。 + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **预期输出:** 一个 `output.png` 文件,800 × 600 px,显示 `example.com` 的首页。使用任意图像查看器打开以确认视觉保真度。 + +## 常见问题与注意事项 + +- **Q: 这在 Linux 上可用吗?** + 是的。Aspose.HTML 跨平台;只需确保已安装 .NET 运行时。 + +- **Q: 我的页面使用 JavaScript 注入内容——会显示吗?** + Aspose.HTML **不** 执行 JavaScript。对于动态页面,您需要先预渲染 HTML(例如使用无头 Chrome),然后将静态标记提供给渲染器。 + +- **Q: 图像尺寸多大时会出现内存问题?** + 渲染非常高的页面(10 k+ 像素)可能会消耗数百兆内存。如果遇到 `OutOfMemoryException`,考虑分段渲染并将 PNG 拼接。 + +- **Q: 能否嵌入服务器上未安装的字体?** + 可以。在 CSS 中加入 `@font-face` 规则或通过 `` 标签加载字体文件;Aspose.HTML 在光栅化时会嵌入这些字体。 + +## 结论 + +您现在拥有一种稳健、可用于生产环境的 **render HTML to PNG** 方法。通过配置 `ImageRenderingOptions`、加载目标页面并调用 `RenderToFile`,您可以仅用几行代码就 **convert webpage to image**、**save HTML as PNG**、**export HTML as image**,以及 **save webpage as PNG**。 + +接下来可以做什么?尝试调整尺寸以获取高 DPI 截图,实验 JPEG 输出以获得更小的文件体积,或将此逻辑集成到按需返回 PNG 的 ASP.NET API 中。可能性无限,并且由于该方案是完全托管的,您无需与外部浏览器或本机库纠缠。 + +对图像渲染或其他 Aspose.HTML 功能还有疑问?在下方留言吧,祝编码愉快! + +![render html to png example](placeholder.png "render html to png") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/chinese/net/html-document-manipulation/_index.md b/html/chinese/net/html-document-manipulation/_index.md index d79966fc2..2114c4663 100644 --- a/html/chinese/net/html-document-manipulation/_index.md +++ b/html/chinese/net/html-document-manipulation/_index.md @@ -71,6 +71,8 @@ Aspose.HTML for .NET 以其简单性和强大性脱颖而出。它使您能够 使用 Aspose.HTML for .NET 释放 Web 开发的潜力。轻松创建、转换和操作 HTML 文档。 ### [在 C# 中从字符串创建 HTML – 自定义资源处理程序指南](./create-html-from-string-in-c-custom-resource-handler-guide/) 了解如何使用自定义资源处理程序将字符串转换为 HTML 文档。 +### [如何创建 HTML – 添加元素并设置文本样式](./how-to-create-html-append-elements-and-style-text/) +了解如何使用 Aspose.HTML for .NET 在 HTML 文档中追加元素并为文本设置样式的分步指南。 ## 结论 diff --git a/html/chinese/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/chinese/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..92a0d67b9 --- /dev/null +++ b/html/chinese/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,224 @@ +--- +category: general +date: 2026-03-28 +description: 如何在 C# 中以编程方式创建 HTML。学习将元素追加到 body,创建段落元素,添加粗体斜体文本,以及以编程方式添加 CSS 样式。 +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: zh +og_description: 如何在 C# 中以编程方式创建 HTML。本指南展示了如何将元素追加到 body、创建段落元素、添加粗体斜体文本以及以编程方式添加 + CSS 样式。 +og_title: 如何创建HTML – 添加元素并设置文本样式 +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: 如何创建HTML——追加元素并为文本设置样式 +url: /zh/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何创建 HTML – 追加元素并设置文本样式 + +是否曾经想过 **how to create HTML**(如何创建 HTML)从 C# 而不使用字符串构建器?你并不是唯一有此疑问的人。在许多网页自动化或电子邮件生成的场景中,你需要一种干净的、基于 DOM 的方法,能够将元素追加到 body,设置样式,并保持全部类型安全。 + +在本教程中,我们将逐步演示使用 Aspose.HTML **how to create HTML** 的完整过程,涵盖从创建段落元素到添加粗斜体文本以及以编程方式添加 CSS 样式的所有步骤。完成后,你将拥有一个可直接注入浏览器、电子邮件或 PDF 转换器的可用 HTML 字符串。 + +## 您需要的环境 + +- **.NET 6+**(任何近期版本均可;API 在 .NET Framework 上同样稳定) +- **Aspose.HTML for .NET** NuGet 包 – `Install-Package Aspose.HTML` +- 对 C# 语法的基本了解 – 不需要任何高级技巧 + +无需额外的配置文件,也不需要外部模板引擎。只需使用普通的 C# 代码操作 DOM。 + +![如何创建 HTML 示例](/images/how-to-create-html.png "显示生成的 HTML 结构的截图 – 如何创建 HTML") + +## 第 1 步:设置项目并导入命名空间 + +首先,创建一个控制台应用(或任意 .NET 项目),并添加 Aspose.HTML 引用。随后引入我们将使用的命名空间。 + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **专业提示:** 如果你只需要进行 DOM 操作,可以省略 `Aspose.Html.Rendering` 命名空间 —— 只有在将文档渲染为图像或 PDF 时才需要它。 + +## 第 2 步:以编程方式定义 CSS 样式 + +当你 **add css style programmatically** 时,你可以完全控制字体族、大小,甚至像粗体 + 斜体这样的组合字体样式标志。下面展示如何构造该样式对象。 + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +为什么使用 `WebFontStyle.Bold | WebFontStyle.Italic` 而不是两个独立的属性?API 将字体样式视为标志枚举,合并后会生成你手动编写的 CSS `font-weight: bold; font-style: italic;`。 + +## 第 3 步:创建一个新的 HTML 文档 + +现在我们真正 **how to create HTML** —— 文档对象充当我们的画布。可以把它想象成一张可以随意绘制的空白页。 + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +此时文档已经包含标准的 ``、`` 和 `` 标签。你可以检查 `htmlDoc.Body`,看到一个空的 `` 元素已准备好接受子节点。 + +## 第 4 步:创建段落元素并添加粗斜体文本 + +这正是 **create paragraph element** 发挥作用的地方。我们将生成一个 `

` 标签,注入前面构建的样式,并设置其文本内容。 + +```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")` 创建 `

` 或 ``。同样的 `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 操作即可。 + +## 总结 + +我们已经回答了使用 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。 + +![create pdf document c# example](/images/create-pdf-csharp.png) + +## 常见问题 (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` 的像素级完美快照,样式和图片完整保留。 + +![渲染 HTML 为 PDF 示例](render-html-to-pdf.png "渲染 HTML 为 PDF") + +*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 = "

Hello, world!

"; +``` + +为什么要从字符串开始?因为许多 API(邮件服务、PDF 生成器、Web‑view 控件)直接接受 HTML 标记。使用字符串可以让工作流保持轻量且易于测试。 + +--- + +## 第二步:使用字符串初始化 HTMLDocument + +Aspose.Html 的 `HTMLDocument` 类可以从字符串、URL 或流读取标记。这里我们将 `rawHtml` 传入。 + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +此时文档完全驻留在内存中。没有创建任何文件,你可以像在浏览器中一样操作 DOM。 + +--- + +## 第三步:构建自定义资源处理器以捕获输出 + +**自定义资源处理器**让你能够决定文档的每个部分(HTML、图片、CSS)最终存放在哪里。我们这里只关心主 HTML,因此会把所有内容写入 `MemoryStream`。 + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**为什么需要自定义处理器?** 默认的 `Save` 方法会写入文件路径,这违背了内存工作流的初衷。通过重写 `HandleResource`,我们拦截每一次资源请求,并精确决定其去向。这正是 **如何在不触碰磁盘的情况下捕获 HTML** 的核心。 + +--- + +## 第四步:使用处理器保存文档 + +现在我们让 Aspose.Html 将 `HTMLDocument` 序列化到我们的 `MyMemoryHandler` 中。`SaveOptions` 对象可以保持为空,使用默认的 HTML 输出;如果需要,还可以调整编码、格式化等。 + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +当 `Save` 执行时,`HandleResource` 被调用,主 HTML 被写入 `memoryHandler.HtmlStream`,任何附属文件(图片、CSS)也会得到各自的流——不过在这个简化示例中我们并未涉及这些资源。 + +--- + +## 第五步:将捕获的流转换回字符串 + +HTML 已经位于 `MemoryStream` 中。要 **将 HTML 转换为字符串**,只需将流指针回滚,然后使用 `StreamReader` 读取即可。 + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +此时 `resultHtml` 包含了 Aspose.Html 生成的完整标记。你可以将其发送到网络、嵌入邮件,或传递给其他库使用。 + +--- + +## 第六步:验证输出 – 你应该看到什么? + +让我们把结果打印到控制台,以便确认一切正常。 + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**预期输出** + +```html + +

Hello, world!

+``` + +注意 `` 标签是 Aspose.Html 自动添加的。这也是我们倾向于使用库而非手动字符串拼接的原因之一——库会为你规范化标记。 + +--- + +## 完整可运行示例 + +下面是可以直接粘贴到控制台应用并立即运行的完整程序。所有代码片段已整合,无需再额外添加 `using` 语句或隐藏依赖。 + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +复制粘贴,按 **F5**,即可在控制台看到格式化后的 HTML。 + +--- + +## 常见问题与边缘情况 + +### 如果需要捕获图片或 CSS 文件怎么办? + +`MyMemoryHandler` 已经为每个资源创建了新的 `MemoryStream`。你可以扩展它,将这些流存入以 `info.Uri` 为键的字典中。之后可以例如把图片嵌入为 Base64 字符串。 + +### 能否更改输出的编码? + +可以。传入一个设置了 `Encoding` 属性的 `Saving.HtmlSaveOptions`: + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### 处理大文档时会不会有问题? + +`MemoryStream` 会动态增长,但对于体积巨大的页面(数百 MB)需要关注内存占用。在这种情况下,你可能需要直接流式写入文件或网络套接字。 + +### 如何在一行代码中 **将 HTML 写入流**? + +如果不需要自定义处理器,可以直接使用 `htmlDocument.Save(Stream, SaveOptions)`: + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +这是一种更简洁的写法,只是失去了拦截附属资源的能力。 + +--- + +## 专业技巧与常见陷阱 + +* **技巧**:在读取 `MemoryStream` 前务必将 `Position` 重置为 `0`。忘记这一步会导致读取到空字符串。 +* **注意**:传入 `null` 的 `SaveOptions` 时,Aspose.Html 会使用默认值,但显式指定选项可以让意图更明确。 +* **常见错误**:以为 `HtmlStream` 在 `Save` 完成前已经填充。实际上,流只有在 `Save` 调用返回后才可用。 +* **性能提示**:对于重复转换的场景,复用同一个 `MyMemoryHandler` 实例,并在每次运行后清空其流,以避免额外的内存分配。 + +--- + +## 结论 + +我们展示了如何在 C# 中 **从字符串创建 HTML**,使用 **自定义资源处理器** 捕获结果,并 **将 HTML 写入流** 以便后续处理。通过将内存流转换回字符串,你还能可靠地 **将 HTML 转换为字符串**,而无需触碰文件系统。 + +该模式适用于邮件模板、PDF 生成或任何需要即时获取 HTML 标记的场景。接下来,你可以尝试将图片嵌入为 Base64,使用 `HtmlSaveOptions` 进行压缩,或将字符串传递给 Aspose.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/czech/net/generate-jpg-and-png-images/_index.md b/html/czech/net/generate-jpg-and-png-images/_index.md index 11b9c8465..d23f84901 100644 --- a/html/czech/net/generate-jpg-and-png-images/_index.md +++ b/html/czech/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Naučte se používat Aspose.HTML pro .NET k manipulaci s dokumenty HTML, převo Naučte se, jak při převodu dokumentů DOCX na PNG nebo JPG povolit antialiasing pro hladší výstup. ### [Převod docx na png – vytvoření zip archivu C# tutoriál](./convert-docx-to-png-create-zip-archive-c-tutorial/) Naučte se převést soubory DOCX na PNG a zabalit je do ZIP archivu pomocí C# a Aspose.HTML. +### [Vykreslete HTML do PNG v C# – Kompletní průvodce krok za krokem](./render-html-to-png-in-c-complete-step-by-step-guide/) +Naučte se, jak pomocí Aspose.HTML pro .NET převést HTML na PNG v C# pomocí podrobného krok‑za‑krokem návodu. ## Závěr diff --git a/html/czech/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/czech/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..f65424eba --- /dev/null +++ b/html/czech/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-28 +description: Naučte se, jak v C# s Aspose.HTML převést HTML na PNG. Tento průvodce + také zahrnuje, jak převést webovou stránku na obrázek, uložit HTML jako PNG, exportovat + HTML jako obrázek a uložit webovou stránku jako 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: cs +og_description: Naučte se, jak v C# s Aspose.HTML převést HTML na PNG. Postupujte + podle tohoto jednoduchého tutoriálu, který vám ukáže, jak převést webovou stránku + na obrázek, uložit HTML jako PNG a exportovat HTML jako obrázek. +og_title: Převod HTML na PNG v C# – Kompletní průvodce krok za krokem +tags: +- C# +- Aspose.HTML +- Image Rendering +- .NET +title: Vykreslení HTML do PNG v C# – Kompletní průvodce krok za krokem +url: /cs/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 >}} + +# Renderování HTML do PNG v C# – Kompletní průvodce krok za krokem + +Potřebujete rychle **renderovat HTML do PNG**? V tomto tutoriálu vás provedeme přesně tím, jak renderovat HTML do PNG pomocí knihovny Aspose.HTML pro .NET. Ať už vytváříte službu pro miniatury, generujete náhledy e‑mailů, nebo jen potřebujete **převést webovou stránku na obrázek** pro reportování, níže uvedené kroky vás dovede k cíli s minimální námahou. + +Věc je taková—většina vývojářů sáhne po nástroji pro snímky obrazovky prohlížeče a končí s manipulací s binárními soubory headless Chrome. To funguje, ale přidává spoustu režie. S Aspose.HTML můžete **uložit HTML jako PNG** přímo z kódu, bez potřeby externího procesu. Na konci tohoto průvodce budete schopni **exportovat HTML jako obrázek**, uložit výsledek na disk a dokonce doladit antialiasing nebo rozměry podle vašich UI. + +## Co se naučíte + +- Jak nainstalovat Aspose.HTML přes NuGet. +- Nastavení `ImageRenderingOptions` pro výstup ve vysoké kvalitě. +- Načtení online stránky nebo lokálního HTML řetězce. +- Renderování stránky do souboru PNG. +- Běžné úskalí při **ukládání webové stránky jako PNG** a jak se jim vyhnout. + +Předchozí zkušenost s Aspose není potřeba; stačí základní nastavení C#/.NET a internetové připojení. + +## Požadavky + +- .NET 6.0 nebo novější (kód funguje na .NET Core, .NET Framework 4.6+ a .NET 7). +- Visual Studio 2022 (nebo jakékoli IDE dle vašeho výběru). +- Přístup k NuGet pro stažení balíčku `Aspose.HTML`. +- Složka, do které máte oprávnění zápisu pro generovaný PNG. + +> **Tip:** Pokud plánujete spouštět toto na serveru, ujistěte se, že účet, pod kterým proces běží, má právo zapisovat do výstupního adresáře; jinak krok renderování tiše selže. + +## Krok 1: Instalace Aspose.HTML + +Nejprve přidejte knihovnu Aspose.HTML do svého projektu. Otevřete konzoli NuGet Package Manager a spusťte: + +```powershell +Install-Package Aspose.HTML +``` + +Nebo, pokud dáváte přednost UI, vyhledejte **Aspose.HTML** a klikněte na **Install**. Tím se stáhnou všechny potřebné DLL, včetně renderovacího enginu. + +> **Proč je to důležité:** Aspose.HTML interně zpracovává parsování HTML, rozvržení CSS a rasterizaci obrázků, takže nemusíte spouštět headless prohlížeč. Je také plně spravovaná, což znamená, že nevyžaduje žádné nativní závislosti k distribuci. + +## Krok 2: Konfigurace možností renderování obrázku + +Před renderováním si určete velikost a kvalitu výstupu. Třída `ImageRenderingOptions` vám poskytuje detailní kontrolu. + +```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 +}; +``` + +> **Proč povolit antialiasing?** Bez něj mohou být hrany zubaté, což je zvláště patrné na obrazovkách s vysokým DPI. Zapnutí přidá malou cenu výkonu, ale výsledkem je mnohem čistší PNG. + +## Krok 3: Načtení HTML obsahu + +Můžete renderovat vzdálenou URL, lokální soubor nebo dokonce surový HTML řetězec. Pro tento příklad načteme živou stránku. + +```csharp +// Step 3: Load the HTML document from a URL +var htmlDoc = new HTMLDocument("https://example.com"); +``` + +Pokud máte HTML uložené v řetězci, použijte přetížení, které přijímá `MemoryStream`: + +```csharp +string rawHtml = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **Hraniční případ:** Některé stránky blokují ne‑prohlížečové user‑agenty. Pokud získáte prázdný obrázek, nastavte vlastní user‑agent hlavičku v požadavku nebo nejprve stáhněte HTML a předávejte jej jako řetězec. + +## Krok 4: Renderování do PNG + +Nyní hlavní operace—volání `RenderToFile`. Zadejte úplnou cestu, kam chcete PNG uložit. + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +Po provedení tohoto řádku najdete `output.png` ve zadané složce. Otevřete jej libovolným prohlížečem obrázků a ověřte výsledek. + +> **Co očekávat:** PNG bude přesně 800 × 600 px, s hladkým textem a barvami odpovídajícími originální stránce. Pokud zdrojová stránka používá externí CSS nebo obrázky, Aspose.HTML tyto zdroje automaticky stáhne, pokud jsou dostupné. + +## Krok 5: Ověření a použití výsledku + +Rychlá kontrola zajistí, že jste skutečně získali obrázek a ne prázdný soubor. + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +Nyní můžete **uložit webovou stránku jako PNG** pro archivaci, vložit obrázek do e‑mailových newsletterů nebo jej předat do pipeline strojového učení, která očekává rasterizované stránky. + +## Volitelné: Úpravy pro různé scénáře + +### 5.1 Renderování celostránkového snímku + +Pokud chcete celou posouvatelnou stránku místo výřezu velikosti viewportu, nastavte výšku na větší hodnotu nebo použijte `ImageRenderingOptions.PageHeight`: + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 Změna formátu obrázku + +Aspose.HTML podporuje JPEG, BMP, GIF a TIFF. Změňte příponu souboru a formát se automaticky přizpůsobí: + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 Zpracování stránek chráněných autentizací + +Pro stránky za přihlášením načtěte HTML pomocí `HttpClient` (včetně cookies nebo bearer tokenů) a poté předávejte řetězec do `HTMLDocument` jako dříve ukázáno. Tímto způsobem můžete stále **převést webovou stránku na obrázek**, i když stránka není veřejně přístupná. + +## Kompletní funkční příklad + +Níže je samostatná konzolová aplikace, která spojuje vše dohromady. Zkopírujte a vložte ji do nového .NET konzolového projektu a spusťte—stáhne `https://example.com`, vykreslí jej a uloží `output.png` vedle spustitelného souboru. + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **Očekávaný výstup:** Soubor `output.png`, 800 × 600 px, zobrazující domovskou stránku `example.com`. Otevřete jej v libovolném prohlížeči obrázků a potvrďte vizuální věrnost. + +## Časté otázky a úskalí + +- **Q: Funguje to na Linuxu?** + Ano. Aspose.HTML je multiplatformní; stačí zajistit, že je nainstalováno .NET runtime. + +- **Q: Moje stránka používá JavaScript k vkládání obsahu—objeví se?** + Aspose.HTML **ne**spouští JavaScript. Pro dynamické stránky budete muset předem vygenerovat HTML (např. s headless Chrome) a poté předat statický markup rendereru. + +- **Q: Jak velký může být obrázek, než se objeví problém s pamětí?** + Renderování velmi vysokých stránek (10 k+ pixelů) může spotřebovat několik stovek megabajtů RAM. Pokud narazíte na `OutOfMemoryException`, zvažte renderování po částech a následné spojení PNG. + +- **Q: Mohu vložit fonty, které nejsou nainstalovány na serveru?** + Ano. Přidejte pravidla `@font-face` do svého CSS nebo načtěte soubory fontů pomocí `` tagu; Aspose.HTML je během rasterizace vloží. + +## Závěr + +Nyní máte robustní, připravenou metodu pro **renderování HTML do PNG** v C#. Konfigurací `ImageRenderingOptions`, načtením cílové stránky a voláním `RenderToFile` můžete **převést webovou stránku na obrázek**, **uložit HTML jako PNG**, **exportovat HTML jako obrázek** a **uložit webovou stránku jako PNG** pomocí jen několika řádků kódu. + +Další kroky? Zkuste upravit rozměry pro snímky ve vysokém DPI, experimentujte s výstupem JPEG pro menší velikosti souborů, nebo integrujte tuto logiku do ASP.NET API, které na požádání vrací PNG. Možnosti jsou neomezené a protože řešení je plně spravované, nebudete se muset potýkat s externími prohlížeči nebo nativními knihovnami. + +Máte další otázky ohledně renderování obrázků nebo dalších funkcí Aspose.HTML? Zanechte komentář níže a šťastné kódování! + +![příklad renderování html do png](placeholder.png "render html do png") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/czech/net/html-document-manipulation/_index.md b/html/czech/net/html-document-manipulation/_index.md index 6f2c68f80..ae18d25ad 100644 --- a/html/czech/net/html-document-manipulation/_index.md +++ b/html/czech/net/html-document-manipulation/_index.md @@ -71,6 +71,8 @@ Naučte se používat Aspose.HTML pro .NET. Importujte jmenný prostor, slučujt Odemkněte potenciál vývoje webu s Aspose.HTML pro .NET. Snadno vytvářejte, převádějte a manipulujte s dokumenty HTML. ### [Vytvoření HTML ze řetězce v C# – Průvodce vlastním Resource Handlerem](./create-html-from-string-in-c-custom-resource-handler-guide/) Naučte se, jak vytvořit HTML dokument z řetězce v C# pomocí vlastního Resource Handleru. +### [Jak vytvořit HTML – Přidat prvky a stylovat text](./how-to-create-html-append-elements-and-style-text/) +Naučte se, jak pomocí Aspose.HTML vytvořit HTML dokument, přidávat prvky a aplikovat styly na text. ## Závěr diff --git a/html/czech/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/czech/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..a6ae6cb20 --- /dev/null +++ b/html/czech/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-03-28 +description: Jak programově vytvořit HTML v C#. Naučte se přidat prvek do těla, vytvořit + odstavec, přidat tučný kurzívní text a programově přidat CSS styl. +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: cs +og_description: Jak programově vytvořit HTML v C#. Tento průvodce ukazuje, jak přidat + prvek do těla dokumentu, vytvořit odstavec, přidat tučný kurzívní text a programově + přidat CSS styl. +og_title: Jak vytvořit HTML – přidávat prvky a stylovat text +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: Jak vytvořit HTML – přidávat prvky a stylovat text +url: /cs/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak vytvořit HTML – Přidávat elementy a stylovat text + +Už jste se někdy zamýšleli **jak vytvořit HTML** z C# bez použití StringBuilderu? Nejste v tom sami. V mnoha scénářích web‑automatizace nebo generování e‑mailů potřebujete čistý, DOM‑založený přístup, který vám umožní přidat element do těla, stylovat jej a zachovat typovou bezpečnost. + +V tomto tutoriálu projdeme přesně kroky **jak vytvořit HTML** pomocí Aspose.HTML, od vytvoření odstavcového elementu až po přidání tučného kurzívního textu a programové přidání CSS stylu. Na konci budete mít připravený HTML řetězec, který můžete vložit do prohlížeče, e‑mailu nebo PDF konvertoru. + +## Co budete potřebovat + +- **.NET 6+** (jakákoli recentní verze; API je stabilní i v .NET Framework) +- **Aspose.HTML for .NET** NuGet balíček – `Install-Package Aspose.HTML` +- Základní znalost syntaxe C# – nic složitého není potřeba + +Žádné extra konfigurační soubory, žádné externí šablonovací enginy. Pouze čistý C# kód, který manipuluje s DOM. + +![příklad jak vytvořit html](/images/how-to-create-html.png "Snímek obrazovky ukazující vygenerovanou strukturu HTML – jak vytvořit html") + +## Krok 1: Nastavení projektu a import jmenných prostorů + +Nejprve vytvořte konzolovou aplikaci (nebo jakýkoli .NET projekt) a přidejte referenci na Aspose.HTML. Pak naimportujte jmenné prostory, které budeme používat. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **Tip:** Pokud potřebujete jen manipulaci s DOM, můžete vynechat jmenný prostor `Aspose.Html.Rendering` – je potřeba jen při renderování dokumentu do obrázku nebo PDF. + +## Krok 2: Definovat CSS styl programově + +Když **přidáte CSS styl programově**, získáte plnou kontrolu nad rodinami fontů, velikostmi a dokonce i kombinovanými příznaky stylu písma jako tučné + kurzíva. Zde je, jak vytvořit takový stylový objekt. + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +Proč použít `WebFontStyle.Bold | WebFontStyle.Italic` místo dvou samostatných vlastností? API zachází se stylem písma jako s příznakovou enumerací, takže jejich sloučení vytvoří přesně CSS `font-weight: bold; font-style: italic;`, které byste napsali ručně. + +## Krok 3: Vytvořit nový HTML dokument + +Nyní skutečně **jak vytvořit HTML** – objekt dokumentu funguje jako naše plátno. Představte si ho jako prázdnou stránku, na kterou můžete malovat. + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +V tomto okamžiku dokument obsahuje standardní tagy ``, `` a ``. Můžete si prohlédnout `htmlDoc.Body` a uvidíte prázdný element `` připravený na děti. + +## Krok 4: Vytvořit element odstavce a přidat tučný kurzívní text + +Zde se ukazuje síla klíčového slova **create paragraph element**. Vygenerujeme tag `

`, 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 `

` nebo `` pomocí `htmlDoc.CreateElement("div")`. Stejný vzor `SetAttribute` funguje. + +- **Přidávání více uzlů:** Procházejte kolekci řetězců a pro každý vytvořte odstavec, který přidáte do těla. Pamatujte, že pokud je styl stejný, můžete znovu použít stejný `CSSStyleDeclaration` – není nutné jej znovu vytvářet. + +- **Problémy s kódováním:** `TextContent` automaticky HTML‑enkóduje speciální znaky (`&`, `<`, `>`). Pokud potřebujete surové HTML, použijte `InnerHtml`, ale buďte opatrní vůči injekčním útokům. + +## Úplný funkční příklad + +Níže je kompletní program připravený ke zkopírování a vložení, který demonstruje celý tok od začátku do konce. + +```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); + } +} +``` + +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í. + +![create pdf document c# example](/images/create-pdf-csharp.png) + +## Č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. + +![Render HTML do PDF příklad](render-html-to-pdf.png "render html to pdf") + +*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 = "

Hello, world!

"; +``` + +Proč začínat se stringem? Protože mnoho API (e‑mailové služby, PDF generátory, web‑view ovládací prvky) přijímá HTML markup přímo. Použití stringu udržuje workflow lehké a testovatelné. + +--- + +## Krok 2: Inicializace HTMLDocument se stringem + +Třída `HTMLDocument` z Aspose.Html umí číst markup ze stringu, URL nebo streamu. Zde jí předáme náš `rawHtml`. + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +V tomto okamžiku dokument existuje výhradně v paměti. Žádný soubor není vytvořen a můžete manipulovat s DOMem stejně, jako byste to dělali v prohlížeči. + +--- + +## Krok 3: Vytvoření vlastního resource handleru pro zachycení výstupu + +**Vlastní resource handler** vám dává kontrolu nad tím, kam se každá část dokumentu (HTML, obrázky, CSS) uloží. V našem případě nás zajímá jen hlavní HTML, takže vše zapíšeme do `MemoryStream`. + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**Proč vlastní handler?** Výchozí metoda `Save` zapisuje do souborové cesty, což ruší smysl workflow v paměti. Přepsáním `HandleResource` zachytíme každý požadavek na zdroj a rozhodneme, kam ho umístíme. To je jádro **zachycení HTML** bez dotyku disku. + +--- + +## Krok 4: Uložení dokumentu pomocí handleru + +Nyní řekneme Aspose.Html, aby serializoval `HTMLDocument` do našeho `MyMemoryHandler`. Objekt `SaveOptions` může zůstat prázdný pro výchozí HTML výstup, ale můžete upravit kódování, formátování atd., pokud potřebujete. + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +Když se spustí `Save`, zavolá se `HandleResource`, hlavní HTML se zapíše do `memoryHandler.HtmlStream` a případné doplňkové soubory (obrázky, CSS) by dostaly své vlastní streamy – i když v tomto jednoduchém příkladu žádné nemáme. + +--- + +## Krok 5: Převod zachyceného streamu zpět na string + +HTML máme uložené uvnitř `MemoryStream`. Pro **převod HTML na string** stačí přetočit stream a přečíst ho pomocí `StreamReader`. + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +`resultHtml` nyní obsahuje přesně ten markup, který Aspose.Html vygeneroval. Můžete jej poslat po síti, vložit do e‑mailu nebo předat jiné knihovně. + +--- + +## Krok 6: Ověření výstupu – co byste měli vidět? + +Vytiskněme výsledek do konzole, abyste mohli potvrdit, že vše funguje. + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**Očekávaný výstup** + +```html + +

Hello, world!

+``` + +Všimněte si, že tag `` je automaticky přidán knihovnou Aspose.Html. To je jeden z důvodů, proč dáváme přednost knihovně před ručním skládáním stringů – normalizuje markup za vás. + +--- + +## Kompletní, spustitelný příklad + +Níže je kompletní program, který můžete vložit do konzolové aplikace a okamžitě spustit. Všechny části jsou pohromadě, takže nebudete hádat chybějící `using` direktivy nebo skryté závislosti. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +Zkopírujte, stiskněte **F5** a uvidíte formátované HTML vytištěné v konzoli. + +--- + +## Často kladené otázky a okrajové případy + +### Co když potřebuji zachytit obrázky nebo CSS soubory? + +`MyMemoryHandler` už vytváří nový `MemoryStream` pro každý zdroj. Můžete jej rozšířit tak, aby ukládal tyto streamy do slovníku s klíčem `info.Uri`. Pak byste například mohli později vložit obrázky jako Base64 řetězce. + +### Můžu změnit kódování výstupu? + +Ano. Předáte `Saving.HtmlSaveOptions` s nastavenou vlastností `Encoding`: + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### Funguje to i s velkými dokumenty? + +`MemoryStream` roste dynamicky, ale mějte na paměti spotřebu paměti u obrovských stránek (stovky MB). V takových scénářích můžete streamovat přímo do souboru nebo síťového socketu. + +### Jak **zapsat HTML do streamu** v jedné řádce? + +Pokud nepotřebujete vlastní handler, můžete použít přímo `htmlDocument.Save(Stream, SaveOptions)`: + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +Jedná se o kompaktní alternativu, i když ztrácíte možnost zachytit doplňkové zdroje. + +--- + +## Profesionální tipy a úskalí + +* **Tip:** Vždy resetujte `Position` na `0` před čtením `MemoryStream`. Zapomenutí tohoto kroku vede k prázdnému řetězci. +* **Dejte pozor na:** Předání `null` do `SaveOptions` – Aspose.Html použije výchozí hodnoty, ale explicitní nastavení činí váš záměr jasnějším. +* **Častá chyba:** Předpokládat, že `HtmlStream` je naplněn ještě před dokončením `Save`. Stream je k dispozici až po návratu z volání `Save`. +* **Poznámka k výkonu:** Pro opakované konverze znovu použijte jedinou instanci `MyMemoryHandler` a mezi běhy vyčistěte její streamy, abyste se vyhnuli zbytečným alokacím. + +--- + +## Závěr + +Ukázali jsme, jak **vytvořit HTML ze stringu** v C#, zachytit výsledek pomocí **vlastního resource handleru** a **zapsat HTML do streamu** pro další zpracování. Převodem streamu zpět na string získáte spolehlivý způsob, jak **převést HTML na string** bez dotyku souborového systému. + +Tento vzor je dostatečně flexibilní pro e‑mailové šablony, generování PDF nebo jakýkoli scénář, kde potřebujete HTML markup za běhu. Dále můžete zkoumat vkládání obrázků jako Base64, ladění `HtmlSaveOptions` pro minifikaci nebo předání řetězce do Aspose.PDF pro konverzi do PDF. + +Máte další otázky ohledně zacházení se zdroji, kódování nebo výkonu? Zanechte komentář níže – šťastné programování! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/dutch/net/generate-jpg-and-png-images/_index.md b/html/dutch/net/generate-jpg-and-png-images/_index.md index e05f0c0a7..bc483595c 100644 --- a/html/dutch/net/generate-jpg-and-png-images/_index.md +++ b/html/dutch/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Leer hoe u Aspose.HTML voor .NET kunt gebruiken om HTML-documenten te bewerken, Leer hoe u antialiasing inschakelt bij het omzetten van DOCX-bestanden naar PNG- of JPG-afbeeldingen met Aspose.HTML. ### [docx naar png converteren – zip-archief maken C#-tutorial](./convert-docx-to-png-create-zip-archive-c-tutorial/) Leer hoe u een DOCX-bestand naar PNG converteert en de resultaten in een zip-archief opslaat met C# en Aspose.HTML. +### [HTML renderen naar PNG in C# – Complete stapsgewijze handleiding](./render-html-to-png-in-c-complete-step-by-step-guide/) +Leer hoe u HTML naar PNG converteert met C# en Aspose.HTML in een volledige stap‑voor‑stap handleiding. ## Conclusie diff --git a/html/dutch/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/dutch/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..0d0515e58 --- /dev/null +++ b/html/dutch/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-28 +description: Leer hoe je HTML naar PNG rendert in C# met Aspose.HTML. Deze gids behandelt + ook hoe je een webpagina naar een afbeelding converteert, HTML opslaat als PNG, + HTML exporteert als afbeelding en een webpagina opslaat als 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: nl +og_description: Leer hoe je HTML naar PNG rendert in C# met Aspose.HTML. Volg deze + eenvoudige tutorial om een webpagina naar een afbeelding te converteren, HTML op + te slaan als PNG en HTML als afbeelding te exporteren. +og_title: HTML renderen naar PNG in C# – Complete stap‑voor‑stapgids +tags: +- C# +- Aspose.HTML +- Image Rendering +- .NET +title: HTML renderen naar PNG in C# – Complete stap‑voor‑stap gids +url: /nl/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 naar PNG renderen in C# – Complete stapsgewijze gids + +Need to **render HTML to PNG** quickly? In this tutorial we’ll walk you through exactly how to render HTML to PNG using the Aspose.HTML library for .NET. Whether you’re building a thumbnail service, generating email previews, or just need to **convert a webpage to an image** for reporting, the steps below will get you there with minimal fuss. + +Here’s the thing—most developers reach for a browser‑screenshot tool and end up juggling headless Chrome binaries. That works, but it adds a lot of overhead. With Aspose.HTML you can **save HTML as PNG** directly from code, no external process required. By the end of this guide you’ll be able to **export HTML as image**, store the result on disk, and even tweak antialiasing or dimensions to suit your UI. + +## What You’ll Learn + +- How to install Aspose.HTML via NuGet. +- Setting up `ImageRenderingOptions` for high‑quality output. +- Loading an online page or local HTML string. +- Rendering the page to a PNG file. +- Common pitfalls when **saving webpage as PNG** and how to avoid them. + +No prior experience with Aspose is needed; just a basic C#/.NET setup and an internet connection. + +## Prerequisites + +- .NET 6.0 or later (the code works on .NET Core, .NET Framework 4.6+, and .NET 7). +- Visual Studio 2022 (or any IDE you prefer). +- Access to NuGet to pull the `Aspose.HTML` package. +- A folder where you have write permission for the generated PNG. + +> **Pro tip:** If you plan to run this on a server, make sure the account running the process can write to the output directory; otherwise the render step will silently fail. + +## Step 1: Install Aspose.HTML + +First, add the Aspose.HTML library to your project. Open the NuGet Package Manager Console and run: + +```powershell +Install-Package Aspose.HTML +``` + +Or, if you prefer the UI, search for **Aspose.HTML** and click **Install**. This pulls in all the necessary DLLs, including the rendering engine. + +> **Why this matters:** Aspose.HTML handles HTML parsing, CSS layout, and image rasterization internally, so you don’t have to spin up a headless browser. It’s also fully managed, meaning no native dependencies to ship. + +## Step 2: Configure Image Rendering Options + +Before you render, decide on the output size and quality. The `ImageRenderingOptions` class gives you fine‑grained control. + +```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 +}; +``` + +> **Why enable antialiasing?** Without it, edges can look jagged, which is especially noticeable on high‑DPI screens. Turning it on adds a small performance cost but yields a much cleaner PNG. + +## Step 3: Load the HTML Content + +You can render a remote URL, a local file, or even a raw HTML string. For this example we’ll pull a live page. + +```csharp +// Step 3: Load the HTML document from a URL +var htmlDoc = new HTMLDocument("https://example.com"); +``` + +If you have HTML stored in a string, use the overload that accepts `MemoryStream`: + +```csharp +string rawHtml = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **Edge case:** Some sites block non‑browser user agents. If you get a blank image, set a custom user‑agent header on the request or download the HTML first and feed it as a string. + +## Step 4: Render to PNG + +Now the core operation—calling `RenderToFile`. Provide the full path where you want the PNG saved. + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +After this line executes, you’ll find `output.png` in the specified folder. Open it with any image viewer to verify the result. + +> **What to expect:** The PNG will be exactly 800 × 600 px, with smooth text and colors matching the original page. If the source page uses external CSS or images, Aspose.HTML will download those resources automatically, provided they’re reachable. + +## Step 5: Verify and Use the Result + +A quick sanity check ensures you actually got an image and not an empty file. + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +You can now **save webpage as PNG** for archival, embed the image in email newsletters, or feed it into a machine‑learning pipeline that expects rasterized pages. + +## Optional: Tweaking for Different Scenarios + +### 5.1 Rendering a Full‑Page Screenshot + +If you want the entire scrollable page rather than a viewport‑sized slice, set the height to a larger value or use `ImageRenderingOptions.PageHeight`: + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 Changing the Image Format + +Aspose.HTML supports JPEG, BMP, GIF, and TIFF. Swap the file extension and the format will follow automatically: + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 Handling Authentication‑Protected Pages + +For pages behind a login, fetch the HTML with `HttpClient` (including cookies or bearer tokens), then pass the string to `HTMLDocument` as shown earlier. This way you can still **convert webpage to image** even when the page isn’t publicly accessible. + +## Complete Working Example + +Below is a self‑contained console app that pulls everything together. Copy‑paste it into a new .NET console project and run—it will download `https://example.com`, render it, and save `output.png` next to the executable. + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **Expected output:** A `output.png` file, 800 × 600 px, showing the homepage of `example.com`. Open it in any image viewer to confirm the visual fidelity. + +## Common Questions & Gotchas + +- **Q: Does this work on Linux?** + Yes. Aspose.HTML is cross‑platform; just make sure the .NET runtime is installed. + +- **Q: My page uses JavaScript to inject content—will it appear?** + Aspose.HTML does **not** execute JavaScript. For dynamic pages you’ll need to pre‑render the HTML (e.g., with headless Chrome) and then feed the static markup to the renderer. + +- **Q: How large can the image be before memory becomes an issue?** + Rendering very tall pages (10 k+ pixels) can consume several hundred megabytes of RAM. If you hit `OutOfMemoryException`, consider rendering in segments and stitching the PNGs together. + +- **Q: Can I embed fonts that aren’t installed on the server?** + Yes. Include `@font-face` rules in your CSS or load the font files via a `` tag; Aspose.HTML will embed them during rasterization. + +## Conclusion + +You now have a solid, production‑ready method to **render HTML to PNG** in C#. By configuring `ImageRenderingOptions`, loading the target page, and calling `RenderToFile`, you can **convert webpage to image**, **save HTML as PNG**, **export HTML as image**, en **save webpage as PNG** with just a few lines of code. + +Next steps? Try adjusting the dimensions for high‑DPI screenshots, experiment with JPEG output for smaller file sizes, or integrate this logic into an ASP.NET API that returns PNGs on demand. The possibilities are endless, and because the solution is fully managed, you won’t have to wrestle with external browsers or native libraries. + +Got more questions about image rendering or other Aspose.HTML features? Drop a comment below, and happy coding! + +![render html naar png voorbeeld](placeholder.png "render html naar png") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/dutch/net/html-document-manipulation/_index.md b/html/dutch/net/html-document-manipulation/_index.md index 0639685af..efe2813eb 100644 --- a/html/dutch/net/html-document-manipulation/_index.md +++ b/html/dutch/net/html-document-manipulation/_index.md @@ -61,6 +61,8 @@ Leer hoe u de kracht van Aspose.HTML voor .NET kunt benutten. Geef uw webontwikk Ontketen de kracht van Aspose.HTML voor .NET. Leer eenvoudig HTML- en SVG-documenten maken, manipuleren en optimaliseren. Bekijk stapsgewijze voorbeelden en veelgestelde vragen. ### [HTML maken vanuit een string in C# – Gids voor aangepaste resourcehandler](./create-html-from-string-in-c-custom-resource-handler-guide/) Leer hoe u HTML vanuit een string genereert in C# met een aangepaste resourcehandler, inclusief voorbeeldcode en stapsgewijze uitleg. +### [Hoe HTML maken – Elementen toevoegen en tekst opmaken](./how-to-create-html-append-elements-and-style-text/) +Leer hoe u HTML maakt, elementen toevoegt en tekst opmaakt met Aspose.HTML voor .NET. ### [Een document bewerken in .NET met Aspose.HTML](./editing-a-document/) Maak boeiende webcontent met Aspose.HTML voor .NET. Leer hoe u HTML, CSS en meer kunt manipuleren. ### [Een document opslaan in .NET met Aspose.HTML](./saving-a-document/) diff --git a/html/dutch/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/dutch/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..4f2c8fc39 --- /dev/null +++ b/html/dutch/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-28 +description: Hoe je HTML via code in C# maakt. Leer een element aan de body toe te + voegen, een paragraafelement te creëren, vetgedrukte cursieve tekst toe te voegen + en CSS‑stijl via code toe te passen. +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: nl +og_description: Hoe je HTML programmatically maakt in C#. Deze gids laat zien hoe + je een element aan de body toevoegt, een paragraafelement maakt, vetgedrukte cursieve + tekst toevoegt en CSS-stijl programmatically toevoegt. +og_title: Hoe HTML te maken – Elementen toevoegen en tekst opmaken +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: Hoe HTML te maken – Elementen toevoegen en tekst opmaken +url: /nl/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe HTML te maken – Elementen toevoegen en tekst stylen + +Heb je je ooit afgevraagd **how to create HTML** vanuit C# zonder naar een string builder te gaan? Je bent niet de enige. In veel web‑automatisering- of e‑mail‑generatiescenario's heb je een schone, DOM‑gebaseerde aanpak nodig die je toestaat een element aan de body toe te voegen, het te stylen, en alles type‑veilig te houden. + +In deze tutorial lopen we de exacte stappen door om **how to create HTML** te gebruiken met Aspose.HTML, waarbij we alles behandelen van het maken van een alinea‑element tot het toevoegen van vet‑cursieve tekst en het programmatically toevoegen van CSS‑stijl. Aan het einde heb je een kant‑klaar HTML‑string die je kunt injecteren in een browser, een e‑mail of een PDF‑converter. + +## Wat je nodig hebt + +- **.NET 6+** (elke recente versie werkt; de API is ook stabiel op .NET Framework) +- **Aspose.HTML for .NET** NuGet‑pakket – `Install-Package Aspose.HTML` +- Een basisbegrip van C#‑syntaxis – niets speciaals vereist + +Geen extra configuratiebestanden, geen externe templating‑engines. Gewoon platte C#‑code die de DOM manipuleert. + +![how to create html example](/images/how-to-create-html.png "Screenshot showing the generated HTML structure – how to create html") + +## Stap 1: Het project instellen en namespaces importeren + +Allereerst. Maak een console‑app (of elk .NET‑project) en voeg de Aspose.HTML‑referentie toe. Importeer vervolgens de namespaces die we gaan gebruiken. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **Pro tip:** Als je alleen DOM‑manipulatie nodig hebt, kun je de `Aspose.Html.Rendering`‑namespace weglaten – deze is alleen vereist wanneer je het document rendert naar een afbeelding of PDF. + +## Stap 2: Een CSS‑stijl programmatically definiëren + +Wanneer je **add css style programmatically** toepast, krijg je volledige controle over lettertypefamilies, groottes en zelfs gecombineerde font‑style‑vlaggen zoals bold + italic. Hier is hoe je dat stijlobject maakt. + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +Waarom `WebFontStyle.Bold | WebFontStyle.Italic` gebruiken in plaats van twee aparte eigenschappen? De API behandelt font‑style als een vlag‑enumeratie, dus het combineren ervan levert de exacte CSS `font-weight: bold; font-style: italic;` op die je handmatig zou schrijven. + +## Stap 3: Een nieuw HTML‑document maken + +Nu gaan we echt **how to create HTML** – het documentobject fungeert als ons canvas. Beschouw het als een lege pagina waarop je kunt schilderen. + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +Op dit moment bevat het document de standaard ``, `` en `` tags. Je kunt `htmlDoc.Body` inspecteren om het lege ``‑element te zien dat klaar is voor kinderen. + +## Stap 4: Een alinea‑element maken en vet‑cursieve tekst toevoegen + +Dit is waar het **create paragraph element**‑keyword schittert. We genereren een `

`‑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 `

` of `` maken met `htmlDoc.CreateElement("div")`. Hetzelfde `SetAttribute`‑patroon werkt. + +- **Appending Multiple Nodes:** Loop over een collectie strings en maak voor elk een alinea, voeg elk toe aan de body. Vergeet niet dezelfde `CSSStyleDeclaration` te hergebruiken als de stijl identiek is — geen noodzaak om deze opnieuw te maken. + +- **Encoding Concerns:** `TextContent` HTML‑encodeert automatisch speciale tekens (`&`, `<`, `>`). Als je ruwe HTML nodig hebt, gebruik dan `InnerHtml`, maar wees voorzichtig met injectie‑aanvallen. + +## Volledig werkend voorbeeld + +Hieronder staat het volledige, copy‑and‑paste‑klare programma dat de volledige stroom van begin tot eind demonstreert. + +```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); + } +} +``` + +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. + +![create pdf document c# example](/images/create-pdf-csharp.png) + +## 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. + +![Render HTML to PDF example](render-html-to-pdf.png "render html to pdf") + +*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 = "

Hello, world!

"; +``` + +Waarom beginnen met een string? Omdat veel API’s (e‑mailservices, PDF‑generatoren, web‑view‑controls) HTML‑markup direct accepteren. Een string houdt de workflow lichtgewicht en testbaar. + +--- + +## Stap 2: Initialiseert het HTMLDocument met de string + +De `HTMLDocument`‑klasse van Aspose.Html kan markup lezen vanuit een string, een URL of een stream. Hier geven we onze `rawHtml` door. + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +Op dit moment leeft het document volledig in het geheugen. Er wordt geen bestand aangemaakt en je kunt de DOM manipuleren alsof je in een browser werkt. + +--- + +## Stap 3: Bouw een aangepaste resource‑handler om de output vast te leggen + +Een **aangepaste resource‑handler** geeft je controle over waar elk deel van het document (HTML, afbeeldingen, CSS) terechtkomt. In ons geval geven we alleen de hoofd‑HTML door, dus schrijven we alles naar een `MemoryStream`. + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**Waarom een aangepaste handler?** De standaard `Save`‑methode schrijft naar een bestands‑pad, wat het doel van een in‑memory workflow ondermijnt. Door `HandleResource` te overschrijven vangen we elke resource‑aanvraag op en bepalen we precies waar deze heen gaat. Dit is de kern van **hoe je HTML kunt vastleggen** zonder schijf‑toegang. + +--- + +## Stap 4: Sla het document op met de handler + +Nu vertellen we Aspose.Html om het `HTMLDocument` te serialiseren naar onze `MyMemoryHandler`. Het `SaveOptions`‑object kan leeg blijven voor de standaard HTML‑output, maar je kunt codering, pretty‑print, enz. aanpassen indien nodig. + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +Wanneer `Save` wordt uitgevoerd, wordt `HandleResource` aangeroepen, de hoofd‑HTML wordt geschreven naar `memoryHandler.HtmlStream`, en eventuele bijkomende bestanden (afbeeldingen, CSS) zouden hun eigen streams krijgen — hoewel we in dit eenvoudige voorbeeld geen extra resources hebben. + +--- + +## Stap 5: Converteer de vastgelegde stream terug naar een string + +We hebben de HTML nu in een `MemoryStream`. Om **HTML naar string te converteren**, spoelen we de stream terug en lezen we deze met een `StreamReader`. + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +`resultHtml` bevat nu exact de markup die Aspose.Html heeft geproduceerd. Je kunt het over het netwerk sturen, in een e‑mail embedden, of doorgeven aan een andere bibliotheek. + +--- + +## Stap 6: Controleer de output – wat zou je moeten zien? + +Laten we het resultaat naar de console schrijven zodat je kunt bevestigen dat alles werkt. + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**Verwachte output** + +```html + +

Hello, world!

+``` + +Merk op dat de ``‑tag automatisch wordt toegevoegd door Aspose.Html. Dat is een van de redenen waarom we een bibliotheek verkiezen boven handmatige string‑concatenatie — het normaliseert de markup voor je. + +--- + +## Volledig, uitvoerbaar voorbeeld + +Hieronder staat het complete programma dat je in een console‑app kunt plakken en direct kunt uitvoeren. Alle onderdelen staan bij elkaar, zodat je niet hoeft te gokken welke `using`‑statements of verborgen afhankelijkheden ontbreken. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +Kopieer‑en‑plak, druk op **F5**, en je ziet de opgemaakte HTML in de console verschijnen. + +--- + +## Veelgestelde vragen & randgevallen + +### Wat als ik afbeeldingen of CSS‑bestanden moet vastleggen? + +De `MyMemoryHandler` maakt al een nieuwe `MemoryStream` aan voor elke resource. Je kunt deze uitbreiden om die streams op te slaan in een dictionary met `info.Uri` als sleutel. Vervolgens kun je bijvoorbeeld afbeeldingen later als Base64‑strings embedden. + +### Kan ik de codering van de output wijzigen? + +Ja. Geef een `Saving.HtmlSaveOptions` mee met de eigenschap `Encoding` ingesteld: + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### Werkt dit met grote documenten? + +`MemoryStream` groeit dynamisch, maar houd het geheugenverbruik in de gaten bij enorme pagina’s (honderden MB). In die scenario’s kun je beter direct naar een bestand of een netwerksocket streamen. + +### Hoe **schrijf ik HTML naar stream** in één regel? + +Als je geen aangepaste handler nodig hebt, kun je direct `htmlDocument.Save(Stream, SaveOptions)` gebruiken: + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +Dat is een compacte alternatief, maar je verliest de mogelijkheid om bijkomende resources te onderscheppen. + +--- + +## Pro‑tips & valkuilen + +* **Pro tip:** Reset altijd `Position` naar `0` voordat je een `MemoryStream` uitleest. Anders krijg je een lege string. +* **Let op:** Het doorgeven van een `null` `SaveOptions` — Aspose.Html gebruikt dan de standaardinstellingen, maar expliciete opties maken je intentie duidelijk. +* **Typische fout:** Aannemen dat `HtmlStream` al gevuld is vóórdat `Save` is afgerond. De stream is pas beschikbaar nadat de `Save`‑aanroep terugkeert. +* **Prestatie‑opmerking:** Voor herhaalde conversies kun je één `MyMemoryHandler`‑instantie hergebruiken en de streams tussen runs leegmaken om extra allocaties te vermijden. + +--- + +## Conclusie + +We hebben laten zien hoe je **HTML kunt maken vanuit string** in C#, het resultaat kunt vastleggen met een **aangepaste resource‑handler**, en **HTML naar stream kunt schrijven** voor verdere verwerking. Door de in‑memory stream terug te converteren naar een string krijg je bovendien een betrouwbare manier om **HTML naar string** te converteren zonder het bestandssysteem aan te raken. + +Dit patroon is flexibel genoeg voor e‑mail‑templating, PDF‑generatie, of elke situatie waarin je HTML‑markup on‑the‑fly nodig hebt. Als volgende stap kun je onderzoeken hoe je afbeeldingen als Base64 embedt, `HtmlSaveOptions` aanpassen voor minificatie, of de string doorgeven aan Aspose.PDF voor PDF‑conversie. + +Heb je meer vragen over resource‑handling, codering of performance? Laat een reactie achter — 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/generate-jpg-and-png-images/_index.md b/html/english/net/generate-jpg-and-png-images/_index.md index 3cc4b6acd..5ec9c2711 100644 --- a/html/english/net/generate-jpg-and-png-images/_index.md +++ b/html/english/net/generate-jpg-and-png-images/_index.md @@ -34,7 +34,7 @@ Creating images is just the first step. Aspose.HTML for .NET allows you to furth ## Integrating with .NET Projects -Integrating Aspose.HTML for .NET into your .NET projects is hassle-free. The library is designed to seamlessly blend with your existing code, making it an excellent choice for developers. You can use it to enhance your applications with image generation capabilities effortlessly. +Integrating Aspose.HTML for .NET into your .NET projects is hassle‑free. The library is designed to seamlessly blend with your existing code, making it an excellent choice for developers. You can use it to enhance your applications with image generation capabilities effortlessly. ## Generate JPG and PNG Images Tutorials ### [Generate JPG Images by ImageDevice in .NET with Aspose.HTML](./generate-jpg-images-by-imagedevice/) @@ -45,6 +45,8 @@ Learn to use Aspose.HTML for .NET to manipulate HTML documents, convert HTML to Learn how to enable antialiasing for sharper PNG/JPG output when converting DOCX files using Aspose.HTML for .NET. ### [convert docx to png – create zip archive c# tutorial](./convert-docx-to-png-create-zip-archive-c-tutorial/) Learn how to convert DOCX files to PNG images and package them into a ZIP archive using C# and Aspose.HTML. +### [Render HTML to PNG in C# – Complete Step‑by‑Step Guide](./render-html-to-png-in-c-complete-step-by-step-guide/) +Learn how to render HTML to PNG using C# and Aspose.HTML with a comprehensive step‑by‑step guide. ## Conclusion diff --git a/html/english/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/english/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..e970af541 --- /dev/null +++ b/html/english/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-28 +description: Learn how to render HTML to PNG in C# with Aspose.HTML. This guide also + covers how to convert webpage to image, save HTML as PNG, export HTML as image, + and save webpage as 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: en +og_description: Learn how to render HTML to PNG in C# with Aspose.HTML. Follow this + easy tutorial to convert webpage to image, save HTML as PNG, and export HTML as + image. +og_title: Render HTML to PNG in C# – Complete Step‑by‑Step Guide +tags: +- C# +- Aspose.HTML +- Image Rendering +- .NET +title: Render HTML to PNG in C# – Complete Step‑by‑Step Guide +url: /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 >}} + +# Render HTML to PNG in C# – Complete Step‑by‑Step Guide + +Need to **render HTML to PNG** quickly? In this tutorial we’ll walk you through exactly how to render HTML to PNG using the Aspose.HTML library for .NET. Whether you’re building a thumbnail service, generating email previews, or just need to **convert a webpage to an image** for reporting, the steps below will get you there with minimal fuss. + +Here’s the thing—most developers reach for a browser‑screenshot tool and end up juggling headless Chrome binaries. That works, but it adds a lot of overhead. With Aspose.HTML you can **save HTML as PNG** directly from code, no external process required. By the end of this guide you’ll be able to **export HTML as image**, store the result on disk, and even tweak antialiasing or dimensions to suit your UI. + +## What You’ll Learn + +- How to install Aspose.HTML via NuGet. +- Setting up `ImageRenderingOptions` for high‑quality output. +- Loading an online page or local HTML string. +- Rendering the page to a PNG file. +- Common pitfalls when **saving webpage as PNG** and how to avoid them. + +No prior experience with Aspose is needed; just a basic C#/.NET setup and an internet connection. + +## Prerequisites + +- .NET 6.0 or later (the code works on .NET Core, .NET Framework 4.6+, and .NET 7). +- Visual Studio 2022 (or any IDE you prefer). +- Access to NuGet to pull the `Aspose.HTML` package. +- A folder where you have write permission for the generated PNG. + +> **Pro tip:** If you plan to run this on a server, make sure the account running the process can write to the output directory; otherwise the render step will silently fail. + +## Step 1: Install Aspose.HTML + +First, add the Aspose.HTML library to your project. Open the NuGet Package Manager Console and run: + +```powershell +Install-Package Aspose.HTML +``` + +Or, if you prefer the UI, search for **Aspose.HTML** and click **Install**. This pulls in all the necessary DLLs, including the rendering engine. + +> **Why this matters:** Aspose.HTML handles HTML parsing, CSS layout, and image rasterization internally, so you don’t have to spin up a headless browser. It’s also fully managed, meaning no native dependencies to ship. + +## Step 2: Configure Image Rendering Options + +Before you render, decide on the output size and quality. The `ImageRenderingOptions` class gives you fine‑grained control. + +```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 +}; +``` + +> **Why enable antialiasing?** Without it, edges can look jagged, which is especially noticeable on high‑DPI screens. Turning it on adds a small performance cost but yields a much cleaner PNG. + +## Step 3: Load the HTML Content + +You can render a remote URL, a local file, or even a raw HTML string. For this example we’ll pull a live page. + +```csharp +// Step 3: Load the HTML document from a URL +var htmlDoc = new HTMLDocument("https://example.com"); +``` + +If you have HTML stored in a string, use the overload that accepts `MemoryStream`: + +```csharp +string rawHtml = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **Edge case:** Some sites block non‑browser user agents. If you get a blank image, set a custom user‑agent header on the request or download the HTML first and feed it as a string. + +## Step 4: Render to PNG + +Now the core operation—calling `RenderToFile`. Provide the full path where you want the PNG saved. + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +After this line executes, you’ll find `output.png` in the specified folder. Open it with any image viewer to verify the result. + +> **What to expect:** The PNG will be exactly 800 × 600 px, with smooth text and colors matching the original page. If the source page uses external CSS or images, Aspose.HTML will download those resources automatically, provided they’re reachable. + +## Step 5: Verify and Use the Result + +A quick sanity check ensures you actually got an image and not an empty file. + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +You can now **save webpage as PNG** for archival, embed the image in email newsletters, or feed it into a machine‑learning pipeline that expects rasterized pages. + +## Optional: Tweaking for Different Scenarios + +### 5.1 Rendering a Full‑Page Screenshot + +If you want the entire scrollable page rather than a viewport‑sized slice, set the height to a larger value or use `ImageRenderingOptions.PageHeight`: + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 Changing the Image Format + +Aspose.HTML supports JPEG, BMP, GIF, and TIFF. Swap the file extension and the format will follow automatically: + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 Handling Authentication‑Protected Pages + +For pages behind a login, fetch the HTML with `HttpClient` (including cookies or bearer tokens), then pass the string to `HTMLDocument` as shown earlier. This way you can still **convert webpage to image** even when the page isn’t publicly accessible. + +## Complete Working Example + +Below is a self‑contained console app that pulls everything together. Copy‑paste it into a new .NET console project and run—it will download `https://example.com`, render it, and save `output.png` next to the executable. + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **Expected output:** A `output.png` file, 800 × 600 px, showing the homepage of `example.com`. Open it in any image viewer to confirm the visual fidelity. + +## Common Questions & Gotchas + +- **Q: Does this work on Linux?** + Yes. Aspose.HTML is cross‑platform; just make sure the .NET runtime is installed. + +- **Q: My page uses JavaScript to inject content—will it appear?** + Aspose.HTML does **not** execute JavaScript. For dynamic pages you’ll need to pre‑render the HTML (e.g., with headless Chrome) and then feed the static markup to the renderer. + +- **Q: How large can the image be before memory becomes an issue?** + Rendering very tall pages (10 k+ pixels) can consume several hundred megabytes of RAM. If you hit `OutOfMemoryException`, consider rendering in segments and stitching the PNGs together. + +- **Q: Can I embed fonts that aren’t installed on the server?** + Yes. Include `@font-face` rules in your CSS or load the font files via a `` tag; Aspose.HTML will embed them during rasterization. + +## Conclusion + +You now have a solid, production‑ready method to **render HTML to PNG** in C#. By configuring `ImageRenderingOptions`, loading the target page, and calling `RenderToFile`, you can **convert webpage to image**, **save HTML as PNG**, **export HTML as image**, and **save webpage as PNG** with just a few lines of code. + +Next steps? Try adjusting the dimensions for high‑DPI screenshots, experiment with JPEG output for smaller file sizes, or integrate this logic into an ASP.NET API that returns PNGs on demand. The possibilities are endless, and because the solution is fully managed, you won’t have to wrestle with external browsers or native libraries. + +Got more questions about image rendering or other Aspose.HTML features? Drop a comment below, and happy coding! + +![render html to png example](placeholder.png "render html to png") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/english/net/html-document-manipulation/_index.md b/html/english/net/html-document-manipulation/_index.md index ba25012a0..b21abf88a 100644 --- a/html/english/net/html-document-manipulation/_index.md +++ b/html/english/net/html-document-manipulation/_index.md @@ -71,6 +71,8 @@ Learn to create dynamic and web content using Aspose.HTML for .NET. Empower your Learn to use Aspose.HTML for .NET. Import namespace, merge HTML with XML, and enhance your web development skills with this comprehensive guide. ### [Generate XPS Documents by XpsDevice in .NET with Aspose.HTML](./generate-xps-documents-by-xpsdevice/) Unlock the potential of web development with Aspose.HTML for .NET. Create, convert, and manipulate HTML documents easily. +### [How to Create HTML – Append Elements and Style Text](./how-to-create-html-append-elements-and-style-text/) +Learn how to append elements and style text in HTML using Aspose.HTML for .NET. Step-by-step guide with examples and FAQs. ## Conclusion diff --git a/html/english/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/english/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..196bfdf60 --- /dev/null +++ b/html/english/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-03-28 +description: How to create HTML programmatically in C#. Learn to append element to + body, create paragraph element, add bold italic text, and add CSS style programmatically. +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: en +og_description: How to create HTML programmatically in C#. This guide shows you how + to append element to body, create paragraph element, add bold italic text, and add + CSS style programmatically. +og_title: How to Create HTML – Append Elements and Style Text +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: How to Create HTML – Append Elements and Style Text +url: /net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Create HTML – Append Elements and Style Text + +Ever wondered **how to create HTML** from C# without dropping into a string builder? You're not the only one. In many web‑automation or email‑generation scenarios you need a clean, DOM‑based approach that lets you append element to body, style it, and keep everything type‑safe. + +In this tutorial we’ll walk through the exact steps to **how to create HTML** using Aspose.HTML, covering everything from creating a paragraph element to adding bold italic text and adding CSS style programmatically. By the end you’ll have a ready‑to‑use HTML string you can inject into a browser, an email, or a PDF converter. + +## What You’ll Need + +- **.NET 6+** (any recent version works; the API is stable across .NET Framework too) +- **Aspose.HTML for .NET** NuGet package – `Install-Package Aspose.HTML` +- A basic understanding of C# syntax – nothing fancy required + +No extra configuration files, no external templating engines. Just plain C# code that manipulates the DOM. + +![how to create html example](/images/how-to-create-html.png "Screenshot showing the generated HTML structure – how to create html") + +## Step 1: Set Up the Project and Import Namespaces + +First things first. Create a console app (or any .NET project) and add the Aspose.HTML reference. Then pull in the namespaces we’ll be using. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **Pro tip:** If you only need DOM manipulation, you can drop the `Aspose.Html.Rendering` namespace – it’s only required when you render the document to an image or PDF. + +## Step 2: Define a CSS Style Programmatically + +When you **add css style programmatically**, you gain full control over font families, sizes, and even combined font‑style flags like bold + italic. Here’s how to craft that style object. + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +Why use `WebFontStyle.Bold | WebFontStyle.Italic` instead of two separate properties? The API treats font style as a flag enumeration, so merging them produces the exact CSS `font-weight: bold; font-style: italic;` you’d write by hand. + +## Step 3: Create a New HTML Document + +Now we actually **how to create HTML** – the document object acts as our canvas. Think of it as a blank page you can paint on. + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +At this point the document contains the standard ``, ``, and `` tags. You can inspect `htmlDoc.Body` to see the empty `` element ready for children. + +## Step 4: Create a Paragraph Element and Add Bold Italic Text + +This is where the **create paragraph element** keyword shines. We’ll generate a `

` 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 `

` or `` using `htmlDoc.CreateElement("div")`. The same `SetAttribute` pattern works. + +- **Appending Multiple Nodes:** Loop over a collection of strings and create a paragraph for each, appending each to the body. Remember to re‑use the same `CSSStyleDeclaration` if the style is identical—no need to recreate it. + +- **Encoding Concerns:** `TextContent` automatically HTML‑encodes special characters (`&`, `<`, `>`). If you need raw HTML, use `InnerHtml` instead, but be cautious of injection attacks. + +## Full Working Example + +Below is the complete, copy‑and‑paste‑ready program that demonstrates the entire flow from start to finish. + +```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); + } +} +``` + +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. + +![create pdf document c# example](/images/create-pdf-csharp.png) + +## 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. + +![Render HTML to PDF example](render-html-to-pdf.png "render html to pdf") + +*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 = "

Hello, world!

"; +``` + +Why start with a string? Because many APIs (email services, PDF generators, web‑view controls) accept HTML markup directly. Using a string keeps the workflow lightweight and testable. + +--- + +## Step 2: Initialise the HTMLDocument with the string + +Aspose.Html’s `HTMLDocument` class can read markup from a string, a URL, or a stream. Here we feed it our `rawHtml`. + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +At this point the document lives entirely in memory. No file is created, and you can manipulate the DOM just like you would in a browser. + +--- + +## Step 3: Build a custom resource handler to capture the output + +A **custom resource handler** gives you control over where each part of the document (HTML, images, CSS) ends up. In our case we only care about the main HTML, so we’ll write everything to a `MemoryStream`. + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**Why a custom handler?** The default `Save` method writes to a file path, which defeats the purpose of an in‑memory workflow. By overriding `HandleResource` we intercept every resource request and decide exactly where it goes. This is the core of **how to capture HTML** without touching disk. + +--- + +## Step 4: Save the document using the handler + +Now we tell Aspose.Html to serialize the `HTMLDocument` into our `MyMemoryHandler`. The `SaveOptions` object can stay empty for default HTML output, but you can tweak encoding, pretty‑print, etc., if needed. + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +When `Save` runs, `HandleResource` is invoked, the main HTML is written into `memoryHandler.HtmlStream`, and any ancillary files (images, CSS) would get their own streams—though we haven’t added any in this simple example. + +--- + +## Step 5: Convert the captured stream back to a string + +We have the HTML sitting inside a `MemoryStream`. To **convert HTML to string**, we just rewind the stream and read it with a `StreamReader`. + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +`resultHtml` now contains the exact markup that Aspose.Html produced. You can send it over the network, embed it in an email, or feed it to another library. + +--- + +## Step 6: Verify the output – what should you see? + +Let’s print the result to the console so you can confirm everything worked. + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**Expected output** + +```html + +

Hello, world!

+``` + +Notice the `` tag is automatically added by Aspose.Html. That’s one of the reasons we prefer a library over manual string concatenation—it normalises the markup for you. + +--- + +## Full, Runnable Example + +Below is the complete program you can drop into a console app and run immediately. All the pieces are together, so there’s no guessing about missing `using` statements or hidden dependencies. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +Copy‑paste, hit **F5**, and you’ll see the formatted HTML printed to the console. + +--- + +## Common Questions & Edge Cases + +### What if I need to capture images or CSS files? + +The `MyMemoryHandler` already creates a new `MemoryStream` for every resource. You can extend it to store those streams in a dictionary keyed by `info.Uri`. Then you could, for example, embed images as Base64 strings later on. + +### Can I change the encoding of the output? + +Yes. Pass a `Saving.HtmlSaveOptions` with the `Encoding` property set: + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### Does this work with large documents? + +`MemoryStream` grows dynamically, but keep an eye on memory consumption for massive pages (hundreds of MB). In those scenarios you might stream directly to a file or a network socket. + +### How do I **write HTML to stream** in a single line? + +If you don’t need a custom handler, you can use `htmlDocument.Save(Stream, SaveOptions)` directly: + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +That’s a compact alternative, though you lose the ability to intercept ancillary resources. + +--- + +## Pro Tips & Pitfalls + +* **Pro tip:** Always reset `Position` to `0` before reading a `MemoryStream`. Forgetting this yields an empty string. +* **Watch out for:** Passing a `null` `SaveOptions`—Aspose.Html will use defaults, but explicit options make your intent clear. +* **Typical mistake:** Assuming `HtmlStream` is populated before `Save` finishes. The stream is only available after the `Save` call returns. +* **Performance note:** For repetitive conversions, reuse a single `MyMemoryHandler` instance and clear its streams between runs to avoid extra allocations. + +--- + +## Conclusion + +We've shown how to **create HTML from string** in C#, capture the result with a **custom resource handler**, and **write HTML to stream** for further processing. By converting the in‑memory stream back to a string, you also get a reliable way to **convert HTML to string** without touching the file system. + +This pattern is flexible enough for email templating, PDF generation, or any scenario where you need the HTML markup on the fly. Next, you might explore embedding images as Base64, tweaking `HtmlSaveOptions` for minification, or feeding the string into Aspose.PDF for PDF conversion. + +Got more questions about handling resources, encoding, or performance? Drop a comment below—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/french/net/generate-jpg-and-png-images/_index.md b/html/french/net/generate-jpg-and-png-images/_index.md index 59ca2dad1..a28ee7340 100644 --- a/html/french/net/generate-jpg-and-png-images/_index.md +++ b/html/french/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Apprenez à utiliser Aspose.HTML pour .NET pour manipuler des documents HTML, co Apprenez à activer l'anticrénelage pour améliorer la qualité des images PNG/JPG générées à partir de documents DOCX avec Aspose.HTML. ### [Convertir docx en png – créer une archive zip tutoriel C#](./convert-docx-to-png-create-zip-archive-c-tutorial/) Apprenez à convertir des fichiers DOCX en images PNG et à les compresser dans une archive ZIP avec C#. +### [Rendu HTML en PNG en C# – Guide complet étape par étape](./render-html-to-png-in-c-complete-step-by-step-guide/) +Apprenez à convertir du HTML en images PNG avec C# en suivant un guide complet et détaillé. ## Conclusion diff --git a/html/french/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/french/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..1ed26be67 --- /dev/null +++ b/html/french/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,246 @@ +--- +category: general +date: 2026-03-28 +description: Apprenez à rendre le HTML en PNG en C# avec Aspose.HTML. Ce guide couvre + également la conversion d’une page Web en image, l’enregistrement du HTML au format + PNG, l’exportation du HTML en image et l’enregistrement de la page Web au format + 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: fr +og_description: Apprenez à rendre le HTML en PNG en C# avec Aspose.HTML. Suivez ce + tutoriel facile pour convertir une page web en image, enregistrer le HTML au format + PNG et exporter le HTML en image. +og_title: Rendre le HTML en PNG avec C# – Guide complet étape par étape +tags: +- C# +- Aspose.HTML +- Image Rendering +- .NET +title: Rendu du HTML en PNG en C# – Guide complet étape par étape +url: /fr/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 >}} + +# Rendu HTML en PNG avec C# – Guide complet étape par étape + +Vous devez **rendre du HTML en PNG** rapidement ? Dans ce tutoriel, nous vous guiderons pas à pas sur la façon de rendre du HTML en PNG en utilisant la bibliothèque Aspose.HTML pour .NET. Que vous construisiez un service de miniatures, génériez des aperçus d'e‑mail, ou que vous ayez simplement besoin de **convertir une page Web en image** pour vos rapports, les étapes ci‑dessous vous y amèneront sans effort. + +Le problème, c’est que la plupart des développeurs se tournent vers un outil de capture d’écran de navigateur et finissent par manipuler des binaires de Chrome sans tête. Cela fonctionne, mais cela ajoute beaucoup de surcharge. Avec Aspose.HTML, vous pouvez **enregistrer du HTML en PNG** directement depuis le code, sans processus externe. À la fin de ce guide, vous serez capable de **exporter du HTML en image**, de stocker le résultat sur le disque, et même d’ajuster l’antialiasing ou les dimensions pour correspondre à votre interface. + +## Ce que vous allez apprendre + +- Comment installer Aspose.HTML via NuGet. +- Configurer `ImageRenderingOptions` pour une sortie de haute qualité. +- Charger une page en ligne ou une chaîne HTML locale. +- Rendre la page dans un fichier PNG. +- Pièges courants lors de **l’enregistrement d’une page Web en PNG** et comment les éviter. + +Aucune expérience préalable avec Aspose n’est requise ; il suffit d’une configuration basique C#/.NET et d’une connexion Internet. + +## Prérequis + +- .NET 6.0 ou ultérieur (le code fonctionne sur .NET Core, .NET Framework 4.6+ et .NET 7). +- Visual Studio 2022 (ou tout IDE de votre choix). +- Accès à NuGet pour récupérer le package `Aspose.HTML`. +- Un dossier où vous avez les permissions d’écriture pour le PNG généré. + +> **Astuce :** Si vous prévoyez d’exécuter cela sur un serveur, assurez‑vous que le compte qui exécute le processus puisse écrire dans le répertoire de sortie ; sinon l’étape de rendu échouera silencieusement. + +## Étape 1 : Installer Aspose.HTML + +Tout d’abord, ajoutez la bibliothèque Aspose.HTML à votre projet. Ouvrez la console du Gestionnaire de packages NuGet et exécutez : + +```powershell +Install-Package Aspose.HTML +``` + +Ou, si vous préférez l’interface graphique, recherchez **Aspose.HTML** et cliquez sur **Installer**. Cela récupère toutes les DLL nécessaires, y compris le moteur de rendu. + +> **Pourquoi c’est important :** Aspose.HTML gère le parsing HTML, la mise en page CSS et la rasterisation d’images en interne, vous n’avez donc pas besoin de lancer un navigateur sans tête. Il est également entièrement géré, ce qui signifie aucune dépendance native à déployer. + +## Étape 2 : Configurer les options de rendu d’image + +Avant de rendre, décidez de la taille et de la qualité de sortie. La classe `ImageRenderingOptions` vous offre un contrôle granulaire. + +```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 +}; +``` + +> **Pourquoi activer l’antialiasing ?** Sans cela, les bords peuvent paraître dentelés, ce qui est particulièrement visible sur les écrans haute‑DPI. L’activer ajoute un léger coût de performance mais produit un PNG beaucoup plus net. + +## Étape 3 : Charger le contenu HTML + +Vous pouvez rendre une URL distante, un fichier local, ou même une chaîne HTML brute. Pour cet exemple, nous récupérerons une page en direct. + +```csharp +// Step 3: Load the HTML document from a URL +var htmlDoc = new HTMLDocument("https://example.com"); +``` + +Si vous avez du HTML stocké dans une chaîne, utilisez la surcharge qui accepte `MemoryStream` : + +```csharp +string rawHtml = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **Cas particulier :** Certains sites bloquent les agents utilisateurs qui ne sont pas des navigateurs. Si vous obtenez une image blanche, définissez un en‑tête user‑agent personnalisé sur la requête ou téléchargez d’abord le HTML puis fournissez‑le sous forme de chaîne. + +## Étape 4 : Rendre en PNG + +Voici l’opération principale — appeler `RenderToFile`. Fournissez le chemin complet où vous souhaitez enregistrer le PNG. + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +Après l’exécution de cette ligne, vous trouverez `output.png` dans le dossier spécifié. Ouvrez‑le avec n’importe quel visualiseur d’images pour vérifier le résultat. + +> **À quoi s’attendre :** Le PNG sera exactement de 800 × 600 px, avec un texte lisse et des couleurs correspondant à la page originale. Si la page source utilise du CSS ou des images externes, Aspose.HTML téléchargera automatiquement ces ressources, à condition qu’elles soient accessibles. + +## Étape 5 : Vérifier et utiliser le résultat + +Une vérification rapide permet de s’assurer que vous avez bien obtenu une image et non un fichier vide. + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +Vous pouvez maintenant **enregistrer la page Web en PNG** pour l’archivage, intégrer l’image dans des newsletters, ou la transmettre à un pipeline d’apprentissage automatique qui attend des pages rasterisées. + +## Optionnel : Ajustements pour différents scénarios + +### 5.1 Rendu d’une capture d’écran pleine page + +Si vous souhaitez la page entière déroulable plutôt qu’une tranche de la taille de la fenêtre, définissez une hauteur plus grande ou utilisez `ImageRenderingOptions.PageHeight` : + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 Changer le format de l’image + +Aspose.HTML prend en charge JPEG, BMP, GIF et TIFF. Changez simplement l’extension du fichier et le format sera automatiquement adapté : + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 Gérer les pages protégées par authentification + +Pour les pages derrière une authentification, récupérez le HTML avec `HttpClient` (en incluant les cookies ou les jetons d’accès), puis transmettez la chaîne à `HTMLDocument` comme montré précédemment. Ainsi, vous pouvez toujours **convertir une page Web en image** même si la page n’est pas accessible publiquement. + +## Exemple complet fonctionnel + +Voici une application console autonome qui rassemble tout. Copiez‑collez‑la dans un nouveau projet console .NET et exécutez‑la ; elle téléchargera `https://example.com`, le rendra, et enregistrera `output.png` à côté de l’exécutable. + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **Résultat attendu :** Un fichier `output.png`, 800 × 600 px, affichant la page d’accueil de `example.com`. Ouvrez‑le avec n’importe quel visualiseur d’images pour confirmer la fidélité visuelle. + +## Questions fréquentes & pièges + +- **Q : Cela fonctionne‑t‑il sur Linux ?** + Oui. Aspose.HTML est multiplateforme ; assurez‑vous simplement que le runtime .NET est installé. + +- **Q : Ma page utilise JavaScript pour injecter du contenu—apparaîtra‑t‑il ?** + Aspose.HTML **n’exécute pas** JavaScript. Pour les pages dynamiques, vous devrez pré‑rendre le HTML (par ex., avec Chrome sans tête) puis fournir le balisage statique au moteur de rendu. + +- **Q : Quelle taille maximale peut avoir l’image avant que la mémoire ne devienne un problème ?** + Rendre des pages très longues (plus de 10 k pixels) peut consommer plusieurs centaines de mégaoctets de RAM. Si vous rencontrez une `OutOfMemoryException`, envisagez de rendre la page par segments et d’assembler les PNG. + +- **Q : Puis‑je intégrer des polices qui ne sont pas installées sur le serveur ?** + Oui. Incluez des règles `@font-face` dans votre CSS ou chargez les fichiers de police via une balise `` ; Aspose.HTML les intégrera lors de la rasterisation. + +## Conclusion + +Vous disposez maintenant d’une méthode solide et prête pour la production afin de **rendre du HTML en PNG** en C#. En configurant `ImageRenderingOptions`, en chargeant la page cible et en appelant `RenderToFile`, vous pouvez **convertir une page Web en image**, **enregistrer du HTML en PNG**, **exporter du HTML en image**, et **enregistrer une page Web en PNG** avec seulement quelques lignes de code. + +Prochaines étapes ? Essayez d’ajuster les dimensions pour des captures d’écran haute‑DPI, expérimentez la sortie JPEG pour des fichiers plus légers, ou intégrez cette logique dans une API ASP.NET qui renvoie des PNG à la demande. Les possibilités sont infinies, et comme la solution est entièrement gérée, vous n’aurez plus à vous débattre avec des navigateurs externes ou des bibliothèques natives. + +Vous avez d’autres questions sur le rendu d’images ou d’autres fonctionnalités d’Aspose.HTML ? Laissez un commentaire ci‑dessous, et bon codage ! + +![exemple de rendu html en png](placeholder.png "rendu html en png") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/french/net/html-document-manipulation/_index.md b/html/french/net/html-document-manipulation/_index.md index 134ab9f67..bf3d9d69c 100644 --- a/html/french/net/html-document-manipulation/_index.md +++ b/html/french/net/html-document-manipulation/_index.md @@ -59,6 +59,8 @@ Libérez le potentiel d'Aspose.HTML pour .NET avec notre guide complet. Découvr Découvrez comment exploiter la puissance d'Aspose.HTML pour .NET. Boostez votre développement Web grâce à la manipulation et au rendu HTML. ### [Créer un document en .NET avec Aspose.HTML](./creating-a-document/) Exploitez la puissance d'Aspose.HTML pour .NET. Apprenez à créer, manipuler et optimiser facilement des documents HTML et SVG. Découvrez des exemples étape par étape et des FAQ. +### [Comment créer du HTML – Ajouter des éléments et styliser le texte](./how-to-create-html-append-elements-and-style-text/) +Apprenez à créer du HTML en ajoutant des éléments et en stylisant le texte avec Aspose.HTML pour .NET. ### [Modification d'un document dans .NET avec Aspose.HTML](./editing-a-document/) Créez du contenu Web captivant avec Aspose.HTML pour .NET. Apprenez à manipuler HTML, CSS et bien plus encore. ### [Enregistrer un document dans .NET avec Aspose.HTML](./saving-a-document/) diff --git a/html/french/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/french/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..5127e7514 --- /dev/null +++ b/html/french/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-28 +description: Comment créer du HTML de manière programmatique en C#. Apprenez à ajouter + un élément au corps, créer un élément paragraphe, ajouter du texte en gras et italique, + et ajouter du style CSS de façon programmatique. +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: fr +og_description: Comment créer du HTML de manière programmatique en C#. Ce guide vous + montre comment ajouter un élément au corps, créer un élément paragraphe, ajouter + du texte en gras italique et ajouter un style CSS de façon programmatique. +og_title: Comment créer du HTML – Ajouter des éléments et styliser le texte +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: Comment créer du HTML – Ajouter des éléments et styliser le texte +url: /fr/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment créer du HTML – Ajouter des éléments et styliser le texte + +Vous vous êtes déjà demandé **how to create HTML** depuis C# sans recourir à un StringBuilder ? Vous n'êtes pas le seul. Dans de nombreux scénarios d'automatisation web ou de génération d'e‑mails, vous avez besoin d'une approche propre, basée sur le DOM, qui vous permet d'ajouter un élément au corps, de le styliser, et de garder tout cela type‑safe. + +Dans ce tutoriel, nous parcourrons les étapes exactes pour **how to create HTML** avec Aspose.HTML, couvrant tout, de la création d'un élément paragraphe à l'ajout de texte en gras et italique ainsi qu'à l'ajout de style CSS de manière programmatique. À la fin, vous disposerez d'une chaîne HTML prête à l'emploi que vous pourrez injecter dans un navigateur, un e‑mail ou un convertisseur PDF. + +## Ce dont vous avez besoin + +- **.NET 6+** (toute version récente fonctionne ; l'API est stable également sous .NET Framework) +- **Aspose.HTML for .NET** package NuGet – `Install-Package Aspose.HTML` +- Une compréhension de base de la syntaxe C# – rien de spécial requis + +Pas de fichiers de configuration supplémentaires, pas de moteurs de templates externes. Juste du code C# simple qui manipule le DOM. + +![how to create html example](/images/how-to-create-html.png "Screenshot showing the generated HTML structure – how to create html") + +## Étape 1 : Configurer le projet et importer les espaces de noms + +Première chose à faire. Créez une application console (ou tout projet .NET) et ajoutez la référence Aspose.HTML. Puis importez les espaces de noms que nous allons utiliser. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **Astuce :** Si vous avez seulement besoin de manipulation du DOM, vous pouvez omettre l'espace de noms `Aspose.Html.Rendering` – il n'est requis que lorsque vous rendez le document en image ou en PDF. + +## Étape 2 : Définir un style CSS de façon programmatique + +Lorsque vous **add css style programmatically**, vous obtenez un contrôle total sur les familles de polices, les tailles, et même les drapeaux de style de police combinés comme gras + italique. Voici comment créer cet objet de style. + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +Pourquoi utiliser `WebFontStyle.Bold | WebFontStyle.Italic` au lieu de deux propriétés séparées ? L'API traite le style de police comme une énumération de drapeaux, ainsi les fusionner produit le CSS exact `font-weight: bold; font-style: italic;` que vous écririez à la main. + +## Étape 3 : Créer un nouveau document HTML + +Maintenant nous allons réellement **how to create HTML** – l'objet document sert de toile. Pensez-y comme une page blanche sur laquelle vous pouvez dessiner. + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +À ce stade, le document contient les balises standard ``, `` et ``. Vous pouvez inspecter `htmlDoc.Body` pour voir l'élément `` vide, prêt à recevoir des enfants. + +## Étape 4 : Créer un élément paragraphe et ajouter du texte gras et italique + +C'est ici que le mot‑clé **create paragraph element** brille. Nous allons générer une balise `

`, 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 `

` ou `` avec `htmlDoc.CreateElement("div")`. Le même modèle `SetAttribute` fonctionne. + +- **Appending Multiple Nodes :** Parcourez une collection de chaînes et créez un paragraphe pour chacune, en l'ajoutant au body. N'oubliez pas de réutiliser le même `CSSStyleDeclaration` si le style est identique—pas besoin de le recréer. + +- **Encoding Concerns :** `TextContent` encode automatiquement en HTML les caractères spéciaux (`&`, `<`, `>`). Si vous avez besoin de HTML brut, utilisez `InnerHtml` à la place, mais soyez prudent face aux attaques d'injection. + +## Exemple complet fonctionnel + +Ci‑dessous se trouve le programme complet, prêt à copier‑coller, qui montre le flux complet du début à la fin. + +```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); + } +} +``` + +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. + +![create pdf document c# example](/images/create-pdf-csharp.png) + +## 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. + +![Render HTML to PDF example](render-html-to-pdf.png "render html to pdf") + +*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 = "

Hello, world!

"; +``` + +Pourquoi commencer par une chaîne ? Parce que de nombreuses API (services de messagerie, générateurs de PDF, contrôles de vue Web) acceptent le balisage HTML directement. Utiliser une chaîne rend le flux de travail léger et testable. + +--- + +## Étape 2 : Initialiser le HTMLDocument avec la chaîne + +La classe `HTMLDocument` d'Aspose.Html peut lire le balisage à partir d'une chaîne, d'une URL ou d'un flux. Ici, nous la nourrissons avec notre `rawHtml`. + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +À ce stade, le document vit entièrement en mémoire. Aucun fichier n'est créé, et vous pouvez manipuler le DOM comme vous le feriez dans un navigateur. + +--- + +## Étape 3 : Construire un custom resource handler pour capturer la sortie + +Un **custom resource handler** vous donne le contrôle sur l'emplacement de chaque partie du document (HTML, images, CSS). Dans notre cas, nous ne nous soucions que du HTML principal, nous allons donc tout écrire dans un `MemoryStream`. + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**Pourquoi un handler personnalisé ?** La méthode `Save` par défaut écrit vers un chemin de fichier, ce qui contredit l'objectif d'un flux de travail en mémoire. En surchargeant `HandleResource`, nous interceptons chaque requête de ressource et décidons exactement où elle va. C'est le cœur de **how to capture HTML** sans toucher le disque. + +--- + +## Étape 4 : Enregistrer le document en utilisant le handler + +Nous indiquons maintenant à Aspose.Html de sérialiser le `HTMLDocument` dans notre `MyMemoryHandler`. L'objet `SaveOptions` peut rester vide pour une sortie HTML par défaut, mais vous pouvez ajuster l'encodage, le formatage, etc., si nécessaire. + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +Lorsque `Save` s'exécute, `HandleResource` est invoqué, le HTML principal est écrit dans `memoryHandler.HtmlStream`, et tout fichier annexe (images, CSS) aurait son propre flux—bien que nous n'ayons ajouté aucun dans cet exemple simple. + +--- + +## Étape 5 : Convertir le flux capturé en chaîne + +Nous avons le HTML stocké dans un `MemoryStream`. Pour **convert HTML to string**, nous rembobinons simplement le flux et le lisons avec un `StreamReader`. + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +`resultHtml` contient maintenant le balisage exact produit par Aspose.Html. Vous pouvez l'envoyer sur le réseau, l'intégrer dans un e‑mail, ou le transmettre à une autre bibliothèque. + +--- + +## Étape 6 : Vérifier la sortie – que devriez‑vous voir ? + +Imprimons le résultat dans la console afin que vous puissiez confirmer que tout a fonctionné. + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**Sortie attendue** + +```html + +

Hello, world!

+``` + +Remarquez que la balise `` est ajoutée automatiquement par Aspose.Html. C’est l’une des raisons pour lesquelles nous préférons une bibliothèque à la concaténation manuelle de chaînes—elle normalise le balisage pour vous. + +--- + +## Exemple complet et exécutable + +Ci‑dessous se trouve le programme complet que vous pouvez coller dans une application console et exécuter immédiatement. Toutes les pièces sont réunies, il n’y a donc aucune supposition sur des instructions `using` manquantes ou des dépendances cachées. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +Copiez‑collez, appuyez sur **F5**, et vous verrez le HTML formaté affiché dans la console. + +--- + +## Questions fréquentes & cas limites + +### Et si je dois capturer des images ou des fichiers CSS ? + +Le `MyMemoryHandler` crée déjà un nouveau `MemoryStream` pour chaque ressource. Vous pouvez l'étendre pour stocker ces flux dans un dictionnaire indexé par `info.Uri`. Vous pourriez alors, par exemple, intégrer les images sous forme de chaînes Base64 plus tard. + +### Puis‑je modifier l'encodage de la sortie ? + +Oui. Passez un `Saving.HtmlSaveOptions` avec la propriété `Encoding` définie : + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### Cela fonctionne‑t‑il avec de gros documents ? + +`MemoryStream` s'agrandit dynamiquement, mais surveillez la consommation de mémoire pour les pages massives (des centaines de Mo). Dans ces scénarios, vous pourriez diffuser directement vers un fichier ou une socket réseau. + +### Comment **write HTML to stream** en une seule ligne ? + +Si vous n'avez pas besoin d'un handler personnalisé, vous pouvez utiliser directement `htmlDocument.Save(Stream, SaveOptions)` : + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +C’est une alternative compacte, bien que vous perdiez la capacité d'intercepter les ressources annexes. + +--- + +## Astuces pro & pièges + +* **Astuce pro  :** Réinitialisez toujours `Position` à `0` avant de lire un `MemoryStream`. Oublier cela produit une chaîne vide. +* **Attention à  :** Passer un `null` `SaveOptions`—Aspose.Html utilisera les valeurs par défaut, mais des options explicites clarifient votre intention. +* **Erreur typique  :** Supposer que `HtmlStream` est rempli avant la fin de `Save`. Le flux n'est disponible qu'après le retour de l'appel `Save`. +* **Note de performance  :** Pour des conversions répétées, réutilisez une seule instance de `MyMemoryHandler` et videz ses flux entre les exécutions afin d'éviter des allocations supplémentaires. + +--- + +## Conclusion + +Nous avons montré comment **create HTML from string** en C#, capturer le résultat avec un **custom resource handler**, et **write HTML to stream** pour un traitement ultérieur. En convertissant le flux en mémoire en chaîne, vous obtenez également un moyen fiable de **convert HTML to string** sans toucher le système de fichiers. + +Ce modèle est suffisamment flexible pour le templating d'e‑mail, la génération de PDF, ou tout scénario où vous avez besoin du balisage HTML à la volée. Ensuite, vous pourriez explorer l'intégration d'images en Base64, ajuster `HtmlSaveOptions` pour la minification, ou transmettre la chaîne à Aspose.PDF pour la conversion en PDF. + +Vous avez d'autres questions sur la gestion des ressources, l'encodage ou les performances ? Laissez un commentaire ci‑dessous—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/german/net/generate-jpg-and-png-images/_index.md b/html/german/net/generate-jpg-and-png-images/_index.md index 8c24c4537..0cba95800 100644 --- a/html/german/net/generate-jpg-and-png-images/_index.md +++ b/html/german/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML-Dokumente bearbeiten, HTML Erfahren Sie, wie Sie beim Konvertieren von DOCX-Dokumenten in PNG oder JPG Antialiasing aktivieren, um hochwertige Bilder zu erhalten. ### [DOCX in PNG konvertieren – ZIP-Archiv erstellen C#‑Tutorial](./convert-docx-to-png-create-zip-archive-c-tutorial/) Erfahren Sie, wie Sie DOCX‑Dateien in PNG‑Bilder umwandeln und diese in ein ZIP‑Archiv packen – Schritt‑für‑Schritt‑Anleitung in C#. +### [HTML nach PNG rendern in C# – Vollständige Schritt‑für‑Schritt‑Anleitung](./render-html-to-png-in-c-complete-step-by-step-guide/) +Erfahren Sie, wie Sie mit Aspose.HTML für .NET HTML in PNG-Bilder konvertieren – detaillierte Schritt‑für‑Schritt‑Anleitung. ## Abschluss diff --git a/html/german/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/german/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..11edab46b --- /dev/null +++ b/html/german/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-28 +description: Erfahren Sie, wie Sie HTML in C# mit Aspose.HTML zu PNG rendern. Dieser + Leitfaden behandelt außerdem, wie Sie eine Webseite in ein Bild konvertieren, HTML + als PNG speichern, HTML als Bild exportieren und eine Webseite als PNG speichern. +draft: false +keywords: +- render html to png +- convert webpage to image +- save html as png +- export html as image +- save webpage as png +language: de +og_description: Erfahren Sie, wie Sie HTML in C# mit Aspose.HTML zu PNG rendern. Folgen + Sie diesem einfachen Tutorial, um eine Webseite in ein Bild zu konvertieren, HTML + als PNG zu speichern und HTML als Bild zu exportieren. +og_title: HTML nach PNG rendern in C# – Vollständige Schritt‑für‑Schritt‑Anleitung +tags: +- C# +- Aspose.HTML +- Image Rendering +- .NET +title: HTML in PNG rendern in C# – Vollständige Schritt‑für‑Schritt‑Anleitung +url: /de/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 in PNG rendern in C# – Vollständige Schritt‑für‑Schritt‑Anleitung + +Möchten Sie **HTML schnell in PNG rendern**? In diesem Tutorial zeigen wir Ihnen genau, wie Sie HTML mit der Aspose.HTML‑Bibliothek für .NET in PNG umwandeln. Egal, ob Sie einen Thumbnail‑Service bauen, E‑Mail‑Vorschauen erzeugen oder einfach **eine Webseite in ein Bild konvertieren** möchten – die nachfolgenden Schritte bringen Sie mit minimalem Aufwand ans Ziel. + +Die meisten Entwickler greifen zu einem Browser‑Screenshot‑Tool und jonglieren mit headless‑Chrome‑Binärdateien. Das funktioniert, verursacht aber viel Overhead. Mit Aspose.HTML können Sie **HTML direkt aus dem Code als PNG speichern**, ohne externen Prozess. Am Ende dieses Leitfadens können Sie **HTML als Bild exportieren**, das Ergebnis auf Festplatte speichern und Antialiasing oder Abmessungen an Ihre UI anpassen. + +## Was Sie lernen werden + +- Wie man Aspose.HTML über NuGet installiert. +- `ImageRenderingOptions` für hochwertige Ausgabe konfigurieren. +- Eine Online‑Seite oder einen lokalen HTML‑String laden. +- Die Seite in eine PNG‑Datei rendern. +- Häufige Stolperfallen beim **Speichern einer Webseite als PNG** und wie man sie vermeidet. + +Vorkenntnisse mit Aspose sind nicht nötig; ein grundlegendes C#/.NET‑Setup und eine Internetverbindung reichen aus. + +## Voraussetzungen + +- .NET 6.0 oder höher (der Code funktioniert mit .NET Core, .NET Framework 4.6+ und .NET 7). +- Visual Studio 2022 (oder jede andere bevorzugte IDE). +- Zugriff auf NuGet, um das Paket `Aspose.HTML` zu beziehen. +- Ein Ordner, in dem Sie Schreibrechte für das erzeugte PNG haben. + +> **Pro‑Tipp:** Wenn Sie das auf einem Server ausführen, stellen Sie sicher, dass das Konto, das den Prozess ausführt, in das Ausgabeverzeichnis schreiben darf; sonst schlägt der Render‑Schritt stillschweigend fehl. + +## Schritt 1: Aspose.HTML installieren + +Fügen Sie zunächst die Aspose.HTML‑Bibliothek zu Ihrem Projekt hinzu. Öffnen Sie die NuGet Package Manager Console und führen Sie aus: + +```powershell +Install-Package Aspose.HTML +``` + +Oder, wenn Sie die UI bevorzugen, suchen Sie nach **Aspose.HTML** und klicken Sie auf **Install**. Damit werden alle notwendigen DLLs, einschließlich der Rendering‑Engine, heruntergeladen. + +> **Warum das wichtig ist:** Aspose.HTML übernimmt das Parsen von HTML, das Layout von CSS und die Bildrasterisierung intern, sodass Sie keinen headless Browser starten müssen. Es ist zudem vollständig verwaltet, d. h. es gibt keine nativen Abhängigkeiten, die Sie mitliefern müssen. + +## Schritt 2: Bild‑Render‑Optionen konfigurieren + +Bevor Sie rendern, legen Sie Größe und Qualität der Ausgabe fest. Die Klasse `ImageRenderingOptions` bietet feinkörnige Kontrolle. + +```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 +}; +``` + +> **Warum Antialiasing aktivieren?** Ohne Antialiasing können Kanten gezackt wirken, besonders auf hochauflösenden Bildschirmen. Das Einschalten kostet etwas Performance, liefert dafür aber ein deutlich saubereres PNG. + +## Schritt 3: HTML‑Inhalt laden + +Sie können eine entfernte URL, eine lokale Datei oder sogar einen rohen HTML‑String rendern. In diesem Beispiel holen wir uns eine Live‑Seite. + +```csharp +// Step 3: Load the HTML document from a URL +var htmlDoc = new HTMLDocument("https://example.com"); +``` + +Falls Sie HTML in einem String gespeichert haben, verwenden Sie die Überladung, die `MemoryStream` akzeptiert: + +```csharp +string rawHtml = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **Randfall:** Einige Seiten blockieren nicht‑Browser‑User‑Agents. Wenn Sie ein leeres Bild erhalten, setzen Sie einen benutzerdefinierten User‑Agent‑Header in der Anfrage oder laden Sie das HTML zuerst herunter und übergeben Sie es als String. + +## Schritt 4: In PNG rendern + +Jetzt kommt die Kernoperation – Aufruf von `RenderToFile`. Geben Sie den vollständigen Pfad an, unter dem das PNG gespeichert werden soll. + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +Nachdem diese Zeile ausgeführt wurde, finden Sie `output.png` im angegebenen Ordner. Öffnen Sie die Datei mit einem Bildbetrachter, um das Ergebnis zu prüfen. + +> **Was Sie erwarten können:** Das PNG hat exakt 800 × 600 px, mit glattem Text und Farben, die dem Original entsprechen. Wenn die Quellseite externe CSS‑Dateien oder Bilder verwendet, lädt Aspose.HTML diese Ressourcen automatisch, sofern sie erreichbar sind. + +## Schritt 5: Ergebnis prüfen und verwenden + +Ein kurzer Plausibilitätstest stellt sicher, dass Sie tatsächlich ein Bild und keine leere Datei erhalten haben. + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +Sie können nun **Webseite als PNG speichern** für die Archivierung, das Bild in E‑Mail‑Newslettern einbetten oder es in eine Machine‑Learning‑Pipeline einspeisen, die gerasterte Seiten erwartet. + +## Optional: Anpassungen für verschiedene Szenarien + +### 5.1 Vollständiger Seiten‑Screenshot + +Wenn Sie die gesamte scrollbare Seite statt eines viewport‑großen Ausschnitts wollen, setzen Sie die Höhe auf einen größeren Wert oder nutzen Sie `ImageRenderingOptions.PageHeight`: + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 Bildformat ändern + +Aspose.HTML unterstützt JPEG, BMP, GIF und TIFF. Ändern Sie einfach die Dateierweiterung, das Format wird automatisch übernommen: + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 Authentifizierte Seiten verarbeiten + +Für Seiten hinter einer Anmeldung holen Sie das HTML mit `HttpClient` (inklusive Cookies oder Bearer‑Tokens) und übergeben den String anschließend an `HTMLDocument`, wie oben gezeigt. So können Sie **Webseite in Bild konvertieren**, selbst wenn die Seite nicht öffentlich zugänglich ist. + +## Komplettes funktionierendes Beispiel + +Unten finden Sie eine eigenständige Konsolen‑App, die alles zusammenführt. Kopieren Sie den Code in ein neues .NET‑Konsolenprojekt und führen Sie ihn aus – er lädt `https://example.com`, rendert die Seite und speichert `output.png` neben der ausführbaren Datei. + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **Erwartete Ausgabe:** Eine `output.png`‑Datei, 800 × 600 px, die die Startseite von `example.com` zeigt. Öffnen Sie sie in einem Bildbetrachter, um die visuelle Treue zu bestätigen. + +## Häufige Fragen & Stolperfallen + +- **F: Funktioniert das unter Linux?** + Ja. Aspose.HTML ist plattformübergreifend; stellen Sie lediglich sicher, dass das .NET‑Runtime installiert ist. + +- **F: Meine Seite nutzt JavaScript, um Inhalte einzufügen – wird das angezeigt?** + Aspose.HTML führt **kein** JavaScript aus. Für dynamische Seiten müssen Sie das HTML vorher rendern (z. B. mit headless Chrome) und das statische Markup dann an den Renderer übergeben. + +- **F: Wie groß kann das Bild maximal sein, bevor der Speicher zum Engpass wird?** + Das Rendern sehr hoher Seiten (10 k+ Pixel) kann mehrere hundert Megabyte RAM verbrauchen. Bei einem `OutOfMemoryException` sollten Sie in Segmenten rendern und die PNGs anschließend zusammenfügen. + +- **F: Kann ich Schriftarten einbetten, die nicht auf dem Server installiert sind?** + Ja. Fügen Sie `@font-face`‑Regeln in Ihr CSS ein oder laden Sie die Schriftdateien über ein ``‑Tag; Aspose.HTML bettet sie beim Rasterisieren ein. + +## Fazit + +Sie besitzen nun eine robuste, produktionsreife Methode, **HTML in PNG zu rendern** in C#. Durch das Konfigurieren von `ImageRenderingOptions`, das Laden der Zielseite und den Aufruf von `RenderToFile` können Sie **Webseite in Bild konvertieren**, **HTML als PNG speichern**, **HTML als Bild exportieren** und **Webseite als PNG speichern** mit nur wenigen Code‑Zeilen. + +Nächste Schritte? Passen Sie die Abmessungen für hochauflösende Screenshots an, experimentieren Sie mit JPEG‑Ausgabe für kleinere Dateigrößen oder integrieren Sie die Logik in eine ASP.NET‑API, die PNGs on‑Demand zurückgibt. Die Möglichkeiten sind endlos, und weil die Lösung vollständig verwaltet ist, müssen Sie nicht mehr mit externen Browsern oder nativen Bibliotheken kämpfen. + +Haben Sie weitere Fragen zu Bild‑Rendering oder anderen Aspose.HTML‑Funktionen? Hinterlassen Sie einen Kommentar unten – happy coding! + +![render html to png example](placeholder.png "render html to png") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/german/net/html-document-manipulation/_index.md b/html/german/net/html-document-manipulation/_index.md index 1e5420dd7..293edbb93 100644 --- a/html/german/net/html-document-manipulation/_index.md +++ b/html/german/net/html-document-manipulation/_index.md @@ -71,6 +71,8 @@ Erfahren Sie, wie Sie Aspose.HTML für .NET verwenden. Importieren Sie Namespace Schöpfen Sie das Potenzial der Webentwicklung mit Aspose.HTML für .NET. Erstellen, konvertieren und bearbeiten Sie HTML-Dokumente ganz einfach. ### [HTML aus String in C# erstellen – Leitfaden für benutzerdefinierten Ressourcen-Handler](./create-html-from-string-in-c-custom-resource-handler-guide/) Erfahren Sie, wie Sie mit einem benutzerdefinierten Ressourcen-Handler HTML aus einem String in C# generieren und rendern. +### [HTML erstellen – Elemente anhängen und Text formatieren](./how-to-create-html-append-elements-and-style-text/) +Erfahren Sie, wie Sie HTML dynamisch erzeugen, Elemente hinzufügen und Text mit CSS formatieren. ## Abschluss diff --git a/html/german/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/german/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..4b172257e --- /dev/null +++ b/html/german/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-28 +description: Wie man HTML programmgesteuert in C# erstellt. Lernen Sie, ein Element + zum Body hinzuzufügen, ein Absatz‑Element zu erstellen, fett‑kursiven Text einzufügen + und CSS‑Stile programmgesteuert zu setzen. +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: de +og_description: Wie man HTML programmgesteuert in C# erstellt. Dieser Leitfaden zeigt, + wie man ein Element zum Body hinzufügt, ein Absatz‑Element erstellt, fett‑kursiven + Text einfügt und CSS‑Stile programmgesteuert einbindet. +og_title: Wie man HTML erstellt – Elemente anhängen und Text formatieren +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: Wie man HTML erstellt – Elemente anhängen und Text formatieren +url: /de/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man HTML erstellt – Elemente anhängen und Text formatieren + +Haben Sie sich jemals gefragt, **wie man HTML** aus C# erstellt, ohne auf einen String‑Builder zurückzugreifen? Sie sind nicht allein. In vielen Web‑Automatisierungs‑ oder E‑Mail‑Generierungsszenarien benötigt man einen sauberen, DOM‑basierten Ansatz, der es ermöglicht, ein Element an den Body anzuhängen, es zu stylen und alles typensicher zu halten. + +In diesem Tutorial gehen wir die genauen Schritte durch, **wie man HTML erstellt** mit Aspose.HTML, von der Erstellung eines Absatz‑Elements bis zum Hinzufügen von fett‑kursiv‑Text und dem programmatischen Hinzufügen von CSS‑Stilen. Am Ende haben Sie einen einsatzbereiten HTML‑String, den Sie in einen Browser, eine E‑Mail oder einen PDF‑Konverter einbinden können. + +## Was Sie benötigen + +- **.NET 6+** (jede aktuelle Version funktioniert; die API ist auch im .NET Framework stabil) +- **Aspose.HTML für .NET** NuGet‑Paket – `Install-Package Aspose.HTML` +- Grundlegendes Verständnis von C#‑Syntax – nichts Besonderes erforderlich + +Keine zusätzlichen Konfigurationsdateien, keine externen Templating‑Engines. Nur reiner C#‑Code, der das DOM manipuliert. + +![how to create html example](/images/how-to-create-html.png "Screenshot, der die generierte HTML‑Struktur zeigt – how to create html") + +## Schritt 1: Projekt einrichten und Namespaces importieren + +Zuerst das Wichtigste. Erstellen Sie eine Konsolen‑App (oder ein beliebiges .NET‑Projekt) und fügen Sie den Aspose.HTML‑Verweis hinzu. Dann importieren Sie die Namespaces, die wir verwenden werden. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **Pro‑Tipp:** Wenn Sie nur DOM‑Manipulation benötigen, können Sie den `Aspose.Html.Rendering`‑Namespace weglassen – er wird nur benötigt, wenn Sie das Dokument als Bild oder PDF rendern. + +## Schritt 2: CSS‑Stil programmatisch definieren + +Wenn Sie **css style programmatisch hinzufügen**, erhalten Sie die volle Kontrolle über Schriftfamilien, Größen und sogar kombinierte Schrift‑Stil‑Flags wie fett + kursiv. So erstellen Sie das Stil‑Objekt. + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +Warum `WebFontStyle.Bold | WebFontStyle.Italic` statt zweier separater Eigenschaften verwenden? Die API behandelt den Schriftstil als Flag‑Enumeration, sodass das Zusammenführen exakt das CSS `font-weight: bold; font-style: italic;` erzeugt, das Sie von Hand schreiben würden. + +## Schritt 3: Neues HTML‑Dokument erstellen + +Jetzt erstellen wir tatsächlich **wie man HTML erstellt** – das Dokument‑Objekt fungiert als unsere Leinwand. Denken Sie an eine leere Seite, die Sie beschreiben können. + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +An diesem Punkt enthält das Dokument die Standard‑Tags ``, `` und ``. Sie können `htmlDoc.Body` inspizieren, um das leere ``‑Element zu sehen, das bereit für Kinder ist. + +## Schritt 4: Absatz‑Element erstellen und fett‑kursiven Text hinzufügen + +Hier kommt das Schlüsselwort **create paragraph element** zum Einsatz. Wir erzeugen ein `

`‑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 `

` oder `` mit `htmlDoc.CreateElement("div")` erzeugen. Das gleiche `SetAttribute`‑Muster funktioniert. + +- **Mehrere Knoten anhängen:** Durchlaufen Sie eine Sammlung von Strings und erstellen Sie für jeden einen Absatz, den Sie an den Body anhängen. Denken Sie daran, dieselbe `CSSStyleDeclaration` wiederzuverwenden, wenn der Stil identisch ist – ein erneutes Erzeugen ist nicht nötig. + +- **Kodierungsaspekte:** `TextContent` HTML‑kodiert Sonderzeichen (`&`, `<`, `>`) automatisch. Wenn Sie rohes HTML benötigen, verwenden Sie stattdessen `InnerHtml`, aber seien Sie vorsichtig bei Injektionsangriffen. + +## Komplettes Beispiel + +Unten finden Sie das vollständige, copy‑and‑paste‑bereite Programm, das den gesamten Ablauf von Anfang bis Ende demonstriert. + +```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); + } +} +``` + +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. + +![Beispiel für PDF-Dokument erstellen C#](/images/create-pdf-csharp.png) + +## 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. + +![Render HTML to PDF example](render-html-to-pdf.png "render html to pdf") + +*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 = "

Hello, world!

"; +``` + +Warum mit einer Zeichenkette beginnen? Weil viele APIs (E‑Mail‑Dienste, PDF‑Generatoren, Web‑View‑Steuerelemente) HTML‑Markup direkt akzeptieren. Die Verwendung einer Zeichenkette hält den Workflow leichtgewichtig und testbar. + +--- + +## Schritt 2: Das HTMLDocument mit der Zeichenkette initialisieren + +Die `HTMLDocument`‑Klasse von Aspose.Html kann Markup aus einer Zeichenkette, einer URL oder einem Stream lesen. Hier übergeben wir ihr unser `rawHtml`. + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +Zu diesem Zeitpunkt existiert das Dokument vollständig im Speicher. Es wird keine Datei erstellt, und Sie können das DOM genauso manipulieren, wie Sie es in einem Browser tun würden. + +--- + +## Schritt 3: Einen benutzerdefinierten Ressourcen‑Handler erstellen, um die Ausgabe zu erfassen + +Ein **benutzerdefinierter Ressourcen‑Handler** gibt Ihnen die Kontrolle darüber, wohin jeder Teil des Dokuments (HTML, Bilder, CSS) gelangt. In unserem Fall interessiert uns nur das Haupt‑HTML, also schreiben wir alles in einen `MemoryStream`. + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**Warum ein benutzerdefinierter Handler?** Die Standard‑`Save`‑Methode schreibt in einen Dateipfad, was den Zweck eines In‑Memory‑Workflows zunichte macht. Durch das Überschreiben von `HandleResource` fangen wir jede Ressourcenanfrage ab und entscheiden exakt, wohin sie geht. Das ist das Kernstück von **wie man HTML erfasst**, ohne die Festplatte zu berühren. + +--- + +## Schritt 4: Das Dokument mit dem Handler speichern + +Jetzt weisen wir Aspose.Html an, das `HTMLDocument` in unseren `MyMemoryHandler` zu serialisieren. Das `SaveOptions`‑Objekt kann leer bleiben für die Standard‑HTML‑Ausgabe, Sie können jedoch bei Bedarf die Kodierung, Pretty‑Print usw. anpassen. + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +Wenn `Save` ausgeführt wird, wird `HandleResource` aufgerufen, das Haupt‑HTML wird in `memoryHandler.HtmlStream` geschrieben, und alle zusätzlichen Dateien (Bilder, CSS) würden eigene Streams erhalten – obwohl wir in diesem einfachen Beispiel keine hinzugefügt haben. + +--- + +## Schritt 5: Den erfassten Stream zurück in eine Zeichenkette konvertieren + +Wir haben das HTML in einem `MemoryStream`. Um **HTML in eine Zeichenkette zu konvertieren**, spulen wir den Stream zurück und lesen ihn mit einem `StreamReader`. + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +`resultHtml` enthält nun das genaue Markup, das Aspose.Html erzeugt hat. Sie können es über das Netzwerk senden, in eine E‑Mail einbetten oder an eine andere Bibliothek weitergeben. + +--- + +## Schritt 6: Ausgabe überprüfen – was sollten Sie sehen? + +Lassen Sie das Ergebnis in der Konsole ausgeben, damit Sie bestätigen können, dass alles funktioniert hat. + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**Erwartete Ausgabe** + +```html + +

Hello, world!

+``` + +Beachten Sie, dass das ``‑Tag automatisch von Aspose.Html hinzugefügt wird. Das ist einer der Gründe, warum wir eine Bibliothek einer manuellen Zeichenketten‑Verkettung vorziehen – sie normalisiert das Markup für Sie. + +--- + +## Vollständiges, ausführbares Beispiel + +Unten finden Sie das komplette Programm, das Sie in eine Konsolen‑App einfügen und sofort ausführen können. Alle Teile sind zusammen, sodass Sie nicht raten müssen, welche `using`‑Anweisungen fehlen oder welche versteckten Abhängigkeiten existieren. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +Kopieren‑Sie den Code, drücken Sie **F5**, und Sie sehen das formatierte HTML in der Konsole ausgegeben. + +--- + +## Häufige Fragen & Sonderfälle + +### Was ist, wenn ich Bilder oder CSS‑Dateien erfassen muss? + +Der `MyMemoryHandler` erstellt bereits für jede Ressource einen neuen `MemoryStream`. Sie können ihn erweitern, um diese Streams in einem Dictionary zu speichern, das mit `info.Uri` indiziert ist. Dann könnten Sie beispielsweise Bilder später als Base64‑Zeichenketten einbetten. + +### Kann ich die Kodierung der Ausgabe ändern? + +Ja. Übergeben Sie ein `Saving.HtmlSaveOptions` mit gesetzter `Encoding`‑Eigenschaft: + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### Funktioniert das mit großen Dokumenten? + +`MemoryStream` wächst dynamisch, aber achten Sie bei riesigen Seiten (Hunderte MB) auf den Speicherverbrauch. In solchen Szenarien könnten Sie direkt in eine Datei oder einen Netzwerksocket streamen. + +### Wie schreibe ich **HTML in einen Stream** in einer einzigen Zeile? + +Wenn Sie keinen benutzerdefinierten Handler benötigen, können Sie `htmlDocument.Save(Stream, SaveOptions)` direkt verwenden: + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +Das ist eine kompakte Alternative, allerdings verlieren Sie die Möglichkeit, zusätzliche Ressourcen abzufangen. + +--- + +## Profi‑Tipps & Fallstricke + +* **Pro‑Tipp:** Setzen Sie `Position` immer auf `0` zurück, bevor Sie einen `MemoryStream` lesen. Vergessen führt zu einer leeren Zeichenkette. +* **Achten Sie auf:** Das Übergeben von `null` bei `SaveOptions` – Aspose.Html verwendet dann die Standardwerte, aber explizite Optionen machen Ihre Absicht klar. +* **Typischer Fehler:** Anzunehmen, dass `HtmlStream` bereits vor Abschluss von `Save` gefüllt ist. Der Stream ist erst nach Rückkehr des `Save`‑Aufrufs verfügbar. +* **Leistungshinweis:** Bei wiederholten Konvertierungen verwenden Sie eine einzelne `MyMemoryHandler`‑Instanz und leeren deren Streams zwischen den Durchläufen, um zusätzliche Allokationen zu vermeiden. + +--- + +## Fazit + +Wir haben gezeigt, wie man **HTML aus einer Zeichenkette** in C# erstellt, das Ergebnis mit einem **benutzerdefinierten Ressourcen‑Handler** erfasst und **HTML in einen Stream schreibt** für die weitere Verarbeitung. Durch die Rückkonvertierung des In‑Memory‑Streams in eine Zeichenkette erhalten Sie zudem eine zuverlässige Methode, **HTML in eine Zeichenkette zu konvertieren**, ohne das Dateisystem zu berühren. + +Dieses Muster ist flexibel genug für E‑Mail‑Templates, PDF‑Generierung oder jedes Szenario, in dem Sie das HTML‑Markup on the fly benötigen. Als Nächstes könnten Sie das Einbetten von Bildern als Base64 erkunden, `HtmlSaveOptions` für Minifizierung anpassen oder die Zeichenkette an Aspose.PDF für die PDF‑Konvertierung übergeben. + +Haben Sie weitere Fragen zu Ressourcen‑Handling, Kodierung oder Performance? Hinterlassen Sie unten einen Kommentar – 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/greek/net/generate-jpg-and-png-images/_index.md b/html/greek/net/generate-jpg-and-png-images/_index.md index 5fd47cce3..e13a57586 100644 --- a/html/greek/net/generate-jpg-and-png-images/_index.md +++ b/html/greek/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ url: /el/net/generate-jpg-and-png-images/ Μάθετε πώς να βελτιώσετε την ποιότητα των εικόνων ενεργοποιώντας το antialiasing κατά τη μετατροπή αρχείων DOCX σε PNG ή JPG. ### [Μετατροπή docx σε png – δημιουργία αρχείου zip με C# σεμινάριο](./convert-docx-to-png-create-zip-archive-c-tutorial/) Μάθετε πώς να μετατρέψετε αρχεία DOCX σε PNG και να δημιουργήσετε αρχείο ZIP χρησιμοποιώντας C#. +### [Απόδοση HTML σε PNG σε C# – Πλήρης Οδηγός Βήμα‑βήμα](./render-html-to-png-in-c-complete-step-by-step-guide/) +Μάθετε πώς να μετατρέψετε HTML σε PNG με C# σε έναν πλήρη, βήμα‑βήμα οδηγό. ## Σύναψη diff --git a/html/greek/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/greek/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..ada46915d --- /dev/null +++ b/html/greek/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,246 @@ +--- +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: el +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: /el/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**; Σε αυτό το tutorial θα σας καθοδηγήσουμε βήμα-βήμα πώς να αποδώσετε HTML σε PNG χρησιμοποιώντας τη βιβλιοθήκη Aspose.HTML για .NET. Είτε δημιουργείτε μια υπηρεσία μικρογραφιών, παράγετε προεπισκοπήσεις email, είτε απλώς χρειάζεστε να **μετατρέψετε μια ιστοσελίδα σε εικόνα** για αναφορές, τα παρακάτω βήματα θα σας φέρουν εκεί με ελάχιστη ταλαιπωρία. + +Αυτή είναι η κατάσταση—οι περισσότεροι προγραμματιστές στρέφονται σε ένα εργαλείο λήψης στιγμιότυπων του προγράμματος περιήγησης και καταλήγουν να διαχειρίζονται εκτελέσιμα του headless Chrome. Αυτό λειτουργεί, αλλά προσθέτει πολύ επιπλέον φόρτο. Με το Aspose.HTML μπορείτε να **αποθηκεύσετε HTML ως PNG** απευθείας από τον κώδικα, χωρίς εξωτερική διαδικασία. Στο τέλος αυτού του οδηγού θα μπορείτε να **εξάγετε HTML ως εικόνα**, να αποθηκεύσετε το αποτέλεσμα στο δίσκο, και ακόμη να ρυθμίσετε το antialiasing ή τις διαστάσεις ώστε να ταιριάζουν στο UI σας. + +## Τι Θα Μάθετε + +- Πώς να εγκαταστήσετε το Aspose.HTML μέσω NuGet. +- Ρύθμιση του `ImageRenderingOptions` για έξοδο υψηλής ποιότητας. +- Φόρτωση μιας διαδικτυακής σελίδας ή τοπικής συμβολοσειράς HTML. +- Απόδοση της σελίδας σε αρχείο PNG. +- Κοινά προβλήματα όταν **αποθηκεύετε ιστοσελίδα ως PNG** και πώς να τα αποφύγετε. + +Δεν απαιτείται προηγούμενη εμπειρία με το Aspose· χρειάζεται μόνο μια βασική ρύθμιση C#/.NET και σύνδεση στο διαδίκτυο. + +## Προαπαιτούμενα + +- .NET 6.0 ή νεότερο (ο κώδικας λειτουργεί σε .NET Core, .NET Framework 4.6+, και .NET 7). +- Visual Studio 2022 (ή οποιοδήποτε IDE προτιμάτε). +- Πρόσβαση στο NuGet για λήψη του πακέτου `Aspose.HTML`. +- Ένας φάκελος όπου έχετε δικαίωμα εγγραφής για το παραγόμενο PNG. + +> **Συμβουλή επαγγελματία:** Αν σκοπεύετε να το εκτελέσετε σε διακομιστή, βεβαιωθείτε ότι ο λογαριασμός που εκτελεί τη διαδικασία μπορεί να γράψει στον φάκελο εξόδου· διαφορετικά το βήμα απόδοσης θα αποτύχει σιωπηρά. + +## Βήμα 1: Εγκατάσταση Aspose.HTML + +Πρώτα, προσθέστε τη βιβλιοθήκη Aspose.HTML στο έργο σας. Ανοίξτε το NuGet Package Manager Console και εκτελέστε: + +```powershell +Install-Package Aspose.HTML +``` + +Ή, αν προτιμάτε το UI, αναζητήστε το **Aspose.HTML** και κάντε κλικ στο **Install**. Αυτό θα κατεβάσει όλα τα απαραίτητα DLL, συμπεριλαμβανομένου του μηχανισμού απόδοσης. + +> **Γιατί είναι σημαντικό:** Το Aspose.HTML διαχειρίζεται εσωτερικά την ανάλυση HTML, τη διάταξη CSS και τη ραστεροποίηση εικόνας, έτσι δεν χρειάζεται να εκκινήσετε ένα headless browser. Είναι επίσης πλήρως διαχειριζόμενο, δηλαδή δεν υπάρχουν εγγενείς εξαρτήσεις προς διανομή. + +## Βήμα 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 +}; +``` + +> **Γιατί να ενεργοποιήσετε το antialiasing;** Χωρίς αυτό, οι άκρες μπορεί να φαίνονται σκαλιστές, κάτι που είναι ιδιαίτερα εμφανές σε οθόνες υψηλής ανάλυσης (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 = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **Περίπτωση άκρης:** Κάποιοι ιστότοποι αποκλείουν μη‑προγράμματα περιήγησης user agents. Αν λάβετε μια κενή εικόνα, ορίστε μια προσαρμοσμένη κεφαλίδα user‑agent στο αίτημα ή κατεβάστε πρώτα το HTML και δώστε το ως συμβολοσειρά. + +## Βήμα 4: Απόδοση σε PNG + +Τώρα η κύρια λειτουργία—κλήση του `RenderToFile`. Δώστε τη πλήρη διαδρομή όπου θέλετε να αποθηκευτεί το PNG. + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +Μετά την εκτέλεση αυτής της γραμμής, θα βρείτε το `output.png` στον καθορισμένο φάκελο. Ανοίξτε το με οποιονδήποτε προβολέα εικόνων για να επαληθεύσετε το αποτέλεσμα. + +> **Τι να περιμένετε:** Το PNG θα είναι ακριβώς 800 × 600 px, με ομαλό κείμενο και χρώματα που ταιριάζουν με την αρχική σελίδα. Αν η πηγή σελίδα χρησιμοποιεί εξωτερικό CSS ή εικόνες, το Aspose.HTML θα κατεβάσει αυτόματα αυτούς τους πόρους, εφόσον είναι προσβάσιμοι. + +## Βήμα 5: Επαλήθευση και Χρήση του Αποτελέσματος + +Μια γρήγορη έλεγχος λογικής εξασφαλίζει ότι έχετε πράγματι μια εικόνα και όχι ένα κενό αρχείο. + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +Τώρα μπορείτε να **αποθηκεύσετε ιστοσελίδα ως PNG** για αρχειοθέτηση, να ενσωματώσετε την εικόνα σε ενημερωτικά δελτία email, ή να τη δώσετε σε μια αλυσίδα μηχανικής μάθησης που απαιτεί ραστεροποιημένες σελίδες. + +## Προαιρετικό: Ρυθμίσεις για Διαφορετικά Σενάρια + +### 5.1 Απόδοση Πλήρους Σελίδας + +Αν θέλετε ολόκληρη τη σελίδα με δυνατότητα κύλισης αντί για τμήμα μεγέθους προβολής, ορίστε το ύψος σε μεγαλύτερη τιμή ή χρησιμοποιήστε το `ImageRenderingOptions.PageHeight`: + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 Αλλαγή Μορφής Εικόνας + +Το Aspose.HTML υποστηρίζει JPEG, BMP, GIF και TIFF. Αλλάξτε την επέκταση του αρχείου και η μορφή θα προσαρμοστεί αυτόματα: + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 Διαχείριση Σελίδων με Προστασία Επαλήθευσης + +Για σελίδες πίσω από σύνδεση, λάβετε το HTML με `HttpClient` (συμπεριλαμβανομένων των cookies ή των bearer tokens), έπειτα περάστε τη συμβολοσειρά στο `HTMLDocument` όπως φαίνεται παραπάνω. Με αυτόν τον τρόπο μπορείτε ακόμη να **μετατρέψετε ιστοσελίδα σε εικόνα** ακόμη και όταν η σελίδα δεν είναι δημόσια προσβάσιμη. + +## Πλήρες Παράδειγμα Εργασίας + +Παρακάτω υπάρχει μια αυτόνομη εφαρμογή console που ενώνει όλα τα παραπάνω. Αντιγράψτε‑και‑επικολλήστε την σε ένα νέο .NET console project και τρέξτε την—θα κατεβάσει το `https://example.com`, θα το αποδώσει, και θα αποθηκεύσει το `output.png` δίπλα στο εκτελέσιμο. + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **Αναμενόμενο αποτέλεσμα:** Ένα αρχείο `output.png`, 800 × 600 px, που εμφανίζει την αρχική σελίδα του `example.com`. Ανοίξτε το με οποιονδήποτε προβολέα εικόνων για να επιβεβαιώσετε την οπτική πιστότητα. + +## Συχνές Ερωτήσεις & Προβλήματα + +- **Ε: Λειτουργεί αυτό σε Linux;** + Ναι. Το Aspose.HTML είναι cross‑platform· απλώς βεβαιωθείτε ότι το .NET runtime είναι εγκατεστημένο. + +- **Ε: Η σελίδα μου χρησιμοποιεί JavaScript για εισαγωγή περιεχομένου—θα εμφανιστεί;** + Το Aspose.HTML **δεν** εκτελεί JavaScript. Για δυναμικές σελίδες θα χρειαστεί να προ‑αποδώσετε το HTML (π.χ., με headless Chrome) και έπειτα να δώσετε το στατικό markup στον renderer. + +- **Ε: Πόσο μεγάλη μπορεί να γίνει η εικόνα πριν η μνήμη γίνει πρόβλημα;** + Η απόδοση πολύ ψηλών σελίδων (10 k+ pixels) μπορεί να καταναλώσει αρκετές εκατοντάδες megabytes RAM. Αν αντιμετωπίσετε `OutOfMemoryException`, σκεφτείτε να αποδίδετε σε τμήματα και να ενώσετε τα PNGs. + +- **Ε: Μπορώ να ενσωματώσω γραμματοσειρές που δεν είναι εγκατεστημένες στον διακομιστή;** + Ναι. Συμπεριλάβετε κανόνες `@font-face` στο CSS ή φορτώστε τα αρχεία γραμματοσειράς μέσω ετικέτας ``· το Aspose.HTML θα τα ενσωματώσει κατά τη ραστεροποίηση. + +## Συμπέρασμα + +Τώρα έχετε μια αξιόπιστη, έτοιμη για παραγωγή μέθοδο να **αποδώσετε HTML σε PNG** σε C#. Με τη διαμόρφωση του `ImageRenderingOptions`, τη φόρτωση της στοχευμένης σελίδας, και την κλήση του `RenderToFile`, μπορείτε να **μετατρέψετε ιστοσελίδα σε εικόνα**, **αποθηκεύσετε HTML ως PNG**, **εξάγετε HTML ως εικόνα**, και **αποθηκεύσετε ιστοσελίδα ως PNG** με μόνο λίγες γραμμές κώδικα. + +Επόμενα βήματα; Δοκιμάστε να προσαρμόσετε τις διαστάσεις για στιγμιότυπα υψηλής DPI, πειραματιστείτε με έξοδο JPEG για μικρότερα αρχεία, ή ενσωματώστε αυτή τη λογική σε ένα ASP.NET API που επιστρέφει PNG κατ' απαίτηση. Οι δυνατότητες είναι ατελείωτες, και επειδή η λύση είναι πλήρως διαχειριζόμενη, δεν θα χρειαστεί να παλέψετε με εξωτερικά προγράμματα περιήγησης ή εγγενείς βιβλιοθήκες. + +Έχετε περισσότερες ερωτήσεις σχετικά με την απόδοση εικόνας ή άλλες δυνατότητες του Aspose.HTML; Αφήστε ένα σχόλιο παρακάτω, και καλή προγραμματιστική! + +![παράδειγμα απόδοσης html σε png](placeholder.png "απόδοση html σε png") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/greek/net/html-document-manipulation/_index.md b/html/greek/net/html-document-manipulation/_index.md index c0ee23857..a199d59a6 100644 --- a/html/greek/net/html-document-manipulation/_index.md +++ b/html/greek/net/html-document-manipulation/_index.md @@ -59,6 +59,8 @@ url: /el/net/html-document-manipulation/ Μάθετε πώς να αξιοποιήσετε τη δύναμη του Aspose.HTML για .NET. Ενισχύστε την ανάπτυξη Ιστού σας με χειρισμό και απόδοση HTML. ### [Δημιουργία εγγράφου σε .NET με Aspose.HTML](./creating-a-document/) Απελευθερώστε το Power of Aspose.HTML για .NET. Μάθετε να δημιουργείτε, να χειρίζεστε και να βελτιστοποιείτε έγγραφα HTML και SVG με ευκολία. Εξερευνήστε Βήμα-Βήμα Παραδείγματα και Συχνές Ερωτήσεις. +### [Πώς να δημιουργήσετε HTML – Προσθήκη στοιχείων και μορφοποίηση κειμένου](./how-to-create-html-append-elements-and-style-text/) +Μάθετε πώς να δημιουργήσετε HTML, να προσθέσετε στοιχεία και να μορφοποιήσετε κείμενο με το Aspose.HTML για .NET. ### [Δημιουργία HTML από συμβολοσειρά σε C# – Οδηγός προσαρμοσμένου διαχειριστή πόρων](./create-html-from-string-in-c-custom-resource-handler-guide/) Μάθετε πώς να δημιουργείτε HTML από συμβολοσειρά χρησιμοποιώντας προσαρμοσμένο διαχειριστή πόρων σε C#. ### [Επεξεργασία εγγράφου σε .NET με Aspose.HTML](./editing-a-document/) diff --git a/html/greek/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/greek/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..276be12e1 --- /dev/null +++ b/html/greek/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-28 +description: Πώς να δημιουργήσετε HTML προγραμματιστικά σε C#. Μάθετε πώς να προσθέτετε + στοιχείο στο σώμα, να δημιουργείτε στοιχείο παραγράφου, να προσθέτετε έντονο πλάγιο + κείμενο και να προσθέτετε στυλ CSS προγραμματιστικά. +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: el +og_description: Πώς να δημιουργήσετε HTML προγραμματιστικά σε C#. Αυτός ο οδηγός σας + δείχνει πώς να προσθέσετε στοιχείο στο σώμα, να δημιουργήσετε στοιχείο παραγράφου, + να προσθέσετε έντονο πλάγιο κείμενο και να προσθέσετε στυλ CSS προγραμματιστικά. +og_title: Πώς να δημιουργήσετε HTML – Προσθήκη στοιχείων και μορφοποίηση κειμένου +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: Πώς να δημιουργήσετε HTML – Προσθήκη στοιχείων και στυλιζάρισμα κειμένου +url: /el/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να δημιουργήσετε HTML – Προσθήκη στοιχείων και μορφοποίηση κειμένου + +Έχετε αναρωτηθεί ποτέ **πώς να δημιουργήσετε HTML** από C# χωρίς να καταφύγετε σε έναν κατασκευαστή συμβολοσειρών; Δεν είστε ο μόνος. Σε πολλές περιπτώσεις αυτοματοποίησης ιστού ή δημιουργίας email χρειάζεστε μια καθαρή, βασισμένη στο DOM προσέγγιση που σας επιτρέπει να προσθέσετε στοιχείο στο σώμα, να το μορφοποιήσετε και να διατηρήσετε όλα τα δεδομένα ασφαλή τύπου. + +Σε αυτό το tutorial θα περάσουμε βήμα‑βήμα από το **πώς να δημιουργήσετε HTML** χρησιμοποιώντας Aspose.HTML, καλύπτοντας τα πάντα από τη δημιουργία ενός στοιχείου παραγράφου μέχρι την προσθήκη έντονου πλάγιου κειμένου και την προσθήκη CSS στυλ προγραμματικά. Στο τέλος θα έχετε μια έτοιμη για χρήση συμβολοσειρά HTML που μπορείτε να ενσωματώσετε σε έναν περιηγητή, ένα email ή έναν μετατροπέα PDF. + +## Τι θα χρειαστείτε + +- **.NET 6+** (οποιαδήποτε πρόσφατη έκδοση λειτουργεί· το API είναι σταθερό και στο .NET Framework) +- **Aspose.HTML for .NET** πακέτο NuGet – `Install-Package Aspose.HTML` +- Βασική κατανόηση της σύνταξης C# – δεν απαιτείται τίποτα περίπλοκο + +Δεν χρειάζονται επιπλέον αρχεία ρυθμίσεων, ούτε εξωτερικές μηχανές προτύπων. Απλώς καθαρός κώδικας C# που χειρίζεται το DOM. + +![παράδειγμα δημιουργίας html](/images/how-to-create-html.png "Στιγμιότυπο που δείχνει τη δομή του παραγόμενου HTML – πώς να δημιουργήσετε html") + +## Βήμα 1: Ρύθμιση του έργου και εισαγωγή Namespaces + +Πρώτα απ' όλα. Δημιουργήστε μια εφαρμογή console (ή οποιοδήποτε .NET project) και προσθέστε την αναφορά Aspose.HTML. Στη συνέχεια εισάγετε τα namespaces που θα χρησιμοποιήσουμε. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **Pro tip:** Αν χρειάζεστε μόνο χειρισμό DOM, μπορείτε να παραλείψετε το namespace `Aspose.Html.Rendering` – απαιτείται μόνο όταν αποδίδετε το έγγραφο σε εικόνα ή PDF. + +## Βήμα 2: Ορισμός CSS στυλ προγραμματικά + +Όταν **προσθέτετε css style προγραμματικά**, αποκτάτε πλήρη έλεγχο πάνω στις οικογένειες γραμματοσειρών, τα μεγέθη και ακόμη και σε συνδυασμένες σημαίες στυλ γραμματοσειράς όπως bold + italic. Δείτε πώς να δημιουργήσετε αυτό το αντικείμενο στυλ. + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +Γιατί να χρησιμοποιήσετε `WebFontStyle.Bold | WebFontStyle.Italic` αντί για δύο ξεχωριστές ιδιότητες; Το API αντιμετωπίζει το στυλ γραμματοσειράς ως enumeration σημαίας, έτσι η συγχώνευσή τους παράγει το ακριβές CSS `font-weight: bold; font-style: italic;` που θα γράφατε με το χέρι. + +## Βήμα 3: Δημιουργία νέου HTML εγγράφου + +Τώρα πραγματικά **πώς να δημιουργήσετε HTML** – το αντικείμενο εγγράφου λειτουργεί ως καμβάς μας. Σκεφτείτε το ως μια κενή σελίδα στην οποία μπορείτε να ζωγραφίσετε. + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +Σε αυτό το σημείο το έγγραφο περιέχει τις τυπικές ετικέτες ``, `` και ``. Μπορείτε να ελέγξετε το `htmlDoc.Body` για να δείτε το κενό στοιχείο `` έτοιμο για παιδιά. + +## Βήμα 4: Δημιουργία στοιχείου παραγράφου και προσθήκη έντονου πλάγιου κειμένου + +Εδώ η λέξη‑κλειδί **create paragraph element** λάμπει. Θα δημιουργήσουμε μια ετικέτα `

`, θα ενσωματώσουμε το στυλ που κατασκευάσαμε και θα ορίσουμε το περιεχόμενο κειμένου της. + +```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"); + ``` + +- **Διαφορετικά Στοιχεία:** Αντί σε `

`, μπορείτε να δημιουργήσετε ένα `

` ή `` χρησιμοποιώντας `htmlDoc.CreateElement("div")`. Το ίδιο μοτίβο `SetAttribute` λειτουργεί. + +- **Προσθήκη πολλαπλών κόμβων:** Επανάληψη πάνω σε μια συλλογή συμβολοσειρών και δημιουργία παραγράφου για κάθε μία, προσθέτοντάς τη στο σώμα. Θυμηθείτε να επαναχρησιμοποιήσετε το ίδιο `CSSStyleDeclaration` αν το στυλ είναι ίδιο—δεν χρειάζεται να το ξαναδημιουργήσετε. + +- **Ανησυχίες κωδικοποίησης:** Το `TextContent` κωδικοποιεί αυτόματα σε HTML ειδικούς χαρακτήρες (`&`, `<`, `>`). Αν χρειάζεστε ακατέργαστο HTML, χρησιμοποιήστε `InnerHtml` αντί αυτού, αλλά προσέξτε τις επιθέσεις injection. + +## Πλήρες λειτουργικό παράδειγμα + +Παρακάτω βρίσκεται το πλήρες, έτοιμο για αντιγραφή‑και‑επικόλληση πρόγραμμα που δείχνει όλη τη ροή από την αρχή μέχρι το τέλος. + +```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 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 έτοιμο για διανομή, αρχειοθέτηση ή περαιτέρω επεξεργασία. + +![παράδειγμα δημιουργίας εγγράφου pdf c#](/images/create-pdf-csharp.png) + +## Συχνές Ερωτήσεις (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`, με όλα τα στυλ και τις εικόνες. + +![Παράδειγμα Απόδοσης HTML σε PDF](render-html-to-pdf.png "απόδοση html σε pdf") + +*Κείμενο εναλλακτικής εικόνας: 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 = "

Hello, world!

"; +``` + +Γιατί να ξεκινήσουμε με μια συμβολοσειρά; Επειδή πολλά APIs (υπηρεσίες email, δημιουργοί PDF, έλεγχοι web‑view) δέχονται HTML markup απευθείας. Η χρήση συμβολοσειράς κρατά τη ροή εργασίας ελαφριά και δοκιμαστική. + +--- + +## Βήμα 2: Αρχικοποίηση του HTMLDocument με τη συμβολοσειρά + +Η κλάση `HTMLDocument` του Aspose.Html μπορεί να διαβάσει markup από συμβολοσειρά, URL ή stream. Εδώ τροφοδοτούμε το `rawHtml`. + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +Σε αυτό το σημείο το έγγραφο ζει εξ ολοκλήρου στη μνήμη. Δεν δημιουργείται κανένα αρχείο και μπορείτε να χειριστείτε το DOM όπως θα κάνατε σε έναν περιηγητή. + +--- + +## Βήμα 3: Δημιουργία custom resource handler για τη λήψη του αποτελέσματος + +Ένας **custom resource handler** σας δίνει έλεγχο πάνω στο πού καταλήγει κάθε μέρος του εγγράφου (HTML, εικόνες, CSS). Στην περίπτωσή μας μας ενδιαφέρει μόνο το κύριο HTML, οπότε θα γράψουμε τα πάντα σε ένα `MemoryStream`. + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**Γιατί ένας custom handler;** Η προεπιλεγμένη μέθοδος `Save` γράφει σε διαδρομή αρχείου, κάτι που αναιρεί το σκοπό μιας ροής εργασίας εντός μνήμης. Με την υπερίσχυση του `HandleResource` παρεμβαίνουμε σε κάθε αίτημα πόρου και αποφασίζουμε ακριβώς πού θα αποθηκευτεί. Αυτό είναι το κεντρικό στοιχείο του **πώς να καταγράψετε HTML** χωρίς να αγγίξετε το δίσκο. + +--- + +## Βήμα 4: Αποθήκευση του εγγράφου χρησιμοποιώντας τον handler + +Τώρα λέμε στο Aspose.Html να σειριοποιήσει το `HTMLDocument` στο `MyMemoryHandler`. Το αντικείμενο `SaveOptions` μπορεί να μείνει κενό για προεπιλεγμένη έξοδο HTML, αλλά μπορείτε να ρυθμίσετε κωδικοποίηση, μορφοποίηση κ.λπ., αν χρειαστεί. + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +Όταν εκτελείται το `Save`, καλείται το `HandleResource`, το κύριο HTML γράφεται στο `memoryHandler.HtmlStream`, και τυχόν βοηθητικά αρχεία (εικόνες, CSS) θα λάβουν τα δικά τους streams—αν και σε αυτό το απλό παράδειγμα δεν προσθέσαμε κανένα. + +--- + +## Βήμα 5: Μετατροπή του καταγεγραμμένου stream σε συμβολοσειρά + +Έχουμε το HTML μέσα σε ένα `MemoryStream`. Για **convert HTML to string**, απλώς επαναφέρουμε τη θέση του stream και το διαβάζουμε με ένα `StreamReader`. + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +Το `resultHtml` περιέχει τώρα το ακριβές markup που παρήγαγε το Aspose.Html. Μπορείτε να το στείλετε μέσω δικτύου, να το ενσωματώσετε σε email, ή να το δώσετε σε άλλη βιβλιοθήκη. + +--- + +## Βήμα 6: Επαλήθευση του αποτελέσματος – τι πρέπει να δείτε; + +Ας τυπώσουμε το αποτέλεσμα στην κονσόλα ώστε να επιβεβαιώσετε ότι όλα λειτούργησαν. + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**Αναμενόμενη έξοδος** + +```html + +

Hello, world!

+``` + +Παρατηρήστε ότι η ετικέτα `` προστίθεται αυτόματα από το Aspose.Html. Αυτός είναι ένας από τους λόγους που προτιμούμε μια βιβλιοθήκη αντί για χειροκίνητη συνένωση συμβολοσειρών—κανονικοποιεί το markup για εσάς. + +--- + +## Πλήρες, Εκτελέσιμο Παράδειγμα + +Παρακάτω βρίσκεται το πλήρες πρόγραμμα που μπορείτε να τοποθετήσετε σε μια console app και να τρέξετε αμέσως. Όλα τα κομμάτια είναι μαζί, ώστε να μην υπάρχει αβεβαιότητα για ελλιπείς δηλώσεις `using` ή κρυφές εξαρτήσεις. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +Αντιγράψτε‑επικολλήστε, πατήστε **F5**, και θα δείτε το μορφοποιημένο HTML να τυπώνεται στην κονσόλα. + +--- + +## Συχνές Ερωτήσεις & Ακραίες Περιπτώσεις + +### Τι γίνεται αν χρειαστεί να καταγράψω εικόνες ή αρχεία CSS; + +Το `MyMemoryHandler` δημιουργεί ήδη ένα νέο `MemoryStream` για κάθε πόρο. Μπορείτε να το επεκτείνετε ώστε να αποθηκεύει αυτά τα streams σε ένα λεξικό με κλειδί το `info.Uri`. Έτσι, για παράδειγμα, θα μπορούσατε να ενσωματώσετε τις εικόνες ως Base64 strings αργότερα. + +### Μπορώ να αλλάξω την κωδικοποίηση της εξόδου; + +Ναι. Περάστε ένα `Saving.HtmlSaveOptions` με την ιδιότητα `Encoding` ορισμένη: + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### Λειτουργεί αυτό με μεγάλα έγγραφα; + +Το `MemoryStream` μεγαλώνει δυναμικά, αλλά παρακολουθήστε την κατανάλωση μνήμης για τεράστιες σελίδες (εκατοντάδες MB). Σε τέτοιες περιπτώσεις μπορεί να είναι πιο αποδοτικό να ρέσετε απευθείας σε αρχείο ή σε socket δικτύου. + +### Πώς μπορώ να **write HTML to stream** σε μία γραμμή; + +Αν δεν χρειάζεστε custom handler, μπορείτε να χρησιμοποιήσετε απευθείας το `htmlDocument.Save(Stream, SaveOptions)`: + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +Αυτή είναι μια σύντομη εναλλακτική, αν και χάνει τη δυνατότητα παρεμβολής σε βοηθητικούς πόρους. + +--- + +## Pro Tips & Παγίδες + +* **Pro tip:** Πάντα επαναφέρετε το `Position` στο `0` πριν διαβάσετε ένα `MemoryStream`. Η παράλειψη αυτού οδηγεί σε κενή συμβολοσειρά. +* **Προσοχή σε:** Παράδοση `null` στο `SaveOptions`—το Aspose.Html θα χρησιμοποιήσει τις προεπιλογές, αλλά οι ρητές επιλογές κάνουν την πρόθεσή σας σαφή. +* **Συνηθισμένο λάθος:** Να υποθέτετε ότι το `HtmlStream` είναι γεμάτο πριν ολοκληρωθεί το `Save`. Το stream είναι διαθέσιμο μόνο μετά την επιστροφή της κλήσης `Save`. +* **Σημείωση απόδοσης:** Για επαναλαμβανόμενες μετατροπές, επαναχρησιμοποιήστε ένα μόνο αντικείμενο `MyMemoryHandler` και καθαρίστε τα streams του μεταξύ των εκτελέσεων για να αποφύγετε επιπλέον κατανομές. + +--- + +## Συμπέρασμα + +Δείξαμε πώς να **create HTML from string** σε C#, να καταγράψετε το αποτέλεσμα με έναν **custom resource handler**, και να **write HTML to stream** για περαιτέρω επεξεργασία. Με τη μετατροπή του stream μνήμης πίσω σε συμβολοσειρά, έχετε επίσης έναν αξιόπιστο τρόπο να **convert HTML to string** χωρίς να αγγίξετε το σύστημα αρχείων. + +Αυτό το μοτίβο είναι αρκετά ευέλικτο για δημιουργία προτύπων email, παραγωγή PDF, ή οποιοδήποτε σενάριο όπου χρειάζεστε το HTML markup άμεσα. Στο επόμενο βήμα, μπορείτε να εξερευνήσετε την ενσωμάτωση εικόνων ως Base64, τη ρύθμιση `HtmlSaveOptions` για ελαχιστοποίηση, ή τη μεταφορά της συμβολοσειράς σε Aspose.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/generate-jpg-and-png-images/_index.md b/html/hindi/net/generate-jpg-and-png-images/_index.md index b35cbb62e..473554f0d 100644 --- a/html/hindi/net/generate-jpg-and-png-images/_index.md +++ b/html/hindi/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ HTML दस्तावेज़ों में हेरफेर करने DOCX फ़ाइलों को PNG या JPG में परिवर्तित करते समय एंटीएलियासिंग को सक्षम करने के चरणों को जानें। ### [DOCX को PNG में परिवर्तित करें – ZIP आर्काइव बनाएं C# ट्यूटोरियल](./convert-docx-to-png-create-zip-archive-c-tutorial/) C# में DOCX फ़ाइलों को PNG छवियों में बदलें और उन्हें ZIP आर्काइव में संकलित करना सीखें। चरण-दर-चरण मार्गदर्शिका। +### [C# में HTML को PNG में रेंडर करें – पूर्ण चरण‑दर‑चरण गाइड](./render-html-to-png-in-c-complete-step-by-step-guide/) +C# में Aspose.HTML के साथ HTML को PNG में बदलने के लिए पूर्ण चरण‑दर‑चरण गाइड। ## निष्कर्ष diff --git a/html/hindi/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/hindi/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..943a35e23 --- /dev/null +++ b/html/hindi/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-28 +description: Aspose.HTML के साथ C# में HTML को PNG में रेंडर करना सीखें। यह गाइड वेबपेज + को इमेज में बदलने, 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: hi +og_description: Aspose.HTML के साथ C# में HTML को PNG में रेंडर करना सीखें। इस आसान + ट्यूटोरियल का पालन करके वेबपेज को इमेज में बदलें, HTML को PNG के रूप में सहेजें, + और HTML को इमेज के रूप में निर्यात करें। +og_title: C# में HTML को PNG में रेंडर करें – पूर्ण चरण‑दर‑चरण गाइड +tags: +- C# +- Aspose.HTML +- Image Rendering +- .NET +title: C# में HTML को PNG में रेंडर करें – पूर्ण चरण‑दर‑चरण मार्गदर्शिका +url: /hi/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 >}} + +# C# में HTML को PNG में रेंडर करें – पूर्ण चरण‑दर‑चरण गाइड + +क्या आपको **HTML को PNG में जल्दी से रेंडर** करना है? इस ट्यूटोरियल में हम आपको Aspose.HTML लाइब्रेरी for .NET का उपयोग करके HTML को PNG में रेंडर करने का सटीक तरीका दिखाएंगे। चाहे आप थंबनेल सर्विस बना रहे हों, ईमेल प्रीव्यू जेनरेट कर रहे हों, या रिपोर्टिंग के लिए **वेबपेज को इमेज में बदलना** चाहते हों, नीचे दिए गए चरणों से आप न्यूनतम झंझट के साथ यह कर पाएँगे। + +अधिकांश डेवलपर्स ब्राउज़र‑स्क्रीनशॉट टूल की ओर रुख करते हैं और हेडलेस Chrome बाइनरीज़ को संभालते हैं। यह काम करता है, लेकिन इसमें बहुत ओवरहेड जुड़ा रहता है। Aspose.HTML के साथ आप **कोड से सीधे HTML को PNG के रूप में सेव** कर सकते हैं, बिना किसी बाहरी प्रोसेस के। इस गाइड के अंत तक आप **HTML को इमेज के रूप में एक्सपोर्ट**, परिणाम को डिस्क पर स्टोर, और एंटी‑एलियासिंग या डाइमेंशन को अपनी UI के अनुसार ट्यून कर पाएँगे। + +## आप क्या सीखेंगे + +- NuGet के माध्यम से Aspose.HTML कैसे इंस्टॉल करें। +- हाई‑क्वालिटी आउटपुट के लिए `ImageRenderingOptions` सेट करना। +- ऑनलाइन पेज या लोकल HTML स्ट्रिंग लोड करना। +- पेज को PNG फ़ाइल में रेंडर करना। +- **वेबपेज को PNG के रूप में सेव** करने में आम समस्याएँ और उन्हें कैसे टालें। + +Aspose का कोई पूर्व अनुभव आवश्यक नहीं; बस एक बेसिक C#/.NET सेटअप और इंटरनेट कनेक्शन चाहिए। + +## आवश्यकताएँ + +- .NET 6.0 या बाद का (कोड .NET Core, .NET Framework 4.6+, और .NET 7 पर काम करता है)। +- Visual Studio 2022 (या आपका पसंदीदा कोई भी IDE)। +- `Aspose.HTML` पैकेज को पुल करने के लिए NuGet तक पहुँच। +- एक फ़ोल्डर जहाँ आप जेनरेटेड PNG लिख सकें। + +> **Pro tip:** यदि आप इसे सर्वर पर चलाने की योजना बना रहे हैं, तो सुनिश्चित करें कि प्रोसेस चलाने वाला अकाउंट आउटपुट डायरेक्टरी में लिख सकें; अन्यथा रेंडर स्टेप चुपचाप फेल हो जाएगा। + +## चरण 1: Aspose.HTML इंस्टॉल करें + +सबसे पहले, अपने प्रोजेक्ट में Aspose.HTML लाइब्रेरी जोड़ें। NuGet Package Manager Console खोलें और चलाएँ: + +```powershell +Install-Package Aspose.HTML +``` + +या, यदि आप UI पसंद करते हैं, तो **Aspose.HTML** खोजें और **Install** पर क्लिक करें। यह सभी आवश्यक DLLs, जिसमें रेंडरिंग इंजन भी शामिल है, को पुल कर लेगा। + +> **यह क्यों महत्वपूर्ण है:** 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 = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **एज केस:** कुछ साइटें नॉन‑ब्राउज़र यूज़र‑एजेंट को ब्लॉक करती हैं। यदि आपको ब्लैंक इमेज मिलती है, तो रीक्वेस्ट पर कस्टम यूज़र‑एजेंट हेडर सेट करें या पहले HTML डाउनलोड करके स्ट्रिंग के रूप में फीड करें। + +## चरण 4: PNG में रेंडर करें + +अब मुख्य ऑपरेशन — `RenderToFile` को कॉल करना। वह पूरा पाथ दें जहाँ आप PNG सेव करना चाहते हैं। + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +इस लाइन के एक्सीक्यूट होने के बाद, आप निर्दिष्ट फ़ोल्डर में `output.png` पाएँगे। किसी भी इमेज व्यूअर से खोलकर रिज़ल्ट वेरिफ़ाई करें। + +> **क्या उम्मीद करें:** PNG ठीक 800 × 600 px का होगा, स्मूद टेक्स्ट और मूल पेज के रंगों के साथ। यदि स्रोत पेज बाहरी CSS या इमेजेज़ इस्तेमाल करता है, तो Aspose.HTML उन रिसोर्सेज़ को ऑटोमैटिकली डाउनलोड कर लेगा, बशर्ते वे पहुँच योग्य हों। + +## चरण 5: रिज़ल्ट वेरिफ़ाई और उपयोग करें + +एक त्वरित sanity check करें कि आपको इमेज मिली है और फ़ाइल खाली नहीं है। + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +अब आप **वेबपेज को PNG के रूप में सेव** करके आर्काइव कर सकते हैं, इमेज को ईमेल न्यूज़लेटर में एम्बेड कर सकते हैं, या इसे मशीन‑लर्निंग पाइपलाइन में फीड कर सकते हैं जो रास्टराइज़्ड पेजेज़ की अपेक्षा करता है। + +## वैकल्पिक: विभिन्न परिदृश्यों के लिए ट्यूनिंग + +### 5.1 फुल‑पेज स्क्रीनशॉट रेंडर करना + +यदि आप व्यूपोर्ट‑साइज़्ड स्लाइस के बजाय पूरी स्क्रॉलेबल पेज चाहते हैं, तो हाइट को बड़ा सेट करें या `ImageRenderingOptions.PageHeight` का उपयोग करें: + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 इमेज फॉर्मेट बदलना + +Aspose.HTML JPEG, BMP, GIF, और TIFF को सपोर्ट करता है। फ़ाइल एक्सटेंशन बदलें, फॉर्मेट ऑटोमैटिकली फ़ॉलो करेगा: + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 ऑथेंटिकेशन‑प्रोटेक्टेड पेजेस को हैंडल करना + +लॉगिन के पीछे की पेजेस के लिए, `HttpClient` (कुकीज़ या बियरर टोकन सहित) से HTML फ़ेच करें, फिर पहले दिखाए अनुसार स्ट्रिंग को `HTMLDocument` को पास करें। इस तरह आप **वेबपेज को इमेज में बदल** सकते हैं, भले ही पेज पब्लिकली एक्सेसिबल न हो। + +## पूर्ण कार्यशील उदाहरण + +नीचे एक सेल्फ‑कंटेन्ड कंसोल ऐप है जो सब कुछ एक साथ लाता है। इसे नई .NET कंसोल प्रोजेक्ट में कॉपी‑पेस्ट करें और रन करें — यह `https://example.com` डाउनलोड करेगा, रेंडर करेगा, और `output.png` को एक्सिक्यूटेबल के बगल में सेव करेगा। + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **अपेक्षित आउटपुट:** एक `output.png` फ़ाइल, 800 × 600 px, जिसमें `example.com` का होमपेज दिखेगा। किसी भी इमेज व्यूअर में खोलकर विज़ुअल फ़िडेलिटी की पुष्टि करें। + +## सामान्य प्रश्न और ग़लतफ़हमी + +- **प्र: क्या यह Linux पर काम करता है?** + हाँ। Aspose.HTML क्रॉस‑प्लेटफ़ॉर्म है; बस .NET रनटाइम इंस्टॉल रखें। + +- **प्र: मेरा पेज कंटेंट इन्जेक्ट करने के लिए JavaScript इस्तेमाल करता है — क्या वह दिखेगा?** + Aspose.HTML **JavaScript नहीं चलाता**। डायनामिक पेजेज़ के लिए आपको पहले HTML प्री‑रेंडर करना पड़ेगा (जैसे हेडलेस Chrome से) और फिर स्थैतिक मार्कअप को रेंडरर को फीड करना होगा। + +- **प्र: इमेज का आकार कितना बड़ा हो सकता है इससे पहले कि मेमोरी इश्यू आए?** + बहुत टॉल पेजेज़ (10 k+ पिक्सेल) रेंडर करने से कई सौ मेगाबाइट RAM लग सकता है। यदि `OutOfMemoryException` मिलता है, तो सेगमेंट्स में रेंडर करके PNGs को स्टिच करने पर विचार करें। + +- **प्र: क्या मैं ऐसे फ़ॉन्ट एम्बेड कर सकता हूँ जो सर्वर पर इंस्टॉल नहीं हैं?** + हाँ। अपने CSS में `@font-face` रूल शामिल करें या `` टैग से फ़ॉन्ट फ़ाइल लोड करें; Aspose.HTML रास्टराइज़ेशन के दौरान उन्हें एम्बेड कर देगा। + +## निष्कर्ष + +अब आपके पास C# में **HTML को PNG में रेंडर** करने की एक ठोस, प्रोडक्शन‑रेडी विधि है। `ImageRenderingOptions` को कॉन्फ़िगर करके, टार्गेट पेज लोड करके, और `RenderToFile` कॉल करके आप **वेबपेज को इमेज में बदल**, **HTML को PNG के रूप में सेव**, **HTML को इमेज के रूप में एक्सपोर्ट**, और **वेबपेज को PNG के रूप में सेव** केवल कुछ लाइनों के कोड से कर सकते हैं। + +अगला कदम? हाई‑DPI स्क्रीनशॉट्स के लिए डाइमेंशन एडजस्ट करें, छोटे फ़ाइल साइज के लिए JPEG आउटपुट के साथ प्रयोग करें, या इस लॉजिक को ASP.NET API में इंटीग्रेट करें जो ऑन‑डिमांड PNG रिटर्न करता है। संभावनाएँ अनंत हैं, और क्योंकि समाधान पूरी तरह मैनेज्ड है, आपको बाहरी ब्राउज़र या नेटिव लाइब्रेरीज़ से जूझना नहीं पड़ेगा। + +इमेज रेंडरिंग या अन्य Aspose.HTML फीचर्स के बारे में और सवाल हैं? नीचे कमेंट करें, और हैप्पी कोडिंग! + +![HTML को PNG में रेंडर करने का उदाहरण](placeholder.png "HTML को PNG में रेंडर") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/hindi/net/html-document-manipulation/_index.md b/html/hindi/net/html-document-manipulation/_index.md index 8f5af5f85..cce18eb72 100644 --- a/html/hindi/net/html-document-manipulation/_index.md +++ b/html/hindi/net/html-document-manipulation/_index.md @@ -51,27 +51,39 @@ url: /hi/net/html-document-manipulation/ ## HTML दस्तावेज़ हेरफेर ट्यूटोरियल ### [Aspose.HTML के साथ .NET में HTML दस्तावेज़ों को एसिंक्रोनस रूप से लोड करें](./load-html-doc-asynchronously/) HTML दस्तावेज़ों के साथ काम करने के लिए .NET के लिए Aspose.HTML का उपयोग करना सीखें। डेवलपर्स के लिए उदाहरणों और अक्सर पूछे जाने वाले प्रश्नों के साथ चरण-दर-चरण मार्गदर्शिका। + ### [Aspose.HTML के साथ .NET में क्रेडेंशियल के साथ HTML दस्तावेज़ लोड करें](./load-html-doc-with-credentials/) .NET के लिए Aspose.HTML के साथ अपने SEO को बेहतर बनाने का तरीका जानें। रैंकिंग बढ़ाएँ, वेब सामग्री का विश्लेषण करें और खोज इंजन के लिए अनुकूलन करें। + ### [Aspose.HTML के साथ .NET में रिमोट सर्वर का उपयोग करके HTML लोड करें](./load-html-using-remote-server/) हमारे विस्तृत गाइड के साथ .NET के लिए Aspose.HTML की क्षमता को अनलॉक करें। नामस्थान आयात करने, दूरस्थ HTML दस्तावेज़ों तक पहुँचने आदि के बारे में जानें। + ### [Aspose.HTML के साथ .NET में URL का उपयोग करके HTML लोड करें](./load-html-using-url/) .NET के लिए Aspose.HTML की शक्ति का उपयोग करना सीखें। HTML मैनिपुलेशन और रेंडरिंग के साथ अपने वेब डेवलपमेंट को बढ़ावा दें। + ### [Aspose.HTML के साथ .NET में दस्तावेज़ बनाना](./creating-a-document/) .NET के लिए Aspose.HTML की शक्ति का लाभ उठाएँ। HTML और SVG दस्तावेज़ों को आसानी से बनाना, उनमें हेरफेर करना और उन्हें अनुकूलित करना सीखें। चरण-दर-चरण उदाहरण और अक्सर पूछे जाने वाले प्रश्न देखें। + ### [Aspose.HTML के साथ .NET में दस्तावेज़ संपादित करना](./editing-a-document/) .NET के लिए Aspose.HTML के साथ आकर्षक वेब सामग्री बनाएँ। HTML, CSS, और अधिक में हेरफेर करना सीखें। + ### [Aspose.HTML के साथ .NET में दस्तावेज़ सहेजना](./saving-a-document/) हमारे चरण-दर-चरण गाइड के साथ .NET के लिए Aspose.HTML की शक्ति अनलॉक करें। HTML और SVG दस्तावेज़ बनाना, उनमें बदलाव करना और उन्हें परिवर्तित करना सीखें + ### [Aspose.HTML के साथ .NET में HTML को Json के साथ मर्ज करें](./merge-html-with-json/) .NET के लिए Aspose.HTML का उपयोग करके गतिशील और वेब सामग्री बनाना सीखें। अपनी ऑनलाइन उपस्थिति को सशक्त बनाएँ और अपने दर्शकों को जोड़ें। + ### [Aspose.HTML के साथ .NET में HTML को XML के साथ मर्ज करें](./merge-html-with-xml/) .NET के लिए Aspose.HTML का उपयोग करना सीखें। इस व्यापक गाइड के साथ नामस्थान आयात करें, HTML को XML के साथ मर्ज करें और अपने वेब विकास कौशल को बढ़ाएँ। + ### [Aspose.HTML के साथ .NET में XpsDevice द्वारा XPS दस्तावेज़ उत्पन्न करें](./generate-xps-documents-by-xpsdevice/) ### [C# में स्ट्रिंग से HTML बनाएं – कस्टम रिसोर्स हैंडलर गाइड](./create-html-from-string-in-c-custom-resource-handler-guide/) C# में स्ट्रिंग से HTML उत्पन्न करने और कस्टम रिसोर्स हैंडलर का उपयोग करके इसे लोड करने की प्रक्रिया सीखें। +### [HTML बनाना – तत्व जोड़ें और टेक्स्ट को स्टाइल करें](./how-to-create-html-append-elements-and-style-text/) +HTML को प्रोग्रामेटिकली बनाना, नए तत्व जोड़ना और टेक्स्ट को स्टाइल करने की प्रक्रिया सीखें। + ## निष्कर्ष अंत में, यदि आप Aspose.HTML for .NET का उपयोग करके HTML दस्तावेज़ हेरफेर में महारत हासिल करना चाहते हैं, तो आप सही जगह पर हैं। हमारे ट्यूटोरियल आपकी सफलता के लिए रोडमैप हैं। संभावनाओं का पता लगाने, अपनी रचनात्मकता को अनलॉक करने और अपने .NET विकास को सुव्यवस्थित करने के लिए तैयार हो जाइए। आज ही अपनी यात्रा शुरू करें, और अपने HTML दस्तावेज़ों को अपनी आँखों के सामने बदलते हुए देखें। चाहे आप डेवलपर हों या उत्साही, Aspose.HTML for .NET में आपके लिए कुछ अविश्वसनीय है। तो, आप किसका इंतज़ार कर रहे हैं? आइए इस रोमांचक साहसिक कार्य को एक साथ शुरू करें! diff --git a/html/hindi/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/hindi/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..258586eb9 --- /dev/null +++ b/html/hindi/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-28 +description: C# में प्रोग्रामेटिकली HTML कैसे बनाएं। बॉडी में एलिमेंट जोड़ना, पैराग्राफ + एलिमेंट बनाना, बोल्ड इटैलिक टेक्स्ट जोड़ना, और प्रोग्रामेटिकली CSS स्टाइल जोड़ना + सीखें। +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: hi +og_description: C# में प्रोग्रामेटिक रूप से HTML कैसे बनाएं। यह गाइड आपको दिखाता है + कि बॉडी में एलिमेंट कैसे जोड़ें, पैराग्राफ एलिमेंट बनाएं, बोल्ड इटैलिक टेक्स्ट जोड़ें, + और प्रोग्रामेटिक रूप से CSS स्टाइल जोड़ें। +og_title: HTML कैसे बनाएं – तत्व जोड़ें और पाठ को शैली दें +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: HTML कैसे बनाएं – तत्व जोड़ें और टेक्स्ट को स्टाइल करें +url: /hi/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML कैसे बनाएं – तत्व जोड़ें और टेक्स्ट को स्टाइल करें + +क्या आप कभी सोचते रहे हैं कि **HTML कैसे बनाएं** C# से बिना स्ट्रिंग बिल्डर में डाले? आप अकेले नहीं हैं। कई वेब‑ऑटोमेशन या ईमेल‑जनरेशन परिदृश्यों में आपको एक साफ़, DOM‑आधारित दृष्टिकोण चाहिए जो आपको बॉडी में तत्व जोड़ने, उसे स्टाइल करने और सब कुछ टाइप‑सेफ रखने की अनुमति देता है। + +इस ट्यूटोरियल में हम Aspose.HTML का उपयोग करके **HTML कैसे बनाएं** के सटीक चरणों को देखेंगे, जिसमें पैराग्राफ एलिमेंट बनाना, बोल्ड इटैलिक टेक्स्ट जोड़ना और प्रोग्रामेटिकली CSS स्टाइल जोड़ना शामिल है। अंत तक आपके पास एक तैयार‑उपयोग HTML स्ट्रिंग होगी जिसे आप ब्राउज़र, ईमेल या PDF कन्वर्टर में इन्जेक्ट कर सकते हैं। + +## आपको क्या चाहिए + +- **.NET 6+** (कोई भी नवीनतम संस्करण काम करता है; API .NET Framework में भी स्थिर है) +- **Aspose.HTML for .NET** NuGet पैकेज – `Install-Package Aspose.HTML` +- C# सिंटैक्स की बुनियादी समझ – कोई विशेष ज्ञान आवश्यक नहीं + +कोई अतिरिक्त कॉन्फ़िगरेशन फ़ाइलें नहीं, कोई बाहरी टेम्प्लेटिंग इंजन नहीं। सिर्फ साधारण C# कोड जो DOM को मैनिपुलेट करता है। + +![HTML बनाने का उदाहरण](/images/how-to-create-html.png "जनरेटेड HTML संरचना दिखाता स्क्रीनशॉट – HTML कैसे बनाएं") + +## चरण 1: प्रोजेक्ट सेट अप करें और नेमस्पेस इम्पोर्ट करें + +सबसे पहले, एक कंसोल ऐप (या कोई भी .NET प्रोजेक्ट) बनाएं और Aspose.HTML रेफ़रेंस जोड़ें। फिर उन नेमस्पेस को इम्पोर्ट करें जिनका हम उपयोग करेंगे। + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **प्रो टिप:** यदि आपको केवल DOM मैनिपुलेशन चाहिए, तो आप `Aspose.Html.Rendering` नेमस्पेस को हटा सकते हैं – यह केवल तब आवश्यक है जब आप दस्तावेज़ को इमेज या PDF में रेंडर करते हैं। + +## चरण 2: प्रोग्रामेटिकली CSS स्टाइल परिभाषित करें + +जब आप **CSS स्टाइल प्रोग्रामेटिकली जोड़ते** हैं, तो आपको फ़ॉन्ट फ़ैमिली, साइज और बोल्ड + इटैलिक जैसे संयुक्त फ़ॉन्ट‑स्टाइल फ़्लैग्स पर पूरी नियंत्रण मिलती है। यहाँ है कैसे आप उस स्टाइल ऑब्जेक्ट को बनाते हैं। + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +`WebFontStyle.Bold | WebFontStyle.Italic` का उपयोग दो अलग-अलग प्रॉपर्टी की बजाय क्यों करें? API फ़ॉन्ट स्टाइल को एक फ़्लैग एनेमरेशन के रूप में ट्रीट करती है, इसलिए उन्हें मर्ज करने से वही CSS `font-weight: bold; font-style: italic;` बनता है जो आप हाथ से लिखते। + +## चरण 3: नया HTML दस्तावेज़ बनाएं + +अब हम वास्तव में **HTML कैसे बनाएं** – दस्तावेज़ ऑब्जेक्ट हमारे कैनवास की तरह काम करता है। इसे एक खाली पेज समझें जिस पर आप पेंट कर सकते हैं। + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +इस बिंदु पर दस्तावेज़ में मानक ``, `` और `` टैग शामिल हैं। आप `htmlDoc.Body` को inspect करके खाली `` एलिमेंट देख सकते हैं जो बच्चों के लिए तैयार है। + +## चरण 4: पैराग्राफ एलिमेंट बनाएं और बोल्ड इटैलिक टेक्स्ट जोड़ें + +यहाँ **create paragraph element** कीवर्ड चमकती है। हम एक `

` टैग जनरेट करेंगे, हमने जो स्टाइल बनाया है उसे इन्जेक्ट करेंगे, और उसका टेक्स्ट कंटेंट सेट करेंगे। + +```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")` का उपयोग करके `

` या `` बना सकते हैं। वही `SetAttribute` पैटर्न काम करता है। + +- **Appending Multiple Nodes:** स्ट्रिंग्स के कलेक्शन पर लूप चलाएँ और प्रत्येक के लिए एक पैराग्राफ बनाकर बॉडी में जोड़ें। यदि स्टाइल समान है तो वही `CSSStyleDeclaration` पुनः उपयोग करें—फिर से बनाने की जरूरत नहीं। + +- **Encoding Concerns:** `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 कैसे बनाएं** को 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 होगा। + +![create pdf document c# example](/images/create-pdf-csharp.png) + +## 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` का पिक्सेल‑परफ़ेक्ट स्नैपशॉट दिखेगा, पूरी स्टाइल्स और इमेजेज के साथ। + +![Render HTML to PDF example](render-html-to-pdf.png "render html to pdf") +*छवि वैकल्पिक पाठ: रेंडर 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 = "

Hello, world!

"; +``` + +स्ट्रिंग से शुरू क्यों करें? क्योंकि कई API (ईमेल सर्विसेज, PDF जेनरेटर, वेब‑व्यू कंट्रोल्स) सीधे HTML मार्कअप को स्वीकार करती हैं। स्ट्रिंग का उपयोग करने से वर्कफ़्लो हल्का और टेस्टेबल रहता है। + +--- + +## Step 2: Initialise the HTMLDocument with the string + +Aspose.Html का `HTMLDocument` क्लास स्ट्रिंग, URL या स्ट्रीम से मार्कअप पढ़ सकता है। यहाँ हम अपनी `rawHtml` को फीड कर रहे हैं। + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +इस बिंदु पर डॉक्यूमेंट पूरी तरह मेमोरी में रहता है। कोई फ़ाइल नहीं बनती, और आप DOM को उसी तरह मैनिपुलेट कर सकते हैं जैसे ब्राउज़र में करते हैं। + +--- + +## Step 3: Build a custom resource handler to capture the output + +एक **कस्टम रिसोर्स हैंडलर** आपको यह नियंत्रित करने देता है कि डॉक्यूमेंट के प्रत्येक भाग (HTML, इमेजेज, CSS) कहाँ जाए। हमारे केस में हमें केवल मुख्य HTML चाहिए, इसलिए हम सब कुछ `MemoryStream` में लिखेंगे। + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**कस्टम हैंडलर क्यों?** डिफ़ॉल्ट `Save` मेथड फ़ाइल पाथ में लिखता है, जो इन‑मेमोरी वर्कफ़्लो के उद्देश्य को नष्ट कर देता है। `HandleResource` को ओवरराइड करके हम हर रिसोर्स रिक्वेस्ट को इंटरसेप्ट कर सकते हैं और तय कर सकते हैं कि वह कहाँ स्टोर हो। यही मुख्य तरीका है **डिस्क को छुए बिना HTML को कैप्चर करने** का। + +--- + +## Step 4: Save the document using the handler + +अब हम Aspose.Html को बताते हैं कि `HTMLDocument` को हमारे `MyMemoryHandler` में सीरियलाइज़ करे। `SaveOptions` ऑब्जेक्ट को डिफ़ॉल्ट HTML आउटपुट के लिए खाली रखा जा सकता है, लेकिन आप एन्कोडिंग, प्रिटी‑प्रिंट आदि को भी कस्टमाइज़ कर सकते हैं। + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +जब `Save` चलाया जाता है, `HandleResource` कॉल होता है, मुख्य HTML `memoryHandler.HtmlStream` में लिखा जाता है, और कोई भी अतिरिक्त फ़ाइल (इमेजेज, CSS) अपने-अपने स्ट्रीम में जाएगी—हालाँकि इस सरल उदाहरण में हमने कोई अतिरिक्त रिसोर्स नहीं जोड़ा है। + +--- + +## Step 5: Convert the captured stream back to a string + +अब हमारे पास HTML `MemoryStream` में है। **HTML को स्ट्रिंग में बदलने** के लिए हम स्ट्रीम को रीवाइंड करते हैं और `StreamReader` से पढ़ते हैं। + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +`resultHtml` अब वही सटीक मार्कअप रखता है जो Aspose.Html ने जेनरेट किया था। आप इसे नेटवर्क पर भेज सकते हैं, ईमेल में एम्बेड कर सकते हैं, या किसी अन्य लाइब्रेरी को पास कर सकते हैं। + +--- + +## Step 6: Verify the output – what should you see? + +आइए परिणाम को कंसोल पर प्रिंट करें ताकि आप पुष्टि कर सकें कि सब कुछ सही काम किया। + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**Expected output** + +```html + +

Hello, world!

+``` + +ध्यान दें कि `` टैग Aspose.Html द्वारा स्वचालित रूप से जोड़ा गया है। यही कारण है कि हम मैनुअल स्ट्रिंग कंकैटनेशन की बजाय लाइब्रेरी का उपयोग पसंद करते हैं—यह आपके मार्कअप को सामान्यीकृत कर देती है। + +--- + +## Full, Runnable Example + +नीचे पूरा प्रोग्राम दिया गया है जिसे आप किसी भी कंसोल ऐप में पेस्ट करके तुरंत चला सकते हैं। सभी हिस्से एक साथ हैं, इसलिए `using` स्टेटमेंट्स या छिपी हुई डिपेंडेंसीज़ के बारे में अनुमान लगाने की जरूरत नहीं। + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +कॉपी‑पेस्ट करें, **F5** दबाएँ, और आपको कंसोल में फॉर्मेटेड HTML दिखाई देगा। + +--- + +## Common Questions & Edge Cases + +### What if I need to capture images or CSS files? + +`MyMemoryHandler` पहले से ही हर रिसोर्स के लिए नया `MemoryStream` बनाता है। आप इसे एक डिक्शनरी में `info.Uri` को की के रूप में रखकर एक्सटेंड कर सकते हैं। फिर आप उदाहरण के तौर पर इमेजेज को बाद में Base64 स्ट्रिंग के रूप में एम्बेड कर सकते हैं। + +### Can I change the encoding of the output? + +हाँ। `Saving.HtmlSaveOptions` के `Encoding` प्रॉपर्टी को सेट करके आप एन्कोडिंग बदल सकते हैं: + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### Does this work with large documents? + +`MemoryStream` डायनामिक रूप से बढ़ता है, लेकिन बहुत बड़े पेज (सैकड़ों MB) के लिए मेमोरी उपयोग पर नजर रखें। ऐसे मामलों में आप सीधे फ़ाइल या नेटवर्क सॉकेट में स्ट्रीम कर सकते हैं। + +### How do I **write HTML to stream** in a single line? + +अगर आपको कस्टम हैंडलर की ज़रूरत नहीं है, तो आप सीधे `htmlDocument.Save(Stream, SaveOptions)` का उपयोग कर सकते हैं: + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +यह एक कॉम्पैक्ट विकल्प है, लेकिन आप अतिरिक्त रिसोर्सेज को इंटरसेप्ट नहीं कर पाएँगे। + +--- + +## Pro Tips & Pitfalls + +* **Pro tip:** `MemoryStream` पढ़ने से पहले हमेशा `Position` को `0` पर रीसेट करें। इसे भूलने से खाली स्ट्रिंग मिलती है। +* **Watch out for:** `null` `SaveOptions` पास करना—Aspose.Html डिफ़ॉल्ट्स इस्तेमाल करेगा, लेकिन स्पष्ट विकल्प आपके इरादे को स्पष्ट बनाते हैं। +* **Typical mistake:** यह मान लेना कि `HtmlStream` `Save` समाप्त होने से पहले भरा हुआ है। स्ट्रीम केवल `Save` कॉल रिटर्न होने के बाद उपलब्ध होती है। +* **Performance note:** बार‑बार कन्वर्ज़न के लिए एक ही `MyMemoryHandler` इंस्टेंस को रीउस करें और प्रत्येक रन के बाद उसकी स्ट्रीम्स को क्लियर करें ताकि अतिरिक्त अलोकेशन से बचा जा सके। + +--- + +## Conclusion + +हमने दिखाया कि **C# में स्ट्रिंग से HTML कैसे बनाएं**, परिणाम को **कस्टम रिसोर्स हैंडलर** से कैप्चर करें, और आगे की प्रोसेसिंग के लिए **HTML को स्ट्रीम में लिखें**। इन‑मेमोरी स्ट्रीम को फिर से स्ट्रिंग में बदलकर आप **डिस्क को छुए बिना HTML को स्ट्रिंग में बदलने** का भरोसेमंद तरीका प्राप्त करते हैं। + +यह पैटर्न ईमेल टेम्पलेटिंग, PDF जेनरेशन, या किसी भी ऐसे सीनारियो के लिए लचीला है जहाँ आपको ऑन‑द‑फ़्लाई HTML मार्कअप चाहिए। अगला कदम आप इमेजेज को Base64 में एम्बेड करना, `HtmlSaveOptions` को मिनिफिकेशन के लिए ट्यून करना, या स्ट्रिंग को Aspose.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/generate-jpg-and-png-images/_index.md b/html/hongkong/net/generate-jpg-and-png-images/_index.md index 33103bd04..e2a243712 100644 --- a/html/hongkong/net/generate-jpg-and-png-images/_index.md +++ b/html/hongkong/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML for .NET 提供了一種將 HTML 轉換為映像的簡單方法。 了解如何在使用 Aspose.HTML for .NET 將 DOCX 轉換為 PNG 或 JPG 時啟用抗鋸齒,以提升圖像品質。 ### [使用 Aspose.HTML 在 .NET 中將 docx 轉換為 png 並建立 zip 壓縮檔 C# 教學](./convert-docx-to-png-create-zip-archive-c-tutorial/) 學習如何使用 Aspose.HTML for .NET 將 docx 轉換為 png,並將圖像打包成 zip 壓縮檔的完整步驟。 +### [在 C# 中將 HTML 渲染為 PNG – 完整步驟指南](./render-html-to-png-in-c-complete-step-by-step-guide/) +本教學詳細說明如何使用 Aspose.HTML for .NET 在 C# 中將 HTML 轉換為 PNG 圖像,涵蓋所有設定與最佳化技巧。 ## 結論 diff --git a/html/hongkong/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/hongkong/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..e09f416d4 --- /dev/null +++ b/html/hongkong/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-03-28 +description: 學習如何在 C# 中使用 Aspose.HTML 將 HTML 渲染為 PNG。此指南亦說明如何將網頁轉換為圖像、將 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: zh-hant +og_description: 學習如何使用 Aspose.HTML 在 C# 中將 HTML 渲染為 PNG。跟隨此簡易教學,將網頁轉換為圖像、將 HTML 儲存為 + PNG,並匯出 HTML 為圖像。 +og_title: 在 C# 中將 HTML 轉換為 PNG – 完整逐步指南 +tags: +- C# +- Aspose.HTML +- Image Rendering +- .NET +title: 在 C# 中將 HTML 渲染為 PNG – 完整逐步指南 +url: /zh-hant/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 >}} + +# 在 C# 中將 HTML 轉換為 PNG – 完整逐步指南 + +需要快速 **render HTML to PNG** 嗎?在本教學中,我們將逐步說明如何使用 Aspose.HTML for .NET 將 HTML 轉換為 PNG。無論您是要建立縮圖服務、產生電子郵件預覽,或僅需 **convert a webpage to an image** 以供報告使用,以下步驟都能讓您輕鬆完成。 + +事實上,大多數開發者會先使用瀏覽器截圖工具,結果要處理 headless Chrome 的執行檔。雖然可行,但會增加不少負擔。使用 Aspose.HTML,您可以直接在程式碼中 **save HTML as PNG**,無需外部程序。完成本指南後,您將能 **export HTML as image**、將結果儲存至磁碟,甚至調整抗鋸齒或尺寸以符合 UI 需求。 + +## 您將學習 + +- 如何透過 NuGet 安裝 Aspose.HTML。 +- 設定 `ImageRenderingOptions` 以取得高品質輸出。 +- 載入線上頁面或本機 HTML 字串。 +- 將頁面渲染為 PNG 檔案。 +- 在 **saving webpage as PNG** 時常見的陷阱以及避免方法。 + +不需要任何 Aspose 的先前經驗;只要具備基本的 C#/.NET 環境與網路連線即可。 + +## 前置條件 + +- .NET 6.0 或更新版本(此程式碼可在 .NET Core、.NET Framework 4.6+ 以及 .NET 7 上執行)。 +- Visual Studio 2022(或您偏好的任何 IDE)。 +- 可存取 NuGet 以下載 `Aspose.HTML` 套件。 +- 一個您對其具有寫入權限的資料夾,用於儲存產生的 PNG。 + +> **Pro tip:** 如果您打算在伺服器上執行,請確保執行該程序的帳號對輸出目錄具有寫入權限;否則渲染步驟會靜默失敗。 + +## 步驟 1:安裝 Aspose.HTML + +首先,將 Aspose.HTML 函式庫加入您的專案。開啟 NuGet 套件管理員主控台並執行: + +```powershell +Install-Package Aspose.HTML +``` + +或者,若您偏好使用 UI,搜尋 **Aspose.HTML** 並點擊 **Install**。這會下載所有必要的 DLL,包括渲染引擎。 + +> **Why this matters:** Aspose.HTML 內部處理 HTML 解析、CSS 版面配置與影像光柵化,讓您不必啟動 headless 瀏覽器。它也是完全受管理的,意味著無需攜帶原生相依性。 + +## 步驟 2:設定 Image Rendering Options + +在渲染之前,先決定輸出尺寸與品質。`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 +}; +``` + +> **Why enable antialiasing?** 若未啟用,邊緣會顯得鋸齒狀,尤其在高 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 = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **Edge case:** 某些網站會阻擋非瀏覽器的使用者代理。若得到空白影像,請在請求中設定自訂 user‑agent 標頭,或先下載 HTML 再以字串方式傳入。 + +## 步驟 4:渲染為 PNG + +現在進入核心操作——呼叫 `RenderToFile`。提供您想儲存 PNG 的完整路徑。 + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +執行此行程式碼後,您會在指定的資料夾中看到 `output.png`。使用任何影像檢視器開啟以驗證結果。 + +> **What to expect:** PNG 會正好是 800 × 600 px,文字平滑、顏色與原始頁面相符。若來源頁面使用外部 CSS 或影像,Aspose.HTML 會自動下載這些資源(前提是可連線)。 + +## 步驟 5:驗證與使用結果 + +快速的完整性檢查可確保您取得的是影像而非空檔案。 + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +您現在可以 **save webpage as PNG** 以作存檔、將影像嵌入電子報,或輸入至需要光柵化頁面的機器學習管線。 + +## 可選:針對不同情境的調整 + +### 5.1 渲染完整頁面截圖 + +若您想要整個可捲動的頁面,而非僅視口大小的截圖,請將高度設為較大值或使用 `ImageRenderingOptions.PageHeight`: + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 更改影像格式 + +Aspose.HTML 支援 JPEG、BMP、GIF 與 TIFF。只要更換檔案副檔名,格式即會自動對應。 + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 處理需要驗證的頁面 + +對於需要登入的頁面,可使用 `HttpClient`(包含 Cookie 或 Bearer Token)取得 HTML,然後如前所示將字串傳入 `HTMLDocument`。如此即使頁面未公開,仍能 **convert webpage to image**。 + +## 完整可執行範例 + +以下是一個獨立的 Console 應用程式,將所有步驟整合。將其複製貼上至新的 .NET Console 專案並執行——它會下載 `https://example.com`、渲染並將 `output.png` 儲存於執行檔旁。 + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **Expected output:** 產生一個 `output.png` 檔案,尺寸 800 × 600 px,顯示 `example.com` 的首頁。使用任何影像檢視器開啟以確認視覺相符度。 + +## 常見問題與注意事項 + +- **Q: 這在 Linux 上可用嗎?** + 是的。Aspose.HTML 支援跨平台,只要安裝 .NET 執行環境即可。 + +- **Q: 我的頁面使用 JavaScript 注入內容——會顯示嗎?** + Aspose.HTML **不會**執行 JavaScript。對於動態頁面,您需要先預先渲染 HTML(例如使用 headless Chrome),再將靜態標記傳給渲染器。 + +- **Q: 圖片尺寸多大會導致記憶體問題?** + 渲染非常高的頁面(超過 10 k 像素)可能會佔用數百 MB 記憶體。若遇到 `OutOfMemoryException`,可考慮分段渲染再將 PNG 合併。 + +- **Q: 我可以嵌入伺服器未安裝的字型嗎?** + 可以。於 CSS 中加入 `@font-face` 規則或透過 `` 標籤載入字型檔;Aspose.HTML 會在光柵化時嵌入它們。 + +## 結論 + +您現在擁有一套穩固、可投入生產環境的 **render HTML to PNG** 方法。只要設定 `ImageRenderingOptions`、載入目標頁面,並呼叫 `RenderToFile`,即可 **convert webpage to image**、**save HTML as PNG**、**export HTML as image**,以及 **save webpage as PNG**,僅需幾行程式碼。 + +接下來的步驟?嘗試調整尺寸以取得高 DPI 截圖、實驗 JPEG 輸出以減少檔案大小,或將此邏輯整合至 ASP.NET API,按需回傳 PNG。可能性無窮,且因為解決方案完全受管理,您不必與外部瀏覽器或原生函式庫糾纏。 + +對影像渲染或其他 Aspose.HTML 功能有更多問題嗎?在下方留言,我們祝您編程愉快! + +![render html to png 範例](placeholder.png "render html to png 範例") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/hongkong/net/html-document-manipulation/_index.md b/html/hongkong/net/html-document-manipulation/_index.md index 3cbe22369..8c9edb13f 100644 --- a/html/hongkong/net/html-document-manipulation/_index.md +++ b/html/hongkong/net/html-document-manipulation/_index.md @@ -71,6 +71,8 @@ Aspose.HTML for .NET 因其簡單性和強大功能而脫穎而出。它使您 使用 Aspose.HTML for .NET 釋放 Web 開發的潛力。輕鬆建立、轉換和操作 HTML 文件。 ### [在 C# 中從字串建立 HTML – 自訂資源處理程式指南](./create-html-from-string-in-c-custom-resource-handler-guide/) 了解如何使用 Aspose.HTML for .NET 從字串建立 HTML,並透過自訂資源處理程式進行管理。 +### [如何建立 HTML – 附加元素與樣式文字](./how-to-create-html-append-elements-and-style-text/) +了解如何使用 Aspose.HTML for .NET 建立 HTML,動態添加元素並設定文字樣式的步驟指南。 ## 結論 diff --git a/html/hongkong/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/hongkong/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..e7a208bb7 --- /dev/null +++ b/html/hongkong/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,224 @@ +--- +category: general +date: 2026-03-28 +description: 如何在 C# 中以程式方式建立 HTML。學習將元素加入 body、建立段落元素、加入粗斜體文字,以及以程式方式加入 CSS 樣式。 +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: zh-hant +og_description: 如何在 C# 中以程式方式建立 HTML。本指南將示範如何將元素附加至 body、建立段落元素、加入粗斜體文字,以及以程式方式加入 + CSS 樣式。 +og_title: 如何建立 HTML – 追加元素與設定文字樣式 +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: 如何建立 HTML – 附加元素與樣式文字 +url: /zh-hant/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何建立 HTML – 附加元素與樣式文字 + +有沒有想過 **如何從 C# 建立 HTML**,卻不想使用字串建構器?你並不是唯一有此需求的人。在許多網頁自動化或電子郵件產生的情境下,你需要一種乾淨、基於 DOM 的方式,讓你能將元素附加到 body、設定樣式,且保持型別安全。 + +在本教學中,我們將一步步說明 **如何建立 HTML**,使用 Aspose.HTML,涵蓋從建立段落元素、加入粗斜體文字,到以程式方式加入 CSS 樣式的全部流程。完成後,你將得到一個可直接注入瀏覽器、電子郵件或 PDF 轉換器的 HTML 字串。 + +## 你需要的環境 + +- **.NET 6+**(任何近期版本皆可;API 在 .NET Framework 上也相容) +- **Aspose.HTML for .NET** NuGet 套件 – `Install-Package Aspose.HTML` +- 基本的 C# 語法概念 – 不需要特別進階的知識 + +不需要額外的設定檔,也不需要外部模板引擎。只要純粹的 C# 程式碼操作 DOM 即可。 + +![how to create html example](/images/how-to-create-html.png "螢幕截圖顯示產生的 HTML 結構 – 如何建立 HTML") + +## 步驟 1:設定專案並匯入命名空間 + +首先,建立一個 console 應用程式(或任何 .NET 專案),並加入 Aspose.HTML 參考。接著引入我們將會使用的命名空間。 + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **小技巧:** 若你只需要進行 DOM 操作,可以省略 `Aspose.Html.Rendering` 命名空間——它僅在將文件渲染成影像或 PDF 時才需要。 + +## 步驟 2:以程式方式定義 CSS 樣式 + +當你 **以程式方式加入 css 樣式** 時,便能完整掌控字型、大小,甚至像粗體 + 斜體這樣的組合樣式。以下示範如何建立樣式物件。 + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +為什麼使用 `WebFontStyle.Bold | WebFontStyle.Italic` 而不是兩個獨立的屬性?API 將字型樣式視為旗標列舉,合併後會產生等同於手寫 CSS `font-weight: bold; font-style: italic;` 的效果。 + +## 步驟 3:建立新的 HTML 文件 + +現在我們真的 **如何建立 HTML**——文件物件就是我們的畫布。把它想成一張可以自由繪製的空白頁。 + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +此時文件已包含標準的 ``、`` 與 `` 標籤。你可以檢視 `htmlDoc.Body`,看到一個空的 `` 元素,已準備好接受子節點。 + +## 步驟 4:建立段落元素並加入粗斜體文字 + +這裡正是 **create paragraph element** 發揮作用的地方。我們會產生 `

` 標籤、套用先前建立的樣式,並設定文字內容。 + +```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。 + +![create pdf document c# example](/images/create-pdf-csharp.png) + +## 常見問題 (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` 的像素完美快照,樣式與圖片皆完整保留。 + +![Render HTML to PDF example](render-html-to-pdf.png "將 HTML 轉為 PDF 範例") +*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 = "

Hello, world!

"; +``` + +為什麼從字串開始?因為許多 API(電子郵件服務、PDF 產生器、Web‑view 控制項)直接接受 HTML 標記。使用字串能讓工作流程保持輕量且易於測試。 + +--- + +## 步驟 2:以字串初始化 HTMLDocument + +Aspose.Html 的 `HTMLDocument` 類別可以從字串、URL 或串流讀取標記。這裡我們將 `rawHtml` 傳入它。 + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +此時文件完全存在於記憶體中。沒有產生任何檔案,你可以像在瀏覽器中一樣操作 DOM。 + +--- + +## 步驟 3:建立自訂資源處理程式以擷取輸出 + +一個 **自訂資源處理程式** 讓你能控制文件的每個部分(HTML、圖片、CSS)最終存放的位置。在本例中我們只關心主要的 HTML,因此會將所有內容寫入 `MemoryStream`。 + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**為什麼要使用自訂處理程式?** 預設的 `Save` 方法會寫入檔案路徑,這會違背記憶體內工作流程的目的。透過覆寫 `HandleResource`,我們可以攔截每個資源請求,並自行決定其去向。這就是 **如何在不觸及磁碟的情況下擷取 HTML** 的核心。 + +--- + +## 步驟 4:使用處理程式儲存文件 + +現在我們告訴 Aspose.Html 將 `HTMLDocument` 序列化到我們的 `MyMemoryHandler`。`SaveOptions` 物件可以保持空白以使用預設的 HTML 輸出,但若需要也可以調整編碼、格式化等設定。 + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +當執行 `Save` 時,會呼叫 `HandleResource`,主要的 HTML 會寫入 `memoryHandler.HtmlStream`,而任何附屬檔案(圖片、CSS)也會得到各自的串流——不過在這個簡單範例中我們並未加入任何附屬檔案。 + +--- + +## 步驟 5:將擷取的串流轉回字串 + +HTML 已經存在於 `MemoryStream` 中。要 **將 HTML 轉換為字串**,只要把串流倒回開頭,然後使用 `StreamReader` 讀取即可。 + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +`resultHtml` 現在包含了 Aspose.Html 產生的完整標記。你可以將它傳送到網路、嵌入電子郵件,或傳給其他函式庫使用。 + +--- + +## 步驟 6:驗證輸出 – 你應該看到什麼? + +讓我們把結果印到主控台,讓你確認一切正常運作。 + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**預期輸出** + +```html + +

Hello, world!

+``` + +請注意 `` 標籤是由 Aspose.Html 自動加入的。這也是我們偏好使用函式庫而非手動字串串接的原因之一——它會為你正規化標記。 + +--- + +## 完整、可執行範例 + +以下是完整的程式碼,你可以直接貼到 Console 應用程式中立即執行。所有部件已完整整合,無需猜測缺少的 `using` 陳述式或隱藏相依性。 + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +複製貼上,按下 **F5**,即可在主控台看到格式化的 HTML。 + +--- + +## 常見問題與邊緣案例 + +### 如果需要擷取圖片或 CSS 檔案呢? + +`MyMemoryHandler` 已經會為每個資源建立新的 `MemoryStream`。你可以擴充它,將這些串流以 `info.Uri` 為鍵存入字典。之後就能例如將圖片以 Base64 字串嵌入。 + +### 我可以更改輸出的編碼嗎? + +可以。傳入設定了 `Encoding` 屬性的 `Saving.HtmlSaveOptions`: + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### 這在大型文件上可行嗎? + +`MemoryStream` 會動態成長,但對於上百 MB 的巨型頁面需留意記憶體使用量。在此情況下,你可能會直接串流至檔案或網路 socket。 + +### 如何在單行程式碼中 **將 HTML 寫入串流**? + +如果不需要自訂處理程式,你可以直接使用 `htmlDocument.Save(Stream, SaveOptions)`: + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +這是一個簡潔的替代方案,但會失去攔截附屬資源的能力。 + +--- + +## 專業技巧與常見陷阱 + +* **專業技巧:** 在讀取 `MemoryStream` 前務必將 `Position` 重設為 `0`。忘記此步會得到空字串。 +* **注意:** 傳入 `null` 的 `SaveOptions`——Aspose.Html 會使用預設值,但明確設定選項能讓意圖更清晰。 +* **常見錯誤:** 以為 `HtmlStream` 在 `Save` 完成前已填充。該串流僅在 `Save` 呼叫返回後才可使用。 +* **效能說明:** 若需重複轉換,請重複使用同一個 `MyMemoryHandler` 實例,並在每次執行後清除其串流,以避免額外的配置。 + +--- + +## 結論 + +我們已示範如何在 C# 中 **從字串建立 HTML**,使用 **自訂資源處理程式** 擷取結果,並 **將 HTML 寫入串流** 以供後續處理。透過將記憶體串流轉回字串,你也得到了一種可靠的 **將 HTML 轉換為字串** 方法,且不需觸及檔案系統。 + +此模式足夠彈性,可用於電子郵件範本、PDF 產生,或任何需要即時取得 HTML 標記的情境。接下來,你可以探索將圖片以 Base64 方式嵌入、調整 `HtmlSaveOptions` 以進行最小化,或將字串傳入 Aspose.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/hungarian/net/generate-jpg-and-png-images/_index.md b/html/hungarian/net/generate-jpg-and-png-images/_index.md index dc2c2b0ac..6e1454ae0 100644 --- a/html/hungarian/net/generate-jpg-and-png-images/_index.md +++ b/html/hungarian/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Tanulja meg az Aspose.HTML for .NET használatát HTML-dokumentumok kezeléséhe Ismerje meg, hogyan állíthatja be az antialiasingot a DOCX dokumentumok PNG vagy JPG képekké konvertálásakor az Aspose.HTML for .NET használatával. ### [docx konvertálása png-re – zip archívum létrehozása C# oktatóanyag](./convert-docx-to-png-create-zip-archive-c-tutorial/) Ismerje meg, hogyan konvertálhat docx fájlokat png képekké, majd csomagolhatja őket zip archívumba C#-ban az Aspose.HTML segítségével. +### [HTML renderelése PNG-be C#‑ban – Teljes lépésről‑lépésre útmutató](./render-html-to-png-in-c-complete-step-by-step-guide/) +Ismerje meg, hogyan konvertálhat HTML-t PNG képpé C#‑ban az Aspose.HTML for .NET segítségével, részletes útmutatóval. ## Következtetés diff --git a/html/hungarian/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/hungarian/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..c8080c19e --- /dev/null +++ b/html/hungarian/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-28 +description: Tanulja meg, hogyan lehet HTML-t PNG-re renderelni C#-ban az Aspose.HTML + segítségével. Ez az útmutató azt is bemutatja, hogyan lehet weboldalt képpé konvertálni, + HTML-t PNG-ként menteni, HTML-t képként exportálni, és weboldalt PNG-ként menteni. +draft: false +keywords: +- render html to png +- convert webpage to image +- save html as png +- export html as image +- save webpage as png +language: hu +og_description: Ismerje meg, hogyan lehet HTML-t PNG-re renderelni C#-ban az Aspose.HTML + segítségével. Kövesse ezt az egyszerű útmutatót, hogy weboldalt képpé konvertáljon, + HTML-t PNG-ként mentse, és HTML-t képként exportálja. +og_title: HTML renderelése PNG-re C#-ban – Teljes lépésről‑lépésre útmutató +tags: +- C# +- Aspose.HTML +- Image Rendering +- .NET +title: HTML renderelése PNG-re C#-ban – Teljes lépésről‑lépésre útmutató +url: /hu/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 renderelése PNG-re C#-ban – Teljes lépésről‑lépésre útmutató + +Gyorsan **renderelni szeretnél HTML-t PNG-re**? Ebben az útmutatóban pontosan végigvezetünk, hogyan renderelj HTML-t PNG-re az Aspose.HTML .NET könyvtár segítségével. Akár egy bélyegkép‑szolgáltatást építesz, e‑mail előnézeteket generálsz, vagy egyszerűen csak **weboldalt kell képpé konvertálni** jelentésekhez, az alábbi lépések minimális fáradsággal eljuttatnak a célhoz. + +A lényeg: a legtöbb fejlesztő egy böngésző‑képernyőkép eszközhöz nyúl, és végül a headless Chrome binárisokkal küzd. Ez működik, de sok plusz terhet jelent. Az Aspose.HTML‑vel **HTML-t menthetsz PNG‑ként** közvetlenül a kódból, külső folyamat nélkül. Az útmutató végére képes leszel **HTML-t képként exportálni**, az eredményt lemezre menteni, sőt akár az antialiasingot vagy a méreteket is finomhangolni a felhasználói felülethez. + +## Mit fogsz megtanulni + +- Hogyan telepítsd az Aspose.HTML‑t a NuGet‑en keresztül. +- `ImageRenderingOptions` beállítása a magas minőségű kimenethez. +- Online oldal vagy helyi HTML‑string betöltése. +- Az oldal PNG fájlba renderelése. +- Gyakori buktatók **weboldal PNG‑ként mentése** esetén és hogyan kerüld el őket. + +Nincs szükség előzetes Aspose tapasztalatra; elegendő egy alap C#/.NET környezet és internetkapcsolat. + +## Előfeltételek + +- .NET 6.0 vagy újabb (a kód működik .NET Core‑on, .NET Framework 4.6+-on és .NET 7‑en is). +- Visual Studio 2022 (vagy bármely kedvenc IDE). +- Hozzáférés a NuGet‑hez a `Aspose.HTML` csomag letöltéséhez. +- Egy mappa, ahol írási jogosultsággal rendelkezel a generált PNG számára. + +> **Pro tipp:** Ha szerveren szeretnéd futtatni, győződj meg róla, hogy a folyamatot futtató fiók írni tud a kimeneti könyvtárba; ellenkező esetben a renderelés lépése csendben hibázik. + +## 1. lépés: Aspose.HTML telepítése + +Először add hozzá az Aspose.HTML könyvtárat a projekthez. Nyisd meg a NuGet Package Manager Console‑t és futtasd: + +```powershell +Install-Package Aspose.HTML +``` + +Vagy ha inkább a UI‑t használod, keresd meg a **Aspose.HTML**‑t és kattints a **Install** gombra. Ez letölti az összes szükséges DLL‑t, beleértve a renderelő motort. + +> **Miért fontos:** Az Aspose.HTML belsőleg kezeli a HTML elemzést, a CSS elrendezést és a kép rasterizálást, így nem kell headless böngészőt indítanod. Emellett teljesen menedzselt, ami azt jelenti, hogy nincsenek natív függőségek a szállításhoz. + +## 2. lépés: Kép renderelési beállítások konfigurálása + +Mielőtt renderelnél, döntsd el a kimeneti méretet és minőséget. A `ImageRenderingOptions` osztály finomhangolt vezérlést biztosít. + +```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 +}; +``` + +> **Miért engedélyezd az antialiasingot?** Nélküle a szélek szaggatottnak tűnhetnek, ami különösen észrevehető a nagy DPI‑s képernyőkön. Bekapcsolása kis teljesítményköltséggel jár, de sokkal tisztább PNG‑t eredményez. + +## 3. lépés: HTML tartalom betöltése + +Renderelhetsz egy távoli URL‑t, egy helyi fájlt, vagy akár egy nyers HTML‑stringet is. Ebben a példában egy élő oldalt töltünk le. + +```csharp +// Step 3: Load the HTML document from a URL +var htmlDoc = new HTMLDocument("https://example.com"); +``` + +Ha a HTML egy stringben van tárolva, használd azt a metódus‑túlterhelést, amely `MemoryStream`‑et fogad: + +```csharp +string rawHtml = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **Különleges eset:** Egyes oldalak blokkolják a nem böngésző felhasználói ügynököket. Ha üres képet kapsz, állíts be egy egyedi user‑agent fejlécet a kérésben, vagy először töltsd le a HTML‑t, majd add át stringként. + +## 4. lépés: Renderelés PNG‑be + +Most a fő művelet – a `RenderToFile` meghívása. Add meg a teljes elérési utat, ahová a PNG‑t menteni szeretnéd. + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +A sor végrehajtása után megtalálod az `output.png` fájlt a megadott mappában. Nyisd meg bármely képnézegetővel a végeredmény ellenőrzéséhez. + +> **Mire számíthatsz:** A PNG pontosan 800 × 600 px lesz, sima szöveggel és a forrásoldal színeivel megegyező színekkel. Ha a forrásoldal külső CSS‑t vagy képeket használ, az Aspose.HTML automatikusan letölti ezeket az erőforrásokat, amennyiben elérhetők. + +## 5. lépés: Az eredmény ellenőrzése és felhasználása + +Egy gyors ellenőrzés biztosítja, hogy valóban képet kaptál, és nem egy üres fájlt. + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +Most már **weboldalt menthetsz PNG‑ként** archiválásra, beágyazhatod a képet e‑mail hírlevelekbe, vagy betáplálhatod egy gépi tanulási folyamatba, amely rasterizált oldalakat vár. + +## Opcionális: Finomhangolás különböző helyzetekhez + +### 5.1 Teljes oldal képernyőkép renderelése + +Ha a teljes görgethető oldalt szeretnéd, nem csak a viewport méretű szeletet, állítsd a magasságot nagyobb értékre vagy használd a `ImageRenderingOptions.PageHeight`‑t: + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 Képformátum módosítása + +Az Aspose.HTML támogatja a JPEG, BMP, GIF és TIFF formátumokat. Cseréld ki a fájl kiterjesztését, és a formátum automatikusan követi: + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 Hitelesítéssel védett oldalak kezelése + +Bejelentkezést igénylő oldalak esetén a HTML‑t `HttpClient`‑tel (beleértve a cookie‑kat vagy bearer tokeneket) töltsd le, majd add át a stringet a `HTMLDocument`‑nek, ahogy korábban mutattuk. Így még akkor is **weboldalt képpé konvertálhatsz**, ha az oldal nem nyilvánosan elérhető. + +## Teljes működő példa + +Az alábbi önálló konzolalkalmazás mindent egy helyre gyűjt. Másold be egy új .NET konzolprojektbe és futtasd – letölti a `https://example.com` oldalt, rendereli, és az `output.png` fájlt az exe mellé menti. + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **Várható kimenet:** Egy `output.png` fájl, 800 × 600 px méretben, amely a `example.com` kezdőoldalát mutatja. Nyisd meg bármely képnézegetővel a vizuális hűség ellenőrzéséhez. + +## Gyakori kérdések és buktatók + +- **K: Működik ez Linuxon?** + Igen. Az Aspose.HTML platformfüggetlen; csak győződj meg róla, hogy a .NET runtime telepítve van. + +- **K: Az oldalam JavaScript‑et használ a tartalom betöltésére – megjelenik?** + Az Aspose.HTML **nem** hajtja végre a JavaScript‑et. Dinamikus oldalak esetén előre kell renderelned a HTML‑t (pl. headless Chrome‑val), majd a statikus markup‑ot adni a renderelőnek. + +- **K: Mekkora lehet a kép, mielőtt a memória problémát okozna?** + Nagyon magas oldalak (10 k+ pixel) renderelése több száz megabájt RAM‑ot fogyaszthat. Ha `OutOfMemoryException`-t kapsz, fontold meg a képet szegmensekben renderelni és a PNG‑ket összeilleszteni. + +- **K: Be tudok ágyazni olyan betűtípusokat, amelyek nincsenek telepítve a szerveren?** + Igen. Helyezz `@font-face` szabályokat a CSS‑be vagy töltsd be a betűtípus fájlokat `` taggel; az Aspose.HTML a rasterizálás során beágyazza őket. + +## Összegzés + +Most már egy stabil, termelés‑kész módszered van a **HTML PNG‑re renderelésére** C#‑ban. Az `ImageRenderingOptions` konfigurálásával, a céloldal betöltésével és a `RenderToFile` meghívásával **weboldalt képpé konvertálhatsz**, **HTML‑t PNG‑ként menthetsz**, **HTML‑t képként exportálhatsz**, és **weboldalt PNG‑ként menthetsz** néhány kódsorral. + +Következő lépések? Próbáld megállapítani a méreteket nagy DPI‑s képernyőképekhez, kísérletezz JPEG kimenettel a kisebb fájlméretekért, vagy integráld ezt a logikát egy ASP.NET API‑ba, amely igény szerint PNG‑ket ad vissza. A lehetőségek végtelenek, és mivel a megoldás teljesen menedzselt, nem kell külső böngészőkkel vagy natív könyvtárakkal bajlódni. + +További kérdéseid vannak a kép renderelésről vagy más Aspose.HTML funkciókról? Írj egy megjegyzést alább, és jó kódolást! + +![HTML PNG-re renderelés példája](placeholder.png "HTML PNG-re renderelés") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/hungarian/net/html-document-manipulation/_index.md b/html/hungarian/net/html-document-manipulation/_index.md index 4f88cba20..8f3e147ab 100644 --- a/html/hungarian/net/html-document-manipulation/_index.md +++ b/html/hungarian/net/html-document-manipulation/_index.md @@ -71,6 +71,8 @@ Tanulja meg az Aspose.HTML használatát .NET-hez. Importáljon névteret, egyes Használja ki a webfejlesztésben rejlő lehetőségeket az Aspose.HTML for .NET segítségével. Könnyen hozhat létre, konvertálhat és kezelhet HTML dokumentumokat. ### [HTML létrehozása karakterláncból C#-ban – Egyéni erőforráskezelő útmutató](./create-html-from-string-in-c-custom-resource-handler-guide/) Ismerje meg, hogyan hozhat létre HTML-t karakterláncból C#-ban egy egyéni erőforráskezelő segítségével. +### [HTML létrehozása – Elemek hozzáadása és a szöveg stílusozása](./how-to-create-html-append-elements-and-style-text/) +Ismerje meg, hogyan hozhat létre HTML-t, elemeket adhat hozzá, és formázhatja a szöveget C#-ban az Aspose.HTML segítségével. ## Következtetés diff --git a/html/hungarian/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/hungarian/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..d20c84fd3 --- /dev/null +++ b/html/hungarian/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-28 +description: Hogyan hozhatunk létre HTML-t programozottan C#-ban. Tanulja meg, hogyan + fűzhetünk elemet a body-hoz, hogyan hozhatunk létre bekezdés elemet, hogyan adhatunk + hozzá félkövér dőlt szöveget, és hogyan adhatunk programozottan CSS‑stílust. +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: hu +og_description: Hogyan hozhatunk létre HTML-t programozott módon C#-ban. Ez az útmutató + megmutatja, hogyan lehet elemet hozzáfűzni a body-hoz, bekezdés elemet létrehozni, + félkövér dőlt szöveget hozzáadni, és CSS-stílust programozott módon beilleszteni. +og_title: HTML létrehozása – Elemek hozzáfűzése és szöveg stílusozása +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: Hogyan készítsünk HTML-t – Elemek hozzáadása és a szöveg formázása +url: /hu/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan hozhatunk létre HTML‑t – Elemek hozzáadása és szöveg formázása + +Gondolkodtál már azon, **hogyan hozhatsz létre HTML‑t** C#‑ból anélkül, hogy string builderbe kellene nyúlni? Nem vagy egyedül. Sok web‑automatizálási vagy e‑mail‑generálási helyzetben tiszta, DOM‑alapú megközelítésre van szükség, amely lehetővé teszi, hogy elemet adjunk a body‑hoz, formázzuk, és mindezt típus‑biztonságosan tegyük. + +Ebben az útmutatóban lépésről‑lépésre végigvezetünk a **hogyan hozhatsz létre HTML‑t** használva az Aspose.HTML‑t, a bekezdés elem létrehozásától a félkövér‑dőlt szöveg hozzáadásáig és a CSS‑stílus programozott beállításáig. A végére egy használatra kész HTML‑stringet kapsz, amelyet beilleszthetsz egy böngészőbe, e‑mailbe vagy PDF‑konverterbe. + +## Amire szükséged lesz + +- **.NET 6+** (bármely friss verzió megfelelő; az API stabil a .NET Framework‑ön is) +- **Aspose.HTML for .NET** NuGet csomag – `Install-Package Aspose.HTML` +- Alapvető C# szintaxis ismeret – semmi különleges nem kell + +Nincs szükség extra konfigurációs fájlokra, külső sablonmotorokra. Csak tiszta C# kód, amely a DOM‑ot manipulálja. + +![hogyan hozhatsz létre html példát](/images/how-to-create-html.png "Képernyőkép, amely a generált HTML struktúrát mutatja – hogyan hozhatsz létre html") + +## 1. lépés: A projekt beállítása és névterek importálása + +Először is hozz létre egy konzolos alkalmazást (vagy bármilyen .NET projektet), és add hozzá az Aspose.HTML hivatkozást. Ezután importáld a szükséges névtereket. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **Pro tipp:** Ha csak DOM‑manipulációra van szükséged, elhagyhatod a `Aspose.Html.Rendering` névteret – ez csak akkor szükséges, ha a dokumentumot képre vagy PDF‑re rendereled. + +## 2. lépés: CSS‑stílus programozott definiálása + +Amikor **css stílust adsz programozottan**, teljes kontrollt kapsz a betűcsaládok, méretek és akár a kombinált betűstílus‑jelzők (pl. félkövér + dőlt) felett. Íme, hogyan hozhatod létre ezt a stílusobjektumot. + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +Miért használjuk a `WebFontStyle.Bold | WebFontStyle.Italic`‑t két külön tulajdonság helyett? Az API a betűstílust zászló‑enumerációként kezeli, így a kombinálás pontosan a kézzel írt CSS `font-weight: bold; font-style: italic;`-et eredményezi. + +## 3. lépés: Új HTML‑dokumentum létrehozása + +Most már **hogyan hozhatsz létre HTML‑t** – a dokumentumobjektum a vászonunkként működik. Gondolj rá úgy, mint egy üres oldalra, amelyre rajzolhatsz. + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +Ekkor a dokumentum már tartalmazza a szabványos ``, `` és `` elemeket. A `htmlDoc.Body` vizsgálatával láthatod az üres `` elemet, amely készen áll a gyermekek fogadására. + +## 4. lépés: Bekezdés elem létrehozása és félkövér‑dőlt szöveg hozzáadása + +Itt jön a **create paragraph element** kulcsszó ereje. Létrehozunk egy `

` 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 `

` vagy `` elemet a `htmlDoc.CreateElement("div")` hívással. Ugyanez a `SetAttribute` minta működik. + +- **Több csomópont hozzáadása:** Iterálj egy karakterlánc‑gyűjteményen, hozz létre egy bekezdést minden elemhez, és add hozzá a body‑hoz. Ha a stílus azonos, újrahasználhatod ugyanazt a `CSSStyleDeclaration`‑t – nem kell újat létrehozni. + +- **Kódolási kérdések:** A `TextContent` automatikusan HTML‑kódolja a speciális karaktereket (`&`, `<`, `>`). Ha nyers HTML‑t szeretnél, használd az `InnerHtml`‑t, de légy óvatos a befecskendezési támadásokkal szemben. + +## Teljes működő példa + +Az alábbi kódrészlet egy komplett, másolás‑beillesztés‑kész programot mutat, amely a teljes folyamatot demonstrálja az elejétől a végéig. + +```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); + } +} +``` + +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. + +![create pdf document c# example](/images/create-pdf-csharp.png) + +## 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. + +![Render HTML to PDF example](render-html-to-pdf.png "render html to pdf") + +*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 = "

Hello, world!

"; +``` + +Miért kezdjünk egy karakterlánccal? Mert számos API (e‑mail szolgáltatások, PDF generátorok, web‑view vezérlők) közvetlenül fogadja a HTML jelölőt. Egy karakterlánc használata könnyűvé és tesztelhetővé teszi a munkafolyamatot. + +--- + +## 2. lépés: HTMLDocument inicializálása a karakterlánccal + +Az Aspose.Html `HTMLDocument` osztálya képes jelölőt olvasni karakterláncból, URL‑ből vagy folyamkból. Itt a `rawHtml`‑t adja át neki. + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +Ebben a pontban a dokumentum teljesen a memóriában él. Nem jön létre fájl, és a DOM‑ot úgy manipulálhatod, mint egy böngészőben. + +--- + +## 3. lépés: Custom resource handler létrehozása a kimenet rögzítéséhez + +Egy **custom resource handler** lehetővé teszi, hogy irányítsd, hová kerül a dokumentum egyes részei (HTML, képek, CSS). Ebben az esetben csak a fő HTML érdekel, ezért mindent egy `MemoryStream`‑be írunk. + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**Miért egy egyedi kezelő?** Az alapértelmezett `Save` metódus fájlútvonalra ír, ami aláássa az in‑memory munkafolyamat célját. A `HandleResource` felülírásával minden erőforráskérést elkapunk, és pontosan meghatározzuk, hová kerül. Ez a **how to capture HTML** lényege a lemez érintése nélkül. + +--- + +## 4. lépés: Dokumentum mentése a kezelő segítségével + +Most azt mondjuk az Aspose.Html‑nek, hogy sorosítsa a `HTMLDocument`‑et a `MyMemoryHandler`‑be. A `SaveOptions` objektum maradhat üres az alapértelmezett HTML kimenethez, de szükség esetén módosíthatod a kódolást, a pretty‑print‑et stb. + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +Amikor a `Save` lefut, a `HandleResource` meghívódik, a fő HTML a `memoryHandler.HtmlStream`‑be kerül, és minden mellékfájl (képek, CSS) saját streamet kap – bár ebben az egyszerű példában nem adtunk hozzá egyet sem. + +--- + +## 5. lépés: A rögzített stream visszakonvertálása karakterlánccá + +A HTML egy `MemoryStream`‑ben van. A **convert HTML to string** elvégzéséhez egyszerűen visszatekerjük a streamet, és egy `StreamReader`‑rel olvassuk. + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +`resultHtml` most már tartalmazza az Aspose.Html által előállított pontos jelölőt. Küldheted a hálózaton, beágyazhatod egy e‑mailbe, vagy átadhatod egy másik könyvtárnak. + +--- + +## 6. lépés: Kimenet ellenőrzése – mit kell látnod? + +Nyomtassuk ki a végeredményt a konzolra, hogy megbizonyosodj a sikeres működésről. + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**Expected output** + +```html + +

Hello, world!

+``` + +Vedd észre, hogy a `` címke automatikusan hozzáadódik az Aspose.Html által. Ez az egyik oka annak, hogy egy könyvtárat részesítünk előnyben a kézi karakterlánc-összefűzés helyett – normalizálja a jelölőt számodra. + +--- + +## Teljes, futtatható példa + +Az alábbiakban a teljes program található, amelyet beilleszthetsz egy konzolos alkalmazásba és azonnal futtathatsz. Minden rész együtt van, így nincs találgatás hiányzó `using` utasítások vagy rejtett függőségek kapcsán. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +Másold be, nyomd meg a **F5**‑öt, és a formázott HTML-t a konzolon fogod látni. + +--- + +## Gyakori kérdések és szélhelyzetek + +### Mi van, ha képeket vagy CSS fájlokat kell rögzítenem? + +A `MyMemoryHandler` már létrehoz egy új `MemoryStream`‑et minden erőforráshoz. Kiterjesztheted, hogy ezeket a streameket egy `info.Uri` kulcsú szótárban tárold. Ezután például a képeket Base64 karakterláncokként ágyazhatod be később. + +### Módosíthatom a kimenet kódolását? + +Igen. Adj át egy `Saving.HtmlSaveOptions`‑t, amelynek az `Encoding` tulajdonsága be van állítva: + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### Működik ez nagy dokumentumokkal is? + +`MemoryStream` dinamikusan növekszik, de figyelj a memóriahasználatra hatalmas oldalak (százak MB) esetén. Ilyen esetekben közvetlenül fájlba vagy hálózati socketbe is streamelhetsz. + +### Hogyan **write HTML to stream** egyetlen sorban? + +Ha nincs szükséged egyedi kezelőre, használhatod közvetlenül a `htmlDocument.Save(Stream, SaveOptions)`‑t: + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +Ez egy kompakt alternatíva, bár elveszíted a lehetőséget a mellékforrások elkapására. + +--- + +## Pro tippek és buktatók + +* **Pro tip:** Mindig állítsd a `Position`‑t `0`‑ra, mielőtt olvasnád a `MemoryStream`‑et. Ennek elhagyása üres karakterláncot eredményez. +* **Watch out for:** `null` `SaveOptions` átadása – az Aspose.Html az alapértelmezéseket használja, de a kifejezett beállítások egyértelművé teszik a szándékodat. +* **Typical mistake:** Feltételezni, hogy a `HtmlStream` már feltöltődött a `Save` befejezése előtt. A stream csak a `Save` hívás visszatérése után érhető el. +* **Performance note:** Ismétlődő konverziók esetén használd újra ugyanazt a `MyMemoryHandler` példányt, és töröld a streamjeit a futások között, hogy elkerüld a felesleges allokációkat. + +## Összegzés + +Bemutattuk, hogyan **create HTML from string** C#‑ban, rögzítsük az eredményt egy **custom resource handler**‑rel, és **write HTML to stream**-et használjunk a további feldolgozáshoz. Az in‑memory stream visszakonvertálásával karakterlánccá egy megbízható módszert kapsz a **convert HTML to string**‑re a fájlrendszer érintése nélkül. Ez a minta elég rugalmas e‑mail sablonokhoz, PDF generáláshoz, vagy bármely olyan helyzethez, ahol a HTML jelölőre azonnal szükség van. Legközelebb felfedezheted a képek Base64‑ként való beágyazását, a `HtmlSaveOptions` finomhangolását a minifikációhoz, vagy a karakterlánc átadását az Aspose.PDF‑nek PDF konverzióhoz. + +További kérdéseid vannak az erőforrások kezelésével, kódolással vagy teljesítménnyel kapcsolatban? Hagyj egy megjegyzést alább – 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/indonesian/net/generate-jpg-and-png-images/_index.md b/html/indonesian/net/generate-jpg-and-png-images/_index.md index 4e885ce32..9c03afc89 100644 --- a/html/indonesian/net/generate-jpg-and-png-images/_index.md +++ b/html/indonesian/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Pelajari cara menggunakan Aspose.HTML untuk .NET guna memanipulasi dokumen HTML, Pelajari cara mengaktifkan antialiasing untuk meningkatkan kualitas gambar PNG atau JPG saat mengonversi dokumen DOCX menggunakan Aspose.HTML. ### [Konversi DOCX ke PNG – Membuat Arsip ZIP dengan C# Tutorial](./convert-docx-to-png-create-zip-archive-c-tutorial/) Pelajari cara mengonversi file DOCX menjadi PNG dan mengemasnya ke dalam arsip ZIP menggunakan C# dengan Aspose.HTML. +### [Render HTML ke PNG dalam C# – Panduan Lengkap Langkah-demi-Langkah](./render-html-to-png-in-c-complete-step-by-step-guide/) +Pelajari cara merender HTML menjadi gambar PNG menggunakan C# dengan panduan langkah demi langkah lengkap. ## Kesimpulan diff --git a/html/indonesian/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/indonesian/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..d12620116 --- /dev/null +++ b/html/indonesian/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-28 +description: Pelajari cara merender HTML ke PNG dalam C# dengan Aspose.HTML. Panduan + ini juga mencakup cara mengonversi halaman web menjadi gambar, menyimpan HTML sebagai + PNG, mengekspor HTML sebagai gambar, dan menyimpan halaman web sebagai 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: id +og_description: Pelajari cara merender HTML ke PNG dalam C# dengan Aspose.HTML. Ikuti + tutorial mudah ini untuk mengonversi halaman web menjadi gambar, menyimpan HTML + sebagai PNG, dan mengekspor HTML sebagai gambar. +og_title: Render HTML ke PNG di C# – Panduan Lengkap Langkah demi Langkah +tags: +- C# +- Aspose.HTML +- Image Rendering +- .NET +title: Render HTML ke PNG di C# – Panduan Lengkap Langkah demi Langkah +url: /id/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 >}} + +# Render HTML ke PNG di C# – Panduan Lengkap Langkah‑per‑Langkah + +Butuh **render HTML ke PNG** dengan cepat? Dalam tutorial ini kami akan memandu Anda langkah demi langkah cara merender HTML ke PNG menggunakan library Aspose.HTML untuk .NET. Baik Anda sedang membangun layanan thumbnail, menghasilkan pratinjau email, atau hanya perlu **mengonversi halaman web menjadi gambar** untuk pelaporan, langkah‑langkah di bawah ini akan membantu Anda mencapainya dengan sedikit usaha. + +Berikut faktanya—kebanyakan pengembang langsung menggunakan alat screenshot browser dan berakhir harus mengelola binary Chrome headless. Itu memang berfungsi, tetapi menambah banyak overhead. Dengan Aspose.HTML Anda dapat **menyimpan HTML sebagai PNG** langsung dari kode, tanpa proses eksternal. Pada akhir panduan ini Anda akan dapat **mengekspor HTML sebagai gambar**, menyimpan hasilnya ke disk, dan bahkan menyesuaikan antialiasing atau dimensi sesuai UI Anda. + +## Apa yang Akan Anda Pelajari + +- Cara menginstal Aspose.HTML via NuGet. +- Menyiapkan `ImageRenderingOptions` untuk output berkualitas tinggi. +- Memuat halaman online atau string HTML lokal. +- Merender halaman ke file PNG. +- Jebakan umum saat **menyimpan halaman web sebagai PNG** dan cara menghindarinya. + +Tidak diperlukan pengalaman sebelumnya dengan Aspose; cukup dengan setup dasar C#/.NET dan koneksi internet. + +## Prasyarat + +- .NET 6.0 atau lebih baru (kode ini bekerja di .NET Core, .NET Framework 4.6+, dan .NET 7). +- Visual Studio 2022 (atau IDE apa pun yang Anda sukai). +- Akses ke NuGet untuk mengunduh paket `Aspose.HTML`. +- Folder di mana Anda memiliki izin menulis untuk PNG yang dihasilkan. + +> **Pro tip:** Jika Anda berencana menjalankan ini di server, pastikan akun yang menjalankan proses dapat menulis ke direktori output; jika tidak, langkah render akan gagal secara diam-diam. + +## Langkah 1: Instal Aspose.HTML + +Pertama, tambahkan library Aspose.HTML ke proyek Anda. Buka NuGet Package Manager Console dan jalankan: + +```powershell +Install-Package Aspose.HTML +``` + +Atau, jika Anda lebih suka UI, cari **Aspose.HTML** dan klik **Install**. Ini akan mengunduh semua DLL yang diperlukan, termasuk mesin rendering. + +> **Mengapa ini penting:** Aspose.HTML menangani parsing HTML, tata letak CSS, dan rasterisasi gambar secara internal, sehingga Anda tidak perlu menjalankan browser headless. Ini juga sepenuhnya dikelola, artinya tidak ada dependensi native yang harus disertakan. + +## Langkah 2: Konfigurasikan Opsi Rendering Gambar + +Sebelum merender, tentukan ukuran dan kualitas output. Kelas `ImageRenderingOptions` memberikan kontrol yang sangat detail. + +```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 +}; +``` + +> **Mengapa mengaktifkan antialiasing?** Tanpa antialiasing, tepi dapat terlihat bergerigi, terutama pada layar high‑DPI. Mengaktifkannya menambah sedikit biaya kinerja tetapi menghasilkan PNG yang jauh lebih bersih. + +## Langkah 3: Muat Konten HTML + +Anda dapat merender URL remote, file lokal, atau bahkan string HTML mentah. Untuk contoh ini kami akan mengambil halaman live. + +```csharp +// Step 3: Load the HTML document from a URL +var htmlDoc = new HTMLDocument("https://example.com"); +``` + +Jika Anda memiliki HTML yang disimpan dalam string, gunakan overload yang menerima `MemoryStream`: + +```csharp +string rawHtml = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **Kasus khusus:** Beberapa situs memblokir user‑agent yang bukan browser. Jika Anda mendapatkan gambar kosong, atur header user‑agent khusus pada permintaan atau unduh HTML terlebih dahulu dan berikan sebagai string. + +## Langkah 4: Render ke PNG + +Sekarang operasi inti—memanggil `RenderToFile`. Berikan jalur lengkap tempat Anda ingin PNG disimpan. + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +Setelah baris ini dijalankan, Anda akan menemukan `output.png` di folder yang ditentukan. Buka dengan penampil gambar apa pun untuk memverifikasi hasilnya. + +> **Apa yang diharapkan:** PNG akan berukuran tepat 800 × 600 px, dengan teks halus dan warna yang cocok dengan halaman asli. Jika halaman sumber menggunakan CSS atau gambar eksternal, Aspose.HTML akan mengunduh sumber daya tersebut secara otomatis, asalkan dapat diakses. + +## Langkah 5: Verifikasi dan Gunakan Hasil + +Pemeriksaan cepat memastikan Anda benar‑benar mendapatkan gambar dan bukan file kosong. + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +Anda sekarang dapat **menyimpan halaman web sebagai PNG** untuk arsip, menyematkan gambar dalam buletin email, atau memasukkannya ke dalam pipeline machine‑learning yang mengharapkan halaman raster. + +## Opsional: Penyesuaian untuk Berbagai Skenario + +### 5.1 Merender Screenshot Halaman Penuh + +Jika Anda menginginkan seluruh halaman yang dapat digulir bukan hanya potongan berukuran viewport, atur tinggi ke nilai yang lebih besar atau gunakan `ImageRenderingOptions.PageHeight`: + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 Mengubah Format Gambar + +Aspose.HTML mendukung JPEG, BMP, GIF, dan TIFF. Ganti ekstensi file dan format akan otomatis menyesuaikan: + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 Menangani Halaman yang Dilindungi Autentikasi + +Untuk halaman di belakang login, ambil HTML dengan `HttpClient` (termasuk cookie atau token bearer), lalu berikan string tersebut ke `HTMLDocument` seperti yang ditunjukkan sebelumnya. Dengan cara ini Anda tetap dapat **mengonversi halaman web menjadi gambar** meskipun halaman tidak dapat diakses secara publik. + +## Contoh Kerja Lengkap + +Berikut adalah aplikasi console mandiri yang menggabungkan semuanya. Salin‑tempel ke proyek console .NET baru dan jalankan—aplikasi ini akan mengunduh `https://example.com`, merendernya, dan menyimpan `output.png` di samping executable. + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **Output yang diharapkan:** File `output.png`, 800 × 600 px, menampilkan beranda `example.com`. Buka dengan penampil gambar apa pun untuk memastikan kesetiaan visual. + +## Pertanyaan Umum & Hal-hal yang Perlu Diwaspadai + +- **T: Apakah ini bekerja di Linux?** + Ya. Aspose.HTML bersifat lintas‑platform; pastikan runtime .NET terinstal. + +- **T: Halaman saya menggunakan JavaScript untuk menyuntikkan konten—apakah akan muncul?** + Aspose.HTML **tidak** mengeksekusi JavaScript. Untuk halaman dinamis Anda perlu pra‑render HTML (misalnya dengan Chrome headless) dan kemudian memberikan markup statis ke renderer. + +- **T: Seberapa besar gambar dapat sebelum memori menjadi masalah?** + Merender halaman sangat tinggi (10 k+ piksel) dapat mengonsumsi ratusan megabyte RAM. Jika Anda mendapatkan `OutOfMemoryException`, pertimbangkan merender dalam segmen dan menggabungkan PNG‑nya. + +- **T: Bisakah saya menyematkan font yang tidak terpasang di server?** + Ya. Sertakan aturan `@font-face` dalam CSS Anda atau muat file font melalui tag ``; Aspose.HTML akan menyematkannya selama rasterisasi. + +## Kesimpulan + +Anda kini memiliki metode yang solid dan siap produksi untuk **render HTML ke PNG** di C#. Dengan mengonfigurasi `ImageRenderingOptions`, memuat halaman target, dan memanggil `RenderToFile`, Anda dapat **mengonversi halaman web menjadi gambar**, **menyimpan HTML sebagai PNG**, **mengekspor HTML sebagai gambar**, dan **menyimpan halaman web sebagai PNG** hanya dengan beberapa baris kode. + +Langkah selanjutnya? Coba sesuaikan dimensi untuk screenshot high‑DPI, bereksperimen dengan output JPEG untuk ukuran file lebih kecil, atau integrasikan logika ini ke dalam API ASP.NET yang mengembalikan PNG sesuai permintaan. Kemungkinannya tak terbatas, dan karena solusi ini sepenuhnya dikelola, Anda tidak perlu berurusan dengan browser eksternal atau pustaka native. + +Ada pertanyaan lebih lanjut tentang rendering gambar atau fitur Aspose.HTML lainnya? Tinggalkan komentar di bawah, dan selamat coding! + +![contoh render html ke png](placeholder.png "render html ke png") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/indonesian/net/html-document-manipulation/_index.md b/html/indonesian/net/html-document-manipulation/_index.md index 6308bff33..0e278a853 100644 --- a/html/indonesian/net/html-document-manipulation/_index.md +++ b/html/indonesian/net/html-document-manipulation/_index.md @@ -71,6 +71,8 @@ Pelajari cara menggunakan Aspose.HTML untuk .NET. Impor namespace, gabungkan HTM Manfaatkan potensi pengembangan web dengan Aspose.HTML untuk .NET. Buat, ubah, dan manipulasi dokumen HTML dengan mudah. ### [Buat HTML dari String di C# – Panduan Penangan Sumber Daya Kustom](./create-html-from-string-in-c-custom-resource-handler-guide/) Pelajari cara membuat dokumen HTML dari string menggunakan handler sumber daya kustom di C# dengan Aspose.HTML. +### [Cara Membuat HTML – Menambahkan Elemen dan Mengatur Gaya Teks](./how-to-create-html-append-elements-and-style-text/) +Pelajari cara membuat dokumen HTML, menambahkan elemen, dan menerapkan gaya teks menggunakan Aspose.HTML untuk .NET. ## Kesimpulan diff --git a/html/indonesian/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/indonesian/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..1b55f8e34 --- /dev/null +++ b/html/indonesian/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-28 +description: Cara membuat HTML secara programatis di C#. Pelajari cara menambahkan + elemen ke body, membuat elemen paragraf, menambahkan teks tebal miring, dan menambahkan + gaya CSS secara programatis. +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: id +og_description: Cara membuat HTML secara programatis di C#. Panduan ini menunjukkan + cara menambahkan elemen ke body, membuat elemen paragraf, menambahkan teks tebal + miring, dan menambahkan gaya CSS secara programatis. +og_title: Cara Membuat HTML – Menambahkan Elemen dan Menata Teks +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: Cara Membuat HTML – Menambahkan Elemen dan Mengatur Gaya Teks +url: /id/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Membuat HTML – Menambahkan Elemen dan Menata Teks + +Pernah bertanya-tanya **how to create HTML** dari C# tanpa harus menggunakan string builder? Anda bukan satu-satunya. Dalam banyak skenario web‑automation atau pembuatan email, Anda memerlukan pendekatan berbasis DOM yang bersih yang memungkinkan Anda menambahkan elemen ke body, menatanya, dan menjaga semuanya type‑safe. + +Dalam tutorial ini kami akan menjelaskan langkah‑langkah tepat untuk **how to create HTML** menggunakan Aspose.HTML, mencakup semua hal mulai dari membuat elemen paragraf hingga menambahkan teks tebal miring dan menambahkan gaya CSS secara programatis. Pada akhir tutorial Anda akan memiliki string HTML siap pakai yang dapat Anda sisipkan ke dalam browser, email, atau konverter PDF. + +## Apa yang Anda Butuhkan + +- **.NET 6+** (versi terbaru apa pun dapat digunakan; API stabil di .NET Framework juga) +- **Aspose.HTML for .NET** paket NuGet – `Install-Package Aspose.HTML` +- Pemahaman dasar tentang sintaks C# – tidak memerlukan hal yang rumit + +Tidak ada file konfigurasi tambahan, tidak ada mesin templating eksternal. Hanya kode C# biasa yang memanipulasi DOM. + +![how to create html example](/images/how-to-create-html.png "Screenshot showing the generated HTML structure – how to create html") + +## Langkah 1: Siapkan Proyek dan Impor Namespace + +Hal pertama yang harus dilakukan. Buat aplikasi console (atau proyek .NET apa pun) dan tambahkan referensi Aspose.HTML. Kemudian impor namespace yang akan kita gunakan. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **Pro tip:** Jika Anda hanya membutuhkan manipulasi DOM, Anda dapat menghilangkan namespace `Aspose.Html.Rendering` – hanya diperlukan saat Anda merender dokumen ke gambar atau PDF. + +## Langkah 2: Definisikan Gaya CSS Secara Programatis + +Saat Anda **add css style programmatically**, Anda mendapatkan kontrol penuh atas keluarga font, ukuran, dan bahkan flag gaya‑font gabungan seperti bold + italic. Berikut cara membuat objek gaya tersebut. + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +Mengapa menggunakan `WebFontStyle.Bold | WebFontStyle.Italic` alih‑alih dua properti terpisah? API memperlakukan gaya font sebagai enumerasi flag, sehingga menggabungkannya menghasilkan CSS tepat `font-weight: bold; font-style: italic;` yang akan Anda tulis secara manual. + +## Langkah 3: Buat Dokumen HTML Baru + +Sekarang kita benar‑benar **how to create HTML** – objek dokumen berfungsi sebagai kanvas kita. Anggap saja sebagai halaman kosong yang dapat Anda lukis. + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +Pada titik ini dokumen berisi tag standar ``, ``, dan ``. Anda dapat memeriksa `htmlDoc.Body` untuk melihat elemen `` kosong yang siap menerima anak. + +## Langkah 4: Buat Elemen Paragraf dan Tambahkan Teks Tebal Miring + +Di sinilah kata kunci **create paragraph element** bersinar. Kami akan membuat tag `

`, 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 `

` atau `` menggunakan `htmlDoc.CreateElement("div")`. Pola `SetAttribute` yang sama berfungsi. + +- **Appending Multiple Nodes:** Loop melalui koleksi string dan buat paragraf untuk masing‑masing, menambahkan masing‑masing ke body. Ingat untuk menggunakan kembali `CSSStyleDeclaration` yang sama jika gaya identik—tidak perlu membuatnya lagi. + +- **Encoding Concerns:** `TextContent` secara otomatis meng‑HTML‑encode karakter khusus (`&`, `<`, `>`). Jika Anda membutuhkan HTML mentah, gunakan `InnerHtml` sebagai gantinya, tetapi berhati‑hatilah terhadap serangan injeksi. + +## Contoh Lengkap yang Berfungsi + +Berikut adalah program lengkap yang siap disalin‑tempel yang menunjukkan alur keseluruhan dari awal hingga akhir. + +```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); + } +} +``` + +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. + +![create pdf document c# example](/images/create-pdf-csharp.png) + +## 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. + +![Render HTML to PDF example](render-html-to-pdf.png "render html to pdf") + +*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 = "

Hello, world!

"; +``` + +Mengapa memulai dengan string? Karena banyak API (layanan email, generator PDF, kontrol web‑view) menerima markup HTML secara langsung. Menggunakan string membuat alur kerja ringan dan mudah diuji. + +--- + +## Langkah 2: Inisialisasi HTMLDocument dengan string + +Kelas `HTMLDocument` milik Aspose.Html dapat membaca markup dari string, URL, atau stream. Di sini kami memberikannya `rawHtml` kami. + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +Pada titik ini dokumen berada sepenuhnya di memori. Tidak ada file yang dibuat, dan Anda dapat memanipulasi DOM seperti layaknya di browser. + +--- + +## Langkah 3: Bangun custom resource handler untuk menangkap output + +Sebuah **custom resource handler** memberi Anda kontrol atas tempat setiap bagian dokumen (HTML, gambar, CSS) disimpan. Dalam kasus kami hanya memperhatikan HTML utama, jadi kami akan menulis semuanya ke `MemoryStream`. + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**Mengapa handler khusus?** Metode `Save` bawaan menulis ke jalur file, yang menghilangkan tujuan alur kerja in‑memory. Dengan menimpa `HandleResource` kami menyela setiap permintaan sumber daya dan memutuskan tepat di mana ia disimpan. Inilah inti **cara menangkap HTML** tanpa menyentuh disk. + +--- + +## Langkah 4: Simpan dokumen menggunakan handler + +Sekarang kami memberi tahu Aspose.Html untuk menyerialisasi `HTMLDocument` ke dalam `MyMemoryHandler` kami. Objek `SaveOptions` dapat dibiarkan kosong untuk output HTML default, tetapi Anda dapat menyesuaikan encoding, pretty‑print, dll., bila diperlukan. + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +Saat `Save` dijalankan, `HandleResource` dipanggil, HTML utama ditulis ke `memoryHandler.HtmlStream`, dan file tambahan (gambar, CSS) akan mendapatkan stream masing‑masing—meskipun dalam contoh sederhana ini kami belum menambahkannya. + +--- + +## Langkah 5: Konversi stream yang ditangkap kembali ke string + +Kami memiliki HTML yang berada di dalam `MemoryStream`. Untuk **mengonversi HTML ke string**, cukup mengatur ulang posisi stream dan membacanya dengan `StreamReader`. + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +`resultHtml` kini berisi markup persis yang dihasilkan Aspose.Html. Anda dapat mengirimnya melalui jaringan, menyematkannya dalam email, atau memberikannya ke pustaka lain. + +--- + +## Langkah 6: Verifikasi output – apa yang harus Anda lihat? + +Mari cetak hasilnya ke konsol agar Anda dapat memastikan semuanya berjalan dengan baik. + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**Output yang diharapkan** + +```html + +

Hello, world!

+``` + +Perhatikan tag `` ditambahkan secara otomatis oleh Aspose.Html. Itulah salah satu alasan kami lebih memilih pustaka daripada menggabungkan string secara manual—karena ia menormalkan markup untuk Anda. + +--- + +## Contoh Lengkap yang Dapat Dijalankan + +Berikut adalah program lengkap yang dapat Anda salin ke aplikasi konsol dan jalankan langsung. Semua bagian sudah digabungkan, jadi tidak ada kebingungan tentang `using` yang hilang atau ketergantungan tersembunyi. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +Salin‑tempel, tekan **F5**, dan Anda akan melihat HTML terformat tercetak di konsol. + +--- + +## Pertanyaan Umum & Kasus Tepi + +### Bagaimana jika saya perlu menangkap gambar atau file CSS? + +`MyMemoryHandler` sudah membuat `MemoryStream` baru untuk setiap sumber daya. Anda dapat memperluasnya untuk menyimpan stream tersebut dalam kamus yang berkey `info.Uri`. Dengan begitu, misalnya, Anda dapat menyematkan gambar sebagai string Base64 nanti. + +### Bisakah saya mengubah encoding output? + +Ya. Berikan `Saving.HtmlSaveOptions` dengan properti `Encoding` yang diatur: + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### Apakah ini bekerja dengan dokumen besar? + +`MemoryStream` tumbuh secara dinamis, tetapi perhatikan konsumsi memori untuk halaman yang sangat besar (ratusan MB). Pada skenario tersebut Anda mungkin lebih baik streaming langsung ke file atau socket jaringan. + +### Bagaimana cara **menulis HTML ke stream** dalam satu baris? + +Jika Anda tidak memerlukan handler khusus, Anda dapat menggunakan `htmlDocument.Save(Stream, SaveOptions)` secara langsung: + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +Itu alternatif yang ringkas, meskipun Anda kehilangan kemampuan untuk menyela sumber daya tambahan. + +--- + +## Pro Tips & Jebakan + +* **Pro tip:** Selalu setel kembali `Position` ke `0` sebelum membaca `MemoryStream`. Jika lupa, Anda akan mendapatkan string kosong. +* **Waspadai:** Memberikan `null` pada `SaveOptions`—Aspose.Html akan memakai nilai default, tetapi opsi eksplisit membuat niat Anda lebih jelas. +* **Kesalahan umum:** Menganggap `HtmlStream` sudah terisi sebelum panggilan `Save` selesai. Stream baru tersedia setelah metode `Save` mengembalikan nilai. +* **Catatan performa:** Untuk konversi berulang, gunakan satu instance `MyMemoryHandler` dan bersihkan stream‑nya di antara proses untuk menghindari alokasi tambahan. + +--- + +## Kesimpulan + +Kami telah menunjukkan cara **membuat HTML dari string** di C#, menangkap hasilnya dengan **custom resource handler**, dan **menulis HTML ke stream** untuk diproses lebih lanjut. Dengan mengonversi stream in‑memory kembali ke string, Anda juga mendapatkan cara yang andal untuk **mengonversi HTML ke string** tanpa menyentuh sistem file. + +Pola ini cukup fleksibel untuk templating email, pembuatan PDF, atau skenario apa pun yang memerlukan markup HTML secara dinamis. Selanjutnya, Anda dapat mengeksplorasi penyematan gambar sebagai Base64, menyesuaikan `HtmlSaveOptions` untuk minifikasi, atau memberi string tersebut ke Aspose.PDF untuk konversi PDF. + +Masih ada pertanyaan tentang penanganan sumber daya, encoding, atau performa? Tinggalkan komentar di bawah—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/italian/net/generate-jpg-and-png-images/_index.md b/html/italian/net/generate-jpg-and-png-images/_index.md index f6e8b2d8a..24ccd765d 100644 --- a/html/italian/net/generate-jpg-and-png-images/_index.md +++ b/html/italian/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Impara a usare Aspose.HTML per .NET per manipolare documenti HTML, convertire HT Scopri come abilitare l'antialiasing durante la conversione di documenti DOCX in immagini PNG o JPG con Aspose.HTML per .NET. ### [Converti docx in PNG – crea archivio zip C# tutorial](./convert-docx-to-png-create-zip-archive-c-tutorial/) Impara a convertire documenti DOCX in PNG e a comprimerli in un archivio ZIP usando C# e Aspose.HTML. +### [Renderizza HTML in PNG con C# – Guida completa passo‑passo](./render-html-to-png-in-c-complete-step-by-step-guide/) +Scopri come convertire HTML in immagini PNG usando C# con Aspose.HTML, seguendo una guida dettagliata passo dopo passo. ## Conclusione diff --git a/html/italian/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/italian/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..433e1b5ce --- /dev/null +++ b/html/italian/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-28 +description: Scopri come convertire l'HTML in PNG in C# con Aspose.HTML. Questa guida + copre anche come trasformare una pagina web in immagine, salvare l'HTML come PNG, + esportare l'HTML come immagine e salvare la pagina web come 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: it +og_description: Scopri come convertire HTML in PNG in C# con Aspose.HTML. Segui questo + semplice tutorial per trasformare una pagina web in immagine, salvare l'HTML come + PNG ed esportare l'HTML come immagine. +og_title: Renderizza HTML in PNG con C# – Guida completa passo passo +tags: +- C# +- Aspose.HTML +- Image Rendering +- .NET +title: Renderizza HTML in PNG con C# – Guida completa passo passo +url: /it/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 >}} + +# Renderizzare HTML in PNG con C# – Guida Completa Passo‑Passo + +Hai bisogno di **renderizzare HTML in PNG** rapidamente? In questo tutorial ti guideremo passo passo su come convertire HTML in PNG usando la libreria Aspose.HTML per .NET. Che tu stia creando un servizio di thumbnail, generando anteprime per email, o semplicemente debba **convertire una pagina web in un’immagine** per report, i passaggi seguenti ti porteranno al risultato con il minimo sforzo. + +Il punto è questo: la maggior parte degli sviluppatori ricorre a uno strumento di screenshot del browser e finisce per gestire binari di Chrome headless. Funziona, ma aggiunge molto overhead. Con Aspose.HTML puoi **salvare HTML come PNG** direttamente dal codice, senza processi esterni. Alla fine di questa guida sarai in grado di **esportare HTML come immagine**, salvare il risultato su disco e persino regolare l’antialiasing o le dimensioni per adattarle alla tua UI. + +## Cosa Imparerai + +- Come installare Aspose.HTML tramite NuGet. +- Configurare `ImageRenderingOptions` per un output di alta qualità. +- Caricare una pagina online o una stringa HTML locale. +- Renderizzare la pagina in un file PNG. +- Problemi comuni quando **si salva una pagina web come PNG** e come evitarli. + +Non è necessaria alcuna esperienza pregressa con Aspose; basta una configurazione base di C#/.NET e una connessione internet. + +## Prerequisiti + +- .NET 6.0 o successivo (il codice funziona su .NET Core, .NET Framework 4.6+ e .NET 7). +- Visual Studio 2022 (o qualsiasi IDE tu preferisca). +- Accesso a NuGet per scaricare il pacchetto `Aspose.HTML`. +- Una cartella in cui hai permessi di scrittura per il PNG generato. + +> **Suggerimento professionale:** Se prevedi di eseguire questo su un server, assicurati che l’account che esegue il processo possa scrivere nella directory di output; altrimenti il passaggio di rendering fallirà silenziosamente. + +## Passo 1: Installa Aspose.HTML + +Per prima cosa, aggiungi la libreria Aspose.HTML al tuo progetto. Apri la Console di Gestione Pacchetti NuGet ed esegui: + +```powershell +Install-Package Aspose.HTML +``` + +Oppure, se preferisci l’interfaccia grafica, cerca **Aspose.HTML** e clicca **Install**. Questo scaricherà tutti i DLL necessari, incluso il motore di rendering. + +> **Perché è importante:** Aspose.HTML gestisce internamente il parsing HTML, il layout CSS e la rasterizzazione delle immagini, così non devi avviare un browser headless. È inoltre completamente gestito, il che significa nessuna dipendenza nativa da distribuire. + +## Passo 2: Configura le Opzioni di Rendering dell’Immagine + +Prima di renderizzare, decidi la dimensione e la qualità dell’output. La classe `ImageRenderingOptions` ti offre un controllo granulare. + +```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 +}; +``` + +> **Perché abilitare l’antialiasing?** Senza di esso i bordi possono apparire frastagliati, soprattutto su schermi ad alta DPI. Attivarlo aggiunge un piccolo costo di prestazioni ma produce un PNG molto più pulito. + +## Passo 3: Carica il Contenuto HTML + +Puoi renderizzare un URL remoto, un file locale, o anche una stringa HTML grezza. In questo esempio scaricheremo una pagina live. + +```csharp +// Step 3: Load the HTML document from a URL +var htmlDoc = new HTMLDocument("https://example.com"); +``` + +Se hai l’HTML memorizzato in una stringa, usa la sovraccarica che accetta `MemoryStream`: + +```csharp +string rawHtml = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **Caso limite:** Alcuni siti bloccano gli user‑agent che non sono browser. Se ottieni un’immagine vuota, imposta un header user‑agent personalizzato sulla richiesta o scarica l’HTML prima e passalo come stringa. + +## Passo 4: Renderizza in PNG + +Ora l’operazione principale—chiamare `RenderToFile`. Fornisci il percorso completo dove vuoi salvare il PNG. + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +Dopo l’esecuzione di questa riga, troverai `output.png` nella cartella specificata. Aprilo con qualsiasi visualizzatore di immagini per verificare il risultato. + +> **Cosa aspettarsi:** Il PNG sarà esattamente 800 × 600 px, con testo fluido e colori corrispondenti alla pagina originale. Se la pagina sorgente utilizza CSS o immagini esterne, Aspose.HTML scaricherà automaticamente quelle risorse, purché siano raggiungibili. + +## Passo 5: Verifica e Usa il Risultato + +Un rapido controllo di coerenza assicura che tu abbia effettivamente ottenuto un’immagine e non un file vuoto. + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +Ora puoi **salvare la pagina web come PNG** per archiviazione, incorporare l’immagine nelle newsletter email, o inserirla in una pipeline di machine‑learning che richiede pagine rasterizzate. + +## Opzionale: Personalizzazioni per Scenari Differenti + +### 5.1 Renderizzare uno Screenshot a Pagina Intera + +Se desideri l’intera pagina scrollabile anziché una porzione delle dimensioni della viewport, imposta un’altezza maggiore o usa `ImageRenderingOptions.PageHeight`: + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 Cambiare il Formato dell’Immagine + +Aspose.HTML supporta JPEG, BMP, GIF e TIFF. Cambia l’estensione del file e il formato verrà impostato automaticamente: + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 Gestire Pagine Protette da Autenticazione + +Per pagine dietro login, recupera l’HTML con `HttpClient` (includendo cookie o token bearer), poi passa la stringa a `HTMLDocument` come mostrato prima. In questo modo puoi comunque **convertire una pagina web in immagine** anche quando la pagina non è pubblicamente accessibile. + +## Esempio Completo Funzionante + +Di seguito trovi un’app console autonoma che riunisce tutti i passaggi. Copia‑incolla il codice in un nuovo progetto console .NET e avvialo—scaricherà `https://example.com`, lo renderizzerà e salverà `output.png` accanto all’eseguibile. + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **Output previsto:** Un file `output.png`, 800 × 600 px, che mostra la homepage di `example.com`. Aprilo con qualsiasi visualizzatore di immagini per confermare la fedeltà visiva. + +## Domande Frequenti e Trappole + +- **D: Funziona su Linux?** + Sì. Aspose.HTML è cross‑platform; basta che il runtime .NET sia installato. + +- **D: La mia pagina usa JavaScript per iniettare contenuti—appariranno?** + Aspose.HTML **non** esegue JavaScript. Per pagine dinamiche dovrai pre‑renderizzare l’HTML (ad es. con Chrome headless) e poi fornire il markup statico al renderer. + +- **D: Quanto grande può diventare l’immagine prima che la memoria diventi un problema?** + Renderizzare pagine molto alte (10 k+ pixel) può consumare diverse centinaia di megabyte di RAM. Se incontri `OutOfMemoryException`, considera di renderizzare a segmenti e unire i PNG risultanti. + +- **D: Posso incorporare font che non sono installati sul server?** + Sì. Includi regole `@font-face` nel tuo CSS o carica i file dei font tramite un tag ``; Aspose.HTML li incorporerà durante la rasterizzazione. + +## Conclusione + +Ora disponi di un metodo solido e pronto per la produzione per **renderizzare HTML in PNG** con C#. Configurando `ImageRenderingOptions`, caricando la pagina target e chiamando `RenderToFile`, puoi **convertire una pagina web in immagine**, **salvare HTML come PNG**, **esportare HTML come immagine** e **salvare la pagina web come PNG** con poche righe di codice. + +Passi successivi? Prova a regolare le dimensioni per screenshot ad alta DPI, sperimenta l’output JPEG per file più leggeri, o integra questa logica in un’API ASP.NET che restituisce PNG su richiesta. Le possibilità sono infinite, e poiché la soluzione è completamente gestita, non dovrai più lottare con browser esterni o librerie native. + +Hai altre domande sul rendering di immagini o su altre funzionalità di Aspose.HTML? Lascia un commento qui sotto, e buona programmazione! + +![esempio di render html in png](placeholder.png "esempio di render html in png") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/italian/net/html-document-manipulation/_index.md b/html/italian/net/html-document-manipulation/_index.md index 830312f0e..515724bc6 100644 --- a/html/italian/net/html-document-manipulation/_index.md +++ b/html/italian/net/html-document-manipulation/_index.md @@ -71,6 +71,8 @@ Impara a usare Aspose.HTML per .NET. Importa namespace, unisci HTML con XML e mi Sfrutta il potenziale dello sviluppo web con Aspose.HTML per .NET. Crea, converti e manipola documenti HTML con facilità. ### [Creare HTML da stringa in C# – Guida al gestore di risorse personalizzato](./create-html-from-string-in-c-custom-resource-handler-guide/) Impara a generare documenti HTML da stringhe C# usando un gestore di risorse personalizzato con Aspose.HTML. +### [Come creare HTML – Aggiungere elementi e formattare il testo](./how-to-create-html-append-elements-and-style-text/) +Scopri come creare documenti HTML aggiungendo elementi e applicando stili al testo con Aspose.HTML per .NET. ## Conclusione diff --git a/html/italian/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/italian/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..0016329fe --- /dev/null +++ b/html/italian/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-28 +description: Come creare HTML programmaticamente in C#. Impara ad aggiungere un elemento + al body, creare un elemento paragrafo, aggiungere testo in grassetto e corsivo e + aggiungere lo stile CSS programmaticamente. +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: it +og_description: Come creare HTML programmaticamente in C#. Questa guida ti mostra + come aggiungere un elemento al body, creare un elemento paragrafo, aggiungere testo + in grassetto e corsivo, e aggiungere uno stile CSS programmaticamente. +og_title: Come creare HTML – Aggiungere elementi e stilizzare il testo +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: Come creare HTML – Aggiungere elementi e stilizzare il testo +url: /it/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come creare HTML – Aggiungere elementi e stilizzare il testo + +Ti sei mai chiesto **come creare HTML** da C# senza ricorrere a un string builder? Non sei l'unico. In molti scenari di automazione web o generazione di email è necessario un approccio pulito basato sul DOM che ti consenta di aggiungere elementi al body, stilizzarli e mantenere tutto type‑safe. + +In questo tutorial percorreremo i passaggi esatti per **come creare HTML** usando Aspose.HTML, coprendo tutto, dalla creazione di un elemento paragrafo all'aggiunta di testo in grassetto e corsivo e all'aggiunta di stili CSS in modo programmatico. Alla fine avrai una stringa HTML pronta all'uso che potrai iniettare in un browser, in un'email o in un convertitore PDF. + +## Cosa ti servirà + +- **.NET 6+** (qualsiasi versione recente funziona; l'API è stabile anche su .NET Framework) +- **Aspose.HTML for .NET** pacchetto NuGet – `Install-Package Aspose.HTML` +- Una conoscenza di base della sintassi C# – non è richiesto nulla di complesso + +Nessun file di configurazione extra, nessun motore di templating esterno. Solo codice C# puro che manipola il DOM. + +![come creare html esempio](/images/how-to-create-html.png "Screenshot che mostra la struttura HTML generata – come creare html") + +## Passo 1: Configurare il progetto e importare i namespace + +Prima di tutto. Crea un'app console (o qualsiasi progetto .NET) e aggiungi il riferimento Aspose.HTML. Poi importa i namespace che utilizzeremo. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **Consiglio:** Se hai bisogno solo della manipolazione del DOM, puoi omettere il namespace `Aspose.Html.Rendering` – è necessario solo quando si rende il documento in un'immagine o PDF. + +## Passo 2: Definire uno stile CSS in modo programmatico + +Quando **aggiungi stile css programmaticamente**, ottieni il pieno controllo su famiglie di font, dimensioni e persino flag di stile del font combinati come grassetto + corsivo. Ecco come creare quell'oggetto stile. + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +Perché usare `WebFontStyle.Bold | WebFontStyle.Italic` invece di due proprietà separate? L'API tratta lo stile del font come un'enumerazione di flag, quindi combinarli produce l'esatto CSS `font-weight: bold; font-style: italic;` che scriveresti a mano. + +## Passo 3: Creare un nuovo documento HTML + +Ora effettivamente **come creare HTML** – l'oggetto documento funge da nostra tela. Pensalo come una pagina vuota su cui puoi dipingere. + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +A questo punto il documento contiene i tag standard ``, `` e ``. Puoi ispezionare `htmlDoc.Body` per vedere l'elemento `` vuoto pronto per i figli. + +## Passo 4: Creare un elemento paragrafo e aggiungere testo grassetto e corsivo + +Qui è dove brilla la parola chiave **create paragraph element**. Genereremo un tag `

`, 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 `

` o `` usando `htmlDoc.CreateElement("div")`. Funziona lo stesso pattern `SetAttribute`. + +- **Appending Multiple Nodes:** Itera su una collezione di stringhe e crea un paragrafo per ciascuna, aggiungendolo al body. Ricorda di riutilizzare lo stesso `CSSStyleDeclaration` se lo stile è identico—non è necessario ricrearlo. + +- **Encoding Concerns:** `TextContent` codifica automaticamente in HTML i caratteri speciali (`&`, `<`, `>`). Se ti serve HTML grezzo, usa `InnerHtml`, ma fai attenzione agli attacchi di injection. + +## Esempio completo funzionante + +Di seguito trovi il programma completo, pronto per il copia‑incolla, che dimostra l'intero flusso dall'inizio alla fine. + +```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); + } +} +``` + +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. + +![crea documento pdf c# esempio](/images/create-pdf-csharp.png) + +## 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. + +![Esempio di Render HTML in PDF](render-html-to-pdf.png "render html to pdf") + +*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 = "

Hello, world!

"; +``` + +Perché partire da una stringa? Perché molte API (servizi email, generatori PDF, controlli web‑view) accettano markup HTML direttamente. Usare una stringa mantiene il flusso di lavoro leggero e testabile. + +--- + +## Passo 2: Inizializza l'HTMLDocument con la stringa + +La classe `HTMLDocument` di Aspose.Html può leggere markup da una stringa, da un URL o da uno stream. Qui la alimentiamo con il nostro `rawHtml`. + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +A questo punto il documento vive interamente in memoria. Non viene creato alcun file e puoi manipolare il DOM proprio come faresti in un browser. + +--- + +## Passo 3: Costruisci un custom resource handler per catturare l'output + +Un **custom resource handler** ti dà il controllo su dove finisce ogni parte del documento (HTML, immagini, CSS). Nel nostro caso ci interessa solo l'HTML principale, quindi scriveremo tutto in un `MemoryStream`. + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**Perché un handler personalizzato?** Il metodo predefinito `Save` scrive su un percorso file, il che vanifica lo scopo di un flusso in‑memoria. Sovrascrivendo `HandleResource` intercettiamo ogni richiesta di risorsa e decidiamo esattamente dove va. Questo è il cuore di **come catturare HTML** senza toccare il disco. + +--- + +## Passo 4: Salva il documento usando il handler + +Ora diciamo ad Aspose.Html di serializzare l'`HTMLDocument` nel nostro `MyMemoryHandler`. L'oggetto `SaveOptions` può rimanere vuoto per l'output HTML predefinito, ma puoi modificare codifica, pretty‑print, ecc., se necessario. + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +Quando `Save` viene eseguito, `HandleResource` viene invocato, l'HTML principale viene scritto in `memoryHandler.HtmlStream`, e eventuali file accessori (immagini, CSS) otterrebbero i propri stream—anche se in questo semplice esempio non ne abbiamo aggiunti. + +--- + +## Passo 5: Converti lo stream catturato in una stringa + +Abbiamo l'HTML all'interno di un `MemoryStream`. Per **convertire HTML in stringa**, basta riavvolgere lo stream e leggerlo con un `StreamReader`. + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +`resultHtml` ora contiene il markup esatto prodotto da Aspose.Html. Puoi inviarlo sulla rete, includerlo in una email o passarne a un'altra libreria. + +--- + +## Passo 6: Verifica l'output – cosa dovresti vedere? + +Stampiamo il risultato sulla console così puoi confermare che tutto ha funzionato. + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**Output previsto** + +```html + +

Hello, world!

+``` + +Nota che il tag `` è aggiunto automaticamente da Aspose.Html. Questo è uno dei motivi per cui preferiamo una libreria rispetto alla concatenazione manuale di stringhe—normalizza il markup per te. + +--- + +## Esempio completo, eseguibile + +Di seguito trovi il programma completo che puoi inserire in un'app console e avviare subito. Tutti i componenti sono presenti, così non devi indovinare eventuali `using` mancanti o dipendenze nascoste. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +Copia‑incolla, premi **F5**, e vedrai l'HTML formattato stampato sulla console. + +--- + +## Domande comuni e casi limite + +### E se devo catturare immagini o file CSS? + +Il `MyMemoryHandler` crea già un nuovo `MemoryStream` per ogni risorsa. Puoi estenderlo per memorizzare quegli stream in un dizionario indicizzato da `info.Uri`. In tal modo, ad esempio, potresti incorporare le immagini come stringhe Base64 in seguito. + +### Posso cambiare la codifica dell'output? + +Sì. Passa un `Saving.HtmlSaveOptions` con la proprietà `Encoding` impostata: + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### Funziona con documenti di grandi dimensioni? + +`MemoryStream` cresce dinamicamente, ma tieni d'occhio il consumo di memoria per pagine molto grandi (centinaia di MB). In tali scenari potresti streamare direttamente su un file o su un socket di rete. + +### Come **write HTML to stream** in una singola riga? + +Se non ti serve un handler personalizzato, puoi usare direttamente `htmlDocument.Save(Stream, SaveOptions)`: + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +È un'alternativa compatta, anche se perdi la possibilità di intercettare le risorse accessorie. + +--- + +## Consigli professionali e insidie + +* **Pro tip:** Resetta sempre `Position` a `0` prima di leggere un `MemoryStream`. Dimenticarlo restituisce una stringa vuota. +* **Attenzione a:** Passare un `null` `SaveOptions`—Aspose.Html utilizzerà i valori predefiniti, ma opzioni esplicite rendono più chiara la tua intenzione. +* **Errore tipico:** Supporre che `HtmlStream` sia popolato prima che `Save` termini. Lo stream è disponibile solo dopo il ritorno della chiamata `Save`. +* **Nota sulle prestazioni:** Per conversioni ripetitive, riutilizza una singola istanza di `MyMemoryHandler` e svuota i suoi stream tra le esecuzioni per evitare allocazioni extra. + +--- + +## Conclusione + +Abbiamo mostrato come **creare HTML da stringa** in C#, catturare il risultato con un **custom resource handler**, e **write HTML to stream** per ulteriori elaborazioni. Convertendo lo stream in‑memoria nuovamente in una stringa, ottieni anche un metodo affidabile per **convertire HTML in stringa** senza toccare il file system. + +Questo modello è sufficientemente flessibile per il templating di email, la generazione di PDF o qualsiasi scenario in cui ti serve il markup HTML al volo. Successivamente potresti esplorare l'incorporamento di immagini come Base64, la regolazione di `HtmlSaveOptions` per la minificazione, o l'invio della stringa ad Aspose.PDF per la conversione in PDF. + +Hai altre domande su gestione delle risorse, codifica o prestazioni? Lascia un commento qui sotto—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/japanese/net/generate-jpg-and-png-images/_index.md b/html/japanese/net/generate-jpg-and-png-images/_index.md index 57de57175..155024488 100644 --- a/html/japanese/net/generate-jpg-and-png-images/_index.md +++ b/html/japanese/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML for .NET を使用して HTML ドキュメントを操作したり DOCX 文書を PNG または JPG 画像に変換する際に、アンチエイリアシングを有効にして高品質な出力を得る手順を解説します。 ### [DOCX を PNG に変換 – ZIP アーカイブを作成する C# チュートリアル](./convert-docx-to-png-create-zip-archive-c-tutorial/) C# で DOCX を PNG に変換し、ZIP アーカイブを作成する方法を学びます。 +### [C# で HTML を PNG にレンダリングする – 完全ステップバイステップガイド](./render-html-to-png-in-c-complete-step-by-step-guide/) +C# を使用して HTML を PNG 画像に変換する方法を、ステップバイステップで解説します。 ## 結論 diff --git a/html/japanese/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/japanese/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..acd423a20 --- /dev/null +++ b/html/japanese/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-03-28 +description: Aspose.HTML を使用して C# で HTML を PNG にレンダリングする方法を学びましょう。このガイドでは、ウェブページを画像に変換する方法、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: ja +og_description: Aspose.HTML を使用して C# で HTML を PNG にレンダリングする方法を学びましょう。この簡単なチュートリアルに従って、ウェブページを画像に変換し、HTML + を PNG として保存し、HTML を画像としてエクスポートします。 +og_title: C#でHTMLをPNGにレンダリングする – 完全ステップバイステップガイド +tags: +- C# +- Aspose.HTML +- Image Rendering +- .NET +title: C#でHTMLをPNGにレンダリングする – 完全ステップバイステップガイド +url: /ja/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 >}} + +# C# で HTML を PNG にレンダリング – 完全ステップバイステップガイド + +HTML を **PNG にレンダリング** したいですか?このチュートリアルでは、Aspose.HTML ライブラリ for .NET を使用して HTML を PNG に変換する方法をステップバイステップで解説します。サムネイルサービスの構築、メールプレビューの生成、あるいはレポート用に **ウェブページを画像に変換** したい場合でも、以下の手順で手間なく実現できます。 + +多くの開発者はブラウザのスクリーンショットツールに手を出し、ヘッドレス Chrome のバイナリを扱うことが多いですが、これは余計なオーバーヘッドがかかります。Aspose.HTML を使えば、外部プロセス不要でコードから直接 **HTML を PNG として保存** できます。このガイドを終える頃には、**HTML を画像としてエクスポート** し、ディスクに保存し、アンチエイリアスやサイズを UI に合わせて調整できるようになります。 + +## 学べること + +- NuGet で Aspose.HTML をインストールする方法 +- 高品質出力のための `ImageRenderingOptions` 設定 +- オンラインページまたはローカル HTML 文字列の読み込み +- ページを PNG ファイルにレンダリングする手順 +- **ウェブページを PNG として保存** する際の一般的な落とし穴と回避策 + +Aspose の事前知識は不要です。基本的な C#/.NET 環境とインターネット接続があれば始められます。 + +## 前提条件 + +- .NET 6.0 以降(コードは .NET Core、.NET Framework 4.6+、.NET 7 でも動作します) +- Visual Studio 2022(またはお好みの IDE) +- `Aspose.HTML` パッケージを取得できる NuGet へのアクセス +- 生成した PNG を書き込めるフォルダーへの書き込み権限 + +> **プロのコツ:** サーバー上で実行する場合、プロセスを実行するアカウントが出力ディレクトリに書き込めることを確認してください。書き込み権限がないと、レンダリングステップが黙って失敗します。 + +## 手順 1: Aspose.HTML をインストール + +まず、プロジェクトに Aspose.HTML ライブラリを追加します。NuGet パッケージマネージャコンソールを開き、次のコマンドを実行します。 + +```powershell +Install-Package Aspose.HTML +``` + +または UI が好きな場合は、**Aspose.HTML** を検索して **インストール** をクリックしてください。これにより、レンダリングエンジンを含むすべての必須 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 = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **エッジケース:** 一部のサイトはブラウザ以外の User-Agent をブロックします。空白画像が出力される場合は、リクエストにカスタム User-Agent ヘッダーを設定するか、事前に HTML をダウンロードして文字列として渡してください。 + +## 手順 4: PNG にレンダリング + +核心部分—`RenderToFile` を呼び出します。PNG を保存したいフルパスを指定します。 + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +この行が実行されると、指定したフォルダーに `output.png` が作成されます。任意の画像ビューアで開き、結果を確認してください。 + +> **期待される結果:** PNG は正確に 800 × 600 px で、テキストは滑らかに、色は元ページと一致します。外部 CSS や画像を使用している場合、Aspose.HTML はそれらのリソースを自動的にダウンロードします(アクセス可能な限り)。 + +## 手順 5: 結果を検証して利用 + +簡単なサニティチェックで、画像が正しく生成されているか、空ファイルでないかを確認します。 + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +これで **ウェブページを PNG として保存** でき、アーカイブ、メールニュースレターへの埋め込み、あるいはラスタライズされたページを期待する機械学習パイプラインへの入力として利用できます。 + +## オプション: シナリオ別の調整 + +### 5.1 フルページスクリーンショットの取得 + +ビューポートサイズのスライスではなく、スクロール可能な全ページを取得したい場合は、`ImageRenderingOptions.PageHeight` などで高さを大きく設定します。 + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 画像フォーマットの変更 + +Aspose.HTML は JPEG、BMP、GIF、TIFF もサポートしています。ファイル拡張子を変更すれば、フォーマットが自動的に切り替わります。 + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 認証が必要なページの処理 + +ログインが必要なページの場合、`HttpClient` で HTML を取得(クッキーやベアラートークンを含めて)し、前述のように文字列として `HTMLDocument` に渡します。これにより、公開されていないページでも **ウェブページを画像に変換** できます。 + +## 完全動作サンプル + +以下はすべてをまとめたコンソールアプリの例です。新しい .NET コンソールプロジェクトに貼り付けて実行すれば、`https://example.com` をダウンロードし、レンダリングして実行ファイルと同じ場所に `output.png` を保存します。 + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **期待される出力:** `output.png` ファイル(800 × 600 px)に `example.com` のホームページが表示されます。任意の画像ビューアで開き、ビジュアルの忠実度を確認してください。 + +## よくある質問と落とし穴 + +- **Q: Linux でも動作しますか?** + はい。Aspose.HTML はクロスプラットフォームです。.NET ランタイムがインストールされていれば問題ありません。 + +- **Q: ページが JavaScript でコンテンツを注入している場合、表示されますか?** + Aspose.HTML は **JavaScript を実行しません**。動的ページの場合は、ヘッドレス Chrome などで事前に HTML をレンダリングし、静的マークアップをレンダラに渡す必要があります。 + +- **Q: 画像が大きくなりすぎてメモリが足りなくなることは?** + 非常に高いページ(10 k ピクセル以上)をレンダリングすると、数百 MB の RAM を消費することがあります。`OutOfMemoryException` が発生したら、セグメントに分割してレンダリングし、PNG を結合する方法を検討してください。 + +- **Q: サーバーにインストールされていないフォントを埋め込めますか?** + はい。CSS に `@font-face` ルールを含めるか、`` タグでフォントファイルを読み込めば、Aspose.HTML がラスタライズ時に埋め込みます。 + +## 結論 + +これで C# で **HTML を PNG にレンダリング** するための、堅牢で本番環境向けの手法が身につきました。`ImageRenderingOptions` を設定し、対象ページを読み込み、`RenderToFile` を呼び出すだけで、**ウェブページを画像に変換**、**HTML を PNG として保存**、**HTML を画像としてエクスポート**、そして **ウェブページを PNG として保存** が数行のコードで実現できます。 + +次のステップは?高 DPI スクリーンショット用に寸法を調整したり、ファイルサイズ削減のために JPEG 出力を試したり、オンデマンドで PNG を返す ASP.NET API に組み込んでみたりしてください。可能性は無限大です。完全にマネージドなソリューションなので、外部ブラウザやネイティブライブラリと格闘する必要はありません。 + +画像レンダリングや他の Aspose.HTML 機能について質問があれば、下のコメント欄にどうぞ。ハッピーコーディング! + +![HTML を PNG にレンダリングした例](placeholder.png "HTML を PNG にレンダリングした例") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/japanese/net/html-document-manipulation/_index.md b/html/japanese/net/html-document-manipulation/_index.md index 38a8521fa..d937120ad 100644 --- a/html/japanese/net/html-document-manipulation/_index.md +++ b/html/japanese/net/html-document-manipulation/_index.md @@ -59,6 +59,8 @@ Aspose.HTML for .NET を使用して SEO を強化する方法を学びます。 Aspose.HTML for .NET のパワーを活用する方法を学びます。HTML の操作とレンダリングにより、Web 開発を強化します。 ### [Aspose.HTML を使用して .NET でドキュメントを作成する](./creating-a-document/) Aspose.HTML for .NET のパワーを解き放ちましょう。HTML および SVG ドキュメントを簡単に作成、操作、最適化する方法を学びます。ステップバイステップの例と FAQ を調べます。 +### [HTML を作成する方法 – 要素を追加しテキストにスタイルを適用する](./how-to-create-html-append-elements-and-style-text/) +HTML を作成し、要素を追加してテキストにスタイルを適用する方法をステップバイステップで解説します。 ### [Aspose.HTML を使用して .NET でドキュメントを編集する](./editing-a-document/) Aspose.HTML for .NET を使用して魅力的な Web コンテンツを作成します。HTML、CSS などを操作する方法を学習します。 ### [Aspose.HTML を使用して .NET でドキュメントを保存する](./saving-a-document/) diff --git a/html/japanese/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/japanese/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..d4578a3e9 --- /dev/null +++ b/html/japanese/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,223 @@ +--- +category: general +date: 2026-03-28 +description: C#でHTMLをプログラム的に作成する方法。要素をbodyに追加し、段落要素を作成し、太字・斜体テキストを加え、CSSスタイルをプログラムで設定する方法を学びます。 +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: ja +og_description: C#でHTMLをプログラム的に作成する方法。このガイドでは、要素をbodyに追加する方法、段落要素を作成する方法、太字・斜体テキストを追加する方法、そしてCSSスタイルをプログラム的に追加する方法を示します。 +og_title: HTMLの作成方法 – 要素を追加してテキストにスタイルを適用する +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: HTMLの作成方法 – 要素の追加とテキストのスタイル設定 +url: /ja/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTMLの作成方法 – 要素の追加とテキストのスタイル設定 + +C# で **HTML を作成** する際に、文字列ビルダーに頼らずに済む方法を知りたくありませんか? Web 自動化やメール生成のシナリオでは、要素を body に追加し、スタイルを適用し、すべて型安全に保てるクリーンな DOM ベースのアプローチが必要です。 + +このチュートリアルでは、Aspose.HTML を使用して **HTML を作成** する手順を詳しく解説します。段落要素の作成から太字イタリックテキストの追加、CSS スタイルのプログラムによる設定まで網羅します。最後には、ブラウザやメール、PDF コンバータに注入できる完成した HTML 文字列が手に入ります。 + +## 必要なもの + +- **.NET 6+**(最近のバージョンであればどれでも可;API は .NET Framework でも安定しています) +- **Aspose.HTML for .NET** NuGet パッケージ – `Install-Package Aspose.HTML` +- C# の基本的な構文理解 – 特別な知識は不要です + +余計な設定ファイルや外部テンプレートエンジンは不要です。純粋な C# コードで DOM を操作します。 + +![HTML作成例](/images/how-to-create-html.png "Screenshot showing the generated HTML structure – how to create html") + +## 手順 1: プロジェクトのセットアップと名前空間のインポート + +まずはコンソール アプリ(または任意の .NET プロジェクト)を作成し、Aspose.HTML の参照を追加します。その後、使用する名前空間をインポートします。 + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **プロのコツ:** DOM 操作だけが必要な場合は、`Aspose.Html.Rendering` 名前空間を除外できます。これは画像や PDF へのレンダリング時にのみ必要です。 + +## 手順 2: CSS スタイルをプログラムで定義する + +**CSS スタイルをプログラムで追加** すると、フォントファミリーやサイズ、太字 + イタリックといった組み合わせフラグを完全にコントロールできます。以下はスタイルオブジェクトの作り方です。 + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +`WebFontStyle.Bold | WebFontStyle.Italic` を使用する理由は何ですか? API はフォントスタイルをフラグ列挙体として扱うため、これらを結合すると手書きの CSS `font-weight: bold; font-style: italic;` と同等になります。 + +## 手順 3: 新しい HTML ドキュメントを作成する + +ここで実際に **HTML を作成** します – ドキュメントオブジェクトがキャンバスの役割を果たします。空白のページに描くイメージです。 + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +この時点でドキュメントには標準の ``、``、`` タグが含まれています。`htmlDoc.Body` を確認すれば、子要素を受け入れる空の `` が見えるはずです。 + +## 手順 4: 段落要素を作成し、太字イタリックテキストを追加する + +ここが **段落要素を作成** するポイントです。`

` タグを生成し、先ほど作ったスタイルを注入し、テキストコンテンツを設定します。 + +```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")` で `

` や `` を作成できます。同じ `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 操作だけです。 + +## まとめ + +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 が生成されます。 + +![create pdf document c# example](/images/create-pdf-csharp.png) + +## 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 にレンダリング](render-html-to-pdf.png "HTML を PDF にレンダリング") + +*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 = "

Hello, world!

"; +``` + +なぜ文字列から始めるのか? 多くの API(メールサービス、PDF ジェネレータ、Web‑view コントロールなど)は HTML マークアップを直接受け取ります。文字列を使うことで、ワークフローが軽量かつテストしやすくなります。 + +## Step 2: Initialise the HTMLDocument with the string + +Aspose.Html の `HTMLDocument` クラスは、文字列、URL、またはストリームからマークアップを読み取れます。ここでは `rawHtml` を渡します。 + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +この時点でドキュメントは完全にメモリ上に存在します。ファイルは作成されず、ブラウザと同様に DOM を操作できます。 + +## Step 3: Build a custom resource handler to capture the output + +**カスタムリソースハンドラ**を使うと、ドキュメントの各部分(HTML、画像、CSS)がどこに保存されるかを制御できます。今回の例ではメインの HTML のみが必要なので、すべてを `MemoryStream` に書き込みます。 + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**なぜカスタムハンドラが必要か?** デフォルトの `Save` メソッドはファイルパスに書き込むため、インメモリワークフローの目的に反します。`HandleResource` をオーバーライドすることで、すべてのリソース要求を捕捉し、保存先を正確に決められます。これが **ディスクに触れずに HTML をキャプチャする方法** の核心です。 + +## Step 4: Save the document using the handler + +ここで Aspose.Html に `HTMLDocument` を `MyMemoryHandler` にシリアライズさせます。`SaveOptions` オブジェクトはデフォルトの HTML 出力で空のままで構いませんが、必要に応じてエンコーディングや整形(pretty‑print)などを調整できます。 + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +`Save` が実行されると `HandleResource` が呼び出され、メイン HTML が `memoryHandler.HtmlStream` に書き込まれ、画像や CSS などの付随ファイルはそれぞれのストリームに書き込まれます(このシンプルな例では追加していません)。 + +## Step 5: Convert the captured stream back to a string + +HTML が `MemoryStream` 内に格納されています。**HTML を文字列に変換**するには、ストリームを巻き戻して `StreamReader` で読み取ります。 + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +`resultHtml` には Aspose.Html が生成した正確なマークアップが入ります。ネットワーク経由で送信したり、メールに埋め込んだり、別のライブラリに渡したりできます。 + +## Step 6: Verify the output – what should you see? + +結果をコンソールに出力して、すべてが正しく動作したことを確認しましょう。 + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**期待される出力** + +```html + +

Hello, world!

+``` + +`` タグが Aspose.Html によって自動的に追加されていることに注目してください。これが手動で文字列を結合するよりもライブラリを使う利点の一つで、マークアップを正規化してくれます。 + +## Full, Runnable Example + +以下はコンソールアプリにそのまま貼り付けて実行できる完全なプログラムです。すべての要素が揃っているので、`using` 文や隠れた依存関係を推測する必要はありません。 + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +コピー&ペーストして **F5** を押すと、整形された HTML がコンソールに表示されます。 + +## Common Questions & Edge Cases + +### What if I need to capture images or CSS files? + +`MyMemoryHandler` はリソースごとに新しい `MemoryStream` を作成します。これを拡張して `info.Uri` をキーとしたディクショナリにストリームを保存すれば、後で画像を Base64 文字列として埋め込むことなどが可能です。 + +### Can I change the encoding of the output? + +はい。`Saving.HtmlSaveOptions` の `Encoding` プロパティを設定して渡します: + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### Does this work with large documents? + +`MemoryStream` は動的に拡張されますが、数百 MB 規模の巨大ページではメモリ使用量に注意が必要です。そのようなシナリオでは、直接ファイルやネットワークソケットにストリームする方が適しています。 + +### How do I **write HTML to stream** in a single line? + +カスタムハンドラが不要な場合は、`htmlDocument.Save(Stream, SaveOptions)` を直接呼び出せます: + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +コンパクトな代替手段ですが、付随リソースを捕捉する機能は失われます。 + +## Pro Tips & Pitfalls + +* **Pro tip:** `MemoryStream` を読み取る前に必ず `Position` を `0` にリセットしてください。リセットし忘れると空文字列になります。 +* **Watch out for:** `null` の `SaveOptions` を渡すと、Aspose.Html はデフォルトを使用しますが、明示的にオプションを指定すると意図が明確になります。 +* **Typical mistake:** `Save` が完了する前に `HtmlStream` が生成されたと想定すること。ストリームは `Save` 呼び出しが戻った後にのみ利用可能です。 +* **Performance note:** 繰り返し変換する場合は、`MyMemoryHandler` のインスタンスを再利用し、実行間でストリームをクリアして余分な割り当てを防ぎましょう。 + +## Conclusion + +今回、C# で **文字列からHTMLを作成**し、**カスタムリソースハンドラ**で結果をキャプチャし、**HTML をストリームに書き込む**方法を示しました。インメモリストリームを文字列に戻すことで、ファイルシステムに触れずに **HTML を文字列に変換**する信頼できる手段も手に入ります。 + +このパターンは、メールテンプレート作成、PDF 生成、またはオンザフライで HTML マークアップが必要なあらゆるシナリオに柔軟に対応できます。次のステップとして、画像を Base64 埋め込みにしたり、`HtmlSaveOptions` でミニファイしたり、文字列を Aspose.PDF に渡して PDF 変換を試してみてください。 + +リソースの取り扱い、エンコーディング、パフォーマンスに関する質問があれば、下のコメント欄にどうぞ — Happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/korean/net/generate-jpg-and-png-images/_index.md b/html/korean/net/generate-jpg-and-png-images/_index.md index 2f2fd11d0..ce0e5cc3d 100644 --- a/html/korean/net/generate-jpg-and-png-images/_index.md +++ b/html/korean/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML for .NET을 .NET 프로젝트에 통합하는 것은 번거롭지 DOCX 문서를 PNG 또는 JPG 이미지로 변환할 때 안티앨리어싱을 적용하는 방법을 단계별로 안내합니다. ### [DOCX를 PNG로 변환하고 ZIP 아카이브 만들기 C# 튜토리얼](./convert-docx-to-png-create-zip-archive-c-tutorial/) C#을 사용해 DOCX 파일을 PNG 이미지로 변환하고, 결과를 ZIP 파일로 압축하는 방법을 단계별로 안내합니다. +### [C#에서 HTML을 PNG로 렌더링하는 완전 단계별 가이드](./render-html-to-png-in-c-complete-step-by-step-guide/) +C#을 사용해 HTML을 PNG 이미지로 변환하는 방법을 단계별로 자세히 설명합니다. ## 결론 diff --git a/html/korean/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/korean/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..d4163717e --- /dev/null +++ b/html/korean/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-03-28 +description: Aspose.HTML를 사용하여 C#에서 HTML을 PNG로 렌더링하는 방법을 배웁니다. 이 가이드는 웹 페이지를 이미지로 + 변환하는 방법, 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: ko +og_description: Aspose.HTML를 사용하여 C#에서 HTML을 PNG로 렌더링하는 방법을 배워보세요. 이 쉬운 튜토리얼을 따라 웹 + 페이지를 이미지로 변환하고, HTML을 PNG로 저장하며, HTML을 이미지로 내보내세요. +og_title: C#에서 HTML을 PNG로 렌더링하기 – 완전한 단계별 가이드 +tags: +- C# +- Aspose.HTML +- Image Rendering +- .NET +title: C#에서 HTML을 PNG로 렌더링 – 완전한 단계별 가이드 +url: /ko/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 >}} + +# Render HTML to PNG in C# – Complete Step‑by‑Step Guide + +**HTML을 PNG로 렌더링**을 빠르게 해야 하나요? 이 튜토리얼에서는 Aspose.HTML 라이브러리를 사용해 .NET에서 HTML을 PNG로 렌더링하는 방법을 단계별로 안내합니다. 썸네일 서비스 구축, 이메일 미리보기 생성, 혹은 보고서를 위해 **웹페이지를 이미지로 변환**해야 할 때, 아래 단계만 따라 하면 최소한의 노력으로 원하는 결과를 얻을 수 있습니다. + +대부분의 개발자는 브라우저‑스크린샷 도구를 사용하고 headless Chrome 바이너리를 다루게 됩니다. 이는 동작하지만 많은 오버헤드가 발생합니다. Aspose.HTML를 사용하면 **코드에서 직접 HTML을 PNG로 저장**할 수 있어 외부 프로세스가 필요 없습니다. 이 가이드를 마치면 **HTML을 이미지로 내보내기**, 디스크에 결과 저장, 안티앨리어싱 및 크기 조정 등을 UI에 맞게 조정할 수 있게 됩니다. + +## What You’ll Learn + +- NuGet을 통해 Aspose.HTML을 설치하는 방법 +- 고품질 출력을 위한 `ImageRenderingOptions` 설정 +- 온라인 페이지 또는 로컬 HTML 문자열 로드 +- 페이지를 PNG 파일로 렌더링 +- **웹페이지를 PNG로 저장**할 때 흔히 발생하는 문제와 해결 방법 + +Aspose 사용 경험이 없어도 괜찮습니다. 기본적인 C#/.NET 환경과 인터넷 연결만 있으면 됩니다. + +## Prerequisites + +- .NET 6.0 이상 (.NET Core, .NET Framework 4.6+, .NET 7에서도 동작) +- Visual Studio 2022 (또는 선호하는 IDE) +- `Aspose.HTML` 패키지를 가져올 수 있는 NuGet 접근 권한 +- 생성된 PNG를 쓸 수 있는 폴더에 대한 쓰기 권한 + +> **Pro tip:** 서버에서 실행할 경우, 프로세스를 실행하는 계정이 출력 디렉터리에 쓸 수 있는지 확인하세요. 그렇지 않으면 렌더링 단계가 조용히 실패합니다. + +## Step 1: Install Aspose.HTML + +먼저 프로젝트에 Aspose.HTML 라이브러리를 추가합니다. NuGet Package Manager Console을 열고 다음을 실행하세요: + +```powershell +Install-Package Aspose.HTML +``` + +또는 UI를 선호한다면 **Aspose.HTML**을 검색하고 **Install**을 클릭합니다. 이렇게 하면 렌더링 엔진을 포함한 모든 필요한 DLL이 가져와집니다. + +> **Why this matters:** Aspose.HTML은 HTML 파싱, CSS 레이아웃, 이미지 래스터화 작업을 내부적으로 처리하므로 headless 브라우저를 직접 구동할 필요가 없습니다. 또한 완전 관리형이어서 네이티브 종속성을 배포할 필요가 없습니다. + +## Step 2: Configure Image Rendering Options + +렌더링하기 전에 출력 크기와 품질을 결정합니다. `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 +}; +``` + +> **Why enable antialiasing?** 안티앨리어싱을 사용하지 않으면 가장자리가 들쭉날쭉하게 보일 수 있습니다. 특히 고 DPI 화면에서 눈에 띕니다. 안티앨리어싱을 켜면 약간의 성능 비용이 발생하지만 훨씬 깔끔한 PNG를 얻을 수 있습니다. + +## Step 3: Load the HTML Content + +원격 URL, 로컬 파일, 혹은 원시 HTML 문자열을 렌더링할 수 있습니다. 여기서는 실시간 페이지를 가져오는 예시를 보여줍니다. + +```csharp +// Step 3: Load the HTML document from a URL +var htmlDoc = new HTMLDocument("https://example.com"); +``` + +HTML이 문자열 형태로 이미 있다면 `MemoryStream`을 받는 오버로드를 사용하세요: + +```csharp +string rawHtml = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **Edge case:** 일부 사이트는 브라우저가 아닌 User‑Agent를 차단합니다. 빈 이미지가 생성되면 요청에 사용자 지정 User‑Agent 헤더를 설정하거나 먼저 HTML을 다운로드한 뒤 문자열로 전달하십시오. + +## Step 4: Render to PNG + +이제 핵심 작업인 `RenderToFile` 호출입니다. PNG를 저장할 전체 경로를 지정합니다. + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +이 라인이 실행된 후 지정한 폴더에 `output.png`가 생성됩니다. 이미지 뷰어로 열어 결과를 확인하세요. + +> **What to expect:** PNG는 정확히 800 × 600 px이며, 텍스트가 부드럽고 색상이 원본 페이지와 일치합니다. 소스 페이지가 외부 CSS나 이미지를 사용한다면 Aspose.HTML이 해당 리소스를 자동으로 다운로드합니다(접근 가능할 경우). + +## Step 5: Verify and Use the Result + +이미지가 정상적으로 생성됐는지 간단히 확인합니다. + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +이제 **웹페이지를 PNG로 저장**해 아카이브용으로 보관하거나, 이메일 뉴스레터에 이미지를 삽입하거나, 래스터화된 페이지를 기대하는 머신러닝 파이프라인에 전달할 수 있습니다. + +## Optional: Tweaking for Different Scenarios + +### 5.1 Rendering a Full‑Page Screenshot + +뷰포트 크기 대신 전체 스크롤 가능한 페이지 전체를 캡처하려면 높이를 더 크게 지정하거나 `ImageRenderingOptions.PageHeight`를 사용합니다: + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 Changing the Image Format + +Aspose.HTML은 JPEG, BMP, GIF, TIFF도 지원합니다. 파일 확장자를 바꾸면 형식이 자동으로 전환됩니다: + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 Handling Authentication‑Protected Pages + +로그인 뒤에 접근 가능한 페이지의 경우, `HttpClient`(쿠키 또는 Bearer 토큰 포함)를 사용해 HTML을 가져온 뒤 앞서 보여준 대로 문자열을 `HTMLDocument`에 전달합니다. 이렇게 하면 페이지가 공개되지 않아도 **웹페이지를 이미지로 변환**할 수 있습니다. + +## Complete Working Example + +아래는 모든 내용을 하나로 모은 콘솔 앱 예시입니다. 새 .NET 콘솔 프로젝트에 복사‑붙여넣기하고 실행하면 `https://example.com`을 다운로드해 렌더링하고 실행 파일 옆에 `output.png`를 저장합니다. + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **Expected output:** 800 × 600 px 크기의 `output.png` 파일이 생성되며, `example.com` 홈페이지가 표시됩니다. 이미지 뷰어로 열어 시각적 정확성을 확인하세요. + +## Common Questions & Gotchas + +- **Q: Does this work on Linux?** + Yes. Aspose.HTML은 크로스‑플랫폼이며 .NET 런타임만 설치되어 있으면 됩니다. + +- **Q: My page uses JavaScript to inject content—will it appear?** + Aspose.HTML은 **JavaScript를 실행하지** 않습니다. 동적 페이지의 경우 headless Chrome 등으로 미리 렌더링한 HTML을 만든 뒤 렌더러에 전달해야 합니다. + +- **Q: How large can the image be before memory becomes an issue?** + 매우 긴 페이지(10 k+ 픽셀) 렌더링 시 수백 메가바이트의 RAM을 사용할 수 있습니다. `OutOfMemoryException`이 발생하면 페이지를 여러 구간으로 나누어 렌더링하고 PNG를 합치는 방식을 고려하세요. + +- **Q: Can I embed fonts that aren’t installed on the server?** + Yes. CSS에 `@font-face` 규칙을 포함하거나 `` 태그로 폰트 파일을 로드하면 Aspose.HTML이 래스터화 과정에서 폰트를 포함합니다. + +## Conclusion + +이제 C#에서 **HTML을 PNG로 렌더링**하는 견고하고 프로덕션 수준의 방법을 확보했습니다. `ImageRenderingOptions`를 구성하고, 대상 페이지를 로드한 뒤 `RenderToFile`을 호출하면 **웹페이지를 이미지로 변환**, **HTML을 PNG로 저장**, **HTML을 이미지로 내보내기**, **웹페이지를 PNG로 저장**을 몇 줄의 코드만으로 구현할 수 있습니다. + +다음 단계는? 고 DPI 스크린샷을 위해 해상도를 조정하거나, 파일 크기를 줄이기 위해 JPEG 출력 실험, 혹은 PNG를 실시간으로 반환하는 ASP.NET API에 이 로직을 통합해 보세요. 가능성은 무궁무진하며, 완전 관리형 솔루션이므로 외부 브라우저나 네이티브 라이브러리와 씨름할 필요가 없습니다. + +이미지 렌더링이나 Aspose.HTML의 다른 기능에 대해 궁금한 점이 있으면 아래 댓글로 남겨 주세요. Happy coding! + +![HTML을 PNG로 렌더링 예시](placeholder.png "HTML을 PNG로 렌더링") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/korean/net/html-document-manipulation/_index.md b/html/korean/net/html-document-manipulation/_index.md index dc4818e47..ade0c60dc 100644 --- a/html/korean/net/html-document-manipulation/_index.md +++ b/html/korean/net/html-document-manipulation/_index.md @@ -59,6 +59,8 @@ Aspose.HTML for .NET으로 SEO를 강화하는 방법을 알아보세요. 순위 .NET용 Aspose.HTML의 힘을 활용하는 방법을 알아보세요. HTML 조작 및 렌더링으로 웹 개발을 강화하세요. ### [Aspose.HTML을 사용하여 .NET에서 문서 만들기](./creating-a-document/) .NET용 Aspose.HTML의 힘을 최대한 활용하세요. HTML 및 SVG 문서를 쉽게 만들고, 조작하고, 최적화하는 방법을 배우세요. 단계별 예제와 FAQ를 살펴보세요. +### [HTML 만들기 – 요소 추가 및 텍스트 스타일 지정](./how-to-create-html-append-elements-and-style-text/) +HTML 문서를 생성하고 요소를 추가하며 텍스트에 스타일을 적용하는 방법을 단계별로 안내합니다. ### [C#에서 문자열로 HTML 만들기 – 사용자 정의 리소스 핸들러 가이드](./create-html-from-string-in-c-custom-resource-handler-guide/) Aspose.HTML for .NET을 사용해 문자열에서 HTML을 생성하고 사용자 정의 리소스 핸들러로 처리하는 방법을 단계별로 안내합니다. ### [Aspose.HTML을 사용하여 .NET에서 문서 편집](./editing-a-document/) diff --git a/html/korean/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/korean/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..b4ef8ae5a --- /dev/null +++ b/html/korean/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-03-28 +description: C#에서 프로그래밍으로 HTML을 만드는 방법. 요소를 본문에 추가하고, 단락 요소를 생성하며, 굵은 기울임 텍스트를 추가하고, + CSS 스타일을 프로그래밍으로 적용하는 방법을 배웁니다. +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: ko +og_description: C#에서 프로그래밍으로 HTML을 만드는 방법. 이 가이드는 요소를 본문에 추가하고, 단락 요소를 생성하며, 굵은 기울임 + 텍스트를 추가하고, CSS 스타일을 프로그래밍으로 적용하는 방법을 보여줍니다. +og_title: HTML 만들기 방법 – 요소 추가 및 텍스트 스타일링 +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: HTML 만들기 방법 – 요소 추가 및 텍스트 스타일링 +url: /ko/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML 만들기 – 요소 추가 및 텍스트 스타일링 + +C#에서 문자열 빌더를 사용하지 않고 **HTML을 만드는 방법**을 궁금해 본 적 있나요? 당신만 그런 것이 아닙니다. 많은 웹 자동화 또는 이메일 생성 시나리오에서 요소를 body에 추가하고 스타일을 지정하며 모든 것을 타입 안전하게 유지할 수 있는 깔끔한 DOM 기반 접근 방식이 필요합니다. + +이 튜토리얼에서는 Aspose.HTML을 사용하여 **HTML을 만드는 방법**을 단계별로 안내합니다. 단락 요소 생성부터 굵은 이탤릭 텍스트 추가 및 CSS 스타일을 프로그래밍 방식으로 추가하는 모든 과정을 다룹니다. 끝까지 진행하면 브라우저, 이메일 또는 PDF 변환기에 삽입할 수 있는 사용 준비가 된 HTML 문자열을 얻게 됩니다. + +## 필요한 사항 + +- **.NET 6+** (최근 버전이면 모두 작동합니다; API는 .NET Framework에서도 안정적입니다) +- **Aspose.HTML for .NET** NuGet 패키지 – `Install-Package Aspose.HTML` +- C# 구문에 대한 기본 이해 – 특별한 것이 필요하지 않습니다 + +추가 설정 파일이나 외부 템플릿 엔진이 필요 없습니다. DOM을 조작하는 순수 C# 코드만 있으면 됩니다. + +![how to create html example](/images/how-to-create-html.png "Screenshot showing the generated HTML structure – how to create html") + +## 단계 1: 프로젝트 설정 및 네임스페이스 가져오기 + +우선, 콘솔 앱(또는 任意 .NET 프로젝트)을 만들고 Aspose.HTML 참조를 추가합니다. 그런 다음 사용할 네임스페이스를 가져옵니다. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **Pro tip:** DOM 조작만 필요하다면 `Aspose.Html.Rendering` 네임스페이스를 제외해도 됩니다 – 이 네임스페이스는 문서를 이미지나 PDF로 렌더링할 때만 필요합니다. + +## 단계 2: CSS 스타일을 프로그래밍 방식으로 정의하기 + +프로그램matically **CSS 스타일을 추가**하면 글꼴 패밀리, 크기 및 굵게 + 이탤릭과 같은 결합된 font‑style 플래그를 완전히 제어할 수 있습니다. 다음은 해당 스타일 객체를 만드는 방법입니다. + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +두 개의 별도 속성 대신 `WebFontStyle.Bold | WebFontStyle.Italic`을 사용하는 이유는 무엇일까요? API는 폰트 스타일을 플래그 열거형으로 처리하므로 이를 병합하면 손으로 작성하는 정확한 CSS `font-weight: bold; font-style: italic;`와 동일한 결과를 얻습니다. + +## 단계 3: 새 HTML 문서 만들기 + +이제 실제로 **HTML을 만드는 방법**을 살펴보겠습니다 – 문서 객체가 우리의 캔버스 역할을 합니다. 마치 그림을 그릴 수 있는 빈 페이지와 같습니다. + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +이 시점에서 문서에는 표준 ``, ``, `` 태그가 포함됩니다. `htmlDoc.Body`를 검사하면 자식 요소를 받을 준비가 된 빈 `` 요소를 확인할 수 있습니다. + +## 단계 4: 단락 요소 생성 및 굵은 이탤릭 텍스트 추가 + +여기서 **create paragraph element** 키워드가 빛을 발합니다. `

` 태그를 생성하고, 앞서 만든 스타일을 주입한 뒤 텍스트 내용을 설정합니다. + +```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")`와 같이 `

` 또는 ``을 만들 수 있습니다. 동일한 `SetAttribute` 패턴이 작동합니다. + +- **Appending Multiple Nodes:** 문자열 컬렉션을 순회하면서 각 문자열에 대해 단락을 생성하고 각각을 body에 추가합니다. 스타일이 동일하다면 같은 `CSSStyleDeclaration`을 재사용하세요—재생성할 필요가 없습니다. + +- **Encoding Concerns:** `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 조작만으로 구현됩니다. + +## 마무리 + +우리는 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가 생성됩니다. + +![C# PDF 문서 생성 예제](/images/create-pdf-csharp.png) + +## 자주 묻는 질문 (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로 렌더링 예시](render-html-to-pdf.png "HTML을 PDF로 렌더링") + +*이미지 대체 텍스트: 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 = "

Hello, world!

"; +``` + +왜 문자열부터 시작할까요? 많은 API(이메일 서비스, PDF 생성기, 웹‑뷰 컨트롤 등)가 HTML 마크업을 직접 받아들이기 때문입니다. 문자열을 사용하면 워크플로우가 가볍고 테스트하기 쉬워집니다. + +--- + +## 2단계: 문자열로 HTMLDocument 초기화 + +Aspose.Html의 `HTMLDocument` 클래스는 문자열, URL, 스트림 중 하나에서 마크업을 읽을 수 있습니다. 여기서는 `rawHtml`을 전달합니다. + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +이 시점에서 문서는 완전히 메모리 상에 존재합니다. 파일이 생성되지 않으며, 브라우저처럼 DOM을 자유롭게 조작할 수 있습니다. + +--- + +## 3단계: 출력 캡처용 커스텀 리소스 핸들러 구축 + +**커스텀 리소스 핸들러**를 사용하면 문서의 각 부분(HTML, 이미지, CSS)이 어디에 저장될지 제어할 수 있습니다. 이번 예제에서는 메인 HTML만 필요하므로 모든 것을 `MemoryStream`에 씁니다. + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**왜 커스텀 핸들러인가?** 기본 `Save` 메서드는 파일 경로에 기록하므로 인‑메모리 워크플로우의 목적에 어긋납니다. `HandleResource`를 오버라이드하면 모든 리소스 요청을 가로채어 정확히 원하는 위치에 저장할 수 있습니다. 이것이 **디스크에 손대지 않고 HTML을 캡처**하는 핵심 방법입니다. + +--- + +## 4단계: 핸들러를 사용해 문서 저장 + +이제 Aspose.Html에 `HTMLDocument`를 `MyMemoryHandler`에 직렬화하도록 지시합니다. `SaveOptions` 객체는 기본 HTML 출력에 대해 비워두어도 되지만, 필요에 따라 인코딩이나 pretty‑print 등을 조정할 수 있습니다. + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +`Save`가 실행되면 `HandleResource`가 호출되고, 메인 HTML은 `memoryHandler.HtmlStream`에 기록됩니다. 부가적인 파일(이미지, CSS)도 각각의 스트림에 저장되지만, 이번 간단 예제에서는 포함되지 않았습니다. + +--- + +## 5단계: 캡처한 스트림을 문자열로 변환 + +이제 `MemoryStream` 안에 HTML이 들어 있습니다. **HTML을 문자열로 변환**하려면 스트림을 되감고 `StreamReader`로 읽기만 하면 됩니다. + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +`resultHtml`에는 Aspose.Html이 만든 정확한 마크업이 들어 있습니다. 이를 네트워크로 전송하거나 이메일에 삽입하거나 다른 라이브러리에 전달할 수 있습니다. + +--- + +## 6단계: 출력 확인 – 기대 결과는? + +콘솔에 결과를 출력해 모든 것이 정상적으로 동작했는지 확인해 봅시다. + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**예상 출력** + +```html + +

Hello, world!

+``` + +Aspose.Html이 자동으로 `` 태그를 추가한 것을 볼 수 있습니다. 이것이 문자열을 직접 이어붙이는 방식보다 라이브러리를 선호하는 이유 중 하나이며, 마크업을 정규화해 줍니다. + +--- + +## 전체 실행 가능한 예제 + +아래 코드는 콘솔 앱에 바로 복사해 넣고 실행할 수 있는 완전한 프로그램입니다. 모든 요소가 한 곳에 모여 있어 `using` 문이나 숨겨진 의존성을 고민할 필요가 없습니다. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +복사‑붙여넣기 후 **F5**를 눌러 실행하면 포맷된 HTML이 콘솔에 출력됩니다. + +--- + +## 흔히 묻는 질문 및 예외 상황 + +### 이미지나 CSS 파일도 캡처해야 하면? + +`MyMemoryHandler`는 이미 각 리소스마다 새로운 `MemoryStream`을 생성합니다. 이를 `info.Uri`를 키로 하는 딕셔너리에 저장하도록 확장하면, 나중에 이미지를 Base64 문자열로 삽입하는 등 다양한 활용이 가능합니다. + +### 출력 인코딩을 바꾸고 싶다면? + +`Saving.HtmlSaveOptions`에 `Encoding` 속성을 설정해 전달하면 됩니다. + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### 대용량 문서에도 적용 가능할까? + +`MemoryStream`은 동적으로 성장하지만, 수백 MB 규모의 페이지는 메모리 사용량을 주의해야 합니다. 이런 경우에는 파일이나 네트워크 소켓으로 직접 스트리밍하는 것이 좋습니다. + +### **HTML을 스트림에 쓰기**를 한 줄로 처리하려면? + +커스텀 핸들러가 필요 없을 때는 `htmlDocument.Save(Stream, SaveOptions)`를 바로 사용할 수 있습니다. + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +간결한 대안이지만, 부수 리소스를 가로채는 기능은 포기하게 됩니다. + +--- + +## 전문가 팁 & 함정 + +* **팁:** `MemoryStream`을 읽기 전에 반드시 `Position`을 `0`으로 재설정하세요. 이를 놓치면 빈 문자열이 반환됩니다. +* **주의:** `null` `SaveOptions`를 전달하면 Aspose.Html이 기본값을 사용합니다. 명시적인 옵션을 제공하면 의도가 명확해집니다. +* **실수 방지:** `Save`가 끝나기 전에 `HtmlStream`이 채워졌다고 가정하지 마세요. 스트림은 `Save` 호출이 반환된 뒤에만 사용할 수 있습니다. +* **성능:** 반복 변환이 필요하면 `MyMemoryHandler` 인스턴스를 재사용하고, 각 실행 후 스트림을 정리해 불필요한 할당을 피하세요. + +--- + +## 결론 + +C#에서 **문자열로부터 HTML을 생성**하고, **커스텀 리소스 핸들러**로 결과를 캡처한 뒤, **스트림에 HTML을 쓰기**까지 전체 흐름을 살펴보았습니다. 메모리 스트림을 다시 문자열로 변환함으로써 파일 시스템에 손대지 않고 **HTML을 문자열로 변환**하는 안정적인 방법도 확보했습니다. + +이 패턴은 이메일 템플릿, PDF 생성, 혹은 실시간으로 HTML 마크업이 필요한 모든 시나리오에 유연하게 적용할 수 있습니다. 다음 단계로는 이미지를 Base64로 삽입하거나, `HtmlSaveOptions`를 활용해 최소화(minification)하고, 문자열을 Aspose.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/polish/net/generate-jpg-and-png-images/_index.md b/html/polish/net/generate-jpg-and-png-images/_index.md index fff5f7a92..0f7a2d8d3 100644 --- a/html/polish/net/generate-jpg-and-png-images/_index.md +++ b/html/polish/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Naucz się używać Aspose.HTML dla .NET do manipulowania dokumentami HTML, konw Dowiedz się, jak włączyć antyaliasing przy konwersji dokumentów DOCX do formatów PNG i JPG przy użyciu Aspose.HTML. ### [Konwertuj docx do png – utwórz archiwum zip w C# – samouczek](./convert-docx-to-png-create-zip-archive-c-tutorial/) Dowiedz się, jak konwertować pliki DOCX na obrazy PNG i spakować je do archiwum ZIP przy użyciu C# i Aspose.HTML. +### [Renderowanie HTML do PNG w C# – kompletny przewodnik krok po kroku](./render-html-to-png-in-c-complete-step-by-step-guide/) +Dowiedz się, jak w pełni przetworzyć HTML na obraz PNG w C# przy użyciu Aspose.HTML, krok po kroku od konfiguracji po optymalizację. ## Wniosek diff --git a/html/polish/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/polish/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..d75778a48 --- /dev/null +++ b/html/polish/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,246 @@ +--- +category: general +date: 2026-03-28 +description: Dowiedz się, jak renderować HTML do PNG w C# przy użyciu Aspose.HTML. + Ten przewodnik obejmuje także, jak konwertować stronę internetową na obraz, zapisać + HTML jako PNG, eksportować HTML jako obraz oraz zapisać stronę internetową jako + 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: pl +og_description: Dowiedz się, jak renderować HTML do PNG w C# przy użyciu Aspose.HTML. + Skorzystaj z tego prostego samouczka, aby przekształcić stronę internetową w obraz, + zapisać HTML jako PNG oraz wyeksportować HTML jako obraz. +og_title: Renderowanie HTML do PNG w C# – Kompletny przewodnik krok po kroku +tags: +- C# +- Aspose.HTML +- Image Rendering +- .NET +title: Renderowanie HTML do PNG w C# – Kompletny przewodnik krok po kroku +url: /pl/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 >}} + +# Renderowanie HTML do PNG w C# – Kompletny przewodnik krok po kroku + +Potrzebujesz szybko **renderować HTML do PNG**? W tym samouczku przeprowadzimy Cię dokładnie przez proces renderowania HTML do PNG przy użyciu biblioteki Aspose.HTML dla .NET. Niezależnie od tego, czy tworzysz usługę miniatur, generujesz podglądy e‑maili, czy po prostu musisz **przekształcić stronę internetową w obraz** do raportowania, poniższe kroki doprowadzą Cię do celu bez zbędnego wysiłku. + +Oto co się dzieje — większość programistów sięga po narzędzie do zrzutów ekranu przeglądarki i kończy na żonglowaniu binarkami headless Chrome. To działa, ale wprowadza sporo narzutu. Z Aspose.HTML możesz **zapisać HTML jako PNG** bezpośrednio z kodu, bez wymaganego procesu zewnętrznego. Po zakończeniu tego przewodnika będziesz w stanie **eksportować HTML jako obraz**, zapisać wynik na dysku i nawet dostosować antyaliasing lub wymiary, aby pasowały do Twojego interfejsu. + +## Czego się nauczysz + +- Jak zainstalować Aspose.HTML za pomocą NuGet. +- Konfigurowanie `ImageRenderingOptions` dla wysokiej jakości wyjścia. +- Ładowanie strony online lub lokalnego ciągu HTML. +- Renderowanie strony do pliku PNG. +- Typowe pułapki przy **zapisywaniu strony jako PNG** i jak ich unikać. + +Nie wymagana jest wcześniejsza znajomość Aspose; wystarczy podstawowa konfiguracja C#/.NET i połączenie z internetem. + +## Wymagania wstępne + +- .NET 6.0 lub nowszy (kod działa na .NET Core, .NET Framework 4.6+ oraz .NET 7). +- Visual Studio 2022 (lub dowolne IDE, które preferujesz). +- Dostęp do NuGet w celu pobrania pakietu `Aspose.HTML`. +- Folder, w którym masz uprawnienia do zapisu dla generowanego pliku PNG. + +> **Pro tip:** Jeśli planujesz uruchomić to na serwerze, upewnij się, że konto uruchamiające proces ma prawo zapisu do katalogu wyjściowego; w przeciwnym razie krok renderowania zakończy się cichym niepowodzeniem. + +## Krok 1: Zainstaluj Aspose.HTML + +Najpierw dodaj bibliotekę Aspose.HTML do swojego projektu. Otwórz konsolę Menedżera Pakietów NuGet i uruchom: + +```powershell +Install-Package Aspose.HTML +``` + +Lub, jeśli wolisz interfejs graficzny, wyszukaj **Aspose.HTML** i kliknij **Install**. To pobierze wszystkie niezbędne pliki DLL, w tym silnik renderujący. + +> **Dlaczego to ważne:** Aspose.HTML obsługuje parsowanie HTML, układ CSS i rasteryzację obrazu wewnętrznie, więc nie musisz uruchamiać przeglądarki w trybie headless. Jest również w pełni zarządzany, co oznacza brak natywnych zależności do dystrybucji. + +## Krok 2: Skonfiguruj opcje renderowania obrazu + +Zanim rozpoczniesz renderowanie, zdecyduj o rozmiarze i jakości wyjścia. Klasa `ImageRenderingOptions` zapewnia precyzyjną kontrolę. + +```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 +}; +``` + +> **Dlaczego włączyć antyaliasing?** Bez niego krawędzie mogą wyglądać na ząbkowane, co jest szczególnie widoczne na ekranach o wysokiej rozdzielczości DPI. Włączenie go zwiększa nieco koszt wydajności, ale daje znacznie czystszy PNG. + +## Krok 3: Załaduj zawartość HTML + +Możesz renderować zdalny URL, lokalny plik lub nawet surowy ciąg HTML. W tym przykładzie pobierzemy żywą stronę. + +```csharp +// Step 3: Load the HTML document from a URL +var htmlDoc = new HTMLDocument("https://example.com"); +``` + +Jeśli masz HTML przechowywany w ciągu, użyj przeciążenia, które przyjmuje `MemoryStream`: + +```csharp +string rawHtml = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **Przypadek brzegowy:** Niektóre witryny blokują agenty użytkownika niebędące przeglądarkami. Jeśli otrzymasz pusty obraz, ustaw niestandardowy nagłówek User‑Agent w żądaniu lub najpierw pobierz HTML i przekaż go jako ciąg. + +## Krok 4: Renderuj do PNG + +Teraz podstawowa operacja — wywołanie `RenderToFile`. Podaj pełną ścieżkę, gdzie chcesz zapisać plik PNG. + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +Po wykonaniu tej linii znajdziesz `output.png` w określonym folderze. Otwórz go w dowolnej przeglądarce obrazów, aby zweryfikować wynik. + +> **Czego się spodziewać:** PNG będzie dokładnie 800 × 600 px, z płynnym tekstem i kolorami odpowiadającymi oryginalnej stronie. Jeśli strona źródłowa używa zewnętrznych CSS lub obrazów, Aspose.HTML pobierze te zasoby automatycznie, o ile będą dostępne. + +## Krok 5: Zweryfikuj i użyj wyniku + +Szybka kontrola poprawności zapewnia, że faktycznie otrzymałeś obraz, a nie pusty plik. + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +Możesz teraz **zapisać stronę jako PNG** do archiwizacji, osadzić obraz w newsletterach e‑mailowych lub wprowadzić go do potoku uczenia maszynowego, który oczekuje rasteryzowanych stron. + +## Opcjonalnie: Dostosowywanie do różnych scenariuszy + +### 5.1 Renderowanie pełnego zrzutu ekranu strony + +Jeśli chcesz całą przewijaną stronę zamiast wycinka o rozmiarze okna widoku, ustaw wysokość na większą wartość lub użyj `ImageRenderingOptions.PageHeight`: + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 Zmiana formatu obrazu + +Aspose.HTML obsługuje JPEG, BMP, GIF i TIFF. Zmień rozszerzenie pliku, a format zostanie automatycznie dopasowany: + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 Obsługa stron chronionych uwierzytelnieniem + +Dla stron za loginem pobierz HTML przy użyciu `HttpClient` (włączając ciasteczka lub tokeny typu bearer), a następnie przekaż ciąg do `HTMLDocument`, jak pokazano wcześniej. Dzięki temu nadal możesz **przekształcić stronę w obraz**, nawet gdy strona nie jest publicznie dostępna. + +## Kompletny działający przykład + +Poniżej znajduje się samodzielna aplikacja konsolowa, która łączy wszystkie elementy. Skopiuj i wklej ją do nowego projektu .NET console i uruchom — pobierze `https://example.com`, wyrenderuje go i zapisze `output.png` obok pliku wykonywalnego. + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **Oczekiwany wynik:** Plik `output.png`, 800 × 600 px, pokazujący stronę główną `example.com`. Otwórz go w dowolnej przeglądarce obrazów, aby potwierdzić wierność wizualną. + +## Częste pytania i pułapki + +- **Q: Czy to działa na Linuxie?** + Tak. Aspose.HTML jest wieloplatformowy; wystarczy, że środowisko uruchomieniowe .NET jest zainstalowane. + +- **Q: Moja strona używa JavaScript do wstrzykiwania treści — czy się pojawi?** + Aspose.HTML **nie** wykonuje JavaScript. Dla dynamicznych stron musisz wstępnie wyrenderować HTML (np. przy użyciu headless Chrome), a następnie przekazać statyczny markup do renderera. + +- **Q: Jak duży może być obraz, zanim pojawią się problemy z pamięcią?** + Renderowanie bardzo wysokich stron (10 k+ pikseli) może zużywać kilkaset megabajtów RAM. Jeśli napotkasz `OutOfMemoryException`, rozważ renderowanie w segmentach i łączenie PNG‑ów. + +- **Q: Czy mogę osadzić czcionki, które nie są zainstalowane na serwerze?** + Tak. Dodaj reguły `@font-face` w swoim CSS lub załaduj pliki czcionek za pomocą tagu ``; Aspose.HTML osadzi je podczas rasteryzacji. + +## Zakończenie + +Masz teraz solidną, gotową do produkcji metodę **renderowania HTML do PNG** w C#. Konfigurując `ImageRenderingOptions`, ładując docelową stronę i wywołując `RenderToFile`, możesz **przekształcić stronę w obraz**, **zapisać HTML jako PNG**, **eksportować HTML jako obraz** i **zapisać stronę jako PNG** przy użyciu zaledwie kilku linii kodu. + +Kolejne kroki? Spróbuj dostosować wymiary dla zrzutów ekranu o wysokim DPI, eksperymentuj z wyjściem JPEG dla mniejszych rozmiarów plików lub zintegruj tę logikę z API ASP.NET, które zwraca PNG na żądanie. Możliwości są nieograniczone, a ponieważ rozwiązanie jest w pełni zarządzane, nie będziesz musiał zmagać się z zewnętrznymi przeglądarkami czy natywnymi bibliotekami. + +Masz więcej pytań dotyczących renderowania obrazów lub innych funkcji Aspose.HTML? Zostaw komentarz poniżej i powodzenia w kodowaniu! + +![render html to png example](placeholder.png "render html to png") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/polish/net/html-document-manipulation/_index.md b/html/polish/net/html-document-manipulation/_index.md index 4d8dfd764..297e33c68 100644 --- a/html/polish/net/html-document-manipulation/_index.md +++ b/html/polish/net/html-document-manipulation/_index.md @@ -59,6 +59,8 @@ Odkryj potencjał Aspose.HTML dla .NET dzięki naszemu kompleksowemu przewodniko Dowiedz się, jak wykorzystać potencjał pakietu Aspose.HTML dla platformy .NET. Ulepsz swoje możliwości tworzenia stron internetowych dzięki manipulacji kodem HTML i renderowaniu. ### [Tworzenie dokumentu w .NET z Aspose.HTML](./creating-a-document/) Uwolnij moc Aspose.HTML dla .NET. Naucz się łatwo tworzyć, manipulować i optymalizować dokumenty HTML i SVG. Poznaj przykłady krok po kroku i często zadawane pytania. +### [Jak tworzyć HTML – Dodawanie elementów i stylowanie tekstu](./how-to-create-html-append-elements-and-style-text/) +Dowiedz się, jak tworzyć dokumenty HTML, dodawać elementy i stosować style tekstu przy użyciu Aspose.HTML dla .NET. ### [Edycja dokumentu w .NET za pomocą Aspose.HTML](./editing-a-document/) Twórz wciągające treści internetowe za pomocą Aspose.HTML dla .NET. Dowiedz się, jak manipulować HTML, CSS i nie tylko. ### [Zapisywanie dokumentu w .NET za pomocą Aspose.HTML](./saving-a-document/) diff --git a/html/polish/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/polish/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..4349110e0 --- /dev/null +++ b/html/polish/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-28 +description: Jak programowo tworzyć HTML w C#. Dowiedz się, jak dodać element do elementu body, + utworzyć element akapitu, dodać pogrubiony kursywny tekst oraz programowo dodać + styl CSS. +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: pl +og_description: Jak tworzyć HTML programowo w C#. Ten przewodnik pokazuje, jak dodać + element do body, utworzyć element akapitu, dodać pogrubiony kursywny tekst oraz + dodać styl CSS programowo. +og_title: Jak tworzyć HTML – dodawanie elementów i stylowanie tekstu +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: Jak tworzyć HTML – dodawanie elementów i stylowanie tekstu +url: /pl/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak tworzyć HTML – Dodawanie elementów i stylowanie tekstu + +Zastanawiałeś się kiedyś **jak tworzyć HTML** z C# bez użycia StringBuildera? Nie jesteś jedyny. W wielu scenariuszach automatyzacji webowej lub generowania e‑maili potrzebne jest czyste podejście oparte na DOM, które pozwala dodać element do body, go wystylować i zachować pełną typową bezpieczeństwo. + +W tym samouczku przeprowadzimy Cię przez dokładne kroki **jak tworzyć HTML** przy użyciu Aspose.HTML, obejmując wszystko od tworzenia elementu akapitu po dodawanie pogrubionego kursywnego tekstu oraz programowe dodawanie stylów CSS. Po zakończeniu będziesz mieć gotowy ciąg HTML, który możesz wstrzyknąć do przeglądarki, e‑maila lub konwertera PDF. + +## Czego będziesz potrzebować + +- **.NET 6+** (dowolna nowsza wersja działa; API jest stabilne także w .NET Framework) +- **Aspose.HTML for .NET** pakiet NuGet – `Install-Package Aspose.HTML` +- Podstawowa znajomość składni C# – nic specjalnego nie jest wymagane + +Bez dodatkowych plików konfiguracyjnych, bez zewnętrznych silników szablonów. Po prostu czysty kod C#, który manipuluje DOM. + +![przykład tworzenia html](/images/how-to-create-html.png "Zrzut ekranu pokazujący wygenerowaną strukturę HTML – jak tworzyć html") + +## Krok 1: Konfiguracja projektu i import przestrzeni nazw + +Na początek. Utwórz aplikację konsolową (lub dowolny projekt .NET) i dodaj odwołanie do Aspose.HTML. Następnie zaimportuj przestrzenie nazw, których będziemy używać. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +**Pro tip:** Jeśli potrzebujesz tylko manipulacji DOM, możesz pominąć przestrzeń nazw `Aspose.Html.Rendering` – jest wymagana jedynie przy renderowaniu dokumentu do obrazu lub PDF. + +## Krok 2: Definiowanie stylu CSS programowo + +Kiedy **dodajesz styl CSS programowo**, zyskujesz pełną kontrolę nad rodzinami czcionek, rozmiarami oraz połączonymi flagami stylu czcionki, takimi jak pogrubienie + kursywa. Oto jak stworzyć taki obiekt stylu. + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +Dlaczego używać `WebFontStyle.Bold | WebFontStyle.Italic` zamiast dwóch oddzielnych właściwości? API traktuje styl czcionki jako enumerację flag, więc ich połączenie generuje dokładny CSS `font-weight: bold; font-style: italic;`, który napisałbyś ręcznie. + +## Krok 3: Utworzenie nowego dokumentu HTML + +Teraz faktycznie **jak tworzyć HTML** – obiekt dokumentu działa jako nasze płótno. Traktuj go jak pustą stronę, na której możesz malować. + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +W tym momencie dokument zawiera standardowe znaczniki ``, `` i ``. Możesz sprawdzić `htmlDoc.Body`, aby zobaczyć pusty element `` gotowy na dzieci. + +## Krok 4: Utworzenie elementu akapitu i dodanie pogrubionego kursywnego tekstu + +Tutaj **create paragraph element** (tworzenie elementu akapitu) naprawdę się przydaje. Wygenerujemy znacznik `

`, 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ć `

` lub `` używając `htmlDoc.CreateElement("div")`. Ten sam wzorzec `SetAttribute` działa. + +- **Appending Multiple Nodes:** Przejdź pętlą po kolekcji łańcuchów i utwórz akapit dla każdego, dodając go do body. Pamiętaj, aby ponownie używać tego samego `CSSStyleDeclaration`, jeśli styl jest identyczny — nie ma potrzeby tworzyć go ponownie. + +- **Encoding Concerns:** `TextContent` automatycznie koduje HTML specjalne znaki (`&`, `<`, `>`). Jeśli potrzebujesz surowego HTML, użyj `InnerHtml`, ale zachowaj ostrożność względem ataków wstrzyknięcia. + +## Pełny działający przykład + +Poniżej znajduje się kompletny, gotowy do skopiowania i wklejenia program, który demonstruje cały przepływ od początku do końca. + +```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); + } +} +``` + +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. + +![create pdf document c# example](/images/create-pdf-csharp.png) + +## 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. + +![Render HTML to PDF example](render-html-to-pdf.png "renderowanie html do pdf") + +*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 = "

Hello, world!

"; +``` + +Dlaczego zaczynać od łańcucha? Ponieważ wiele API (usługi e‑mail, generatory PDF, kontrolki web‑view) akceptuje markup HTML bezpośrednio. Użycie łańcucha utrzymuje przepływ pracy lekki i testowalny. + +--- + +## Krok 2: Initialise the HTMLDocument with the string + +Klasa `HTMLDocument` z Aspose.Html może odczytywać markup z łańcucha, URL lub strumienia. Tutaj przekazujemy jej nasz `rawHtml`. + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +W tym momencie dokument istnieje wyłącznie w pamięci. Nie zostaje utworzony żaden plik, a Ty możesz manipulować DOM tak, jak w przeglądarce. + +--- + +## Krok 3: Build a custom resource handler to capture the output + +**custom resource handler** daje Ci kontrolę nad tym, gdzie trafia każda część dokumentu (HTML, obrazy, CSS). W naszym przypadku zależy nam tylko na głównym HTML, więc zapisujemy wszystko do `MemoryStream`. + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**Why a custom handler?** Domyślna metoda `Save` zapisuje do ścieżki pliku, co podważa cel pracy w pamięci. Przez nadpisanie `HandleResource` przechwytujemy każde żądanie zasobu i decydujemy dokładnie, gdzie ma trafić. To jest sedno **how to capture HTML** bez dotykania dysku. + +--- + +## Krok 4: Save the document using the handler + +Teraz instruujemy Aspose.Html, aby zserializował `HTMLDocument` do naszego `MyMemoryHandler`. Obiekt `SaveOptions` może pozostać pusty dla domyślnego wyjścia HTML, ale w razie potrzeby możesz dostosować kodowanie, formatowanie itp. + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +Gdy wywoływany jest `Save`, uruchamiany jest `HandleResource`, główny HTML jest zapisywany do `memoryHandler.HtmlStream`, a wszelkie dodatkowe pliki (obrazy, CSS) otrzymałyby własne strumienie — choć w tym prostym przykładzie nie dodaliśmy żadnych. + +--- + +## Krok 5: Convert the captured stream back to a string + +Mamy HTML znajdujący się w `MemoryStream`. Aby **convert HTML to string**, po prostu przewijamy strumień i odczytujemy go za pomocą `StreamReader`. + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +`resultHtml` teraz zawiera dokładny markup wygenerowany przez Aspose.Html. Możesz go wysłać przez sieć, osadzić w e‑mailu lub przekazać do innej biblioteki. + +--- + +## Krok 6: Verify the output – co powinieneś zobaczyć? + +Wypiszmy wynik na konsolę, abyś mógł potwierdzić, że wszystko działa. + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**Oczekiwany wynik** + +```html + +

Hello, world!

+``` + +Zauważ, że tag `` jest automatycznie dodawany przez Aspose.Html. To jeden z powodów, dla których wolimy bibliotekę od ręcznego łączenia łańcuchów — ona normalizuje markup za Ciebie. + +--- + +## Pełny, gotowy do uruchomienia przykład + +Poniżej znajduje się kompletny program, który możesz wkleić do aplikacji konsolowej i od razu uruchomić. Wszystkie elementy są razem, więc nie musisz zgadywać, które dyrektywy `using` lub zależności są brakujące. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +Skopiuj‑wklej, naciśnij **F5**, a zobaczysz sformatowany HTML wypisany na konsoli. + +--- + +## Częste pytania i przypadki brzegowe + +### Co zrobić, jeśli muszę przechwycić obrazy lub pliki CSS? + +`MyMemoryHandler` już tworzy nowy `MemoryStream` dla każdego zasobu. Możesz go rozbudować, aby przechowywać te strumienie w słowniku kluczowanym przez `info.Uri`. Następnie, na przykład, możesz osadzić obrazy jako ciągi Base64 później. + +### Czy mogę zmienić kodowanie wyjścia? + +Tak. Przekaż `Saving.HtmlSaveOptions` z ustawioną właściwością `Encoding`: + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### Czy to działa z dużymi dokumentami? + +`MemoryStream` rośnie dynamicznie, ale obserwuj zużycie pamięci przy ogromnych stronach (setki MB). W takich scenariuszach możesz strumieniować bezpośrednio do pliku lub gniazda sieciowego. + +### Jak **write HTML to stream** w jednej linii? + +Jeśli nie potrzebujesz własnego handlera, możesz użyć `htmlDocument.Save(Stream, SaveOptions)` bezpośrednio: + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +To kompaktowa alternatywa, choć tracisz możliwość przechwytywania dodatkowych zasobów. + +--- + +## Porady i pułapki + +* **Pro tip:** Zawsze resetuj `Position` do `0` przed odczytem `MemoryStream`. Zapomnienie tego skutkuje pustym łańcuchem. +* **Watch out for:** Przekazywanie `null` jako `SaveOptions` — Aspose.Html użyje domyślnych, ale explicite ustawione opcje jasno określają intencję. +* **Typical mistake:** Zakładanie, że `HtmlStream` jest wypełniony przed zakończeniem `Save`. Strumień jest dostępny dopiero po zwróceniu z wywołania `Save`. +* **Performance note:** Przy powtarzalnych konwersjach, używaj jednej instancji `MyMemoryHandler` i czyszcz jej strumienie między uruchomieniami, aby uniknąć dodatkowych alokacji. + +--- + +## Zakończenie + +Pokazaliśmy, jak **create HTML from string** w C#, przechwycić wynik za pomocą **custom resource handler** i **write HTML to stream** do dalszego przetwarzania. Konwertując strumień w pamięci z powrotem na łańcuch, otrzymujesz niezawodny sposób na **convert HTML to string** bez dotykania systemu plików. + +Ten wzorzec jest wystarczająco elastyczny dla szablonów e‑mail, generowania PDF lub dowolnego scenariusza, w którym potrzebny jest markup HTML w locie. Następnie możesz zbadać osadzanie obrazów jako Base64, dostosowywanie `HtmlSaveOptions` pod kątem minifikacji lub przekazywanie łańcucha do Aspose.PDF w celu konwersji do PDF. + +Masz więcej pytań dotyczących obsługi zasobów, kodowania lub wydajności? Dodaj komentarz poniżej — miłego kodowania! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/portuguese/net/generate-jpg-and-png-images/_index.md b/html/portuguese/net/generate-jpg-and-png-images/_index.md index 25a4d8da7..e4c6cebcf 100644 --- a/html/portuguese/net/generate-jpg-and-png-images/_index.md +++ b/html/portuguese/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aprenda a usar Aspose.HTML para .NET para manipular documentos HTML, converter H Aprenda a ativar antialiasing ao converter documentos DOCX em imagens PNG ou JPG usando Aspose.HTML para .NET. ### [Converter docx para png – criar arquivo zip em C# tutorial](./convert-docx-to-png-create-zip-archive-c-tutorial/) Aprenda a converter documentos DOCX em imagens PNG e compactá-los em um arquivo ZIP usando C# e Aspose.HTML. +### [Renderizar HTML para PNG em C# – Guia Completo Passo a Passo](./render-html-to-png-in-c-complete-step-by-step-guide/) +Aprenda a renderizar HTML em imagens PNG usando C# com Aspose.HTML, seguindo um guia completo passo a passo. ## Conclusão diff --git a/html/portuguese/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/portuguese/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..4fd9ad999 --- /dev/null +++ b/html/portuguese/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-28 +description: Aprenda como renderizar HTML para PNG em C# com Aspose.HTML. Este guia + também aborda como converter página da web em imagem, salvar HTML como PNG, exportar + HTML como imagem e salvar página da web como 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: pt +og_description: Aprenda como renderizar HTML para PNG em C# com Aspose.HTML. Siga + este tutorial fácil para converter página da web em imagem, salvar HTML como PNG + e exportar HTML como imagem. +og_title: Renderizar HTML para PNG em C# – Guia Completo Passo a Passo +tags: +- C# +- Aspose.HTML +- Image Rendering +- .NET +title: Renderizar HTML para PNG em C# – Guia Completo Passo a Passo +url: /pt/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 >}} + +# Renderizar HTML para PNG em C# – Guia Completo Passo a Passo + +Precisa **renderizar HTML para PNG** rapidamente? Neste tutorial vamos mostrar exatamente como renderizar HTML para PNG usando a biblioteca Aspose.HTML para .NET. Seja você quem está construindo um serviço de miniaturas, gerando pré‑visualizações de e‑mail ou simplesmente precisa **converter uma página da web em uma imagem** para relatórios, os passos abaixo levarão você até lá com o mínimo de complicação. + +A maioria dos desenvolvedores recorre a uma ferramenta de captura de tela de navegador e acaba lidando com binários do Chrome headless. Isso funciona, mas adiciona muita sobrecarga. Com Aspose.HTML você pode **salvar HTML como PNG** diretamente do código, sem processo externo. Ao final deste guia você será capaz de **exportar HTML como imagem**, armazenar o resultado em disco e ainda ajustar antialiasing ou dimensões para se adequar à sua UI. + +## O que você vai aprender + +- Como instalar Aspose.HTML via NuGet. +- Configurar `ImageRenderingOptions` para saída de alta qualidade. +- Carregar uma página online ou uma string HTML local. +- Renderizar a página para um arquivo PNG. +- Armadilhas comuns ao **salvar página da web como PNG** e como evitá‑las. + +Nenhuma experiência prévia com Aspose é necessária; basta uma configuração básica de C#/.NET e uma conexão à internet. + +## Pré‑requisitos + +- .NET 6.0 ou superior (o código funciona em .NET Core, .NET Framework 4.6+ e .NET 7). +- Visual Studio 2022 (ou qualquer IDE de sua preferência). +- Acesso ao NuGet para baixar o pacote `Aspose.HTML`. +- Uma pasta onde você tenha permissão de gravação para o PNG gerado. + +> **Dica de especialista:** Se for executar isso em um servidor, certifique‑se de que a conta que roda o processo possa gravar no diretório de saída; caso contrário, a etapa de renderização falhará silenciosamente. + +## Etapa 1: Instalar Aspose.HTML + +Primeiro, adicione a biblioteca Aspose.HTML ao seu projeto. Abra o Console do Gerenciador de Pacotes NuGet e execute: + +```powershell +Install-Package Aspose.HTML +``` + +Ou, se preferir a interface gráfica, procure por **Aspose.HTML** e clique em **Install**. Isso traz todas as DLLs necessárias, incluindo o motor de renderização. + +> **Por que isso importa:** Aspose.HTML lida com parsing de HTML, layout CSS e rasterização de imagens internamente, então você não precisa iniciar um navegador headless. Também é totalmente gerenciado, ou seja, sem dependências nativas para distribuir. + +## Etapa 2: Configurar Opções de Renderização de Imagem + +Antes de renderizar, decida o tamanho e a qualidade da saída. A classe `ImageRenderingOptions` oferece controle granular. + +```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 +}; +``` + +> **Por que habilitar antialiasing?** Sem ele, as bordas podem ficar serrilhadas, o que é especialmente perceptível em telas de alta DPI. Ativá‑lo adiciona um pequeno custo de desempenho, mas produz um PNG muito mais limpo. + +## Etapa 3: Carregar o Conteúdo HTML + +Você pode renderizar uma URL remota, um arquivo local ou até mesmo uma string HTML bruta. Para este exemplo vamos buscar uma página ao vivo. + +```csharp +// Step 3: Load the HTML document from a URL +var htmlDoc = new HTMLDocument("https://example.com"); +``` + +Se você tem HTML armazenado em uma string, use a sobrecarga que aceita `MemoryStream`: + +```csharp +string rawHtml = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **Caso extremo:** Alguns sites bloqueiam agentes de usuário que não sejam navegadores. Se você receber uma imagem em branco, defina um cabeçalho de user‑agent personalizado na requisição ou baixe o HTML primeiro e passe‑o como string. + +## Etapa 4: Renderizar para PNG + +Agora a operação principal—chamar `RenderToFile`. Forneça o caminho completo onde deseja salvar o PNG. + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +Depois que esta linha for executada, você encontrará `output.png` na pasta especificada. Abra‑o com qualquer visualizador de imagens para verificar o resultado. + +> **O que esperar:** O PNG terá exatamente 800 × 600 px, com texto suave e cores que correspondem à página original. Se a página de origem usar CSS ou imagens externas, Aspose.HTML baixará esses recursos automaticamente, desde que estejam acessíveis. + +## Etapa 5: Verificar e Usar o Resultado + +Uma verificação rápida garante que você realmente obteve uma imagem e não um arquivo vazio. + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +Agora você pode **salvar página da web como PNG** para arquivamento, incorporar a imagem em newsletters de e‑mail ou alimentá‑la em um pipeline de machine‑learning que espera páginas rasterizadas. + +## Opcional: Ajustes para Diferentes Cenários + +### 5.1 Renderizando uma Captura de Tela de Página Inteira + +Se quiser a página inteira rolável em vez de um recorte do viewport, aumente a altura ou use `ImageRenderingOptions.PageHeight`: + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 Alterando o Formato da Imagem + +Aspose.HTML suporta JPEG, BMP, GIF e TIFF. Troque a extensão do arquivo e o formato será ajustado automaticamente: + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 Manipulando Páginas Protegidas por Autenticação + +Para páginas que exigem login, busque o HTML com `HttpClient` (incluindo cookies ou tokens bearer), então passe a string para `HTMLDocument` como mostrado anteriormente. Dessa forma você ainda pode **converter página da web em imagem** mesmo quando a página não está publicamente acessível. + +## Exemplo Completo Funcionando + +Abaixo está um aplicativo console autocontido que reúne tudo. Copie‑e‑cole em um novo projeto console .NET e execute—ele baixará `https://example.com`, renderizará e salvará `output.png` ao lado do executável. + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **Saída esperada:** Um arquivo `output.png`, 800 × 600 px, exibindo a página inicial de `example.com`. Abra‑o em qualquer visualizador de imagens para confirmar a fidelidade visual. + +## Perguntas Frequentes & Armadilhas + +- **P: Isso funciona no Linux?** + Sim. Aspose.HTML é multiplataforma; basta garantir que o runtime .NET esteja instalado. + +- **P: Minha página usa JavaScript para injetar conteúdo—ele aparecerá?** + Aspose.HTML **não** executa JavaScript. Para páginas dinâmicas você precisará pré‑renderizar o HTML (por exemplo, com Chrome headless) e então alimentar o markup estático ao renderizador. + +- **P: Quão grande a imagem pode ser antes que a memória se torne um problema?** + Renderizar páginas muito altas (10 k+ pixels) pode consumir várias centenas de megabytes de RAM. Se ocorrer `OutOfMemoryException`, considere renderizar em segmentos e juntar os PNGs depois. + +- **P: Posso incorporar fontes que não estão instaladas no servidor?** + Sim. Inclua regras `@font-face` no seu CSS ou carregue os arquivos de fonte via tag ``; Aspose.HTML as incorporará durante a rasterização. + +## Conclusão + +Agora você tem um método sólido e pronto para produção de **renderizar HTML para PNG** em C#. Configurando `ImageRenderingOptions`, carregando a página alvo e chamando `RenderToFile`, você pode **converter página da web em imagem**, **salvar HTML como PNG**, **exportar HTML como imagem** e **salvar página da web como PNG** com apenas algumas linhas de código. + +Próximos passos? Experimente ajustar as dimensões para capturas de alta DPI, teste a saída JPEG para arquivos menores ou integre essa lógica em uma API ASP.NET que devolve PNGs sob demanda. As possibilidades são infinitas, e como a solução é totalmente gerenciada, você não precisará lidar com navegadores externos ou bibliotecas nativas. + +Tem mais dúvidas sobre renderização de imagens ou outras funcionalidades do Aspose.HTML? Deixe um comentário abaixo e feliz codificação! + +![exemplo de renderizar html para png](placeholder.png "exemplo de renderizar html para png") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/portuguese/net/html-document-manipulation/_index.md b/html/portuguese/net/html-document-manipulation/_index.md index df151c49f..031281e3c 100644 --- a/html/portuguese/net/html-document-manipulation/_index.md +++ b/html/portuguese/net/html-document-manipulation/_index.md @@ -59,6 +59,8 @@ Desbloqueie o potencial do Aspose.HTML para .NET com nosso guia abrangente. Apre Aprenda como aproveitar o poder do Aspose.HTML para .NET. Impulsione seu desenvolvimento web com manipulação e renderização de HTML. ### [Criando um documento em .NET com Aspose.HTML](./creating-a-document/) Libere o poder do Aspose.HTML para .NET. Aprenda a criar, manipular e otimizar documentos HTML e SVG com facilidade. Explore exemplos passo a passo e perguntas frequentes. +### [Como criar HTML – Anexar elementos e estilizar texto](./how-to-create-html-append-elements-and-style-text/) +Aprenda a criar HTML adicionando elementos e aplicando estilos de texto com Aspose.HTML para .NET. ### [Editando um documento no .NET com Aspose.HTML](./editing-a-document/) Crie conteúdo web cativante com Aspose.HTML para .NET. Aprenda a manipular HTML, CSS e muito mais. ### [Salvando um documento no .NET com Aspose.HTML](./saving-a-document/) diff --git a/html/portuguese/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/portuguese/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..5ad2bec23 --- /dev/null +++ b/html/portuguese/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-28 +description: Como criar HTML programaticamente em C#. Aprenda a anexar elementos ao + body, criar um elemento de parágrafo, adicionar texto em negrito e itálico e adicionar + estilo CSS programaticamente. +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: pt +og_description: Como criar HTML programaticamente em C#. Este guia mostra como anexar + um elemento ao body, criar um elemento de parágrafo, adicionar texto em negrito + e itálico e adicionar estilo CSS programaticamente. +og_title: Como criar HTML – Adicionar elementos e estilizar texto +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: Como criar HTML – Anexar elementos e estilizar texto +url: /pt/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como Criar HTML – Anexar Elementos e Estilizar Texto + +Já se perguntou **como criar HTML** a partir de C# sem recorrer a um construtor de strings? Você não está sozinho. Em muitos cenários de automação web ou geração de e‑mail, você precisa de uma abordagem limpa baseada em DOM que permita anexar elementos ao body, estilizar e manter tudo tipado de forma segura. + +Neste tutorial, percorreremos os passos exatos para **como criar HTML** usando Aspose.HTML, cobrindo tudo, desde a criação de um elemento de parágrafo até a adição de texto em negrito e itálico e a inserção de estilo CSS programaticamente. Ao final, você terá uma string HTML pronta para uso que pode ser injetada em um navegador, um e‑mail ou um conversor de PDF. + +## O Que Você Precisa + +- **.NET 6+** (qualquer versão recente funciona; a API é estável também no .NET Framework) +- **Aspose.HTML for .NET** pacote NuGet – `Install-Package Aspose.HTML` +- Um entendimento básico da sintaxe C# – nada sofisticado é necessário + +Nenhum arquivo de configuração extra, nenhum motor de template externo. Apenas código C# puro que manipula o DOM. + +![exemplo de como criar html](/images/how-to-create-html.png "Captura de tela mostrando a estrutura HTML gerada – como criar html") + +## Etapa 1: Configurar o Projeto e Importar Namespaces + +Primeiro, o básico. Crie um aplicativo console (ou qualquer projeto .NET) e adicione a referência Aspose.HTML. Em seguida, importe os namespaces que usaremos. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **Dica profissional:** Se você precisar apenas de manipulação de DOM, pode remover o namespace `Aspose.Html.Rendering` – ele só é necessário quando você renderiza o documento para uma imagem ou PDF. + +## Etapa 2: Definir um Estilo CSS Programaticamente + +Quando você **adiciona estilo css programaticamente**, ganha controle total sobre famílias de fontes, tamanhos e até mesmo flags combinadas de estilo de fonte como negrito + itálico. Aqui está como criar esse objeto de estilo. + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +Por que usar `WebFontStyle.Bold | WebFontStyle.Italic` em vez de duas propriedades separadas? A API trata o estilo de fonte como uma enumeração de flags, então combiná‑las produz o CSS exato `font-weight: bold; font-style: italic;` que você escreveria manualmente. + +## Etapa 3: Criar um Novo Documento HTML + +Agora realmente **como criar HTML** – o objeto documento funciona como nossa tela. Pense nele como uma página em branco que você pode pintar. + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +Neste ponto, o documento contém as tags padrão ``, `` e ``. Você pode inspecionar `htmlDoc.Body` para ver o elemento `` vazio pronto para receber filhos. + +## Etapa 4: Criar um Elemento de Parágrafo e Adicionar Texto em Negrito e Itálico + +É aqui que a palavra‑chave **create paragraph element** brilha. Vamos gerar uma tag `

`, 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 `

` ou `` usando `htmlDoc.CreateElement("div")`. O mesmo padrão `SetAttribute` funciona. + +- **Anexar Múltiplos Nós:** Percorra uma coleção de strings e crie um parágrafo para cada, anexando cada um ao body. Lembre‑se de reutilizar o mesmo `CSSStyleDeclaration` se o estilo for idêntico—não há necessidade de recriá‑lo. + +- **Preocupações com Codificação:** `TextContent` codifica automaticamente em HTML caracteres especiais (`&`, `<`, `>`). Se precisar de HTML bruto, use `InnerHtml` em vez disso, mas tenha cautela com ataques de injeção. + +## Exemplo Completo Funcional + +Abaixo está o programa completo, pronto para copiar e colar, que demonstra todo o fluxo do início ao fim. + +```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); + } +} +``` + +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. + +![create pdf document c# example](/images/create-pdf-csharp.png) + +## 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. + +![render html to pdf – captura de tela do PDF gerado dentro de um arquivo ZIP](render-html-to-pdf.png "render html to pdf – captura de tela do PDF gerado dentro de um arquivo ZIP") + +*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 = "

Hello, world!

"; +``` + +Por que começar com uma string? Porque muitas APIs (serviços de e‑mail, geradores de PDF, controles de visualização web) aceitam marcação HTML diretamente. Usar uma string mantém o fluxo de trabalho leve e testável. + +--- + +## Etapa 2: Inicializar o HTMLDocument com a string + +A classe `HTMLDocument` do Aspose.Html pode ler marcação a partir de uma string, uma URL ou um stream. Aqui alimentamos ela com nosso `rawHtml`. + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +Neste ponto o documento reside totalmente na memória. Nenhum arquivo é criado, e você pode manipular o DOM como faria em um navegador. + +--- + +## Etapa 3: Construir um custom resource handler para capturar a saída + +Um **custom resource handler** lhe dá controle sobre onde cada parte do documento (HTML, imagens, CSS) será armazenada. No nosso caso, nos importamos apenas com o HTML principal, então escreveremos tudo em um `MemoryStream`. + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**Por que um handler customizado?** O método padrão `Save` grava em um caminho de arquivo, o que anula o objetivo de um fluxo totalmente em memória. Ao sobrescrever `HandleResource` interceptamos cada solicitação de recurso e decidimos exatamente onde ele vai. Este é o núcleo de **como capturar HTML** sem tocar no disco. + +--- + +## Etapa 4: Salvar o documento usando o handler + +Agora instruímos o Aspose.Html a serializar o `HTMLDocument` em nosso `MyMemoryHandler`. O objeto `SaveOptions` pode permanecer vazio para a saída HTML padrão, mas você pode ajustar codificação, pretty‑print, etc., se necessário. + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +Quando `Save` é executado, `HandleResource` é invocado, o HTML principal é escrito em `memoryHandler.HtmlStream`, e quaisquer arquivos auxiliares (imagens, CSS) receberiam seus próprios streams — embora não tenhamos adicionado nenhum neste exemplo simples. + +--- + +## Etapa 5: Converter o stream capturado de volta para uma string + +Temos o HTML dentro de um `MemoryStream`. Para **convert HTML to string**, basta retroceder o stream e lê‑lo com um `StreamReader`. + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +`resultHtml` agora contém a marcação exata que o Aspose.Html produziu. Você pode enviá‑la pela rede, incorporá‑la em um e‑mail ou passá‑la para outra biblioteca. + +--- + +## Etapa 6: Verificar a saída – o que você deve ver? + +Vamos imprimir o resultado no console para que você possa confirmar que tudo funcionou. + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**Saída esperada** + +```html + +

Hello, world!

+``` + +Observe que a tag `` é adicionada automaticamente pelo Aspose.Html. Essa é uma das razões pelas quais preferimos uma biblioteca em vez de concatenação manual de strings — ela normaliza a marcação para você. + +--- + +## Exemplo Completo e Executável + +Abaixo está o programa completo que você pode inserir em um aplicativo console e executar imediatamente. Todas as partes estão juntas, então não há adivinhações sobre declarações `using` ausentes ou dependências ocultas. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +Copie‑e‑cole, pressione **F5**, e você verá o HTML formatado impresso no console. + +--- + +## Perguntas Frequentes & Casos Limítrofes + +### E se eu precisar capturar imagens ou arquivos CSS? + +O `MyMemoryHandler` já cria um novo `MemoryStream` para cada recurso. Você pode estendê‑lo para armazenar esses streams em um dicionário indexado por `info.Uri`. Então, por exemplo, poderia incorporar imagens como strings Base64 posteriormente. + +### Posso alterar a codificação da saída? + +Sim. Passe um `Saving.HtmlSaveOptions` com a propriedade `Encoding` definida: + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### Isso funciona com documentos grandes? + +`MemoryStream` cresce dinamicamente, mas fique de olho no consumo de memória para páginas massivas (centenas de MB). Nesses cenários, você pode fazer streaming diretamente para um arquivo ou um socket de rede. + +### Como faço **write HTML to stream** em uma única linha? + +Se você não precisar de um handler customizado, pode usar `htmlDocument.Save(Stream, SaveOptions)` diretamente: + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +Essa é uma alternativa compacta, embora você perca a capacidade de interceptar recursos auxiliares. + +--- + +## Dicas Profissionais & Armadilhas + +* **Dica profissional:** Sempre redefina `Position` para `0` antes de ler um `MemoryStream`. Esquecer isso resulta em uma string vazia. +* **Cuidado com:** Passar um `null` `SaveOptions` — o Aspose.Html usará padrões, mas opções explícitas deixam sua intenção clara. +* **Erro típico:** Supor que `HtmlStream` está preenchido antes que `Save` termine. O stream só está disponível após a chamada `Save` retornar. +* **Observação de desempenho:** Para conversões repetitivas, reutilize uma única instância de `MyMemoryHandler` e limpe seus streams entre execuções para evitar alocações extras. + +--- + +## Conclusão + +Mostramos como **create HTML from string** em C#, capturar o resultado com um **custom resource handler**, e **write HTML to stream** para processamento adicional. Ao converter o stream em memória de volta para uma string, você também obtém uma forma confiável de **convert HTML to string** sem tocar no sistema de arquivos. + +Esse padrão é flexível o suficiente para modelagem de e‑mail, geração de PDF ou qualquer cenário onde você precise da marcação HTML instantaneamente. Em seguida, você pode explorar incorporar imagens como Base64, ajustar `HtmlSaveOptions` para minificação, ou passar a string para o Aspose.PDF para conversão em PDF. + +Tem mais perguntas sobre manipulação de recursos, codificação ou desempenho? Deixe um comentário abaixo — 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/russian/net/generate-jpg-and-png-images/_index.md b/html/russian/net/generate-jpg-and-png-images/_index.md index 74f005949..59cde238b 100644 --- a/html/russian/net/generate-jpg-and-png-images/_index.md +++ b/html/russian/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML для .NET предлагает простой метод прео Узнайте, как включить сглаживание при преобразовании DOCX в PNG или JPG с помощью Aspose.HTML для .NET. ### [Конвертация DOCX в PNG – создание ZIP-архива на C#](./convert-docx-to-png-create-zip-archive-c-tutorial/) Узнайте, как преобразовать файлы DOCX в PNG и упаковать их в ZIP-архив с помощью C# и Aspose.HTML. +### [Рендеринг HTML в PNG на C# – Полное пошаговое руководство](./render-html-to-png-in-c-complete-step-by-step-guide/) +Подробное руководство по преобразованию HTML в PNG с помощью Aspose.HTML в C#, включая настройку, параметры и примеры кода. ## Заключение diff --git a/html/russian/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/russian/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..467f7a126 --- /dev/null +++ b/html/russian/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,246 @@ +--- +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: ru +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: /ru/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. Независимо от того, создаёте ли вы сервис миниатюр, генерируете превью электронных писем или просто хотите **преобразовать веб-страницу в изображение** для отчётов, приведённые ниже шаги помогут вам достичь результата без лишних хлопот. + +Вот в чём дело — большинство разработчиков берут инструмент для скриншотов браузера и начинают возиться с бинарными файлами headless Chrome. Это работает, но добавляет много накладных расходов. С Aspose.HTML вы можете **сохранять HTML как PNG** напрямую из кода, без внешних процессов. К концу этого руководства вы сможете **экспортировать HTML как изображение**, сохранять результат на диск и даже настраивать сглаживание или размеры под ваш UI. + +## Что вы узнаете + +- Как установить Aspose.HTML через NuGet. +- Настройка `ImageRenderingOptions` для вывода высокого качества. +- Загрузка онлайн-страницы или локальной HTML-строки. +- Рендеринг страницы в PNG‑файл. +- Распространённые подводные камни при **сохранении веб-страницы как PNG** и как их избежать. + +Предыдущий опыт работы с Aspose не требуется; достаточно базовой настройки C#/.NET и интернет‑соединения. + +## Требования + +- .NET 6.0 или новее (код работает на .NET Core, .NET Framework 4.6+ и .NET 7). +- Visual Studio 2022 (или любой другой предпочитаемый IDE). +- Доступ к NuGet для получения пакета `Aspose.HTML`. +- Папка, в которой у вас есть права записи для создаваемого PNG. + +> **Pro tip:** Если вы планируете запускать это на сервере, убедитесь, что учётная запись, под которой работает процесс, может записывать в каталог вывода; иначе шаг рендеринга будет тихо завершаться с ошибкой. + +## Шаг 1: Установить Aspose.HTML + +Сначала добавьте библиотеку Aspose.HTML в ваш проект. Откройте консоль диспетчера пакетов NuGet и выполните: + +```powershell +Install-Package Aspose.HTML +``` + +Или, если вы предпочитаете графический интерфейс, найдите **Aspose.HTML** и нажмите **Install**. Это загрузит все необходимые DLL, включая движок рендеринга. + +> **Почему это важно:** Aspose.HTML обрабатывает разбор HTML, раскладку CSS и растеризацию изображений внутри, поэтому вам не нужно запускать headless‑браузер. Библиотека полностью управляемая, то есть не требует нативных зависимостей для распространения. + +## Шаг 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 = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **Особый случай:** Некоторые сайты блокируют пользовательские агенты, не являющиеся браузерами. Если вы получаете пустое изображение, задайте пользовательский заголовок User‑Agent в запросе или сначала скачайте HTML и передайте его как строку. + +## Шаг 4: Рендер в PNG + +Теперь основная операция — вызов `RenderToFile`. Укажите полный путь, куда вы хотите сохранить PNG. + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +После выполнения этой строки вы найдете `output.png` в указанной папке. Откройте его любой программой просмотра изображений, чтобы проверить результат. + +> **Что ожидать:** PNG будет точно 800 × 600 px, с плавным текстом и цветами, соответствующими оригинальной странице. Если исходная страница использует внешние CSS или изображения, Aspose.HTML автоматически загрузит эти ресурсы, при условии, что они доступны. + +## Шаг 5: Проверить и использовать результат + +Быстрая проверка гарантирует, что вы действительно получили изображение, а не пустой файл. + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +Теперь вы можете **сохранить веб-страницу как PNG** для архивирования, вставить изображение в рассылки по электронной почте или передать его в конвейер машинного обучения, ожидающий растровые страницы. + +## Дополнительно: Настройка для разных сценариев + +### 5.1 Рендеринг полного скриншота страницы + +Если вам нужна вся прокручиваемая страница, а не часть размером с область просмотра, задайте большую высоту или используйте `ImageRenderingOptions.PageHeight`: + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 Смена формата изображения + +Aspose.HTML поддерживает JPEG, BMP, GIF и TIFF. Поменяйте расширение файла, и формат изменится автоматически: + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 Обработка страниц, защищённых аутентификацией + +Для страниц, требующих входа, получите HTML с помощью `HttpClient` (включая cookies или токены доступа), затем передайте строку в `HTMLDocument`, как показано выше. Таким образом вы всё ещё сможете **преобразовать веб-страницу в изображение**, даже если страница недоступна публично. + +## Полный рабочий пример + +Ниже представлено автономное консольное приложение, которое объединяет всё. Скопируйте и вставьте его в новый проект .NET console и запустите — оно скачает `https://example.com`, отрендерит его и сохранит `output.png` рядом с исполняемым файлом. + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **Ожидаемый результат:** Файл `output.png` размером 800 × 600 px, отображающий домашнюю страницу `example.com`. Откройте его в любой программе просмотра изображений, чтобы подтвердить визуальное соответствие. + +## Часто задаваемые вопросы и подводные камни + +- **Q: Работает ли это на Linux?** + Да. Aspose.HTML кросс‑платформенный; просто убедитесь, что установлен .NET runtime. + +- **Q: Моя страница использует JavaScript для вставки контента — появится ли он?** + Aspose.HTML **не** выполняет JavaScript. Для динамических страниц вам понадобится предварительно отрендерить HTML (например, с помощью headless Chrome) и затем передать статическую разметку рендереру. + +- **Q: Насколько большим может быть изображение, прежде чем возникнут проблемы с памятью?** + Рендеринг очень длинных страниц (10 k+ пикселей) может потребовать несколько сотен мегабайт ОЗУ. Если вы получаете `OutOfMemoryException`, рассмотрите возможность рендеринга частями и последующего объединения PNG‑файлов. + +- **Q: Могу ли я встроить шрифты, которые не установлены на сервере?** + Да. Добавьте правила `@font-face` в ваш CSS или загрузите файлы шрифтов через тег ``; Aspose.HTML встроит их во время растеризации. + +## Заключение + +Теперь у вас есть надёжный, готовый к продакшену метод **рендеринга HTML в PNG** на C#. Настраивая `ImageRenderingOptions`, загружая целевую страницу и вызывая `RenderToFile`, вы можете **преобразовать веб-страницу в изображение**, **сохранить HTML как PNG**, **экспортировать HTML как изображение** и **сохранить веб-страницу как PNG** всего несколькими строками кода. + +Что дальше? Попробуйте изменить размеры для скриншотов с высоким DPI, поэкспериментировать с выводом в JPEG для уменьшения размера файлов или интегрировать эту логику в ASP.NET API, который будет возвращать PNG по запросу. Возможности безграничны, и поскольку решение полностью управляемое, вам не придётся бороться с внешними браузерами или нативными библиотеками. + +Есть дополнительные вопросы по рендерингу изображений или другим возможностям Aspose.HTML? Оставьте комментарий ниже, и удачной разработки! + +![render html to png example](placeholder.png "render html to png") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/russian/net/html-document-manipulation/_index.md b/html/russian/net/html-document-manipulation/_index.md index cf442f62c..7199be2ed 100644 --- a/html/russian/net/html-document-manipulation/_index.md +++ b/html/russian/net/html-document-manipulation/_index.md @@ -71,6 +71,8 @@ Aspose.HTML для .NET выделяется своей простотой и м Раскройте потенциал веб-разработки с Aspose.HTML для .NET. Создавайте, конвертируйте и обрабатывайте HTML-документы легко. ### [Создание HTML из строки в C# – Руководство по пользовательскому обработчику ресурсов](./create-html-from-string-in-c-custom-resource-handler-guide/) Узнайте, как создавать HTML из строки в C# с помощью пользовательского обработчика ресурсов в Aspose.HTML. +### [Как создать HTML – Добавление элементов и стилизация текста](./how-to-create-html-append-elements-and-style-text/) +Узнайте, как создавать HTML, добавлять элементы и стилизовать текст с помощью Aspose.HTML для .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/russian/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/russian/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..587ba5ca9 --- /dev/null +++ b/html/russian/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-28 +description: Как программно создавать HTML в C#. Узнайте, как добавить элемент в body, + создать элемент абзаца, добавить полужирный курсивный текст и программно добавить + CSS‑стиль. +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: ru +og_description: Как программно создавать HTML в C#. Это руководство показывает, как + добавить элемент в body, создать элемент абзаца, добавить жирный курсивный текст + и программно добавить CSS‑стиль. +og_title: Как создать HTML — добавлять элементы и стилизовать текст +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: Как создать HTML — добавлять элементы и стилизовать текст +url: /ru/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как создавать HTML – добавлять элементы и стилизовать текст + +Ever wondered **how to create HTML** from C# without dropping into a string builder? You're not the only one. In many web‑automation or email‑generation scenarios you need a clean, DOM‑based approach that lets you append element to body, style it, and keep everything type‑safe. + +In this tutorial we’ll walk through the exact steps to **how to create HTML** using Aspose.HTML, covering everything from creating a paragraph element to adding bold italic text and adding CSS style programmatically. By the end you’ll have a ready‑to‑use HTML string you can inject into a browser, an email, or a PDF converter. + +## Что понадобится + +- **.NET 6+** (любой современный вариант работает; API стабилен и в .NET Framework) +- **Aspose.HTML for .NET** пакет NuGet – `Install-Package Aspose.HTML` +- Базовое понимание синтаксиса C# – ничего сложного не требуется + +No extra configuration files, no external templating engines. Just plain C# code that manipulates the DOM. + +![пример создания html](/images/how-to-create-html.png "Скриншот, показывающий сгенерированную структуру HTML – как создать html") + +## Шаг 1: Настройте проект и импортируйте пространства имён + +Сначала самое главное. Создайте консольное приложение (или любой проект .NET) и добавьте ссылку на Aspose.HTML. Затем подключите пространства имён, которые будем использовать. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **Pro tip:** Если вам нужна только работа с DOM, вы можете опустить пространство имён `Aspose.Html.Rendering` – оно требуется только при рендеринге документа в изображение или PDF. + +## Шаг 2: Определите CSS‑стиль программно + +Когда вы **add css style programmatically**, вы получаете полный контроль над семействами шрифтов, размерами и даже комбинированными флагами font‑style, такими как bold + italic. Вот как создать такой объект стиля. + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +Зачем использовать `WebFontStyle.Bold | WebFontStyle.Italic` вместо двух отдельных свойств? API рассматривает стиль шрифта как флаговое перечисление, поэтому их объединение даёт точный CSS `font-weight: bold; font-style: italic;`, который вы бы написали вручную. + +## Шаг 3: Создайте новый HTML‑документ + +Теперь мы действительно **how to create HTML** – объект документа служит нашим холстом. Представьте его как пустую страницу, на которой можно рисовать. + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +На данный момент документ содержит стандартные теги ``, `` и ``. Вы можете проверить `htmlDoc.Body`, чтобы увидеть пустой элемент ``, готовый к добавлению дочерних узлов. + +## Шаг 4: Создайте элемент абзаца и добавьте полужирный курсивный текст + +Здесь в деле проявляется ключевое слово **create paragraph element**. Мы создадим тег `

`, применим построенный стиль и зададим его текстовое содержимое. + +```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:** Вместо `

` вы можете создать `

` или `` с помощью `htmlDoc.CreateElement("div")`. Работает тот же шаблон `SetAttribute`. + +- **Appending Multiple Nodes:** Пройдитесь по коллекции строк и создайте абзац для каждой, добавляя их в тело. Не забудьте переиспользовать один и тот же `CSSStyleDeclaration`, если стиль одинаковый — нет необходимости создавать его заново. + +- **Encoding Concerns:** `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. + +## Итоги + +Мы ответили на вопрос **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 для распространения, архивирования или дальнейшей обработки. + +![create pdf document c# example](/images/create-pdf-csharp.png) + +## Часто задаваемые вопросы (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` со всеми стилями и изображениями. + +![Render HTML to PDF example](render-html-to-pdf.png "render html to pdf") + +*Текст 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 = "

Hello, world!

"; +``` + +Почему начинаем со строки? Потому что многие API (службы электронной почты, генераторы PDF, элементы управления web‑view) принимают разметку HTML напрямую. Использование строки делает процесс лёгким и тестируемым. + +--- + +## Шаг 2: Инициализировать HTMLDocument со строкой + +Класс `HTMLDocument` из Aspose.Html может читать разметку из строки, URL или потока. Здесь мы передаём ему наш `rawHtml`. + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +На этом этапе документ полностью находится в памяти. Файл не создаётся, и вы можете манипулировать DOM так же, как в браузере. + +--- + +## Шаг 3: Создать пользовательский обработчик ресурсов для захвата вывода + +**Пользовательский обработчик ресурсов** даёт вам контроль над тем, куда попадает каждая часть документа (HTML, изображения, CSS). В нашем случае нас интересует только основной HTML, поэтому мы запишем всё в `MemoryStream`. + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**Зачем нужен пользовательский обработчик?** Метод `Save` по умолчанию пишет в путь файла, что противоречит цели работы полностью в памяти. Переопределяя `HandleResource`, мы перехватываем каждый запрос ресурса и решаем, куда его направить. Это и есть ядро **захвата HTML** без обращения к диску. + +--- + +## Шаг 4: Сохранить документ с помощью обработчика + +Теперь мы просим Aspose.Html сериализовать `HTMLDocument` в наш `MyMemoryHandler`. Объект `SaveOptions` может оставаться пустым для стандартного HTML‑вывода, но при необходимости вы можете настроить кодировку, форматирование и т.д. + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +Когда вызывается `Save`, срабатывает `HandleResource`, основной HTML записывается в `memoryHandler.HtmlStream`, а любые вспомогательные файлы (изображения, CSS) получили бы свои потоки — хотя в этом простом примере их нет. + +--- + +## Шаг 5: Преобразовать захваченный поток обратно в строку + +HTML находится внутри `MemoryStream`. Чтобы **преобразовать HTML в строку**, просто перемотайте поток назад и прочитайте его с помощью `StreamReader`. + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +`resultHtml` теперь содержит точную разметку, сгенерированную Aspose.Html. Вы можете отправить её по сети, вставить в письмо или передать другой библиотеке. + +--- + +## Шаг 6: Проверить вывод – что должно получиться? + +Выведем результат в консоль, чтобы убедиться, что всё работает. + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**Ожидаемый вывод** + +```html + +

Hello, world!

+``` + +Обратите внимание, что тег `` добавлен автоматически Aspose.Html. Это одна из причин, почему мы предпочитаем библиотеку вместо ручного склеивания строк — она нормализует разметку за вас. + +--- + +## Полный, готовый к запуску пример + +Ниже представлена полная программа, которую можно вставить в консольное приложение и сразу запустить. Все части собраны вместе, так что не будет догадок о недостающих `using` или скрытых зависимостях. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +Скопируйте, нажмите **F5**, и вы увидите отформатированный HTML, выведенный в консоль. + +--- + +## Часто задаваемые вопросы и особые случаи + +### Что делать, если нужно захватить изображения или CSS‑файлы? + +`MyMemoryHandler` уже создаёт новый `MemoryStream` для каждого ресурса. Вы можете расширить его, сохраняя эти потоки в словаре, где ключ — `info.Uri`. Затем, например, можно будет внедрять изображения как строки Base64. + +### Можно ли изменить кодировку вывода? + +Да. Передайте `Saving.HtmlSaveOptions` с установленным свойством `Encoding`: + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### Работает ли это с большими документами? + +`MemoryStream` растёт динамически, но следите за потреблением памяти при работе с огромными страницами (сотни мегабайт). В таких сценариях лучше сразу стримить в файл или сетевой сокет. + +### Как **записать HTML в поток** одной строкой? + +Если пользовательский обработчик не нужен, можно вызвать `htmlDocument.Save(Stream, SaveOptions)` напрямую: + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +Это компактный вариант, хотя вы теряете возможность перехватывать вспомогательные ресурсы. + +--- + +## Профессиональные советы и подводные камни + +* **Совет:** Всегда сбрасывайте `Position` в `0` перед чтением `MemoryStream`. Иначе получите пустую строку. +* **Осторожно:** Не передавайте `null` в `SaveOptions` — Aspose.Html использует значения по умолчанию, но явные параметры делают ваш замысел понятнее. +* **Типичная ошибка:** Предполагать, что `HtmlStream` заполнен до завершения `Save`. Поток доступен только после возврата из метода `Save`. +* **Заметка о производительности:** При повторных конверсиях переиспользуйте один экземпляр `MyMemoryHandler` и очищайте его потоки между запусками, чтобы избежать лишних аллокаций. + +--- + +## Заключение + +Мы показали, как **создать HTML из строки** в C#, захватить результат с помощью **пользовательского обработчика ресурсов** и **записать HTML в поток** для дальнейшей обработки. Преобразовав поток обратно в строку, вы получаете надёжный способ **преобразовать HTML в строку** без обращения к файловой системе. + +Этот подход гибок и подходит для шаблонов писем, генерации PDF или любой ситуации, где нужен HTML «на лету». Далее вы можете исследовать внедрение изображений как Base64, настройку `HtmlSaveOptions` для минификации или передачу строки в Aspose.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/spanish/net/generate-jpg-and-png-images/_index.md b/html/spanish/net/generate-jpg-and-png-images/_index.md index 4323c4591..04f8fcbaf 100644 --- a/html/spanish/net/generate-jpg-and-png-images/_index.md +++ b/html/spanish/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aprenda a utilizar Aspose.HTML para .NET para manipular documentos HTML, convert Aprenda a activar el antialiasing al convertir documentos DOCX a imágenes PNG o JPG usando Aspose.HTML para .NET. ### [Convertir docx a PNG – crear archivo ZIP con C# tutorial](./convert-docx-to-png-create-zip-archive-c-tutorial/) Aprenda a convertir documentos DOCX a imágenes PNG y empaquetarlos en un archivo ZIP usando C#. +### [Renderizar HTML a PNG en C# – Guía completa paso a paso](./render-html-to-png-in-c-complete-step-by-step-guide/) +Aprenda a convertir HTML a imágenes PNG usando C# con Aspose.HTML, siguiendo una guía detallada paso a paso. ## Conclusión diff --git a/html/spanish/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/spanish/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..b114629f6 --- /dev/null +++ b/html/spanish/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-28 +description: Aprende cómo renderizar HTML a PNG en C# con Aspose.HTML. Esta guía también + cubre cómo convertir una página web a imagen, guardar HTML como PNG, exportar HTML + como imagen y guardar la página web como 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: es +og_description: Aprende a renderizar HTML a PNG en C# con Aspose.HTML. Sigue este + sencillo tutorial para convertir una página web en imagen, guardar HTML como PNG + y exportar HTML como imagen. +og_title: Renderizar HTML a PNG en C# – Guía completa paso a paso +tags: +- C# +- Aspose.HTML +- Image Rendering +- .NET +title: Renderizar HTML a PNG en C# – Guía completa paso a paso +url: /es/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 >}} + +# Render HTML to PNG in C# – Guía completa paso a paso + +¿Necesitas **renderizar HTML a PNG** rápidamente? En este tutorial te mostraremos exactamente cómo renderizar HTML a PNG usando la biblioteca Aspose.HTML para .NET. Ya sea que estés creando un servicio de miniaturas, generando vistas previas de correos electrónicos o simplemente necesites **convertir una página web a una imagen** para informes, los pasos a continuación te llevarán allí sin complicaciones. + +La realidad es que la mayoría de los desarrolladores recurren a una herramienta de captura de pantalla de navegador y terminan manejando binarios de Chrome sin cabeza. Eso funciona, pero añade mucha sobrecarga. Con Aspose.HTML puedes **guardar HTML como PNG** directamente desde el código, sin procesos externos. Al final de esta guía podrás **exportar HTML como imagen**, almacenar el resultado en disco e incluso ajustar el antialiasing o las dimensiones para que se adapten a tu UI. + +## Lo que aprenderás + +- Cómo instalar Aspose.HTML vía NuGet. +- Configurar `ImageRenderingOptions` para obtener una salida de alta calidad. +- Cargar una página en línea o una cadena HTML local. +- Renderizar la página a un archivo PNG. +- Problemas comunes al **guardar página web como PNG** y cómo evitarlos. + +No se necesita experiencia previa con Aspose; solo una configuración básica de C#/.NET y una conexión a internet. + +## Requisitos previos + +- .NET 6.0 o superior (el código funciona en .NET Core, .NET Framework 4.6+ y .NET 7). +- Visual Studio 2022 (o cualquier IDE que prefieras). +- Acceso a NuGet para obtener el paquete `Aspose.HTML`. +- Una carpeta donde tengas permiso de escritura para el PNG generado. + +> **Pro tip:** Si planeas ejecutar esto en un servidor, asegúrate de que la cuenta que ejecuta el proceso pueda escribir en el directorio de salida; de lo contrario, el paso de renderizado fallará silenciosamente. + +## Paso 1: Instalar Aspose.HTML + +Primero, agrega la biblioteca Aspose.HTML a tu proyecto. Abre la consola del Administrador de paquetes NuGet y ejecuta: + +```powershell +Install-Package Aspose.HTML +``` + +O, si prefieres la interfaz gráfica, busca **Aspose.HTML** y haz clic en **Install**. Esto descargará todos los DLL necesarios, incluido el motor de renderizado. + +> **Por qué es importante:** Aspose.HTML maneja el análisis de HTML, el diseño CSS y la rasterización de imágenes internamente, por lo que no tienes que iniciar un navegador sin cabeza. Además, es totalmente administrado, lo que significa que no hay dependencias nativas que distribuir. + +## Paso 2: Configurar opciones de renderizado de imagen + +Antes de renderizar, decide el tamaño y la calidad de salida. La clase `ImageRenderingOptions` te brinda un control granular. + +```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 +}; +``` + +> **¿Por qué habilitar antialiasing?** Sin él, los bordes pueden verse dentados, lo cual es especialmente notorio en pantallas de alta DPI. Activarlo añade un pequeño costo de rendimiento pero produce un PNG mucho más limpio. + +## Paso 3: Cargar el contenido HTML + +Puedes renderizar una URL remota, un archivo local o incluso una cadena HTML cruda. En este ejemplo obtendremos una página en vivo. + +```csharp +// Step 3: Load the HTML document from a URL +var htmlDoc = new HTMLDocument("https://example.com"); +``` + +Si tienes HTML almacenado en una cadena, usa la sobrecarga que acepta `MemoryStream`: + +```csharp +string rawHtml = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **Caso límite:** Algunos sitios bloquean agentes de usuario que no sean navegadores. Si obtienes una imagen en blanco, establece un encabezado de user‑agent personalizado en la solicitud o descarga el HTML primero y pásalo como cadena. + +## Paso 4: Renderizar a PNG + +Ahora la operación principal: llamar a `RenderToFile`. Proporciona la ruta completa donde deseas guardar el PNG. + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +Después de ejecutar esta línea, encontrarás `output.png` en la carpeta especificada. Ábrelo con cualquier visor de imágenes para verificar el resultado. + +> **Qué esperar:** El PNG tendrá exactamente 800 × 600 px, con texto suave y colores que coinciden con la página original. Si la página fuente usa CSS o imágenes externas, Aspose.HTML descargará esos recursos automáticamente, siempre que sean accesibles. + +## Paso 5: Verificar y usar el resultado + +Una rápida comprobación de sanidad asegura que realmente obtuviste una imagen y no un archivo vacío. + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +Ahora puedes **guardar página web como PNG** para archivado, incrustar la imagen en boletines de correo electrónico o alimentarla a una canalización de aprendizaje automático que espere páginas rasterizadas. + +## Opcional: Ajustes para diferentes escenarios + +### 5.1 Renderizar una captura de pantalla de página completa + +Si deseas toda la página desplazable en lugar de un recorte del viewport, establece una altura mayor o usa `ImageRenderingOptions.PageHeight`: + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 Cambiar el formato de imagen + +Aspose.HTML admite JPEG, BMP, GIF y TIFF. Cambia la extensión del archivo y el formato se ajustará automáticamente: + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 Manejar páginas protegidas por autenticación + +Para páginas detrás de un inicio de sesión, obtén el HTML con `HttpClient` (incluyendo cookies o tokens bearer), luego pasa la cadena a `HTMLDocument` como se mostró antes. De esta manera aún puedes **convertir página web a imagen** aunque la página no sea de acceso público. + +## Ejemplo completo funcional + +A continuación tienes una aplicación de consola autocontenida que reúne todo. Copia‑pega el código en un nuevo proyecto de consola .NET y ejecútalo; descargará `https://example.com`, lo renderizará y guardará `output.png` junto al ejecutable. + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **Salida esperada:** Un archivo `output.png`, 800 × 600 px, que muestra la página principal de `example.com`. Ábrelo en cualquier visor de imágenes para confirmar la fidelidad visual. + +## Preguntas frecuentes y trampas comunes + +- **P: ¿Funciona en Linux?** + Sí. Aspose.HTML es multiplataforma; solo asegúrate de que el runtime de .NET esté instalado. + +- **P: Mi página usa JavaScript para inyectar contenido—¿aparecerá?** + Aspose.HTML **no** ejecuta JavaScript. Para páginas dinámicas deberás pre‑renderizar el HTML (por ejemplo, con Chrome sin cabeza) y luego pasar el marcado estático al renderizador. + +- **P: ¿Qué tan grande puede ser la imagen antes de que la memoria sea un problema?** + Renderizar páginas muy altas (más de 10 k píxeles) puede consumir varios cientos de megabytes de RAM. Si encuentras `OutOfMemoryException`, considera renderizar en segmentos y unir los PNG resultantes. + +- **P: ¿Puedo incrustar fuentes que no estén instaladas en el servidor?** + Sí. Incluye reglas `@font-face` en tu CSS o carga los archivos de fuentes mediante una etiqueta ``; Aspose.HTML los incrustará durante la rasterización. + +## Conclusión + +Ahora tienes un método sólido y listo para producción para **renderizar HTML a PNG** en C#. Configurando `ImageRenderingOptions`, cargando la página objetivo y llamando a `RenderToFile`, puedes **convertir página web a imagen**, **guardar HTML como PNG**, **exportar HTML como imagen** y **guardar página web como PNG** con solo unas pocas líneas de código. + +¿Próximos pasos? Prueba ajustar las dimensiones para capturas de alta DPI, experimenta con salida JPEG para reducir el tamaño del archivo o integra esta lógica en una API ASP.NET que devuelva PNG bajo demanda. Las posibilidades son infinitas, y como la solución es totalmente administrada, no tendrás que lidiarte con navegadores externos o bibliotecas nativas. + +¿Tienes más preguntas sobre renderizado de imágenes u otras funcionalidades de Aspose.HTML? ¡Deja un comentario abajo y feliz codificación! + +![render html to png example](placeholder.png "render html to png") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/spanish/net/html-document-manipulation/_index.md b/html/spanish/net/html-document-manipulation/_index.md index 84acbc5a9..fc974cc61 100644 --- a/html/spanish/net/html-document-manipulation/_index.md +++ b/html/spanish/net/html-document-manipulation/_index.md @@ -71,6 +71,8 @@ Aprenda a utilizar Aspose.HTML para .NET. Importe espacios de nombres, combine H Descubra el potencial del desarrollo web con Aspose.HTML para .NET. Cree, convierta y manipule documentos HTML fácilmente. ### [Crear HTML a partir de una cadena en C# – Guía del controlador de recursos personalizado](./create-html-from-string-in-c-custom-resource-handler-guide/) Aprenda a generar contenido HTML a partir de una cadena en C# utilizando un controlador de recursos personalizado con Aspose.HTML. +### [Cómo crear HTML – Añadir elementos y dar estilo al texto](./how-to-create-html-append-elements-and-style-text/) +Aprenda a crear documentos HTML añadiendo elementos y aplicando estilos al texto con Aspose.HTML para .NET. ## Conclusión diff --git a/html/spanish/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/spanish/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..cf8f179e2 --- /dev/null +++ b/html/spanish/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-28 +description: Cómo crear HTML programáticamente en C#. Aprende a añadir un elemento + al cuerpo, crear un elemento de párrafo, agregar texto en negrita y cursiva, y añadir + estilo CSS programáticamente. +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: es +og_description: Cómo crear HTML programáticamente en C#. Esta guía te muestra cómo + añadir un elemento al cuerpo, crear un elemento de párrafo, agregar texto en negrita + y cursiva, y aplicar estilos CSS de forma programática. +og_title: Cómo crear HTML – Añadir elementos y dar estilo al texto +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: Cómo crear HTML – Añadir elementos y dar estilo al texto +url: /es/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo crear HTML – Añadir elementos y aplicar estilo al texto + +¿Alguna vez te has preguntado **cómo crear HTML** desde C# sin recurrir a un StringBuilder? No eres el único. En muchos escenarios de automatización web o generación de correos electrónicos necesitas un enfoque limpio basado en DOM que te permita añadir elementos al cuerpo, aplicar estilo y mantener todo tipado de forma segura. + +En este tutorial recorreremos los pasos exactos para **cómo crear HTML** usando Aspose.HTML, cubriendo todo, desde crear un elemento de párrafo hasta añadir texto en negrita y cursiva y agregar estilo CSS de forma programática. Al final tendrás una cadena HTML lista para usar que podrás inyectar en un navegador, un correo electrónico o un convertidor a PDF. + +## Lo que necesitarás + +- **.NET 6+** (cualquier versión reciente funciona; la API es estable también en .NET Framework) +- **Aspose.HTML for .NET** paquete NuGet – `Install-Package Aspose.HTML` +- Un entendimiento básico de la sintaxis de C# – no se requiere nada sofisticado + +Sin archivos de configuración adicionales, sin motores de plantillas externos. Solo código C# puro que manipula el DOM. + +![ejemplo de cómo crear html](/images/how-to-create-html.png "Captura de pantalla que muestra la estructura HTML generada – cómo crear html") + +## Paso 1: Configurar el proyecto e importar espacios de nombres + +Lo primero. Crea una aplicación de consola (o cualquier proyecto .NET) y agrega la referencia a Aspose.HTML. Luego importa los espacios de nombres que utilizaremos. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **Consejo profesional:** Si solo necesitas manipulación del DOM, puedes omitir el espacio de nombres `Aspose.Html.Rendering`; solo es necesario cuando renderizas el documento a una imagen o PDF. + +## Paso 2: Definir un estilo CSS de forma programática + +Cuando **añades estilo CSS de forma programática**, obtienes control total sobre familias de fuentes, tamaños e incluso banderas combinadas de estilo de fuente como negrita + cursiva. Aquí tienes cómo crear ese objeto de estilo. + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +¿por qué usar `WebFontStyle.Bold | WebFontStyle.Italic` en lugar de dos propiedades separadas? La API trata el estilo de fuente como una enumeración de banderas, por lo que combinarlas produce el CSS exacto `font-weight: bold; font-style: italic;` que escribirías a mano. + +## Paso 3: Crear un nuevo documento HTML + +Ahora realmente **cómo crear HTML** – el objeto documento actúa como nuestro lienzo. Piensa en él como una página en blanco sobre la que puedes pintar. + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +En este punto el documento contiene las etiquetas estándar ``, `` y ``. Puedes inspeccionar `htmlDoc.Body` para ver el elemento `` vacío listo para hijos. + +## Paso 4: Crear un elemento de párrafo y añadir texto en negrita y cursiva + +Aquí es donde brilla la palabra clave **create paragraph element**. Generaremos una etiqueta `

`, 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 `

` o `` usando `htmlDoc.CreateElement("div")`. El mismo patrón `SetAttribute` funciona. + +- **Añadir varios nodos:** Recorre una colección de cadenas y crea un párrafo para cada una, añadiéndolos al cuerpo. Recuerda reutilizar el mismo `CSSStyleDeclaration` si el estilo es idéntico—no es necesario recrearlo. + +- **Problemas de codificación:** `TextContent` codifica automáticamente en HTML los caracteres especiales (`&`, `<`, `>`). Si necesitas HTML sin procesar, usa `InnerHtml` en su lugar, pero ten cuidado con los ataques de inyección. + +## Ejemplo completo funcionando + +A continuación se muestra el programa completo, listo para copiar y pegar, que demuestra todo el flujo de principio a fin. + +```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); + } +} +``` + +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. + +![create pdf document c# example](/images/create-pdf-csharp.png) + +## 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. + +![Render HTML to PDF example](render-html-to-pdf.png "render html to pdf") + +*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 = "

Hello, world!

"; +``` + +¿Por qué comenzar con una cadena? Porque muchas APIs (servicios de correo electrónico, generadores de PDF, controles web‑view) aceptan marcado HTML directamente. Usar una cadena mantiene el flujo de trabajo ligero y fácil de probar. + +--- + +## Paso 2: Inicializar el HTMLDocument con la cadena + +La clase `HTMLDocument` de Aspose.Html puede leer marcado desde una cadena, una URL o un stream. Aquí la alimentamos con nuestro `rawHtml`. + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +En este punto el documento vive completamente en memoria. No se crea ningún archivo, y puedes manipular el DOM como lo harías en un navegador. + +--- + +## Paso 3: Construir un custom resource handler para capturar la salida + +Un **custom resource handler** te brinda control sobre dónde termina cada parte del documento (HTML, imágenes, CSS). En nuestro caso solo nos importa el HTML principal, así que escribiremos todo en un `MemoryStream`. + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**¿Por qué un handler personalizado?** El método `Save` predeterminado escribe a una ruta de archivo, lo que contradice el objetivo de un flujo de trabajo en memoria. Al sobrescribir `HandleResource` interceptamos cada solicitud de recurso y decidimos exactamente dónde va. Este es el núcleo de **cómo capturar HTML** sin tocar el disco. + +--- + +## Paso 4: Guardar el documento usando el handler + +Ahora indicamos a Aspose.Html que serialice el `HTMLDocument` en nuestro `MyMemoryHandler`. El objeto `SaveOptions` puede quedar vacío para la salida HTML predeterminada, pero puedes ajustar la codificación, el formato legible, etc., si lo necesitas. + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +Cuando se ejecuta `Save`, se invoca `HandleResource`, el HTML principal se escribe en `memoryHandler.HtmlStream`, y cualquier archivo adicional (imágenes, CSS) obtendría sus propios streams—aunque no hemos añadido ninguno en este ejemplo sencillo. + +--- + +## Paso 5: Convertir el stream capturado de nuevo a una cadena + +Tenemos el HTML dentro de un `MemoryStream`. Para **convertir HTML a string**, simplemente rebobinamos el stream y lo leemos con un `StreamReader`. + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +`resultHtml` ahora contiene el marcado exacto que Aspose.Html generó. Puedes enviarlo por la red, incrustarlo en un correo electrónico, o pasarlo a otra biblioteca. + +--- + +## Paso 6: Verificar la salida – ¿qué deberías ver? + +Imprimamos el resultado en la consola para que puedas confirmar que todo funcionó. + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**Salida esperada** + +```html + +

Hello, world!

+``` + +Observa que la etiqueta `` se agrega automáticamente por Aspose.Html. Esa es una de las razones por las que preferimos una biblioteca sobre la concatenación manual de cadenas—normaliza el marcado por ti. + +--- + +## Ejemplo completo y ejecutable + +A continuación se muestra el programa completo que puedes colocar en una aplicación de consola y ejecutar de inmediato. Todas las piezas están juntas, así que no hay conjeturas sobre declaraciones `using` faltantes o dependencias ocultas. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +Copia‑pega, pulsa **F5**, y verás el HTML formateado impreso en la consola. + +--- + +## Preguntas comunes y casos límite + +### ¿Qué pasa si necesito capturar imágenes o archivos CSS? + +El `MyMemoryHandler` ya crea un nuevo `MemoryStream` para cada recurso. Puedes ampliarlo para almacenar esos streams en un diccionario indexado por `info.Uri`. Luego podrías, por ejemplo, incrustar imágenes como cadenas Base64 más adelante. + +### ¿Puedo cambiar la codificación de la salida? + +Sí. Pasa un `Saving.HtmlSaveOptions` con la propiedad `Encoding` configurada: + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### ¿Esto funciona con documentos grandes? + +`MemoryStream` crece dinámicamente, pero vigila el consumo de memoria para páginas masivas (cientos de MB). En esos escenarios podrías transmitir directamente a un archivo o a un socket de red. + +### ¿Cómo **write HTML to stream** en una sola línea? + +Si no necesitas un handler personalizado, puedes usar `htmlDocument.Save(Stream, SaveOptions)` directamente: + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +Esa es una alternativa compacta, aunque pierdes la capacidad de interceptar recursos auxiliares. + +--- + +## Consejos profesionales y trampas + +* **Consejo pro:** Siempre restablece `Position` a `0` antes de leer un `MemoryStream`. Olvidarlo produce una cadena vacía. +* **Cuidado con:** Pasar un `null` `SaveOptions`—Aspose.Html usará los valores predeterminados, pero las opciones explícitas dejan clara tu intención. +* **Error típico:** Asumir que `HtmlStream` está poblado antes de que `Save` termine. El stream solo está disponible después de que la llamada a `Save` regrese. +* **Nota de rendimiento:** Para conversiones repetitivas, reutiliza una única instancia de `MyMemoryHandler` y limpia sus streams entre ejecuciones para evitar asignaciones extra. + +--- + +## Conclusión + +Hemos demostrado cómo **crear HTML a partir de una cadena** en C#, capturar el resultado con un **custom resource handler**, y **write HTML to stream** para procesamiento posterior. Al convertir el stream en memoria de nuevo a una cadena, también obtienes una forma fiable de **convertir HTML a string** sin tocar el sistema de archivos. + +Este patrón es lo suficientemente flexible para plantillas de correo electrónico, generación de PDF, o cualquier escenario donde necesites el marcado HTML al instante. A continuación, podrías explorar incrustar imágenes como Base64, ajustar `HtmlSaveOptions` para minificación, o pasar la cadena a Aspose.PDF para conversión a PDF. + +¿Tienes más preguntas sobre el manejo de recursos, codificación o rendimiento? Deja un comentario abajo—¡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/swedish/net/generate-jpg-and-png-images/_index.md b/html/swedish/net/generate-jpg-and-png-images/_index.md index 39785fb46..5dcf03a4b 100644 --- a/html/swedish/net/generate-jpg-and-png-images/_index.md +++ b/html/swedish/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Lär dig att använda Aspose.HTML för .NET för att manipulera HTML-dokument, k Lär dig hur du aktiverar kantutjämning för att förbättra bildkvaliteten när du konverterar DOCX-dokument till PNG eller JPG med Aspose.HTML. ### [Konvertera DOCX till PNG – skapa zip‑arkiv C#‑handledning](./convert-docx-to-png-create-zip-archive-c-tutorial/) Lär dig hur du konverterar DOCX-filer till PNG-bilder och packar dem i ett zip‑arkiv med C# och Aspose.HTML. +### [Rendera HTML till PNG i C# – Komplett steg‑för‑steg‑guide](./render-html-to-png-in-c-complete-step-by-step-guide/) +Lär dig hur du renderar HTML till PNG i C# med Aspose.HTML genom en komplett steg‑för‑steg‑handledning. ## Slutsats diff --git a/html/swedish/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/swedish/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..3161068d7 --- /dev/null +++ b/html/swedish/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-28 +description: Lär dig hur du renderar HTML till PNG i C# med Aspose.HTML. Denna guide + täcker också hur du konverterar en webbsida till bild, sparar HTML som PNG, exporterar + HTML som bild och sparar en webbsida som 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: sv +og_description: Lär dig hur du renderar HTML till PNG i C# med Aspose.HTML. Följ den + här enkla handledningen för att konvertera en webbsida till bild, spara HTML som + PNG och exportera HTML som bild. +og_title: Rendera HTML till PNG i C# – Komplett steg‑för‑steg‑guide +tags: +- C# +- Aspose.HTML +- Image Rendering +- .NET +title: Rendera HTML till PNG i C# – Komplett steg‑för‑steg‑guide +url: /sv/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 >}} + +# Rendera HTML till PNG i C# – Komplett steg‑för‑steg guide + +Behöver du **rendera HTML till PNG** snabbt? I den här handledningen går vi igenom exakt hur du renderar HTML till PNG med Aspose.HTML‑biblioteket för .NET. Oavsett om du bygger en miniatyrtjänst, genererar e‑postförhandsgranskningar, eller bara behöver **konvertera en webbsida till en bild** för rapportering, så får dig stegen nedan dit med minimal möda. + +Poängen är att de flesta utvecklare tar till ett verktyg för skärmdump av webbläsare och hamnar med att jonglera headless Chrome‑binärer. Det fungerar, men det medför mycket extra overhead. Med Aspose.HTML kan du **spara HTML som PNG** direkt från kod, utan någon extern process. När du är klar med den här guiden kan du **exportera HTML som bild**, lagra resultatet på disk och till och med justera kantutjämning eller dimensioner för att passa ditt UI. + +## Vad du kommer att lära dig + +- Hur du installerar Aspose.HTML via NuGet. +- Konfigurera `ImageRenderingOptions` för högkvalitativ output. +- Laddar en online‑sida eller en lokal HTML‑sträng. +- Renderar sidan till en PNG‑fil. +- Vanliga fallgropar när du **sparar webbsida som PNG** och hur du undviker dem. + +Ingen tidigare erfarenhet av Aspose behövs; bara en grundläggande C#/.NET‑miljö och en internetanslutning. + +## Förutsättningar + +- .NET 6.0 eller senare (koden fungerar på .NET Core, .NET Framework 4.6+ och .NET 7). +- Visual Studio 2022 (eller någon IDE du föredrar). +- Tillgång till NuGet för att hämta `Aspose.HTML`‑paketet. +- En mapp där du har skrivrättighet för den genererade PNG‑filen. + +> **Proffstips:** Om du planerar att köra detta på en server, se till att kontot som kör processen kan skriva till utmatningskatalogen; annars kommer renderingssteget att misslyckas tyst. + +## Steg 1: Installera Aspose.HTML + +Först, lägg till Aspose.HTML‑biblioteket i ditt projekt. Öppna NuGet Package Manager Console och kör: + +```powershell +Install-Package Aspose.HTML +``` + +Eller, om du föredrar UI‑gränssnittet, sök efter **Aspose.HTML** och klicka på **Install**. Detta hämtar alla nödvändiga DLL‑filer, inklusive renderingsmotorn. + +> **Varför detta är viktigt:** Aspose.HTML hanterar HTML‑parsning, CSS‑layout och bild‑rasterisering internt, så du behöver inte starta en headless‑webbläsare. Det är också helt hanterat, vilket betyder att inga inhemska beroenden behöver distribueras. + +## Steg 2: Konfigurera bildrenderingsalternativ + +Innan du renderar, bestäm output‑storlek och kvalitet. Klassen `ImageRenderingOptions` ger dig fin‑granulär kontroll. + +```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 +}; +``` + +> **Varför aktivera kantutjämning?** Utan den kan kanter se hackiga ut, vilket är särskilt märkbart på hög‑DPI‑skärmar. Att slå på den ger en liten prestandakostnad men ger en mycket renare PNG. + +## Steg 3: Ladda HTML‑innehållet + +Du kan rendera en fjärr‑URL, en lokal fil eller till och med en rå HTML‑sträng. I det här exemplet hämtar vi en live‑sida. + +```csharp +// Step 3: Load the HTML document from a URL +var htmlDoc = new HTMLDocument("https://example.com"); +``` + +Om du har HTML lagrat i en sträng, använd overload‑metoden som accepterar `MemoryStream`: + +```csharp +string rawHtml = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **Edge case:** Vissa webbplatser blockerar icke‑webbläsar‑user‑agents. Om du får en tom bild, sätt en anpassad user‑agent‑header på begäran eller ladda ner HTML först och mata in den som en sträng. + +## Steg 4: Rendera till PNG + +Nu den centrala operationen—anropa `RenderToFile`. Ange den fullständiga sökvägen där du vill spara PNG‑filen. + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +Efter att den här raden har körts hittar du `output.png` i den angivna mappen. Öppna den med någon bildvisare för att verifiera resultatet. + +> **Vad du kan förvänta dig:** PNG‑filen blir exakt 800 × 600 px, med mjuk text och färger som matchar original‑sidan. Om källsidan använder extern CSS eller bilder, kommer Aspose.HTML att ladda ner dessa resurser automatiskt, förutsatt att de är åtkomliga. + +## Steg 5: Verifiera och använd resultatet + +En snabb kontroll säkerställer att du faktiskt fick en bild och inte en tom fil. + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +Du kan nu **spara webbsida som PNG** för arkivering, bädda in bilden i e‑postnyhetsbrev, eller mata in den i en maskininlärnings‑pipeline som förväntar sig rasteriserade sidor. + +## Valfritt: Justering för olika scenarier + +### 5.1 Rendera en hel‑sidig skärmdump + +Om du vill ha hela den rullbara sidan snarare än ett utsnitt i viewport‑storlek, sätt höjden till ett större värde eller använd `ImageRenderingOptions.PageHeight`: + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 Ändra bildformatet + +Aspose.HTML stödjer JPEG, BMP, GIF och TIFF. Byt filändelsen så följer formatet automatiskt: + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 Hantera autentiseringsskyddade sidor + +För sidor bakom en inloggning, hämta HTML med `HttpClient` (inklusive cookies eller bearer‑tokens), och skicka sedan strängen till `HTMLDocument` som visat tidigare. På så sätt kan du fortfarande **konvertera webbsida till bild** även när sidan inte är offentligt tillgänglig. + +## Komplett fungerande exempel + +Nedan är en fristående konsolapp som samlar allt. Kopiera och klistra in den i ett nytt .NET‑konsolprojekt och kör—den kommer ladda ner `https://example.com`, rendera den och spara `output.png` bredvid den körbara filen. + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **Förväntat resultat:** En `output.png`‑fil, 800 × 600 px, som visar startsidan för `example.com`. Öppna den i någon bildvisare för att bekräfta den visuella återgivningen. + +## Vanliga frågor & fallgropar + +- **Q: Fungerar detta på Linux?** + Ja. Aspose.HTML är plattformsoberoende; se bara till att .NET‑runtime är installerad. + +- **Q: Min sida använder JavaScript för att injicera innehåll—kommer det att visas?** + Aspose.HTML **exekverar inte** JavaScript. För dynamiska sidor måste du för‑rendera HTML:n (t.ex. med headless Chrome) och sedan mata in den statiska markupen till renderaren. + +- **Q: Hur stor kan bilden bli innan minnet blir ett problem?** + Rendering av mycket långa sidor (10 k+ pixlar) kan förbruka flera hundra megabyte RAM. Om du får `OutOfMemoryException`, överväg att rendera i segment och sy ihop PNG‑filerna. + +- **Q: Kan jag bädda in typsnitt som inte är installerade på servern?** + Ja. Inkludera `@font-face`‑regler i din CSS eller ladda typsnittsfilerna via en ``‑tagg; Aspose.HTML kommer att bädda in dem under rasteriseringen. + +## Slutsats + +Du har nu en solid, produktionsklar metod för att **rendera HTML till PNG** i C#. Genom att konfigurera `ImageRenderingOptions`, ladda mål‑sidan och anropa `RenderToFile` kan du **konvertera webbsida till bild**, **spara HTML som PNG**, **exportera HTML som bild**, och **spara webbsida som PNG** med bara några få kodrader. + +Nästa steg? Prova att justera dimensionerna för hög‑DPI‑skärmdumpar, experimentera med JPEG‑output för mindre filstorlekar, eller integrera denna logik i ett ASP.NET‑API som returnerar PNG‑filer på begäran. Möjligheterna är oändliga, och eftersom lösningen är helt hanterad behöver du inte kämpa med externa webbläsare eller inhemska bibliotek. + +Har du fler frågor om bildrendering eller andra Aspose.HTML‑funktioner? Lämna en kommentar nedan, och lycka till med kodningen! + +![rendera html till png exempel](placeholder.png "rendera html till png") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/swedish/net/html-document-manipulation/_index.md b/html/swedish/net/html-document-manipulation/_index.md index b766c5742..90486f792 100644 --- a/html/swedish/net/html-document-manipulation/_index.md +++ b/html/swedish/net/html-document-manipulation/_index.md @@ -71,6 +71,8 @@ Lär dig att använda Aspose.HTML för .NET. Importera namnutrymme, slå samman Lås upp potentialen för webbutveckling med Aspose.HTML för .NET. Skapa, konvertera och manipulera HTML-dokument enkelt. ### [Skapa HTML från sträng i C# – Anpassad resurs‑hanterare guide](./create-html-from-string-in-c-custom-resource-handler-guide/) Lär dig hur du skapar HTML från en sträng i C# med en anpassad resurs‑hanterare i Aspose.HTML för .NET. +### [Hur man skapar HTML – Lägg till element och formatera text](./how-to-create-html-append-elements-and-style-text/) +Lär dig hur du skapar HTML, lägger till element och formaterar text med Aspose.HTML för .NET. ## Slutsats diff --git a/html/swedish/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/swedish/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..c6eb4fd7a --- /dev/null +++ b/html/swedish/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-28 +description: Hur man skapar HTML programatiskt i C#. Lär dig att lägga till ett element + i body, skapa ett styckelement, lägga till fet och kursiv text samt lägga till CSS‑stil + programatiskt. +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: sv +og_description: Hur man skapar HTML programatiskt i C#. Denna guide visar hur du lägger + till ett element i body, skapar ett styckelement, lägger till fet och kursiv text + samt lägger till CSS‑stil programatiskt. +og_title: Hur man skapar HTML – Lägg till element och formatera text +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: Hur man skapar HTML – Lägg till element och styla text +url: /sv/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur man skapar HTML – Lägg till element och formatera text + +Har du någonsin undrat **hur man skapar HTML** från C# utan att behöva använda en string builder? Du är inte ensam. I många web‑automatiserings‑ eller e‑post‑genereringsscenarier behöver du ett rent, DOM‑baserat tillvägagångssätt som låter dig lägga till element i body, formatera dem och hålla allt typ‑säkert. + +I den här handledningen går vi igenom de exakta stegen för att **hur man skapar HTML** med Aspose.HTML, och täcker allt från att skapa ett styckelement till att lägga till fet kursiv text och lägga till CSS‑stil programatiskt. I slutet har du en färdig‑att‑använda HTML‑sträng som du kan injicera i en webbläsare, ett e‑postmeddelande eller en PDF‑konverterare. + +## Vad du behöver + +- **.NET 6+** (någon nyare version fungerar; API:et är stabilt även på .NET Framework också) +- **Aspose.HTML for .NET** NuGet‑paket – `Install-Package Aspose.HTML` +- En grundläggande förståelse för C#‑syntax – inget avancerat krävs + +Inga extra konfigurationsfiler, inga externa mallmotorer. Bara ren C#‑kod som manipulerar DOM‑en. + +![exempel på hur man skapar html](/images/how-to-create-html.png "Skärmbild som visar den genererade HTML‑strukturen – hur man skapar html") + +## Steg 1: Ställ in projektet och importera namnrymder + +Först och främst. Skapa en konsolapp (eller något .NET‑projekt) och lägg till Aspose.HTML‑referensen. Importera sedan de namnrymder vi kommer att använda. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **Proffstips:** Om du bara behöver DOM‑manipulering kan du utelämna namnrymden `Aspose.Html.Rendering` – den behövs bara när du renderar dokumentet till en bild eller PDF. + +## Steg 2: Definiera en CSS‑stil programatiskt + +När du **lägger till css‑stil programatiskt**, får du full kontroll över typsnittsfamiljer, storlekar och även kombinerade font‑style‑flaggor som fet + kursiv. Så här skapar du det stilobjektet. + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +Varför använda `WebFontStyle.Bold | WebFontStyle.Italic` istället för två separata egenskaper? API:et behandlar font‑style som en flagg‑enumeration, så att slå ihop dem ger exakt den CSS `font-weight: bold; font-style: italic;` som du skulle skriva för hand. + +## Steg 3: Skapa ett nytt HTML‑dokument + +Nu ska vi faktiskt **hur man skapar HTML** – dokumentobjektet fungerar som vår duk. Tänk på det som en tom sida du kan måla på. + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +Vid det här laget innehåller dokumentet de vanliga ``, `` och ``‑taggarna. Du kan inspektera `htmlDoc.Body` för att se det tomma ``‑elementet redo för barn. + +## Steg 4: Skapa ett styckelement och lägg till fet kursiv text + +Det är här nyckelordet **create paragraph element** verkligen lyser. Vi kommer att generera en `

`‑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 `

` eller `` med `htmlDoc.CreateElement("div")`. Samma `SetAttribute`‑mönster fungerar. + +- **Appending Multiple Nodes:** Loopa över en samling strängar och skapa ett stycke för varje, och lägg till varje i body. Kom ihåg att återanvända samma `CSSStyleDeclaration` om stilen är identisk—det behövs ingen ny skapelse. + +- **Encoding Concerns:** `TextContent` HTML‑kodar automatiskt specialtecken (`&`, `<`, `>`). Om du behöver rå HTML, använd `InnerHtml` istället, men var försiktig med injektionsattacker. + +## Fullt fungerande exempel + +Nedan är det kompletta, kopiera‑och‑klistra‑klara programmet som demonstrerar hela flödet från början till slut. + +```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); + } +} +``` + +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. + +![create pdf document c# example](/images/create-pdf-csharp.png) + +## 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. + +![Rendera HTML till PDF‑exempel](render-html-to-pdf.png "rendera html till pdf") + +*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 = "

Hello, world!

"; +``` + +Varför börja med en sträng? Eftersom många API:er (e‑posttjänster, PDF‑generatorer, web‑view‑kontroller) accepterar HTML‑markup direkt. Att använda en sträng gör arbetsflödet lättviktigt och testbart. + +--- + +## Steg 2: Initiera HTMLDocument med strängen + +Aspose.Html:s `HTMLDocument`‑klass kan läsa markup från en sträng, en URL eller en ström. Här matar vi den med vår `rawHtml`. + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +Vid detta tillfälle finns dokumentet helt i minnet. Ingen fil skapas, och du kan manipulera DOM‑en precis som i en webbläsare. + +--- + +## Steg 3: Bygg en custom resource handler för att fånga outputen + +En **custom resource handler** ger dig kontroll över var varje del av dokumentet (HTML, bilder, CSS) hamnar. I vårt fall bryr vi oss bara om huvud‑HTML, så vi skriver allt till en `MemoryStream`. + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**Varför en custom handler?** Standard‑`Save`‑metoden skriver till en filsökväg, vilket undergräver syftet med ett arbetsflöde i minnet. Genom att åsidosätta `HandleResource` fångar vi varje resursförfrågan och bestämmer exakt var den ska gå. Detta är kärnan i **how to capture HTML** utan att röra disken. + +--- + +## Steg 4: Spara dokumentet med hjälp av handlern + +Nu instruerar vi Aspose.Html att serialisera `HTMLDocument` till vår `MyMemoryHandler`. `SaveOptions`‑objektet kan lämnas tomt för standard‑HTML‑output, men du kan justera kodning, pretty‑print osv. om så behövs. + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +När `Save` körs anropas `HandleResource`, huvud‑HTML skrivs till `memoryHandler.HtmlStream`, och eventuella bifogade filer (bilder, CSS) skulle få egna strömmar—även om vi inte lagt till några i detta enkla exempel. + +--- + +## Steg 5: Konvertera den fångade strömmen tillbaka till en sträng + +Vi har HTML:n lagrad i en `MemoryStream`. För att **convert HTML to string** spolar vi bara tillbaka strömmen och läser den med en `StreamReader`. + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +`resultHtml` innehåller nu exakt den markup som Aspose.Html producerade. Du kan skicka den över nätverket, bädda in den i ett e‑postmeddelande eller föra den till ett annat bibliotek. + +--- + +## Steg 6: Verifiera outputen – vad bör du se? + +Låt oss skriva ut resultatet till konsolen så du kan bekräfta att allt fungerade. + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**Förväntad output** + +```html + +

Hello, world!

+``` + +Observera att ``‑taggen automatiskt läggs till av Aspose.Html. Det är en av anledningarna till att vi föredrar ett bibliotek framför manuell strängkonkatenering—det normaliserar markupen åt dig. + +--- + +## Fullt, körbart exempel + +Nedan är det kompletta programmet som du kan klistra in i en konsolapp och köra direkt. Alla delar är samlade, så du behöver inte gissa om saknade `using`‑satser eller dolda beroenden. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +Kopiera‑klistra in, tryck **F5**, så ser du den formaterade HTML‑koden skriven i konsolen. + +--- + +## Vanliga frågor & specialfall + +### Vad händer om jag behöver fånga bilder eller CSS‑filer? + +`MyMemoryHandler` skapar redan en ny `MemoryStream` för varje resurs. Du kan utöka den för att lagra dessa strömmar i en dictionary med nyckel `info.Uri`. Då skulle du exempelvis kunna bädda in bilder som Base64‑strängar senare. + +### Kan jag ändra kodningen på outputen? + +Ja. Passa en `Saving.HtmlSaveOptions` med `Encoding`‑egenskapen satt: + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### Fungerar detta med stora dokument? + +`MemoryStream` växer dynamiskt, men håll koll på minnesanvändningen för enorma sidor (hundratals MB). I sådana scenarier kan du strömma direkt till en fil eller en nätverkssocket. + +### Hur skriver jag **write HTML to stream** i en enda rad? + +Om du inte behöver en custom handler kan du använda `htmlDocument.Save(Stream, SaveOptions)` direkt: + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +Det är ett kompakt alternativ, men du förlorar möjligheten att avlyssna bifogade resurser. + +--- + +## Pro‑tips & fallgropar + +* **Pro tip:** Återställ alltid `Position` till `0` innan du läser en `MemoryStream`. Att glömma detta ger en tom sträng. +* **Watch out for:** Skicka en `null` `SaveOptions`—Aspose.Html använder standardvärden, men explicita alternativ gör din avsikt tydlig. +* **Typical mistake:** Anta att `HtmlStream` är fylld innan `Save` är klar. Strömmen är bara tillgänglig efter att `Save`‑anropet har returnerat. +* **Performance note:** För upprepade konverteringar, återanvänd en enda `MyMemoryHandler`‑instans och rensa dess strömmar mellan körningar för att undvika extra allokeringar. + +--- + +## Slutsats + +Vi har visat hur man **create HTML from string** i C#, fångar resultatet med en **custom resource handler**, och **write HTML to stream** för vidare bearbetning. Genom att konvertera minnesströmmen tillbaka till en sträng får du också ett pålitligt sätt att **convert HTML to string** utan att röra filsystemet. + +Detta mönster är tillräckligt flexibelt för e‑postmallning, PDF‑generering eller vilket scenario som helst där du behöver HTML‑markup i farten. Därefter kan du utforska att bädda in bilder som Base64, justera `HtmlSaveOptions` för minifiering, eller föra strängen till Aspose.PDF för PDF‑konvertering. + +Har du fler frågor om resurshantering, kodning eller prestanda? Lämna en kommentar nedan—lycka till med kodningen! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/thai/net/generate-jpg-and-png-images/_index.md b/html/thai/net/generate-jpg-and-png-images/_index.md index bb3254275..de29c34c2 100644 --- a/html/thai/net/generate-jpg-and-png-images/_index.md +++ b/html/thai/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Aspose.HTML สำหรับ .NET นำเสนอวิธีการง เรียนรู้วิธีเปิดใช้งาน Antialiasing เพื่อให้ภาพ PNG/JPG ที่แปลงจาก DOCX มีความคมชัดและลื่นไหล ### [แปลง DOCX เป็น PNG – สร้างไฟล์ ZIP ด้วย C#](./convert-docx-to-png-create-zip-archive-c-tutorial/) เรียนรู้วิธีแปลงไฟล์ DOCX เป็น PNG แล้วบีบอัดเป็นไฟล์ ZIP ด้วย C# โดยใช้ Aspose.HTML +### [เรนเดอร์ HTML เป็น PNG ด้วย C# – คู่มือแบบครบถ้วนขั้นตอนต่อขั้นตอน](./render-html-to-png-in-c-complete-step-by-step-guide/) +เรียนรู้วิธีแปลง HTML เป็นไฟล์ PNG ด้วย C# อย่างละเอียดตามขั้นตอนครบถ้วน ## บทสรุป diff --git a/html/thai/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/thai/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..435189dd9 --- /dev/null +++ b/html/thai/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,243 @@ +--- +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: th +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: /th/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 ไม่ว่าคุณจะสร้างบริการทำ thumbnail, สร้างตัวอย่างอีเมล, หรือแค่ต้อง **แปลงหน้าเว็บเป็นภาพ** เพื่อการรายงาน ขั้นตอนต่อไปนี้จะช่วยคุณทำได้โดยไม่ยุ่งยาก + +สิ่งที่หลายคนทำคือใช้เครื่องมือจับภาพหน้าจอของเบราว์เซอร์และต้องจัดการกับไฟล์ไบนารีของ Chrome แบบ headless ซึ่งทำงานได้แต่เพิ่มภาระมากเกินไป ด้วย Aspose.HTML คุณสามารถ **บันทึก HTML เป็น PNG** ได้โดยตรงจากโค้ดโดยไม่ต้องเรียกโปรเซสภายนอก เมื่อคุณอ่านจบบทนี้แล้วคุณจะสามารถ **ส่งออก HTML เป็นภาพ**, เก็บผลลัพธ์ลงดิสก์, และแม้แต่ปรับ antialiasing หรือขนาดให้เหมาะกับ UI ของคุณได้ + +## สิ่งที่คุณจะได้เรียนรู้ + +- วิธีติดตั้ง Aspose.HTML ผ่าน NuGet +- การตั้งค่า `ImageRenderingOptions` เพื่อให้ได้ผลลัพธ์คุณภาพสูง +- การโหลดหน้าเว็บออนไลน์หรือสตริง HTML ภายในเครื่อง +- การเรนเดอร์หน้าเว็บเป็นไฟล์ PNG +- ปัญหาที่พบบ่อยเมื่อ **บันทึกหน้าเว็บเป็น PNG** และวิธีหลีกเลี่ยง + +ไม่จำเป็นต้องมีประสบการณ์กับ Aspose มาก่อน; เพียงแค่มีการตั้งค่า C#/.NET เบื้องต้นและการเชื่อมต่ออินเทอร์เน็ต + +## ข้อกำหนดเบื้องต้น + +- .NET 6.0 หรือใหม่กว่า (โค้ดนี้ทำงานบน .NET Core, .NET Framework 4.6+, และ .NET 7) +- Visual Studio 2022 (หรือ IDE ใดก็ได้ที่คุณชอบ) +- สามารถเข้าถึง NuGet เพื่อดึงแพคเกจ `Aspose.HTML` +- โฟลเดอร์ที่คุณมีสิทธิ์เขียนสำหรับไฟล์ PNG ที่จะสร้าง + +> **เคล็ดลับ:** หากคุณวางแผนจะรันบนเซิร์ฟเวอร์, ตรวจสอบให้แน่ใจว่าบัญชีที่รันกระบวนการนั้นสามารถเขียนไปยังไดเรกทอรีผลลัพธ์ได้; มิฉะนั้นขั้นตอนการเรนเดอร์จะล้มเหลวโดยไม่มีข้อความแจ้ง + +## ขั้นตอนที่ 1: ติดตั้ง Aspose.HTML + +ก่อนอื่นให้เพิ่มไลบรารี Aspose.HTML เข้าไปในโปรเจกต์ของคุณ เปิด **NuGet Package Manager Console** แล้วรัน: + +```powershell +Install-Package Aspose.HTML +``` + +หรือหากคุณชอบใช้ UI, ค้นหา **Aspose.HTML** แล้วคลิก **Install** การทำเช่นนี้จะดึง DLL ที่จำเป็นทั้งหมดรวมถึงเอนจินเรนเดอร์ด้วย + +> **ทำไมต้องสำคัญ:** Aspose.HTML จัดการการพาร์ส HTML, การจัดวาง CSS, และการเรสเตอร์ภาพภายในโดยอัตโนมัติ คุณจึงไม่ต้องเปิดเบราว์เซอร์แบบ headless อีกต่อไป นอกจากนี้ยังเป็น Managed Code ทั้งหมด หมายความว่าไม่มีการพึ่งพาไลบรารีเนทีฟใด ๆ + +## ขั้นตอนที่ 2: ตั้งค่า Image Rendering Options + +ก่อนทำการเรนเดอร์ ให้กำหนดขนาดและคุณภาพของผลลัพธ์ `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 +}; +``` + +> **ทำไมต้องเปิด antialiasing?** หากไม่เปิด ขอบภาพอาจดูหยักกระด้าง ซึ่งจะเห็นได้ชัดบนหน้าจอ DPI สูง การเปิดใช้งานจะเพิ่มค่าใช้จ่ายด้านประสิทธิภาพเล็กน้อยแต่ได้ PNG ที่เรียบเนียนมากขึ้น + +## ขั้นตอนที่ 3: โหลดเนื้อหา HTML + +คุณสามารถเรนเดอร์จาก URL ระยะไกล, ไฟล์ในเครื่อง, หรือแม้แต่สตริง HTML ดิบ สำหรับตัวอย่างนี้เราจะดึงหน้าเว็บสด + +```csharp +// Step 3: Load the HTML document from a URL +var htmlDoc = new HTMLDocument("https://example.com"); +``` + +หากคุณมี HTML เก็บอยู่ในสตริง ให้ใช้ overload ที่รับ `MemoryStream`: + +```csharp +string rawHtml = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **กรณีพิเศษ:** บางเว็บไซต์บล็อก user‑agent ที่ไม่ใช่เบราว์เซอร์ หากคุณได้ภาพว่างเปล่า ให้ตั้งค่า header `User‑Agent` แบบกำหนดเองในคำขอ หรือดาวน์โหลด HTML มาก่อนแล้วส่งเป็นสตริง + +## ขั้นตอนที่ 4: เรนเดอร์เป็น PNG + +นี่คือการดำเนินการหลัก – เรียก `RenderToFile` ระบุพาธเต็มที่คุณต้องการให้ PNG ถูกบันทึก + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +เมื่อบรรทัดนี้ทำงานเสร็จ คุณจะพบไฟล์ `output.png` ในโฟลเดอร์ที่ระบุ เปิดไฟล์ด้วยโปรแกรมดูภาพใดก็ได้เพื่อยืนยันผลลัพธ์ + +> **สิ่งที่คาดหวัง:** PNG จะมีขนาด 800 × 600 px พร้อมข้อความและสีที่เรียบเนียนตรงกับหน้าเว็บต้นฉบับ หากหน้าเว็บต้นฉบับใช้ CSS หรือรูปภาพภายนอก Aspose.HTML จะดาวน์โหลดทรัพยากรเหล่านั้นโดยอัตโนมัติ หากเข้าถึงได้ + +## ขั้นตอนที่ 5: ตรวจสอบและใช้งานผลลัพธ์ + +การตรวจสอบอย่างเร็วช่วยให้คุณมั่นใจว่าได้ภาพจริง ๆ ไม่ใช่ไฟล์ว่างเปล่า + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +ตอนนี้คุณสามารถ **บันทึกหน้าเว็บเป็น PNG** เพื่อการเก็บถาวร, ฝังภาพในจดหมายข่าวอีเมล, หรือส่งต่อไปยัง pipeline การเรียนรู้ของเครื่องที่ต้องการหน้าเว็บเป็นรูปภาพได้แล้ว + +## ตัวเลือกเพิ่มเติม: ปรับแต่งสำหรับสถานการณ์ต่าง ๆ + +### 5.1 เรนเดอร์ภาพเต็มหน้า (Full‑Page Screenshot) + +หากต้องการภาพของทั้งหน้าแบบเลื่อนได้ทั้งหมด ไม่ใช่แค่ส่วนที่มองเห็นใน viewport ให้ตั้งค่าความสูงให้ใหญ่ขึ้นหรือใช้ `ImageRenderingOptions.PageHeight`: + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 เปลี่ยนรูปแบบภาพ + +Aspose.HTML รองรับ JPEG, BMP, GIF, และ TIFF เพียงเปลี่ยนนามสกุลไฟล์ ส่วนฟอร์แมตจะเปลี่ยนตามโดยอัตโนมัติ: + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 จัดการหน้าที่ต้องการการยืนยันตัวตน + +สำหรับหน้าที่อยู่หลังการล็อกอิน ให้ดึง HTML ด้วย `HttpClient` (รวมคุกกี้หรือ bearer token) แล้วส่งสตริงไปยัง `HTMLDocument` ตามที่แสดงในขั้นตอนก่อนหน้า วิธีนี้คุณยังคง **แปลงหน้าเว็บเป็นภาพ** ได้แม้หน้าเว็บจะไม่เปิดให้สาธารณะ + +## ตัวอย่างทำงานครบถ้วน + +ด้านล่างเป็นแอปคอนโซลที่รวมทุกอย่างไว้ในไฟล์เดียว คัดลอก‑วางลงในโปรเจกต์คอนโซล .NET ใหม่แล้วรัน – มันจะดาวน์โหลด `https://example.com`, เรนเดอร์หน้าเว็บ, และบันทึก `output.png` ข้างไฟล์ executable + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **ผลลัพธ์ที่คาดหวัง:** ไฟล์ `output.png` ขนาด 800 × 600 px แสดงหน้าแรกของ `example.com` เปิดไฟล์ด้วยโปรแกรมดูภาพใดก็ได้เพื่อยืนยันความแม่นยำของภาพ + +## คำถามที่พบบ่อยและข้อควรระวัง + +- **ถาม: ทำงานบน Linux ได้หรือไม่?** + ใช่ Aspose.HTML รองรับหลายแพลตฟอร์ม; เพียงตรวจสอบให้แน่ใจว่าติดตั้ง .NET runtime ไว้แล้ว + +- **ถาม: หน้าเว็บของฉันใช้ JavaScript เพื่อแทรกเนื้อหา – จะปรากฏหรือไม่?** + Aspose.HTML **ไม่** รัน JavaScript สำหรับหน้าแบบไดนามิกคุณต้องทำการเรนเดอร์ HTML ล่วงหน้า (เช่นด้วย headless Chrome) แล้วจึงส่ง markup คงที่ให้ renderer + +- **ถาม: ภาพใหญ่เกินไปจะทำให้หน่วยความจำเต็มได้หรือไม่?** + การเรนเดอร์หน้าที่สูงหลายพันพิกเซล (10 k+ พิกเซล) อาจใช้ RAM หลายร้อยเมกะไบต์ หากเจอ `OutOfMemoryException` ให้พิจารณาเรนเดอร์เป็นส่วน ๆ แล้วต่อภาพ PNG เข้าด้วยกัน + +- **ถาม: สามารถฝังฟอนต์ที่ไม่ได้ติดตั้งบนเซิร์ฟเวอร์ได้หรือไม่?** + ทำได้โดยใส่กฎ `@font-face` ใน CSS หรือโหลดไฟล์ฟอนต์ผ่าน ``; Aspose.HTML จะฝังฟอนต์เหล่านั้นระหว่างการเรสเตอร์ + +## สรุป + +คุณมีวิธีที่พร้อมใช้งานในระดับ production เพื่อ **เรนเดอร์ HTML เป็น PNG** ใน C# แล้ว ด้วยการตั้งค่า `ImageRenderingOptions`, โหลดหน้าเป้าหมาย, และเรียก `RenderToFile` คุณสามารถ **แปลงหน้าเว็บเป็นภาพ**, **บันทึก HTML เป็น PNG**, **ส่งออก HTML เป็นภาพ**, และ **บันทึกหน้าเว็บเป็น PNG** เพียงไม่กี่บรรทัดโค้ด + +ขั้นตอนต่อไป? ลองปรับขนาดสำหรับภาพ DPI สูง, ทดลองใช้ JPEG เพื่อให้ไฟล์เล็กลง, หรือผสานโลจิกนี้เข้าไปใน API ASP.NET ที่คืน PNG ตามคำขอ ความเป็นไปได้ไม่มีที่สิ้นสุด และเพราะโซลูชันนี้เป็น Managed Code คุณไม่ต้องต่อสู้กับเบราว์เซอร์ภายนอกหรือไลบรารีเนทีฟ + +มีคำถามเพิ่มเติมเกี่ยวกับการเรนเดอร์ภาพหรือฟีเจอร์อื่นของ Aspose.HTML? แสดงความคิดเห็นด้านล่าง แล้วขอให้สนุกกับการเขียนโค้ด! + +![ตัวอย่างการเรนเดอร์ html เป็น png](placeholder.png "เรนเดอร์ html เป็น png") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/thai/net/html-document-manipulation/_index.md b/html/thai/net/html-document-manipulation/_index.md index 6df7d74b1..512092c48 100644 --- a/html/thai/net/html-document-manipulation/_index.md +++ b/html/thai/net/html-document-manipulation/_index.md @@ -71,6 +71,8 @@ Aspose.HTML สำหรับ .NET โดดเด่นด้วยควา ปลดล็อกศักยภาพของการพัฒนาเว็บด้วย Aspose.HTML สำหรับ .NET สร้าง แปลง และจัดการเอกสาร HTML ได้อย่างง่ายดาย ### [สร้าง HTML จากสตริงใน C# – คู่มือ Custom Resource Handler](./create-html-from-string-in-c-custom-resource-handler-guide/) เรียนรู้วิธีสร้าง HTML จากสตริงใน C# ด้วยตัวจัดการทรัพยากรแบบกำหนดเองใน Aspose.HTML สำหรับ .NET +### [วิธีสร้าง HTML – เพิ่มองค์ประกอบและจัดรูปแบบข้อความ](./how-to-create-html-append-elements-and-style-text/) +เรียนรู้วิธีสร้าง HTML ด้วยการเพิ่มองค์ประกอบและกำหนดสไตล์ข้อความอย่างง่ายใน C# ## บทสรุป diff --git a/html/thai/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/thai/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..4b83b000d --- /dev/null +++ b/html/thai/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-03-28 +description: วิธีสร้าง HTML ด้วยโปรแกรมใน C# เรียนรู้การเพิ่มองค์ประกอบลงใน body, + สร้างแท็กพารากราฟ, เพิ่มข้อความตัวหนาและตัวเอียง, และเพิ่มสไตล์ CSS ด้วยโปรแกรม +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: th +og_description: วิธีสร้าง HTML อย่างโปรแกรมมิ่งใน C# คู่มือนี้จะแสดงวิธีการเพิ่มองค์ประกอบลงใน + body, สร้างองค์ประกอบย่อหน้า, เพิ่มข้อความหนาและเอียง, และเพิ่มสไตล์ CSS อย่างโปรแกรมมิ่ง +og_title: วิธีสร้าง HTML – เพิ่มองค์ประกอบและจัดรูปแบบข้อความ +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: วิธีสร้าง HTML – เพิ่มองค์ประกอบและจัดรูปแบบข้อความ +url: /th/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีสร้าง HTML – เพิ่มองค์ประกอบและจัดรูปแบบข้อความ + +เคยสงสัย **วิธีสร้าง HTML** จาก C# โดยไม่ต้องใช้ string builder หรือไม่? คุณไม่ได้เป็นคนเดียวที่คิดเช่นนั้น ในหลายสถานการณ์เช่นการทำเว็บ‑ออโตเมชันหรือการสร้างอีเมล คุณต้องการวิธีที่สะอาดและอิง DOM ที่ให้คุณเพิ่มองค์ประกอบลงใน body, จัดรูปแบบมัน, และรักษาความปลอดภัยของประเภททั้งหมด + +ในบทเรียนนี้เราจะเดินผ่านขั้นตอนที่แม่นยำเพื่อ **วิธีสร้าง HTML** ด้วย Aspose.HTML ครอบคลุมตั้งแต่การสร้างองค์ประกอบ paragraph ไปจนถึงการเพิ่มข้อความหนาและเอียงและการเพิ่มสไตล์ CSS ด้วยโปรแกรม เมื่อเสร็จคุณจะได้สตริง HTML ที่พร้อมใช้งานซึ่งสามารถแทรกลงในเบราว์เซอร์, อีเมล, หรือคอนเวอร์เตอร์ PDF + +## สิ่งที่คุณต้องเตรียม + +- **.NET 6+** (เวอร์ชันล่าสุดใดก็ได้; API มีความเสถียรใน .NET Framework ด้วย) +- **Aspose.HTML for .NET** NuGet package – `Install-Package Aspose.HTML` +- ความเข้าใจพื้นฐานของไวยากรณ์ C# – ไม่จำเป็นต้องมีอะไรพิเศษ + +ไม่ต้องมีไฟล์การกำหนดค่าเพิ่มเติม ไม่ต้องใช้เครื่องมือเทมเพลตภายนอก เพียงโค้ด C# ธรรมดาที่จัดการกับ DOM + +![ตัวอย่างการสร้าง html](/images/how-to-create-html.png "ภาพหน้าจอแสดงโครงสร้าง HTML ที่สร้างขึ้น – วิธีสร้าง html") + +## ขั้นตอนที่ 1: ตั้งค่าโปรเจกต์และนำเข้า Namespaces + +First things first. Create a console app (or any .NET project) and add the Aspose.HTML reference. Then pull in the namespaces we’ll be using. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **Pro tip:** If you only need DOM manipulation, you can drop the `Aspose.Html.Rendering` namespace – it’s only required when you render the document to an image or PDF. + +## ขั้นตอนที่ 2: กำหนดสไตล์ CSS ด้วยโปรแกรม + +When you **add css style programmatically**, you gain full control over font families, sizes, and even combined font‑style flags like bold + italic. Here’s how to craft that style object. + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +ทำไมต้องใช้ `WebFontStyle.Bold | WebFontStyle.Italic` แทนการใช้สองคุณสมบัติแยกกัน? API ปฏิบัติต่อสไตล์ฟอนต์เป็น flag enumeration ดังนั้นการรวมกันจะให้ผลลัพธ์ CSS ที่ตรงกับ `font-weight: bold; font-style: italic;` ที่คุณเขียนด้วยมือ + +## ขั้นตอนที่ 3: สร้างเอกสาร HTML ใหม่ + +Now we actually **how to create HTML** – the document object acts as our canvas. Think of it as a blank page you can paint on. + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +At this point the document contains the standard ``, ``, and `` tags. You can inspect `htmlDoc.Body` to see the empty `` element ready for children. + +## ขั้นตอนที่ 4: สร้างองค์ประกอบ Paragraph และเพิ่มข้อความหนาและเอียง + +This is where the **create paragraph element** keyword shines. We’ll generate a `

` 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 `

` or `` using `htmlDoc.CreateElement("div")`. The same `SetAttribute` pattern works. + +- **Appending Multiple Nodes:** Loop over a collection of strings and create a paragraph for each, appending each to the body. Remember to re‑use the same `CSSStyleDeclaration` if the style is identical—no need to recreate it. + +- **Encoding Concerns:** `TextContent` automatically HTML‑encodes special characters (`&`, `<`, `>`). If you need raw HTML, use `InnerHtml` instead, but be cautious of injection attacks. + +## ตัวอย่างการทำงานเต็มรูปแบบ + +Below is the complete, copy‑and‑paste‑ready program that demonstrates the entire flow from start to finish. + +```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); + } +} +``` + +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 พร้อมใช้งานสำหรับการแจกจ่าย, การเก็บถาวร, หรือการประมวลผลต่อ + +![ตัวอย่างการสร้าง pdf document c#](/images/create-pdf-csharp.png) + +## คำถามที่พบบ่อย (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` พร้อมสไตล์และรูปภาพครบถ้วน + +![Render HTML to PDF example](render-html-to-pdf.png "render html to pdf") + +*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 = "

Hello, world!

"; +``` + +ทำไมต้องเริ่มจากสตริง? เพราะหลาย API (บริการอีเมล, ตัวแปลง PDF, คอนโทรลเว็บ‑วิว) ยอมรับมาร์กอัป HTML โดยตรง การใช้สตริงทำให้เวิร์กโฟลว์เบาและทดสอบได้ง่าย + +--- + +## ขั้นตอนที่ 2: Initialise the HTMLDocument with the string + +คลาส `HTMLDocument` ของ Aspose.Html สามารถอ่านมาร์กอัปจากสตริง, URL หรือสตรีมได้ ที่นี่เราจะส่ง `rawHtml` ของเราให้มัน + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +ในขณะนี้เอกสารอยู่ทั้งหมดในหน่วยความจำ ไม่ได้สร้างไฟล์ใด ๆ และคุณสามารถจัดการ DOM ได้เหมือนในเบราว์เซอร์ + +--- + +## ขั้นตอนที่ 3: Build a custom resource handler to capture the output + +**custom resource handler** ให้คุณควบคุมว่าทรัพยากรแต่ละส่วนของเอกสาร (HTML, รูปภาพ, CSS) จะไปอยู่ที่ไหน ในกรณีของเราต้องการเพียง HTML หลักเท่านั้น จึงเขียนทุกอย่างลง `MemoryStream` + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**ทำไมต้องใช้ handler แบบกำหนดเอง?** เมธอด `Save` ปกติจะเขียนลงไฟล์ ซึ่งขัดกับแนวคิดทำงานในหน่วยความจำโดยไม่ใช้ดิสก์ การ override `HandleResource` ทำให้เราสามารถดักจับทุกคำขอทรัพยากรและกำหนดตำแหน่งจัดเก็บได้ นี่คือหัวใจของ **วิธีจับ HTML** โดยไม่ต้องสัมผัสดิสก์ + +--- + +## ขั้นตอนที่ 4: Save the document using the handler + +ตอนนี้เราบอก Aspose.Html ให้ทำการ serialize `HTMLDocument` ไปยัง `MyMemoryHandler` ของเรา `SaveOptions` สามารถเว้นว่างไว้เพื่อใช้ค่าเริ่มต้นของ HTML ได้ แต่คุณก็สามารถปรับ encoding, pretty‑print ฯลฯ หากต้องการ + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +เมื่อ `Save` ทำงาน `HandleResource` จะถูกเรียก, HTML หลักจะถูกเขียนลง `memoryHandler.HtmlStream` และไฟล์เสริม (รูปภาพ, CSS) จะได้สตรีมของตัวเอง—แม้ว่าในตัวอย่างง่ายนี้เราจะไม่มีไฟล์เสริมใด ๆ + +--- + +## ขั้นตอนที่ 5: Convert the captured stream back to a string + +ตอนนี้ HTML อยู่ใน `MemoryStream` แล้ว เพื่อ **แปลง HTML เป็นสตริง** เราเพียงรีไวด์สตรีมและอ่านด้วย `StreamReader` + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +`resultHtml` ตอนนี้มีมาร์กอัปที่ Aspose.Html สร้างขึ้นอย่างตรงตัว คุณสามารถส่งต่อผ่านเครือข่าย, ฝังในอีเมล, หรือป้อนให้ไลบรารีอื่นได้ + +--- + +## ขั้นตอนที่ 6: Verify the output – what should you see? + +พิมพ์ผลลัพธ์ลงคอนโซลเพื่อยืนยันว่าทุกอย่างทำงานตามที่คาด + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**ผลลัพธ์ที่คาดหวัง** + +```html + +

Hello, world!

+``` + +สังเกตว่าแท็ก `` ถูกเพิ่มโดยอัตโนมัติจาก Aspose.Html นี่เป็นหนึ่งในเหตุผลที่เราชอบใช้ไลบรารีแทนการต่อสตริงด้วยตนเอง—มันทำให้มาร์กอัปเป็นมาตรฐานให้คุณ + +--- + +## ตัวอย่างเต็มที่สามารถรันได้ + +ด้านล่างเป็นโปรแกรมสมบูรณ์ที่คุณสามารถวางลงในแอปคอนโซลและรันได้ทันที ทุกส่วนรวมอยู่ในไฟล์เดียว ไม่ต้องเดา `using` ใด ๆ หรือการพึ่งพาที่ซ่อนอยู่ + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +คัดลอก‑วาง, กด **F5**, แล้วคุณจะเห็น HTML ที่จัดรูปแบบแล้วพิมพ์ออกมาที่คอนโซล + +--- + +## คำถามทั่วไป & กรณีขอบ + +### ถ้าต้องการจับภาพหรือไฟล์ CSS ล่ะ? + +`MyMemoryHandler` มีการสร้าง `MemoryStream` ใหม่สำหรับทุกทรัพยากร คุณสามารถขยายให้เก็บสตรีมเหล่านั้นใน dictionary ที่ใช้ `info.Uri` เป็นคีย์ แล้วนำไปแปลงเป็น Base64 ภายหลังได้ + +### สามารถเปลี่ยน encoding ของผลลัพธ์ได้ไหม? + +ทำได้ โดยส่ง `Saving.HtmlSaveOptions` ที่กำหนด property `Encoding` + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### ทำงานกับเอกสารขนาดใหญ่ได้หรือไม่? + +`MemoryStream` จะขยายตามขนาดโดยอัตโนมัติ แต่ควรระวังการใช้หน่วยความจำเมื่อหน้าเว็บมีขนาดหลายร้อย MB ในกรณีนั้นอาจต้องสตรีมโดยตรงไปยังไฟล์หรือซ็อกเก็ตเครือข่าย + +### วิธี **write HTML to stream** ในบรรทัดเดียวคืออะไร? + +ถ้าไม่ต้องการ handler แบบกำหนดเอง คุณสามารถใช้ `htmlDocument.Save(Stream, SaveOptions)` ได้โดยตรง: + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +นี่เป็นวิธีสั้น ๆ แม้จะเสียความสามารถในการดักจับทรัพยากรเสริมก็ตาม + +--- + +## เคล็ดลับระดับมืออาชีพ & สิ่งที่ควรระวัง + +* **Pro tip:** รีเซ็ต `Position` เป็น `0` ก่อนอ่าน `MemoryStream` หากลืมจะได้สตริงว่าง +* **Watch out for:** ส่ง `null` ให้ `SaveOptions`—Aspose.Html จะใช้ค่าเริ่มต้น แต่การกำหนดค่าอย่างชัดเจนทำให้เจตนาชัดเจนขึ้น +* **Typical mistake:** สมมติว่า `HtmlStream` มีข้อมูลก่อนที่ `Save` จะเสร็จ สตรีมจะพร้อมใช้หลังจากเมธอด `Save` คืนค่า +* **Performance note:** สำหรับการแปลงหลายครั้ง ให้ใช้ instance ของ `MyMemoryHandler` เดียวและเคลียร์สตรีมระหว่างรันเพื่อหลีกเลี่ยงการจัดสรรใหม่ + +--- + +## สรุป + +เราได้แสดงวิธี **สร้าง HTML จากสตริง** ใน C#, จับผลลัพธ์ด้วย **custom resource handler**, และ **write HTML to stream** เพื่อประมวลผลต่อไป โดยการแปลงสตรีมในหน่วยความจำกลับเป็นสตริง คุณก็จะมีวิธีที่เชื่อถือได้ในการ **แปลง HTML เป็นสตริง** โดยไม่ต้องใช้ไฟล์ระบบ + +รูปแบบนี้ยืดหยุ่นพอสำหรับการทำเทมเพลตอีเมล, การแปลงเป็น PDF, หรือสถานการณ์ใด ๆ ที่ต้องการมาร์กอัป HTML แบบไดนามิก ต่อไปคุณอาจลองฝังรูปภาพเป็น Base64, ปรับ `HtmlSaveOptions` เพื่อทำให้ไฟล์เล็กลง, หรือส่งสตริงนี้ให้ Aspose.PDF เพื่อแปลงเป็น PDF + +มีคำถามเพิ่มเติมเกี่ยวกับการจัดการทรัพยากร, encoding, หรือประสิทธิภาพ? แสดงความคิดเห็นด้านล่าง—ขอให้สนุกกับการเขียนโค้ด! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/turkish/net/generate-jpg-and-png-images/_index.md b/html/turkish/net/generate-jpg-and-png-images/_index.md index a918363c4..1e878d41e 100644 --- a/html/turkish/net/generate-jpg-and-png-images/_index.md +++ b/html/turkish/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ HTML belgelerini düzenlemek, HTML'yi resimlere dönüştürmek ve daha fazlası DOCX belgelerini PNG veya JPG formatına dönüştürürken antialiasing'i etkinleştirerek daha net ve pürüzsüz görüntüler elde edin. ### [docx'i png'ye dönüştür – zip arşivi oluşturma C# eğitimi](./convert-docx-to-png-create-zip-archive-c-tutorial/) C# kullanarak docx dosyalarını png formatına dönüştürüp, sonuçları zip arşivi içinde paketlemeyi öğrenin. +### [C# ile HTML'yi PNG'ye Render Etme – Tam Adım‑Adım Kılavuz](./render-html-to-png-in-c-complete-step-by-step-guide/) +C# kullanarak HTML içeriğini PNG formatına dönüştürmeyi adım adım öğrenin ve yüksek kaliteli görseller oluşturun. ## Çözüm diff --git a/html/turkish/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/turkish/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..05a794f2b --- /dev/null +++ b/html/turkish/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,246 @@ +--- +category: general +date: 2026-03-28 +description: Aspose.HTML ile C#’ta HTML’yi PNG’ye nasıl render edeceğinizi öğrenin. + Bu rehber ayrıca web sayfasını görüntüye nasıl dönüştüreceğinizi, HTML’yi PNG olarak + nasıl kaydedeceğinizi, HTML’yi görüntü olarak nasıl dışa aktaracağınızı ve web sayfasını + PNG olarak nasıl kaydedeceğinizi kapsar. +draft: false +keywords: +- render html to png +- convert webpage to image +- save html as png +- export html as image +- save webpage as png +language: tr +og_description: Aspose.HTML ile C#'ta HTML'yi PNG'ye nasıl render edeceğinizi öğrenin. + Web sayfasını görüntüye dönüştürmek, HTML'yi PNG olarak kaydetmek ve HTML'yi görüntü + olarak dışa aktarmak için bu kolay öğreticiyi izleyin. +og_title: C#'ta HTML'yi PNG'ye Dönüştür – Tam Adım Adım Rehber +tags: +- C# +- Aspose.HTML +- Image Rendering +- .NET +title: C# ile HTML'yi PNG'ye Render Et – Tam Adım Adım Kılavuz +url: /tr/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 >}} + +# C#'ta HTML'yi PNG'ye Render Et – Tam Adım‑Adım Kılavuz + +Hızlı bir şekilde **HTML'yi PNG'ye render** etmeniz mi gerekiyor? Bu öğreticide, .NET için Aspose.HTML kütüphanesini kullanarak HTML'yi PNG'ye nasıl render edeceğinizi adım adım göstereceğiz. İster bir küçük resim hizmeti oluşturuyor olun, e‑posta ön izlemeleri üretiyor olun, ya da raporlama için **bir web sayfasını görüntüye dönüştürmek** istiyor olun, aşağıdaki adımlar size minimum çaba ile ulaşmanızı sağlayacak. + +Şöyle ki—çoğu geliştirici bir tarayıcı‑ekran görüntüsü aracına yönelir ve sonuçta başsız Chrome ikili dosyalarıyla uğraşır. Bu işe yarar, ama çok fazla ek yük getirir. Aspose.HTML ile **HTML'yi doğrudan koddan PNG olarak kaydedebilir**, harici bir süreç gerektirmezsiniz. Bu kılavuzun sonunda **HTML'yi görüntü olarak dışa aktarabilir**, sonucu diske kaydedebilir ve UI'nize uygun olacak şekilde antialiasing ya da boyutları ayarlayabilirsiniz. + +## Öğrenecekleriniz + +- Aspose.HTML'yi NuGet üzerinden nasıl kuracağınızı. +- `ImageRenderingOptions` sınıfını yüksek kalite çıktısı için nasıl ayarlayacağınızı. +- Çevrimiçi bir sayfa ya da yerel HTML dizesi nasıl yükleneceğini. +- Sayfayı bir PNG dosyasına nasıl render edeceğinizi. +- **Web sayfasını PNG olarak kaydederken** ortaya çıkan yaygın tuzaklar ve bunlardan nasıl kaçınılacağını. + +Aspose ile önceden bir deneyime sahip olmanız gerekmez; sadece temel bir C#/.NET ortamı ve internet bağlantısı yeterlidir. + +## Önkoşullar + +- .NET 6.0 veya daha yeni bir sürüm (kod .NET Core, .NET Framework 4.6+ ve .NET 7'de çalışır). +- Visual Studio 2022 (veya tercih ettiğiniz herhangi bir IDE). +- `Aspose.HTML` paketini çekmek için NuGet erişimi. +- Oluşturulan PNG için yazma izninizin olduğu bir klasör. + +> **Pro tip:** Bunu bir sunucuda çalıştırmayı planlıyorsanız, işlemi yürüten hesabın çıktı dizinine yazma izni olduğundan emin olun; aksi takdirde render adımı sessizce başarısız olur. + +## Adım 1: Aspose.HTML'yi Kurun + +İlk olarak, Aspose.HTML kütüphanesini projenize ekleyin. NuGet Package Manager Console'u açın ve şu komutu çalıştırın: + +```powershell +Install-Package Aspose.HTML +``` + +Ya da UI'yı tercih ediyorsanız, **Aspose.HTML**'yi aratın ve **Install** (Yükle) düğmesine tıklayın. Bu, render motoru da dahil olmak üzere gerekli tüm DLL'leri çeker. + +> **Neden önemli:** Aspose.HTML, HTML ayrıştırma, CSS yerleşimi ve görüntü rasterleştirmesini dahili olarak yönetir, bu sayede başsız bir tarayıcı başlatmanıza gerek kalmaz. Ayrıca tamamen yönetilen bir yapıya sahiptir, yani dağıtmanız gereken yerel bağımlılık yoktur. + +## Adım 2: Görüntü Render Seçeneklerini Yapılandırma + +Render işlemine başlamadan önce çıktı boyutunu ve kalitesini belirleyin. `ImageRenderingOptions` sınıfı size ayrıntılı kontrol sağlar. + +```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 +}; +``` + +> **Antialiasing'i neden etkinleştirmelisiniz?** Etkinleştirilmezse kenarlar tırtıklı görünebilir, bu özellikle yüksek DPI ekranlarda belirgindir. Açılması küçük bir performans maliyeti ekler ancak çok daha temiz bir PNG elde edilmesini sağlar. + +## Adım 3: HTML İçeriğini Yükleme + +Uzak bir URL, yerel bir dosya ya da ham bir HTML dizesi render edebilirsiniz. Bu örnek için canlı bir sayfa çekeceğiz. + +```csharp +// Step 3: Load the HTML document from a URL +var htmlDoc = new HTMLDocument("https://example.com"); +``` + +HTML bir dize olarak saklanıyorsa, `MemoryStream` kabul eden aşırı yüklemeyi kullanın: + +```csharp +string rawHtml = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **Köşe durum:** Bazı siteler tarayıcı olmayan kullanıcı ajanlarını engeller. Boş bir görüntü alırsanız, istekte özel bir user‑agent başlığı ayarlayın ya da HTML'i önce indirin ve dize olarak besleyin. + +## Adım 4: PNG'ye Render Etme + +Şimdi temel işlem—`RenderToFile` çağrısı. PNG'nin kaydedileceği tam yolu belirtin. + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +Bu satır çalıştıktan sonra, belirtilen klasörde `output.png` dosyasını bulacaksınız. Sonucu doğrulamak için herhangi bir görüntü görüntüleyiciyle açın. + +> **Beklenen:** PNG tam olarak 800 × 600 px olacak, metin ve renkler orijinal sayfayla eşleşecek şekilde pürüzsüz olacaktır. Kaynak sayfa harici CSS veya görüntüler kullanıyorsa, Aspose.HTML bu kaynakları otomatik olarak indirecek, erişilebilir oldukları sürece. + +## Adım 5: Sonucu Doğrulama ve Kullanma + +Hızlı bir doğrulama, gerçekten bir görüntü alıp almadığınızı ve boş bir dosya olmadığını kontrol eder. + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +Artık **web sayfasını PNG olarak kaydedebilir** arşivleme için, görüntüyü e‑posta bültenlerine gömebilir ya da rasterleştirilmiş sayfalar bekleyen bir makine‑öğrenimi hattına besleyebilirsiniz. + +## Opsiyonel: Farklı Senaryolar İçin Ayarlamalar + +### 5.1 Tam Sayfa Ekran Görüntüsü Render Etme + +Görünüm penceresi boyutunda bir dilim yerine kaydırılabilir tüm sayfayı istiyorsanız, yüksekliği daha büyük bir değere ayarlayın ya da `ImageRenderingOptions.PageHeight` kullanın: + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 Görüntü Formatını Değiştirme + +Aspose.HTML JPEG, BMP, GIF ve TIFF formatlarını destekler. Dosya uzantısını değiştirin, format otomatik olarak buna göre ayarlanacaktır: + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 Kimlik Doğrulamalı Sayfaları İşleme + +Giriş gerektiren sayfalar için, HTML'i `HttpClient` ile (çerezler veya taşıyıcı token'lar dahil) alın, ardından dizeyi daha önce gösterildiği gibi `HTMLDocument`'e geçirin. Böylece sayfa herkese açık olmasa bile **web sayfasını görüntüye dönüştürebilirsiniz**. + +## Tam Çalışan Örnek + +Aşağıda her şeyi bir araya getiren bağımsız bir konsol uygulaması bulunuyor. Yeni bir .NET konsol projesine kopyalayıp yapıştırın ve çalıştırın—`https://example.com` adresini indirecek, render edecek ve çalıştırılabilir dosyanın yanına `output.png` olarak kaydedecek. + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **Beklenen çıktı:** `example.com` ana sayfasını gösteren, 800 × 600 px boyutunda bir `output.png` dosyası. Görsel doğruluğu onaylamak için herhangi bir görüntü görüntüleyicide açın. + +## Yaygın Sorular & Dikkat Edilmesi Gerekenler + +- **S: Bu Linux'ta çalışır mı?** + Evet. Aspose.HTML çapraz‑platformdur; sadece .NET runtime'ın kurulu olduğundan emin olun. + +- **S: Sayfam JavaScript ile içerik ekliyor—görünecek mi?** + Aspose.HTML JavaScript çalıştırmaz. Dinamik sayfalar için HTML'i önceden render etmeniz (ör. başsız Chrome ile) ve ardından statik işaretlemi renderlayıcıya vermeniz gerekir. + +- **S: Bellek sorununa yol açmadan görüntü ne kadar büyük olabilir?** + Çok uzun sayfaları (10 k+ piksel) render etmek yüzlerce megabayt RAM tüketebilir. `OutOfMemoryException` alırsanız, görüntüyü bölümlere render etmeyi ve PNG'leri birleştirmeyi düşünün. + +- **S: Sunucuda yüklü olmayan fontları gömebilir miyim?** + Evet. CSS'nize `@font-face` kurallarını ekleyin ya da `` etiketiyle font dosyalarını yükleyin; Aspose.HTML rasterleştirme sırasında bunları gömecektir. + +## Sonuç + +Artık C#'ta **HTML'yi PNG'ye render** etmek için sağlam, üretim‑hazır bir yönteme sahipsiniz. `ImageRenderingOptions`'ı yapılandırarak, hedef sayfayı yükleyerek ve `RenderToFile`'ı çağırarak sadece birkaç satır kodla **web sayfasını görüntüye dönüştürebilir**, **HTML'yi PNG olarak kaydedebilir**, **HTML'yi görüntü olarak dışa aktarabilir** ve **web sayfasını PNG olarak kaydedebilirsiniz**. + +Sonraki adımlar? Yüksek DPI ekran görüntüleri için boyutları ayarlamayı deneyin, daha küçük dosya boyutları için JPEG çıktısını test edin ya da bu mantığı isteğe bağlı PNG dönen bir ASP.NET API'sine entegre edin. Olasılıklar sınırsızdır ve çözüm tamamen yönetildiği için harici tarayıcılar ya da yerel kütüphanelerle uğraşmak zorunda kalmazsınız. + +Görüntü render'ı ya da diğer Aspose.HTML özellikleri hakkında daha fazla sorunuz mu var? Aşağıya yorum bırakın, iyi kodlamalar! + +![HTML'yi PNG'ye render etme örneği](placeholder.png "HTML'yi PNG'ye render et") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/turkish/net/html-document-manipulation/_index.md b/html/turkish/net/html-document-manipulation/_index.md index f736f400d..a29d41944 100644 --- a/html/turkish/net/html-document-manipulation/_index.md +++ b/html/turkish/net/html-document-manipulation/_index.md @@ -71,6 +71,8 @@ Aspose.HTML for .NET kullanarak dinamik ve web içerikleri oluşturmayı öğren Aspose.HTML for .NET ile web geliştirmenin potansiyelini açığa çıkarın. HTML belgelerini kolayca oluşturun, dönüştürün ve düzenleyin. ### [C#'ta Dizeden HTML Oluşturma – Özel Kaynak İşleyici Rehberi](./create-html-from-string-in-c-custom-resource-handler-guide/) C# içinde dizeden HTML oluşturmayı ve özel kaynak işleyicisiyle nasıl kullanacağınızı öğrenin. +### [HTML Oluşturma – Eleman Ekleme ve Metni Stil Verme](./how-to-create-html-append-elements-and-style-text/) +HTML belgesi oluşturmayı, yeni eleman eklemeyi ve metin stilini ayarlamayı adım adım öğrenin. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/turkish/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/turkish/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..c4b59e386 --- /dev/null +++ b/html/turkish/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-28 +description: C#'ta programlı olarak HTML nasıl oluşturulur. Elemanı gövdeye eklemeyi, + paragraf öğesi oluşturmayı, kalın ve italik metin eklemeyi ve CSS stilini programlı + olarak eklemeyi öğrenin. +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: tr +og_description: C#'ta programlı olarak HTML nasıl oluşturulur. Bu rehber, öğeyi gövdeye + eklemeyi, paragraf öğesi oluşturmayı, kalın italik metin eklemeyi ve CSS stilini + programlı olarak eklemeyi gösterir. +og_title: HTML Nasıl Oluşturulur – Öğeleri Ekle ve Metni Stilize Et +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: HTML Nasıl Oluşturulur – Elemanları Ekle ve Metni Stilize Et +url: /tr/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML Oluşturma – Elemanları Ekleme ve Metni Stil Verme + +C#'tan **HTML nasıl oluşturulur** diye hiç merak ettiniz mi, string builder'a düşmeden? Tek başınıza değilsiniz. Birçok web‑otomasyonu veya e‑posta‑oluşturma senaryosunda, elemanı body'ye eklemenizi, stil vermenizi ve her şeyi tip‑güvenli tutmanızı sağlayan temiz, DOM‑tabanlı bir yaklaşıma ihtiyacınız var. + +Bu öğreticide, Aspose.HTML kullanarak **HTML nasıl oluşturulur** konusundaki tam adımları göstereceğiz; bir paragraf elemanı oluşturmaktan kalın italik metin eklemeye ve CSS stilini programlı olarak eklemeye kadar her şeyi kapsayacak. Sonunda, bir tarayıcıya, e‑postaya veya PDF dönüştürücüsüne enjekte edebileceğiniz hazır bir HTML dizesine sahip olacaksınız. + +## Gereksinimler + +- **.NET 6+** (herhangi bir yeni sürüm çalışır; API .NET Framework'te de kararlıdır) +- **Aspose.HTML for .NET** NuGet paketi – `Install-Package Aspose.HTML` +- C# sözdizimi hakkında temel bir anlayış – ekstra bir şey gerekmez + +Ekstra yapılandırma dosyası yok, harici şablon motorları yok. Sadece DOM'u manipüle eden sade C# kodu. + +![HTML oluşturma örneği](/images/how-to-create-html.png "Oluşturulan HTML yapısını gösteren ekran görüntüsü – HTML oluşturma") + +## Adım 1: Projeyi Kurun ve Ad Alanlarını İçe Aktarın + +İlk olarak, bir konsol uygulaması (veya herhangi bir .NET projesi) oluşturun ve Aspose.HTML referansını ekleyin. Ardından kullanacağımız ad alanlarını içe aktarın. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **Pro ipucu:** Yalnızca DOM manipülasyonuna ihtiyacınız varsa, `Aspose.Html.Rendering` ad alanını atlayabilirsiniz – bu, belgeyi bir görüntüye veya PDF'e render ederken gereklidir. + +## Adım 2: CSS Stilini Programlı Olarak Tanımlayın + +**CSS stilini programlı olarak eklediğinizde**, font aileleri, boyutları ve kalın + italik gibi birleştirilmiş font‑stil bayrakları üzerinde tam kontrol elde edersiniz. İşte bu stil nesnesini nasıl oluşturacağınız. + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +Neden iki ayrı özellik yerine `WebFontStyle.Bold | WebFontStyle.Italic` kullanıyorsunuz? API, font stilini bir bayrak enum'ı olarak ele alır, bu yüzden birleştirildiğinde elle yazacağınız tam CSS `font-weight: bold; font-style: italic;` elde edilir. + +## Adım 3: Yeni Bir HTML Belgesi Oluşturun + +Şimdi gerçekten **HTML nasıl oluşturulur** – belge nesnesi bizim tuvalimiz gibi davranır. Üzerine çizim yapabileceğiniz boş bir sayfa gibi düşünün. + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +Bu noktada belge, standart ``, `` ve `` etiketlerini içerir. Çocuk elemanlar için hazır boş `` öğesini görmek için `htmlDoc.Body`'yi inceleyebilirsiniz. + +## Adım 4: Bir Paragraf Elemanı Oluşturun ve Kalın İtalik Metin Ekleyin + +Burada **create paragraph element** anahtar kelimesi devreye girer. Bir `

` 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 `

` veya `` oluşturabilirsiniz. Aynı `SetAttribute` deseni çalışır. + +- **Appending Multiple Nodes:** Bir dizi string üzerinde döngü yapıp her biri için bir paragraf oluşturun ve her birini body'ye ekleyin. Stil aynıysa aynı `CSSStyleDeclaration`'ı yeniden kullanmayı unutmayın—yeniden oluşturmanıza gerek yok. + +- **Encoding Concerns:** `TextContent` özel karakterleri (`&`, `<`, `>`) otomatik olarak HTML‑kodlar. Ham HTML'e ihtiyacınız varsa, bunun yerine `InnerHtml` kullanın, ancak enjeksiyon saldırılarına karşı dikkatli olun. + +## Tam Çalışan Örnek + +Aşağıda, baştan sona tüm akışı gösteren, kopyala‑yapıştır‑hazır tam program yer almaktadır. + +```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); + } +} +``` + +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. + +![create pdf document c# example](/images/create-pdf-csharp.png) + +## 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. + +![HTML'yi PDF'ye Dönüştürme örneği](render-html-to-pdf.png "html'yi pdf'ye dönüştür") + +*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 = "

Hello, world!

"; +``` + +Neden bir dizeyle başlanır? Çünkü birçok API (e-posta hizmetleri, PDF oluşturucular, web‑view kontrolleri) HTML işaretlemesini doğrudan kabul eder. Bir dize kullanmak iş akışını hafif ve test edilebilir tutar. + +--- + +## Adım 2: HTMLDocument'i Dizeyle Başlatma + +Aspose.Html'in `HTMLDocument` sınıfı işaretlemeyi bir dizeden, bir URL'den veya bir akıştan okuyabilir. Burada ona `rawHtml`'imizi besliyoruz. + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +Bu noktada belge tamamen bellekte bulunur. Hiç dosya oluşturulmaz ve DOM'u bir tarayıcıda yapar gibi manipüle edebilirsiniz. + +--- + +## Adım 3: Çıktıyı Yakalamak İçin Bir custom resource handler Oluşturma + +Bir **custom resource handler**, belgenin (HTML, görseller, CSS) her parçasının nereye gideceği üzerinde kontrol sağlar. Bizim durumumuzda yalnızca ana HTML ile ilgileniyoruz, bu yüzden her şeyi bir `MemoryStream`'e yazacağız. + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**Neden bir custom handler?** Varsayılan `Save` yöntemi bir dosya yoluna yazar, bu da bellek içi iş akışının amacını bozar. `HandleResource` metodunu geçersiz kılarak her kaynak isteğini yakalar ve tam olarak nereye gideceğine karar veririz. Bu, **how to capture HTML**'i diske dokunmadan yapmanın temelidir. + +--- + +## Adım 4: Belgeyi Handler Kullanarak Kaydetme + +Şimdi Aspose.Html'e `HTMLDocument`'i `MyMemoryHandler`'ımıza serileştirmesini söylüyoruz. `SaveOptions` nesnesi varsayılan HTML çıktısı için boş bırakılabilir, ancak gerekirse kodlamayı, pretty‑print'i vb. ayarlayabilirsiniz. + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +`Save` çalıştığında `HandleResource` çağrılır, ana HTML `memoryHandler.HtmlStream`'e yazılır ve ek dosyalar (görseller, CSS) kendi akışlarını alır—bu basit örnekte herhangi bir ek dosya eklemedik. + +--- + +## Adım 5: Yakalanan Akışı Tekrar String'e Dönüştürme + +HTML, bir `MemoryStream` içinde duruyor. **convert HTML to string** yapmak için akışı başa sarıp bir `StreamReader` ile okuruz. + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +`resultHtml` artık Aspose.Html'in ürettiği tam işaretlemeyi içerir. Bunu ağ üzerinden gönderebilir, bir e-postaya gömebilir veya başka bir kütüphaneye besleyebilirsiniz. + +--- + +## Adım 6: Çıktıyı Doğrulama – Ne Görmelisiniz? + +Sonucu konsola yazdıralım, böylece her şeyin çalıştığını doğrulayabilirsiniz. + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**Beklenen çıktı** + +```html + +

Hello, world!

+``` + +`` etiketinin Aspose.Html tarafından otomatik olarak eklendiğine dikkat edin. Bu, manuel dize birleştirmeye göre bir kütüphane tercih etmemizin nedenlerinden biridir—işaretlemeyi sizin için normalleştirir. + +--- + +## Tam, Çalıştırılabilir Örnek + +Aşağıda, bir console uygulamasına ekleyip hemen çalıştırabileceğiniz tam program yer alıyor. Tüm parçalar bir arada, eksik `using` ifadeleri veya gizli bağımlılıklar hakkında tahmin yapmanıza gerek yok. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +Kopyala‑yapıştır, **F5** tuşuna basın ve biçimlendirilmiş HTML'in konsola yazdırıldığını göreceksiniz. + +--- + +## Sık Sorulan Sorular & Kenar Durumları + +### Görselleri veya CSS dosyalarını yakalamam gerekse ne olur? + +`MyMemoryHandler` zaten her kaynak için yeni bir `MemoryStream` oluşturur. Bu akışları `info.Uri` anahtarıyla bir sözlükte saklayacak şekilde genişletebilirsiniz. Böylece örneğin görselleri daha sonra Base64 string olarak gömebilirsiniz. + +### Çıktının kodlamasını değiştirebilir miyim? + +Evet. `Encoding` özelliği ayarlanmış bir `Saving.HtmlSaveOptions` geçirin: + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### Büyük belgelerle çalışır mı? + +`MemoryStream` dinamik olarak büyür, ancak yüzlerce MB'lık devasa sayfalar için bellek tüketimine dikkat edin. Bu senaryolarda doğrudan bir dosyaya veya ağ soketine akıtabilirsiniz. + +### Tek satırda **write HTML to stream** nasıl yapılır? + +Custom handler'a ihtiyacınız yoksa, doğrudan `htmlDocument.Save(Stream, SaveOptions)` kullanabilirsiniz: + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +Bu, ek kaynakları yakalama yeteneğini kaybetmenize rağmen kompakt bir alternatiftir. + +--- + +## Pro İpuçları & Tuzaklar + +* **Pro tip:** `MemoryStream`'i okumadan önce `Position`'ı her zaman `0`'a sıfırlayın. Bunu unutmak boş bir string ile sonuçlanır. +* **Dikkat:** `null` `SaveOptions` geçmek—Aspose.Html varsayılanları kullanır, ancak açık seçenekler niyetinizi netleştirir. +* **Tipik hata:** `HtmlStream`'in `Save` bitmeden doldurulduğunu varsaymak. Akış yalnızca `Save` çağrısı döndükten sonra mevcuttur. +* **Performans notu:** Tekrarlayan dönüşümler için tek bir `MyMemoryHandler` örneğini yeniden kullanın ve her çalıştırma arasında akışlarını temizleyerek ekstra tahsislerden kaçının. + +--- + +## Sonuç + +C#'ta **create HTML from string**'i nasıl yapacağınızı, sonucu bir **custom resource handler** ile nasıl yakalayacağınızı ve **write HTML to stream**'i nasıl gerçekleştireceğinizi gösterdik. Bellek içi akışı tekrar bir string'e dönüştürerek, dosya sistemine dokunmadan **convert HTML to string**'in güvenilir bir yolunu da elde edersiniz. + +Bu desen, e-posta şablonlaması, PDF oluşturma veya anlık HTML işaretlemesi gerektiği herhangi bir senaryo için yeterince esnektir. Sonraki adımda, görselleri Base64 olarak gömmeyi, `HtmlSaveOptions`'ı küçültme için ayarlamayı veya string'i PDF dönüşümü için Aspose.PDF'ye beslemeyi keşfedebilirsiniz. + +Kaynakları yönetme, kodlama veya performans hakkında daha fazla sorunuz mu var? Aşağıya bir yorum bırakın—mutlu 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/vietnamese/net/generate-jpg-and-png-images/_index.md b/html/vietnamese/net/generate-jpg-and-png-images/_index.md index 364f75161..f92f51f76 100644 --- a/html/vietnamese/net/generate-jpg-and-png-images/_index.md +++ b/html/vietnamese/net/generate-jpg-and-png-images/_index.md @@ -45,6 +45,8 @@ Học cách sử dụng Aspose.HTML cho .NET để thao tác với các tài li Hướng dẫn chi tiết cách bật khử răng cưa để cải thiện chất lượng hình ảnh khi chuyển đổi tài liệu DOCX sang PNG hoặc JPG bằng Aspose.HTML. ### [Chuyển đổi DOCX sang PNG – tạo tệp ZIP bằng C# – Hướng dẫn](./convert-docx-to-png-create-zip-archive-c-tutorial/) Hướng dẫn cách chuyển đổi tài liệu DOCX thành hình ảnh PNG và đóng gói chúng vào tệp ZIP bằng C#. +### [Kết xuất HTML sang PNG trong C# – Hướng dẫn chi tiết từng bước](./render-html-to-png-in-c-complete-step-by-step-guide/) +Hướng dẫn chi tiết cách sử dụng Aspose.HTML cho .NET để chuyển đổi HTML thành hình ảnh PNG trong C#. ## Phần kết luận diff --git a/html/vietnamese/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md b/html/vietnamese/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..85d99513a --- /dev/null +++ b/html/vietnamese/net/generate-jpg-and-png-images/render-html-to-png-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-28 +description: Học cách chuyển đổi HTML sang PNG trong C# với Aspose.HTML. Hướng dẫn + này cũng đề cập đến cách chuyển đổi trang web thành hình ảnh, lưu HTML dưới dạng + PNG, xuất HTML thành hình ảnh và lưu trang web dưới dạng 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: vi +og_description: Học cách chuyển đổi HTML sang PNG trong C# với Aspose.HTML. Thực hiện + theo hướng dẫn dễ dàng này để chuyển trang web thành hình ảnh, lưu HTML dưới dạng + PNG và xuất HTML thành hình ảnh. +og_title: Chuyển đổi HTML sang PNG trong C# – Hướng dẫn chi tiết từng bước +tags: +- C# +- Aspose.HTML +- Image Rendering +- .NET +title: Chuyển đổi HTML sang PNG trong C# – Hướng dẫn chi tiết từng bước +url: /vi/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 >}} + +# Render HTML sang PNG trong C# – Hướng dẫn chi tiết từng bước + +Cần **render HTML sang PNG** nhanh chóng? Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách render HTML sang PNG bằng thư viện Aspose.HTML cho .NET. Dù bạn đang xây dựng dịch vụ tạo thumbnail, tạo bản xem trước email, hay chỉ cần **chuyển đổi một trang web thành hình ảnh** để báo cáo, các bước dưới đây sẽ giúp bạn đạt được mục tiêu một cách dễ dàng. + +Đây là vấn đề—hầu hết các nhà phát triển thường dùng công cụ chụp màn hình trình duyệt và phải xử lý các binary của Chrome headless. Cách này hoạt động, nhưng tạo ra nhiều chi phí phụ. Với Aspose.HTML, bạn có thể **save HTML as PNG** trực tiếp từ mã, không cần quy trình bên ngoài. Khi kết thúc hướng dẫn này, bạn sẽ có thể **export HTML as image**, lưu kết quả vào đĩa, và thậm chí điều chỉnh antialiasing hoặc kích thước để phù hợp với UI của mình. + +## Những gì bạn sẽ học + +- Cách cài đặt Aspose.HTML qua NuGet. +- Cấu hình `ImageRenderingOptions` để có đầu ra chất lượng cao. +- Tải một trang trực tuyến hoặc chuỗi HTML cục bộ. +- Render trang thành file PNG. +- Những lỗi thường gặp khi **saving webpage as PNG** và cách tránh chúng. + +Bạn không cần kinh nghiệm trước với Aspose; chỉ cần một môi trường C#/.NET cơ bản và kết nối internet. + +## Yêu cầu trước + +- .NET 6.0 trở lên (mã này hoạt động trên .NET Core, .NET Framework 4.6+, và .NET 7). +- Visual Studio 2022 (hoặc bất kỳ IDE nào bạn thích). +- Truy cập NuGet để tải gói `Aspose.HTML`. +- Một thư mục mà bạn có quyền ghi cho file PNG được tạo. + +> **Pro tip:** Nếu bạn dự định chạy trên máy chủ, hãy chắc chắn tài khoản thực thi quá trình có quyền ghi vào thư mục đầu ra; nếu không bước render sẽ thất bại mà không thông báo. + +## Bước 1: Cài đặt Aspose.HTML + +Đầu tiên, thêm thư viện Aspose.HTML vào dự án của bạn. Mở NuGet Package Manager Console và chạy: + +```powershell +Install-Package Aspose.HTML +``` + +Hoặc, nếu bạn thích giao diện UI, tìm kiếm **Aspose.HTML** và nhấn **Install**. Điều này sẽ tải về tất cả các DLL cần thiết, bao gồm cả engine render. + +> **Why this matters:** Aspose.HTML xử lý việc phân tích HTML, bố trí CSS và raster hóa hình ảnh nội bộ, vì vậy bạn không cần khởi động trình duyệt headless. Nó cũng hoàn toàn được quản lý, nghĩa là không có phụ thuộc native nào cần triển khai. + +## Bước 2: Cấu hình Image Rendering Options + +Trước khi render, hãy quyết định kích thước và chất lượng đầu ra. Lớp `ImageRenderingOptions` cung cấp cho bạn khả năng kiểm soát chi tiết. + +```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 +}; +``` + +> **Why enable antialiasing?** Nếu không bật, các cạnh có thể bị răng cưa, đặc biệt rõ ràng trên màn hình high‑DPI. Bật tính năng này sẽ tốn một chút hiệu năng nhưng cho ra PNG sạch sẽ hơn nhiều. + +## Bước 3: Tải nội dung HTML + +Bạn có thể render một URL từ xa, một file cục bộ, hoặc thậm chí một chuỗi HTML thô. Trong ví dụ này, chúng ta sẽ tải một trang trực tiếp. + +```csharp +// Step 3: Load the HTML document from a URL +var htmlDoc = new HTMLDocument("https://example.com"); +``` + +Nếu bạn có HTML lưu trong một chuỗi, hãy sử dụng overload chấp nhận `MemoryStream`: + +```csharp +string rawHtml = "

Hello, world!

"; +using var stream = new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)); +var htmlDoc = new HTMLDocument(stream, "about:blank"); +``` + +> **Edge case:** Một số trang web chặn user‑agent không phải trình duyệt. Nếu bạn nhận được hình ảnh trống, hãy đặt header user‑agent tùy chỉnh cho yêu cầu hoặc tải HTML trước và truyền nó dưới dạng chuỗi. + +## Bước 4: Render sang PNG + +Bây giờ là thao tác cốt lõi—gọi `RenderToFile`. Cung cấp đường dẫn đầy đủ nơi bạn muốn lưu PNG. + +```csharp +// Step 4: Render the HTML document to a PNG file +string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + +// Perform the rendering +htmlDoc.RenderToFile(outputPath, imageOptions); +``` + +Sau khi dòng lệnh này thực thi, bạn sẽ thấy `output.png` trong thư mục đã chỉ định. Mở nó bằng bất kỳ trình xem ảnh nào để xác nhận kết quả. + +> **What to expect:** PNG sẽ có kích thước chính xác 800 × 600 px, với văn bản mượt và màu sắc khớp với trang gốc. Nếu trang nguồn sử dụng CSS hoặc hình ảnh bên ngoài, Aspose.HTML sẽ tự động tải các tài nguyên đó, với điều kiện chúng có thể truy cập được. + +## Bước 5: Kiểm tra và sử dụng kết quả + +Một kiểm tra nhanh sẽ đảm bảo bạn thực sự nhận được một hình ảnh chứ không phải file rỗng. + +```csharp +if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) +{ + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); +} +else +{ + Console.WriteLine("❌ Rendering failed – check the URL and rendering options."); +} +``` + +Bây giờ bạn có thể **save webpage as PNG** để lưu trữ, nhúng hình ảnh vào bản tin email, hoặc đưa nó vào pipeline machine‑learning yêu cầu các trang đã raster. + +## Tùy chọn: Điều chỉnh cho các kịch bản khác nhau + +### 5.1 Render ảnh chụp toàn trang + +Nếu bạn muốn toàn bộ trang có thể cuộn thay vì chỉ phần viewport, hãy đặt chiều cao lớn hơn hoặc sử dụng `ImageRenderingOptions.PageHeight`: + +```csharp +imageOptions.Height = 2000; // tall enough for most pages +``` + +### 5.2 Thay đổi định dạng ảnh + +Aspose.HTML hỗ trợ JPEG, BMP, GIF và TIFF. Thay đổi phần mở rộng file và định dạng sẽ tự động thay đổi: + +```csharp +htmlDoc.RenderToFile("output.jpg", imageOptions); // JPEG output +``` + +### 5.3 Xử lý các trang được bảo vệ bằng xác thực + +Đối với các trang yêu cầu đăng nhập, hãy lấy HTML bằng `HttpClient` (kèm cookie hoặc bearer token), sau đó truyền chuỗi này cho `HTMLDocument` như đã minh họa ở trên. Nhờ vậy bạn vẫn có thể **convert webpage to image** ngay cả khi trang không công khai. + +## Ví dụ hoàn chỉnh hoạt động + +Dưới đây là một ứng dụng console tự chứa, tích hợp mọi thứ lại. Sao chép‑dán vào một dự án console .NET mới và chạy—nó sẽ tải `https://example.com`, render và lưu `output.png` cạnh file thực thi. + +```csharp +// ----------------------------------------------------------- +// RenderHTMLToPngDemo.cs +// ----------------------------------------------------------- +using System; +using System.IO; +using System.Text; +using Aspose.Html; +using Aspose.Html.Rendering.Image; + +class RenderHTMLToPngDemo +{ + static void Main() + { + // 1️⃣ Configure rendering options + var imageOptions = new ImageRenderingOptions + { + UseAntialiasing = true, + Width = 800, + Height = 600 + }; + + // 2️⃣ Load the HTML document (remote URL) + var htmlDoc = new HTMLDocument("https://example.com"); + + // 3️⃣ Define output path + string outputPath = Path.Combine( + Environment.CurrentDirectory, + "output.png"); + + // 4️⃣ Render to PNG + htmlDoc.RenderToFile(outputPath, imageOptions); + + // 5️⃣ Verify the result + if (File.Exists(outputPath) && new FileInfo(outputPath).Length > 0) + { + Console.WriteLine($"✅ Render successful! Image saved to: {outputPath}"); + } + else + { + Console.WriteLine("❌ Rendering failed – double‑check the URL and options."); + } + } +} +``` + +> **Expected output:** Một file `output.png`, 800 × 600 px, hiển thị trang chủ của `example.com`. Mở nó bằng bất kỳ trình xem ảnh nào để xác nhận độ trung thực hình ảnh. + +## Câu hỏi thường gặp & Lưu ý + +- **Q: Does this work on Linux?** + Có. Aspose.HTML hỗ trợ đa nền tảng; chỉ cần chắc chắn runtime .NET đã được cài đặt. + +- **Q: My page uses JavaScript to inject content—will it appear?** + Aspose.HTML **không** thực thi JavaScript. Đối với các trang động, bạn cần pre‑render HTML (ví dụ bằng headless Chrome) rồi truyền markup tĩnh cho renderer. + +- **Q: How large can the image be before memory becomes an issue?** + Render các trang rất dài (hơn 10 k pixel) có thể tiêu tốn hàng trăm megabyte RAM. Nếu gặp `OutOfMemoryException`, hãy cân nhắc render theo đoạn và ghép các PNG lại với nhau. + +- **Q: Can I embed fonts that aren’t installed on the server?** + Có. Bao gồm các quy tắc `@font-face` trong CSS hoặc tải file font qua thẻ ``; Aspose.HTML sẽ nhúng chúng trong quá trình rasterization. + +## Kết luận + +Bây giờ bạn đã có một phương pháp vững chắc, sẵn sàng cho môi trường production để **render HTML to PNG** trong C#. Bằng cách cấu hình `ImageRenderingOptions`, tải trang mục tiêu và gọi `RenderToFile`, bạn có thể **convert webpage to image**, **save HTML as PNG**, **export HTML as image**, và **save webpage as PNG** chỉ với vài dòng mã. + +Bước tiếp theo? Hãy thử điều chỉnh kích thước cho ảnh chụp high‑DPI, thử xuất JPEG để giảm kích thước file, hoặc tích hợp logic này vào API ASP.NET trả về PNG theo yêu cầu. Các khả năng là vô hạn, và vì giải pháp hoàn toàn được quản lý, bạn sẽ không phải vật lộn với trình duyệt bên ngoài hay thư viện native. + +Có thêm câu hỏi về render ảnh hoặc các tính năng khác của Aspose.HTML? Hãy để lại bình luận bên dưới, chúc bạn lập trình vui vẻ! + +![render html to png example](placeholder.png "render html to png") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/vietnamese/net/html-document-manipulation/_index.md b/html/vietnamese/net/html-document-manipulation/_index.md index 69f32029f..2efdbddbb 100644 --- a/html/vietnamese/net/html-document-manipulation/_index.md +++ b/html/vietnamese/net/html-document-manipulation/_index.md @@ -51,7 +51,7 @@ Aspose.HTML for .NET nổi bật với sự đơn giản và sức mạnh của ## Hướng dẫn thao tác tài liệu HTML ### [Tải tài liệu HTML không đồng bộ trong .NET với Aspose.HTML](./load-html-doc-asynchronously/) Tìm hiểu cách sử dụng Aspose.HTML cho .NET để làm việc với các tài liệu HTML. Hướng dẫn từng bước với các ví dụ và câu hỏi thường gặp dành cho nhà phát triển. -### [Tải tài liệu HTML có thông tin xác thực trong .NET với Aspose.HTML](./load-html-doc-with-credentials/) +### [Tải tài liệu HTML có thông tin xác thực trong .NET với Aspose.HTML](./load-html-with-credentials/) Tìm hiểu cách tăng cường SEO của bạn với Aspose.HTML cho .NET. Tăng thứ hạng, phân tích nội dung web và tối ưu hóa cho công cụ tìm kiếm. ### [Tải HTML bằng Máy chủ từ xa trong .NET với Aspose.HTML](./load-html-using-remote-server/) Mở khóa tiềm năng của Aspose.HTML cho .NET với hướng dẫn toàn diện của chúng tôi. Tìm hiểu cách nhập không gian tên, truy cập tài liệu HTML từ xa và nhiều hơn nữa. @@ -71,6 +71,8 @@ Học cách sử dụng Aspose.HTML cho .NET. Nhập không gian tên, hợp nh Mở khóa tiềm năng phát triển web với Aspose.HTML cho .NET. Tạo, chuyển đổi và thao tác tài liệu HTML dễ dàng. ### [Tạo HTML từ chuỗi trong C# – Hướng dẫn Trình xử lý tài nguyên tùy chỉnh](./create-html-from-string-in-c-custom-resource-handler-guide/) Tìm hiểu cách tạo tài liệu HTML từ chuỗi trong C# bằng trình xử lý tài nguyên tùy chỉnh của Aspose.HTML. +### [Cách tạo HTML – Thêm phần tử và Định dạng văn bản](./how-to-create-html-append-elements-and-style-text/) +Hướng dẫn cách tạo tài liệu HTML, thêm phần tử và áp dụng kiểu cho văn bản bằng Aspose.HTML cho .NET. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/vietnamese/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md b/html/vietnamese/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md new file mode 100644 index 000000000..00ff01006 --- /dev/null +++ b/html/vietnamese/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-03-28 +description: Cách tạo HTML một cách lập trình trong C#. Học cách thêm phần tử vào + body, tạo phần tử đoạn văn, thêm văn bản in đậm và in nghiêng, và thêm kiểu CSS + một cách lập trình. +draft: false +keywords: +- how to create html +- append element to body +- create paragraph element +- add bold italic text +- add css style programmatically +language: vi +og_description: Cách tạo HTML bằng lập trình trong C#. Hướng dẫn này cho bạn biết + cách thêm phần tử vào body, tạo phần tử đoạn văn, thêm văn bản in đậm và in nghiêng, + và thêm kiểu CSS bằng lập trình. +og_title: Cách tạo HTML – Thêm phần tử và định dạng văn bản +tags: +- C# +- Aspose.HTML +- DOM manipulation +title: Cách tạo HTML – Thêm phần tử và Định dạng văn bản +url: /vi/net/html-document-manipulation/how-to-create-html-append-elements-and-style-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách Tạo HTML – Thêm Phần Tử và Định Dạng Văn Bản + +Bạn đã bao giờ tự hỏi **cách tạo HTML** từ C# mà không phải dùng string builder chưa? Bạn không phải là người duy nhất. Trong nhiều trường hợp tự động hoá web hoặc tạo email, bạn cần một cách tiếp cận dựa trên DOM sạch sẽ, cho phép bạn thêm phần tử vào body, định dạng nó, và vẫn giữ tính an toàn kiểu dữ liệu. + +Trong tutorial này, chúng ta sẽ đi qua các bước cụ thể để **cách tạo HTML** bằng Aspose.HTML, bao gồm mọi thứ từ tạo một phần tử đoạn văn cho tới việc thêm văn bản in đậm nghiêng và áp dụng style CSS một cách lập trình. Khi hoàn thành, bạn sẽ có một chuỗi HTML sẵn sàng để chèn vào trình duyệt, email, hoặc bộ chuyển đổi PDF. + +## Những Gì Bạn Cần Chuẩn Bị + +- **.NET 6+** (bất kỳ phiên bản mới nào cũng được; API ổn định trên .NET Framework) +- Gói NuGet **Aspose.HTML for .NET** – `Install-Package Aspose.HTML` +- Kiến thức cơ bản về cú pháp C# – không cần gì phức tạp + +Không cần file cấu hình bổ sung, không cần engine template bên ngoài. Chỉ cần mã C# thuần thao tác DOM. + +![ví dụ cách tạo html](/images/how-to-create-html.png "Ảnh chụp màn hình hiển thị cấu trúc HTML được tạo – cách tạo html") + +## Bước 1: Thiết Lập Dự Án và Nhập Namespace + +Đầu tiên, tạo một ứng dụng console (hoặc bất kỳ dự án .NET nào) và thêm tham chiếu Aspose.HTML. Sau đó, import các namespace chúng ta sẽ dùng. + +```csharp +using Aspose.Html; +using Aspose.Html.Drawing; +using Aspose.Html.Dom; +using Aspose.Html.Rendering; +``` + +> **Mẹo chuyên nghiệp:** Nếu bạn chỉ cần thao tác DOM, có thể bỏ qua namespace `Aspose.Html.Rendering` – nó chỉ cần thiết khi bạn render tài liệu thành ảnh hoặc PDF. + +## Bước 2: Định Nghĩa Style CSS Theo Chương Trình + +Khi bạn **thêm style css theo chương trình**, bạn có toàn quyền kiểm soát các họ phông, kích thước, và thậm chí các cờ kết hợp như in đậm + nghiêng. Đây là cách tạo đối tượng style đó. + +```csharp +// Step 2 – Create a CSSStyleDeclaration with bold & italic settings +var textStyle = new CSSStyleDeclaration +{ + FontFamily = "Arial", + FontSize = new CSSValue("16px"), + // Combine Bold and Italic using a bitwise OR + FontStyle = WebFontStyle.Bold | WebFontStyle.Italic +}; +``` + +Tại sao lại dùng `WebFontStyle.Bold | WebFontStyle.Italic` thay vì hai thuộc tính riêng? API coi font style là một enumeration dạng cờ, vì vậy việc gộp chúng sẽ tạo ra CSS `font-weight: bold; font-style: italic;` chính xác như bạn viết tay. + +## Bước 3: Tạo Một Tài Liệu HTML Mới + +Bây giờ chúng ta thực sự **cách tạo HTML** – đối tượng tài liệu hoạt động như một canvas. Hãy tưởng tượng nó như một trang trắng mà bạn có thể vẽ lên. + +```csharp +// Step 3 – Initialize an empty HTMLDocument +var htmlDoc = new HTMLDocument(); +``` + +Tại thời điểm này, tài liệu đã chứa các thẻ chuẩn ``, `` và ``. Bạn có thể kiểm tra `htmlDoc.Body` để thấy phần tử `` trống sẵn sàng cho các phần tử con. + +## Bước 4: Tạo Phần Tử Đoạn Văn và Thêm Văn Bản In Đậm Nghiêng + +Đây là nơi từ khóa **create paragraph element** tỏa sáng. Chúng ta sẽ tạo thẻ `

`, 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 `

` hoặc `` bằng `htmlDoc.CreateElement("div")`. Cách dùng `SetAttribute` vẫn giống nhau. + +- **Thêm Nhiều Node:** Lặp qua một tập hợp các chuỗi và tạo một đoạn văn cho mỗi phần, sau đó thêm chúng vào body. Hãy nhớ tái sử dụng cùng một `CSSStyleDeclaration` nếu style giống nhau—không cần tạo lại. + +- **Vấn Đề Mã Hóa:** `TextContent` tự động HTML‑encode các ký tự đặc biệt (`&`, `<`, `>`). Nếu bạn cần HTML thô, dùng `InnerHtml` thay thế, nhưng hãy cẩn thận với các cuộc tấn công injection. + +## Ví Dụ Hoàn Chỉnh + +Dưới đây là chương trình đầy đủ, sẵn sàng copy‑paste, thể hiện toàn bộ quy trình từ đầu đến cuối. + +```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); + } +} +``` + +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. + +![create pdf document c# example](/images/create-pdf-csharp.png) + +## 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í dụ Render HTML sang PDF](render-html-to-pdf.png "render html to pdf") + +*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 = "

Hello, world!

"; +``` + +Tại sao bắt đầu bằng chuỗi? Bởi vì nhiều API (dịch vụ email, trình tạo PDF, điều khiển web‑view) chấp nhận markup HTML trực tiếp. Sử dụng chuỗi giúp quy trình nhẹ nhàng và dễ kiểm thử. + +--- + +## Bước 2: Khởi tạo HTMLDocument với chuỗi + +Lớp `HTMLDocument` của Aspose.Html có thể đọc markup từ chuỗi, URL hoặc stream. Ở đây chúng ta truyền `rawHtml` của mình vào. + +```csharp +using Aspose.Html; + +// Step 2: Load the HTML string into a Document object. +HTMLDocument htmlDocument = new HTMLDocument(rawHtml); +``` + +Tại thời điểm này tài liệu tồn tại hoàn toàn trong bộ nhớ. Không có tệp nào được tạo, và bạn có thể thao tác DOM giống như trong trình duyệt. + +--- + +## Bước 3: Xây dựng bộ xử lý tài nguyên tùy chỉnh để bắt đầu xuất + +Một **bộ xử lý tài nguyên tùy chỉnh** cho phép bạn kiểm soát nơi mỗi phần của tài liệu (HTML, hình ảnh, CSS) được lưu. Trong trường hợp của chúng ta chỉ quan tâm tới HTML chính, vì vậy chúng ta sẽ ghi mọi thứ vào một `MemoryStream`. + +```csharp +using System.IO; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} +``` + +**Tại sao lại cần bộ xử lý tùy chỉnh?** Phương thức `Save` mặc định ghi vào đường dẫn tệp, điều này làm mất ý nghĩa của quy trình làm việc trong bộ nhớ. Bằng cách ghi đè `HandleResource` chúng ta có thể chặn mọi yêu cầu tài nguyên và quyết định chính xác nơi chúng sẽ đi. Đây là cốt lõi của **cách bắt HTML** mà không cần chạm tới đĩa. + +--- + +## Bước 4: Lưu tài liệu bằng bộ xử lý + +Bây giờ chúng ta yêu cầu Aspose.Html tuần tự hoá `HTMLDocument` vào `MyMemoryHandler` của mình. Đối tượng `SaveOptions` có thể để trống để sử dụng đầu ra HTML mặc định, nhưng bạn cũng có thể tùy chỉnh mã hoá, định dạng đẹp, v.v., nếu cần. + +```csharp +// Step 4: Instantiate the custom memory handler. +var memoryHandler = new MyMemoryHandler(); + +// Save the document; the handler creates in‑memory streams. +htmlDocument.Save(memoryHandler, new SaveOptions { /* configure options if needed */ }); +``` + +Khi `Save` được thực thi, `HandleResource` sẽ được gọi, HTML chính được ghi vào `memoryHandler.HtmlStream`, và bất kỳ tệp phụ trợ nào (hình ảnh, CSS) sẽ có stream riêng—mặc dù trong ví dụ đơn giản này chúng ta chưa thêm gì. + +--- + +## Bước 5: Chuyển stream đã bắt lại thành chuỗi + +HTML hiện đang nằm trong một `MemoryStream`. Để **chuyển HTML sang chuỗi**, chúng ta chỉ cần đưa con trỏ stream về đầu và đọc bằng `StreamReader`. + +```csharp +// Step 5: Retrieve the generated HTML from the handler's stream. +memoryHandler.HtmlStream.Position = 0; // Reset for reading +using var reader = new StreamReader(memoryHandler.HtmlStream); +string resultHtml = reader.ReadToEnd(); +``` + +`resultHtml` bây giờ chứa markup chính xác mà Aspose.Html đã tạo ra. Bạn có thể gửi nó qua mạng, nhúng vào email, hoặc truyền cho thư viện khác. + +--- + +## Bước 6: Kiểm tra kết quả – bạn sẽ thấy gì? + +Hãy in kết quả ra console để xác nhận mọi thứ đã hoạt động. + +```csharp +// Step 6: Output the HTML content. +System.Console.WriteLine(resultHtml); +``` + +**Kết quả mong đợi** + +```html + +

Hello, world!

+``` + +Lưu ý thẻ `` được Aspose.Html tự động thêm vào. Đó là một trong những lý do chúng ta ưu tiên dùng thư viện thay vì tự nối chuỗi—thư viện sẽ chuẩn hoá markup cho bạn. + +--- + +## Ví dụ đầy đủ, có thể chạy ngay + +Dưới đây là chương trình hoàn chỉnh mà bạn có thể sao chép vào một ứng dụng console và chạy ngay lập tức. Tất cả các thành phần đã được gộp lại, vì vậy không còn nghi ngờ về các `using` thiếu hay phụ thuộc ẩn. + +```csharp +using System; +using System.IO; +using Aspose.Html; +using Aspose.Html.Saving; + +// Custom handler that writes everything to a MemoryStream +class MyMemoryHandler : ResourceHandler +{ + // Holds the stream for the main HTML document + public MemoryStream HtmlStream { get; private set; } + + public override Stream HandleResource(ResourceInfo info) + { + // Create a new stream for each resource. + var stream = new MemoryStream(); + + // Keep a reference to the main document's stream. + if (info.IsMainDocument) HtmlStream = stream; + + return stream; + } +} + +class Program +{ + static void Main() + { + // Step 1: Create an HTML document from a string source. + var rawHtml = "

Hello, world!

"; + var htmlDocument = new HTMLDocument(rawHtml); + + // Step 2: Instantiate the custom memory handler. + var memoryHandler = new MyMemoryHandler(); + + // Step 3: Save the document; the handler creates in‑memory streams. + htmlDocument.Save(memoryHandler, new SaveOptions { }); + + // Step 4: Retrieve the generated HTML from the handler's stream. + memoryHandler.HtmlStream.Position = 0; + using var reader = new StreamReader(memoryHandler.HtmlStream); + string resultHtml = reader.ReadToEnd(); + + // Step 5: Output the HTML content. + Console.WriteLine(resultHtml); + } +} +``` + +Sao chép‑dán, nhấn **F5**, và bạn sẽ thấy HTML đã được định dạng xuất hiện trên console. + +--- + +## Câu hỏi thường gặp & Trường hợp đặc biệt + +### Nếu tôi cần bắt hình ảnh hoặc file CSS thì sao? + +`MyMemoryHandler` đã tạo một `MemoryStream` mới cho mỗi tài nguyên. Bạn có thể mở rộng nó để lưu các stream này vào một dictionary với khóa là `info.Uri`. Khi đó bạn có thể, ví dụ, nhúng hình ảnh dưới dạng chuỗi Base64 sau này. + +### Tôi có thể thay đổi mã hoá của đầu ra không? + +Có. Chỉ cần truyền một `Saving.HtmlSaveOptions` với thuộc tính `Encoding` được đặt: + +```csharp +var options = new HtmlSaveOptions { Encoding = System.Text.Encoding.UTF8 }; +htmlDocument.Save(memoryHandler, options); +``` + +### Điều này có hoạt động với tài liệu lớn không? + +`MemoryStream` sẽ mở rộng động, nhưng bạn cần chú ý tới việc tiêu thụ bộ nhớ khi xử lý các trang cực lớn (hàng trăm MB). Trong những trường hợp đó bạn có thể stream trực tiếp tới tệp hoặc socket mạng. + +### Làm sao **ghi HTML vào stream** trong một dòng duy nhất? + +Nếu không cần bộ xử lý tùy chỉnh, bạn có thể dùng trực tiếp `htmlDocument.Save(Stream, SaveOptions)`: + +```csharp +using var ms = new MemoryStream(); +htmlDocument.Save(ms, new SaveOptions()); +ms.Position = 0; +string html = new StreamReader(ms).ReadToEnd(); +``` + +Đây là cách ngắn gọn, tuy nhiên bạn sẽ mất khả năng chặn các tài nguyên phụ trợ. + +--- + +## Mẹo chuyên nghiệp & Những lỗi thường gặp + +* **Mẹo:** Luôn đặt lại `Position` về `0` trước khi đọc một `MemoryStream`. Bỏ qua bước này sẽ trả về chuỗi rỗng. +* **Cẩn thận:** Truyền `null` cho `SaveOptions`—Aspose.Html sẽ dùng mặc định, nhưng việc chỉ định rõ ràng giúp ý định của bạn trở nên minh bạch. +* **Sai lầm phổ biến:** Giả định `HtmlStream` đã được điền trước khi `Save` hoàn thành. Stream chỉ khả dụng sau khi lời gọi `Save` trả về. +* **Ghi chú hiệu năng:** Đối với các chuyển đổi lặp lại, hãy tái sử dụng một thể hiện `MyMemoryHandler` duy nhất và xóa sạch các stream giữa các lần chạy để tránh cấp phát bộ nhớ không cần thiết. + +--- + +## Kết luận + +Chúng ta đã trình bày cách **tạo HTML từ chuỗi** trong C#, bắt kết quả bằng **bộ xử lý tài nguyên tùy chỉnh**, và **ghi HTML vào stream** để xử lý tiếp. Bằng cách chuyển stream trong bộ nhớ trở lại thành chuỗi, bạn cũng có được cách đáng tin cậy để **chuyển HTML sang chuỗi** mà không cần chạm tới hệ thống tệp. + +Mô hình này đủ linh hoạt cho việc tạo mẫu email, tạo PDF, hoặc bất kỳ kịch bản nào cần markup HTML ngay lập tức. Tiếp theo, bạn có thể khám phá việc nhúng hình ảnh dưới dạng Base64, tinh chỉnh `HtmlSaveOptions` để giảm kích thước, hoặc truyền chuỗi này vào Aspose.PDF để chuyển sang PDF. + +Có câu hỏi nào thêm về xử lý tài nguyên, mã hoá, hoặc hiệu năng không? Hãy để lại bình luận bên dưới—chúc bạn lập trình vui vẻ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file