From 28f3c9df5c5bb96c346f390dc5f5f028e72cb6d1 Mon Sep 17 00:00:00 2001 From: Muhammad Adil Date: Sat, 22 Aug 2026 22:19:25 +0000 Subject: [PATCH] Add 7 html python tutorials MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Categories: general Source: AI Search API Tutorials: - How to convert HTML to PDF in Python with Aspose.HTML - How to create markdown from HTML using Python - How to export links while converting HTML to Markdown - How to create markdown from HTML in Python – complete guide - How to load HTML with Aspose.HTML in Python - How to enable streaming when converting HTML to PDF in Python - How to create PDF from SVG in Python – complete guide Auto-generated by Professionalize.Tutorials Agent --- .../_index.md | 195 ++++++++++++ .../_index.md | 227 ++++++++++++++ .../_index.md | 186 ++++++++++++ .../_index.md | 281 +++++++++++++++++ .../_index.md | 226 ++++++++++++++ .../_index.md | 254 ++++++++++++++++ .../_index.md | 280 +++++++++++++++++ .../_index.md | 195 ++++++++++++ .../_index.md | 227 ++++++++++++++ .../_index.md | 184 ++++++++++++ .../_index.md | 279 +++++++++++++++++ .../_index.md | 222 ++++++++++++++ .../_index.md | 252 ++++++++++++++++ .../_index.md | 278 +++++++++++++++++ .../_index.md | 195 ++++++++++++ .../_index.md | 228 ++++++++++++++ .../_index.md | 185 ++++++++++++ .../_index.md | 280 +++++++++++++++++ .../_index.md | 226 ++++++++++++++ .../_index.md | 247 +++++++++++++++ .../_index.md | 282 +++++++++++++++++ .../_index.md | 198 ++++++++++++ .../_index.md | 227 ++++++++++++++ .../_index.md | 186 ++++++++++++ .../_index.md | 282 +++++++++++++++++ .../_index.md | 227 ++++++++++++++ .../_index.md | 256 ++++++++++++++++ .../_index.md | 282 +++++++++++++++++ .../_index.md | 197 ++++++++++++ .../og-image.png | Bin 0 -> 46799 bytes .../_index.md | 231 ++++++++++++++ .../og-image.png | Bin 0 -> 48958 bytes .../_index.md | 188 ++++++++++++ .../og-image.png | Bin 0 -> 43607 bytes .../_index.md | 284 ++++++++++++++++++ .../og-image.png | Bin 0 -> 51105 bytes .../_index.md | 228 ++++++++++++++ .../og-image.png | Bin 0 -> 43767 bytes .../_index.md | 257 ++++++++++++++++ .../og-image.png | Bin 0 -> 49610 bytes .../_index.md | 282 +++++++++++++++++ .../og-image.png | Bin 0 -> 42427 bytes .../_index.md | 192 ++++++++++++ .../_index.md | 228 ++++++++++++++ .../_index.md | 185 ++++++++++++ .../_index.md | 283 +++++++++++++++++ .../_index.md | 228 ++++++++++++++ .../_index.md | 257 ++++++++++++++++ .../_index.md | 280 +++++++++++++++++ .../_index.md | 198 ++++++++++++ .../_index.md | 229 ++++++++++++++ .../_index.md | 187 ++++++++++++ .../_index.md | 284 ++++++++++++++++++ .../_index.md | 226 ++++++++++++++ .../_index.md | 255 ++++++++++++++++ .../_index.md | 280 +++++++++++++++++ .../_index.md | 196 ++++++++++++ .../_index.md | 229 ++++++++++++++ .../_index.md | 185 ++++++++++++ .../_index.md | 283 +++++++++++++++++ .../_index.md | 227 ++++++++++++++ .../_index.md | 257 ++++++++++++++++ .../_index.md | 282 +++++++++++++++++ .../_index.md | 194 ++++++++++++ .../_index.md | 229 ++++++++++++++ .../_index.md | 187 ++++++++++++ .../_index.md | 281 +++++++++++++++++ .../_index.md | 226 ++++++++++++++ .../_index.md | 255 ++++++++++++++++ .../_index.md | 280 +++++++++++++++++ .../_index.md | 190 ++++++++++++ .../_index.md | 225 ++++++++++++++ .../_index.md | 185 ++++++++++++ .../_index.md | 281 +++++++++++++++++ .../_index.md | 224 ++++++++++++++ .../_index.md | 253 ++++++++++++++++ .../_index.md | 278 +++++++++++++++++ .../_index.md | 194 ++++++++++++ .../_index.md | 229 ++++++++++++++ .../_index.md | 188 ++++++++++++ .../_index.md | 281 +++++++++++++++++ .../_index.md | 226 ++++++++++++++ .../_index.md | 257 ++++++++++++++++ .../_index.md | 281 +++++++++++++++++ .../_index.md | 192 ++++++++++++ .../_index.md | 229 ++++++++++++++ .../_index.md | 187 ++++++++++++ .../_index.md | 283 +++++++++++++++++ .../_index.md | 226 ++++++++++++++ .../_index.md | 256 ++++++++++++++++ .../_index.md | 280 +++++++++++++++++ .../_index.md | 194 ++++++++++++ .../_index.md | 227 ++++++++++++++ .../_index.md | 187 ++++++++++++ .../_index.md | 280 +++++++++++++++++ .../_index.md | 226 ++++++++++++++ .../_index.md | 257 ++++++++++++++++ .../_index.md | 270 +++++++++++++++++ .../_index.md | 228 ++++++++++++++ .../_index.md | 227 ++++++++++++++ .../_index.md | 182 +++++++++++ .../_index.md | 278 +++++++++++++++++ .../_index.md | 224 ++++++++++++++ .../_index.md | 252 ++++++++++++++++ .../_index.md | 278 +++++++++++++++++ .../_index.md | 192 ++++++++++++ .../_index.md | 227 ++++++++++++++ .../_index.md | 186 ++++++++++++ .../_index.md | 279 +++++++++++++++++ .../_index.md | 226 ++++++++++++++ .../_index.md | 253 ++++++++++++++++ .../_index.md | 280 +++++++++++++++++ .../_index.md | 194 ++++++++++++ .../_index.md | 229 ++++++++++++++ .../_index.md | 187 ++++++++++++ .../_index.md | 280 +++++++++++++++++ .../_index.md | 226 ++++++++++++++ .../_index.md | 256 ++++++++++++++++ .../_index.md | 280 +++++++++++++++++ .../_index.md | 194 ++++++++++++ .../_index.md | 229 ++++++++++++++ .../_index.md | 187 ++++++++++++ .../_index.md | 282 +++++++++++++++++ .../_index.md | 224 ++++++++++++++ .../_index.md | 255 ++++++++++++++++ .../_index.md | 280 +++++++++++++++++ .../_index.md | 192 ++++++++++++ .../_index.md | 231 ++++++++++++++ .../_index.md | 187 ++++++++++++ .../_index.md | 283 +++++++++++++++++ .../_index.md | 226 ++++++++++++++ .../_index.md | 255 ++++++++++++++++ .../_index.md | 280 +++++++++++++++++ .../_index.md | 198 ++++++++++++ .../_index.md | 227 ++++++++++++++ .../_index.md | 187 ++++++++++++ .../_index.md | 282 +++++++++++++++++ .../_index.md | 228 ++++++++++++++ .../_index.md | 255 ++++++++++++++++ .../_index.md | 280 +++++++++++++++++ .../_index.md | 198 ++++++++++++ .../_index.md | 227 ++++++++++++++ .../_index.md | 187 ++++++++++++ .../_index.md | 282 +++++++++++++++++ .../_index.md | 226 ++++++++++++++ .../_index.md | 255 ++++++++++++++++ .../_index.md | 280 +++++++++++++++++ .../_index.md | 190 ++++++++++++ .../_index.md | 229 ++++++++++++++ .../_index.md | 186 ++++++++++++ .../_index.md | 281 +++++++++++++++++ .../_index.md | 225 ++++++++++++++ .../_index.md | 254 ++++++++++++++++ .../_index.md | 281 +++++++++++++++++ .../_index.md | 194 ++++++++++++ .../_index.md | 228 ++++++++++++++ .../_index.md | 187 ++++++++++++ .../_index.md | 281 +++++++++++++++++ .../_index.md | 226 ++++++++++++++ .../_index.md | 256 ++++++++++++++++ .../_index.md | 282 +++++++++++++++++ .../_index.md | 195 ++++++++++++ .../_index.md | 229 ++++++++++++++ .../_index.md | 185 ++++++++++++ .../_index.md | 283 +++++++++++++++++ .../_index.md | 227 ++++++++++++++ .../_index.md | 256 ++++++++++++++++ .../_index.md | 280 +++++++++++++++++ 168 files changed, 37999 insertions(+) create mode 100644 html/arabic/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/arabic/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/arabic/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/arabic/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/arabic/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/arabic/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/arabic/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/chinese/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/chinese/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/chinese/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/chinese/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/chinese/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/chinese/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/chinese/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/czech/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/czech/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/czech/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/czech/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/czech/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/czech/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/czech/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/dutch/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/dutch/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/dutch/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/dutch/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/dutch/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/dutch/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/dutch/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/english/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/english/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/og-image.png create mode 100644 html/english/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/english/python/general/how-to-create-markdown-from-html-in-python-complete-guide/og-image.png create mode 100644 html/english/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/english/python/general/how-to-create-markdown-from-html-using-python/og-image.png create mode 100644 html/english/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/english/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/og-image.png create mode 100644 html/english/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/english/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/og-image.png create mode 100644 html/english/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/english/python/general/how-to-export-links-while-converting-html-to-markdown/og-image.png create mode 100644 html/english/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/english/python/general/how-to-load-html-with-aspose-html-in-python/og-image.png create mode 100644 html/french/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/french/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/french/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/french/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/french/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/french/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/french/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/german/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/german/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/german/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/german/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/german/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/german/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/german/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/greek/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/greek/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/greek/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/greek/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/greek/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/greek/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/greek/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/hindi/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/hindi/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/hindi/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/hindi/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/hindi/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/hindi/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/hindi/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/hongkong/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/hongkong/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/hongkong/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/hongkong/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/hongkong/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/hongkong/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/hongkong/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/hungarian/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/hungarian/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/hungarian/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/hungarian/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/hungarian/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/hungarian/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/hungarian/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/indonesian/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/indonesian/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/indonesian/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/indonesian/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/indonesian/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/indonesian/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/indonesian/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/italian/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/italian/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/italian/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/italian/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/italian/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/italian/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/italian/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/japanese/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/japanese/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/japanese/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/japanese/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/japanese/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/japanese/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/japanese/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/korean/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/korean/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/korean/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/korean/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/korean/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/korean/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/korean/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/polish/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/polish/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/polish/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/polish/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/polish/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/polish/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/polish/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/portuguese/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/portuguese/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/portuguese/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/portuguese/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/portuguese/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/portuguese/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/portuguese/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/russian/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/russian/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/russian/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/russian/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/russian/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/russian/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/russian/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/spanish/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/spanish/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/spanish/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/spanish/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/spanish/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/spanish/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/spanish/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/swedish/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/swedish/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/swedish/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/swedish/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/swedish/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/swedish/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/swedish/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/thai/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/thai/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/thai/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/thai/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/thai/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/thai/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/thai/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/turkish/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/turkish/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/turkish/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/turkish/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/turkish/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/turkish/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/turkish/python/general/how-to-load-html-with-aspose-html-in-python/_index.md create mode 100644 html/vietnamese/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md create mode 100644 html/vietnamese/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md create mode 100644 html/vietnamese/python/general/how-to-create-markdown-from-html-using-python/_index.md create mode 100644 html/vietnamese/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md create mode 100644 html/vietnamese/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md create mode 100644 html/vietnamese/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md create mode 100644 html/vietnamese/python/general/how-to-load-html-with-aspose-html-in-python/_index.md diff --git a/html/arabic/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/arabic/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..62915cea2 --- /dev/null +++ b/html/arabic/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-08-22 +description: كيفية تحويل HTML إلى PDF في بايثون باستخدام Aspose.HTML – تعلم إنشاء + PDF من ملف HTML، توليد PDF من كود HTML، وحفظ HTML كملف PDF في بايثون بسرعة. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: ar +lastmod: 2026-08-22 +og_description: كيفية تحويل HTML إلى PDF في بايثون باستخدام Aspose.HTML. يوضح لك هذا + الدليل كيفية إنشاء PDF من ملف HTML، وإنشاء PDF من كود HTML، وحفظ HTML كملف PDF باستخدام + بايثون. +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: كيفية تحويل HTML إلى PDF في بايثون – دليل خطوة بخطوة +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: كيفية تحويل HTML إلى PDF في بايثون باستخدام Aspose.HTML +url: /ar/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية تحويل HTML إلى PDF في بايثون باستخدام Aspose.HTML + +إذا كنت بحاجة إلى **كيفية تحويل html إلى pdf** بسرعة، فإن هذا الدليل يوضح لك حلاً كاملاً وجاهزًا للتنفيذ. ستتعرف على كيفية **إنشاء pdf من ملف html**، **إنشاء pdf من كود html**، و**حفظ html كـ pdf بايثون** باستخدام واجهة برمجة التطبيقات البسيطة لـ Aspose.HTML. + +سنمرّ على كل خطوة، نشرح لماذا كل سطر مهم، ونغطي الأخطاء الشائعة حتى تتمكن من تعديل الكود لأي مشروع. لا أدوات خارجية، فقط بضع أسطر بايثون. + +## المتطلبات المسبقة + +قبل أن تبدأ، تأكد من وجود ما يلي: + +* Python 3.8 أو أحدث مثبت. +* رخصة نشطة لـ Aspose.HTML for Python (أو مفتاح تقييم مجاني). +* حزمة `aspose.html` مثبتة: + +```bash +pip install aspose-html +``` + +وجود هذه المتطلبات يضمن أن عملية التحويل ستعمل دون أخطاء وقت التشغيل. + +## الخطوة 1: تحميل مستند HTML (إنشاء pdf من ملف html) + +المهمة الأولى هي قراءة ملف HTML المصدر. تمثل Aspose.HTML المستند باستخدام الفئة `HTMLDocument`، التي تُجرد عمليات الإدخال/الإخراج للملفات، وجلب الشبكة، وتحليل DOM. + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*لماذا هذا مهم:* +`HTMLDocument` يقوم بتحميل HTML، ويحل الموارد النسبية (الصور، CSS، الخطوط)، ويبني DOM يمكن للمحول أن يرسمه بدقة. تخطي هذه الخطوة أو استخدام سلسلة نصية عادية سيفقد تلك الحلول للموارد. + +## الخطوة 2: ضبط خيارات حفظ PDF (حفظ html كـ pdf بايثون) + +تتيح لك Aspose.HTML ضبط مخرجات PDF عبر `PdfSaveOptions`. الإعدادات الافتراضية تنتج بالفعل PDF عالي الجودة، لكن يمكنك تعديل حجم الصفحة، الضغط، أو البيانات الوصفية إذا لزم الأمر. + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*لماذا هذا مهم:* +حتى لو احتفظت بالإعدادات الافتراضية، فإن إنشاء كائن خيارات يجعل الكود قابلًا للتوسيع. يمكن إضافة تغييرات مستقبلية—مثل تضمين كلمة مرور للـ PDF—دون الحاجة لإعادة هيكلة السكريبت. + +## الخطوة 3: تنفيذ التحويل (تحويل html إلى pdf بايثون) + +طريقة `Converter.convert` تربط مستند HTML بخيارات PDF، وتكتب النتيجة إلى مسار الملف الذي تحدده. + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*لماذا هذا مهم:* +`Converter.convert` ينفّذ محرك العرض، ويحوّل HTML/CSS إلى متجهات PDF. يتعامل تلقائيًا مع التخطيطات المعقدة، الخطوط المدمجة، ورسومات SVG—وهو ما تفتقر إليه المكتبات اليدوية غالبًا. + +### النتيجة المتوقعة + +تشغيل السكريبت ينتج ملف `sample.pdf` في نفس الدليل. افتحه بأي عارض PDF؛ يجب أن ترى تمثيلًا دقيقًا لـ `sample.html`، بما في ذلك الأنماط، الصور، وفواصل الصفحات. + +## الاختلافات الشائعة وحالات الحافة + +| الحالة | طريقة التعامل | +|-----------|-----------------| +| **HTML هو سلسلة نصية، وليس ملفًا** | استخدم `HTMLDocument.from_string(html_string)` بدلاً من التحميل من مسار. | +| **تحتاج إلى PDF محمي بكلمة مرور** | عيّن `pdf_options.encryption.password = "yourPassword"` قبل التحويل. | +| **ملفات HTML الكبيرة تسبب ضغطًا على الذاكرة** | فعّل وضع البث: `pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`. | +| **الخطوط المخصصة مفقودة** | سجّل مجلد الخطوط: `pdf_options.fonts_folder = "path/to/fonts"`.| + +هذه الاختلافات توضح مرونة واجهة Aspose.HTML مع الحفاظ على سير العمل الأساسي نفسه. + +## السكريبت الكامل (إنشاء pdf من كود html) + +فيما يلي البرنامج الكامل القابل للتنفيذ الذي يدمج جميع الخطوات. انسخه، استبدل `YOUR_DIRECTORY` بمسار فعلي، ثم شغّله. + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +شغّله باستخدام: + +```bash +python convert_html_to_pdf.py +``` + +ستظهر رسالة التأكيد، وسيظهر ملف PDF بجانب ملف HTML المصدر. + +## نصائح استكشاف الأخطاء (نصيحة احترافية) + +* **الصور أو CSS مفقودة** – تأكد من أن ملف HTML يستخدم عناوين URL مطلقة أو أن المسارات النسبية صحيحة بالنسبة إلى `YOUR_DIRECTORY`. +* **حروف Unicode تظهر كمربعات** – دمج الخطوط المطلوبة عبر `pdf_options.fonts_folder`. +* **التحويل بطيء** – فعّل `pdf_options.use_system_fonts = False` لتجنب فحص كتالوج الخطوط النظامية. + +## الخلاصة + +أنت الآن تعرف **كيفية تحويل html إلى pdf** في بايثون باستخدام Aspose.HTML، من تحميل ملف HTML إلى حفظ PDF عالي الجودة. النمط نفسه يتيح لك **إنشاء pdf من ملف html**، **إنشاء pdf من كود html**، و**حفظ html كـ pdf بايثون** لأي سير عمل آلي. + +بعد ذلك، قد ترغب في استكشاف: + +* إضافة علامات مائية أو رؤوس/تذييلات (الكلمة المفتاحية: *create pdf from html file*). +* تحويل عنوان URL مباشر بدلاً من ملف محلي (الكلمة المفتاحية: *convert html to pdf python*). +* دمج المحول في واجهة Flask أو Django لتقديم ملفات PDF حسب الطلب. + +لا تتردد في تجربة الخيارات، وتمنياتنا لك بإنشاء PDF سعيد! + +## ماذا يجب أن تتعلم بعد ذلك؟ + +الدروس التالية تغطي مواضيع ذات صلة وثيقة تبني على التقنيات التي تم توضيحها في هذا الدليل. كل مورد يتضمن أمثلة شيفرة كاملة مع شروحات خطوة بخطوة لتساعدك على إتقان ميزات API إضافية واستكشاف أساليب تنفيذ بديلة في مشاريعك. + +- [Convert HTML to PDF with Aspose.HTML – Full Manipulation Guide](/html/english/) +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Convert HTML to PDF in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-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/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/arabic/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..14d462615 --- /dev/null +++ b/html/arabic/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-08-22 +description: تعلم كيفية إنشاء ماركداون من ملف HTML باستخدام بايثون. يوضح هذا الدليل + خطوة بخطوة كيفية تحويل HTML إلى ماركداون باستخدام مكتبة موثوقة. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: ar +lastmod: 2026-08-22 +og_description: كيفية إنشاء ماركداون من ملف HTML باستخدام بايثون. اتبع هذا الدليل + لتحويل HTML إلى ماركداون بسرعة باستخدام مكتبة موثوقة. +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: كيفية إنشاء ماركداون من HTML في بايثون – دليل كامل +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: كيفية إنشاء ماركداون من HTML في بايثون – دليل كامل +url: /ar/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية إنشاء markdown من HTML في Python – دليل كامل + +إذا كنت بحاجة إلى معرفة **كيفية إنشاء markdown** من محتوى ويب موجود، يمكنك تحويل ملف HTML إلى markdown ببضع أسطر فقط من Python. يشرح هذا الدليل **convert html to markdown** باستخدام مكتبة **html to markdown library** مخصصة تعمل على Windows و macOS و Linux. + +سوف تتعلم كيفية تثبيت المكتبة، تحميل مستند HTML، تكوين خيارات Git‑flavored markdown، وكتابة النتيجة إلى القرص. بنهاية الدليل يمكنك تحويل أي **html file to markdown** تلقائيًا، وهو مفيد لمولدات المواقع الثابتة، خطوط أنابيب التوثيق، أو مشاريع ترحيل المحتوى. + +## المتطلبات المسبقة + +* Python 3.8 أو أحدث مثبت (تحقق باستخدام `python --version`). +* الوصول إلى طرفية أو موجه أوامر. +* ملف HTML تريد تحويله (المثال يستخدم `sample.html`). +* اتصال بالإنترنت لتثبيت الحزمة المطلوبة. + +يستخدم مثال الشيفرة مكتبة **GroupDocs.Conversion for Python**، التي توفر الفئات `HTMLDocument` و `MarkdownSaveOptions` و `Converter` الموضحة لاحقًا. نفس المفاهيم تنطبق على حزم **html to markdown python** الأخرى مثل `markdownify` أو `html2text`—الفرق الوحيد هو عبارات الاستيراد. + +## كيفية إنشاء markdown – الخطوة 1: تثبيت مكتبة html to markdown python + +المهمة الأولى هي إضافة مكتبة التحويل إلى بيئتك. نفّذ أمر pip التالي في الطرفية: + +```bash +pip install groupdocs-conversion +``` + +> **نصيحة احترافية:** استخدم بيئة افتراضية (`python -m venv .venv`) للحفاظ على عزل الاعتمادات عن تثبيت Python العام الخاص بك. + +تثبيت الحزمة يمنحك الوصول إلى الفئات `HTMLDocument` و `MarkdownSaveOptions` و `Converter` المطلوبة لعملية التحويل. + +## تحويل html إلى markdown – الخطوة 2: تحميل مستند HTML + +بعد تثبيت المكتبة، استورد الفئات اللازمة وأنشئ كائن `HTMLDocument` يشير إلى ملف المصدر الخاص بك. + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +كائن `HTMLDocument` يقرأ الملف ويجهزه للتحويل. إذا لم يكن الملف موجودًا، فإن المُنشئ يرفع استثناء `FileNotFoundError`، لذا تأكد من صحة المسار. + +## ملف html إلى markdown – الخطوة 3: تكوين خيارات Git‑flavored markdown + +العديد من المشاريع تفضل Git‑flavored markdown لأنه يضيف دعمًا للجداول، قوائم المهام، وصياغة الشطب. تسمح لك المكتبة بتمكين هذا الإعداد المسبق عبر الخاصية `git` في `MarkdownSaveOptions`. + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +ضبط `git = True` يخبر المحول بإنتاج الصياغة التي يعرضها GitHub و GitLab و Bitbucket بشكل صحيح. إذا كنت تحتاج إلى markdown عادي، اترك العلامة `False`. + +## حفظ مخرجات markdown – الخطوة 4: كتابة النتيجة باستخدام مكتبة html to markdown + +أخيرًا، استدعِ طريقة `Converter.convert`، مع تمرير مستند المصدر، كائن الخيارات، ومسار الوجهة. + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +عند انتهاء السكريبت، يحتوي `git_flavored.md` على تمثيل markdown لـ `sample.html`. يمكنك فتح الملف في أي محرر أو إمداده مباشرةً إلى مولد موقع ثابت. + +### النتيجة المتوقعة + +بافتراض أن `sample.html` يحتوي على عنوان وفقرة بسيطة، قد يبدو markdown الناتج هكذا: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +إذا كان HTML الأصلي يتضمن جداول أو قوائم أو كتل شفرة، فإن الإعداد المسبق Git‑flavored سيحافظ على تلك البُنى باستخدام صياغة markdown المناسبة. + +## فهم مكتبة html to markdown + +مكتبة **GroupDocs.Conversion** تُجرد تفاصيل التحليل والعرض التي كنت ستتعامل معها يدويًا. فهي: + +* تحافظ على تنسيق CSS حيثما أمكن (مثل الغامق، المائل). +* تُولد markdown نظيفًا وقابلًا للقراءة دون كيانات HTML إضافية. +* تدعم التحويل الدفعي، بحيث يمكنك التكرار على مجلد من ملفات HTML باستخدام نفس الشيفرة. + +إذا كنت تفضل حلاً أخف وزنًا، فإن حزمة `markdownify` تقدم واجهة برمجة تطبيقات بدالة واحدة: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +كلا النهجين يحققان الهدف النهائي نفسه—**convert html to markdown**—لكن خيار GroupDocs يوفر تحكمًا أكبر في تنسيق الإخراج ويتكامل بسهولة مع خطوط أنابيب معالجة المستندات الأكبر. + +## المشكلات الشائعة وكيفية تجنبها + +| المشكلة | سبب حدوثها | الحل | +|-------|---------------|-----| +| فقدان الصور في markdown | المحول يضيف فقط عناوين URL للصور؛ لا يدمج الملفات. | تأكد من أن ملفات الصور متاحة من موقع markdown أو انسخها بجانب المخرجات. | +| روابط نسبية مكسورة | قد يستخدم HTML مسارات نسبية تصبح غير صالحة بعد التحويل. | استخدم `md_options.base_path` (إن كان متاحًا) لإعادة كتابة الروابط، أو شغّل سكريبت معالجة لاحقة لتعديل المسارات. | +| تحويل أحرف Unicode إلى هروب | بعض المكتبات تهرب الأحرف غير ASCII. | اضبط `md_options.encode_utf8 = True` (أو العلامة المكافئة) للحفاظ على الأحرف دون تعديل. | + +معالجة هذه المشكلات مبكرًا يوفر الوقت عندما تقوم بتوسيع التحويل إلى العشرات أو المئات من الملفات. + +## مثال كامل قابل للتنفيذ + +فيما يلي سكريبت مستقل يمكنك نسخه، تعديله، وتشغيله فورًا. استبدل `YOUR_DIRECTORY` بالمجلد الفعلي على جهازك. + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +تشغيل السكريبت: + +```bash +python markdown_from_html.py +``` + +يجب أن ترى رسالة تأكيد وملف `git_flavored.md` جديد يحتوي على نسخة markdown من HTML الخاص بك. + +## الخلاصة + +أنت الآن تعرف **كيفية إنشاء markdown** من مصدر HTML باستخدام Python. غطى الدليل تثبيت **html to markdown library** موثوقة، تحميل **html file to markdown**، تكوين خيارات **html to markdown python**، وحفظ النتيجة. مع هذه الأساسيات يمكنك أتمتة خطوط أنابيب التوثيق، ترحيل صفحات الويب القديمة، أو توليد محتوى لمولدات المواقع الثابتة. + +**الخطوات التالية** + +* استكشف التحويل الدفعي عبر التكرار على مجلد من ملفات HTML. +* خصص `MarkdownSaveOptions` للتحكم في أنماط العناوين، تنسيق القوائم، أو معالجة الصور. +* دمج هذا السكريبت مع سير عمل CI/CD للحفاظ على توثيق markdown محدثًا تلقائيًا. + +تحويل موفق! + +## ماذا يجب أن تتعلم بعد ذلك؟ + +الدروس التالية تغطي مواضيع ذات صلة وثيقة تبني على التقنيات الموضحة في هذا الدليل. كل مصدر يتضمن أمثلة شيفرة كاملة مع شروحات خطوة بخطوة لمساعدتك على إتقان ميزات API إضافية واستكشاف أساليب تنفيذ بديلة في مشاريعك. + +- [تحويل HTML إلى Markdown في Aspose.HTML للـ Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [تحويل HTML إلى Markdown في .NET باستخدام Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [تحويل markdown إلى html – دليل Java مع مخرجات PDF](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/arabic/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..738f38328 --- /dev/null +++ b/html/arabic/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-08-22 +description: تعلّم كيفية إنشاء ماركداون من HTML في بايثون باستخدام سكريبت بسيط من + ثلاث خطوات. يتضمن خيارات التحويل ونصائح التصدير. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: ar +lastmod: 2026-08-22 +og_description: أنشئ ملف ماركداون من HTML باستخدام بايثون في ثلاث أسطر فقط. يوضح هذا + الدليل عملية التحويل، خيارات التنسيق، وكيفية تصدير HTML إلى ماركداون بكفاءة. +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: إنشاء ماركداون من HTML في بايثون – دليل خطوة بخطوة +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: كيفية إنشاء ماركداون من HTML باستخدام بايثون +url: /ar/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية إنشاء markdown من HTML باستخدام Python + +إذا كنت بحاجة إلى **إنشاء markdown من HTML**، فإن هذا الدليل القصير يوضح بالضبط كيفية القيام بذلك باستخدام Python. ستشاهد سكريبت واضح من ثلاث خطوات يقوم بتحميل ملف HTML، ويضبط مخرجات Git‑flavored Markdown، ويكتب النتيجة إلى القرص. + +تحويل محتوى الويب إلى تنسيق خفيف الوزن هو مهمة شائعة عند بناء المواقع الثابتة، أو خطوط توثيق، أو دفاتر ملاحظات تحليل البيانات. في هذا الدرس سنناقش أيضًا كيفية **تحويل HTML إلى markdown** مع تنسيق اختياري، ونجيب على سؤال **كيفية تحويل HTML** بكفاءة، ونظهر سير عمل **export HTML إلى markdown** باستخدام مكتبة `groupdocs-conversion` الشهيرة. + +## المتطلبات المسبقة + +قبل أن تبدأ، تأكد من أن لديك: + +* Python 3.8 أو أحدث مثبت. +* حزمة `groupdocs-conversion` (أو أي مكتبة توفر `HTMLDocument`، `MarkdownSaveOptions`، و `Converter`). قم بتثبيتها باستخدام: + +```bash +pip install groupdocs-conversion +``` + +* ملف HTML تريد تحويله، على سبيل المثال `sample.html` الموجود في مجلد تملكه. + +لا توجد تبعيات نظام إضافية مطلوبة، والكود يعمل على Windows و macOS و Linux. + +## الخطوة 1: تحميل مستند HTML المصدر + +العملية الأولى هي إنشاء كائن `HTMLDocument` الذي يمثل الملف المصدر. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**لماذا هذا مهم:** `HTMLDocument` يقوم بتحليل الملف، وحل الروابط النسبية، وتحضير DOM للتحويل. إذا لم يتم العثور على الملف، فإن المُنشئ يرفع استثناء واضح `FileNotFoundError`، بحيث يمكنك معالجة المدخلات المفقودة مبكرًا. + +## الخطوة 2: ضبط خيارات حفظ Markdown (Git‑flavored) + +Markdown يحتوي على عدة لهجات. Git‑flavored Markdown (GFM) يضيف جداول، قوائم مهام، وكتل شفرة محاطة، والتي غالبًا ما تكون مطلوبة لملفات README أو صفحات GitHub. + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**لماذا هذا مهم:** باختيار `MarkdownFormatter.GIT` صراحةً، تضمن أن المخرجات تتبع نفس القواعد التي يعرضها GitHub، مما يلغي المفاجآت عند عرض markdown في المستودع. إذا كنت تفضل Markdown عادي، استبدل `MarkdownFormatter.GIT` بـ `MarkdownFormatter.DEFAULT`. + +## الخطوة 3: تحويل مستند HTML إلى ملف Markdown + +الآن استدعِ محرك التحويل واكتب النتيجة إلى المسار المستهدف. + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**لماذا هذا مهم:** `Converter.convert` يتولى الجزء الصعب—تحويل وسوم HTML إلى ما يعادلها في markdown، الحفاظ على الصور (عن طريق نسخها إلى مجلد الإخراج إذا لزم الأمر)، وتطبيق المُنسق الذي اخترته. تُعيد الطريقة `None` عند النجاح، لكن يمكنك التقاط `ConversionException` لتقارير الأخطاء التفصيلية. + +### النتيجة المتوقعة + +بعد تشغيل السكريبت، سيحتوي `sample.md` على شيء مشابه لـ: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +الـ markdown الدقيق يعكس بنية `sample.html`. الجداول، الصور، وكتل الشفرة سيتم تحويلها وفقًا لقواعد GFM. + +## الاختلافات الشائعة وحالات الحافة + +| Situation | Recommended tweak | +|-----------|-------------------| +| **ملفات HTML الكبيرة (>10 MB)** | زيادة حد تكرار Python أو تدفق الإدخال باستخدام `HTMLDocument.open_stream()` إذا كانت المكتبة تدعم ذلك. | +| **الصور المشار إليها بروابط URL مطلقة** | عيّن `md_options.embed_images = True` لتضمين الصور كـ base‑64 data URIs، أو احتفظ بها كروابط لإنتاج أخف. | +| **تحتاج إلى Markdown عادي بدلاً من GFM** | غيّر `md_options.formatter = MarkdownFormatter.DEFAULT`. | +| **يجب تجاهل فئات CSS المخصصة** | استخدم `md_options.ignore_css_classes = ["unwanted-class"]`. | +| **التشغيل في خط أنابيب CI/CD** | غلف السكريبت بكتلة `try/except` واخرج بحالة غير صفرية عند الفشل، حتى يتمكن خط الأنابيب من الفشل بسرعة. | + +### نصيحة احترافية + +إذا كنت تخطط لتحويل العديد من الملفات دفعة واحدة، أعد استخدام نسخة واحدة من `MarkdownSaveOptions` وغير مسارات الإدخال/الإخراج فقط داخل حلقة. هذا يقلل من عبء إنشاء الكائنات ويسرّع العملية بحوالي ~15 %. + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## كيفية تحويل HTML إلى markdown بلغات أخرى (ملاحظة سريعة) + +بينما يركز هذا الدرس على **html to markdown python**، فإن نفس المفاهيم تنطبق على SDKs للغات Java و C# أو JavaScript: إنشاء كائن مستند، ضبط مُنسق markdown، واستدعاء المحول. إذا احتجت يومًا إلى **export HTML إلى markdown** من بيئة غير Python، ابحث عن الفئات المكافئة `HtmlDocument`، `MarkdownSaveOptions`، و `Converter` في SDK الخاص باللغة. + +## الخلاصة + +أنت الآن تعرف كيف **إنشاء markdown من HTML** باستخدام سكريبت Python مختصر. تدفق الخطوات الثلاث—تحميل HTML، ضبط خيارات Git‑flavored، وتشغيل التحويل—يغطي جوهر أي سير عمل **convert html to markdown**. من هنا يمكنك: + +* دمج السكريبت في مولدات المواقع الثابتة. +* أتمتة تحديثات الوثائق في خطوط CI. +* توسيع التحويل بمعالجة ما بعد مخصصة (مثل إعادة كتابة الروابط أو تعديل العناوين). + +لا تتردد في تجربة الخيارات الثانوية—**how to convert html** باستخدام مُنسقات مختلفة، أو تعديل إعدادات **export html to markdown** للصور والجداول. تحويل سعيد! + +## ما الذي يجب أن تتعلمه بعد ذلك؟ + +الدروس التالية تغطي مواضيع ذات صلة وثيقة تبني على التقنيات الموضحة في هذا الدليل. كل مورد يتضمن أمثلة شفرة كاملة مع شروحات خطوة بخطوة لمساعدتك على إتقان ميزات API إضافية واستكشاف أساليب تنفيذ بديلة في مشاريعك. + +- [تحويل HTML إلى Markdown في Aspose.HTML للـ Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [تحويل HTML إلى Markdown في .NET باستخدام Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [تحويل markdown إلى html – دليل Java مع مخرجات PDF](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/arabic/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..350862947 --- /dev/null +++ b/html/arabic/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-08-22 +description: أنشئ ملف PDF من SVG باستخدام بايثون في دقائق. تعلّم تحويل SVG إلى PDF، + حفظ SVG كملف PDF، واستخدام محول موثوق من SVG إلى PDF. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: ar +lastmod: 2026-08-22 +og_description: إنشاء PDF من SVG باستخدام بايثون بسرعة. يوضح هذا الدليل كيفية تحويل + SVG إلى PDF، واستخدام محول SVG إلى PDF، وحفظ SVG كملف PDF في سكريبت واحد. +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: إنشاء ملف PDF من SVG باستخدام بايثون – دليل خطوة بخطوة +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: كيفية إنشاء ملف PDF من SVG في بايثون – دليل كامل +url: /ar/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية إنشاء PDF من SVG في بايثون – دليل شامل + +إذا كنت بحاجة إلى **إنشاء PDF من SVG** بسرعة، فإن هذا الدليل يوضح لك بالضبط كيفية القيام بذلك. سنستعرض عملية تحويل ملف SVG إلى PDF باستخدام محول شائع من SVG إلى PDF، بحيث يمكنك تضمين الرسومات المتجهة في التقارير، الفواتير، أو الكتب الإلكترونية دون مغادرة كود بايثون الخاص بك. + +ستتعلم كيف **تحول SVG إلى PDF**، وتدير التحجيم، وتحافظ على الخطوط، وأخيرًا **تحفظ SVG كـ PDF** باستخدام سكريبت واحد قابل لإعادة الإنتاج. لا تحتاج إلى أدوات سطر أوامر خارجية—فقط بضع أسطر من بايثون ومكتبة Aspose.SVG for Python. + +## المتطلبات المسبقة + +قبل أن تبدأ، تأكد من وجود ما يلي: + +| المتطلب | السبب | +|-------------|--------| +| Python 3.8+ | المكتبة تستهدف إصدارات بايثون الحديثة. | +| حزمة `aspose.svg` | توفر `SVGDocument`، `PdfSaveOptions`، و `Converter`. يتم التثبيت باستخدام `pip install aspose-svg`. | +| ملف SVG (`vector.svg`) | الرسمة المتجهة المصدر التي تريد تحويلها. | +| إذن كتابة للمجلد الهدف | مطلوب لـ **save SVG as PDF**. | + +يمكنك تثبيت المكتبة باستخدام: + +```bash +pip install aspose-svg +``` + +> **نصيحة احترافية:** استخدم بيئة افتراضية (`python -m venv venv`) للحفاظ على عزل الاعتمادات. + +## نظرة عامة على عملية التحويل + +يتكون التحويل من ثلاث خطوات بسيطة: + +1. تحميل **مستند SVG** من القرص. +2. إنشاء **خيارات حفظ PDF** (يمكنك تخصيص حجم الصفحة، DPI، إلخ). +3. استدعاء **المحول** لإنتاج ملف PDF. + +الأقسام التالية تفصل كل خطوة، وتشرح *لماذا* كُتبت الشيفرة بهذه الطريقة، وتعرض السكريبت الكامل القابل للتنفيذ. + +## إنشاء PDF من SVG باستخدام Aspose.SVG for Python + +هذا العنوان H2 يحتوي على الكلمة المفتاحية الأساسية **create pdf from svg**، لتلبية متطلبات تحسين محركات البحث. + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### لماذا يعمل هذا + +* **`SVGDocument`** يحلل XML الخاص بـ SVG ويبني تمثيلًا في الذاكرة يمكن للمحول أن يرسمه. +* **`PdfSaveOptions`** يتيح لك تعديل مخرجات PDF (حجم الصفحة، الضغط، DPI). الإعدادات الافتراضية تنتج PDFًا متماثلًا، وهذا هو السبب في أن المثال يعمل مباشرةً. +* **`Converter.convert`** يقوم بالعمل الشاق: يرسم البيانات المتجهة على صفحات PDF مع الحفاظ على الدقة المتجهة، لذا يبقى PDF الناتج واضحًا عند أي مستوى تكبير. + +## تحويل SVG إلى PDF بحجم صفحة مخصص + +إذا كنت بحاجة إلى حجم صفحة محدد—مثل A4 للتقارير القابلة للطباعة—قم بتعديل `PdfSaveOptions`: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **حالة خاصة:** بعض ملفات SVG تعرف `viewBox` لا يتطابق مع أبعاد PDF المطلوبة. تجاوز `page_width`/`page_height` يضمن أن PDF يتناسب مع توقعات التخطيط الخاصة بك. + +## حفظ SVG كـ PDF مع الحفاظ على الخطوط + +عندما يشير SVG الخاص بك إلى خطوط خارجية، تأكد من أن الخطوط متاحة للمحول. ضع ملفات `.ttf` في نفس الدليل مع SVG أو حدد مجلد خطوط مخصص: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +المحول يدمج الخطوط مباشرةً داخل PDF، مما يضمن أن تحويل **svg file to pdf** يبدو متطابقًا على أي جهاز. + +## تحويل دفعي: ملف SVG إلى PDF للعديد من الملفات + +غالبًا ما يكون لديك مجلد مليء بأصول SVG. الحلقة التالية توضح **محول svg إلى pdf** فعال يعالج كل ملف `.svg` في الدليل: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +هذا المقتطف يوضح سير عمل عملي **convert svg to pdf** يمكن دمجه في خطوط CI أو مولدات التقارير الآلية. + +## التحقق من النتيجة + +بعد تشغيل السكريبت، افتح PDF المُولد بأي عارض (Adobe Reader، Chrome، أو Preview). يجب أن ترى: + +* أشكال متجهة تُعرض بوضوح عند أي مستوى تكبير. +* نص يطابق مصدر SVG، مع خطوط مدمجة إذا قمت بتوفيرها. +* لا توجد عيوب نقطية—لأن التحويل يحتفظ بالبيانات المتجهة الأصلية. + +إذا لاحظت فقدان الخطوط، تحقق مرة أخرى من أن ملفات الخطوط قابلة للوصول وأن SVG يشير إليها بشكل صحيح (خاصية `font-family`). + +## المشكلات الشائعة وكيفية تجنبها + +| العَرَض | السبب المحتمل | الحل | +|---------|--------------|-----| +| صفحات PDF فارغة | SVG يحتوي على موارد خارجية (صور، خطوط) غير موجودة | قدم `fonts_folder` وتأكد من أن الصور المرتبطة في نفس الدليل أو استخدم عناوين URL مطلقة. | +| النص يظهر كخطوط خارجية | الخط غير مدمج | عيّن `pdf_options.embed_fonts = True` (الإعداد الافتراضي) وتأكد من وجود ملف الخط. | +| حجم PDF أكبر من المتوقع | DPI عالي أو صور غير مضغوطة | قلل `pdf_options.dpi` أو فعّل الضغط: `pdf_options.compress = True`. | +| أبعاد SVG مقطوعة | `viewBox` أكبر من صفحة PDF | عدّل `pdf_options.page_width`/`page_height` أو قم بتحجيم SVG عبر `svg_doc.set_viewport`. | + +## مثال كامل من البداية إلى النهاية + +فيما يلي سكريبت مستقل يتضمن معالجة الأخطاء، التسجيل، ومعاملات سطر الأوامر الاختيارية. احفظه باسم `svg_to_pdf.py` وشغّله باستخدام `python svg_to_pdf.py`. + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +تشغيل السكريبت ينتج عملية **save SVG as PDF** يمكنك دمجها في خطوط أتمتة أكبر. + +### مخرجات وحدة التحكم المتوقعة + + + +## ما الذي يجب أن تتعلمه بعد ذلك؟ + +الدروس التالية تغطي مواضيع ذات صلة وثيقة تبني على التقنيات الموضحة في هذا الدليل. كل مصدر يتضمن أمثلة شيفرة كاملة مع شروحات خطوة بخطوة لمساعدتك على إتقان ميزات API إضافية واستكشاف أساليب تنفيذ بديلة في مشاريعك الخاصة. + +- [تحويل SVG إلى PDF في .NET باستخدام Aspose.HTML](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg إلى pdf java – إنشاء PDF من SVG باستخدام Aspose.HTML للـ Java](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [تحويل SVG إلى PDF في .NET باستخدام Aspose.HTML](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/arabic/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..881ba0b4e --- /dev/null +++ b/html/arabic/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-08-22 +description: كيفية تمكين البث لتحويل HTML كبير إلى PDF في بايثون، مما يقلل من استهلاك + الذاكرة ويسرّع عملية إنشاء المخرجات. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: ar +lastmod: 2026-08-22 +og_description: كيفية تمكين البث لتحويل HTML كبير إلى PDF في بايثون، مع تقليل استهلاك + الذاكرة وتسريع عملية إنشاء المخرجات. +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: تمكين البث لتحويل HTML إلى PDF في بايثون +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: كيفية تمكين البث عند تحويل HTML إلى PDF في بايثون +url: /ar/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية تمكين البث عند تحويل HTML إلى PDF في بايثون + +إذا كنت بحاجة إلى **how to enable streaming** أثناء تحويل HTML إلى PDF كبير، يوضح لك هذا الدليل الخطوات الدقيقة. من خلال تمكين البث، تتجنب تحميل المستند بالكامل في الذاكرة، وهو أمر أساسي عندما تقوم بتحويل HTML إلى PDF للملفات الكبيرة. + +سوف تتعلم كيفية تمكين البث، وتحويل HTML إلى PDF باستخدام بايثون، ومعالجة الحالات الخاصة مثل مهام large HTML to PDF. الحل يعمل مع مكتبة `groupdocs-conversion` الشهيرة (أو ما شابه)، لكن المفاهيم تنطبق على أي محول يدعم البث. + +![Diagram showing streaming conversion from HTML to PDF using Python](streaming-diagram.png) + +## ما ستحتاجه + +- Python 3.9 أو أحدث +- `groupdocs-conversion` (أو أي مكتبة توفر `PdfSaveOptions` مع علامة البث) +- ملف HTML تريد تحويله إلى PDF (المثال يستخدم ملفًا كبيرًا اسمه `large.html`) + +وجود هذه المتطلبات يضمن تشغيل الكود دون إعدادات إضافية. + +## الخطوة 1: تثبيت مكتبة التحويل + +أولاً، قم بتثبيت حزمة بايثون التي توفر `HTMLDocument` و `PdfSaveOptions` و `Converter`. الخيار الأكثر شيوعًا هو مجموعة أدوات **GroupDocs.Conversion** SDK: + +```bash +pip install groupdocs-conversion +``` + +> نصيحة احترافية: استخدم بيئة افتراضية (`python -m venv .venv`) للحفاظ على عزل الاعتماديات. + +## الخطوة 2: تحميل مستند HTML الذي تريد تحويله + +تحميل HTML المصدر سهل. فئة `HTMLDocument` تقرأ الملف من القرص وتجهزه للتحويل. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +كائن `HTMLDocument` يمثل كامل ترميز HTML، بما في ذلك الموارد الخارجية مثل الصور و CSS. هذا هو نقطة البداية لأي عملية **convert html to pdf**. + +## الخطوة 3: إنشاء خيارات حفظ PDF وتمكين البث + +تمكين البث هو جوهر **how to enable streaming**. بدلاً من تخزين كامل PDF في الذاكرة، يقوم المحول بكتابة أجزاء مباشرة إلى ملف الإخراج. + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +عند ضبط `enable_streaming` على `True`، تستخدم المكتبة نهج الكتابة المباشرة الذي يقلل بشكل كبير من استهلاك الذاكرة—وهو أمر حاسم لسيناريوهات **large html to pdf**. + +## الخطوة 4: تحويل مستند HTML إلى PDF باستخدام الخيارات المكوَّنة + +الآن استدعِ عملية التحويل. طريقة `Converter.convert` تأخذ المستند المصدر، كائن الخيارات، ومسار الوجهة. + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +بعد انتهاء هذا الاستدعاء، يحتوي `large.pdf` على ملف PDF المُنشأ، تم توليده أثناء بث البيانات إلى القرص. عادةً ما تنتهي العملية بأكملها أسرع من التحويل غير المتدفق لأن نظام التشغيل يمكنه تفريغ البيانات إلى نظام الملفات تدريجيًا. + +### النتيجة المتوقعة + +تشغيل السكريبت ينتج ملف PDF بحجم يطابق محتوى HTML الأصلي. يمكنك التحقق من النتيجة باستخدام أي عارض PDF: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## لماذا البث مهم لتحويل HTML إلى PDF كبير + +عند **convert html to pdf** بدون بث، تقوم المكتبة أولاً بإنشاء كامل PDF في الذاكرة قبل كتابته إلى القرص. بالنسبة لصفحة صغيرة هذا مقبول، لكن مهمة **large html to pdf** (مثلاً تقرير HTML بحجم 10 ميغابايت مع العديد من الصور) قد تتجاوز حدود الذاكرة في وظائف الخادم غير التقليدية أو الحاويات ذات الذاكرة القليلة. + +تمكين البث يحل ثلاث مشكلات: + +1. **كفاءة الذاكرة** – يتم الاحتفاظ بذاكرة مؤقتة صغيرة فقط في RAM. +2. **أداء أسرع من حيث الإدراك** – يظهر الملف على القرص أثناء توليده، مما يسمح للعمليات اللاحقة ببدء قراءته مبكرًا. +3. **قابلية التوسع** – يمكنك تشغيل العديد من التحويلات بالتوازي دون استنزاف ذاكرة المضيف. + +## الأخطاء الشائعة وكيفية تجنبها + +| العَرَض | السبب المحتمل | الحل | +|---------|--------------|-----| +| `MemoryError` أثناء التحويل | لم يتم ضبط علامة البث أو نسخة المكتبة قديمة | تأكد من `pdf_opts.enable_streaming = True` وقم بترقية إلى أحدث SDK (`pip install --upgrade groupdocs-conversion`). | +| الصور مفقودة في PDF | مسارات الصور النسبية لا يمكن حلها | مرّر الدليل الأساسي إلى `HTMLDocument` أو دمج الصور كـ base64. | +| ملف PDF الناتج فارغ | ملف HTML غير موجود أو غير قابل للقراءة | تحقق من المسار `"YOUR_DIRECTORY/large.html"` وتأكد من أذونات الملف. | +| التحويل يتعطل إلى ما لا نهاية | الموارد الخارجية الكبيرة (خطوط، CSS) تحجب عملية العرض | قم بتحميل الموارد الخارجية مسبقًا أو استخدم متصفحًا بدون رأس لتضمينها. | + +### حالة حافة: تحويل HTML من سلسلة نصية + +إذا كان محتوى HTML الخاص بك موجودًا في الذاكرة بدلاً من ملف، يمكنك ما زلت **how to enable streaming** عن طريق تغليف السلسلة في مُنشئ `HTMLDocument` الذي يقبل HTML خام: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +سلوك البث يبقى متطابقًا لأن SDK يكتب PDF بشكل تدريجي. + +## السكريبت الكامل الذي يمكنك نسخه ولصقه + +فيما يلي مثال كامل وجاهز للتنفيذ يدمج جميع الخطوات المذكورة. استبدل `YOUR_DIRECTORY` بالمسار الفعلي على جهازك. + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +تشغيل `python full_example.py` سيولد `large.pdf` باستخدام نهج البث. + +## ملخص + +- الآن تعرف **how to enable streaming** لتحويل HTML إلى PDF في بايثون. +- يوضح السكريبت سير عمل كامل **convert html to pdf**، مع معالجة أحمال **large html to pdf** بفعالية. +- من خلال ضبط `PdfSaveOptions.enable_streaming = True`، يكتب المحول المخرجات تدريجيًا، وهو الطريقة الموصى بها لـ **stream html to pdf**. + +## ما الذي يمكنك استكشافه لاحقًا + +- مكتبات **HTML to PDF Python** التي تدعم CSS3 و JavaScript (مثل `WeasyPrint`، `pdfkit`). +- إضافة حماية كلمة مرور أو تشفير إلى PDF المُولد عبر إعدادات إضافية في `PdfSaveOptions`. +- تنفيذ تحويلات متعددة بالتوازي في نظام طابور (Celery، RabbitMQ) مع الحفاظ على انخفاض استهلاك الذاكرة. + +لا تتردد في تجربة مصادر HTML مختلفة، أحجام الصفحات، وبيانات تعريف PDF. البث يجعل من الممكن التعامل مع مستندات أكبر دون التضحية بالأداء. برمجة سعيدة! + +## ما الذي يجب أن تتعلمه بعد ذلك؟ + +الدروس التالية تغطي مواضيع ذات صلة وثيقة تبني على التقنيات الموضحة في هذا الدليل. كل مصدر يتضمن أمثلة شاملة من الكود مع شروحات خطوة بخطوة لمساعدتك على إتقان ميزات API إضافية واستكشاف أساليب تنفيذ بديلة في مشاريعك. + +- [كيفية تحويل HTML إلى PDF Java – باستخدام Aspose.HTML لـ Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [إنشاء مجموعة خيوط ثابتة للتحويل المتوازي من HTML إلى PDF](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [كيفية تمكين JavaScript في Aspose HTML – تحميل HTML والحصول على النص](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/arabic/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..f90e35f7c --- /dev/null +++ b/html/arabic/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-08-22 +description: كيفية تصدير الروابط من HTML وتحويلها إلى ملف markdown، بما في ذلك الفقرات. + دليل خطوة بخطوة لتحويل HTML إلى markdown. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: ar +lastmod: 2026-08-22 +og_description: كيفية تصدير الروابط من مستند HTML وتحويله إلى ملف markdown، بما في + ذلك الفقرات. اتبع هذا الدرس الكامل للحصول على تحويل موثوق من HTML إلى markdown. +og_image_alt: How to export links while converting HTML to Markdown +og_title: كيفية تصدير الروابط أثناء تحويل HTML إلى Markdown – دليل خطوة بخطوة +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: كيفية تصدير الروابط أثناء تحويل HTML إلى Markdown +url: /ar/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية تصدير الروابط أثناء تحويل HTML إلى Markdown + +إذا كنت بحاجة إلى **كيفية تصدير الروابط** من صفحة HTML وتحويل النتيجة إلى ملف **html to markdown** نظيف، يوضح لك هذا الدليل الخطوات الدقيقة. ستكتشف أيضًا **كيفية استخراج الفقرات** بحيث يحتوي إخراج Markdown على المحتوى الرئيسي الذي يهمك. في نهاية البرنامج التعليمي يمكنك الإجابة على السؤال “**كيفية تحويل html** إلى markdown” باستخدام سكريبت جاهز للتنفيذ. + +تصدير الروابط واستخراج الفقرات هما مهمتان شائعتان عندما تقوم بترحيل محتوى الويب إلى مواقع ثابتة، أو بوابات توثيق، أو أنظمة إدارة محتوى Headless. النهج أدناه يعمل مع GroupDocs Conversion SDK للغة Python، لكن المفاهيم تنطبق على أي مكتبة تسمح لك بتكوين ميزات التصدير. + +--- + +## ما ستحتاجه + +- Python 3.9 أو أحدث +- حزمة `groupdocs-conversion` (تثبيت عبر `pip install groupdocs-conversion`) +- ملف HTML تريد معالجته (مثال: `input.html`) +- إلمام أساسي ببرمجة Python + +--- + +## كيفية تصدير الروابط مع تحويل HTML إلى Markdown + +الخطوة الأساسية الأولى هي تكوين التحويل بحيث تُكتب فقط الميزات المطلوبة — الروابط والفقرات — إلى **ملف html to markdown**. يتيح لك SDK ضبط قناع البت `MarkdownFeature`؛ نجمع بين `LINKS` و `PARAGRAPHS` لتوجيه المخرجات. + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### لماذا يعمل هذا + +- **`HTMLDocument`** يقوم بتحليل الملف الأصلي ويبني شجرة DOM يمكن للمحول التجول فيها. +- **`MarkdownSaveOptions`** يمنحك تحكمًا دقيقًا في ما يكتبه SDK. ضبط `features` إلى `LINKS | PARAGRAPHS` يخبر المحرك بتجاهل الصور، الجداول، أو السكريبتات، مما يقلل الضوضاء في **ملف html to markdown** النهائي. +- **`Converter.convert`** يقوم بالمعالجة الفعلية. فهو يحترم قناع الميزات، يستخرج وسوم الروابط (``) ووسوم الفقرات (`

`)، ويكتبها باستخدام صيغة Markdown القياسية. + +--- + +## كيفية تحويل HTML إلى Markdown مع المحتوى الكامل (اختياري) + +إذا قررت لاحقًا أنك تحتاج إلى الصفحة بأكملها — وليس الروابط والفقرات فقط — ببساطة عدّل قناع الميزات: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +تشغيل التحويل نفسه الآن ينتج **ملف html to markdown** كامل يعكس التخطيط الأصلي. هذا يوضح **كيفية تحويل html** بطريقة مرنة: أنت تتحكم في المخرجات عن طريق تبديل أعلام الميزات. + +--- + +## كيفية استخراج الفقرات فقط + +أحيانًا يهمك فقط نص المقالة دون الروابط. يمكنك عزل الفقرات بضبط القناع إلى `PARAGRAPHS` فقط: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +سيحتوي Markdown الناتج على نص نظيف مُغلف سطرًا دون أي علامات روابط. يجيب هذا المقتطف على السؤال **كيفية استخراج الفقرات** من مصدر HTML. + +--- + +## الأخطاء الشائعة وكيفية تجنّبها + +| المشكلة | لماذا يحدث | الحل | +|---------|------------|------| +| ملف الإخراج فارغ | لا يحتوي HTML المصدر على وسوم `` أو `

` تتطابق مع الميزات المحددة. | تحقق من بنية HTML أو وسّع قناع الميزات (مثلاً، أضف `HEADINGS`). | +| مشاكل الترميز | يستخدم HTML مجموعة أحرف غير UTF‑8 ويقرأها SDK بشكل غير صحيح. | مرّر ترميزًا صريحًا إلى `HTMLDocument`، مثل `HTMLDocument(path, encoding="iso-8859-1")`. | +| الكتابة فوق ملف Markdown موجود | تشغيل السكريبت عدة مرات يستبدل الملف السابق. | أضف طابع زمن إلى اسم ملف الإخراج أو تحقق من وجود `os.path.exists` قبل الكتابة. | + +**نصيحة احترافية:** عند معالجة العديد من الملفات في مجلد، غلف منطق التحويل داخل حلقة وسجّل كل نتيجة. هذا يمنحك سجل تدقيق واضح ويسهل الاستئناف بعد أي فشل. + +--- + +## السكريبت الكامل يمكنك نسخه‑ولصقه + +فيما يلي ملف Python مستقل (`convert_links_paragraphs.py`) يمكنك تشغيله مباشرة. يتضمن تحليلًا للوسائط بحيث يمكنك تحديد مسارات الإدخال والإخراج دون تعديل الكود. + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**كيفية التشغيل** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +الأمر أعلاه يوضح **كيفية تصدير الروابط** و**كيفية استخراج الفقرات** في استدعاء واحد. احذف `--links` أو `--paragraphs` لتخصيص المخرجات حسب احتياجاتك. + +--- + +## التحقق – كيف يبدو الإخراج + +مع ملف HTML البسيط التالي (`input.html`): + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +تشغيل السكريبت مع كلا العلامتين ينتج `links_and_paragraphs.md`: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +ستلاحظ أن الفقرتين والرابط فقط موجودان — بالضبط ما طلبته عندما بحثت عن **كيفية تصدير الروابط** أثناء تنفيذ **convert html to markdown**. + +--- + +## الخطوات التالية والمواضيع ذات الصلة + +- **كيفية تحويل html إلى markdown** مع الصور: أضف `MarkdownFeature.IMAGES` إلى القناع. +- **كيفية استخراج الفقرات** ثم معالجتها لاحقًا + +## ماذا يجب أن تتعلم بعد ذلك؟ + +الدروس التالية تغطي مواضيع ذات صلة وثيقة تبني على التقنيات الموضحة في هذا الدليل. كل مصدر يتضمن أمثلة شفرة كاملة مع شروحات خطوة‑بخطوة لمساعدتك على إتقان ميزات API إضافية واستكشاف أساليب تنفيذ بديلة في مشاريعك. + +- [How to Set Offset When Converting HTML to Markdown in Java](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown to HTML Java - Convert with Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [Convert HTML to Markdown – Complete C# Guide](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/arabic/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..e75704c23 --- /dev/null +++ b/html/arabic/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,280 @@ +--- +category: general +date: 2026-08-22 +description: كيفية تحميل HTML باستخدام Aspose.HTML في بايثون – تحديد عمق الموارد وجعل + المستند جاهزًا للتحويل أو التحرير. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: ar +lastmod: 2026-08-22 +og_description: كيفية تحميل HTML باستخدام Aspose.HTML في بايثون، ضبط عمق معالجة الموارد، + وجعل المستند جاهزًا للتحويل أو التحرير. +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: كيفية تحميل HTML باستخدام Aspose.HTML – دليل Python +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: كيفية تحميل HTML باستخدام Aspose.HTML في بايثون +url: /ar/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية تحميل HTML باستخدام Aspose.HTML في بايثون + +إذا كنت بحاجة إلى **how to load html** بسرعة وأمان في مشروع بايثون، يوضح لك هذا الدليل الخطوات الدقيقة. بحلول نهاية الجملتين الأوليين ستعرف كيفية تكوين معالجة الموارد، تحميل الملف، وإبقاء العملية جاهزة لمزيد من **HTML conversion** أو التحرير. + +تحميل الصفحات الكبيرة أو المعقدة غالبًا ما يُربك المحللات الساذجة لأن الموارد الخارجية (الصور، السكريبتات، CSS) يمكن أن تتسبب في تكرار عميق أو تأخيرات شبكة. يغطي هذا الدرس نمطًا قويًا باستخدام **Aspose.HTML for Python**، ويُظهر **HTMLDocument class**، ويشرح لماذا يُعد ضبط **max_handling_depth** مهمًا. + +ستتبع الخطوات التالية: + +* تثبيت حزمة Aspose.HTML +* إنشاء كائن `ResourceHandlingOptions` وتحديد الحد الأقصى للعمق +* استخدام فئة `HTMLDocument` لتحميل صفحة +* إعداد المستند للتحويل إلى PDF أو PNG أو لمزيد من المعالجة + +لا يلزم وجود خبرة سابقة في Aspose.HTML، فقط معرفة أساسية ببايثون. + +--- + +## كيفية تحميل HTML باستخدام Aspose.HTML في بايثون + +جوهر الحل هو نمط من ثلاث خطوات يجمع بين **ResourceHandlingOptions** و **HTMLDocument class**. تحديد عمق المعالجة يمنع استدعاءات الشبكة المتكررة عندما تشير الصفحة إلى موارد متداخلة كثيرة. + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### لماذا يعمل هذا + +* **`ResourceHandlingOptions`** يخبر المحلل بعدد المستويات التي يمكنه متابعة الموارد الخارجية فيها. ضبط `max_handling_depth = 3` يوقف التحميل بعد ثلاث خطوات، وهو كافٍ لمعظم المواقع ولكنه يحمي من الحلقات اللانهائية. +* **`HTMLDocument`** يقرأ الملف، يطبق الخيارات، ويُنشئ DOM في الذاكرة يمكنك استعلامه أو تعديله أو عرضه. +* مقطع التحويل الاختياري يُظهر كيف يندمج المستند المحمَّل مع ميزات **HTML conversion**، مثل الحفظ كملف PDF. + +--- + +## فهم ResourceHandlingOptions + +`ResourceHandlingOptions` هي جزء من **Aspose.HTML for Python** وتمنحك تحكمًا دقيقًا في نشاط الشبكة. + +| الخاصية | الغرض | القيمة النموذجية | +|-------------------------|----------------------------------------------------|---------------| +| `max_handling_depth` | أقصى عمق للتكرار للموارد المرتبطة | `3` (default) | +| `allow_external_resources` | ما إذا كان سيتم تنزيل CSS، JS، الصور الخارجية | `True` | +| `timeout` | مهلة الشبكة لكل طلب (ثوانٍ) | `30` | + +**نصيحة عملية:** إذا كنت تعلم أن الصفحة المستهدفة تشير فقط إلى أصول محلية، اضبط `allow_external_resources = False` لتسريع التحميل وتجنب استدعاءات HTTP غير الضرورية. + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## استخدام فئة HTMLDocument + +فئة **HTMLDocument class** هي نقطة الدخول لجميع عمليات Aspose.HTML. بمجرد إنشائها، يمكنك: + +* الوصول إلى DOM عبر `doc.root` +* استعلام العناصر باستخدام محددات CSS (`doc.query_selector_all("img")`) +* تحويل الصفحة إلى صيغ نقطية (`doc.save("page.png")`) +* التحويل إلى PDF (`doc.save("page.pdf", PDFSaveOptions())`) + +فيما يلي مقتطف قصير يستخرج جميع سمات `src` للصور بعد التحميل: + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**لماذا قد تحتاج هذا:** عند تنفيذ **HTML conversion**، غالبًا ما تحتاج إلى تعديل أو استبدال عناوين الصور قبل العرض بصيغة أخرى. الوصول المباشر إلى DOM يمنحك هذه المرونة. + +--- + +## الخطوات التالية بعد تحميل HTML + +الآن بعد أن أصبح المستند في الذاكرة، يمكنك اختيار أحد سير العمل الشائع: + +1. **التحويل إلى PDF** – مثالي للأرشفة أو الطباعة. +2. **العرض كـ PNG/JPEG** – مفيد للصور المصغرة أو المعاينات البصرية. +3. **تحرير DOM** – إدراج، إزالة أو تعديل العناصر قبل الحفظ. +4. **استخراج النص** – سحب المحتوى النصي للفهارس أو التحليل. + +### مثال: التحويل إلى PDF بحجم صفحة مخصص + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**الناتج المتوقع:** ملف باسم `big_page.pdf` يظهر في دليل العمل، يحتوي على HTML المرسوم مع جميع الموارد المسموح بها. إذا ضبطت `max_handling_depth` على 3، فإن الموارد المدمجة ستقتصر على ثلاثة مستويات، مما يحافظ على حجم PDF معقولًا. + +--- + +## المشكلات الشائعة وكيفية تجنبها + +| العَرَض | السبب | الحل | +|--------------------------------------|----------------------------------------|-----| +| فقدان الصور في ملف PDF المُصدّر | تم ضبط `allow_external_resources` على `False` | تمكين الموارد الخارجية أو دمج الصور محليًا | +| `TimeoutError` أثناء التحميل | تجاوز زمن استجابة الشبكة `timeout` | زيادة `rh_opts.timeout` أو تنزيل الأصول مسبقًا | +| تنسيق CSS غير متوقع | لم يتم تحميل ورقة الأنماط المرتبطة بسبب حد العمق | رفع `max_handling_depth` أو إضافة CSS المطلوبة يدويًا | +| `UnicodeDecodeError` على ملفات غير UTF-8| ملف HTML يستخدم ترميزًا مختلفًا | تمرير `encoding="windows-1252"` عند إنشاء `HTMLDocument` | + +--- + +## مثال كامل وقابل للتنفيذ + +فيما يلي سكريبت مستقل يمكنك نسخه إلى ملف باسم `load_html_demo.py`. يتضمن تعليمات التثبيت، معالجة الأخطاء، وخطوة التحقق النهائية. + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +**تشغيل السكريبت** + +```bash +python load_html_demo.py +``` + +ستظهر لك مخرجات في وحدة التحكم تؤكد التحميل، قائمة عناوين الصور، ورسالة نجاح لتحويل PDF. الملف `big_page.pdf` المُنشأ سيعكس محتوى HTML مقيدًا بـ **max_handling_depth** المُكوَّن. + +--- + +## الخلاصة + +في هذا الدرس غطينا **how to load html** باستخدام **Aspose.HTML for Python**، وضبطنا **ResourceHandlingOptions** للتحكم في `max_handling_depth`، وأظهرنا إجراءات عملية بعد التحميل مثل استخراج الصور وتحويل PDF. باتباع الخطوات الآن لديك أساس موثوق لأي سير عمل **HTML conversion**، سواء كنت تبني أداة استخراج ويب، خدمة أرشفة مستندات، أو مولد تقارير ديناميكي. + +**الخطوات التالية** + +* جرّب قيمًا مختلفة لـ `max_handling_depth` لتحقيق التوازن بين الاكتمال والأداء. +* حاول تحويل المستند إلى + +## ما الذي يجب أن تتعلمه بعد ذلك؟ + +الدروس التالية تغطي مواضيع ذات صلة وثيقة تبني على التقنيات التي تم توضيحها في هذا الدليل. كل مصدر يتضمن أمثلة كود كاملة مع شروحات خطوة بخطوة لمساعدتك على إتقان ميزات API إضافية واستكشاف أساليب تنفيذ بديلة في مشاريعك. + +- [How to Parse HTML Java – Load, Query & Count Elements](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [How to Edit HTML Document Tree in Aspose.HTML for Java](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [Handle Document Load Events in Aspose.HTML for Java](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/chinese/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..ece633abd --- /dev/null +++ b/html/chinese/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-08-22 +description: 如何使用 Aspose.HTML 在 Python 中将 HTML 转换为 PDF —— 学习从 HTML 文件创建 PDF、从 HTML + 代码生成 PDF,以及快速将 HTML 保存为 PDF(Python)。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: zh +lastmod: 2026-08-22 +og_description: 如何使用 Aspose.HTML 在 Python 中将 HTML 转换为 PDF。本教程展示了如何从 HTML 文件创建 PDF、从 + HTML 代码生成 PDF,以及在 Python 中将 HTML 保存为 PDF。 +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: 如何在 Python 中将 HTML 转换为 PDF——一步一步的指南 +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: 如何使用 Aspose.HTML 在 Python 中将 HTML 转换为 PDF +url: /zh/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何使用 Aspose.HTML 在 Python 中将 HTML 转换为 PDF + +如果您需要 **快速将 html 转换为 pdf**,本指南提供了一个完整、可直接运行的解决方案。您将看到如何 **从 html 文件创建 pdf**、**从 html 代码生成 pdf**,以及使用 Aspose.HTML 简单 API **在 python 中将 html 保存为 pdf**。 + +我们将逐步演示每一步,解释每行代码的意义,并覆盖常见的陷阱,帮助您将代码适配到任何项目中。无需外部工具,只需几行 Python 代码。 + +## 前置条件 + +在开始之前,请确保您已经: + +* 安装了 Python 3.8 或更高版本。 +* 拥有有效的 Aspose.HTML for Python 许可证(或免费评估密钥)。 +* 安装了 `aspose.html` 包: + +```bash +pip install aspose-html +``` + +具备以上条件可确保转换过程不会出现运行时错误。 + +## 步骤 1:加载 HTML 文档(从 html 文件创建 pdf) + +首要任务是读取源 HTML。Aspose.HTML 使用 `HTMLDocument` 类来表示文档,该类抽象了文件 I/O、网络获取以及 DOM 解析。 + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*为什么这一步重要:* +`HTMLDocument` 会加载 HTML,解析相对资源(图片、CSS、字体),并构建一个可供转换器准确渲染的 DOM。若跳过此步骤或仅使用普通字符串,将失去资源解析的能力。 + +## 步骤 2:配置 PDF 保存选项(在 python 中将 html 保存为 pdf) + +Aspose.HTML 通过 `PdfSaveOptions` 让您细致调节 PDF 输出。默认配置已经可以生成高质量的 PDF,但您仍可根据需要调整页面尺寸、压缩方式或元数据等。 + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*为什么这一步重要:* +即使使用默认值,创建一个选项对象也使代码具备可扩展性。以后若需要添加 PDF 密码等功能,只需在此对象上进行修改,无需重构脚本。 + +## 步骤 3:执行转换(将 html 转换为 pdf python) + +`Converter.convert` 方法将 HTML 文档与 PDF 选项绑定,并将结果写入您指定的文件路径。 + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*为什么这一步重要:* +`Converter.convert` 会启动渲染引擎,将 HTML/CSS 栅格化为 PDF 矢量。它能够自动处理复杂布局、嵌入字体以及 SVG 图形——这些是手动库常常遗漏的功能。 + +### 预期输出 + +运行脚本后会在同一目录生成 `sample.pdf`。使用任意 PDF 查看器打开,您应能看到与 `sample.html` 完全一致的页面,包括样式、图片和分页。 + +## 常见变体与边缘情况 + +| 情况 | 处理方式 | +|-----------|-----------------| +| **HTML 是字符串而非文件** | 使用 `HTMLDocument.from_string(html_string)` 替代从路径加载。 | +| **需要密码保护的 PDF** | 在转换前设置 `pdf_options.encryption.password = "yourPassword"`。 | +| **大型 HTML 文件导致内存压力** | 启用流式模式:`pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`。 | +| **自定义字体缺失** | 注册字体文件夹:`pdf_options.fonts_folder = "path/to/fonts"`。| + +这些变体展示了 Aspose.HTML API 的灵活性,同时保持核心工作流不变。 + +## 完整脚本(从 html 代码生成 pdf) + +下面是完整、可运行的程序,已包含所有步骤。复制粘贴后,将 `YOUR_DIRECTORY` 替换为实际文件夹路径,然后执行。 + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +使用以下命令运行: + +```bash +python convert_html_to_pdf.py +``` + +您将看到确认信息,PDF 文件会出现在源 HTML 文件旁边。 + +## 故障排除技巧(专业提示) + +* **图片或 CSS 缺失** – 确保 HTML 文件使用绝对 URL,或相对路径相对于 `YOUR_DIRECTORY` 正确。 +* **Unicode 字符显示为方框** – 通过 `pdf_options.fonts_folder` 嵌入所需字体。 +* **转换速度慢** – 将 `pdf_options.use_system_fonts = False` 以避免扫描系统字体目录。 + +## 结论 + +现在,您已经掌握了 **在 Python 中使用 Aspose.HTML 将 html 转换为 pdf** 的完整流程,从加载 HTML 文件到保存高质量 PDF。相同的模式同样适用于 **从 html 文件创建 pdf**、**从 html 代码生成 pdf**,以及 **在 python 中将 html 保存为 pdf** 的任何自动化工作流。 + +接下来,您可以进一步探索: + +* 添加水印或页眉/页脚(关键词:*create pdf from html file*)。 +* 将本地文件改为实时 URL 转换(关键词:*convert html to pdf python*)。 +* 将转换器集成到 Flask 或 Django API 中,以按需提供 PDF 服务。 + +尽情尝试各种选项,祝您 PDF 生成愉快! + + +## 接下来您应该学习什么? + +以下教程涵盖了与本指南技术紧密相关的主题,帮助您在已有技巧的基础上进一步深入。每个资源都提供了完整的可运行代码示例和逐步解释,帮助您掌握更多 API 功能并探索替代实现方式。 + +- [使用 Aspose.HTML 将 HTML 转换为 PDF – 完整操作指南](/html/english/) +- [如何使用 Aspose.HTML for Java 将 HTML 转换为 PDF](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [使用 Aspose.HTML 在 .NET 中将 HTML 转换为 PDF](/html/english/net/html-extensions-and-conversions/convert-html-to-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/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/chinese/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..5a12ddf42 --- /dev/null +++ b/html/chinese/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-08-22 +description: 学习如何使用 Python 从 HTML 文件生成 Markdown。本分步指南展示了如何使用可靠的库将 HTML 转换为 Markdown。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: zh +lastmod: 2026-08-22 +og_description: 如何使用 Python 将 HTML 文件转换为 Markdown。遵循本指南,使用成熟的库快速将 HTML 转换为 Markdown。 +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: 如何使用 Python 将 HTML 转换为 Markdown – 完整指南 +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: 如何在 Python 中从 HTML 创建 Markdown – 完整指南 +url: /zh/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何使用 Python 将 HTML 转换为 Markdown – 完整指南 + +如果您需要了解 **如何创建 Markdown** 来自现有网页内容,只需几行 Python 代码即可将 HTML 文件转换为 Markdown。本教程将指导您使用专用的 **html to markdown library** 将 **convert html to markdown**,该库可在 Windows、macOS 和 Linux 上运行。 + +您将学习如何安装库、加载 HTML 文档、配置 Git‑flavored markdown 选项并将结果写入磁盘。完成本指南后,您即可自动将任意 **html file to markdown** 转换,这对静态站点生成器、文档流水线或内容迁移项目非常有用。 + +## 前置条件 + +在开始之前,请确保您具备: + +* 已安装 Python 3.8 或更高版本(使用 `python --version` 检查)。 +* 可使用终端或命令提示符。 +* 您想要转换的 HTML 文件(示例使用 `sample.html`)。 +* 需要网络连接以安装所需的包。 + +代码示例使用 **GroupDocs.Conversion for Python** 库,该库提供后文展示的 `HTMLDocument`、`MarkdownSaveOptions` 和 `Converter` 类。相同的概念同样适用于其他 **html to markdown python** 包,如 `markdownify` 或 `html2text`——唯一的区别在于导入语句。 + +## 如何创建 Markdown – 步骤 1:安装 html to markdown python 库 + +第一步是将转换库添加到您的环境中。在终端中运行以下 pip 命令: + +```bash +pip install groupdocs-conversion +``` + +> **小贴士:** 使用虚拟环境(`python -m venv .venv`)可将依赖与全局 Python 安装隔离。 + +安装该包后,您即可使用转换过程所需的 `HTMLDocument`、`MarkdownSaveOptions` 和 `Converter` 类。 + +## 将 HTML 转换为 Markdown – 步骤 2:加载 HTML 文档 + +库安装完成后,导入必要的类并创建指向源文件的 `HTMLDocument` 实例。 + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +`HTMLDocument` 对象读取文件并为转换做准备。如果文件不存在,构造函数会抛出 `FileNotFoundError`,因此请确保路径正确。 + +## HTML 文件转 Markdown – 步骤 3:配置 Git‑flavored markdown 选项 + +许多项目偏好 Git‑flavored markdown,因为它支持表格、任务列表和删除线语法。该库允许您通过在 `MarkdownSaveOptions` 上设置 `git` 属性来启用此预设。 + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +将 `git = True` 设置为 true,告诉转换器输出 GitHub、GitLab 和 Bitbucket 能正确渲染的语法。如果需要普通 Markdown,请将该标志保持为 `False`。 + +## 保存 Markdown 输出 – 步骤 4:使用 html to markdown 库写入结果 + +最后,调用 `Converter.convert` 方法,传入源文档、选项对象和目标路径。 + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +脚本执行完毕后,`git_flavored.md` 包含 `sample.html` 的 Markdown 表示。您可以在任意编辑器中打开该文件,或直接将其提供给静态站点生成器。 + +### 预期输出 + +假设 `sample.html` 包含一个简单的标题和段落,生成的 Markdown 可能如下所示: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +如果原始 HTML 包含表格、列表或代码块,Git‑flavored 预设将使用相应的 Markdown 语法保留这些结构。 + +## 了解 html to markdown 库 + +**GroupDocs.Conversion** 库抽象了您本可能需要手动处理的解析和渲染细节。它: + +* 在可能的情况下保留基于 CSS 的样式(例如,加粗、斜体)。 +* 生成干净、可读的 Markdown,且不包含额外的 HTML 实体。 +* 支持批量转换,您可以使用相同的代码遍历目录中的 HTML 文件。 + +如果您更倾向于轻量级方案,`markdownify` 包提供了单函数 API: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +两种方法都实现了相同的最终目标——**convert html to markdown**——但 GroupDocs 选项在输出格式上提供了更多控制,并且可以轻松集成到更大的文档处理流水线中。 + +## 常见陷阱及规避方法 + +| 问题 | 产生原因 | 解决办法 | +|-------|---------------|-----| +| Markdown 中缺少图片 | 转换器仅包含图片 URL;不会嵌入文件。 | 确保图片文件在 Markdown 所在位置可访问,或将其与输出文件一起复制。 | +| 相对链接损坏 | HTML 可能使用相对路径,转换后会失效。 | 使用 `md_options.base_path`(如果可用)重写链接,或运行后处理脚本调整路径。 | +| Unicode 字符被转义 | 某些库会转义非 ASCII 字符。 | 将 `md_options.encode_utf8 = True`(或等效标志)设为 true,以保持字符不被转义。 | + +在扩展转换至数十或数百个文件时,提前解决这些问题可节省大量时间。 + +## 完整、可运行的示例 + +下面是一个独立的脚本,您可以直接复制、修改并运行。将 `YOUR_DIRECTORY` 替换为您机器上的实际文件夹路径。 + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +运行脚本: + +```bash +python markdown_from_html.py +``` + +您应该会看到确认信息,并生成一个包含您 HTML 的 Markdown 版本的 `git_flavored.md` 文件。 + +## 结论 + +您现在已经了解如何使用 Python 从 HTML 源 **创建 Markdown**。本指南涵盖了安装可靠的 **html to markdown library**、加载 **html file to markdown**、配置 **html to markdown python** 选项以及保存结果。凭借此基础,您可以自动化文档流水线、迁移旧版网页或为静态站点生成器生成内容。 + +**后续步骤** + +* 通过遍历 HTML 文件夹来探索批量转换。 +* 自定义 `MarkdownSaveOptions` 以控制标题样式、列表格式或图片处理。 +* 将此脚本与 CI/CD 工作流结合,自动保持 Markdown 文档的最新状态。 + +转换愉快! + +## 接下来您应该学习什么? + +以下教程涵盖与本指南技术密切相关的主题,帮助您进一步学习。每个资源都包含完整的可运行代码示例和逐步说明,帮助您掌握更多 API 功能并在项目中探索替代实现方案。 + +- [在 Aspose.HTML for Java 中将 HTML 转换为 Markdown](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [在 .NET 中使用 Aspose.HTML 将 HTML 转换为 Markdown](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [将 Markdown 转换为 HTML – Java 指南(含 PDF 输出)](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/chinese/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..460d2023b --- /dev/null +++ b/html/chinese/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,184 @@ +--- +category: general +date: 2026-08-22 +description: 学习如何在 Python 中使用简单的三步脚本将 HTML 转换为 Markdown。包括转换选项和导出技巧。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: zh +lastmod: 2026-08-22 +og_description: 仅用三行 Python 将 HTML 转换为 Markdown。本指南展示了转换、格式化选项以及如何高效地将 HTML 导出为 Markdown。 +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: 使用 Python 将 HTML 转换为 Markdown – 步骤指南 +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: 如何使用Python将HTML转换为Markdown +url: /zh/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何使用 Python 将 HTML 转换为 Markdown + +如果你需要 **从 HTML 创建 Markdown**,本简短指南将展示如何使用 Python 完成此操作。你将看到一个清晰的三步脚本:加载 HTML 文件、配置 Git 风格的 Markdown 输出,并将结果写入磁盘。 + +将网页内容转换为轻量级标记是构建静态站点、文档流水线或数据分析笔记本时的常见任务。在本教程中,我们还会涉及 **将 HTML 转换为 markdown** 的可选格式化、回答 **如何高效地将 HTML 转换** 的问题,并演示使用流行的 `groupdocs-conversion` 库进行 **export HTML to markdown** 工作流。 + +## 前置条件 + +在开始之前,请确保你已经: + +* 安装了 Python 3.8 或更高版本。 +* 安装了 `groupdocs-conversion` 包(或任何提供 `HTMLDocument`、`MarkdownSaveOptions` 和 `Converter` 的库)。使用以下命令安装: + +```bash +pip install groupdocs-conversion +``` + +* 准备好要转换的 HTML 文件,例如位于你可控文件夹中的 `sample.html`。 + +无需额外的系统依赖,代码可在 Windows、macOS 和 Linux 上运行。 + +## 步骤 1:加载源 HTML 文档 + +首先创建一个表示源文件的 `HTMLDocument` 对象。 + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**为什么重要:** `HTMLDocument` 会解析文件、解析相对链接,并为转换准备 DOM。如果文件未找到,构造函数会抛出明确的 `FileNotFoundError`,让你能够提前处理缺失的输入。 + +## 步骤 2:配置 Markdown 保存选项(Git‑flavored) + +Markdown 有多种方言。Git‑flavored Markdown(GFM)支持表格、任务列表和围栏代码块,这在 README 文件或 GitHub 页面中经常需要。 + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**为什么重要:** 通过显式选择 `MarkdownFormatter.GIT`,可以确保输出遵循 GitHub 渲染的相同规则,避免在仓库中显示 Markdown 时出现意外。如果你更倾向于普通 Markdown,只需将 `MarkdownFormatter.GIT` 替换为 `MarkdownFormatter.DEFAULT`。 + +## 步骤 3:将 HTML 文档转换为 Markdown 文件 + +现在调用转换引擎并将结果写入目标路径。 + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**为什么重要:** `Converter.convert` 负责繁重的工作——将 HTML 标签翻译为对应的 Markdown、在需要时复制图片到输出文件夹、并应用你选择的格式化器。该方法成功时返回 `None`,但你可以捕获 `ConversionException` 以获取详细的错误报告。 + +### 预期输出 + +运行脚本后,`sample.md` 将包含类似以下内容: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +具体的 Markdown 会反映 `sample.html` 的结构。表格、图片和代码块将按照 GFM 规则进行转换。 + +## 常见变体和边缘情况 + +| 情况 | 推荐的调整 | +|-----------|-------------------| +| **大型 HTML 文件 (>10 MB)** | 增加 Python 递归限制,或在库支持的情况下使用 `HTMLDocument.open_stream()` 流式读取输入。 | +| **使用绝对 URL 引用的图片** | 将 `md_options.embed_images = True` 设置为将图片嵌入为 base‑64 数据 URI,或保持为链接以获得更轻的输出。 | +| **需要普通 Markdown 而非 GFM** | 将 `md_options.formatter = MarkdownFormatter.DEFAULT`。 | +| **需要忽略自定义 CSS 类** | 使用 `md_options.ignore_css_classes = ["unwanted-class"]`。 | +| **在 CI/CD 流水线中运行** | 将脚本包装在 `try/except` 块中,并在失败时以非零状态退出,以便流水线快速失败。 | + +### 专业提示 + +如果你计划批量转换多个文件,复用同一个 `MarkdownSaveOptions` 实例,并仅在循环内部更改输入/输出路径。这样可以减少对象创建开销,将处理速度提升约 15 %。 + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## 在其他语言中将 HTML 转换为 Markdown(快速说明) + +虽然本教程侧重于 **html to markdown python**,但相同的概念同样适用于 Java、C# 或 JavaScript SDK:创建文档对象、配置 Markdown 格式化器,然后调用转换器。如果你需要在非 Python 环境中 **export HTML to markdown**,请寻找对应语言 SDK 中的 `HtmlDocument`、`MarkdownSaveOptions` 和 `Converter` 类。 + +## 结论 + +现在你已经掌握了使用简洁的 Python 脚本 **从 HTML 创建 markdown** 的方法。三步流程——加载 HTML、设置 Git‑flavored 选项、执行转换——涵盖了任何 **convert html to markdown** 工作流的核心。接下来你可以: + +* 将脚本集成到静态站点生成器中。 +* 在 CI 流水线中自动化文档更新。 +* 使用自定义后处理(例如链接重写或标题调整)扩展转换功能。 + +随意尝试次要选项——不同格式化器下的 **how to convert html**,或针对图片和表格的 **export html to markdown** 设置。祝你转换愉快! + +## 接下来该学习什么? + +以下教程涵盖与本指南技术紧密相关的主题,帮助你在项目中进一步使用 API 功能并探索替代实现方式,每篇资源均提供完整可运行的代码示例和逐步解释。 + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/chinese/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..9a6850150 --- /dev/null +++ b/html/chinese/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-08-22 +description: 使用 Python 在几分钟内将 SVG 转换为 PDF。学习如何将 SVG 转为 PDF、将 SVG 保存为 PDF,并使用可靠的 SVG + 转 PDF 转换器。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: zh +lastmod: 2026-08-22 +og_description: 使用 Python 快速将 SVG 创建为 PDF。本指南展示了如何将 SVG 转换为 PDF、使用 SVG 转 PDF 转换器,以及在单个脚本中将 + SVG 保存为 PDF。 +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: 在 Python 中将 SVG 转换为 PDF – 步骤教程 +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: 如何在 Python 中从 SVG 创建 PDF – 完整指南 +url: /zh/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 Python 中从 SVG 创建 PDF – 完整指南 + +如果您需要快速 **create PDF from SVG**,本教程将准确展示操作步骤。我们将演示如何使用流行的 SVG‑to‑PDF 转换器将 SVG 文件转换为 PDF,以便在报告、发票或电子书中嵌入矢量图形,而无需离开 Python 代码。 + +您将学习如何 **convert SVG to PDF**、管理缩放、保留字体,最终使用单个可复现的脚本 **save SVG as PDF**。无需外部命令行工具——只需几行 Python 代码和 Aspose.SVG for Python 库。 + +## 前置条件 + +| 需求 | 原因 | +|-------------|--------| +| Python 3.8+ | 该库面向现代 Python 运行时。 | +| `aspose.svg` package | 提供 `SVGDocument`、`PdfSaveOptions` 和 `Converter`。使用 `pip install aspose-svg` 安装。 | +| An SVG file (`vector.svg`) | SVG 文件 (`vector.svg`) 您想要转换的源矢量图形。 | +| Write permission to the output folder | 对输出文件夹的写入权限,用于 **save SVG as PDF** 所必需的。 | + +您可以使用以下方式安装库: + +```bash +pip install aspose-svg +``` + +> **专业提示:** 使用虚拟环境(`python -m venv venv`)以保持依赖隔离。 + +## 转换过程概述 + +The conversion consists of three simple steps: + +1. 从磁盘加载 **SVG document**。 +2. 创建 **PDF save options**(您可以自定义页面大小、DPI 等)。 +3. 调用 **converter** 生成 PDF 文件。 + +以下章节将逐步拆解每一步,解释代码为何如此编写,并展示完整可运行的脚本。 + +## 使用 Aspose.SVG for Python 从 SVG 创建 PDF + +此 H2 标题包含主要关键词 **create pdf from svg**, 满足 SEO 要求。 + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### 为什么这样可行 + +* **`SVGDocument`** 解析 SVG XML 并构建转换器可渲染的内存表示。 +* **`PdfSaveOptions`** 允许您微调 PDF 输出(页面大小、压缩、DPI)。默认设置已能生成忠实的 PDF,这也是示例开箱即用的原因。 +* **`Converter.convert`** 执行核心工作:它将矢量数据栅格化到 PDF 页面,同时保留矢量精度,使生成的 PDF 在任何缩放级别下都保持清晰。 + +## 使用自定义页面大小将 SVG 转换为 PDF + +如果您需要特定的页面大小——例如用于可打印报告的 A4——请调整 `PdfSaveOptions`: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **边缘情况:** 某些 SVG 定义的 `viewBox` 与期望的 PDF 尺寸不匹配。覆盖 `page_width`/`page_height` 可确保 PDF 符合您的布局预期。 + +## 在保留字体的情况下将 SVG 保存为 PDF + +当您的 SVG 引用外部字体时,请确保转换器能够访问这些字体。将 `.ttf` 文件放在与 SVG 相同的目录下,或指定自定义字体文件夹: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +转换器会将字体直接嵌入 PDF,确保 **svg file to pdf** 转换在任何机器上都保持一致。 + +## 批量转换:svg file to pdf 多文件处理 + +通常您会有一个包含大量 SVG 资源的文件夹。以下循环演示了高效的 **svg to pdf converter**,可处理目录中的每个 `.svg` 文件: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +此代码片段展示了实用的 **convert svg to pdf** 工作流,可集成到 CI 流水线或自动化报告生成器中。 + +## 验证输出 + +运行脚本后,使用任意查看器(Adobe Reader、Chrome 或 Preview)打开生成的 PDF。您应看到: + +* 在任何缩放级别下,矢量形状都渲染得非常锐利。 +* 文本与 SVG 源保持一致,如果您提供了字体,则已嵌入。 +* 没有栅格化伪影——因为转换保留了原始矢量数据。 + +如果发现缺少字体,请再次确认字体文件可访问,并且 SVG 正确引用它们(`font-family` 属性)。 + +## 常见陷阱及避免方法 + +| 症状 | 可能原因 | 解决方案 | +|---------|--------------|-----| +| 空白 PDF 页面 | SVG 的外部资源(图像、字体)未找到 | 提供 `fonts_folder` 并确保链接的图像位于同一目录,或使用绝对 URL。 | +| 文本显示为轮廓 | 字体未嵌入 | 设置 `pdf_options.embed_fonts = True`(默认)并确认字体文件存在。 | +| PDF 大小超出预期 | DPI 过高或图像未压缩 | 降低 `pdf_options.dpi` 或启用压缩:`pdf_options.compress = True`。 | +| SVG 尺寸被裁剪 | `viewBox` 大于 PDF 页面 | 调整 `pdf_options.page_width`/`page_height` 或通过 `svg_doc.set_viewport` 缩放 SVG。 | + +## 完整端到端示例 + +以下是一个独立脚本,包含错误处理、日志记录和可选的命令行参数。将其保存为 `svg_to_pdf.py` 并运行 `python svg_to_pdf.py`。 + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +运行脚本会执行 **save SVG as PDF** 操作,您可以将其嵌入更大的自动化流水线中。 + +### 预期控制台输出 + + + +## 接下来您应该学习什么? + +以下教程涵盖与本指南紧密相关的主题,基于所示技术进行扩展。每个资源都包含完整的可运行代码示例和逐步说明,帮助您掌握更多 API 功能并在项目中探索替代实现方案。 + +- [Convert SVG to PDF in .NET with Aspose.HTML](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg to pdf java – Generate PDF from SVG with Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [Convierte SVG a PDF en .NET con Aspose.HTML](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/chinese/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..786929d61 --- /dev/null +++ b/html/chinese/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,222 @@ +--- +category: general +date: 2026-08-22 +description: 如何在 Python 中启用大规模 HTML 转 PDF 的流式处理,以降低内存使用并加快输出生成。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: zh +lastmod: 2026-08-22 +og_description: 如何在 Python 中为大规模 HTML 转 PDF 转换启用流式处理,以降低内存使用并加快输出生成。 +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: 在 Python 中为 HTML 转 PDF 转换启用流式处理 +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: 如何在 Python 中将 HTML 转换为 PDF 时启用流式传输 +url: /zh/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 Python 中将 HTML 转换为 PDF 时如何启用流式处理 + +如果您需要在大型 HTML‑to‑PDF 转换过程中 **如何启用流式处理**,本指南将向您展示具体步骤。通过启用流式处理,您可以避免将整个文档加载到内存中,这在将 HTML 转 PDF 处理大文件时至关重要。 + +您将学习如何启用流式处理、使用 Python 将 HTML 转换为 PDF,并处理诸如大型 HTML 转 PDF 任务等边缘情况。该解决方案适用于流行的 `groupdocs-conversion`(或类似)库,但其概念适用于任何支持流式处理的转换器。 + +![Diagram showing streaming conversion from HTML to PDF using Python](streaming-diagram.png) + +## 您需要的条件 + +- Python 3.9 或更高版本 +- `groupdocs-conversion`(或任何提供带有流式标志的 `PdfSaveOptions` 的库) +- 您想要转换为 PDF 的 HTML 文件(示例使用名为 `large.html` 的大文件) + +拥有这些前提条件可确保代码在无需额外配置的情况下运行。 + +## 步骤 1:安装转换库 + +首先,安装提供 `HTMLDocument`、`PdfSaveOptions` 和 `Converter` 的 Python 包。最常见的选择是 **GroupDocs.Conversion** SDK: + +```bash +pip install groupdocs-conversion +``` + +> **专业提示:** 使用虚拟环境(`python -m venv .venv`)来保持依赖隔离。 + +## 步骤 2:加载要转换的 HTML 文档 + +加载源 HTML 非常简单。`HTMLDocument` 类从磁盘读取文件并为转换做好准备。 + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +`HTMLDocument` 对象表示整个 HTML 标记,包括图像和 CSS 等外部资源。这是任何 **convert html to pdf** 操作的起点。 + +## 步骤 3:创建 PDF 保存选项并启用流式处理 + +启用流式处理是 **如何启用流式处理** 的核心。转换器不再将整个 PDF 缓存在内存中,而是直接将块写入输出文件。 + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +当 `enable_streaming` 设置为 `True` 时,库会使用写入直通的方式,显著降低 RAM 消耗——这对 **large html to pdf** 场景至关重要。 + +## 步骤 4:使用配置好的选项将 HTML 文档转换为 PDF + +现在调用转换。`Converter.convert` 方法接受源文档、选项对象和目标路径。 + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +此调用完成后,`large.pdf` 包含已渲染的 PDF,生成过程是边流式写入磁盘。整个过程通常比非流式转换更快,因为操作系统可以逐步将数据刷新到文件系统。 + +### 预期输出 + +运行脚本会生成一个 PDF 文件,其大小与原始 HTML 内容相匹配。您可以使用任何 PDF 查看器验证结果: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## 为什么流式处理对大型 HTML 转 PDF 转换很重要 + +当您在没有流式处理的情况下 **convert html to pdf** 时,库会先在 RAM 中构建完整的 PDF,然后再写入磁盘。对于普通页面这没问题,但 **large html to pdf** 任务(例如包含大量图像的 10 MB HTML 报告)可能会超出典型无服务器函数或低内存容器的内存限制。 + +启用流式处理可以解决三个问题: + +1. **内存效率** – 只在 RAM 中保留一个小缓冲区。 +2. **更快的感知性能** – 文件在仍在生成时就已经出现在磁盘上,允许下游进程更早开始读取。 +3. **可扩展性** – 您可以并行运行多个转换,而不会耗尽主机内存。 + +## 常见陷阱及避免方法 + +| 症状 | 可能原因 | 解决方案 | +|---------|--------------|-----| +| 转换期间出现 `MemoryError` | 未设置流式标志或库版本过旧 | 确保 `pdf_opts.enable_streaming = True` 并升级到最新 SDK(`pip install --upgrade groupdocs-conversion`)。 | +| PDF 中缺少图像 | 相对图像路径无法解析 | 将基目录传递给 `HTMLDocument` 或将图像嵌入为 base64。 | +| 输出的 PDF 为空白 | 未找到或无法读取 HTML 文件 | 验证路径 `"YOUR_DIRECTORY/large.html"` 并检查文件权限。 | +| 转换无限挂起 | 大型外部资源(字体、CSS)阻塞渲染 | 预先下载外部资产或使用无头浏览器将其内联。 | + +### 边缘情况:从字符串转换 HTML + +如果您的 HTML 内容位于内存中而不是文件中,仍然可以通过将字符串包装在接受原始 HTML 的 `HTMLDocument` 构造函数中来 **如何启用流式处理**: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +## 完整脚本,复制粘贴即可 + +下面是一个完整的、可直接运行的示例,包含了所有讨论的步骤。将 `YOUR_DIRECTORY` 替换为您机器上的实际路径。 + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +运行 `python full_example.py` 将使用流式方法生成 `large.pdf`。 + +## 回顾 + +- 您现在了解了在 Python 中进行 HTML‑to‑PDF 转换的 **如何启用流式处理**。 +- 该脚本演示了完整的 **convert html to pdf** 工作流,高效处理 **large html to pdf** 任务。 +- 通过将 `PdfSaveOptions.enable_streaming = True`,转换器会逐步写入输出,这是 **stream html to pdf** 的推荐方式。 + +## 接下来可以探索的内容 + +- 支持 CSS3 和 JavaScript 的 **HTML to PDF Python** 库(例如 `WeasyPrint`、`pdfkit`)。 +- 通过额外的 `PdfSaveOptions` 设置为生成的 PDF 添加密码保护或加密。 +- 在队列系统(Celery、RabbitMQ)中并行化多个转换,同时保持低内存使用。 + +随意尝试不同的 HTML 源、页面尺寸和 PDF 元数据。流式处理使得在不牺牲性能的情况下处理更大的文档成为可能。祝编码愉快! + +## 接下来应该学习什么? + +以下教程涵盖与本指南演示的技术密切相关的主题。每个资源都包含完整的可运行代码示例和逐步说明,帮助您掌握更多 API 功能并在项目中探索替代实现方法。 + +- [如何使用 Aspose.HTML for Java 将 HTML 转换为 PDF(Java)](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [为并行 HTML 转 PDF 转换创建固定线程池](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [如何在 Aspose HTML 中启用 JavaScript – 加载 HTML 并获取文本](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/chinese/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..0b8859e20 --- /dev/null +++ b/html/chinese/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-08-22 +description: 如何从HTML导出链接并转换为Markdown文件,包括段落。HTML转Markdown的分步指南。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: zh +lastmod: 2026-08-22 +og_description: 如何从HTML文档中导出链接并转换为Markdown文件,包括段落。请遵循本完整教程,实现可靠的HTML到Markdown转换。 +og_image_alt: How to export links while converting HTML to Markdown +og_title: 在将HTML转换为Markdown时如何导出链接——分步指南 +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: 在将HTML转换为Markdown时如何导出链接 +url: /zh/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在将 HTML 转换为 Markdown 时导出链接 + +如果您需要 **how to export links** 从 HTML 页面并将结果转换为干净的 **html to markdown file**,本指南向您展示具体步骤。您还将发现 **how to extract paragraphs**,以便 markdown 输出包含您关心的主要内容。教程结束时,您可以使用即用即跑的脚本回答 “**how to convert html** to markdown” 这一问题。 + +在将网页内容迁移到静态站点、文档门户或无头 CMS 后端时,导出链接和提取段落是常见任务。下面的方法适用于 GroupDocs Conversion SDK for Python,但其概念同样适用于任何允许配置导出功能的库。 + +--- + +## 您需要的环境 + +- Python 3.9 或更高版本 +- `groupdocs-conversion` 包(使用 `pip install groupdocs-conversion` 安装) +- 您想要处理的 HTML 文件(例如 `input.html`) +- 对 Python 脚本有基本了解 + +--- + +## 使用 HTML 转 Markdown 转换导出链接的方法 + +第一步是配置转换,使得仅将所需的特性——链接和段落——写入 **html to markdown file**。SDK 允许您设置 `MarkdownFeature` 值的位掩码;我们将 `LINKS` 和 `PARAGRAPHS` 组合,以保持输出的聚焦。 + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### 为什么这样有效 + +- **`HTMLDocument`** 解析原始文件并构建一个转换器可以遍历的 DOM。 +- **`MarkdownSaveOptions`** 为您提供对 SDK 写入内容的细粒度控制。将 `features` 设置为 `LINKS | PARAGRAPHS` 告诉引擎忽略图片、表格或脚本,从而降低最终 **html to markdown file** 中的噪声。 +- **`Converter.convert`** 执行繁重的转换工作。它遵循特性掩码,提取锚点标签(``)和段落标签(`

`),并使用标准的 Markdown 语法写入。 + +--- + +## 将 HTML 完全转换为 Markdown(可选) + +如果您之后决定需要整个页面——而不仅是链接和段落——只需调整特性掩码: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +现在运行相同的转换会生成完整的 **html to markdown file**,其布局与原始页面相匹配。这展示了以灵活方式 **how to convert html**:您可以通过切换特性标志来控制输出。 + +--- + +## 仅提取段落 + +有时您只关心文章的文本内容,而不是超链接。您可以通过将掩码仅设置为 `PARAGRAPHS` 来单独提取段落: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +生成的 markdown 将包含干净、换行的文本,不含任何链接标记。此代码片段回答了 **how to extract paragraphs** 从 HTML 源中提取段落的问题。 + +--- + +## 常见陷阱及规避方法 + +| Issue | Why it happens | Fix | +|-------|----------------|-----| +| Empty output file | 源 HTML 中没有匹配所选特性的 `` 或 `

` 标签。 | 检查 HTML 结构或扩大特性掩码(例如,包含 `HEADINGS`)。 | +| Encoding problems | HTML 使用非 UTF‑8 编码,导致 SDK 读取错误。 | 为 `HTMLDocument` 传递显式编码,例如 `HTMLDocument(path, encoding="iso-8859-1")`。 | +| Over‑writing existing markdown | 多次运行脚本会覆盖之前的文件。 | 为输出文件名添加时间戳,或在写入前检查 `os.path.exists`。 | + +**Pro tip:** 在处理文件夹中的大量文件时,将转换逻辑包装在循环中并记录每个结果。这能为您提供清晰的审计轨迹,并在失败后轻松恢复。 + +--- + +## 完整脚本,复制粘贴即可使用 + +下面是一个独立的 Python 文件(`convert_links_paragraphs.py`),您可以直接运行。它包含参数解析,您可以在不修改代码的情况下指定输入和输出路径。 + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**如何运行** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +上述命令演示了在一次调用中 **how to export links** 和 **how to extract paragraphs**。省略 `--links` 或 `--paragraphs` 可根据需求定制输出。 + +--- + +## 验证 – 输出示例 + +给定以下简单的 HTML(`input.html`): + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +使用两个标志运行脚本会生成 `links_and_paragraphs.md`: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +您可以看到仅包含两个段落和超链接——正是您在搜索 **how to export links** 并执行 **convert html to markdown** 时所期望的结果。 + +--- + +## 后续步骤及相关主题 + +- **How to convert html to markdown**(包含图片):在掩码中添加 `MarkdownFeature.IMAGES`。 +- **How to extract paragraphs** 并随后进行后处理 + +## 接下来该学习什么? + +以下教程涵盖与本指南紧密相关的主题,基于所示技术进行扩展。每个资源都包含完整的可运行代码示例和逐步说明,帮助您掌握更多 API 功能并在项目中探索替代实现方案。 + +- [How to Set Offset When Converting HTML to Markdown in Java](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown to HTML Java - Convert with Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [Convert HTML to Markdown – Complete C# Guide](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/chinese/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..2d74c0b4b --- /dev/null +++ b/html/chinese/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,278 @@ +--- +category: general +date: 2026-08-22 +description: 如何在 Python 中使用 Aspose.HTML 加载 HTML —— 限制资源深度并使文档准备好进行转换或编辑。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: zh +lastmod: 2026-08-22 +og_description: 如何在 Python 中使用 Aspose.HTML 加载 HTML,设置资源处理深度,并准备文档进行转换或编辑。 +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: 如何使用 Aspose.HTML 加载 HTML – Python 指南 +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: 如何在 Python 中使用 Aspose.HTML 加载 HTML +url: /zh/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 Python 中使用 Aspose.HTML 加载 HTML + +如果您需要在 Python 项目中快速且安全地 **加载 HTML**,本指南将向您展示完整步骤。阅读前两句话后,您将了解如何配置资源处理、加载文件,并为后续的 **HTML 转换** 或编辑做好准备。 + +加载大型或复杂页面时,外部资源(图片、脚本、CSS)可能导致深度递归或网络延迟,从而让普通解析器失效。本教程介绍一种稳健的模式,使用 **Aspose.HTML for Python**,演示 **HTMLDocument 类**,并解释为何设置 **max_handling_depth** 很重要。 + +您将学习: + +* 安装 Aspose.HTML 包 +* 创建 `ResourceHandlingOptions` 实例并限制深度 +* 使用 `HTMLDocument` 类加载页面 +* 为转换为 PDF、PNG 或进一步操作做好准备 + +无需任何 Aspose.HTML 经验,只需具备基础的 Python 知识。 + +--- + +## 如何在 Python 中使用 Aspose.HTML 加载 HTML + +解决方案的核心是一个三步模式,将 **ResourceHandlingOptions** 与 **HTMLDocument 类** 结合。限制处理深度可防止页面引用大量嵌套资源时出现无限网络请求。 + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### 为什么这样可行 + +* **`ResourceHandlingOptions`** 告诉解析器可以跟随多少层外部资源。将 `max_handling_depth = 3` 设置为在三次跳转后停止加载,这对大多数站点足够,同时防止无限循环。 +* **`HTMLDocument`** 读取文件,应用这些选项,并构建可查询、修改或渲染的内存 DOM。 +* 可选的转换代码片段演示了加载的文档如何与 **HTML 转换** 功能结合,例如保存为 PDF。 + +--- + +## 理解 ResourceHandlingOptions + +`ResourceHandlingOptions` 是 **Aspose.HTML for Python** 的一部分,提供对网络活动的细粒度控制。 + +| 属性 | 用途 | 典型值 | +|--------------------------|-----------------------------------------------------|-----------------| +| `max_handling_depth` | 链接资源的最大递归深度 | `3`(默认) | +| `allow_external_resources` | 是否下载外部 CSS、JS、图片 | `True` | +| `timeout` | 每个请求的网络超时时间(秒) | `30` | + +**实用技巧:** 如果您知道目标页面仅引用本地资源,可将 `allow_external_resources = False` 以加快加载速度并避免不必要的 HTTP 调用。 + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## 使用 HTMLDocument 类 + +**HTMLDocument 类** 是所有 Aspose.HTML 操作的入口点。实例化后,您可以: + +* 通过 `doc.root` 访问 DOM +* 使用 CSS 选择器查询元素(`doc.query_selector_all("img")`) +* 将页面渲染为光栅格式(`doc.save("page.png")`) +* 保存为 PDF(`doc.save("page.pdf", PDFSaveOptions())`) + +下面的简短代码片段演示了加载后提取所有图片 `src` 属性的方式: + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**为何需要这样做:** 在进行 **HTML 转换** 时,通常需要在渲染为其他格式前调整或替换图片 URL。直接操作 DOM 能提供这种灵活性。 + +--- + +## 加载 HTML 后的后续步骤 + +文档已在内存中后,您可以选择以下常见工作流: + +1. **转换为 PDF** – 适用于归档或打印。 +2. **渲染为 PNG/JPEG** – 用于缩略图或视觉预览。 +3. **编辑 DOM** – 在保存前插入、删除或修改元素。 +4. **提取文本** – 获取纯文本内容以便索引或分析。 + +### 示例:使用自定义页面尺寸转换为 PDF + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**预期输出:** 工作目录中会出现名为 `big_page.pdf` 的文件,包含已渲染的 HTML 以及所有允许的资源。如果将 `max_handling_depth` 设置为 3,则仅嵌入深度不超过三层的资源,从而保持 PDF 大小在合理范围。 + +--- + +## 常见陷阱及规避方法 + +| 症状 | 原因 | 解决方案 | +|--------------------------------------|-----------------------------------------------|----------| +| 渲染的 PDF 中缺少图片 | `allow_external_resources` 被设为 `False` | 启用外部资源或本地嵌入图片 | +| 加载时出现 `TimeoutError` | 网络延迟超过 `timeout` | 增大 `rh_opts.timeout` 或预先下载资产 | +| CSS 样式异常 | 受深度限制未加载关联的样式表 | 提升 `max_handling_depth` 或手动添加所需 CSS | +| 非 UTF‑8 文件出现 `UnicodeDecodeError` | HTML 使用了其他编码 | 创建 `HTMLDocument` 时传入 `encoding="windows-1252"` | + +--- + +## 完整、可运行的示例 + +下面是一个可直接复制到名为 `load_html_demo.py` 的文件中的完整脚本。它包含安装说明、错误处理以及最终验证步骤。 + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +### 运行脚本 + +```bash +python load_html_demo.py +``` + +您应在控制台看到加载成功、图片 URL 列表以及 PDF 转换成功的提示信息。生成的 `big_page.pdf` 将反映受配置的 **max_handling_depth** 限制的 HTML 内容。 + +--- + +## 结论 + +本教程介绍了如何使用 **Aspose.HTML for Python** **加载 HTML**,并通过配置 **ResourceHandlingOptions** 控制 `max_handling_depth`,演示了加载后常见的图像提取和 PDF 转换等实用操作。按照这些步骤,您现在拥有一个可靠的基础,可用于任何 **HTML 转换** 工作流,无论是构建网页爬虫、文档归档服务,还是动态报告生成器。 + +**后续步骤** + +* 尝试不同的 `max_handling_depth` 值,以在完整性与性能之间取得平衡。 +* 试着将文档转换为 + +## 接下来应该学习什么? + +以下教程涵盖了与本指南技术紧密相关的主题,帮助您进一步掌握 API 功能并在项目中探索替代实现方式,每篇资源均提供完整可运行的代码示例和逐步解释。 + +- [如何在 Java 中解析 HTML – 加载、查询和计数元素](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [如何在 Aspose.HTML for Java 中编辑 HTML 文档树](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [在 Aspose.HTML for Java 中处理文档加载事件](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/czech/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..5cbfdc413 --- /dev/null +++ b/html/czech/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-08-22 +description: Jak převést HTML na PDF v Pythonu pomocí Aspose.HTML – naučte se vytvořit + PDF ze souboru HTML, generovat PDF z HTML kódu a rychle uložit HTML jako PDF v Pythonu. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: cs +lastmod: 2026-08-22 +og_description: Jak převést HTML na PDF v Pythonu pomocí Aspose.HTML. Tento tutoriál + vám ukáže, jak vytvořit PDF z HTML souboru, generovat PDF z HTML kódu a uložit HTML + jako PDF v Pythonu. +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: Jak převést HTML na PDF v Pythonu – krok za krokem průvodce +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: Jak převést HTML na PDF v Pythonu pomocí Aspose.HTML +url: /cs/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak převést HTML na PDF v Pythonu s Aspose.HTML + +Pokud potřebujete **how to convert html to pdf** rychle, tento průvodce vám ukáže kompletní, připravené řešení. Uvidíte, jak **create pdf from html file**, **generate pdf from html code**, a **save html as pdf python** pomocí jednoduchého API Aspose.HTML. + +Provedeme vás každým krokem, vysvětlíme, proč je každý řádek důležitý, a podíváme se na běžné úskalí, abyste mohli kód přizpůsobit libovolnému projektu. Žádné externí nástroje, jen několik řádků Pythonu. + +## Požadavky + +Než začnete, ujistěte se, že máte: + +* Python 3.8 nebo novější nainstalovaný. +* Aktivní licenci Aspose.HTML for Python (nebo bezplatný evaluační klíč). +* Nainstalovaný balíček `aspose.html`: + +```bash +pip install aspose-html +``` + +Mít tyto komponenty zajišťuje, že konverze proběhne bez runtime chyb. + +## Krok 1: Načtení HTML dokumentu (create pdf from html file) + +Prvním úkolem je načíst zdrojové HTML. Aspose.HTML představuje dokument pomocí třídy `HTMLDocument`, která abstrahuje souborové I/O, načítání ze sítě a parsování DOM. + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*Proč je to důležité:* +`HTMLDocument` načte HTML, vyřeší relativní zdroje (obrázky, CSS, fonty) a vytvoří DOM, který konvertor může přesně vykreslit. Vynechání tohoto kroku nebo použití prostého řetězce by vedlo ke ztrátě těchto řešení zdrojů. + +## Krok 2: Nastavení možností uložení PDF (save html as pdf python) + +Aspose.HTML vám umožňuje jemně doladit výstup PDF pomocí `PdfSaveOptions`. Výchozí konfigurace již vytváří PDF vysoké kvality, ale můžete upravit velikost stránky, kompresi nebo metadata podle potřeby. + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*Proč je to důležité:* +I když ponecháte výchozí hodnoty, vytvoření objektu s možnostmi dělá kód rozšiřitelným. Budoucí změny – například vložení hesla do PDF – lze přidat bez přestrukturalizování skriptu. + +## Krok 3: Provedení konverze (convert html to pdf python) + +Metoda `Converter.convert` spojuje HTML dokument a PDF možnosti a zapisuje výsledek do zadané cesty souboru. + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*Proč je to důležité:* +`Converter.convert` spustí renderovací engine, který rasterizuje HTML/CSS do PDF vektorů. Automaticky zvládá složité rozvržení, vložené fonty a SVG grafiku – něco, co často chybí u ručních knihoven. + +### Očekávaný výstup + +Po spuštění skriptu se ve stejném adresáři vytvoří soubor `sample.pdf`. Otevřete jej v libovolném PDF prohlížeči; měli byste vidět věrnou reprezentaci `sample.html`, včetně stylů, obrázků a zalomení stránek. + +## Běžné varianty a okrajové případy + +| Situace | Jak to řešit | +|-----------|-----------------| +| **HTML je řetězec, ne soubor** | Použijte `HTMLDocument.from_string(html_string)` místo načítání z cesty. | +| **Potřebujete PDF chráněné heslem** | Nastavte `pdf_options.encryption.password = "yourPassword"` před konverzí. | +| **Velké HTML soubory zatěžují paměť** | Aktivujte režim streamování: `pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`. | +| **Chybějící vlastní fonty** | Zaregistrujte složku s fonty: `pdf_options.fonts_folder = "path/to/fonts"`.| + +Tyto varianty ukazují flexibilitu API Aspose.HTML při zachování stejného základního postupu. + +## Kompletní skript (generate pdf from html code) + +Níže je kompletní, spustitelný program, který zahrnuje všechny kroky. Zkopírujte‑vložte, nahraďte `YOUR_DIRECTORY` skutečnou složkou a spusťte. + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +Spusťte jej pomocí: + +```bash +python convert_html_to_pdf.py +``` + +Uvidíte potvrzovací zprávu a PDF se objeví vedle zdrojového HTML. + +## Tipy pro řešení problémů (pro tip) + +* **Chybějící obrázky nebo CSS** – Ujistěte se, že HTML soubor používá absolutní URL nebo že relativní cesty jsou správné vzhledem k `YOUR_DIRECTORY`. +* **Unicode znaky se zobrazují jako čtverečky** – Vložte požadované fonty pomocí `pdf_options.fonts_folder`. +* **Konverze je pomalá** – Vypněte `pdf_options.use_system_fonts = False`, aby se předešlo skenování systémového katalogu fontů. + +## Závěr + +Nyní víte **how to convert html to pdf** v Pythonu s Aspose.HTML, od načtení HTML souboru až po uložení PDF vysoké kvality. Stejný vzor vám umožní **create pdf from html file**, **generate pdf from html code**, a **save html as pdf python** pro jakýkoli automatizační workflow. + +Dále můžete zkusit: + +* Přidání vodoznaků nebo záhlaví/patiček (klíčové slovo: *create pdf from html file*). +* Konverzi živé URL místo lokálního souboru (klíčové slovo: *convert html to pdf python*). +* Integraci konvertoru do Flask nebo Django API pro poskytování PDF na vyžádání. + +Neváhejte experimentovat s možnostmi a přeji hodně úspěchů při generování PDF! + +## Co byste se měli naučit dál? + +Následující tutoriály pokrývají úzce související témata, která staví na technikách předvedených v tomto průvodci. Každý zdroj obsahuje kompletní funkční ukázky kódu s podrobným vysvětlením, aby vám pomohl zvládnout další funkce API a prozkoumat alternativní implementační přístupy ve vašich projektech. + +- [Convert HTML to PDF with Aspose.HTML – Full Manipulation Guide](/html/english/) +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Convert HTML to PDF in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-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/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/czech/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..71f7d50ec --- /dev/null +++ b/html/czech/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-08-22 +description: Naučte se, jak vytvořit markdown z HTML souboru pomocí Pythonu. Tento + krok‑za‑krokem průvodce ukazuje, jak převést HTML na markdown pomocí spolehlivé + knihovny. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: cs +lastmod: 2026-08-22 +og_description: Jak vytvořit markdown z HTML souboru pomocí Pythonu. Postupujte podle + tohoto návodu a rychle převádějte HTML na markdown pomocí osvědčené knihovny. +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: Jak vytvořit markdown z HTML v Pythonu – kompletní průvodce +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: Jak vytvořit markdown z HTML v Pythonu – kompletní průvodce +url: /cs/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak vytvořit markdown z HTML v Pythonu – kompletní průvodce + +Pokud potřebujete vědět **how to create markdown** z existujícího webového obsahu, můžete převést soubor HTML na markdown pomocí několika řádků Pythonu. Tento tutoriál vás provede **convert html to markdown** pomocí specializované **html to markdown library**, která funguje na Windows, macOS a Linuxu. + +Naučíte se, jak nainstalovat knihovnu, načíst HTML dokument, nakonfigurovat možnosti Git‑flavored markdown a zapsat výsledek na disk. Na konci průvodce můžete automaticky převést jakýkoli **html file to markdown**, což je užitečné pro generátory statických stránek, dokumentační pipeline nebo projekty migrace obsahu. + +## Požadavky + +* Python 3.8 nebo novější nainstalovaný (zkontrolujte pomocí `python --version`). +* Přístup k terminálu nebo příkazovému řádku. +* HTML soubor, který chcete převést (příklad používá `sample.html`). +* Připojení k internetu pro instalaci požadovaného balíčku. + +Ukázkový kód používá knihovnu **GroupDocs.Conversion for Python**, která poskytuje třídy `HTMLDocument`, `MarkdownSaveOptions` a `Converter`, jak je ukázáno níže. Stejné koncepty platí pro jiné balíčky **html to markdown python**, jako jsou `markdownify` nebo `html2text` — jediný rozdíl jsou importní příkazy. + +## Jak vytvořit markdown – krok 1: nainstalovat html to markdown python knihovnu + +Prvním úkolem je přidat knihovnu pro konverzi do vašeho prostředí. Spusťte následující pip příkaz ve vašem terminálu: + +```bash +pip install groupdocs-conversion +``` + +> **Tip:** Použijte virtuální prostředí (`python -m venv .venv`), aby byly závislosti izolovány od vaší globální instalace Pythonu. + +Instalace balíčku vám poskytne přístup ke třídám `HTMLDocument`, `MarkdownSaveOptions` a `Converter`, které jsou potřebné pro proces konverze. + +## Převést html na markdown – krok 2: načíst HTML dokument + +Po instalaci knihovny importujte potřebné třídy a vytvořte instanci `HTMLDocument`, která ukazuje na váš zdrojový soubor. + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +Objekt `HTMLDocument` načte soubor a připraví jej pro konverzi. Pokud soubor neexistuje, konstruktor vyvolá `FileNotFoundError`, takže se ujistěte, že cesta je správná. + +## html soubor na markdown – krok 3: nakonfigurovat možnosti Git‑flavored markdown + +Mnoho projektů upřednostňuje Git‑flavored markdown, protože přidává podporu pro tabulky, úkolové seznamy a syntax pro přeškrtnutí. Knihovna vám umožní povolit tuto předvolbu pomocí vlastnosti `git` v `MarkdownSaveOptions`. + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +Nastavení `git = True` říká konvertoru, aby generoval syntaxi, kterou správně vykreslují GitHub, GitLab a Bitbucket. Pokud potřebujete čistý markdown, nechte příznak `False`. + +## Uložit výstup markdown – krok 4: zapsat výsledek pomocí html to markdown knihovny + +Nakonec zavolejte metodu `Converter.convert`, předáte zdrojový dokument, objekt s možnostmi a cílovou cestu. + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +Po dokončení skriptu `git_flavored.md` obsahuje markdownovou reprezentaci `sample.html`. Soubor můžete otevřít v jakémkoli editoru nebo jej přímo předat generátoru statických stránek. + +### Očekávaný výstup + +Předpokládejme, že `sample.html` obsahuje jednoduchý nadpis a odstavec, vygenerovaný markdown může vypadat takto: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +Pokud původní HTML obsahuje tabulky, seznamy nebo bloky kódu, předvolba Git‑flavored zachová tyto struktury pomocí odpovídající markdownové syntaxe. + +## Porozumění knihovně html to markdown + +Knihovna **GroupDocs.Conversion** abstrahuje podrobnosti parsování a renderování, které byste jinak museli řešit ručně. Poskytuje: + +* Zachovává CSS‑založené styly, kde je to možné (např. tučné, kurzíva). +* Generuje čistý, čitelný markdown bez nadbytečných HTML entit. +* Podporuje dávkovou konverzi, takže můžete iterovat přes adresář HTML souborů stejným kódem. + +Pokud dáváte přednost lehčímu řešení, balíček `markdownify` nabízí API s jednou funkcí: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +Oba přístupy dosahují stejného cíle — **convert html to markdown** — ale možnost GroupDocs poskytuje větší kontrolu nad výstupním formátem a snadno se integruje do větších pipeline pro zpracování dokumentů. + +## Časté úskalí a jak se jim vyhnout + +| Issue | Why it occurs | Fix | +|-------|---------------|-----| +| Chybějící obrázky v markdownu | Konvertor zahrnuje pouze URL obrázků; neembeduje soubory. | Ujistěte se, že soubory obrázků jsou přístupné z umístění markdownu nebo je zkopírujte vedle výstupu. | +| Poškozené relativní odkazy | HTML může používat relativní cesty, které po konverzi přestanou být platné. | Použijte `md_options.base_path` (pokud je k dispozici) k přepsání odkazů, nebo spusťte post‑processing skript pro úpravu cest. | +| Unicode znaky jsou escapovány | Některé knihovny escapují ne‑ASCII znaky. | Nastavte `md_options.encode_utf8 = True` (nebo ekvivalentní příznak), aby znaky zůstaly neporušené. | + +Řešení těchto problémů včas šetří čas, když škálujete konverzi na desítky nebo stovky souborů. + +## Kompletní, spustitelný příklad + +Níže je samostatný skript, který můžete okamžitě zkopírovat, upravit a spustit. Nahraďte `YOUR_DIRECTORY` skutečnou složkou na vašem počítači. + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +Spusťte skript: + +```bash +python markdown_from_html.py +``` + +Měli byste vidět potvrzovací zprávu a nový soubor `git_flavored.md` obsahující markdownovou verzi vašeho HTML. + +## Závěr + +Nyní víte **how to create markdown** ze zdroje HTML pomocí Pythonu. Průvodce pokryl instalaci spolehlivé **html to markdown library**, načtení **html file to markdown**, konfiguraci možností **html to markdown python** a uložení výsledku. S tímto základem můžete automatizovat dokumentační pipeline, migrovat staré webové stránky nebo generovat obsah pro generátory statických stránek. + +**Další kroky** + +* Prozkoumejte dávkovou konverzi iterací přes složku HTML souborů. +* Přizpůsobte `MarkdownSaveOptions` pro kontrolu stylů nadpisů, formátování seznamů nebo zpracování obrázků. +* Kombinujte tento skript s CI/CD workflow, aby vaše markdown dokumentace byla automaticky aktuální. + +Šťastnou konverzi! + +## Co byste se měli naučit dál? + +Následující tutoriály pokrývají úzce související témata, která staví na technikách předvedených v tomto průvodci. Každý zdroj obsahuje kompletní funkční ukázky kódu s podrobnými vysvětleními, které vám pomohou zvládnout další funkce API a prozkoumat alternativní přístupy k implementaci ve vašich projektech. + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/czech/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..987a5d1dd --- /dev/null +++ b/html/czech/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,185 @@ +--- +category: general +date: 2026-08-22 +description: Naučte se, jak v Pythonu vytvořit markdown z HTML pomocí jednoduchého + tříkrokového skriptu. Obsahuje možnosti konverze a tipy na export. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: cs +lastmod: 2026-08-22 +og_description: Vytvořte markdown z HTML pomocí Pythonu pouhými třemi řádky. Tento + průvodce ukazuje konverzi, možnosti formátování a jak efektivně exportovat HTML + do markdownu. +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: Vytvořte markdown z HTML v Pythonu – průvodce krok za krokem +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: Jak vytvořit markdown z HTML pomocí Pythonu +url: /cs/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak vytvořit markdown z HTML pomocí Pythonu + +Pokud potřebujete **vytvořit markdown z HTML**, tento stručný návod ukazuje přesně, jak to provést pomocí Pythonu. Uvidíte přehledný tříkrokový skript, který načte HTML soubor, nastaví výstup Git‑flavored Markdown a zapíše výsledek na disk. + +Převod webového obsahu na lehký značkovací jazyk je běžný úkol při tvorbě statických webů, dokumentačních pipeline nebo notebooků pro analýzu dat. V tomto tutoriálu se také dotkneme toho, jak **převést HTML na markdown** s volitelným formátováním, odpovíme na otázku **jak efektivně převést HTML**, a ukážeme workflow **export HTML to markdown** pomocí populární knihovny `groupdocs-conversion`. + +## Požadavky + +* Nainstalovaný Python 3.8 nebo novější. +* Balíček `groupdocs-conversion` (nebo jakákoli knihovna, která poskytuje `HTMLDocument`, `MarkdownSaveOptions` a `Converter`). Nainstalujte jej pomocí: + +```bash +pip install groupdocs-conversion +``` + +* HTML soubor, který chcete převést, např. `sample.html` umístěný ve složce, kterou ovládáte. + +Žádné další systémové závislosti nejsou vyžadovány a kód funguje na Windows, macOS i Linuxu. + +## Krok 1: Načtení zdrojového HTML dokumentu + +Prvním krokem je vytvořit objekt `HTMLDocument`, který představuje zdrojový soubor. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**Proč je to důležité:** `HTMLDocument` parsuje soubor, řeší relativní odkazy a připravuje DOM pro konverzi. Pokud soubor nelze najít, konstruktor vyvolá jasnou `FileNotFoundError`, takže můžete chybějící vstupy zachytit včas. + +## Krok 2: Nastavení možností uložení Markdown (Git‑flavored) + +Markdown má několik dialektů. Git‑flavored Markdown (GFM) přidává tabulky, seznamy úkolů a ohraničené bloky kódu, které jsou často vyžadovány pro soubory README nebo stránky na GitHubu. + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**Proč je to důležité:** Výběrem `MarkdownFormatter.GIT` explicitně zajistíte, že výstup bude dodržovat stejné pravidla, která používá GitHub, čímž se vyhnete překvapením při zobrazování markdownu v repozitáři. Pokud dáváte přednost čistému Markdownu, nahraďte `MarkdownFormatter.GIT` za `MarkdownFormatter.DEFAULT`. + +## Krok 3: Převod HTML dokumentu na Markdown soubor + +Nyní zavolejte konverzní engine a zapište výsledek do cílové cesty. + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**Proč je to důležité:** `Converter.convert` provádí těžkou práci — převádí HTML značky na jejich markdown ekvivalenty, zachovává obrázky (kopírováním do výstupní složky, pokud je to potřeba) a aplikuje zvolený formatter. Metoda vrací `None` při úspěchu, ale můžete zachytit `ConversionException` pro podrobné hlášení chyb. + +### Očekávaný výstup + +Po spuštění skriptu bude `sample.md` obsahovat něco jako: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +Přesný markdown odráží strukturu `sample.html`. Tabulky, obrázky a bloky kódu budou převedeny podle pravidel GFM. + +## Běžné varianty a okrajové případy + +| Situace | Doporučená úprava | +|-----------|-------------------| +| **Velké HTML soubory (>10 MB)** | Zvyšte limit rekurze v Pythonu nebo streamujte vstup pomocí `HTMLDocument.open_stream()`, pokud knihovna podporuje. | +| **Obrázky odkazované pomocí absolutních URL** | Nastavte `md_options.embed_images = True` pro vložení obrázků jako base‑64 data URI, nebo je ponechte jako odkazy pro lehčí výstup. | +| **Potřebujete čistý Markdown místo GFM** | Změňte `md_options.formatter = MarkdownFormatter.DEFAULT`. | +| **Vlastní CSS třídy by měly být ignorovány** | Použijte `md_options.ignore_css_classes = ["unwanted-class"]`. | +| **Běh v CI/CD pipeline** | Zabalte skript do bloku `try/except` a při selhání ukončete s nenulovým stavem, aby pipeline selhala rychle. | + +### Profesionální tip + +Pokud plánujete převádět mnoho souborů najednou, znovu použijte jedinou instanci `MarkdownSaveOptions` a měňte pouze vstupní/výstupní cesty uvnitř smyčky. Tím snížíte režii vytváření objektů a proces urychlíte přibližně o ~15 %. + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## Jak převést HTML na markdown v jiných jazycích (rychlá poznámka) + +I když se tento tutoriál zaměřuje na **html to markdown python**, stejné koncepty platí pro SDK v Javě, C# nebo JavaScriptu: vytvořte objekt dokumentu, nastavte markdown formatter a zavolejte konvertor. Pokud někdy potřebujete **export HTML to markdown** z ne‑Python prostředí, hledejte ekvivalentní třídy `HtmlDocument`, `MarkdownSaveOptions` a `Converter` v SDK specifickém pro daný jazyk. + +## Závěr + +Nyní víte, jak **vytvořit markdown z HTML** pomocí stručného Python skriptu. Tříkrokový proces — načíst HTML, nastavit Git‑flavored možnosti a spustit konverzi — pokrývá jádro každého workflow **convert html to markdown**. Odtud můžete: + +* Integrovat skript do generátorů statických webů. +* Automatizovat aktualizace dokumentace v CI pipelinech. +* Rozšířit konverzi o vlastní post‑processing (např. přepisování odkazů nebo úpravy nadpisů). + +Neváhejte experimentovat s doplňkovými možnostmi — **how to convert html** s různými formattery, nebo ladit nastavení **export html to markdown** pro obrázky a tabulky. Šťastný převod! + +## Co byste se měli naučit dál? + +Následující tutoriály pokrývají úzce související témata, která staví na technikách předvedených v tomto průvodci. Každý zdroj obsahuje kompletní funkční příklady kódu s podrobnými vysvětleními, které vám pomohou zvládnout další funkce API a prozkoumat alternativní přístupy k implementaci ve vašich projektech. + +- [Převést HTML na Markdown v Aspose.HTML pro Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Převést HTML na Markdown v .NET s Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Převést markdown na html – Java průvodce s PDF výstupem](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/czech/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..5844d39a5 --- /dev/null +++ b/html/czech/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,280 @@ +--- +category: general +date: 2026-08-22 +description: Vytvořte PDF ze SVG pomocí Pythonu během několika minut. Naučte se převádět + SVG na PDF, uložit SVG jako PDF a používat spolehlivý převodník SVG na PDF. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: cs +lastmod: 2026-08-22 +og_description: Rychle vytvořte PDF ze SVG pomocí Pythonu. Tento průvodce ukazuje, + jak převést SVG na PDF, použít konvertor SVG na PDF a uložit SVG jako PDF v jediném + skriptu. +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: Vytvořte PDF ze SVG v Pythonu – krok za krokem tutoriál +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: Jak vytvořit PDF ze SVG v Pythonu – kompletní průvodce +url: /cs/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak vytvořit PDF ze SVG v Pythonu – kompletní průvodce + +Pokud potřebujete **create PDF from SVG** rychle, tento tutoriál vám přesně ukáže, jak na to. Provedeme vás převodem souboru SVG na PDF pomocí populárního konvertoru SVG‑to‑PDF, abyste mohli vkládat vektorovou grafiku do zpráv, faktur nebo e‑knih, aniž byste opustili svůj Python kód. + +Naučíte se, jak **convert SVG to PDF**, spravovat škálování, zachovat fonty a nakonec **save SVG as PDF** pomocí jediného, reprodukovatelného skriptu. Nepotřebujete žádné externí nástroje příkazové řádky – stačí jen několik řádků Pythonu a knihovna Aspose.SVG for Python. + +## Požadavky + +| Požadavek | Důvod | +|-------------|--------| +| Python 3.8+ | Knihovna cílí na moderní runtime Pythonu. | +| `aspose.svg` package | Poskytuje `SVGDocument`, `PdfSaveOptions` a `Converter`. Nainstalujte pomocí `pip install aspose-svg`. | +| SVG soubor (`vector.svg`) | Zdrojová vektorová grafika, kterou chcete převést. | +| Oprávnění k zápisu do výstupní složky | Potřebné pro **save SVG as PDF**. | + +Knihovnu můžete nainstalovat pomocí: + +```bash +pip install aspose-svg +``` + +> **Pro tip:** Použijte virtuální prostředí (`python -m venv venv`), aby byly závislosti izolované. + +## Přehled procesu konverze + +Konverze se skládá ze tří jednoduchých kroků: + +1. Načtěte **SVG document** z disku. +2. Vytvořte **PDF save options** (můžete přizpůsobit velikost stránky, DPI atd.). +3. Zavolejte **converter**, aby vytvořil PDF soubor. + +Následující sekce rozebírají každý krok, vysvětlují *proč* je kód napsán takto, a ukazují celý, spustitelný skript. + +## Vytvořte PDF ze SVG pomocí Aspose.SVG pro Python + +Tento nadpis H2 obsahuje primární klíčové slovo **create pdf from svg**, což splňuje SEO požadavek. + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### Proč to funguje + +* **`SVGDocument`** parsuje SVG XML a vytváří v‑paměti reprezentaci, kterou může konvertor vykreslit. +* **`PdfSaveOptions`** vám umožňuje doladit výstup PDF (velikost stránky, komprese, DPI). Výchozí nastavení již vytváří věrné PDF, což je důvod, proč příklad funguje ihned. +* **`Converter.convert`** provádí těžkou práci: rasterizuje vektorová data na PDF stránky při zachování vektorové věrnosti, takže výsledné PDF zůstává ostré při libovolném přiblížení. + +## Převod SVG na PDF s vlastní velikostí stránky + +Pokud potřebujete konkrétní velikost stránky — například A4 pro tiskové zprávy — upravte `PdfSaveOptions`: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **Edge case:** Některé SVG definují `viewBox`, který neodpovídá požadovaným rozměrům PDF. Přepsání `page_width`/`page_height` zajistí, že PDF bude odpovídat vašim očekáváním rozvržení. + +## Uložení SVG jako PDF při zachování fontů + +Když váš SVG odkazuje na externí fonty, ujistěte se, že jsou pro konvertor přístupné. Umístěte soubory `.ttf` do stejného adresáře jako SVG nebo specifikujte vlastní složku s fonty: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +Konvertor vloží fonty přímo do PDF, což zaručuje, že převod **svg file to pdf** vypadá na jakémkoli počítači identicky. + +## Hromadná konverze: svg file to pdf pro mnoho souborů + +Často máte složku plnou SVG aktiv. Následující smyčka demonstruje efektivní **svg to pdf converter**, který zpracuje každý `.svg` soubor v adresáři: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +Tento úryvek ilustruje praktický **convert svg to pdf** workflow, který lze integrovat do CI pipeline nebo automatizovaných generátorů zpráv. + +## Ověření výstupu + +Po spuštění skriptu otevřete vygenerované PDF v libovolném prohlížeči (Adobe Reader, Chrome nebo Preview). Měli byste vidět: + +* Vektorové tvary vykreslené ostře při libovolném přiblížení. +* Text, který odpovídá zdroji SVG, s vloženými fonty, pokud jste je poskytli. +* Žádné rasterové artefakty — protože konverze zachovává původní vektorová data. + +Pokud si všimnete chybějících fontů, dvojitě zkontrolujte, že jsou soubory fontů dostupné a že SVG na ně správně odkazuje (`font-family` atribut). + +## Časté problémy a jak se jim vyhnout + +| Příznak | Pravděpodobná příčina | Řešení | +|---------|-----------------------|--------| +| Prázdné stránky PDF | SVG má externí zdroje (obrázky, fonty), které nebyly nalezeny | Poskytněte `fonts_folder` a zajistěte, aby propojené obrázky byly ve stejném adresáři, nebo použijte absolutní URL. | +| Text se zobrazuje jako obrysy | Font není vložen | Nastavte `pdf_options.embed_fonts = True` (výchozí) a ověřte, že soubor fontu je přítomen. | +| PDF je větší, než se očekává | Vysoké DPI nebo nekomprimované obrázky | Snižte `pdf_options.dpi` nebo povolte kompresi: `pdf_options.compress = True`. | +| Rozměry SVG jsou oříznuty | `viewBox` je větší než stránka PDF | Upravte `pdf_options.page_width`/`page_height` nebo změňte měřítko SVG pomocí `svg_doc.set_viewport`. | + +## Kompletní end‑to‑end příklad + +Níže je samostatný skript, který obsahuje ošetření chyb, logování a volitelné argumenty příkazové řádky. Uložte jej jako `svg_to_pdf.py` a spusťte `python svg_to_pdf.py`. + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +Spuštěním skriptu získáte operaci **save SVG as PDF**, kterou můžete vložit do větších automatizačních pipeline. + +### Očekávaný výstup v konzoli + + + +## Co byste se měli naučit dál? + +Následující tutoriály pokrývají úzce související témata, která staví na technikách předvedených v tomto průvodci. Každý zdroj obsahuje kompletní funkční ukázky kódu s krok‑za‑krokem vysvětlením, aby vám pomohl zvládnout další funkce API a prozkoumat alternativní přístupy implementace ve vašich projektech. + +- [Převod SVG na PDF v .NET s Aspose.HTML](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg to pdf java – Generování PDF ze SVG s Aspose.HTML pro Java](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [Convierte SVG a PDF en .NET con Aspose.HTML](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/czech/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..8fbeda2ce --- /dev/null +++ b/html/czech/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-08-22 +description: jak povolit streamování pro konverzi velkého HTML do PDF v Pythonu, snížením + využití paměti a zrychlením generování výstupu +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: cs +lastmod: 2026-08-22 +og_description: jak povolit streamování při konverzi velkého HTML do PDF v Pythonu, + snížením využití paměti a zrychlením generování výstupu +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: Povolit streamování pro konverzi HTML na PDF v Pythonu +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: Jak povolit streamování při převodu HTML na PDF v Pythonu +url: /cs/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak povolit streamování při konverzi HTML na PDF v Pythonu + +Pokud potřebujete **jak povolit streamování** během velké konverze HTML‑na‑PDF, tento průvodce vám ukáže přesné kroky. Povolením streamování se vyhnete načítání celého dokumentu do paměti, což je nezbytné při konverzi HTML na PDF pro velké soubory. + +Naučíte se, jak povolit streamování, konvertovat HTML na PDF pomocí Pythonu a řešit okrajové případy, jako jsou úlohy large HTML to PDF. Řešení funguje s populární knihovnou `groupdocs-conversion` (nebo podobnou), ale koncepty platí pro jakýkoli konvertor podporující streamování. + +![Diagram ukazující streamovací konverzi z HTML na PDF pomocí Pythonu](streaming-diagram.png) + +## Co budete potřebovat + +- Python 3.9 nebo novější +- `groupdocs-conversion` (nebo libovolná knihovna, která nabízí `PdfSaveOptions` s příznakem streamování) +- HTML soubor, který chcete převést na PDF (příklad používá velký soubor pojmenovaný `large.html`) + +Mít tyto předpoklady zajišťuje, že kód poběží bez další konfigurace. + +## Krok 1: Nainstalujte knihovnu pro konverzi + +Nejprve nainstalujte Python balíček, který poskytuje `HTMLDocument`, `PdfSaveOptions` a `Converter`. Nejčastější volbou je SDK **GroupDocs.Conversion**: + +```bash +pip install groupdocs-conversion +``` + +> **Tip:** Použijte virtuální prostředí (`python -m venv .venv`), aby byly závislosti izolované. + +## Krok 2: Načtěte HTML dokument, který chcete převést + +Načtení zdrojového HTML je jednoduché. Třída `HTMLDocument` načte soubor z disku a připraví jej pro konverzi. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +`HTMLDocument` objekt představuje celý HTML markup, včetně externích zdrojů jako jsou obrázky a CSS. Toto je výchozí bod pro jakoukoli operaci **convert html to pdf**. + +## Krok 3: Vytvořte PDF možnosti uložení a povolte streamování + +Povolení streamování je jádrem **how to enable streaming**. Místo bufferování celého PDF v paměti konvertor zapisuje úseky přímo do výstupního souboru. + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +Když je `enable_streaming` nastaveno na `True`, knihovna používá přístup write‑through, který dramaticky snižuje spotřebu RAM — klíčové pro scénáře **large html to pdf**. + +## Krok 4: Převěďte HTML dokument na PDF pomocí nakonfigurovaných možností + +Nyní spusťte konverzi. Metoda `Converter.convert` přijímá zdrojový dokument, objekt možností a cílovou cestu. + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +Po dokončení tohoto volání obsahuje `large.pdf` vygenerované PDF, vytvořené během streamování dat na disk. Celý proces obvykle končí rychleji než konverze bez streamování, protože operační systém může postupně zapisovat data do souborového systému. + +### Očekávaný výstup + +Spuštěním skriptu se vytvoří PDF soubor, jehož velikost odpovídá obsahu původního HTML. Výsledek můžete ověřit libovolným PDF prohlížečem: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## Proč je streamování důležité pro velké konverze HTML na PDF + +Když **convert html to pdf** bez streamování, knihovna nejprve vytvoří celé PDF v RAM před zápisem na disk. Pro středně velkou stránku je to v pořádku, ale úloha **large html to pdf** (např. 10‑MB HTML report s mnoha obrázky) může překročit paměťové limity typických serverless funkcí nebo kontejnerů s nízkou pamětí. + +Povolení streamování řeší tři problémy: + +1. **Efektivita paměti** – v RAM je udržován jen malý buffer. +2. **Rychlejší vnímaný výkon** – soubor se objeví na disku, zatímco je ještě generován, což umožňuje následným procesům začít jej číst dříve. +3. **Škálovatelnost** – můžete spouštět mnoho konverzí paralelně, aniž byste vyčerpali paměť hostitele. + +## Časté úskalí a jak se jim vyhnout + +| Příznak | Pravděpodobná příčina | Oprava | +|---------|-----------------------|--------| +| `MemoryError` during conversion | Streaming flag not set or library version too old | Ensure `pdf_opts.enable_streaming = True` and upgrade to the latest SDK (`pip install --upgrade groupdocs-conversion`). | +| Missing images in the PDF | Relative image paths cannot be resolved | Pass the base directory to `HTMLDocument` or embed images as base64. | +| Output PDF is blank | HTML file not found or unreadable | Verify the path `"YOUR_DIRECTORY/large.html"` and check file permissions. | +| Conversion hangs indefinitely | Large external resources (fonts, CSS) block rendering | Pre‑download external assets or use a headless browser to inline them. | + +### Okrajový případ: Konverze HTML ze řetězce + +Pokud je váš HTML obsah uložen v paměti místo souboru, můžete stále **how to enable streaming** tím, že řetězec zabalíte do konstruktoru `HTMLDocument`, který přijímá surové HTML: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +Chování streamování zůstává stejné, protože SDK zapisuje PDF po částech. + +## Kompletní skript, který můžete zkopírovat a vložit + +Níže je kompletní, připravený k spuštění příklad, který zahrnuje všechny diskutované kroky. Nahraďte `YOUR_DIRECTORY` skutečnou cestou na vašem počítači. + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +Spuštěním `python full_example.py` vygenerujete `large.pdf` pomocí streamovacího přístupu. + +## Shrnutí + +- Nyní víte **how to enable streaming** pro konverzi HTML‑na‑PDF v Pythonu. +- Skript demonstruje kompletní workflow **convert html to pdf**, který efektivně zpracovává **large html to pdf** úlohy. +- Nastavením `PdfSaveOptions.enable_streaming = True` konvertor zapisuje výstup postupně, což je doporučený způsob **stream html to pdf**. + +## Co zkoumat dál + +- Knihovny **HTML to PDF Python**, které podporují CSS3 a JavaScript (např. `WeasyPrint`, `pdfkit`). +- Přidání ochrany heslem nebo šifrování k vygenerovanému PDF pomocí dalších nastavení `PdfSaveOptions`. +- Paralelizace více konverzí v systému front (Celery, RabbitMQ) při zachování nízké spotřeby paměti. + +Neváhejte experimentovat s různými HTML zdroji, velikostmi stránek a PDF metadaty. Streamování umožňuje zpracovat i ještě větší dokumenty bez ztráty výkonu. Šťastné programování! + +## Co byste se měli naučit dál? + +Následující tutoriály pokrývají úzce související témata, která staví na technikách předvedených v tomto průvodci. Každý zdroj obsahuje kompletní funkční ukázky kódu s podrobnými vysvětleními, které vám pomohou zvládnout další funkce API a prozkoumat alternativní přístupy k implementaci ve vašich projektech. + +- [Jak převést HTML na PDF v Javě – Použití Aspose.HTML pro Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Vytvoření pevného thread poolu pro paralelní konverzi HTML na PDF](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [Jak povolit JavaScript v Aspose HTML – Načíst HTML a získat text](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/czech/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..d9ae5a475 --- /dev/null +++ b/html/czech/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,247 @@ +--- +category: general +date: 2026-08-22 +description: Jak exportovat odkazy z HTML a převést je do souboru markdown, včetně + odstavců. Krok za krokem průvodce konverzí HTML na markdown. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: cs +lastmod: 2026-08-22 +og_description: Jak exportovat odkazy z HTML dokumentu a převést je do souboru markdown, + včetně odstavců. Sledujte tento kompletní návod pro spolehlivou konverzi HTML na + markdown. +og_image_alt: How to export links while converting HTML to Markdown +og_title: Jak exportovat odkazy při převodu HTML na Markdown – krok za krokem průvodce +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: Jak exportovat odkazy při převodu HTML na Markdown +url: /cs/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak exportovat odkazy při převodu HTML na Markdown + +Pokud potřebujete **jak exportovat odkazy** z HTML stránky a převést výsledek do čistého **html to markdown souboru**, tento průvodce vám ukáže přesné kroky. Také objevíte **jak extrahovat odstavce**, aby výstup v markdownu obsahoval hlavní obsah, na který vám záleží. Na konci tutoriálu budete schopni odpovědět na otázku “**jak převést html** na markdown” pomocí připraveného skriptu. + +Exportování odkazů a extrahování odstavců jsou běžné úkoly při migraci webového obsahu na statické stránky, dokumentační portály nebo back‑endy headless CMS. Níže uvedený přístup funguje s GroupDocs Conversion SDK pro Python, ale koncepty platí pro libovolnou knihovnu, která umožňuje konfigurovat exportní funkce. + +--- + +## Co budete potřebovat + +- Python 3.9 nebo novější +- balíček `groupdocs-conversion` (nainstalujte pomocí `pip install groupdocs-conversion`) +- HTML soubor, který chcete zpracovat (např. `input.html`) +- Základní znalost skriptování v Pythonu + +--- + +## Jak exportovat odkazy při převodu HTML na Markdown + +Prvním hlavním krokem je nastavení převodu tak, aby byly do **html to markdown souboru** zapsány pouze požadované funkce — odkazy a odstavce. SDK vám umožňuje nastavit bitmasku hodnot `MarkdownFeature`; kombinujeme `LINKS` a `PARAGRAPHS`, aby byl výstup zaměřený. + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### Proč to funguje + +- **`HTMLDocument`** parsuje původní soubor a vytváří DOM, který může konvertor procházet. +- **`MarkdownSaveOptions`** vám poskytuje jemno‑granulární kontrolu nad tím, co SDK zapisuje. Nastavení `features` na `LINKS | PARAGRAPHS` říká enginu, aby ignoroval obrázky, tabulky nebo skripty, což snižuje šum ve finálním **html to markdown souboru**. +- **`Converter.convert`** provádí těžkou práci. Respektuje masku funkcí, extrahuje značky kotvy (``) a odstavcové značky (`

`) a zapisuje je pomocí standardní syntaxe Markdown. + +--- + +## Jak převést HTML na Markdown s kompletním obsahem (volitelné) + +Pokud později zjistíte, že potřebujete celou stránku — nejen odkazy a odstavce — stačí upravit masku funkcí: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +Spuštěním stejného převodu nyní získáte kompletní **html to markdown soubor**, který odráží původní rozložení. To demonstruje **jak převést html** flexibilním způsobem: řídíte výstup přepínáním příznaků funkcí. + +## Jak extrahovat pouze odstavce + +Někdy vás zajímají jen textové těla článku, nikoli hypertextové odkazy. Odstavce můžete izolovat nastavením masky pouze na `PARAGRAPHS`: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +Výsledný markdown bude obsahovat čistý, zalomený text bez jakéhokoli značkování odkazů. Tento úryvek odpovídá na otázku **jak extrahovat odstavce** z HTML zdroje. + +## Časté úskalí a jak se jim vyhnout + +| Problém | Proč se to děje | Řešení | +|-------|----------------|-----| +| Prázdný výstupní soubor | Zdrojové HTML neobsahuje žádné `` ani `

` značky, které odpovídají vybraným funkcím. | Ověřte strukturu HTML nebo rozšiřte masku funkcí (např. zahrňte `HEADINGS`). | +| Problémy s kódováním | HTML používá znakovou sadu, která není UTF‑8, a SDK ji načítá nesprávně. | Předávejte explicitní kódování do `HTMLDocument`, např. `HTMLDocument(path, encoding="iso-8859-1")`. | +| Přepisování existujícího markdownu | Spuštění skriptu vícekrát přepíše předchozí soubor. | Přidejte časové razítko k názvu výstupního souboru nebo před zápisem zkontrolujte `os.path.exists`. | + +**Tip:** Při zpracování mnoha souborů ve složce zabalte logiku převodu do smyčky a zaznamenávejte každý výsledek. To vám poskytne jasnou auditní stopu a usnadní obnovení po selhání. + +--- + +## Kompletní skript, který můžete zkopírovat a vložit + +Níže je samostatný Python soubor (`convert_links_paragraphs.py`), který můžete spustit přímo. Obsahuje parsování argumentů, takže můžete zadat vstupní a výstupní cesty bez úpravy kódu. + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**Jak spustit** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +Příkaz výše demonstruje **jak exportovat odkazy** a **jak extrahovat odstavce** v jediném volání. Vynechejte `--links` nebo `--paragraphs`, abyste výstup přizpůsobili svým potřebám. + +## Ověření – jak výstup vypadá + +Vzhledem k následujícímu jednoduchému HTML (`input.html`): + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +Spuštěním skriptu s oběma přepínači vznikne `links_and_paragraphs.md`: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +Uvidíte, že jsou přítomny pouze dva odstavce a hyperodkaz — přesně to, co jste požadovali při hledání **jak exportovat odkazy** během **convert html to markdown**. + +## Další kroky a související témata + +- **How to convert html to markdown** s obrázky: přidejte `MarkdownFeature.IMAGES` do masky. +- **How to extract paragraphs** a poté post‑process + +## Co byste se měli naučit dál? + +Následující tutoriály pokrývají úzce související témata, která staví na technikách předvedených v tomto průvodci. Každý zdroj obsahuje kompletní funkční ukázky kódu s podrobnými vysvětleními, která vám pomohou zvládnout další funkce API a prozkoumat alternativní přístupy k implementaci ve vašich projektech. + +- [How to Set Offset When Converting HTML to Markdown in Java](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown to HTML Java - Convert with Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [Convert HTML to Markdown – Complete C# Guide](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/czech/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..4290f56ed --- /dev/null +++ b/html/czech/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,282 @@ +--- +category: general +date: 2026-08-22 +description: Jak načíst HTML pomocí Aspose.HTML v Pythonu – omezit hloubku zdrojů + a připravit dokument pro konverzi nebo úpravu. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: cs +lastmod: 2026-08-22 +og_description: Jak načíst HTML pomocí Aspose.HTML v Pythonu, nastavit hloubku zpracování + zdrojů a připravit dokument pro konverzi nebo úpravy. +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: Jak načíst HTML pomocí Aspose.HTML – průvodce pro Python +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: Jak načíst HTML pomocí Aspose.HTML v Pythonu +url: /cs/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak načíst HTML pomocí Aspose.HTML v Pythonu + +Pokud potřebujete **jak načíst html** rychle a bezpečně v projektu Python, tento průvodce vám ukáže přesné kroky. Do konce dvou úvodních vět budete vědět, jak nastavit zpracování zdrojů, načíst soubor a připravit proces na další **HTML conversion** nebo úpravy. + +Načítání velkých nebo složitých stránek často selhává u naivních parserů, protože externí zdroje (obrázky, skripty, CSS) mohou způsobit hlubokou rekurzi nebo zpoždění sítě. Tento tutoriál představuje robustní vzor pomocí **Aspose.HTML for Python**, demonstruje **HTMLDocument class** a vysvětluje, proč je nastavení **max_handling_depth** důležité. + +Projdete si: + +* Instalaci balíčku Aspose.HTML +* Vytvoření instance `ResourceHandlingOptions` a omezení hloubky +* Použití třídy `HTMLDocument` k načtení stránky +* Přípravu dokumentu pro konverzi do PDF, PNG nebo další manipulaci + +Předchozí zkušenost s Aspose.HTML není vyžadována, stačí základní znalost Pythonu. + +--- + +## Jak načíst HTML pomocí Aspose.HTML v Pythonu + +Jádrem řešení je tříkrokový vzor, který kombinuje **ResourceHandlingOptions** s **HTMLDocument class**. Omezení hloubky zpracování zabraňuje nekontrolovaným síťovým voláním, když stránka odkazuje na mnoho vnořených zdrojů. + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### Proč to funguje + +* **`ResourceHandlingOptions`** říká parseru, kolik úrovní externích zdrojů může sledovat. Nastavení `max_handling_depth = 3` zastaví načítání po třech skocích, což stačí pro většinu webů, ale chrání před nekonečnými smyčkami. +* **`HTMLDocument`** načte soubor, použije nastavení a vytvoří v‑paměti DOM, který můžete dotazovat, upravovat nebo renderovat. +* Volitelný úryvek konverze ukazuje, jak načtený dokument spolupracuje s funkcemi **HTML conversion**, například ukládáním do PDF. + +--- + +## Porozumění ResourceHandlingOptions + +`ResourceHandlingOptions` je součástí **Aspose.HTML for Python** a poskytuje jemno‑granulární kontrolu nad síťovou aktivitou. + +| Vlastnost | Účel | Typická hodnota | +|-------------------------|------------------------------------------------|-----------------| +| `max_handling_depth` | Maximální hloubka rekurze pro propojené zdroje | `3` (default) | +| `allow_external_resources` | Zda stahovat externí CSS, JS, obrázky | `True` | +| `timeout` | Časový limit sítě na požadavek (sekundy) | `30` | + +**Praktický tip:** Pokud víte, že cílová stránka odkazuje jen na lokální aktiva, nastavte `allow_external_resources = False` pro zrychlení načítání a vyhnutí se zbytečným HTTP voláním. + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## Použití třídy HTMLDocument + +**HTMLDocument class** je vstupním bodem pro všechny operace Aspose.HTML. Po vytvoření můžete: + +* Přistupovat k DOM přes `doc.root` +* Dotazovat elementy pomocí CSS selektorů (`doc.query_selector_all("img")`) +* Renderovat stránku do rastrových formátů (`doc.save("page.png")`) +* Konvertovat do PDF (`doc.save("page.pdf", PDFSaveOptions())`) + +Níže je krátký úryvek, který po načtení získá všechny atributy `src` obrázků: + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**Proč to může být potřeba:** Při **HTML conversion** často musíte upravit nebo nahradit URL obrázků před renderováním do jiného formátu. Přímý přístup k DOM vám dává tuto flexibilitu. + +--- + +## Další kroky po načtení HTML + +Nyní, když je dokument v paměti, můžete zvolit jeden z několika běžných pracovních postupů: + +1. **Konverze do PDF** – Ideální pro archivaci nebo tisk. +2. **Render do PNG/JPEG** – Užitočné pro náhledy nebo miniatury. +3. **Úprava DOM** – Vkládání, odstraňování nebo modifikace elementů před uložením. +4. **Extrahování textu** – Získání čistého textu pro indexaci nebo analýzu. + +### Příklad: Konverze do PDF s vlastní velikostí stránky + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**Očekávaný výstup:** Soubor s názvem `big_page.pdf` se objeví v pracovním adresáři a bude obsahovat renderované HTML se všemi povolenými zdroji. Pokud je `max_handling_depth` nastaven na 3, budou do PDF zahrnuty jen zdroje do třetí úrovně, což udrží velikost souboru rozumnou. + +--- + +## Časté úskalí a jak se jim vyhnout + +| Příznak | Příčina | Řešení | +|--------------------------------------|-------------------------------------------|--------| +| Chybějící obrázky v renderovaném PDF | `allow_external_resources` nastaveno na `False` | Povolit externí zdroje nebo vložit obrázky lokálně | +| `TimeoutError` při načítání | Síťová latence překročila `timeout` | Zvětšit `rh_opts.timeout` nebo předem stáhnout aktiva | +| Neočekávané CSS styly | Propojený stylesheet nebyl načten kvůli limitu hloubky | Zvýšit `max_handling_depth` nebo ručně přidat potřebné CSS | +| `UnicodeDecodeError` u ne‑UTF8 souborů| HTML soubor používá jiné kódování | Při vytváření `HTMLDocument` předat `encoding="windows-1252"` | + +--- + +## Kompletní, spustitelný příklad + +Níže je samostatný skript, který můžete zkopírovat do souboru `load_html_demo.py`. Obsahuje instrukce k instalaci, ošetření chyb a závěrečný ověřovací krok. + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +### Spuštění skriptu + +```bash +python load_html_demo.py +``` + +V konzoli by se měl zobrazit výstup potvrzující načtení, seznam URL obrázků a zpráva o úspěšné konverzi do PDF. Vygenerovaný `big_page.pdf` bude odrážet HTML obsah omezený nastaveným **max_handling_depth**. + +--- + +## Závěr + +V tomto tutoriálu jsme probrali **jak načíst html** pomocí **Aspose.HTML for Python**, nakonfigurovali **ResourceHandlingOptions** pro řízení `max_handling_depth` a ukázali praktické akce po načtení, jako je extrakce obrázků a konverze do PDF. Dodržením těchto kroků máte nyní spolehlivý základ pro jakýkoli **HTML conversion** workflow, ať už budujete web‑scraper, službu archivace dokumentů nebo dynamický generátor reportů. + +**Další kroky** + +* Experimentujte s různými hodnotami `max_handling_depth` pro vyvážení úplnosti a výkonu. +* Zkuste konverzi dokumentu do + + +## Co byste se měli naučit dál? + + +Následující tutoriály pokrývají úzce související témata, která staví na technikách předvedených v tomto průvodci. Každý zdroj obsahuje kompletní funkční ukázky kódu s podrobnými vysvětleními, aby vám pomohl zvládnout další funkce API a prozkoumat alternativní implementační přístupy ve vlastních projektech. + +- [How to Parse HTML Java – Load, Query & Count Elements](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [How to Edit HTML Document Tree in Aspose.HTML for Java](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [Handle Document Load Events in Aspose.HTML for Java](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/dutch/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..09fd5df0c --- /dev/null +++ b/html/dutch/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-08-22 +description: Hoe HTML naar PDF te converteren in Python met Aspose.HTML – leer hoe + je een PDF maakt van een HTML‑bestand, een PDF genereert vanuit HTML‑code, en HTML + snel opslaat als PDF in Python. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: nl +lastmod: 2026-08-22 +og_description: Hoe HTML naar PDF te converteren in Python met Aspose.HTML. Deze tutorial + laat zien hoe je een PDF maakt van een HTML‑bestand, een PDF genereert vanuit HTML‑code, + en HTML opslaat als PDF in Python. +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: Hoe HTML naar PDF te converteren in Python – stapsgewijze handleiding +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: Hoe HTML naar PDF te converteren in Python met Aspose.HTML +url: /nl/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe HTML naar PDF te converteren in Python met Aspose.HTML + +Als je snel **how to convert html to pdf** wilt uitvoeren, laat deze gids je een complete, kant‑klaar oplossing zien. Je ziet hoe je **create pdf from html file**, **generate pdf from html code**, en **save html as pdf python** kunt gebruiken met de eenvoudige API van Aspose.HTML. + +We lopen elke stap door, leggen uit waarom elke regel belangrijk is, en behandelen veelvoorkomende valkuilen zodat je de code kunt aanpassen aan elk project. Geen externe tools, slechts een paar regels Python. + +## Vereisten + +Voordat je begint, zorg dat je het volgende hebt: + +* Python 3.8 of nieuwer geïnstalleerd. +* Een actieve Aspose.HTML for Python‑licentie (of een gratis evaluatiesleutel). +* Het `aspose.html`‑pakket geïnstalleerd: + +```bash +pip install aspose-html +``` + +Als dit allemaal aanwezig is, verloopt de conversie zonder runtime‑fouten. + +## Stap 1: Laad het HTML‑document (create pdf from html file) + +De eerste taak is het lezen van de bron‑HTML. Aspose.HTML vertegenwoordigt een document met de `HTMLDocument`‑klasse, die bestands‑I/O, netwerk‑ophalen en DOM‑parsen abstraheert. + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*Waarom dit belangrijk is:* +`HTMLDocument` laadt de HTML, lost relatieve bronnen (afbeeldingen, CSS, lettertypen) op, en bouwt een DOM dat de converter nauwkeurig kan renderen. Als je deze stap overslaat of een gewone string gebruikt, gaan die bron‑resoluties verloren. + +## Stap 2: Configureer PDF‑opslaan‑opties (save html as pdf python) + +Aspose.HTML laat je de PDF‑output fijn afstemmen via `PdfSaveOptions`. De standaardconfiguratie levert al een PDF van hoge kwaliteit, maar je kunt paginagrootte, compressie of metadata aanpassen indien nodig. + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*Waarom dit belangrijk is:* +Zelfs als je de standaardwaarden behoudt, maakt het aanmaken van een opties‑object de code uitbreidbaar. Toekomstige wijzigingen—zoals het toevoegen van een PDF‑wachtwoord—kunnen worden toegevoegd zonder de scriptstructuur te wijzigen. + +## Stap 3: Voer de conversie uit (convert html to pdf python) + +De `Converter.convert`‑methode koppelt het HTML‑document en de PDF‑opties aan elkaar en schrijft het resultaat naar een door jou opgegeven bestandspad. + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*Waarom dit belangrijk is:* +`Converter.convert` voert de render‑engine uit, rastert HTML/CSS naar PDF‑vectoren. Het verwerkt complexe lay‑outs, ingesloten lettertypen en SVG‑graphics automatisch—iets wat handmatige bibliotheken vaak missen. + +### Verwachte output + +Het uitvoeren van het script genereert `sample.pdf` in dezelfde map. Open het met een PDF‑viewer; je zou een getrouwe weergave van `sample.html` moeten zien, inclusief stijlen, afbeeldingen en pagina‑breuken. + +## Veelvoorkomende variaties en randgevallen + +| Situation | How to handle it | +|-----------|-----------------| +| **HTML is a string, not a file** | Use `HTMLDocument.from_string(html_string)` instead of loading from a path. | +| **You need a password‑protected PDF** | Set `pdf_options.encryption.password = "yourPassword"` before conversion. | +| **Large HTML files cause memory pressure** | Enable streaming mode: `pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`. | +| **Custom fonts are missing** | Register the font folder: `pdf_options.fonts_folder = "path/to/fonts"`.| + +Deze variaties illustreren de flexibiliteit van de Aspose.HTML‑API terwijl de kernworkflow gelijk blijft. + +## Volledig script (generate pdf from html code) + +Hieronder vind je het complete, uitvoerbare programma dat alle stappen bevat. Kopieer‑en‑plak het, vervang `YOUR_DIRECTORY` door een echte map, en voer het uit. + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +Voer het uit met: + +```bash +python convert_html_to_pdf.py +``` + +Je ziet het bevestigingsbericht, en de PDF verschijnt naast de bron‑HTML. + +## Tips voor probleemoplossing (pro tip) + +* **Missing images or CSS** – Zorg ervoor dat het HTML‑bestand absolute URL’s gebruikt of dat de relatieve paden correct zijn ten opzichte van `YOUR_DIRECTORY`. +* **Unicode characters appear as squares** – Embed de benodigde lettertypen via `pdf_options.fonts_folder`. +* **Conversion is slow** – Schakel `pdf_options.use_system_fonts = False` in om het scannen van de systeem‑fontcatalogus te vermijden. + +## Conclusie + +Je weet nu **how to convert html to pdf** in Python met Aspose.HTML, van het laden van een HTML‑bestand tot het opslaan van een PDF van hoge kwaliteit. Hetzelfde patroon laat je **create pdf from html file**, **generate pdf from html code**, en **save html as pdf python** gebruiken voor elke automatiseringsworkflow. + +Vervolgens kun je verkennen: + +* Watermerken of kop‑/voetteksten toevoegen (keyword: *create pdf from html file*). +* Een live URL converteren in plaats van een lokaal bestand (keyword: *convert html to pdf python*). +* De converter integreren in een Flask‑ of Django‑API om PDFs on‑demand te leveren. + +Experimenteer gerust met de opties, en veel plezier met PDF‑generatie! + + +## Wat moet je hierna leren? + + +De volgende tutorials behandelen nauw verwante onderwerpen die voortbouwen op de technieken die in deze gids worden getoond. Elke bron bevat volledige werkende code‑voorbeelden met stap‑voor‑stap uitleg om je te helpen extra API‑functies onder de knie te krijgen en alternatieve implementatie‑benaderingen in je eigen projecten te verkennen. + +- [Convert HTML to PDF with Aspose.HTML – Full Manipulation Guide](/html/english/) +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Convert HTML to PDF in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-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/dutch/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/dutch/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..cad837ad3 --- /dev/null +++ b/html/dutch/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-08-22 +description: Leer hoe je markdown maakt van een HTML‑bestand met Python. Deze stapsgewijze + gids laat zien hoe je HTML naar markdown converteert met een betrouwbare bibliotheek. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: nl +lastmod: 2026-08-22 +og_description: Hoe je markdown maakt van een HTML‑bestand met Python. Volg deze gids + om HTML snel naar markdown te converteren met een bewezen bibliotheek. +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: Hoe markdown te maken van HTML in Python – volledige gids +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: Hoe markdown te maken van HTML in Python – volledige gids +url: /nl/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe markdown te maken van HTML in Python – volledige gids + +Als je wilt weten **hoe je markdown kunt maken** van bestaande webinhoud, kun je een HTML‑bestand naar markdown converteren met slechts een paar regels Python. Deze tutorial leidt je door **convert html to markdown** met behulp van een speciale **html to markdown library** die werkt op Windows, macOS en Linux. + +Je leert hoe je de library installeert, een HTML‑document laadt, Git‑flavored markdown‑opties configureert en het resultaat naar schijf schrijft. Aan het einde van de gids kun je elk **html file to markdown** automatisch omzetten, wat nuttig is voor static‑site generators, documentatie‑pijplijnen of content‑migratieprojecten. + +## Vereisten + +* Python 3.8 of nieuwer geïnstalleerd (controleer met `python --version`). +* Toegang tot een terminal of opdrachtprompt. +* Een HTML‑bestand dat je wilt converteren (het voorbeeld gebruikt `sample.html`). +* Internetverbinding om het vereiste pakket te installeren. + +Het code‑voorbeeld maakt gebruik van de **GroupDocs.Conversion for Python** library, die de `HTMLDocument`, `MarkdownSaveOptions` en `Converter`‑klassen levert die later worden getoond. Dezelfde concepten gelden voor andere **html to markdown python**‑pakketten zoals `markdownify` of `html2text` — het enige verschil zijn de import‑statements. + +## Hoe markdown te maken – stap 1: installeer de html to markdown python library + +De eerste taak is om de conversielibrary aan je omgeving toe te voegen. Voer de volgende pip‑opdracht uit in je terminal: + +```bash +pip install groupdocs-conversion +``` + +> **Pro tip:** Gebruik een virtuele omgeving (`python -m venv .venv`) om afhankelijkheden geïsoleerd te houden van je globale Python‑installatie. + +Het installeren van het pakket geeft je toegang tot de `HTMLDocument`, `MarkdownSaveOptions` en `Converter`‑klassen die nodig zijn voor het conversieproces. + +## Converteer html naar markdown – stap 2: laad het HTML‑document + +Na het installeren van de library, importeer je de benodigde klassen en maak je een `HTMLDocument`‑instantie die naar je bronbestand wijst. + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +Het `HTMLDocument`‑object leest het bestand en maakt het klaar voor conversie. Als het bestand niet bestaat, werpt de constructor een `FileNotFoundError`, dus zorg dat het pad correct is. + +## html file to markdown – stap 3: configureer Git‑flavored markdown‑opties + +Veel projecten geven de voorkeur aan Git‑flavored markdown omdat het ondersteuning biedt voor tabellen, takenlijsten en doorhalingssyntaxis. De library laat je deze preset inschakelen via de `git`‑eigenschap op `MarkdownSaveOptions`. + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +Het instellen van `git = True` vertelt de converter om syntaxis uit te geven die GitHub, GitLab en Bitbucket correct renderen. Als je platte markdown nodig hebt, laat je de vlag op `False` staan. + +## Sla de markdown‑output op – stap 4: schrijf het resultaat met de html to markdown library + +Ten slotte roep je de `Converter.convert`‑methode aan, waarbij je het bron‑document, het opties‑object en het bestemmingspad doorgeeft. + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +Wanneer het script klaar is, bevat `git_flavored.md` de markdown‑representatie van `sample.html`. Je kunt het bestand openen in elke editor of het direct aan een static‑site generator voeren. + +### Verwachte output + +Aangenomen dat `sample.html` een eenvoudige kop en alinea bevat, kan de gegenereerde markdown er als volgt uitzien: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +Als de originele HTML tabellen, lijsten of code‑blokken bevat, zal de Git‑flavored preset die structuren behouden met de juiste markdown‑syntaxis. + +## Begrijpen van de html to markdown library + +De **GroupDocs.Conversion** library abstraheert de parsing‑ en renderingsdetails die je anders handmatig zou moeten afhandelen. Het: + +* Behoudt CSS‑gebaseerde opmaak waar mogelijk (bijv. vet, cursief). +* Genereert schone, leesbare markdown zonder extra HTML‑entiteiten. +* Ondersteunt batch‑conversie, zodat je over een map met HTML‑bestanden kunt itereren met dezelfde code. + +Als je een lichtere oplossing verkiest, biedt het `markdownify`‑pakket een single‑function API: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +Beide benaderingen bereiken hetzelfde einddoel—**convert html to markdown**—maar de GroupDocs‑optie biedt meer controle over het uitvoerformaat en integreert gemakkelijk in grotere document‑verwerkingspijplijnen. + +## Veelvoorkomende valkuilen en hoe ze te vermijden + +| Probleem | Waarom het gebeurt | Oplossing | +|----------|--------------------|-----------| +| Ontbrekende afbeeldingen in markdown | De converter voegt alleen afbeeldings‑URL's toe; het embedt geen bestanden. | Zorg ervoor dat afbeeldingsbestanden toegankelijk zijn vanaf de markdown‑locatie of kopieer ze mee naast de output. | +| Gebroken relatieve links | HTML kan relatieve paden gebruiken die na conversie ongeldig worden. | Gebruik `md_options.base_path` (indien beschikbaar) om links te herschrijven, of voer een post‑processing script uit om paden aan te passen. | +| Unicode‑tekens worden geescaped | Sommige libraries escapen niet‑ASCII tekens. | Stel `md_options.encode_utf8 = True` (of de equivalente vlag) in om tekens ongewijzigd te houden. | + +Het vroeg aanpakken van deze problemen bespaart tijd wanneer je de conversie opschaalt naar tientallen of honderden bestanden. + +## Volledig, uitvoerbaar voorbeeld + +Hieronder staat een zelf‑containend script dat je direct kunt kopiëren, aanpassen en uitvoeren. Vervang `YOUR_DIRECTORY` door de daadwerkelijke map op je machine. + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +Voer het script uit: + +```bash +python markdown_from_html.py +``` + +Je zou een bevestigingsbericht moeten zien en een nieuw `git_flavored.md`‑bestand dat de markdown‑versie van je HTML bevat. + +## Conclusie + +Je weet nu **hoe je markdown kunt maken** van een HTML‑bron met Python. De gids besprak het installeren van een betrouwbare **html to markdown library**, het laden van een **html file to markdown**, het configureren van **html to markdown python**‑opties, en het opslaan van het resultaat. Met deze basis kun je documentatie‑pijplijnen automatiseren, legacy‑webpagina's migreren, of content genereren voor static‑site generators. + +**Volgende stappen** + +* Verken batch‑conversie door over een map met HTML‑bestanden te itereren. +* Pas de `MarkdownSaveOptions` aan om kopstijl, lijstopmaak of afbeeldingsafhandeling te regelen. +* Combineer dit script met een CI/CD‑workflow om je markdown‑documentatie automatisch up‑to‑date te houden. + +Veel plezier met converteren! + +## Wat moet je hierna leren? + +De volgende tutorials behandelen nauw verwante onderwerpen die voortbouwen op de technieken die in deze gids worden gedemonstreerd. Elke bron bevat volledige werkende code‑voorbeelden met stap‑voor‑stap uitleg om je te helpen extra API‑functies onder de knie te krijgen en alternatieve implementatie‑benaderingen in je eigen projecten te verkennen. + +- [HTML naar Markdown converteren in Aspose.HTML voor Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [HTML naar Markdown converteren in .NET met Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Markdown naar HTML converteren – Java‑gids met PDF‑output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/dutch/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..eaced0492 --- /dev/null +++ b/html/dutch/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-08-22 +description: Leer hoe je markdown maakt van HTML in Python met een eenvoudig drieweg‑script. + Inclusief conversie‑opties en exporttips. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: nl +lastmod: 2026-08-22 +og_description: Maak markdown van HTML met Python in slechts drie regels. Deze gids + toont conversie, opmaakopties en hoe je HTML efficiënt naar markdown exporteert. +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: Maak markdown van HTML in Python – stapsgewijze handleiding +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: Hoe markdown te maken van HTML met Python +url: /nl/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe markdown te maken vanuit HTML met Python + +Als je **markdown wilt maken vanuit HTML**, laat deze korte gids precies zien hoe je dat doet met Python. Je ziet een helder, drie‑stappen‑script dat een HTML‑bestand laadt, Git‑flavored Markdown‑output configureert en het resultaat naar schijf schrijft. + +Het converteren van webinhoud naar lichte opmaak is een veelvoorkomende taak bij het bouwen van statische sites, documentatie‑pipelines of data‑analyse‑notebooks. In deze tutorial behandelen we ook hoe je **HTML naar markdown** kunt converteren met optionele opmaak, beantwoorden we de vraag **hoe HTML efficiënt te converteren**, en demonstreren we de **export HTML to markdown** workflow met de populaire `groupdocs-conversion` bibliotheek. + +## Vereisten + +Voor je begint, zorg dat je het volgende hebt: + +* Python 3.8 of nieuwer geïnstalleerd. +* Het `groupdocs-conversion` pakket (of een andere bibliotheek die `HTMLDocument`, `MarkdownSaveOptions` en `Converter` biedt). Installeer het met: + +```bash +pip install groupdocs-conversion +``` + +* Een HTML‑bestand dat je wilt transformeren, bv. `sample.html` in een map die je beheert. + +Er zijn geen extra systeem‑afhankelijkheden nodig, en de code werkt op Windows, macOS en Linux. + +## Stap 1: Laad het bron‑HTML‑document + +De eerste handeling is het aanmaken van een `HTMLDocument`‑object dat het bronbestand vertegenwoordigt. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**Waarom dit belangrijk is:** `HTMLDocument` parseert het bestand, lost relatieve links op en bereidt de DOM voor op conversie. Als het bestand niet gevonden kan worden, werpt de constructor een duidelijke `FileNotFoundError`, zodat je ontbrekende invoer vroeg kunt afhandelen. + +## Stap 2: Configureer Markdown‑opslaanopties (Git‑flavored) + +Markdown heeft verschillende dialecten. Git‑flavored Markdown (GFM) voegt tabellen, takenlijsten en fenced code blocks toe, die vaak vereist zijn voor README‑bestanden of GitHub‑pagina's. + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**Waarom dit belangrijk is:** Door expliciet `MarkdownFormatter.GIT` te selecteren, zorg je ervoor dat de output dezelfde regels volgt als GitHub rendert, waardoor verrassingen bij weergave in een repository worden voorkomen. Als je gewone Markdown verkiest, vervang dan `MarkdownFormatter.GIT` door `MarkdownFormatter.DEFAULT`. + +## Stap 3: Converteer het HTML‑document naar een Markdown‑bestand + +Roep nu de conversie‑engine aan en schrijf het resultaat naar het doelpad. + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**Waarom dit belangrijk is:** `Converter.convert` doet het zware werk — het vertalen van HTML‑tags naar hun markdown‑equivalenten, afbeeldingen behouden (door ze indien nodig naar de uitvoermap te kopiëren), en de door jou geselecteerde formatter toepassen. De methode retourneert `None` bij succes, maar je kunt `ConversionException` opvangen voor gedetailleerde foutrapportage. + +### Verwachte output + +Na het uitvoeren van het script zal `sample.md` iets bevatten als: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +De exacte markdown weerspiegelt de structuur van `sample.html`. Tabellen, afbeeldingen en code‑blocks worden geconverteerd volgens de GFM‑regels. + +## Veelvoorkomende variaties en randgevallen + +| Situatie | Aanbevolen aanpassing | +|-----------|-------------------| +| **Grote HTML‑bestanden (>10 MB)** | Verhoog de Python‑recursielimiet of stream de invoer met `HTMLDocument.open_stream()` als de bibliotheek dat ondersteunt. | +| **Afbeeldingen met absolute URL's** | Stel `md_options.embed_images = True` in om afbeeldingen in te sluiten als base‑64 data‑URI's, of behoud ze als links voor een lichtere output. | +| **Je hebt gewone Markdown nodig in plaats van GFM** | Verander `md_options.formatter = MarkdownFormatter.DEFAULT`. | +| **Aangepaste CSS‑klassen moeten worden genegeerd** | Gebruik `md_options.ignore_css_classes = ["unwanted-class"]`. | +| **Uitvoeren in een CI/CD‑pipeline** | Plaats het script in een `try/except`‑blok en sluit af met een niet‑nul status bij falen, zodat de pipeline snel kan falen. | + +### Pro tip + +Als je van plan bent om veel bestanden in één batch te converteren, hergebruik dan één `MarkdownSaveOptions`‑instantie en wijzig alleen de invoer‑/uitvoer‑paden binnen een lus. Dit vermindert de overhead van object‑creatie en versnelt het proces met ongeveer 15 %. + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## Hoe HTML naar markdown te converteren in andere talen (korte notitie) + +Hoewel deze tutorial zich richt op **html to markdown python**, zijn dezelfde concepten van toepassing op Java-, C#- of JavaScript‑SDK's: maak een documentobject, configureer een markdown‑formatter en roep de converter aan. Als je ooit **HTML naar markdown wilt exporteren** vanuit een niet‑Python‑omgeving, zoek dan naar de equivalente `HtmlDocument`, `MarkdownSaveOptions` en `Converter`‑klassen in de taalspecifieke SDK. + +## Conclusie + +Je weet nu hoe je **markdown kunt maken vanuit HTML** met een beknopt Python‑script. De drie‑stappen‑stroom — laad de HTML, stel Git‑flavored‑opties in en voer de conversie uit — dekt de kern van elke **convert html to markdown** workflow. Vanaf hier kun je: + +* Het script integreren in static‑site generators. +* Documentatie‑updates automatiseren in CI‑pipelines. +* De conversie uitbreiden met aangepaste post‑processing (bijv. link‑herwrites of heading‑aanpassingen). + +Voel je vrij om te experimenteren met de secundaire opties — **how to convert html** met verschillende formatters, of het aanpassen van **export html to markdown** instellingen voor afbeeldingen en tabellen. Veel plezier met converteren! + +## Wat moet je hierna leren? + +De volgende tutorials behandelen nauw verwante onderwerpen die voortbouwen op de technieken die in deze gids worden gedemonstreerd. Elke bron bevat volledige werkende code‑voorbeelden met stap‑voor‑stap uitleg om je te helpen extra API‑functies onder de knie te krijgen en alternatieve implementatie‑benaderingen in je eigen projecten te verkennen. + +- [HTML naar Markdown converteren in Aspose.HTML voor Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [HTML naar Markdown converteren in .NET met Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Markdown naar HTML converteren – Java‑gids met PDF‑output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/dutch/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..a01aaab48 --- /dev/null +++ b/html/dutch/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,282 @@ +--- +category: general +date: 2026-08-22 +description: Maak PDF van SVG met Python in enkele minuten. Leer hoe je SVG naar PDF + converteert, SVG opslaat als PDF, en gebruik een betrouwbare SVG‑naar‑PDF converter. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: nl +lastmod: 2026-08-22 +og_description: Maak snel een PDF van SVG met Python. Deze gids laat zien hoe je SVG + naar PDF converteert, een SVG‑naar‑PDF‑converter gebruikt en SVG opslaat als PDF + in één script. +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: PDF maken van SVG in Python – stapsgewijze tutorial +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: Hoe maak je een PDF van SVG in Python – volledige gids +url: /nl/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe PDF maken van SVG in Python – volledige gids + +Als je snel **PDF maken van SVG** nodig hebt, laat deze tutorial je precies zien hoe. We lopen stap voor stap door het converteren van een SVG‑bestand naar een PDF met een populaire SVG‑naar‑PDF‑converter, zodat je vectorafbeeldingen kunt opnemen in rapporten, facturen of e‑books zonder je Python‑code te verlaten. + +Je leert hoe je **SVG naar PDF converteert**, schaling beheert, lettertypen behoudt en uiteindelijk **SVG opslaat als PDF** met één reproduceerbaar script. Er zijn geen externe command‑line‑tools nodig—slechts een paar regels Python en de Aspose.SVG for Python‑bibliotheek. + +## Voorvereisten + +Voordat je begint, zorg dat je het volgende hebt: + +| Vereiste | Reden | +|----------|-------| +| Python 3.8+ | De bibliotheek richt zich op moderne Python‑runtime‑omgevingen. | +| `aspose.svg`‑pakket | Biedt `SVGDocument`, `PdfSaveOptions` en `Converter`. Installeer met `pip install aspose-svg`. | +| Een SVG‑bestand (`vector.svg`) | De bron‑vectorafbeelding die je wilt converteren. | +| Schrijfrechten voor de doelmap | Nodig voor **SVG opslaan als PDF**. | + +Je kunt de bibliotheek installeren met: + +```bash +pip install aspose-svg +``` + +> **Pro tip:** Gebruik een virtuele omgeving (`python -m venv venv`) om afhankelijkheden geïsoleerd te houden. + +## Overzicht van het conversieproces + +De conversie bestaat uit drie eenvoudige stappen: + +1. Laad het **SVG‑document** van de schijf. +2. Maak **PDF‑opslaan‑opties** (je kunt paginagrootte, DPI, enz. aanpassen). +3. Roep de **converter** aan om een PDF‑bestand te produceren. + +De volgende secties splitsen elke stap uit, leggen *waarom* de code op die manier is geschreven, en tonen het volledige, uitvoerbare script. + +## PDF maken van SVG met Aspose.SVG for Python + +Deze H2‑kop bevat het primaire zoekwoord **create pdf from svg**, wat voldoet aan de SEO‑vereiste. + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### Waarom dit werkt + +* **`SVGDocument`** parseert de SVG‑XML en bouwt een in‑memory‑representatie die de converter kan renderen. +* **`PdfSaveOptions`** laat je de PDF‑output aanpassen (paginagrootte, compressie, DPI). De standaardinstellingen leveren al een getrouwe PDF, waardoor het voorbeeld direct werkt. +* **`Converter.convert`** doet het zware werk: het rasteriseert de vectordata op PDF‑pagina's terwijl de vector‑fidelity behouden blijft, zodat de resulterende PDF scherp blijft bij elke zoom. + +## SVG naar PDF converteren met aangepaste paginagrootte + +Als je een specifieke paginagrootte nodig hebt—bijvoorbeeld A4 voor afdrukbare rapporten—pas dan de `PdfSaveOptions` aan: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **Edge case:** Sommige SVG’s definiëren een `viewBox` die niet overeenkomt met de gewenste PDF‑afmetingen. Het overschrijven van `page_width`/`page_height` zorgt ervoor dat de PDF past bij je lay‑outverwachtingen. + +## SVG opslaan als PDF met behoud van lettertypen + +Wanneer je SVG externe lettertypen verwijst, zorg er dan voor dat de lettertypen toegankelijk zijn voor de converter. Plaats de `.ttf`‑bestanden in dezelfde map als de SVG of specificeer een aangepaste lettertype‑map: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +De converter embedde de lettertypen direct in de PDF, waardoor de **svg file to pdf**‑conversie er op elke machine identiek uitziet. + +## Batch‑conversie: svg‑bestand naar pdf voor veel bestanden + +Vaak heb je een map vol SVG‑assets. De volgende lus toont een efficiënte **svg to pdf converter** die elk `.svg`‑bestand in een directory verwerkt: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +Dit fragment illustreert een praktische **convert svg to pdf**‑workflow die kan worden geïntegreerd in CI‑pipelines of geautomatiseerde rapportgeneratoren. + +## Verifieer de output + +Na het uitvoeren van het script, open de gegenereerde PDF met een viewer (Adobe Reader, Chrome of Preview). Je zou moeten zien: + +* Vectorvormen scherp weergegeven bij elke zoom. +* Tekst die overeenkomt met de SVG‑bron, met ingesloten lettertypen indien je ze hebt opgegeven. +* Geen raster‑artefacten—omdat de conversie de oorspronkelijke vectordata behoudt. + +Als je ontbrekende lettertypen opmerkt, controleer dan of de lettertypebestanden bereikbaar zijn en of de SVG ze correct verwijst (`font-family`‑attribuut). + +## Veelvoorkomende valkuilen en hoe ze te vermijden + +| Symptoom | Waarschijnlijke oorzaak | Oplossing | +|----------|--------------------------|-----------| +| Lege PDF‑pagina's | SVG heeft externe bronnen (afbeeldingen, lettertypen) die niet gevonden worden | Geef `fonts_folder` op en zorg dat gekoppelde afbeeldingen in dezelfde map staan of gebruik absolute URL’s. | +| Tekst verschijnt als omtrek | Lettertype niet ingesloten | Stel `pdf_options.embed_fonts = True` (standaard) in en controleer of het lettertypebestand aanwezig is. | +| PDF is groter dan verwacht | Hoge DPI of ongecomprimeerde afbeeldingen | Verlaag `pdf_options.dpi` of schakel compressie in: `pdf_options.compress = True`. | +| SVG‑afmetingen worden afgesneden | `viewBox` groter dan PDF‑pagina | Pas `pdf_options.page_width`/`page_height` aan of schaal de SVG via `svg_doc.set_viewport`. | + +## Volledig end‑to‑end voorbeeld + +Hieronder staat een zelfstandig script dat foutafhandeling, logging en optionele command‑line‑argumenten bevat. Sla het op als `svg_to_pdf.py` en voer `python svg_to_pdf.py` uit. + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +Het uitvoeren van het script levert een **save SVG as PDF**‑operatie op die je kunt embedden in grotere automatiserings‑pipelines. + +### Verwachte console‑output + + + +## Wat moet je hierna leren? + +De volgende tutorials behandelen nauw verwante onderwerpen die voortbouwen op de technieken die in deze gids worden gedemonstreerd. Elke bron bevat complete werkende code‑voorbeelden met stap‑voor‑stap‑uitleg om je te helpen extra API‑functies onder de knie te krijgen en alternatieve implementatie‑benaderingen in je eigen projecten te verkennen. + +- [Convert SVG naar PDF in .NET met Aspose.HTML](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg naar pdf java – Genereer PDF van SVG met Aspose.HTML voor Java](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [Converteer SVG naar PDF in .NET met Aspose.HTML](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/dutch/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/dutch/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..594fa7dfd --- /dev/null +++ b/html/dutch/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-08-22 +description: hoe streaming in te schakelen voor grote HTML-naar-PDF-conversie in Python, + waardoor het geheugenverbruik wordt verminderd en de outputgeneratie wordt versneld. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: nl +lastmod: 2026-08-22 +og_description: hoe streaming in te schakelen voor grote HTML-naar-PDF-conversie in + Python, waardoor het geheugengebruik wordt verminderd en de outputgeneratie wordt + versneld. +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: Streaming inschakelen voor HTML‑naar‑PDF conversie in Python +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: Hoe streaming inschakelen bij het converteren van HTML naar PDF in Python +url: /nl/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe streaming in te schakelen bij het converteren van HTML naar PDF in Python + +Als je **hoe streaming in te schakelen** nodig hebt tijdens een grote HTML‑naar‑PDF‑conversie, laat deze gids je de exacte stappen zien. Door streaming in te schakelen vermijd je het laden van het volledige document in het geheugen, wat essentieel is wanneer je HTML naar PDF converteert voor grote bestanden. + +Je leert hoe je streaming inschakelt, HTML naar PDF converteert met Python, en randgevallen afhandelt zoals large HTML to PDF taken. De oplossing werkt met de populaire `groupdocs-conversion` (of een soortgelijke) bibliotheek, maar de concepten zijn toepasbaar op elke streaming‑capabele converter. + +![Diagram dat streamingconversie van HTML naar PDF met Python toont](streaming-diagram.png) + +## Wat je nodig hebt + +- Python 3.9 of nieuwer +- `groupdocs-conversion` (of elke bibliotheek die `PdfSaveOptions` met een streaming‑vlag biedt) +- Een HTML‑bestand dat je wilt omzetten naar een PDF (het voorbeeld gebruikt een groot bestand genaamd `large.html`) + +Het hebben van deze vereisten zorgt ervoor dat de code draait zonder extra configuratie. + +## Stap 1: Installeer de conversiebibliotheek + +Installeer eerst het Python‑pakket dat `HTMLDocument`, `PdfSaveOptions` en `Converter` levert. De meest voorkomende keuze is de **GroupDocs.Conversion** SDK: + +```bash +pip install groupdocs-conversion +``` + +> **Pro tip:** Gebruik een virtuele omgeving (`python -m venv .venv`) om afhankelijkheden geïsoleerd te houden. + +## Stap 2: Laad het HTML‑document dat je wilt converteren + +Het laden van de bron‑HTML is eenvoudig. De `HTMLDocument`‑klasse leest het bestand van de schijf en maakt het klaar voor conversie. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +Het `HTMLDocument`‑object vertegenwoordigt de volledige HTML‑markup, inclusief externe bronnen zoals afbeeldingen en CSS. Dit is het startpunt voor elke **convert html to pdf**‑operatie. + +## Stap 3: Maak PDF‑opslaopt opties aan en schakel streaming in + +Streaming inschakelen is de kern van **hoe streaming in te schakelen**. In plaats van de volledige PDF in het geheugen te bufferen, schrijft de converter stukken direct naar het uitvoerbestand. + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +Wanneer `enable_streaming` op `True` staat, gebruikt de bibliotheek een write‑through‑benadering die het RAM‑verbruik drastisch vermindert—cruciaal voor **large html to pdf**‑scenario's. + +## Stap 4: Converteer het HTML‑document naar PDF met de geconfigureerde opties + +Roep nu de conversie aan. De `Converter.convert`‑methode neemt het bron‑document, het opties‑object en het bestemmingspad. + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +Na afloop van deze aanroep bevat `large.pdf` de gerenderde PDF, gegenereerd terwijl data naar de schijf wordt gestreamd. Het volledige proces voltooit doorgaans sneller dan een niet‑streaming conversie omdat het besturingssysteem data incrementeel naar het bestandssysteem kan wegschrijven. + +### Verwachte output + +Het uitvoeren van het script produceert een PDF‑bestand waarvan de grootte overeenkomt met de inhoud van de oorspronkelijke HTML. Je kunt het resultaat verifiëren met elke PDF‑viewer: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## Waarom streaming belangrijk is voor grote HTML‑naar‑PDF‑conversies + +Wanneer je **convert html to pdf** zonder streaming uitvoert, bouwt de bibliotheek eerst de volledige PDF in RAM voordat deze naar de schijf wordt geschreven. Voor een bescheiden pagina is dit prima, maar een **large html to pdf**‑taak (bijv. een 10‑MB HTML‑rapport met veel afbeeldingen) kan de geheugenlimieten van typische serverless‑functies of containers met weinig geheugen overschrijden. + +Streaming inschakelen lost drie problemen op: + +1. **Geheugenefficiëntie** – er wordt slechts een kleine buffer in RAM gehouden. +2. **Snellere waargenomen prestaties** – het bestand verschijnt op de schijf terwijl het nog wordt gegenereerd, waardoor downstream‑processen het eerder kunnen lezen. +3. **Schaalbaarheid** – je kunt veel conversies parallel uitvoeren zonder het geheugen van de host uit te putten. + +## Veelvoorkomende valkuilen en hoe ze te vermijden + +| Symptoom | Waarschijnlijke oorzaak | Oplossing | +|----------|--------------------------|-----------| +| `MemoryError` tijdens conversie | Streaming‑vlag niet ingesteld of bibliotheekversie te oud | Zorg ervoor dat `pdf_opts.enable_streaming = True` en upgrade naar de nieuwste SDK (`pip install --upgrade groupdocs-conversion`). | +| Ontbrekende afbeeldingen in de PDF | Relatieve afbeeldingspaden kunnen niet worden opgelost | Geef de basisdirectory door aan `HTMLDocument` of embed afbeeldingen als base64. | +| Uitvoer‑PDF is leeg | HTML‑bestand niet gevonden of onleesbaar | Controleer het pad `"YOUR_DIRECTORY/large.html"` en controleer de bestandsrechten. | +| Conversie blijft oneindig hangen | Grote externe bronnen (fonts, CSS) blokkeren de weergave | Pre‑download externe assets of gebruik een headless browser om ze in te sluiten. | + +### Randgeval: HTML converteren vanuit een string + +Als je HTML‑inhoud zich in het geheugen bevindt in plaats van in een bestand, kun je nog steeds **hoe streaming in te schakelen** door de string te omhullen in een `HTMLDocument`‑constructor die ruwe HTML accepteert: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +Het streaming‑gedrag blijft identiek omdat de SDK de PDF incrementeel schrijft. + +## Volledig script dat je kunt kopiëren‑plakken + +Hieronder staat een volledig, kant‑klaar voorbeeld dat alle besproken stappen bevat. Vervang `YOUR_DIRECTORY` door het daadwerkelijke pad op jouw machine. + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +Het uitvoeren van `python full_example.py` genereert `large.pdf` met behulp van de streaming‑aanpak. + +## Samenvatting + +- Je weet nu **hoe streaming in te schakelen** voor HTML‑naar‑PDF‑conversie in Python. +- Het script demonstreert de volledige **convert html to pdf**‑workflow, waarbij **large html to pdf**‑werkbelastingen efficiënt worden afgehandeld. +- Door `PdfSaveOptions.enable_streaming = True` in te stellen, schrijft de converter de output progressief, wat de aanbevolen manier is om **stream html to pdf** uit te voeren. + +## Wat je hierna kunt verkennen + +- **HTML‑naar‑PDF‑Python**‑bibliotheken die CSS3 en JavaScript ondersteunen (bijv. `WeasyPrint`, `pdfkit`). +- Het toevoegen van wachtwoordbeveiliging of encryptie aan de gegenereerde PDF via extra `PdfSaveOptions`‑instellingen. +- Het paralleliseren van meerdere conversies in een wachtrijsysteem (Celery, RabbitMQ) terwijl het geheugenverbruik laag blijft. + +Voel je vrij om te experimenteren met verschillende HTML‑bronnen, paginagroottes en PDF‑metadata. Streaming maakt het mogelijk om zelfs nog grotere documenten te verwerken zonder prestatieverlies. Veel programmeerplezier! + +## Wat moet je hierna leren? + +De volgende tutorials behandelen nauw verwante onderwerpen die voortbouwen op de technieken die in deze gids worden getoond. Elke bron bevat complete werkende code‑voorbeelden met stap‑voor‑stap uitleg om je te helpen extra API‑functies onder de knie te krijgen en alternatieve implementatie‑benaderingen in je eigen projecten te verkennen. + +- [Hoe HTML naar PDF converteren in Java – Met Aspose.HTML voor Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Maak een vaste thread‑pool voor parallelle HTML‑naar‑PDF‑conversie](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [Hoe JavaScript in te schakelen in Aspose HTML – HTML laden & tekst ophalen](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/dutch/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..26d48a873 --- /dev/null +++ b/html/dutch/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-08-22 +description: Hoe links uit HTML te exporteren en deze om te zetten naar een markdown‑bestand, + inclusief alinea’s. Stapsgewijze handleiding voor HTML‑naar‑markdown conversie. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: nl +lastmod: 2026-08-22 +og_description: Hoe je links uit een HTML‑document exporteert en converteert naar + een markdown‑bestand, inclusief alinea’s. Volg deze volledige tutorial voor betrouwbare + HTML‑naar‑markdown conversie. +og_image_alt: How to export links while converting HTML to Markdown +og_title: Hoe links exporteren tijdens het converteren van HTML naar Markdown – stapsgewijze + handleiding +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: Hoe links exporteren tijdens het converteren van HTML naar Markdown +url: /nl/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe links exporteren tijdens het converteren van HTML naar Markdown + +Als je **links exporteren** van een HTML‑pagina en het resultaat wilt omzetten naar een schoon **html‑naar‑markdown‑bestand**, laat deze gids je de exacte stappen zien. Je ontdekt ook **alinea's extraheren** zodat de markdown‑output de hoofdinhoud bevat waar je om geeft. Aan het einde van de tutorial kun je de vraag “**hoe html te converteren** naar markdown” beantwoorden met een kant‑klaar script. + +Links exporteren en alinea's extraheren zijn veelvoorkomende taken wanneer je webinhoud migreert naar statische sites, documentatieportalen of headless CMS‑back‑ends. De onderstaande aanpak werkt met de GroupDocs Conversion SDK voor Python, maar de concepten zijn toepasbaar op elke bibliotheek die je toestaat exportfuncties te configureren. + +--- + +## Wat je nodig hebt + +- Python 3.9 of nieuwer +- `groupdocs-conversion`‑pakket (installeren met `pip install groupdocs-conversion`) +- Een HTML‑bestand dat je wilt verwerken (bijv. `input.html`) +- Basiskennis van Python‑scripting + +--- + +## Hoe links exporteren met HTML‑naar‑Markdown‑conversie + +De eerste belangrijke stap is het configureren van de conversie zodat alleen de gewenste functies—links en alinea's—worden weggeschreven naar het **html‑naar‑markdown‑bestand**. De SDK laat je een bitmask van `MarkdownFeature`‑waarden instellen; we combineren `LINKS` en `PARAGRAPHS` om de output gefocust te houden. + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### Waarom dit werkt + +- **`HTMLDocument`** parseert het originele bestand en bouwt een DOM op die de converter kan doorlopen. +- **`MarkdownSaveOptions`** geeft je fijnmazige controle over wat de SDK schrijft. Het instellen van `features` op `LINKS | PARAGRAPHS` vertelt de engine om afbeeldingen, tabellen of scripts te negeren, wat ruis in het uiteindelijke **html‑naar‑markdown‑bestand** vermindert. +- **`Converter.convert`** voert het zware werk uit. Het respecteert het feature‑masker, extraheert anker‑tags (``) en alinea‑tags (`

`), en schrijft ze met de standaard Markdown‑syntaxis. + +--- + +## Hoe HTML naar Markdown te converteren met volledige inhoud (optioneel) + +Als je later besluit dat je de volledige pagina nodig hebt—niet alleen links en alinea's—pas dan eenvoudig het feature‑masker aan: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +Het uitvoeren van dezelfde conversie levert nu een compleet **html‑naar‑markdown‑bestand** op dat de oorspronkelijke lay-out weerspiegelt. Dit toont **hoe html te converteren** op een flexibele manier: je beheert de output door feature‑flags te schakelen. + +--- + +## Hoe alleen alinea's extraheren + +Soms ben je alleen geïnteresseerd in de tekstuele inhoud van een artikel, niet in de hyperlinks. Je kunt alinea's isoleren door het masker uitsluitend op `PARAGRAPHS` te zetten: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +De resulterende markdown zal schone, regel‑gebroken tekst bevatten zonder enige link‑opmaak. Deze snippet beantwoordt de vraag **hoe alinea's te extraheren** uit een HTML‑bron. + +--- + +## Veelvoorkomende valkuilen en hoe ze te vermijden + +| Probleem | Waarom het gebeurt | Oplossing | +|----------|--------------------|----------| +| Leeg uitvoerbestand | De bron‑HTML bevat geen ``‑ of `

`‑tags die overeenkomen met de geselecteerde functies. | Controleer de HTML‑structuur of breid het feature‑masker uit (bijv. `HEADINGS` opnemen). | +| Coderingproblemen | De HTML gebruikt een niet‑UTF‑8‑tekenset en de SDK leest deze onjuist. | Geef een expliciete codering door aan `HTMLDocument`, bijv. `HTMLDocument(path, encoding="iso-8859-1")`. | +| Bestaande markdown overschrijven | Het script meerdere keren uitvoeren vervangt het vorige bestand. | Voeg een tijdstempel toe aan de output‑bestandsnaam of controleer `os.path.exists` vóór het schrijven. | + +**Pro tip:** Bij het verwerken van veel bestanden in een map, wikkel de conversielogica in een lus en log elk resultaat. Dit geeft je een duidelijk audit‑pad en maakt het eenvoudig om na een fout te hervatten. + +--- + +## Volledig script dat je kunt copy‑pasten + +Hieronder staat een zelfstandige Python‑file (`convert_links_paragraphs.py`) die je direct kunt uitvoeren. Het bevat argument‑parsing zodat je invoer‑ en uitvoer‑paden kunt opgeven zonder de code te bewerken. + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**Hoe uit te voeren** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +Het bovenstaande commando demonstreert **links exporteren** en **alinea's extraheren** in één enkele oproep. Laat `--links` of `--paragraphs` weg om de output aan te passen aan je behoeften. + +--- + +## Verificatie – hoe de output eruitziet + +Gegeven de volgende eenvoudige HTML (`input.html`): + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +Het uitvoeren van het script met beide vlaggen produceert `links_and_paragraphs.md`: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +Je ziet dat alleen de twee alinea's en de hyperlink aanwezig zijn—precies wat je vroeg toen je zocht naar **links exporteren** tijdens het uitvoeren van **html naar markdown converteren**. + +--- + +## Volgende stappen en gerelateerde onderwerpen + +- **Hoe html naar markdown te converteren** met afbeeldingen: voeg `MarkdownFeature.IMAGES` toe aan het masker. +- **Hoe alinea's te extraheren** en vervolgens post‑processen + +## Wat moet je hierna leren? + +De volgende tutorials behandelen nauw verwante onderwerpen die voortbouwen op de technieken die in deze gids worden getoond. Elke bron bevat volledige werkende code‑voorbeelden met stap‑voor‑stap uitleg om je te helpen extra API‑functies onder de knie te krijgen en alternatieve implementatie‑benaderingen in je eigen projecten te verkennen. + +- [Hoe offset in te stellen bij het converteren van HTML naar Markdown in Java](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown naar HTML Java - Converteren met Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [HTML naar Markdown converteren – Complete C#‑gids](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/dutch/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..15aa77330 --- /dev/null +++ b/html/dutch/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,282 @@ +--- +category: general +date: 2026-08-22 +description: Hoe HTML te laden met Aspose.HTML in Python – de diepte van bronnen beperken + en het document gereed maken voor conversie of bewerking. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: nl +lastmod: 2026-08-22 +og_description: Hoe HTML te laden met Aspose.HTML in Python, de diepte van resourceverwerking + in te stellen en het document gereed te maken voor conversie of bewerking. +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: Hoe HTML te laden met Aspose.HTML – Python-gids +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: Hoe HTML te laden met Aspose.HTML in Python +url: /nl/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe HTML te laden met Aspose.HTML in Python + +Als je **hoe html te laden** snel en veilig wilt in een Python‑project, laat deze gids je de exacte stappen zien. Na de eerste twee zinnen weet je hoe je resource‑handling configureert, het bestand laadt en het proces klaar maakt voor verdere **HTML‑conversie** of bewerking. + +Het laden van grote of complexe pagina’s loopt vaak vast bij naïeve parsers omdat externe resources (afbeeldingen, scripts, CSS) diepe recursie of netwerkvertragingen kunnen veroorzaken. Deze tutorial behandelt een robuust patroon met **Aspose.HTML for Python**, demonstreert de **HTMLDocument‑klasse** en legt uit waarom het instellen van **max_handling_depth** belangrijk is. + +Je doorloopt: + +* Het installeren van het Aspose.HTML‑pakket +* Het aanmaken van een `ResourceHandlingOptions`‑instantie en het beperken van de diepte +* Het gebruiken van de `HTMLDocument`‑klasse om een pagina te laden +* Het voorbereiden van het document voor conversie naar PDF, PNG of verdere manipulatie + +Ervaring met Aspose.HTML is niet vereist, alleen basiskennis van Python. + +--- + +## Hoe HTML te laden met Aspose.HTML in Python + +De kern van de oplossing is een drie‑stappen‑patroon dat **ResourceHandlingOptions** combineert met de **HTMLDocument‑klasse**. Het beperken van de handling‑diepte voorkomt uit de hand lopende netwerk‑aanvragen wanneer een pagina veel geneste resources bevat. + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### Waarom dit werkt + +* **`ResourceHandlingOptions`** vertelt de parser hoeveel niveaus van externe resources hij mag volgen. Het instellen van `max_handling_depth = 3` stopt de loader na drie hops, wat voor de meeste sites voldoende is maar beschermt tegen oneindige lussen. +* **`HTMLDocument`** leest het bestand, past de opties toe en bouwt een in‑memory DOM die je kunt queryen, aanpassen of renderen. +* Het optionele conversiesnippet laat zien hoe het geladen document integreert met **HTML‑conversie**‑functies, zoals opslaan als PDF. + +--- + +## Begrijpen van ResourceHandlingOptions + +`ResourceHandlingOptions` maakt deel uit van **Aspose.HTML for Python** en geeft je fijnmazige controle over netwerkactiviteit. + +| Eigenschap | Doel | Typische waarde | +|---------------------------|----------------------------------------------------|-----------------| +| `max_handling_depth` | Maximale recursiediepte voor gekoppelde resources | `3` (standaard) | +| `allow_external_resources`| Of externe CSS, JS, afbeeldingen moeten worden gedownload | `True` | +| `timeout` | Netwerktime‑out per verzoek (seconden) | `30` | + +**Praktische tip:** Als je weet dat de doelpagina alleen lokale assets gebruikt, stel dan `allow_external_resources = False` in om het laden te versnellen en onnodige HTTP‑aanvragen te vermijden. + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## De HTMLDocument‑klasse gebruiken + +De **HTMLDocument‑klasse** is het toegangspunt voor alle Aspose.HTML‑bewerkingen. Eenmaal geïnstantieerd kun je: + +* Toegang krijgen tot de DOM via `doc.root` +* Elementen queryen met CSS‑selectoren (`doc.query_selector_all("img")`) +* De pagina renderen naar rasterformaten (`doc.save("page.png")`) +* Converteren naar PDF (`doc.save("page.pdf", PDFSaveOptions())`) + +Hieronder staat een kort snippet dat alle `src`‑attributen van afbeeldingen extraheert na het laden: + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**Waarom je dit nodig kunt hebben:** Bij **HTML‑conversie** moet je vaak image‑URL’s aanpassen of vervangen voordat je naar een ander formaat rendert. Directe toegang tot de DOM geeft je die flexibiliteit. + +--- + +## Volgende stappen na het laden van de HTML + +Nu het document in het geheugen staat, kun je kiezen uit verschillende veelvoorkomende workflows: + +1. **Converteren naar PDF** – Ideaal voor archivering of afdrukken. +2. **Renderen naar PNG/JPEG** – Handig voor miniaturen of visuele previews. +3. **De DOM bewerken** – Elementen invoegen, verwijderen of aanpassen vóór het opslaan. +4. **Tekst extraheren** – Platte‑tekstinhoud ophalen voor indexering of analyse. + +### Voorbeeld: Converteren naar PDF met aangepaste paginagrootte + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**Verwachte output:** Een bestand genaamd `big_page.pdf` verschijnt in de werkmap, met de gerenderde HTML en alle toegestane resources toegepast. Als je `max_handling_depth` op 3 zet, worden alleen resources tot drie niveaus diep ingebed, waardoor de PDF‑grootte redelijk blijft. + +--- + +## Veelvoorkomende valkuilen en hoe ze te vermijden + +| Symptoom | Oorzaak | Oplossing | +|------------------------------------------|--------------------------------------------------|-----------| +| Ontbrekende afbeeldingen in de gerenderde PDF | `allow_external_resources` staat op `False` | Schakel externe resources in of embed afbeeldingen lokaal | +| `TimeoutError` tijdens laden | Netwerkvertraging overschrijdt `timeout` | Verhoog `rh_opts.timeout` of download assets vooraf | +| Onverwachte CSS‑styling | Gelinkte stylesheet niet geladen door diepte‑limiet | Verhoog `max_handling_depth` of voeg benodigde CSS handmatig toe | +| `UnicodeDecodeError` bij niet‑UTF8‑bestanden | HTML‑bestand gebruikt een andere encoding | Geef `encoding="windows-1252"` mee bij het aanmaken van `HTMLDocument` | + +--- + +## Volledig, uitvoerbaar voorbeeld + +Hieronder staat een zelfstandige script dat je kunt kopiëren‑plakken naar een bestand genaamd `load_html_demo.py`. Het bevat installatie‑instructies, foutafhandeling en een laatste verificatiestap. + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +**Het script uitvoeren** + +```bash +python load_html_demo.py +``` + +Je zou console‑output moeten zien die het laden bevestigt, een lijst met afbeelding‑URL’s, en een succesbericht voor de PDF‑conversie. Het gegenereerde `big_page.pdf` zal de HTML‑inhoud weergeven, beperkt door de geconfigureerde **max_handling_depth**. + +--- + +## Conclusie + +In deze tutorial hebben we behandeld **hoe html te laden** met **Aspose.HTML for Python**, **ResourceHandlingOptions** geconfigureerd om `max_handling_depth` te beheersen, en praktische post‑load acties gedemonstreerd zoals afbeeldingsextractie en PDF‑conversie. Door de stappen te volgen, heb je nu een betrouwbare basis voor elke **HTML‑conversie**‑workflow, of je nu een web‑scraper, een document‑archiveringsservice of een dynamische rapportgenerator bouwt. + +**Volgende stappen** + +* Experimenteer met verschillende `max_handling_depth`‑waarden om een balans te vinden tussen volledigheid en prestaties. +* Probeer het document te converteren naar + + +## Wat moet je hierna leren? + + +De volgende tutorials behandelen nauw verwante onderwerpen die voortbouwen op de technieken die in deze gids zijn gedemonstreerd. Elke bron bevat volledige werkende code‑voorbeelden met stap‑voor‑stap uitleg om je te helpen extra API‑functies onder de knie te krijgen en alternatieve implementatie‑benaderingen in je eigen projecten te verkennen. + +- [How to Parse HTML Java – Load, Query & Count Elements](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [How to Edit HTML Document Tree in Aspose.HTML for Java](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [Handle Document Load Events in Aspose.HTML for Java](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/english/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..0cb06b7a5 --- /dev/null +++ b/html/english/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-08-22 +description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: en +lastmod: 2026-08-22 +og_description: How to convert HTML to PDF in Python with Aspose.HTML. This tutorial + shows you how to create PDF from HTML file, generate PDF from HTML code, and save + HTML as PDF Python. +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: How to convert HTML to PDF in Python – step‑by‑step guide +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: How to convert HTML to PDF in Python with Aspose.HTML +url: /python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to convert HTML to PDF in Python with Aspose.HTML + +If you need to **how to convert html to pdf** quickly, this guide shows you a complete, ready‑to‑run solution. You’ll see how to **create pdf from html file**, **generate pdf from html code**, and **save html as pdf python** using Aspose.HTML’s simple API. + +We’ll walk through every step, explain why each line matters, and cover common pitfalls so you can adapt the code to any project. No external tools, just a few lines of Python. + +## Prerequisites + +Before you start, make sure you have: + +* Python 3.8 or newer installed. +* An active Aspose.HTML for Python license (or a free evaluation key). +* The `aspose.html` package installed: + +```bash +pip install aspose-html +``` + +Having these in place ensures the conversion runs without runtime errors. + +## Step 1: Load the HTML document (create pdf from html file) + +The first task is to read the source HTML. Aspose.HTML represents a document with the `HTMLDocument` class, which abstracts file I/O, network fetching, and DOM parsing. + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*Why this matters:* +`HTMLDocument` loads the HTML, resolves relative resources (images, CSS, fonts), and builds a DOM that the converter can render accurately. Skipping this step or using a plain string would lose those resource resolutions. + +## Step 2: Configure PDF save options (save html as pdf python) + +Aspose.HTML lets you fine‑tune the PDF output via `PdfSaveOptions`. The default configuration already produces a high‑quality PDF, but you can adjust page size, compression, or metadata if needed. + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*Why this matters:* +Even if you keep the defaults, creating an options object makes the code extensible. Future changes—like embedding a PDF password—can be added without restructuring the script. + +## Step 3: Perform the conversion (convert html to pdf python) + +The `Converter.convert` method ties the HTML document and the PDF options together, writing the result to a file path you specify. + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*Why this matters:* +`Converter.convert` executes the rendering engine, rasterizing HTML/CSS to PDF vectors. It handles complex layouts, embedded fonts, and SVG graphics automatically—something manual libraries often miss. + +### Expected output + +Running the script produces `sample.pdf` in the same directory. Open it with any PDF viewer; you should see a faithful representation of `sample.html`, including styles, images, and page breaks. + +## Common variations and edge cases + +| Situation | How to handle it | +|-----------|-----------------| +| **HTML is a string, not a file** | Use `HTMLDocument.from_string(html_string)` instead of loading from a path. | +| **You need a password‑protected PDF** | Set `pdf_options.encryption.password = "yourPassword"` before conversion. | +| **Large HTML files cause memory pressure** | Enable streaming mode: `pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`. | +| **Custom fonts are missing** | Register the font folder: `pdf_options.fonts_folder = "path/to/fonts"`.| + +These variations illustrate the flexibility of the Aspose.HTML API while keeping the core workflow identical. + +## Full script (generate pdf from html code) + +Below is the complete, runnable program that incorporates all steps. Copy‑paste it, replace `YOUR_DIRECTORY` with an actual folder, and execute. + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +Run it with: + +```bash +python convert_html_to_pdf.py +``` + +You’ll see the confirmation message, and the PDF will appear beside the source HTML. + +## Troubleshooting tips (pro tip) + +* **Missing images or CSS** – Ensure the HTML file uses absolute URLs or that the relative paths are correct relative to `YOUR_DIRECTORY`. +* **Unicode characters appear as squares** – Embed the required fonts via `pdf_options.fonts_folder`. +* **Conversion is slow** – Turn on `pdf_options.use_system_fonts = False` to avoid scanning the system font catalog. + +## Conclusion + +You now know **how to convert html to pdf** in Python with Aspose.HTML, from loading an HTML file to saving a high‑quality PDF. The same pattern lets you **create pdf from html file**, **generate pdf from html code**, and **save html as pdf python** for any automation workflow. + +Next, you might explore: + +* Adding watermarks or headers/footers (keyword: *create pdf from html file*). +* Converting a live URL instead of a local file (keyword: *convert html to pdf python*). +* Integrating the converter into a Flask or Django API to serve PDFs on demand. + +Feel free to experiment with the options, and happy PDF generation! + + +## What Should You Learn Next? + + +The following tutorials cover closely related topics that build on the techniques demonstrated in this guide. Each resource includes complete working code examples with step-by-step explanations to help you master additional API features and explore alternative implementation approaches in your own projects. + +- [Convert HTML to PDF with Aspose.HTML – Full Manipulation Guide](/html/english/) +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Convert HTML to PDF in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-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/english/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/og-image.png b/html/english/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..803d1430f5973a029dc6a9b1de51861d6cd2e31d GIT binary patch literal 46799 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 +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to create markdown from HTML in Python – complete guide + +If you need to know **how to create markdown** from existing web content, you can convert an HTML file to markdown with just a few lines of Python. This tutorial walks you through **convert html to markdown** using a dedicated **html to markdown library** that works on Windows, macOS, and Linux. + +You’ll learn how to install the library, load an HTML document, configure Git‑flavored markdown options, and write the result to disk. By the end of the guide you can transform any **html file to markdown** automatically, which is useful for static‑site generators, documentation pipelines, or content migration projects. + +## Prerequisites + +Before you start, make sure you have: + +* Python 3.8 or newer installed (check with `python --version`). +* Access to a terminal or command prompt. +* An HTML file you want to convert (the example uses `sample.html`). +* Internet connection to install the required package. + +The code example uses the **GroupDocs.Conversion for Python** library, which provides the `HTMLDocument`, `MarkdownSaveOptions`, and `Converter` classes shown later. The same concepts apply to other **html to markdown python** packages such as `markdownify` or `html2text`—the only difference is the import statements. + +## How to create markdown – step 1: install the html to markdown python library + +The first task is to add the conversion library to your environment. Run the following pip command in your terminal: + +```bash +pip install groupdocs-conversion +``` + +> **Pro tip:** Use a virtual environment (`python -m venv .venv`) to keep dependencies isolated from your global Python installation. + +Installing the package gives you access to the `HTMLDocument`, `MarkdownSaveOptions`, and `Converter` classes required for the conversion process. + +## Convert html to markdown – step 2: load the HTML document + +After the library is installed, import the necessary classes and create an `HTMLDocument` instance that points to your source file. + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +The `HTMLDocument` object reads the file and prepares it for conversion. If the file does not exist, the constructor raises a `FileNotFoundError`, so ensure the path is correct. + +## html file to markdown – step 3: configure Git‑flavored markdown options + +Many projects prefer Git‑flavored markdown because it adds support for tables, task lists, and strikethrough syntax. The library lets you enable this preset via the `git` property on `MarkdownSaveOptions`. + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +Setting `git = True` tells the converter to emit syntax that GitHub, GitLab, and Bitbucket render correctly. If you need plain markdown, leave the flag `False`. + +## Save the markdown output – step 4: write the result with the html to markdown library + +Finally, invoke the `Converter.convert` method, passing the source document, the options object, and the destination path. + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +When the script finishes, `git_flavored.md` contains the markdown representation of `sample.html`. You can open the file in any editor or feed it directly to a static‑site generator. + +### Expected output + +Assuming `sample.html` contains a simple heading and paragraph, the generated markdown might look like: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +If the original HTML includes tables, lists, or code blocks, the Git‑flavored preset will preserve those structures using the appropriate markdown syntax. + +## Understanding the html to markdown library + +The **GroupDocs.Conversion** library abstracts away the parsing and rendering details that you would otherwise handle manually. It: + +* Preserves CSS‑based styling where possible (e.g., bold, italics). +* Generates clean, readable markdown without extra HTML entities. +* Supports batch conversion, so you can loop over a directory of HTML files with the same code. + +If you prefer a lighter‑weight solution, the `markdownify` package offers a single‑function API: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +Both approaches achieve the same end goal—**convert html to markdown**—but the GroupDocs option provides more control over output format and integrates easily into larger document‑processing pipelines. + +## Common pitfalls and how to avoid them + +| Issue | Why it occurs | Fix | +|-------|---------------|-----| +| Missing images in markdown | The converter only includes image URLs; it does not embed files. | Ensure image files are accessible from the markdown location or copy them alongside the output. | +| Broken relative links | HTML may use relative paths that become invalid after conversion. | Use `md_options.base_path` (if available) to rewrite links, or run a post‑processing script to adjust paths. | +| Unicode characters become escaped | Some libraries escape non‑ASCII characters. | Set `md_options.encode_utf8 = True` (or the equivalent flag) to keep characters intact. | + +Addressing these issues early saves time when you scale the conversion to dozens or hundreds of files. + +## Full, runnable example + +Below is a self‑contained script that you can copy, modify, and run immediately. Replace `YOUR_DIRECTORY` with the actual folder on your machine. + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +Run the script: + +```bash +python markdown_from_html.py +``` + +You should see a confirmation message and a new `git_flavored.md` file containing the markdown version of your HTML. + +## Conclusion + +You now know **how to create markdown** from an HTML source using Python. The guide covered installing a reliable **html to markdown library**, loading an **html file to markdown**, configuring **html to markdown python** options, and saving the result. With this foundation you can automate documentation pipelines, migrate legacy web pages, or generate content for static‑site generators. + +**Next steps** + +* Explore batch conversion by iterating over a folder of HTML files. +* Customize the `MarkdownSaveOptions` to control heading styles, list formatting, or image handling. +* Combine this script with a CI/CD workflow to keep your markdown documentation up‑to‑date automatically. + +Happy converting! + + +## What Should You Learn Next? + + +The following tutorials cover closely related topics that build on the techniques demonstrated in this guide. Each resource includes complete working code examples with step-by-step explanations to help you master additional API features and explore alternative implementation approaches in your own projects. + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-in-python-complete-guide/og-image.png b/html/english/python/general/how-to-create-markdown-from-html-in-python-complete-guide/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..600c10fd658de771f9dced00a86f66a40bbee8b9 GIT binary patch literal 48958 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 C_=Z^k literal 0 HcmV?d00001 diff --git a/html/english/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/english/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..ac5453e81 --- /dev/null +++ b/html/english/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,188 @@ +--- +category: general +date: 2026-08-22 +description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: en +lastmod: 2026-08-22 +og_description: Create markdown from HTML with Python in just three lines. This guide + shows conversion, formatting options, and how to export HTML to markdown efficiently. +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: Create markdown from HTML in Python – step‑by‑step guide +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: How to create markdown from HTML using Python +url: /python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to create markdown from HTML using Python + +If you need to **create markdown from HTML**, this short guide shows exactly how to do it with Python. You’ll see a clear, three‑step script that loads an HTML file, configures Git‑flavored Markdown output, and writes the result to disk. + +Converting web content to lightweight markup is a common task when building static sites, documentation pipelines, or data‑analysis notebooks. In this tutorial we’ll also touch on how to **convert HTML to markdown** with optional formatting, answer the question **how to convert HTML** efficiently, and demonstrate the **export HTML to markdown** workflow using the popular `groupdocs-conversion` library. + +## Prerequisites + +Before you start, make sure you have: + +* Python 3.8 or newer installed. +* The `groupdocs-conversion` package (or any library that provides `HTMLDocument`, `MarkdownSaveOptions`, and `Converter`). Install it with: + +```bash +pip install groupdocs-conversion +``` + +* An HTML file you want to transform, e.g., `sample.html` located in a folder you control. + +No additional system dependencies are required, and the code works on Windows, macOS, and Linux. + +## Step 1: Load the source HTML document + +The first operation is to create an `HTMLDocument` object that represents the source file. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**Why this matters:** `HTMLDocument` parses the file, resolves relative links, and prepares the DOM for conversion. If the file cannot be found, the constructor raises a clear `FileNotFoundError`, so you can handle missing inputs early. + +## Step 2: Configure Markdown save options (Git‑flavored) + +Markdown has several dialects. Git‑flavored Markdown (GFM) adds tables, task lists, and fenced code blocks, which are often required for README files or GitHub pages. + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**Why this matters:** By explicitly selecting `MarkdownFormatter.GIT`, you ensure that the output follows the same rules that GitHub renders, eliminating surprises when the markdown is displayed in a repository. If you prefer plain Markdown, replace `MarkdownFormatter.GIT` with `MarkdownFormatter.DEFAULT`. + +## Step 3: Convert the HTML document to a Markdown file + +Now invoke the conversion engine and write the result to the target path. + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**Why this matters:** `Converter.convert` handles the heavy lifting—translating HTML tags to their markdown equivalents, preserving images (by copying them to the output folder if needed), and applying the formatter you selected. The method returns `None` on success, but you can catch `ConversionException` for detailed error reporting. + +### Expected output + +After running the script, `sample.md` will contain something like: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +The exact markdown reflects the structure of `sample.html`. Tables, images, and code blocks will be converted according to GFM rules. + +## Common variations and edge cases + +| Situation | Recommended tweak | +|-----------|-------------------| +| **Large HTML files (>10 MB)** | Increase the Python recursion limit or stream the input using `HTMLDocument.open_stream()` if the library supports it. | +| **Images referenced with absolute URLs** | Set `md_options.embed_images = True` to embed images as base‑64 data URIs, or keep them as links for lighter output. | +| **You need plain Markdown instead of GFM** | Change `md_options.formatter = MarkdownFormatter.DEFAULT`. | +| **Custom CSS classes should be ignored** | Use `md_options.ignore_css_classes = ["unwanted-class"]`. | +| **Running in a CI/CD pipeline** | Wrap the script in a `try/except` block and exit with a non‑zero status on failure, so the pipeline can fail fast. | + +### Pro tip + +If you plan to convert many files in a batch, reuse a single `MarkdownSaveOptions` instance and only change the input/output paths inside a loop. This reduces object‑creation overhead and speeds up the process by ~15 %. + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## How to convert HTML to markdown in other languages (quick note) + +While this tutorial focuses on **html to markdown python**, the same concepts apply to Java, C#, or JavaScript SDKs: create a document object, configure a markdown formatter, and invoke the converter. If you ever need to **export HTML to markdown** from a non‑Python environment, look for the equivalent `HtmlDocument`, `MarkdownSaveOptions`, and `Converter` classes in the language‑specific SDK. + +## Conclusion + +You now know how to **create markdown from HTML** with a concise Python script. The three‑step flow—load the HTML, set Git‑flavored options, and run the conversion—covers the core of any **convert html to markdown** workflow. From here you can: + +* Integrate the script into static‑site generators. +* Automate documentation updates in CI pipelines. +* Extend the conversion with custom post‑processing (e.g., link rewrites or heading adjustments). + +Feel free to experiment with the secondary options—**how to convert html** with different formatters, or tweaking **export html to markdown** settings for images and tables. Happy converting! + + +## What Should You Learn Next? + + +The following tutorials cover closely related topics that build on the techniques demonstrated in this guide. Each resource includes complete working code examples with step-by-step explanations to help you master additional API features and explore alternative implementation approaches in your own projects. + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/og-image.png b/html/english/python/general/how-to-create-markdown-from-html-using-python/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..2e67d6200f1a1d77aa2f345a54098868d2a0596a GIT binary patch literal 43607 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 +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to create PDF from SVG in Python – complete guide + +If you need to **create PDF from SVG** quickly, this tutorial shows you exactly how. We'll walk through converting an SVG file to a PDF using a popular SVG‑to‑PDF converter, so you can embed vector graphics in reports, invoices, or e‑books without leaving your Python code. + +You’ll learn how to **convert SVG to PDF**, manage scaling, preserve fonts, and finally **save SVG as PDF** with a single, reproducible script. No external command‑line tools are required—just a few lines of Python and the Aspose.SVG for Python library. + +## Prerequisites + +Before you start, make sure you have: + +| Requirement | Reason | +|-------------|--------| +| Python 3.8+ | The library targets modern Python runtimes. | +| `aspose.svg` package | Provides `SVGDocument`, `PdfSaveOptions`, and `Converter`. Install with `pip install aspose-svg`. | +| An SVG file (`vector.svg`) | The source vector graphic you want to convert. | +| Write permission to the output folder | Needed for **save SVG as PDF**. | + +You can install the library with: + +```bash +pip install aspose-svg +``` + +> **Pro tip:** Use a virtual environment (`python -m venv venv`) to keep dependencies isolated. + +## Overview of the conversion process + +The conversion consists of three simple steps: + +1. Load the **SVG document** from disk. +2. Create **PDF save options** (you can customize page size, DPI, etc.). +3. Call the **converter** to produce a PDF file. + +The following sections break each step down, explain *why* the code is written that way, and show the full, runnable script. + +## Create PDF from SVG using Aspose.SVG for Python + +This H2 header contains the primary keyword **create pdf from svg**, satisfying the SEO requirement. + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### Why this works + +* **`SVGDocument`** parses the SVG XML and builds an in‑memory representation that the converter can render. +* **`PdfSaveOptions`** lets you tweak the PDF output (page size, compression, DPI). The defaults already produce a faithful PDF, which is why the example works out‑of‑the‑box. +* **`Converter.convert`** performs the heavy lifting: it rasterises the vector data onto PDF pages while preserving vector fidelity, so the resulting PDF remains crisp at any zoom level. + +## Convert SVG to PDF with custom page size + +If you need a specific page size—say, A4 for printable reports—adjust the `PdfSaveOptions`: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **Edge case:** Some SVGs define a `viewBox` that doesn't match the desired PDF dimensions. Overriding `page_width`/`page_height` ensures the PDF fits your layout expectations. + +## Save SVG as PDF while preserving fonts + +When your SVG references external fonts, make sure the fonts are accessible to the converter. Place the `.ttf` files in the same directory as the SVG or specify a custom font folder: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +The converter embeds the fonts directly into the PDF, guaranteeing that **svg file to pdf** conversion looks identical on any machine. + +## Batch conversion: svg file to pdf for many files + +Often you have a folder full of SVG assets. The following loop demonstrates an efficient **svg to pdf converter** that processes every `.svg` file in a directory: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +This snippet illustrates a practical **convert svg to pdf** workflow that can be integrated into CI pipelines or automated report generators. + +## Verify the output + +After running the script, open the generated PDF with any viewer (Adobe Reader, Chrome, or Preview). You should see: + +* Vector shapes rendered sharply at any zoom level. +* Text that matches the SVG source, with fonts embedded if you supplied them. +* No raster artefacts—because the conversion retains the original vector data. + +If you notice missing fonts, double‑check that the font files are reachable and that the SVG references them correctly (`font-family` attribute). + +## Common pitfalls and how to avoid them + +| Symptom | Likely cause | Fix | +|---------|--------------|-----| +| Blank PDF pages | SVG has external resources (images, fonts) not found | Provide `fonts_folder` and ensure linked images are in the same directory or use absolute URLs. | +| Text appears as outlines | Font not embedded | Set `pdf_options.embed_fonts = True` (default) and verify the font file is present. | +| PDF is larger than expected | High DPI or uncompressed images | Reduce `pdf_options.dpi` or enable compression: `pdf_options.compress = True`. | +| SVG dimensions are clipped | `viewBox` larger than PDF page | Adjust `pdf_options.page_width`/`page_height` or scale the SVG via `svg_doc.set_viewport`. | + +## Full end‑to‑end example + +Below is a self‑contained script that includes error handling, logging, and optional command‑line arguments. Save it as `svg_to_pdf.py` and run `python svg_to_pdf.py`. + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +Running the script produces a **save SVG as PDF** operation that you can embed in larger automation pipelines. + +### Expected console output + +``` +✅ /path/to/vector.svg → / + + +## What Should You Learn Next? + + +The following tutorials cover closely related topics that build on the techniques demonstrated in this guide. Each resource includes complete working code examples with step-by-step explanations to help you master additional API features and explore alternative implementation approaches in your own projects. + +- [Convert SVG to PDF in .NET with Aspose.HTML](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg to pdf java – Generate PDF from SVG with Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [Convierte SVG a PDF en .NET con Aspose.HTML](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/english/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/og-image.png b/html/english/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..6ec7e70edc4c3e7b1f373a2821e8e01a750b7da8 GIT binary patch literal 51105 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 be)I=L6e<$LT+$9M@`U0O)yIXhul)ZPYa^{& literal 0 HcmV?d00001 diff --git a/html/english/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/english/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..0ccba9a7e --- /dev/null +++ b/html/english/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-08-22 +description: how to enable streaming for large HTML to PDF conversion in Python, reducing + memory usage and speeding up output generation. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: en +lastmod: 2026-08-22 +og_description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: Enable streaming for HTML‑to‑PDF conversion in Python +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: How to enable streaming when converting HTML to PDF in Python +url: /python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to enable streaming when converting HTML to PDF in Python + +If you need to **how to enable streaming** during a large HTML‑to‑PDF conversion, this guide shows you the exact steps. By enabling streaming you avoid loading the entire document into memory, which is essential when you convert HTML to PDF for big files. + +You’ll learn how to enable streaming, convert HTML to PDF with Python, and handle edge cases such as large HTML to PDF jobs. The solution works with the popular `groupdocs-conversion` (or similar) library, but the concepts apply to any streaming‑capable converter. + +![Diagram showing streaming conversion from HTML to PDF using Python](streaming-diagram.png) + +## What you’ll need + +- Python 3.9 or newer +- `groupdocs-conversion` (or any library that offers `PdfSaveOptions` with a streaming flag) +- An HTML file that you want to turn into a PDF (the example uses a large file named `large.html`) + +Having these prerequisites ensures the code runs without additional configuration. + +## Step 1: Install the conversion library + +First, install the Python package that provides `HTMLDocument`, `PdfSaveOptions`, and `Converter`. The most common choice is the **GroupDocs.Conversion** SDK: + +```bash +pip install groupdocs-conversion +``` + +> **Pro tip:** Use a virtual environment (`python -m venv .venv`) to keep dependencies isolated. + +## Step 2: Load the HTML document you want to convert + +Loading the source HTML is straightforward. The `HTMLDocument` class reads the file from disk and prepares it for conversion. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +The `HTMLDocument` object represents the entire HTML markup, including external resources such as images and CSS. This is the starting point for any **convert html to pdf** operation. + +## Step 3: Create PDF save options and enable streaming + +Enabling streaming is the core of **how to enable streaming**. Instead of buffering the whole PDF in memory, the converter writes chunks directly to the output file. + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +When `enable_streaming` is set to `True`, the library uses a write‑through approach that dramatically reduces RAM consumption—crucial for **large html to pdf** scenarios. + +## Step 4: Convert the HTML document to PDF using the configured options + +Now invoke the conversion. The `Converter.convert` method takes the source document, the options object, and the destination path. + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +After this call finishes, `large.pdf` contains the rendered PDF, generated while streaming data to disk. The entire process typically finishes faster than a non‑streaming conversion because the operating system can flush data to the file system incrementally. + +### Expected output + +Running the script produces a PDF file whose size matches the content of the original HTML. You can verify the result with any PDF viewer: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## Why streaming matters for large HTML to PDF conversions + +When you **convert html to pdf** without streaming, the library first builds the entire PDF in RAM before writing it to disk. For a modest page this is fine, but a **large html to pdf** job (e.g., a 10‑MB HTML report with many images) can exceed the memory limits of typical serverless functions or low‑memory containers. + +Enabling streaming solves three problems: + +1. **Memory efficiency** – only a small buffer is kept in RAM. +2. **Faster perceived performance** – the file appears on disk while still being generated, allowing downstream processes to start reading it earlier. +3. **Scalability** – you can run many conversions in parallel without exhausting the host’s memory. + +## Common pitfalls and how to avoid them + +| Symptom | Likely cause | Fix | +|---------|--------------|-----| +| `MemoryError` during conversion | Streaming flag not set or library version too old | Ensure `pdf_opts.enable_streaming = True` and upgrade to the latest SDK (`pip install --upgrade groupdocs-conversion`). | +| Missing images in the PDF | Relative image paths cannot be resolved | Pass the base directory to `HTMLDocument` or embed images as base64. | +| Output PDF is blank | HTML file not found or unreadable | Verify the path `"YOUR_DIRECTORY/large.html"` and check file permissions. | +| Conversion hangs indefinitely | Large external resources (fonts, CSS) block rendering | Pre‑download external assets or use a headless browser to inline them. | + +### Edge case: Converting HTML from a string + +If your HTML content lives in memory rather than a file, you can still **how to enable streaming** by wrapping the string in an `HTMLDocument` constructor that accepts raw HTML: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +The streaming behavior remains identical because the SDK writes the PDF incrementally. + +## Full script you can copy‑paste + +Below is a complete, ready‑to‑run example that incorporates all the steps discussed. Replace `YOUR_DIRECTORY` with the actual path on your machine. + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +Running `python full_example.py` will generate `large.pdf` using the streaming approach. + +## Recap + +- You now know **how to enable streaming** for HTML‑to‑PDF conversion in Python. +- The script demonstrates the full **convert html to pdf** workflow, handling **large html to pdf** workloads efficiently. +- By setting `PdfSaveOptions.enable_streaming = True`, the converter writes output progressively, which is the recommended way to **stream html to pdf**. + +## What to explore next + +- **HTML to PDF Python** libraries that support CSS3 and JavaScript (e.g., `WeasyPrint`, `pdfkit`). +- Adding password protection or encryption to the generated PDF via additional `PdfSaveOptions` settings. +- Parallelizing multiple conversions in a queue system (Celery, RabbitMQ) while keeping memory usage low. + +Feel free to experiment with different HTML sources, page sizes, and PDF metadata. Streaming makes it possible to handle even larger documents without sacrificing performance. Happy coding! + + +## What Should You Learn Next? + + +The following tutorials cover closely related topics that build on the techniques demonstrated in this guide. Each resource includes complete working code examples with step-by-step explanations to help you master additional API features and explore alternative implementation approaches in your own projects. + +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Create Fixed Thread Pool for Parallel HTML to PDF Conversion](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [How to Enable JavaScript in Aspose HTML – Load HTML & Get Text](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/og-image.png b/html/english/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..f92bd5aa0d44acf3233a2037eab74e9efdd8b301 GIT binary patch literal 43767 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 literal 0 HcmV?d00001 diff --git a/html/english/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/english/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..2dac86ffa --- /dev/null +++ b/html/english/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-08-22 +description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: en +lastmod: 2026-08-22 +og_description: How to export links from an HTML document and convert it to a markdown + file, including paragraphs. Follow this complete tutorial for reliable HTML to markdown + conversion. +og_image_alt: How to export links while converting HTML to Markdown +og_title: How to export links while converting HTML to Markdown – step-by-step guide +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: How to export links while converting HTML to Markdown +url: /python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to export links while converting HTML to Markdown + +If you need to **how to export links** from an HTML page and turn the result into a clean **html to markdown file**, this guide shows you the exact steps. You’ll also discover **how to extract paragraphs** so the markdown output contains the main content you care about. By the end of the tutorial you can answer the question “**how to convert html** to markdown” with a ready‑to‑run script. + +Exporting links and extracting paragraphs are common tasks when you migrate web content to static sites, documentation portals, or headless CMS back‑ends. The approach below works with the GroupDocs Conversion SDK for Python, but the concepts apply to any library that lets you configure export features. + +--- + +## What you’ll need + +- Python 3.9 or newer +- `groupdocs-conversion` package (install with `pip install groupdocs-conversion`) +- An HTML file you want to process (e.g., `input.html`) +- Basic familiarity with Python scripting + +--- + +## How to export links with HTML to Markdown conversion + +The first major step is configuring the conversion so that only the desired features—links and paragraphs—are written to the **html to markdown file**. The SDK lets you set a bitmask of `MarkdownFeature` values; we combine `LINKS` and `PARAGRAPHS` to keep the output focused. + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### Why this works + +- **`HTMLDocument`** parses the original file and builds a DOM that the converter can walk. +- **`MarkdownSaveOptions`** gives you fine‑grained control over what the SDK writes. Setting `features` to `LINKS | PARAGRAPHS` tells the engine to ignore images, tables, or scripts, which reduces noise in the final **html to markdown file**. +- **`Converter.convert`** performs the heavy lifting. It respects the feature mask, extracts anchor tags (``) and paragraph tags (`

`), and writes them using standard Markdown syntax. + +--- + +## How to convert HTML to Markdown with full content (optional) + +If you later decide you need the entire page—not just links and paragraphs—simply adjust the feature mask: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +Running the same conversion now produces a complete **html to markdown file** that mirrors the original layout. This demonstrates **how to convert html** in a flexible way: you control the output by toggling feature flags. + +--- + +## How to extract paragraphs only + +Sometimes you only care about the textual bodies of an article, not the hyperlinks. You can isolate paragraphs by setting the mask to `PARAGRAPHS` alone: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +The resulting markdown will contain clean, line‑wrapped text without any link markup. This snippet answers the question **how to extract paragraphs** from an HTML source. + +--- + +## Common pitfalls and how to avoid them + +| Issue | Why it happens | Fix | +|-------|----------------|-----| +| Empty output file | The source HTML contains no `` or `

` tags that match the selected features. | Verify the HTML structure or broaden the feature mask (e.g., include `HEADINGS`). | +| Encoding problems | The HTML uses a non‑UTF‑8 charset and the SDK reads it incorrectly. | Pass an explicit encoding to `HTMLDocument`, e.g., `HTMLDocument(path, encoding="iso-8859-1")`. | +| Over‑writing existing markdown | Running the script multiple times replaces the previous file. | Add a timestamp to the output filename or check `os.path.exists` before writing. | + +**Pro tip:** When processing many files in a folder, wrap the conversion logic in a loop and log each result. This gives you a clear audit trail and makes it easy to resume after a failure. + +--- + +## Full script you can copy‑paste + +Below is a self‑contained Python file (`convert_links_paragraphs.py`) that you can run directly. It includes argument parsing so you can specify input and output paths without editing the code. + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**How to run** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +The command above demonstrates **how to export links** and **how to extract paragraphs** in a single call. Omit `--links` or `--paragraphs` to tailor the output to your needs. + +--- + +## Verification – what the output looks like + +Given the following simple HTML (`input.html`): + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +Running the script with both flags produces `links_and_paragraphs.md`: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +You can see that only the two paragraphs and the hyperlink are present—exactly what you asked for when you searched **how to export links** while performing **convert html to markdown**. + +--- + +## Next steps and related topics + +- **How to convert html to markdown** with images: add `MarkdownFeature.IMAGES` to the mask. +- **How to extract paragraphs** and then post‑process + + +## What Should You Learn Next? + + +The following tutorials cover closely related topics that build on the techniques demonstrated in this guide. Each resource includes complete working code examples with step-by-step explanations to help you master additional API features and explore alternative implementation approaches in your own projects. + +- [How to Set Offset When Converting HTML to Markdown in Java](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown to HTML Java - Convert with Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [Convert HTML to Markdown – Complete C# Guide](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/og-image.png b/html/english/python/general/how-to-export-links-while-converting-html-to-markdown/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..c3aa7d2a95673b539be4dc72d06228d9232d8d1b GIT binary patch literal 49610 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 du}Y1-^Sa`n(2^`M8_>r~ax%&}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to load HTML with Aspose.HTML in Python + +If you need to **how to load html** quickly and safely in a Python project, this guide shows you the exact steps. By the end of the first two sentences you’ll know how to configure resource handling, load the file, and keep the process ready for further **HTML conversion** or editing. + +Loading large or complex pages often trips up naïve parsers because external resources (images, scripts, CSS) can cause deep recursion or network delays. This tutorial covers a robust pattern using **Aspose.HTML for Python**, demonstrates the **HTMLDocument class**, and explains why setting **max_handling_depth** matters. + +You’ll walk through: + +* Installing the Aspose.HTML package +* Creating a `ResourceHandlingOptions` instance and limiting depth +* Using the `HTMLDocument` class to load a page +* Preparing the document for conversion to PDF, PNG, or further manipulation + +No prior experience with Aspose.HTML is required, only basic Python knowledge. + +--- + +## How to load HTML with Aspose.HTML in Python + +The core of the solution is a three‑step pattern that combines **ResourceHandlingOptions** with the **HTMLDocument class**. Limiting the handling depth prevents runaway network calls when a page references many nested resources. + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### Why this works + +* **`ResourceHandlingOptions`** tells the parser how many levels of external resources it may follow. Setting `max_handling_depth = 3` stops the loader after three hops, which is enough for most sites but protects against infinite loops. +* **`HTMLDocument`** reads the file, applies the options, and builds an in‑memory DOM that you can query, modify, or render. +* The optional conversion snippet demonstrates how the loaded document integrates with **HTML conversion** features, such as saving to PDF. + +--- + +## Understanding ResourceHandlingOptions + +`ResourceHandlingOptions` is part of **Aspose.HTML for Python** and gives you fine‑grained control over network activity. + +| Property | Purpose | Typical value | +|-------------------------|----------------------------------------------------|---------------| +| `max_handling_depth` | Maximum recursion depth for linked resources | `3` (default) | +| `allow_external_resources` | Whether to download external CSS, JS, images | `True` | +| `timeout` | Network timeout per request (seconds) | `30` | + +**Practical tip:** If you know the target page only references local assets, set `allow_external_resources = False` to speed up loading and avoid unnecessary HTTP calls. + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## Using the HTMLDocument class + +The **HTMLDocument class** is the entry point for all Aspose.HTML operations. Once instantiated, you can: + +* Access the DOM via `doc.root` +* Query elements with CSS selectors (`doc.query_selector_all("img")`) +* Render the page to raster formats (`doc.save("page.png")`) +* Convert to PDF (`doc.save("page.pdf", PDFSaveOptions())`) + +Below is a short snippet that extracts all image `src` attributes after loading: + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**Why you might need this:** When performing **HTML conversion**, you often have to adjust or replace image URLs before rendering to another format. Accessing the DOM directly gives you that flexibility. + +--- + +## Next steps after loading the HTML + +Now that the document is in memory, you can choose from several common workflows: + +1. **Convert to PDF** – Ideal for archiving or printing. +2. **Render to PNG/JPEG** – Useful for thumbnails or visual previews. +3. **Edit the DOM** – Insert, remove, or modify elements before saving. +4. **Extract text** – Pull plain‑text content for indexing or analysis. + +### Example: Convert to PDF with custom page size + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**Expected output:** A file named `big_page.pdf` appears in the working directory, containing the rendered HTML with all allowed resources applied. If you set `max_handling_depth` to 3, only resources up to three levels deep are embedded, keeping the PDF size reasonable. + +--- + +## Common pitfalls and how to avoid them + +| Symptom | Cause | Fix | +|--------------------------------------|----------------------------------------|-----| +| Missing images in the rendered PDF | `allow_external_resources` set to `False` | Enable external resources or embed images locally | +| `TimeoutError` during load | Network latency exceeds `timeout` | Increase `rh_opts.timeout` or pre‑download assets | +| Unexpected CSS styling | Linked stylesheet not loaded due to depth limit | Raise `max_handling_depth` or manually add required CSS | +| `UnicodeDecodeError` on non‑UTF8 files| HTML file uses a different encoding | Pass `encoding="windows-1252"` when creating `HTMLDocument` | + +--- + +## Full, runnable example + +Below is a self‑contained script you can copy‑paste into a file named `load_html_demo.py`. It includes installation instructions, error handling, and a final verification step. + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +**Running the script** + +```bash +python load_html_demo.py +``` + +You should see console output confirming the load, a list of image URLs, and a success message for the PDF conversion. The generated `big_page.pdf` will reflect the HTML content limited by the configured **max_handling_depth**. + +--- + +## Conclusion + +In this tutorial we covered **how to load html** using **Aspose.HTML for Python**, configured **ResourceHandlingOptions** to control `max_handling_depth`, and demonstrated practical post‑load actions such as image extraction and PDF conversion. By following the steps you now have a reliable foundation for any **HTML conversion** workflow, whether you’re building a web‑scraper, a document‑archiving service, or a dynamic report generator. + +**Next steps** + +* Experiment with different `max_handling_depth` values to balance completeness vs. performance. +* Try converting the document to + + +## What Should You Learn Next? + + +The following tutorials cover closely related topics that build on the techniques demonstrated in this guide. Each resource includes complete working code examples with step-by-step explanations to help you master additional API features and explore alternative implementation approaches in your own projects. + +- [How to Parse HTML Java – Load, Query & Count Elements](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [How to Edit HTML Document Tree in Aspose.HTML for Java](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [Handle Document Load Events in Aspose.HTML for Java](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/og-image.png b/html/english/python/general/how-to-load-html-with-aspose-html-in-python/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..71fdcd9d2dc3d33e7efa2a96e66eade110046743 GIT binary patch literal 42427 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

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +Le comportement de streaming reste identique car le SDK écrit le PDF de façon incrémentale. + +## Script complet à copier‑coller + +Ci‑dessous se trouve un exemple complet, prêt à l’exécution, qui intègre toutes les étapes décrites. Remplacez `YOUR_DIRECTORY` par le chemin réel sur votre machine. + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +L’exécution de `python full_example.py` générera `large.pdf` en utilisant l’approche streaming. + +## Récapitulatif + +- Vous savez maintenant **how to enable streaming** pour la conversion HTML‑vers‑PDF en Python. +- Le script montre le flux complet **convert html to pdf**, gérant efficacement les charges de travail **large html to pdf**. +- En définissant `PdfSaveOptions.enable_streaming = True`, le convertisseur écrit la sortie progressivement, ce qui est la méthode recommandée pour **stream html to pdf**. + +## Que explorer ensuite + +- Bibliothèques **HTML to PDF Python** qui supportent CSS3 et JavaScript (par ex., `WeasyPrint`, `pdfkit`). +- Ajouter une protection par mot de passe ou un chiffrement au PDF généré via des paramètres supplémentaires de `PdfSaveOptions`. +- Paralleliser plusieurs conversions dans un système de file d’attente (Celery, RabbitMQ) tout en maintenant une faible utilisation de la mémoire. + +N’hésitez pas à expérimenter avec différentes sources HTML, tailles de page et métadonnées PDF. Le streaming rend possible la gestion de documents encore plus volumineux sans sacrifier les performances. Bon codage ! + +## Que devriez‑vous apprendre ensuite ? + +Les tutoriels suivants couvrent des sujets étroitement liés qui s’appuient sur les techniques démontrées dans ce guide. Chaque ressource comprend des exemples de code complets et fonctionnels avec des explications étape par étape pour vous aider à maîtriser des fonctionnalités API supplémentaires et explorer des approches d’implémentation alternatives dans vos propres projets. + +- [Comment convertir du HTML en PDF Java – Utilisation d’Aspose.HTML pour Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Créer un pool de threads fixes pour la conversion parallèle HTML en PDF](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [Comment activer JavaScript dans Aspose HTML – Charger le HTML & obtenir le texte](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/french/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..40d2b2ee4 --- /dev/null +++ b/html/french/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-08-22 +description: Comment exporter les liens depuis le HTML et les convertir en fichier + markdown, y compris les paragraphes. Guide étape par étape pour la conversion du + HTML en markdown. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: fr +lastmod: 2026-08-22 +og_description: Comment exporter les liens d’un document HTML et les convertir en + fichier markdown, y compris les paragraphes. Suivez ce tutoriel complet pour une + conversion fiable du HTML vers le markdown. +og_image_alt: How to export links while converting HTML to Markdown +og_title: Comment exporter les liens lors de la conversion de HTML en Markdown – guide + étape par étape +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: Comment exporter les liens lors de la conversion de HTML en Markdown +url: /fr/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment exporter des liens lors de la conversion de HTML en Markdown + +Si vous devez **exporter des liens** depuis une page HTML et transformer le résultat en un **fichier html vers markdown** propre, ce guide vous montre les étapes exactes. Vous découvrirez également **comment extraire des paragraphes** afin que la sortie markdown contienne le contenu principal qui vous intéresse. À la fin du tutoriel, vous pourrez répondre à la question « **comment convertir html** en markdown » avec un script prêt à l’emploi. + +Exporter des liens et extraire des paragraphes sont des tâches courantes lorsque vous migrez du contenu web vers des sites statiques, des portails de documentation ou des back‑ends CMS sans tête. L’approche ci‑dessous fonctionne avec le GroupDocs Conversion SDK pour Python, mais les concepts s’appliquent à toute bibliothèque qui vous permet de configurer les fonctionnalités d’exportation. + +--- + +## Ce dont vous aurez besoin + +- Python 3.9 ou plus récent +- `groupdocs-conversion` package (installez avec `pip install groupdocs-conversion`) +- Un fichier HTML que vous souhaitez traiter (par ex., `input.html`) +- Familiarité de base avec le scripting Python + +--- + +## Comment exporter des liens avec la conversion HTML vers Markdown + +La première étape majeure consiste à configurer la conversion afin que seules les fonctionnalités souhaitées — liens et paragraphes — soient écrites dans le **fichier html vers markdown**. Le SDK vous permet de définir un masque de bits des valeurs `MarkdownFeature` ; nous combinons `LINKS` et `PARAGRAPHS` pour garder la sortie ciblée. + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### Pourquoi cela fonctionne + +- **`HTMLDocument`** analyse le fichier original et construit un DOM que le convertisseur peut parcourir. +- **`MarkdownSaveOptions`** vous offre un contrôle granulaire sur ce que le SDK écrit. Définir `features` à `LINKS | PARAGRAPHS` indique au moteur d’ignorer les images, tableaux ou scripts, ce qui réduit le bruit dans le **fichier html vers markdown** final. +- **`Converter.convert`** effectue le travail lourd. Il respecte le masque de fonctionnalités, extrait les balises d’ancre (``) et les balises de paragraphe (`

`), et les écrit en utilisant la syntaxe Markdown standard. + +--- + +## Comment convertir HTML en Markdown avec le contenu complet (optionnel) + +Si vous décidez plus tard que vous avez besoin de la page entière — pas seulement les liens et les paragraphes — il suffit d’ajuster le masque de fonctionnalités : + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +Exécuter la même conversion maintenant produit un **fichier html vers markdown** complet qui reflète la mise en page originale. Cela montre **comment convertir html** de manière flexible : vous contrôlez la sortie en activant ou désactivant les indicateurs de fonctionnalités. + +--- + +## Comment extraire uniquement les paragraphes + +Parfois, vous ne vous souciez que du corps textuel d’un article, pas des hyperliens. Vous pouvez isoler les paragraphes en définissant le masque uniquement sur `PARAGRAPHS` : + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +Le markdown résultant contiendra du texte propre, avec retour à la ligne, sans aucune balise de lien. Cet extrait répond à la question **comment extraire des paragraphes** d’une source HTML. + +--- + +## Pièges courants et comment les éviter + +| Problème | Pourquoi cela se produit | Solution | +|----------|--------------------------|----------| +| Fichier de sortie vide | Le HTML source ne contient aucune balise `` ou `

` correspondant aux fonctionnalités sélectionnées. | Vérifiez la structure du HTML ou élargissez le masque de fonctionnalités (par ex., inclure `HEADINGS`). | +| Problèmes d’encodage | Le HTML utilise un jeu de caractères non UTF‑8 et le SDK le lit incorrectement. | Passez un encodage explicite à `HTMLDocument`, par ex., `HTMLDocument(path, encoding="iso-8859-1")`. | +| Écrasement du markdown existant | Exécuter le script plusieurs fois remplace le fichier précédent. | Ajoutez un horodatage au nom du fichier de sortie ou vérifiez `os.path.exists` avant d’écrire. | + +**Astuce :** Lors du traitement de nombreux fichiers dans un dossier, encapsulez la logique de conversion dans une boucle et consignez chaque résultat. Cela vous fournit une trace d’audit claire et facilite la reprise après un échec. + +--- + +## Script complet que vous pouvez copier‑coller + +Ci‑dessous se trouve un fichier Python autonome (`convert_links_paragraphs.py`) que vous pouvez exécuter directement. Il inclut l’analyse des arguments afin que vous puissiez spécifier les chemins d’entrée et de sortie sans modifier le code. + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**Comment exécuter** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +La commande ci‑dessus montre **comment exporter des liens** et **comment extraire des paragraphes** en un seul appel. Omettez `--links` ou `--paragraphs` pour adapter la sortie à vos besoins. + +--- + +## Vérification – à quoi ressemble la sortie + +Étant donné le HTML simple suivant (`input.html`) : + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +Exécuter le script avec les deux indicateurs produit `links_and_paragraphs.md` : + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +Vous pouvez voir que seuls les deux paragraphes et le lien hypertexte sont présents — exactement ce que vous avez demandé en recherchant **comment exporter des liens** lors de la **conversion de html en markdown**. + +--- + +## Prochaines étapes et sujets associés + +- **Comment convertir html en markdown** avec images : ajoutez `MarkdownFeature.IMAGES` au masque. +- **Comment extraire des paragraphes** puis post‑traiter + +## Que devriez‑vous apprendre ensuite ? + +Les tutoriels suivants couvrent des sujets étroitement liés qui s’appuient sur les techniques démontrées dans ce guide. Chaque ressource comprend des exemples de code complets et fonctionnels avec des explications étape par étape pour vous aider à maîtriser des fonctionnalités d’API supplémentaires et explorer des approches d’implémentation alternatives dans vos propres projets. + +- [Comment définir le décalage lors de la conversion de HTML en Markdown en Java](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown vers HTML Java - Convertir avec Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [Convertir HTML en Markdown – Guide complet C#](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/french/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..4c373fa0a --- /dev/null +++ b/html/french/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,280 @@ +--- +category: general +date: 2026-08-22 +description: Comment charger du HTML avec Aspose.HTML en Python – limiter la profondeur + des ressources et préparer le document pour la conversion ou l'édition. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: fr +lastmod: 2026-08-22 +og_description: Comment charger du HTML avec Aspose.HTML en Python, définir la profondeur + de gestion des ressources et préparer le document pour la conversion ou l’édition. +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: Comment charger du HTML avec Aspose.HTML – Guide Python +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: Comment charger du HTML avec Aspose.HTML en Python +url: /fr/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment charger du HTML avec Aspose.HTML en Python + +Si vous devez **charger du HTML** rapidement et en toute sécurité dans un projet Python, ce guide vous montre les étapes exactes. Au bout des deux premières phrases, vous saurez comment configurer la gestion des ressources, charger le fichier et préparer le processus pour une **conversion HTML** ou une édition ultérieure. + +Le chargement de pages volumineuses ou complexes pose souvent problème aux analyseurs naïfs, car les ressources externes (images, scripts, CSS) peuvent entraîner une récursion profonde ou des délais réseau. Ce tutoriel présente un modèle robuste utilisant **Aspose.HTML for Python**, démontre la **classe HTMLDocument**, et explique pourquoi la définition de **max_handling_depth** est importante. + +Vous allez parcourir : + +* L’installation du package Aspose.HTML +* La création d’une instance `ResourceHandlingOptions` et la limitation de la profondeur +* L’utilisation de la classe `HTMLDocument` pour charger une page +* La préparation du document pour la conversion en PDF, PNG ou toute autre manipulation + +Aucune expérience préalable avec Aspose.HTML n’est requise, seulement des connaissances de base en Python. + +--- + +## Comment charger du HTML avec Aspose.HTML en Python + +Le cœur de la solution est un modèle en trois étapes qui combine **ResourceHandlingOptions** avec la **classe HTMLDocument**. Limiter la profondeur de gestion empêche les appels réseau incontrôlés lorsqu’une page référence de nombreuses ressources imbriquées. + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### Pourquoi cela fonctionne + +* **`ResourceHandlingOptions`** indique à l’analyseur combien de niveaux de ressources externes il peut suivre. Fixer `max_handling_depth = 3` arrête le chargeur après trois sauts, ce qui suffit pour la plupart des sites tout en protégeant contre les boucles infinies. +* **`HTMLDocument`** lit le fichier, applique les options et construit un DOM en mémoire que vous pouvez interroger, modifier ou rendre. +* L’extrait de conversion optionnel montre comment le document chargé s’intègre aux fonctionnalités de **conversion HTML**, comme l’enregistrement en PDF. + +--- + +## Comprendre ResourceHandlingOptions + +`ResourceHandlingOptions` fait partie de **Aspose.HTML for Python** et vous offre un contrôle fin sur l’activité réseau. + +| Propriété | Objectif | Valeur typique | +|--------------------------|-----------------------------------------------------|----------------| +| `max_handling_depth` | Profondeur maximale de récursion pour les ressources liées | `3` (par défaut) | +| `allow_external_resources` | Indique s’il faut télécharger les CSS, JS, images externes | `True` | +| `timeout` | Délai d’attente réseau par requête (secondes) | `30` | + +**Conseil pratique :** Si vous savez que la page cible ne référence que des actifs locaux, définissez `allow_external_resources = False` pour accélérer le chargement et éviter les appels HTTP inutiles. + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## Utiliser la classe HTMLDocument + +La **classe HTMLDocument** est le point d’entrée de toutes les opérations Aspose.HTML. Une fois instanciée, vous pouvez : + +* Accéder au DOM via `doc.root` +* Interroger les éléments avec des sélecteurs CSS (`doc.query_selector_all("img")`) +* Rendre la page en formats raster (`doc.save("page.png")`) +* Convertir en PDF (`doc.save("page.pdf", PDFSaveOptions())`) + +Voici un court extrait qui récupère tous les attributs `src` des images après le chargement : + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**Pourquoi cela peut être utile :** Lors d’une **conversion HTML**, il faut souvent ajuster ou remplacer les URL d’images avant de rendre le document dans un autre format. Accéder directement au DOM vous donne cette flexibilité. + +--- + +## Prochaines étapes après le chargement du HTML + +Maintenant que le document est en mémoire, vous pouvez choisir parmi plusieurs flux de travail courants : + +1. **Convertir en PDF** – Idéal pour l’archivage ou l’impression. +2. **Rendre en PNG/JPEG** – Utile pour les miniatures ou les aperçus visuels. +3. **Modifier le DOM** – Insérer, supprimer ou modifier des éléments avant l’enregistrement. +4. **Extraire le texte** – Extraire le contenu texte brut pour l’indexation ou l’analyse. + +### Exemple : Convertir en PDF avec une taille de page personnalisée + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**Résultat attendu :** Un fichier nommé `big_page.pdf` apparaît dans le répertoire de travail, contenant le HTML rendu avec toutes les ressources autorisées appliquées. Si vous avez fixé `max_handling_depth` à 3, seules les ressources jusqu’à trois niveaux de profondeur sont incorporées, ce qui maintient une taille de PDF raisonnable. + +--- + +## Problèmes courants et comment les éviter + +| Symptom | Cause | Solution | +|--------------------------------------|----------------------------------------|----------| +| Images manquantes dans le PDF rendu | `allow_external_resources` mis à `False` | Activer les ressources externes ou intégrer les images localement | +| `TimeoutError` lors du chargement | Latence réseau supérieure au `timeout` | Augmenter `rh_opts.timeout` ou pré‑télécharger les actifs | +| Style CSS inattendu | Feuille de style liée non chargée à cause de la limite de profondeur | Augmenter `max_handling_depth` ou ajouter manuellement le CSS requis | +| `UnicodeDecodeError` sur des fichiers non‑UTF8 | Le fichier HTML utilise un encodage différent | Passer `encoding="windows-1252"` lors de la création de `HTMLDocument` | + +--- + +## Exemple complet, exécutable + +Voici un script autonome que vous pouvez copier‑coller dans un fichier nommé `load_html_demo.py`. Il inclut les instructions d’installation, la gestion des erreurs et une étape de vérification finale. + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +**Exécution du script** + +```bash +python load_html_demo.py +``` + +Vous devriez voir s’afficher dans la console une confirmation du chargement, une liste d’URL d’images, et un message de succès pour la conversion PDF. Le `big_page.pdf` généré reflétera le contenu HTML limité par le **max_handling_depth** configuré. + +--- + +## Conclusion + +Dans ce tutoriel nous avons vu **comment charger du HTML** avec **Aspose.HTML for Python**, configuré **ResourceHandlingOptions** pour contrôler `max_handling_depth`, et démontré des actions pratiques post‑chargement telles que l’extraction d’images et la conversion en PDF. En suivant ces étapes, vous disposez désormais d’une base fiable pour tout flux de **conversion HTML**, que vous construisiez un scraper web, un service d’archivage de documents ou un générateur de rapports dynamiques. + +**Prochaines étapes** + +* Expérimentez avec différentes valeurs de `max_handling_depth` pour équilibrer exhaustivité et performances. +* Essayez de convertir le document en + +## Que devriez‑vous apprendre ensuite ? + +Les tutoriels suivants couvrent des sujets étroitement liés qui s’appuient sur les techniques présentées dans ce guide. Chaque ressource comprend des exemples de code complets avec des explications pas à pas pour vous aider à maîtriser d’autres fonctionnalités de l’API et explorer des approches d’implémentation alternatives dans vos propres projets. + +- [Comment analyser du HTML Java – Charger, interroger & compter les éléments](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [Comment modifier l’arbre d’un document HTML avec Aspose.HTML pour Java](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [Gérer les événements de chargement de document avec Aspose.HTML pour Java](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/german/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..eae273c67 --- /dev/null +++ b/html/german/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-08-22 +description: Wie man HTML in PDF in Python mit Aspose.HTML konvertiert – lernen Sie, + PDF aus einer HTML‑Datei zu erstellen, PDF aus HTML‑Code zu generieren und HTML + schnell als PDF in Python zu speichern. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: de +lastmod: 2026-08-22 +og_description: Wie man HTML in PDF in Python mit Aspose.HTML konvertiert. Dieses + Tutorial zeigt, wie man ein PDF aus einer HTML‑Datei erstellt, ein PDF aus HTML‑Code + generiert und HTML in Python als PDF speichert. +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: Wie man HTML in PDF mit Python konvertiert – Schritt‑für‑Schritt‑Anleitung +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: Wie man HTML in PDF in Python mit Aspose.HTML konvertiert +url: /de/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man HTML zu PDF in Python mit Aspose.HTML konvertiert + +Wenn Sie schnell **wie man HTML zu PDF konvertiert** müssen, zeigt Ihnen diese Anleitung eine vollständige, sofort lauffähige Lösung. Sie sehen, wie Sie **PDF aus HTML-Datei erstellen**, **PDF aus HTML-Code generieren** und **HTML als PDF in Python speichern** mit der einfachen API von Aspose.HTML. + +Wir gehen jeden Schritt durch, erklären, warum jede Zeile wichtig ist, und behandeln häufige Stolperfallen, sodass Sie den Code an jedes Projekt anpassen können. Keine externen Werkzeuge, nur ein paar Zeilen Python. + +## Voraussetzungen + +Bevor Sie beginnen, stellen Sie sicher, dass Sie Folgendes haben: + +* Python 3.8 oder neuer installiert. +* Eine aktive Aspose.HTML for Python Lizenz (oder einen kostenlosen Evaluierungsschlüssel). +* Das Paket `aspose.html` installiert: + +```bash +pip install aspose-html +``` + +Damit ist sichergestellt, dass die Konvertierung ohne Laufzeitfehler abläuft. + +## Schritt 1: Laden des HTML‑Dokuments (PDF aus HTML‑Datei erstellen) + +Die erste Aufgabe besteht darin, das Quell‑HTML zu lesen. Aspose.HTML repräsentiert ein Dokument mit der Klasse `HTMLDocument`, die Datei‑I/O, Netzwerk‑Abrufe und DOM‑Parsing abstrahiert. + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*Warum das wichtig ist:* +`HTMLDocument` lädt das HTML, löst relative Ressourcen (Bilder, CSS, Schriften) auf und baut ein DOM, das der Konverter exakt rendern kann. Wird dieser Schritt übersprungen oder ein einfacher String verwendet, gehen diese Ressourcenauflösungen verloren. + +## Schritt 2: PDF‑Speicheroptionen konfigurieren (HTML als PDF in Python speichern) + +Aspose.HTML ermöglicht das Feintuning der PDF‑Ausgabe über `PdfSaveOptions`. Die Standardkonfiguration erzeugt bereits ein hochwertiges PDF, Sie können jedoch bei Bedarf Seitengröße, Kompression oder Metadaten anpassen. + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*Warum das wichtig ist:* +Selbst wenn Sie die Vorgaben beibehalten, macht das Erstellen eines Options‑Objekts den Code erweiterbar. Zukünftige Änderungen – etwa das Einbetten eines PDF‑Passworts – können hinzugefügt werden, ohne das Skript neu zu strukturieren. + +## Schritt 3: Die Konvertierung ausführen (HTML zu PDF in Python konvertieren) + +Die Methode `Converter.convert` verbindet das HTML‑Dokument mit den PDF‑Optionen und schreibt das Ergebnis in den von Ihnen angegebenen Dateipfad. + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*Warum das wichtig ist:* +`Converter.convert` startet die Rendering‑Engine, rastert HTML/CSS zu PDF‑Vektoren. Sie verarbeitet komplexe Layouts, eingebettete Schriften und SVG‑Grafiken automatisch – etwas, das manuelle Bibliotheken oft nicht leisten. + +### Erwartete Ausgabe + +Beim Ausführen des Skripts entsteht `sample.pdf` im selben Verzeichnis. Öffnen Sie die Datei mit einem beliebigen PDF‑Betrachter; Sie sollten eine getreue Darstellung von `sample.html` sehen, inklusive Styles, Bildern und Seitenumbrüchen. + +## Häufige Variationen und Sonderfälle + +| Situation | Vorgehensweise | +|-----------|-----------------| +| **HTML ist ein String, keine Datei** | Verwenden Sie `HTMLDocument.from_string(html_string)` anstelle des Ladens aus einem Pfad. | +| **Sie benötigen ein passwortgeschütztes PDF** | Setzen Sie `pdf_options.encryption.password = "yourPassword"` vor der Konvertierung. | +| **Große HTML‑Dateien verursachen Speicherprobleme** | Aktivieren Sie den Streaming‑Modus: `pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`. | +| **Benutzerdefinierte Schriften fehlen** | Registrieren Sie den Schriftordner: `pdf_options.fonts_folder = "path/to/fonts"`. | + +Diese Varianten zeigen die Flexibilität der Aspose.HTML API, während der Kern‑Workflow unverändert bleibt. + +## Komplettes Skript (PDF aus HTML‑Code generieren) + +Unten finden Sie das vollständige, ausführbare Programm, das alle Schritte integriert. Kopieren Sie es, ersetzen Sie `YOUR_DIRECTORY` durch einen echten Ordner und führen Sie es aus. + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +Führen Sie es aus mit: + +```bash +python convert_html_to_pdf.py +``` + +Sie sehen die Bestätigungsmeldung, und das PDF erscheint neben dem Quell‑HTML. + +## Fehlersuche (Pro‑Tipp) + +* **Bilder oder CSS fehlen** – Stellen Sie sicher, dass die HTML‑Datei absolute URLs verwendet oder dass die relativen Pfade korrekt zu `YOUR_DIRECTORY` zeigen. +* **Unicode‑Zeichen werden als Kästchen angezeigt** – Betten Sie die benötigten Schriften über `pdf_options.fonts_folder` ein. +* **Die Konvertierung ist langsam** – Deaktivieren Sie `pdf_options.use_system_fonts = False`, um das Durchsuchen des System‑Schriftkatalogs zu vermeiden. + +## Fazit + +Sie wissen jetzt, **wie man HTML zu PDF in Python mit Aspose.HTML konvertiert**, vom Laden einer HTML‑Datei bis zum Speichern eines hochwertigen PDFs. Das gleiche Muster ermöglicht Ihnen **PDF aus HTML‑Datei erstellen**, **PDF aus HTML‑Code generieren** und **HTML als PDF in Python speichern** für jede Automatisierungs‑Workflow. + +Als Nächstes könnten Sie: + +* Wasserzeichen oder Kopf‑/Fußzeilen hinzufügen (Stichwort: *PDF aus HTML‑Datei erstellen*). +* Eine Live‑URL statt einer lokalen Datei konvertieren (Stichwort: *HTML zu PDF in Python konvertieren*). +* Den Konverter in eine Flask‑ oder Django‑API integrieren, um PDFs auf Abruf bereitzustellen. + +Viel Spaß beim Experimentieren mit den Optionen und happy PDF‑Erstellung! + + +## Was sollten Sie als Nächstes lernen? + + +Die folgenden Tutorials behandeln eng verwandte Themen, die auf den in diesem Leitfaden gezeigten Techniken aufbauen. Jede Ressource enthält vollständige, funktionierende Code‑Beispiele mit Schritt‑für‑Schritt‑Erklärungen, um Ihnen zu helfen, weitere API‑Funktionen zu meistern und alternative Implementierungsansätze in Ihren eigenen Projekten zu erkunden. + +- [Convert HTML to PDF with Aspose.HTML – Full Manipulation Guide](/html/english/) +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Convert HTML to PDF in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-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/german/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/german/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..648d27fbc --- /dev/null +++ b/html/german/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-08-22 +description: Lernen Sie, wie Sie mit Python Markdown aus einer HTML‑Datei erstellen. + Diese Schritt‑für‑Schritt‑Anleitung zeigt, wie Sie HTML mit einer zuverlässigen + Bibliothek in Markdown konvertieren. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: de +lastmod: 2026-08-22 +og_description: Wie man mit Python Markdown aus einer HTML-Datei erstellt. Folgen + Sie dieser Anleitung, um HTML schnell mit einer bewährten Bibliothek in Markdown + zu konvertieren. +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: Wie man Markdown aus HTML in Python erstellt – vollständige Anleitung +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: Wie man in Python Markdown aus HTML erstellt – vollständige Anleitung +url: /de/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man Markdown aus HTML in Python erstellt – vollständige Anleitung + +Wenn Sie wissen müssen, **wie man Markdown** aus vorhandenen Webinhalten erstellt, können Sie eine HTML-Datei mit nur wenigen Zeilen Python in Markdown konvertieren. Dieses Tutorial führt Sie durch **HTML in Markdown konvertieren** mithilfe einer dedizierten **HTML‑zu‑Markdown‑Bibliothek**, die unter Windows, macOS und Linux funktioniert. + +Sie lernen, wie man die Bibliothek installiert, ein HTML-Dokument lädt, Git‑flavored‑Markdown‑Optionen konfiguriert und das Ergebnis auf die Festplatte schreibt. Am Ende des Leitfadens können Sie jede **HTML‑Datei in Markdown** automatisch umwandeln, was für Static‑Site‑Generatoren, Dokumentations‑Pipelines oder Content‑Migrations‑Projekte nützlich ist. + +## Voraussetzungen + +* Python 3.8 oder neuer installiert (prüfen mit `python --version`). +* Zugriff auf ein Terminal oder die Eingabeaufforderung. +* Eine HTML‑Datei, die Sie konvertieren möchten (im Beispiel wird `sample.html` verwendet). +* Internetverbindung, um das erforderliche Paket zu installieren. + +Das Code‑Beispiel verwendet die **GroupDocs.Conversion for Python**‑Bibliothek, die die Klassen `HTMLDocument`, `MarkdownSaveOptions` und `Converter` bereitstellt, die später gezeigt werden. Die gleichen Konzepte gelten für andere **HTML‑zu‑Markdown‑Python**‑Pakete wie `markdownify` oder `html2text` – der einzige Unterschied sind die Import‑Anweisungen. + +## Wie man Markdown erstellt – Schritt 1: Installation der HTML‑zu‑Markdown‑Python‑Bibliothek + +Die erste Aufgabe besteht darin, die Konvertierungsbibliothek zu Ihrer Umgebung hinzuzufügen. Führen Sie den folgenden pip‑Befehl in Ihrem Terminal aus: + +```bash +pip install groupdocs-conversion +``` + +> **Pro‑Tipp:** Verwenden Sie eine virtuelle Umgebung (`python -m venv .venv`), um Abhängigkeiten von Ihrer globalen Python‑Installation zu isolieren. + +Die Installation des Pakets gibt Ihnen Zugriff auf die Klassen `HTMLDocument`, `MarkdownSaveOptions` und `Converter`, die für den Konvertierungsprozess erforderlich sind. + +## HTML in Markdown konvertieren – Schritt 2: Laden des HTML‑Dokuments + +Nachdem die Bibliothek installiert ist, importieren Sie die notwendigen Klassen und erstellen eine `HTMLDocument`‑Instanz, die auf Ihre Quelldatei verweist. + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +Das `HTMLDocument`‑Objekt liest die Datei und bereitet sie für die Konvertierung vor. Wenn die Datei nicht existiert, wirft der Konstruktor einen `FileNotFoundError`, stellen Sie also sicher, dass der Pfad korrekt ist. + +## HTML‑Datei in Markdown – Schritt 3: Konfigurieren der Git‑flavored‑Markdown‑Optionen + +Viele Projekte bevorzugen Git‑flavored‑Markdown, weil es Unterstützung für Tabellen, Aufgabenlisten und Durchstreich‑Syntax bietet. Die Bibliothek ermöglicht es Ihnen, diese Voreinstellung über die `git`‑Eigenschaft von `MarkdownSaveOptions` zu aktivieren. + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +Durch das Setzen von `git = True` wird der Konverter angewiesen, Syntax auszugeben, die von GitHub, GitLab und Bitbucket korrekt gerendert wird. Wenn Sie reines Markdown benötigen, lassen Sie das Flag `False`. + +## Speichern der Markdown‑Ausgabe – Schritt 4: Schreiben des Ergebnisses mit der HTML‑zu‑Markdown‑Bibliothek + +Rufen Sie schließlich die Methode `Converter.convert` auf und übergeben das Quelldokument, das Options‑Objekt und den Zielpfad. + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +Wenn das Skript beendet ist, enthält `git_flavored.md` die Markdown‑Darstellung von `sample.html`. Sie können die Datei in einem beliebigen Editor öffnen oder sie direkt an einen Static‑Site‑Generator übergeben. + +### Erwartete Ausgabe + +Angenommen, `sample.html` enthält eine einfache Überschrift und einen Absatz, könnte das erzeugte Markdown wie folgt aussehen: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +Wenn das ursprüngliche HTML Tabellen, Listen oder Code‑Blöcke enthält, wird die Git‑flavored‑Voreinstellung diese Strukturen mit der entsprechenden Markdown‑Syntax beibehalten. + +## Verständnis der HTML‑zu‑Markdown‑Bibliothek + +Die **GroupDocs.Conversion**‑Bibliothek abstrahiert die Parsing‑ und Rendering‑Details, die Sie sonst manuell behandeln müssten. Sie: + +* Bewahrt CSS‑basierte Formatierung, wo möglich (z. B. fett, kursiv). +* Erzeugt sauberes, lesbares Markdown ohne zusätzliche HTML‑Entitäten. +* Unterstützt Batch‑Konvertierung, sodass Sie über ein Verzeichnis von HTML‑Dateien mit demselben Code iterieren können. + +Wenn Sie eine leichtere Lösung bevorzugen, bietet das Paket `markdownify` eine Single‑Function‑API: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +Beide Ansätze erreichen dasselbe Endziel — **convert html to markdown** —, aber die GroupDocs‑Option bietet mehr Kontrolle über das Ausgabeformat und lässt sich leicht in größere Dokument‑Verarbeitungs‑Pipelines integrieren. + +## Häufige Fallstricke und wie man sie vermeidet + +| Problem | Warum es auftritt | Lösung | +|---------|-------------------|--------| +| Fehlende Bilder im Markdown | Der Konverter fügt nur Bild‑URLs ein; er bettet keine Dateien ein. | Stellen Sie sicher, dass Bilddateien vom Markdown‑Ort aus zugänglich sind, oder kopieren Sie sie zusammen mit der Ausgabe. | +| Kaputte relative Links | HTML kann relative Pfade verwenden, die nach der Konvertierung ungültig werden. | Verwenden Sie `md_options.base_path` (falls verfügbar), um Links umzuschreiben, oder führen Sie ein Nachbearbeitungsskript aus, um Pfade anzupassen. | +| Unicode‑Zeichen werden escaped | Einige Bibliotheken escapen Nicht‑ASCII‑Zeichen. | Setzen Sie `md_options.encode_utf8 = True` (oder das entsprechende Flag), um Zeichen unverändert zu lassen. | + +Das frühzeitige Beheben dieser Probleme spart Zeit, wenn Sie die Konvertierung auf Dutzende oder Hunderte von Dateien skalieren. + +## Vollständiges, ausführbares Beispiel + +Unten finden Sie ein eigenständiges Skript, das Sie sofort kopieren, anpassen und ausführen können. Ersetzen Sie `YOUR_DIRECTORY` durch den tatsächlichen Ordner auf Ihrem Rechner. + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +Skript ausführen: + +```bash +python markdown_from_html.py +``` + +Sie sollten eine Bestätigungsnachricht sehen und eine neue Datei `git_flavored.md`, die die Markdown‑Version Ihres HTML enthält. + +## Fazit + +Sie wissen jetzt, **wie man Markdown** aus einer HTML‑Quelle mit Python erstellt. Der Leitfaden behandelte die Installation einer zuverlässigen **HTML‑zu‑Markdown‑Bibliothek**, das Laden einer **HTML‑Datei in Markdown**, das Konfigurieren von **HTML‑zu‑Markdown‑Python**‑Optionen und das Speichern des Ergebnisses. Mit dieser Grundlage können Sie Dokumentations‑Pipelines automatisieren, Legacy‑Webseiten migrieren oder Inhalte für Static‑Site‑Generatoren erzeugen. + +**Nächste Schritte** + +* Erkunden Sie die Batch‑Konvertierung, indem Sie über einen Ordner mit HTML‑Dateien iterieren. +* Passen Sie die `MarkdownSaveOptions` an, um Überschriftsstile, Listformatierung oder Bildverarbeitung zu steuern. +* Kombinieren Sie dieses Skript mit einem CI/CD‑Workflow, um Ihre Markdown‑Dokumentation automatisch aktuell zu halten. + +Viel Spaß beim Konvertieren! + +## Was sollten Sie als Nächstes lernen? + +Die folgenden Tutorials behandeln eng verwandte Themen, die auf den in diesem Leitfaden gezeigten Techniken aufbauen. Jede Ressource enthält vollständige funktionierende Code‑Beispiele mit Schritt‑für‑Schritt‑Erklärungen, um Ihnen zu helfen, zusätzliche API‑Funktionen zu meistern und alternative Implementierungsansätze in Ihren eigenen Projekten zu erkunden. + +- [HTML in Markdown konvertieren in Aspose.HTML für Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [HTML in Markdown konvertieren in .NET mit Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Markdown in HTML konvertieren – Java‑Leitfaden mit PDF‑Ausgabe](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/german/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..885e3240f --- /dev/null +++ b/html/german/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,187 @@ +--- +category: general +date: 2026-08-22 +description: Erfahren Sie, wie Sie in Python aus HTML Markdown erstellen können, mit + einem einfachen dreistufigen Skript. Enthält Konvertierungsoptionen und Exporttipps. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: de +lastmod: 2026-08-22 +og_description: Erstelle Markdown aus HTML mit Python in nur drei Zeilen. Dieser Leitfaden + zeigt die Konvertierung, Formatierungsoptionen und wie man HTML effizient nach Markdown + exportiert. +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: Markdown aus HTML in Python erstellen – Schritt‑für‑Schritt‑Anleitung +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: Wie man Markdown aus HTML mit Python erstellt +url: /de/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man mit Python Markdown aus HTML erstellt + +Wenn Sie **Markdown aus HTML erstellen** müssen, zeigt Ihnen dieser kurze Leitfaden genau, wie Sie das mit Python erledigen. Sie sehen ein klares, dreischrittiges Skript, das eine HTML‑Datei lädt, die Git‑flavored‑Markdown‑Ausgabe konfiguriert und das Ergebnis auf die Festplatte schreibt. + +Das Konvertieren von Web‑Inhalten in leichtgewichtiges Markup ist eine gängige Aufgabe beim Erstellen statischer Websites, Dokumentations‑Pipelines oder Datenanalyse‑Notebooks. In diesem Tutorial gehen wir auch darauf ein, wie man **HTML zu Markdown konvertiert** mit optionaler Formatierung, beantworten die Frage **wie man HTML effizient konvertiert** und demonstrieren den **Export von HTML zu Markdown**‑Workflow mit der beliebten Bibliothek `groupdocs-conversion`. + +## Voraussetzungen + +Bevor Sie beginnen, stellen Sie sicher, dass Sie Folgendes haben: + +* Python 3.8 oder neuer installiert. +* Das Paket `groupdocs-conversion` (oder jede Bibliothek, die `HTMLDocument`, `MarkdownSaveOptions` und `Converter` bereitstellt). Installieren Sie es mit: + +```bash +pip install groupdocs-conversion +``` + +* Eine HTML‑Datei, die Sie umwandeln möchten, z. B. `sample.html` in einem Ordner, den Sie kontrollieren. + +Es werden keine zusätzlichen Systemabhängigkeiten benötigt, und der Code funktioniert unter Windows, macOS und Linux. + +## Schritt 1: Laden des Quell‑HTML‑Dokuments + +Der erste Schritt besteht darin, ein `HTMLDocument`‑Objekt zu erstellen, das die Quelldatei repräsentiert. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**Warum das wichtig ist:** `HTMLDocument` parsed die Datei, löst relative Links auf und bereitet das DOM für die Konvertierung vor. Wenn die Datei nicht gefunden wird, wirft der Konstruktor einen klaren `FileNotFoundError`, sodass Sie fehlende Eingaben frühzeitig behandeln können. + +## Schritt 2: Konfigurieren der Markdown‑Speicheroptionen (Git‑flavored) + +Markdown hat mehrere Dialekte. Git‑flavored Markdown (GFM) fügt Tabellen, Aufgabenlisten und abgegrenzte Code‑Blöcke hinzu, die häufig für README‑Dateien oder GitHub‑Seiten benötigt werden. + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**Warum das wichtig ist:** Durch die explizite Auswahl von `MarkdownFormatter.GIT` stellen Sie sicher, dass die Ausgabe den gleichen Regeln folgt, die GitHub rendert, und vermeiden Überraschungen, wenn das Markdown in einem Repository angezeigt wird. Wenn Sie reines Markdown bevorzugen, ersetzen Sie `MarkdownFormatter.GIT` durch `MarkdownFormatter.DEFAULT`. + +## Schritt 3: Konvertieren des HTML‑Dokuments in eine Markdown‑Datei + +Rufen Sie nun die Konvertierungs‑Engine auf und schreiben Sie das Ergebnis in das Zielverzeichnis. + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**Warum das wichtig ist:** `Converter.convert` übernimmt die schwere Arbeit – HTML‑Tags in ihre Markdown‑Entsprechungen zu übersetzen, Bilder zu erhalten (indem sie bei Bedarf in den Ausgabepfad kopiert werden) und den von Ihnen gewählten Formatter anzuwenden. Die Methode gibt bei Erfolg `None` zurück, Sie können jedoch `ConversionException` abfangen, um detaillierte Fehlermeldungen zu erhalten. + +### Erwartete Ausgabe + +Nach dem Ausführen des Skripts enthält `sample.md` etwa Folgendes: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +Das genaue Markdown spiegelt die Struktur von `sample.html` wider. Tabellen, Bilder und Code‑Blöcke werden gemäß den GFM‑Regeln konvertiert. + +## Häufige Varianten und Randfälle + +| Situation | Empfohlene Anpassung | +|-----------|----------------------| +| **Large HTML files (>10 MB)** | Erhöhen Sie das Python‑Rekursionslimit oder streamen Sie die Eingabe mit `HTMLDocument.open_stream()`, falls die Bibliothek dies unterstützt. | +| **Images referenced with absolute URLs** | Setzen Sie `md_options.embed_images = True`, um Bilder als Base‑64‑Data‑URIs einzubetten, oder behalten Sie sie als Links für eine leichtere Ausgabe bei. | +| **Sie benötigen reines Markdown statt GFM** | Ändern Sie `md_options.formatter = MarkdownFormatter.DEFAULT`. | +| **Benutzerdefinierte CSS‑Klassen sollten ignoriert werden** | Verwenden Sie `md_options.ignore_css_classes = ["unwanted-class"]`. | +| **Ausführung in einer CI/CD‑Pipeline** | Umwickeln Sie das Skript mit einem `try/except`‑Block und beenden Sie es bei einem Fehler mit einem Nicht‑Null‑Status, damit die Pipeline schnell fehlschlägt. | + +### Profi‑Tipp + +Wenn Sie viele Dateien stapelweise konvertieren möchten, verwenden Sie eine einzelne `MarkdownSaveOptions`‑Instanz und ändern Sie nur die Eingabe‑/Ausgabepfade innerhalb einer Schleife. Das reduziert den Overhead bei der Objekterstellung und beschleunigt den Vorgang um etwa 15 %. + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## Wie man HTML zu Markdown in anderen Sprachen konvertiert (kurze Anmerkung) + +Obwohl sich dieses Tutorial auf **html to markdown python** konzentriert, gelten dieselben Konzepte für Java-, C#‑ oder JavaScript‑SDKs: Erstellen Sie ein Dokumentobjekt, konfigurieren Sie einen Markdown‑Formatter und rufen Sie den Konverter auf. Wenn Sie jemals **HTML zu Markdown exportieren** müssen aus einer Nicht‑Python‑Umgebung, suchen Sie nach den entsprechenden Klassen `HtmlDocument`, `MarkdownSaveOptions` und `Converter` im sprachspezifischen SDK. + +## Fazit + +Sie wissen jetzt, wie man **Markdown aus HTML erstellt** mit einem knappen Python‑Skript. Der dreischrittige Ablauf – HTML laden, Git‑flavored‑Optionen setzen und die Konvertierung ausführen – deckt den Kern jedes **convert html to markdown**‑Workflows ab. Von hier aus können Sie: + +* Das Skript in statische Site‑Generatoren integrieren. +* Dokumentations‑Updates in CI‑Pipelines automatisieren. +* Die Konvertierung mit benutzerdefinierter Nachbearbeitung erweitern (z. B. Link‑Umschreibungen oder Überschriften‑Anpassungen). + +Fühlen Sie sich frei, mit den sekundären Optionen zu experimentieren – **how to convert html** mit verschiedenen Formatierern oder das Anpassen der **export html to markdown**‑Einstellungen für Bilder und Tabellen. Viel Spaß beim Konvertieren! + +## Was sollten Sie als Nächstes lernen? + +Die folgenden Tutorials behandeln eng verwandte Themen, die auf den in diesem Leitfaden gezeigten Techniken aufbauen. Jede Ressource enthält vollständige, funktionierende Code‑Beispiele mit Schritt‑für‑Schritt‑Erklärungen, um Ihnen zu helfen, zusätzliche API‑Funktionen zu meistern und alternative Implementierungsansätze in Ihren eigenen Projekten zu erkunden. + +- [HTML zu Markdown konvertieren in Aspose.HTML für Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [HTML zu Markdown konvertieren in .NET mit Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Markdown zu HTML konvertieren – Java‑Leitfaden mit PDF‑Ausgabe](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/german/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..f41ec6978 --- /dev/null +++ b/html/german/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,284 @@ +--- +category: general +date: 2026-08-22 +description: Erstelle PDF aus SVG mit Python in wenigen Minuten. Lerne, SVG in PDF + zu konvertieren, SVG als PDF zu speichern und einen zuverlässigen SVG‑zu‑PDF‑Konverter + zu verwenden. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: de +lastmod: 2026-08-22 +og_description: Erstelle schnell PDF aus SVG mit Python. Diese Anleitung zeigt, wie + man SVG in PDF konvertiert, einen SVG‑zu‑PDF‑Konverter verwendet und SVG als PDF + in einem einzigen Skript speichert. +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: PDF aus SVG in Python erstellen – Schritt‑für‑Schritt‑Anleitung +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: Wie man in Python aus SVG ein PDF erstellt – vollständige Anleitung +url: /de/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man aus SVG in Python PDF erstellt – vollständige Anleitung + +Wenn Sie **PDF aus SVG** schnell erstellen müssen, zeigt Ihnen dieses Tutorial genau, wie es geht. Wir gehen Schritt für Schritt durch, wie man eine SVG‑Datei mit einem beliebten SVG‑zu‑PDF‑Konverter in ein PDF umwandelt, sodass Sie Vektorgrafiken in Berichten, Rechnungen oder E‑Books einbetten können, ohne Ihren Python‑Code zu verlassen. + +Sie lernen, wie man **SVG in PDF konvertiert**, Skalierung verwaltet, Schriften bewahrt und schließlich **SVG als PDF speichert** mit einem einzigen, reproduzierbaren Skript. Es werden keine externen Befehlszeilentools benötigt – nur ein paar Zeilen Python und die Aspose.SVG for Python‑Bibliothek. + +## Voraussetzungen + +Bevor Sie beginnen, stellen Sie sicher, dass Sie Folgendes haben: + +| Anforderung | Grund | +|-------------|-------| +| Python 3.8+ | Die Bibliothek richtet sich an moderne Python‑Laufzeiten. | +| `aspose.svg`‑Paket | Stellt `SVGDocument`, `PdfSaveOptions` und `Converter` bereit. Installation mit `pip install aspose-svg`. | +| Eine SVG‑Datei (`vector.svg`) | Die Quell‑Vektorgrafik, die Sie konvertieren möchten. | +| Schreibrechte für den Ausgabepfad | Erforderlich für **SVG als PDF speichern**. | + +Sie können die Bibliothek installieren mit: + +```bash +pip install aspose-svg +``` + +> **Pro Tipp:** Verwenden Sie eine virtuelle Umgebung (`python -m venv venv`), um Abhängigkeiten isoliert zu halten. + +## Überblick über den Konvertierungsprozess + +Die Konvertierung besteht aus drei einfachen Schritten: + +1. Laden Sie das **SVG‑Dokument** von der Festplatte. +2. Erstellen Sie **PDF‑Speicheroptionen** (Sie können Seitengröße, DPI usw. anpassen). +3. Rufen Sie den **Converter** auf, um eine PDF‑Datei zu erzeugen. + +Die folgenden Abschnitte zerlegen jeden Schritt, erklären *warum* der Code so geschrieben ist, und zeigen das vollständige, ausführbare Skript. + +## PDF aus SVG mit Aspose.SVG for Python erstellen + +Dieser H2‑Header enthält das primäre Schlüsselwort **create pdf from svg**, das die SEO‑Anforderung erfüllt. + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### Warum das funktioniert + +* **`SVGDocument`** analysiert das SVG‑XML und baut eine In‑Memory‑Repräsentation, die der Converter rendern kann. +* **`PdfSaveOptions`** ermöglicht das Feintuning der PDF‑Ausgabe (Seitengröße, Kompression, DPI). Die Vorgabewerte erzeugen bereits ein getreues PDF, weshalb das Beispiel sofort funktioniert. +* **`Converter.convert`** übernimmt die eigentliche Arbeit: Es rasterisiert die Vektordaten auf PDF‑Seiten, während die Vektorrepräsentation erhalten bleibt, sodass das resultierende PDF bei jeder Vergrößerung scharf bleibt. + +## SVG in PDF mit benutzerdefinierter Seitengröße konvertieren + +Falls Sie eine bestimmte Seitengröße benötigen – zum Beispiel A4 für druckbare Berichte – passen Sie die `PdfSaveOptions` an: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **Randfall:** Einige SVGs definieren ein `viewBox`, das nicht zu den gewünschten PDF‑Abmessungen passt. Das Überschreiben von `page_width`/`page_height` stellt sicher, dass das PDF Ihren Layout‑Erwartungen entspricht. + +## SVG als PDF speichern und Schriften bewahren + +Wenn Ihr SVG externe Schriften referenziert, stellen Sie sicher, dass die Schriften dem Converter zugänglich sind. Legen Sie die `.ttf`‑Dateien in dasselbe Verzeichnis wie das SVG oder geben Sie einen benutzerdefinierten Schriftordner an: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +Der Converter bettet die Schriften direkt in das PDF ein und garantiert, dass die **svg file to pdf**‑Konvertierung auf jedem Rechner identisch aussieht. + +## Batch‑Konvertierung: svg‑Datei zu pdf für viele Dateien + +Oft haben Sie einen Ordner voller SVG‑Assets. Die folgende Schleife demonstriert einen effizienten **svg to pdf converter**, der jede `.svg`‑Datei in einem Verzeichnis verarbeitet: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +Dieses Snippet illustriert einen praktischen **convert svg to pdf**‑Workflow, der in CI‑Pipelines oder automatisierte Berichtsgeneratoren integriert werden kann. + +## Ausgabe überprüfen + +Nach dem Ausführen des Skripts öffnen Sie das erzeugte PDF mit einem beliebigen Viewer (Adobe Reader, Chrome oder Vorschau). Sie sollten sehen: + +* Vektorformen, die bei jeder Vergrößerung scharf gerendert werden. +* Text, der der SVG‑Quelle entspricht, mit eingebetteten Schriften, falls Sie diese bereitgestellt haben. +* Keine Rasterartefakte – weil die Konvertierung die ursprünglichen Vektordaten beibehält. + +Falls Schriften fehlen, prüfen Sie, ob die Schriftdateien erreichbar sind und das SVG sie korrekt referenziert (`font-family`‑Attribut). + +## Häufige Stolperfallen und wie man sie vermeidet + +| Symptom | Wahrscheinliche Ursache | Lösung | +|---------|--------------------------|--------| +| Leere PDF‑Seiten | SVG hat externe Ressourcen (Bilder, Schriften), die nicht gefunden werden | `fonts_folder` angeben und sicherstellen, dass verknüpfte Bilder im selben Verzeichnis liegen oder absolute URLs verwenden. | +| Text erscheint als Konturen | Schrift nicht eingebettet | `pdf_options.embed_fonts = True` (Standard) setzen und prüfen, ob die Schriftdatei vorhanden ist. | +| PDF ist größer als erwartet | Hohe DPI oder unkomprimierte Bilder | `pdf_options.dpi` reduzieren oder Kompression aktivieren: `pdf_options.compress = True`. | +| SVG‑Abmessungen werden abgeschnitten | `viewBox` größer als PDF‑Seite | `pdf_options.page_width`/`page_height` anpassen oder das SVG über `svg_doc.set_viewport` skalieren. | + +## Vollständiges End‑zu‑End‑Beispiel + +Unten finden Sie ein eigenständiges Skript, das Fehlerbehandlung, Logging und optionale Befehlszeilenargumente enthält. Speichern Sie es als `svg_to_pdf.py` und führen Sie `python svg_to_pdf.py` aus. + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +Das Ausführen des Skripts erzeugt eine **save SVG as PDF**‑Operation, die Sie in größere Automatisierungspipelines einbinden können. + +### Erwartete Konsolenausgabe + + + +## Was sollten Sie als Nächstes lernen? + + +Die folgenden Tutorials behandeln eng verwandte Themen, die auf den in diesem Leitfaden gezeigten Techniken aufbauen. Jede Ressource enthält vollständige, funktionierende Codebeispiele mit Schritt‑für‑Schritt‑Erklärungen, um Ihnen zu helfen, weitere API‑Funktionen zu meistern und alternative Implementierungsansätze in Ihren eigenen Projekten zu erkunden. + +- [SVG in .NET mit Aspose.HTML in PDF konvertieren](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg to pdf java – PDF aus SVG mit Aspose.HTML für Java erzeugen](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [Convierte SVG a PDF en .NET con Aspose.HTML](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/german/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/german/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..d7da7b440 --- /dev/null +++ b/html/german/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-08-22 +description: Wie man Streaming für die Konvertierung großer HTML‑zu‑PDF-Dateien in + Python aktiviert, um den Speicherverbrauch zu reduzieren und die Ausgabeerstellung + zu beschleunigen. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: de +lastmod: 2026-08-22 +og_description: Wie man Streaming für die Konvertierung großer HTML‑zu‑PDF‑Dateien + in Python aktiviert, um den Speicherverbrauch zu reduzieren und die Ausgabeerstellung + zu beschleunigen. +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: Streaming für HTML‑zu‑PDF-Konvertierung in Python aktivieren +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: Wie man Streaming beim Konvertieren von HTML zu PDF in Python aktiviert +url: /de/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man Streaming beim Konvertieren von HTML zu PDF in Python aktiviert + +Wenn Sie **how to enable streaming** während einer großen HTML‑zu‑PDF‑Konvertierung benötigen, zeigt Ihnen dieser Leitfaden die genauen Schritte. Durch das Aktivieren von Streaming vermeiden Sie das Laden des gesamten Dokuments in den Speicher, was wichtig ist, wenn Sie HTML zu PDF für große Dateien konvertieren. + +Sie lernen, wie man Streaming aktiviert, HTML zu PDF mit Python konvertiert und Randfälle wie large HTML to PDF Aufgaben behandelt. Die Lösung funktioniert mit der beliebten `groupdocs-conversion` (oder einer ähnlichen) Bibliothek, aber die Konzepte gelten für jeden streaming‑fähigen Konverter. + +![Diagram showing streaming conversion from HTML to PDF using Python](streaming-diagram.png) + +## Was Sie benötigen + +- Python 3.9 oder neuer +- `groupdocs-conversion` (oder jede Bibliothek, die `PdfSaveOptions` mit einem Streaming‑Flag bietet) +- Eine HTML‑Datei, die Sie in ein PDF umwandeln möchten (das Beispiel verwendet eine große Datei namens `large.html`) + +Das Vorhandensein dieser Voraussetzungen stellt sicher, dass der Code ohne zusätzliche Konfiguration läuft. + +## Schritt 1: Installieren der Konvertierungsbibliothek + +Zuerst installieren Sie das Python‑Paket, das `HTMLDocument`, `PdfSaveOptions` und `Converter` bereitstellt. Die gängigste Wahl ist das **GroupDocs.Conversion** SDK: + +```bash +pip install groupdocs-conversion +``` + +> **Pro‑Tipp:** Verwenden Sie eine virtuelle Umgebung (`python -m venv .venv`), um Abhängigkeiten zu isolieren. + +## Schritt 2: Laden des HTML‑Dokuments, das Sie konvertieren möchten + +Das Laden des Quell‑HTML ist unkompliziert. Die Klasse `HTMLDocument` liest die Datei von der Festplatte und bereitet sie für die Konvertierung vor. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +Das `HTMLDocument`‑Objekt repräsentiert das gesamte HTML‑Markup, einschließlich externer Ressourcen wie Bilder und CSS. Dies ist der Ausgangspunkt für jede **convert html to pdf**‑Operation. + +## Schritt 3: PDF‑Speicheroptionen erstellen und Streaming aktivieren + +Das Aktivieren von Streaming ist der Kern von **how to enable streaming**. Anstatt das gesamte PDF im Speicher zu puffern, schreibt der Konverter Datenblöcke direkt in die Ausgabedatei. + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +Wenn `enable_streaming` auf `True` gesetzt ist, verwendet die Bibliothek einen Write‑Through‑Ansatz, der den RAM‑Verbrauch drastisch reduziert – entscheidend für **large html to pdf**‑Szenarien. + +## Schritt 4: Konvertieren des HTML‑Dokuments zu PDF mit den konfigurierten Optionen + +Rufen Sie jetzt die Konvertierung auf. Die Methode `Converter.convert` nimmt das Quelldokument, das Options‑Objekt und den Zielpfad. + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +Nach Abschluss dieses Aufrufs enthält `large.pdf` das gerenderte PDF, das während des Streamings der Daten auf die Festplatte erzeugt wurde. Der gesamte Vorgang ist in der Regel schneller als eine Nicht‑Streaming‑Konvertierung, da das Betriebssystem Daten schrittweise in das Dateisystem schreiben kann. + +### Erwartete Ausgabe + +Das Ausführen des Skripts erzeugt eine PDF‑Datei, deren Größe dem Inhalt des ursprünglichen HTML entspricht. Sie können das Ergebnis mit jedem PDF‑Betrachter überprüfen: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## Warum Streaming bei großen HTML‑zu‑PDF‑Konvertierungen wichtig ist + +Wenn Sie **convert html to pdf** ohne Streaming durchführen, erstellt die Bibliothek zunächst das gesamte PDF im RAM, bevor es auf die Festplatte geschrieben wird. Für eine kleine Seite ist das in Ordnung, aber ein **large html to pdf**‑Job (z. B. ein 10‑MB‑HTML‑Report mit vielen Bildern) kann die Speichergrenzen typischer serverloser Funktionen oder Low‑Memory‑Container überschreiten. + +Das Aktivieren von Streaming löst drei Probleme: + +1. **Speichereffizienz** – es wird nur ein kleiner Puffer im RAM gehalten. +2. **Schnellere wahrgenommene Leistung** – die Datei erscheint auf der Festplatte, während sie noch erzeugt wird, sodass nachgelagerte Prozesse sie früher lesen können. +3. **Skalierbarkeit** – Sie können viele Konvertierungen parallel ausführen, ohne den Speicher des Hosts zu erschöpfen. + +## Häufige Fallstricke und wie man sie vermeidet + +| Symptom | Wahrscheinliche Ursache | Lösung | +|---------|--------------------------|--------| +| `MemoryError` während der Konvertierung | Streaming‑Flag nicht gesetzt oder Bibliotheksversion zu alt | Stellen Sie sicher, dass `pdf_opts.enable_streaming = True` gesetzt ist, und aktualisieren Sie das neueste SDK (`pip install --upgrade groupdocs-conversion`). | +| Fehlende Bilder im PDF | Relative Bildpfade können nicht aufgelöst werden | Geben Sie das Basisverzeichnis an `HTMLDocument` weiter oder betten Sie Bilder als Base64 ein. | +| Ausgabe‑PDF ist leer | HTML‑Datei nicht gefunden oder nicht lesbar | Überprüfen Sie den Pfad `"YOUR_DIRECTORY/large.html"` und die Dateiberechtigungen. | +| Konvertierung hängt unendlich | Große externe Ressourcen (Schriften, CSS) blockieren das Rendern | Laden Sie externe Assets vorher herunter oder verwenden Sie einen Headless‑Browser, um sie einzubetten. | + +### Sonderfall: HTML aus einem String konvertieren + +Wenn Ihr HTML‑Inhalt im Speicher und nicht in einer Datei liegt, können Sie immer noch **how to enable streaming** indem Sie den String in einen `HTMLDocument`‑Konstruktor einbetten, der rohes HTML akzeptiert: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +## Vollständiges Skript zum Kopieren und Einfügen + +Unten finden Sie ein komplettes, sofort ausführbares Beispiel, das alle besprochenen Schritte integriert. Ersetzen Sie `YOUR_DIRECTORY` durch den tatsächlichen Pfad auf Ihrem Rechner. + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +Das Ausführen von `python full_example.py` erzeugt `large.pdf` mit dem Streaming‑Ansatz. + +## Zusammenfassung + +- Sie wissen jetzt, **how to enable streaming** für die HTML‑zu‑PDF‑Konvertierung in Python. +- Das Skript demonstriert den vollständigen **convert html to pdf**‑Workflow und verarbeitet **large html to pdf**‑Aufgaben effizient. +- Durch das Setzen von `PdfSaveOptions.enable_streaming = True` schreibt der Konverter die Ausgabe fortlaufend, was die empfohlene Methode ist, **stream html to pdf** zu verwenden. + +## Was Sie als Nächstes erkunden können + +- **HTML to PDF Python** Bibliotheken, die CSS3 und JavaScript unterstützen (z. B. `WeasyPrint`, `pdfkit`). +- Hinzufügen von Passwortschutz oder Verschlüsselung zum erzeugten PDF über zusätzliche `PdfSaveOptions`‑Einstellungen. +- Parallelisieren mehrerer Konvertierungen in einem Warteschlangensystem (Celery, RabbitMQ) bei geringem Speicherverbrauch. + +Fühlen Sie sich frei, mit verschiedenen HTML‑Quellen, Seitengrößen und PDF‑Metadaten zu experimentieren. Streaming ermöglicht es, noch größere Dokumente zu verarbeiten, ohne die Leistung zu beeinträchtigen. Viel Spaß beim Coden! + +## Was sollten Sie als Nächstes lernen? + +Die folgenden Tutorials behandeln eng verwandte Themen, die auf den in diesem Leitfaden gezeigten Techniken aufbauen. Jede Ressource enthält vollständige funktionierende Code‑Beispiele mit Schritt‑für‑Schritt‑Erklärungen, um Ihnen zu helfen, zusätzliche API‑Funktionen zu meistern und alternative Implementierungsansätze in Ihren eigenen Projekten zu erkunden. + +- [Wie man HTML zu PDF in Java konvertiert – Verwendung von Aspose.HTML für Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Erstellen eines festen Thread‑Pools für parallele HTML‑zu‑PDF‑Konvertierung](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [Wie man JavaScript in Aspose HTML aktiviert – HTML laden & Text erhalten](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/german/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..a306339b7 --- /dev/null +++ b/html/german/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,255 @@ +--- +category: general +date: 2026-08-22 +description: Wie man Links aus HTML exportiert und in eine Markdown‑Datei konvertiert, + einschließlich Absätzen. Schritt‑für‑Schritt‑Anleitung zur HTML‑zu‑Markdown‑Konvertierung. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: de +lastmod: 2026-08-22 +og_description: Wie man Links aus einem HTML-Dokument exportiert und in eine Markdown-Datei + konvertiert, einschließlich Absätzen. Folgen Sie diesem vollständigen Tutorial für + eine zuverlässige HTML‑zu‑Markdown‑Konvertierung. +og_image_alt: How to export links while converting HTML to Markdown +og_title: Wie man Links beim Konvertieren von HTML zu Markdown exportiert – Schritt‑für‑Schritt‑Anleitung +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: Wie man Links beim Konvertieren von HTML zu Markdown exportiert +url: /de/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man Links exportiert, während man HTML zu Markdown konvertiert + +Wenn Sie **how to export links** von einer HTML‑Seite benötigen und das Ergebnis in eine saubere **html to markdown file** umwandeln möchten, zeigt Ihnen dieser Leitfaden die genauen Schritte. Sie werden außerdem **how to extract paragraphs** entdecken, sodass die Markdown‑Ausgabe den Hauptinhalt enthält, der Ihnen wichtig ist. Am Ende des Tutorials können Sie die Frage “**how to convert html** to markdown” mit einem sofort einsatzbereiten Skript beantworten. + +Das Exportieren von Links und das Extrahieren von Absätzen sind gängige Aufgaben, wenn Sie Web‑Inhalte zu statischen Websites, Dokumentationsportalen oder Headless‑CMS‑Back‑Ends migrieren. Der untenstehende Ansatz funktioniert mit dem GroupDocs Conversion SDK für Python, aber die Konzepte gelten für jede Bibliothek, die das Konfigurieren von Export‑Funktionen ermöglicht. + +--- + +## Was Sie benötigen + +- Python 3.9 oder neuer +- `groupdocs-conversion`‑Paket (installieren mit `pip install groupdocs-conversion`) +- Eine HTML‑Datei, die Sie verarbeiten möchten (z. B. `input.html`) +- Grundlegende Erfahrung mit Python‑Skripting + +--- + +## Wie man Links mit HTML‑zu‑Markdown‑Konvertierung exportiert + +Der erste wichtige Schritt besteht darin, die Konvertierung so zu konfigurieren, dass nur die gewünschten Features – Links und Absätze – in die **html to markdown file** geschrieben werden. Das SDK ermöglicht das Setzen einer Bitmaske von `MarkdownFeature`‑Werten; wir kombinieren `LINKS` und `PARAGRAPHS`, um die Ausgabe zu fokussieren. + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### Warum das funktioniert + +- **`HTMLDocument`** analysiert die Originaldatei und erstellt ein DOM, das der Konverter durchlaufen kann. +- **`MarkdownSaveOptions`** gibt Ihnen eine feinkörnige Kontrolle darüber, was das SDK schreibt. Das Setzen von `features` auf `LINKS | PARAGRAPHS` weist die Engine an, Bilder, Tabellen oder Skripte zu ignorieren, was das Rauschen in der endgültigen **html to markdown file** reduziert. +- **`Converter.convert`** übernimmt die schwere Arbeit. Es respektiert die Feature‑Maske, extrahiert Anker‑Tags (``) und Absatz‑Tags (`

`) und schreibt sie mit der Standard‑Markdown‑Syntax. + +--- + +## Wie man HTML zu Markdown mit vollem Inhalt konvertiert (optional) + +Wenn Sie später entscheiden, dass Sie die gesamte Seite benötigen – nicht nur Links und Absätze – passen Sie einfach die Feature‑Maske an: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +Die Ausführung derselben Konvertierung erzeugt jetzt eine vollständige **html to markdown file**, die das ursprüngliche Layout widerspiegelt. Dies demonstriert **how to convert html** auf flexible Weise: Sie steuern die Ausgabe, indem Sie Feature‑Flags umschalten. + +--- + +## Wie man ausschließlich Absätze extrahiert + +Manchmal interessieren Sie sich nur für den Textkörper eines Artikels, nicht für die Hyperlinks. Sie können Absätze isolieren, indem Sie die Maske ausschließlich auf `PARAGRAPHS` setzen: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +Das resultierende Markdown enthält sauberen, zeilengebrochenen Text ohne jegliche Link‑Markup. Dieser Ausschnitt beantwortet die Frage **how to extract paragraphs** aus einer HTML‑Quelle. + +--- + +## Häufige Fallstricke und wie man sie vermeidet + +| Problem | Warum es passiert | Lösung | +|-------|----------------|-----| +| Leere Ausgabedatei | Die Quell‑HTML enthält keine ``‑ oder `

`‑Tags, die den ausgewählten Features entsprechen. | Überprüfen Sie die HTML‑Struktur oder erweitern Sie die Feature‑Maske (z. B. `HEADINGS` einschließen). | +| Kodierungsprobleme | Die HTML verwendet ein Nicht‑UTF‑8‑Zeichensatz und das SDK liest sie falsch ein. | Übergeben Sie eine explizite Kodierung an `HTMLDocument`, z. B. `HTMLDocument(path, encoding="iso-8859-1")`. | +| Überschreiben vorhandenen Markdown | Das Skript wird mehrmals ausgeführt und ersetzt die vorherige Datei. | Fügen Sie dem Ausgabedateinamen einen Zeitstempel hinzu oder prüfen Sie `os.path.exists` vor dem Schreiben. | + +**Pro‑Tipp:** Wenn Sie viele Dateien in einem Ordner verarbeiten, kapseln Sie die Konvertierungslogik in einer Schleife und protokollieren Sie jedes Ergebnis. Das liefert Ihnen ein klares Audit‑Protokoll und erleichtert das Fortsetzen nach einem Fehler. + +--- + +## Vollständiges Skript zum Kopieren‑Einfügen + +Unten finden Sie eine eigenständige Python‑Datei (`convert_links_paragraphs.py`), die Sie direkt ausführen können. Sie enthält Argument‑Parsing, sodass Sie Eingabe‑ und Ausgabepfade angeben können, ohne den Code zu bearbeiten. + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**Wie ausführen** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +Der obige Befehl demonstriert **how to export links** und **how to extract paragraphs** in einem einzigen Aufruf. Lassen Sie `--links` oder `--paragraphs` weg, um die Ausgabe an Ihre Bedürfnisse anzupassen. + +--- + +## Verifizierung – wie die Ausgabe aussieht + +Gegeben das folgende einfache HTML (`input.html`): + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +Die Ausführung des Skripts mit beiden Flags erzeugt `links_and_paragraphs.md`: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +Sie können sehen, dass nur die beiden Absätze und der Hyperlink vorhanden sind – genau das, wonach Sie gesucht haben, als Sie nach **how to export links** beim **convert html to markdown** gesucht haben. + +--- + +## Nächste Schritte und verwandte Themen + +- **How to convert html to markdown** mit Bildern: fügen Sie `MarkdownFeature.IMAGES` zur Maske hinzu. +- **How to extract paragraphs** und dann nachbearbeiten + +## Was sollten Sie als Nächstes lernen? + +Die folgenden Tutorials behandeln eng verwandte Themen, die auf den in diesem Leitfaden gezeigten Techniken aufbauen. Jede Ressource enthält vollständige funktionierende Code‑Beispiele mit Schritt‑für‑Schritt‑Erklärungen, um Ihnen zu helfen, zusätzliche API‑Funktionen zu meistern und alternative Implementierungsansätze in Ihren eigenen Projekten zu erkunden. + +- [Wie man Offset beim Konvertieren von HTML zu Markdown in Java festlegt](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown zu HTML Java – Konvertieren mit Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [HTML zu Markdown – Vollständiger C#‑Leitfaden](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/german/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..f2811b60b --- /dev/null +++ b/html/german/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,280 @@ +--- +category: general +date: 2026-08-22 +description: Wie man HTML mit Aspose.HTML in Python lädt – Ressourcen‑Tiefe begrenzen + und das Dokument für die Konvertierung oder Bearbeitung vorbereiten. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: de +lastmod: 2026-08-22 +og_description: Wie man HTML mit Aspose.HTML in Python lädt, die Tiefe der Ressourcenverarbeitung + festlegt und das Dokument für die Konvertierung oder Bearbeitung vorbereitet. +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: Wie man HTML mit Aspose.HTML lädt – Python‑Leitfaden +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: Wie man HTML mit Aspose.HTML in Python lädt +url: /de/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man HTML mit Aspose.HTML in Python lädt + +Wenn Sie **wie man HTML lädt** schnell und sicher in einem Python‑Projekt benötigen, zeigt Ihnen dieser Leitfaden die genauen Schritte. Am Ende der ersten beiden Sätze wissen Sie, wie Sie die Ressourcenverarbeitung konfigurieren, die Datei laden und den Vorgang für weitere **HTML conversion** oder Bearbeitung bereit halten. + +Das Laden großer oder komplexer Seiten bringt oft naive Parser zum Scheitern, weil externe Ressourcen (Bilder, Skripte, CSS) tiefe Rekursionen oder Netzwerkverzögerungen verursachen können. Dieses Tutorial behandelt ein robustes Muster mit **Aspose.HTML for Python**, demonstriert die **HTMLDocument class** und erklärt, warum das Setzen von **max_handling_depth** wichtig ist. + +Sie werden durchgehen: + +* Installation des Aspose.HTML‑Pakets +* Erstellen einer `ResourceHandlingOptions`‑Instanz und Begrenzung der Tiefe +* Verwenden der `HTMLDocument`‑Klasse zum Laden einer Seite +* Vorbereiten des Dokuments für die Konvertierung zu PDF, PNG oder weitere Manipulationen + +Keine Vorkenntnisse mit Aspose.HTML erforderlich, nur Grundkenntnisse in Python. + +--- + +## Wie man HTML mit Aspose.HTML in Python lädt + +Der Kern der Lösung ist ein Drei‑Schritte‑Muster, das **ResourceHandlingOptions** mit der **HTMLDocument class** kombiniert. Das Begrenzen der Verarbeitungstiefe verhindert unkontrollierte Netzwerkaufrufe, wenn eine Seite viele verschachtelte Ressourcen referenziert. + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### Warum das funktioniert + +* **`ResourceHandlingOptions`** gibt dem Parser an, wie viele Ebenen externer Ressourcen er folgen darf. Das Setzen von `max_handling_depth = 3` stoppt den Loader nach drei Sprüngen, was für die meisten Websites ausreicht, aber vor Endlosschleifen schützt. +* **`HTMLDocument`** liest die Datei, wendet die Optionen an und erstellt ein im Speicher befindliches DOM, das Sie abfragen, ändern oder rendern können. +* Der optionale Konvertierungsausschnitt zeigt, wie das geladene Dokument mit **HTML conversion**‑Funktionen integriert wird, z. B. das Speichern als PDF. + +--- + +## Verständnis von ResourceHandlingOptions + +`ResourceHandlingOptions` ist Teil von **Aspose.HTML for Python** und bietet Ihnen eine feinkörnige Kontrolle über Netzwerkaktivitäten. + +| Eigenschaft | Zweck | Typischer Wert | +|---------------------------|-----------------------------------------------------|----------------| +| `max_handling_depth` | Maximale Rekursionstiefe für verknüpfte Ressourcen | `3` (default) | +| `allow_external_resources`| Ob externe CSS, JS, Bilder heruntergeladen werden sollen | `True` | +| `timeout` | Netzwerk‑Timeout pro Anfrage (Sekunden) | `30` | + +**Praktischer Hinweis:** Wenn Sie wissen, dass die Zielseite nur lokale Assets referenziert, setzen Sie `allow_external_resources = False`, um das Laden zu beschleunigen und unnötige HTTP‑Aufrufe zu vermeiden. + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## Verwendung der HTMLDocument class + +Die **HTMLDocument class** ist der Einstiegspunkt für alle Aspose.HTML‑Operationen. Sobald sie instanziiert ist, können Sie: + +* Zugriff auf das DOM über `doc.root` +* Abfragen von Elementen mit CSS‑Selektoren (`doc.query_selector_all("img")`) +* Rendern der Seite in Rasterformate (`doc.save("page.png")`) +* Konvertieren zu PDF (`doc.save("page.pdf", PDFSaveOptions())`) + +Unten finden Sie einen kurzen Ausschnitt, der nach dem Laden alle Bild‑`src`‑Attribute extrahiert: + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**Warum Sie das benötigen könnten:** Beim Durchführen von **HTML conversion** müssen Sie häufig Bild‑URLs anpassen oder ersetzen, bevor Sie in ein anderes Format rendern. Der direkte Zugriff auf das DOM bietet Ihnen diese Flexibilität. + +--- + +## Nächste Schritte nach dem Laden von HTML + +Da das Dokument nun im Speicher ist, können Sie aus mehreren gängigen Workflows wählen: + +1. **In PDF konvertieren** – Ideal für Archivierung oder Druck. +2. **In PNG/JPEG rendern** – Nützlich für Thumbnails oder visuelle Vorschauen. +3. **DOM bearbeiten** – Elemente vor dem Speichern einfügen, entfernen oder ändern. +4. **Text extrahieren** – Reinen Textinhalt für Indexierung oder Analyse ziehen + +### Beispiel: Konvertierung zu PDF mit benutzerdefinierter Seitengröße + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**Erwartete Ausgabe:** Eine Datei namens `big_page.pdf` erscheint im Arbeitsverzeichnis und enthält das gerenderte HTML mit allen zugelassenen Ressourcen. Wenn Sie `max_handling_depth` auf 3 setzen, werden nur Ressourcen bis zu drei Ebenen Tiefe eingebettet, wodurch die PDF‑Größe angemessen bleibt. + +--- + +## Häufige Fallstricke und wie man sie vermeidet + +| Symptom | Ursache | Lösung | +|--------------------------------------|----------------------------------------------------|--------| +| Fehlende Bilder im gerenderten PDF | `allow_external_resources` auf `False` gesetzt | Externe Ressourcen aktivieren oder Bilder lokal einbetten | +| `TimeoutError` beim Laden | Netzwerklatenz überschreitet `timeout` | Erhöhen Sie `rh_opts.timeout` oder laden Sie Assets vorher herunter | +| Unerwartetes CSS‑Styling | Verknüpftes Stylesheet wurde wegen Tiefenbegrenzung nicht geladen | Erhöhen Sie `max_handling_depth` oder fügen Sie das erforderliche CSS manuell hinzu | +| `UnicodeDecodeError` bei Nicht‑UTF8‑Dateien | HTML‑Datei verwendet eine andere Kodierung | Übergeben Sie `encoding="windows-1252"` beim Erstellen von `HTMLDocument` | + +--- + +## Vollständiges, ausführbares Beispiel + +Unten finden Sie ein eigenständiges Skript, das Sie in eine Datei namens `load_html_demo.py` kopieren können. Es enthält Installationsanweisungen, Fehlerbehandlung und einen abschließenden Verifizierungsschritt. + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +**Ausführen des Skripts** + +```bash +python load_html_demo.py +``` + +Sie sollten eine Konsolenausgabe sehen, die das Laden bestätigt, eine Liste von Bild‑URLs und eine Erfolgsmeldung für die PDF‑Konvertierung. Das erzeugte `big_page.pdf` wird den HTML‑Inhalt widerspiegeln, der durch das konfigurierte **max_handling_depth** begrenzt ist. + +--- + +## Fazit + +In diesem Tutorial haben wir **wie man HTML lädt** mit **Aspose.HTML for Python** behandelt, **ResourceHandlingOptions** konfiguriert, um `max_handling_depth` zu steuern, und praktische Aktionen nach dem Laden wie Bildextraktion und PDF‑Konvertierung demonstriert. Durch das Befolgen der Schritte besitzen Sie nun eine zuverlässige Grundlage für jeden **HTML conversion**‑Workflow, egal ob Sie einen Web‑Scraper, einen Dokumenten‑Archivierungsservice oder einen dynamischen Berichtsgenerator bauen. + +**Nächste Schritte** + +* Experimentieren Sie mit verschiedenen `max_handling_depth`‑Werten, um Vollständigkeit gegen Leistung abzuwägen. +* Versuchen Sie, das Dokument zu konvertieren in + +## Was sollten Sie als Nächstes lernen? + +Die folgenden Tutorials behandeln eng verwandte Themen, die auf den in diesem Leitfaden gezeigten Techniken aufbauen. Jede Ressource enthält vollständige funktionierende Codebeispiele mit Schritt‑für‑Schritt‑Erklärungen, um Ihnen zu helfen, weitere API‑Funktionen zu meistern und alternative Implementierungsansätze in Ihren eigenen Projekten zu erkunden. + +- [How to Parse HTML Java – Load, Query & Count Elements](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [How to Edit HTML Document Tree in Aspose.HTML for Java](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [Handle Document Load Events in Aspose.HTML for Java](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/greek/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..744beac5b --- /dev/null +++ b/html/greek/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-08-22 +description: Πώς να μετατρέψετε HTML σε PDF σε Python χρησιμοποιώντας το Aspose.HTML + – μάθετε πώς να δημιουργείτε PDF από αρχείο HTML, να παράγετε PDF από κώδικα HTML + και να αποθηκεύετε HTML ως PDF σε Python γρήγορα. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: el +lastmod: 2026-08-22 +og_description: Πώς να μετατρέψετε HTML σε PDF σε Python με το Aspose.HTML. Αυτό το + σεμινάριο σας δείχνει πώς να δημιουργήσετε PDF από αρχείο HTML, να δημιουργήσετε + PDF από κώδικα HTML και να αποθηκεύσετε HTML ως PDF σε Python. +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: Πώς να μετατρέψετε το HTML σε PDF με Python – οδηγός βήμα‑προς‑βήμα +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: Πώς να μετατρέψετε HTML σε PDF σε Python με το Aspose.HTML +url: /el/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να μετατρέψετε HTML σε PDF με Python και Aspose.HTML + +Αν χρειάζεστε **how to convert html to pdf** γρήγορα, αυτός ο οδηγός σας παρουσιάζει μια πλήρη, έτοιμη‑για‑εκτέλεση λύση. Θα δείτε πώς να **create pdf from html file**, **generate pdf from html code**, και **save html as pdf python** χρησιμοποιώντας το απλό API του Aspose.HTML. + +Θα περάσουμε από κάθε βήμα, θα εξηγήσουμε γιατί κάθε γραμμή είναι σημαντική και θα καλύψουμε κοινά προβλήματα, ώστε να μπορείτε να προσαρμόσετε τον κώδικα σε οποιοδήποτε έργο. Χωρίς εξωτερικά εργαλεία, μόνο λίγες γραμμές Python. + +## Προαπαιτούμενα + +Πριν ξεκινήσετε, βεβαιωθείτε ότι έχετε: + +* Python 3.8 ή νεότερη εγκατεστημένη. +* Ένα ενεργό license του Aspose.HTML for Python (ή ένα δωρεάν κλειδί αξιολόγησης). +* Το πακέτο `aspose.html` εγκατεστημένο: + +```bash +pip install aspose-html +``` + +Η ύπαρξη αυτών των στοιχείων εξασφαλίζει ότι η μετατροπή θα εκτελεστεί χωρίς σφάλματα χρόνου εκτέλεσης. + +## Βήμα 1: Φόρτωση του εγγράφου HTML (create pdf from html file) + +Το πρώτο έργο είναι η ανάγνωση του πηγαίου HTML. Το Aspose.HTML αντιπροσωπεύει ένα έγγραφο με την κλάση `HTMLDocument`, η οποία αφαιρεί τη διαχείριση αρχείων, την ανάκτηση από το δίκτυο και την ανάλυση DOM. + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*Γιατί είναι σημαντικό:* +`HTMLDocument` φορτώνει το HTML, επιλύει σχετικούς πόρους (εικόνες, CSS, γραμματοσειρές) και δημιουργεί ένα DOM που ο μετατροπέας μπορεί να αποδώσει με ακρίβεια. Η παράλειψη αυτού του βήματος ή η χρήση απλού string θα χάσει αυτές τις επιλύσεις πόρων. + +## Βήμα 2: Διαμόρφωση επιλογών αποθήκευσης PDF (save html as pdf python) + +Το Aspose.HTML σας επιτρέπει να ρυθμίσετε λεπτομερώς την έξοδο PDF μέσω του `PdfSaveOptions`. Η προεπιλεγμένη διαμόρφωση παράγει ήδη PDF υψηλής ποιότητας, αλλά μπορείτε να προσαρμόσετε το μέγεθος σελίδας, τη συμπίεση ή τα μεταδεδομένα αν χρειάζεται. + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*Γιατί είναι σημαντικό:* +Ακόμη και αν διατηρήσετε τις προεπιλογές, η δημιουργία ενός αντικειμένου επιλογών κάνει τον κώδικα επεκτάσιμο. Μελλοντικές αλλαγές—όπως η ενσωμάτωση κωδικού πρόσβασης PDF—μπορούν να προστεθούν χωρίς να χρειάζεται επανασχεδίαση του script. + +## Βήμα 3: Εκτέλεση της μετατροπής (convert html to pdf python) + +Η μέθοδος `Converter.convert` συνδέει το έγγραφο HTML με τις επιλογές PDF, γράφοντας το αποτέλεσμα στη διαδρομή αρχείου που καθορίζετε. + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*Γιατί είναι σημαντικό:* +`Converter.convert` εκτελεί τη μηχανή απόδοσης, μετατρέποντας HTML/CSS σε διανυσματικό PDF. Διαχειρίζεται σύνθετες διατάξεις, ενσωματωμένες γραμματοσειρές και γραφικά SVG αυτόματα—κάτι που συχνά λείπει σε χειροκίνητες βιβλιοθήκες. + +### Αναμενόμενο αποτέλεσμα + +Η εκτέλεση του script παράγει το `sample.pdf` στον ίδιο φάκελο. Ανοίξτε το με οποιονδήποτε προβολέα PDF· θα πρέπει να δείτε μια πιστή αναπαράσταση του `sample.html`, συμπεριλαμβανομένων των στυλ, των εικόνων και των αλλαγών σελίδας. + +## Κοινές παραλλαγές και ειδικές περιπτώσεις + +| Κατάσταση | Πώς να το αντιμετωπίσετε | +|-----------|------------------------| +| **HTML είναι string, όχι αρχείο** | Χρησιμοποιήστε `HTMLDocument.from_string(html_string)` αντί για φόρτωση από διαδρομή. | +| **Χρειάζεστε PDF με κωδικό πρόσβασης** | Ορίστε `pdf_options.encryption.password = "yourPassword"` πριν από τη μετατροπή. | +| **Μεγάλα αρχεία HTML προκαλούν πίεση μνήμης** | Ενεργοποιήστε τη λειτουργία streaming: `pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`. | +| **Λείπουν προσαρμοσμένες γραμματοσειρές** | Καταχωρίστε το φάκελο γραμματοσειρών: `pdf_options.fonts_folder = "path/to/fonts"`.| + +Αυτές οι παραλλαγές δείχνουν την ευελιξία του API του Aspose.HTML ενώ διατηρούν την κύρια ροή εργασίας αμετάβλητη. + +## Πλήρες script (generate pdf from html code) + +Παρακάτω βρίσκεται το πλήρες, εκτελέσιμο πρόγραμμα που ενσωματώνει όλα τα βήματα. Αντιγράψτε‑και‑επικολλήστε, αντικαταστήστε το `YOUR_DIRECTORY` με έναν πραγματικό φάκελο και εκτελέστε. + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +Τρέξτε το με: + +```bash +python convert_html_to_pdf.py +``` + +Θα δείτε το μήνυμα επιβεβαίωσης και το PDF θα εμφανιστεί δίπλα στο πηγαίο HTML. + +## Συμβουλές αντιμετώπισης προβλημάτων (pro tip) + +* **Λείπουν εικόνες ή CSS** – Βεβαιωθείτε ότι το αρχείο HTML χρησιμοποιεί απόλυτες URL ή ότι οι σχετικές διαδρομές είναι σωστές σε σχέση με το `YOUR_DIRECTORY`. +* **Οι χαρακτήρες Unicode εμφανίζονται ως τετράγωνα** – Ενσωματώστε τις απαιτούμενες γραμματοσειρές μέσω `pdf_options.fonts_folder`. +* **Η μετατροπή είναι αργή** – Απενεργοποιήστε το `pdf_options.use_system_fonts = False` για να αποφύγετε την σάρωση του καταλόγου συστημικών γραμματοσειρών. + +## Συμπέρασμα + +Τώρα ξέρετε **how to convert html to pdf** σε Python με Aspose.HTML, από τη φόρτωση ενός αρχείου HTML μέχρι την αποθήκευση ενός PDF υψηλής ποιότητας. Το ίδιο μοτίβο σας επιτρέπει να **create pdf from html file**, **generate pdf from html code**, και **save html as pdf python** για οποιοδήποτε αυτοματοποιημένο workflow. + +Στη συνέχεια, μπορείτε να εξερευνήσετε: + +* Προσθήκη υδατογραφήματος ή κεφαλίδων/υποσέλιδων (λέξη‑κλειδί: *create pdf from html file*). +* Μετατροπή ενός ζωντανού URL αντί για τοπικό αρχείο (λέξη‑κλειδί: *convert html to pdf python*). +* Ενσωμάτωση του μετατροπέα σε API Flask ή Django για εξυπηρέτηση PDF κατ’ απαίτηση. + +Πειραματιστείτε με τις επιλογές και καλή δημιουργία PDF! + +## Τι πρέπει να μάθετε στη συνέχεια; + +Τα παρακάτω tutorials καλύπτουν στενά συναφή θέματα που επεκτείνουν τις τεχνικές που παρουσιάστηκαν σε αυτόν τον οδηγό. Κάθε πόρος περιλαμβάνει πλήρη λειτουργικό κώδικα με βήμα‑βήμα εξηγήσεις για να κατακτήσετε πρόσθετες δυνατότητες του API και να εξερευνήσετε εναλλακτικές προσεγγίσεις υλοποίησης στα δικά σας έργα. + +- [Convert HTML to PDF with Aspose.HTML – Full Manipulation Guide](/html/english/) +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Convert HTML to PDF in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-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/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/greek/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..1eab117ab --- /dev/null +++ b/html/greek/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-08-22 +description: Μάθετε πώς να δημιουργείτε markdown από ένα αρχείο HTML χρησιμοποιώντας + Python. Αυτός ο οδηγός βήμα‑βήμα δείχνει πώς να μετατρέψετε το HTML σε markdown + με μια αξιόπιστη βιβλιοθήκη. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: el +lastmod: 2026-08-22 +og_description: Πώς να δημιουργήσετε markdown από αρχείο HTML χρησιμοποιώντας Python. + Ακολουθήστε αυτόν τον οδηγό για να μετατρέψετε το HTML σε markdown γρήγορα με μια + αποδεδειγμένη βιβλιοθήκη. +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: Πώς να δημιουργήσετε markdown από HTML σε Python – πλήρης οδηγός +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: Πώς να δημιουργήσετε markdown από HTML σε Python – πλήρης οδηγός +url: /el/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να δημιουργήσετε markdown από HTML σε Python – πλήρης οδηγός + +Αν χρειάζεστε να μάθετε **πώς να δημιουργήσετε markdown** από υπάρχον περιεχόμενο ιστού, μπορείτε να μετατρέψετε ένα αρχείο HTML σε markdown με μόνο μερικές γραμμές Python. Αυτό το σεμινάριο σας καθοδηγεί μέσω του **convert html to markdown** χρησιμοποιώντας μια ειδική **html to markdown library** που λειτουργεί σε Windows, macOS και Linux. + +Θα μάθετε πώς να εγκαταστήσετε τη βιβλιοθήκη, να φορτώσετε ένα έγγραφο HTML, να διαμορφώσετε τις επιλογές Git‑flavored markdown και να γράψετε το αποτέλεσμα στο δίσκο. Στο τέλος του οδηγού, μπορείτε να μετατρέψετε αυτόματα οποιοδήποτε **html file to markdown**, κάτι που είναι χρήσιμο για γεννήτριες static‑site, pipelines τεκμηρίωσης ή έργα μετεγκατάστασης περιεχομένου. + +## Προαπαιτούμενα + +* Python 3.8 ή νεότερο εγκατεστημένο (ελέγξτε με `python --version`). +* Πρόσβαση σε τερματικό ή γραμμή εντολών. +* Ένα αρχείο HTML που θέλετε να μετατρέψετε (το παράδειγμα χρησιμοποιεί το `sample.html`). +* Σύνδεση στο διαδίκτυο για την εγκατάσταση του απαιτούμενου πακέτου. + +Το παράδειγμα κώδικα χρησιμοποιεί τη βιβλιοθήκη **GroupDocs.Conversion for Python**, η οποία παρέχει τις κλάσεις `HTMLDocument`, `MarkdownSaveOptions` και `Converter` που εμφανίζονται αργότερα. Οι ίδιες έννοιες ισχύουν για άλλα πακέτα **html to markdown python** όπως `markdownify` ή `html2text`—η μόνη διαφορά είναι οι δηλώσεις εισαγωγής. + +## Πώς να δημιουργήσετε markdown – βήμα 1: εγκαταστήστε τη βιβλιοθήκη html to markdown python + +Η πρώτη εργασία είναι να προσθέσετε τη βιβλιοθήκη μετατροπής στο περιβάλλον σας. Εκτελέστε την παρακάτω εντολή pip στο τερματικό σας: + +```bash +pip install groupdocs-conversion +``` + +> **Pro tip:** Χρησιμοποιήστε ένα εικονικό περιβάλλον (`python -m venv .venv`) για να διατηρήσετε τις εξαρτήσεις απομονωμένες από την παγκόσμια εγκατάσταση Python. + +Η εγκατάσταση του πακέτου σας δίνει πρόσβαση στις κλάσεις `HTMLDocument`, `MarkdownSaveOptions` και `Converter` που απαιτούνται για τη διαδικασία μετατροπής. + +## Μετατροπή html σε markdown – βήμα 2: φορτώστε το έγγραφο HTML + +Αφού εγκατασταθεί η βιβλιοθήκη, εισάγετε τις απαραίτητες κλάσεις και δημιουργήστε ένα αντικείμενο `HTMLDocument` που δείχνει στο αρχείο προέλευσης σας. + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +Το αντικείμενο `HTMLDocument` διαβάζει το αρχείο και το προετοιμάζει για μετατροπή. Εάν το αρχείο δεν υπάρχει, ο κατασκευαστής ρίχνει ένα `FileNotFoundError`, οπότε βεβαιωθείτε ότι η διαδρομή είναι σωστή. + +## html file to markdown – βήμα 3: διαμορφώστε τις επιλογές Git‑flavored markdown + +Πολλά έργα προτιμούν το Git‑flavored markdown επειδή προσθέτει υποστήριξη για πίνακες, λίστες εργασιών και σύνταξη διαγράμμισης. Η βιβλιοθήκη σας επιτρέπει να ενεργοποιήσετε αυτήν τη ρύθμιση μέσω της ιδιότητας `git` στο `MarkdownSaveOptions`. + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +Ορίζοντας `git = True` λέει στον μετατροπέα να παράγει σύνταξη που αποδίδεται σωστά από GitHub, GitLab και Bitbucket. Εάν χρειάζεστε απλό markdown, αφήστε τη σημαία `False`. + +## Αποθήκευση του markdown αποτελέσματος – βήμα 4: γράψτε το αποτέλεσμα με τη βιβλιοθήκη html to markdown + +Τέλος, καλέστε τη μέθοδο `Converter.convert`, περνώντας το έγγραφο προέλευσης, το αντικείμενο επιλογών και τη διαδρομή προορισμού. + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +Όταν το script ολοκληρωθεί, το `git_flavored.md` περιέχει την markdown αναπαράσταση του `sample.html`. Μπορείτε να ανοίξετε το αρχείο σε οποιονδήποτε επεξεργαστή ή να το τροφοδοτήσετε απευθείας σε μια γεννήτρια static‑site. + +### Αναμενόμενο αποτέλεσμα + +Υποθέτοντας ότι το `sample.html` περιέχει έναν απλό τίτλο και παράγραφο, το παραγόμενο markdown μπορεί να φαίνεται ως εξής: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +Εάν το αρχικό HTML περιλαμβάνει πίνακες, λίστες ή μπλοκ κώδικα, η ρύθμιση Git‑flavored θα διατηρήσει αυτές τις δομές χρησιμοποιώντας την κατάλληλη σύνταξη markdown. + +## Κατανόηση της βιβλιοθήκης html to markdown + +Η βιβλιοθήκη **GroupDocs.Conversion** αφαιρεί τις λεπτομέρειες ανάλυσης και απόδοσης που θα έπρεπε να διαχειριστείτε χειροκίνητα. Κάνει: + +* Διατηρεί το στυλ βασισμένο σε CSS όπου είναι δυνατόν (π.χ., έντονα, πλάγια). +* Δημιουργεί καθαρό, αναγνώσιμο markdown χωρίς επιπλέον οντότητες HTML. +* Υποστηρίζει μαζική μετατροπή, ώστε να μπορείτε να επαναλαμβάνετε πάνω σε έναν φάκελο αρχείων HTML με τον ίδιο κώδικα. + +Εάν προτιμάτε μια πιο ελαφριά λύση, το πακέτο `markdownify` προσφέρει ένα API μίας συνάρτησης: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +Και οι δύο προσεγγίσεις επιτυγχάνουν τον ίδιο τελικό στόχο—**convert html to markdown**—αλλά η επιλογή GroupDocs παρέχει μεγαλύτερο έλεγχο του μορφότυπου εξόδου και ενσωματώνεται εύκολα σε μεγαλύτερα pipelines επεξεργασίας εγγράφων. + +## Συνηθισμένα προβλήματα και πώς να τα αποφύγετε + +| Πρόβλημα | Γιατί συμβαίνει | Διόρθωση | +|----------|----------------|----------| +| Απουσία εικόνων στο markdown | Ο μετατροπέας περιλαμβάνει μόνο URLs εικόνων· δεν ενσωματώνει αρχεία. | Βεβαιωθείτε ότι τα αρχεία εικόνας είναι προσβάσιμα από τη θέση του markdown ή αντιγράψτε τα μαζί με το αποτέλεσμα. | +| Κατεστραμμένοι σχετικοί σύνδεσμοι | Το HTML μπορεί να χρησιμοποιεί σχετικές διαδρομές που γίνονται άκυρες μετά τη μετατροπή. | Χρησιμοποιήστε το `md_options.base_path` (αν είναι διαθέσιμο) για να ξαναγράψετε τους συνδέσμους, ή εκτελέστε ένα script post‑processing για να προσαρμόσετε τις διαδρομές. | +| Οι χαρακτήρες Unicode διαφράζονται | Κάποια πακέτα διαφράζουν μη‑ASCII χαρακτήρες. | Ορίστε `md_options.encode_utf8 = True` (ή την αντίστοιχη σημαία) για να διατηρήσετε τους χαρακτήρες αμετάβλητους. | + +Η αντιμετώπιση αυτών των προβλημάτων νωρίς εξοικονομεί χρόνο όταν κλιμακώνετε τη μετατροπή σε δεκάδες ή εκατοντάδες αρχεία. + +## Πλήρες, εκτελέσιμο παράδειγμα + +Παρακάτω υπάρχει ένα αυτόνομο script που μπορείτε να αντιγράψετε, τροποποιήσετε και εκτελέσετε αμέσως. Αντικαταστήστε το `YOUR_DIRECTORY` με τον πραγματικό φάκελο στο μηχάνημά σας. + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +Εκτελέστε το script: + +```bash +python markdown_from_html.py +``` + +Θα πρέπει να δείτε ένα μήνυμα επιβεβαίωσης και ένα νέο αρχείο `git_flavored.md` που περιέχει την markdown έκδοση του HTML σας. + +## Συμπέρασμα + +Τώρα γνωρίζετε **πώς να δημιουργήσετε markdown** από μια πηγή HTML χρησιμοποιώντας Python. Ο οδηγός κάλυψε την εγκατάσταση μιας αξιόπιστης **html to markdown library**, τη φόρτωση ενός **html file to markdown**, τη διαμόρφωση των επιλογών **html to markdown python**, και την αποθήκευση του αποτελέσματος. Με αυτή τη βάση μπορείτε να αυτοματοποιήσετε pipelines τεκμηρίωσης, να μεταφέρετε παλιές ιστοσελίδες ή να δημιουργήσετε περιεχόμενο για γεννήτριες static‑site. + +**Επόμενα βήματα** + +* Εξερευνήστε τη μαζική μετατροπή επαναλαμβάνοντας έναν φάκελο αρχείων HTML. +* Προσαρμόστε το `MarkdownSaveOptions` για να ελέγχετε τα στυλ τίτλων, τη μορφοποίηση λιστών ή τη διαχείριση εικόνων. +* Συνδυάστε αυτό το script με μια ροή εργασίας CI/CD για να διατηρείτε την τεκμηρίωση markdown ενημερωμένη αυτόματα. + +Καλή μετατροπή! + +## Τι Θα Πρέπει Να Μάθετε Στη Σειρά; + +Τα παρακάτω σεμινάρια καλύπτουν στενά σχετικές θεματικές που βασίζονται στις τεχνικές που παρουσιάζονται σε αυτόν τον οδηγό. Κάθε πόρος περιλαμβάνει πλήρη παραδείγματα κώδικα με βήμα‑βήμα εξηγήσεις για να σας βοηθήσουν να κατακτήσετε πρόσθετες δυνατότητες API και να εξερευνήσετε εναλλακτικές προσεγγίσεις υλοποίησης στα δικά σας έργα. + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/greek/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..5e4c04475 --- /dev/null +++ b/html/greek/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,185 @@ +--- +category: general +date: 2026-08-22 +description: Μάθετε πώς να δημιουργείτε markdown από HTML σε Python με ένα απλό τρι‑βήμα + σενάριο. Περιλαμβάνει επιλογές μετατροπής και συμβουλές εξαγωγής. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: el +lastmod: 2026-08-22 +og_description: Δημιουργήστε markdown από HTML με Python σε μόλις τρεις γραμμές. Αυτός + ο οδηγός δείχνει τη μετατροπή, τις επιλογές μορφοποίησης και πώς να εξάγετε το HTML + σε markdown αποδοτικά. +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: Δημιουργία markdown από HTML σε Python – οδηγός βήμα‑βήμα +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: Πώς να δημιουργήσετε markdown από HTML χρησιμοποιώντας Python +url: /el/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να δημιουργήσετε markdown από HTML χρησιμοποιώντας Python + +Αν χρειάζεστε **να δημιουργήσετε markdown από HTML**, αυτός ο σύντομος οδηγός δείχνει ακριβώς πώς να το κάνετε με Python. Θα δείτε ένα σαφές, τρι‑βήμα σενάριο που φορτώνει ένα αρχείο HTML, ρυθμίζει την έξοδο Git‑flavored Markdown και γράφει το αποτέλεσμα στο δίσκο. + +Η μετατροπή περιεχομένου ιστού σε ελαφρύ markup είναι μια συνηθισμένη εργασία όταν δημιουργείτε στατικούς ιστότοπους, pipelines τεκμηρίωσης ή σημειωματάρια ανάλυσης δεδομένων. Σε αυτό το tutorial θα αγγίξουμε επίσης πώς να **να μετατρέψετε HTML σε markdown** με προαιρετική μορφοποίηση, θα απαντήσουμε στην ερώτηση **πώς να μετατρέψετε HTML** αποδοτικά, και θα επιδείξουμε τη ροή εργασίας **εξαγωγή HTML σε markdown** χρησιμοποιώντας τη δημοφιλή βιβλιοθήκη `groupdocs-conversion`. + +## Προαπαιτούμενα + +* Εγκατεστημένο Python 3.8 ή νεότερο. +* Το πακέτο `groupdocs-conversion` (ή οποιαδήποτε βιβλιοθήκη που παρέχει `HTMLDocument`, `MarkdownSaveOptions` και `Converter`). Εγκαταστήστε το με: + +```bash +pip install groupdocs-conversion +``` + +* Ένα αρχείο HTML που θέλετε να μετατρέψετε, π.χ., `sample.html` τοποθετημένο σε φάκελο που ελέγχετε. + +Δεν απαιτούνται πρόσθετες εξαρτήσεις συστήματος, και ο κώδικας λειτουργεί σε Windows, macOS και Linux. + +## Βήμα 1: Φόρτωση του πηγαίου εγγράφου HTML + +Η πρώτη ενέργεια είναι η δημιουργία ενός αντικειμένου `HTMLDocument` που αντιπροσωπεύει το πηγαίο αρχείο. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**Γιατί είναι σημαντικό:** `HTMLDocument` αναλύει το αρχείο, επιλύει σχετικούς συνδέσμους και προετοιμάζει το DOM για μετατροπή. Εάν το αρχείο δεν βρεθεί, ο κατασκευαστής ρίχνει ένα σαφές `FileNotFoundError`, ώστε να μπορείτε να χειριστείτε τα ελλιπή εισροές νωρίς. + +## Βήμα 2: Ρύθμιση επιλογών αποθήκευσης Markdown (Git‑flavored) + +Το Markdown έχει αρκετές διαλέκτους. Το Git‑flavored Markdown (GFM) προσθέτει πίνακες, λίστες εργασιών και κώδικα σε φράγματα, που συχνά απαιτούνται για αρχεία README ή σελίδες GitHub. + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**Γιατί είναι σημαντικό:** Επιλέγοντας ρητά `MarkdownFormatter.GIT`, διασφαλίζετε ότι η έξοδος ακολουθεί τους ίδιους κανόνες που αποδίδει το GitHub, αποφεύγοντας εκπλήξεις όταν το markdown εμφανίζεται σε αποθετήριο. Εάν προτιμάτε απλό Markdown, αντικαταστήστε `MarkdownFormatter.GIT` με `MarkdownFormatter.DEFAULT`. + +## Βήμα 3: Μετατροπή του εγγράφου HTML σε αρχείο Markdown + +Τώρα καλέστε τη μηχανή μετατροπής και γράψτε το αποτέλεσμα στη διαδρομή προορισμού. + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**Γιατί είναι σημαντικό:** `Converter.convert` αναλαμβάνει το βαρέως φορτίου—μετατρέπει ετικέτες HTML στα αντίστοιχα markdown, διατηρεί τις εικόνες (αντιγράφοντάς τες στο φάκελο εξόδου αν χρειάζεται) και εφαρμόζει τον επιλεγμένο μορφοποιητή. Η μέθοδος επιστρέφει `None` σε περίπτωση επιτυχίας, αλλά μπορείτε να πιάσετε `ConversionException` για λεπτομερή αναφορά σφαλμάτων. + +### Αναμενόμενη έξοδος + +Μετά την εκτέλεση του σεναρίου, το `sample.md` θα περιέχει κάτι όπως: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +Το ακριβές markdown αντικατοπτρίζει τη δομή του `sample.html`. Πίνακες, εικόνες και μπλοκ κώδικα θα μετατραπούν σύμφωνα με τους κανόνες του GFM. + +## Συνηθισμένες παραλλαγές και ακραίες περιπτώσεις + +| Situation | Recommended tweak | +|-----------|-------------------| +| **Μεγάλα αρχεία HTML (>10 MB)** | Αυξήστε το όριο επαναληπτικότητας του Python ή ρέξτε την είσοδο χρησιμοποιώντας `HTMLDocument.open_stream()` εάν η βιβλιοθήκη το υποστηρίζει. | +| **Εικόνες που αναφέρονται με απόλυτα URLs** | Ορίστε `md_options.embed_images = True` για ενσωμάτωση εικόνων ως base‑64 data URIs, ή διατηρήστε τις ως συνδέσμους για πιο ελαφριά έξοδο. | +| **Χρειάζεστε απλό Markdown αντί για GFM** | Αλλάξτε `md_options.formatter = MarkdownFormatter.DEFAULT`. | +| **Προσαρμοσμένες κλάσεις CSS πρέπει να αγνοηθούν** | Χρησιμοποιήστε `md_options.ignore_css_classes = ["unwanted-class"]`. | +| **Εκτέλεση σε pipeline CI/CD** | Τυλίξτε το σενάριο σε μπλοκ `try/except` και βγείτε με μη μηδενική κατάσταση σε περίπτωση αποτυχίας, ώστε το pipeline να αποτύχει γρήγορα. | + +### Συμβουλή επαγγελματία + +Αν σκοπεύετε να μετατρέψετε πολλά αρχεία σε παρτίδα, επαναχρησιμοποιήστε ένα μόνο αντικείμενο `MarkdownSaveOptions` και αλλάξτε μόνο τις διαδρομές εισόδου/εξόδου μέσα σε έναν βρόχο. Αυτό μειώνει το κόστος δημιουργίας αντικειμένων και επιταχύνει τη διαδικασία κατά ~15 %. + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## Πώς να μετατρέψετε HTML σε markdown σε άλλες γλώσσες (γρήγορη σημείωση) + +Αν και αυτό το tutorial εστιάζει στο **html to markdown python**, οι ίδιες έννοιες ισχύουν για SDKs σε Java, C# ή JavaScript: δημιουργήστε ένα αντικείμενο εγγράφου, ρυθμίστε έναν markdown formatter και καλέστε τον μετατροπέα. Εάν ποτέ χρειαστείτε **εξαγωγή HTML σε markdown** από περιβάλλον μη‑Python, ψάξτε για τις αντίστοιχες κλάσεις `HtmlDocument`, `MarkdownSaveOptions` και `Converter` στο SDK της συγκεκριμένης γλώσσας. + +## Συμπέρασμα + +Τώρα ξέρετε πώς να **δημιουργήσετε markdown από HTML** με ένα σύντομο σενάριο Python. Η τρι‑βήμα ροή—φόρτωση του HTML, ρύθμιση επιλογών Git‑flavored και εκτέλεση της μετατροπής—καλύπτει τον πυρήνα κάθε ροής εργασίας **convert html to markdown**. Από εδώ μπορείτε: + +* Ενσωματώστε το σενάριο σε γεννήτριες static‑site. +* Αυτοματοποιήστε τις ενημερώσεις τεκμηρίωσης σε pipelines CI. +* Επεκτείνετε τη μετατροπή με προσαρμοσμένη μετα-επεξεργασία (π.χ., επανεγγραφή συνδέσμων ή προσαρμογές επικεφαλίδων). + +Μη διστάσετε να πειραματιστείτε με τις δευτερεύουσες επιλογές—**πώς να μετατρέψετε html** με διαφορετικούς μορφοποιητές, ή ρυθμίζοντας τις ρυθμίσεις **εξαγωγή html σε markdown** για εικόνες και πίνακες. Καλή μετατροπή! + +## Τι θα πρέπει να μάθετε στη συνέχεια; + +Τα παρακάτω tutorials καλύπτουν στενά σχετιζόμενα θέματα που βασίζονται στις τεχνικές που παρουσιάζονται σε αυτόν τον οδηγό. Κάθε πόρος περιλαμβάνει πλήρη παραδείγματα κώδικα με βήμα‑βήμα εξηγήσεις για να σας βοηθήσουν να κυριαρχήσετε σε πρόσθετες δυνατότητες API και να εξερευνήσετε εναλλακτικές προσεγγίσεις υλοποίησης στα δικά σας έργα. + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/greek/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..ef4d998ab --- /dev/null +++ b/html/greek/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,283 @@ +--- +category: general +date: 2026-08-22 +description: Δημιουργήστε PDF από SVG χρησιμοποιώντας Python σε λίγα λεπτά. Μάθετε + πώς να μετατρέπετε SVG σε PDF, να αποθηκεύετε SVG ως PDF και να χρησιμοποιείτε έναν + αξιόπιστο μετατροπέα SVG σε PDF. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: el +lastmod: 2026-08-22 +og_description: Δημιουργήστε PDF από SVG με Python γρήγορα. Αυτός ο οδηγός δείχνει + πώς να μετατρέψετε SVG σε PDF, να χρησιμοποιήσετε έναν μετατροπέα SVG σε PDF και + να αποθηκεύσετε SVG ως PDF σε ένα ενιαίο script. +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: Δημιουργία PDF από SVG σε Python – βήμα‑βήμα οδηγός +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: Πώς να δημιουργήσετε PDF από SVG σε Python – πλήρης οδηγός +url: /el/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να δημιουργήσετε PDF από SVG σε Python – πλήρης οδηγός + +Αν χρειάζεστε να **δημιουργήσετε PDF από SVG** γρήγορα, αυτό το σεμινάριο σας δείχνει ακριβώς πώς. Θα περάσουμε από τη μετατροπή ενός αρχείου SVG σε PDF χρησιμοποιώντας έναν δημοφιλές μετατροπέα SVG‑σε‑PDF, ώστε να μπορείτε να ενσωματώσετε διανυσματικά γραφικά σε αναφορές, τιμολόγια ή ηλεκτρονικά βιβλία χωρίς να αφήσετε τον κώδικα Python. + +Θα μάθετε πώς να **μετατρέψετε SVG σε PDF**, να διαχειριστείτε την κλιμάκωση, να διατηρήσετε τις γραμματοσειρές και τελικά να **αποθηκεύσετε SVG ως PDF** με ένα ενιαίο, επαναλήψιμο script. Δεν απαιτούνται εξωτερικά εργαλεία γραμμής εντολών—μόνο λίγες γραμμές Python και η βιβλιοθήκη Aspose.SVG for Python. + +## Απαιτούμενα + +Πριν ξεκινήσετε, βεβαιωθείτε ότι έχετε: + +| Απαίτηση | Αιτία | +|-------------|--------| +| Python 3.8+ | Η βιβλιοθήκη στοχεύει σε σύγχρονες εκδόσεις του Python. | +| `aspose.svg` package | Παρέχει `SVGDocument`, `PdfSaveOptions` και `Converter`. Εγκαταστήστε με `pip install aspose-svg`. | +| Ένα αρχείο SVG (`vector.svg`) | Το πηγαίο διανυσματικό γραφικό που θέλετε να μετατρέψετε. | +| Δικαίωμα εγγραφής στο φάκελο εξόδου | Απαιτείται για **save SVG as PDF**. | + +Μπορείτε να εγκαταστήσετε τη βιβλιοθήκη με: + +```bash +pip install aspose-svg +``` + +> **Συμβουλή επαγγελματία:** Χρησιμοποιήστε ένα εικονικό περιβάλλον (`python -m venv venv`) για να διατηρήσετε τις εξαρτήσεις απομονωμένες. + +## Επισκόπηση της διαδικασίας μετατροπής + +Η μετατροπή αποτελείται από τρία απλά βήματα: + +1. Φορτώστε το **SVG document** από το δίσκο. +2. Δημιουργήστε **PDF save options** (μπορείτε να προσαρμόσετε το μέγεθος σελίδας, DPI κ.λπ.). +3. Καλέστε τον **converter** για να παραγάγετε ένα αρχείο PDF. + +Οι παρακάτω ενότητες αναλύουν κάθε βήμα, εξηγούν *γιατί* ο κώδικας είναι γραμμένος έτσι, και παρουσιάζουν το πλήρες, εκτελέσιμο script. + +## Δημιουργία PDF από SVG χρησιμοποιώντας το Aspose.SVG για Python + +Αυτό το H2 περιέχει τη βασική λέξη-κλειδί **create pdf from svg**, ικανοποιώντας την απαίτηση SEO. + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### Γιατί λειτουργεί αυτό + +* **`SVGDocument`** αναλύει το XML του SVG και δημιουργεί μια αναπαράσταση στη μνήμη που ο μετατροπέας μπορεί να αποδώσει. +* **`PdfSaveOptions`** σας επιτρέπει να ρυθμίσετε την έξοδο PDF (μέγεθος σελίδας, συμπίεση, DPI). Οι προεπιλογές παράγουν ήδη ένα πιστό PDF, γι' αυτό το παράδειγμα λειτουργεί αμέσως. +* **`Converter.convert`** εκτελεί το βαρέως τύπου έργο: ραστεριάζει τα διανυσματικά δεδομένα στις σελίδες PDF διατηρώντας την ακρίβεια του διανύσματος, ώστε το παραγόμενο PDF να παραμένει καθαρό σε οποιοδήποτε επίπεδο ζουμ. + +## Μετατροπή SVG σε PDF με προσαρμοσμένο μέγεθος σελίδας + +Αν χρειάζεστε συγκεκριμένο μέγεθος σελίδας—π.χ. A4 για εκτυπώσιμες αναφορές—προσαρμόστε τις `PdfSaveOptions`: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **Edge case:** Ορισμένα SVG ορίζουν ένα `viewBox` που δεν ταιριάζει με τις επιθυμητές διαστάσεις PDF. Η παράκαμψη των `page_width`/`page_height` εξασφαλίζει ότι το PDF ταιριάζει με τις προσδοκίες διάταξης. + +## Αποθήκευση SVG ως PDF διατηρώντας τις γραμματοσειρές + +Όταν το SVG σας αναφέρεται σε εξωτερικές γραμματοσειρές, βεβαιωθείτε ότι οι γραμματοσειρές είναι προσβάσιμες στον μετατροπέα. Τοποθετήστε τα αρχεία `.ttf` στον ίδιο φάκελο με το SVG ή ορίστε έναν προσαρμοσμένο φάκελο γραμματοσειρών: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +Ο μετατροπέας ενσωματώνει τις γραμματοσειρές απευθείας στο PDF, εγγυώμενος ότι η μετατροπή **svg file to pdf** φαίνεται ταυτοτική σε οποιονδήποτε υπολογιστή. + +## Μαζική μετατροπή: αρχείο svg σε pdf για πολλά αρχεία + +Συχνά έχετε έναν φάκελο γεμάτο με SVG assets. Ο παρακάτω βρόχος δείχνει έναν αποδοτικό **svg to pdf converter** που επεξεργάζεται κάθε αρχείο `.svg` σε έναν κατάλογο: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +Αυτό το απόσπασμα κώδικα απεικονίζει μια πρακτική ροή εργασίας **convert svg to pdf** που μπορεί να ενσωματωθεί σε CI pipelines ή αυτοματοποιημένους δημιουργούς αναφορών. + +## Επαλήθευση του αποτελέσματος + +Αφού τρέξετε το script, ανοίξτε το παραγόμενο PDF με οποιονδήποτε προβολέα (Adobe Reader, Chrome ή Preview). Θα πρέπει να δείτε: + +* Διανυσματικά σχήματα αποδομένα οξυγόνα σε οποιοδήποτε επίπεδο ζουμ. +* Κείμενο που ταιριάζει με την πηγή SVG, με ενσωματωμένες γραμματοσειρές εάν τις παρείχατε. +* Χωρίς ραστερικά artefacts—επειδή η μετατροπή διατηρεί τα αρχικά διανυσματικά δεδομένα. + +Αν παρατηρήσετε ελλιπείς γραμματοσειρές, ελέγξτε ξανά ότι τα αρχεία γραμματοσειρών είναι προσβάσιμα και ότι το SVG τις αναφέρει σωστά (ιδιότητα `font-family`). + +## Συνηθισμένα προβλήματα και πώς να τα αποφύγετε + +| Σύμπτωμα | Πιθανή αιτία | Διόρθωση | +|---------|--------------|-----| +| Κενές σελίδες PDF | Το SVG έχει εξωτερικούς πόρους (εικόνες, γραμματοσειρές) που δεν βρέθηκαν | Παρέχετε `fonts_folder` και βεβαιωθείτε ότι οι συνδεδεμένες εικόνες βρίσκονται στον ίδιο φάκελο ή χρησιμοποιήστε απόλυτα URLs. | +| Το κείμενο εμφανίζεται ως περιγράμματα | Η γραμματοσειρά δεν ενσωματώθηκε | Ορίστε `pdf_options.embed_fonts = True` (προεπιλογή) και βεβαιωθείτε ότι το αρχείο γραμματοσειράς υπάρχει. | +| Το PDF είναι μεγαλύτερο από το αναμενόμενο | Υψηλό DPI ή μη συμπιεσμένες εικόνες | Μειώστε το `pdf_options.dpi` ή ενεργοποιήστε τη συμπίεση: `pdf_options.compress = True`. | +| Οι διαστάσεις του SVG περικόπτονται | `viewBox` μεγαλύτερο από τη σελίδα PDF | Προσαρμόστε `pdf_options.page_width`/`page_height` ή κλιμακώστε το SVG μέσω `svg_doc.set_viewport`. | + +## Πλήρες παράδειγμα από αρχή μέχρι το τέλος + +Παρακάτω υπάρχει ένα αυτόνομο script που περιλαμβάνει διαχείριση σφαλμάτων, logging και προαιρετικά επιχειρήματα γραμμής εντολών. Αποθηκεύστε το ως `svg_to_pdf.py` και τρέξτε `python svg_to_pdf.py`. + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +Η εκτέλεση του script παράγει μια λειτουργία **save SVG as PDF** που μπορείτε να ενσωματώσετε σε μεγαλύτερα pipelines αυτοματοποίησης. + +### Αναμενόμενη έξοδος κονσόλας + + + +## Τι Θα Πρέπει Να Μάθετε Στη Σύντομη Μελλοντική; + +Τα παρακάτω σεμινάρια καλύπτουν στενά σχετιζόμενα θέματα που βασίζονται στις τεχνικές που παρουσιάστηκαν σε αυτόν τον οδηγό. Κάθε πόρος περιλαμβάνει πλήρη λειτουργικά παραδείγματα κώδικα με βήμα‑βήμα εξηγήσεις για να σας βοηθήσουν να κατακτήσετε πρόσθετες δυνατότητες API και να εξερευνήσετε εναλλακτικές προσεγγίσεις υλοποίησης στα δικά σας έργα. + +- [Μετατροπή SVG σε PDF σε .NET με Aspose.HTML](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg to pdf java – Δημιουργία PDF από SVG με Aspose.HTML για Java](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [Μετατροπή SVG σε PDF σε .NET με Aspose.HTML (Ισπανικά)](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/greek/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..93333d75a --- /dev/null +++ b/html/greek/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-08-22 +description: πώς να ενεργοποιήσετε τη ροή για τη μετατροπή μεγάλων αρχείων HTML σε + PDF στην Python, μειώνοντας τη χρήση μνήμης και επιταχύνοντας τη δημιουργία του + αποτελέσματος. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: el +lastmod: 2026-08-22 +og_description: πώς να ενεργοποιήσετε τη ροή για τη μετατροπή μεγάλων HTML σε PDF + με Python, μειώνοντας τη χρήση μνήμης και επιταχύνοντας τη δημιουργία του αποτελέσματος. +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: Ενεργοποίηση ροής για μετατροπή HTML‑σε‑PDF σε Python +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: Πώς να ενεργοποιήσετε τη ροή κατά τη μετατροπή HTML σε PDF με την Python +url: /el/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να ενεργοποιήσετε τη ροή δεδομένων κατά τη μετατροπή HTML σε PDF με Python + +Αν χρειάζεστε **πώς να ενεργοποιήσετε τη ροή δεδομένων** κατά τη διάρκεια μιας μεγάλης μετατροπής HTML‑σε‑PDF, αυτός ο οδηγός σας δείχνει τα ακριβή βήματα. Ενεργοποιώντας τη ροή δεδομένων αποφεύγετε τη φόρτωση ολόκληρου του εγγράφου στη μνήμη, κάτι που είναι απαραίτητο όταν μετατρέπετε HTML σε PDF για μεγάλα αρχεία. + +Θα μάθετε πώς να ενεργοποιήσετε τη ροή δεδομένων, να μετατρέψετε HTML σε PDF με Python και να διαχειριστείτε ειδικές περιπτώσεις όπως εργασίες μεγάλης μετατροπής HTML σε PDF. Η λύση λειτουργεί με τη δημοφιλής βιβλιοθήκη `groupdocs-conversion` (ή παρόμοια), αλλά οι έννοιες ισχύουν για οποιονδήποτε μετατροπέα που υποστηρίζει ροή δεδομένων. + +![Diagram showing streaming conversion from HTML to PDF using Python](streaming-diagram.png) + +## Τι θα χρειαστείτε + +- Python 3.9 ή νεότερο +- `groupdocs-conversion` (ή οποιαδήποτε βιβλιοθήκη που προσφέρει `PdfSaveOptions` με σημαία ροής) +- Ένα αρχείο HTML που θέλετε να μετατρέψετε σε PDF (το παράδειγμα χρησιμοποιεί ένα μεγάλο αρχείο με όνομα `large.html`) + +Η ύπαρξη αυτών των προαπαιτήσεων εξασφαλίζει ότι ο κώδικας εκτελείται χωρίς πρόσθετη διαμόρφωση. + +## Βήμα 1: Εγκατάσταση της βιβλιοθήκης μετατροπής + +Αρχικά, εγκαταστήστε το πακέτο Python που παρέχει `HTMLDocument`, `PdfSaveOptions` και `Converter`. Η πιο κοινή επιλογή είναι το SDK **GroupDocs.Conversion**: + +```bash +pip install groupdocs-conversion +``` + +> **Pro tip:** Χρησιμοποιήστε ένα εικονικό περιβάλλον (`python -m venv .venv`) για να διατηρήσετε τις εξαρτήσεις απομονωμένες. + +## Βήμα 2: Φόρτωση του εγγράφου HTML που θέλετε να μετατρέψετε + +Η φόρτωση του πηγαίου HTML είναι απλή. Η κλάση `HTMLDocument` διαβάζει το αρχείο από το δίσκο και το προετοιμάζει για μετατροπή. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +Το αντικείμενο `HTMLDocument` αντιπροσωπεύει ολόκληρο το σήμα HTML, συμπεριλαμβανομένων των εξωτερικών πόρων όπως εικόνες και CSS. Αυτό είναι το σημείο εκκίνησης για οποιαδήποτε λειτουργία **convert html to pdf**. + +## Βήμα 3: Δημιουργία επιλογών αποθήκευσης PDF και ενεργοποίηση της ροής δεδομένων + +Η ενεργοποίηση της ροής δεδομένων είναι η ουσία του **πώς να ενεργοποιήσετε τη ροή δεδομένων**. Αντί να αποθηκεύει ολόκληρο το PDF στη μνήμη, ο μετατροπέας γράφει τμήματα απευθείας στο αρχείο εξόδου. + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +Όταν το `enable_streaming` ορίζεται σε `True`, η βιβλιοθήκη χρησιμοποιεί μια προσέγγιση write‑through που μειώνει δραστικά την κατανάλωση RAM — κρίσιμο για σενάρια **large html to pdf**. + +## Βήμα 4: Μετατροπή του εγγράφου HTML σε PDF χρησιμοποιώντας τις ρυθμισμένες επιλογές + +Τώρα εκτελέστε τη μετατροπή. Η μέθοδος `Converter.convert` δέχεται το πηγαίο έγγραφο, το αντικείμενο επιλογών και τη διαδρομή προορισμού. + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +Μετά το τέλος αυτής της κλήσης, το `large.pdf` περιέχει το παραγόμενο PDF, το οποίο δημιουργήθηκε ενώ τα δεδομένα ρέουν στο δίσκο. Η ολόκληρη διαδικασία συνήθως ολοκληρώνεται πιο γρήγορα από μια μη‑ροή μετατροπή, επειδή το λειτουργικό σύστημα μπορεί να εκκενώσει τα δεδομένα στο σύστημα αρχείων σταδιακά. + +### Αναμενόμενο αποτέλεσμα + +Η εκτέλεση του script παράγει ένα αρχείο PDF του οποίου το μέγεθος ταιριάζει με το περιεχόμενο του αρχικού HTML. Μπορείτε να επαληθεύσετε το αποτέλεσμα με οποιονδήποτε προβολέα PDF: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## Γιατί η ροή δεδομένων είναι σημαντική για μεγάλες μετατροπές HTML σε PDF + +Όταν **convert html to pdf** χωρίς ροή δεδομένων, η βιβλιοθήκη πρώτα δημιουργεί ολόκληρο το PDF στη RAM πριν το γράψει στο δίσκο. Για μια μέτρια σελίδα αυτό είναι εντάξει, αλλά μια εργασία **large html to pdf** (π.χ., μια αναφορά HTML 10 MB με πολλές εικόνες) μπορεί να υπερβεί τα όρια μνήμης τυπικών λειτουργιών serverless ή κοντέινερ με χαμηλή μνήμη. + +Η ενεργοποίηση της ροής δεδομένων λύνει τρία προβλήματα: + +1. **Memory efficiency** – μόνο ένα μικρό buffer διατηρείται στη RAM. +2. **Faster perceived performance** – το αρχείο εμφανίζεται στο δίσκο ενώ εξακολουθεί να δημιουργείται, επιτρέποντας στις επόμενες διαδικασίες να αρχίσουν να το διαβάζουν νωρίτερα. +3. **Scalability** – μπορείτε να εκτελείτε πολλές μετατροπές παράλληλα χωρίς να εξαντλείται η μνήμη του κεντρικού συστήματος. + +## Συνηθισμένα προβλήματα και πώς να τα αποφύγετε + +| Σύμπτωμα | Πιθανή αιτία | Διόρθωση | +|----------|--------------|----------| +| `MemoryError` during conversion | Η σημαία streaming δεν έχει οριστεί ή η έκδοση της βιβλιοθήκης είναι πολύ παλιά | Βεβαιωθείτε ότι `pdf_opts.enable_streaming = True` και αναβαθμίστε στο πιο πρόσφατο SDK (`pip install --upgrade groupdocs-conversion`). | +| Missing images in the PDF | Οι σχετικές διαδρομές εικόνων δεν μπορούν να επιλυθούν | Περάστε τον βασικό φάκελο στο `HTMLDocument` ή ενσωματώστε τις εικόνες ως base64. | +| Output PDF is blank | Το αρχείο HTML δεν βρέθηκε ή δεν είναι αναγνώσιμο | Επαληθεύστε τη διαδρομή `"YOUR_DIRECTORY/large.html"` και ελέγξτε τα δικαιώματα του αρχείου. | +| Conversion hangs indefinitely | Μεγάλοι εξωτερικοί πόροι (γραμματοσειρές, CSS) εμποδίζουν την απόδοση | Κατεβάστε εκ των προτέρων τα εξωτερικά στοιχεία ή χρησιμοποιήστε ένα headless browser για να τα ενσωματώσετε. | + +### Ειδική περίπτωση: Μετατροπή HTML από συμβολοσειρά + +Αν το περιεχόμενο HTML σας βρίσκεται στη μνήμη αντί για αρχείο, μπορείτε ακόμη να **πώς να ενεργοποιήσετε τη ροή δεδομένων** τυλίγοντας τη συμβολοσειρά σε έναν κατασκευαστή `HTMLDocument` που δέχεται ακατέργαστο HTML: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +Η συμπεριφορά ροής δεδομένων παραμένει ίδια επειδή το SDK γράφει το PDF σταδιακά. + +## Πλήρες script που μπορείτε να αντιγράψετε‑και‑επικολλήσετε + +Ακολουθεί ένα πλήρες, έτοιμο‑για‑εκτέλεση παράδειγμα που ενσωματώνει όλα τα βήματα που συζητήθηκαν. Αντικαταστήστε το `YOUR_DIRECTORY` με την πραγματική διαδρομή στο μηχάνημά σας. + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +Η εκτέλεση του `python full_example.py` θα δημιουργήσει το `large.pdf` χρησιμοποιώντας την προσέγγιση ροής δεδομένων. + +## Ανακεφαλαίωση + +- Τώρα ξέρετε **how to enable streaming** για μετατροπή HTML‑σε‑PDF με Python. +- Το script δείχνει τη πλήρη ροή εργασίας **convert html to pdf**, διαχειριζόμενο αποδοτικά φορτία **large html to pdf**. +- Ορίζοντας `PdfSaveOptions.enable_streaming = True`, ο μετατροπέας γράφει το αποτέλεσμα προοδευτικά, που είναι ο προτεινόμενος τρόπος για **stream html to pdf**. + +## Τι να εξερευνήσετε στη συνέχεια + +- Βιβλιοθήκες **HTML to PDF Python** που υποστηρίζουν CSS3 και JavaScript (π.χ., `WeasyPrint`, `pdfkit`). +- Προσθήκη προστασίας με κωδικό ή κρυπτογράφησης στο παραγόμενο PDF μέσω επιπλέον ρυθμίσεων `PdfSaveOptions`. +- Παραλληλοποίηση πολλαπλών μετατροπών σε σύστημα ουράς (Celery, RabbitMQ) διατηρώντας τη χρήση μνήμης χαμηλή. + +Μη διστάσετε να πειραματιστείτε με διαφορετικές πηγές HTML, μεγέθη σελίδας και μεταδεδομένα PDF. Η ροή δεδομένων καθιστά δυνατή τη διαχείριση ακόμη μεγαλύτερων εγγράφων χωρίς να θυσιάζεται η απόδοση. Καλή προγραμματιστική! + +## Τι πρέπει να μάθετε στη συνέχεια; + +Τα παρακάτω tutorials καλύπτουν στενά συναφή θέματα που επεκτείνουν τις τεχνικές που παρουσιάζονται σε αυτόν τον οδηγό. Κάθε πόρος περιλαμβάνει πλήρη παραδείγματα κώδικα με βήμα‑βήμα εξηγήσεις για να σας βοηθήσουν να κυριαρχήσετε σε πρόσθετα χαρακτηριστικά API και να εξερευνήσετε εναλλακτικές προσεγγίσεις υλοποίησης στα δικά σας έργα. + +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Create Fixed Thread Pool for Parallel HTML to PDF Conversion](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [How to Enable JavaScript in Aspose HTML – Load HTML & Get Text](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/greek/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..7b8f645bf --- /dev/null +++ b/html/greek/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-08-22 +description: Πώς να εξάγετε συνδέσμους από HTML και να τους μετατρέψετε σε αρχείο + markdown, συμπεριλαμβανομένων παραγράφων. Οδηγός βήμα‑προς‑βήμα για τη μετατροπή + HTML σε markdown. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: el +lastmod: 2026-08-22 +og_description: Πώς να εξάγετε συνδέσμους από ένα έγγραφο HTML και να το μετατρέψετε + σε αρχείο markdown, συμπεριλαμβανομένων των παραγράφων. Ακολουθήστε αυτό το πλήρες + σεμινάριο για αξιόπιστη μετατροπή από HTML σε markdown. +og_image_alt: How to export links while converting HTML to Markdown +og_title: Πώς να εξάγετε συνδέσμους κατά τη μετατροπή HTML σε Markdown – βήμα‑βήμα + οδηγός +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: Πώς να εξάγετε συνδέσμους κατά τη μετατροπή HTML σε Markdown +url: /el/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να εξάγετε συνδέσμους κατά τη μετατροπή HTML σε Markdown + +Αν χρειάζεστε **how to export links** από μια σελίδα HTML και θέλετε να μετατρέψετε το αποτέλεσμα σε ένα καθαρό **html to markdown file**, αυτός ο οδηγός σας δείχνει τα ακριβή βήματα. Θα ανακαλύψετε επίσης **how to extract paragraphs** ώστε η έξοδος markdown να περιέχει το κύριο περιεχόμενο που σας ενδιαφέρει. Στο τέλος του οδηγού μπορείτε να απαντήσετε στην ερώτηση “**how to convert html** to markdown” με ένα έτοιμο‑για‑εκτέλεση script. + +Η εξαγωγή συνδέσμων και η εξαγωγή παραγράφων είναι κοινές εργασίες όταν μεταφέρετε περιεχόμενο ιστού σε στατικές τοποθεσίες, πύλες τεκμηρίωσης ή back‑ends headless CMS. Η παρακάτω προσέγγιση λειτουργεί με το GroupDocs Conversion SDK for Python, αλλά οι έννοιες ισχύουν για οποιαδήποτε βιβλιοθήκη που σας επιτρέπει να διαμορφώσετε τις δυνατότητες εξαγωγής. + +--- + +## Τι θα χρειαστείτε + +- Python 3.9 ή νεότερη +- Πακέτο `groupdocs-conversion` (εγκατάσταση με `pip install groupdocs-conversion`) +- Ένα αρχείο HTML που θέλετε να επεξεργαστείτε (π.χ., `input.html`) +- Βασική εξοικείωση με scripting Python + +--- + +## Πώς να εξάγετε συνδέσμους με τη μετατροπή HTML σε Markdown + +Το πρώτο σημαντικό βήμα είναι η διαμόρφωση της μετατροπής ώστε μόνο τα επιθυμητά χαρακτηριστικά—σύνδεσμοι και παράγραφοι—να γραφτούν στο **html to markdown file**. Το SDK σας επιτρέπει να ορίσετε μια bitmask τιμών `MarkdownFeature`; συνδυάζουμε τα `LINKS` και `PARAGRAPHS` για να διατηρήσουμε την έξοδο εστιασμένη. + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### Γιατί λειτουργεί αυτό + +- **`HTMLDocument`** αναλύει το αρχικό αρχείο και δημιουργεί ένα DOM που μπορεί να περιηγηθεί ο μετατροπέας. +- **`MarkdownSaveOptions`** σας δίνει λεπτομερή έλεγχο πάνω σε ό,τι γράφει το SDK. Ορίζοντας το `features` σε `LINKS | PARAGRAPHS` λέει στη μηχανή να αγνοήσει εικόνες, πίνακες ή scripts, μειώνοντας τον θόρυβο στο τελικό **html to markdown file**. +- **`Converter.convert`** εκτελεί το βαριά έργο. Σεβεται τη μάσκα χαρακτηριστικών, εξάγει ετικέτες αγκύρωσης (``) και ετικέτες παραγράφου (`

`), και τις γράφει χρησιμοποιώντας τη στάνταρ σύνταξη Markdown. + +--- + +## Πώς να μετατρέψετε HTML σε Markdown με πλήρες περιεχόμενο (προαιρετικό) + +Αν αργότερα αποφασίσετε ότι χρειάζεστε ολόκληρη τη σελίδα—όχι μόνο συνδέσμους και παραγράφους—απλώς προσαρμόστε τη μάσκα χαρακτηριστικών: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +Η εκτέλεση της ίδιας μετατροπής τώρα παράγει ένα πλήρες **html to markdown file** που αντικατοπτρίζει την αρχική διάταξη. Αυτό δείχνει **how to convert html** με ευέλικτο τρόπο: ελέγχετε την έξοδο εναλλάσσοντας τις σημαίες χαρακτηριστικών. + +--- + +## Πώς να εξάγετε μόνο παραγράφους + +Μερικές φορές σας ενδιαφέρει μόνο το κείμενο ενός άρθρου, όχι οι υπερσυνδέσεις. Μπορείτε να απομονώσετε τις παραγράφους ορίζοντας τη μάσκα μόνο σε `PARAGRAPHS`: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +Το παραγόμενο markdown θα περιέχει καθαρό, περιτυλιγμένο κείμενο χωρίς καμία σήμανση συνδέσμου. Αυτό το απόσπασμα απαντά στην ερώτηση **how to extract paragraphs** από πηγή HTML. + +--- + +## Συνηθισμένα προβλήματα και πώς να τα αποφύγετε + +| Πρόβλημα | Γιατί συμβαίνει | Διόρθωση | +|----------|----------------|----------| +| Κενό αρχείο εξόδου | Το πηγαίο HTML δεν περιέχει ετικέτες `` ή `

` που ταιριάζουν με τα επιλεγμένα χαρακτηριστικά. | Επαληθεύστε τη δομή του HTML ή διευρύνετε τη μάσκα χαρακτηριστικών (π.χ., συμπεριλάβετε `HEADINGS`). | +| Προβλήματα κωδικοποίησης | Το HTML χρησιμοποιεί charset που δεν είναι UTF‑8 και το SDK το διαβάζει λανθασμένα. | Περνάτε μια ρητή κωδικοποίηση στο `HTMLDocument`, π.χ., `HTMLDocument(path, encoding="iso-8859-1")`. | +| Αντικατάσταση υπάρχοντος markdown | Η εκτέλεση του script πολλές φορές αντικαθιστά το προηγούμενο αρχείο. | Προσθέστε χρονική σήμανση στο όνομα του αρχείου εξόδου ή ελέγξτε `os.path.exists` πριν τη γραφή. | + +**Pro tip:** Όταν επεξεργάζεστε πολλά αρχεία σε έναν φάκελο, τυλίξτε τη λογική μετατροπής σε βρόχο και καταγράψτε κάθε αποτέλεσμα. Αυτό σας παρέχει ένα σαφές audit trail και διευκολύνει την επανεκκίνηση μετά από αποτυχία. + +--- + +## Πλήρες script που μπορείτε να αντιγράψετε‑επικολλήσετε + +Παρακάτω υπάρχει ένα αυτόνομο αρχείο Python (`convert_links_paragraphs.py`) που μπορείτε να εκτελέσετε άμεσα. Περιλαμβάνει ανάλυση ορισμάτων ώστε να μπορείτε να καθορίσετε διαδρομές εισόδου και εξόδου χωρίς να επεξεργαστείτε τον κώδικα. + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**Πώς να εκτελέσετε** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +Η παραπάνω εντολή δείχνει **how to export links** και **how to extract paragraphs** σε μία κλήση. Παραλείψτε το `--links` ή το `--paragraphs` για να προσαρμόσετε την έξοδο στις ανάγκες σας. + +--- + +## Επαλήθευση – πώς φαίνεται η έξοδος + +Δεδομένου του παρακάτω απλού HTML (`input.html`): + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +Η εκτέλεση του script με και τις δύο σημαίες παράγει το `links_and_paragraphs.md`: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +Βλέπετε ότι μόνο οι δύο παράγραφοι και ο υπερσύνδεσμος είναι παρόντες—ακριβώς αυτό που ζητήσατε όταν ψάχνατε **how to export links** ενώ εκτελούσατε **convert html to markdown**. + +--- + +## Επόμενα βήματα και συναφή θέματα + +- **How to convert html to markdown** με εικόνες: προσθέστε `MarkdownFeature.IMAGES` στη μάσκα. +- **How to extract paragraphs** και έπειτα post‑process + +## Τι Θα Πρέπει Να Μάθετε Στη Σειρά; + +Τα παρακάτω tutorials καλύπτουν στενά σχετικές θεματικές που βασίζονται στις τεχνικές που παρουσιάζονται σε αυτόν τον οδηγό. Κάθε πόρος περιλαμβάνει πλήρη παραδείγματα κώδικα με βήμα‑βήμα εξηγήσεις για να σας βοηθήσουν να κατακτήσετε πρόσθετες δυνατότητες API και να εξερευνήσετε εναλλακτικές προσεγγίσεις υλοποίησης στα δικά σας έργα. + +- [How to Set Offset When Converting HTML to Markdown in Java](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown to HTML Java - Convert with Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [Convert HTML to Markdown – Complete C# Guide](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/greek/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..e9524658b --- /dev/null +++ b/html/greek/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,282 @@ +--- +category: general +date: 2026-08-22 +description: Πώς να φορτώσετε HTML με το Aspose.HTML σε Python – περιορίστε το βάθος + των πόρων και ετοιμάστε το έγγραφο για μετατροπή ή επεξεργασία. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: el +lastmod: 2026-08-22 +og_description: Πώς να φορτώσετε HTML με το Aspose.HTML σε Python, να ορίσετε το βάθος + διαχείρισης πόρων και να ετοιμάσετε το έγγραφο για μετατροπή ή επεξεργασία. +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: Πώς να φορτώσετε HTML με το Aspose.HTML – Οδηγός Python +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: Πώς να φορτώσετε HTML με το Aspose.HTML σε Python +url: /el/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να φορτώσετε HTML με Aspose.HTML σε Python + +Αν χρειάζεστε **πώς να φορτώσετε html** γρήγορα και με ασφάλεια σε ένα έργο Python, αυτός ο οδηγός σας δείχνει τα ακριβή βήματα. Μέχρι το τέλος των πρώτων δύο προτάσεων θα γνωρίζετε πώς να ρυθμίσετε τη διαχείριση πόρων, να φορτώσετε το αρχείο και να κρατήσετε τη διαδικασία έτοιμη για περαιτέρω **HTML conversion** ή επεξεργασία. + +Η φόρτωση μεγάλων ή πολύπλοκων σελίδων συχνά προκαλεί προβλήματα σε αφελείς αναλυτές, επειδή οι εξωτερικοί πόροι (εικόνες, scripts, CSS) μπορούν να δημιουργήσουν βαθιά αναδρομή ή καθυστερήσεις δικτύου. Αυτό το tutorial καλύπτει ένα ανθεκτικό μοτίβο χρησιμοποιώντας **Aspose.HTML for Python**, παρουσιάζει την **HTMLDocument class**, και εξηγεί γιατί η ρύθμιση του **max_handling_depth** είναι σημαντική. + +Θα περάσετε από: + +* Εγκατάσταση του πακέτου Aspose.HTML +* Δημιουργία ενός αντικειμένου `ResourceHandlingOptions` και περιορισμός του βάθους +* Χρήση της κλάσης `HTMLDocument` για φόρτωση μιας σελίδας +* Προετοιμασία του εγγράφου για μετατροπή σε PDF, PNG ή περαιτέρω επεξεργασία + +Δεν απαιτείται προγενέστερη εμπειρία με το Aspose.HTML, μόνο βασικές γνώσεις Python. + +--- + +## Πώς να φορτώσετε HTML με Aspose.HTML σε Python + +Ο πυρήνας της λύσης είναι ένα μοτίβο τριών βημάτων που συνδυάζει **ResourceHandlingOptions** με την **HTMLDocument class**. Ο περιορισμός του βάθους διαχείρισης αποτρέπει ανεξέλεγκτες κλήσεις δικτύου όταν μια σελίδα αναφέρεται σε πολλούς ένθετους πόρους. + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### Γιατί λειτουργεί αυτό + +* **`ResourceHandlingOptions`** λέει στον αναλυτή πόσα επίπεδα εξωτερικών πόρων μπορεί να ακολουθήσει. Ορίζοντας `max_handling_depth = 3` ο φορτωτής σταματά μετά από τρία άλματα, κάτι που αρκεί για τις περισσότερες ιστοσελίδες αλλά προστατεύει από άπειρους βρόχους. +* **`HTMLDocument`** διαβάζει το αρχείο, εφαρμόζει τις επιλογές και δημιουργεί ένα DOM στη μνήμη που μπορείτε να ερωτήσετε, να τροποποιήσετε ή να αποδώσετε. +* Το προαιρετικό απόσπασμα μετατροπής δείχνει πώς το φορτωμένο έγγραφο ενσωματώνεται με τις δυνατότητες **HTML conversion**, όπως η αποθήκευση σε PDF. + +--- + +## Κατανόηση του ResourceHandlingOptions + +`ResourceHandlingOptions` είναι μέρος του **Aspose.HTML for Python** και σας δίνει λεπτομερή έλεγχο της δραστηριότητας δικτύου. + +| Property | Purpose | Typical value | +|-------------------------|----------------------------------------------------|---------------| +| `max_handling_depth` | Μέγιστο βάθος αναδρομής για συνδεδεμένους πόρους | `3` (default) | +| `allow_external_resources` | Αν θα κατεβάζονται εξωτερικά CSS, JS, εικόνες | `True` | +| `timeout` | Χρονικό όριο δικτύου ανά αίτηση (δευτερόλεπτα) | `30` | + +**Πρακτική συμβουλή:** Αν γνωρίζετε ότι η στόχος σελίδα αναφέρει μόνο τοπικά περιουσιακά στοιχεία, ορίστε `allow_external_resources = False` για να επιταχύνετε τη φόρτωση και να αποφύγετε περιττές κλήσεις HTTP. + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## Χρήση της κλάσης HTMLDocument + +Η **HTMLDocument class** είναι το σημείο εισόδου για όλες τις λειτουργίες του Aspose.HTML. Μόλις δημιουργηθεί, μπορείτε: + +* Να έχετε πρόσβαση στο DOM μέσω `doc.root` +* Να ερωτήσετε στοιχεία με CSS selectors (`doc.query_selector_all("img")`) +* Να αποδώσετε τη σελίδα σε μορφές raster (`doc.save("page.png")`) +* Να μετατρέψετε σε PDF (`doc.save("page.pdf", PDFSaveOptions())`) + +Παρακάτω υπάρχει ένα σύντομο απόσπασμα που εξάγει όλα τα `src` εικόνων μετά τη φόρτωση: + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**Γιατί μπορεί να το χρειαστείτε:** Όταν εκτελείτε **HTML conversion**, συχνά πρέπει να προσαρμόσετε ή να αντικαταστήσετε URLs εικόνων πριν την απόδοση σε άλλη μορφή. Η άμεση πρόσβαση στο DOM σας δίνει αυτήν την ευελιξία. + +--- + +## Επόμενα βήματα μετά τη φόρτωση του HTML + +Τώρα που το έγγραφο βρίσκεται στη μνήμη, μπορείτε να επιλέξετε από αρκετές κοινές ροές εργασίας: + +1. **Μετατροπή σε PDF** – Ιδανική για αρχειοθέτηση ή εκτύπωση. +2. **Απόδοση σε PNG/JPEG** – Χρήσιμη για μικρογραφίες ή οπτικές προεπισκοπήσεις. +3. **Επεξεργασία του DOM** – Εισαγωγή, αφαίρεση ή τροποποίηση στοιχείων πριν την αποθήκευση. +4. **Εξαγωγή κειμένου** – Λήψη ακατέργαστου κειμένου για ευρετηρίαση ή ανάλυση. + +### Παράδειγμα: Μετατροπή σε PDF με προσαρμοσμένο μέγεθος σελίδας + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**Αναμενόμενο αποτέλεσμα:** Ένα αρχείο με όνομα `big_page.pdf` εμφανίζεται στον τρέχοντα φάκελο, περιέχοντας το αποδομένο HTML με όλους τους επιτρεπόμενους πόρους. Αν έχετε ορίσει `max_handling_depth` σε 3, μόνο οι πόροι έως τρία επίπεδα βάθους ενσωματώνονται, διατηρώντας το μέγεθος του PDF λογικό. + +--- + +## Συνηθισμένα προβλήματα και πώς να τα αποφύγετε + +| Symptom | Cause | Fix | +|--------------------------------------|----------------------------------------|-----| +| Missing images in the rendered PDF | `allow_external_resources` set to `False` | Enable external resources or embed images locally | +| `TimeoutError` during load | Network latency exceeds `timeout` | Increase `rh_opts.timeout` or pre‑download assets | +| Unexpected CSS styling | Linked stylesheet not loaded due to depth limit | Raise `max_handling_depth` or manually add required CSS | +| `UnicodeDecodeError` on non‑UTF8 files| HTML file uses a different encoding | Pass `encoding="windows-1252"` when creating `HTMLDocument` | + +--- + +## Πλήρες, εκτελέσιμο παράδειγμα + +Παρακάτω βρίσκεται ένα αυτόνομο script που μπορείτε να αντιγράψετε‑επικολλήσετε σε ένα αρχείο με όνομα `load_html_demo.py`. Περιλαμβάνει οδηγίες εγκατάστασης, διαχείριση σφαλμάτων και ένα τελικό βήμα επαλήθευσης. + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +**Εκτέλεση του script** + +```bash +python load_html_demo.py +``` + +Θα πρέπει να δείτε έξοδο στην κονσόλα που επιβεβαιώνει τη φόρτωση, μια λίστα URLs εικόνων, και ένα μήνυμα επιτυχίας για τη μετατροπή σε PDF. Το παραγόμενο `big_page.pdf` θα αντικατοπτρίζει το περιεχόμενο HTML περιορισμένο από το ρυθμισμένο **max_handling_depth**. + +--- + +## Συμπέρασμα + +Σε αυτό το tutorial καλύψαμε **πώς να φορτώσετε html** χρησιμοποιώντας **Aspose.HTML for Python**, ρυθμίσαμε το **ResourceHandlingOptions** για έλεγχο του `max_handling_depth`, και παρουσιάσαμε πρακτικές ενέργειες μετά τη φόρτωση όπως εξαγωγή εικόνων και μετατροπή σε PDF. Ακολουθώντας τα βήματα, έχετε τώρα μια αξιόπιστη βάση για οποιοδήποτε **HTML conversion** workflow, είτε χτίζετε έναν web‑scraper, μια υπηρεσία αρχειοθέτησης εγγράφων, είτε έναν δυναμικό δημιουργό αναφορών. + +**Επόμενα βήματα** + +* Πειραματιστείτε με διαφορετικές τιμές `max_handling_depth` για να βρείτε την ισορροπία μεταξύ πληρότητας και απόδοσης. +* Δοκιμάστε τη μετατροπή του εγγράφου σε + + +## Τι θα πρέπει να μάθετε στη συνέχεια; + + +Τα παρακάτω tutorials καλύπτουν στενά συναφή θέματα που επεκτείνουν τις τεχνικές που παρουσιάστηκαν σε αυτόν τον οδηγό. Κάθε πόρος περιλαμβάνει πλήρη λειτουργικό κώδικα με βήμα‑βήμα εξηγήσεις για να σας βοηθήσει να κυριαρχήσετε επιπλέον δυνατότητες του API και να εξερευνήσετε εναλλακτικές προσεγγίσεις στην υλοποίηση των δικών σας έργων. + +- [How to Parse HTML Java – Load, Query & Count Elements](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [How to Edit HTML Document Tree in Aspose.HTML for Java](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [Handle Document Load Events in Aspose.HTML for Java](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/hindi/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..8848fe6bb --- /dev/null +++ b/html/hindi/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,194 @@ +--- +category: general +date: 2026-08-22 +description: Aspose.HTML का उपयोग करके Python में HTML को PDF में कैसे बदलें – HTML + फ़ाइल से PDF बनाना सीखें, HTML कोड से PDF जनरेट करें, और Python में HTML को जल्दी + से PDF के रूप में सहेजें। +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: hi +lastmod: 2026-08-22 +og_description: Aspose.HTML के साथ Python में HTML को PDF में कैसे बदलें। यह ट्यूटोरियल + आपको दिखाता है कि HTML फ़ाइल से PDF कैसे बनाएं, HTML कोड से PDF उत्पन्न करें, और + Python में HTML को PDF के रूप में सहेजें। +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: Python में HTML को PDF में कैसे बदलें – चरण‑दर‑चरण मार्गदर्शिका +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: Python में Aspose.HTML का उपयोग करके HTML को PDF में कैसे परिवर्तित करें +url: /hi/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Python में Aspose.HTML के साथ HTML को PDF में कैसे बदलें + +यदि आपको **how to convert html to pdf** जल्दी चाहिए, तो यह गाइड आपको एक पूर्ण, तैयार‑से‑चलाने वाला समाधान दिखाता है। आप देखेंगे कि **create pdf from html file**, **generate pdf from html code**, और **save html as pdf python** को Aspose.HTML के सरल API का उपयोग करके कैसे किया जाता है। + +हम हर चरण को विस्तार से बताएँगे, समझाएँगे कि प्रत्येक पंक्ति क्यों महत्वपूर्ण है, और सामान्य समस्याओं को कवर करेंगे ताकि आप कोड को किसी भी प्रोजेक्ट में अनुकूलित कर सकें। कोई बाहरी टूल नहीं, सिर्फ कुछ पंक्तियों का Python। + +## पूर्वापेक्षाएँ + +* Python 3.8 या उससे नया स्थापित हो। +* Aspose.HTML for Python का सक्रिय लाइसेंस (या एक मुफ्त मूल्यांकन कुंजी)। +* `aspose.html` पैकेज स्थापित हो: + +```bash +pip install aspose-html +``` + +इन सबके होने से यह सुनिश्चित होता है कि रूपांतरण बिना रन‑टाइम त्रुटियों के चल सके। + +## Step 1: HTML दस्तावेज़ लोड करें (create pdf from html file) + +पहला कार्य स्रोत HTML को पढ़ना है। Aspose.HTML `HTMLDocument` क्लास के साथ एक दस्तावेज़ को दर्शाता है, जो फ़ाइल I/O, नेटवर्क फ़ेचिंग, और DOM पार्सिंग को एब्स्ट्रैक्ट करता है। + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*क्यों यह महत्वपूर्ण है:* +`HTMLDocument` HTML को लोड करता है, रिलेटिव रिसोर्सेज़ (इमेज़, CSS, फ़ॉन्ट्स) को रिजॉल्व करता है, और एक DOM बनाता है जिसे कनवर्टर सटीक रूप से रेंडर कर सकता है। इस चरण को छोड़ने या साधारण स्ट्रिंग उपयोग करने से ये रिसोर्स रिज़ॉल्यूशन खो जाएगा। + +## Step 2: Configure PDF save options (save html as pdf python) + +Aspose.HTML आपको `PdfSaveOptions` के माध्यम से PDF आउटपुट को बारीकी से ट्यून करने देता है। डिफ़ॉल्ट कॉन्फ़िगरेशन पहले से ही उच्च‑गुणवत्ता वाला PDF बनाता है, लेकिन आप आवश्यकता अनुसार पेज साइज, कम्प्रेशन, या मेटाडेटा को समायोजित कर सकते हैं। + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*क्यों यह महत्वपूर्ण है:* +डिफ़ॉल्ट्स को बनाए रखने पर भी, एक विकल्प ऑब्जेक्ट बनाना कोड को विस्तारणीय बनाता है। भविष्य में परिवर्तन—जैसे PDF पासवर्ड एम्बेड करना—स्क्रिप्ट को पुनः संरचना किए बिना जोड़े जा सकते हैं। + +## Step 3: Perform the conversion (convert html to pdf python) + +`Converter.convert` मेथड HTML दस्तावेज़ और PDF विकल्पों को जोड़ता है, और परिणाम को आपके द्वारा निर्दिष्ट फ़ाइल पाथ पर लिखता है। + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*क्यों यह महत्वपूर्ण है:* +`Converter.convert` रेंडरिंग इंजन को निष्पादित करता है, HTML/CSS को PDF वेक्टर में रास्टराइज़ करता है। यह जटिल लेआउट, एम्बेडेड फ़ॉन्ट्स, और SVG ग्राफ़िक्स को स्वचालित रूप से संभालता है—जो अक्सर मैन्युअल लाइब्रेरीज़ मिस कर देती हैं। + +### Expected output + +स्क्रिप्ट चलाने पर समान डायरेक्टरी में `sample.pdf` बनता है। इसे किसी भी PDF व्यूअर से खोलें; आपको `sample.html` का सटीक प्रतिनिधित्व दिखना चाहिए, जिसमें स्टाइल्स, इमेजेज़, और पेज ब्रेक्स शामिल हैं। + +## Common variations and edge cases + +| Situation | How to handle it | +|-----------|-----------------| +| **HTML एक स्ट्रिंग है, फ़ाइल नहीं** | पाथ से लोड करने के बजाय `HTMLDocument.from_string(html_string)` का उपयोग करें। | +| **आपको पासवर्ड‑सुरक्षित PDF चाहिए** | रूपांतरण से पहले `pdf_options.encryption.password = "yourPassword"` सेट करें। | +| **बड़े HTML फ़ाइलें मेमोरी दबाव बनाती हैं** | स्ट्रीमिंग मोड सक्षम करें: `pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`। | +| **कस्टम फ़ॉन्ट्स गायब हैं** | फ़ॉन्ट फ़ोल्डर रजिस्टर करें: `pdf_options.fonts_folder = "path/to/fonts"`.| + +ये विविधताएँ Aspose.HTML API की लचीलापन को दर्शाती हैं जबकि कोर वर्कफ़्लो समान रहता है। + +## Full script (generate pdf from html code) + +नीचे पूरा, चलाने योग्य प्रोग्राम है जो सभी चरणों को सम्मिलित करता है। इसे कॉपी‑पेस्ट करें, `YOUR_DIRECTORY` को वास्तविक फ़ोल्डर से बदलें, और चलाएँ। + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +इसे चलाएँ: + +```bash +python convert_html_to_pdf.py +``` + +आपको पुष्टि संदेश दिखाई देगा, और PDF स्रोत HTML के बगल में बन जाएगा। + +## Troubleshooting tips (pro tip) + +* **Missing images or CSS** – सुनिश्चित करें कि HTML फ़ाइल absolute URLs का उपयोग करती है या relative paths `YOUR_DIRECTORY` के सापेक्ष सही हैं। +* **Unicode characters appear as squares** – आवश्यक फ़ॉन्ट्स को `pdf_options.fonts_folder` के माध्यम से एम्बेड करें। +* **Conversion is slow** – सिस्टम फ़ॉन्ट कैटलॉग स्कैन करने से बचने के लिए `pdf_options.use_system_fonts = False` को ऑन करें। + +## निष्कर्ष + +अब आप जानते हैं कि Python में Aspose.HTML के साथ **how to convert html to pdf** कैसे किया जाता है, HTML फ़ाइल लोड करने से लेकर उच्च‑गुणवत्ता वाला PDF सहेजने तक। वही पैटर्न आपको **create pdf from html file**, **generate pdf from html code**, और **save html as pdf python** किसी भी ऑटोमेशन वर्कफ़्लो के लिए करने देता है। + +अगला, आप यह देख सकते हैं: + +* वॉटरमार्क या हेडर/फ़ूटर जोड़ना (कीवर्ड: *create pdf from html file*)। +* स्थानीय फ़ाइल के बजाय लाइव URL को बदलना (कीवर्ड: *convert html to pdf python*)। +* Flask या Django API में कनवर्टर को इंटीग्रेट करना ताकि मांग पर PDF सर्व किया जा सके। + +विकल्पों के साथ प्रयोग करने में संकोच न करें, और PDF जनरेशन का आनंद लें! + +## What Should You Learn Next? + +निम्नलिखित ट्यूटोरियल्स उन संबंधित विषयों को कवर करते हैं जो इस गाइड में दिखाए गए तकनीकों पर आधारित हैं। प्रत्येक संसाधन में पूर्ण कार्यशील कोड उदाहरण और चरण‑दर‑चरण व्याख्याएँ शामिल हैं जो आपको अतिरिक्त API फीचर्स में महारत हासिल करने और अपने प्रोजेक्ट्स में वैकल्पिक इम्प्लीमेंटेशन एप्रोचेज़ को खोजने में मदद करती हैं। + +- [Aspose.HTML के साथ HTML को PDF में बदलें – पूर्ण मैनिपुलेशन गाइड](/html/english/) +- [HTML को PDF में बदलने के लिए Java – Aspose.HTML for Java का उपयोग](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Aspose.HTML के साथ .NET में HTML को PDF में बदलें](/html/english/net/html-extensions-and-conversions/convert-html-to-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/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/hindi/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..ecb9f6b11 --- /dev/null +++ b/html/hindi/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-08-22 +description: Python का उपयोग करके HTML फ़ाइल से मार्कडाउन बनाना सीखें। यह चरण‑दर‑चरण + गाइड दिखाता है कि विश्वसनीय लाइब्रेरी के साथ HTML को मार्कडाउन में कैसे बदलें। +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: hi +lastmod: 2026-08-22 +og_description: Python का उपयोग करके HTML फ़ाइल से मार्कडाउन कैसे बनाएं। इस गाइड का + पालन करें ताकि आप प्रमाणित लाइब्रेरी के साथ HTML को जल्दी से मार्कडाउन में बदल सकें। +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: Python में HTML से मार्कडाउन कैसे बनाएं – पूर्ण गाइड +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: Python में HTML से मार्कडाउन कैसे बनाएं – पूर्ण गाइड +url: /hi/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Python में HTML से Markdown कैसे बनाएं – पूर्ण गाइड + +यदि आपको मौजूदा वेब सामग्री से **markdown कैसे बनाएं** पता करना है, तो आप कुछ ही Python लाइनों के साथ एक HTML फ़ाइल को markdown में बदल सकते हैं। यह ट्यूटोरियल आपको **convert html to markdown** के माध्यम से एक समर्पित **html to markdown library** का उपयोग करके दिखाता है जो Windows, macOS, और Linux पर काम करती है। + +आप सीखेंगे कि लाइब्रेरी को कैसे स्थापित करें, HTML दस्तावेज़ को लोड करें, Git‑flavored markdown विकल्पों को कॉन्फ़िगर करें, और परिणाम को डिस्क पर लिखें। गाइड के अंत तक आप किसी भी **html file to markdown** को स्वचालित रूप से बदल सकते हैं, जो static‑site generators, documentation pipelines, या content migration projects के लिए उपयोगी है। + +## Prerequisites + +शुरू करने से पहले सुनिश्चित करें कि आपके पास है: + +* Python 3.8 या नया स्थापित हो (जाँचें `python --version` के साथ)। +* टर्मिनल या कमांड प्रॉम्प्ट तक पहुँच। +* एक HTML फ़ाइल जिसे आप बदलना चाहते हैं (उदाहरण में `sample.html` उपयोग किया गया है)। +* आवश्यक पैकेज स्थापित करने के लिए इंटरनेट कनेक्शन। + +कोड उदाहरण **GroupDocs.Conversion for Python** लाइब्रेरी का उपयोग करता है, जो `HTMLDocument`, `MarkdownSaveOptions`, और `Converter` क्लासेज़ प्रदान करती है। वही अवधारणाएँ अन्य **html to markdown python** पैकेजों जैसे `markdownify` या `html2text` पर भी लागू होती हैं—केवल इम्पोर्ट स्टेटमेंट्स अलग होते हैं। + +## How to create markdown – step 1: install the html to markdown python library + +पहला कार्य है रूपांतरण लाइब्रेरी को अपने वातावरण में जोड़ना। टर्मिनल में निम्नलिखित pip कमांड चलाएँ: + +```bash +pip install groupdocs-conversion +``` + +> **Pro tip:** एक वर्चुअल एनवायरनमेंट (`python -m venv .venv`) का उपयोग करें ताकि निर्भरताएँ आपके ग्लोबल Python इंस्टॉलेशन से अलग रहें। + +पैकेज स्थापित करने से आपको `HTMLDocument`, `MarkdownSaveOptions`, और `Converter` क्लासेज़ तक पहुँच मिलती है जो रूपांतरण प्रक्रिया के लिए आवश्यक हैं। + +## Convert html to markdown – step 2: load the HTML document + +लाइब्रेरी स्थापित होने के बाद, आवश्यक क्लासेज़ को इम्पोर्ट करें और एक `HTMLDocument` इंस्टेंस बनाएँ जो आपके स्रोत फ़ाइल की ओर संकेत करता हो। + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +`HTMLDocument` ऑब्जेक्ट फ़ाइल को पढ़ता है और रूपांतरण के लिए तैयार करता है। यदि फ़ाइल मौजूद नहीं है, तो कंस्ट्रक्टर `FileNotFoundError` उठाता है, इसलिए पाथ सही रखें। + +## html file to markdown – step 3: configure Git‑flavored markdown options + +कई प्रोजेक्ट्स Git‑flavored markdown को पसंद करते हैं क्योंकि यह टेबल्स, टास्क लिस्ट, और स्ट्राइकथ्रू सिंटैक्स को सपोर्ट करता है। लाइब्रेरी आपको `MarkdownSaveOptions` पर `git` प्रॉपर्टी के माध्यम से यह प्रीसेट सक्षम करने देती है। + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +`git = True` सेट करने से कनवर्टर ऐसा सिंटैक्स उत्पन्न करता है जिसे GitHub, GitLab, और Bitbucket सही ढंग से रेंडर करते हैं। यदि आपको साधारण markdown चाहिए, तो फ़्लैग को `False` रखें। + +## Save the markdown output – step 4: write the result with the html to markdown library + +अंत में, `Converter.convert` मेथड को कॉल करें, स्रोत दस्तावेज़, विकल्प ऑब्जेक्ट, और गंतव्य पाथ पास करें। + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +जब स्क्रिप्ट समाप्त होती है, `git_flavored.md` में `sample.html` का markdown प्रतिनिधित्व होता है। आप फ़ाइल को किसी भी एडिटर में खोल सकते हैं या सीधे static‑site generator को दे सकते हैं। + +### Expected output + +मान लीजिए `sample.html` में एक साधारण हेडिंग और पैराग्राफ है, तो उत्पन्न markdown कुछ इस प्रकार दिख सकता है: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +यदि मूल HTML में टेबल्स, लिस्ट्स, या कोड ब्लॉक्स शामिल हैं, तो Git‑flavored प्रीसेट उन संरचनाओं को उपयुक्त markdown सिंटैक्स के साथ संरक्षित करेगा। + +## Understanding the html to markdown library + +**GroupDocs.Conversion** लाइब्रेरी पार्सिंग और रेंडरिंग विवरणों को एब्स्ट्रैक्ट करती है जिन्हें आप अन्यथा मैन्युअली संभालते। यह: + +* जहाँ संभव हो CSS‑आधारित स्टाइलिंग को संरक्षित करता है (जैसे, बोल्ड, इटैलिक)। +* अतिरिक्त HTML एंटिटीज़ के बिना साफ़, पठनीय markdown उत्पन्न करता है। +* बैच रूपांतरण का समर्थन करता है, इसलिए आप एक ही कोड के साथ HTML फ़ाइलों की डायरेक्टरी पर लूप चला सकते हैं। + +यदि आप हल्का‑वज़न समाधान चाहते हैं, तो `markdownify` पैकेज एक सिंगल‑फ़ंक्शन API प्रदान करता है: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +दोनों दृष्टिकोण समान अंतिम लक्ष्य—**convert html to markdown**—को प्राप्त करते हैं, लेकिन GroupDocs विकल्प आउटपुट फ़ॉर्मेट पर अधिक नियंत्रण देता है और बड़े दस्तावेज़‑प्रोसेसिंग पाइपलाइनों में आसानी से इंटीग्रेट हो जाता है। + +## Common pitfalls and how to avoid them + +| Issue | Why it occurs | Fix | +|-------|---------------|-----| +| Missing images in markdown | The converter only includes image URLs; it does not embed files. | Ensure image files are accessible from the markdown location or copy them alongside the output. | +| Broken relative links | HTML may use relative paths that become invalid after conversion. | Use `md_options.base_path` (if available) to rewrite links, or run a post‑processing script to adjust paths. | +| Unicode characters become escaped | Some libraries escape non‑ASCII characters. | Set `md_options.encode_utf8 = True` (or the equivalent flag) to keep characters intact. | + +इन समस्याओं को शुरुआती चरण में हल करने से जब आप रूपांतरण को दर्जनों या सैकड़ों फ़ाइलों तक स्केल करते हैं तो बहुत समय बचता है। + +## Full, runnable example + +नीचे एक स्व-निहित स्क्रिप्ट है जिसे आप कॉपी, संशोधित, और तुरंत चला सकते हैं। `YOUR_DIRECTORY` को अपने मशीन पर वास्तविक फ़ोल्डर से बदलें। + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +स्क्रिप्ट चलाएँ: + +```bash +python markdown_from_html.py +``` + +आपको एक पुष्टि संदेश और एक नई `git_flavored.md` फ़ाइल दिखेगी जिसमें आपके HTML का markdown संस्करण होगा। + +## Conclusion + +अब आप जानते हैं **HTML स्रोत से Python का उपयोग करके markdown कैसे बनाएं**। गाइड ने विश्वसनीय **html to markdown library** स्थापित करना, **html file to markdown** लोड करना, **html to markdown python** विकल्प कॉन्फ़िगर करना, और परिणाम सहेजना कवर किया। इस बुनियाद के साथ आप दस्तावेज़ पाइपलाइनों को स्वचालित कर सकते हैं, लेगेसी वेब पेज़ माइग्रेट कर सकते हैं, या static‑site generators के लिए कंटेंट जेनरेट कर सकते हैं। + +**Next steps** + +* HTML फ़ाइलों के फ़ोल्डर पर इटरिटेट करके बैच रूपांतरण का अन्वेषण करें। +* `MarkdownSaveOptions` को कस्टमाइज़ करें ताकि हेडिंग स्टाइल, लिस्ट फॉर्मेटिंग, या इमेज हैंडलिंग नियंत्रित हो सके। +* इस स्क्रिप्ट को CI/CD वर्कफ़्लो के साथ जोड़ें ताकि आपका markdown दस्तावेज़ स्वचालित रूप से अद्यतन रहे। + +Happy converting! + +## What Should You Learn Next? + +निम्नलिखित ट्यूटोरियल्स निकट-संबंधित विषयों को कवर करते हैं जो इस गाइड में दर्शाए गए तकनीकों पर आधारित हैं। प्रत्येक संसाधन में पूर्ण कार्यशील कोड उदाहरण और चरण‑दर‑चरण व्याख्याएँ शामिल हैं ताकि आप अतिरिक्त API फीचर्स में निपुण हो सकें और अपने प्रोजेक्ट्स में वैकल्पिक कार्यान्वयन दृष्टिकोणों का अन्वेषण कर सकें। + +- [Aspose.HTML for Java में HTML को Markdown में बदलें](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Aspose.HTML के साथ .NET में HTML को Markdown में बदलें](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Markdown को HTML में बदलें – Java गाइड PDF आउटपुट के साथ](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/hindi/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..80a99c612 --- /dev/null +++ b/html/hindi/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,187 @@ +--- +category: general +date: 2026-08-22 +description: Python में एक सरल तीन‑स्टेप स्क्रिप्ट के साथ HTML से मार्कडाउन बनाना + सीखें। इसमें रूपांतरण विकल्प और निर्यात सुझाव शामिल हैं। +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: hi +lastmod: 2026-08-22 +og_description: Python के साथ केवल तीन लाइनों में HTML से मार्कडाउन बनाएं। यह गाइड + रूपांतरण, फ़ॉर्मेटिंग विकल्प और HTML को मार्कडाउन में कुशलतापूर्वक निर्यात करने + का तरीका दिखाता है। +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: Python में HTML से मार्कडाउन बनाएं – चरण‑दर‑चरण गाइड +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: Python का उपयोग करके HTML से मार्कडाउन कैसे बनाएं +url: /hi/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML से Markdown बनाने के लिए Python का उपयोग कैसे करें + +यदि आपको **HTML से markdown बनाना** है, तो यह छोटा गाइड Python के साथ इसे कैसे किया जाए, बिल्कुल दिखाता है। आप एक स्पष्ट, तीन‑स्टेप स्क्रिप्ट देखेंगे जो एक HTML फ़ाइल लोड करती है, Git‑flavored Markdown आउटपुट को कॉन्फ़िगर करती है, और परिणाम को डिस्क पर लिखती है। + +वेब कंटेंट को हल्के मार्कअप में बदलना स्थैतिक साइटें, डॉक्यूमेंटेशन पाइपलाइन, या डेटा‑एनालिसिस नोटबुक बनाते समय एक सामान्य कार्य है। इस ट्यूटोरियल में हम यह भी बताएँगे कि **HTML को markdown में कैसे बदलें** वैकल्पिक फ़ॉर्मेटिंग के साथ, प्रश्न **HTML को कैसे कुशलतापूर्वक बदलें** का उत्तर देंगे, और लोकप्रिय `groupdocs-conversion` लाइब्रेरी का उपयोग करके **HTML को markdown में एक्सपोर्ट** करने की वर्कफ़्लो प्रदर्शित करेंगे। + +## Prerequisites + +शुरू करने से पहले सुनिश्चित करें कि आपके पास है: + +* Python 3.8 या नया स्थापित हो। +* `groupdocs-conversion` पैकेज (या कोई भी लाइब्रेरी जो `HTMLDocument`, `MarkdownSaveOptions`, और `Converter` प्रदान करती हो)। इसे इस प्रकार इंस्टॉल करें: + +```bash +pip install groupdocs-conversion +``` + +* एक HTML फ़ाइल जिसे आप ट्रांसफ़ॉर्म करना चाहते हैं, उदाहरण के लिए `sample.html` जो आपके नियंत्रित फ़ोल्डर में स्थित हो। + +कोई अतिरिक्त सिस्टम डिपेंडेंसीज़ आवश्यक नहीं हैं, और कोड Windows, macOS, और Linux पर काम करता है। + +## Step 1: Load the source HTML document + +पहला ऑपरेशन एक `HTMLDocument` ऑब्जेक्ट बनाना है जो स्रोत फ़ाइल का प्रतिनिधित्व करता है। + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**Why this matters:** `HTMLDocument` फ़ाइल को पार्स करता है, रिलेटिव लिंक को रिज़ॉल्व करता है, और कन्वर्ज़न के लिए DOM तैयार करता है। यदि फ़ाइल नहीं मिलती, तो कंस्ट्रक्टर स्पष्ट `FileNotFoundError` उठाता है, जिससे आप शुरुआती चरण में ही गायब इनपुट को हैंडल कर सकते हैं। + +## Step 2: Configure Markdown save options (Git‑flavored) + +Markdown के कई डायलैक्ट हैं। Git‑flavored Markdown (GFM) टेबल्स, टास्क लिस्ट्स, और फ़ेंस्ड कोड ब्लॉक्स जोड़ता है, जो अक्सर README फ़ाइलों या GitHub पेजों के लिए आवश्यक होते हैं। + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**Why this matters:** स्पष्ट रूप से `MarkdownFormatter.GIT` चुनकर आप सुनिश्चित करते हैं कि आउटपुट वही नियमों का पालन करे जो GitHub रेंडर करता है, जिससे रिपॉज़िटरी में markdown दिखाते समय आश्चर्य कम होते हैं। यदि आप साधारण Markdown चाहते हैं, तो `MarkdownFormatter.GIT` को `MarkdownFormatter.DEFAULT` से बदल दें। + +## Step 3: Convert the HTML document to a Markdown file + +अब कन्वर्ज़न इंजन को कॉल करें और परिणाम को लक्ष्य पथ पर लिखें। + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**Why this matters:** `Converter.convert` भारी काम संभालता है—HTML टैग्स को उनके markdown समकक्ष में बदलता है, इमेजेज़ को (यदि आवश्यक हो) आउटपुट फ़ोल्डर में कॉपी करके संरक्षित करता है, और आपने जो फ़ॉर्मेटर चुना है उसे लागू करता है। मेथड सफल होने पर `None` रिटर्न करता है, लेकिन आप विस्तृत त्रुटि रिपोर्टिंग के लिए `ConversionException` को कैच कर सकते हैं। + +### Expected output + +स्क्रिप्ट चलाने के बाद, `sample.md` में कुछ इस तरह का कंटेंट होगा: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +सटीक markdown `sample.html` की संरचना को दर्शाता है। टेबल्स, इमेजेज़, और कोड ब्लॉक्स GFM नियमों के अनुसार बदलेंगे। + +## Common variations and edge cases + +| Situation | Recommended tweak | +|-----------|-------------------| +| **Large HTML files (>10 MB)** | Python की recursion limit बढ़ाएँ या यदि लाइब्रेरी सपोर्ट करती है तो `HTMLDocument.open_stream()` का उपयोग करके इनपुट को स्ट्रीम करें। | +| **Images referenced with absolute URLs** | `md_options.embed_images = True` सेट करके इमेजेज़ को base‑64 data URIs के रूप में एम्बेड करें, या हल्के आउटपुट के लिए उन्हें लिंक के रूप में रखें। | +| **You need plain Markdown instead of GFM** | `md_options.formatter = MarkdownFormatter.DEFAULT` में बदलें। | +| **Custom CSS classes should be ignored** | `md_options.ignore_css_classes = ["unwanted-class"]` का उपयोग करें। | +| **Running in a CI/CD pipeline** | स्क्रिप्ट को `try/except` ब्लॉक में रैप करें और विफलता पर non‑zero स्टेटस के साथ एग्ज़िट करें, ताकि पाइपलाइन जल्दी फेल हो सके। | + +### Pro tip + +यदि आप बैच में कई फ़ाइलें बदलने की योजना बना रहे हैं, तो एक ही `MarkdownSaveOptions` इंस्टेंस को पुनः उपयोग करें और केवल लूप के अंदर इनपुट/आउटपुट पाथ बदलें। इससे ऑब्जेक्ट‑क्रिएशन ओवरहेड कम होता है और प्रक्रिया लगभग ~15 % तेज़ हो जाती है। + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## How to convert HTML to markdown in other languages (quick note) + +जबकि यह ट्यूटोरियल **html to markdown python** पर केंद्रित है, समान अवधारणाएँ Java, C#, या JavaScript SDKs में भी लागू होती हैं: एक डॉक्यूमेंट ऑब्जेक्ट बनाएं, markdown फ़ॉर्मेटर कॉन्फ़िगर करें, और कन्वर्टर को कॉल करें। यदि आपको कभी **export HTML to markdown** किसी गैर‑Python वातावरण से चाहिए, तो भाषा‑विशिष्ट SDK में समकक्ष `HtmlDocument`, `MarkdownSaveOptions`, और `Converter` क्लासेज़ देखें। + +## Conclusion + +अब आप जानते हैं कि **HTML से markdown बनाना** एक संक्षिप्त Python स्क्रिप्ट से कैसे किया जाता है। तीन‑स्टेप फ्लो—HTML लोड करें, Git‑flavored विकल्प सेट करें, और कन्वर्ज़न चलाएँ—किसी भी **convert html to markdown** वर्कफ़्लो का मूल है। अब आप कर सकते हैं: + +* स्क्रिप्ट को static‑site जेनरेटर में इंटीग्रेट करें। +* CI पाइपलाइनों में डॉक्यूमेंटेशन अपडेट को ऑटोमेट करें। +* कस्टम पोस्ट‑प्रोसेसिंग (जैसे लिंक री‑राइट्स या हेडिंग समायोजन) के साथ कन्वर्ज़न को विस्तारित करें। + +दूसरे विकल्पों के साथ प्रयोग करने में संकोच न करें—**how to convert html** विभिन्न फ़ॉर्मेटर्स के साथ, या इमेजेज़ और टेबल्स के लिए **export html to markdown** सेटिंग्स को ट्यून करना। खुशहाल रूपांतरण! + +## What Should You Learn Next? + +निम्नलिखित ट्यूटोरियल्स उन विषयों को कवर करते हैं जो इस गाइड में दिखाए गए तकनीकों पर आधारित हैं। प्रत्येक संसाधन में पूर्ण कार्यशील कोड उदाहरण और चरण‑दर‑चरण व्याख्याएँ शामिल हैं, जिससे आप अतिरिक्त API फीचर्स में महारत हासिल कर सकें और अपने प्रोजेक्ट्स में वैकल्पिक इम्प्लीमेंटेशन अप्रोचेज़ का पता लगा सकें। + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/hindi/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..dac7f73cf --- /dev/null +++ b/html/hindi/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-08-22 +description: Python का उपयोग करके कुछ ही मिनटों में SVG से PDF बनाएं। SVG को PDF में + बदलना सीखें, SVG को PDF के रूप में सहेजें, और एक भरोसेमंद SVG‑से‑PDF कनवर्टर का + उपयोग करें। +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: hi +lastmod: 2026-08-22 +og_description: Python के साथ SVG से जल्दी PDF बनाएं। यह गाइड दिखाता है कि SVG को + PDF में कैसे बदलें, SVG‑to‑PDF कनवर्टर का उपयोग करें, और एक ही स्क्रिप्ट में SVG + को PDF के रूप में सहेजें। +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: Python में SVG से PDF बनाएं – चरण‑दर‑चरण ट्यूटोरियल +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: Python में SVG से PDF कैसे बनाएं – पूर्ण गाइड +url: /hi/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Python में SVG से PDF कैसे बनाएं – पूर्ण गाइड + +यदि आपको **create PDF from SVG** जल्दी चाहिए, तो यह ट्यूटोरियल आपको ठीक-ठीक दिखाएगा। हम एक लोकप्रिय SVG‑to‑PDF कनवर्टर का उपयोग करके SVG फ़ाइल को PDF में बदलने की प्रक्रिया बताएँगे, ताकि आप रिपोर्ट, इनवॉइस या ई‑बुक में वेक्टर ग्राफ़िक्स को अपने Python कोड से बाहर निकले बिना एम्बेड कर सकें। + +आप सीखेंगे कि कैसे **convert SVG to PDF**, स्केलिंग को प्रबंधित करें, फ़ॉन्ट्स को संरक्षित रखें, और अंत में **save SVG as PDF** एक ही पुनरुत्पादनीय स्क्रिप्ट के साथ करें। कोई बाहरी कमांड‑लाइन टूल्स आवश्यक नहीं हैं—सिर्फ कुछ पंक्तियों का Python और Aspose.SVG for Python लाइब्रेरी। + +## आवश्यकताएँ + +| आवश्यकता | कारण | +|-------------|--------| +| Python 3.8+ | लाइब्रेरी आधुनिक Python रनटाइम्स को लक्षित करती है। | +| `aspose.svg` package | `SVGDocument`, `PdfSaveOptions`, और `Converter` प्रदान करता है। `pip install aspose-svg` के साथ इंस्टॉल करें। | +| An SVG file (`vector.svg`) | वह स्रोत वेक्टर ग्राफ़िक जिसे आप बदलना चाहते हैं। | +| Write permission to the output folder | **save SVG as PDF** के लिए आवश्यक है। | + +You can install the library with: + +```bash +pip install aspose-svg +``` + +> **Pro tip:** वर्चुअल एन्वायरनमेंट (`python -m venv venv`) का उपयोग करें ताकि निर्भरताएँ अलग रहें। + +## रूपांतरण प्रक्रिया का अवलोकन + +रूपांतरण तीन सरल चरणों में विभाजित है: + +1. डिस्क से **SVG document** लोड करें। +2. **PDF save options** बनाएं (आप पेज साइज, DPI आदि को कस्टमाइज़ कर सकते हैं)। +3. **converter** को कॉल करें ताकि PDF फ़ाइल बन सके। + +निम्नलिखित सेक्शन प्रत्येक चरण को विस्तार से समझाते हैं, यह बताते हैं कि कोड इस तरह क्यों लिखा गया है, और पूर्ण, चलाने योग्य स्क्रिप्ट दिखाते हैं। + +## Aspose.SVG for Python का उपयोग करके SVG से PDF बनाएं + +यह H2 हेडर मुख्य कीवर्ड **create pdf from svg** शामिल करता है, जो SEO आवश्यकता को पूरा करता है। + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### यह क्यों काम करता है + +* **`SVGDocument`** SVG XML को पार्स करता है और एक इन‑मेमोरी प्रतिनिधित्व बनाता है जिसे कनवर्टर रेंडर कर सकता है। +* **`PdfSaveOptions`** आपको PDF आउटपुट (पेज साइज, कम्प्रेशन, DPI) को ट्यून करने देता है। डिफ़ॉल्ट सेटिंग्स पहले से ही एक सटीक PDF बनाती हैं, इसलिए उदाहरण तुरंत काम करता है। +* **`Converter.convert`** भारी काम करता है: यह वेक्टर डेटा को PDF पेजों पर रास्टराइज़ करता है जबकि वेक्टर फिडेलिटी को संरक्षित रखता है, इसलिए परिणामी PDF किसी भी ज़ूम लेवल पर स्पष्ट रहता है। + +## कस्टम पेज साइज के साथ SVG को PDF में बदलें + +यदि आपको एक विशिष्ट पेज साइज चाहिए—जैसे प्रिंटेबल रिपोर्ट्स के लिए A4—तो `PdfSaveOptions` को समायोजित करें: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **Edge case:** कुछ SVGs एक `viewBox` परिभाषित करते हैं जो इच्छित PDF आयामों से मेल नहीं खाता। `page_width`/`page_height` को ओवरराइड करने से PDF आपके लेआउट अपेक्षाओं में फिट हो जाता है। + +## फ़ॉन्ट्स को संरक्षित रखते हुए SVG को PDF के रूप में सहेजें + +जब आपका SVG बाहरी फ़ॉन्ट्स को रेफ़र करता है, तो सुनिश्चित करें कि फ़ॉन्ट्स कनवर्टर के लिए उपलब्ध हों। `.ttf` फ़ाइलों को SVG के समान डायरेक्टरी में रखें या एक कस्टम फ़ॉन्ट फ़ोल्डर निर्दिष्ट करें: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +कनवर्टर फ़ॉन्ट्स को सीधे PDF में एम्बेड करता है, जिससे **svg file to pdf** रूपांतरण किसी भी मशीन पर समान दिखता है। + +## बैच रूपांतरण: कई फ़ाइलों के लिए svg फ़ाइल को pdf में बदलें + +अक्सर आपके पास SVG एसेट्स से भरा एक फ़ोल्डर होता है। निम्नलूप एक प्रभावी **svg to pdf converter** दिखाता है जो डायरेक्टरी में प्रत्येक `.svg` फ़ाइल को प्रोसेस करता है: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +यह स्निपेट एक व्यावहारिक **convert svg to pdf** वर्कफ़्लो दर्शाता है जिसे CI पाइपलाइन या ऑटोमेटेड रिपोर्ट जेनरेटर में एकीकृत किया जा सकता है। + +## आउटपुट की जाँच करें + +स्क्रिप्ट चलाने के बाद, उत्पन्न PDF को किसी भी व्यूअर (Adobe Reader, Chrome, या Preview) से खोलें। आपको यह दिखना चाहिए: + +* किसी भी ज़ूम लेवल पर तेज़ी से रेंडर किए गए वेक्टर आकार। +* टेक्स्ट जो SVG स्रोत से मेल खाता है, यदि आपने फ़ॉन्ट्स प्रदान किए हों तो वे एम्बेडेड होते हैं। +* कोई रास्टर आर्टिफैक्ट नहीं—क्योंकि रूपांतरण मूल वेक्टर डेटा को बरकरार रखता है। + +यदि आपको फ़ॉन्ट्स गायब दिखें, तो दोबारा जांचें कि फ़ॉन्ट फ़ाइलें पहुँच योग्य हैं और SVG उन्हें सही ढंग से रेफ़र कर रहा है (`font-family` attribute)। + +## सामान्य समस्याएँ और उन्हें कैसे टालें + +| लक्षण | संभावित कारण | समाधान | +|---------|--------------|-----| +| खाली PDF पेजेज | SVG में बाहरी संसाधन (इमेज, फ़ॉन्ट) नहीं मिले | `fonts_folder` प्रदान करें और सुनिश्चित करें कि लिंक्ड इमेजेस समान डायरेक्टरी में हों या पूर्ण URLs का उपयोग करें। | +| टेक्स्ट आउटलाइन के रूप में दिखता है | फ़ॉन्ट एम्बेड नहीं हुआ | `pdf_options.embed_fonts = True` (डिफ़ॉल्ट) सेट करें और फ़ॉन्ट फ़ाइल मौजूद है यह सत्यापित करें। | +| PDF अपेक्षा से बड़ा है | उच्च DPI या अनकंप्रेस्ड इमेजेस | `pdf_options.dpi` कम करें या कम्प्रेशन सक्षम करें: `pdf_options.compress = True`। | +| SVG आयाम क्लिप हो रहे हैं | `viewBox` PDF पेज से बड़ा है | `pdf_options.page_width`/`page_height` समायोजित करें या `svg_doc.set_viewport` के माध्यम से SVG को स्केल करें। | + +## पूर्ण अंत‑से‑अंत उदाहरण + +नीचे एक स्वतंत्र स्क्रिप्ट है जिसमें एरर हैंडलिंग, लॉगिंग, और वैकल्पिक कमांड‑लाइन आर्ग्यूमेंट्स शामिल हैं। इसे `svg_to_pdf.py` के रूप में सहेजें और `python svg_to_pdf.py` चलाएँ। + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +स्क्रिप्ट चलाने से एक **save SVG as PDF** ऑपरेशन बनता है जिसे आप बड़े ऑटोमेशन पाइपलाइन में एम्बेड कर सकते हैं। + +### अपेक्षित कंसोल आउटपुट + + + +## आगे आप क्या सीखें? + +निम्नलिखित ट्यूटोरियल्स उन निकट-संबंधित विषयों को कवर करते हैं जो इस गाइड में दिखाए गए तकनीकों पर आधारित हैं। प्रत्येक संसाधन में पूर्ण कार्यशील कोड उदाहरण और चरण‑दर‑चरण व्याख्याएँ शामिल हैं, जो आपको अतिरिक्त API फीचर्स में महारत हासिल करने और अपने प्रोजेक्ट्स में वैकल्पिक इम्प्लीमेंटेशन एप्रोच को खोजने में मदद करेंगे। + +- [Convert SVG to PDF in .NET with Aspose.HTML](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg to pdf java – Generate PDF from SVG with Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [Convierte SVG a PDF en .NET con Aspose.HTML](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/hindi/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..383ea14cb --- /dev/null +++ b/html/hindi/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-08-22 +description: Python में बड़े HTML को PDF में बदलने के लिए स्ट्रीमिंग को सक्षम कैसे + करें, जिससे मेमोरी उपयोग कम हो और आउटपुट जनरेशन तेज़ हो। +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: hi +lastmod: 2026-08-22 +og_description: Python में बड़े HTML को PDF में बदलने के लिए स्ट्रीमिंग को सक्षम करना, + जिससे मेमोरी उपयोग कम हो और आउटपुट जनरेशन तेज़ हो। +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: Python में HTML‑से‑PDF रूपांतरण के लिए स्ट्रीमिंग सक्षम करें +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: Python में HTML को PDF में बदलते समय स्ट्रीमिंग को कैसे सक्षम करें +url: /hi/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML को PDF में बदलते समय स्ट्रीमिंग कैसे सक्षम करें Python में + +यदि आपको बड़े HTML‑to‑PDF रूपांतरण के दौरान **स्ट्रीमिंग कैसे सक्षम करें** की आवश्यकता है, तो यह गाइड आपको सटीक चरण दिखाता है। स्ट्रीमिंग को सक्षम करके आप पूरे दस्तावेज़ को मेमोरी में लोड करने से बचते हैं, जो बड़े फ़ाइलों के लिए HTML को PDF में बदलते समय आवश्यक है। + +आप सीखेंगे कि स्ट्रीमिंग कैसे सक्षम करें, Python के साथ HTML को PDF में कैसे बदलें, और बड़े HTML‑to‑PDF कार्यों जैसे किनारे के मामलों को कैसे संभालें। यह समाधान लोकप्रिय `groupdocs-conversion` (या समान) लाइब्रेरी के साथ काम करता है, लेकिन अवधारणाएँ किसी भी स्ट्रीमिंग‑सक्षम कनवर्टर पर लागू होती हैं। + +![Python का उपयोग करके HTML से PDF में स्ट्रीमिंग रूपांतरण दिखाने वाला आरेख](streaming-diagram.png) + +## आपको क्या चाहिए + +- Python 3.9 या उससे नया +- `groupdocs-conversion` (या कोई भी लाइब्रेरी जो `PdfSaveOptions` के साथ स्ट्रीमिंग फ़्लैग प्रदान करती है) +- एक HTML फ़ाइल जिसे आप PDF में बदलना चाहते हैं (उदाहरण में `large.html` नामक बड़ी फ़ाइल उपयोग की गई है) + +इन आवश्यकताओं को पूरा करने से कोड अतिरिक्त कॉन्फ़िगरेशन के बिना चलने को सुनिश्चित करता है। + +## चरण 1: रूपांतरण लाइब्रेरी स्थापित करें + +सबसे पहले, वह Python पैकेज स्थापित करें जो `HTMLDocument`, `PdfSaveOptions`, और `Converter` प्रदान करता है। सबसे सामान्य विकल्प **GroupDocs.Conversion** SDK है: + +```bash +pip install groupdocs-conversion +``` + +> **Pro tip:** निर्भरताओं को अलग रखने के लिए एक वर्चुअल एनवायरनमेंट (`python -m venv .venv`) का उपयोग करें। + +## चरण 2: वह HTML दस्तावेज़ लोड करें जिसे आप बदलना चाहते हैं + +स्रोत HTML को लोड करना सरल है। `HTMLDocument` क्लास डिस्क से फ़ाइल पढ़ती है और उसे रूपांतरण के लिए तैयार करती है। + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +`HTMLDocument` ऑब्जेक्ट पूरे HTML मार्कअप को दर्शाता है, जिसमें छवियों और CSS जैसी बाहरी संसाधन शामिल हैं। यह किसी भी **convert html to pdf** ऑपरेशन का प्रारंभिक बिंदु है। + +## चरण 3: PDF सहेजने के विकल्प बनाएं और स्ट्रीमिंग सक्षम करें + +स्ट्रीमिंग को सक्षम करना **स्ट्रीमिंग कैसे सक्षम करें** का मूल है। पूरे PDF को मेमोरी में बफ़र करने के बजाय, कनवर्टर सीधे आउटपुट फ़ाइल में टुकड़े लिखता है। + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +जब `enable_streaming` को `True` पर सेट किया जाता है, तो लाइब्रेरी एक write‑through दृष्टिकोण का उपयोग करती है जो RAM की खपत को नाटकीय रूप से कम कर देता है—**large html to pdf** परिदृश्यों के लिए महत्वपूर्ण। + +## चरण 4: कॉन्फ़िगर किए गए विकल्पों का उपयोग करके HTML दस्तावेज़ को PDF में बदलें + +अब रूपांतरण को कॉल करें। `Converter.convert` मेथड स्रोत दस्तावेज़, विकल्प ऑब्जेक्ट, और गंतव्य पथ लेता है। + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +इस कॉल के समाप्त होने के बाद, `large.pdf` में वह रेंडर किया गया PDF होता है, जो डिस्क पर डेटा स्ट्रीम करते हुए उत्पन्न हुआ है। पूरी प्रक्रिया आमतौर पर गैर‑स्ट्रीमिंग रूपांतरण की तुलना में तेज़ समाप्त होती है क्योंकि ऑपरेटिंग सिस्टम डेटा को क्रमिक रूप से फ़ाइल सिस्टम में फ़्लश कर सकता है। + +### अपेक्षित आउटपुट + +स्क्रिप्ट चलाने से एक PDF फ़ाइल बनती है जिसका आकार मूल HTML की सामग्री से मेल खाता है। आप किसी भी PDF व्यूअर से परिणाम की पुष्टि कर सकते हैं: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## बड़े HTML‑to‑PDF रूपांतरणों के लिए स्ट्रीमिंग क्यों महत्वपूर्ण है + +जब आप **convert html to pdf** स्ट्रीमिंग के बिना करते हैं, तो लाइब्रेरी पहले पूरी PDF को RAM में बनाती है और फिर डिस्क पर लिखती है। एक साधारण पृष्ठ के लिए यह ठीक है, लेकिन एक **large html to pdf** कार्य (उदाहरण के लिए, कई छवियों वाली 10‑MB HTML रिपोर्ट) सामान्य सर्वरलेस फ़ंक्शन्स या कम‑मेमोरी कंटेनरों की मेमोरी सीमा से अधिक हो सकता है। + +स्ट्रीमिंग को सक्षम करने से तीन समस्याओं का समाधान होता है: + +1. **Memory efficiency** – केवल एक छोटा बफ़र RAM में रखा जाता है। +2. **Faster perceived performance** – फ़ाइल डिस्क पर दिखाई देती है जबकि अभी भी उत्पन्न हो रही होती है, जिससे डाउनस्ट्रीम प्रक्रियाएँ इसे पहले पढ़ना शुरू कर सकती हैं। +3. **Scalability** – आप कई रूपांतरणों को समानांतर चलाकर होस्ट की मेमोरी समाप्त किए बिना चला सकते हैं। + +## सामान्य समस्याएँ और उन्हें कैसे टालें + +| लक्षण | संभावित कारण | समाधान | +|---------|--------------|-----| +| `MemoryError` during conversion | स्ट्रीमिंग फ़्लैग सेट नहीं है या लाइब्रेरी संस्करण बहुत पुराना है | सुनिश्चित करें कि `pdf_opts.enable_streaming = True` है और नवीनतम SDK में अपग्रेड करें (`pip install --upgrade groupdocs-conversion`). | +| PDF में छवियाँ गायब हैं | रिलेटिव इमेज पाथ हल नहीं हो पा रहे हैं | `HTMLDocument` को बेस डायरेक्टरी पास करें या छवियों को base64 के रूप में एम्बेड करें। | +| आउटपुट PDF खाली है | HTML फ़ाइल नहीं मिली या पढ़ी नहीं जा रही है | पथ `"YOUR_DIRECTORY/large.html"` की जाँच करें और फ़ाइल अनुमतियों की पुष्टि करें। | +| रूपांतरण अनिश्चितकाल तक फँस जाता है | बड़ी बाहरी संसाधन (फ़ॉन्ट, CSS) रेंडरिंग को ब्लॉक कर रहे हैं | बाहरी एसेट्स को पहले डाउनलोड करें या उन्हें इनलाइन करने के लिए हेडलेस ब्राउज़र का उपयोग करें। | + +### किनारा मामला: स्ट्रिंग से HTML को बदलना + +यदि आपका HTML कंटेंट फ़ाइल के बजाय मेमोरी में रहता है, तो आप अभी भी **स्ट्रीमिंग कैसे सक्षम करें** स्ट्रिंग को `HTMLDocument` कंस्ट्रक्टर में रैप करके कर सकते हैं जो रॉ HTML स्वीकार करता है: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +स्ट्रीमिंग व्यवहार समान रहता है क्योंकि SDK PDF को क्रमिक रूप से लिखता है। + +## पूर्ण स्क्रिप्ट जिसे आप कॉपी‑पेस्ट कर सकते हैं + +नीचे एक पूर्ण, तैयार‑चलाने योग्य उदाहरण दिया गया है जिसमें सभी चर्चा किए गए चरण शामिल हैं। `YOUR_DIRECTORY` को अपने मशीन पर वास्तविक पथ से बदलें। + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +`python full_example.py` चलाने से स्ट्रीमिंग दृष्टिकोण का उपयोग करके `large.pdf` उत्पन्न होगा। + +## सारांश + +- आप अब जानते हैं कि Python में HTML‑to‑PDF रूपांतरण के लिए **स्ट्रीमिंग कैसे सक्षम करें**। +- स्क्रिप्ट पूरी **convert html to pdf** वर्कफ़्लो को दर्शाती है, जो **large html to pdf** कार्यभार को कुशलतापूर्वक संभालती है। +- `PdfSaveOptions.enable_streaming = True` सेट करके, कनवर्टर आउटपुट को क्रमिक रूप से लिखता है, जो **stream html to pdf** का अनुशंसित तरीका है। + +## आगे क्या खोजें + +- **HTML to PDF Python** लाइब्रेरी जो CSS3 और JavaScript का समर्थन करती हैं (जैसे, `WeasyPrint`, `pdfkit`)। +- अतिरिक्त `PdfSaveOptions` सेटिंग्स के माध्यम से उत्पन्न PDF में पासवर्ड सुरक्षा या एन्क्रिप्शन जोड़ना। +- मेमोरी उपयोग कम रखते हुए क्यू सिस्टम (Celery, RabbitMQ) में कई रूपांतरणों को समानांतर चलाना। + +विभिन्न HTML स्रोतों, पृष्ठ आकारों, और PDF मेटाडेटा के साथ प्रयोग करने में संकोच न करें। स्ट्रीमिंग के कारण बड़े दस्तावेज़ों को भी प्रदर्शन से समझौता किए बिना संभालना संभव हो जाता है। कोडिंग का आनंद लें! + +## आगे आपको क्या सीखना चाहिए? + +निम्नलिखित ट्यूटोरियल्स उन निकट-संबंधित विषयों को कवर करते हैं जो इस गाइड में प्रदर्शित तकनीकों पर आधारित हैं। प्रत्येक संसाधन में पूर्ण कार्यशील कोड उदाहरण और चरण‑दर‑चरण व्याख्याएँ शामिल हैं जो आपको अतिरिक्त API सुविधाओं में निपुण बनने और अपने प्रोजेक्ट्स में वैकल्पिक कार्यान्वयन दृष्टिकोणों का अन्वेषण करने में मदद करती हैं। + +- [HTML को PDF में बदलने का तरीका Java – Aspose.HTML for Java का उपयोग करके](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [समांतर HTML‑to‑PDF रूपांतरण के लिए फिक्स्ड थ्रेड पूल बनाएं](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [Aspose HTML में JavaScript को सक्षम करने का तरीका – HTML लोड करें और टेक्स्ट प्राप्त करें](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/hindi/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..3e8cae360 --- /dev/null +++ b/html/hindi/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,255 @@ +--- +category: general +date: 2026-08-22 +description: HTML से लिंक निर्यात करने और उन्हें पैराग्राफ सहित एक मार्कडाउन फ़ाइल + में बदलने का तरीका। HTML से मार्कडाउन रूपांतरण के लिए चरण‑दर‑चरण मार्गदर्शिका। +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: hi +lastmod: 2026-08-22 +og_description: HTML दस्तावेज़ से लिंक निर्यात करने और पैराग्राफ सहित उन्हें मार्कडाउन + फ़ाइल में बदलने का तरीका। विश्वसनीय HTML‑से‑मार्कडाउन रूपांतरण के लिए इस पूर्ण ट्यूटोरियल + का पालन करें। +og_image_alt: How to export links while converting HTML to Markdown +og_title: HTML को Markdown में बदलते समय लिंक कैसे निर्यात करें – चरण-दर-चरण गाइड +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: HTML को Markdown में परिवर्तित करते समय लिंक कैसे निर्यात करें +url: /hi/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to export links while converting HTML to Markdown + +यदि आपको **how to export links** को एक HTML पेज से निकालकर परिणाम को एक साफ़ **html to markdown file** में बदलना है, तो यह गाइड आपको सटीक चरण दिखाता है। आप यह भी जानेंगे **how to extract paragraphs** ताकि markdown आउटपुट में वह मुख्य सामग्री रहे जिसकी आपको ज़रूरत है। ट्यूटोरियल के अंत तक आप प्रश्न “**how to convert html** to markdown” का उत्तर एक तैयार‑चलाने‑योग्य स्क्रिप्ट के साथ दे पाएँगे। + +लिंक निर्यात करना और पैराग्राफ निकालना वे सामान्य कार्य हैं जब आप वेब सामग्री को स्थैतिक साइटों, दस्तावेज़ पोर्टलों, या हेडलेस CMS बैक‑एंड्स में माइग्रेट करते हैं। नीचे दिया गया तरीका GroupDocs Conversion SDK for Python के साथ काम करता है, लेकिन अवधारणाएँ किसी भी लाइब्रेरी पर लागू होती हैं जो निर्यात सुविधाओं को कॉन्फ़िगर करने देती है। + +--- + +## What you’ll need + +- Python 3.9 या नया +- `groupdocs-conversion` पैकेज (इंस्टॉल करने के लिए `pip install groupdocs-conversion`) +- वह HTML फ़ाइल जिसे आप प्रोसेस करना चाहते हैं (जैसे, `input.html`) +- Python स्क्रिप्टिंग की बुनियादी समझ + +--- + +## How to export links with HTML to Markdown conversion + +पहला मुख्य चरण है रूपांतरण को इस प्रकार कॉन्फ़िगर करना कि केवल वांछित सुविधाएँ—लिंक और पैराग्राफ—**html to markdown file** में लिखी जाएँ। SDK आपको `MarkdownFeature` मानों का बिटमास्क सेट करने देता है; हम `LINKS` और `PARAGRAPHS` को मिलाकर आउटपुट को केंद्रित रखते हैं। + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### Why this works + +- **`HTMLDocument`** मूल फ़ाइल को पार्स करता है और एक DOM बनाता है जिसे कनवर्टर ट्रैवर्स कर सकता है। +- **`MarkdownSaveOptions`** आपको यह सूक्ष्म नियंत्रण देता है कि SDK क्या लिखेगा। `features` को `LINKS | PARAGRAPHS` सेट करने से इंजन इमेज, टेबल या स्क्रिप्ट को अनदेखा करता है, जिससे अंतिम **html to markdown file** में शोर कम हो जाता है। +- **`Converter.convert`** भारी काम करता है। यह फीचर मास्क का सम्मान करता है, एंकर टैग (``) और पैराग्राफ टैग (`

`) को निकालता है, और उन्हें मानक Markdown सिंटैक्स में लिखता है। + +--- + +## How to convert HTML to Markdown with full content (optional) + +यदि बाद में आपको पूरे पेज की आवश्यकता हो—सिर्फ लिंक और पैराग्राफ नहीं—तो बस फीचर मास्क को समायोजित करें: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +अब वही रूपांतरण चलाने से एक पूर्ण **html to markdown file** बनता है जो मूल लेआउट को प्रतिबिंबित करता है। यह दर्शाता है **how to convert html** को लचीले तरीके से: आप फीचर फ्लैग्स को टॉगल करके आउटपुट को नियंत्रित करते हैं। + +--- + +## How to extract paragraphs only + +कभी‑कभी आपको लेख के केवल टेक्स्ट बॉडीज़ की परवाह होती है, लिंक नहीं। आप मास्क को केवल `PARAGRAPHS` सेट करके पैराग्राफ को अलग कर सकते हैं: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +परिणामी markdown में साफ़, लाइन‑रैप्ड टेक्स्ट होगा बिना किसी लिंक मार्कअप के। यह स्निपेट प्रश्न **how to extract paragraphs** का उत्तर देता है कि HTML स्रोत से पैराग्राफ कैसे निकाले जाएँ। + +--- + +## Common pitfalls and how to avoid them + +| Issue | Why it happens | Fix | +|-------|----------------|-----| +| Empty output file | स्रोत HTML में चयनित सुविधाओं से मेल खाने वाले `` या `

` टैग नहीं हैं। | HTML संरचना की जाँच करें या फीचर मास्क को विस्तृत करें (जैसे, `HEADINGS` शामिल करें)। | +| Encoding problems | HTML गैर‑UTF‑8 charset का उपयोग करता है और SDK इसे गलत पढ़ता है। | `HTMLDocument` को स्पष्ट एन्कोडिंग पास करें, उदाहरण: `HTMLDocument(path, encoding="iso-8859-1")`। | +| Over‑writing existing markdown | स्क्रिप्ट को कई बार चलाने से पहले की फ़ाइल ओवरराइट हो जाती है। | आउटपुट फ़ाइलनाम में टाइमस्टैम्प जोड़ें या लिखने से पहले `os.path.exists` की जाँच करें। | + +**Pro tip:** कई फ़ाइलों को फ़ोल्डर में प्रोसेस करते समय, रूपांतरण लॉजिक को लूप में रखें और प्रत्येक परिणाम को लॉग करें। इससे आपको स्पष्ट ऑडिट ट्रेल मिलता है और विफलता के बाद पुनः शुरू करना आसान हो जाता है। + +--- + +## Full script you can copy‑paste + +नीचे एक स्वतंत्र Python फ़ाइल (`convert_links_paragraphs.py`) है जिसे आप सीधे चला सकते हैं। इसमें आर्ग्यूमेंट पार्सिंग शामिल है ताकि आप कोड को एडिट किए बिना इनपुट और आउटपुट पाथ निर्दिष्ट कर सकें। + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**How to run** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +ऊपर का कमांड दर्शाता है **how to export links** और **how to extract paragraphs** को एक ही कॉल में कैसे किया जाए। `--links` या `--paragraphs` को हटाकर आप आउटपुट को अपनी ज़रूरत के अनुसार कस्टमाइज़ कर सकते हैं। + +--- + +## Verification – what the output looks + +निम्नलिखित सरल HTML (`input.html`) को देखें: + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +दोनों फ़्लैग के साथ स्क्रिप्ट चलाने पर `links_and_paragraphs.md` बनता है: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +आप देख सकते हैं कि केवल दो पैराग्राफ और हाइपरलिंक मौजूद हैं—बिल्कुल वही जो आपने **how to export links** खोजते समय माँगा था जबकि **convert html to markdown** कर रहे थे। + +--- + +## Next steps and related topics + +- **How to convert html to markdown** with images: मास्क में `MarkdownFeature.IMAGES` जोड़ें। +- **How to extract paragraphs** and then post‑process + +## What Should You Learn Next? + +निम्नलिखित ट्यूटोरियल्स उन विषयों को कवर करते हैं जो इस गाइड में दिखाए गए तकनीकों पर आधारित हैं। प्रत्येक संसाधन में पूर्ण कार्यशील कोड उदाहरण और चरण‑दर‑चरण व्याख्याएँ हैं, जो आपको अतिरिक्त API सुविधाओं में महारत हासिल करने और अपने प्रोजेक्ट्स में वैकल्पिक कार्यान्वयन दृष्टिकोणों का अन्वेषण करने में मदद करेंगे। + +- [How to Set Offset When Converting HTML to Markdown in Java](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown to HTML Java - Convert with Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [Convert HTML to Markdown – Complete C# Guide](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/hindi/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..93eecdec1 --- /dev/null +++ b/html/hindi/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,280 @@ +--- +category: general +date: 2026-08-22 +description: Python में Aspose.HTML के साथ HTML कैसे लोड करें – संसाधन गहराई को सीमित + करें और दस्तावेज़ को रूपांतरण या संपादन के लिए तैयार करें। +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: hi +lastmod: 2026-08-22 +og_description: Python में Aspose.HTML के साथ HTML कैसे लोड करें, संसाधन हैंडलिंग + की गहराई सेट करें, और दस्तावेज़ को रूपांतरण या संपादन के लिए तैयार करें। +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: Aspose.HTML के साथ HTML कैसे लोड करें – Python गाइड +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: Python में Aspose.HTML के साथ HTML कैसे लोड करें +url: /hi/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Python में Aspose.HTML के साथ HTML लोड कैसे करें + +यदि आपको **how to load html** को जल्दी और सुरक्षित रूप से Python प्रोजेक्ट में लोड करना है, तो यह गाइड आपको सटीक चरण दिखाता है। पहले दो वाक्यों के अंत तक आप रिसोर्स हैंडलिंग को कॉन्फ़िगर करना, फ़ाइल लोड करना, और प्रक्रिया को आगे के **HTML conversion** या संपादन के लिए तैयार रखना जान जाएंगे। + +बड़ी या जटिल पेजों को लोड करना अक्सर साधारण पार्सर को भ्रमित कर देता है क्योंकि बाहरी रिसोर्सेज (इमेज, स्क्रिप्ट, CSS) गहरी रिकर्शन या नेटवर्क देरी का कारण बन सकते हैं। यह ट्यूटोरियल **Aspose.HTML for Python** का उपयोग करके एक मजबूत पैटर्न को कवर करता है, **HTMLDocument class** को प्रदर्शित करता है, और समझाता है कि **max_handling_depth** सेट करना क्यों महत्वपूर्ण है। + +आप इस क्रम में आगे बढ़ेंगे: + +* Aspose.HTML पैकेज स्थापित करना +* `ResourceHandlingOptions` का एक इंस्टेंस बनाना और गहराई सीमित करना +* `HTMLDocument` क्लास का उपयोग करके पेज लोड करना +* दस्तावेज़ को PDF, PNG या आगे की मैनिपुलेशन के लिए तैयार करना + +Aspose.HTML का कोई पूर्व अनुभव आवश्यक नहीं है, केवल बुनियादी Python ज्ञान चाहिए। + +--- + +## Python में Aspose.HTML के साथ HTML लोड कैसे करें + +समाधान का मूल भाग एक तीन‑स्टेप पैटर्न है जो **ResourceHandlingOptions** को **HTMLDocument class** के साथ मिलाता है। हैंडलिंग डीप्थ को सीमित करने से तब रन‑एवे नेटवर्क कॉल्स से बचा जा सकता है जब पेज कई नेस्टेड रिसोर्सेज को रेफ़र करता है। + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### क्यों यह काम करता है + +* **`ResourceHandlingOptions`** पार्सर को बताता है कि वह बाहरी रिसोर्सेज के कितने लेवल तक फ़ॉलो कर सकता है। `max_handling_depth = 3` सेट करने से लोडर तीन हॉप्स के बाद रुक जाता है, जो अधिकांश साइटों के लिए पर्याप्त है लेकिन अनंत लूप से बचाता है। +* **`HTMLDocument`** फ़ाइल पढ़ता है, विकल्प लागू करता है, और एक इन‑मेमोरी DOM बनाता है जिसे आप क्वेरी, मॉडिफ़ाई या रेंडर कर सकते हैं। +* वैकल्पिक कन्वर्ज़न स्निपेट दिखाता है कि लोड किया गया दस्तावेज़ **HTML conversion** सुविधाओं के साथ कैसे इंटीग्रेट होता है, जैसे PDF में सेव करना। + +--- + +## ResourceHandlingOptions को समझना + +`ResourceHandlingOptions` **Aspose.HTML for Python** का हिस्सा है और आपको नेटवर्क एक्टिविटी पर सूक्ष्म नियंत्रण देता है। + +| Property | Purpose | Typical value | +|-------------------------|----------------------------------------------------|---------------| +| `max_handling_depth` | लिंक्ड रिसोर्सेज के लिए अधिकतम रिकर्शन डीप्थ | `3` (default) | +| `allow_external_resources` | बाहरी CSS, JS, इमेजेज़ को डाउनलोड करना चाहिए या नहीं | `True` | +| `timeout` | प्रति अनुरोध नेटवर्क टाइमआउट (सेकंड) | `30` | + +**व्यावहारिक टिप:** यदि आप जानते हैं कि लक्ष्य पेज केवल स्थानीय एसेट्स को रेफ़र करता है, तो `allow_external_resources = False` सेट करके लोडिंग तेज़ करें और अनावश्यक HTTP कॉल्स से बचें। + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## HTMLDocument क्लास का उपयोग + +**HTMLDocument class** सभी Aspose.HTML ऑपरेशन्स का एंट्री पॉइंट है। एक बार इंस्टैंसिएट करने के बाद आप: + +* `doc.root` के माध्यम से DOM तक पहुँच सकते हैं +* CSS सिलेक्टर्स (`doc.query_selector_all("img")`) से एलिमेंट्स को क्वेरी कर सकते हैं +* पेज को रास्टर फॉर्मैट्स (`doc.save("page.png")`) में रेंडर कर सकते हैं +* PDF में कन्वर्ट कर सकते हैं (`doc.save("page.pdf", PDFSaveOptions())`) + +नीचे एक छोटा स्निपेट है जो लोड करने के बाद सभी इमेज `src` एट्रीब्यूट्स को निकालता है: + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**आपको यह क्यों चाहिए:** जब आप **HTML conversion** कर रहे होते हैं, तो अक्सर इमेज URL को रेंडरिंग से पहले एडजस्ट या रिप्लेस करना पड़ता है। DOM को सीधे एक्सेस करने से आपको वह लचीलापन मिलता है। + +--- + +## HTML लोड करने के बाद अगले कदम + +अब दस्तावेज़ मेमोरी में है, आप कई सामान्य वर्कफ़्लो में से चुन सकते हैं: + +1. **PDF में कन्वर्ट करें** – आर्काइविंग या प्रिंटिंग के लिए आदर्श। +2. **PNG/JPEG में रेंडर करें** – थंबनेल या विज़ुअल प्रीव्यू के लिए उपयोगी। +3. **DOM को एडिट करें** – सेव करने से पहले एलिमेंट्स को इन्सर्ट, रिमूव या मोडिफ़ाई करें। +4. **टेक्स्ट निकालें** – इंडेक्सिंग या एनालिसिस के लिए प्लेन‑टेक्स्ट कंटेंट प्राप्त करें। + +### उदाहरण: कस्टम पेज साइज के साथ PDF में कन्वर्ट करें + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**अपेक्षित आउटपुट:** कार्य निर्देशिका में `big_page.pdf` नाम की फ़ाइल बनती है, जिसमें सभी अनुमति वाले रिसोर्सेज़ लागू किए हुए रेंडर किया गया HTML होता है। यदि आप `max_handling_depth` को 3 सेट करते हैं, तो केवल तीन लेवल तक के रिसोर्सेज एम्बेड होते हैं, जिससे PDF का आकार उचित रहता है। + +--- + +## सामान्य समस्याएँ और उनका समाधान + +| Symptom | Cause | Fix | +|--------------------------------------|----------------------------------------|-----| +| रेंडर किए गए PDF में छवियां गायब हैं | `allow_external_resources` को `False` सेट किया गया है | बाहरी रिसोर्सेज़ को एनेबल करें या इमेजेज़ को लोकली एम्बेड करें | +| लोड के दौरान `TimeoutError` | नेटवर्क लेटेंसी `timeout` से अधिक है | `rh_opts.timeout` बढ़ाएँ या एसेट्स को प्री‑डownload करें | +| अनपेक्षित CSS स्टाइलिंग | डीप्थ लिमिट के कारण लिंक्ड स्टाइलशीट लोड नहीं हुई | `max_handling_depth` बढ़ाएँ या आवश्यक CSS को मैन्युअली जोड़ें | +| गैर‑UTF8 फ़ाइलों पर `UnicodeDecodeError`| HTML फ़ाइल अलग एन्कोडिंग उपयोग करती है | `HTMLDocument` बनाते समय `encoding="windows-1252"` पास करें | + +--- + +## पूर्ण, रन करने योग्य उदाहरण + +नीचे एक स्व-समाहित स्क्रिप्ट है जिसे आप `load_html_demo.py` नाम की फ़ाइल में कॉपी‑पेस्ट कर सकते हैं। इसमें इंस्टॉलेशन निर्देश, एरर हैंडलिंग, और अंतिम वेरिफिकेशन स्टेप शामिल हैं। + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +### स्क्रिप्ट चलाना + +```bash +python load_html_demo.py +``` + +आपको कंसोल आउटपुट में लोड की पुष्टि, इमेज URL की सूची, और PDF कन्वर्ज़न की सफलता संदेश दिखना चाहिए। जेनरेट किया गया `big_page.pdf` कॉन्फ़िगर किए गए **max_handling_depth** द्वारा सीमित HTML कंटेंट को दर्शाएगा। + +--- + +## निष्कर्ष + +इस ट्यूटोरियल में हमने **how to load html** को **Aspose.HTML for Python** के साथ कवर किया, `max_handling_depth` को नियंत्रित करने के लिए **ResourceHandlingOptions** को कॉन्फ़िगर किया, और इमेज एक्सट्रैक्शन तथा PDF कन्वर्ज़न जैसे व्यावहारिक पोस्ट‑लोड एक्शन दिखाए। चरणों का पालन करके अब आपके पास किसी भी **HTML conversion** वर्कफ़्लो के लिए एक भरोसेमंद आधार है, चाहे आप वेब‑स्क्रैपर, डॉक्यूमेंट‑आर्काइविंग सर्विस, या डायनामिक रिपोर्ट जेनरेटर बना रहे हों। + +**अगले कदम** + +* विभिन्न `max_handling_depth` मानों के साथ प्रयोग करें ताकि पूर्णता और प्रदर्शन के बीच संतुलन बना रहे। +* दस्तावेज़ को + +## आप आगे क्या सीखें? + +निम्नलिखित ट्यूटोरियल्स उन विषयों को कवर करते हैं जो इस गाइड में प्रदर्शित तकनीकों पर आधारित हैं। प्रत्येक संसाधन में पूर्ण कार्यशील कोड उदाहरण और चरण‑दर‑चरण व्याख्याएँ शामिल हैं, जो आपको अतिरिक्त API फीचर्स में महारत हासिल करने और अपने प्रोजेक्ट्स में वैकल्पिक इम्प्लीमेंटेशन अप्रोचेज़ को एक्सप्लोर करने में मदद करेंगे। + +- [HTML Java को पार्स कैसे करें – लोड, क्वेरी और एलिमेंट्स गिनें](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [Aspose.HTML for Java में HTML डॉक्यूमेंट ट्री को कैसे एडिट करें](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [Aspose.HTML for Java में डॉक्यूमेंट लोड इवेंट्स को कैसे हैंडल करें](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/hongkong/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..989b1c676 --- /dev/null +++ b/html/hongkong/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,190 @@ +--- +category: general +date: 2026-08-22 +description: 如何使用 Aspose.HTML 在 Python 中將 HTML 轉換為 PDF – 學習從 HTML 檔案建立 PDF、從 HTML + 程式碼產生 PDF,以及快速將 HTML 另存為 PDF(Python)。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: zh-hant +lastmod: 2026-08-22 +og_description: 如何使用 Aspose.HTML 在 Python 中將 HTML 轉換為 PDF。本教程將示範如何從 HTML 檔案建立 PDF、從 + HTML 程式碼產生 PDF,以及在 Python 中將 HTML 儲存為 PDF。 +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: 如何在 Python 中將 HTML 轉換為 PDF – 逐步指南 +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: 如何在 Python 中使用 Aspose.HTML 將 HTML 轉換為 PDF +url: /zh-hant/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 Python 中使用 Aspose.HTML 將 HTML 轉換為 PDF + +如果你需要快速 **how to convert html to pdf**,本指南會向你展示一個完整、可直接執行的解決方案。你將會看到如何 **create pdf from html file**、**generate pdf from html code**,以及使用 Aspose.HTML 簡易 API **save html as pdf python**。 + +我們會逐步說明每一步,解釋每行程式碼的重要性,並涵蓋常見的陷阱,讓你能將程式碼套用到任何專案。無需外部工具,只需幾行 Python 程式。 + +## 前置條件 + +* Python 3.8 或更新版本已安裝。 +* 具備有效的 Aspose.HTML for Python 授權(或免費評估金鑰)。 +* 已安裝 `aspose.html` 套件: + +```bash +pip install aspose-html +``` + +具備上述條件可確保轉換過程不會發生執行時錯誤。 + +## 步驟 1:載入 HTML 文件(create pdf from html file) + +第一步是讀取來源 HTML。Aspose.HTML 以 `HTMLDocument` 類別表示文件,該類別抽象化了檔案 I/O、網路抓取與 DOM 解析。 + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*為什麼這很重要:* +`HTMLDocument` 會載入 HTML,解析相對資源(圖片、CSS、字型),並建立可供轉換器正確渲染的 DOM。若跳過此步驟或改用純字串,將失去這些資源的解析。 + +## 步驟 2:設定 PDF 儲存選項(save html as pdf python) + +Aspose.HTML 允許你透過 `PdfSaveOptions` 微調 PDF 輸出。預設設定已能產生高品質的 PDF,但你仍可根據需要調整頁面大小、壓縮或中繼資料。 + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*為什麼這很重要:* +即使保留預設值,建立選項物件也能讓程式碼具備擴充性。未來的變更——例如嵌入 PDF 密碼——可以在不重構腳本的情況下加入。 + +## 步驟 3:執行轉換(convert html to pdf python) + +`Converter.convert` 方法將 HTML 文件與 PDF 選項結合,並將結果寫入你指定的檔案路徑。 + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*為什麼這很重要:* +`Converter.convert` 會執行渲染引擎,將 HTML/CSS 光柵化為 PDF 向量。它會自動處理複雜版面、嵌入字型與 SVG 圖形——這是手動函式庫常常忽略的功能。 + +### 預期輸出 + +執行腳本後會在同一目錄產生 `sample.pdf`。使用任何 PDF 檢視器開啟,你應該會看到與 `sample.html` 完全相同的呈現,包括樣式、圖片與分頁。 + +## 常見變化與邊緣情況 + +| 情況 | 處理方式 | +|-----------|-----------------| +| **HTML 為字串,而非檔案** | 改用 `HTMLDocument.from_string(html_string)` 而非從路徑載入。 | +| **需要密碼保護的 PDF** | 在轉換前設定 `pdf_options.encryption.password = "yourPassword"`。 | +| **大型 HTML 檔案導致記憶體壓力** | 啟用串流模式:`pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`。 | +| **自訂字型遺失** | 註冊字型資料夾:`pdf_options.fonts_folder = "path/to/fonts"`。| + +這些變化說明了 Aspose.HTML API 的彈性,同時保持核心工作流程不變。 + +## 完整腳本(generate pdf from html code) + +以下是完整、可執行的程式碼,包含所有步驟。直接複製貼上,將 `YOUR_DIRECTORY` 替換為實際資料夾路徑,然後執行。 + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +使用以下指令執行: + +```bash +python convert_html_to_pdf.py +``` + +你會看到確認訊息,且 PDF 會出現在來源 HTML 旁邊。 + +## 疑難排解技巧(專業提示) + +* **缺少圖片或 CSS** – 確保 HTML 檔案使用絕對 URL,或相對路徑相對於 `YOUR_DIRECTORY` 正確。 +* **Unicode 字元顯示為方塊** – 透過 `pdf_options.fonts_folder` 嵌入所需字型。 +* **轉換速度慢** – 設定 `pdf_options.use_system_fonts = False` 以避免掃描系統字型目錄。 + +## 結論 + +現在你已了解如何在 Python 中使用 Aspose.HTML **how to convert html to pdf**,從載入 HTML 檔案到儲存高品質 PDF。相同的模式也能讓你 **create pdf from html file**、**generate pdf from html code**,以及 **save html as pdf python**,適用於任何自動化工作流程。 + +接下來,你可以探索: + +* 加入浮水印或頁首/頁尾(關鍵字:*create pdf from html file*)。 +* 將即時 URL 轉換為 PDF,而非本機檔案(關鍵字:*convert html to pdf python*)。 +* 將轉換器整合至 Flask 或 Django API,以即時提供 PDF。 + +## 接下來該學什麼? + +以下教學涵蓋與本指南緊密相關的主題,並以此為基礎。每個資源皆提供完整可執行的程式碼範例與逐步說明,協助你精通更多 API 功能,並在專案中探索替代實作方式。 + +- [使用 Aspose.HTML 轉換 HTML 為 PDF – 完整操作指南](/html/english/) +- [如何使用 Aspose.HTML for Java 於 Java 轉換 HTML 為 PDF](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [.NET 使用 Aspose.HTML 轉換 HTML 為 PDF](/html/english/net/html-extensions-and-conversions/convert-html-to-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/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/hongkong/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..24a7b045b --- /dev/null +++ b/html/hongkong/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-08-22 +description: 學習如何使用 Python 從 HTML 檔案產生 Markdown。本一步一步的指引示範如何使用可靠的函式庫將 HTML 轉換為 Markdown。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: zh-hant +lastmod: 2026-08-22 +og_description: 如何使用 Python 從 HTML 檔案建立 Markdown。跟隨本指南,使用成熟的函式庫快速將 HTML 轉換為 Markdown。 +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: 如何在 Python 中將 HTML 轉換為 Markdown – 完整指南 +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: How to create markdown from HTML in Python – complete guide +url: /zh-hant/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 Python 中從 HTML 建立 Markdown – 完整指南 + +如果你需要了解 **如何建立 markdown** 從現有的網頁內容,你可以僅用幾行 Python 將 HTML 檔案轉換為 markdown。本教學將帶領你使用專門的 **html to markdown library** 進行 **convert html to markdown**,此函式庫可在 Windows、macOS 與 Linux 上運作。 + +你將學習如何安裝函式庫、載入 HTML 文件、設定 Git‑flavored markdown 選項,並將結果寫入磁碟。完成本教學後,你即可自動將任何 **html file to markdown** 轉換,這對於靜態網站產生器、文件管線或內容遷移專案都很有用。 + +## 前置條件 + +* 已安裝 Python 3.8 或更新版本(可使用 `python --version` 檢查)。 +* 可使用終端機或命令提示字元。 +* 欲轉換的 HTML 檔案(範例使用 `sample.html`)。 +* 具備網際網路連線以安裝所需套件。 + +此程式碼範例使用 **GroupDocs.Conversion for Python** 函式庫,該函式庫提供稍後會示範的 `HTMLDocument`、`MarkdownSaveOptions` 與 `Converter` 類別。相同概念亦適用於其他 **html to markdown python** 套件,例如 `markdownify` 或 `html2text`——唯一的差異在於匯入語句。 + +## 如何建立 markdown – 步驟 1:安裝 html to markdown python 函式庫 + +第一步是將轉換函式庫加入你的環境。於終端機執行以下 pip 指令: + +```bash +pip install groupdocs-conversion +``` + +> **Pro tip:** 使用虛擬環境(`python -m venv .venv`)以將相依套件與全域 Python 安裝隔離。 + +安裝套件後,你即可取得轉換過程所需的 `HTMLDocument`、`MarkdownSaveOptions` 與 `Converter` 類別。 + +## 轉換 html 為 markdown – 步驟 2:載入 HTML 文件 + +函式庫安裝完成後,匯入必要的類別,並建立指向來源檔案的 `HTMLDocument` 實例。 + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +`HTMLDocument` 物件會讀取檔案並為轉換作好準備。若檔案不存在,建構子會拋出 `FileNotFoundError`,因此請確保路徑正確。 + +## html 檔案轉 markdown – 步驟 3:設定 Git‑flavored markdown 選項 + +許多專案偏好 Git‑flavored markdown,因為它支援表格、任務清單與刪除線語法。此函式庫允許你透過 `MarkdownSaveOptions` 上的 `git` 屬性啟用此預設。 + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +將 `git = True` 設定為真,會讓轉換器產生 GitHub、GitLab 與 Bitbucket 能正確呈現的語法。若需要純 markdown,則將此旗標保留為 `False`。 + +## 儲存 markdown 輸出 – 步驟 4:使用 html to markdown 函式庫寫入結果 + +最後,呼叫 `Converter.convert` 方法,傳入來源文件、選項物件與目標路徑。 + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +腳本執行完畢後,`git_flavored.md` 內即為 `sample.html` 的 markdown 表示。你可以在任何編輯器中開啟該檔,或直接供給靜態網站產生器使用。 + +### 預期輸出 + +假設 `sample.html` 只包含簡單的標題與段落,產生的 markdown 可能如下所示: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +若原始 HTML 包含表格、清單或程式碼區塊,Git‑flavored 預設會以相應的 markdown 語法保留這些結構。 + +## 了解 html to markdown 函式庫 + +**GroupDocs.Conversion** 函式庫抽象化了解析與渲染的細節,讓你不必手動處理。它: + +- 在可能的情況下保留基於 CSS 的樣式(例如粗體、斜體)。 +- 產生乾淨、易讀的 markdown,且不含多餘的 HTML 實體。 +- 支援批次轉換,讓你能以相同程式碼遍歷 HTML 檔案目錄。 + +如果你偏好較輕量的解決方案,`markdownify` 套件提供單一函式的 API: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +兩種方式皆能達成相同的最終目標——**convert html to markdown**——但 GroupDocs 選項在輸出格式上提供更多控制,且能輕鬆整合至更大的文件處理管線中。 + +## 常見陷阱與避免方法 + +| 問題 | 為何發生 | 解決方案 | +|------|----------|----------| +| Markdown 中缺少圖片 | 轉換器僅包含圖片 URL,未嵌入檔案。 | 確保圖片檔案在 markdown 所在位置可存取,或將其與輸出檔案一起複製。 | +| 相對連結失效 | HTML 可能使用相對路徑,轉換後會變成無效。 | 使用 `md_options.base_path`(若支援)重新寫入連結,或執行後處理腳本調整路徑。 | +| Unicode 字元被轉義 | 某些函式庫會轉義非 ASCII 字元。 | 將 `md_options.encode_utf8 = True`(或等效旗標)設定為真,以保留字元。 | + +提前處理這些問題,可在將轉換規模擴展至數十或數百個檔案時節省時間。 + +## 完整、可執行的範例 + +以下是一個獨立腳本,你可以直接複製、修改並執行。將 `YOUR_DIRECTORY` 替換為你機器上的實際資料夾路徑。 + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +執行腳本: + +```bash +python markdown_from_html.py +``` + +執行後,你應會看到確認訊息,並產生一個包含 HTML markdown 版本的 `git_flavored.md` 檔案。 + +## 結論 + +現在你已了解如何使用 Python 從 HTML 來源 **建立 markdown**。本指南說明了安裝可靠的 **html to markdown library**、載入 **html file to markdown**、設定 **html to markdown python** 選項,以及儲存結果。有了這個基礎,你即可自動化文件管線、遷移舊有網頁,或為靜態網站產生器產出內容。 + +**接下來的步驟** + +- 透過遍歷 HTML 檔案資料夾來探索批次轉換。 +- 自訂 `MarkdownSaveOptions` 以控制標題樣式、清單格式或圖片處理。 +- 將此腳本與 CI/CD 工作流程結合,讓 markdown 文件自動保持最新。 + +祝轉換順利! + +## 接下來該學什麼? + +以下教學涵蓋與本指南緊密相關的主題,並以此為基礎。每個資源皆提供完整可運作的程式碼範例與逐步說明,協助你精通更多 API 功能,並在專案中探索替代實作方式。 + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/hongkong/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..91753c8cf --- /dev/null +++ b/html/hongkong/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,185 @@ +--- +category: general +date: 2026-08-22 +description: 學習如何使用簡單的三步腳本在 Python 中將 HTML 轉換為 Markdown,並包含轉換選項與匯出技巧。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: zh-hant +lastmod: 2026-08-22 +og_description: 只需三行 Python 程式,即可將 HTML 轉換為 Markdown。本指南展示了轉換方法、格式化選項,以及如何高效地將 HTML + 匯出為 Markdown。 +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: 使用 Python 從 HTML 產生 Markdown – 步驟教學 +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: 如何使用 Python 從 HTML 產生 Markdown +url: /zh-hant/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何使用 Python 從 HTML 建立 Markdown + +如果你需要 **從 HTML 建立 markdown**,本簡短指南會精確說明如何使用 Python 完成。你將看到一個清晰的三步腳本,載入 HTML 檔案、設定 Git 風格的 Markdown 輸出,並將結果寫入磁碟。 + +將網頁內容轉換為輕量標記是建立靜態網站、文件流程或資料分析筆記本時的常見任務。在本教學中,我們也會提及如何 **convert HTML to markdown**(含可選格式化),回答 **how to convert HTML** 的有效方法,並示範使用流行的 `groupdocs-conversion` 函式庫的 **export HTML to markdown** 工作流程。 + +## 前置條件 + +在開始之前,請確保你已具備: + +* 已安裝 Python 3.8 或更新版本。 +* `groupdocs-conversion` 套件(或任何提供 `HTMLDocument`、`MarkdownSaveOptions`、`Converter` 的函式庫)。使用以下指令安裝: + +```bash +pip install groupdocs-conversion +``` + +* 你想要轉換的 HTML 檔案,例如位於你可控制的資料夾中的 `sample.html`。 + +不需要額外的系統相依性,且程式碼可在 Windows、macOS 與 Linux 上執行。 + +## 步驟 1:載入來源 HTML 文件 + +第一步是建立一個代表來源檔案的 `HTMLDocument` 物件。 + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**為什麼這很重要:** `HTMLDocument` 會解析檔案、解析相對連結,並為轉換準備 DOM。若找不到檔案,建構子會拋出明確的 `FileNotFoundError`,讓你能及早處理缺失的輸入。 + +## 步驟 2:設定 Markdown 儲存選項(Git 風格) + +Markdown 有多種方言。Git 風格的 Markdown(GFM)加入了表格、任務清單與程式碼區塊,這些常在 README 檔或 GitHub 頁面中需要。 + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**為什麼這很重要:** 透過明確選擇 `MarkdownFormatter.GIT`,可確保輸出遵循 GitHub 所渲染的相同規則,避免 Markdown 在倉庫中顯示時產生意外。若你偏好純 Markdown,請將 `MarkdownFormatter.GIT` 改為 `MarkdownFormatter.DEFAULT`。 + +## 步驟 3:將 HTML 文件轉換為 Markdown 檔案 + +現在呼叫轉換引擎,並將結果寫入目標路徑。 + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**為什麼這很重要:** `Converter.convert` 負責繁重的工作——將 HTML 標籤轉換為相應的 markdown、保留圖片(必要時會複製到輸出資料夾),以及套用你所選的格式化器。此方法成功時回傳 `None`,但你可以捕捉 `ConversionException` 以取得詳細的錯誤資訊。 + +### 預期輸出 + +執行腳本後,`sample.md` 會包含類似以下內容: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +實際的 markdown 會反映 `sample.html` 的結構。表格、圖片與程式碼區塊會依照 GFM 規則轉換。 + +## 常見變化與邊緣情況 + +| 情況 | 建議調整 | +|-----------|-------------------| +| **大型 HTML 檔案(>10 MB)** | 若函式庫支援,請提升 Python 遞迴限制或使用 `HTMLDocument.open_stream()` 串流輸入。 | +| **使用絕對 URL 引用的圖片** | 設定 `md_options.embed_images = True` 以將圖片嵌入為 base‑64 data URI,或保留為連結以減少輸出大小。 | +| **需要純 Markdown 而非 GFM** | 將 `md_options.formatter = MarkdownFormatter.DEFAULT`。 | +| **應忽略自訂 CSS 類別** | 使用 `md_options.ignore_css_classes = ["unwanted-class"]`。 | +| **在 CI/CD 流水線中執行** | 將腳本包在 `try/except` 區塊,失敗時以非零狀態碼退出,使流水線能快速失敗。 | + +### 專業提示 + +如果你打算批次轉換大量檔案,請重複使用單一的 `MarkdownSaveOptions` 實例,僅在迴圈中變更輸入/輸出路徑。這樣可減少物件建立的開銷,並將處理速度提升約 15 %。 + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## 如何在其他語言中將 HTML 轉換為 markdown(快速說明) + +雖然本教學聚焦於 **html to markdown python**,相同概念同樣適用於 Java、C# 或 JavaScript SDK:建立文件物件、設定 markdown 格式化器,並呼叫轉換器。若你需要在非 Python 環境中 **export HTML to markdown**,請尋找該語言 SDK 中對應的 `HtmlDocument`、`MarkdownSaveOptions`、`Converter` 類別。 + +## 結論 + +現在你已了解如何使用簡潔的 Python 腳本 **create markdown from HTML**。這三步流程——載入 HTML、設定 Git 風格選項、執行轉換——涵蓋任何 **convert html to markdown** 工作流程的核心。接下來你可以: + +* 將腳本整合至靜態網站產生器。 +* 在 CI 流水線中自動化文件更新。 +* 使用自訂後處理擴充轉換(例如連結重寫或標題調整)。 + +歡迎嘗試次要選項——使用不同格式化器的 **how to convert html**,或調整 **export html to markdown** 的圖片與表格設定。祝轉換愉快! + +## 接下來該學什麼? + +以下教學涵蓋與本指南緊密相關的主題,建立於本教學示範的技巧之上。每個資源皆提供完整可運作的程式碼範例與逐步說明,協助你精通更多 API 功能,並在自己的專案中探索替代實作方式。 + +- [將 HTML 轉換為 Markdown(Aspose.HTML for Java)](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [將 HTML 轉換為 Markdown(.NET with Aspose.HTML)](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [將 markdown 轉換為 html – Java 指南(含 PDF 輸出)](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/hongkong/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..43cd22bec --- /dev/null +++ b/html/hongkong/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-08-22 +description: 使用 Python 於數分鐘內將 SVG 轉換為 PDF。學習如何將 SVG 轉換為 PDF、將 SVG 儲存為 PDF,並使用可靠的 SVG + 轉 PDF 轉換器。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: zh-hant +lastmod: 2026-08-22 +og_description: 快速使用 Python 從 SVG 產生 PDF。本指南說明如何將 SVG 轉換為 PDF、使用 SVG 轉 PDF 轉換器,以及在單一腳本中將 + SVG 儲存為 PDF。 +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: 使用 Python 從 SVG 建立 PDF – 步驟教學 +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: 如何在 Python 中從 SVG 產生 PDF – 完整指南 +url: /zh-hant/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 Python 中從 SVG 建立 PDF – 完整指南 + +如果你需要快速 **create PDF from SVG**,本教學會一步步示範。 我們將說明如何使用流行的 SVG 轉 PDF 轉換器,將 SVG 檔案轉換為 PDF,讓你能在報告、發票或電子書中嵌入向量圖形,而無需離開 Python 程式碼。 + +你將學會如何 **convert SVG to PDF**、管理縮放、保留字型,最終使用單一可重複執行的腳本 **save SVG as PDF**。不需要外部指令列工具——只需幾行 Python 程式碼以及 Aspose.SVG for Python 函式庫。 + +## 前置條件 + +在開始之前,請確保你具備以下條件: + +| 需求 | 原因 | +|------|------| +| Python 3.8+ | 此函式庫針對現代 Python 執行環境。 | +| `aspose.svg` package | 提供 `SVGDocument`、`PdfSaveOptions` 與 `Converter`。使用 `pip install aspose-svg` 安裝。 | +| An SVG file (`vector.svg`) | 你想要轉換的來源向量圖形。 | +| Write permission to the output folder | 需要 **save SVG as PDF** 的寫入權限。 | + +你可以使用以下指令安裝函式庫: + +```bash +pip install aspose-svg +``` + +> **專業提示:** 使用虛擬環境 (`python -m venv venv`) 以保持相依套件隔離。 + +## 轉換流程概觀 + +轉換過程分為三個簡單步驟: + +1. 從磁碟載入 **SVG document**。 +2. 建立 **PDF save options**(可自訂頁面大小、DPI 等)。 +3. 呼叫 **converter** 產生 PDF 檔案。 + +以下章節會逐步說明每個步驟的原理、*為何* 這樣寫,以及完整可執行的腳本範例。 + +## 使用 Aspose.SVG for Python 從 SVG 建立 PDF + +此 H2 標題包含主要關鍵字 **create pdf from svg**, 符合 SEO 要求。 + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### 為什麼這樣可行 + +* **`SVGDocument`** 解析 SVG XML,並建立可供轉換器渲染的記憶體內部表示。 +* **`PdfSaveOptions`** 讓你調整 PDF 輸出(頁面大小、壓縮、DPI)。預設值已能產生忠實的 PDF,這也是範例能直接執行的原因。 +* **`Converter.convert`** 承擔主要工作:它將向量資料光柵化至 PDF 頁面,同時保留向量精度,使最終 PDF 在任何縮放層級下仍保持清晰。 + +## 使用自訂頁面大小將 SVG 轉換為 PDF + +如果你需要特定的頁面大小——例如 A4 用於列印報告——請調整 `PdfSaveOptions`: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **邊緣情況:** 有些 SVG 定義的 `viewBox` 與目標 PDF 尺寸不符。覆寫 `page_width`/`page_height` 可確保 PDF 符合你的版面需求。 + +## 在保留字型的同時將 SVG 儲存為 PDF + +當你的 SVG 參考外部字型時,請確保字型檔案對轉換器可存取。將 `.ttf` 檔案放在與 SVG 相同的目錄,或指定自訂字型資料夾: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +轉換器會將字型直接嵌入 PDF,確保 **svg file to pdf** 轉換在任何機器上皆呈現相同。 + +## 批次轉換:大量 SVG 檔案轉 PDF + +通常你會有一個資料夾內放滿 SVG 資源。以下迴圈示範一個高效的 **svg to pdf converter**,會處理目錄中每一個 `.svg` 檔案: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +此程式碼片段示範實用的 **convert svg to pdf** 工作流程,可整合至 CI 流程或自動化報告產生器。 + +## 驗證輸出 + +執行腳本後,使用任意檢視器(Adobe Reader、Chrome 或 Preview)開啟產生的 PDF。你應該會看到: + +* 向量形狀在任何縮放層級下皆清晰呈現。 +* 文字與 SVG 原始檔相符,若提供字型則已嵌入。 +* 沒有光柵化痕跡——因為轉換保留了原始向量資料。 + +如果發現缺少字型,請再次確認字型檔案是否可被存取,且 SVG 正確引用(`font-family` 屬性)。 + +## 常見陷阱與避免方法 + +| 症狀 | 可能原因 | 解決方案 | +|------|----------|----------| +| 空白 PDF 頁面 | SVG 有未找到的外部資源(圖片、字型) | 提供 `fonts_folder`,並確保連結的圖片位於同一目錄或使用絕對 URL。 | +| 文字顯示為輪廓 | 字型未嵌入 | 設定 `pdf_options.embed_fonts = True`(預設),並確認字型檔案存在。 | +| PDF 大小超出預期 | DPI 過高或圖片未壓縮 | 降低 `pdf_options.dpi` 或啟用壓縮:`pdf_options.compress = True`。 | +| SVG 尺寸被裁切 | `viewBox` 大於 PDF 頁面 | 調整 `pdf_options.page_width`/`page_height` 或透過 `svg_doc.set_viewport` 縮放 SVG。 | + +## 完整端對端範例 + +以下是一個獨立腳本,包含錯誤處理、日誌記錄與可選的命令列參數。將其儲存為 `svg_to_pdf.py`,然後執行 `python svg_to_pdf.py`。 + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +執行腳本會產生 **save SVG as PDF** 的操作,可嵌入更大的自動化流程中。 + +### 預期的主控台輸出 + + + +## 接下來該學什麼? + +以下教學涵蓋與本指南密切相關的主題,並在此基礎上延伸。每個資源皆提供完整可執行的程式碼範例與逐步說明,協助你精通更多 API 功能,並在自己的專案中探索替代實作方式。 + +- [在 .NET 使用 Aspose.HTML 將 SVG 轉換為 PDF](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg to pdf java – 使用 Aspose.HTML for Java 從 SVG 產生 PDF](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [在 .NET 使用 Aspose.HTML 將 SVG 轉換為 PDF](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/hongkong/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..cabab005e --- /dev/null +++ b/html/hongkong/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,224 @@ +--- +category: general +date: 2026-08-22 +description: 如何在 Python 中啟用大型 HTML 轉 PDF 的串流處理,以減少記憶體使用並加快輸出產生。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: zh-hant +lastmod: 2026-08-22 +og_description: 如何在 Python 中啟用大型 HTML 轉 PDF 的串流處理,以減少記憶體使用量並加快輸出產生速度。 +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: 在 Python 中啟用 HTML 轉 PDF 的串流 +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: 如何在 Python 中將 HTML 轉換為 PDF 時啟用串流 +url: /zh-hant/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 Python 中將 HTML 轉換為 PDF 時啟用串流 + +如果您需要在大型 HTML‑to‑PDF 轉換過程中 **how to enable streaming**,本指南將向您展示具體步驟。啟用串流可避免將整個文件載入記憶體,這在將 HTML 轉換為 PDF 以處理大型檔案時至關重要。 + +您將學會如何啟用串流、使用 Python 將 HTML 轉換為 PDF,並處理如 large HTML to PDF 工作等邊緣案例。此解決方案適用於流行的 `groupdocs-conversion`(或類似)函式庫,但概念同樣適用於任何支援串流的轉換器。 + +![顯示使用 Python 從 HTML 轉換為 PDF 的串流轉換示意圖](streaming-diagram.png) + +## 您需要的環境 + +- Python 3.9 或更新版本 +- `groupdocs-conversion`(或任何提供 `PdfSaveOptions` 且支援串流旗標的函式庫) +- 您想要轉換成 PDF 的 HTML 檔案(範例使用名為 `large.html` 的大型檔案) + +具備上述前置條件即可確保程式碼在不需額外設定的情況下執行。 + +## 第 1 步:安裝轉換函式庫 + +首先,安裝提供 `HTMLDocument`、`PdfSaveOptions` 與 `Converter` 的 Python 套件。最常見的選擇是 **GroupDocs.Conversion** SDK: + +```bash +pip install groupdocs-conversion +``` + +> **專業提示:** 使用虛擬環境(`python -m venv .venv`)可將相依套件隔離管理。 + +## 第 2 步:載入您要轉換的 HTML 文件 + +載入來源 HTML 十分簡單。`HTMLDocument` 類別會從磁碟讀取檔案並為轉換作好準備。 + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +`HTMLDocument` 物件代表完整的 HTML 標記,包含圖片、CSS 等外部資源。這是任何 **convert html to pdf** 操作的起點。 + +## 第 3 步:建立 PDF 儲存選項並啟用串流 + +啟用串流是 **how to enable streaming** 的核心。設定後,轉換器會直接將資料分塊寫入輸出檔案,而非先在記憶體中緩衝整個 PDF。 + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +當 `enable_streaming` 設為 `True` 時,函式庫會採用即寫即出(write‑through)方式,顯著降低 RAM 使用量——這對 **large html to pdf** 情境尤為關鍵。 + +## 第 4 步:使用已設定的選項將 HTML 文件轉換為 PDF + +現在呼叫轉換。`Converter.convert` 方法接受來源文件、選項物件以及目標路徑。 + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +此呼叫完成後,`large.pdf` 便會包含已渲染的 PDF,且在串流寫入磁碟的同時即完成生成。整個流程通常比非串流轉換更快,因為作業系統能逐步將資料刷新至檔案系統。 + +### 預期輸出 + +執行腳本後會產生一個大小與原始 HTML 內容相符的 PDF 檔案。您可以使用任何 PDF 檢視器驗證結果: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## 為何在大型 HTML 轉 PDF 時需要串流 + +當您 **convert html to pdf** 而未啟用串流時,函式庫會先在 RAM 中完整建立 PDF,然後才寫入磁碟。對於小型頁面這沒問題,但 **large html to pdf** 任務(例如 10 MB、含大量圖片的 HTML 報告)可能會超出一般無伺服器函式或低記憶體容器的記憶體上限。 + +啟用串流可解決三大問題: + +1. **記憶體效率** – 只保留少量緩衝區於 RAM。 +2. **感知效能提升** – 檔案在生成過程中即出現在磁碟,讓下游流程可提前讀取。 +3. **可擴展性** – 可同時執行多個轉換而不會耗盡主機記憶體。 + +## 常見陷阱與避免方式 + +| 症狀 | 可能原因 | 解決方式 | +|------|----------|----------| +| `MemoryError` 於轉換期間發生 | 未設定串流旗標或函式庫版本過舊 | 確認 `pdf_opts.enable_streaming = True`,並升級至最新 SDK(`pip install --upgrade groupdocs-conversion`)。 | +| PDF 中缺少圖片 | 相對圖片路徑無法解析 | 將基礎目錄傳給 `HTMLDocument`,或將圖片以 base64 內嵌。 | +| 輸出 PDF 為空白 | 找不到 HTML 檔案或檔案不可讀 | 檢查路徑 `"YOUR_DIRECTORY/large.html"` 並確認檔案權限。 | +| 轉換無限期掛起 | 大量外部資源(字型、CSS)阻塞渲染 | 事先下載外部資產,或使用無頭瀏覽器將其內嵌。 | + +### 邊緣案例:從字串轉換 HTML + +如果您的 HTML 內容位於記憶體中而非檔案,也可以透過接受原始 HTML 的 `HTMLDocument` 建構子來 **how to enable streaming**: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +串流行為保持相同,因為 SDK 仍會逐步寫入 PDF。 + +## 完整可直接貼上執行的腳本 + +以下是一個完整、可直接執行的範例,已整合前述所有步驟。請將 `YOUR_DIRECTORY` 替換為您機器上的實際路徑。 + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +執行 `python full_example.py` 後,將使用串流方式產生 `large.pdf`。 + +## 重點回顧 + +- 您現在已掌握 **how to enable streaming** 於 Python 的 HTML‑to‑PDF 轉換。 +- 此腳本示範完整的 **convert html to pdf** 工作流程,能有效處理 **large html to pdf** 工作負載。 +- 只要將 `PdfSaveOptions.enable_streaming = True`,轉換器即會逐步寫出輸出,這是 **stream html to pdf** 的最佳實踐。 + +## 接下來可以探索的主題 + +- 支援 CSS3 與 JavaScript 的 **HTML to PDF Python** 函式庫(如 `WeasyPrint`、`pdfkit`)。 +- 透過額外的 `PdfSaveOptions` 設定為產生的 PDF 加密或設定密碼保護。 +- 在佇列系統(Celery、RabbitMQ)中平行化多筆轉換,同時保持低記憶體使用。 + +歡迎嘗試不同的 HTML 來源、頁面尺寸與 PDF 中繼資料。串流讓您即使面對更大的文件也能保持效能。祝開發順利! + +## 下一步要學什麼? + +以下教學與本指南緊密相關,能進一步深化您所學的技巧。每篇資源皆提供完整可執行的程式碼範例與逐步說明,助您掌握更多 API 功能,並在專案中探索其他實作方式。 + +- [如何使用 Aspose.HTML for Java 於 Java 中將 HTML 轉換為 PDF](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [為平行 HTML 轉 PDF 建立固定執行緒池](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [如何在 Aspose HTML 中啟用 JavaScript – 載入 HTML 並取得文字](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/hongkong/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..58b8e1110 --- /dev/null +++ b/html/hongkong/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-08-22 +description: 如何從 HTML 匯出連結並轉換為 Markdown 檔案,包含段落。HTML 轉 Markdown 的逐步指南。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: zh-hant +lastmod: 2026-08-22 +og_description: 如何從 HTML 文件匯出連結並轉換為 Markdown 檔案(包括段落)。請跟隨本完整教學,確保 HTML 轉 Markdown + 的可靠性。 +og_image_alt: How to export links while converting HTML to Markdown +og_title: 將 HTML 轉換為 Markdown 時如何匯出連結 – 逐步指南 +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: 將 HTML 轉換為 Markdown 時如何匯出連結 +url: /zh-hant/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在將 HTML 轉換為 Markdown 時匯出連結 + +如果你需要 **匯出連結** 從 HTML 頁面並將結果轉成乾淨的 **html to markdown 檔案**,本指南會示範完整步驟。你也會學會 **抽取段落**,讓 Markdown 輸出只包含你關心的主要內容。完成教學後,你就能以即時可執行的腳本回答「**如何將 html 轉換為 markdown**」的問題。 + +匯出連結與抽取段落是將網站內容遷移至靜態站點、文件入口網站或無頭 CMS 後端時的常見需求。以下方法以 GroupDocs Conversion SDK for Python 為例,但概念同樣適用於任何支援設定匯出功能的函式庫。 + +--- + +## 需求條件 + +- Python 3.9 或更新版本 +- `groupdocs-conversion` 套件(使用 `pip install groupdocs-conversion` 安裝) +- 需要處理的 HTML 檔案(例如 `input.html`) +- 具備基本的 Python 腳本撰寫經驗 + +--- + +## 如何在 HTML 轉 Markdown 時匯出連結 + +第一步是設定轉換,只寫入所需的功能——連結與段落——到 **html to markdown 檔案**。SDK 允許你設定 `MarkdownFeature` 的位元遮罩;我們將 `LINKS` 與 `PARAGRAPHS` 結合,以聚焦輸出內容。 + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### 為什麼這樣可行 + +- **`HTMLDocument`** 會解析原始檔案並建立可供轉換器遍歷的 DOM。 +- **`MarkdownSaveOptions`** 讓你精細控制 SDK 寫入的內容。將 `features` 設為 `LINKS | PARAGRAPHS` 即告訴引擎忽略圖片、表格或腳本,從而減少最終 **html to markdown 檔案** 的雜訊。 +- **`Converter.convert`** 負責主要的轉換工作。它會遵循功能遮罩,抽取 `` 標籤與 `

` 標籤,並以標準 Markdown 語法寫出。 + +--- + +## 如何將 HTML 完整轉為 Markdown(可選) + +若之後需要整頁內容——不僅是連結與段落——只要調整功能遮罩即可: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +執行相同的轉換後,會產生完整的 **html to markdown 檔案**,與原始版面相同。這說明了 **如何將 html 轉換** 的彈性做法:只要切換功能旗標,即可自行決定輸出內容。 + +--- + +## 如何僅抽取段落 + +有時你只在意文章的文字本體,而非超連結。只要將遮罩設為單獨的 `PARAGRAPHS`: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +產生的 Markdown 會只包含乾淨、換行的文字,沒有任何連結標記。此程式碼片段回答了 **如何抽取段落** 從 HTML 原始檔的問題。 + +--- + +## 常見陷阱與避免方式 + +| 問題 | 為何會發生 | 解決方法 | +|------|------------|----------| +| 輸出檔案為空 | 原始 HTML 中沒有符合選取功能的 `` 或 `

` 標籤。 | 檢查 HTML 結構,或放寬功能遮罩(例如加入 `HEADINGS`)。 | +| 編碼問題 | HTML 使用非 UTF‑8 編碼,SDK 讀取時出錯。 | 為 `HTMLDocument` 明確傳入編碼,例如 `HTMLDocument(path, encoding="iso-8859-1")`。 | +| 覆寫已存在的 Markdown | 多次執行腳本會取代先前的檔案。 | 為輸出檔名加入時間戳記,或在寫入前檢查 `os.path.exists`。 | + +**小技巧:** 若要一次處理資料夾內多個檔案,將轉換邏輯包在迴圈中,並為每次結果寫入日誌。這樣可保留清晰的稽核軌跡,且在失敗後容易續跑。 + +--- + +## 完整腳本(可直接複製貼上) + +以下是一個獨立的 Python 檔案(`convert_links_paragraphs.py`),可直接執行。它內建參數解析,讓你在不修改程式碼的情況下指定輸入與輸出路徑。 + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**執行方式** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +上述指令示範了 **匯出連結** 與 **抽取段落** 兩項功能同時執行。若只需要其中一項,可省略 `--links` 或 `--paragraphs` 參數,以符合你的需求。 + +--- + +## 驗證 – 輸出長什麼樣 + +給定以下簡易 HTML(`input.html`): + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +執行腳本並同時開啟兩個旗標,會產生 `links_and_paragraphs.md`: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +你會看到只有兩段文字與一個超連結被保留下來——正是你在搜尋 **匯出連結** 同時 **convert html to markdown** 時所期待的結果。 + +--- + +## 後續步驟與相關主題 + +- **如何將 html 轉換為 markdown** 並保留圖片:在遮罩中加入 `MarkdownFeature.IMAGES`。 +- **如何抽取段落** 後再進行後續處理 + +## 接下來該學什麼? + +以下教學與本指南緊密相關,能幫助你在專案中延伸使用技巧。每篇資源皆提供完整可執行的程式碼範例與逐步說明,協助你掌握更多 API 功能與替代實作方式。 + +- [How to Set Offset When Converting HTML to Markdown in Java](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown to HTML Java - Convert with Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [Convert HTML to Markdown – Complete C# Guide](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/hongkong/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..05532f80c --- /dev/null +++ b/html/hongkong/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,278 @@ +--- +category: general +date: 2026-08-22 +description: 如何在 Python 中使用 Aspose.HTML 載入 HTML – 限制資源深度並使文件準備好進行轉換或編輯。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: zh-hant +lastmod: 2026-08-22 +og_description: 如何在 Python 中使用 Aspose.HTML 載入 HTML,設定資源處理深度,並使文件準備好進行轉換或編輯。 +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: 如何使用 Aspose.HTML 載入 HTML – Python 指南 +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: 如何在 Python 中使用 Aspose.HTML 載入 HTML +url: /zh-hant/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 Python 中使用 Aspose.HTML 載入 HTML + +如果您需要在 Python 專案中快速且安全地 **how to load html**,本指南會向您展示具體步驟。閱讀完前兩句後,您將了解如何設定資源處理、載入檔案,並使流程為後續的 **HTML conversion** 或編輯做好準備。 + +載入大型或複雜的頁面常常會讓簡單的解析器卡住,因為外部資源(圖片、腳本、CSS)可能導致深層遞迴或網路延遲。本教學涵蓋使用 **Aspose.HTML for Python** 的穩健模式,示範 **HTMLDocument class**,並說明為何設定 **max_handling_depth** 很重要。 + +您將會學習: + +* 安裝 Aspose.HTML 套件 +* 建立 `ResourceHandlingOptions` 實例並限制深度 +* 使用 `HTMLDocument` 類別載入頁面 +* 為轉換成 PDF、PNG 或進一步操作做準備 + +不需要先前使用 Aspose.HTML 的經驗,只需具備基本的 Python 知識。 + +--- + +## 如何在 Python 中使用 Aspose.HTML 載入 HTML + +此解決方案的核心是一個結合 **ResourceHandlingOptions** 與 **HTMLDocument class** 的三步驟模式。限制處理深度可防止當頁面引用大量巢狀資源時產生無止盡的網路呼叫。 + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### 為何這樣有效 + +* **`ResourceHandlingOptions`** 告訴解析器可跟隨多少層級的外部資源。將 `max_handling_depth = 3` 設為三層,可在三次跳轉後停止載入,對大多數網站已足夠,同時防止無限迴圈。 +* **`HTMLDocument`** 讀取檔案、套用選項,並建立可在記憶體中操作的 DOM,您可以查詢、修改或渲染它。 +* 可選的轉換程式碼片段示範了載入的文件如何與 **HTML conversion** 功能結合,例如儲存為 PDF。 + +--- + +## 了解 ResourceHandlingOptions + +`ResourceHandlingOptions` 是 **Aspose.HTML for Python** 的一部分,讓您能細緻控制網路活動。 + +| Property | Purpose | Typical value | +|-------------------------|----------------------------------------------------|---------------| +| `max_handling_depth` | 連結資源的最大遞迴深度 | `3` (default) | +| `allow_external_resources` | 是否下載外部 CSS、JS、圖片 | `True` | +| `timeout` | 每次請求的網路逾時時間(秒) | `30` | + +**實用提示:** 若您知道目標頁面僅引用本機資產,將 `allow_external_resources = False` 設為關閉,可加快載入速度並避免不必要的 HTTP 呼叫。 + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## 使用 HTMLDocument 類別 + +**HTMLDocument class** 是所有 Aspose.HTML 操作的入口點。建立實例後,您可以: + +* 透過 `doc.root` 存取 DOM +* 使用 CSS 選擇器查詢元素 (`doc.query_selector_all("img")`) +* 將頁面渲染為點陣圖格式 (`doc.save("page.png")`) +* 轉換為 PDF (`doc.save("page.pdf", PDFSaveOptions())`) + +以下是一段簡短程式碼,於載入後提取所有圖片的 `src` 屬性: + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**為什麼可能需要這樣做:** 在執行 **HTML conversion** 時,您常需在渲染為其他格式前調整或取代圖片 URL。直接存取 DOM 能提供此彈性。 + +--- + +## 載入 HTML 後的後續步驟 + +現在文件已在記憶體中,您可以從以下常見工作流程中選擇: + +1. **Convert to PDF** – 適合用於歸檔或列印。 +2. **Render to PNG/JPEG** – 可用於縮圖或視覺預覽。 +3. **Edit the DOM** – 在儲存前插入、移除或修改元素。 +4. **Extract text** – 抽取純文字內容以供索引或分析。 + +### 範例:使用自訂頁面大小轉換為 PDF + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**預期輸出:** 會在工作目錄產生名為 `big_page.pdf` 的檔案,內含套用所有允許資源後渲染的 HTML。若將 `max_handling_depth` 設為 3,僅會嵌入最多三層深度的資源,從而保持 PDF 檔案大小在合理範圍。 + +--- + +## 常見陷阱與避免方法 + +| Symptom | Cause | Fix | +|--------------------------------------|----------------------------------------|-----| +| 渲染的 PDF 中缺少圖片 | `allow_external_resources` 設為 `False` | 啟用外部資源或在本機嵌入圖片 | +| `TimeoutError` 載入期間 | 網路延遲超過 `timeout` | 增加 `rh_opts.timeout` 或預先下載資產 | +| 意外的 CSS 樣式 | 因深度限制未載入連結的樣式表 | 提升 `max_handling_depth` 或手動加入所需的 CSS | +| `UnicodeDecodeError` 發生於非 UTF-8 檔案 | HTML 檔案使用不同的編碼 | 在建立 `HTMLDocument` 時傳入 `encoding="windows-1252"` | + +--- + +## 完整、可執行的範例 + +以下是一個獨立腳本,您可以直接複製貼上為 `load_html_demo.py` 檔案。它包含安裝說明、錯誤處理以及最終驗證步驟。 + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +### 執行腳本 + +```bash +python load_html_demo.py +``` + +您應會在主控台看到確認載入的輸出、圖片 URL 列表,以及 PDF 轉換成功的訊息。產生的 `big_page.pdf` 會依照設定的 **max_handling_depth** 限制的 HTML 內容呈現。 + +--- + +## 結論 + +在本教學中,我們介紹了使用 **Aspose.HTML for Python** 的 **how to load html** 方法,設定 **ResourceHandlingOptions** 以控制 `max_handling_depth`,並示範了載入後的實用操作,如圖片提取與 PDF 轉換。透過這些步驟,您現在擁有可靠的基礎,可應用於任何 **HTML conversion** 工作流程,無論是建構網路爬蟲、文件歸檔服務,或是動態報告產生器。 + +**下一步** + +* 嘗試不同的 `max_handling_depth` 值,以在完整性與效能之間取得平衡。 +* 嘗試將文件轉換為 + +## 接下來該學什麼? + +以下教學涵蓋與本指南示範技術密切相關的主題。每個資源皆提供完整可運作的程式碼範例與逐步說明,協助您精通其他 API 功能,並在自己的專案中探索替代實作方式。 + +- [如何在 Java 中解析 HTML – 載入、查詢與計算元素](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [如何在 Aspose.HTML for Java 中編輯 HTML 文件樹](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [在 Aspose.HTML for Java 中處理文件載入事件](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/hungarian/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..8cc189c21 --- /dev/null +++ b/html/hungarian/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,194 @@ +--- +category: general +date: 2026-08-22 +description: Hogyan konvertáljunk HTML-t PDF-re Pythonban az Aspose.HTML használatával + – tanulja meg, hogyan készítsen PDF-et HTML-fájlból, generáljon PDF-et HTML-kódból, + és mentse el a HTML-t PDF-ként Pythonban gyorsan. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: hu +lastmod: 2026-08-22 +og_description: Hogyan konvertáljunk HTML-t PDF-re Pythonban az Aspose.HTML segítségével. + Ez az útmutató megmutatja, hogyan hozhatunk létre PDF-et HTML-fájlból, hogyan generálhatunk + PDF-et HTML-kódból, és hogyan menthetjük az HTML-t PDF-ként Pythonban. +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: HTML PDF-re konvertálása Pythonban – lépésről‑lépésre útmutató +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: Hogyan konvertáljunk HTML-t PDF-re Pythonban az Aspose.HTML használatával +url: /hu/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan konvertáljunk HTML-t PDF-re Pythonban az Aspose.HTML segítségével + +Ha gyorsan szeretnél **how to convert html to pdf** megoldást, ez az útmutató egy teljes, azonnal futtatható megoldást mutat be. Megmutatjuk, hogyan **create pdf from html file**, **generate pdf from html code**, és **save html as pdf python** az Aspose.HTML egyszerű API-jával. + +Végigvezetünk minden lépésen, elmagyarázzuk, miért fontos minden sor, és bemutatunk gyakori buktatókat, hogy a kódot bármely projekthez alkalmazhasd. Nincs szükség külső eszközökre, csak néhány Python sorra. + +## Előkövetelmények + +* Python 3.8 vagy újabb telepítve. +* Aktív Aspose.HTML for Python licenc (vagy ingyenes értékelő kulcs). +* A `aspose.html` csomag telepítve: + +```bash +pip install aspose-html +``` + +Ezek megléte biztosítja, hogy a konverzió futtatása ne okozzon futásidejű hibákat. + +## 1. lépés: HTML dokumentum betöltése (create pdf from html file) + +Az első feladat a forrás HTML beolvasása. Az Aspose.HTML a dokumentumot a `HTMLDocument` osztállyal reprezentálja, amely elrejti a fájl I/O-t, a hálózati lekérést és a DOM elemzést. + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*Miért fontos:* +`HTMLDocument` betölti a HTML-t, feloldja a relatív erőforrásokat (képek, CSS, betűkészletek), és felépít egy DOM-ot, amelyet a konverter pontosan renderelhet. Ennek a lépésnek a kihagyása vagy egy egyszerű karakterlánc használata elveszíti ezeket a feloldásokat. + +## 2. lépés: PDF mentési beállítások konfigurálása (save html as pdf python) + +Az Aspose.HTML lehetővé teszi a PDF kimenet finomhangolását a `PdfSaveOptions` segítségével. Az alapértelmezett konfiguráció már magas minőségű PDF-et állít elő, de szükség esetén módosíthatod az oldal méretét, a tömörítést vagy a metaadatokat. + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*Miért fontos:* +Még ha az alapértelmezéseket is megtartod, egy opciós objektum létrehozása bővíthetővé teszi a kódot. A jövőbeni módosítások – például PDF jelszó beágyazása – hozzáadhatók a szkript átalakítása nélkül. + +## 3. lépés: A konverzió végrehajtása (convert html to pdf python) + +A `Converter.convert` metódus összekapcsolja a HTML dokumentumot és a PDF beállításokat, és a megadott fájlútra írja az eredményt. + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*Miért fontos:* +A `Converter.convert` végrehajtja a renderelő motort, rasterizálva a HTML/CSS-t PDF vektorokká. Automatikusan kezeli a komplex elrendezéseket, a beágyazott betűkészleteket és az SVG grafikákat – amit a kézi könyvtárak gyakran nem tudnak. + +### Várt kimenet + +A szkript futtatása `sample.pdf` fájlt hoz létre ugyanabban a könyvtárban. Nyisd meg bármely PDF megjelenítővel; egy hűséges ábrázolást kell látnod a `sample.html`-ről, beleértve a stílusokat, képeket és oldal töréseket. + +## Gyakori változatok és szélsőséges esetek + +| Helyzet | Hogyan kezeljük | +|-----------|-----------------| +| **HTML is a string, not a file** | Use `HTMLDocument.from_string(html_string)` instead of loading from a path. | +| **You need a password‑protected PDF** | Set `pdf_options.encryption.password = "yourPassword"` before conversion. | +| **Large HTML files cause memory pressure** | Enable streaming mode: `pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`. | +| **Custom fonts are missing** | Register the font folder: `pdf_options.fonts_folder = "path/to/fonts"`.| + +Ezek a változatok bemutatják az Aspose.HTML API rugalmasságát, miközben az alapvető munkafolyamat változatlan marad. + +## Teljes szkript (generate pdf from html code) + +Az alábbiakban a teljes, futtatható program látható, amely magába foglalja az összes lépést. Másold be, cseréld le a `YOUR_DIRECTORY`-t egy valós mappára, és futtasd. + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +Futtasd a következővel: + +```bash +python convert_html_to_pdf.py +``` + +Láthatod a megerősítő üzenetet, és a PDF megjelenik a forrás HTML mellett. + +## Hibaelhárítási tippek (pro tip) + +* **Missing images or CSS** – Győződj meg róla, hogy a HTML fájl abszolút URL-eket használ, vagy hogy a relatív útvonalak helyesek a `YOUR_DIRECTORY`-hez képest. +* **Unicode characters appear as squares** – A szükséges betűkészleteket ágyazd be a `pdf_options.fonts_folder` segítségével. +* **Conversion is slow** – Kapcsold be a `pdf_options.use_system_fonts = False` beállítást, hogy elkerüld a rendszer betűkészlet katalógusának beolvasását. + +## Következtetés + +Most már tudod, hogyan **how to convert html to pdf** Pythonban az Aspose.HTML segítségével, a HTML fájl betöltésétől egy magas minőségű PDF mentéséig. Ugyanaz a minta lehetővé teszi, hogy **create pdf from html file**, **generate pdf from html code**, és **save html as pdf python** bármilyen automatizálási munkafolyamatban. + +Ezután érdemes felfedezni: + +* Vízjelek vagy fejléc/lábléc hozzáadása (kulcsszó: *create pdf from html file*). +* Élő URL konvertálása helyi fájl helyett (kulcsszó: *convert html to pdf python*). +* A konverter integrálása Flask vagy Django API-ba, hogy igény szerint PDF-eket szolgáljon ki. + +Nyugodtan kísérletezz a beállításokkal, és jó PDF generálást! + +## Mit érdemes legközelebb megtanulni? + +A következő oktatóanyagok szorosan kapcsolódó témákat fednek le, amelyek a jelen útmutatóban bemutatott technikákra épülnek. Minden forrás teljes, működő kódrészleteket tartalmaz lépésről‑lépésre magyarázatokkal, hogy elsajátíthasd a további API funkciókat és alternatív megvalósítási megközelítéseket a saját projektjeidben. + +- [HTML konvertálása PDF-re Aspose.HTML – Teljes manipulációs útmutató](/html/english/) +- [HTML konvertálása PDF-re Java‑ban – Aspose.HTML for Java használata](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [HTML konvertálása PDF-re .NET‑ben Aspose.HTML‑el](/html/english/net/html-extensions-and-conversions/convert-html-to-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/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/hungarian/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..6eabb5794 --- /dev/null +++ b/html/hungarian/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-08-22 +description: Tanulja meg, hogyan hozhat létre markdown‑t egy HTML fájlból Python használatával. + Ez a lépésről‑lépésre útmutató bemutatja, hogyan konvertálhatja a HTML‑t markdown‑re + egy megbízható könyvtárral. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: hu +lastmod: 2026-08-22 +og_description: Hogyan készítsünk markdownot egy HTML fájlból Python segítségével. + Kövesd ezt az útmutatót, hogy gyorsan átalakítsd a HTML-t markdownra egy bevált + könyvtárral. +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: Hogyan készítsünk Markdownot HTML-ből Pythonban – teljes útmutató +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: Hogyan készítsünk markdownot HTML-ből Pythonban – teljes útmutató +url: /hu/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan hozzunk létre markdown-t HTML-ből Pythonban – teljes útmutató + +Ha tudnod kell **hogyan hozz létre markdown-t** a meglévő webtartalomból, néhány Python sorral átalakíthatod az HTML fájlt markdown-re. Ez az útmutató végigvezet a **html konvertálása markdown-re** folyamaton egy dedikált **html to markdown könyvtár** segítségével, amely Windows, macOS és Linux rendszereken működik. + +Megtanulod, hogyan telepítsd a könyvtárat, tölts be egy HTML dokumentumot, konfiguráld a Git‑flavored markdown beállításokat, és írd ki az eredményt a lemezre. A útmutató végére automatikusan átalakíthatod bármely **html fájlt markdown-re**, ami hasznos statikus‑site generátorokhoz, dokumentációs folyamatokhoz vagy tartalom‑migrációs projektekhez. + +## Előfeltételek + +* Python 3.8 vagy újabb telepítve (ellenőrizd a `python --version` paranccsal). +* Hozzáférés egy terminálhoz vagy parancssorhoz. +* Egy HTML fájl, amelyet konvertálni szeretnél (a példában a `sample.html` van használva). +* Internetkapcsolat a szükséges csomag telepítéséhez. + +A kódpélda a **GroupDocs.Conversion for Python** könyvtárat használja, amely biztosítja a később bemutatott `HTMLDocument`, `MarkdownSaveOptions` és `Converter` osztályokat. Ugyanazok a koncepciók más **html to markdown python** csomagokra is érvényesek, mint például a `markdownify` vagy `html2text` – az egyetlen különbség az importálási utasítások. + +## Hogyan hozzunk létre markdown-t – 1. lépés: az html to markdown python könyvtár telepítése + +Az első feladat a konverziós könyvtár hozzáadása a környezetedhez. Futtasd a következő pip parancsot a terminálodban: + +```bash +pip install groupdocs-conversion +``` + +> **Pro tipp:** Használj virtuális környezetet (`python -m venv .venv`), hogy a függőségek elkülönüljenek a globális Python telepítésedtől. + +A csomag telepítése hozzáférést biztosít a `HTMLDocument`, `MarkdownSaveOptions` és `Converter` osztályokhoz, amelyek a konverziós folyamat során szükségesek. + +## HTML konvertálása markdown-re – 2. lépés: a HTML dokumentum betöltése + +A könyvtár telepítése után importáld a szükséges osztályokat, és hozz létre egy `HTMLDocument` példányt, amely a forrásfájlra mutat. + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +A `HTMLDocument` objektum beolvassa a fájlt és előkészíti a konverzióhoz. Ha a fájl nem létezik, a konstruktor `FileNotFoundError` kivételt dob, ezért győződj meg arról, hogy az útvonal helyes. + +## html fájl markdown-re – 3. lépés: a Git‑flavored markdown beállításainak konfigurálása + +Sok projekt a Git‑flavored markdown-et részesíti előnyben, mivel támogatja a táblázatokat, feladatlistákat és a áthúzott szintaxist. A könyvtár lehetővé teszi ennek az előbeállításnak a engedélyezését a `MarkdownSaveOptions` `git` tulajdonságán keresztül. + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +`git = True` beállítása azt mondja a konverternek, hogy olyan szintaxist generáljon, amelyet a GitHub, GitLab és Bitbucket helyesen jelenít meg. Ha egyszerű markdown-re van szükséged, hagyd a `False` értéken. + +## A markdown kimenet mentése – 4. lépés: az eredmény írása az html to markdown könyvtárral + +Végül hívd meg a `Converter.convert` metódust, átadva a forrásdokumentumot, a beállítási objektumot és a célútvonalat. + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +Amikor a script befejeződik, a `git_flavored.md` tartalmazza a `sample.html` markdown‑reprezentációját. A fájlt megnyithatod bármely szerkesztőben, vagy közvetlenül egy statikus‑site generátorba betáplálhatod. + +### Várható kimenet + +Feltételezve, hogy a `sample.html` egy egyszerű címet és bekezdést tartalmaz, a generált markdown így nézhet ki: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +Ha az eredeti HTML táblázatokat, listákat vagy kódrészeket tartalmaz, a Git‑flavored előbeállítás megőrzi ezeket a struktúrákat a megfelelő markdown szintaxis használatával. + +## A html to markdown könyvtár megértése + +A **GroupDocs.Conversion** könyvtár elrejti a feldolgozási és megjelenítési részleteket, amelyeket egyébként manuálisan kellene kezelned. Ez: + +* Megőrzi a CSS‑alapú stílusokat, ahol csak lehetséges (pl. félkövér, dőlt). +* Tiszta, olvasható markdown-et generál extra HTML entitások nélkül. +* Támogatja a kötegelt konverziót, így egy ciklussal feldolgozhatsz egy könyvtárban lévő HTML fájlokat ugyanazzal a kóddal. + +Ha könnyebb megoldást szeretnél, a `markdownify` csomag egyetlen függvényes API-t kínál: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +Mindkét megközelítés eléri ugyanazt a végcélját — **convert html to markdown** — de a GroupDocs opció nagyobb kontrollt biztosít a kimeneti formátum felett, és könnyen integrálható nagyobb dokumentum‑feldolgozó csővezetékekbe. + +## Gyakori buktatók és hogyan kerüld el őket + +| Probléma | Miért fordul elő | Megoldás | +|----------|------------------|----------| +| Hiányzó képek a markdown-ben | A konverter csak a kép URL-eket tartalmazza; nem ágyazza be a fájlokat. | Győződj meg arról, hogy a képfájlok elérhetők a markdown helyéről, vagy másold őket a kimenet mellé. | +| Törött relatív hivatkozások | A HTML relatív útvonalakat használhat, amelyek a konverzió után érvénytelenek lesznek. | Használd a `md_options.base_path`-t (ha elérhető) a hivatkozások átírásához, vagy futtass egy utófeldolgozó scriptet az útvonalak módosításához. | +| Unicode karakterek escape-lődnek | Néhány könyvtár escape-eli a nem ASCII karaktereket. | Állítsd be a `md_options.encode_utf8 = True`-t (vagy a megfelelő flag-et), hogy a karakterek érintetlenek maradjanak. | + +Ezeknek a problémáknak a korai kezelése időt takarít meg, amikor a konverziót tucatnyi vagy akár száz fájlra is kiterjeszted. + +## Teljes, futtatható példa + +Az alábbi önálló szkriptet másolhatod, módosíthatod, és azonnal futtathatod. Cseréld le a `YOUR_DIRECTORY`-t a gépeden lévő tényleges mappára. + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +Futtasd a szkriptet: + +```bash +python markdown_from_html.py +``` + +Egy megerősítő üzenetet és egy új `git_flavored.md` fájlt kell látnod, amely a HTML-ed markdown változatát tartalmazza. + +## Összegzés + +Most már tudod, **hogyan hozz létre markdown-t** egy HTML forrásból Python segítségével. Az útmutató bemutatta egy megbízható **html to markdown library** telepítését, egy **html file to markdown** betöltését, a **html to markdown python** beállítások konfigurálását, és az eredmény mentését. Ezzel az alapokkal automatizálhatod a dokumentációs folyamatokat, migrálhatod a régi weboldalakat, vagy tartalmat generálhatsz statikus‑site generátorokhoz. + +**Következő lépések** + +* Fedezd fel a kötegelt konverziót, HTML fájlok mappájának iterálásával. +* Testreszabhatod a `MarkdownSaveOptions`-t a címsor stílusok, listaformázás vagy képek kezelése szabályozásához. +* Kombináld ezt a szkriptet egy CI/CD munkafolyammal, hogy a markdown dokumentációd automatikusan naprakész maradjon. + +Jó konvertálást! + +## Mit érdemes legközelebb megtanulni? + +A következő útmutatók szorosan kapcsolódó témákat fednek le, amelyek a jelen útmutatóban bemutatott technikákra épülnek. Minden forrás teljes, működő kódpéldákat tartalmaz lépésről‑lépésre magyarázatokkal, hogy segítsenek elsajátítani további API funkciókat és alternatív megvalósítási megközelítéseket a saját projektjeidben. + +- [HTML konvertálása Markdown-re Aspose.HTML Java-hoz](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [HTML konvertálása Markdown-re .NET-ben az Aspose.HTML használatával](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Markdown konvertálása HTML-re – Java útmutató PDF kimenettel](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/hungarian/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..f724c0209 --- /dev/null +++ b/html/hungarian/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,188 @@ +--- +category: general +date: 2026-08-22 +description: Tanulja meg, hogyan hozhat létre Markdown‑t HTML‑ből Pythonban egy egyszerű + háromlépéses szkript segítségével. Tartalmaz konverziós lehetőségeket és exportálási + tippeket. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: hu +lastmod: 2026-08-22 +og_description: Készíts markdownot HTML‑ből Python segítségével mindössze három sorban. + Ez az útmutató bemutatja a konverziót, a formázási lehetőségeket, és azt, hogyan + exportálhatod hatékonyan a HTML‑t markdownba. +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: Markdown létrehozása HTML‑ből Pythonban – lépésről‑lépésre útmutató +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: Hogyan hozzunk létre markdown‑t HTML‑ből Python segítségével +url: /hu/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan hozzunk létre markdown-t HTML-ből Python segítségével + +Ha **markdown-t kell létrehozni HTML-ből**, ez a rövid útmutató pontosan megmutatja, hogyan teheted ezt Pythonban. Látni fogsz egy világos, háromlépéses szkriptet, amely betölti a HTML fájlt, beállítja a Git‑flavored Markdown kimenetet, és a lemezre írja az eredményt. + +A webtartalom könnyű jelölőnyelvre való konvertálása gyakori feladat statikus weboldalak, dokumentációs folyamatok vagy adat‑elemző jegyzetfüzetek építésekor. Ebben az útmutatóban érinteni fogjuk, hogyan **konvertáljunk HTML-t markdown-re** opcionális formázással, megválaszoljuk a **hogyan konvertáljunk HTML-t** kérdést hatékonyan, és bemutatjuk a **HTML exportálása markdown-be** munkafolyamatot a népszerű `groupdocs-conversion` könyvtár segítségével. + +## Előfeltételek + +Mielőtt elkezdenéd, győződj meg róla, hogy rendelkezel: + +* Python 3.8‑as vagy újabb verzióval. +* `groupdocs-conversion` csomaggal (vagy bármely könyvtárral, amely biztosítja a `HTMLDocument`, `MarkdownSaveOptions` és `Converter` osztályokat). Telepítsd a következővel: + +```bash +pip install groupdocs-conversion +``` + +* Egy HTML fájl, amelyet át szeretnél alakítani, például a `sample.html`, egy általad irányított mappában. + +Nem szükséges további rendszerfüggőség, és a kód Windows, macOS és Linux rendszereken is működik. + +## 1. lépés: A forrás HTML dokumentum betöltése + +Az első művelet egy `HTMLDocument` objektum létrehozása, amely a forrásfájlt képviseli. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**Miért fontos:** A `HTMLDocument` beolvassa a fájlt, feloldja a relatív hivatkozásokat, és előkészíti a DOM-ot a konvertáláshoz. Ha a fájl nem található, a konstruktor egy egyértelmű `FileNotFoundError`-t dob, így korán kezelheted a hiányzó bemeneteket. + +## 2. lépés: A Markdown mentési beállítások konfigurálása (Git‑flavored) + +A Markdown-nak több dialektusa van. A Git‑flavored Markdown (GFM) táblákat, feladatlistákat és keretezett kódrészeket ad hozzá, amelyek gyakran szükségesek README fájlokhoz vagy GitHub oldalakhoz. + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**Miért fontos:** Az `MarkdownFormatter.GIT` kifejezett kiválasztásával biztosítod, hogy a kimenet a GitHub által renderelt szabályoknak megfelelő legyen, elkerülve a meglepetéseket, amikor a markdown egy tárolóban jelenik meg. Ha egyszerű Markdown-et szeretnél, cseréld le az `MarkdownFormatter.GIT`-t `MarkdownFormatter.DEFAULT`-ra. + +## 3. lépés: A HTML dokumentum konvertálása Markdown fájlba + +Most hívd meg a konverziós motorot, és írd az eredményt a célútra. + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**Miért fontos:** A `Converter.convert` végzi a nehéz munkát – a HTML címkéket a megfelelő markdown megfelelőikre fordítja, megőrzi a képeket (szükség esetén a kimeneti mappába másolva), és alkalmazza a kiválasztott formázót. A metódus siker esetén `None`-t ad vissza, de elkapod a `ConversionException`-t a részletes hiba jelentéshez. + +### Várható kimenet + +A szkript futtatása után a `sample.md` valami ilyesmit fog tartalmazni: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +A pontos markdown tükrözi a `sample.html` struktúráját. A táblák, képek és kódrészek a GFM szabályok szerint lesznek konvertálva. + +## Gyakori variációk és szélhelyzetek + +| Helyzet | Ajánlott módosítás | +|-----------|-------------------| +| **Nagy HTML fájlok (>10 MB)** | Növeld a Python rekurziós limitet, vagy streameld a bemenetet a `HTMLDocument.open_stream()` használatával, ha a könyvtár támogatja. | +| **Abszolút URL-ekkel hivatkozott képek** | Állítsd be `md_options.embed_images = True` értékre, hogy a képeket base‑64 adat-URI‑ként ágyazd be, vagy tartsd őket linkként a könnyebb kimenetért. | +| **Egyszerű Markdown-re van szükséged GFM helyett** | Módosítsd `md_options.formatter = MarkdownFormatter.DEFAULT`. | +| **Egyedi CSS osztályokat figyelmen kívül kell hagyni** | Használd `md_options.ignore_css_classes = ["unwanted-class"]`. | +| **CI/CD pipeline-ban futtatás** | Tedd a szkriptet `try/except` blokkba, és hibás esetben térj vissza nem nulla státusszal, hogy a pipeline gyorsan leálljon. | + +### Profi tipp + +Ha sok fájlt szeretnél kötegben konvertálni, használd újra egyetlen `MarkdownSaveOptions` példányt, és csak a bemeneti/kimeneti útvonalakat változtasd meg egy ciklusban. Ez csökkenti az objektum‑létrehozási terhet, és a folyamatot körülbelül 15 %-kal gyorsítja. + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## Hogyan konvertáljunk HTML-t markdown-be más nyelveken (rövid megjegyzés) + +Bár ez az útmutató a **html to markdown python** témára fókuszál, ugyanazok a koncepciók érvényesek Java, C# vagy JavaScript SDK-kra: hozz létre egy dokumentum objektumot, konfiguráld a markdown formázót, és hívd meg a konvertálót. Ha valaha **HTML-t markdown-be kell exportálnod** egy nem‑Python környezetből, keresd meg a megfelelő `HtmlDocument`, `MarkdownSaveOptions` és `Converter` osztályokat a nyelvspecifikus SDK-ban. + +## Összegzés + +Most már tudod, hogyan **hozz létre markdown-t HTML-ből** egy tömör Python szkripttel. A háromlépéses folyamat – a HTML betöltése, a Git‑flavored beállítások megadása, és a konverzió futtatása – lefedi bármely **convert html to markdown** munkafolyamat alapját. Innen már: + +* Integráld a szkriptet statikus weboldal generátorokba. +* Automatizáld a dokumentáció frissítéseit CI pipeline-okban. +* Bővítsd a konverziót egyedi utófeldolgozással (pl. hivatkozás-átírások vagy címsor‑módosítások). + +Nyugodtan kísérletezz a másodlagos beállításokkal – **hogyan konvertáljunk html** különböző formázókkal, vagy a **export html to markdown** beállítások finomhangolásával képek és táblák esetén. Jó konvertálást! + +## Mit érdemes következőként megtanulni? + +A következő útmutatók szorosan kapcsolódó témákat fednek le, amelyek a jelen útmutatóban bemutatott technikákra épülnek. Minden forrás teljes, működő kódpéldákat tartalmaz lépésről‑lépésre magyarázatokkal, hogy elsajátíthasd a további API funkciókat és alternatív megvalósítási megközelítéseket a saját projektjeidben. + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/hungarian/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..253240f1e --- /dev/null +++ b/html/hungarian/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-08-22 +description: Készíts PDF-et SVG-ből Python segítségével percek alatt. Tanuld meg, + hogyan konvertálj SVG-t PDF-re, mentsd el az SVG-t PDF-ként, és használj megbízható + SVG‑PDF konvertert. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: hu +lastmod: 2026-08-22 +og_description: Készíts PDF-et SVG-ből Python segítségével gyorsan. Ez az útmutató + megmutatja, hogyan konvertálj SVG-t PDF-re, hogyan használj SVG‑PDF konvertert, + és hogyan mentsd el az SVG-t PDF-ként egyetlen szkriptben. +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: PDF létrehozása SVG‑ből Pythonban – lépésről‑lépésre útmutató +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: Hogyan készítsünk PDF-et SVG-ből Pythonban – teljes útmutató +url: /hu/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan hozzunk létre PDF-et SVG-ből Pythonban – teljes útmutató + +Ha gyorsan **PDF-et szeretnél létrehozni SVG-ből**, ez a bemutató pontosan megmutatja, hogyan. Végigvezetünk egy SVG fájl PDF-re konvertálásán egy népszerű SVG‑PDF konverterrel, így vektorgrafikákat ágyazhatsz be jelentésekbe, számlákba vagy e‑könyvekbe anélkül, hogy elhagynád a Python kódodat. + +Megtanulod, hogyan **konvertálj SVG-t PDF-re**, kezeld a méretezést, őrizd meg a betűtípusokat, és végül **mentsd el az SVG-t PDF-ként** egyetlen, reprodukálható szkript segítségével. Külső parancssori eszközök nem szükségesek – csak néhány Python sor és az Aspose.SVG for Python könyvtár. + +## Előfeltételek + +| Követelmény | Indok | +|-------------|--------| +| Python 3.8+ | A könyvtár a modern Python futtatókörnyezeteket célozza. | +| `aspose.svg` package | Biztosítja a `SVGDocument`, `PdfSaveOptions` és `Converter` osztályokat. Telepítés: `pip install aspose-svg`. | +| An SVG file (`vector.svg`) | Egy SVG fájl (`vector.svg`) | +| Write permission to the output folder | **save SVG as PDF** művelethez szükséges. | + +A könyvtár a következővel telepíthető: + +```bash +pip install aspose-svg +``` + +> **Pro tipp:** Használj virtuális környezetet (`python -m venv venv`), hogy a függőségek izoláltak maradjanak. + +## A konverzió folyamata áttekintése + +A konverzió három egyszerű lépésből áll: + +1. Töltsd be a **SVG dokumentumot** a lemezről. +2. Hozd létre a **PDF mentési beállításokat** (testreszabhatod az oldalméretet, DPI-t stb.). +3. Hívd meg a **konvertert**, hogy PDF fájlt állítson elő. + +A következő szakaszok részletezik az egyes lépéseket, elmagyarázzák, *miért* íródott így a kód, és bemutatják a teljes, futtatható szkriptet. + +## PDF létrehozása SVG-ből az Aspose.SVG for Python használatával + +Ez a H2 fejléc tartalmazza a fő kulcsszót **create pdf from svg**, ezzel teljesítve az SEO követelményt. + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### Miért működik ez + +* **`SVGDocument`** elemzi az SVG XML-t és memóriában felépíti a reprezentációt, amelyet a konverter renderelni tud. +* **`PdfSaveOptions`** lehetővé teszi a PDF kimenet finomhangolását (oldalméret, tömörítés, DPI). Az alapértelmezések már hű PDF-et eredményeznek, ezért a példa azonnal működik. +* **`Converter.convert`** végzi a nehéz munkát: a vektoradatokat PDF oldalakon rasterizálja, miközben megőrzi a vektor pontosságát, így a kapott PDF bármilyen nagyításnál éles marad. + +## SVG konvertálása PDF-re egyedi oldalmérettel + +Ha egy adott oldalméretre van szükséged – például A4 nyomtatott jelentésekhez – állítsd be a `PdfSaveOptions`-t: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **Különleges eset:** Egyes SVG-k `viewBox` attribútummal rendelkeznek, amely nem egyezik a kívánt PDF méretekkel. A `page_width`/`page_height` felülírása biztosítja, hogy a PDF illeszkedjen a tervezett elrendezéshez. + +## SVG mentése PDF-ként a betűtípusok megőrzésével + +Ha az SVG külső betűtípusokra hivatkozik, győződj meg róla, hogy a betűtípusok elérhetők a konverter számára. Helyezd a `.ttf` fájlokat ugyanabba a könyvtárba, mint az SVG, vagy adj meg egy egyéni betűtípus mappát: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +A konverter a betűtípusokat közvetlenül a PDF-be ágyazza be, garantálva, hogy a **svg file to pdf** konverzió minden gépen azonosul. + +## Kötetes konverzió: svg fájl pdf-re sok fájl esetén + +Gyakran van egy mappa tele SVG eszközökkel. Az alábbi ciklus egy hatékony **svg to pdf converter** példát mutat be, amely minden `.svg` fájlt feldolgoz egy könyvtárban: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +Ez a kódrészlet egy gyakorlati **convert svg to pdf** munkafolyamatot szemléltet, amely beépíthető CI folyamatokba vagy automatizált jelentéskészítő rendszerekbe. + +## A kimenet ellenőrzése + +A szkript futtatása után nyisd meg a generált PDF-et bármely nézővel (Adobe Reader, Chrome vagy Preview). A következőket kell látnod: + +* Vektor alakzatok élesen jelennek meg bármilyen nagyításnál. +* A szöveg megegyezik az SVG forrással, a betűtípusok beágyazva, ha megadtad őket. +* Nincsenek rasterizált hibák – mivel a konverzió megőrzi az eredeti vektor adatot. + +Ha hiányzó betűtípusokat észlelsz, ellenőrizd, hogy a betűtípus fájlok elérhetők-e, és hogy az SVG helyesen hivatkozik-e rájuk (`font-family` attribútum). + +## Gyakori buktatók és elkerülésük módjai + +| Tünet | Valószínű ok | Megoldás | +|---------|--------------|-----| +| Üres PDF oldalak | SVG-nek külső erőforrásai (képek, betűtípusok) hiányoznak | Add meg a `fonts_folder`-t és biztosítsd, hogy a hivatkozott képek ugyanabban a könyvtárban legyenek, vagy használj abszolút URL-eket. | +| A szöveg körvonalakként jelenik meg | Betűtípus nincs beágyazva | Állítsd be `pdf_options.embed_fonts = True` (alapértelmezett) és ellenőrizd, hogy a betűtípus fájl jelen van. | +| A PDF nagyobb a vártnál | Magas DPI vagy tömörítetlen képek | Csökkentsd a `pdf_options.dpi`-t vagy engedélyezd a tömörítést: `pdf_options.compress = True`. | +| Az SVG méretei levágódnak | `viewBox` nagyobb, mint a PDF oldal | Állítsd be a `pdf_options.page_width`/`page_height`-t vagy méretezd át az SVG-t a `svg_doc.set_viewport` segítségével. | + +## Teljes vég‑től‑végig példa + +Az alábbi önálló szkript tartalmaz hibakezelést, naplózást és opcionális parancssori argumentumokat. Mentsd `svg_to_pdf.py` néven, majd futtasd `python svg_to_pdf.py`-vel. + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +A szkript futtatása egy **save SVG as PDF** műveletet eredményez, amelyet beágyazhatsz nagyobb automatizálási folyamatokba. + +### Várt konzol kimenet + + + +## Mit érdemes még tanulni? + +A következő bemutatók szorosan kapcsolódó témákat fednek le, amelyek a jelen útmutatóban bemutatott technikákra épülnek. Minden forrás teljes, működő kódpéldákat tartalmaz lépésről‑lépésre magyarázatokkal, hogy elsajátíthasd a további API funkciókat és alternatív megvalósítási módokat a saját projektjeidben. + +- [Convert SVG to PDF in .NET with Aspose.HTML](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg to pdf java – Generate PDF from SVG with Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [Convierte SVG a PDF en .NET con Aspose.HTML](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/hungarian/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..deb9458a3 --- /dev/null +++ b/html/hungarian/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-08-22 +description: hogyan lehet engedélyezni a streaminget nagy HTML‑PDF konverzióhoz Pythonban, + csökkentve a memóriahasználatot és felgyorsítva a kimenet előállítását. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: hu +lastmod: 2026-08-22 +og_description: Hogyan lehet engedélyezni a streaminget nagy HTML‑PDF konverzióhoz + Pythonban, csökkentve a memóriahasználatot és felgyorsítva a kimenet generálását. +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: Streaming engedélyezése HTML‑PDF konverzióhoz Pythonban +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: Hogyan engedélyezzük a streaminget HTML PDF-re konvertáláskor Pythonban +url: /hu/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan engedélyezzük a streaminget HTML‑ről PDF‑re konvertáláskor Pythonban + +Ha nagy HTML‑ről PDF‑re konvertálás során **hogyan engedélyezzük a streaminget**, akkor ez az útmutató pontos lépéseket mutat. A streaming engedélyezésével elkerülhető a teljes dokumentum memóriába töltése, ami elengedhetetlen, amikor nagy fájlok HTML‑ről PDF‑re konvertálásáról van szó. + +Megtanulod, hogyan engedélyezd a streaminget, hogyan konvertálj HTML‑t PDF‑re Pythonban, és hogyan kezeld a speciális eseteket, például a **large html to pdf** feladatokat. A megoldás a népszerű `groupdocs-conversion` (vagy hasonló) könyvtárral működik, de a koncepciók bármely streaming‑képes konverterre alkalmazhatók. + +![Diagram showing streaming conversion from HTML to PDF using Python](streaming-diagram.png) + +## Amire szükséged lesz + +- Python 3.9 vagy újabb +- `groupdocs-conversion` (vagy bármely könyvtár, amely `PdfSaveOptions`‑t kínál streaming kapcsolóval) +- Egy HTML fájl, amelyet PDF‑vé szeretnél alakítani (a példában egy nagy `large.html` nevű fájlt használunk) + +Ezeknek a feltételeknek a megléte biztosítja, hogy a kód további konfiguráció nélkül fusson. + +## 1. lépés: A konverziós könyvtár telepítése + +Először telepítsd a Python csomagot, amely biztosítja a `HTMLDocument`, `PdfSaveOptions` és `Converter` osztályokat. A leggyakoribb választás a **GroupDocs.Conversion** SDK: + +```bash +pip install groupdocs-conversion +``` + +> **Pro tipp:** Használj virtuális környezetet (`python -m venv .venv`), hogy a függőségek izoláltak legyenek. + +## 2. lépés: A konvertálni kívánt HTML dokumentum betöltése + +A forrás HTML betöltése egyszerű. A `HTMLDocument` osztály beolvassa a fájlt a lemezről, és előkészíti a konvertáláshoz. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +A `HTMLDocument` objektum az egész HTML markup‑ot képviseli, beleértve a külső erőforrásokat, mint a képek és a CSS. Ez a kiindulópont minden **convert html to pdf** művelethez. + +## 3. lépés: PDF mentési beállítások létrehozása és a streaming engedélyezése + +A streaming engedélyezése a **hogyan engedélyezzük a streaminget** középpontja. Ahelyett, hogy az egész PDF‑et a memóriában tárolná, a konverter közvetlenül a kimeneti fájlba írja a darabokat. + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +Amikor az `enable_streaming` értéke `True`, a könyvtár egy write‑through megközelítést alkalmaz, amely drámaian csökkenti a RAM‑használatot – ez kritikus a **large html to pdf** forgatókönyvekben. + +## 4. lépés: A HTML dokumentum konvertálása PDF‑be a beállított opciók használatával + +Most indítsd el a konvertálást. A `Converter.convert` metódus megkapja a forrásdokumentumot, a beállítási objektumot és a célútvonalat. + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +A hívás befejezése után a `large.pdf` tartalmazza a renderelt PDF‑et, amelyet a streaming közben írtunk a lemezre. Az egész folyamat általában gyorsabban befejeződik, mint egy nem‑streaming konverzió, mivel az operációs rendszer fokozatosan tudja kiüríteni az adatokat a fájlrendszerbe. + +### Várt kimenet + +A szkript futtatása egy PDF fájlt eredményez, amelynek mérete megegyezik az eredeti HTML tartalmával. A végeredményt bármely PDF‑olvasóval ellenőrizheted: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## Miért fontos a streaming nagy HTML‑ről PDF‑re konverziók esetén + +Amikor **convert html to pdf** streaming nélkül történik, a könyvtár először az egész PDF‑et felépíti a RAM‑ban, mielőtt a lemezre írna. Egy közepes oldal esetén ez rendben van, de egy **large html to pdf** feladat (például egy 10 MB‑os HTML‑jelentés sok képpel) meghaladhatja a tipikus szerver‑lesszerek vagy alacsony memória kapacitású konténerek memóriakorlátját. + +A streaming három problémát old meg: + +1. **Memóriahatékonyság** – csak egy kis puffer marad a RAM‑ban. +2. **Gyorsabb észlelt teljesítmény** – a fájl már megjelenik a lemezen, miközben még generálódik, így a downstream folyamatok korábban elkezdhetik olvasni. +3. **Skálázhatóság** – sok konverziót futtathatsz párhuzamosan anélkül, hogy kimerítenéd a host memória‑kapacitását. + +## Gyakori buktatók és hogyan kerüld el őket + +| Tünet | Valószínű ok | Megoldás | +|---------|--------------|-----| +| `MemoryError` a konvertálás során | Streaming kapcsoló nincs beállítva vagy a könyvtár verziója túl régi | Győződj meg róla, hogy `pdf_opts.enable_streaming = True`, és frissítsd a legújabb SDK‑ra (`pip install --upgrade groupdocs-conversion`). | +| Hiányzó képek a PDF‑ben | Relatív képútvonalak nem oldhatók fel | Add meg a báziskönyvtárat a `HTMLDocument`‑nek, vagy ágyazd be a képeket base64‑ként. | +| Üres PDF kimenet | HTML fájl nem található vagy nem olvasható | Ellenőrizd a `"YOUR_DIRECTORY/large.html"` útvonalat, és nézd meg a fájl jogosultságait. | +| A konvertálás végtelenül függ | Nagy külső erőforrások (betűkészletek, CSS) blokkolják a renderelést | Töltsd le előre a külső elemeket, vagy használj headless böngészőt az inline beágyazáshoz. | + +### Különleges eset: HTML konvertálása karakterláncból + +Ha a HTML tartalmad memóriában, nem fájlban él, akkor is **hogyan engedélyezzük a streaminget** alkalmazhatsz úgy, hogy a nyers HTML‑t átadod egy `HTMLDocument` konstruktorának, amely nyers HTML‑t fogad: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +A streaming viselkedés változatlan marad, mivel az SDK fokozatosan írja a PDF‑et. + +## Teljes szkript, amelyet másolhatsz és beilleszthetsz + +Az alábbiakban egy komplett, azonnal futtatható példát találsz, amely tartalmazza a fent tárgyalt összes lépést. Cseréld ki a `YOUR_DIRECTORY`‑t a saját géped tényleges elérési útjára. + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +A `python full_example.py` futtatása a streaming megközelítést használva generálja a `large.pdf`‑t. + +## Összefoglalás + +- Most már tudod, **hogyan engedélyezzük a streaminget** HTML‑ről PDF‑re konvertáláskor Pythonban. +- A szkript bemutatja a teljes **convert html to pdf** munkafolyamatot, hatékonyan kezelve a **large html to pdf** terheléseket. +- Az `PdfSaveOptions.enable_streaming = True` beállításával a konverter fokozatosan írja a kimenetet, ami a **stream html to pdf** ajánlott módja. + +## Mit érdemes még felfedezni + +- **HTML to PDF Python** könyvtárak, amelyek támogatják a CSS3‑at és a JavaScriptet (például `WeasyPrint`, `pdfkit`). +- Jelszóvédelem vagy titkosítás hozzáadása a generált PDF‑hez további `PdfSaveOptions` beállításokkal. +- Több konverzió párhuzamosítása egy sorrendszerben (Celery, RabbitMQ) miközben alacsony memóriahasználatot tartunk fenn. + +Nyugodtan kísérletezz különböző HTML forrásokkal, oldalméretekkel és PDF metaadatokkal. A streaming lehetővé teszi, hogy még nagyobb dokumentumokat is kezelj teljesítményromlás nélkül. Boldog kódolást! + +## What Should You Learn Next? + +A következő oktatóanyagok szorosan kapcsolódó témákat fednek le, amelyek a jelen útmutatóban bemutatott technikákra épülnek. Minden forrás tartalmaz teljes, működő kódrészleteket lépésről‑lépésre magyarázatokkal, hogy segítsen elsajátítani további API funkciókat és alternatív megvalósítási megközelítéseket a saját projektjeidben. + +- [Hogyan konvertáljunk HTML‑t PDF‑re Java‑ban – Aspose.HTML használata Java‑hoz](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Fix szálkészlet létrehozása párhuzamos HTML‑ről PDF‑re konvertáláshoz](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [Hogyan engedélyezzük a JavaScriptet az Aspose HTML‑ben – HTML betöltése és szöveg lekérése](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/hungarian/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..c761a7b00 --- /dev/null +++ b/html/hungarian/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-08-22 +description: Hogyan exportáljunk linkeket HTML‑ből, és konvertáljuk őket markdown + fájlba, bekezdésekkel együtt. Lépésről lépésre útmutató a HTML markdown konvertálásához. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: hu +lastmod: 2026-08-22 +og_description: Hogyan exportálhatod a linkeket egy HTML dokumentumból, és konvertálhatod + markdown fájlba, bekezdésekkel együtt. Kövesd ezt a teljes útmutatót a megbízható + HTML‑ról markdownra konvertáláshoz. +og_image_alt: How to export links while converting HTML to Markdown +og_title: Hogyan exportáljunk linkeket HTML‑ról Markdownra konvertálás közben – lépésről‑lépésre + útmutató +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: Hogyan exportáljunk linkeket HTML‑ról Markdownra konvertálás közben +url: /hu/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan exportáljunk linkeket HTML‑ről Markdown‑ra konvertálás közben + +Ha **hogyan exportáljunk linkeket** egy HTML‑oldalról, és az eredményt egy tiszta **html to markdown file**‑ba szeretnéd átalakítani, ez az útmutató pontos lépéseket mutat. Emellett megtudod, **hogyan vonjunk ki bekezdéseket**, hogy a Markdown‑kimenet csak a számodra fontos fő tartalmat tartalmazza. A tutorial végére már képes leszel megválaszolni a „**hogyan konvertáljunk html‑t** markdown‑ra” kérdést egy kész, futtatható szkripttel. + +A linkek exportálása és a bekezdések kinyerése gyakori feladat, amikor webtartalmat migrálsz statikus oldalakra, dokumentációs portálokra vagy headless CMS‑back‑endre. Az alábbi megközelítés a GroupDocs Conversion SDK for Python‑nal működik, de a koncepciók bármely olyan könyvtárra alkalmazhatók, amely lehetővé teszi az export beállításait. + +--- + +## Amire szükséged lesz + +- Python 3.9 vagy újabb +- `groupdocs-conversion` csomag (telepítés: `pip install groupdocs-conversion`) +- Egy HTML‑fájl, amelyet feldolgozni szeretnél (például `input.html`) +- Alapvető ismeretek a Python‑szkriptek írásáról + +--- + +## Hogyan exportáljunk linkeket HTML‑ről Markdown‑ra konvertálás közben + +Az első nagy lépés a konverzió beállítása úgy, hogy csak a kívánt funkciók – a linkek és a bekezdések – kerüljenek a **html to markdown file**‑ba. Az SDK lehetővé teszi, hogy egy `MarkdownFeature` bitmaszkot állíts be; a `LINKS` és `PARAGRAPHS` kombinációjával a kimenet fókuszált marad. + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### Miért működik ez + +- **`HTMLDocument`** beolvassa az eredeti fájlt, és felépíti a DOM‑ot, amelyet a konverter bejárhat. +- **`MarkdownSaveOptions`** finomhangolt vezérlést biztosít arról, hogy az SDK mit ír ki. A `features` értékét `LINKS | PARAGRAPHS`‑ra állítva a motor figyelmen kívül hagyja a képeket, táblázatokat vagy szkripteket, ezáltal csökkentve a zajt a végső **html to markdown file**‑ban. +- **`Converter.convert`** végzi a nehéz munkát. Figyelembe veszi a funkciómaszkot, kinyeri az `` és `

` elemeket, és a szabványos Markdown szintaxis szerint írja ki őket. + +--- + +## Hogyan konvertáljunk HTML‑t Markdown‑ra teljes tartalommal (opcionális) + +Ha később úgy döntesz, hogy az egész oldalt – nem csak a linkeket és bekezdéseket – szeretnéd, egyszerűen módosítsd a funkciómaszkot: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +Ugyanazzal a konverzióval most egy teljes **html to markdown file** jön létre, amely tükrözi az eredeti elrendezést. Ez bemutatja, **hogyan konvertáljunk html**‑t rugalmas módon: a kimenetet a funkciókapcsolók be‑ vagy kikapcsolásával szabályozod. + +--- + +## Hogyan vonjunk ki csak bekezdéseket + +Néha csak a cikk szöveges tartalmára vagy kíváncsi, a hiperhivatkozásokra nem. A bekezdéseket izolálhatod úgy, hogy a maszkot csak `PARAGRAPHS`‑ra állítod: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +Az eredményül kapott Markdown tiszta, sortöréssel ellátott szöveget tartalmaz, linkjelölés nélkül. Ez a kódrészlet megválaszolja a **hogyan vonjunk ki bekezdéseket** kérdést egy HTML‑forrásból. + +--- + +## Gyakori buktatók és megoldások + +| Probléma | Miért fordul elő | Megoldás | +|----------|------------------|----------| +| Üres kimeneti fájl | A forrás HTML nem tartalmaz `` vagy `

` elemeket, amelyek megfelelnek a kiválasztott funkcióknak. | Ellenőrizd a HTML‑szerkezetet, vagy bővítsd a funkciómaszkot (például `HEADINGS`‑t is vegyél fel). | +| Kódolási problémák | A HTML nem‑UTF‑8 karakterkészletet használ, és az SDK helytelenül olvassa be. | Adj meg explicit kódolást a `HTMLDocument`‑nek, pl. `HTMLDocument(path, encoding="iso-8859-1")`. | +| Meglévő Markdown felülírása | A szkript többször futtatva felülírja az előző fájlt. | Adj időbélyeget a kimeneti fájlnévhez, vagy ellenőrizd az `os.path.exists`‑t írás előtt. | + +**Pro tipp:** Sok fájl feldolgozásakor csomagold a konverziólogikát egy ciklusba, és naplózd minden egyes eredményt. Így átlátható audit nyomot kapsz, és könnyen folytathatod a munkát hiba után. + +--- + +## Teljes szkript, amelyet egyszerűen másolhatsz‑beilleszthetsz + +Az alábbi önálló Python‑fájl (`convert_links_paragraphs.py`) közvetlenül futtatható. Argumentum‑parszolást tartalmaz, így a bemeneti és kimeneti útvonalakat a parancssorból adhatod meg anélkül, hogy a kódot módosítanád. + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**Hogyan futtassuk** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +A fenti parancs bemutatja, **hogyan exportáljunk linkeket** és **hogyan vonjunk ki bekezdéseket** egyetlen hívásban. A `--links` vagy `--paragraphs` kapcsolók elhagyásával a kimenetet a saját igényeidhez igazíthatod. + +--- + +## Ellenőrzés – hogyan néz ki a kimenet + +A következő egyszerű HTML (`input.html`) alapján: + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +A szkript mindkét kapcsolóval futtatva `links_and_paragraphs.md`‑t hoz létre: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +Láthatod, hogy csak a két bekezdés és a hiperhivatkozás maradt meg – pontosan az, amit a **hogyan exportáljunk linkeket** keresésekor vártál a **convert html to markdown** folyamat során. + +--- + +## Következő lépések és kapcsolódó témák + +- **How to convert html to markdown** with images: add `MarkdownFeature.IMAGES` to the mask. +- **How to extract paragraphs** and then post‑process + + +## Mit érdemes még megtanulni? + +A következő tutorialok szorosan kapcsolódó témákat fednek le, amelyek a jelen útmutatóban bemutatott technikákra épülnek. Minden forrás komplett, működő kódrészleteket és lépésről‑lépésre magyarázatokat tartalmaz, hogy elsajátíthasd a további API‑funkciókat, és alternatív megvalósítási megközelítéseket fedezhess fel saját projektjeidben. + +- [How to Set Offset When Converting HTML to Markdown in Java](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown to HTML Java - Convert with Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [Convert HTML to Markdown – Complete C# Guide](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/hungarian/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..f70d2139d --- /dev/null +++ b/html/hungarian/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-08-22 +description: HTML betöltése az Aspose.HTML segítségével Pythonban – az erőforrásmélység + korlátozása és a dokumentum előkészítése konvertálásra vagy szerkesztésre. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: hu +lastmod: 2026-08-22 +og_description: Hogyan töltsünk be HTML-t az Aspose.HTML segítségével Pythonban, állítsuk + be az erőforráskezelés mélységét, és készítsük elő a dokumentumot a konvertáláshoz + vagy szerkesztéshez. +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: HTML betöltése az Aspose.HTML segítségével – Python útmutató +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: HTML betöltése az Aspose.HTML segítségével Pythonban +url: /hu/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan töltsünk be HTML-t az Aspose.HTML segítségével Pythonban + +Ha gyorsan és biztonságosan szeretnél **how to load html** betölteni egy Python projektben, ez az útmutató pontos lépéseket mutat. Az első két mondat végére már tudni fogod, hogyan konfiguráld az erőforrás‑kezelést, töltsd be a fájlt, és tartsd a folyamatot készen a további **HTML conversion** vagy szerkesztés számára. + +Nagy vagy összetett oldalak betöltése gyakran elbuktatja a naiv elemzőket, mivel a külső erőforrások (képek, szkriptek, CSS) mély rekurziót vagy hálózati késleltetéseket okozhatnak. Ez a bemutató egy robusztus mintát mutat be a **Aspose.HTML for Python** használatával, bemutatja a **HTMLDocument class**‑t, és elmagyarázza, miért fontos a **max_handling_depth** beállítása. + +A következőket fogod végigjárni: + +* Az Aspose.HTML csomag telepítése +* `ResourceHandlingOptions` példány létrehozása és a mélység korlátozása +* A `HTMLDocument` osztály használata oldal betöltéséhez +* A dokumentum előkészítése PDF, PNG vagy további manipulációkhoz való konvertáláshoz + +Nem szükséges előzetes tapasztalat az Aspose.HTML használatában, csak alapvető Python ismeretek. + +--- + +## Hogyan töltsünk be HTML-t az Aspose.HTML segítségével Pythonban + +A megoldás központja egy háromlépéses minta, amely a **ResourceHandlingOptions**‑t kombinálja a **HTMLDocument class**‑szal. A kezelési mélység korlátozása megakadályozza a szabadon futó hálózati hívásokat, amikor egy oldal sok egymásba ágyazott erőforrást hivatkozik. + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### Miért működik ez + +* **`ResourceHandlingOptions`** megmondja az elemzőnek, hogy hány szintű külső erőforrást követhet. A `max_handling_depth = 3` beállítása három ugrás után leállítja a betöltőt, ami a legtöbb webhely számára elegendő, de védi a végtelen ciklusoktól. +* **`HTMLDocument`** beolvassa a fájlt, alkalmazza a beállításokat, és egy memóriában lévő DOM‑ot épít, amelyet lekérdezhetsz, módosíthatsz vagy renderelhetsz. +* Az opcionális konverziós kódrészlet bemutatja, hogyan integrálódik a betöltött dokumentum a **HTML conversion** funkciókkal, például PDF‑be mentés esetén. + +--- + +## A ResourceHandlingOptions megértése + +`ResourceHandlingOptions` a **Aspose.HTML for Python** része, és finomhangolt vezérlést biztosít a hálózati tevékenység felett. + +| Tulajdonság | Cél | Tipikus érték | +|----------------------------|------------------------------------------------|---------------| +| `max_handling_depth` | A hivatkozott erőforrások maximális rekurziós mélysége | `3` (alapértelmezett) | +| `allow_external_resources`| Külső CSS, JS, képek letöltésének engedélyezése | `True` | +| `timeout` | Kérésenkénti hálózati időkorlát (másodperc) | `30` | + +**Gyakorlati tipp:** Ha tudod, hogy a céloldal csak helyi eszközökre hivatkozik, állítsd be a `allow_external_resources = False` értéket a betöltés felgyorsításához és a felesleges HTTP hívások elkerüléséhez. + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## A HTMLDocument osztály használata + +A **HTMLDocument class** az összes Aspose.HTML művelet belépési pontja. Miután példányosítod, a következőket teheted: + +* A DOM elérése a `doc.root` segítségével +* Elemek lekérdezése CSS szelektorokkal (`doc.query_selector_all("img")`) +* Az oldal renderelése raszteres formátumokba (`doc.save("page.png")`) +* PDF‑be konvertálás (`doc.save("page.pdf", PDFSaveOptions())`) + +Az alábbi rövid kódrészlet kinyeri az összes kép `src` attribútumát a betöltés után: + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**Miért lehet erre szükséged:** **HTML conversion** végrehajtásakor gyakran kell módosítani vagy kicserélni a kép URL‑eket, mielőtt egy másik formátumba renderelnéd. A DOM közvetlen elérése ezt a rugalmasságot biztosítja. + +--- + +## Következő lépések a HTML betöltése után + +Miután a dokumentum a memóriában van, több gyakori munkafolyamat közül választhatsz: + +1. **PDF‑be konvertálás** – Ideális archiváláshoz vagy nyomtatáshoz. +2. **PNG/JPEG formátumba renderelés** – Hasznos bélyegképekhez vagy vizuális előnézetekhez. +3. **DOM szerkesztése** – Elemek beszúrása, eltávolítása vagy módosítása mentés előtt. +4. **Szöveg kinyerése** – Egyszerű szöveges tartalom lekérése indexeléshez vagy elemzéshez. + +### Példa: PDF‑be konvertálás egyedi oldalmérettel + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**Várható kimenet:** Egy `big_page.pdf` nevű fájl jelenik meg a munkakönyvtárban, amely a renderelt HTML‑t tartalmazza az összes engedélyezett erőforrással. Ha a `max_handling_depth` értéket 3‑ra állítod, csak a három szint mélységig terjedő erőforrások lesznek beágyazva, így a PDF mérete ésszerű marad. + +--- + +## Gyakori buktatók és hogyan kerüld el őket + +| Tünet | Ok | Megoldás | +|------------------------------------|--------------------------------------|----------| +| Hiányzó képek a renderelt PDF‑ben | `allow_external_resources` értéke `False` | Engedélyezd a külső erőforrásokat vagy ágyazd be a képeket helyileg | +| `TimeoutError` betöltés közben | A hálózati késleltetés meghaladja a `timeout` értéket | Növeld a `rh_opts.timeout` értékét vagy előre töltsd le az eszközöket | +| Váratlan CSS stílus | A hivatkozott stíluslap nem lett betöltve a mélységkorlát miatt | Növeld a `max_handling_depth` értékét vagy manuálisan add hozzá a szükséges CSS‑t | +| `UnicodeDecodeError` nem UTF‑8 fájloknál| A HTML fájl más kódolást használ | Add meg az `encoding="windows-1252"` paramétert a `HTMLDocument` létrehozásakor | + +--- + +## Teljes, futtatható példa + +Az alábbi önálló szkriptet másolhatod és beillesztheted egy `load_html_demo.py` nevű fájlba. Tartalmaz telepítési útmutatót, hibakezelést és egy végső ellenőrzési lépést. + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +**A szkript futtatása** + +```bash +python load_html_demo.py +``` + +A konzolon látnod kell egy üzenetet, amely megerősíti a betöltést, egy listát a kép URL‑ekről, valamint egy sikerüzenetet a PDF konvertálásról. A generált `big_page.pdf` a konfigurált **max_handling_depth** által korlátozott HTML tartalmat fogja tartalmazni. + +--- + +## Összegzés + +Ebben a bemutatóban áttekintettük a **how to load html** használatát a **Aspose.HTML for Python** segítségével, beállítottuk a **ResourceHandlingOptions**‑t a `max_handling_depth` vezérlésére, és bemutattuk a gyakorlati betöltés utáni műveleteket, mint a képek kinyerése és a PDF konvertálás. A lépések követésével most egy megbízható alapot kaptál bármely **HTML conversion** munkafolyamathoz, legyen szó web‑scraper, dokumentum‑archiválási szolgáltatás vagy dinamikus jelentéskészítő építéséről. + +**Következő lépések** + +* Kísérletezz különböző `max_handling_depth` értékekkel a teljesség és a teljesítmény egyensúlyának megtalálásához. +* Próbáld meg a dokumentumot konvertálni a + +## Mit érdemes következőként megtanulni? + +A következő oktatóanyagok szorosan kapcsolódó témákat fednek le, amelyek a jelen útmutatóban bemutatott technikákra épülnek. Minden forrás teljes, működő kódrészleteket tartalmaz lépésről‑lépésre magyarázatokkal, hogy segítsenek elsajátítani további API funkciókat és alternatív megvalósítási megközelítéseket a saját projektjeidben. + +- [How to Parse HTML Java – Load, Query & Count Elements](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [How to Edit HTML Document Tree in Aspose.HTML for Java](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [Handle Document Load Events in Aspose.HTML for Java](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/indonesian/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..6c804696b --- /dev/null +++ b/html/indonesian/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,192 @@ +--- +category: general +date: 2026-08-22 +description: Cara mengonversi HTML ke PDF di Python menggunakan Aspose.HTML – pelajari + cara membuat PDF dari file HTML, menghasilkan PDF dari kode HTML, dan menyimpan + HTML sebagai PDF Python dengan cepat. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: id +lastmod: 2026-08-22 +og_description: Cara mengonversi HTML ke PDF dalam Python dengan Aspose.HTML. Tutorial + ini menunjukkan cara membuat PDF dari file HTML, menghasilkan PDF dari kode HTML, + dan menyimpan HTML sebagai PDF menggunakan Python. +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: Cara mengonversi HTML ke PDF dengan Python – panduan langkah demi langkah +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: Cara mengonversi HTML ke PDF di Python dengan Aspose.HTML +url: /id/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara mengonversi HTML ke PDF di Python dengan Aspose.HTML + +Jika Anda perlu **how to convert html to pdf** dengan cepat, panduan ini menunjukkan solusi lengkap yang siap dijalankan. Anda akan melihat cara **create pdf from html file**, **generate pdf from html code**, dan **save html as pdf python** menggunakan API sederhana Aspose.HTML. + +Kami akan membahas setiap langkah, menjelaskan mengapa setiap baris penting, dan mencakup jebakan umum sehingga Anda dapat menyesuaikan kode untuk proyek apa pun. Tanpa alat eksternal, hanya beberapa baris Python. + +## Prasyarat + +* Python 3.8 atau lebih baru terinstal. +* Lisensi aktif Aspose.HTML untuk Python (atau kunci evaluasi gratis). +* Paket `aspose.html` terinstal: + +```bash +pip install aspose-html +``` + +Memiliki semua ini memastikan konversi berjalan tanpa kesalahan runtime. + +## Langkah 1: Muat dokumen HTML (create pdf from html file) + +Tugas pertama adalah membaca HTML sumber. Aspose.HTML merepresentasikan dokumen dengan kelas `HTMLDocument`, yang mengabstraksi I/O file, pengambilan jaringan, dan parsing DOM. + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*Mengapa ini penting:* +`HTMLDocument` memuat HTML, menyelesaikan sumber daya relatif (gambar, CSS, font), dan membangun DOM yang dapat dirender secara akurat oleh konverter. Melewatkan langkah ini atau menggunakan string biasa akan kehilangan resolusi sumber daya tersebut. + +## Langkah 2: Konfigurasikan opsi penyimpanan PDF (save html as pdf python) + +Aspose.HTML memungkinkan Anda menyesuaikan output PDF melalui `PdfSaveOptions`. Konfigurasi default sudah menghasilkan PDF berkualitas tinggi, tetapi Anda dapat menyesuaikan ukuran halaman, kompresi, atau metadata bila diperlukan. + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*Mengapa ini penting:* +Bahkan jika Anda mempertahankan default, membuat objek opsi membuat kode dapat diperluas. Perubahan di masa depan—seperti menambahkan kata sandi PDF—dapat ditambahkan tanpa merestrukturisasi skrip. + +## Langkah 3: Lakukan konversi (convert html to pdf python) + +Metode `Converter.convert` menghubungkan dokumen HTML dan opsi PDF, menulis hasil ke jalur file yang Anda tentukan. + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*Mengapa ini penting:* +`Converter.convert` mengeksekusi mesin rendering, merasterkan HTML/CSS menjadi vektor PDF. Ia menangani tata letak kompleks, font tersemat, dan grafik SVG secara otomatis—sesuatu yang sering terlewat oleh pustaka manual. + +### Output yang diharapkan + +Menjalankan skrip menghasilkan `sample.pdf` di direktori yang sama. Buka dengan penampil PDF apa pun; Anda akan melihat representasi yang setia dari `sample.html`, termasuk gaya, gambar, dan pemisah halaman. + +## Variasi umum dan kasus tepi + +| Situasi | Cara menanganinya | +|-----------|-----------------| +| **HTML adalah string, bukan file** | Gunakan `HTMLDocument.from_string(html_string)` alih-alih memuat dari jalur. | +| **Anda memerlukan PDF yang dilindungi kata sandi** | Setel `pdf_options.encryption.password = "yourPassword"` sebelum konversi. | +| **File HTML besar menyebabkan tekanan memori** | Aktifkan mode streaming: `pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`. | +| **Font khusus tidak ditemukan** | Daftarkan folder font: `pdf_options.fonts_folder = "path/to/fonts"`.| + +Variasi ini menggambarkan fleksibilitas API Aspose.HTML sambil mempertahankan alur kerja inti yang sama. + +## Skrip lengkap (generate pdf from html code) + +Berikut adalah program lengkap yang dapat dijalankan yang menggabungkan semua langkah. Salin‑tempel, ganti `YOUR_DIRECTORY` dengan folder yang sebenarnya, dan jalankan. + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +Jalankan dengan: + +```bash +python convert_html_to_pdf.py +``` + +Anda akan melihat pesan konfirmasi, dan PDF akan muncul di samping HTML sumber. + +## Tips pemecahan masalah (pro tip) + +* **Gambar atau CSS hilang** – Pastikan file HTML menggunakan URL absolut atau jalur relatifnya benar relatif terhadap `YOUR_DIRECTORY`. +* **Karakter Unicode muncul sebagai kotak** – Sematkan font yang diperlukan melalui `pdf_options.fonts_folder`. +* **Konversi lambat** – Aktifkan `pdf_options.use_system_fonts = False` untuk menghindari pemindaian katalog font sistem. + +## Kesimpulan + +Anda sekarang tahu **how to convert html to pdf** di Python dengan Aspose.HTML, mulai dari memuat file HTML hingga menyimpan PDF berkualitas tinggi. Pola yang sama memungkinkan Anda **create pdf from html file**, **generate pdf from html code**, dan **save html as pdf python** untuk alur kerja otomatis apa pun. + +Selanjutnya, Anda mungkin ingin menjelajahi: + +* Menambahkan watermark atau header/footer (kata kunci: *create pdf from html file*). +* Mengonversi URL langsung alih-alih file lokal (kata kunci: *convert html to pdf python*). +* Mengintegrasikan konverter ke dalam API Flask atau Django untuk menyajikan PDF sesuai permintaan. + +## Apa yang Harus Anda Pelajari Selanjutnya? + +Tutorial berikut mencakup topik terkait erat yang membangun teknik yang ditunjukkan dalam panduan ini. Setiap sumber mencakup contoh kode lengkap yang berfungsi dengan penjelasan langkah demi langkah untuk membantu Anda menguasai fitur API tambahan dan menjelajahi pendekatan implementasi alternatif dalam proyek Anda. + +- [Konversi HTML ke PDF dengan Aspose.HTML – Panduan Manipulasi Lengkap](/html/english/) +- [Cara Mengonversi HTML ke PDF Java – Menggunakan Aspose.HTML untuk Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Konversi HTML ke PDF di .NET dengan Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-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/indonesian/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/indonesian/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..cc2fb6eb7 --- /dev/null +++ b/html/indonesian/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-08-22 +description: Pelajari cara membuat markdown dari file HTML menggunakan Python. Panduan + langkah demi langkah ini menunjukkan cara mengonversi HTML ke markdown dengan pustaka + yang dapat diandalkan. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: id +lastmod: 2026-08-22 +og_description: Cara membuat markdown dari file HTML menggunakan Python. Ikuti panduan + ini untuk mengonversi HTML ke markdown dengan cepat menggunakan perpustakaan yang + terbukti. +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: Cara membuat markdown dari HTML di Python – panduan lengkap +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: Cara membuat markdown dari HTML di Python – panduan lengkap +url: /id/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara membuat markdown dari HTML di Python – panduan lengkap + +Jika Anda perlu mengetahui **cara membuat markdown** dari konten web yang ada, Anda dapat mengonversi file HTML ke markdown dengan hanya beberapa baris Python. Tutorial ini memandu Anda melalui **convert html to markdown** menggunakan **html to markdown library** khusus yang bekerja di Windows, macOS, dan Linux. + +Anda akan belajar cara menginstal library, memuat dokumen HTML, mengonfigurasi opsi markdown bergaya Git, dan menulis hasilnya ke disk. Pada akhir panduan, Anda dapat mengubah secara otomatis **html file to markdown** apa pun, yang berguna untuk generator situs statis, pipeline dokumentasi, atau proyek migrasi konten. + +## Prasyarat + +* Python 3.8 atau yang lebih baru terinstal (cek dengan `python --version`). +* Akses ke terminal atau command prompt. +* File HTML yang ingin Anda konversi (contoh menggunakan `sample.html`). +* Koneksi internet untuk menginstal paket yang diperlukan. + +Contoh kode menggunakan library **GroupDocs.Conversion for Python**, yang menyediakan kelas `HTMLDocument`, `MarkdownSaveOptions`, dan `Converter` seperti yang ditunjukkan nanti. Konsep yang sama berlaku untuk paket **html to markdown python** lainnya seperti `markdownify` atau `html2text`—satu‑satunya perbedaan adalah pernyataan import. + +## Cara membuat markdown – langkah 1: instal library html to markdown python + +Tugas pertama adalah menambahkan library konversi ke lingkungan Anda. Jalankan perintah pip berikut di terminal Anda: + +```bash +pip install groupdocs-conversion +``` + +> **Pro tip:** Gunakan lingkungan virtual (`python -m venv .venv`) untuk menjaga dependensi terisolasi dari instalasi Python global Anda. + +Menginstal paket memberi Anda akses ke kelas `HTMLDocument`, `MarkdownSaveOptions`, dan `Converter` yang diperlukan untuk proses konversi. + +## Konversi html ke markdown – langkah 2: muat dokumen HTML + +Setelah library terinstal, impor kelas yang diperlukan dan buat instance `HTMLDocument` yang menunjuk ke file sumber Anda. + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +Objek `HTMLDocument` membaca file dan menyiapkannya untuk konversi. Jika file tidak ada, konstruktor akan mengeluarkan `FileNotFoundError`, jadi pastikan path sudah benar. + +## html file to markdown – langkah 3: konfigurasi opsi markdown bergaya Git + +Banyak proyek lebih menyukai markdown bergaya Git karena menambahkan dukungan untuk tabel, daftar tugas, dan sintaks strikethrough. Library memungkinkan Anda mengaktifkan preset ini melalui properti `git` pada `MarkdownSaveOptions`. + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +Mengatur `git = True` memberi tahu konverter untuk menghasilkan sintaks yang dirender dengan benar oleh GitHub, GitLab, dan Bitbucket. Jika Anda membutuhkan markdown biasa, biarkan flag `False`. + +## Simpan output markdown – langkah 4: tulis hasil dengan library html to markdown + +Akhirnya, panggil metode `Converter.convert`, dengan memberikan dokumen sumber, objek opsi, dan path tujuan. + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +Setelah skrip selesai, `git_flavored.md` berisi representasi markdown dari `sample.html`. Anda dapat membuka file tersebut di editor apa pun atau mengirimkannya langsung ke generator situs statis. + +### Output yang diharapkan + +Dengan asumsi `sample.html` berisi heading sederhana dan paragraf, markdown yang dihasilkan mungkin terlihat seperti berikut: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +Jika HTML asli mencakup tabel, daftar, atau blok kode, preset bergaya Git akan mempertahankan struktur tersebut menggunakan sintaks markdown yang sesuai. + +## Memahami library html to markdown + +Library **GroupDocs.Conversion** mengabstraksi detail parsing dan rendering yang biasanya Anda **tangani secara manual**. Ia: + +* Mempertahankan styling berbasis CSS bila memungkinkan (misalnya, tebal, miring). +* Menghasilkan markdown yang bersih dan dapat dibaca tanpa entitas HTML tambahan. +* Mendukung konversi batch, sehingga Anda dapat mengulang pada direktori file HTML dengan kode yang sama. + +Jika Anda lebih menyukai solusi yang lebih ringan, paket `markdownify` menawarkan API fungsi tunggal: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +Kedua pendekatan mencapai tujuan akhir yang sama—**convert html to markdown**—tetapi opsi GroupDocs memberikan kontrol lebih besar atas format output dan mudah diintegrasikan ke dalam pipeline pemrosesan dokumen yang lebih besar. + +## Kesalahan umum dan cara menghindarinya + +| Masalah | Mengapa terjadi | Solusi | +|-------|---------------|-----| +| Gambar hilang dalam markdown | Konverter hanya menyertakan URL gambar; tidak menyematkan file. | Pastikan file gambar dapat diakses dari lokasi markdown atau salin bersama output. | +| Tautan relatif rusak | HTML mungkin menggunakan path relatif yang menjadi tidak valid setelah konversi. | Gunakan `md_options.base_path` (jika tersedia) untuk menulis ulang tautan, atau jalankan skrip post‑processing untuk menyesuaikan path. | +| Karakter Unicode menjadi ter-escape | Beberapa library meng-escape karakter non‑ASCII. | Atur `md_options.encode_utf8 = True` (atau flag setara) untuk mempertahankan karakter tetap. | + +Menangani masalah ini sejak awal menghemat waktu saat Anda memperluas konversi ke puluhan atau ratusan file. + +## Contoh lengkap yang dapat dijalankan + +Berikut adalah skrip mandiri yang dapat Anda salin, modifikasi, dan jalankan segera. Ganti `YOUR_DIRECTORY` dengan folder sebenarnya di mesin Anda. + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +Jalankan skrip: + +```bash +python markdown_from_html.py +``` + +Anda akan melihat pesan konfirmasi dan file `git_flavored.md` baru yang berisi versi markdown dari HTML Anda. + +## Kesimpulan + +Anda kini tahu **cara membuat markdown** dari sumber HTML menggunakan Python. Panduan ini mencakup instalasi **html to markdown library** yang handal, memuat **html file to markdown**, mengonfigurasi opsi **html to markdown python**, dan menyimpan hasilnya. Dengan dasar ini Anda dapat mengotomatisasi pipeline dokumentasi, memigrasi halaman web lama, atau menghasilkan konten untuk generator situs statis. + +**Langkah selanjutnya** + +* Jelajahi konversi batch dengan mengiterasi folder berisi file HTML. +* Sesuaikan `MarkdownSaveOptions` untuk mengontrol gaya heading, format daftar, atau penanganan gambar. +* Gabungkan skrip ini dengan alur kerja CI/CD untuk menjaga dokumentasi markdown Anda tetap terbaru secara otomatis. + +Selamat mengonversi! + +## Apa yang Harus Anda Pelajari Selanjutnya? + +Tutorial berikut mencakup topik yang terkait erat yang membangun teknik yang ditunjukkan dalam panduan ini. Setiap sumber mencakup contoh kode lengkap yang berfungsi dengan penjelasan langkah demi langkah untuk membantu Anda menguasai fitur API tambahan dan menjelajahi pendekatan implementasi alternatif dalam proyek Anda sendiri. + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/indonesian/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..40e85640e --- /dev/null +++ b/html/indonesian/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,187 @@ +--- +category: general +date: 2026-08-22 +description: Pelajari cara membuat markdown dari HTML di Python dengan skrip tiga + langkah sederhana. Termasuk opsi konversi dan tips ekspor. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: id +lastmod: 2026-08-22 +og_description: Buat markdown dari HTML dengan Python dalam hanya tiga baris. Panduan + ini menunjukkan konversi, opsi pemformatan, dan cara mengekspor HTML ke markdown + secara efisien. +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: Buat markdown dari HTML di Python – panduan langkah demi langkah +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: Cara membuat markdown dari HTML menggunakan Python +url: /id/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara membuat markdown dari HTML menggunakan Python + +Jika Anda perlu **membuat markdown dari HTML**, panduan singkat ini menunjukkan secara tepat cara melakukannya dengan Python. Anda akan melihat skrip tiga‑langkah yang jelas yang memuat file HTML, mengonfigurasi output Git‑flavored Markdown, dan menulis hasilnya ke disk. + +Mengonversi konten web ke markup ringan adalah tugas umum saat membangun situs statis, pipeline dokumentasi, atau notebook analisis data. Dalam tutorial ini kami juga akan membahas cara **mengonversi HTML ke markdown** dengan format opsional, menjawab pertanyaan **bagaimana mengonversi HTML** secara efisien, dan mendemonstrasikan alur kerja **mengekspor HTML ke markdown** menggunakan pustaka populer `groupdocs-conversion`. + +## Prasyarat + +Sebelum Anda mulai, pastikan Anda memiliki: + +* Python 3.8 atau lebih baru terinstal. +* Paket `groupdocs-conversion` (atau pustaka apa pun yang menyediakan `HTMLDocument`, `MarkdownSaveOptions`, dan `Converter`). Instal dengan: + +```bash +pip install groupdocs-conversion +``` + +* File HTML yang ingin Anda ubah, misalnya `sample.html` yang berada di folder yang Anda kontrol. + +Tidak ada dependensi sistem tambahan yang diperlukan, dan kode ini bekerja di Windows, macOS, dan Linux. + +## Langkah 1: Muat dokumen HTML sumber + +Operasi pertama adalah membuat objek `HTMLDocument` yang mewakili file sumber. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**Mengapa ini penting:** `HTMLDocument` mem-parsing file, menyelesaikan tautan relatif, dan menyiapkan DOM untuk konversi. Jika file tidak dapat ditemukan, konstruktor akan mengeluarkan `FileNotFoundError` yang jelas, sehingga Anda dapat menangani input yang hilang lebih awal. + +## Langkah 2: Konfigurasikan opsi penyimpanan Markdown (Git‑flavored) + +Markdown memiliki beberapa dialek. Git‑flavored Markdown (GFM) menambahkan tabel, daftar tugas, dan blok kode ber‑fence, yang sering diperlukan untuk file README atau halaman GitHub. + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**Mengapa ini penting:** Dengan secara eksplisit memilih `MarkdownFormatter.GIT`, Anda memastikan bahwa output mengikuti aturan yang sama seperti yang dirender oleh GitHub, menghilangkan kejutan ketika markdown ditampilkan di repositori. Jika Anda lebih suka Markdown biasa, ganti `MarkdownFormatter.GIT` dengan `MarkdownFormatter.DEFAULT`. + +## Langkah 3: Konversi dokumen HTML ke file Markdown + +Sekarang panggil mesin konversi dan tulis hasilnya ke jalur target. + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**Mengapa ini penting:** `Converter.convert` menangani pekerjaan berat—menerjemahkan tag HTML ke padanan markdown mereka, mempertahankan gambar (dengan menyalinnya ke folder output jika diperlukan), dan menerapkan formatter yang Anda pilih. Metode ini mengembalikan `None` bila berhasil, tetapi Anda dapat menangkap `ConversionException` untuk pelaporan error yang detail. + +### Output yang diharapkan + +Setelah menjalankan skrip, `sample.md` akan berisi sesuatu seperti: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +Markdown yang tepat mencerminkan struktur `sample.html`. Tabel, gambar, dan blok kode akan dikonversi sesuai aturan GFM. + +## Variasi umum dan kasus tepi + +| Situation | Recommended tweak | +|-----------|-------------------| +| **File HTML besar (>10 MB)** | Tingkatkan batas rekursi Python atau alirkan input menggunakan `HTMLDocument.open_stream()` jika pustaka mendukungnya. | +| **Gambar yang direferensikan dengan URL absolut** | Setel `md_options.embed_images = True` untuk menyematkan gambar sebagai data URI base‑64, atau pertahankan sebagai tautan untuk output yang lebih ringan. | +| **Anda membutuhkan Markdown biasa alih-alih GFM** | Ubah `md_options.formatter = MarkdownFormatter.DEFAULT`. | +| **Kelas CSS khusus harus diabaikan** | Gunakan `md_options.ignore_css_classes = ["unwanted-class"]`. | +| **Menjalankan di pipeline CI/CD** | Bungkus skrip dalam blok `try/except` dan keluar dengan status non‑zero saat gagal, sehingga pipeline dapat gagal dengan cepat. | + +### Tips pro + +Jika Anda berencana mengonversi banyak file secara batch, gunakan kembali satu instance `MarkdownSaveOptions` dan hanya ubah jalur input/output di dalam loop. Ini mengurangi overhead pembuatan objek dan mempercepat proses sekitar ~15 %. + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## Cara mengonversi HTML ke markdown dalam bahasa lain (catatan singkat) + +Meskipun tutorial ini berfokus pada **html to markdown python**, konsep yang sama berlaku untuk SDK Java, C#, atau JavaScript: buat objek dokumen, konfigurasikan formatter markdown, dan panggil konverter. Jika Anda pernah perlu **mengekspor HTML ke markdown** dari lingkungan non‑Python, cari kelas `HtmlDocument`, `MarkdownSaveOptions`, dan `Converter` yang setara dalam SDK khusus bahasa tersebut. + +## Kesimpulan + +Anda sekarang tahu cara **membuat markdown dari HTML** dengan skrip Python yang ringkas. Alur tiga‑langkah—memuat HTML, mengatur opsi Git‑flavored, dan menjalankan konversi—mencakup inti dari setiap alur kerja **convert html to markdown**. Dari sini Anda dapat: + +* Mengintegrasikan skrip ke dalam generator situs statis. +* Mengotomatiskan pembaruan dokumentasi dalam pipeline CI. +* Memperluas konversi dengan post‑processing khusus (mis., penulisan ulang tautan atau penyesuaian heading). + +Silakan bereksperimen dengan opsi sekunder—**bagaimana mengonversi html** dengan formatter berbeda, atau menyesuaikan pengaturan **export html to markdown** untuk gambar dan tabel. Selamat mengonversi! + +## Apa yang Harus Anda Pelajari Selanjutnya? + +Tutorial berikut mencakup topik yang sangat terkait yang membangun teknik yang ditunjukkan dalam panduan ini. Setiap sumber daya menyertakan contoh kode lengkap yang berfungsi dengan penjelasan langkah demi langkah untuk membantu Anda menguasai fitur API tambahan dan menjelajahi pendekatan implementasi alternatif dalam proyek Anda sendiri. + +- [Konversi HTML ke Markdown dalam Aspose.HTML untuk Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Konversi HTML ke Markdown di .NET dengan Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Konversi markdown ke html – Panduan Java dengan output PDF](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/indonesian/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..aa9eab758 --- /dev/null +++ b/html/indonesian/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,283 @@ +--- +category: general +date: 2026-08-22 +description: Buat PDF dari SVG menggunakan Python dalam hitungan menit. Pelajari cara + mengonversi SVG ke PDF, menyimpan SVG sebagai PDF, dan menggunakan konverter SVG + ke PDF yang handal. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: id +lastmod: 2026-08-22 +og_description: Buat PDF dari SVG dengan Python secara cepat. Panduan ini menunjukkan + cara mengonversi SVG ke PDF, menggunakan konverter SVG ke PDF, dan menyimpan SVG + sebagai PDF dalam satu skrip. +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: Buat PDF dari SVG dengan Python – tutorial langkah demi langkah +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: Cara membuat PDF dari SVG di Python – panduan lengkap +url: /id/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Membuat PDF dari SVG di Python – Panduan Lengkap + +Jika Anda perlu **create PDF from SVG** dengan cepat, tutorial ini menunjukkan secara tepat caranya. Kami akan memandu Anda mengonversi file SVG ke PDF menggunakan konverter SVG‑to‑PDF yang populer, sehingga Anda dapat menyematkan grafik vektor dalam laporan, faktur, atau e‑book tanpa meninggalkan kode Python Anda. + +Anda akan belajar cara **convert SVG to PDF**, mengelola skala, mempertahankan font, dan akhirnya **save SVG as PDF** dengan satu skrip yang dapat direproduksi. Tidak diperlukan alat baris perintah eksternal—hanya beberapa baris Python dan pustaka Aspose.SVG for Python. + +## Prasyarat + +Sebelum Anda memulai, pastikan Anda memiliki: + +| Persyaratan | Alasan | +|-------------|--------| +| Python 3.8+ | Pustaka ini menargetkan runtime Python modern. | +| `aspose.svg` package | Menyediakan `SVGDocument`, `PdfSaveOptions`, dan `Converter`. Instal dengan `pip install aspose-svg`. | +| Sebuah file SVG (`vector.svg`) | Grafik vektor sumber yang ingin Anda konversi. | +| Izin menulis ke folder output | Diperlukan untuk **save SVG as PDF**. | + +Anda dapat menginstal pustaka dengan: + +```bash +pip install aspose-svg +``` + +> **Pro tip:** Gunakan lingkungan virtual (`python -m venv venv`) untuk menjaga ketergantungan terisolasi. + +## Ikhtisar proses konversi + +Konversi terdiri dari tiga langkah sederhana: + +1. Muat **SVG document** dari disk. +2. Buat **PDF save options** (Anda dapat menyesuaikan ukuran halaman, DPI, dll.). +3. Panggil **converter** untuk menghasilkan file PDF. + +Bagian-bagian berikut memecah masing-masing langkah, menjelaskan *mengapa* kode ditulis seperti itu, dan menampilkan skrip lengkap yang dapat dijalankan. + +## Membuat PDF dari SVG menggunakan Aspose.SVG for Python + +Header H2 ini berisi kata kunci utama **create pdf from svg**, memenuhi persyaratan SEO. + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### Mengapa ini berhasil + +* **`SVGDocument`** mengurai XML SVG dan membangun representasi dalam memori yang dapat dirender oleh converter. +* **`PdfSaveOptions`** memungkinkan Anda menyesuaikan output PDF (ukuran halaman, kompresi, DPI). Nilai default sudah menghasilkan PDF yang akurat, itulah mengapa contoh ini langsung berfungsi. +* **`Converter.convert`** melakukan pekerjaan berat: ia meraster data vektor ke halaman PDF sambil mempertahankan kesetiaan vektor, sehingga PDF yang dihasilkan tetap tajam pada tingkat zoom apa pun. + +## Mengonversi SVG ke PDF dengan ukuran halaman khusus + +Jika Anda memerlukan ukuran halaman tertentu—misalnya, A4 untuk laporan yang dapat dicetak—sesuaikan `PdfSaveOptions`: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **Edge case:** Beberapa SVG mendefinisikan `viewBox` yang tidak cocok dengan dimensi PDF yang diinginkan. Menimpa `page_width`/`page_height` memastikan PDF sesuai dengan harapan tata letak Anda. + +## Menyimpan SVG sebagai PDF sambil mempertahankan font + +Ketika SVG Anda merujuk ke font eksternal, pastikan font tersebut dapat diakses oleh converter. Letakkan file `.ttf` di direktori yang sama dengan SVG atau tentukan folder font khusus: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +Converter menyematkan font langsung ke dalam PDF, menjamin bahwa konversi **svg file to pdf** terlihat identik di mesin mana pun. + +## Konversi batch: svg file to pdf untuk banyak file + +Seringkali Anda memiliki folder penuh aset SVG. Loop berikut menunjukkan **svg to pdf converter** yang efisien yang memproses setiap file `.svg` dalam sebuah direktori: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +Potongan kode ini menggambarkan alur kerja **convert svg to pdf** yang praktis yang dapat diintegrasikan ke dalam pipeline CI atau generator laporan otomatis. + +## Verifikasi output + +Setelah menjalankan skrip, buka PDF yang dihasilkan dengan penampil apa pun (Adobe Reader, Chrome, atau Preview). Anda harus melihat: + +* Bentuk vektor dirender dengan tajam pada tingkat zoom apa pun. +* Teks yang cocok dengan sumber SVG, dengan font yang disematkan jika Anda menyediakannya. +* Tidak ada artefak raster—karena konversi mempertahankan data vektor asli. + +Jika Anda menemukan font yang hilang, periksa kembali bahwa file font dapat dijangkau dan bahwa SVG merujuknya dengan benar (atribut `font-family`). + +## Kesalahan umum dan cara menghindarinya + +| Gejala | Penyebab kemungkinan | Solusi | +|---------|----------------------|--------| +| Halaman PDF kosong | SVG memiliki sumber daya eksternal (gambar, font) yang tidak ditemukan | Sediakan `fonts_folder` dan pastikan gambar yang terhubung berada di direktori yang sama atau gunakan URL absolut. | +| Teks muncul sebagai outline | Font tidak disematkan | Setel `pdf_options.embed_fonts = True` (default) dan verifikasi file font ada. | +| PDF lebih besar dari yang diharapkan | DPI tinggi atau gambar tidak terkompresi | Kurangi `pdf_options.dpi` atau aktifkan kompresi: `pdf_options.compress = True`. | +| Dimensi SVG terpotong | `viewBox` lebih besar dari halaman PDF | Sesuaikan `pdf_options.page_width`/`page_height` atau skala SVG melalui `svg_doc.set_viewport`. | + +## Contoh lengkap end‑to‑end + +Berikut adalah skrip mandiri yang mencakup penanganan kesalahan, logging, dan argumen baris perintah opsional. Simpan sebagai `svg_to_pdf.py` dan jalankan `python svg_to_pdf.py`. + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +Menjalankan skrip menghasilkan operasi **save SVG as PDF** yang dapat Anda sematkan dalam pipeline otomatisasi yang lebih besar. + +### Output konsol yang diharapkan + + + +## Apa yang Harus Anda Pelajari Selanjutnya? + +Tutorial berikut mencakup topik terkait yang membangun teknik yang ditunjukkan dalam panduan ini. Setiap sumber daya menyertakan contoh kode lengkap yang berfungsi dengan penjelasan langkah demi langkah untuk membantu Anda menguasai fitur API tambahan dan mengeksplorasi pendekatan implementasi alternatif dalam proyek Anda sendiri. + +- [Convert SVG to PDF in .NET with Aspose.HTML](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg to pdf java – Generate PDF from SVG with Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [Convierte SVG a PDF en .NET con Aspose.HTML](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/indonesian/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/indonesian/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..f1f3cc899 --- /dev/null +++ b/html/indonesian/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-08-22 +description: cara mengaktifkan streaming untuk konversi HTML ke PDF berukuran besar + di Python, mengurangi penggunaan memori dan mempercepat pembuatan output. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: id +lastmod: 2026-08-22 +og_description: cara mengaktifkan streaming untuk konversi HTML ke PDF berukuran besar + di Python, mengurangi penggunaan memori dan mempercepat proses menghasilkan output +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: Aktifkan streaming untuk konversi HTML‑ke‑PDF di Python +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: Cara mengaktifkan streaming saat mengonversi HTML ke PDF dalam Python +url: /id/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara mengaktifkan streaming saat mengonversi HTML ke PDF di Python + +Jika Anda perlu **cara mengaktifkan streaming** selama konversi HTML‑to‑PDF yang besar, panduan ini menunjukkan langkah‑langkah tepatnya. Dengan mengaktifkan streaming Anda menghindari memuat seluruh dokumen ke dalam memori, yang penting saat Anda mengonversi HTML ke PDF untuk file besar. + +Anda akan belajar cara mengaktifkan streaming, mengonversi HTML ke PDF dengan Python, dan menangani kasus tepi seperti pekerjaan large HTML to PDF. Solusi ini bekerja dengan library populer `groupdocs-conversion` (atau serupa), tetapi konsepnya berlaku untuk konverter apa pun yang mendukung streaming. + +![Diagram yang menunjukkan konversi streaming dari HTML ke PDF menggunakan Python](streaming-diagram.png) + +## Apa yang Anda butuhkan + +- Python 3.9 atau lebih baru +- `groupdocs-conversion` (atau library apa pun yang menawarkan `PdfSaveOptions` dengan flag streaming) +- File HTML yang ingin Anda ubah menjadi PDF (contoh menggunakan file besar bernama `large.html`) + +Memiliki prasyarat ini memastikan kode berjalan tanpa konfigurasi tambahan. + +## Langkah 1: Instal library konversi + +Pertama, instal paket Python yang menyediakan `HTMLDocument`, `PdfSaveOptions`, dan `Converter`. Pilihan paling umum adalah SDK **GroupDocs.Conversion**: + +```bash +pip install groupdocs-conversion +``` + +> **Pro tip:** Gunakan lingkungan virtual (`python -m venv .venv`) untuk menjaga ketergantungan terisolasi. + +## Langkah 2: Muat dokumen HTML yang ingin Anda konversi + +Memuat HTML sumber sangat sederhana. Kelas `HTMLDocument` membaca file dari disk dan menyiapkannya untuk konversi. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +Objek `HTMLDocument` mewakili seluruh markup HTML, termasuk sumber eksternal seperti gambar dan CSS. Ini adalah titik awal untuk setiap operasi **convert html to pdf**. + +## Langkah 3: Buat opsi penyimpanan PDF dan aktifkan streaming + +Mengaktifkan streaming adalah inti dari **cara mengaktifkan streaming**. Alih-alih menampung seluruh PDF di memori, konverter menulis potongan secara langsung ke file output. + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +Ketika `enable_streaming` diatur ke `True`, library menggunakan pendekatan write‑through yang secara dramatis mengurangi konsumsi RAM—penting untuk skenario **large html to pdf**. + +## Langkah 4: Konversi dokumen HTML ke PDF menggunakan opsi yang dikonfigurasi + +Sekarang panggil konversi. Metode `Converter.convert` menerima dokumen sumber, objek opsi, dan jalur tujuan. + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +Setelah pemanggilan ini selesai, `large.pdf` berisi PDF yang dirender, dihasilkan sambil streaming data ke disk. Seluruh proses biasanya selesai lebih cepat dibandingkan konversi non‑streaming karena sistem operasi dapat menulis data ke sistem file secara bertahap. + +### Output yang diharapkan + +Menjalankan skrip menghasilkan file PDF yang ukurannya sesuai dengan konten HTML asli. Anda dapat memverifikasi hasilnya dengan penampil PDF apa pun: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## Mengapa streaming penting untuk konversi HTML ke PDF yang besar + +Ketika Anda **convert html to pdf** tanpa streaming, library pertama-tama membangun seluruh PDF di RAM sebelum menulisnya ke disk. Untuk halaman sederhana ini cukup, tetapi pekerjaan **large html to pdf** (mis., laporan HTML 10‑MB dengan banyak gambar) dapat melampaui batas memori fungsi serverless tipikal atau kontainer dengan memori rendah. + +Mengaktifkan streaming menyelesaikan tiga masalah: + +1. **Efisiensi memori** – hanya buffer kecil yang disimpan di RAM. +2. **Performa yang terasa lebih cepat** – file muncul di disk sementara masih sedang dihasilkan, memungkinkan proses hilir mulai membacanya lebih awal. +3. **Skalabilitas** – Anda dapat menjalankan banyak konversi secara paralel tanpa menghabiskan memori host. + +## Kesalahan umum dan cara menghindarinya + +| Gejala | Penyebab kemungkinan | Perbaikan | +|---------|----------------------|----------| +| `MemoryError` during conversion | Streaming flag not set or library version too old | Ensure `pdf_opts.enable_streaming = True` and upgrade to the latest SDK (`pip install --upgrade groupdocs-conversion`). | +| Missing images in the PDF | Relative image paths cannot be resolved | Pass the base directory to `HTMLDocument` or embed images as base64. | +| Output PDF is blank | HTML file not found or unreadable | Verify the path `"YOUR_DIRECTORY/large.html"` and check file permissions. | +| Conversion hangs indefinitely | Large external resources (fonts, CSS) block rendering | Pre‑download external assets or use a headless browser to inline them. | + +### Kasus tepi: Mengonversi HTML dari string + +Jika konten HTML Anda berada di memori alih-alih file, Anda masih dapat **cara mengaktifkan streaming** dengan membungkus string dalam konstruktor `HTMLDocument` yang menerima HTML mentah: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +Perilaku streaming tetap sama karena SDK menulis PDF secara bertahap. + +## Skrip lengkap yang dapat Anda salin‑tempel + +Berikut adalah contoh lengkap, siap dijalankan, yang menggabungkan semua langkah yang dibahas. Ganti `YOUR_DIRECTORY` dengan jalur sebenarnya di mesin Anda. + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +Menjalankan `python full_example.py` akan menghasilkan `large.pdf` menggunakan pendekatan streaming. + +## Ringkasan + +- Anda sekarang tahu **cara mengaktifkan streaming** untuk konversi HTML‑to‑PDF di Python. +- Skrip tersebut menunjukkan alur kerja lengkap **convert html to pdf**, menangani beban kerja **large html to pdf** secara efisien. +- Dengan mengatur `PdfSaveOptions.enable_streaming = True`, konverter menulis output secara progresif, yang merupakan cara yang direkomendasikan untuk **stream html to pdf**. + +## Apa yang dapat Anda jelajahi selanjutnya + +- Library **HTML to PDF Python** yang mendukung CSS3 dan JavaScript (mis., `WeasyPrint`, `pdfkit`). +- Menambahkan perlindungan kata sandi atau enkripsi ke PDF yang dihasilkan melalui pengaturan tambahan `PdfSaveOptions`. +- Mempersingkat beberapa konversi secara paralel dalam sistem antrian (Celery, RabbitMQ) sambil menjaga penggunaan memori tetap rendah. + +Silakan bereksperimen dengan berbagai sumber HTML, ukuran halaman, dan metadata PDF. Streaming memungkinkan menangani dokumen yang lebih besar tanpa mengorbankan kinerja. Selamat coding! + +## Apa yang Harus Anda Pelajari Selanjutnya? + +Tutorial berikut mencakup topik yang terkait erat yang membangun teknik yang ditunjukkan dalam panduan ini. Setiap sumber mencakup contoh kode lengkap yang berfungsi dengan penjelasan langkah demi langkah untuk membantu Anda menguasai fitur API tambahan dan menjelajahi pendekatan implementasi alternatif dalam proyek Anda. + +- [Cara Mengonversi HTML ke PDF Java – Menggunakan Aspose.HTML untuk Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Buat Fixed Thread Pool untuk Konversi HTML ke PDF Paralel](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [Cara Mengaktifkan JavaScript di Aspose HTML – Muat HTML & Dapatkan Teks](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/indonesian/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..db6722d8a --- /dev/null +++ b/html/indonesian/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-08-22 +description: Cara mengekspor tautan dari HTML dan mengonversinya menjadi file markdown, + termasuk paragraf. Panduan langkah demi langkah untuk konversi HTML ke markdown. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: id +lastmod: 2026-08-22 +og_description: Cara mengekspor tautan dari dokumen HTML dan mengonversinya menjadi + file markdown, termasuk paragraf. Ikuti tutorial lengkap ini untuk konversi HTML + ke markdown yang dapat diandalkan. +og_image_alt: How to export links while converting HTML to Markdown +og_title: Cara mengekspor tautan saat mengonversi HTML ke Markdown – panduan langkah + demi langkah +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: Cara mengekspor tautan saat mengonversi HTML ke Markdown +url: /id/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara mengekspor tautan saat mengonversi HTML ke Markdown + +Jika Anda perlu **how to export links** dari halaman HTML dan mengubah hasilnya menjadi **html to markdown file** yang bersih, panduan ini menunjukkan langkah‑langkah tepatnya. Anda juga akan menemukan **how to extract paragraphs** sehingga output markdown berisi konten utama yang Anda inginkan. Pada akhir tutorial Anda dapat menjawab pertanyaan “**how to convert html** to markdown” dengan skrip siap‑jalankan. + +Mengekspor tautan dan mengekstrak paragraf adalah tugas umum saat Anda memigrasi konten web ke situs statis, portal dokumentasi, atau back‑end CMS headless. Pendekatan di bawah ini bekerja dengan GroupDocs Conversion SDK untuk Python, tetapi konsepnya berlaku untuk perpustakaan apa pun yang memungkinkan Anda mengonfigurasi fitur ekspor. + +--- + +## Apa yang Anda butuhkan + +- Python 3.9 atau lebih baru +- paket `groupdocs-conversion` (pasang dengan `pip install groupdocs-conversion`) +- File HTML yang ingin Anda proses (misalnya, `input.html`) +- Familiaritas dasar dengan scripting Python + +--- + +## Cara mengekspor tautan dengan konversi HTML ke Markdown + +Langkah utama pertama adalah mengonfigurasi konversi sehingga hanya fitur yang diinginkan—tautan dan paragraf—yang ditulis ke **html to markdown file**. SDK memungkinkan Anda mengatur bitmask nilai `MarkdownFeature`; kami menggabungkan `LINKS` dan `PARAGRAPHS` untuk menjaga output tetap fokus. + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### Mengapa ini berhasil + +- **`HTMLDocument`** mengurai file asli dan membangun DOM yang dapat dilalui konverter. +- **`MarkdownSaveOptions`** memberi Anda kontrol halus atas apa yang ditulis SDK. Menetapkan `features` ke `LINKS | PARAGRAPHS` memberi tahu mesin untuk mengabaikan gambar, tabel, atau skrip, yang mengurangi kebisingan dalam **html to markdown file** akhir. +- **`Converter.convert`** melakukan pekerjaan berat. Ia menghormati mask fitur, mengekstrak tag anchor (``) dan tag paragraf (`

`), dan menuliskannya menggunakan sintaks Markdown standar. + +--- + +## Cara mengonversi HTML ke Markdown dengan konten lengkap (opsional) + +Jika Anda kemudian memutuskan bahwa Anda membutuhkan seluruh halaman—bukan hanya tautan dan paragraf—cukup sesuaikan mask fitur: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +Menjalankan konversi yang sama sekarang menghasilkan **html to markdown file** lengkap yang mencerminkan tata letak asli. Ini menunjukkan **how to convert html** secara fleksibel: Anda mengontrol output dengan mengaktifkan atau menonaktifkan flag fitur. + +--- + +## Cara mengekstrak paragraf saja + +Terkadang Anda hanya peduli pada isi teks artikel, bukan tautan. Anda dapat mengisolasi paragraf dengan mengatur mask menjadi `PARAGRAPHS` saja: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +Markdown yang dihasilkan akan berisi teks bersih, terbungkus baris tanpa markup tautan apa pun. Potongan kode ini menjawab pertanyaan **how to extract paragraphs** dari sumber HTML. + +--- + +## Kesalahan umum dan cara menghindarinya + +| Issue | Why it happens | Fix | +|-------|----------------|-----| +| Empty output file | The source HTML contains no `` or `

` tags that match the selected features. | Verify the HTML structure or broaden the feature mask (e.g., include `HEADINGS`). | +| Encoding problems | The HTML uses a non‑UTF‑8 charset and the SDK reads it incorrectly. | Pass an explicit encoding to `HTMLDocument`, e.g., `HTMLDocument(path, encoding="iso-8859-1")`. | +| Over‑writing existing markdown | Running the script multiple times replaces the previous file. | Add a timestamp to the output filename or check `os.path.exists` before writing. | + +**Pro tip:** Saat memproses banyak file dalam folder, bungkus logika konversi dalam loop dan catat setiap hasil. Ini memberi Anda jejak audit yang jelas dan memudahkan melanjutkan setelah kegagalan. + +--- + +## Skrip lengkap yang dapat Anda salin‑tempel + +Berikut adalah file Python mandiri (`convert_links_paragraphs.py`) yang dapat Anda jalankan langsung. File ini menyertakan parsing argumen sehingga Anda dapat menentukan jalur input dan output tanpa mengedit kode. + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**Cara menjalankan** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +Perintah di atas menunjukkan **how to export links** dan **how to extract paragraphs** dalam satu panggilan. Hilangkan `--links` atau `--paragraphs` untuk menyesuaikan output sesuai kebutuhan Anda. + +--- + +## Verifikasi – seperti apa outputnya + +Dengan HTML sederhana berikut (`input.html`): + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +Menjalankan skrip dengan kedua flag menghasilkan `links_and_paragraphs.md`: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +Anda dapat melihat bahwa hanya dua paragraf dan hyperlink yang ada—tepat apa yang Anda minta ketika mencari **how to export links** sambil melakukan **convert html to markdown**. + +--- + +## Langkah selanjutnya dan topik terkait + +- **How to convert html to markdown** dengan gambar: tambahkan `MarkdownFeature.IMAGES` ke mask. +- **How to extract paragraphs** dan kemudian post‑process + +## Apa yang Harus Anda Pelajari Selanjutnya? + +Tutorial berikut mencakup topik yang sangat terkait yang membangun teknik yang ditunjukkan dalam panduan ini. Setiap sumber mencakup contoh kode lengkap yang berfungsi dengan penjelasan langkah demi langkah untuk membantu Anda menguasai fitur API tambahan dan mengeksplorasi pendekatan implementasi alternatif dalam proyek Anda sendiri. + +- [How to Set Offset When Converting HTML to Markdown in Java](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown to HTML Java - Convert with Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [Convert HTML to Markdown – Complete C# Guide](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/indonesian/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..9378aa482 --- /dev/null +++ b/html/indonesian/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,280 @@ +--- +category: general +date: 2026-08-22 +description: Cara memuat HTML dengan Aspose.HTML di Python – batasi kedalaman sumber + daya dan siapkan dokumen untuk konversi atau penyuntingan. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: id +lastmod: 2026-08-22 +og_description: Cara memuat HTML dengan Aspose.HTML di Python, mengatur kedalaman + penanganan sumber daya, dan menyiapkan dokumen untuk konversi atau penyuntingan. +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: Cara memuat HTML dengan Aspose.HTML – Panduan Python +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: Cara memuat HTML dengan Aspose.HTML di Python +url: /id/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara memuat HTML dengan Aspose.HTML di Python + +Jika Anda perlu **cara memuat html** dengan cepat dan aman dalam proyek Python, panduan ini menunjukkan langkah‑langkah tepatnya. Pada akhir dua kalimat pertama Anda akan mengetahui cara mengonfigurasi penanganan sumber daya, memuat file, dan menyiapkan proses untuk **HTML conversion** atau pengeditan lebih lanjut. + +Memuat halaman yang besar atau kompleks sering membuat parser yang sederhana gagal karena sumber daya eksternal (gambar, skrip, CSS) dapat menyebabkan rekursi mendalam atau penundaan jaringan. Tutorial ini mencakup pola yang kuat menggunakan **Aspose.HTML for Python**, mendemonstrasikan **HTMLDocument class**, dan menjelaskan mengapa pengaturan **max_handling_depth** penting. + +Anda akan melangkah melalui: + +* Menginstal paket Aspose.HTML +* Membuat instance `ResourceHandlingOptions` dan membatasi kedalaman +* Menggunakan kelas `HTMLDocument` untuk memuat halaman +* Menyiapkan dokumen untuk konversi ke PDF, PNG, atau manipulasi lebih lanjut + +Tidak diperlukan pengalaman sebelumnya dengan Aspose.HTML, hanya pengetahuan dasar Python. + +--- + +## Cara memuat HTML dengan Aspose.HTML di Python + +Inti solusi adalah pola tiga langkah yang menggabungkan **ResourceHandlingOptions** dengan **HTMLDocument class**. Membatasi kedalaman penanganan mencegah panggilan jaringan yang tidak terkendali ketika sebuah halaman merujuk ke banyak sumber daya bersarang. + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### Mengapa ini berhasil + +* **`ResourceHandlingOptions`** memberi tahu parser berapa tingkat sumber daya eksternal yang boleh diikuti. Menetapkan `max_handling_depth = 3` menghentikan pemuat setelah tiga lompatan, yang cukup untuk kebanyakan situs namun melindungi dari loop tak terbatas. +* **`HTMLDocument`** membaca file, menerapkan opsi, dan membangun DOM di memori yang dapat Anda query, modifikasi, atau render. +* Potongan konversi opsional menunjukkan bagaimana dokumen yang dimuat terintegrasi dengan fitur **HTML conversion**, seperti menyimpan ke PDF. + +--- + +## Memahami ResourceHandlingOptions + +`ResourceHandlingOptions` merupakan bagian dari **Aspose.HTML for Python** dan memberi Anda kontrol detail atas aktivitas jaringan. + +| Properti | Tujuan | Nilai tipikal | +|-------------------------|----------------------------------------------------|---------------| +| `max_handling_depth` | Kedalaman rekursi maksimum untuk sumber daya yang ditautkan | `3` (default) | +| `allow_external_resources` | Apakah mengunduh CSS, JS, gambar eksternal | `True` | +| `timeout` | Batas waktu jaringan per permintaan (detik) | `30` | + +**Tips praktis:** Jika Anda tahu halaman target hanya merujuk ke aset lokal, setel `allow_external_resources = False` untuk mempercepat pemuatan dan menghindari panggilan HTTP yang tidak perlu. + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## Menggunakan kelas HTMLDocument + +**HTMLDocument class** adalah titik masuk untuk semua operasi Aspose.HTML. Setelah diinstansiasi, Anda dapat: + +* Mengakses DOM melalui `doc.root` +* Menanyakan elemen dengan selector CSS (`doc.query_selector_all("img")`) +* Merender halaman ke format raster (`doc.save("page.png")`) +* Mengonversi ke PDF (`doc.save("page.pdf", PDFSaveOptions())`) + +Berikut adalah potongan kode singkat yang mengekstrak semua atribut `src` gambar setelah memuat: + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**Mengapa Anda mungkin memerlukan ini:** Saat melakukan **HTML conversion**, Anda sering harus menyesuaikan atau mengganti URL gambar sebelum merender ke format lain. Mengakses DOM secara langsung memberi Anda fleksibilitas tersebut. + +--- + +## Langkah selanjutnya setelah memuat HTML + +Sekarang dokumen berada di memori, Anda dapat memilih dari beberapa alur kerja umum: + +1. **Konversi ke PDF** – Ideal untuk pengarsipan atau pencetakan. +2. **Render ke PNG/JPEG** – Berguna untuk thumbnail atau pratinjau visual. +3. **Edit DOM** – Menyisipkan, menghapus, atau memodifikasi elemen sebelum menyimpan. +4. **Ekstrak teks** – Mengambil konten teks biasa untuk pengindeksan atau analisis. + +### Contoh: Konversi ke PDF dengan ukuran halaman khusus + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**Output yang diharapkan:** Sebuah file bernama `big_page.pdf` muncul di direktori kerja, berisi HTML yang dirender dengan semua sumber daya yang diizinkan diterapkan. Jika Anda mengatur `max_handling_depth` menjadi 3, hanya sumber daya hingga tiga tingkat kedalaman yang disematkan, sehingga ukuran PDF tetap wajar. + +--- + +## Kesalahan umum dan cara menghindarinya + +| Gejala | Penyebab | Solusi | +|--------------------------------------|--------------------------------------------|-----| +| Missing images in the rendered PDF | `allow_external_resources` set to `False` | Enable external resources or embed images locally | +| `TimeoutError` during load | Network latency exceeds `timeout` | Increase `rh_opts.timeout` or pre‑download assets | +| Unexpected CSS styling | Linked stylesheet not loaded due to depth limit | Raise `max_handling_depth` or manually add required CSS | +| `UnicodeDecodeError` on non‑UTF8 files| HTML file uses a different encoding | Pass `encoding="windows-1252"` when creating `HTMLDocument` | + +--- + +## Contoh lengkap yang dapat dijalankan + +Berikut adalah skrip mandiri yang dapat Anda salin‑tempel ke dalam file bernama `load_html_demo.py`. Skrip ini mencakup instruksi instalasi, penanganan error, dan langkah verifikasi akhir. + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +### Menjalankan skrip + +```bash +python load_html_demo.py +``` + +Anda akan melihat output konsol yang mengonfirmasi pemuatan, daftar URL gambar, dan pesan sukses untuk konversi PDF. `big_page.pdf` yang dihasilkan akan mencerminkan konten HTML yang dibatasi oleh **max_handling_depth** yang dikonfigurasi. + +--- + +## Kesimpulan + +Dalam tutorial ini kami membahas **cara memuat html** menggunakan **Aspose.HTML for Python**, mengonfigurasi **ResourceHandlingOptions** untuk mengontrol `max_handling_depth`, dan mendemonstrasikan tindakan praktis setelah pemuatan seperti ekstraksi gambar dan konversi PDF. Dengan mengikuti langkah‑langkah tersebut, Anda kini memiliki fondasi yang dapat diandalkan untuk alur kerja **HTML conversion** apa pun, baik Anda membangun web‑scraper, layanan pengarsipan dokumen, atau generator laporan dinamis. + +**Langkah selanjutnya** + +* Bereksperimen dengan nilai `max_handling_depth` yang berbeda untuk menyeimbangkan kelengkapan vs. kinerja. +* Coba mengonversi dokumen ke + +## Apa yang Harus Anda Pelajari Selanjutnya? + +Tutorial berikut mencakup topik yang terkait erat yang membangun pada teknik yang ditunjukkan dalam panduan ini. Setiap sumber menyertakan contoh kode lengkap yang berfungsi dengan penjelasan langkah demi langkah untuk membantu Anda menguasai fitur API tambahan dan menjelajahi pendekatan implementasi alternatif dalam proyek Anda sendiri. + +- [How to Parse HTML Java – Load, Query & Count Elements](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [How to Edit HTML Document Tree in Aspose.HTML for Java](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [Handle Document Load Events in Aspose.HTML for Java](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/italian/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..32c615d62 --- /dev/null +++ b/html/italian/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,194 @@ +--- +category: general +date: 2026-08-22 +description: Come convertire HTML in PDF in Python usando Aspose.HTML – impara a creare + PDF da file HTML, generare PDF da codice HTML e salvare HTML come PDF in Python + rapidamente. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: it +lastmod: 2026-08-22 +og_description: Come convertire HTML in PDF in Python con Aspose.HTML. Questo tutorial + ti mostra come creare un PDF da un file HTML, generare un PDF dal codice HTML e + salvare HTML come PDF in Python. +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: Come convertire HTML in PDF con Python – guida passo‑passo +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: Come convertire HTML in PDF in Python con Aspose.HTML +url: /it/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come convertire HTML in PDF in Python con Aspose.HTML + +Se hai bisogno di **how to convert html to pdf** rapidamente, questa guida ti mostra una soluzione completa, pronta‑all'uso. Vedrai come **create pdf from html file**, **generate pdf from html code**, e **save html as pdf python** usando la semplice API di Aspose.HTML. + +Passeremo in rassegna ogni passaggio, spiegheremo perché ogni riga è importante e copriremo le insidie comuni così potrai adattare il codice a qualsiasi progetto. Nessun tool esterno, solo poche righe di Python. + +## Prerequisiti + +* Python 3.8 o versioni successive installato. +* Una licenza attiva di Aspose.HTML per Python (o una chiave di valutazione gratuita). +* Il pacchetto `aspose.html` installato: + +```bash +pip install aspose-html +``` + +Avere questi elementi in ordine garantisce che la conversione venga eseguita senza errori di runtime. + +## Passo 1: Caricare il documento HTML (create pdf from html file) + +Il primo compito è leggere l'HTML di origine. Aspose.HTML rappresenta un documento con la classe `HTMLDocument`, che astrae I/O di file, recupero di rete e parsing del DOM. + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*Perché è importante:* +`HTMLDocument` carica l'HTML, risolve le risorse relative (immagini, CSS, font) e costruisce un DOM che il convertitore può renderizzare accuratamente. Saltare questo passaggio o usare una semplice stringa farebbe perdere quelle risoluzioni delle risorse. + +## Passo 2: Configurare le opzioni di salvataggio PDF (save html as pdf python) + +Aspose.HTML ti consente di perfezionare l'output PDF tramite `PdfSaveOptions`. La configurazione predefinita produce già un PDF di alta qualità, ma puoi regolare la dimensione della pagina, la compressione o i metadati se necessario. + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*Perché è importante:* +Anche se mantieni i valori predefiniti, creare un oggetto opzioni rende il codice estensibile. Modifiche future — come l'inserimento di una password PDF — possono essere aggiunte senza ristrutturare lo script. + +## Passo 3: Eseguire la conversione (convert html to pdf python) + +Il metodo `Converter.convert` collega il documento HTML e le opzioni PDF, scrivendo il risultato nel percorso file che specifichi. + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*Perché è importante:* +`Converter.convert` esegue il motore di rendering, rasterizzando HTML/CSS in vettori PDF. Gestisce layout complessi, font incorporati e grafica SVG automaticamente — qualcosa che le librerie manuali spesso non riescono a fare. + +### Output previsto + +Eseguendo lo script si genera `sample.pdf` nella stessa directory. Aprilo con qualsiasi visualizzatore PDF; dovresti vedere una fedele rappresentazione di `sample.html`, inclusi stili, immagini e interruzioni di pagina. + +## Varianti comuni e casi limite + +| Situazione | Come gestirla | +|-----------|-----------------| +| **HTML is a string, not a file** | Usa `HTMLDocument.from_string(html_string)` invece di caricare da un percorso. | +| **You need a password‑protected PDF** | Imposta `pdf_options.encryption.password = "yourPassword"` prima della conversione. | +| **Large HTML files cause memory pressure** | Abilita la modalità streaming: `pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`. | +| **Custom fonts are missing** | Registra la cartella dei font: `pdf_options.fonts_folder = "path/to/fonts"`.| + +Queste varianti illustrano la flessibilità dell'API Aspose.HTML mantenendo invariato il flusso di lavoro principale. + +## Script completo (generate pdf from html code) + +Di seguito trovi il programma completo, eseguibile, che incorpora tutti i passaggi. Copialo e incollalo, sostituisci `YOUR_DIRECTORY` con una cartella reale, ed esegui. + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +Eseguilo con: + +```bash +python convert_html_to_pdf.py +``` + +Vedrai il messaggio di conferma e il PDF apparirà accanto all'HTML di origine. + +## Suggerimenti per la risoluzione dei problemi (pro tip) + +* **Missing images or CSS** – Assicurati che il file HTML utilizzi URL assoluti o che i percorsi relativi siano corretti rispetto a `YOUR_DIRECTORY`. +* **Unicode characters appear as squares** – Incorpora i font necessari tramite `pdf_options.fonts_folder`. +* **Conversion is slow** – Attiva `pdf_options.use_system_fonts = False` per evitare la scansione del catalogo dei font di sistema. + +## Conclusione + +Ora sai **how to convert html to pdf** in Python con Aspose.HTML, dal caricamento di un file HTML al salvataggio di un PDF ad alta qualità. Lo stesso schema ti consente di **create pdf from html file**, **generate pdf from html code**, e **save html as pdf python** per qualsiasi flusso di lavoro di automazione. + +Successivamente, potresti esplorare: + +* Aggiungere filigrane o intestazioni/piè di pagina (keyword: *create pdf from html file*). +* Convertire un URL live invece di un file locale (keyword: *convert html to pdf python*). +* Integrare il convertitore in un'API Flask o Django per servire PDF su richiesta. + +Sentiti libero di sperimentare con le opzioni, e buona generazione di PDF! + +## Cosa dovresti imparare dopo? + +I seguenti tutorial coprono argomenti strettamente correlati che si basano sulle tecniche dimostrate in questa guida. Ogni risorsa include esempi di codice completi e funzionanti con spiegazioni passo‑passo per aiutarti a padroneggiare funzionalità API aggiuntive ed esplorare approcci di implementazione alternativi nei tuoi progetti. + +- [Convert HTML to PDF with Aspose.HTML – Full Manipulation Guide](/html/english/) +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Convert HTML to PDF in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-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/italian/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/italian/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..af237cb81 --- /dev/null +++ b/html/italian/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-08-22 +description: Scopri come creare markdown da un file HTML usando Python. Questa guida + passo‑passo mostra come convertire HTML in markdown con una libreria affidabile. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: it +lastmod: 2026-08-22 +og_description: Come creare markdown da un file HTML usando Python. Segui questa guida + per convertire HTML in markdown rapidamente con una libreria collaudata. +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: Come creare markdown da HTML in Python – guida completa +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: Come creare markdown da HTML in Python – guida completa +url: /it/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come creare markdown da HTML in Python – guida completa + +Se hai bisogno di sapere **how to create markdown** da contenuti web esistenti, puoi convertire un file HTML in markdown con poche righe di Python. Questo tutorial ti guida attraverso **convert html to markdown** usando una **html to markdown library** dedicata che funziona su Windows, macOS e Linux. + +Imparerai come installare la libreria, caricare un documento HTML, configurare le opzioni di markdown in stile Git e scrivere il risultato su disco. Alla fine della guida potrai trasformare automaticamente qualsiasi **html file to markdown**, utile per generatori di siti statici, pipeline di documentazione o progetti di migrazione di contenuti. + +## Prerequisiti + +* Python 3.8 o versioni successive installato (verifica con `python --version`). +* Accesso a un terminale o prompt dei comandi. +* Un file HTML che desideri convertire (l'esempio usa `sample.html`). +* Connessione a Internet per installare il pacchetto richiesto. + +L'esempio di codice utilizza la libreria **GroupDocs.Conversion for Python**, che fornisce le classi `HTMLDocument`, `MarkdownSaveOptions` e `Converter` mostrate più avanti. Gli stessi concetti si applicano ad altri pacchetti **html to markdown python** come `markdownify` o `html2text` — l'unica differenza sono le istruzioni di import. + +## Come creare markdown – passo 1: installare la libreria html to markdown python + +Il primo compito è aggiungere la libreria di conversione al tuo ambiente. Esegui il seguente comando pip nel tuo terminale: + +```bash +pip install groupdocs-conversion +``` + +> **Pro tip:** Usa un ambiente virtuale (`python -m venv .venv`) per mantenere le dipendenze isolate dalla tua installazione globale di Python. + +L'installazione del pacchetto ti dà accesso alle classi `HTMLDocument`, `MarkdownSaveOptions` e `Converter` necessarie per il processo di conversione. + +## Convert html to markdown – passo 2: caricare il documento HTML + +Dopo che la libreria è installata, importa le classi necessarie e crea un'istanza `HTMLDocument` che punta al tuo file sorgente. + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +L'oggetto `HTMLDocument` legge il file e lo prepara per la conversione. Se il file non esiste, il costruttore solleva un `FileNotFoundError`, quindi assicurati che il percorso sia corretto. + +## html file to markdown – passo 3: configurare le opzioni di markdown in stile Git + +Molti progetti preferiscono il markdown in stile Git perché aggiunge il supporto per tabelle, elenchi di attività e sintassi di barratura. La libreria ti consente di abilitare questo preset tramite la proprietà `git` su `MarkdownSaveOptions`. + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +Impostare `git = True` indica al convertitore di generare sintassi che GitHub, GitLab e Bitbucket renderizzano correttamente. Se ti serve markdown semplice, lascia il flag `False`. + +## Salva l'output markdown – passo 4: scrivi il risultato con la libreria html to markdown + +Infine, invoca il metodo `Converter.convert`, passando il documento sorgente, l'oggetto delle opzioni e il percorso di destinazione. + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +Quando lo script termina, `git_flavored.md` contiene la rappresentazione markdown di `sample.html`. Puoi aprire il file in qualsiasi editor o alimentarlo direttamente a un generatore di siti statici. + +### Output previsto + +Supponendo che `sample.html` contenga un semplice titolo e un paragrafo, il markdown generato potrebbe apparire così: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +Se l'HTML originale include tabelle, elenchi o blocchi di codice, il preset in stile Git preserverà quelle strutture usando la sintassi markdown appropriata. + +## Comprendere la libreria html to markdown + +La libreria **GroupDocs.Conversion** astrae i dettagli di parsing e rendering che altrimenti dovresti gestire manualmente. Essa: + +* Preserva lo styling basato su CSS dove possibile (es., grassetto, corsivo). +* Genera markdown pulito e leggibile senza entità HTML aggiuntive. +* Supporta la conversione batch, così puoi iterare su una directory di file HTML con lo stesso codice. + +Se preferisci una soluzione più leggera, il pacchetto `markdownify` offre un'API a funzione singola: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +Entrambi gli approcci raggiungono lo stesso obiettivo finale—**convert html to markdown**—ma l'opzione GroupDocs offre più controllo sul formato di output e si integra facilmente in pipeline di elaborazione documenti più grandi. + +## Problemi comuni e come evitarli + +| Problema | Perché si verifica | Soluzione | +|----------|--------------------|-----------| +| Immagini mancanti nel markdown | Il convertitore include solo gli URL delle immagini; non incorpora i file. | Assicurati che i file immagine siano accessibili dalla posizione del markdown o copiali accanto all'output. | +| Link relativi interrotti | L'HTML può usare percorsi relativi che diventano non validi dopo la conversione. | Usa `md_options.base_path` (se disponibile) per riscrivere i link, oppure esegui uno script di post‑processing per regolare i percorsi. | +| Caratteri Unicode diventano escapati | Alcune librerie escapano i caratteri non ASCII. | Imposta `md_options.encode_utf8 = True` (o il flag equivalente) per mantenere i caratteri intatti. | + +Affrontare questi problemi in anticipo fa risparmiare tempo quando si scala la conversione a decine o centinaia di file. + +## Esempio completo e eseguibile + +Di seguito trovi uno script autonomo che puoi copiare, modificare ed eseguire immediatamente. Sostituisci `YOUR_DIRECTORY` con la cartella reale sul tuo computer. + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +Esegui lo script: + +```bash +python markdown_from_html.py +``` + +Dovresti vedere un messaggio di conferma e un nuovo file `git_flavored.md` contenente la versione markdown del tuo HTML. + +## Conclusione + +Ora sai **how to create markdown** da una sorgente HTML usando Python. La guida ha coperto l'installazione di una affidabile **html to markdown library**, il caricamento di un **html file to markdown**, la configurazione delle opzioni **html to markdown python**, e il salvataggio del risultato. Con questa base puoi automatizzare pipeline di documentazione, migrare pagine web legacy o generare contenuti per generatori di siti statici. + +**Passi successivi** + +* Esplora la conversione batch iterando su una cartella di file HTML. +* Personalizza le `MarkdownSaveOptions` per controllare gli stili dei titoli, la formattazione degli elenchi o la gestione delle immagini. +* Combina questo script con un workflow CI/CD per mantenere la tua documentazione markdown sempre aggiornata automaticamente. + +Buona conversione! + +## Cosa dovresti imparare dopo? + +I seguenti tutorial coprono argomenti strettamente correlati che si basano sulle tecniche dimostrate in questa guida. Ogni risorsa include esempi di codice completi e funzionanti con spiegazioni passo‑passo per aiutarti a padroneggiare funzionalità API aggiuntive ed esplorare approcci di implementazione alternativi nei tuoi progetti. + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/italian/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..b6ea6b038 --- /dev/null +++ b/html/italian/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,187 @@ +--- +category: general +date: 2026-08-22 +description: Scopri come creare markdown da HTML in Python con un semplice script + a tre passaggi. Include opzioni di conversione e consigli per l'esportazione. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: it +lastmod: 2026-08-22 +og_description: Crea markdown da HTML con Python in sole tre righe. Questa guida mostra + la conversione, le opzioni di formattazione e come esportare HTML in markdown in + modo efficiente. +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: Crea markdown da HTML in Python – guida passo‑passo +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: Come creare markdown da HTML usando Python +url: /it/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come creare markdown da HTML usando Python + +Se hai bisogno di **creare markdown da HTML**, questa breve guida mostra esattamente come farlo con Python. Vedrai uno script chiaro in tre passaggi che carica un file HTML, configura l'output Git‑flavored Markdown e scrive il risultato su disco. + +Convertire contenuti web in markup leggero è un compito comune quando si costruiscono siti statici, pipeline di documentazione o notebook di analisi dei dati. In questo tutorial parleremo anche di **convertire HTML in markdown** con formattazione opzionale, risponderemo alla domanda **come convertire HTML** in modo efficiente e dimostreremo il flusso di lavoro **export HTML to markdown** usando la popolare libreria `groupdocs-conversion`. + +## Prerequisiti + +Prima di iniziare, assicurati di avere: + +* Python 3.8 o versioni successive installate. +* Il pacchetto `groupdocs-conversion` (o qualsiasi libreria che fornisca `HTMLDocument`, `MarkdownSaveOptions` e `Converter`). Installalo con: + +```bash +pip install groupdocs-conversion +``` + +* Un file HTML che desideri trasformare, ad esempio `sample.html` situato in una cartella di tua scelta. + +Non sono richieste dipendenze di sistema aggiuntive, e il codice funziona su Windows, macOS e Linux. + +## Passo 1: Caricare il documento HTML sorgente + +La prima operazione è creare un oggetto `HTMLDocument` che rappresenta il file sorgente. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**Perché è importante:** `HTMLDocument` analizza il file, risolve i collegamenti relativi e prepara il DOM per la conversione. Se il file non viene trovato, il costruttore solleva un chiaro `FileNotFoundError`, così puoi gestire gli input mancanti fin da subito. + +## Passo 2: Configurare le opzioni di salvataggio Markdown (Git‑flavored) + +Markdown ha diversi dialetti. Git‑flavored Markdown (GFM) aggiunge tabelle, liste di attività e blocchi di codice delimitati, spesso richiesti per file README o pagine GitHub. + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**Perché è importante:** Selezionando esplicitamente `MarkdownFormatter.GIT`, garantisci che l'output segua le stesse regole con cui GitHub rende il contenuto, eliminando sorprese quando il markdown viene visualizzato in un repository. Se preferisci il Markdown semplice, sostituisci `MarkdownFormatter.GIT` con `MarkdownFormatter.DEFAULT`. + +## Passo 3: Convertire il documento HTML in un file Markdown + +Ora invoca il motore di conversione e scrivi il risultato nel percorso di destinazione. + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**Perché è importante:** `Converter.convert` gestisce il lavoro pesante—traducendo i tag HTML nelle loro equivalenti markdown, preservando le immagini (copiandole nella cartella di output se necessario) e applicando il formatter selezionato. Il metodo restituisce `None` in caso di successo, ma puoi catturare `ConversionException` per una segnalazione dettagliata degli errori. + +### Output previsto + +Dopo aver eseguito lo script, `sample.md` conterrà qualcosa di simile: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +Il markdown esatto riflette la struttura di `sample.html`. Tabelle, immagini e blocchi di codice saranno convertiti secondo le regole GFM. + +## Varianti comuni e casi limite + +| Situazione | Modifica consigliata | +|------------|----------------------| +| **File HTML di grandi dimensioni (>10 MB)** | Aumenta il limite di ricorsione di Python o trasmetti l'input usando `HTMLDocument.open_stream()` se la libreria lo supporta. | +| **Immagini referenziate con URL assoluti** | Imposta `md_options.embed_images = True` per incorporare le immagini come data‑URI base‑64, oppure mantienile come collegamenti per un output più leggero. | +| **Hai bisogno di Markdown semplice invece di GFM** | Cambia `md_options.formatter = MarkdownFormatter.DEFAULT`. | +| **Classi CSS personalizzate da ignorare** | Usa `md_options.ignore_css_classes = ["unwanted-class"]`. | +| **Esecuzione in una pipeline CI/CD** | Avvolgi lo script in un blocco `try/except` e termina con uno stato diverso da zero in caso di errore, così la pipeline può fallire rapidamente. | + +### Suggerimento professionale + +Se prevedi di convertire molti file in batch, riutilizza una singola istanza di `MarkdownSaveOptions` e modifica solo i percorsi di input/output all'interno di un ciclo. Questo riduce l'overhead di creazione degli oggetti e velocizza il processo di circa il 15 %. + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## Come convertire HTML in markdown in altri linguaggi (nota veloce) + +Mentre questo tutorial si concentra su **html to markdown python**, gli stessi concetti si applicano a Java, C# o JavaScript SDK: crea un oggetto documento, configura un formatter markdown e invoca il convertitore. Se mai dovessi **export HTML to markdown** da un ambiente non Python, cerca le classi equivalenti `HtmlDocument`, `MarkdownSaveOptions` e `Converter` nell'SDK specifico del linguaggio. + +## Conclusione + +Ora sai come **creare markdown da HTML** con uno script Python conciso. Il flusso a tre passaggi—caricare l'HTML, impostare le opzioni Git‑flavored e avviare la conversione—copre il nucleo di qualsiasi workflow **convert html to markdown**. Da qui puoi: + +* Integrare lo script in generatori di siti statici. +* Automatizzare gli aggiornamenti della documentazione nelle pipeline CI. +* Estendere la conversione con post‑processing personalizzato (ad es., riscrittura dei link o aggiustamenti delle intestazioni). + +Sentiti libero di sperimentare le opzioni secondarie—**how to convert html** con formatter diversi, o modificare le impostazioni **export html to markdown** per immagini e tabelle. Buona conversione! + +## Cosa dovresti imparare dopo? + +I tutorial seguenti trattano argomenti strettamente correlati che si basano sulle tecniche dimostrate in questa guida. Ogni risorsa include esempi di codice completi e funzionanti con spiegazioni passo‑passo per aiutarti a padroneggiare ulteriori funzionalità API ed esplorare approcci di implementazione alternativi nei tuoi progetti. + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/italian/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..a0293bdf8 --- /dev/null +++ b/html/italian/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,280 @@ +--- +category: general +date: 2026-08-22 +description: Crea PDF da SVG usando Python in pochi minuti. Impara a convertire SVG + in PDF, salva SVG come PDF e utilizza un convertitore affidabile da SVG a PDF. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: it +lastmod: 2026-08-22 +og_description: Crea PDF da SVG con Python rapidamente. Questa guida mostra come convertire + SVG in PDF, utilizzare un convertitore da SVG a PDF e salvare SVG come PDF in un + unico script. +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: Crea PDF da SVG in Python – tutorial passo‑passo +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: Come creare PDF da SVG in Python – guida completa +url: /it/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come creare PDF da SVG in Python – guida completa + +Se hai bisogno di **creare PDF da SVG** rapidamente, questo tutorial ti mostra esattamente come fare. Ti guideremo nella conversione di un file SVG in un PDF usando un popolare convertitore SVG‑to‑PDF, così potrai incorporare grafica vettoriale in report, fatture o e‑book senza uscire dal tuo codice Python. + +Imparerai come **convertire SVG in PDF**, gestire il ridimensionamento, preservare i font e infine **salvare SVG come PDF** con uno script unico e riproducibile. Non sono necessari strumenti da riga di comando esterni—basta qualche riga di Python e la libreria Aspose.SVG per Python. + +## Prerequisiti + +| Requisito | Motivo | +|-------------|--------| +| Python 3.8+ | La libreria è destinata a runtime Python moderni. | +| `aspose.svg` package | Fornisce `SVGDocument`, `PdfSaveOptions` e `Converter`. Installalo con `pip install aspose-svg`. | +| An SVG file (`vector.svg`) | Il grafico vettoriale sorgente che desideri convertire. | +| Write permission to the output folder | Necessario per **salvare SVG come PDF**. | + +Puoi installare la libreria con: + +```bash +pip install aspose-svg +``` + +> **Pro tip:** Usa un ambiente virtuale (`python -m venv venv`) per mantenere le dipendenze isolate. + +## Panoramica del processo di conversione + +La conversione consiste in tre semplici passaggi: + +1. Carica il **documento SVG** dal disco. +2. Crea le **opzioni di salvataggio PDF** (puoi personalizzare dimensione pagina, DPI, ecc.). +3. Chiama il **convertitore** per generare un file PDF. + +Le sezioni seguenti suddividono ogni passaggio, spiegano *perché* il codice è scritto in quel modo e mostrano lo script completo e eseguibile. + +## Crea PDF da SVG usando Aspose.SVG per Python + +Questo header H2 contiene la parola chiave principale **create pdf from svg**, soddisfacendo il requisito SEO. + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### Perché funziona + +* **`SVGDocument`** analizza l'XML SVG e costruisce una rappresentazione in memoria che il convertitore può renderizzare. +* **`PdfSaveOptions`** ti permette di regolare l'output PDF (dimensione pagina, compressione, DPI). Le impostazioni predefinite producono già un PDF fedele, motivo per cui l'esempio funziona subito. +* **`Converter.convert`** esegue il lavoro pesante: rasterizza i dati vettoriali sulle pagine PDF mantenendo la fedeltà vettoriale, così il PDF risultante rimane nitido a qualsiasi livello di zoom. + +## Converti SVG in PDF con dimensione pagina personalizzata + +Se hai bisogno di una dimensione pagina specifica—ad esempio, A4 per report stampabili—regola le `PdfSaveOptions`: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **Edge case:** Alcuni SVG definiscono un `viewBox` che non corrisponde alle dimensioni PDF desiderate. Sovrascrivere `page_width`/`page_height` garantisce che il PDF si adatti alle tue aspettative di layout. + +## Salva SVG come PDF preservando i font + +Quando il tuo SVG fa riferimento a font esterni, assicurati che i font siano accessibili al convertitore. Posiziona i file `.ttf` nella stessa directory del SVG o specifica una cartella font personalizzata: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +Il convertitore incorpora i font direttamente nel PDF, garantendo che la conversione **svg file to pdf** appaia identica su qualsiasi macchina. + +## Conversione batch: file svg a pdf per molti file + +Spesso hai una cartella piena di asset SVG. Il ciclo seguente dimostra un efficiente **svg to pdf converter** che elabora ogni file `.svg` in una directory: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +Questo frammento illustra un flusso di lavoro pratico **convert svg to pdf** che può essere integrato in pipeline CI o generatori di report automatizzati. + +## Verifica l'output + +Dopo aver eseguito lo script, apri il PDF generato con qualsiasi visualizzatore (Adobe Reader, Chrome o Preview). Dovresti vedere: + +* Forme vettoriali renderizzate nitide a qualsiasi livello di zoom. +* Testo che corrisponde alla sorgente SVG, con i font incorporati se li hai forniti. +* Nessun artefatto raster—perché la conversione mantiene i dati vettoriali originali. + +Se noti font mancanti, verifica nuovamente che i file dei font siano accessibili e che l'SVG li riferisca correttamente (attributo `font-family`). + +## Problemi comuni e come evitarli + +| Sintomo | Causa probabile | Risoluzione | +|---------|-----------------|-------------| +| Pagine PDF vuote | L'SVG ha risorse esterne (immagini, font) non trovate | Fornisci `fonts_folder` e assicurati che le immagini collegate siano nella stessa directory o usa URL assoluti. | +| Il testo appare come contorni | Font non incorporato | Imposta `pdf_options.embed_fonts = True` (predefinito) e verifica che il file del font sia presente. | +| Il PDF è più grande del previsto | DPI elevato o immagini non compresse | Riduci `pdf_options.dpi` o abilita la compressione: `pdf_options.compress = True`. | +| Le dimensioni SVG sono tagliate | `viewBox` più grande della pagina PDF | Regola `pdf_options.page_width`/`page_height` o scala l'SVG tramite `svg_doc.set_viewport`. | + +## Esempio completo end‑to‑end + +Di seguito trovi uno script autonomo che include gestione degli errori, logging e argomenti opzionali da riga di comando. Salvalo come `svg_to_pdf.py` ed esegui `python svg_to_pdf.py`. + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +Eseguire lo script produce un'operazione **save SVG as PDF** che puoi incorporare in pipeline di automazione più ampie. + +### Output previsto della console + + + +## Cosa dovresti imparare dopo? + +I seguenti tutorial coprono argomenti strettamente correlati che si basano sulle tecniche dimostrate in questa guida. Ogni risorsa include esempi di codice completi e funzionanti con spiegazioni passo‑passo per aiutarti a padroneggiare funzionalità API aggiuntive ed esplorare approcci di implementazione alternativi nei tuoi progetti. + +- [Converti SVG in PDF in .NET con Aspose.HTML](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg to pdf java – Genera PDF da SVG con Aspose.HTML per Java](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [Converti SVG in PDF in .NET con Aspose.HTML](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/italian/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/italian/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..cf418d73d --- /dev/null +++ b/html/italian/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-08-22 +description: come abilitare lo streaming per la conversione di grandi HTML in PDF + in Python, riducendo l'uso della memoria e accelerando la generazione dell'output. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: it +lastmod: 2026-08-22 +og_description: come abilitare lo streaming per la conversione di grandi HTML in PDF + in Python, riducendo l'uso della memoria e accelerando la generazione dell'output. +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: Abilita lo streaming per la conversione da HTML a PDF in Python +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: Come abilitare lo streaming durante la conversione da HTML a PDF in Python +url: /it/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come abilitare lo streaming durante la conversione da HTML a PDF in Python + +Se hai bisogno di **come abilitare lo streaming** durante una grande conversione da HTML‑to‑PDF, questa guida ti mostra i passaggi esatti. Abilitando lo streaming eviti di caricare l'intero documento in memoria, il che è essenziale quando converti HTML in PDF per file di grandi dimensioni. + +Imparerai come abilitare lo streaming, convertire HTML in PDF con Python e gestire casi limite come lavori di large HTML to PDF. La soluzione funziona con la popolare libreria `groupdocs-conversion` (o simili), ma i concetti si applicano a qualsiasi convertitore che supporta lo streaming. + +![Diagram showing streaming conversion from HTML to PDF using Python](streaming-diagram.png) + +## Cosa ti servirà + +- Python 3.9 o versioni successive +- `groupdocs-conversion` (o qualsiasi libreria che offra `PdfSaveOptions` con un flag di streaming) +- Un file HTML che desideri trasformare in PDF (l'esempio utilizza un file grande chiamato `large.html`) + +Avere questi prerequisiti garantisce che il codice venga eseguito senza configurazioni aggiuntive. + +## Passo 1: Installa la libreria di conversione + +Per prima cosa, installa il pacchetto Python che fornisce `HTMLDocument`, `PdfSaveOptions` e `Converter`. La scelta più comune è l'SDK **GroupDocs.Conversion**: + +```bash +pip install groupdocs-conversion +``` + +> **Suggerimento:** Usa un ambiente virtuale (`python -m venv .venv`) per mantenere le dipendenze isolate. + +## Passo 2: Carica il documento HTML che desideri convertire + +Caricare l'HTML sorgente è semplice. La classe `HTMLDocument` legge il file dal disco e lo prepara per la conversione. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +L'oggetto `HTMLDocument` rappresenta l'intero markup HTML, incluse le risorse esterne come immagini e CSS. Questo è il punto di partenza per qualsiasi operazione di **convert html to pdf**. + +## Passo 3: Crea le opzioni di salvataggio PDF e abilita lo streaming + +Abilitare lo streaming è il fulcro di **come abilitare lo streaming**. Invece di bufferizzare l'intero PDF in memoria, il convertitore scrive i blocchi direttamente sul file di output. + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +Quando `enable_streaming` è impostato a `True`, la libreria utilizza un approccio write‑through che riduce drasticamente il consumo di RAM—cruciale per scenari di **large html to pdf**. + +## Passo 4: Converti il documento HTML in PDF usando le opzioni configurate + +Ora invoca la conversione. Il metodo `Converter.convert` accetta il documento sorgente, l'oggetto delle opzioni e il percorso di destinazione. + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +Dopo che questa chiamata termina, `large.pdf` contiene il PDF renderizzato, generato mentre i dati vengono trasmessi su disco. L'intero processo di solito termina più velocemente rispetto a una conversione senza streaming perché il sistema operativo può svuotare i dati sul file system in modo incrementale. + +### Output previsto + +L'esecuzione dello script produce un file PDF la cui dimensione corrisponde al contenuto dell'HTML originale. Puoi verificare il risultato con qualsiasi visualizzatore PDF: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## Perché lo streaming è importante per le conversioni da HTML a PDF di grandi dimensioni + +Quando **convert html to pdf** senza streaming, la libreria costruisce prima l'intero PDF in RAM prima di scriverlo su disco. Per una pagina modesta va bene, ma un lavoro di **large html to pdf** (ad esempio un report HTML da 10 MB con molte immagini) può superare i limiti di memoria delle tipiche funzioni serverless o dei container a bassa memoria. + +Abilitare lo streaming risolve tre problemi: + +1. **Efficienza della memoria** – viene mantenuto solo un piccolo buffer in RAM. +2. **Prestazioni percepite più rapide** – il file appare su disco mentre è ancora in generazione, consentendo ai processi successivi di iniziare a leggerlo prima. +3. **Scalabilità** – è possibile eseguire molte conversioni in parallelo senza esaurire la memoria dell'host. + +## Problemi comuni e come evitarli + +| Sintomo | Causa probabile | Soluzione | +|---------|-----------------|-----------| +| `MemoryError` during conversion | Flag di streaming non impostato o versione della libreria troppo vecchia | Assicurati che `pdf_opts.enable_streaming = True` e aggiorna all'SDK più recente (`pip install --upgrade groupdocs-conversion`). | +| Immagini mancanti nel PDF | I percorsi relativi delle immagini non possono essere risolti | Passa la directory di base a `HTMLDocument` o incorpora le immagini come base64. | +| Il PDF di output è vuoto | File HTML non trovato o illeggibile | Verifica il percorso `"YOUR_DIRECTORY/large.html"` e controlla i permessi del file. | +| La conversione si blocca indefinitamente | Grandi risorse esterne (font, CSS) bloccano il rendering | Pre‑scarica le risorse esterne o usa un browser headless per includerle inline. | + +### Caso limite: Convertire HTML da una stringa + +Se il contenuto HTML è in memoria anziché in un file, puoi comunque **come abilitare lo streaming** avvolgendo la stringa in un costruttore `HTMLDocument` che accetta HTML grezzo: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +Il comportamento di streaming rimane identico perché l'SDK scrive il PDF in modo incrementale. + +## Script completo da copiare‑incollare + +Di seguito trovi un esempio completo, pronto per l'esecuzione, che incorpora tutti i passaggi discussi. Sostituisci `YOUR_DIRECTORY` con il percorso reale sul tuo computer. + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +Eseguendo `python full_example.py` verrà generato `large.pdf` utilizzando l'approccio streaming. + +## Riepilogo + +- Ora sai **come abilitare lo streaming** per la conversione da HTML a PDF in Python. +- Lo script dimostra l'intero flusso di lavoro **convert html to pdf**, gestendo carichi di lavoro **large html to pdf** in modo efficiente. +- Impostando `PdfSaveOptions.enable_streaming = True`, il convertitore scrive l'output progressivamente, che è il modo consigliato per **stream html to pdf**. + +## Cosa esplorare dopo + +- Librerie **HTML to PDF Python** che supportano CSS3 e JavaScript (ad esempio `WeasyPrint`, `pdfkit`). +- Aggiungere protezione con password o crittografia al PDF generato tramite impostazioni aggiuntive di `PdfSaveOptions`. +- Parallelizzare più conversioni in un sistema di code (Celery, RabbitMQ) mantenendo basso l'uso di memoria. + +Sentiti libero di sperimentare con diverse sorgenti HTML, dimensioni di pagina e metadati PDF. Lo streaming rende possibile gestire documenti ancora più grandi senza sacrificare le prestazioni. Buon coding! + +## Cosa dovresti imparare dopo? + +I seguenti tutorial coprono argomenti strettamente correlati che si basano sulle tecniche dimostrate in questa guida. Ogni risorsa include esempi di codice completi e funzionanti con spiegazioni passo‑passo per aiutarti a padroneggiare funzionalità API aggiuntive ed esplorare approcci di implementazione alternativi nei tuoi progetti. + +- [Come convertire HTML in PDF Java – Utilizzando Aspose.HTML per Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Creare un pool di thread fisso per la conversione parallela da HTML a PDF](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [Come abilitare JavaScript in Aspose HTML – Caricare HTML e ottenere testo](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/italian/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..1efaaf866 --- /dev/null +++ b/html/italian/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,257 @@ +--- +category: general +date: 2026-08-22 +description: Come esportare i collegamenti da HTML e convertirli in un file markdown, + includendo i paragrafi. Guida passo‑passo per la conversione da HTML a markdown. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: it +lastmod: 2026-08-22 +og_description: Come esportare i collegamenti da un documento HTML e convertirli in + un file markdown, includendo i paragrafi. Segui questo tutorial completo per una + conversione affidabile da HTML a markdown. +og_image_alt: How to export links while converting HTML to Markdown +og_title: Come esportare i link durante la conversione da HTML a Markdown – guida + passo passo +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: Come esportare i link durante la conversione da HTML a Markdown +url: /it/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come esportare i collegamenti convertendo HTML in Markdown + +Se hai bisogno di **esportare i collegamenti** da una pagina HTML e trasformare il risultato in un file **html to markdown** pulito, questa guida ti mostra i passaggi esatti. Scoprirai anche **come estrarre i paragrafi** in modo che l'output Markdown contenga il contenuto principale di tuo interesse. Alla fine del tutorial potrai rispondere alla domanda “**come convertire html** in markdown” con uno script pronto all'uso. + +Esportare i collegamenti ed estrarre i paragrafi sono operazioni comuni quando si migra contenuto web verso siti statici, portali di documentazione o back‑end di CMS headless. L'approccio qui descritto funziona con il GroupDocs Conversion SDK per Python, ma i concetti si applicano a qualsiasi libreria che consenta di configurare le funzionalità di esportazione. + +--- + +## Cosa ti serve + +- Python 3.9 o superiore +- Pacchetto `groupdocs-conversion` (installalo con `pip install groupdocs-conversion`) +- Un file HTML da elaborare (ad es., `input.html`) +- Familiarità di base con lo scripting Python + +--- + +## Come esportare i collegamenti con la conversione da HTML a Markdown + +Il primo passo fondamentale è configurare la conversione in modo che vengano scritte solo le funzionalità desiderate—collegamenti e paragrafi—nel **file html to markdown**. L'SDK ti permette di impostare una maschera di valori `MarkdownFeature`; combiniamo `LINKS` e `PARAGRAPHS` per mantenere l'output focalizzato. + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### Perché funziona + +- **`HTMLDocument`** analizza il file originale e costruisce un DOM che il convertitore può attraversare. +- **`MarkdownSaveOptions`** ti offre un controllo granulare su ciò che l'SDK scrive. Impostare `features` su `LINKS | PARAGRAPHS` indica al motore di ignorare immagini, tabelle o script, riducendo il rumore nel **file html to markdown** finale. +- **`Converter.convert`** esegue il lavoro pesante. Rispetta la maschera delle funzionalità, estrae i tag di ancoraggio (``) e i tag di paragrafo (`

`), e li scrive usando la sintassi Markdown standard. + +--- + +## Come convertire HTML in Markdown con contenuto completo (opzionale) + +Se in seguito decidi di aver bisogno dell'intera pagina—non solo di collegamenti e paragrafi—basta modificare la maschera delle funzionalità: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +Eseguendo la stessa conversione ora otterrai un **file html to markdown** completo che rispecchia il layout originale. Questo dimostra **come convertire html** in modo flessibile: controlli l'output attivando o disattivando i flag delle funzionalità. + +--- + +## Come estrarre solo i paragrafi + +A volte ti interessa solo il corpo testuale di un articolo, non i collegamenti ipertestuali. Puoi isolare i paragrafi impostando la maschera su `PARAGRAPHS` da sola: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +Il Markdown risultante conterrà testo pulito, a capo, senza alcun markup di collegamento. Questo snippet risponde alla domanda **come estrarre i paragrafi** da una sorgente HTML. + +--- + +## Problemi comuni e come evitarli + +| Problema | Perché accade | Soluzione | +|----------|---------------|-----------| +| File di output vuoto | L'HTML sorgente non contiene tag `` o `

` corrispondenti alle funzionalità selezionate. | Verifica la struttura HTML o amplia la maschera delle funzionalità (ad es., includi `HEADINGS`). | +| Problemi di codifica | L'HTML usa un charset non UTF‑8 e l'SDK lo legge in modo errato. | Passa una codifica esplicita a `HTMLDocument`, ad es., `HTMLDocument(path, encoding="iso-8859-1")`. | +| Sovrascrittura del markdown esistente | L'esecuzione ripetuta dello script sostituisce il file precedente. | Aggiungi un timestamp al nome del file di output o controlla `os.path.exists` prima di scrivere. | + +**Consiglio professionale:** quando elabori molti file in una cartella, avvolgi la logica di conversione in un ciclo e registra ogni risultato. Questo ti fornisce una chiara traccia di audit e rende semplice riprendere l'elaborazione dopo un eventuale errore. + +--- + +## Script completo da copiare‑incollare + +Di seguito trovi un file Python autonomo (`convert_links_paragraphs.py`) che puoi eseguire direttamente. Include l'analisi degli argomenti in modo da poter specificare percorsi di input e output senza modificare il codice. + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**Come eseguirlo** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +Il comando sopra dimostra **come esportare i collegamenti** e **come estrarre i paragrafi** in una singola chiamata. Ometti `--links` o `--paragraphs` per personalizzare l'output secondo le tue esigenze. + +--- + +## Verifica – aspetto dell'output + +Dato il seguente HTML semplice (`input.html`): + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +Eseguendo lo script con entrambi i flag si ottiene `links_and_paragraphs.md`: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +Puoi vedere che sono presenti solo i due paragrafi e il collegamento ipertestuale—esattamente ciò che hai richiesto quando hai cercato **come esportare i collegamenti** durante la **conversione html to markdown**. + +--- + +## Prossimi passi e argomenti correlati + +- **Come convertire html in markdown** con immagini: aggiungi `MarkdownFeature.IMAGES` alla maschera. +- **Come estrarre i paragrafi** e poi post‑processare + +## Cosa dovresti imparare dopo? + + +I tutorial seguenti trattano argomenti strettamente correlati che si basano sulle tecniche dimostrate in questa guida. Ogni risorsa include esempi di codice completi e spiegazioni passo‑passo per aiutarti a padroneggiare ulteriori funzionalità dell'API ed esplorare approcci di implementazione alternativi nei tuoi progetti. + +- [Come impostare l'offset durante la conversione da HTML a Markdown in Java](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown a HTML Java - Converti con Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [Convertire HTML in Markdown – Guida completa C#](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/italian/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..59fdc673c --- /dev/null +++ b/html/italian/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,270 @@ +--- +category: general +date: 2026-08-22 +description: Come caricare HTML con Aspose.HTML in Python – limitare la profondità + delle risorse e preparare il documento per la conversione o la modifica. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: it +lastmod: 2026-08-22 +og_description: Come caricare HTML con Aspose.HTML in Python, impostare la profondità + di gestione delle risorse e preparare il documento per la conversione o la modifica. +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: Come caricare HTML con Aspose.HTML – Guida Python +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: Come caricare HTML con Aspose.HTML in Python +url: /it/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come caricare HTML con Aspose.HTML in Python + +Se hai bisogno di **caricare html** rapidamente e in modo sicuro in un progetto Python, questa guida ti mostra i passaggi esatti. Alla fine delle prime due frasi saprai come configurare la gestione delle risorse, caricare il file e mantenere il processo pronto per ulteriori **conversioni HTML** o modifiche. + +Caricare pagine grandi o complesse spesso blocca i parser ingenui perché le risorse esterne (immagini, script, CSS) possono causare ricorsioni profonde o ritardi di rete. Questo tutorial copre un modello robusto usando **Aspose.HTML for Python**, dimostra la **HTMLDocument class** e spiega perché impostare **max_handling_depth** è importante. + +Seguirai: + +* Installazione del pacchetto Aspose.HTML +* Creazione di un'istanza `ResourceHandlingOptions` e limitazione della profondità +* Utilizzo della classe `HTMLDocument` per caricare una pagina +* Preparazione del documento per la conversione in PDF, PNG o ulteriori manipolazioni + +Non è necessaria alcuna esperienza pregressa con Aspose.HTML, solo conoscenze di base di Python. + +--- + +## Come caricare HTML con Aspose.HTML in Python + +Il nucleo della soluzione è un modello a tre passaggi che combina **ResourceHandlingOptions** con la **HTMLDocument class**. Limitare la profondità di gestione impedisce chiamate di rete incontrollate quando una pagina fa riferimento a molte risorse annidate. + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### Perché funziona + +* **`ResourceHandlingOptions`** indica al parser quanti livelli di risorse esterne può seguire. Impostare `max_handling_depth = 3` ferma il caricatore dopo tre salti, sufficiente per la maggior parte dei siti ma protegge da loop infiniti. +* **`HTMLDocument`** legge il file, applica le opzioni e costruisce un DOM in memoria che puoi interrogare, modificare o renderizzare. +* Lo snippet di conversione opzionale dimostra come il documento caricato si integri con le funzionalità di **conversione HTML**, ad esempio il salvataggio in PDF. + +--- + +## Comprendere ResourceHandlingOptions + +`ResourceHandlingOptions` fa parte di **Aspose.HTML for Python** e ti offre un controllo dettagliato sull'attività di rete. + +| Proprietà | Scopo | Valore tipico | +|--------------------------|--------------------------------------------------|----------------| +| `max_handling_depth` | Profondità massima di ricorsione per risorse collegate | `3` (default) | +| `allow_external_resources` | Se scaricare CSS, JS, immagini esterne | `True` | +| `timeout` | Timeout di rete per richiesta (secondi) | `30` | + +**Consiglio pratico:** Se sai che la pagina di destinazione fa riferimento solo a risorse locali, imposta `allow_external_resources = False` per velocizzare il caricamento ed evitare chiamate HTTP non necessarie. + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +## Utilizzare la classe HTMLDocument + +La **HTMLDocument class** è il punto di ingresso per tutte le operazioni di Aspose.HTML. Una volta istanziata, puoi: + +* Accedere al DOM tramite `doc.root` +* Interrogare gli elementi con selettori CSS (`doc.query_selector_all("img")`) +* Renderizzare la pagina in formati raster (`doc.save("page.png")`) +* Convertire in PDF (`doc.save("page.pdf", PDFSaveOptions())`) + +Di seguito un breve snippet che estrae tutti gli attributi `src` delle immagini dopo il caricamento: + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**Perché potresti averne bisogno:** Quando esegui una **conversione HTML**, spesso è necessario regolare o sostituire gli URL delle immagini prima di renderizzare in un altro formato. Accedere direttamente al DOM ti offre questa flessibilità. + +## Prossimi passi dopo aver caricato l'HTML + +Ora che il documento è in memoria, puoi scegliere tra diversi workflow comuni: + +1. **Convertire in PDF** – Ideale per archiviazione o stampa. +2. **Renderizzare in PNG/JPEG** – Utile per miniature o anteprime visive. +3. **Modificare il DOM** – Inserire, rimuovere o modificare elementi prima del salvataggio. +4. **Estrarre testo** – Ottenere contenuto in plain‑text per indicizzazione o analisi. + +### Esempio: Convertire in PDF con dimensione pagina personalizzata + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**Output previsto:** Un file chiamato `big_page.pdf` appare nella directory di lavoro, contenente l'HTML renderizzato con tutte le risorse consentite applicate. Se imposti `max_handling_depth` a 3, solo le risorse fino a tre livelli di profondità vengono incorporate, mantenendo la dimensione del PDF ragionevole. + +## Problemi comuni e come evitarli + +| Sintomo | Causa | Soluzione | +|--------------------------------------|----------------------------------------|-----------| +| Immagini mancanti nel PDF renderizzato | `allow_external_resources` impostato a `False` | Abilitare le risorse esterne o incorporare le immagini localmente | +| `TimeoutError` durante il caricamento | Latenza di rete supera `timeout` | Incrementare `rh_opts.timeout` o pre‑scaricare le risorse | +| Stile CSS inatteso | Foglio di stile collegato non caricato a causa del limite di profondità | Aumentare `max_handling_depth` o aggiungere manualmente il CSS necessario | +| `UnicodeDecodeError` su file non‑UTF8| Il file HTML usa una codifica diversa | Passare `encoding="windows-1252"` quando si crea `HTMLDocument` | + +## Esempio completo, eseguibile + +Di seguito uno script autonomo che puoi copiare‑incollare in un file chiamato `load_html_demo.py`. Include istruzioni di installazione, gestione degli errori e un passaggio di verifica finale. + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +**Esecuzione dello script** + +```bash +python load_html_demo.py +``` + +Dovresti vedere un output sulla console che conferma il caricamento, un elenco di URL delle immagini e un messaggio di successo per la conversione in PDF. Il `big_page.pdf` generato rifletterà il contenuto HTML limitato dalla **max_handling_depth** configurata. + +## Conclusione + +In questo tutorial abbiamo coperto **come caricare html** usando **Aspose.HTML for Python**, configurato **ResourceHandlingOptions** per controllare `max_handling_depth` e dimostrato azioni pratiche post‑caricamento come l'estrazione di immagini e la conversione in PDF. Seguendo i passaggi ora disponi di una base affidabile per qualsiasi workflow di **conversione HTML**, sia che tu stia costruendo un web‑scraper, un servizio di archiviazione documenti o un generatore di report dinamici. + +**Prossimi passi** + +* Sperimenta con diversi valori di `max_handling_depth` per bilanciare completezza e prestazioni. +* Prova a convertire il documento in + +## Cosa dovresti imparare dopo? + +I seguenti tutorial coprono argomenti strettamente correlati che si basano sulle tecniche dimostrate in questa guida. Ogni risorsa include esempi di codice completi e funzionanti con spiegazioni passo‑passo per aiutarti a padroneggiare funzionalità API aggiuntive ed esplorare approcci di implementazione alternativi nei tuoi progetti. + +- [How to Parse HTML Java – Load, Query & Count Elements](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [How to Edit HTML Document Tree in Aspose.HTML for Java](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [Handle Document Load Events in Aspose.HTML for Java](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/japanese/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..8cbc8c37b --- /dev/null +++ b/html/japanese/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-08-22 +description: Aspose.HTML を使用して Python で HTML を PDF に変換する方法 – HTML ファイルから PDF を作成し、HTML + コードから PDF を生成し、HTML を PDF として Python で迅速に保存する方法を学びましょう。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: ja +lastmod: 2026-08-22 +og_description: Aspose.HTML を使用して Python で HTML を PDF に変換する方法。このチュートリアルでは、HTML ファイルから + PDF を作成する方法、HTML コードから PDF を生成する方法、そして Python で HTML を PDF として保存する方法を示します。 +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: PythonでHTMLをPDFに変換する方法 – ステップバイステップガイド +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: PythonでAspose.HTMLを使用してHTMLをPDFに変換する方法 +url: /ja/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PythonでAspose.HTMLを使用してHTMLをPDFに変換する方法 + +If you need to **how to convert html to pdf** quickly, this guide shows you a complete, ready‑to‑run solution. You’ll see how to **create pdf from html file**, **generate pdf from html code**, and **save html as pdf python** using Aspose.HTML’s simple API. + +すぐに **HTMLをPDFに変換する方法** が必要な場合、このガイドでは完全で実行可能なソリューションを示します。Aspose.HTML のシンプルな API を使用して、**create pdf from html file**、**generate pdf from html code**、**save html as pdf python** の方法が分かります。 + +We’ll walk through every step, explain why each line matters, and cover common pitfalls so you can adapt the code to any project. No external tools, just a few lines of Python. + +すべての手順を順に解説し、各行が重要な理由を説明し、一般的な落とし穴にも触れます。外部ツールは不要で、Python の数行だけで完了します。 + +## 前提条件 + +* Python 3.8 以上がインストールされていること。 +* 有効な Aspose.HTML for Python ライセンス(または無料評価キー)。 +* `aspose.html` パッケージがインストールされていること: + +```bash +pip install aspose-html +``` + +Having these in place ensures the conversion runs without runtime errors. + +これらが揃っていれば、実行時エラーなしで変換を行うことができます。 + +## ステップ 1: HTMLドキュメントをロードする(create pdf from html file) + +The first task is to read the source HTML. Aspose.HTML represents a document with the `HTMLDocument` class, which abstracts file I/O, network fetching, and DOM parsing. + +最初のタスクはソース HTML を読み込むことです。Aspose.HTML は `HTMLDocument` クラスでドキュメントを表現し、ファイル I/O、ネットワーク取得、DOM パースを抽象化します。 + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*この点が重要な理由:* +`HTMLDocument` loads the HTML, resolves relative resources (images, CSS, fonts), and builds a DOM that the converter can render accurately. Skipping this step or using a plain string would lose those resource resolutions. + +`HTMLDocument` は HTML を読み込み、相対リソース(画像、CSS、フォント)を解決し、コンバータが正確にレンダリングできる DOM を構築します。このステップを省略したり単なる文字列を使用したりすると、リソース解決が失われます。 + +## ステップ 2: PDF保存オプションを設定する(save html as pdf python) + +Aspose.HTML lets you fine‑tune the PDF output via `PdfSaveOptions`. The default configuration already produces a high‑quality PDF, but you can adjust page size, compression, or metadata if needed. + +Aspose.HTML は `PdfSaveOptions` を使って PDF 出力を細かく調整できます。デフォルト設定でも高品質な PDF が生成されますが、必要に応じてページサイズ、圧縮、メタデータなどを変更できます。 + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*この点が重要な理由:* +Even if you keep the defaults, creating an options object makes the code extensible. Future changes—like embedding a PDF password—can be added without restructuring the script. + +デフォルトを使用する場合でも、オプションオブジェクトを作成しておくとコードが拡張しやすくなります。将来的に PDF にパスワードを埋め込むなどの変更も、スクリプトを大幅に書き換えることなく追加できます。 + +## ステップ 3: 変換を実行する(convert html to pdf python) + +The `Converter.convert` method ties the HTML document and the PDF options together, writing the result to a file path you specify. + +`Converter.convert` メソッドは HTML ドキュメントと PDF オプションを結び付け、指定したファイルパスに結果を書き込みます。 + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*この点が重要な理由:* +`Converter.convert` executes the rendering engine, rasterizing HTML/CSS to PDF vectors. It handles complex layouts, embedded fonts, and SVG graphics automatically—something manual libraries often miss. + +`Converter.convert` はレンダリングエンジンを実行し、HTML/CSS を PDF ベクタにラスタライズします。複雑なレイアウト、埋め込みフォント、SVG グラフィックを自動的に処理し、手動のライブラリでは見落としがちです。 + +### 期待される出力 + +Running the script produces `sample.pdf` in the same directory. Open it with any PDF viewer; you should see a faithful representation of `sample.html`, including styles, images, and page breaks. + +スクリプトを実行すると同じディレクトリに `sample.pdf` が生成されます。任意の PDF ビューアで開くと、`sample.html` のスタイル、画像、改ページを含む忠実な再現が確認できます。 + +## 一般的なバリエーションとエッジケース + +| 状況 | 対処方法 | +|-----------|-----------------| +| **HTMLは文字列で、ファイルではありません** | パスからロードする代わりに `HTMLDocument.from_string(html_string)` を使用します。 | +| **パスワード保護されたPDFが必要** | 変換前に `pdf_options.encryption.password = "yourPassword"` を設定します。 | +| **大きなHTMLファイルでメモリ使用量が増える** | ストリーミングモードを有効にします: `pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`。 | +| **カスタムフォントが見つからない** | フォントフォルダーを登録します: `pdf_options.fonts_folder = "path/to/fonts"`。| + +These variations illustrate the flexibility of the Aspose.HTML API while keeping the core workflow identical. + +これらのバリエーションは、コアワークフローを変えずに Aspose.HTML API の柔軟性を示しています。 + +## 完全なスクリプト(generate pdf from html code) + +Below is the complete, runnable program that incorporates all steps. Copy‑paste it, replace `YOUR_DIRECTORY` with an actual folder, and execute. + +以下に、すべての手順を組み込んだ完全な実行可能プログラムを示します。コピーして貼り付け、`YOUR_DIRECTORY` を実際のフォルダーに置き換えて実行してください。 + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +Run it with: + +以下のコマンドで実行します: + +```bash +python convert_html_to_pdf.py +``` + +You’ll see the confirmation message, and the PDF will appear beside the source HTML. + +確認メッセージが表示され、PDF がソース HTML の横に生成されます。 + +## トラブルシューティングのヒント(プロのコツ) + +* **Missing images or CSS** – Ensure the HTML file uses absolute URLs or that the relative paths are correct relative to `YOUR_DIRECTORY`。 +* **Unicode characters appear as squares** – Embed the required fonts via `pdf_options.fonts_folder`。 +* **Conversion is slow** – Turn on `pdf_options.use_system_fonts = False` to avoid scanning the system font catalog。 + +## 結論 + +You now know **how to convert html to pdf** in Python with Aspose.HTML, from loading an HTML file to saving a high‑quality PDF. The same pattern lets you **create pdf from html file**, **generate pdf from html code**, and **save html as pdf python** for any automation workflow. + +これで、Python で Aspose.HTML を使用して **HTMLをPDFに変換する方法** が分かりました。HTML ファイルの読み込みから高品質 PDF の保存まで、同じパターンで **create pdf from html file**、**generate pdf from html code**、**save html as pdf python** を任意の自動化ワークフローに適用できます。 + +Next, you might explore: + +次に検討できること: + +* Adding watermarks or headers/footers (keyword: *create pdf from html file*)。 +* Converting a live URL instead of a local file (keyword: *convert html to pdf python*)。 +* Integrating the converter into a Flask or Django API to serve PDFs on demand。 + +Feel free to experiment with the options, and happy PDF generation! + +オプションを自由に試してみて、PDF 生成を楽しんでください! + +## 次に学ぶべきことは? + +The following tutorials cover closely related topics that build on the techniques demonstrated in this guide. Each resource includes complete working code examples with step-by-step explanations to help you master additional API features and explore alternative implementation approaches in your own projects. + +以下のチュートリアルは、本ガイドで示した手法を基にした密接に関連するトピックを扱っています。各リソースには、完全な動作コード例とステップバイステップの解説が含まれ、追加の API 機能を習得し、独自プロジェクトで代替実装アプローチを探求するのに役立ちます。 + +- [Aspose.HTMLでHTMLをPDFに変換する – 完全操作ガイド](/html/english/) +- [JavaでHTMLをPDFに変換する方法 – Aspose.HTML for Java を使用](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [.NETでAspose.HTMLを使用してHTMLをPDFに変換する](/html/english/net/html-extensions-and-conversions/convert-html-to-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/japanese/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/japanese/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..80a7ff7a3 --- /dev/null +++ b/html/japanese/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-08-22 +description: Python を使って HTML ファイルから Markdown を作成する方法を学びましょう。このステップバイステップガイドでは、信頼できるライブラリを使って + HTML を Markdown に変換する方法を示します。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: ja +lastmod: 2026-08-22 +og_description: Python を使用して HTML ファイルから Markdown を作成する方法。実績のあるライブラリで HTML を Markdown + に素早く変換するガイドをご覧ください。 +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: PythonでHTMLからMarkdownを作成する方法 – 完全ガイド +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: PythonでHTMLからMarkdownを作成する方法 – 完全ガイド +url: /ja/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PythonでHTMLからMarkdownを作成する方法 – 完全ガイド + +既存のウェブコンテンツから **markdown を作成する方法** を知りたい場合、Python の数行だけで HTML ファイルを markdown に変換できます。このチュートリアルでは、Windows、macOS、Linux で動作する専用の **html to markdown library** を使用した **convert html to markdown** の手順を解説します。 + +ライブラリのインストール方法、HTML ドキュメントの読み込み、Git フレーバーの markdown オプションの設定、結果のディスクへの書き込みを学びます。ガイドの最後までに、**html file to markdown** を自動的に変換できるようになり、静的サイトジェネレータやドキュメントパイプライン、コンテンツ移行プロジェクトに役立ちます。 + +## 前提条件 + +* Python 3.8 以上がインストールされていること(`python --version` で確認)。 +* ターミナルまたはコマンドプロンプトへのアクセス。 +* 変換したい HTML ファイル(例では `sample.html` を使用)。 +* 必要なパッケージをインストールするためのインターネット接続。 + +コード例では **GroupDocs.Conversion for Python** ライブラリを使用しています。このライブラリは後述の `HTMLDocument`、`MarkdownSaveOptions`、`Converter` クラスを提供します。同様の概念は `markdownify` や `html2text` といった他の **html to markdown python** パッケージにも適用できます—唯一の違いはインポート文です。 + +## Markdown を作成する方法 – 手順 1: html to markdown python ライブラリをインストール + +最初のタスクは、変換ライブラリを環境に追加することです。ターミナルで次の pip コマンドを実行してください。 + +```bash +pip install groupdocs-conversion +``` + +> **Pro tip:** 仮想環境(`python -m venv .venv`)を使用して、依存関係をグローバルな Python インストールから分離してください。 + +パッケージをインストールすると、変換プロセスに必要な `HTMLDocument`、`MarkdownSaveOptions`、`Converter` クラスが利用可能になります。 + +## HTML を markdown に変換 – 手順 2: HTML ドキュメントをロード + +ライブラリがインストールされたら、必要なクラスをインポートし、ソースファイルを指す `HTMLDocument` インスタンスを作成します。 + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +`HTMLDocument` オブジェクトはファイルを読み込み、変換の準備をします。ファイルが存在しない場合、コンストラクタは `FileNotFoundError` をスローするので、パスが正しいことを確認してください。 + +## html file to markdown – 手順 3: Git フレーバーの markdown オプションを設定 + +多くのプロジェクトは、テーブル、タスクリスト、取り消し線構文のサポートを追加する Git フレーバーの markdown を好みます。ライブラリでは `MarkdownSaveOptions` の `git` プロパティを使用してこのプリセットを有効にできます。 + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +`git = True` を設定すると、コンバータは GitHub、GitLab、Bitbucket が正しくレンダリングできる構文を出力します。プレーンな markdown が必要な場合はフラグを `False` のままにしてください。 + +## markdown 出力を保存 – 手順 4: html to markdown ライブラリで結果を書き込む + +最後に、`Converter.convert` メソッドを呼び出し、ソースドキュメント、オプションオブジェクト、出力先パスを渡します。 + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +スクリプトが完了すると、`git_flavored.md` に `sample.html` の markdown 表現が格納されます。任意のエディタでファイルを開くか、静的サイトジェネレータに直接渡すことができます。 + +### 期待される出力 + +`sample.html` にシンプルな見出しと段落が含まれていると仮定すると、生成される markdown は次のようになるかもしれません: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +元の HTML にテーブル、リスト、コードブロックが含まれている場合、Git フレーバーのプリセットは適切な markdown 構文を使用してそれらの構造を保持します。 + +## html to markdown ライブラリの理解 + +**GroupDocs.Conversion** ライブラリは、手動で処理する必要があるパースやレンダリングの詳細を抽象化します。主な機能は次のとおりです: + +* 可能な限り CSS ベースのスタイリング(例:太字、斜体)を保持します。 +* 余分な HTML エンティティなしで、クリーンで読みやすい markdown を生成します。 +* バッチ変換をサポートし、同じコードで HTML ファイルのディレクトリをループ処理できます。 + +より軽量なソリューションを好む場合、`markdownify` パッケージは単一関数 API を提供します: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +どちらのアプローチも同じ最終目標—**convert html to markdown**—を達成しますが、GroupDocs のオプションは出力形式に対する制御がより細かく、より大規模なドキュメント処理パイプラインに簡単に統合できます。 + +## よくある落とし穴と回避方法 + +| 問題 | 発生原因 | 対策 | +|-------|---------------|-----| +| markdown の画像が欠落 | コンバータは画像 URL のみを含め、ファイルは埋め込みません。 | 画像ファイルが markdown の場所からアクセス可能であることを確認するか、出力と同じ場所にコピーしてください。 | +| 相対リンクが壊れる | HTML が相対パスを使用している場合、変換後に無効になることがあります。 | `md_options.base_path`(利用可能な場合)を使用してリンクを書き換えるか、パスを調整するポストプロセススクリプトを実行してください。 | +| Unicode 文字がエスケープされる | 一部のライブラリは非 ASCII 文字をエスケープします。 | `md_options.encode_utf8 = True`(または同等のフラグ)を設定して文字をそのまま保持してください。 | + +これらの問題に早期に対処することで、数十から数百のファイルへの変換をスケールさせる際の時間を節約できます。 + +## 完全な実行可能サンプル + +以下は、すぐにコピー、修正、実行できる自己完結型スクリプトです。`YOUR_DIRECTORY` を実際のフォルダパスに置き換えてください。 + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +スクリプトを実行: + +```bash +python markdown_from_html.py +``` + +確認メッセージと、HTML の markdown バージョンが含まれた新しい `git_flavored.md` ファイルが表示されるはずです。 + +## 結論 + +これで、Python を使用して HTML ソースから **markdown を作成する方法** が分かりました。このガイドでは、信頼できる **html to markdown library** のインストール、**html file to markdown** のロード、**html to markdown python** オプションの設定、結果の保存について説明しました。この基礎があれば、ドキュメントパイプラインの自動化、レガシーウェブページの移行、または静的サイトジェネレータ向けコンテンツの生成が可能です。 + +**次のステップ** + +* HTML ファイルのフォルダを反復処理してバッチ変換を試す。 +* `MarkdownSaveOptions` をカスタマイズして、見出しスタイル、リスト形式、画像処理を制御する。 +* このスクリプトを CI/CD ワークフローと組み合わせて、markdown ドキュメントを自動的に最新の状態に保つ。 + +変換を楽しんでください! + +## 次に学ぶべきことは? + +以下のチュートリアルは、本ガイドで示した手法を基にした密接に関連するトピックを取り上げています。各リソースには、ステップバイステップの解説と完全な動作コード例が含まれており、追加の API 機能を習得し、独自プロジェクトで代替実装アプローチを検討するのに役立ちます。 + +- [Aspose.HTML for Java で HTML を Markdown に変換](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Aspose.HTML を使用して .NET で HTML を Markdown に変換](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [markdown を html に変換 – PDF 出力付き Java ガイド](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/japanese/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..1ae27db31 --- /dev/null +++ b/html/japanese/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,182 @@ +--- +category: general +date: 2026-08-22 +description: シンプルな3ステップのスクリプトで、Pythonを使ってHTMLからMarkdownを作成する方法を学びましょう。変換オプションやエクスポートのコツも含まれています。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: ja +lastmod: 2026-08-22 +og_description: PythonでHTMLからMarkdownをたった3行で作成。この記事では変換方法、フォーマットオプション、HTMLを効率的にMarkdownへエクスポートする手順を紹介します。 +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: PythonでHTMLからMarkdownを作成する – ステップバイステップガイド +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: Pythonを使ってHTMLからMarkdownを作成する方法 +url: /ja/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTMLからMarkdownをPythonで作成する方法 + +If you need to **HTMLからMarkdownを作成**, this short guide shows exactly how to do it with Python. You’ll see a clear, three‑step script that loads an HTML file, configures Git‑flavored Markdown output, and writes the result to disk. + +Converting web content to lightweight markup is a common task when building static sites, documentation pipelines, or data‑analysis notebooks. In this tutorial we’ll also touch on how to **HTMLをMarkdownに変換** with optional formatting, answer the question **HTMLを効率的に変換** efficiently, and demonstrate the **HTMLをMarkdownにエクスポート** workflow using the popular `groupdocs-conversion` library. + +## 前提条件 + +* Python 3.8 以上がインストールされていること。 +* The `groupdocs-conversion` package (or any library that provides `HTMLDocument`, `MarkdownSaveOptions`, and `Converter`). Install it with: + +```bash +pip install groupdocs-conversion +``` + +* 変換したいHTMLファイル(例: `sample.html`)が、管理できるフォルダーに配置されていること。 + +追加のシステム依存関係は不要で、コードはWindows、macOS、Linuxで動作します。 + +## ステップ1: ソースHTMLドキュメントを読み込む + +The first operation is to create an `HTMLDocument` object that represents the source file. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**この点が重要な理由:** `HTMLDocument` はファイルを解析し、相対リンクを解決し、変換のためにDOMを準備します。ファイルが見つからない場合、コンストラクタは明確な `FileNotFoundError` をスローするため、入力が欠如していることを早期に処理できます。 + +## ステップ2: Markdown保存オプションを設定する(Gitフレーバー) + +Markdownにはいくつかの方言があります。GitフレーバーMarkdown(GFM)はテーブル、タスクリスト、フェンス付きコードブロックを追加し、READMEファイルやGitHubページでよく必要とされます。 + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**この点が重要な理由:** `MarkdownFormatter.GIT` を明示的に選択することで、出力がGitHubがレンダリングするルールと同じになることを保証し、リポジトリでMarkdownが表示されたときの予期せぬ挙動を防ぎます。プレーンMarkdownが好みの場合は、`MarkdownFormatter.GIT` を `MarkdownFormatter.DEFAULT` に置き換えてください。 + +## ステップ3: HTMLドキュメントをMarkdownファイルに変換する + +Now invoke the conversion engine and write the result to the target path. + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**この点が重要な理由:** `Converter.convert` は重い処理を担当し、HTMLタグをMarkdownの対応物に変換し、必要に応じて画像を出力フォルダーにコピーして保持し、選択したフォーマッタを適用します。メソッドは成功時に `None` を返しますが、詳細なエラーレポートのために `ConversionException` をキャッチできます。 + +### 期待される出力 + +After running the script, `sample.md` will contain something like: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +The exact markdown reflects the structure of `sample.html`. Tables, images, and code blocks will be converted according to GFM rules. + +## 一般的なバリエーションとエッジケース + +| 状況 | 推奨される調整 | +|-----------|-------------------| +| **大きなHTMLファイル(>10 MB)** | ライブラリがサポートしている場合、Pythonの再帰制限を増やすか、`HTMLDocument.open_stream()` を使用して入力をストリーム処理してください。 | +| **絶対URLで参照される画像** | `md_options.embed_images = True` を設定して画像をBase‑64データURIとして埋め込むか、軽量な出力のためにリンクのままにしてください。 | +| **GFMではなくプレーンMarkdownが必要** | `md_options.formatter = MarkdownFormatter.DEFAULT` に変更してください。 | +| **カスタムCSSクラスを無視すべき** | `md_options.ignore_css_classes = ["unwanted-class"]` を使用してください。 | +| **CI/CDパイプラインで実行する場合** | スクリプトを `try/except` ブロックで囲み、失敗時に非ゼロステータスで終了させ、パイプラインが迅速に失敗できるようにしてください。 | + +### プロのコツ + +If you plan to convert many files in a batch, reuse a single `MarkdownSaveOptions` instance and only change the input/output paths inside a loop. This reduces object‑creation overhead and speeds up the process by ~15 %. + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## 他の言語でHTMLをMarkdownに変換する方法(簡単なメモ) + +While this tutorial focuses on **html to markdown python**, the same concepts apply to Java, C#, or JavaScript SDKs: create a document object, configure a markdown formatter, and invoke the converter. If you ever need to **HTMLをMarkdownにエクスポート** from a non‑Python environment, look for the equivalent `HtmlDocument`, `MarkdownSaveOptions`, and `Converter` classes in the language‑specific SDK. + +## 結論 + +You now know how to **HTMLからMarkdownを作成** with a concise Python script. The three‑step flow—load the HTML, set Git‑flavored options, and run the conversion—covers the core of any **convert html to markdown** workflow. From here you can: + +* スクリプトを静的サイトジェネレータに統合する。 +* CIパイプラインでドキュメント更新を自動化する。 +* カスタムの後処理(例:リンクの書き換えや見出しの調整)で変換を拡張する。 + +Feel free to experiment with the secondary options—**HTMLを変換する方法** with different formatters, or tweaking **HTMLをMarkdownにエクスポート** settings for images and tables. Happy converting! + +## 次に学ぶべきことは? + +The following tutorials cover closely related topics that build on the techniques demonstrated in this guide. Each resource includes complete working code examples with step-by-step explanations to help you master additional API features and explore alternative implementation approaches in your own projects. + +- [Java向け Aspose.HTMLでHTMLをMarkdownに変換](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [.NETでAspose.HTMLを使用してHTMLをMarkdownに変換](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [MarkdownをHTMLに変換 – PDF出力付きJavaガイド](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/japanese/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..e5f3d4d26 --- /dev/null +++ b/html/japanese/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,278 @@ +--- +category: general +date: 2026-08-22 +description: Python を使って数分で SVG から PDF を作成。SVG を PDF に変換する方法、SVG を PDF として保存する方法、そして信頼できる + SVG から PDF へのコンバータの使い方を学びましょう。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: ja +lastmod: 2026-08-22 +og_description: PythonでSVGからPDFを素早く作成。 このガイドでは、SVGをPDFに変換する方法、SVGからPDFへのコンバータの使用方法、そして単一のスクリプトでSVGをPDFとして保存する方法を示します。 +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: PythonでSVGからPDFを作成する – ステップバイステップチュートリアル +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: PythonでSVGからPDFを作成する方法 – 完全ガイド +url: /ja/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PythonでSVGからPDFを作成する方法 – 完全ガイド + +If you need to **create PDF from SVG** quickly, this tutorial shows you exactly how. We'll walk through converting an SVG file to a PDF using a popular SVG‑to‑PDF converter, so you can embed vector graphics in reports, invoices, or e‑books without leaving your Python code. + +You’ll learn how to **convert SVG to PDF**, manage scaling, preserve fonts, and finally **save SVG as PDF** with a single, reproducible script. No external command‑line tools are required—just a few lines of Python and the Aspose.SVG for Python library. + +## 前提条件 + +| 要件 | 理由 | +|------|------| +| Python 3.8+ | ライブラリは最新のPythonランタイムを対象としています。 | +| `aspose.svg` package | `SVGDocument`、`PdfSaveOptions`、`Converter` を提供します。`pip install aspose-svg` でインストールしてください。 | +| An SVG file (`vector.svg`) | 変換したい元のベクターグラフィックです。 | +| Write permission to the output folder | **save SVG as PDF** に必要です。 | + +以下のコマンドでライブラリをインストールできます: + +```bash +pip install aspose-svg +``` + +> **プロのコツ:** 仮想環境(`python -m venv venv`)を使用して依存関係を分離しましょう。 + +## 変換プロセスの概要 + +変換は3つのシンプルなステップで構成されます: + +1. ディスクから**SVGドキュメント**を読み込む。 +2. **PDF保存オプション**を作成する(ページサイズ、DPIなどをカスタマイズ可能)。 +3. **コンバータ**を呼び出してPDFファイルを生成する。 + +以下のセクションでは各ステップを分解し、コードがそのように書かれている*理由*を説明し、完全に実行可能なスクリプトを示します。 + +## Aspose.SVG for Python を使用してSVGからPDFを作成する + +このH2見出しは主要キーワード **create pdf from svg** を含んでおり、SEO要件を満たしています。 + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### これが機能する理由 + +* **`SVGDocument`** はSVG XMLを解析し、コンバータがレンダリングできるメモリ内表現を構築します。 +* **`PdfSaveOptions`** はPDF出力(ページサイズ、圧縮、DPI)を調整できます。デフォルトでも忠実なPDFが生成されるため、サンプルはすぐに動作します。 +* **`Converter.convert`** は主要な処理を行い、ベクターデータをPDFページにラスタライズしつつベクトルの忠実性を保持するため、任意のズームレベルでもPDFは鮮明です。 + +## カスタムページサイズでSVGをPDFに変換する + +特定のページサイズ(例:印刷レポート用のA4)が必要な場合は、`PdfSaveOptions` を調整します: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **エッジケース:** 一部のSVGは目的のPDFサイズと合わない `viewBox` を定義しています。`page_width`/`page_height` を上書きすることで、PDFがレイアウト期待通りに収まります。 + +## フォントを保持しながらSVGをPDFとして保存する + +SVGが外部フォントを参照している場合、コンバータがフォントにアクセスできるようにしてください。`.ttf` ファイルをSVGと同じディレクトリに置くか、カスタムフォントフォルダーを指定します: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +コンバータはフォントをPDFに直接埋め込むため、**svg file to pdf** 変換はどのマシンでも同一に見えます。 + +## バッチ変換: 多数のファイルをsvg file to pdfに変換する + +SVGアセットが多数入ったフォルダーを持つことがよくあります。以下のループは、ディレクトリ内のすべての `.svg` ファイルを処理する効率的な **svg to pdf converter** を示しています: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +このスニペットは、CIパイプラインや自動レポートジェネレータに統合できる実用的な **convert svg to pdf** ワークフローを示しています。 + +## 出力の検証 + +スクリプトを実行した後、生成されたPDFを任意のビューア(Adobe Reader、Chrome、Previewなど)で開きます。以下が確認できるはずです: + +* 任意のズームレベルでもシャープに描画されたベクタ形状。 +* フォントを提供した場合は埋め込まれ、SVGソースと一致するテキスト。 +* ラスタライズされたアーティファクトがない—変換が元のベクターデータを保持しているため。 + +フォントが欠落している場合は、フォントファイルが参照可能か、SVGが正しく(`font-family`属性で)参照しているかを再確認してください。 + +## よくある落とし穴と回避策 + +| 症状 | 考えられる原因 | 対策 | +|------|----------------|------| +| PDFページが空白 | SVGに外部リソース(画像、フォント)が見つからない | `fonts_folder` を提供し、リンクされた画像が同じディレクトリにあるか、絶対URLを使用してください。 | +| テキストがアウトラインとして表示 | フォントが埋め込まれていない | `pdf_options.embed_fonts = True`(デフォルト)を設定し、フォントファイルが存在することを確認してください。 | +| PDFが予想より大きい | DPIが高い、または画像が非圧縮 | `pdf_options.dpi` を下げるか、圧縮を有効にする: `pdf_options.compress = True`。 | +| SVGの寸法が切り取られる | `viewBox` がPDFページより大きい | `pdf_options.page_width`/`page_height` を調整するか、`svg_doc.set_viewport` でSVGをスケールしてください。 | + +## 完全なエンドツーエンド例 + +以下はエラーハンドリング、ロギング、オプションのコマンドライン引数を含む自己完結型スクリプトです。`svg_to_pdf.py` として保存し、`python svg_to_pdf.py` を実行してください。 + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +スクリプトを実行すると、**save SVG as PDF** 操作が生成され、より大規模な自動化パイプラインに組み込むことができます。 + +### 期待されるコンソール出力 + + + +## 次に学ぶべきことは? + +以下のチュートリアルは、本ガイドで示した手法を基にした密接に関連するトピックをカバーしています。各リソースには、ステップバイステップの解説付きの完全な動作コード例が含まれており、追加のAPI機能を習得し、独自プロジェクトで代替実装アプローチを探求するのに役立ちます。 + +- [Convert SVG to PDF in .NET with Aspose.HTML](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg to pdf java – Generate PDF from SVG with Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [Convierte SVG a PDF en .NET con Aspose.HTML](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/japanese/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/japanese/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..760e40db9 --- /dev/null +++ b/html/japanese/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,224 @@ +--- +category: general +date: 2026-08-22 +description: Pythonで大規模なHTMLをPDFに変換する際にストリーミングを有効にし、メモリ使用量を削減し、出力生成を高速化する方法。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: ja +lastmod: 2026-08-22 +og_description: Pythonで大規模なHTMLをPDFに変換する際にストリーミングを有効にし、メモリ使用量を削減し、出力生成を高速化する方法。 +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: PythonでHTMLからPDFへの変換にストリーミングを有効にする +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: PythonでHTMLをPDFに変換する際にストリーミングを有効にする方法 +url: /ja/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PythonでHTMLをPDFに変換する際のストリーミング有効化方法 + +大規模なHTML‑to‑PDF変換中に **ストリーミングを有効にする方法** が必要な場合、本ガイドでは正確な手順を示します。ストリーミングを有効にすることで、ドキュメント全体をメモリに読み込むことを回避でき、大きなファイルをHTMLからPDFに変換する際に重要です。 + +このガイドでは、ストリーミングを有効にする方法、PythonでHTMLをPDFに変換する方法、そして **大規模HTMLからPDFへの変換** のようなエッジケースの対処方法を学びます。ソリューションは人気のある `groupdocs-conversion`(または類似)ライブラリで動作しますが、概念はストリーミング対応のコンバータ全般に適用できます。 + +![Pythonを使用したHTMLからPDFへのストリーミング変換を示す図](streaming-diagram.png) + +## 必要なもの + +- Python 3.9 以上 +- `groupdocs-conversion`(または `PdfSaveOptions` にストリーミングフラグを提供する任意のライブラリ) +- PDFに変換したいHTMLファイル(例では `large.html` という大きなファイルを使用) + +これらの前提条件が揃っていれば、追加設定なしでコードを実行できます。 + +## 手順 1: 変換ライブラリのインストール + +まず、`HTMLDocument`、`PdfSaveOptions`、`Converter` を提供する Python パッケージをインストールします。最も一般的な選択肢は **GroupDocs.Conversion** SDK です: + +```bash +pip install groupdocs-conversion +``` + +> **プロのコツ:** 仮想環境 (`python -m venv .venv`) を使用して依存関係を分離しましょう。 + +## 手順 2: 変換したいHTMLドキュメントを読み込む + +ソース HTML の読み込みはシンプルです。`HTMLDocument` クラスはディスク上のファイルを読み取り、変換の準備を行います。 + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +`HTMLDocument` オブジェクトは画像や CSS などの外部リソースを含む HTML 全体のマークアップを表します。これは **HTMLからPDFへの変換** 操作の出発点です。 + +## 手順 3: PDF保存オプションを作成し、ストリーミングを有効化する + +**ストリーミングを有効にする方法** の核心はここです。PDF 全体をメモリにバッファリングする代わりに、コンバータはデータを直接出力ファイルに書き込みます。 + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +`enable_streaming` を `True` に設定すると、ライブラリは書き込みスルー方式を採用し、RAM 使用量を劇的に削減します—**大規模HTMLからPDFへの変換** シナリオで特に重要です。 + +## 手順 4: 設定したオプションを使用してHTMLドキュメントをPDFに変換する + +いよいよ変換を実行します。`Converter.convert` メソッドはソースドキュメント、オプションオブジェクト、そして出力先パスを受け取ります。 + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +この呼び出しが完了すると、`large.pdf` にストリーミングしながら生成された PDF が格納されます。プロセス全体は、OS がデータを段階的にファイルシステムへフラッシュできるため、非ストリーミング変換よりも速く完了することが一般的です。 + +### 期待される出力 + +スクリプトを実行すると、元の HTML の内容と同等のサイズの PDF ファイルが生成されます。任意の PDF ビューアで結果を確認できます: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## 大規模HTMLからPDFへの変換でストリーミングが重要な理由 + +**HTMLからPDFへの変換** をストリーミングなしで行うと、ライブラリは最初に PDF 全体を RAM に構築してからディスクに書き込みます。ページが小規模であれば問題ありませんが、**大規模HTMLからPDFへの変換**(例: 画像が多数含まれる 10 MB の HTML レポート)では、典型的なサーバーレス関数や低メモリコンテナのメモリ上限を超える可能性があります。 + +ストリーミングを有効にすると、次の 3 つの問題が解決します: + +1. **メモリ効率** – RAM に保持するバッファはごく小さく抑えられます。 +2. **実感的な高速化** – ファイルが生成中でもディスクに出力されるため、下流プロセスが早期に読み取りを開始できます。 +3. **スケーラビリティ** – ホストのメモリを使い果たすことなく、複数の変換を並行して実行できます。 + +## よくある落とし穴と回避方法 + +| 症状 | 主な原因 | 対策 | +|------|----------|------| +| 変換中の `MemoryError` | ストリーミングフラグが設定されていない、またはライブラリのバージョンが古い | `pdf_opts.enable_streaming = True` を設定し、最新の SDK にアップグレードしてください (`pip install --upgrade groupdocs-conversion`) | +| PDFに画像が欠落 | 相対パスの画像が解決できない | `HTMLDocument` にベースディレクトリを渡すか、画像を base64 で埋め込んでください | +| 出力PDFが空白 | HTMLファイルが見つからない、または読み取り不可 | `"YOUR_DIRECTORY/large.html"` のパスを確認し、ファイル権限をチェックしてください | +| 変換が無期限にハング | 大きな外部リソース(フォント、CSS)がレンダリングをブロック | 外部アセットを事前にダウンロードするか、ヘッドレスブラウザでインライン化してください | + +### エッジケース: 文字列からHTMLを変換する + +HTML コンテンツがファイルではなくメモリ上にある場合でも、**ストリーミングを有効にする方法** は同様です。生の HTML を受け取る `HTMLDocument` コンストラクタで文字列をラップします: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +ストリーミングの挙動は同一で、SDK が PDF を段階的に書き出すためです。 + +## コピー&ペーストできる完全スクリプト + +以下は、ここまで説明したすべての手順を組み込んだ、すぐに実行可能な完全例です。`YOUR_DIRECTORY` を実際のパスに置き換えてください。 + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +`python full_example.py` を実行すると、ストリーミング方式で `large.pdf` が生成されます。 + +## まとめ + +- PythonでHTML‑to‑PDF変換の **ストリーミングを有効にする方法** が分かりました。 +- スクリプトは **HTMLからPDFへの変換** 全体のワークフローを示し、**大規模HTMLからPDFへの変換** ワークロードを効率的に処理します。 +- `PdfSaveOptions.enable_streaming = True` を設定することで、コンバータは出力を段階的に書き込み、**HTMLをPDFへストリーミング** する推奨手法となります。 + +## 次に探求すべきこと + +- CSS3 と JavaScript をサポートする **HTML to PDF Python** ライブラリ(例: `WeasyPrint`, `pdfkit`)。 +- 追加の `PdfSaveOptions` 設定で生成された PDF にパスワード保護や暗号化を追加する。 +- キューシステム(Celery、RabbitMQ)で複数の変換を並列化し、メモリ使用量を抑える。 + +さまざまな HTML ソース、ページサイズ、PDF メタデータで実験してみてください。ストリーミングを活用すれば、パフォーマンスを犠牲にせず、さらに大きなドキュメントも扱えるようになります。コーディングを楽しんでください! + +## 次に学ぶべきことは? + +以下のチュートリアルは、本ガイドで示した手法を基にした、密接に関連するトピックをカバーしています。各リソースには、完全な動作コード例とステップバイステップの解説が含まれており、追加の API 機能を習得したり、独自プロジェクトで代替実装アプローチを探求したりするのに役立ちます。 + +- [JavaでHTMLをPDFに変換する方法 – Aspose.HTML for Java を使用](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [HTMLからPDFへの並列変換のための固定スレッドプール作成](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [Aspose HTMLでJavaScriptを有効にする方法 – HTMLをロードしてテキスト取得](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/japanese/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..277824942 --- /dev/null +++ b/html/japanese/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-08-22 +description: HTMLからリンクをエクスポートし、段落を含むMarkdownファイルに変換する方法。HTMLからMarkdownへの変換ステップバイステップガイド。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: ja +lastmod: 2026-08-22 +og_description: HTMLドキュメントからリンクをエクスポートし、段落も含めてMarkdownファイルに変換する方法。信頼できるHTMLからMarkdownへの変換のために、この完全なチュートリアルをご覧ください。 +og_image_alt: How to export links while converting HTML to Markdown +og_title: HTMLをMarkdownに変換しながらリンクをエクスポートする方法 – ステップバイステップガイド +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: HTML を Markdown に変換する際にリンクをエクスポートする方法 +url: /ja/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML を Markdown に変換しながらリンクをエクスポートする方法 + +HTML ページから **リンクのエクスポート方法** を取得し、結果をクリーンな **html to markdown ファイル** に変換したい場合、このガイドでは正確な手順を示します。また、**段落の抽出方法** も学べるので、Markdown 出力に必要な主要コンテンツが含まれます。チュートリアルの最後には、**how to convert html** を Markdown に変換する質問に対して、すぐに実行できるスクリプトで答えられるようになります。 + +Web コンテンツを静的サイト、ドキュメントポータル、またはヘッドレス CMS バックエンドに移行する際、リンクのエクスポートや段落の抽出は一般的なタスクです。以下のアプローチは GroupDocs Conversion SDK for Python で動作しますが、エクスポート機能を設定できる任意のライブラリにも適用できます。 + +--- + +## 必要なもの + +- Python 3.9 以上 +- `groupdocs-conversion` パッケージ(`pip install groupdocs-conversion` でインストール) +- 処理したい HTML ファイル(例: `input.html`) +- Python スクリプトの基本的な知識 + +--- + +## HTML から Markdown への変換でリンクをエクスポートする方法 + +最初の重要なステップは、変換を設定して **html to markdown ファイル** に書き込む機能をリンクと段落だけに限定することです。SDK では `MarkdownFeature` のビットマスクを設定でき、`LINKS` と `PARAGRAPHS` を組み合わせて出力を絞り込みます。 + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### なぜこれが機能するのか + +- **`HTMLDocument`** は元のファイルを解析し、コンバータが走査できる DOM を構築します。 +- **`MarkdownSaveOptions`** は SDK が書き出す内容を細かく制御できます。`features` を `LINKS | PARAGRAPHS` に設定すると、画像、テーブル、スクリプトなどが無視され、最終的な **html to markdown ファイル** のノイズが減ります。 +- **`Converter.convert`** が実際の変換処理を行います。機能マスクを尊重し、アンカータグ(``)と段落タグ(`

`)を抽出して、標準的な Markdown 構文で書き出します。 + +--- + +## 完全なコンテンツで HTML を Markdown に変換する方法(オプション) + +後でページ全体(リンクや段落だけでなく)を必要とする場合は、機能マスクを調整するだけです: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +同じ変換を実行すると、元のレイアウトを反映した完全な **html to markdown ファイル** が生成されます。これにより、**how to convert html** を柔軟に実現でき、機能フラグを切り替えるだけで出力を制御できます。 + +--- + +## 段落だけを抽出する方法 + +記事のテキスト本文だけが必要で、ハイパーリンクは不要な場合があります。そのときはマスクを `PARAGRAPHS` のみへ設定して段落だけを抽出できます: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +生成された Markdown にはリンクマークアップがなく、クリーンで改行されたテキストだけが含まれます。このスニペットは **how to extract paragraphs** の質問に対する回答となります。 + +--- + +## よくある落とし穴と回避方法 + +| Issue | Why it happens | Fix | +|-------|----------------|-----| +| Empty output file | ソース HTML に選択した機能に一致する `` または `

` タグが存在しない。 | HTML 構造を確認するか、機能マスクを広げる(例: `HEADINGS` を含める)。 | +| Encoding problems | HTML が非 UTF‑8 文字セットを使用しており、SDK が正しく読み取れない。 | `HTMLDocument` に明示的なエンコーディングを渡す。例: `HTMLDocument(path, encoding="iso-8859-1")`。 | +| Over‑writing existing markdown | スクリプトを複数回実行すると前のファイルが上書きされる。 | 出力ファイル名にタイムスタンプを付加するか、書き込み前に `os.path.exists` をチェックする。 | + +**Pro tip:** フォルダ内の多数のファイルを処理する場合、変換ロジックをループで包み、各結果をログに記録してください。これにより明確な監査トレイルが得られ、失敗後の再開が容易になります。 + +--- + +## コピー&ペーストできる完全スクリプト + +以下は単体で動作する Python ファイル(`convert_links_paragraphs.py`)です。コードを編集せずに入力・出力パスを指定できるよう、引数パースも組み込んであります。 + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**How to run** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +上記コマンドは **how to export links** と **how to extract paragraphs** を同時に実行する例です。`--links` または `--paragraphs` を省略すれば、必要に応じて出力を調整できます。 + +--- + +## 検証 – 出力結果の例 + +以下のシンプルな HTML(`input.html`)を対象にします: + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +両方のフラグを付けてスクリプトを実行すると `links_and_paragraphs.md` が生成されます: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +結果を見ると、2 つの段落とハイパーリンクだけが残っていることが分かります。これは **how to export links** を検索しながら **convert html to markdown** を実行したときに期待した通りの出力です。 + +--- + +## 次のステップと関連トピック + +- **How to convert html to markdown** with images: マスクに `MarkdownFeature.IMAGES` を追加。 +- **How to extract paragraphs** and then post‑process + +## 次に学ぶべきことは? + +以下のチュートリアルは、本ガイドで示した手法に密接に関連するトピックを扱っています。各リソースには完全な動作コード例とステップバイステップの解説が含まれており、追加の API 機能を習得したり、独自プロジェクトで代替実装アプローチを探求したりするのに役立ちます。 + +- [HTML を Markdown に変換する際のオフセット設定方法(Java)](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown から HTML への変換(Java) - Aspose.HTML を使用](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [HTML を Markdown に変換 – 完全 C# ガイド](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/japanese/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..ec1cf2352 --- /dev/null +++ b/html/japanese/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,278 @@ +--- +category: general +date: 2026-08-22 +description: PythonでAspose.HTMLを使用してHTMLを読み込む方法 – リソースの深さを制限し、変換や編集のためにドキュメントを準備する +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: ja +lastmod: 2026-08-22 +og_description: PythonでAspose.HTMLを使用してHTMLをロードし、リソース処理の深さを設定し、変換または編集のためにドキュメントを準備する方法。 +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: Aspose.HTMLでHTMLを読み込む方法 – Pythonガイド +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: PythonでAspose.HTMLを使用してHTMLをロードする方法 +url: /ja/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PythonでAspose.HTMLを使用してHTMLをロードする方法 + +PythonプロジェクトでHTMLを迅速かつ安全に **HTMLのロード方法** する必要がある場合、このガイドでは正確な手順を示します。最初の2文が終わる頃には、リソース処理の設定方法、ファイルのロード方法、そしてさらに **HTML conversion** や編集のためにプロセスを準備する方法が分かります。 + +大きなページや複雑なページを読み込む際、外部リソース(画像、スクリプト、CSS)が深い再帰やネットワーク遅延を引き起こすため、単純なパーサーでは失敗しがちです。このチュートリアルでは **Aspose.HTML for Python** を使用した堅牢なパターンを取り上げ、 **HTMLDocument class** を実演し、 **max_handling_depth** を設定する重要性を説明します。 + +以下の内容を順に実践します: + +* Aspose.HTML パッケージのインストール +* `ResourceHandlingOptions` インスタンスを作成し深さを制限 +* `HTMLDocument` クラスを使用してページをロード +* PDF、PNG への変換やその他の操作のためにドキュメントを準備 + +Aspose.HTML の事前知識は不要です。基本的な Python の知識があれば始められます。 + +--- + +## PythonでAspose.HTMLを使用してHTMLをロードする方法 + +このソリューションの核は、**ResourceHandlingOptions** と **HTMLDocument class** を組み合わせた 3 ステップのパターンです。ハンドリング深さを制限することで、ページが多数の入れ子リソースを参照した際の過剰なネットワーク呼び出しを防止します。 + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### なぜこれが機能するのか + +* **`ResourceHandlingOptions`** は、パーサーが追従できる外部リソースの階層数を指示します。`max_handling_depth = 3` と設定すると、3 回のホップでローダーが停止します。多くのサイトに対して十分ですが、無限ループから保護します。 +* **`HTMLDocument`** はファイルを読み込み、オプションを適用し、クエリや変更、レンダリングが可能なインメモリ DOM を構築します。 +* オプションの変換スニペットは、ロードしたドキュメントが **HTML conversion** 機能(例:PDF への保存)とどのように統合されるかを示します。 + +--- + +## ResourceHandlingOptions の理解 + +`ResourceHandlingOptions` は **Aspose.HTML for Python** の一部で、ネットワークアクティビティを細かく制御できます。 + +| プロパティ | 目的 | 典型的な値 | +|--------------------------|------------------------------------------------|------------| +| `max_handling_depth` | リンクされたリソースの最大再帰深度 | `3` (default) | +| `allow_external_resources` | 外部 CSS、JS、画像をダウンロードするかどうか | `True` | +| `timeout` | リクエストごとのネットワークタイムアウト(秒) | `30` | + +**実用的なヒント:** 対象ページがローカル資産のみを参照することが分かっている場合、`allow_external_resources = False` に設定するとロードが高速化し、不要な HTTP 呼び出しを回避できます。 + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## HTMLDocument クラスの使用 + +**HTMLDocument class** はすべての Aspose.HTML 操作のエントリーポイントです。インスタンス化すると、以下が可能になります: + +* `doc.root` で DOM にアクセス +* CSS セレクタで要素を検索(`doc.query_selector_all("img")`) +* ラスタ形式へページをレンダリング(`doc.save("page.png")`) +* PDF に変換(`doc.save("page.pdf", PDFSaveOptions())`) + +以下は、ロード後にすべての画像 `src` 属性を抽出する短いスニペットです: + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**必要になる理由:** **HTML conversion** を行う際、別フォーマットへレンダリングする前に画像 URL を調整または置換する必要があることが多いです。DOM に直接アクセスすればその柔軟性が得られます。 + +--- + +## HTML をロードした後の次のステップ + +ドキュメントがメモリ上にあるので、以下の一般的なワークフローから選択できます: + +1. **PDF に変換** – アーカイブや印刷に最適。 +2. **PNG/JPEG にレンダリング** – サムネイルやビジュアルプレビューに便利。 +3. **DOM を編集** – 保存前に要素を挿入、削除、変更。 +4. **テキストを抽出** – インデックス作成や分析のためにプレーンテキストを取得。 + +### 例: カスタムページサイズで PDF に変換 + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**期待される出力:** 作業ディレクトリに `big_page.pdf` という名前のファイルが生成され、許可されたすべてのリソースが適用された HTML がレンダリングされます。`max_handling_depth` を 3 に設定している場合、3 階層までのリソースのみが埋め込まれ、PDF のサイズが適切に抑えられます。 + +--- + +## よくある落とし穴と回避策 + +| 症状 | 原因 | 対策 | +|-----------------------------------|----------------------------------------|------| +| レンダリングされた PDF に画像が欠落 | `allow_external_resources` が `False` に設定されている | 外部リソースを有効化するか、画像をローカルに埋め込む | +| ロード中に `TimeoutError` が発生 | ネットワーク遅延が `timeout` を超えた | `rh_opts.timeout` を増やすか、事前に資産をダウンロード | +| 予期しない CSS スタイルが適用される | 深さ制限によりリンクされたスタイルシートが読み込まれなかった | `max_handling_depth` を上げるか、必要な CSS を手動で追加 | +| 非 UTF‑8 ファイルで `UnicodeDecodeError` が発生 | HTML ファイルが別のエンコーディングを使用している | `HTMLDocument` 作成時に `encoding="windows-1252"` を指定 | + +--- + +## 完全な実行可能サンプル + +以下は `load_html_demo.py` という名前のファイルにコピー&ペーストできる、自己完結型スクリプトです。インストール手順、エラーハンドリング、最終検証ステップが含まれています。 + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +**スクリプトの実行方法** + +```bash +python load_html_demo.py +``` + +コンソールにロード成功のメッセージ、画像 URL の一覧、PDF 変換の成功メッセージが表示されます。生成された `big_page.pdf` は、設定した **max_handling_depth** によって制限された HTML コンテンツを反映します。 + +--- + +## 結論 + +本チュートリアルでは **Aspose.HTML for Python** を使用した **HTMLのロード方法**、`max_handling_depth` を制御する **ResourceHandlingOptions** の設定、画像抽出や PDF 変換といった実用的なロード後アクションを取り上げました。手順に従うことで、Web スクレイパー、文書アーカイブサービス、動的レポートジェネレータなど、あらゆる **HTML conversion** ワークフローの信頼できる基盤が手に入ります。 + +**次のステップ** + +* `max_handling_depth` の値を色々試して、完全性とパフォーマンスのバランスを調整。 +* ドキュメントを別形式に変換してみる + +## 次に学ぶべきことは? + +以下のチュートリアルは、本ガイドで示した手法を基にした密接に関連するトピックを扱っています。各リソースには完全な動作コード例とステップバイステップの解説が含まれており、追加の API 機能を習得したり、独自プロジェクトで代替実装アプローチを探求したりするのに役立ちます。 + +- [HTML を Java で解析する方法 – ロード、クエリ、要素カウント](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [Aspose.HTML for Java で HTML ドキュメントツリーを編集する方法](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [Aspose.HTML for Java でドキュメントロードイベントを処理する方法](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/korean/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..1988acd1a --- /dev/null +++ b/html/korean/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,192 @@ +--- +category: general +date: 2026-08-22 +description: Aspose.HTML을 사용하여 Python에서 HTML을 PDF로 변환하는 방법 – HTML 파일에서 PDF를 만들고, HTML + 코드를 사용해 PDF를 생성하며, HTML을 PDF로 빠르게 저장하는 방법을 배워보세요. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: ko +lastmod: 2026-08-22 +og_description: Aspose.HTML을 사용하여 Python에서 HTML을 PDF로 변환하는 방법. 이 튜토리얼에서는 HTML 파일에서 + PDF를 생성하고, HTML 코드에서 PDF를 생성하며, HTML을 PDF로 저장하는 방법을 보여줍니다. +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: Python에서 HTML을 PDF로 변환하는 방법 – 단계별 가이드 +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: Python에서 Aspose.HTML을 사용하여 HTML을 PDF로 변환하는 방법 +url: /ko/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Python에서 Aspose.HTML을 사용하여 HTML을 PDF로 변환하는 방법 + +HTML을 PDF로 빠르게 변환해야 한다면, 이 가이드는 완전하고 바로 실행할 수 있는 솔루션을 보여줍니다. Aspose.HTML의 간단한 API를 사용하여 **create pdf from html file**, **generate pdf from html code**, 그리고 **save html as pdf python**을 수행하는 방법을 확인할 수 있습니다. + +우리는 모든 단계를 차례대로 살펴보고, 각 라인이 왜 중요한지 설명하며, 일반적인 함정을 다룹니다. 따라서 코드를 어떤 프로젝트에도 적용할 수 있습니다. 외부 도구 없이 Python 몇 줄만으로 가능합니다. + +## 사전 요구 사항 + +* Python 3.8 이상 설치되어 있어야 합니다. +* 활성화된 Aspose.HTML for Python 라이선스(또는 무료 평가 키) 보유. +* `aspose.html` 패키지가 설치되어 있어야 합니다: + +```bash +pip install aspose-html +``` + +이러한 준비가 갖춰져 있으면 변환 과정에서 런타임 오류가 발생하지 않습니다. + +## 단계 1: HTML 문서 로드 (create pdf from html file) + +첫 번째 작업은 원본 HTML을 읽는 것입니다. Aspose.HTML은 `HTMLDocument` 클래스로 문서를 나타내며, 파일 I/O, 네트워크 가져오기 및 DOM 파싱을 추상화합니다. + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*왜 중요한가:* +`HTMLDocument`는 HTML을 로드하고, 상대 리소스(이미지, CSS, 폰트)를 해결하며, 변환기가 정확하게 렌더링할 수 있는 DOM을 구축합니다. 이 단계를 건너뛰거나 단순 문자열을 사용하면 이러한 리소스 해결이 누락됩니다. + +## 단계 2: PDF 저장 옵션 구성 (save html as pdf python) + +Aspose.HTML를 사용하면 `PdfSaveOptions`를 통해 PDF 출력물을 세밀하게 조정할 수 있습니다. 기본 설정만으로도 고품질 PDF가 생성되지만, 필요에 따라 페이지 크기, 압축 또는 메타데이터를 조정할 수 있습니다. + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*왜 중요한가:* +기본값을 유지하더라도 옵션 객체를 생성하면 코드가 확장 가능해집니다. 향후 PDF 비밀번호 삽입과 같은 변경도 스크립트를 재구성하지 않고 추가할 수 있습니다. + +## 단계 3: 변환 수행 (convert html to pdf python) + +`Converter.convert` 메서드는 HTML 문서와 PDF 옵션을 연결하고, 지정한 파일 경로에 결과를 기록합니다. + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*왜 중요한가:* +`Converter.convert`는 렌더링 엔진을 실행하여 HTML/CSS를 PDF 벡터로 래스터화합니다. 복잡한 레이아웃, 포함된 폰트, SVG 그래픽을 자동으로 처리합니다—이는 수동 라이브러리에서는 종종 놓치는 부분입니다. + +### 예상 출력 + +스크립트를 실행하면 동일한 디렉터리에 `sample.pdf`가 생성됩니다. PDF 뷰어로 열면 `sample.html`의 스타일, 이미지, 페이지 구분 등을 정확히 재현한 것을 확인할 수 있습니다. + +## 일반적인 변형 및 엣지 케이스 + +| 상황 | 처리 방법 | +|-----------|-----------------| +| **HTML이 문자열이며 파일이 아닙니다** | `HTMLDocument.from_string(html_string)`를 사용하고 경로에서 로드하는 대신 사용합니다. | +| **비밀번호로 보호된 PDF가 필요합니다** | 변환 전에 `pdf_options.encryption.password = "yourPassword"`를 설정합니다. | +| **대용량 HTML 파일이 메모리 압박을 일으킵니다** | 스트리밍 모드를 활성화합니다: `pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`. | +| **사용자 정의 폰트가 누락되었습니다** | 폰트 폴더를 등록합니다: `pdf_options.fonts_folder = "path/to/fonts"`.| + +이러한 변형은 핵심 워크플로우는 동일하게 유지하면서 Aspose.HTML API의 유연성을 보여줍니다. + +## 전체 스크립트 (generate pdf from html code) + +아래는 모든 단계를 포함한 완전한 실행 가능한 프로그램입니다. 복사하여 붙여넣고 `YOUR_DIRECTORY`를 실제 폴더 경로로 바꾼 뒤 실행하세요. + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +다음 명령으로 실행합니다: + +```bash +python convert_html_to_pdf.py +``` + +확인 메시지가 표시되고 PDF가 원본 HTML 옆에 생성됩니다. + +## 문제 해결 팁 (pro tip) + +* **Missing images or CSS** – HTML 파일이 절대 URL을 사용하거나 `YOUR_DIRECTORY`에 대해 상대 경로가 올바른지 확인하세요. +* **Unicode characters appear as squares** – `pdf_options.fonts_folder`를 통해 필요한 폰트를 포함하세요. +* **Conversion is slow** – 시스템 폰트 카탈로그 스캔을 피하려면 `pdf_options.use_system_fonts = False`를 설정하세요. + +## 결론 + +이제 Aspose.HTML을 사용하여 Python에서 **how to convert html to pdf**를 수행하는 방법을 알게 되었습니다. HTML 파일을 로드하고 고품질 PDF를 저장하는 전체 흐름을 이해했습니다. 동일한 패턴을 사용하면 **create pdf from html file**, **generate pdf from html code**, 그리고 **save html as pdf python**을 어떤 자동화 워크플로우에서도 활용할 수 있습니다. + +다음으로 탐색해 볼 수 있습니다: + +* 워터마크 또는 머리글/바닥글 추가 (키워드: *create pdf from html file*). +* 로컬 파일 대신 실시간 URL 변환 (키워드: *convert html to pdf python*). +* Flask 또는 Django API에 변환기를 통합하여 필요 시 PDF를 제공합니다. + +옵션을 자유롭게 실험해 보시고, 즐거운 PDF 생성 되세요! + +## 다음에 배울 내용은? + +다음 튜토리얼은 이 가이드에서 보여준 기술을 기반으로 하는 밀접한 주제를 다룹니다. 각 자료에는 완전한 동작 코드 예제와 단계별 설명이 포함되어 있어 추가 API 기능을 마스터하고 프로젝트에서 대체 구현 방식을 탐색하는 데 도움이 됩니다. + +- [Convert HTML to PDF with Aspose.HTML – Full Manipulation Guide](/html/english/) +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Convert HTML to PDF in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-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/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/korean/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..26a33ceb5 --- /dev/null +++ b/html/korean/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-08-22 +description: Python을 사용하여 HTML 파일에서 마크다운을 만드는 방법을 배워보세요. 이 단계별 가이드는 신뢰할 수 있는 라이브러리를 + 사용해 HTML을 마크다운으로 변환하는 방법을 보여줍니다. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: ko +lastmod: 2026-08-22 +og_description: Python을 사용하여 HTML 파일에서 마크다운을 만드는 방법. 검증된 라이브러리를 활용해 HTML을 마크다운으로 빠르게 + 변환하는 가이드를 따라보세요. +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: Python에서 HTML을 마크다운으로 변환하는 방법 – 완전 가이드 +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: Python에서 HTML을 마크다운으로 변환하는 방법 – 완전 가이드 +url: /ko/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Python에서 HTML을 마크다운으로 변환하는 방법 – 완전 가이드 + +기존 웹 콘텐츠에서 **마크다운을 만드는 방법**을 알아야 한다면, Python 몇 줄만으로 HTML 파일을 마크다운으로 변환할 수 있습니다. 이 튜토리얼에서는 Windows, macOS, Linux에서 동작하는 전용 **html to markdown library**를 사용해 **convert html to markdown** 과정을 단계별로 안내합니다. + +라이브러리 설치, HTML 문서 로드, Git‑flavored markdown 옵션 설정, 결과를 디스크에 저장하는 방법을 배우게 됩니다. 가이드를 마치면 **html file to markdown**을 자동으로 변환할 수 있게 되며, 이는 정적 사이트 생성기, 문서 파이프라인, 콘텐츠 마이그레이션 프로젝트에 유용합니다. + +## 사전 요구 사항 + +* Python 3.8 이상이 설치되어 있음 (`python --version`으로 확인). +* 터미널 또는 명령 프롬프트에 접근 가능. +* 변환하려는 HTML 파일 (`sample.html` 예시 사용). +* 필요한 패키지를 설치하기 위한 인터넷 연결. + +코드 예제는 **GroupDocs.Conversion for Python** 라이브러리를 사용하며, 이후에 보여지는 `HTMLDocument`, `MarkdownSaveOptions`, `Converter` 클래스를 제공합니다. 동일한 개념은 `markdownify` 또는 `html2text`와 같은 다른 **html to markdown python** 패키지에도 적용되며, 차이점은 import 문뿐입니다. + +## 마크다운 만들기 – 단계 1: html to markdown python 라이브러리 설치 + +첫 번째 작업은 변환 라이브러리를 환경에 추가하는 것입니다. 터미널에서 다음 pip 명령을 실행하세요: + +```bash +pip install groupdocs-conversion +``` + +> **Pro tip:** 가상 환경(`python -m venv .venv`)을 사용하여 전역 Python 설치와 의존성을 분리하세요. + +패키지를 설치하면 변환 과정에 필요한 `HTMLDocument`, `MarkdownSaveOptions`, `Converter` 클래스를 사용할 수 있습니다. + +## HTML을 마크다운으로 변환 – 단계 2: HTML 문서 로드 + +라이브러리를 설치한 후, 필요한 클래스를 import하고 소스 파일을 가리키는 `HTMLDocument` 인스턴스를 생성합니다. + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +`HTMLDocument` 객체는 파일을 읽고 변환을 위해 준비합니다. 파일이 존재하지 않으면 생성자가 `FileNotFoundError`를 발생시키므로 경로가 올바른지 확인하세요. + +## html 파일을 마크다운으로 변환 – 단계 3: Git‑flavored markdown 옵션 구성 + +많은 프로젝트가 테이블, 작업 목록, 취소선 구문을 지원하는 Git‑flavored markdown을 선호합니다. 라이브러리는 `MarkdownSaveOptions`의 `git` 속성을 통해 이 프리셋을 활성화할 수 있게 합니다. + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +`git = True`로 설정하면 변환기가 GitHub, GitLab, Bitbucket에서 올바르게 렌더링되는 구문을 출력합니다. 일반 마크다운이 필요하면 플래그를 `False`로 두세요. + +## 마크다운 출력 저장 – 단계 4: html to markdown 라이브러리로 결과 쓰기 + +마지막으로 `Converter.convert` 메서드를 호출하고, 소스 문서, 옵션 객체, 대상 경로를 전달합니다. + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +스크립트가 완료되면 `git_flavored.md`에 `sample.html`의 마크다운 변환 결과가 들어갑니다. 파일을 어떤 편집기로든 열거나 정적 사이트 생성기에 바로 전달할 수 있습니다. + +### 예상 출력 + +`sample.html`에 간단한 제목과 단락이 포함되어 있다고 가정하면, 생성된 마크다운은 다음과 같을 수 있습니다: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +원본 HTML에 테이블, 리스트, 코드 블록이 포함되어 있으면, Git‑flavored 프리셋이 해당 구조를 적절한 마크다운 구문으로 보존합니다. + +## html to markdown 라이브러리 이해하기 + +**GroupDocs.Conversion** 라이브러리는 수동으로 처리해야 할 파싱 및 렌더링 세부 사항을 추상화합니다. 주요 기능: + +* 가능한 경우 CSS 기반 스타일링을 보존합니다(예: 굵게, 기울임). +* 불필요한 HTML 엔티티 없이 깔끔하고 읽기 쉬운 마크다운을 생성합니다. +* 배치 변환을 지원하여 동일한 코드를 사용해 HTML 파일이 들어있는 디렉터리를 반복 처리할 수 있습니다. + +보다 가벼운 솔루션을 원한다면 `markdownify` 패키지가 단일 함수 API를 제공합니다: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +두 접근 방식 모두 동일한 최종 목표인 **convert html to markdown**를 달성하지만, GroupDocs 옵션은 출력 형식에 대한 더 많은 제어를 제공하고 대규모 문서 처리 파이프라인에 쉽게 통합됩니다. + +## 흔히 발생하는 문제와 회피 방법 + +| Issue | Why it occurs | Fix | +|-------|---------------|-----| +| 마크다운에서 이미지 누락 | 변환기는 이미지 URL만 포함하고 파일을 삽입하지 않습니다. | 이미지 파일이 마크다운 위치에서 접근 가능하도록 하거나 출력 파일과 함께 복사하세요. | +| 깨진 상대 링크 | HTML이 상대 경로를 사용하면 변환 후에 유효하지 않을 수 있습니다. | `md_options.base_path`(가능한 경우)를 사용해 링크를 재작성하거나, 후처리 스크립트를 실행해 경로를 조정하세요. | +| 유니코드 문자가 이스케이프됨 | 일부 라이브러리는 비 ASCII 문자를 이스케이프합니다. | `md_options.encode_utf8 = True`(또는 동등한 플래그)를 설정해 문자를 그대로 유지하세요. | + +이러한 문제를 초기에 해결하면 수십에서 수백 개의 파일로 변환을 확장할 때 시간을 절약할 수 있습니다. + +## 전체 실행 가능한 예제 + +아래는 복사·수정·즉시 실행할 수 있는 독립형 스크립트입니다. `YOUR_DIRECTORY`를 실제 폴더 경로로 교체하세요. + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +스크립트를 실행하세요: + +```bash +python markdown_from_html.py +``` + +확인 메시지와 함께 HTML의 마크다운 버전이 들어있는 새로운 `git_flavored.md` 파일이 생성됩니다. + +## 결론 + +이제 Python을 사용해 HTML 소스에서 **마크다운을 만드는 방법**을 알게 되었습니다. 이 가이드는 신뢰할 수 있는 **html to markdown library** 설치, **html file to markdown** 로드, **html to markdown python** 옵션 구성, 결과 저장을 다루었습니다. 이 기반을 통해 문서 파이프라인 자동화, 레거시 웹 페이지 마이그레이션, 정적 사이트 생성기용 콘텐츠 생성 등을 자동화할 수 있습니다. + +**다음 단계** + +* HTML 파일이 들어있는 폴더를 순회하며 배치 변환을 시도해 보세요. +* `MarkdownSaveOptions`를 커스터마이징해 제목 스타일, 리스트 포맷, 이미지 처리를 제어하세요. +* 이 스크립트를 CI/CD 워크플로와 결합해 마크다운 문서를 자동으로 최신 상태로 유지하세요. + +변환을 즐기세요! + +## 다음에 배울 내용은? + +다음 튜토리얼들은 이 가이드에서 시연한 기술을 기반으로 하는 밀접한 관련 주제를 다룹니다. 각 자료는 완전한 코드 예제와 단계별 설명을 포함해 추가 API 기능을 숙달하고 프로젝트에서 대체 구현 방식을 탐색하도록 돕습니다. + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/korean/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..4b7b270f0 --- /dev/null +++ b/html/korean/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-08-22 +description: Python에서 HTML을 마크다운으로 변환하는 간단한 3단계 스크립트 만드는 방법을 배워보세요. 변환 옵션과 내보내기 팁이 + 포함되어 있습니다. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: ko +lastmod: 2026-08-22 +og_description: Python으로 HTML을 단 3줄만에 마크다운으로 변환하세요. 이 가이드는 변환 방법, 포맷 옵션, 그리고 HTML을 + 효율적으로 마크다운으로 내보내는 방법을 보여줍니다. +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: Python에서 HTML을 마크다운으로 변환하기 – 단계별 가이드 +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: Python을 사용하여 HTML에서 마크다운을 만드는 방법 +url: /ko/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML을 Python으로 마크다운 만들기 + +HTML에서 **마크다운을 생성**해야 한다면, 이 짧은 가이드는 Python으로 정확히 수행하는 방법을 보여줍니다. HTML 파일을 로드하고, Git‑flavored Markdown 출력을 구성하고, 결과를 디스크에 쓰는 명확한 3단계 스크립트를 확인할 수 있습니다. + +웹 콘텐츠를 경량 마크업으로 변환하는 것은 정적 사이트, 문서 파이프라인, 또는 데이터‑분석 노트북을 구축할 때 흔히 수행되는 작업입니다. 이 튜토리얼에서는 선택적 포맷팅을 사용한 **HTML을 마크다운으로 변환** 방법을 다루고, **HTML을 변환하는 방법**에 대한 효율적인 답변을 제공하며, 인기 있는 `groupdocs-conversion` 라이브러리를 이용한 **HTML을 마크다운으로 내보내기** 워크플로도 시연합니다. + +## 사전 요구 사항 + +시작하기 전에 다음이 준비되어 있는지 확인하세요: + +* Python 3.8 이상 설치 +* `groupdocs-conversion` 패키지(또는 `HTMLDocument`, `MarkdownSaveOptions`, `Converter`를 제공하는 라이브러리). 설치는 다음과 같이: + +```bash +pip install groupdocs-conversion +``` + +* 변환하려는 HTML 파일, 예를 들어 제어 가능한 폴더에 위치한 `sample.html` + +추가 시스템 종속성은 필요 없으며, 코드는 Windows, macOS, Linux 모두에서 동작합니다. + +## 단계 1: 원본 HTML 문서 로드 + +첫 번째 작업은 소스 파일을 나타내는 `HTMLDocument` 객체를 생성하는 것입니다. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**왜 중요한가:** `HTMLDocument`는 파일을 파싱하고, 상대 링크를 해결하며, 변환을 위한 DOM을 준비합니다. 파일을 찾을 수 없을 경우 생성자가 명확한 `FileNotFoundError`를 발생시켜 입력 누락을 초기에 처리할 수 있게 합니다. + +## 단계 2: Markdown 저장 옵션 구성 (Git‑flavored) + +Markdown에는 여러 방언이 있습니다. Git‑flavored Markdown (GFM)은 테이블, 작업 목록, fenced code block 등을 추가하여 README 파일이나 GitHub 페이지에 자주 필요합니다. + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**왜 중요한가:** `MarkdownFormatter.GIT`을 명시적으로 선택하면 출력이 GitHub이 렌더링하는 규칙과 동일하게 적용되어, 저장소에서 마크다운이 표시될 때 놀라움을 방지합니다. 일반 Markdown을 원한다면 `MarkdownFormatter.GIT`을 `MarkdownFormatter.DEFAULT`로 교체하면 됩니다. + +## 단계 3: HTML 문서를 Markdown 파일로 변환 + +이제 변환 엔진을 호출하고 결과를 대상 경로에 기록합니다. + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**왜 중요한가:** `Converter.convert`는 HTML 태그를 마크다운 대응으로 변환하고, 필요 시 이미지를 출력 폴더에 복사하며, 선택한 포맷터를 적용하는 무거운 작업을 수행합니다. 메서드는 성공 시 `None`을 반환하지만, `ConversionException`을 잡아 상세 오류를 보고할 수 있습니다. + +### 예상 출력 + +스크립트를 실행하면 `sample.md`에 다음과 같은 내용이 들어갑니다: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +정확한 마크다운은 `sample.html`의 구조를 반영합니다. 테이블, 이미지, 코드 블록은 GFM 규칙에 따라 변환됩니다. + +## 일반적인 변형 및 엣지 케이스 + +| 상황 | 권장 수정 | +|-----------|-------------------| +| **대용량 HTML 파일 (>10 MB)** | 라이브러리가 지원한다면 Python 재귀 제한을 늘리거나 `HTMLDocument.open_stream()`을 사용해 입력을 스트리밍하세요. | +| **절대 URL로 참조된 이미지** | `md_options.embed_images = True` 로 설정해 이미지를 base‑64 데이터 URI로 삽입하거나, 가벼운 출력을 위해 링크 형태로 유지하세요. | +| **GFM 대신 일반 Markdown이 필요** | `md_options.formatter = MarkdownFormatter.DEFAULT` 로 변경하세요. | +| **사용자 정의 CSS 클래스 무시** | `md_options.ignore_css_classes = ["unwanted-class"]` 를 사용하세요. | +| **CI/CD 파이프라인에서 실행** | 스크립트를 `try/except` 블록으로 감싸고 실패 시 비정상 종료 코드로 종료해 파이프라인이 빠르게 실패하도록 하세요. | + +### 전문가 팁 + +많은 파일을 배치로 변환할 계획이라면 단일 `MarkdownSaveOptions` 인스턴스를 재사용하고 루프 내부에서 입력/출력 경로만 변경하세요. 이렇게 하면 객체 생성 오버헤드가 감소하고 처리 속도가 약 15 % 빨라집니다. + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## 다른 언어에서 HTML을 마크다운으로 변환하는 방법 (간단히) + +이 튜토리얼은 **html to markdown python**에 초점을 맞추지만, Java, C#, JavaScript SDK에서도 동일한 개념이 적용됩니다: 문서 객체를 만들고, 마크다운 포맷터를 구성하고, 변환기를 호출합니다. 비‑Python 환경에서 **HTML을 마크다운으로 내보내기**가 필요하면 해당 언어 전용 SDK에서 `HtmlDocument`, `MarkdownSaveOptions`, `Converter` 클래스를 찾아 사용하세요. + +## 결론 + +이제 간결한 Python 스크립트를 사용해 **HTML에서 마크다운을 생성**하는 방법을 알게 되었습니다. 3단계 흐름—HTML 로드, Git‑flavored 옵션 설정, 변환 실행—은 모든 **HTML을 마크다운으로 변환** 워크플로의 핵심을 포괄합니다. 이제 다음을 수행할 수 있습니다: + +* 스크립트를 정적 사이트 생성기에 통합 +* CI 파이프라인에서 문서 업데이트 자동화 +* 사용자 정의 후처리(예: 링크 재작성 또는 헤딩 조정)로 변환 확장 + +다양한 포맷터로 **HTML을 변환하는 방법**을 실험하거나 이미지와 테이블에 대한 **HTML을 마크다운으로 내보내기** 설정을 조정해 보세요. 변환을 즐기세요! + +## 다음에 배울 내용은? + +다음 튜토리얼은 이 가이드에서 보여준 기술을 기반으로 하며, 단계별 설명과 완전한 코드 예제를 포함해 추가 API 기능을 마스터하고 다양한 구현 접근 방식을 탐색할 수 있도록 돕습니다. + +- [Java용 Aspose.HTML에서 HTML을 Markdown으로 변환](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Aspose.HTML을 사용한 .NET에서 HTML을 Markdown으로 변환](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Markdown를 HTML로 변환 – PDF 출력이 포함된 Java 가이드](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/korean/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..2a1b134b5 --- /dev/null +++ b/html/korean/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-08-22 +description: Python으로 몇 분 안에 SVG를 PDF로 만들기. SVG를 PDF로 변환하고, SVG를 PDF로 저장하며, 신뢰할 수 + 있는 SVG‑PDF 변환기를 사용하는 방법을 배워보세요. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: ko +lastmod: 2026-08-22 +og_description: Python으로 SVG에서 PDF를 빠르게 만들기. 이 가이드는 SVG를 PDF로 변환하는 방법, SVG‑to‑PDF + 변환기를 사용하는 방법, 그리고 하나의 스크립트로 SVG를 PDF로 저장하는 방법을 보여줍니다. +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: Python에서 SVG를 PDF로 만들기 – 단계별 튜토리얼 +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: Python에서 SVG를 PDF로 만드는 방법 – 완전 가이드 +url: /ko/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Python에서 SVG를 PDF로 만들기 – 완전 가이드 + +If you need to **SVG에서 PDF 만들기** quickly, this tutorial shows you exactly how. We'll walk through converting an SVG file to a PDF using a popular SVG‑to‑PDF converter, so you can embed vector graphics in reports, invoices, or e‑books without leaving your Python code. + +You’ll learn how to **convert SVG to PDF**, manage scaling, preserve fonts, and finally **save SVG as PDF** with a single, reproducible script. No external command‑line tools are required—just a few lines of Python and the Aspose.SVG for Python library. + +## 사전 요구 사항 + +| 요구 사항 | 이유 | +|-------------|--------| +| Python 3.8+ | 라이브러리는 최신 Python 런타임을 대상으로 합니다. | +| `aspose.svg` 패키지 | `SVGDocument`, `PdfSaveOptions`, `Converter`를 제공합니다. `pip install aspose-svg` 로 설치합니다. | +| SVG 파일 (`vector.svg`) | 변환하려는 원본 벡터 그래픽입니다. | +| 출력 폴더에 대한 쓰기 권한 | **SVG를 PDF로 저장**에 필요합니다. | + +You can install the library with: + +```bash +pip install aspose-svg +``` + +> **프로 팁:** 가상 환경(`python -m venv venv`)을 사용하여 종속성을 격리하세요. + +## 변환 프로세스 개요 + +The conversion consists of three simple steps: + +1. 디스크에서 **SVG 문서**를 로드합니다. +2. **PDF 저장 옵션**을 생성합니다(페이지 크기, DPI 등을 사용자 정의할 수 있습니다). +3. **컨버터**를 호출하여 PDF 파일을 생성합니다. + +The following sections break each step down, explain *why* the code is written that way, and show the full, runnable script. + +## Aspose.SVG for Python을 사용해 SVG에서 PDF 만들기 + +This H2 header contains the primary keyword **create pdf from svg**, satisfying the SEO requirement. + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### 왜 이렇게 동작하나요 + +* **`SVGDocument`**는 SVG XML을 파싱하고, 컨버터가 렌더링할 수 있는 메모리 내 표현을 구축합니다. +* **`PdfSaveOptions`**는 PDF 출력(페이지 크기, 압축, DPI 등)을 조정할 수 있게 해줍니다. 기본값만으로도 충실한 PDF를 생성하므로 예제가 바로 동작합니다. +* **`Converter.convert`**는 핵심 작업을 수행합니다: 벡터 데이터를 PDF 페이지에 래스터화하면서 벡터 정확성을 유지하므로, 결과 PDF는 어떤 확대 수준에서도 선명합니다. + +## 사용자 지정 페이지 크기로 SVG를 PDF로 변환 + +If you need a specific page size—say, A4 for printable reports—adjust the `PdfSaveOptions`: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **예외 상황:** 일부 SVG는 원하는 PDF 크기와 일치하지 않는 `viewBox`를 정의합니다. `page_width`/`page_height`를 재정의하면 PDF가 레이아웃 기대에 맞게 맞춰집니다. + +## 폰트를 보존하면서 SVG를 PDF로 저장 + +When your SVG references external fonts, make sure the fonts are accessible to the converter. Place the `.ttf` files in the same directory as the SVG or specify a custom font folder: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +The converter embeds the fonts directly into the PDF, guaranteeing that **svg file to pdf** conversion looks identical on any machine. + +## 배치 변환: 여러 파일에 대한 svg 파일을 pdf로 변환 + +Often you have a folder full of SVG assets. The following loop demonstrates an efficient **svg to pdf converter** that processes every `.svg` file in a directory: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +This snippet illustrates a practical **convert svg to pdf** workflow that can be integrated into CI pipelines or automated report generators. + +## 출력 확인 + +After running the script, open the generated PDF with any viewer (Adobe Reader, Chrome, or Preview). You should see: + +* 확대 수준에 관계없이 선명하게 렌더링된 벡터 형태. +* SVG 소스와 일치하는 텍스트, 제공한 경우 폰트가 포함됨. +* 래스터 아티팩트 없음—변환이 원본 벡터 데이터를 유지하기 때문입니다. + +If you notice missing fonts, double‑check that the font files are reachable and that the SVG references them correctly (`font-family` attribute). + +## 흔히 발생하는 문제와 회피 방법 + +| 증상 | 가능한 원인 | 해결 방법 | +|---------|--------------|-----| +| 빈 PDF 페이지 | SVG에 외부 리소스(이미지, 폰트)가 없음 | `fonts_folder`를 제공하고 연결된 이미지가 같은 디렉터리에 있거나 절대 URL을 사용하세요. | +| 텍스트가 윤곽선으로 표시 | 폰트가 포함되지 않음 | `pdf_options.embed_fonts = True`(기본값)으로 설정하고 폰트 파일이 존재하는지 확인하세요. | +| PDF 파일 크기가 예상보다 큼 | 높은 DPI 또는 압축되지 않은 이미지 | `pdf_options.dpi`를 낮추거나 압축 활성화: `pdf_options.compress = True`. | +| SVG 크기가 잘림 | `viewBox`가 PDF 페이지보다 큼 | `pdf_options.page_width`/`page_height`를 조정하거나 `svg_doc.set_viewport`를 통해 SVG를 스케일링하세요. | + +## 전체 엔드‑투‑엔드 예제 + +Below is a self‑contained script that includes error handling, logging, and optional command‑line arguments. Save it as `svg_to_pdf.py` and run `python svg_to_pdf.py`. + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +Running the script produces a **save SVG as PDF** operation that you can embed in larger automation pipelines. + +### 예상 콘솔 출력 + + + +## 다음에 배울 내용은? + +The following tutorials cover closely related topics that build on the techniques demonstrated in this guide. Each resource includes complete working code examples with step-by-step explanations to help you master additional API features and explore alternative implementation approaches in your own projects. + +- [Convert SVG to PDF in .NET with Aspose.HTML](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg to pdf java – Generate PDF from SVG with Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [Convierte SVG a PDF en .NET con Aspose.HTML](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/korean/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..57d65e9b3 --- /dev/null +++ b/html/korean/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-08-22 +description: Python에서 대용량 HTML을 PDF로 변환할 때 스트리밍을 활성화하여 메모리 사용량을 줄이고 출력 생성 속도를 높이는 + 방법. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: ko +lastmod: 2026-08-22 +og_description: Python에서 대용량 HTML을 PDF로 변환할 때 스트리밍을 활성화하여 메모리 사용량을 줄이고 출력 생성 속도를 높이는 + 방법. +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: Python에서 HTML‑to‑PDF 변환을 위한 스트리밍 활성화 +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: Python에서 HTML을 PDF로 변환할 때 스트리밍을 활성화하는 방법 +url: /ko/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Python에서 HTML을 PDF로 변환할 때 스트리밍을 활성화하는 방법 + +대용량 HTML‑to‑PDF 변환 중에 **스트리밍을 활성화하는 방법**이 필요하다면, 이 가이드는 정확한 단계들을 보여줍니다. 스트리밍을 활성화하면 전체 문서를 메모리에 로드하는 것을 피할 수 있어, 큰 파일을 HTML에서 PDF로 변환할 때 필수적입니다. + +스트리밍을 활성화하는 방법, Python으로 HTML을 PDF로 변환하는 방법, 그리고 대용량 HTML to PDF 작업과 같은 엣지 케이스를 처리하는 방법을 배우게 됩니다. 이 솔루션은 인기 있는 `groupdocs-conversion`(또는 유사) 라이브러리와 함께 작동하지만, 개념은 스트리밍을 지원하는 모든 변환기에 적용됩니다. + +![Python을 사용한 HTML에서 PDF로 스트리밍 변환을 보여주는 다이어그램](streaming-diagram.png) + +## 필요 사항 + +- Python 3.9 이상 +- `groupdocs-conversion`(또는 `PdfSaveOptions`에 스트리밍 플래그를 제공하는 라이브러리) +- PDF로 변환하려는 HTML 파일(예시에서는 `large.html`이라는 큰 파일 사용) + +이러한 전제 조건을 갖추면 추가 설정 없이 코드를 실행할 수 있습니다. + +## 단계 1: 변환 라이브러리 설치 + +먼저 `HTMLDocument`, `PdfSaveOptions`, `Converter`를 제공하는 Python 패키지를 설치합니다. 가장 일반적인 선택은 **GroupDocs.Conversion** SDK입니다: + +```bash +pip install groupdocs-conversion +``` + +> **전문가 팁:** `python -m venv .venv` 명령으로 가상 환경을 사용하면 종속성을 격리할 수 있습니다. + +## 단계 2: 변환하려는 HTML 문서 로드 + +소스 HTML을 로드하는 것은 간단합니다. `HTMLDocument` 클래스가 디스크에서 파일을 읽어 변환 준비를 합니다. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +`HTMLDocument` 객체는 이미지와 CSS와 같은 외부 리소스를 포함한 전체 HTML 마크업을 나타냅니다. 이는 **HTML을 PDF로 변환** 작업의 시작점입니다. + +## 단계 3: PDF 저장 옵션 생성 및 스트리밍 활성화 + +스트리밍을 활성화하는 것이 **스트리밍을 활성화하는 방법**의 핵심입니다. 전체 PDF를 메모리에 버퍼링하는 대신, 변환기는 청크를 직접 출력 파일에 씁니다. + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +`enable_streaming`을 `True`로 설정하면 라이브러리는 쓰기‑통과 방식을 사용해 RAM 사용량을 크게 줄이며, 이는 **대용량 HTML to PDF** 시나리오에 결정적입니다. + +## 단계 4: 구성된 옵션으로 HTML 문서를 PDF로 변환 + +이제 변환을 호출합니다. `Converter.convert` 메서드는 소스 문서, 옵션 객체, 대상 경로를 받습니다. + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +이 호출이 완료되면 `large.pdf`에 스트리밍하면서 디스크에 기록된 PDF가 포함됩니다. 전체 과정은 비스트리밍 변환보다 일반적으로 더 빠르게 끝나며, 운영 체제가 데이터를 점진적으로 파일 시스템에 플러시할 수 있기 때문입니다. + +### 예상 출력 + +스크립트를 실행하면 원본 HTML 내용과 크기가 일치하는 PDF 파일이 생성됩니다. PDF 뷰어로 결과를 확인할 수 있습니다: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## 왜 대용량 HTML to PDF 변환에 스트리밍이 중요한가 + +스트리밍 없이 **HTML을 PDF로 변환**하면 라이브러리가 먼저 전체 PDF를 RAM에 구축한 뒤 디스크에 기록합니다. 페이지가 작을 때는 괜찮지만, 많은 이미지가 포함된 10 MB HTML 보고서와 같은 **대용량 HTML to PDF** 작업은 일반적인 서버리스 함수나 저메모리 컨테이너의 메모리 한도를 초과할 수 있습니다. + +스트리밍을 활성화하면 세 가지 문제가 해결됩니다: + +1. **메모리 효율성** – RAM에 작은 버퍼만 유지됩니다. +2. **더 빠른 인지 성능** – 파일이 생성되는 동안에도 디스크에 나타나며, 하위 프로세스가 더 일찍 읽기 시작할 수 있습니다. +3. **확장성** – 호스트 메모리를 고갈시키지 않고 다수의 변환을 병렬로 실행할 수 있습니다. + +## 일반적인 함정과 회피 방법 + +| 증상 | 가능한 원인 | 해결 방법 | +|---------|--------------|-----| +| `MemoryError` 발생 시 변환 중 | 스트리밍 플래그가 설정되지 않았거나 라이브러리 버전이 너무 오래됨 | `pdf_opts.enable_streaming = True`를 설정하고 최신 SDK(`pip install --upgrade groupdocs-conversion`)로 업그레이드하십시오. | +| PDF에 이미지 누락 | 상대 이미지 경로를 해결할 수 없음 | `HTMLDocument`에 기본 디렉터리를 전달하거나 이미지를 base64로 삽입하십시오. | +| 출력 PDF가 빈 화면 | HTML 파일을 찾을 수 없거나 읽을 수 없음 | 경로 `"YOUR_DIRECTORY/large.html"`을 확인하고 파일 권한을 점검하십시오. | +| 변환이 무한정 멈춤 | 큰 외부 리소스(폰트, CSS)가 렌더링을 차단 | 외부 자산을 미리 다운로드하거나 헤드리스 브라우저를 사용해 인라인하십시오. | + +### 엣지 케이스: 문자열에서 HTML 변환 + +HTML 내용이 파일이 아니라 메모리에 존재한다면, 원시 HTML을 받는 `HTMLDocument` 생성자에 문자열을 래핑하여 **스트리밍을 활성화하는 방법**을 그대로 적용할 수 있습니다: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +스트리밍 동작은 SDK가 PDF를 점진적으로 기록하기 때문에 동일하게 유지됩니다. + +## 복사‑붙여넣기 가능한 전체 스크립트 + +아래는 논의된 모든 단계를 포함한 완전하고 바로 실행 가능한 예시입니다. `YOUR_DIRECTORY`를 실제 경로로 바꾸세요. + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +`python full_example.py`를 실행하면 스트리밍 방식을 사용해 `large.pdf`가 생성됩니다. + +## 요약 + +- 이제 Python에서 HTML‑to‑PDF 변환을 위한 **스트리밍 활성화 방법**을 알게 되었습니다. +- 스크립트는 전체 **HTML을 PDF로 변환** 워크플로우를 보여주며, **대용량 HTML을 PDF로 변환** 작업을 효율적으로 처리합니다. +- `PdfSaveOptions.enable_streaming = True`를 설정하면 변환기가 출력을 점진적으로 기록하며, 이는 **HTML을 PDF로 스트리밍**하는 권장 방법입니다. + +## 다음에 탐색할 내용 + +- CSS3와 JavaScript를 지원하는 **HTML to PDF Python** 라이브러리(예: `WeasyPrint`, `pdfkit`). +- 추가 `PdfSaveOptions` 설정을 통해 생성된 PDF에 비밀번호 보호 또는 암호화 추가. +- 메모리 사용량을 낮게 유지하면서 큐 시스템(Celery, RabbitMQ)에서 다중 변환을 병렬 처리. + +다양한 HTML 소스, 페이지 크기, PDF 메타데이터를 실험해 보세요. 스트리밍을 사용하면 성능을 희생하지 않고도 훨씬 큰 문서를 처리할 수 있습니다. 즐거운 코딩 되세요! + +## 다음에 배워야 할 내용은? + +다음 튜토리얼은 이 가이드에서 시연한 기술을 기반으로 하는 밀접한 관련 주제를 다룹니다. 각 리소스는 단계별 설명과 함께 완전한 코드 예제를 제공하여 추가 API 기능을 마스터하고 자체 프로젝트에서 대체 구현 방식을 탐색하는 데 도움을 줍니다. + +- [Java에서 Aspose.HTML을 사용하여 HTML을 PDF로 변환하는 방법](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [병렬 HTML to PDF 변환을 위한 고정 스레드 풀 생성](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [Aspose HTML에서 JavaScript 활성화 – HTML 로드 및 텍스트 가져오기](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/korean/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..799b5ca65 --- /dev/null +++ b/html/korean/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-08-22 +description: HTML에서 링크를 추출하고 단락을 포함하여 마크다운 파일로 변환하는 방법. HTML을 마크다운으로 변환하는 단계별 가이드. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: ko +lastmod: 2026-08-22 +og_description: HTML 문서에서 링크를 추출하고 단락을 포함해 마크다운 파일로 변환하는 방법. 신뢰할 수 있는 HTML‑to‑마크다운 + 변환을 위해 이 완전한 튜토리얼을 따라보세요. +og_image_alt: How to export links while converting HTML to Markdown +og_title: HTML을 Markdown으로 변환하면서 링크를 내보내는 방법 – 단계별 가이드 +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: HTML을 Markdown으로 변환하면서 링크를 내보내는 방법 +url: /ko/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML을 Markdown으로 변환하면서 링크 내보내는 방법 + +HTML 페이지에서 **how to export links**를 추출하고 결과를 깔끔한 **html to markdown file**로 변환해야 한다면, 이 가이드는 정확한 단계들을 보여줍니다. 또한 **how to extract paragraphs**를 발견하여 markdown 출력에 원하는 주요 내용만 포함시킬 수 있습니다. 튜토리얼이 끝날 때쯤이면 “**how to convert html** to markdown” 질문에 바로 실행 가능한 스크립트로 답할 수 있게 됩니다. + +링크 내보내기와 단락 추출은 웹 콘텐츠를 정적 사이트, 문서 포털, 혹은 헤드리스 CMS 백엔드로 마이그레이션할 때 흔히 수행되는 작업입니다. 아래 접근 방식은 GroupDocs Conversion SDK for Python과 함께 동작하지만, 내보내기 기능을 구성할 수 있는 모든 라이브러리에 적용할 수 있는 개념입니다. + +--- + +## 필요 사항 + +- Python 3.9 또는 그 이상 +- `groupdocs-conversion` 패키지 (`pip install groupdocs-conversion`으로 설치) +- 처리하려는 HTML 파일 (예: `input.html`) +- Python 스크립팅에 대한 기본적인 이해 + +--- + +## HTML을 Markdown으로 변환하면서 링크를 내보내는 방법 + +첫 번째 주요 단계는 변환을 구성하여 원하는 기능—링크와 단락—만 **html to markdown file**에 기록되도록 하는 것입니다. SDK는 `MarkdownFeature` 값들의 비트마스크를 설정할 수 있게 해 주며, 우리는 `LINKS`와 `PARAGRAPHS`를 결합하여 출력이 집중되도록 합니다. + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### 왜 이렇게 동작하나요 + +- **`HTMLDocument`**는 원본 파일을 파싱하고 변환기가 탐색할 수 있는 DOM을 구축합니다. +- **`MarkdownSaveOptions`**는 SDK가 기록하는 내용을 세밀하게 제어할 수 있게 해 줍니다. `features`를 `LINKS | PARAGRAPHS`로 설정하면 엔진이 이미지, 테이블, 스크립트를 무시하도록 하여 최종 **html to markdown file**의 잡음을 줄입니다. +- **`Converter.convert`**는 핵심 작업을 수행합니다. 기능 마스크를 준수하여 앵커 태그(``)와 단락 태그(`

`)를 추출하고 표준 Markdown 구문으로 기록합니다. + +--- + +## 전체 콘텐츠로 HTML을 Markdown으로 변환하기 (옵션) + +나중에 전체 페이지가 필요하다고 판단하면—링크와 단락만이 아니라—그냥 기능 마스크를 조정하면 됩니다: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +같은 변환을 실행하면 이제 원본 레이아웃을 그대로 반영한 완전한 **html to markdown file**이 생성됩니다. 이는 **how to convert html**을 유연하게 수행하는 방법을 보여 주며, 기능 플래그를 토글하여 출력물을 제어할 수 있습니다. + +--- + +## 단락만 추출하기 + +때때로 하이퍼링크가 아니라 기사 본문의 텍스트만 필요할 때가 있습니다. 마스크를 `PARAGRAPHS`만으로 설정하면 단락을 분리할 수 있습니다: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +결과 markdown은 링크 마크업 없이 깔끔하고 줄 바꿈된 텍스트만 포함합니다. 이 스니펫은 HTML 소스에서 **how to extract paragraphs**하는 질문에 답합니다. + +--- + +## 흔히 발생하는 문제와 회피 방법 + +| Issue | Why it happens | Fix | +|-------|----------------|-----| +| 출​력 파일이 비어 있음 | 원본 HTML에 선택된 기능에 해당하는 `` 또는 `

` 태그가 없습니다. | HTML 구조를 확인하거나 기능 마스크를 확대하세요(예: `HEADINGS` 포함). | +| 인코딩 문제 | HTML이 UTF-8이 아닌 문자 집합을 사용하고 있어 SDK가 올바르게 읽지 못합니다. | `HTMLDocument`에 명시적인 인코딩을 전달하세요, 예: `HTMLDocument(path, encoding="iso-8859-1")`. | +| 기존 markdown 파일 덮어쓰기 | 스크립트를 여러 번 실행하면 이전 파일이 교체됩니다. | 출력 파일 이름에 타임스탬프를 추가하거나 쓰기 전에 `os.path.exists`를 확인하세요. | + +**Pro tip:** 폴더에 많은 파일을 처리할 때는 변환 로직을 루프에 감싸고 각 결과를 로그에 기록하세요. 이렇게 하면 명확한 감사 로그가 제공되고 실패 후 재시작이 쉬워집니다. + +--- + +## 복사‑붙여넣기 가능한 전체 스크립트 + +아래는 바로 실행할 수 있는 독립형 Python 파일(`convert_links_paragraphs.py`)입니다. 인수 파싱을 포함하고 있어 코드를 수정하지 않고도 입력 및 출력 경로를 지정할 수 있습니다. + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**실행 방법** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +위 명령은 **how to export links**와 **how to extract paragraphs**를 한 번에 수행하는 예시입니다. 필요에 따라 `--links` 또는 `--paragraphs` 옵션을 생략하여 출력물을 맞춤 설정하세요. + +--- + +## 검증 – 출력 예시 + +다음과 같은 간단한 HTML(`input.html`)을 가정해 보겠습니다: + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +두 플래그를 모두 사용하여 스크립트를 실행하면 `links_and_paragraphs.md`가 생성됩니다: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +두 단락과 하이퍼링크만 포함된 것을 확인할 수 있습니다—**how to export links**를 검색하고 **convert html to markdown**를 수행할 때 원했던 바로 그 결과입니다. + +--- + +## 다음 단계 및 관련 주제 + +- **How to convert html to markdown** with images: 마스크에 `MarkdownFeature.IMAGES`를 추가합니다. +- **How to extract paragraphs** and then post‑process + +## 다음에 배울 내용은? + +다음 튜토리얼들은 이 가이드에서 시연한 기술을 기반으로 하는 밀접한 관련 주제를 다룹니다. 각 자료는 단계별 설명과 함께 완전한 동작 코드 예제를 포함하고 있어 추가 API 기능을 마스터하고 자체 프로젝트에서 대체 구현 방식을 탐색하는 데 도움이 됩니다. + +- [How to Set Offset When Converting HTML to Markdown in Java](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown to HTML Java - Convert with Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [Convert HTML to Markdown – Complete C# Guide](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/korean/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..3fef9af37 --- /dev/null +++ b/html/korean/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,280 @@ +--- +category: general +date: 2026-08-22 +description: Python에서 Aspose.HTML을 사용해 HTML을 로드하는 방법 – 리소스 깊이를 제한하고 문서를 변환 또는 편집할 + 준비를 합니다. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: ko +lastmod: 2026-08-22 +og_description: Python에서 Aspose.HTML을 사용해 HTML을 로드하고, 리소스 처리 깊이를 설정한 뒤, 변환 또는 편집을 + 위해 문서를 준비하는 방법. +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: Aspose.HTML를 사용하여 HTML 로드하기 – Python 가이드 +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: Python에서 Aspose.HTML으로 HTML 로드하는 방법 +url: /ko/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose.HTML을 사용한 Python에서 HTML 로드 방법 + +Python 프로젝트에서 **HTML을 로드하는 방법**을 빠르고 안전하게 구현해야 한다면, 이 가이드는 정확한 단계들을 보여줍니다. 처음 두 문장을 읽고 나면 리소스 처리 설정, 파일 로드, 그리고 이후 **HTML 변환**이나 편집을 위해 프로세스를 준비하는 방법을 알게 됩니다. + +대형 혹은 복잡한 페이지를 로드할 때 외부 리소스(이미지, 스크립트, CSS) 때문에 순환 호출이 깊어지거나 네트워크 지연이 발생해 순진한 파서가 오류를 일으키기 쉽습니다. 이 튜토리얼에서는 **Aspose.HTML for Python**을 활용한 견고한 패턴을 다루고, **HTMLDocument 클래스**를 시연하며, **max_handling_depth** 설정이 왜 중요한지 설명합니다. + +다음 내용을 따라 해 보세요: + +* Aspose.HTML 패키지 설치 +* `ResourceHandlingOptions` 인스턴스를 생성하고 깊이를 제한 +* `HTMLDocument` 클래스를 사용해 페이지 로드 +* PDF, PNG 등으로 변환하거나 추가 조작을 위해 문서 준비 + +Aspose.HTML에 대한 사전 경험은 필요 없으며, 기본적인 Python 지식만 있으면 됩니다. + +--- + +## Aspose.HTML을 사용한 Python에서 HTML 로드 방법 + +해결책의 핵심은 **ResourceHandlingOptions**와 **HTMLDocument 클래스**를 결합한 3단계 패턴입니다. 처리 깊이를 제한하면 페이지가 다수의 중첩 리소스를 참조할 때 무한 네트워크 호출을 방지할 수 있습니다. + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### 왜 이렇게 동작하는가 + +* **`ResourceHandlingOptions`**는 파서가 따라갈 외부 리소스의 레벨 수를 지정합니다. `max_handling_depth = 3`으로 설정하면 세 번의 홉 이후 로더가 중지되며, 대부분의 사이트에 충분하면서 무한 루프를 방지합니다. +* **`HTMLDocument`**는 파일을 읽고 옵션을 적용해 메모리 내 DOM을 구축합니다. 이 DOM을 조회, 수정 또는 렌더링할 수 있습니다. +* 선택적인 변환 스니펫은 로드된 문서가 **HTML 변환** 기능(예: PDF 저장)과 어떻게 통합되는지 보여줍니다. + +--- + +## ResourceHandlingOptions 이해하기 + +`ResourceHandlingOptions`는 **Aspose.HTML for Python**의 일부로, 네트워크 활동을 세밀하게 제어할 수 있게 해줍니다. + +| Property | Purpose | Typical value | +|-------------------------|----------------------------------------------------|---------------| +| `max_handling_depth` | 연결된 리소스에 대한 최대 재귀 깊이 | `3` (default) | +| `allow_external_resources` | 외부 CSS, JS, 이미지 다운로드 여부 | `True` | +| `timeout` | 요청당 네트워크 타임아웃(초) | `30` | + +**실용적인 팁:** 대상 페이지가 로컬 자산만 참조한다면 `allow_external_resources = False`로 설정해 로드 속도를 높이고 불필요한 HTTP 호출을 피할 수 있습니다. + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## HTMLDocument 클래스 사용하기 + +**HTMLDocument 클래스**는 모든 Aspose.HTML 작업의 진입점입니다. 인스턴스를 만든 뒤에는 다음을 수행할 수 있습니다. + +* `doc.root`를 통해 DOM에 접근 +* CSS 선택자(`doc.query_selector_all("img")`)로 요소 조회 +* 페이지를 래스터 형식으로 렌더링(`doc.save("page.png")`) +* PDF로 변환(`doc.save("page.pdf", PDFSaveOptions())`) + +아래는 로드 후 모든 이미지 `src` 속성을 추출하는 짧은 스니펫입니다. + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**필요한 이유:** **HTML 변환**을 수행할 때 렌더링 전에 이미지 URL을 조정하거나 교체해야 할 경우가 많습니다. DOM에 직접 접근하면 이러한 유연성을 확보할 수 있습니다. + +--- + +## HTML 로드 후 다음 단계 + +문서가 메모리에 올라오면 다음과 같은 일반적인 워크플로 중 하나를 선택할 수 있습니다. + +1. **PDF로 변환** – 보관이나 인쇄에 이상적입니다. +2. **PNG/JPEG로 렌더링** – 썸네일이나 시각적 미리보기용으로 유용합니다. +3. **DOM 편집** – 저장 전에 요소를 삽입, 제거 또는 수정합니다. +4. **텍스트 추출** – 인덱싱이나 분석을 위해 순수 텍스트를 가져옵니다. + +### 예시: 사용자 정의 페이지 크기로 PDF 변환 + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**예상 출력:** 작업 디렉터리에 `big_page.pdf` 파일이 생성되며, 허용된 모든 리소스가 적용된 HTML이 렌더링됩니다. `max_handling_depth`를 3으로 설정했을 경우, 3단계 이하의 리소스만 포함되어 PDF 크기가 적절하게 유지됩니다. + +--- + +## 흔히 발생하는 문제와 회피 방법 + +| Symptom | Cause | Fix | +|--------------------------------------|----------------------------------------|-----| +| 렌더링된 PDF에 이미지가 누락됨 | `allow_external_resources`가 `False`로 설정됨 | 외부 리소스를 활성화하거나 이미지를 로컬에 포함 | +| 로드 중 `TimeoutError` 발생 | 네트워크 지연이 `timeout`을 초과함 | `rh_opts.timeout` 값을 늘리거나 자산을 미리 다운로드 | +| 예상치 못한 CSS 스타일링 | 깊이 제한으로 인해 연결된 스타일시트가 로드되지 않음 | `max_handling_depth` 값을 올리거나 필요한 CSS를 수동 추가 | +| 비 UTF‑8 파일에서 `UnicodeDecodeError` | HTML 파일이 다른 인코딩 사용 | `HTMLDocument` 생성 시 `encoding="windows-1252"` 지정 | + +--- + +## 전체 실행 가능한 예제 + +아래는 `load_html_demo.py`라는 파일에 복사·붙여넣기 할 수 있는 독립형 스크립트입니다. 설치 방법, 오류 처리, 최종 검증 단계가 포함되어 있습니다. + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +### 스크립트 실행 방법 + +```bash +python load_html_demo.py +``` + +콘솔에 로드 확인 메시지, 이미지 URL 목록, PDF 변환 성공 메시지가 표시됩니다. 생성된 `big_page.pdf`는 구성한 **max_handling_depth**에 따라 제한된 HTML 콘텐츠를 반영합니다. + +--- + +## 결론 + +이 튜토리얼에서는 **Aspose.HTML for Python**을 사용해 **HTML을 로드하는 방법**을 다루고, `max_handling_depth`를 제어하는 **ResourceHandlingOptions** 설정을 소개했으며, 이미지 추출 및 PDF 변환과 같은 실용적인 후처리 작업을 시연했습니다. 이제 이 단계를 따라 하면 웹 스크래퍼, 문서 보관 서비스, 동적 보고서 생성기 등 어떤 **HTML 변환** 워크플로에도 신뢰할 수 있는 기반을 마련할 수 있습니다. + +**다음 단계** + +* `max_handling_depth` 값을 다양하게 실험해 완전성 vs. 성능을 조절해 보세요. +* 문서를 다른 형식으로 변환해 보세요. + +## 다음에 배울 내용은? + +다음 튜토리얼들은 이 가이드에서 다룬 기술을 확장하는 주제들을 다룹니다. 각 리소스는 완전한 코드 예제와 단계별 설명을 제공해 API 기능을 마스터하고 프로젝트에 다양한 구현 방식을 적용하도록 돕습니다. + +- [HTML Java 파싱 방법 – 로드, 쿼리 및 요소 카운트](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [Aspose.HTML for Java에서 HTML 문서 트리 편집하기](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [Aspose.HTML for Java에서 문서 로드 이벤트 처리](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/polish/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..403db1d0d --- /dev/null +++ b/html/polish/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,194 @@ +--- +category: general +date: 2026-08-22 +description: Jak konwertować HTML na PDF w Pythonie przy użyciu Aspose.HTML – dowiedz + się, jak tworzyć PDF z pliku HTML, generować PDF z kodu HTML oraz szybko zapisywać + HTML jako PDF w Pythonie. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: pl +lastmod: 2026-08-22 +og_description: Jak konwertować HTML na PDF w Pythonie przy użyciu Aspose.HTML. Ten + tutorial pokazuje, jak utworzyć PDF z pliku HTML, wygenerować PDF z kodu HTML oraz + zapisać HTML jako PDF w Pythonie. +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: Jak konwertować HTML na PDF w Pythonie – przewodnik krok po kroku +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: Jak konwertować HTML na PDF w Pythonie przy użyciu Aspose.HTML +url: /pl/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak konwertować HTML do PDF w Pythonie przy użyciu Aspose.HTML + +Jeśli potrzebujesz **how to convert html to pdf** szybko, ten przewodnik pokaże Ci kompletną, gotową‑do‑uruchomienia rozwiązanie. Zobaczysz, jak **create pdf from html file**, **generate pdf from html code**, oraz **save html as pdf python** przy użyciu prostego API Aspose.HTML. + +Przejdziemy przez każdy krok, wyjaśnimy, dlaczego każda linia ma znaczenie, i omówimy typowe pułapki, abyś mógł dostosować kod do dowolnego projektu. Bez zewnętrznych narzędzi, tylko kilka linii Pythona. + +## Wymagania wstępne + +* Python 3.8 lub nowszy zainstalowany. +* Aktywna licencja Aspose.HTML for Python (lub darmowy klucz ewaluacyjny). +* Pakiet `aspose.html` zainstalowany: + +```bash +pip install aspose-html +``` + +Posiadanie ich zapewnia, że konwersja przebiega bez błędów w czasie wykonywania. + +## Krok 1: Załaduj dokument HTML (create pdf from html file) + +Pierwszym zadaniem jest odczytanie źródłowego HTML. Aspose.HTML reprezentuje dokument przy pomocy klasy `HTMLDocument`, która abstrahuje operacje I/O plików, pobieranie z sieci oraz parsowanie DOM. + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*Dlaczego to jest ważne:* +`HTMLDocument` ładuje HTML, rozwiązuje względne zasoby (obrazy, CSS, czcionki) i buduje DOM, który konwerter może renderować dokładnie. Pominięcie tego kroku lub użycie zwykłego łańcucha spowodowałoby utratę tych rozwiązań zasobów. + +## Krok 2: Skonfiguruj opcje zapisu PDF (save html as pdf python) + +Aspose.HTML pozwala precyzyjnie dostroić wyjście PDF przy użyciu `PdfSaveOptions`. Domyślna konfiguracja już generuje PDF wysokiej jakości, ale w razie potrzeby możesz dostosować rozmiar strony, kompresję lub metadane. + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*Dlaczego to jest ważne:* +Nawet jeśli pozostawisz domyślne ustawienia, utworzenie obiektu opcji sprawia, że kod jest rozszerzalny. Przyszłe zmiany — takie jak osadzenie hasła PDF — mogą być dodane bez przebudowywania skryptu. + +## Krok 3: Wykonaj konwersję (convert html to pdf python) + +Metoda `Converter.convert` łączy dokument HTML i opcje PDF, zapisując wynik do ścieżki pliku, którą określisz. + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*Dlaczego to jest ważne:* +`Converter.convert` uruchamia silnik renderujący, rasteryzując HTML/CSS do wektorów PDF. Automatycznie obsługuje złożone układy, osadzone czcionki i grafikę SVG — coś, czego często brakuje w ręcznych bibliotekach. + +### Oczekiwany wynik + +Uruchomienie skryptu generuje `sample.pdf` w tym samym katalogu. Otwórz go dowolnym przeglądarką PDF; powinieneś zobaczyć wierną reprezentację `sample.html`, włącznie ze stylami, obrazami i podziałami stron. + +## Typowe warianty i przypadki brzegowe + +| Sytuacja | Jak sobie radzić | +|-----------|-----------------| +| **HTML is a string, not a file** | Użyj `HTMLDocument.from_string(html_string)` zamiast ładowania z ścieżki. | +| **You need a password‑protected PDF** | Ustaw `pdf_options.encryption.password = "yourPassword"` przed konwersją. | +| **Large HTML files cause memory pressure** | Włącz tryb strumieniowy: `pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`. | +| **Custom fonts are missing** | Zarejestruj folder czcionek: `pdf_options.fonts_folder = "path/to/fonts"`.| + +Te warianty ilustrują elastyczność API Aspose.HTML przy zachowaniu identycznego podstawowego przepływu pracy. + +## Pełny skrypt (generate pdf from html code) + +Poniżej znajduje się kompletny, uruchamialny program, który zawiera wszystkie kroki. Skopiuj‑wklej go, zamień `YOUR_DIRECTORY` na rzeczywistą ścieżkę folderu i uruchom. + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +Uruchom go za pomocą: + +```bash +python convert_html_to_pdf.py +``` + +Zobaczysz komunikat potwierdzający, a PDF pojawi się obok źródłowego pliku HTML. + +## Porady rozwiązywania problemów (pro tip) + +* **Missing images or CSS** – Upewnij się, że plik HTML używa bezwzględnych adresów URL lub że ścieżki względne są poprawne względem `YOUR_DIRECTORY`. +* **Unicode characters appear as squares** – Osadź wymagane czcionki za pomocą `pdf_options.fonts_folder`. +* **Conversion is slow** – Włącz `pdf_options.use_system_fonts = False`, aby uniknąć skanowania katalogu czcionek systemowych. + +## Zakończenie + +Teraz wiesz, **how to convert html to pdf** w Pythonie przy użyciu Aspose.HTML, od ładowania pliku HTML po zapisanie wysokiej jakości PDF. Ten sam wzorzec pozwala Ci **create pdf from html file**, **generate pdf from html code** oraz **save html as pdf python** w dowolnym przepływie automatyzacji. + +Następnie możesz zbadać: + +* Dodawanie znaków wodnych lub nagłówków/stopki (keyword: *create pdf from html file*). +* Konwertowanie żywego URL zamiast lokalnego pliku (keyword: *convert html to pdf python*). +* Integracja konwertera z API Flask lub Django, aby na żądanie udostępniać PDFy. + +Śmiało eksperymentuj z opcjami i życzymy udanej generacji PDF! + +## Co powinieneś nauczyć się dalej? + +Poniższe samouczki obejmują ściśle powiązane tematy, które rozwijają techniki przedstawione w tym przewodniku. Każdy zasób zawiera kompletne działające przykłady kodu z wyjaśnieniami krok po kroku, aby pomóc Ci opanować dodatkowe funkcje API i odkrywać alternatywne podejścia implementacyjne w własnych projektach. + +- [Convert HTML to PDF with Aspose.HTML – Full Manipulation Guide](/html/english/) +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Convert HTML to PDF in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-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/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/polish/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..ecbb9ef0d --- /dev/null +++ b/html/polish/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-08-22 +description: Dowiedz się, jak tworzyć markdown z pliku HTML przy użyciu Pythona. Ten + przewodnik krok po kroku pokazuje, jak konwertować HTML na markdown przy użyciu + niezawodnej biblioteki. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: pl +lastmod: 2026-08-22 +og_description: Jak stworzyć markdown z pliku HTML przy użyciu Pythona. Skorzystaj + z tego przewodnika, aby szybko przekształcić HTML na markdown przy użyciu sprawdzonej + biblioteki. +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: Jak stworzyć markdown z HTML w Pythonie – kompletny przewodnik +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: Jak stworzyć markdown z HTML w Pythonie – kompletny przewodnik +url: /pl/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak tworzyć markdown z HTML w Pythonie – kompletny przewodnik + +Jeśli potrzebujesz dowiedzieć się **how to create markdown** z istniejącej zawartości internetowej, możesz przekonwertować plik HTML na markdown przy użyciu kilku linijek Pythona. Ten samouczek przeprowadzi Cię przez **convert html to markdown** przy użyciu dedykowanej **html to markdown library**, która działa na Windows, macOS i Linux. + +Nauczysz się, jak zainstalować bibliotekę, wczytać dokument HTML, skonfigurować opcje Git‑flavored markdown oraz zapisać wynik na dysku. Po zakończeniu przewodnika będziesz mógł automatycznie przekształcić dowolny **html file to markdown**, co jest przydatne dla generatorów statycznych stron, potoków dokumentacji lub projektów migracji treści. + +## Wymagania wstępne + +* Zainstalowany Python 3.8 lub nowszy (sprawdź poleceniem `python --version`). +* Dostęp do terminala lub wiersza poleceń. +* Plik HTML, który chcesz przekonwertować (przykład używa `sample.html`). +* Połączenie internetowe w celu zainstalowania wymaganego pakietu. + +Przykład kodu używa biblioteki **GroupDocs.Conversion for Python**, która udostępnia klasy `HTMLDocument`, `MarkdownSaveOptions` i `Converter` pokazane później. Te same koncepcje mają zastosowanie do innych pakietów **html to markdown python**, takich jak `markdownify` lub `html2text` — jedyną różnicą są instrukcje importu. + +## Jak tworzyć markdown – krok 1: zainstaluj bibliotekę html to markdown python + +Pierwszym zadaniem jest dodanie biblioteki konwersji do Twojego środowiska. Uruchom następujące polecenie pip w terminalu: + +```bash +pip install groupdocs-conversion +``` + +> **Pro tip:** Użyj wirtualnego środowiska (`python -m venv .venv`), aby utrzymać zależności odizolowane od globalnej instalacji Pythona. + +Instalacja pakietu daje dostęp do klas `HTMLDocument`, `MarkdownSaveOptions` i `Converter` niezbędnych do procesu konwersji. + +## Konwertuj html na markdown – krok 2: wczytaj dokument HTML + +Po zainstalowaniu biblioteki, zaimportuj niezbędne klasy i utwórz instancję `HTMLDocument`, która wskazuje na Twój plik źródłowy. + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +Obiekt `HTMLDocument` odczytuje plik i przygotowuje go do konwersji. Jeśli plik nie istnieje, konstruktor zgłasza `FileNotFoundError`, więc upewnij się, że ścieżka jest prawidłowa. + +## html file to markdown – krok 3: skonfiguruj opcje Git‑flavored markdown + +Wiele projektów preferuje Git‑flavored markdown, ponieważ dodaje obsługę tabel, list zadań i składni przekreślenia. Biblioteka pozwala włączyć ten zestaw poprzez właściwość `git` w `MarkdownSaveOptions`. + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +Ustawienie `git = True` instruuje konwerter, aby generował składnię, którą poprawnie renderują GitHub, GitLab i Bitbucket. Jeśli potrzebujesz zwykłego markdown, pozostaw flagę `False`. + +## Zapisz wynik markdown – krok 4: zapisz rezultat przy użyciu biblioteki html to markdown + +Na koniec wywołaj metodę `Converter.convert`, przekazując dokument źródłowy, obiekt opcji oraz ścieżkę docelową. + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +Po zakończeniu skryptu, `git_flavored.md` zawiera reprezentację markdown pliku `sample.html`. Możesz otworzyć plik w dowolnym edytorze lub przekazać go bezpośrednio do generatora statycznych stron. + +### Oczekiwany wynik + +Zakładając, że `sample.html` zawiera prosty nagłówek i akapit, wygenerowany markdown może wyglądać tak: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +Jeśli oryginalny HTML zawiera tabele, listy lub bloki kodu, preset Git‑flavored zachowa te struktury, używając odpowiedniej składni markdown. + +## Zrozumienie biblioteki html to markdown + +Biblioteka **GroupDocs.Conversion** ukrywa szczegóły parsowania i renderowania, które w przeciwnym razie musiałbyś obsługiwać ręcznie. Oferuje ona: + +* Zachowuje stylizację opartą na CSS, gdzie to możliwe (np. pogrubienie, kursywa). +* Generuje czysty, czytelny markdown bez dodatkowych encji HTML. +* Obsługuje konwersję wsadową, dzięki czemu możesz iterować po katalogu plików HTML przy użyciu tego samego kodu. + +Jeśli wolisz lżejsze rozwiązanie, pakiet `markdownify` oferuje API jednofunkcyjne: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +Oba podejścia osiągają ten sam cel — **convert html to markdown** — ale opcja GroupDocs zapewnia większą kontrolę nad formatem wyjściowym i łatwo integruje się z większymi potokami przetwarzania dokumentów. + +## Częste pułapki i jak ich unikać + +| Issue | Why it occurs | Fix | +|-------|---------------|-----| +| Brakujące obrazy w markdown | Konwerter dodaje tylko adresy URL obrazów; nie osadza plików. | Upewnij się, że pliki obrazów są dostępne z lokalizacji markdown lub skopiuj je razem z wynikiem. | +| Uszkodzone względne linki | HTML może używać względnych ścieżek, które po konwersji stają się nieprawidłowe. | Użyj `md_options.base_path` (jeśli dostępny), aby przepisac linki, lub uruchom skrypt post‑processingowy w celu dostosowania ścieżek. | +| Znaki Unicode są escapowane | Niektóre biblioteki escapują znaki nie‑ASCII. | Ustaw `md_options.encode_utf8 = True` (lub równoważną flagę), aby zachować znaki w niezmienionej formie. | + +Rozwiązywanie tych problemów na wczesnym etapie oszczędza czas przy skalowaniu konwersji do dziesiątek lub setek plików. + +## Pełny, uruchamialny przykład + +Poniżej znajduje się samodzielny skrypt, który możesz skopiować, zmodyfikować i od razu uruchomić. Zastąp `YOUR_DIRECTORY` rzeczywistym folderem na swoim komputerze. + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +Uruchom skrypt: + +```bash +python markdown_from_html.py +``` + +Powinieneś zobaczyć komunikat potwierdzający oraz nowy plik `git_flavored.md` zawierający wersję markdown Twojego HTML. + +## Podsumowanie + +Teraz wiesz **how to create markdown** z źródła HTML przy użyciu Pythona. Przewodnik obejmował instalację niezawodnej **html to markdown library**, wczytywanie **html file to markdown**, konfigurowanie opcji **html to markdown python** oraz zapisywanie wyniku. Dzięki tej bazie możesz automatyzować potoki dokumentacji, migrować starsze strony internetowe lub generować treści dla generatorów statycznych stron. + +**Kolejne kroki** + +* Zbadaj konwersję wsadową, iterując po folderze plików HTML. +* Dostosuj `MarkdownSaveOptions`, aby kontrolować style nagłówków, formatowanie list lub obsługę obrazów. +* Połącz ten skrypt z workflow CI/CD, aby automatycznie utrzymywać dokumentację markdown aktualną. + +Szczęśliwe konwertowanie! + +## Co powinieneś się nauczyć dalej? + +Poniższe samouczki obejmują ściśle powiązane tematy, które rozwijają techniki przedstawione w tym przewodniku. Każdy zasób zawiera kompletne działające przykłady kodu z wyjaśnieniami krok po kroku, aby pomóc Ci opanować dodatkowe funkcje API i zbadać alternatywne podejścia implementacyjne w własnych projektach. + +- [Konwertuj HTML na Markdown w Aspose.HTML dla Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Konwertuj HTML na Markdown w .NET z Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Konwertuj markdown na html – przewodnik Java z wyjściem PDF](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/polish/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..21b04cbc1 --- /dev/null +++ b/html/polish/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,187 @@ +--- +category: general +date: 2026-08-22 +description: Dowiedz się, jak tworzyć markdown z HTML w Pythonie za pomocą prostego, + trzyetapowego skryptu. Zawiera opcje konwersji i wskazówki dotyczące eksportu. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: pl +lastmod: 2026-08-22 +og_description: Utwórz markdown z HTML przy użyciu Pythona w zaledwie trzech linijkach. + Ten przewodnik pokazuje konwersję, opcje formatowania oraz jak efektywnie eksportować + HTML do markdowna. +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: Tworzenie markdowna z HTML w Pythonie – przewodnik krok po kroku +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: Jak stworzyć markdown z HTML przy użyciu Pythona +url: /pl/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak utworzyć markdown z HTML przy użyciu Pythona + +Jeśli potrzebujesz **utworzyć markdown z HTML**, ten krótki przewodnik pokazuje dokładnie, jak to zrobić w Pythonie. Zobaczysz przejrzysty, trzyetapowy skrypt, który wczytuje plik HTML, konfiguruje wyjście w formacie Git‑flavored Markdown i zapisuje wynik na dysku. + +Konwersja treści internetowych do lekkiego formatu znaczników jest powszechnym zadaniem przy budowaniu statycznych stron, pipeline'ów dokumentacji lub notebooków analizy danych. W tym samouczku omówimy także, jak **konwertować HTML do markdown** z opcjonalnym formatowaniem, odpowiemy na pytanie **jak efektywnie konwertować HTML**, oraz pokażemy workflow **export HTML to markdown** przy użyciu popularnej biblioteki `groupdocs-conversion`. + +## Wymagania wstępne + +Przed rozpoczęciem upewnij się, że masz: + +* Python 3.8 lub nowszy zainstalowany. +* Pakiet `groupdocs-conversion` (lub dowolna biblioteka dostarczająca `HTMLDocument`, `MarkdownSaveOptions` i `Converter`). Zainstaluj go za pomocą: + +```bash +pip install groupdocs-conversion +``` + +* Plik HTML, który chcesz przekształcić, np. `sample.html` znajdujący się w folderze, którym zarządzasz. + +Nie są wymagane dodatkowe zależności systemowe, a kod działa na Windows, macOS i Linux. + +## Krok 1: Wczytaj źródłowy dokument HTML + +Pierwszą operacją jest utworzenie obiektu `HTMLDocument`, który reprezentuje plik źródłowy. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**Dlaczego to ważne:** `HTMLDocument` parsuje plik, rozwiązuje względne linki i przygotowuje DOM do konwersji. Jeśli plik nie zostanie znaleziony, konstruktor zgłasza wyraźny `FileNotFoundError`, dzięki czemu możesz obsłużyć brakujące dane wejściowe już na wczesnym etapie. + +## Krok 2: Skonfiguruj opcje zapisu Markdown (Git‑flavored) + +Markdown posiada kilka dialektów. Git‑flavored Markdown (GFM) dodaje tabele, listy zadań i blokowane fragmenty kodu, które często są wymagane w plikach README lub na stronach GitHub. + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**Dlaczego to ważne:** Wybierając wyraźnie `MarkdownFormatter.GIT`, zapewniasz, że wyjście podąża za tymi samymi zasadami, które renderuje GitHub, eliminując niespodzianki przy wyświetlaniu markdown w repozytorium. Jeśli wolisz zwykły Markdown, zamień `MarkdownFormatter.GIT` na `MarkdownFormatter.DEFAULT`. + +## Krok 3: Konwertuj dokument HTML do pliku Markdown + +Teraz wywołaj silnik konwersji i zapisz wynik w docelowej ścieżce. + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**Dlaczego to ważne:** `Converter.convert` zajmuje się ciężką pracą — tłumaczeniem tagów HTML na ich odpowiedniki w markdown, zachowując obrazy (poprzez kopiowanie ich do folderu wyjściowego w razie potrzeby) oraz stosując wybrany formatter. Metoda zwraca `None` po sukcesie, ale możesz przechwycić `ConversionException` w celu uzyskania szczegółowego raportu o błędach. + +### Oczekiwany wynik + +Po uruchomieniu skryptu, `sample.md` będzie zawierał coś w rodzaju: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +Dokładny markdown odzwierciedla strukturę `sample.html`. Tabele, obrazy i bloki kodu zostaną skonwertowane zgodnie z zasadami GFM. + +## Typowe warianty i przypadki brzegowe + +| Sytuacja | Zalecana modyfikacja | +|-----------|-------------------| +| **Duże pliki HTML (>10 MB)** | Zwiększ limit rekurencji Pythona lub strumieniuj wejście przy użyciu `HTMLDocument.open_stream()`, jeśli biblioteka to obsługuje. | +| **Obrazy odwołujące się do bezwzględnych URL** | Ustaw `md_options.embed_images = True`, aby osadzić obrazy jako URI danych base‑64, lub zachowaj je jako linki dla lżejszego wyjścia. | +| **Potrzebujesz zwykłego Markdown zamiast GFM** | Zmień `md_options.formatter = MarkdownFormatter.DEFAULT`. | +| **Niestandardowe klasy CSS powinny być ignorowane** | Użyj `md_options.ignore_css_classes = ["unwanted-class"]`. | +| **Uruchamianie w pipeline CI/CD** | Umieść skrypt w bloku `try/except` i zakończ z niezerowym kodem statusu w przypadku niepowodzenia, aby pipeline mógł szybko zakończyć się niepowodzeniem. | + +### Porada pro + +Jeśli planujesz konwertować wiele plików w partii, ponownie użyj jednej instancji `MarkdownSaveOptions` i zmieniaj tylko ścieżki wejścia/wyjścia wewnątrz pętli. Redukuje to narzut tworzenia obiektów i przyspiesza proces o ~15 %. + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## Jak konwertować HTML do markdown w innych językach (krótka uwaga) + +Podczas gdy ten samouczek koncentruje się na **html to markdown python**, te same koncepcje mają zastosowanie do SDK w Javie, C# lub JavaScript: utwórz obiekt dokumentu, skonfiguruj formatter markdown i wywołaj konwerter. Jeśli kiedykolwiek będziesz potrzebować **export HTML to markdown** z środowiska nie‑Pythonowego, poszukaj równoważnych klas `HtmlDocument`, `MarkdownSaveOptions` i `Converter` w SDK specyficznym dla języka. + +## Zakończenie + +Teraz wiesz, jak **utworzyć markdown z HTML** przy użyciu zwięzłego skryptu w Pythonie. Trójetapowy przepływ — wczytaj HTML, ustaw opcje Git‑flavored i uruchom konwersję — obejmuje rdzeń każdego workflow **convert html to markdown**. Od tego momentu możesz: + +* Zintegrować skrypt z generatorami stron statycznych. +* Zautomatyzować aktualizacje dokumentacji w pipeline'ach CI. +* Rozszerzyć konwersję o niestandardowe przetwarzanie po konwersji (np. przepisanie linków lub dostosowanie nagłówków). + +Śmiało eksperymentuj z opcjami dodatkowych — **how to convert html** przy użyciu różnych formatterów, lub dostosowując ustawienia **export html to markdown** dla obrazów i tabel. Szczęśliwej konwersji! + +## Co powinieneś nauczyć się dalej? + +Poniższe samouczki obejmują ściśle powiązane tematy, które budują na technikach przedstawionych w tym przewodniku. Każde źródło zawiera kompletne działające przykłady kodu z krok po kroku wyjaśnieniami, aby pomóc Ci opanować dodatkowe funkcje API i odkrywać alternatywne podejścia implementacyjne w własnych projektach. + +- [Konwertuj HTML do Markdown w Aspose.HTML dla Javy](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Konwertuj HTML do Markdown w .NET z Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Konwertuj markdown do html – przewodnik Java z wyjściem PDF](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/polish/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..972dbd3fc --- /dev/null +++ b/html/polish/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,280 @@ +--- +category: general +date: 2026-08-22 +description: Utwórz PDF z SVG przy użyciu Pythona w kilka minut. Naucz się konwertować + SVG na PDF, zapisywać SVG jako PDF i korzystać z niezawodnego konwertera SVG na + PDF. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: pl +lastmod: 2026-08-22 +og_description: Twórz PDF z SVG w Pythonie szybko. Ten przewodnik pokazuje, jak konwertować + SVG na PDF, używać konwertera SVG do PDF i zapisać SVG jako PDF w jednym skrypcie. +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: Tworzenie PDF z SVG w Pythonie – samouczek krok po kroku +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: Jak stworzyć PDF z SVG w Pythonie – kompletny przewodnik +url: /pl/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak stworzyć PDF z SVG w Pythonie – kompletny przewodnik + +Jeśli potrzebujesz szybko **create PDF from SVG**, ten tutorial pokaże Ci dokładnie, jak to zrobić. Przejdziemy przez konwersję pliku SVG do PDF przy użyciu popularnego konwertera SVG‑do‑PDF, abyś mógł osadzać grafiki wektorowe w raportach, fakturach lub e‑bookach bez opuszczania kodu Pythona. + +Nauczysz się, jak **convert SVG to PDF**, zarządzać skalowaniem, zachować czcionki i w końcu **save SVG as PDF** przy użyciu jednego, powtarzalnego skryptu. Nie są wymagane zewnętrzne narzędzia wiersza poleceń — wystarczy kilka linii Pythona i biblioteka Aspose.SVG for Python. + +## Wymagania wstępne + +| Wymaganie | Powód | +|-------------|--------| +| Python 3.8+ | Biblioteka jest przeznaczona dla nowoczesnych środowisk Python. | +| `aspose.svg` package | Udostępnia `SVGDocument`, `PdfSaveOptions` oraz `Converter`. Instaluj za pomocą `pip install aspose-svg`. | +| An SVG file (`vector.svg`) | Źródłowa grafika wektorowa, którą chcesz przekonwertować. | +| Write permission to the output folder | Wymagane do **save SVG as PDF**. | + +Możesz zainstalować bibliotekę za pomocą: + +```bash +pip install aspose-svg +``` + +> **Pro tip:** Użyj wirtualnego środowiska (`python -m venv venv`), aby utrzymać zależności w izolacji. + +## Przegląd procesu konwersji + +Konwersja składa się z trzech prostych kroków: + +1. Wczytaj **SVG document** z dysku. +2. Utwórz **PDF save options** (możesz dostosować rozmiar strony, DPI itp.). +3. Wywołaj **converter**, aby wygenerować plik PDF. + +Poniższe sekcje rozkładają każdy krok, wyjaśniają *dlaczego* kod jest napisany w ten sposób i pokazują pełny, działający skrypt. + +## Tworzenie PDF z SVG przy użyciu Aspose.SVG for Python + +Ten nagłówek H2 zawiera główne słowo kluczowe **create pdf from svg**, spełniając wymóg SEO. + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### Dlaczego to działa + +* **`SVGDocument`** parsuje XML SVG i buduje reprezentację w pamięci, którą konwerter może renderować. +* **`PdfSaveOptions`** pozwala dostosować wyjście PDF (rozmiar strony, kompresję, DPI). Domyślne ustawienia już tworzą wierny PDF, dlatego przykład działa od razu. +* **`Converter.convert`** wykonuje ciężką pracę: rasteryzuje dane wektorowe na stronach PDF, zachowując wierność wektorów, dzięki czemu wynikowy PDF pozostaje ostry przy dowolnym poziomie powiększenia. + +## Konwersja SVG do PDF z niestandardowym rozmiarem strony + +Jeśli potrzebujesz konkretnego rozmiaru strony — np. A4 dla raportów do druku — dostosuj `PdfSaveOptions`: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **Edge case:** Niektóre SVG definiują `viewBox`, który nie pasuje do żądanych wymiarów PDF. Nadpisanie `page_width`/`page_height` zapewnia, że PDF pasuje do oczekiwań układu. + +## Zapisz SVG jako PDF zachowując czcionki + +Gdy Twój SVG odwołuje się do zewnętrznych czcionek, upewnij się, że czcionki są dostępne dla konwertera. Umieść pliki `.ttf` w tym samym katalogu co SVG lub określ niestandardowy folder czcionek: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +Konwerter osadza czcionki bezpośrednio w PDF, gwarantując, że konwersja **svg file to pdf** wygląda identycznie na każdym komputerze. + +## Konwersja wsadowa: svg file to pdf dla wielu plików + +Często masz folder pełen zasobów SVG. Poniższa pętla demonstruje wydajny **svg to pdf converter**, który przetwarza każdy plik `.svg` w katalogu: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +Ten fragment ilustruje praktyczny przepływ pracy **convert svg to pdf**, który można zintegrować z pipeline'ami CI lub automatycznymi generatorami raportów. + +## Zweryfikuj wynik + +Po uruchomieniu skryptu otwórz wygenerowany PDF w dowolnym przeglądarce (Adobe Reader, Chrome lub Preview). Powinieneś zobaczyć: + +* Kształty wektorowe renderowane ostro przy dowolnym poziomie powiększenia. +* Tekst zgodny ze źródłem SVG, z osadzonymi czcionkami, jeśli je dostarczyłeś. +* Brak artefaktów rastrowych — ponieważ konwersja zachowuje oryginalne dane wektorowe. + +Jeśli zauważysz brakujące czcionki, sprawdź ponownie, czy pliki czcionek są dostępne i czy SVG odwołuje się do nich poprawnie (atrybut `font-family`). + +## Typowe pułapki i jak ich unikać + +| Symptom | Likely cause | Fix | +|---------|--------------|-----| +| Puste strony PDF | SVG ma zewnętrzne zasoby (obrazy, czcionki), które nie zostały znalezione | Podaj `fonts_folder` i upewnij się, że powiązane obrazy znajdują się w tym samym katalogu lub użyj bezwzględnych URL. | +| Tekst wyświetlany jako kontury | Czcionka nie jest osadzona | Ustaw `pdf_options.embed_fonts = True` (domyślnie) i sprawdź, czy plik czcionki jest dostępny. | +| PDF jest większy niż oczekiwano | Wysokie DPI lub nieskompresowane obrazy | Zmniejsz `pdf_options.dpi` lub włącz kompresję: `pdf_options.compress = True`. | +| Wymiary SVG są obcięte | `viewBox` większy niż strona PDF | Dostosuj `pdf_options.page_width`/`page_height` lub skaluj SVG za pomocą `svg_doc.set_viewport`. | + +## Pełny przykład end‑to‑end + +Poniżej znajduje się samodzielny skrypt, który zawiera obsługę błędów, logowanie i opcjonalne argumenty wiersza poleceń. Zapisz go jako `svg_to_pdf.py` i uruchom `python svg_to_pdf.py`. + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +Uruchomienie skryptu generuje operację **save SVG as PDF**, którą możesz osadzić w większych pipeline'ach automatyzacji. + +### Oczekiwany output w konsoli + + + +## Co powinieneś się nauczyć dalej? + +Poniższe tutoriale obejmują ściśle powiązane tematy, które rozwijają techniki przedstawione w tym przewodniku. Każde źródło zawiera kompletne działające przykłady kodu z wyjaśnieniami krok po kroku, aby pomóc Ci opanować dodatkowe funkcje API i odkrywać alternatywne podejścia implementacyjne w własnych projektach. + +- [Konwertuj SVG do PDF w .NET z Aspose.HTML](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg to pdf java – Generuj PDF z SVG przy użyciu Aspose.HTML dla Java](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [Konwertuj SVG do PDF w .NET z Aspose.HTML](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/polish/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..e5ec1d785 --- /dev/null +++ b/html/polish/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-08-22 +description: jak włączyć strumieniowanie przy konwersji dużych plików HTML do PDF + w Pythonie, zmniejszając zużycie pamięci i przyspieszając generowanie wyników +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: pl +lastmod: 2026-08-22 +og_description: jak włączyć strumieniowanie przy konwersji dużych plików HTML do PDF + w Pythonie, zmniejszając zużycie pamięci i przyspieszając generowanie wyjścia +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: Włącz strumieniowanie przy konwersji HTML do PDF w Pythonie +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: Jak włączyć streaming przy konwertowaniu HTML na PDF w Pythonie +url: /pl/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak włączyć streaming podczas konwertowania HTML do PDF w Pythonie + +Jeśli potrzebujesz **jak włączyć streaming** podczas dużej konwersji HTML‑do‑PDF, ten przewodnik pokaże Ci dokładne kroki. Włączając streaming, unikasz ładowania całego dokumentu do pamięci, co jest niezbędne przy konwertowaniu HTML do PDF dla dużych plików. + +Nauczysz się, jak włączyć streaming, konwertować HTML do PDF przy użyciu Pythona oraz obsługiwać przypadki brzegowe, takie jak zadania large HTML to PDF. Rozwiązanie działa z popularną biblioteką `groupdocs-conversion` (lub podobną), ale koncepcje mają zastosowanie do każdego konwertera obsługującego streaming. + +![Diagram przedstawiający konwersję streamingową z HTML do PDF przy użyciu Pythona](streaming-diagram.png) + +## Co będzie potrzebne + +- Python 3.9 lub nowszy +- `groupdocs-conversion` (lub dowolna biblioteka oferująca `PdfSaveOptions` z flagą streaming) +- Plik HTML, który chcesz przekształcić w PDF (przykład używa dużego pliku o nazwie `large.html`) + +Posiadanie tych wymagań zapewnia, że kod uruchomi się bez dodatkowej konfiguracji. + +## Krok 1: Zainstaluj bibliotekę konwersji + +Najpierw zainstaluj pakiet Pythona, który udostępnia `HTMLDocument`, `PdfSaveOptions` i `Converter`. Najczęściej wybieraną opcją jest SDK **GroupDocs.Conversion**: + +```bash +pip install groupdocs-conversion +``` + +> **Wskazówka:** Użyj wirtualnego środowiska (`python -m venv .venv`), aby odizolować zależności. + +## Krok 2: Załaduj dokument HTML, który chcesz przekonwertować + +Ładowanie źródłowego HTML jest proste. Klasa `HTMLDocument` odczytuje plik z dysku i przygotowuje go do konwersji. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +Obiekt `HTMLDocument` reprezentuje cały kod HTML, włączając zasoby zewnętrzne takie jak obrazy i CSS. To punkt wyjścia dla każdej operacji **convert html to pdf**. + +## Krok 3: Utwórz opcje zapisu PDF i włącz streaming + +Włączenie streamingu jest sednem **jak włączyć streaming**. Zamiast buforować cały PDF w pamięci, konwerter zapisuje fragmenty bezpośrednio do pliku wyjściowego. + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +Gdy `enable_streaming` jest ustawione na `True`, biblioteka używa podejścia write‑through, które znacząco zmniejsza zużycie RAM — kluczowe w scenariuszach **large html to pdf**. + +## Krok 4: Konwertuj dokument HTML do PDF przy użyciu skonfigurowanych opcji + +Teraz wywołaj konwersję. Metoda `Converter.convert` przyjmuje dokument źródłowy, obiekt opcji oraz ścieżkę docelową. + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +Po zakończeniu tego wywołania, `large.pdf` zawiera wygenerowany PDF, tworzony podczas streamowania danych na dysk. Cały proces zazwyczaj kończy się szybciej niż konwersja bez streamingu, ponieważ system operacyjny może stopniowo wypisywać dane do systemu plików. + +### Oczekiwany wynik + +Uruchomienie skryptu generuje plik PDF, którego rozmiar odpowiada zawartości oryginalnego HTML. Wynik możesz zweryfikować w dowolnej przeglądarce PDF: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## Dlaczego streaming ma znaczenie przy konwersjach dużego HTML do PDF + +Kiedy **convert html to pdf** bez streamingu, biblioteka najpierw buduje cały PDF w RAM, a dopiero potem zapisuje go na dysk. Dla umiarkowanej strony jest to w porządku, ale zadanie **large html to pdf** (np. 10‑MB raport HTML z wieloma obrazami) może przekroczyć limity pamięci typowych funkcji serverless lub kontenerów o niskiej pamięci. + +Włączenie streamingu rozwiązuje trzy problemy: + +1. **Efektywność pamięci** – w RAM utrzymywany jest tylko mały bufor. +2. **Szybsze postrzegane działanie** – plik pojawia się na dysku, mimo że jest nadal generowany, co pozwala procesom downstream rozpocząć odczyt wcześniej. +3. **Skalowalność** – możesz uruchamiać wiele konwersji równocześnie, nie wyczerpując pamięci hosta. + +## Typowe pułapki i jak ich unikać + +| Objaw | Prawdopodobna przyczyna | Rozwiązanie | +|---------|--------------|-----| +| `MemoryError` during conversion | Flaga streaming nie jest ustawiona lub wersja biblioteki jest zbyt stara | Upewnij się, że `pdf_opts.enable_streaming = True` i zaktualizuj do najnowszego SDK (`pip install --upgrade groupdocs-conversion`). | +| Missing images in the PDF | Ścieżki względne do obrazów nie mogą zostać rozwiązane | Przekaż katalog bazowy do `HTMLDocument` lub osadź obrazy jako base64. | +| Output PDF is blank | Plik HTML nie został znaleziony lub jest nieczytelny | Sprawdź ścieżkę `"YOUR_DIRECTORY/large.html"` i uprawnienia do pliku. | +| Conversion hangs indefinitely | Duże zasoby zewnętrzne (czcionki, CSS) blokują renderowanie | Pobierz wcześniej zasoby zewnętrzne lub użyj przeglądarki headless, aby je wstawić inline. | + +### Przypadek brzegowy: Konwertowanie HTML z łańcucha znaków + +Jeśli zawartość HTML znajduje się w pamięci, a nie w pliku, nadal możesz **jak włączyć streaming** poprzez opakowanie łańcucha w konstruktor `HTMLDocument`, który akceptuje surowy HTML: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +Zachowanie streamingu pozostaje identyczne, ponieważ SDK zapisuje PDF stopniowo. + +## Pełny skrypt, który możesz skopiować i wkleić + +Poniżej znajduje się kompletny, gotowy do uruchomienia przykład, który zawiera wszystkie omówione kroki. Zamień `YOUR_DIRECTORY` na rzeczywistą ścieżkę na swoim komputerze. + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +Uruchomienie `python full_example.py` wygeneruje `large.pdf` przy użyciu podejścia streamingowego. + +## Podsumowanie + +- Teraz wiesz, **jak włączyć streaming** dla konwersji HTML‑do‑PDF w Pythonie. +- Skrypt demonstruje pełny przepływ **convert html to pdf**, efektywnie obsługując obciążenia **large html to pdf**. +- Ustawiając `PdfSaveOptions.enable_streaming = True`, konwerter zapisuje wyjście stopniowo, co jest zalecaną metodą **stream html to pdf**. + +## Co warto zbadać dalej + +- Biblioteki **HTML to PDF Python**, które obsługują CSS3 i JavaScript (np. `WeasyPrint`, `pdfkit`). +- Dodawanie ochrony hasłem lub szyfrowania do wygenerowanego PDF za pomocą dodatkowych ustawień `PdfSaveOptions`. +- Równoległe uruchamianie wielu konwersji w systemie kolejek (Celery, RabbitMQ) przy niskim zużyciu pamięci. + +Śmiało eksperymentuj z różnymi źródłami HTML, rozmiarami stron i metadanymi PDF. Streaming umożliwia obsługę jeszcze większych dokumentów bez utraty wydajności. Powodzenia w kodowaniu! + +## Co powinieneś nauczyć się dalej? + +Poniższe samouczki obejmują ściśle powiązane tematy, które rozwijają techniki przedstawione w tym przewodniku. Każdy zasób zawiera kompletne działające przykłady kodu z krok po kroku wyjaśnieniami, aby pomóc Ci opanować dodatkowe funkcje API i odkrywać alternatywne podejścia implementacyjne w własnych projektach. + +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Create Fixed Thread Pool for Parallel HTML to PDF Conversion](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [How to Enable JavaScript in Aspose HTML – Load HTML & Get Text](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/polish/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..a4b135940 --- /dev/null +++ b/html/polish/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-08-22 +description: Jak wyeksportować linki z HTML i przekonwertować je na plik markdown, + włączając akapity. Przewodnik krok po kroku konwersji HTML do markdown. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: pl +lastmod: 2026-08-22 +og_description: Jak wyeksportować linki z dokumentu HTML i przekonwertować je na plik + markdown, włączając akapity. Skorzystaj z tego pełnego poradnika, aby uzyskać niezawodną + konwersję HTML na markdown. +og_image_alt: How to export links while converting HTML to Markdown +og_title: Jak eksportować linki podczas konwertowania HTML na Markdown – przewodnik + krok po kroku +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: Jak eksportować linki podczas konwertowania HTML na Markdown +url: /pl/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak eksportować linki podczas konwertowania HTML na Markdown + +Jeśli potrzebujesz **jak eksportować linki** z strony HTML i przekształcić wynik w czysty **plik html do markdown**, ten przewodnik pokaże Ci dokładne kroki. Odkryjesz także **jak wyodrębnić akapity**, aby wynikowy markdown zawierał główną treść, na której Ci zależy. Po zakończeniu samouczka będziesz mógł odpowiedzieć na pytanie „**jak konwertować html** na markdown” przy użyciu gotowego skryptu. + +Eksportowanie linków i wyodrębnianie akapitów to typowe zadania przy migracji treści internetowych do statycznych witryn, portali dokumentacji lub back‑endów headless CMS. Poniższe podejście działa z GroupDocs Conversion SDK dla Pythona, ale koncepcje mają zastosowanie do każdej biblioteki umożliwiającej konfigurację funkcji eksportu. + +--- + +## Czego będziesz potrzebować + +- Python 3.9 lub nowszy +- pakiet `groupdocs-conversion` (zainstaluj za pomocą `pip install groupdocs-conversion`) +- Plik HTML, który chcesz przetworzyć (np. `input.html`) +- Podstawowa znajomość skryptów w Pythonie + +--- + +## Jak eksportować linki przy konwersji HTML na Markdown + +Pierwszym ważnym krokiem jest skonfigurowanie konwersji tak, aby tylko wybrane funkcje — linki i akapity — były zapisywane do **pliku html do markdown**. SDK pozwala ustawić maskę bitową wartości `MarkdownFeature`; łączymy `LINKS` i `PARAGRAPHS`, aby skoncentrować wynik. + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### Dlaczego to działa + +- **`HTMLDocument`** parsuje oryginalny plik i buduje DOM, po którym może poruszać się konwerter. +- **`MarkdownSaveOptions`** daje precyzyjną kontrolę nad tym, co SDK zapisuje. Ustawienie `features` na `LINKS | PARAGRAPHS` instruuje silnik, aby ignorował obrazy, tabele lub skrypty, co zmniejsza szum w ostatecznym **pliku html do markdown**. +- **`Converter.convert`** wykonuje ciężką pracę. Szanuje maskę funkcji, wyodrębnia tagi kotwic (``) i tagi akapitów (`

`), i zapisuje je przy użyciu standardowej składni Markdown. + +--- + +## Jak konwertować HTML na Markdown z pełną zawartością (opcjonalnie) + +Jeśli później zdecydujesz, że potrzebujesz całej strony — nie tylko linków i akapitów — po prostu dostosuj maskę funkcji: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +Uruchomienie tej samej konwersji teraz generuje kompletny **plik html do markdown**, który odzwierciedla oryginalny układ. To pokazuje **jak konwertować html** w elastyczny sposób: kontrolujesz wynik, przełączając flagi funkcji. + +--- + +## Jak wyodrębnić tylko akapity + +Czasami zależy Ci tylko na tekstowej treści artykułu, a nie na hiperłączach. Możesz wyodrębnić akapity, ustawiając maskę wyłącznie na `PARAGRAPHS`: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +Wynikowy markdown będzie zawierał czysty, zawijany tekst bez żadnego oznaczenia linków. Ten fragment kodu odpowiada na pytanie **jak wyodrębnić akapity** ze źródła HTML. + +--- + +## Typowe pułapki i jak ich unikać + +| Problem | Dlaczego się pojawia | Rozwiązanie | +|-------|----------------|-----| +| Empty output file | Źródłowy HTML nie zawiera tagów `` ani `

` pasujących do wybranych funkcji. | Zweryfikuj strukturę HTML lub rozszerz maskę funkcji (np. dodaj `HEADINGS`). | +| Encoding problems | HTML używa zestawu znaków nie‑UTF‑8 i SDK odczytuje go niepoprawnie. | Przekaż explicite kodowanie do `HTMLDocument`, np. `HTMLDocument(path, encoding="iso-8859-1")`. | +| Over‑writing existing markdown | Uruchamianie skryptu wielokrotnie nadpisuje poprzedni plik. | Dodaj znacznik czasu do nazwy pliku wyjściowego lub sprawdź `os.path.exists` przed zapisem. | + +**Pro tip:** Podczas przetwarzania wielu plików w folderze, otocz logikę konwersji pętlą i loguj każdy wynik. Daje to przejrzysty ślad audytu i ułatwia wznowienie po awarii. + +--- + +## Pełny skrypt, który możesz skopiować‑wkleić + +Poniżej znajduje się samodzielny plik Pythona (`convert_links_paragraphs.py`), który możesz uruchomić bezpośrednio. Zawiera parsowanie argumentów, dzięki czemu możesz określić ścieżki wejścia i wyjścia bez edytowania kodu. + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**Jak uruchomić** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +Powyższe polecenie demonstruje **jak eksportować linki** i **jak wyodrębnić akapity** w jednym wywołaniu. Pomiń `--links` lub `--paragraphs`, aby dostosować wynik do swoich potrzeb. + +--- + +## Weryfikacja – jak wygląda wynik + +Mając następujący prosty HTML (`input.html`): + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +Uruchomienie skryptu z obiema flagami generuje `links_and_paragraphs.md`: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +Widzisz, że obecne są tylko dwa akapity i hiperłącze — dokładnie to, o co prosiłeś, szukając **jak eksportować linki** podczas wykonywania **convert html to markdown**. + +--- + +## Kolejne kroki i powiązane tematy + +- **How to convert html to markdown** z obrazami: dodaj `MarkdownFeature.IMAGES` do maski. +- **How to extract paragraphs** i następnie przetworzyć + +## Co powinieneś się nauczyć dalej? + +Poniższe samouczki obejmują ściśle powiązane tematy, które rozwijają techniki przedstawione w tym przewodniku. Każde źródło zawiera kompletne działające przykłady kodu z wyjaśnieniami krok po kroku, aby pomóc Ci opanować dodatkowe funkcje API i odkrywać alternatywne podejścia implementacyjne w własnych projektach. + +- [How to Set Offset When Converting HTML to Markdown in Java](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown to HTML Java - Convert with Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [Convert HTML to Markdown – Complete C# Guide](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/polish/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..e54cc9ab9 --- /dev/null +++ b/html/polish/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,280 @@ +--- +category: general +date: 2026-08-22 +description: Jak wczytać HTML przy użyciu Aspose.HTML w Pythonie – ograniczyć głębokość + zasobów i przygotować dokument do konwersji lub edycji. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: pl +lastmod: 2026-08-22 +og_description: Jak załadować HTML przy użyciu Aspose.HTML w Pythonie, ustawić głębokość + obsługi zasobów i przygotować dokument do konwersji lub edycji. +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: Jak wczytać HTML przy użyciu Aspose.HTML – przewodnik Pythona +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: Jak wczytać HTML przy użyciu Aspose.HTML w Pythonie +url: /pl/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak ładować HTML przy użyciu Aspose.HTML w Pythonie + +Jeśli potrzebujesz **jak ładować html** szybko i bezpiecznie w projekcie Python, ten przewodnik pokaże Ci dokładne kroki. Po przeczytaniu pierwszych dwóch zdań będziesz wiedział, jak skonfigurować obsługę zasobów, załadować plik i przygotować proces do dalszej **HTML conversion** lub edycji. + +Ładowanie dużych lub złożonych stron często sprawia problemy naiwnym parserom, ponieważ zasoby zewnętrzne (obrazy, skrypty, CSS) mogą powodować głęboką rekurencję lub opóźnienia sieciowe. Ten tutorial opisuje solidny wzorzec wykorzystujący **Aspose.HTML for Python**, demonstruje **HTMLDocument class** i wyjaśnia, dlaczego ustawienie **max_handling_depth** ma znaczenie. + +Przejdziesz przez: + +* Instalację pakietu Aspose.HTML +* Utworzenie instancji `ResourceHandlingOptions` i ograniczenie głębokości +* Użycie klasy `HTMLDocument` do załadowania strony +* Przygotowanie dokumentu do konwersji na PDF, PNG lub dalszej manipulacji + +Nie wymagana jest wcześniejsza znajomość Aspose.HTML, wystarczy podstawowa wiedza o Pythonie. + +--- + +## Jak ładować HTML przy użyciu Aspose.HTML w Pythonie + +Rdzeń rozwiązania to trzy‑etapowy wzorzec łączący **ResourceHandlingOptions** z **HTMLDocument class**. Ograniczenie głębokości obsługi zapobiega niekontrolowanym wywołaniom sieciowym, gdy strona odwołuje się do wielu zagnieżdżonych zasobów. + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### Dlaczego to działa + +* **`ResourceHandlingOptions`** określa parserowi, ile poziomów zewnętrznych zasobów może podążać. Ustawienie `max_handling_depth = 3` zatrzymuje ładowanie po trzech przeskokach, co wystarcza dla większości witryn, ale chroni przed nieskończonymi pętlami. +* **`HTMLDocument`** odczytuje plik, stosuje opcje i buduje w‑pamięci DOM, który możesz przeszukiwać, modyfikować lub renderować. +* Opcjonalny fragment konwersji pokazuje, jak załadowany dokument integruje się z funkcjami **HTML conversion**, takimi jak zapisywanie do PDF. + +--- + +## Zrozumienie ResourceHandlingOptions + +`ResourceHandlingOptions` jest częścią **Aspose.HTML for Python** i daje precyzyjną kontrolę nad aktywnością sieciową. + +| Właściwość | Cel | Typowa wartość | +|--------------------------|----------------------------------------------------|----------------| +| `max_handling_depth` | Maksymalna głębokość rekurencji dla powiązanych zasobów | `3` (default) | +| `allow_external_resources` | Czy pobierać zewnętrzne CSS, JS, obrazy | `True` | +| `timeout` | Limit czasu sieciowego dla każdego żądania (sekundy) | `30` | + +**Praktyczna wskazówka:** Jeśli wiesz, że docelowa strona odwołuje się tylko do lokalnych zasobów, ustaw `allow_external_resources = False`, aby przyspieszyć ładowanie i uniknąć niepotrzebnych wywołań HTTP. + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## Używanie klasy HTMLDocument + +**HTMLDocument class** jest punktem wejścia dla wszystkich operacji Aspose.HTML. Po utworzeniu możesz: + +* Uzyskać dostęp do DOM przez `doc.root` +* Wykonać zapytania do elementów przy użyciu selektorów CSS (`doc.query_selector_all("img")`) +* Renderować stronę do formatów rastrowych (`doc.save("page.png")`) +* Konwertować do PDF (`doc.save("page.pdf", PDFSaveOptions())`) + +Poniżej krótki fragment kodu, który po załadowaniu wyodrębnia wszystkie atrybuty `src` obrazów: + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**Dlaczego możesz tego potrzebować:** Podczas **HTML conversion** często musisz dostosować lub zamienić adresy URL obrazów przed renderowaniem do innego formatu. Bezpośredni dostęp do DOM daje tę elastyczność. + +--- + +## Kolejne kroki po załadowaniu HTML + +Teraz, gdy dokument znajduje się w pamięci, możesz wybrać jedną z kilku typowych ścieżek pracy: + +1. **Konwersja do PDF** – Idealna do archiwizacji lub drukowania. +2. **Renderowanie do PNG/JPEG** – Przydatne do miniatur lub podglądów wizualnych. +3. **Edycja DOM** – Wstawianie, usuwanie lub modyfikacja elementów przed zapisem. +4. **Ekstrakcja tekstu** – Pobranie treści w formie czystego tekstu do indeksowania lub analizy. + +### Przykład: Konwersja do PDF z niestandardowym rozmiarem strony + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**Oczekiwany wynik:** Plik o nazwie `big_page.pdf` pojawia się w katalogu roboczym, zawierając renderowany HTML ze wszystkimi dozwolonymi zasobami. Jeśli ustawisz `max_handling_depth` na 3, zostaną osadzone tylko zasoby do trzech poziomów głębokości, co utrzymuje rozmiar PDF w rozsądnych granicach. + +--- + +## Typowe pułapki i jak ich unikać + +| Objaw | Przyczyna | Rozwiązanie | +|-----------------------------------------|----------------------------------------------------|-------------| +| Brak obrazów w renderowanym PDF-ie | `allow_external_resources` ustawione na `False` | Włącz zasoby zewnętrzne lub osadź obrazy lokalnie | +| `TimeoutError` podczas ładowania | Opóźnienie sieciowe przekracza `timeout` | Zwiększ `rh_opts.timeout` lub pobierz zasoby wcześniej | +| Nieoczekiwany styl CSS | Arkusz stylów nie został załadowany z powodu limitu głębokości | Zwiększ `max_handling_depth` lub ręcznie dodaj wymagany CSS | +| `UnicodeDecodeError` przy plikach nie‑UTF8 | Plik HTML używa innego kodowania | Przekaż `encoding="windows-1252"` przy tworzeniu `HTMLDocument` | + +--- + +## Pełny, gotowy do uruchomienia przykład + +Poniżej znajduje się samodzielny skrypt, który możesz skopiować i wkleić do pliku o nazwie `load_html_demo.py`. Zawiera instrukcje instalacji, obsługę błędów oraz końcowy krok weryfikacji. + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +**Running the script** + +```bash +python load_html_demo.py +``` + +Powinieneś zobaczyć w konsoli komunikaty potwierdzające załadowanie, listę URL‑ów obrazów oraz komunikat o sukcesie konwersji do PDF. Wygenerowany `big_page.pdf` odzwierciedli zawartość HTML ograniczoną skonfigurowanym **max_handling_depth**. + +--- + +## Zakończenie + +W tym tutorialu omówiliśmy **jak ładować html** przy użyciu **Aspose.HTML for Python**, skonfigurowaliśmy **ResourceHandlingOptions**, aby kontrolować `max_handling_depth`, oraz przedstawiliśmy praktyczne działania po załadowaniu, takie jak wyodrębnianie obrazów i konwersja do PDF. Postępując zgodnie z krokami, masz teraz solidną podstawę dla dowolnego **HTML conversion** workflow, niezależnie od tego, czy tworzysz web‑scrapera, usługę archiwizacji dokumentów, czy dynamiczny generator raportów. + +**Next steps** + +* Eksperymentuj z różnymi wartościami `max_handling_depth`, aby zbalansować kompletność i wydajność. +* Spróbuj konwertować dokument na + +## Co powinieneś się nauczyć dalej? + +Poniższe tutoriale obejmują ściśle powiązane tematy, które rozwijają techniki przedstawione w tym przewodniku. Każdy zasób zawiera kompletne działające przykłady kodu z krok‑po‑kroku wyjaśnieniami, pomagając Ci opanować dodatkowe funkcje API i odkrywać alternatywne podejścia implementacyjne w własnych projektach. + +- [Jak parsować HTML w Java – Ładowanie, zapytania i liczenie elementów](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [Jak edytować drzewo dokumentu HTML w Aspose.HTML dla Java](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [Obsługa zdarzeń ładowania dokumentu w Aspose.HTML dla Java](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/portuguese/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..e5e8c7cdf --- /dev/null +++ b/html/portuguese/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,194 @@ +--- +category: general +date: 2026-08-22 +description: Como converter HTML em PDF em Python usando Aspose.HTML – aprenda a criar + PDF a partir de um arquivo HTML, gerar PDF a partir de código HTML e salvar HTML + como PDF em Python rapidamente. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: pt +lastmod: 2026-08-22 +og_description: Como converter HTML em PDF em Python com Aspose.HTML. Este tutorial + mostra como criar PDF a partir de um arquivo HTML, gerar PDF a partir de código + HTML e salvar HTML como PDF em Python. +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: Como converter HTML para PDF em Python – guia passo a passo +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: Como converter HTML para PDF em Python com Aspose.HTML +url: /pt/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como converter HTML para PDF em Python com Aspose.HTML + +Se você precisa **how to convert html to pdf** rapidamente, este guia mostra uma solução completa e pronta‑para‑executar. Você verá como **create pdf from html file**, **generate pdf from html code**, e **save html as pdf python** usando a API simples da Aspose.HTML. + +Percorreremos cada passo, explicaremos por que cada linha é importante e abordaremos armadilhas comuns para que você possa adaptar o código a qualquer projeto. Sem ferramentas externas, apenas algumas linhas de Python. + +## Pré-requisitos + +* Python 3.8 ou mais recente instalado. +* Uma licença ativa do Aspose.HTML for Python (ou uma chave de avaliação gratuita). +* O pacote `aspose.html` instalado: + +```bash +pip install aspose-html +``` + +Ter esses itens em ordem garante que a conversão seja executada sem erros de tempo de execução. + +## Etapa 1: Carregar o documento HTML (create pdf from html file) + +A primeira tarefa é ler o HTML de origem. Aspose.HTML representa um documento com a classe `HTMLDocument`, que abstrai I/O de arquivos, busca de rede e análise de DOM. + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*Por que isso importa:* +`HTMLDocument` carrega o HTML, resolve recursos relativos (imagens, CSS, fontes) e constrói um DOM que o conversor pode renderizar com precisão. Pular esta etapa ou usar uma string simples perderia essas resoluções de recursos. + +## Etapa 2: Configurar opções de salvamento PDF (save html as pdf python) + +Aspose.HTML permite ajustar finamente a saída PDF via `PdfSaveOptions`. A configuração padrão já produz um PDF de alta qualidade, mas você pode ajustar tamanho da página, compressão ou metadados, se necessário. + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*Por que isso importa:* +Mesmo que você mantenha os padrões, criar um objeto de opções torna o código extensível. Mudanças futuras — como incorporar uma senha ao PDF — podem ser adicionadas sem reestruturar o script. + +## Etapa 3: Executar a conversão (convert html to pdf python) + +O método `Converter.convert` une o documento HTML e as opções PDF, gravando o resultado no caminho de arquivo que você especificar. + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*Por que isso importa:* +`Converter.convert` executa o motor de renderização, rasterizando HTML/CSS para vetores PDF. Ele lida automaticamente com layouts complexos, fontes incorporadas e gráficos SVG — algo que bibliotecas manuais frequentemente não conseguem. + +### Saída esperada + +Executar o script gera `sample.pdf` no mesmo diretório. Abra-o com qualquer visualizador de PDF; você deverá ver uma representação fiel de `sample.html`, incluindo estilos, imagens e quebras de página. + +## Variações comuns e casos de borda + +| Situação | Como lidar | +|-----------|-----------------| +| **HTML is a string, not a file** | Use `HTMLDocument.from_string(html_string)` instead of loading from a path. | +| **You need a password‑protected PDF** | Set `pdf_options.encryption.password = "yourPassword"` before conversion. | +| **Large HTML files cause memory pressure** | Enable streaming mode: `pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`. | +| **Custom fonts are missing** | Register the font folder: `pdf_options.fonts_folder = "path/to/fonts"`.| + +Essas variações ilustram a flexibilidade da API Aspose.HTML enquanto mantêm o fluxo de trabalho principal idêntico. + +## Script completo (generate pdf from html code) + +Abaixo está o programa completo e executável que incorpora todas as etapas. Copie‑e‑cole, substitua `YOUR_DIRECTORY` por uma pasta real e execute. + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +Execute-o com: + +```bash +python convert_html_to_pdf.py +``` + +Você verá a mensagem de confirmação, e o PDF aparecerá ao lado do HTML de origem. + +## Dicas de solução de problemas (pro tip) + +* **Missing images or CSS** – Certifique-se de que o arquivo HTML use URLs absolutas ou que os caminhos relativos estejam corretos em relação a `YOUR_DIRECTORY`. +* **Unicode characters appear as squares** – Incorpore as fontes necessárias via `pdf_options.fonts_folder`. +* **Conversion is slow** – Ative `pdf_options.use_system_fonts = False` para evitar a varredura do catálogo de fontes do sistema. + +## Conclusão + +Agora você sabe **how to convert html to pdf** em Python com Aspose.HTML, desde carregar um arquivo HTML até salvar um PDF de alta qualidade. O mesmo padrão permite que você **create pdf from html file**, **generate pdf from html code**, e **save html as pdf python** para qualquer fluxo de trabalho de automação. + +Em seguida, você pode explorar: + +* Adicionar marcas d'água ou cabeçalhos/rodapés (palavra‑chave: *create pdf from html file*). +* Converter uma URL ao vivo em vez de um arquivo local (palavra‑chave: *convert html to pdf python*). +* Integrar o conversor em uma API Flask ou Django para servir PDFs sob demanda. + +Sinta‑se à vontade para experimentar as opções, e boa geração de PDFs! + +## O que você deve aprender a seguir? + +Os tutoriais a seguir cobrem tópicos intimamente relacionados que se baseiam nas técnicas demonstradas neste guia. Cada recurso inclui exemplos de código completos e funcionais com explicações passo a passo para ajudá‑lo a dominar recursos adicionais da API e explorar abordagens de implementação alternativas em seus próprios projetos. + +- [Converter HTML para PDF com Aspose.HTML – Guia Completo de Manipulação](/html/english/) +- [Como Converter HTML para PDF Java – Usando Aspose.HTML para Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Converter HTML para PDF em .NET com Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-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/portuguese/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/portuguese/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..eda94a4c2 --- /dev/null +++ b/html/portuguese/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-08-22 +description: Aprenda a criar markdown a partir de um arquivo HTML usando Python. Este + guia passo a passo mostra como converter HTML para markdown com uma biblioteca confiável. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: pt +lastmod: 2026-08-22 +og_description: Como criar markdown a partir de um arquivo HTML usando Python. Siga + este guia para converter HTML em markdown rapidamente com uma biblioteca comprovada. +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: Como criar markdown a partir de HTML em Python – guia completo +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: Como criar markdown a partir de HTML em Python – guia completo +url: /pt/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como criar markdown a partir de HTML em Python – guia completo + +Se você precisa saber **como criar markdown** a partir de conteúdo web existente, pode converter um arquivo HTML para markdown com apenas algumas linhas de Python. Este tutorial orienta você a **converter html para markdown** usando uma **biblioteca html para markdown** dedicada que funciona no Windows, macOS e Linux. + +Você aprenderá como instalar a biblioteca, carregar um documento HTML, configurar opções de markdown ao estilo Git e gravar o resultado em disco. Ao final do guia, você poderá transformar qualquer **arquivo html para markdown** automaticamente, o que é útil para geradores de sites estáticos, pipelines de documentação ou projetos de migração de conteúdo. + +## Pré-requisitos + +Antes de começar, certifique‑se de que você tem: + +* Python 3.8 ou mais recente instalado (verifique com `python --version`). +* Acesso a um terminal ou prompt de comando. +* Um arquivo HTML que você deseja converter (o exemplo usa `sample.html`). +* Conexão à internet para instalar o pacote necessário. + +O exemplo de código usa a biblioteca **GroupDocs.Conversion for Python**, que fornece as classes `HTMLDocument`, `MarkdownSaveOptions` e `Converter` mostradas mais adiante. Os mesmos conceitos se aplicam a outros pacotes **html to markdown python** como `markdownify` ou `html2text` — a única diferença são as declarações de importação. + +## Como criar markdown – passo 1: instalar a biblioteca html para markdown python + +A primeira tarefa é adicionar a biblioteca de conversão ao seu ambiente. Execute o seguinte comando pip no seu terminal: + +```bash +pip install groupdocs-conversion +``` + +> **Dica profissional:** Use um ambiente virtual (`python -m venv .venv`) para manter as dependências isoladas da sua instalação global do Python. + +Instalar o pacote lhe dá acesso às classes `HTMLDocument`, `MarkdownSaveOptions` e `Converter` necessárias para o processo de conversão. + +## Converter html para markdown – passo 2: carregar o documento HTML + +Depois que a biblioteca estiver instalada, importe as classes necessárias e crie uma instância `HTMLDocument` que aponta para o seu arquivo de origem. + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +O objeto `HTMLDocument` lê o arquivo e o prepara para a conversão. Se o arquivo não existir, o construtor lança um `FileNotFoundError`, portanto, certifique‑se de que o caminho está correto. + +## arquivo html para markdown – passo 3: configurar opções de markdown ao estilo Git + +Muitos projetos preferem markdown ao estilo Git porque adiciona suporte a tabelas, listas de tarefas e sintaxe de tachado. A biblioteca permite habilitar essa predefinição via a propriedade `git` em `MarkdownSaveOptions`. + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +Definir `git = True` indica ao conversor que ele deve gerar sintaxe que o GitHub, GitLab e Bitbucket renderizam corretamente. Se você precisar de markdown simples, deixe a flag `False`. + +## Salvar a saída markdown – passo 4: gravar o resultado com a biblioteca html para markdown + +Finalmente, invoque o método `Converter.convert`, passando o documento de origem, o objeto de opções e o caminho de destino. + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +Quando o script terminar, `git_flavored.md` contém a representação markdown de `sample.html`. Você pode abrir o arquivo em qualquer editor ou alimentá‑lo diretamente a um gerador de site estático. + +### Saída esperada + +Assumindo que `sample.html` contenha um título simples e um parágrafo, o markdown gerado pode ser parecido com: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +Se o HTML original incluir tabelas, listas ou blocos de código, a predefinição ao estilo Git preservará essas estruturas usando a sintaxe markdown apropriada. + +## Entendendo a biblioteca html para markdown + +A biblioteca **GroupDocs.Conversion** abstrai os detalhes de análise e renderização que você teria que lidar manualmente. Ela: + +* Preserva a estilização baseada em CSS sempre que possível (ex.: negrito, itálico). +* Gera markdown limpo e legível sem entidades HTML extras. +* Suporta conversão em lote, permitindo percorrer um diretório de arquivos HTML com o mesmo código. + +Se você preferir uma solução mais leve, o pacote `markdownify` oferece uma API de função única: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +Ambas as abordagens alcançam o mesmo objetivo final—**converter html para markdown**—mas a opção GroupDocs oferece mais controle sobre o formato de saída e integra‑se facilmente a pipelines maiores de processamento de documentos. + +## Armadilhas comuns e como evitá‑las + +| Problema | Por que ocorre | Correção | +|----------|----------------|----------| +| Imagens ausentes no markdown | O conversor inclui apenas URLs de imagens; não incorpora arquivos. | Garanta que os arquivos de imagem estejam acessíveis a partir da localização do markdown ou copie‑os junto com a saída. | +| Links relativos quebrados | O HTML pode usar caminhos relativos que se tornam inválidos após a conversão. | Use `md_options.base_path` (se disponível) para reescrever os links, ou execute um script de pós‑processamento para ajustar os caminhos. | +| Caracteres Unicode são escapados | Algumas bibliotecas escapam caracteres não‑ASCII. | Defina `md_options.encode_utf8 = True` (ou a flag equivalente) para manter os caracteres intactos. | + +Abordar essas questões cedo economiza tempo quando você escala a conversão para dezenas ou centenas de arquivos. + +## Exemplo completo e executável + +Abaixo está um script autônomo que você pode copiar, modificar e executar imediatamente. Substitua `YOUR_DIRECTORY` pela pasta real em sua máquina. + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +Execute o script: + +```bash +python markdown_from_html.py +``` + +Você deverá ver uma mensagem de confirmação e um novo arquivo `git_flavored.md` contendo a versão markdown do seu HTML. + +## Conclusão + +Agora você sabe **como criar markdown** a partir de uma fonte HTML usando Python. O guia abordou a instalação de uma **biblioteca html para markdown** confiável, o carregamento de um **arquivo html para markdown**, a configuração de opções **html to markdown python**, e a gravação do resultado. Com essa base, você pode automatizar pipelines de documentação, migrar páginas web legadas ou gerar conteúdo para geradores de sites estáticos. + +**Próximos passos** + +* Explore a conversão em lote iterando sobre uma pasta de arquivos HTML. +* Personalize o `MarkdownSaveOptions` para controlar estilos de títulos, formatação de listas ou tratamento de imagens. +* Combine este script com um fluxo de trabalho CI/CD para manter sua documentação markdown sempre atualizada automaticamente. + +Boa conversão! + +## O que você deve aprender a seguir? + +Os tutoriais a seguir cobrem tópicos estreitamente relacionados que se baseiam nas técnicas demonstradas neste guia. Cada recurso inclui exemplos de código completos e funcionais com explicações passo a passo para ajudá‑lo a dominar recursos adicionais da API e explorar abordagens de implementação alternativas em seus próprios projetos. + +- [Converter HTML para Markdown em Aspose.HTML para Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Converter HTML para Markdown em .NET com Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Converter markdown para html – guia Java com saída PDF](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/portuguese/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..4e5aa38bd --- /dev/null +++ b/html/portuguese/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,187 @@ +--- +category: general +date: 2026-08-22 +description: Aprenda como criar markdown a partir de HTML em Python com um script + simples de três etapas. Inclui opções de conversão e dicas de exportação. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: pt +lastmod: 2026-08-22 +og_description: Crie markdown a partir de HTML com Python em apenas três linhas. Este + guia mostra a conversão, opções de formatação e como exportar HTML para markdown + de forma eficiente. +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: Crie markdown a partir de HTML em Python – guia passo a passo +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: Como criar markdown a partir de HTML usando Python +url: /pt/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como criar markdown a partir de HTML usando Python + +Se você precisa **criar markdown a partir de HTML**, este breve guia mostra exatamente como fazer isso com Python. Você verá um script claro de três etapas que carrega um arquivo HTML, configura a saída de Markdown no estilo Git e grava o resultado no disco. + +Converter conteúdo web para marcação leve é uma tarefa comum ao construir sites estáticos, pipelines de documentação ou notebooks de análise de dados. Neste tutorial também abordaremos como **converter HTML para markdown** com formatação opcional, responderemos à pergunta **como converter HTML** de forma eficiente e demonstraremos o fluxo de trabalho **export HTML to markdown** usando a popular biblioteca `groupdocs-conversion`. + +## Pré-requisitos + +Antes de começar, certifique‑se de que você tem: + +* Python 3.8 ou mais recente instalado. +* O pacote `groupdocs-conversion` (ou qualquer biblioteca que forneça `HTMLDocument`, `MarkdownSaveOptions` e `Converter`). Instale‑o com: + +```bash +pip install groupdocs-conversion +``` + +* Um arquivo HTML que você deseja transformar, por exemplo, `sample.html` localizado em uma pasta que você controla. + +Nenhuma dependência de sistema adicional é necessária, e o código funciona no Windows, macOS e Linux. + +## Etapa 1: Carregar o documento HTML de origem + +A primeira operação é criar um objeto `HTMLDocument` que representa o arquivo de origem. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**Por que isso importa:** `HTMLDocument` analisa o arquivo, resolve links relativos e prepara o DOM para a conversão. Se o arquivo não for encontrado, o construtor lança um claro `FileNotFoundError`, permitindo que você trate entradas ausentes logo no início. + +## Etapa 2: Configurar opções de salvamento do Markdown (estilo Git) + +Markdown possui vários dialetos. Git‑flavored Markdown (GFM) adiciona tabelas, listas de tarefas e blocos de código delimitados, que são frequentemente necessários para arquivos README ou páginas do GitHub. + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**Por que isso importa:** Ao selecionar explicitamente `MarkdownFormatter.GIT`, você garante que a saída siga as mesmas regras que o GitHub renderiza, eliminando surpresas quando o markdown é exibido em um repositório. Se preferir Markdown simples, substitua `MarkdownFormatter.GIT` por `MarkdownFormatter.DEFAULT`. + +## Etapa 3: Converter o documento HTML para um arquivo Markdown + +Agora invoque o motor de conversão e grave o resultado no caminho de destino. + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**Por que isso importa:** `Converter.convert` cuida do trabalho pesado — traduzindo tags HTML para seus equivalentes em markdown, preservando imagens (copiando‑as para a pasta de saída, se necessário) e aplicando o formatador que você selecionou. O método retorna `None` em caso de sucesso, mas você pode capturar `ConversionException` para relatórios de erro detalhados. + +### Saída esperada + +Depois de executar o script, `sample.md` conterá algo como: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +O markdown exato reflete a estrutura de `sample.html`. Tabelas, imagens e blocos de código serão convertidos de acordo com as regras do GFM. + +## Variações comuns e casos extremos + +| Situação | Ajuste recomendado | +|-----------|-------------------| +| **Arquivos HTML grandes (>10 MB)** | Aumente o limite de recursão do Python ou faça streaming da entrada usando `HTMLDocument.open_stream()` se a biblioteca suportar. | +| **Imagens referenciadas com URLs absolutas** | Defina `md_options.embed_images = True` para incorporar imagens como URIs de dados base‑64, ou mantenha‑as como links para uma saída mais leve. | +| **Você precisa de Markdown simples em vez de GFM** | Altere `md_options.formatter = MarkdownFormatter.DEFAULT`. | +| **Classes CSS personalizadas devem ser ignoradas** | Use `md_options.ignore_css_classes = ["unwanted-class"]`. | +| **Executando em um pipeline CI/CD** | Envolva o script em um bloco `try/except` e saia com um status diferente de zero em caso de falha, para que o pipeline possa falhar rapidamente. | + +### Dica profissional + +Se você planeja converter muitos arquivos em lote, reutilize uma única instância de `MarkdownSaveOptions` e altere apenas os caminhos de entrada/saída dentro de um loop. Isso reduz a sobrecarga de criação de objetos e acelera o processo em cerca de 15 %. + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## Como converter HTML para markdown em outras linguagens (nota rápida) + +Embora este tutorial se concentre em **html to markdown python**, os mesmos conceitos se aplicam a SDKs de Java, C# ou JavaScript: crie um objeto de documento, configure um formatador markdown e invoque o conversor. Se você precisar **export HTML to markdown** de um ambiente que não seja Python, procure as classes equivalentes `HtmlDocument`, `MarkdownSaveOptions` e `Converter` no SDK específico da linguagem. + +## Conclusão + +Agora você sabe como **criar markdown a partir de HTML** com um script Python conciso. O fluxo de três etapas — carregar o HTML, definir opções no estilo Git e executar a conversão — cobre o núcleo de qualquer fluxo de trabalho **convert html to markdown**. A partir daqui você pode: + +* Integrar o script em geradores de sites estáticos. +* Automatizar atualizações de documentação em pipelines de CI. +* Estender a conversão com pós‑processamento personalizado (por exemplo, reescrita de links ou ajustes de títulos). + +Sinta‑se à vontade para experimentar as opções secundárias — **how to convert html** com diferentes formatadores, ou ajustar as configurações de **export html to markdown** para imagens e tabelas. Boa conversão! + +## O que você deve aprender a seguir? + +Os tutoriais a seguir abordam tópicos intimamente relacionados que se baseiam nas técnicas demonstradas neste guia. Cada recurso inclui exemplos de código completos e funcionais com explicações passo a passo para ajudá‑lo a dominar recursos adicionais da API e explorar abordagens de implementação alternativas em seus próprios projetos. + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/portuguese/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..5a2b91079 --- /dev/null +++ b/html/portuguese/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,282 @@ +--- +category: general +date: 2026-08-22 +description: Crie PDF a partir de SVG usando Python em minutos. Aprenda a converter + SVG para PDF, salvar SVG como PDF e usar um conversor confiável de SVG para PDF. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: pt +lastmod: 2026-08-22 +og_description: Crie PDF a partir de SVG com Python rapidamente. Este guia mostra + como converter SVG para PDF, usar um conversor de SVG para PDF e salvar SVG como + PDF em um único script. +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: Criar PDF a partir de SVG em Python – tutorial passo a passo +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: Como criar PDF a partir de SVG em Python – guia completo +url: /pt/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como criar PDF a partir de SVG em Python – guia completo + +Se você precisa **criar PDF a partir de SVG** rapidamente, este tutorial mostra exatamente como fazer. Vamos percorrer a conversão de um arquivo SVG para PDF usando um conversor SVG‑para‑PDF popular, para que você possa incorporar gráficos vetoriais em relatórios, faturas ou e‑books sem sair do seu código Python. + +Você aprenderá a **converter SVG para PDF**, gerenciar escalonamento, preservar fontes e, finalmente, **salvar SVG como PDF** com um único script reproduzível. Nenhuma ferramenta externa de linha de comando é necessária — apenas algumas linhas de Python e a biblioteca Aspose.SVG for Python. + +## Pré‑requisitos + +Antes de começar, certifique‑se de que você tem: + +| Requisito | Motivo | +|-----------|--------| +| Python 3.8+ | A biblioteca tem como alvo runtimes modernos do Python. | +| `aspose.svg` package | Fornece `SVGDocument`, `PdfSaveOptions` e `Converter`. Instale com `pip install aspose-svg`. | +| Um arquivo SVG (`vector.svg`) | O gráfico vetorial de origem que você deseja converter. | +| Permissão de escrita na pasta de saída | Necessária para **salvar SVG como PDF**. | + +Você pode instalar a biblioteca com: + +```bash +pip install aspose-svg +``` + +> **Dica de especialista:** Use um ambiente virtual (`python -m venv venv`) para manter as dependências isoladas. + +## Visão geral do processo de conversão + +A conversão consiste em três etapas simples: + +1. Carregar o **documento SVG** a partir do disco. +2. Criar **opções de salvamento PDF** (você pode personalizar tamanho da página, DPI, etc.). +3. Chamar o **conversor** para gerar um arquivo PDF. + +As seções a seguir detalham cada etapa, explicam *por que* o código foi escrito dessa forma e mostram o script completo e executável. + +## Criar PDF a partir de SVG usando Aspose.SVG para Python + +Este cabeçalho H2 contém a palavra‑chave principal **create pdf from svg**, atendendo ao requisito de SEO. + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### Por que isso funciona + +* **`SVGDocument`** analisa o XML do SVG e constrói uma representação em memória que o conversor pode renderizar. +* **`PdfSaveOptions`** permite ajustar a saída PDF (tamanho da página, compressão, DPI). Os valores padrão já produzem um PDF fiel, por isso o exemplo funciona imediatamente. +* **`Converter.convert`** realiza o trabalho pesado: rasteriza os dados vetoriais nas páginas PDF enquanto preserva a fidelidade vetorial, de modo que o PDF resultante permaneça nítido em qualquer nível de zoom. + +## Converter SVG para PDF com tamanho de página personalizado + +Se você precisar de um tamanho de página específico — por exemplo, A4 para relatórios imprimíveis — ajuste o `PdfSaveOptions`: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **Caso extremo:** Alguns SVGs definem um `viewBox` que não corresponde às dimensões desejadas do PDF. Sobrescrever `page_width`/`page_height` garante que o PDF se ajuste às expectativas do seu layout. + +## Salvar SVG como PDF preservando fontes + +Quando seu SVG referencia fontes externas, certifique‑se de que as fontes estejam acessíveis ao conversor. Coloque os arquivos `.ttf` no mesmo diretório do SVG ou especifique uma pasta de fontes personalizada: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +O conversor incorpora as fontes diretamente no PDF, garantindo que a conversão **svg file to pdf** fique idêntica em qualquer máquina. + +## Conversão em lote: arquivo svg para pdf para muitos arquivos + +Frequentemente você tem uma pasta cheia de ativos SVG. O loop a seguir demonstra um **svg to pdf converter** eficiente que processa cada arquivo `.svg` em um diretório: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +Este trecho ilustra um fluxo de trabalho prático de **convert svg to pdf** que pode ser integrado a pipelines de CI ou geradores automáticos de relatórios. + +## Verificar a saída + +Depois de executar o script, abra o PDF gerado em qualquer visualizador (Adobe Reader, Chrome ou Preview). Você deverá ver: + +* Formas vetoriais renderizadas nitidamente em qualquer nível de zoom. +* Texto que corresponde à fonte SVG, com fontes incorporadas se você as forneceu. +* Nenhum artefato raster — porque a conversão mantém os dados vetoriais originais. + +Se notar fontes ausentes, verifique novamente se os arquivos de fonte são acessíveis e se o SVG os referencia corretamente (atributo `font-family`). + +## Armadilhas comuns e como evitá‑las + +| Sintoma | Causa provável | Correção | +|---------|----------------|----------| +| Páginas PDF em branco | SVG tem recursos externos (imagens, fontes) não encontrados | Forneça `fonts_folder` e garanta que imagens vinculadas estejam no mesmo diretório ou use URLs absolutas. | +| Texto aparece como contornos | Fonte não incorporada | Defina `pdf_options.embed_fonts = True` (padrão) e verifique se o arquivo de fonte está presente. | +| PDF maior que o esperado | DPI alto ou imagens não comprimidas | Reduza `pdf_options.dpi` ou habilite compressão: `pdf_options.compress = True`. | +| Dimensões do SVG são cortadas | `viewBox` maior que a página PDF | Ajuste `pdf_options.page_width`/`page_height` ou escale o SVG via `svg_doc.set_viewport`. | + +## Exemplo completo de ponta a ponta + +Abaixo está um script autocontido que inclui tratamento de erros, registro de logs e argumentos opcionais de linha de comando. Salve‑o como `svg_to_pdf.py` e execute `python svg_to_pdf.py`. + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +Executar o script produz uma operação de **save SVG as PDF** que você pode incorporar em pipelines de automação maiores. + +### Saída esperada no console + + + +## O que você deve aprender a seguir? + +Os tutoriais a seguir abordam tópicos intimamente relacionados que ampliam as técnicas demonstradas neste guia. Cada recurso inclui exemplos de código completos e funcionais com explicações passo a passo para ajudá‑lo a dominar recursos adicionais da API e explorar abordagens alternativas de implementação em seus próprios projetos. + +- [Convert SVG to PDF in .NET with Aspose.HTML](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg to pdf java – Generate PDF from SVG with Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [Convierte SVG a PDF en .NET con Aspose.HTML](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/portuguese/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/portuguese/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..97c73ce2f --- /dev/null +++ b/html/portuguese/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,224 @@ +--- +category: general +date: 2026-08-22 +description: como habilitar streaming para conversão de HTML grande para PDF em Python, + reduzindo o uso de memória e acelerando a geração da saída +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: pt +lastmod: 2026-08-22 +og_description: como habilitar streaming para conversão de HTML grande em PDF no Python, + reduzindo o uso de memória e acelerando a geração da saída. +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: Ativar streaming para conversão de HTML para PDF em Python +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: Como habilitar streaming ao converter HTML para PDF em Python +url: /pt/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como habilitar streaming ao converter HTML para PDF em Python + +Se você precisa **como habilitar streaming** durante uma conversão grande de HTML‑to‑PDF, este guia mostra os passos exatos. Ao habilitar streaming você evita carregar todo o documento na memória, o que é essencial quando você converte HTML para PDF para arquivos grandes. + +Você aprenderá como habilitar streaming, converter HTML para PDF com Python e lidar com casos extremos, como large HTML to PDF jobs. A solução funciona com a popular biblioteca `groupdocs-conversion` (ou similar), mas os conceitos se aplicam a qualquer conversor que suporte streaming. + +![Diagrama mostrando conversão em streaming de HTML para PDF usando Python](streaming-diagram.png) + +## O que você precisará + +- Python 3.9 ou mais recente +- `groupdocs-conversion` (ou qualquer biblioteca que ofereça `PdfSaveOptions` com uma flag de streaming) +- Um arquivo HTML que você deseja transformar em PDF (o exemplo usa um arquivo grande chamado `large.html`) + +Ter esses pré‑requisitos garante que o código seja executado sem configuração adicional. + +## Etapa 1: Instalar a biblioteca de conversão + +Primeiro, instale o pacote Python que fornece `HTMLDocument`, `PdfSaveOptions` e `Converter`. A escolha mais comum é o SDK **GroupDocs.Conversion**: + +```bash +pip install groupdocs-conversion +``` + +> **Dica profissional:** Use um ambiente virtual (`python -m venv .venv`) para manter as dependências isoladas. + +## Etapa 2: Carregar o documento HTML que você deseja converter + +Carregar o HTML de origem é simples. A classe `HTMLDocument` lê o arquivo do disco e o prepara para a conversão. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +O objeto `HTMLDocument` representa todo o markup HTML, incluindo recursos externos como imagens e CSS. Este é o ponto de partida para qualquer operação de **convert html to pdf**. + +## Etapa 3: Criar opções de salvamento PDF e habilitar streaming + +Habilitar streaming é o núcleo de **como habilitar streaming**. Em vez de armazenar todo o PDF na memória, o conversor grava blocos diretamente no arquivo de saída. + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +Quando `enable_streaming` está definido como `True`, a biblioteca usa uma abordagem write‑through que reduz drasticamente o consumo de RAM—crucial para cenários **large html to pdf**. + +## Etapa 4: Converter o documento HTML para PDF usando as opções configuradas + +Agora invoque a conversão. O método `Converter.convert` recebe o documento de origem, o objeto de opções e o caminho de destino. + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +Após a conclusão desta chamada, `large.pdf` contém o PDF renderizado, gerado enquanto os dados são transmitidos para o disco. Todo o processo geralmente termina mais rápido que uma conversão sem streaming porque o sistema operacional pode gravar os dados no sistema de arquivos incrementalmente. + +### Saída esperada + +Executar o script produz um arquivo PDF cujo tamanho corresponde ao conteúdo do HTML original. Você pode verificar o resultado com qualquer visualizador de PDF: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## Por que streaming é importante para conversões grandes de HTML para PDF + +Quando você **convert html to pdf** sem streaming, a biblioteca primeiro constrói todo o PDF na RAM antes de gravá‑lo no disco. Para uma página modesta isso é aceitável, mas um trabalho **large html to pdf** (por exemplo, um relatório HTML de 10 MB com muitas imagens) pode exceder os limites de memória de funções serverless típicas ou contêineres com pouca memória. + +Habilitar streaming resolve três problemas: + +1. **Eficiência de memória** – apenas um pequeno buffer é mantido na RAM. +2. **Desempenho percebido mais rápido** – o arquivo aparece no disco enquanto ainda está sendo gerado, permitindo que processos subsequentes comecem a lê‑lo mais cedo. +3. **Escalabilidade** – você pode executar muitas conversões em paralelo sem esgotar a memória do host. + +## Armadilhas comuns e como evitá‑las + +| Sintoma | Causa provável | Correção | +|---------|----------------|----------| +| `MemoryError` durante a conversão | Flag de streaming não definido ou versão da biblioteca muito antiga | Certifique‑se de que `pdf_opts.enable_streaming = True` e atualize para o SDK mais recente (`pip install --upgrade groupdocs-conversion`). | +| Imagens ausentes no PDF | Caminhos de imagens relativos não podem ser resolvidos | Passe o diretório base para `HTMLDocument` ou incorpore imagens como base64. | +| PDF de saída está em branco | Arquivo HTML não encontrado ou ilegível | Verifique o caminho `"YOUR_DIRECTORY/large.html"` e verifique as permissões do arquivo. | +| Conversão trava indefinidamente | Recursos externos grandes (fonts, CSS) bloqueiam a renderização | Pré‑baixe ativos externos ou use um navegador headless para incorporá‑los. | + +### Caso de borda: Converter HTML a partir de uma string + +Se o seu conteúdo HTML está em memória ao invés de em um arquivo, você ainda pode **como habilitar streaming** envolvendo a string em um construtor `HTMLDocument` que aceita HTML bruto: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +O comportamento de streaming permanece idêntico porque o SDK grava o PDF incrementalmente. + +## Script completo que você pode copiar‑colar + +Abaixo está um exemplo completo, pronto‑para‑executar, que incorpora todas as etapas discutidas. Substitua `YOUR_DIRECTORY` pelo caminho real na sua máquina. + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +Executar `python full_example.py` gerará `large.pdf` usando a abordagem de streaming. + +## Recapitulação + +- Agora você sabe **como habilitar streaming** para conversão de HTML‑to‑PDF em Python. +- O script demonstra o fluxo completo de **convert html to pdf**, lidando eficientemente com cargas de trabalho **large html to pdf**. +- Ao definir `PdfSaveOptions.enable_streaming = True`, o conversor grava a saída progressivamente, que é a forma recomendada de **stream html to pdf**. + +## O que explorar a seguir + +- Bibliotecas **HTML para PDF Python** que suportam CSS3 e JavaScript (ex.: `WeasyPrint`, `pdfkit`). +- Adicionar proteção por senha ou criptografia ao PDF gerado via configurações adicionais de `PdfSaveOptions`. +- Paralelizar múltiplas conversões em um sistema de filas (Celery, RabbitMQ) mantendo o uso de memória baixo. + +## O que você deve aprender a seguir? + +Os tutoriais a seguir cobrem tópicos intimamente relacionados que ampliam as técnicas demonstradas neste guia. Cada recurso inclui exemplos de código completos e funcionais com explicações passo a passo para ajudá‑lo a dominar recursos adicionais da API e explorar abordagens de implementação alternativas em seus próprios projetos. + +- [Como converter HTML para PDF em Java – Usando Aspose.HTML para Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Criar pool de threads fixo para conversão paralela de HTML para PDF](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [Como habilitar JavaScript no Aspose HTML – Carregar HTML e obter texto](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/portuguese/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..292fb3838 --- /dev/null +++ b/html/portuguese/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,255 @@ +--- +category: general +date: 2026-08-22 +description: Como exportar links de HTML e convertê‑los em um arquivo markdown, incluindo + parágrafos. Guia passo a passo para conversão de HTML para markdown. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: pt +lastmod: 2026-08-22 +og_description: Como exportar links de um documento HTML e convertê-lo em um arquivo + markdown, incluindo parágrafos. Siga este tutorial completo para uma conversão confiável + de HTML para markdown. +og_image_alt: How to export links while converting HTML to Markdown +og_title: Como exportar links ao converter HTML para Markdown – guia passo a passo +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: Como exportar links ao converter HTML para Markdown +url: /pt/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como exportar links ao converter HTML para Markdown + +Se você precisa **exportar links** de uma página HTML e transformar o resultado em um **arquivo html para markdown** limpo, este guia mostra os passos exatos. Você também descobrirá **como extrair parágrafos** para que a saída markdown contenha o conteúdo principal que você deseja. Ao final do tutorial você poderá responder à pergunta “**como converter html** para markdown” com um script pronto‑para‑executar. + +Exportar links e extrair parágrafos são tarefas comuns ao migrar conteúdo web para sites estáticos, portais de documentação ou back‑ends de CMS headless. A abordagem abaixo funciona com o GroupDocs Conversion SDK para Python, mas os conceitos se aplicam a qualquer biblioteca que permita configurar recursos de exportação. + +--- + +## O que você precisará + +- Python 3.9 ou mais recente +- `groupdocs-conversion` package (instale com `pip install groupdocs-conversion`) +- Um arquivo HTML que você deseja processar (ex.: `input.html`) +- Familiaridade básica com scripts Python + +--- + +## Como exportar links com conversão de HTML para Markdown + +O primeiro passo importante é configurar a conversão para que apenas os recursos desejados—links e parágrafos—sejam gravados no **arquivo html para markdown**. O SDK permite definir uma máscara de bits com valores `MarkdownFeature`; combinamos `LINKS` e `PARAGRAPHS` para manter a saída focada. + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### Por que isso funciona + +- **`HTMLDocument`** analisa o arquivo original e constrói um DOM que o conversor pode percorrer. +- **`MarkdownSaveOptions`** oferece controle granular sobre o que o SDK grava. Definir `features` como `LINKS | PARAGRAPHS` indica ao motor para ignorar imagens, tabelas ou scripts, reduzindo o ruído no **arquivo html para markdown** final. +- **`Converter.convert`** realiza o trabalho pesado. Ele respeita a máscara de recursos, extrai tags de âncora (``) e tags de parágrafo (`

`), e as grava usando a sintaxe padrão Markdown. + +--- + +## Como converter HTML para Markdown com conteúdo completo (opcional) + +Se mais tarde você decidir que precisa da página inteira—não apenas links e parágrafos—basta ajustar a máscara de recursos: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +Executar a mesma conversão agora produz um **arquivo html para markdown** completo que espelha o layout original. Isso demonstra **como converter html** de forma flexível: você controla a saída alternando os flags de recursos. + +--- + +## Como extrair apenas parágrafos + +Às vezes você se importa apenas com o conteúdo textual de um artigo, não com os hyperlinks. Você pode isolar os parágrafos definindo a máscara apenas como `PARAGRAPHS`: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +O markdown resultante conterá texto limpo, com quebras de linha, sem nenhuma marcação de link. Este trecho responde à pergunta **como extrair parágrafos** de uma fonte HTML. + +--- + +## Armadilhas comuns e como evitá‑las + +| Problema | Por que acontece | Correção | +|----------|------------------|----------| +| Arquivo de saída vazio | O HTML de origem não contém tags `` ou `

` que correspondam aos recursos selecionados. | Verifique a estrutura do HTML ou amplie a máscara de recursos (ex.: inclua `HEADINGS`). | +| Problemas de codificação | O HTML usa um charset não‑UTF‑8 e o SDK o lê incorretamente. | Passe uma codificação explícita para `HTMLDocument`, por exemplo, `HTMLDocument(path, encoding="iso-8859-1")`. | +| Sobrescrevendo markdown existente | Executar o script várias vezes substitui o arquivo anterior. | Adicione um timestamp ao nome do arquivo de saída ou verifique `os.path.exists` antes de gravar. | + +**Dica profissional:** Ao processar muitos arquivos em uma pasta, envolva a lógica de conversão em um loop e registre cada resultado. Isso fornece um rastro de auditoria claro e facilita a retomada após uma falha. + +--- + +## Script completo que você pode copiar‑colar + +Abaixo está um arquivo Python autônomo (`convert_links_paragraphs.py`) que você pode executar diretamente. Ele inclui análise de argumentos para que você possa especificar caminhos de entrada e saída sem editar o código. + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**Como executar** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +O comando acima demonstra **como exportar links** e **como extrair parágrafos** em uma única chamada. Omitir `--links` ou `--paragraphs` ajusta a saída às suas necessidades. + +--- + +## Verificação – como a saída se parece + +Dado o seguinte HTML simples (`input.html`): + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +Executar o script com ambas as flags produz `links_and_paragraphs.md`: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +Você pode ver que apenas os dois parágrafos e o hyperlink estão presentes—exatamente o que você pediu ao buscar **como exportar links** enquanto executava **convert html to markdown**. + +--- + +## Próximos passos e tópicos relacionados + +- **Como converter html para markdown** com imagens: adicione `MarkdownFeature.IMAGES` à máscara. +- **Como extrair parágrafos** e então pós‑processar + +## O que você deve aprender a seguir? + +Os tutoriais a seguir cobrem tópicos estreitamente relacionados que se baseiam nas técnicas demonstradas neste guia. Cada recurso inclui exemplos de código completos e funcionais com explicações passo a passo para ajudá‑lo a dominar recursos adicionais da API e explorar abordagens alternativas de implementação em seus próprios projetos. + +- [Como definir deslocamento ao converter HTML para Markdown em Java](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown para HTML Java - Converter com Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [Converter HTML para Markdown – Guia completo em C#](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/portuguese/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..ffd214014 --- /dev/null +++ b/html/portuguese/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,280 @@ +--- +category: general +date: 2026-08-22 +description: Como carregar HTML com Aspose.HTML em Python – limitar a profundidade + dos recursos e preparar o documento para conversão ou edição. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: pt +lastmod: 2026-08-22 +og_description: Como carregar HTML com Aspose.HTML em Python, definir a profundidade + de manipulação de recursos e preparar o documento para conversão ou edição. +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: Como carregar HTML com Aspose.HTML – Guia Python +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: Como carregar HTML com Aspose.HTML em Python +url: /pt/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como carregar HTML com Aspose.HTML em Python + +Se você precisa **carregar html** de forma rápida e segura em um projeto Python, este guia mostra os passos exatos. Ao final das duas primeiras frases você saberá como configurar o tratamento de recursos, carregar o arquivo e deixar o processo pronto para **conversão de HTML** ou edição posterior. + +Carregar páginas grandes ou complexas costuma causar problemas em analisadores ingênuos porque recursos externos (imagens, scripts, CSS) podem gerar recursão profunda ou atrasos de rede. Este tutorial cobre um padrão robusto usando **Aspose.HTML for Python**, demonstra a **classe HTMLDocument** e explica por que definir **max_handling_depth** é importante. + +Você vai percorrer: + +* Instalar o pacote Aspose.HTML +* Criar uma instância de `ResourceHandlingOptions` e limitar a profundidade +* Usar a classe `HTMLDocument` para carregar uma página +* Preparar o documento para conversão em PDF, PNG ou manipulação adicional + +Nenhuma experiência prévia com Aspose.HTML é necessária, apenas conhecimento básico de Python. + +--- + +## Como carregar HTML com Aspose.HTML em Python + +O núcleo da solução é um padrão de três etapas que combina **ResourceHandlingOptions** com a **classe HTMLDocument**. Limitar a profundidade de tratamento impede chamadas de rede descontroladas quando uma página referencia muitos recursos aninhados. + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### Por que isso funciona + +* **`ResourceHandlingOptions`** informa ao analisador quantos níveis de recursos externos ele pode seguir. Definir `max_handling_depth = 3` interrompe o carregador após três saltos, o que é suficiente para a maioria dos sites, mas protege contra loops infinitos. +* **`HTMLDocument`** lê o arquivo, aplica as opções e constrói um DOM em memória que você pode consultar, modificar ou renderizar. +* O trecho opcional de conversão demonstra como o documento carregado se integra aos recursos de **conversão de HTML**, como salvar em PDF. + +--- + +## Entendendo ResourceHandlingOptions + +`ResourceHandlingOptions` faz parte do **Aspose.HTML for Python** e oferece controle granular sobre a atividade de rede. + +| Propriedade | Propósito | Valor típico | +|----------------------------|------------------------------------------------------|--------------| +| `max_handling_depth` | Profundidade máxima de recursão para recursos vinculados | `3` (padrão) | +| `allow_external_resources`| Se deve baixar CSS, JS e imagens externos | `True` | +| `timeout` | Tempo limite de rede por requisição (segundos) | `30` | + +**Dica prática:** Se você souber que a página alvo referencia apenas recursos locais, defina `allow_external_resources = False` para acelerar o carregamento e evitar chamadas HTTP desnecessárias. + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## Usando a classe HTMLDocument + +A **classe HTMLDocument** é o ponto de entrada para todas as operações do Aspose.HTML. Uma vez instanciada, você pode: + +* Acessar o DOM via `doc.root` +* Consultar elementos com seletores CSS (`doc.query_selector_all("img")`) +* Renderizar a página em formatos raster (`doc.save("page.png")`) +* Converter para PDF (`doc.save("page.pdf", PDFSaveOptions())`) + +A seguir, um pequeno trecho que extrai todos os atributos `src` de imagens após o carregamento: + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**Por que você pode precisar disso:** Ao realizar **conversão de HTML**, frequentemente é necessário ajustar ou substituir URLs de imagens antes de renderizar para outro formato. Acessar o DOM diretamente oferece essa flexibilidade. + +--- + +## Próximos passos após carregar o HTML + +Agora que o documento está em memória, você pode escolher entre vários fluxos de trabalho comuns: + +1. **Converter para PDF** – Ideal para arquivamento ou impressão. +2. **Renderizar para PNG/JPEG** – Útil para miniaturas ou pré‑visualizações visuais. +3. **Editar o DOM** – Inserir, remover ou modificar elementos antes de salvar. +4. **Extrair texto** – Obter conteúdo em texto puro para indexação ou análise. + +### Exemplo: Converter para PDF com tamanho de página personalizado + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**Saída esperada:** Um arquivo chamado `big_page.pdf` aparece no diretório de trabalho, contendo o HTML renderizado com todos os recursos permitidos aplicados. Se você definiu `max_handling_depth` como 3, apenas recursos até três níveis de profundidade são incorporados, mantendo o tamanho do PDF razoável. + +--- + +## Armadilhas comuns e como evitá‑las + +| Sintoma | Causa | Solução | +|-----------------------------------------|--------------------------------------------------|---------| +| Imagens ausentes no PDF renderizado | `allow_external_resources` definido como `False` | Habilite recursos externos ou incorpore imagens localmente | +| `TimeoutError` durante o carregamento | Latência de rede excede `timeout` | Aumente `rh_opts.timeout` ou pré‑baixe os ativos | +| Estilização CSS inesperada | Folha de estilo vinculada não carregada devido ao limite de profundidade | Aumente `max_handling_depth` ou adicione manualmente o CSS necessário | +| `UnicodeDecodeError` em arquivos não‑UTF8| Arquivo HTML usa codificação diferente | Passe `encoding="windows-1252"` ao criar `HTMLDocument` | + +--- + +## Exemplo completo e executável + +Abaixo está um script autocontido que você pode copiar‑colar em um arquivo chamado `load_html_demo.py`. Ele inclui instruções de instalação, tratamento de erros e uma etapa final de verificação. + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +### Executando o script + +```bash +python load_html_demo.py +``` + +Você deverá ver a saída no console confirmando o carregamento, uma lista de URLs de imagens e uma mensagem de sucesso para a conversão em PDF. O `big_page.pdf` gerado refletirá o conteúdo HTML limitado pela **max_handling_depth** configurada. + +--- + +## Conclusão + +Neste tutorial abordamos **como carregar html** usando **Aspose.HTML for Python**, configuramos **ResourceHandlingOptions** para controlar `max_handling_depth` e demonstramos ações práticas pós‑carregamento, como extração de imagens e conversão para PDF. Seguindo os passos, você agora tem uma base confiável para qualquer fluxo de **conversão de HTML**, seja construindo um web‑scraper, um serviço de arquivamento de documentos ou um gerador de relatórios dinâmicos. + +**Próximos passos** + +* Experimente diferentes valores de `max_handling_depth` para equilibrar completude e desempenho. +* Tente converter o documento para + +## O que você deve aprender a seguir? + +Os tutoriais a seguir cobrem tópicos intimamente relacionados que ampliam as técnicas demonstradas neste guia. Cada recurso inclui exemplos de código completos com explicações passo a passo para ajudá‑lo a dominar recursos adicionais da API e explorar abordagens alternativas em seus próprios projetos. + +- [How to Parse HTML Java – Load, Query & Count Elements](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [How to Edit HTML Document Tree in Aspose.HTML for Java](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [Handle Document Load Events in Aspose.HTML for Java](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/russian/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..75e91634e --- /dev/null +++ b/html/russian/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,192 @@ +--- +category: general +date: 2026-08-22 +description: Как конвертировать HTML в PDF в Python с помощью Aspose.HTML — узнайте, + как создать PDF из HTML‑файла, сгенерировать PDF из HTML‑кода и быстро сохранить + HTML как PDF в Python. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: ru +lastmod: 2026-08-22 +og_description: Как конвертировать HTML в PDF в Python с помощью Aspose.HTML. Этот + учебник покажет, как создать PDF из HTML‑файла, сгенерировать PDF из HTML‑кода и + сохранить HTML как PDF в Python. +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: Как конвертировать HTML в PDF на Python – пошаговое руководство +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: Как конвертировать HTML в PDF в Python с помощью Aspose.HTML +url: /ru/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как конвертировать HTML в PDF в Python с помощью Aspose.HTML + +Если вам нужно **how to convert html to pdf** быстро, это руководство покажет вам полное, готовое к запуску решение. Вы увидите, как **create pdf from html file**, **generate pdf from html code**, и **save html as pdf python** с помощью простого API Aspose.HTML. + +Мы пройдём каждый шаг, объясним, почему каждая строка важна, и рассмотрим распространённые подводные камни, чтобы вы могли адаптировать код к любому проекту. Никаких внешних инструментов, только несколько строк кода на Python. + +## Требования + +* Установлен Python 3.8 или новее. +* Действующая лицензия Aspose.HTML for Python (или бесплатный оценочный ключ). +* Установлен пакет `aspose.html`: + +```bash +pip install aspose-html +``` + +Наличие этих компонентов гарантирует, что конвертация будет выполняться без ошибок времени выполнения. + +## Шаг 1: Загрузка HTML‑документа (create pdf from html file) + +Первая задача — прочитать исходный HTML. Aspose.HTML представляет документ классом `HTMLDocument`, который абстрагирует работу с файловой системой, загрузку по сети и разбор DOM. + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*Почему это важно:* +`HTMLDocument` загружает HTML, разрешает относительные ресурсы (изображения, CSS, шрифты) и строит DOM, который конвертер может точно отрисовать. Пропуск этого шага или использование обычной строки приведёт к потере разрешения ресурсов. + +## Шаг 2: Настройка параметров сохранения PDF (save html as pdf python) + +Aspose.HTML позволяет точно настроить вывод PDF через `PdfSaveOptions`. Конфигурация по умолчанию уже создаёт PDF высокого качества, но при необходимости можно изменить размер страницы, степень сжатия или метаданные. + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*Почему это важно:* +Даже если вы оставляете параметры по умолчанию, создание объекта опций делает код расширяемым. Будущие изменения — например, добавление пароля к PDF — можно внедрить без переработки скрипта. + +## Шаг 3: Выполнение конвертации (convert html to pdf python) + +Метод `Converter.convert` связывает HTML‑документ и параметры PDF, записывая результат в указанный вами путь к файлу. + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*Почему это важно:* +`Converter.convert` запускает движок рендеринга, преобразуя HTML/CSS в векторный PDF. Он автоматически обрабатывает сложные макеты, встроенные шрифты и графику SVG — то, что часто упускают ручные библиотеки. + +### Ожидаемый результат + +Запуск скрипта создаёт `sample.pdf` в том же каталоге. Откройте его в любом PDF‑просмотрщике; вы увидите точную копию `sample.html`, включая стили, изображения и разрывы страниц. + +## Распространённые варианты и граничные случаи + +| Situation | How to handle it | +|-----------|-----------------| +| **HTML — это строка, а не файл** | Используйте `HTMLDocument.from_string(html_string)` вместо загрузки из пути. | +| **Вам нужен PDF, защищённый паролем** | Установите `pdf_options.encryption.password = "yourPassword"` перед конвертацией. | +| **Большие HTML‑файлы вызывают нагрузку на память** | Включите режим потоковой записи: `pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`. | +| **Отсутствуют пользовательские шрифты** | Зарегистрируйте папку со шрифтами: `pdf_options.fonts_folder = "path/to/fonts"`.| + +Эти варианты демонстрируют гибкость API Aspose.HTML, при этом основной рабочий процесс остаётся неизменным. + +## Полный скрипт (generate pdf from html code) + +Ниже представлен полный, исполняемый пример программы, включающий все шаги. Скопируйте‑вставьте его, замените `YOUR_DIRECTORY` реальной папкой и запустите. + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +Run it with: + +```bash +python convert_html_to_pdf.py +``` + +Вы увидите сообщение подтверждения, и PDF появится рядом с исходным HTML. + +## Советы по устранению неполадок (pro tip) + +* **Missing images or CSS** – Убедитесь, что HTML‑файл использует абсолютные URL‑адреса или что относительные пути корректны относительно `YOUR_DIRECTORY`. +* **Unicode characters appear as squares** – Встроите необходимые шрифты через `pdf_options.fonts_folder`. +* **Conversion is slow** – Включите `pdf_options.use_system_fonts = False`, чтобы избежать сканирования системного каталога шрифтов. + +## Заключение + +Теперь вы знаете **how to convert html to pdf** в Python с Aspose.HTML, от загрузки HTML‑файла до сохранения PDF высокого качества. Та же схема позволяет вам **create pdf from html file**, **generate pdf from html code**, и **save html as pdf python** для любого автоматизированного рабочего процесса. + +Далее вы можете изучить: + +* Добавление водяных знаков или колонтитулов (ключевое слово: *create pdf from html file*). +* Конвертация живого URL вместо локального файла (ключевое слово: *convert html to pdf python*). +* Интеграция конвертера в API Flask или Django для выдачи PDF по запросу. + +## Что изучать дальше? + +Следующие руководства охватывают тесно связанные темы, построенные на техниках, продемонстрированных в этом руководстве. Каждый ресурс включает полностью работающие примеры кода с пошаговыми объяснениями, чтобы помочь вам освоить дополнительные возможности API и изучить альтернативные подходы к реализации в ваших проектах. + +- [Конвертация HTML в PDF с Aspose.HTML – Полное руководство по манипуляциям](/html/english/) +- [Как конвертировать HTML в PDF на Java – Использование Aspose.HTML для Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Конвертация HTML в PDF в .NET с Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-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/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/russian/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..ea8077632 --- /dev/null +++ b/html/russian/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-08-22 +description: Узнайте, как создавать markdown из HTML‑файла с помощью Python. Это пошаговое + руководство показывает, как преобразовать HTML в markdown с использованием надёжной + библиотеки. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: ru +lastmod: 2026-08-22 +og_description: Как создать markdown из HTML‑файла с помощью Python. Следуйте этому + руководству, чтобы быстро преобразовать HTML в markdown с использованием проверенной + библиотеки. +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: Как создать markdown из HTML в Python — полное руководство +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: Как создать markdown из HTML в Python — полное руководство +url: /ru/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как создать markdown из HTML в Python – полное руководство + +Если вам нужно знать **как создать markdown** из существующего веб‑контента, вы можете преобразовать HTML‑файл в markdown всего в несколько строк кода на Python. Этот учебник пошагово покажет, как **convert html to markdown** с помощью специализированной **html to markdown library**, работающей в Windows, macOS и Linux. + +Вы узнаете, как установить библиотеку, загрузить HTML‑документ, настроить параметры Git‑flavored markdown и записать результат на диск. К концу руководства вы сможете автоматически преобразовывать любой **html file to markdown**, что полезно для генераторов статических сайтов, конвейеров документации или проектов миграции контента. + +## Prerequisites + +Прежде чем начать, убедитесь, что у вас есть: + +* Python 3.8 или новее (проверьте командой `python --version`). +* Доступ к терминалу или командной строке. +* HTML‑файл, который нужно конвертировать (в примере используется `sample.html`). +* Интернет‑соединение для установки необходимого пакета. + +В примере кода используется библиотека **GroupDocs.Conversion for Python**, предоставляющая классы `HTMLDocument`, `MarkdownSaveOptions` и `Converter`, показанные ниже. Те же концепции применимы к другим **html to markdown python** пакетам, таким как `markdownify` или `html2text` — единственное различие в инструкциях импорта. + +## How to create markdown – step 1: install the html to markdown python library + +Первой задачей является добавление библиотеки конвертации в ваше окружение. Выполните следующую команду pip в терминале: + +```bash +pip install groupdocs-conversion +``` + +> **Pro tip:** Используйте виртуальное окружение (`python -m venv .venv`), чтобы изолировать зависимости от глобальной установки Python. + +Установка пакета дает вам доступ к классам `HTMLDocument`, `MarkdownSaveOptions` и `Converter`, необходимым для процесса конвертации. + +## Convert html to markdown – step 2: load the HTML document + +После установки библиотеки импортируйте необходимые классы и создайте экземпляр `HTMLDocument`, указывающий на ваш исходный файл. + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +Объект `HTMLDocument` читает файл и подготавливает его к конвертации. Если файл не существует, конструктор выбросит `FileNotFoundError`, поэтому убедитесь, что путь указан правильно. + +## html file to markdown – step 3: configure Git‑flavored markdown options + +Во многих проектах предпочитают Git‑flavored markdown, поскольку он поддерживает таблицы, списки задач и зачёркнутый текст. Библиотека позволяет включить этот набор через свойство `git` в `MarkdownSaveOptions`. + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +Установка `git = True` сообщает конвертеру использовать синтаксис, корректно отображаемый GitHub, GitLab и Bitbucket. Если нужен обычный markdown, оставьте флаг `False`. + +## Save the markdown output – step 4: write the result with the html to markdown library + +Наконец, вызовите метод `Converter.convert`, передав исходный документ, объект настроек и путь назначения. + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +Когда скрипт завершится, файл `git_flavored.md` будет содержать markdown‑представление `sample.html`. Вы можете открыть его в любом редакторе или сразу передать в генератор статических сайтов. + +### Expected output + +Предположим, `sample.html` содержит простой заголовок и абзац, сгенерированный markdown может выглядеть так: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +Если исходный HTML включает таблицы, списки или блоки кода, предустановка Git‑flavored сохранит эти структуры с помощью соответствующего markdown‑синтаксиса. + +## Understanding the html to markdown library + +Библиотека **GroupDocs.Conversion** абстрагирует детали парсинга и рендеринга, которые вам пришлось бы реализовывать вручную. Она: + +* Сохраняет стили CSS, где это возможно (например, жирный, курсив). +* Генерирует чистый, читаемый markdown без лишних HTML‑сущностей. +* Поддерживает пакетную конвертацию, так что вы можете перебрать каталог HTML‑файлов тем же кодом. + +Если вам нужен более лёгкий вариант, пакет `markdownify` предлагает однофункциональный API: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +Оба подхода достигают одной цели — **convert html to markdown** — но вариант GroupDocs предоставляет больший контроль над форматом вывода и легко интегрируется в более крупные конвейеры обработки документов. + +## Common pitfalls and how to avoid them + +| Issue | Why it occurs | Fix | +|-------|---------------|-----| +| Отсутствие изображений в markdown | Конвертер включает только URL‑адреса изображений, не встраивая файлы. | Убедитесь, что файлы изображений доступны из места расположения markdown, либо скопируйте их рядом с выводом. | +| Поломанные относительные ссылки | В HTML могут использоваться относительные пути, которые становятся недействительными после конвертации. | Используйте `md_options.base_path` (если доступно) для переписывания ссылок или запустите пост‑обработку скриптом, корректирующим пути. | +| Юникод‑символы экранируются | Некоторые библиотеки экранируют не‑ASCII символы. | Установите `md_options.encode_utf8 = True` (или аналогичный флаг), чтобы сохранить символы без изменений. | + +Решение этих проблем на ранних этапах экономит время при масштабировании конвертации до десятков и сотен файлов. + +## Full, runnable example + +Ниже приведён автономный скрипт, который вы можете скопировать, изменить и сразу запустить. Замените `YOUR_DIRECTORY` на реальный путь к папке на вашем компьютере. + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +Запустите скрипт: + +```bash +python markdown_from_html.py +``` + +Вы увидите сообщение подтверждения и новый файл `git_flavored.md`, содержащий markdown‑версию вашего HTML. + +## Conclusion + +Теперь вы знаете **how to create markdown** из HTML‑источника с помощью Python. Руководство охватило установку надёжной **html to markdown library**, загрузку **html file to markdown**, настройку параметров **html to markdown python** и сохранение результата. С этой базой вы можете автоматизировать конвейеры документации, мигрировать устаревшие веб‑страницы или генерировать контент для генераторов статических сайтов. + +**Next steps** + +* Исследуйте пакетную конвертацию, перебирая папку с HTML‑файлами. +* Настройте `MarkdownSaveOptions` для управления стилями заголовков, форматированием списков или обработкой изображений. +* Объедините этот скрипт с CI/CD‑конвейером, чтобы автоматически поддерживать актуальность markdown‑документации. + +Happy converting! + +## What Should You Learn Next? + +The following tutorials cover closely related topics that build on the techniques demonstrated in this guide. Each resource includes complete working code examples with step-by-step explanations to help you master additional API features and explore alternative implementation approaches in your own projects. + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/russian/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..c04ae1eb3 --- /dev/null +++ b/html/russian/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,187 @@ +--- +category: general +date: 2026-08-22 +description: Узнайте, как создавать markdown из HTML в Python с помощью простого трёхшагового + скрипта. Включает варианты конвертации и советы по экспорту. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: ru +lastmod: 2026-08-22 +og_description: Создайте markdown из HTML с помощью Python всего в три строки. Это + руководство показывает процесс конвертации, варианты форматирования и как эффективно + экспортировать HTML в markdown. +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: Создать markdown из HTML в Python — пошаговое руководство +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: Как создать markdown из HTML с помощью Python +url: /ru/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как создать markdown из HTML с помощью Python + +Если вам нужно **создать markdown из HTML**, это короткое руководство показывает, как сделать это с помощью Python. Вы увидите ясный скрипт из трёх шагов, который загружает HTML‑файл, настраивает вывод Git‑flavored Markdown и записывает результат на диск. + +Преобразование веб‑контента в лёгкую разметку — распространённая задача при создании статических сайтов, конвейеров документации или ноутбуков для анализа данных. В этом руководстве мы также коснёмся того, как **конвертировать HTML в markdown** с необязательным форматированием, ответим на вопрос **как эффективно конвертировать HTML**, и продемонстрируем процесс **экспорта HTML в markdown** с использованием популярной библиотеки `groupdocs-conversion`. + +## Требования + +Прежде чем начать, убедитесь, что у вас есть: + +* Python 3.8 или новее установлен. +* Пакет `groupdocs-conversion` (или любая библиотека, предоставляющая `HTMLDocument`, `MarkdownSaveOptions` и `Converter`). Установите его с помощью: + +```bash +pip install groupdocs-conversion +``` + +* HTML‑файл, который вы хотите преобразовать, например `sample.html`, расположенный в папке, которой вы управляете. + +Дополнительные системные зависимости не требуются, и код работает на Windows, macOS и Linux. + +## Шаг 1: Загрузить исходный HTML‑документ + +Первая операция — создать объект `HTMLDocument`, представляющий исходный файл. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**Почему это важно:** `HTMLDocument` парсит файл, разрешает относительные ссылки и подготавливает DOM для конвертации. Если файл не найден, конструктор бросает понятный `FileNotFoundError`, что позволяет обработать отсутствие входных данных на раннем этапе. + +## Шаг 2: Настроить параметры сохранения Markdown (Git‑flavored) + +У Markdown есть несколько диалектов. Git‑flavored Markdown (GFM) добавляет таблицы, списки задач и блоки кода с ограждениями, которые часто требуются для файлов README или страниц GitHub. + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**Почему это важно:** Явно выбирая `MarkdownFormatter.GIT`, вы гарантируете, что вывод соответствует тем же правилам, которые использует GitHub, устраняя неожиданности при отображении markdown в репозитории. Если вам нужен обычный Markdown, замените `MarkdownFormatter.GIT` на `MarkdownFormatter.DEFAULT`. + +## Шаг 3: Преобразовать HTML‑документ в файл Markdown + +Теперь вызовите движок конвертации и запишите результат в целевой путь. + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**Почему это важно:** `Converter.convert` выполняет основную работу — переводит HTML‑теги в их markdown‑эквиваленты, сохраняет изображения (копируя их в папку вывода при необходимости) и применяет выбранный форматтер. Метод возвращает `None` при успехе, но вы можете отловить `ConversionException` для подробного сообщения об ошибке. + +### Ожидаемый вывод + +После выполнения скрипта `sample.md` будет содержать примерно следующее: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +Точный markdown отражает структуру `sample.html`. Таблицы, изображения и блоки кода будут преобразованы согласно правилам GFM. + +## Распространённые варианты и граничные случаи + +| Ситуация | Рекомендуемая настройка | +|-----------|-------------------| +| **Большие HTML‑файлы (>10 MB)** | Увеличьте лимит рекурсии Python или потоково обрабатывайте ввод с помощью `HTMLDocument.open_stream()`, если библиотека это поддерживает. | +| **Изображения, указанные абсолютными URL** | Установите `md_options.embed_images = True`, чтобы внедрять изображения как data‑URI в формате base‑64, или оставьте их как ссылки для более лёгкого вывода. | +| **Вам нужен обычный Markdown вместо GFM** | Измените `md_options.formatter = MarkdownFormatter.DEFAULT`. | +| **Пользовательские CSS‑классы должны игнорироваться** | Используйте `md_options.ignore_css_classes = ["unwanted-class"]`. | +| **Запуск в CI/CD конвейере** | Обёрните скрипт в блок `try/except` и завершайте с ненулевым статусом при ошибке, чтобы конвейер мог быстро завершиться с ошибкой. | + +### Совет профессионала + +Если вы планируете конвертировать множество файлов пакетно, переиспользуйте один экземпляр `MarkdownSaveOptions` и меняйте только пути ввода/вывода внутри цикла. Это уменьшает накладные расходы на создание объектов и ускоряет процесс примерно на ~15 %. + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## Как конвертировать HTML в markdown на других языках (кратко) + +Хотя это руководство сосредоточено на **html to markdown python**, те же концепции применимы к SDK для Java, C# или JavaScript: создайте объект документа, настройте markdown‑форматтер и вызовите конвертер. Если вам когда‑нибудь понадобится **экспортировать HTML в markdown** из среды, не связанной с Python, ищите эквивалентные классы `HtmlDocument`, `MarkdownSaveOptions` и `Converter` в SDK для соответствующего языка. + +## Заключение + +Теперь вы знаете, как **создать markdown из HTML** с помощью лаконичного скрипта на Python. Трёхшаговый процесс — загрузка HTML, установка параметров Git‑flavored и запуск конвертации — охватывает основу любого рабочего процесса **convert html to markdown**. Далее вы можете: + +* Интегрировать скрипт в генераторы статических сайтов. +* Автоматизировать обновление документации в CI‑конвейерах. +* Расширить конвертацию пользовательской пост‑обработкой (например, переписать ссылки или скорректировать заголовки). + +Не стесняйтесь экспериментировать со вторичными опциями — **как конвертировать html** с разными форматтерами, или настраивая параметры **export html to markdown** для изображений и таблиц. Приятного конвертирования! + +## Что вам стоит изучить дальше? + +Следующие руководства охватывают тесно связанные темы, построенные на техниках, продемонстрированных в этом руководстве. Каждый ресурс включает полностью работающие примеры кода с пошаговыми объяснениями, чтобы помочь вам освоить дополнительные возможности API и исследовать альтернативные подходы к реализации в ваших проектах. + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/russian/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..eaf0ab3af --- /dev/null +++ b/html/russian/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,283 @@ +--- +category: general +date: 2026-08-22 +description: Создайте PDF из SVG с помощью Python за считанные минуты. Узнайте, как + конвертировать SVG в PDF, сохранить SVG как PDF и использовать надёжный конвертер + SVG в PDF. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: ru +lastmod: 2026-08-22 +og_description: Создайте PDF из SVG с помощью Python быстро. Это руководство показывает, + как конвертировать SVG в PDF, использовать конвертер SVG в PDF и сохранить SVG как + PDF в одном скрипте. +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: Создание PDF из SVG в Python — пошаговое руководство +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: Как создать PDF из SVG в Python — полное руководство +url: /ru/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как создать PDF из SVG в Python – полное руководство + +Если вам нужно **быстро создать PDF из SVG**, этот учебник покажет, как именно это сделать. Мы пройдем процесс конвертации файла SVG в PDF с помощью популярного конвертера SVG‑в‑PDF, чтобы вы могли встраивать векторную графику в отчеты, счета или электронные книги, не покидая свой код Python. + +Вы узнаете, как **конвертировать SVG в PDF**, управлять масштабированием, сохранять шрифты и, в конечном итоге, **сохранить SVG как PDF** с помощью единого, воспроизводимого скрипта. Внешние инструменты командной строки не требуются — достаточно нескольких строк кода Python и библиотеки Aspose.SVG for Python. + +## Предварительные требования + +Прежде чем начать, убедитесь, что у вас есть: + +| Требование | Причина | +|------------|---------| +| Python 3.8+ | Библиотека ориентирована на современные среды выполнения Python. | +| `aspose.svg` package | Предоставляет `SVGDocument`, `PdfSaveOptions` и `Converter`. Установите с помощью `pip install aspose-svg`. | +| SVG‑файл (`vector.svg`) | Исходный векторный графический файл, который вы хотите конвертировать. | +| Права записи в папку вывода | Необходимо для **save SVG as PDF**. | + +Библиотеку можно установить так: + +```bash +pip install aspose-svg +``` + +> **Совет:** Используйте виртуальное окружение (`python -m venv venv`), чтобы изолировать зависимости. + +## Обзор процесса конвертации + +Конвертация состоит из трёх простых шагов: + +1. Загрузить **SVG‑документ** с диска. +2. Создать **PDF‑опции сохранения** (можно настроить размер страницы, DPI и т.д.). +3. Вызвать **конвертер**, чтобы получить PDF‑файл. + +В следующих разделах каждый шаг будет подробно разобран, объяснено *почему* код написан именно так, и представлен полный, готовый к запуску скрипт. + +## Создание PDF из SVG с помощью Aspose.SVG for Python + +Этот заголовок H2 содержит основной ключевой запрос **create pdf from svg**, удовлетворяя SEO‑требованиям. + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### Почему это работает + +* **`SVGDocument`** разбирает XML‑структуру SVG и создает внутреннее представление, которое конвертер может отрисовать. +* **`PdfSaveOptions`** позволяет настроить вывод PDF (размер страницы, сжатие, DPI). Значения по умолчанию уже дают точный PDF, поэтому пример работает «из коробки». +* **`Converter.convert`** выполняет основную работу: растеризует векторные данные на страницах PDF, сохраняя векторную точность, так что полученный PDF остаётся чётким при любом масштабе. + +## Конвертация SVG в PDF с пользовательским размером страницы + +Если нужен конкретный размер страницы — например, A4 для печатных отчётов — измените `PdfSaveOptions`: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **Крайний случай:** Некоторые SVG содержат `viewBox`, который не совпадает с желаемыми размерами PDF. Переопределение `page_width`/`page_height` гарантирует, что PDF будет соответствовать вашим ожиданиям по макету. + +## Сохранение SVG как PDF с сохранением шрифтов + +Когда ваш SVG ссылается на внешние шрифты, убедитесь, что они доступны конвертеру. Поместите файлы `.ttf` в ту же директорию, что и SVG, или укажите пользовательскую папку шрифтов: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +Конвертер встраивает шрифты непосредственно в PDF, гарантируя, что конверсия **svg file to pdf** выглядит одинаково на любой машине. + +## Пакетная конверсия: svg file to pdf для множества файлов + +Часто требуется обработать целую папку SVG‑активов. Ниже показан цикл, демонстрирующий эффективный **svg to pdf converter**, который обрабатывает каждый файл `.svg` в каталоге: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +Этот фрагмент иллюстрирует практический **convert svg to pdf** рабочий процесс, который можно интегрировать в CI‑конвейеры или автоматические генераторы отчётов. + +## Проверка результата + +После выполнения скрипта откройте сгенерированный PDF в любом просмотрщике (Adobe Reader, Chrome или Preview). Вы должны увидеть: + +* Векторные формы, отображаемые чётко при любом масштабе. +* Текст, соответствующий исходному SVG, с встроенными шрифтами, если вы их предоставили. +* Отсутствие растровых артефактов — конверсия сохраняет оригинальные векторные данные. + +Если шрифты отсутствуют, проверьте, что файлы шрифтов доступны и что SVG правильно их указывает (`font-family` атрибут). + +## Распространённые проблемы и как их избежать + +| Признак | Возможная причина | Решение | +|---------|-------------------|---------| +| Пустые страницы PDF | В SVG есть внешние ресурсы (изображения, шрифты), которые не найдены | Укажите `fonts_folder` и убедитесь, что связанные изображения находятся в той же директории или используйте абсолютные URL. | +| Текст отображается как контуры | Шрифт не встроен | Установите `pdf_options.embed_fonts = True` (по умолчанию) и проверьте наличие файла шрифта. | +| PDF больше ожидаемого | Высокий DPI или несжатые изображения | Уменьшите `pdf_options.dpi` или включите сжатие: `pdf_options.compress = True`. | +| Размеры SVG обрезаются | `viewBox` больше, чем страница PDF | Настройте `pdf_options.page_width`/`page_height` или масштабируйте SVG через `svg_doc.set_viewport`. | + +## Полный скрипт от начала до конца + +Ниже приведён автономный скрипт, включающий обработку ошибок, логирование и необязательные аргументы командной строки. Сохраните его как `svg_to_pdf.py` и запустите `python svg_to_pdf.py`. + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +Запуск скрипта выполняет операцию **save SVG as PDF**, которую можно встроить в более крупные автоматизированные конвейеры. + +### Ожидаемый вывод в консоль + + + +## Что следует изучить дальше? + +Следующие учебники охватывают тесно связанные темы, расширяющие техники, продемонстрированные в этом руководстве. Каждый ресурс содержит полностью рабочие примеры кода с пошаговыми объяснениями, чтобы помочь вам освоить дополнительные возможности API и исследовать альтернативные подходы в ваших проектах. + +- [Convert SVG to PDF in .NET with Aspose.HTML](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg to pdf java – Generate PDF from SVG with Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [Convierte SVG a PDF en .NET con Aspose.HTML](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/russian/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..ff3c69cdc --- /dev/null +++ b/html/russian/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-08-22 +description: как включить потоковую обработку при конвертации большого HTML в PDF + на Python, уменьшая использование памяти и ускоряя генерацию вывода +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: ru +lastmod: 2026-08-22 +og_description: как включить потоковую обработку при конвертации большого HTML в PDF + на Python, уменьшая использование памяти и ускоряя генерацию вывода. +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: Включить потоковую передачу при конвертации HTML в PDF на Python +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: Как включить потоковую передачу при конвертации HTML в PDF на Python +url: /ru/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как включить потоковую передачу при конвертации HTML в PDF на Python + +Если вам нужно **how to enable streaming** во время большой конвертации HTML‑в‑PDF, это руководство покажет вам точные шаги. Включив потоковую передачу, вы избегаете загрузки всего документа в память, что необходимо при конвертации HTML в PDF для больших файлов. + +Вы узнаете, как включить потоковую передачу, конвертировать HTML в PDF с помощью Python и обрабатывать крайние случаи, такие как задачи large HTML to PDF. Решение работает с популярной библиотекой `groupdocs-conversion` (или аналогичной), но концепции применимы к любому конвертеру, поддерживающему потоковую передачу. + +![Diagram showing streaming conversion from HTML to PDF using Python](streaming-diagram.png) + +## Что вам понадобится + +- Python 3.9 или новее +- `groupdocs-conversion` (или любая библиотека, предоставляющая `PdfSaveOptions` с флагом потоковой передачи) +- HTML‑файл, который вы хотите превратить в PDF (в примере используется большой файл с именем `large.html`) + +Наличие этих предварительных условий гарантирует, что код будет работать без дополнительной настройки. + +## Шаг 1: Установите библиотеку конвертации + +Сначала установите пакет Python, который предоставляет `HTMLDocument`, `PdfSaveOptions` и `Converter`. Наиболее распространённый выбор — SDK **GroupDocs.Conversion**: + +```bash +pip install groupdocs-conversion +``` + +> **Совет:** Используйте виртуальное окружение (`python -m venv .venv`), чтобы изолировать зависимости. + +## Шаг 2: Загрузите HTML‑документ, который хотите конвертировать + +Загрузка исходного HTML проста. Класс `HTMLDocument` читает файл с диска и подготавливает его к конвертации. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +`HTMLDocument` объект представляет всю разметку HTML, включая внешние ресурсы, такие как изображения и CSS. Это отправная точка для любой операции **convert html to pdf**. + +## Шаг 3: Создайте параметры сохранения PDF и включите потоковую передачу + +Включение потоковой передачи — это суть **how to enable streaming**. Вместо буферизации всего PDF в памяти конвертер записывает фрагменты напрямую в выходной файл. + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +Когда `enable_streaming` установлен в `True`, библиотека использует подход write‑through, который значительно снижает потребление ОЗУ — критично для сценариев **large html to pdf**. + +## Шаг 4: Конвертируйте HTML‑документ в PDF, используя настроенные параметры + +Теперь вызовите конвертацию. Метод `Converter.convert` принимает исходный документ, объект параметров и путь назначения. + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +После завершения этого вызова `large.pdf` содержит сгенерированный PDF, создаваемый при потоковой передаче данных на диск. Весь процесс обычно завершается быстрее, чем при конвертации без потоковой передачи, поскольку операционная система может постепенно сбрасывать данные в файловую систему. + +### Ожидаемый вывод + +Запуск скрипта создает PDF‑файл, размер которого соответствует содержимому оригинального HTML. Вы можете проверить результат любым PDF‑просмотрщиком: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## Почему потоковая передача важна для больших конвертаций HTML в PDF + +Когда вы **convert html to pdf** без потоковой передачи, библиотека сначала создает весь PDF в ОЗУ, а затем записывает его на диск. Для небольших страниц это приемлемо, но задача **large html to pdf** (например, 10‑МБ HTML‑отчет с множеством изображений) может превысить ограничения памяти типичных безсерверных функций или контейнеров с небольшим объёмом памяти. + +Включение потоковой передачи решает три проблемы: + +1. **Эффективность памяти** — сохраняется только небольшой буфер в ОЗУ. +2. **Более быстрая воспринимаемая производительность** — файл появляется на диске, пока ещё генерируется, позволяя последующим процессам начать чтение раньше. +3. **Масштабируемость** — можно выполнять множество конвертаций параллельно, не исчерпывая память хоста. + +## Распространённые подводные камни и как их избежать + +| Symptom | Likely cause | Fix | +|---------|--------------|-----| +| `MemoryError` во время конвертации | Флаг потоковой передачи не установлен или версия библиотеки слишком старая | Убедитесь, что `pdf_opts.enable_streaming = True`, и обновите до последней версии SDK (`pip install --upgrade groupdocs-conversion`). | +| Отсутствуют изображения в PDF | Относительные пути к изображениям не могут быть разрешены | Передайте базовый каталог в `HTMLDocument` или внедрите изображения в виде base64. | +| Полученный PDF пустой | HTML‑файл не найден или нечитаем | Проверьте путь `"YOUR_DIRECTORY/large.html"` и права доступа к файлу. | +| Конвертация зависает бесконечно | Большие внешние ресурсы (шрифты, CSS) блокируют рендеринг | Предзагрузите внешние ресурсы или используйте безголовый браузер для их встраивания. | + +### Пограничный случай: Конвертация HTML из строки + +Если ваш HTML‑контент находится в памяти, а не в файле, вы всё равно можете **how to enable streaming**, обернув строку в конструктор `HTMLDocument`, принимающий сырой HTML: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +Поведение потоковой передачи остаётся тем же, поскольку SDK записывает PDF по частям. + +## Полный скрипт, который можно скопировать и вставить + +Ниже приведён полный, готовый к запуску пример, включающий все обсуждённые шаги. Замените `YOUR_DIRECTORY` на фактический путь на вашем компьютере. + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +Запуск `python full_example.py` сгенерирует `large.pdf`, используя потоковый подход. + +## Итоги + +- Теперь вы знаете **how to enable streaming** для конвертации HTML‑в‑PDF на Python. +- Скрипт демонстрирует полный рабочий процесс **convert html to pdf**, эффективно обрабатывая нагрузки **large html to pdf**. +- Установив `PdfSaveOptions.enable_streaming = True`, конвертер записывает вывод постепенно, что является рекомендуемым способом **stream html to pdf**. + +## Что изучать дальше + +- Библиотеки **HTML to PDF Python**, поддерживающие CSS3 и JavaScript (например, `WeasyPrint`, `pdfkit`). +- Добавление защиты паролем или шифрования в сгенерированный PDF через дополнительные настройки `PdfSaveOptions`. +- Параллелизация нескольких конвертаций в системе очередей (Celery, RabbitMQ) при низком потреблении памяти. + +Не стесняйтесь экспериментировать с различными источниками HTML, размерами страниц и метаданными PDF. Потоковая передача позволяет обрабатывать ещё более крупные документы без потери производительности. Приятного кодинга! + +## Что вам стоит изучить дальше? + +Следующие руководства охватывают тесно связанные темы, построенные на техниках, продемонстрированных в этом руководстве. Каждый ресурс включает полностью рабочие примеры кода с пошаговыми объяснениями, чтобы помочь вам освоить дополнительные возможности API и исследовать альтернативные подходы к реализации в ваших проектах. + +- [Как конвертировать HTML в PDF на Java – используя Aspose.HTML для Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Создание фиксированного пула потоков для параллельной конвертации HTML в PDF](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [Как включить JavaScript в Aspose HTML – загрузка HTML и получение текста](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/russian/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..edf34892f --- /dev/null +++ b/html/russian/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,255 @@ +--- +category: general +date: 2026-08-22 +description: Как экспортировать ссылки из HTML и преобразовать их в файл markdown, + включая абзацы. Пошаговое руководство по конвертации HTML в markdown. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: ru +lastmod: 2026-08-22 +og_description: Как экспортировать ссылки из HTML‑документа и преобразовать их в файл + markdown, включая абзацы. Следуйте этому полному руководству для надёжного преобразования + HTML в markdown. +og_image_alt: How to export links while converting HTML to Markdown +og_title: Как экспортировать ссылки при конвертации HTML в Markdown – пошаговое руководство +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: Как экспортировать ссылки при конвертации HTML в Markdown +url: /ru/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как экспортировать ссылки при конвертации HTML в Markdown + +Если вам нужно **how to export links** из HTML‑страницы и превратить результат в чистый **html to markdown file**, это руководство покажет вам точные шаги. Вы также узнаете **how to extract paragraphs**, чтобы вывод Markdown содержал основной контент, который вам нужен. К концу урока вы сможете ответить на вопрос «**how to convert html** to markdown» готовым к запуску скриптом. + +Экспорт ссылок и извлечение параграфов — распространённые задачи при миграции веб‑контента на статические сайты, порталы документации или бек‑энды headless CMS. Нижеописанный подход работает с GroupDocs Conversion SDK для Python, но концепции применимы к любой библиотеке, позволяющей настраивать функции экспорта. + +--- + +## Что вам понадобится + +- Python 3.9 или новее +- `groupdocs-conversion` package (install with `pip install groupdocs-conversion`) → пакет `groupdocs-conversion` (установите с помощью `pip install groupdocs-conversion`) +- An HTML file you want to process (e.g., `input.html`) → HTML‑файл, который вы хотите обработать (например, `input.html`) +- Basic familiarity with Python scripting → Базовое знакомство с написанием скриптов на Python + +--- + +## Как экспортировать ссылки при конвертации HTML в Markdown + +Первый важный шаг — настроить конвертацию так, чтобы в **html to markdown file** записывались только нужные функции — ссылки и параграфы. SDK позволяет задать битовую маску значений `MarkdownFeature`; мы объединяем `LINKS` и `PARAGRAPHS`, чтобы сосредоточить вывод. + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### Почему это работает + +- **`HTMLDocument`** парсит оригинальный файл и строит DOM, по которому может проходить конвертер. +- **`MarkdownSaveOptions`** предоставляет детальный контроль над тем, что записывает SDK. Установка `features` в `LINKS | PARAGRAPHS` заставляет движок игнорировать изображения, таблицы или скрипты, что уменьшает шум в конечном **html to markdown file**. +- **`Converter.convert`** выполняет основную работу. Он учитывает маску функций, извлекает теги‑ссылки (``) и теги‑параграфы (`

`), и записывает их с использованием стандартного синтаксиса Markdown. + +--- + +## Как конвертировать HTML в Markdown с полным содержимым (опционально) + +Если позже решите, что нужна вся страница — не только ссылки и параграфы — просто измените маску функций: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +Запуск той же конвертации теперь создаёт полный **html to markdown file**, который отражает оригинальное расположение элементов. Это демонстрирует **how to convert html** гибким способом: вы контролируете вывод, переключая флаги функций. + +--- + +## Как извлечь только параграфы + +Иногда важен только текстовый контент статьи, без гиперссылок. Вы можете изолировать параграфы, задав маску только `PARAGRAPHS`: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +Полученный markdown будет содержать чистый, перенесённый текст без какой‑либо разметки ссылок. Этот фрагмент отвечает на вопрос **how to extract paragraphs** из HTML‑источника. + +--- + +## Распространённые подводные камни и как их избежать + +| Проблема | Почему происходит | Как исправить | +|----------|-------------------|---------------| +| Пустой файл вывода | Исходный HTML не содержит тегов `` или `

`, соответствующих выбранным функциям. | Проверьте структуру HTML или расширьте маску функций (например, включите `HEADINGS`). | +| Проблемы с кодировкой | HTML использует кодировку, отличную от UTF‑8, и SDK читает её некорректно. | Передайте явную кодировку в `HTMLDocument`, например `HTMLDocument(path, encoding="iso-8859-1")`. | +| Перезапись существующего markdown | Запуск скрипта несколько раз заменяет предыдущий файл. | Добавьте метку времени к имени выходного файла или проверьте `os.path.exists` перед записью. | + +**Pro tip:** При обработке множества файлов в папке оберните логику конвертации в цикл и логируйте каждый результат. Это даст вам чёткую трассировку и упростит возобновление после сбоя. + +--- + +## Полный скрипт, который можно скопировать и вставить + +Ниже представлен автономный Python‑файл (`convert_links_paragraphs.py`), который можно запустить напрямую. Он включает разбор аргументов, чтобы вы могли указать пути ввода и вывода без изменения кода. + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**Как запустить** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +Команда выше демонстрирует **how to export links** и **how to extract paragraphs** в одном вызове. Опустите `--links` или `--paragraphs`, чтобы адаптировать вывод под свои нужды. + +--- + +## Проверка — как выглядит результат + +Для простого HTML (`input.html`): + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +Запуск скрипта с обоими флагами создаёт `links_and_paragraphs.md`: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +Вы видите, что присутствуют только два параграфа и гиперссылка — именно то, что вы запросили, ищя **how to export links** при выполнении **convert html to markdown**. + +--- + +## Следующие шаги и связанные темы + +- **How to convert html to markdown** с изображениями: добавьте `MarkdownFeature.IMAGES` в маску. +- **How to extract paragraphs** и затем пост‑обработать + +## Что вам стоит изучить дальше? + +Следующие руководства охватывают тесно связанные темы, построенные на техниках, продемонстрированных в этом руководстве. Каждый ресурс включает полностью работающие примеры кода с пошаговыми объяснениями, чтобы помочь вам освоить дополнительные возможности API и исследовать альтернативные подходы к реализации в собственных проектах. + +- [Как установить смещение при конвертации HTML в Markdown на Java](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown в HTML Java — конвертация с Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [Конвертация HTML в Markdown — Полное руководство по C#](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/russian/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..2023ef8fb --- /dev/null +++ b/html/russian/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,280 @@ +--- +category: general +date: 2026-08-22 +description: Как загрузить HTML с помощью Aspose.HTML в Python — ограничить глубину + ресурсов и подготовить документ к конвертации или редактированию. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: ru +lastmod: 2026-08-22 +og_description: Как загрузить HTML с помощью Aspose.HTML в Python, установить глубину + обработки ресурсов и подготовить документ к конвертации или редактированию. +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: Как загрузить HTML с помощью Aspose.HTML – руководство по Python +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: Как загрузить HTML с помощью Aspose.HTML в Python +url: /ru/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как загрузить HTML с помощью Aspose.HTML в Python + +Если вам нужно **как загрузить html** быстро и безопасно в проекте на Python, это руководство покажет вам точные шаги. К концу первых двух предложений вы узнаете, как настроить обработку ресурсов, загрузить файл и подготовить процесс для дальнейшего **HTML conversion** или редактирования. + +Загрузка больших или сложных страниц часто ставит в тупик наивные парсеры, потому что внешние ресурсы (изображения, скрипты, CSS) могут вызывать глубокую рекурсию или сетевые задержки. Это руководство охватывает надёжный шаблон с использованием **Aspose.HTML for Python**, демонстрирует **HTMLDocument class**, и объясняет, почему важно задавать **max_handling_depth**. + +Вы пройдёте через: + +* Установку пакета Aspose.HTML +* Создание экземпляра `ResourceHandlingOptions` и ограничение глубины +* Использование класса `HTMLDocument` для загрузки страницы +* Подготовку документа к конвертации в PDF, PNG или дальнейшему манипулированию + +Предыдущий опыт работы с Aspose.HTML не требуется, достаточно базовых знаний Python. + +--- + +## Как загрузить HTML с помощью Aspose.HTML в Python + +Суть решения — трёхшаговый шаблон, который сочетает **ResourceHandlingOptions** с **HTMLDocument class**. Ограничение глубины обработки предотвращает неконтролируемые сетевые запросы, когда страница ссылается на множество вложенных ресурсов. + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### Почему это работает + +* **`ResourceHandlingOptions`** сообщает парсеру, сколько уровней внешних ресурсов он может следовать. Установка `max_handling_depth = 3` останавливает загрузчик после трёх переходов, что достаточно для большинства сайтов, но защищает от бесконечных циклов. +* **`HTMLDocument`** читает файл, применяет параметры и создаёт DOM в памяти, который вы можете запрашивать, изменять или рендерить. +* Опциональный фрагмент конвертации демонстрирует, как загруженный документ интегрируется с функциями **HTML conversion**, такими как сохранение в PDF. + +--- + +## Понимание ResourceHandlingOptions + +`ResourceHandlingOptions` является частью **Aspose.HTML for Python** и предоставляет детальный контроль над сетевой активностью. + +| Property | Purpose | Typical value | +|-------------------------|----------------------------------------------------|---------------| +| `max_handling_depth` | Максимальная глубина рекурсии для связанных ресурсов | `3` (default) | +| `allow_external_resources` | Загружать ли внешние CSS, JS, изображения | `True` | +| `timeout` | Сетевой тайм‑аут на запрос (секунды) | `30` | + +**Практический совет:** Если вы знаете, что целевая страница ссылается только на локальные ресурсы, установите `allow_external_resources = False`, чтобы ускорить загрузку и избежать лишних HTTP‑запросов. + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## Использование класса HTMLDocument + +The **HTMLDocument class** является точкой входа для всех операций Aspose.HTML. После создания экземпляра вы можете: + +* Доступ к DOM через `doc.root` +* Запрашивать элементы с помощью CSS‑селекторов (`doc.query_selector_all("img")`) +* Рендерить страницу в растровые форматы (`doc.save("page.png")`) +* Конвертировать в PDF (`doc.save("page.pdf", PDFSaveOptions())`) + +Ниже приведён короткий фрагмент, который извлекает все атрибуты `src` изображений после загрузки: + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**Зачем это может понадобиться:** При выполнении **HTML conversion** часто требуется корректировать или заменять URL изображений перед рендерингом в другой формат. Прямой доступ к DOM даёт эту гибкость. + +--- + +## Следующие шаги после загрузки HTML + +Теперь, когда документ находится в памяти, вы можете выбрать один из нескольких распространённых рабочих процессов: + +1. **Convert to PDF** – Идеально для архивирования или печати. +2. **Render to PNG/JPEG** – Полезно для миниатюр или визуальных превью. +3. **Edit the DOM** – Вставлять, удалять или изменять элементы перед сохранением. +4. **Extract text** – Получать чистый текстовый контент для индексации или анализа. + +### Пример: Конвертация в PDF с пользовательским размером страницы + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**Ожидаемый результат:** Файл с именем `big_page.pdf` появляется в рабочем каталоге, содержащий отрендеренный HTML со всеми разрешёнными ресурсами. Если вы установите `max_handling_depth` в 3, будут встроены только ресурсы глубиной до трёх уровней, что сохраняет разумный размер PDF. + +--- + +## Распространённые подводные камни и как их избежать + +| Симптом | Причина | Решение | +|--------------------------------------|-------------------------------------------|---------| +| Отсутствие изображений в отрендеренном PDF | `allow_external_resources` установлен в `False` | Включить внешние ресурсы или встроить изображения локально | +| `TimeoutError` при загрузке | Сетевые задержки превышают `timeout` | Увеличить `rh_opts.timeout` или предварительно скачать ресурсы | +| Неожиданное стилизование CSS | Связанный стиль не загружен из‑за ограничения глубины | Увеличить `max_handling_depth` или вручную добавить необходимый CSS | +| `UnicodeDecodeError` в файлах не‑UTF8| HTML‑файл использует другую кодировку | Передать `encoding="windows-1252"` при создании `HTMLDocument` | + +--- + +## Полный, исполняемый пример + +Ниже представлен автономный скрипт, который вы можете скопировать и вставить в файл с именем `load_html_demo.py`. Он включает инструкции по установке, обработку ошибок и финальный шаг проверки. + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +**Запуск скрипта** + +```bash +python load_html_demo.py +``` + +Вы должны увидеть вывод в консоль, подтверждающий загрузку, список URL изображений и сообщение об успешной конвертации в PDF. Сгенерированный `big_page.pdf` будет отражать HTML‑контент, ограниченный настроенным **max_handling_depth**. + +--- + +## Заключение + +В этом руководстве мы рассмотрели **how to load html** с помощью **Aspose.HTML for Python**, настроили **ResourceHandlingOptions** для контроля `max_handling_depth` и продемонстрировали практические действия после загрузки, такие как извлечение изображений и конвертация в PDF. Следуя этим шагам, вы получаете надёжную основу для любого рабочего процесса **HTML conversion**, будь то создание веб‑скрейпера, сервиса архивирования документов или динамического генератора отчётов. + +**Следующие шаги** + +* Экспериментировать с различными значениями `max_handling_depth`, чтобы сбалансировать полноту и производительность. +* Попробовать конвертировать документ в + +## Что вам следует изучить дальше? + +Следующие руководства охватывают тесно связанные темы, которые развивают техники, продемонстрированные в этом руководстве. Каждый ресурс включает полные работающие примеры кода с пошаговыми объяснениями, чтобы помочь вам освоить дополнительные возможности API и исследовать альтернативные подходы к реализации в ваших проектах. + +- [Как разобрать HTML на Java – загрузка, запрос и подсчёт элементов](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [Как редактировать дерево HTML‑документа в Aspose.HTML для Java](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [Обработка событий загрузки документа в Aspose.HTML для Java](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/spanish/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..06de2087d --- /dev/null +++ b/html/spanish/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-08-22 +description: Cómo convertir HTML a PDF en Python usando Aspose.HTML – aprende a crear + PDF a partir de un archivo HTML, generar PDF desde código HTML y guardar HTML como + PDF en Python rápidamente. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: es +lastmod: 2026-08-22 +og_description: Cómo convertir HTML a PDF en Python con Aspose.HTML. Este tutorial + le muestra cómo crear un PDF a partir de un archivo HTML, generar un PDF a partir + de código HTML y guardar HTML como PDF en Python. +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: Cómo convertir HTML a PDF en Python – guía paso a paso +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: Cómo convertir HTML a PDF en Python con Aspose.HTML +url: /es/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo convertir HTML a PDF en Python con Aspere.HTML + +Si necesitas **cómo convertir html a pdf** rápidamente, esta guía te muestra una solución completa y lista para ejecutar. Verás cómo **crear pdf desde archivo html**, **generar pdf desde código html**, y **guardar html como pdf python** usando la sencilla API de Aspose.HTML. + +Recorreremos cada paso, explicaremos por qué cada línea es importante y cubriremos los problemas comunes para que puedas adaptar el código a cualquier proyecto. Sin herramientas externas, solo unas pocas líneas de Python. + +## Requisitos previos + +Antes de comenzar, asegúrate de tener: + +* Python 3.8 o superior instalado. +* Una licencia activa de Aspose.HTML para Python (o una clave de evaluación gratuita). +* El paquete `aspose.html` instalado: + +```bash +pip install aspose-html +``` + +Tener todo esto garantiza que la conversión se ejecute sin errores en tiempo de ejecución. + +## Paso 1: Cargar el documento HTML (crear pdf desde archivo html) + +La primera tarea es leer el HTML de origen. Aspose.HTML representa un documento con la clase `HTMLDocument`, que abstrae la E/S de archivos, la obtención de recursos por red y el análisis del DOM. + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*Por qué es importante:* +`HTMLDocument` carga el HTML, resuelve los recursos relativos (imágenes, CSS, fuentes) y construye un DOM que el convertidor puede renderizar con precisión. Omitir este paso o usar una cadena simple haría que se perdieran esas resoluciones de recursos. + +## Paso 2: Configurar las opciones de guardado PDF (guardar html como pdf python) + +Aspose.HTML te permite afinar la salida PDF mediante `PdfSaveOptions`. La configuración predeterminada ya produce un PDF de alta calidad, pero puedes ajustar el tamaño de página, la compresión o los metadatos si lo deseas. + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*Por qué es importante:* +Incluso si mantienes los valores predeterminados, crear un objeto de opciones hace que el código sea extensible. Cambios futuros —como incrustar una contraseña en el PDF— pueden añadirse sin reestructurar el script. + +## Paso 3: Realizar la conversión (convertir html a pdf python) + +El método `Converter.convert` une el documento HTML y las opciones PDF, escribiendo el resultado en la ruta de archivo que especifiques. + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*Por qué es importante:* +`Converter.convert` ejecuta el motor de renderizado, rasterizando HTML/CSS a vectores PDF. Maneja diseños complejos, fuentes incrustadas y gráficos SVG automáticamente, algo que las bibliotecas manuales a menudo omiten. + +### Resultado esperado + +Al ejecutar el script se genera `sample.pdf` en el mismo directorio. Ábrelo con cualquier visor de PDF; deberías ver una representación fiel de `sample.html`, incluidos estilos, imágenes y saltos de página. + +## Variaciones comunes y casos límite + +| Situación | Cómo manejarla | +|-----------|-----------------| +| **HTML es una cadena, no un archivo** | Usa `HTMLDocument.from_string(html_string)` en lugar de cargar desde una ruta. | +| **Necesitas un PDF protegido con contraseña** | Establece `pdf_options.encryption.password = "yourPassword"` antes de la conversión. | +| **Archivos HTML grandes generan presión de memoria** | Habilita el modo de transmisión: `pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`. | +| **Faltan fuentes personalizadas** | Registra la carpeta de fuentes: `pdf_options.fonts_folder = "path/to/fonts"`.| + +Estas variaciones ilustran la flexibilidad de la API de Aspose.HTML manteniendo idéntico el flujo de trabajo principal. + +## Script completo (generar pdf desde código html) + +A continuación tienes el programa completo y ejecutable que incorpora todos los pasos. Copia‑pega, reemplaza `YOUR_DIRECTORY` por una carpeta real y ejecútalo. + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +Ejecuta con: + +```bash +python convert_html_to_pdf.py +``` + +Verás el mensaje de confirmación y el PDF aparecerá junto al HTML de origen. + +## Consejos de solución de problemas (pro tip) + +* **Imágenes o CSS faltantes** – Asegúrate de que el archivo HTML use URLs absolutas o que las rutas relativas sean correctas respecto a `YOUR_DIRECTORY`. +* **Los caracteres Unicode aparecen como cuadros** – Incrusta las fuentes necesarias mediante `pdf_options.fonts_folder`. +* **La conversión es lenta** – Activa `pdf_options.use_system_fonts = False` para evitar escanear el catálogo de fuentes del sistema. + +## Conclusión + +Ahora sabes **cómo convertir html a pdf** en Python con Aspose.HTML, desde cargar un archivo HTML hasta guardar un PDF de alta calidad. El mismo patrón te permite **crear pdf desde archivo html**, **generar pdf desde código html**, y **guardar html como pdf python** para cualquier flujo de automatización. + +A continuación, podrías explorar: + +* Añadir marcas de agua o encabezados/pies de página (palabra clave: *create pdf from html file*). +* Convertir una URL en vivo en lugar de un archivo local (palabra clave: *convert html to pdf python*). +* Integrar el convertidor en una API Flask o Django para servir PDFs bajo demanda. + +¡Experimenta con las opciones y feliz generación de PDFs! + + +## ¿Qué deberías aprender a continuación? + + +Los siguientes tutoriales cubren temas estrechamente relacionados que amplían las técnicas demostradas en esta guía. Cada recurso incluye ejemplos de código completos y funcionales con explicaciones paso a paso para ayudarte a dominar características adicionales de la API y explorar enfoques de implementación alternativos en tus propios proyectos. + +- [Convert HTML to PDF with Aspose.HTML – Full Manipulation Guide](/html/english/) +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Convert HTML to PDF in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-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/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/spanish/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..d9ec3c289 --- /dev/null +++ b/html/spanish/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-08-22 +description: Aprende a crear markdown a partir de un archivo HTML usando Python. Esta + guía paso a paso muestra cómo convertir HTML a markdown con una biblioteca confiable. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: es +lastmod: 2026-08-22 +og_description: Cómo crear markdown a partir de un archivo HTML usando Python. Sigue + esta guía para convertir HTML a markdown rápidamente con una biblioteca probada. +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: Cómo crear markdown a partir de HTML en Python – guía completa +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: Cómo crear markdown a partir de HTML en Python – guía completa +url: /es/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo crear markdown a partir de HTML en Python – guía completa + +Si necesitas saber **cómo crear markdown** a partir de contenido web existente, puedes convertir un archivo HTML a markdown con solo unas pocas líneas de Python. Este tutorial te guía a través de **convert html to markdown** usando una **html to markdown library** dedicada que funciona en Windows, macOS y Linux. + +Aprenderás cómo instalar la biblioteca, cargar un documento HTML, configurar opciones de markdown con estilo Git y escribir el resultado en disco. Al final de la guía podrás transformar cualquier **html file to markdown** automáticamente, lo cual es útil para generadores de sitios estáticos, pipelines de documentación o proyectos de migración de contenido. + +## Requisitos previos + +* Python 3.8 o más reciente instalado (verifica con `python --version`). +* Acceso a una terminal o símbolo del sistema. +* Un archivo HTML que deseas convertir (el ejemplo usa `sample.html`). +* Conexión a Internet para instalar el paquete requerido. + +El ejemplo de código usa la biblioteca **GroupDocs.Conversion for Python**, que proporciona las clases `HTMLDocument`, `MarkdownSaveOptions` y `Converter` que se muestran más adelante. Los mismos conceptos se aplican a otros paquetes **html to markdown python** como `markdownify` o `html2text`—la única diferencia son las declaraciones de importación. + +## Cómo crear markdown – paso 1: instalar la biblioteca html to markdown python + +La primera tarea es añadir la biblioteca de conversión a tu entorno. Ejecuta el siguiente comando pip en tu terminal: + +```bash +pip install groupdocs-conversion +``` + +> **Consejo profesional:** Usa un entorno virtual (`python -m venv .venv`) para mantener las dependencias aisladas de tu instalación global de Python. + +Instalar el paquete te brinda acceso a las clases `HTMLDocument`, `MarkdownSaveOptions` y `Converter` necesarias para el proceso de conversión. + +## Convertir html a markdown – paso 2: cargar el documento HTML + +Una vez que la biblioteca está instalada, importa las clases necesarias y crea una instancia de `HTMLDocument` que apunte a tu archivo fuente. + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +El objeto `HTMLDocument` lee el archivo y lo prepara para la conversión. Si el archivo no existe, el constructor lanza un `FileNotFoundError`, así que asegúrate de que la ruta sea correcta. + +## archivo html a markdown – paso 3: configurar opciones de markdown con estilo Git + +Muchos proyectos prefieren markdown con estilo Git porque añade soporte para tablas, listas de tareas y sintaxis de tachado. La biblioteca te permite habilitar este preset mediante la propiedad `git` en `MarkdownSaveOptions`. + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +Establecer `git = True` indica al conversor que genere sintaxis que GitHub, GitLab y Bitbucket renderizan correctamente. Si necesitas markdown simple, deja la bandera `False`. + +## Guardar la salida markdown – paso 4: escribir el resultado con la biblioteca html to markdown + +Finalmente, invoca el método `Converter.convert`, pasando el documento fuente, el objeto de opciones y la ruta de destino. + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +Cuando el script termina, `git_flavored.md` contiene la representación markdown de `sample.html`. Puedes abrir el archivo en cualquier editor o alimentarlo directamente a un generador de sitios estáticos. + +### Salida esperada + +Suponiendo que `sample.html` contiene un encabezado y un párrafo simples, el markdown generado podría verse así: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +Si el HTML original incluye tablas, listas o bloques de código, el preset con estilo Git preservará esas estructuras usando la sintaxis markdown adecuada. + +## Entendiendo la biblioteca html to markdown + +La biblioteca **GroupDocs.Conversion** abstrae los detalles de análisis y renderizado que de otro modo tendrías que manejar manualmente. Hace lo siguiente: + +* Preserva el estilo basado en CSS cuando sea posible (p. ej., negrita, cursiva). +* Genera markdown limpio y legible sin entidades HTML adicionales. +* Soporta conversión por lotes, por lo que puedes iterar sobre un directorio de archivos HTML con el mismo código. + +Si prefieres una solución más ligera, el paquete `markdownify` ofrece una API de una sola función: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +Ambos enfoques logran el mismo objetivo final—**convert html to markdown**—pero la opción de GroupDocs brinda más control sobre el formato de salida e integra fácilmente en pipelines de procesamiento de documentos más grandes. + +## Errores comunes y cómo evitarlos + +| Problema | Por qué ocurre | Solución | +|----------|----------------|----------| +| Missing images in markdown | The converter only includes image URLs; it does not embed files. | Ensure image files are accessible from the markdown location or copy them alongside the output. | +| Broken relative links | HTML may use relative paths that become invalid after conversion. | Use `md_options.base_path` (if available) to rewrite links, or run a post‑processing script to adjust paths. | +| Unicode characters become escaped | Some libraries escape non‑ASCII characters. | Set `md_options.encode_utf8 = True` (or the equivalent flag) to keep characters intact. | + +Abordar estos problemas temprano ahorra tiempo cuando escalas la conversión a decenas o cientos de archivos. + +## Ejemplo completo y ejecutable + +A continuación hay un script autónomo que puedes copiar, modificar y ejecutar de inmediato. Reemplaza `YOUR_DIRECTORY` con la carpeta real en tu máquina. + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +Ejecuta el script: + +```bash +python markdown_from_html.py +``` + +Deberías ver un mensaje de confirmación y un nuevo archivo `git_flavored.md` que contiene la versión markdown de tu HTML. + +## Conclusión + +Ahora sabes **cómo crear markdown** a partir de una fuente HTML usando Python. La guía cubrió la instalación de una **html to markdown library** confiable, la carga de un **html file to markdown**, la configuración de opciones **html to markdown python**, y el guardado del resultado. Con esta base puedes automatizar pipelines de documentación, migrar páginas web heredadas o generar contenido para generadores de sitios estáticos. + +**Próximos pasos** + +* Explora la conversión por lotes iterando sobre una carpeta de archivos HTML. +* Personaliza `MarkdownSaveOptions` para controlar estilos de encabezados, formato de listas o manejo de imágenes. +* Combina este script con un flujo de trabajo CI/CD para mantener tu documentación markdown actualizada automáticamente. + +¡Feliz conversión! + +## ¿Qué deberías aprender a continuación? + +Los siguientes tutoriales cubren temas estrechamente relacionados que se basan en las técnicas demostradas en esta guía. Cada recurso incluye ejemplos de código completos y funcionales con explicaciones paso a paso para ayudarte a dominar características adicionales de la API y explorar enfoques de implementación alternativos en tus propios proyectos. + +- [Convertir HTML a Markdown en Aspose.HTML para Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convertir HTML a Markdown en .NET con Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convertir markdown a html – guía Java con salida PDF](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/spanish/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..2f29352ff --- /dev/null +++ b/html/spanish/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,187 @@ +--- +category: general +date: 2026-08-22 +description: Aprende a crear markdown a partir de HTML en Python con un sencillo script + de tres pasos. Incluye opciones de conversión y consejos de exportación. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: es +lastmod: 2026-08-22 +og_description: Crea markdown a partir de HTML con Python en solo tres líneas. Esta + guía muestra la conversión, opciones de formato y cómo exportar HTML a markdown + de manera eficiente. +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: Crear markdown a partir de HTML en Python – guía paso a paso +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: Cómo crear markdown a partir de HTML usando Python +url: /es/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo crear markdown a partir de HTML usando Python + +Si necesitas **crear markdown a partir de HTML**, esta breve guía muestra exactamente cómo hacerlo con Python. Verás un script claro de tres pasos que carga un archivo HTML, configura la salida de Markdown con estilo Git y escribe el resultado en disco. + +Convertir contenido web a un marcado ligero es una tarea común al construir sitios estáticos, pipelines de documentación o cuadernos de análisis de datos. En este tutorial también abordaremos cómo **convertir HTML a markdown** con formato opcional, responderemos a la pregunta **cómo convertir HTML** de manera eficiente y demostraremos el flujo de trabajo **exportar HTML a markdown** usando la popular biblioteca `groupdocs-conversion`. + +## Requisitos previos + +Antes de comenzar, asegúrate de tener: + +* Python 3.8 o superior instalado. +* El paquete `groupdocs-conversion` (o cualquier biblioteca que proporcione `HTMLDocument`, `MarkdownSaveOptions` y `Converter`). Instálalo con: + +```bash +pip install groupdocs-conversion +``` + +* Un archivo HTML que quieras transformar, por ejemplo, `sample.html` ubicado en una carpeta que controles. + +No se requieren dependencias del sistema adicionales, y el código funciona en Windows, macOS y Linux. + +## Paso 1: Cargar el documento HTML fuente + +La primera operación es crear un objeto `HTMLDocument` que represente el archivo fuente. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**Por qué es importante:** `HTMLDocument` analiza el archivo, resuelve enlaces relativos y prepara el DOM para la conversión. Si el archivo no se encuentra, el constructor lanza un claro `FileNotFoundError`, lo que te permite manejar entradas faltantes temprano. + +## Paso 2: Configurar las opciones de guardado de Markdown (con estilo Git) + +Markdown tiene varios dialectos. Git‑flavored Markdown (GFM) añade tablas, listas de tareas y bloques de código con fences, que a menudo son requeridos para archivos README o páginas de GitHub. + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**Por qué es importante:** Al seleccionar explícitamente `MarkdownFormatter.GIT`, garantizas que la salida siga las mismas reglas que GitHub renderiza, eliminando sorpresas cuando el markdown se muestra en un repositorio. Si prefieres Markdown simple, reemplaza `MarkdownFormatter.GIT` por `MarkdownFormatter.DEFAULT`. + +## Paso 3: Convertir el documento HTML a un archivo Markdown + +Ahora invoca el motor de conversión y escribe el resultado en la ruta de destino. + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**Por qué es importante:** `Converter.convert` se encarga del trabajo pesado—traducir etiquetas HTML a sus equivalentes markdown, preservar imágenes (copiándolas a la carpeta de salida si es necesario) y aplicar el formateador que seleccionaste. El método devuelve `None` en caso de éxito, pero puedes capturar `ConversionException` para obtener informes de error detallados. + +### Salida esperada + +Después de ejecutar el script, `sample.md` contendrá algo como: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +El markdown exacto refleja la estructura de `sample.html`. Tablas, imágenes y bloques de código se convertirán según las reglas de GFM. + +## Variaciones comunes y casos límite + +| Situación | Ajuste recomendado | +|-----------|-------------------| +| **Archivos HTML grandes (>10 MB)** | Incrementa el límite de recursión de Python o transmite la entrada usando `HTMLDocument.open_stream()` si la biblioteca lo permite. | +| **Imágenes referenciadas con URLs absolutas** | Establece `md_options.embed_images = True` para incrustar imágenes como URIs base‑64, o mantenlas como enlaces para una salida más ligera. | +| **Necesitas Markdown simple en lugar de GFM** | Cambia `md_options.formatter = MarkdownFormatter.DEFAULT`. | +| **Clases CSS personalizadas que deben ignorarse** | Usa `md_options.ignore_css_classes = ["unwanted-class"]`. | +| **Ejecución en una pipeline CI/CD** | Envuelve el script en un bloque `try/except` y sale con un código distinto de cero en caso de falla, de modo que la pipeline pueda fallar rápidamente. | + +### Consejo profesional + +Si planeas convertir muchos archivos en lote, reutiliza una única instancia de `MarkdownSaveOptions` y solo cambia las rutas de entrada/salida dentro de un bucle. Esto reduce la sobrecarga de creación de objetos y acelera el proceso en ~15 %. + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## Cómo convertir HTML a markdown en otros lenguajes (nota rápida) + +Aunque este tutorial se centra en **html to markdown python**, los mismos conceptos se aplican a SDKs de Java, C# o JavaScript: crea un objeto documento, configura un formateador markdown y llama al convertidor. Si alguna vez necesitas **exportar HTML a markdown** desde un entorno que no sea Python, busca las clases equivalentes `HtmlDocument`, `MarkdownSaveOptions` y `Converter` en el SDK específico del lenguaje. + +## Conclusión + +Ahora sabes cómo **crear markdown a partir de HTML** con un script conciso de Python. El flujo de tres pasos—cargar el HTML, establecer opciones con estilo Git y ejecutar la conversión—cubre el núcleo de cualquier flujo de trabajo **convert html to markdown**. Desde aquí puedes: + +* Integrar el script en generadores de sitios estáticos. +* Automatizar actualizaciones de documentación en pipelines CI. +* Extender la conversión con post‑procesamiento personalizado (p. ej., reescritura de enlaces o ajustes de encabezados). + +Siéntete libre de experimentar con las opciones secundarias—**cómo convertir html** con diferentes formateadores, o ajustar la configuración de **export html to markdown** para imágenes y tablas. ¡Feliz conversión! + +## ¿Qué deberías aprender a continuación? + +Los siguientes tutoriales cubren temas estrechamente relacionados que amplían las técnicas demostradas en esta guía. Cada recurso incluye ejemplos de código completos y funcionales con explicaciones paso a paso para ayudarte a dominar características adicionales de la API y explorar enfoques de implementación alternativos en tus propios proyectos. + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/spanish/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..d91c10ff9 --- /dev/null +++ b/html/spanish/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,282 @@ +--- +category: general +date: 2026-08-22 +description: Crea PDF a partir de SVG usando Python en minutos. Aprende a convertir + SVG a PDF, guardar SVG como PDF y usar un conversor de SVG a PDF confiable. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: es +lastmod: 2026-08-22 +og_description: Crea PDF a partir de SVG con Python rápidamente. Esta guía muestra + cómo convertir SVG a PDF, usar un convertidor de SVG a PDF y guardar SVG como PDF + en un solo script. +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: Crear PDF a partir de SVG en Python – tutorial paso a paso +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: Cómo crear un PDF a partir de SVG en Python – guía completa +url: /es/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo crear PDF a partir de SVG en Python – guía completa + +Si necesitas **crear PDF a partir de SVG** rápidamente, este tutorial te muestra exactamente cómo. Recorreremos la conversión de un archivo SVG a PDF usando un conversor popular SVG‑a‑PDF, para que puedas incrustar gráficos vectoriales en informes, facturas o libros electrónicos sin salir de tu código Python. + +Aprenderás a **convertir SVG a PDF**, gestionar la escala, preservar fuentes y, finalmente, **guardar SVG como PDF** con un único script reproducible. No se requieren herramientas externas de línea de comandos—solo unas pocas líneas de Python y la biblioteca Aspose.SVG para Python. + +## Requisitos previos + +Antes de comenzar, asegúrate de tener: + +| Requisito | Razón | +|-------------|--------| +| Python 3.8+ | La biblioteca está dirigida a entornos modernos de Python. | +| `aspose.svg` package | Proporciona `SVGDocument`, `PdfSaveOptions` y `Converter`. Instálalo con `pip install aspose-svg`. | +| Un archivo SVG (`vector.svg`) | El gráfico vectorial fuente que deseas convertir. | +| Permiso de escritura en la carpeta de salida | Necesario para **guardar SVG como PDF**. | + +Puedes instalar la biblioteca con: + +```bash +pip install aspose-svg +``` + +> **Consejo:** Usa un entorno virtual (`python -m venv venv`) para mantener las dependencias aisladas. + +## Visión general del proceso de conversión + +La conversión consta de tres pasos simples: + +1. Cargar el **documento SVG** desde el disco. +2. Crear **opciones de guardado PDF** (puedes personalizar el tamaño de página, DPI, etc.). +3. Llamar al **convertidor** para producir un archivo PDF. + +Las siguientes secciones desglosan cada paso, explican *por qué* el código está escrito de esa manera y muestran el script completo y ejecutable. + +## Crear PDF a partir de SVG usando Aspose.SVG para Python + +Este encabezado H2 contiene la palabra clave principal **create pdf from svg**, cumpliendo con el requisito SEO. + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### Por qué esto funciona + +* **`SVGDocument`** analiza el XML del SVG y construye una representación en memoria que el convertidor puede renderizar. +* **`PdfSaveOptions`** te permite ajustar la salida PDF (tamaño de página, compresión, DPI). Los valores predeterminados ya generan un PDF fiel, por lo que el ejemplo funciona sin configuración adicional. +* **`Converter.convert`** realiza el trabajo pesado: rasteriza los datos vectoriales en páginas PDF mientras preserva la fidelidad vectorial, de modo que el PDF resultante se mantiene nítido a cualquier nivel de zoom. + +## Convertir SVG a PDF con tamaño de página personalizado + +Si necesitas un tamaño de página específico—por ejemplo, A4 para informes imprimibles—ajusta `PdfSaveOptions`: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **Caso límite:** Algunos SVG definen un `viewBox` que no coincide con las dimensiones deseadas del PDF. Sobrescribir `page_width`/`page_height` garantiza que el PDF se ajuste a tus expectativas de diseño. + +## Guardar SVG como PDF preservando fuentes + +Cuando tu SVG hace referencia a fuentes externas, asegúrate de que las fuentes sean accesibles para el convertidor. Coloca los archivos `.ttf` en el mismo directorio que el SVG o especifica una carpeta de fuentes personalizada: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +El convertidor incrusta las fuentes directamente en el PDF, garantizando que la conversión **svg file to pdf** se vea idéntica en cualquier máquina. + +## Conversión por lotes: archivo svg a pdf para muchos archivos + +Con frecuencia tienes una carpeta llena de recursos SVG. El siguiente bucle demuestra un **svg to pdf converter** eficiente que procesa cada archivo `.svg` en un directorio: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +Este fragmento ilustra un flujo de trabajo práctico **convert svg to pdf** que puede integrarse en pipelines CI o generadores de informes automatizados. + +## Verificar la salida + +Después de ejecutar el script, abre el PDF generado con cualquier visor (Adobe Reader, Chrome o Preview). Deberías ver: + +* Formas vectoriales renderizadas con nitidez a cualquier nivel de zoom. +* Texto que coincide con la fuente SVG, con fuentes incrustadas si las proporcionaste. +* Sin artefactos rasterizados—porque la conversión conserva los datos vectoriales originales. + +Si notas fuentes faltantes, verifica que los archivos de fuentes sean accesibles y que el SVG los referencie correctamente (atributo `font-family`). + +## Problemas comunes y cómo evitarlos + +| Síntoma | Causa probable | Solución | +|---------|----------------|----------| +| Páginas PDF en blanco | El SVG tiene recursos externos (imágenes, fuentes) no encontrados | Proporciona `fonts_folder` y asegura que las imágenes vinculadas estén en el mismo directorio o usa URLs absolutas. | +| El texto aparece como contornos | Fuente no incrustada | Establece `pdf_options.embed_fonts = True` (valor predeterminado) y verifica que el archivo de fuente esté presente. | +| El PDF es más grande de lo esperado | DPI alto o imágenes sin comprimir | Reduce `pdf_options.dpi` o habilita compresión: `pdf_options.compress = True`. | +| Las dimensiones del SVG se recortan | `viewBox` más grande que la página PDF | Ajusta `pdf_options.page_width`/`page_height` o escala el SVG mediante `svg_doc.set_viewport`. | + +## Ejemplo completo de extremo a extremo + +A continuación tienes un script autocontenido que incluye manejo de errores, registro y argumentos opcionales de línea de comandos. Guárdalo como `svg_to_pdf.py` y ejecuta `python svg_to_pdf.py`. + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +Ejecutar el script produce una operación **save SVG as PDF** que puedes incrustar en pipelines de automatización más amplios. + +### Salida esperada de la consola + + + +## ¿Qué deberías aprender a continuación? + +Los siguientes tutoriales cubren temas estrechamente relacionados que amplían las técnicas demostradas en esta guía. Cada recurso incluye ejemplos de código completos con explicaciones paso a paso para ayudarte a dominar funciones adicionales de la API y explorar enfoques de implementación alternativos en tus propios proyectos. + +- [Convertir SVG a PDF en .NET con Aspose.HTML](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg a pdf java – Generar PDF a partir de SVG con Aspose.HTML para Java](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [Convierte SVG a PDF en .NET con Aspose.HTML](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/spanish/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..70b2dbd43 --- /dev/null +++ b/html/spanish/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-08-22 +description: cómo habilitar la transmisión para la conversión de HTML a PDF de gran + tamaño en Python, reduciendo el uso de memoria y acelerando la generación de la + salida. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: es +lastmod: 2026-08-22 +og_description: cómo habilitar la transmisión para la conversión de HTML a PDF de + gran tamaño en Python, reduciendo el uso de memoria y acelerando la generación del + resultado. +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: Habilitar streaming para la conversión de HTML a PDF en Python +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: Cómo habilitar el streaming al convertir HTML a PDF en Python +url: /es/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo habilitar streaming al convertir HTML a PDF en Python + +Si necesitas **cómo habilitar streaming** durante una conversión grande de HTML‑to‑PDF, esta guía te muestra los pasos exactos. Al habilitar streaming evitas cargar todo el documento en memoria, lo cual es esencial cuando conviertes HTML a PDF para archivos grandes. + +Aprenderás cómo habilitar streaming, convertir HTML a PDF con Python y manejar casos límite como trabajos de large HTML to PDF. La solución funciona con la popular biblioteca `groupdocs-conversion` (o similar), pero los conceptos se aplican a cualquier conversor con capacidad de streaming. + +![Diagram showing streaming conversion from HTML to PDF using Python](streaming-diagram.png) + +## Lo que necesitarás + +- Python 3.9 o superior +- `groupdocs-conversion` (o cualquier biblioteca que ofrezca `PdfSaveOptions` con una bandera de streaming) +- Un archivo HTML que deseas convertir a PDF (el ejemplo usa un archivo grande llamado `large.html`) + +Tener estos requisitos garantiza que el código se ejecute sin configuración adicional. + +## Paso 1: Instalar la biblioteca de conversión + +Primero, instala el paquete Python que proporciona `HTMLDocument`, `PdfSaveOptions` y `Converter`. La opción más común es el SDK **GroupDocs.Conversion**: + +```bash +pip install groupdocs-conversion +``` + +> **Consejo profesional:** Usa un entorno virtual (`python -m venv .venv`) para mantener las dependencias aisladas. + +## Paso 2: Cargar el documento HTML que deseas convertir + +Cargar el HTML de origen es sencillo. La clase `HTMLDocument` lee el archivo del disco y lo prepara para la conversión. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +El objeto `HTMLDocument` representa todo el marcado HTML, incluidos recursos externos como imágenes y CSS. Este es el punto de partida para cualquier operación de **convert html to pdf**. + +## Paso 3: Crear opciones de guardado PDF y habilitar streaming + +Habilitar streaming es el núcleo de **cómo habilitar streaming**. En lugar de almacenar todo el PDF en memoria, el conversor escribe fragmentos directamente al archivo de salida. + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +Cuando `enable_streaming` se establece en `True`, la biblioteca usa un enfoque de escritura directa que reduce drásticamente el consumo de RAM, crucial para escenarios de **large html to pdf**. + +## Paso 4: Convertir el documento HTML a PDF usando las opciones configuradas + +Ahora invoca la conversión. El método `Converter.convert` recibe el documento fuente, el objeto de opciones y la ruta de destino. + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +Después de que esta llamada finalice, `large.pdf` contiene el PDF renderizado, generado mientras se transmite datos al disco. Todo el proceso suele terminar más rápido que una conversión sin streaming porque el sistema operativo puede volcar datos al sistema de archivos de forma incremental. + +### Salida esperada + +Ejecutar el script produce un archivo PDF cuyo tamaño coincide con el contenido del HTML original. Puedes verificar el resultado con cualquier visor de PDF: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## Por qué el streaming es importante para conversiones grandes de HTML a PDF + +Cuando **convert html to pdf** sin streaming, la biblioteca primero construye todo el PDF en RAM antes de escribirlo en disco. Para una página modesta está bien, pero un trabajo de **large html to pdf** (p. ej., un informe HTML de 10 MB con muchas imágenes) puede superar los límites de memoria de funciones serverless típicas o contenedores con poca memoria. + +Habilitar streaming resuelve tres problemas: + +1. **Eficiencia de memoria** – solo se mantiene un pequeño búfer en RAM. +2. **Rendimiento percibido más rápido** – el archivo aparece en disco mientras aún se genera, permitiendo que procesos posteriores comiencen a leerlo antes. +3. **Escalabilidad** – puedes ejecutar muchas conversiones en paralelo sin agotar la memoria del host. + +## Problemas comunes y cómo evitarlos + +| Síntoma | Causa probable | Solución | +|---------|----------------|----------| +| `MemoryError` durante la conversión | Bandera de streaming no establecida o versión de la biblioteca demasiado antigua | Asegúrate de que `pdf_opts.enable_streaming = True` y actualiza al SDK más reciente (`pip install --upgrade groupdocs-conversion`). | +| Imágenes faltantes en el PDF | Las rutas relativas de las imágenes no pueden resolverse | Pasa el directorio base a `HTMLDocument` o incrusta las imágenes como base64. | +| El PDF de salida está en blanco | Archivo HTML no encontrado o ilegible | Verifica la ruta `"YOUR_DIRECTORY/large.html"` y revisa los permisos del archivo. | +| La conversión se cuelga indefinidamente | Recursos externos grandes (fuentes, CSS) bloquean el renderizado | Pre‑descarga los recursos externos o usa un navegador sin cabeza para incrustarlos. | + +### Caso límite: Convertir HTML desde una cadena + +Si tu contenido HTML está en memoria en lugar de en un archivo, aún puedes **cómo habilitar streaming** envolviendo la cadena en un constructor `HTMLDocument` que acepte HTML crudo: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +El comportamiento de streaming sigue siendo idéntico porque el SDK escribe el PDF de forma incremental. + +## Script completo que puedes copiar‑pegar + +A continuación tienes un ejemplo completo, listo para ejecutar, que incorpora todos los pasos discutidos. Reemplaza `YOUR_DIRECTORY` con la ruta real en tu máquina. + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +Ejecutar `python full_example.py` generará `large.pdf` usando el enfoque de streaming. + +## Recapitulación + +- Ahora sabes **cómo habilitar streaming** para la conversión de HTML‑to‑PDF en Python. +- El script demuestra el flujo completo de **convert html to pdf**, manejando cargas de trabajo **large html to pdf** de manera eficiente. +- Al establecer `PdfSaveOptions.enable_streaming = True`, el conversor escribe la salida de forma progresiva, que es la manera recomendada de **stream html to pdf**. + +## Qué explorar a continuación + +- **Bibliotecas HTML a PDF para Python** que soportan CSS3 y JavaScript (p. ej., `WeasyPrint`, `pdfkit`). +- Agregar protección con contraseña o cifrado al PDF generado mediante configuraciones adicionales de `PdfSaveOptions`. +- Paralelizar múltiples conversiones en un sistema de colas (Celery, RabbitMQ) manteniendo bajo el uso de memoria. + +Siéntete libre de experimentar con diferentes fuentes HTML, tamaños de página y metadatos PDF. El streaming permite manejar documentos aún más grandes sin sacrificar el rendimiento. ¡Feliz codificación! + +## ¿Qué deberías aprender a continuación? + +Los siguientes tutoriales cubren temas estrechamente relacionados que se basan en las técnicas demostradas en esta guía. Cada recurso incluye ejemplos de código completos y funcionales con explicaciones paso a paso para ayudarte a dominar características adicionales de la API y explorar enfoques de implementación alternativos en tus propios proyectos. + +- [Cómo convertir HTML a PDF Java – Usando Aspose.HTML para Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Crear pool de hilos fijo para conversión paralela de HTML a PDF](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [Cómo habilitar JavaScript en Aspose HTML – Cargar HTML y obtener texto](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/spanish/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..c42b8cc73 --- /dev/null +++ b/html/spanish/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,255 @@ +--- +category: general +date: 2026-08-22 +description: Cómo exportar enlaces de HTML y convertirlos a un archivo markdown, incluyendo + párrafos. Guía paso a paso para la conversión de HTML a markdown. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: es +lastmod: 2026-08-22 +og_description: Cómo exportar enlaces de un documento HTML y convertirlo a un archivo + markdown, incluyendo párrafos. Sigue este tutorial completo para una conversión + fiable de HTML a markdown. +og_image_alt: How to export links while converting HTML to Markdown +og_title: Cómo exportar enlaces al convertir HTML a Markdown – guía paso a paso +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: Cómo exportar enlaces al convertir HTML a Markdown +url: /es/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo exportar enlaces al convertir HTML a Markdown + +Si necesitas **cómo exportar enlaces** desde una página HTML y convertir el resultado en un **archivo html a markdown** limpio, esta guía te muestra los pasos exactos. También descubrirás **cómo extraer párrafos** para que la salida markdown contenga el contenido principal que te importa. Al final del tutorial podrás responder a la pregunta “**cómo convertir html** a markdown” con un script listo para ejecutar. + +Exportar enlaces y extraer párrafos son tareas comunes cuando migras contenido web a sitios estáticos, portales de documentación o back‑ends de CMS sin cabeza. El enfoque a continuación funciona con el GroupDocs Conversion SDK para Python, pero los conceptos se aplican a cualquier biblioteca que permita configurar características de exportación. + +--- + +## Lo que necesitarás + +- Python 3.9 o superior +- `groupdocs-conversion` package (install with `pip install groupdocs-conversion`) +- Un archivo HTML que deseas procesar (p.ej., `input.html`) +- Familiaridad básica con scripting en Python + +--- + +## Cómo exportar enlaces con la conversión de HTML a Markdown + +El primer paso importante es configurar la conversión para que solo las características deseadas —enlaces y párrafos— se escriban en el **archivo html a markdown**. El SDK te permite establecer una máscara de bits de valores `MarkdownFeature`; combinamos `LINKS` y `PARAGRAPHS` para mantener la salida enfocada. + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### Por qué funciona esto + +- **`HTMLDocument`** analiza el archivo original y construye un DOM que el convertidor puede recorrer. +- **`MarkdownSaveOptions`** te brinda un control granular sobre lo que escribe el SDK. Configurar `features` a `LINKS | PARAGRAPHS` indica al motor que ignore imágenes, tablas o scripts, lo que reduce el ruido en el **archivo html a markdown** final. +- **`Converter.convert`** realiza el trabajo pesado. Respeta la máscara de características, extrae las etiquetas de anclaje (``) y las etiquetas de párrafo (`

`), y las escribe usando la sintaxis estándar de Markdown. + +--- + +## Cómo convertir HTML a Markdown con contenido completo (opcional) + +Si más adelante decides que necesitas la página completa —no solo enlaces y párrafos— simplemente ajusta la máscara de características: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +Ejecutar la misma conversión ahora produce un **archivo html a markdown** completo que refleja el diseño original. Esto demuestra **cómo convertir html** de manera flexible: controlas la salida activando o desactivando banderas de características. + +--- + +## Cómo extraer solo párrafos + +A veces solo te interesan los cuerpos textuales de un artículo, no los hipervínculos. Puedes aislar los párrafos configurando la máscara solo a `PARAGRAPHS`: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +El markdown resultante contendrá texto limpio, con salto de línea, sin ningún marcado de enlaces. Este fragmento responde a la pregunta **cómo extraer párrafos** de una fuente HTML. + +--- + +## Problemas comunes y cómo evitarlos + +| Problema | Por qué ocurre | Solución | +|----------|----------------|----------| +| Archivo de salida vacío | El HTML de origen no contiene etiquetas `` o `

` que coincidan con las características seleccionadas. | Verifica la estructura del HTML o amplía la máscara de características (p.ej., incluye `HEADINGS`). | +| Problemas de codificación | El HTML usa un juego de caracteres que no es UTF‑8 y el SDK lo lee incorrectamente. | Pasa una codificación explícita a `HTMLDocument`, por ejemplo, `HTMLDocument(path, encoding="iso-8859-1")`. | +| Sobrescribir markdown existente | Ejecutar el script varias veces reemplaza el archivo anterior. | Añade una marca de tiempo al nombre del archivo de salida o verifica `os.path.exists` antes de escribir. | + +**Consejo profesional:** Cuando proceses muchos archivos en una carpeta, envuelve la lógica de conversión en un bucle y registra cada resultado. Esto te brinda una pista de auditoría clara y facilita reanudar después de una falla. + +--- + +## Script completo que puedes copiar y pegar + +A continuación tienes un archivo Python autónomo (`convert_links_paragraphs.py`) que puedes ejecutar directamente. Incluye análisis de argumentos para que puedas especificar rutas de entrada y salida sin editar el código. + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**Cómo ejecutar** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +El comando anterior demuestra **cómo exportar enlaces** y **cómo extraer párrafos** en una sola llamada. Omite `--links` o `--paragraphs` para adaptar la salida a tus necesidades. + +--- + +## Verificación – cómo se ve la salida + +Dado el siguiente HTML simple (`input.html`): + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +Ejecutar el script con ambas banderas produce `links_and_paragraphs.md`: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +Puedes ver que solo están presentes los dos párrafos y el hipervínculo —exactamente lo que pediste al buscar **cómo exportar enlaces** mientras realizabas **convertir html a markdown**. + +--- + +## Próximos pasos y temas relacionados + +- **Cómo convertir html a markdown** con imágenes: agrega `MarkdownFeature.IMAGES` a la máscara. +- **Cómo extraer párrafos** y luego post‑procesar + +## ¿Qué deberías aprender a continuación? + +Los siguientes tutoriales cubren temas estrechamente relacionados que se basan en las técnicas demostradas en esta guía. Cada recurso incluye ejemplos de código completos y funcionales con explicaciones paso a paso para ayudarte a dominar características adicionales de la API y explorar enfoques de implementación alternativos en tus propios proyectos. + +- [Cómo establecer desplazamiento al convertir HTML a Markdown en Java](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown a HTML Java - Convertir con Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [Convertir HTML a Markdown – Guía completa en C#](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/spanish/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..e03f42531 --- /dev/null +++ b/html/spanish/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,280 @@ +--- +category: general +date: 2026-08-22 +description: Cómo cargar HTML con Aspose.HTML en Python – limitar la profundidad de + recursos y preparar el documento para su conversión o edición. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: es +lastmod: 2026-08-22 +og_description: Cómo cargar HTML con Aspose.HTML en Python, establecer la profundidad + de manejo de recursos y preparar el documento para su conversión o edición. +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: Cómo cargar HTML con Aspose.HTML – Guía de Python +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: Cómo cargar HTML con Aspose.HTML en Python +url: /es/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo cargar HTML con Aspose.HTML en Python + +Si necesitas **cargar html** rápida y seguramente en un proyecto Python, esta guía te muestra los pasos exactos. Al final de las dos primeras frases sabrás cómo configurar el manejo de recursos, cargar el archivo y mantener el proceso listo para una posterior **conversión HTML** o edición. + +Cargar páginas grandes o complejas a menudo atrapa a los analizadores ingenuos porque los recursos externos (imágenes, scripts, CSS) pueden provocar recursión profunda o demoras de red. Este tutorial cubre un patrón robusto usando **Aspose.HTML for Python**, demuestra la **clase HTMLDocument** y explica por qué es importante establecer **max_handling_depth**. + +Recorrerás: + +* Instalación del paquete Aspose.HTML +* Creación de una instancia `ResourceHandlingOptions` y limitación de la profundidad +* Uso de la clase `HTMLDocument` para cargar una página +* Preparación del documento para conversión a PDF, PNG o manipulación adicional + +No se requiere experiencia previa con Aspose.HTML, solo conocimientos básicos de Python. + +--- + +## Cómo cargar HTML con Aspose.HTML en Python + +El núcleo de la solución es un patrón de tres pasos que combina **ResourceHandlingOptions** con la **clase HTMLDocument**. Limitar la profundidad de manejo evita llamadas de red descontroladas cuando una página referencia muchos recursos anidados. + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### Por qué funciona + +* **`ResourceHandlingOptions`** indica al analizador cuántos niveles de recursos externos puede seguir. Establecer `max_handling_depth = 3` detiene el cargador después de tres saltos, lo cual es suficiente para la mayoría de los sitios pero protege contra bucles infinitos. +* **`HTMLDocument`** lee el archivo, aplica las opciones y construye un DOM en memoria que puedes consultar, modificar o renderizar. +* El fragmento de conversión opcional muestra cómo el documento cargado se integra con las funciones de **conversión HTML**, como guardar en PDF. + +--- + +## Comprendiendo ResourceHandlingOptions + +`ResourceHandlingOptions` forma parte de **Aspose.HTML for Python** y te brinda un control granular sobre la actividad de red. + +| Propiedad | Propósito | Valor típico | +|--------------------------|------------------------------------------------------|--------------| +| `max_handling_depth` | Profundidad máxima de recursión para recursos vinculados | `3` (default) | +| `allow_external_resources` | Indica si se deben descargar recursos externos CSS, JS, imágenes | `True` | +| `timeout` | Tiempo de espera de red por solicitud (segundos) | `30` | + +**Consejo práctico:** Si sabes que la página objetivo solo hace referencia a recursos locales, establece `allow_external_resources = False` para acelerar la carga y evitar llamadas HTTP innecesarias. + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## Uso de la clase HTMLDocument + +La **clase HTMLDocument** es el punto de entrada para todas las operaciones de Aspose.HTML. Una vez instanciada, puedes: + +* Acceder al DOM mediante `doc.root` +* Consultar elementos con selectores CSS (`doc.query_selector_all("img")`) +* Renderizar la página a formatos raster (`doc.save("page.png")`) +* Convertir a PDF (`doc.save("page.pdf", PDFSaveOptions())`) + +A continuación, un fragmento corto que extrae todos los atributos `src` de imágenes después de la carga: + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**Por qué podrías necesitar esto:** Al realizar **conversión HTML**, a menudo debes ajustar o reemplazar URLs de imágenes antes de renderizar a otro formato. Acceder al DOM directamente te brinda esa flexibilidad. + +--- + +## Próximos pasos después de cargar el HTML + +Ahora que el documento está en memoria, puedes elegir entre varios flujos de trabajo comunes: + +1. **Convertir a PDF** – Ideal para archivado o impresión. +2. **Renderizar a PNG/JPEG** – Útil para miniaturas o vistas previas visuales. +3. **Editar el DOM** – Insertar, eliminar o modificar elementos antes de guardar. +4. **Extraer texto** – Obtener contenido en texto plano para indexación o análisis. + +### Ejemplo: Convertir a PDF con tamaño de página personalizado + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**Salida esperada:** Aparecerá un archivo llamado `big_page.pdf` en el directorio de trabajo, que contiene el HTML renderizado con todos los recursos permitidos aplicados. Si estableces `max_handling_depth` en 3, solo se incrustan recursos de hasta tres niveles de profundidad, manteniendo razonable el tamaño del PDF. + +--- + +## Problemas comunes y cómo evitarlos + +| Síntoma | Causa | Solución | +|--------------------------------------|----------------------------------------|----------| +| Imágenes faltantes en el PDF renderizado | `allow_external_resources` configurado en `False` | Habilitar recursos externos o incrustar imágenes localmente | +| `TimeoutError` durante la carga | La latencia de red supera `timeout` | Incrementar `rh_opts.timeout` o pre‑descargar los activos | +| Estilos CSS inesperados | Hoja de estilo vinculada no cargada por límite de profundidad | Aumentar `max_handling_depth` o añadir manualmente el CSS necesario | +| `UnicodeDecodeError` en archivos no UTF‑8 | El archivo HTML usa una codificación diferente | Pasar `encoding="windows-1252"` al crear `HTMLDocument` | + +--- + +## Ejemplo completo y ejecutable + +A continuación tienes un script autónomo que puedes copiar‑pegar en un archivo llamado `load_html_demo.py`. Incluye instrucciones de instalación, manejo de errores y un paso de verificación final. + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +### Ejecutando el script + +```bash +python load_html_demo.py +``` + +Deberías ver en la consola una salida que confirma la carga, una lista de URLs de imágenes y un mensaje de éxito para la conversión a PDF. El `big_page.pdf` generado reflejará el contenido HTML limitado por el **max_handling_depth** configurado. + +--- + +## Conclusión + +En este tutorial cubrimos **cómo cargar html** usando **Aspose.HTML for Python**, configuramos **ResourceHandlingOptions** para controlar `max_handling_depth` y demostramos acciones prácticas posteriores a la carga, como extracción de imágenes y conversión a PDF. Al seguir los pasos ahora dispones de una base fiable para cualquier flujo de **conversión HTML**, ya sea que estés construyendo un scraper web, un servicio de archivado de documentos o un generador de informes dinámicos. + +**Próximos pasos** + +* Experimenta con diferentes valores de `max_handling_depth` para equilibrar exhaustividad y rendimiento. +* Prueba convertir el documento a + +## ¿Qué deberías aprender a continuación? + +Los siguientes tutoriales cubren temas estrechamente relacionados que amplían las técnicas demostradas en esta guía. Cada recurso incluye ejemplos de código completos y explicaciones paso a paso para ayudarte a dominar funciones adicionales de la API y explorar enfoques de implementación alternativos en tus propios proyectos. + +- [Cómo analizar HTML Java – Cargar, Consultar y Contar Elementos](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [Cómo editar el árbol de documentos HTML en Aspose.HTML para Java](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [Manejar eventos de carga de documentos en Aspose.HTML para Java](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/swedish/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..022b10009 --- /dev/null +++ b/html/swedish/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-08-22 +description: Hur man konverterar HTML till PDF i Python med Aspose.HTML – lär dig + skapa PDF från HTML‑fil, generera PDF från HTML‑kod och snabbt spara HTML som PDF + i Python. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: sv +lastmod: 2026-08-22 +og_description: Hur man konverterar HTML till PDF i Python med Aspose.HTML. Denna + handledning visar hur du skapar PDF från en HTML‑fil, genererar PDF från HTML‑kod + och sparar HTML som PDF i Python. +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: Hur man konverterar HTML till PDF i Python – steg‑för‑steg‑guide +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: Hur man konverterar HTML till PDF i Python med Aspose.HTML +url: /sv/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur man konverterar HTML till PDF i Python med Aspose.HTML + +Om du snabbt behöver **how to convert html to pdf**, visar den här guiden en komplett, färdig‑att‑köra lösning. Du får se hur du **create pdf from html file**, **generate pdf from html code** och **save html as pdf python** med Aspose.HTML:s enkla API. + +Vi går igenom varje steg, förklarar varför varje rad är viktig och tar upp vanliga fallgropar så att du kan anpassa koden till vilket projekt som helst. Inga externa verktyg, bara några rader Python. + +## Förutsättningar + +Innan du börjar, se till att du har: + +* Python 3.8 eller nyare installerat. +* En aktiv Aspose.HTML för Python‑licens (eller en gratis utvärderingsnyckel). +* Paketet `aspose.html` installerat: + +```bash +pip install aspose-html +``` + +När dessa är på plats säkerställer det att konverteringen körs utan körningsfel. + +## Steg 1: Läs in HTML‑dokumentet (create pdf from html file) + +Det första steget är att läsa in käll‑HTML. Aspose.HTML representerar ett dokument med klassen `HTMLDocument`, som abstraherar fil‑I/O, nätverkshämtning och DOM‑parsning. + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*Varför detta är viktigt:* +`HTMLDocument` laddar HTML‑filen, löser relativa resurser (bilder, CSS, teckensnitt) och bygger ett DOM som konverteraren kan rendera exakt. Att hoppa över detta steg eller använda en vanlig sträng skulle förlora dessa resursupplösningar. + +## Steg 2: Konfigurera PDF‑sparalternativ (save html as pdf python) + +Aspose.HTML låter dig finjustera PDF‑utdata via `PdfSaveOptions`. Standardkonfigurationen producerar redan en PDF av hög kvalitet, men du kan justera sidstorlek, komprimering eller metadata om så behövs. + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*Varför detta är viktigt:* +Även om du behåller standardvärdena gör skapandet av ett options‑objekt koden extensibel. Framtida förändringar—t.ex. att bädda in ett PDF‑lösenord—kan läggas till utan att omstrukturera skriptet. + +## Steg 3: Utför konverteringen (convert html to pdf python) + +Metoden `Converter.convert` knyter ihop HTML‑dokumentet och PDF‑alternativen och skriver resultatet till den filväg du anger. + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*Varför detta är viktigt:* +`Converter.convert` kör renderingsmotorn, rasteriserar HTML/CSS till PDF‑vektorer. Den hanterar komplexa layouter, inbäddade teckensnitt och SVG‑grafik automatiskt—något som manuella bibliotek ofta missar. + +### Förväntad output + +När skriptet körs skapas `sample.pdf` i samma katalog. Öppna den i någon PDF‑visare; du bör se en trogen återgivning av `sample.html`, inklusive stilar, bilder och sidbrytningar. + +## Vanliga variationer och kantfall + +| Situation | Hur du hanterar det | +|-----------|---------------------| +| **HTML är en sträng, inte en fil** | Använd `HTMLDocument.from_string(html_string)` istället för att läsa från en sökväg. | +| **Du behöver ett lösenordsskyddat PDF** | Sätt `pdf_options.encryption.password = "yourPassword"` innan konverteringen. | +| **Stora HTML‑filer ger minnespress** | Aktivera streaming‑läge: `pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`. | +| **Anpassade teckensnitt saknas** | Registrera teckensnittsmappen: `pdf_options.fonts_folder = "path/to/fonts"`.| + +Dessa variationer visar flexibiliteten i Aspose.HTML‑API:t samtidigt som huvudflödet förblir oförändrat. + +## Fullt skript (generate pdf from html code) + +Nedan är det kompletta, körbara programmet som inkluderar alla steg. Kopiera‑klistra in det, ersätt `YOUR_DIRECTORY` med en faktisk mapp och kör. + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +Kör det med: + +```bash +python convert_html_to_pdf.py +``` + +Du får se bekräftelsemeddelandet, och PDF‑filen visas bredvid käll‑HTML‑filen. + +## Felsökningstips (pro tip) + +* **Saknade bilder eller CSS** – Se till att HTML‑filen använder absoluta URL:er eller att de relativa sökvägarna är korrekta i förhållande till `YOUR_DIRECTORY`. +* **Unicode‑tecken visas som fyrkanter** – Bädda in nödvändiga teckensnitt via `pdf_options.fonts_folder`. +* **Konverteringen är långsam** – Sätt `pdf_options.use_system_fonts = False` för att undvika skanning av systemets teckensnittskatalog. + +## Slutsats + +Du vet nu **how to convert html to pdf** i Python med Aspose.HTML, från att läsa in en HTML‑fil till att spara en PDF av hög kvalitet. Samma mönster låter dig **create pdf from html file**, **generate pdf from html code** och **save html as pdf python** för vilken automatiseringsarbetsflöde som helst. + +Nästa steg kan vara att utforska: + +* Att lägga till vattenstämplar eller sidhuvuden/sidfötter (nyckelord: *create pdf from html file*). +* Att konvertera en live‑URL istället för en lokal fil (nyckelord: *convert html to pdf python*). +* Att integrera konverteraren i ett Flask‑ eller Django‑API för att leverera PDF‑filer på begäran. + +Experimentera gärna med alternativen, och lycka till med PDF‑genereringen! + + +## Vad bör du lära dig härnäst? + + +Följande handledningar täcker närbesläktade ämnen som bygger vidare på teknikerna som demonstrerats i den här guiden. Varje resurs innehåller kompletta fungerande kodexempel med steg‑för‑steg‑förklaringar för att hjälpa dig bemästra ytterligare API‑funktioner och utforska alternativa implementationssätt i dina egna projekt. + +- [Convert HTML to PDF with Aspose.HTML – Full Manipulation Guide](/html/english/) +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Convert HTML to PDF in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-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/swedish/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/swedish/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..50edc310d --- /dev/null +++ b/html/swedish/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-08-22 +description: Lär dig hur du skapar markdown från en HTML‑fil med Python. Denna steg‑för‑steg‑guide + visar hur du konverterar HTML till markdown med ett pålitligt bibliotek. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: sv +lastmod: 2026-08-22 +og_description: Hur man skapar markdown från en HTML-fil med Python. Följ den här + guiden för att snabbt konvertera HTML till markdown med ett beprövat bibliotek. +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: Hur man skapar markdown från HTML i Python – komplett guide +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: Hur man skapar markdown från HTML i Python – komplett guide +url: /sv/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur man skapar markdown från HTML i Python – komplett guide + +Om du behöver veta **how to create markdown** från befintligt webb‑innehåll, kan du konvertera en HTML‑fil till markdown med bara några rader Python. Denna handledning går igenom **convert html to markdown** med ett dedikerat **html to markdown library** som fungerar på Windows, macOS och Linux. + +Du kommer att lära dig hur du installerar biblioteket, laddar ett HTML‑dokument, konfigurerar Git‑flavored markdown‑alternativ och skriver resultatet till disk. I slutet av guiden kan du automatiskt omvandla vilken **html file to markdown** som helst, vilket är användbart för static‑site generators, dokumentations‑pipelines eller innehållsmigrationsprojekt. + +## Förutsättningar + +* Python 3.8 eller nyare installerat (kontrollera med `python --version`). +* Tillgång till en terminal eller kommandoprompt. +* En HTML‑fil du vill konvertera (exemplet använder `sample.html`). +* Internetanslutning för att installera det nödvändiga paketet. + +Kodexemplet använder **GroupDocs.Conversion for Python**‑biblioteket, som tillhandahåller klasserna `HTMLDocument`, `MarkdownSaveOptions` och `Converter` som visas senare. Samma koncept gäller för andra **html to markdown python**‑paket såsom `markdownify` eller `html2text` — den enda skillnaden är import‑satserna. + +## Hur man skapar markdown – steg 1: installera html to markdown python‑biblioteket + +Den första uppgiften är att lägga till konverteringsbiblioteket i din miljö. Kör följande pip‑kommando i din terminal: + +```bash +pip install groupdocs-conversion +``` + +> **Pro tip:** Använd en virtuell miljö (`python -m venv .venv`) för att hålla beroenden isolerade från din globala Python‑installation. + +Att installera paketet ger dig åtkomst till klasserna `HTMLDocument`, `MarkdownSaveOptions` och `Converter` som krävs för konverteringsprocessen. + +## Konvertera html till markdown – steg 2: ladda HTML‑dokumentet + +Efter att biblioteket är installerat, importera de nödvändiga klasserna och skapa en `HTMLDocument`‑instans som pekar på din källfil. + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +`HTMLDocument`‑objektet läser filen och förbereder den för konvertering. Om filen inte finns, kastar konstruktorn ett `FileNotFoundError`, så se till att sökvägen är korrekt. + +## html‑fil till markdown – steg 3: konfigurera Git‑flavored markdown‑alternativ + +Många projekt föredrar Git‑flavored markdown eftersom det ger stöd för tabeller, uppgiftslistor och genomstruken syntax. Biblioteket låter dig aktivera denna förinställning via `git`‑egenskapen på `MarkdownSaveOptions`. + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +Att sätta `git = True` instruerar konverteraren att generera syntax som GitHub, GitLab och Bitbucket renderar korrekt. Om du behöver ren markdown, lämna flaggan `False`. + +## Spara markdown‑utdata – steg 4: skriv resultatet med html to markdown‑biblioteket + +Slutligen, anropa metoden `Converter.convert`, och skicka med källdokumentet, alternativ‑objektet och destinationssökvägen. + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +När skriptet är klart innehåller `git_flavored.md` markdown‑representationen av `sample.html`. Du kan öppna filen i vilken editor som helst eller mata den direkt till en static‑site generator. + +### Förväntad output + +Om vi antar att `sample.html` innehåller en enkel rubrik och ett stycke, kan den genererade markdownen se ut så här: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +Om den ursprungliga HTML‑koden innehåller tabeller, listor eller kodblock, kommer Git‑flavored‑förinställningen att bevara dessa strukturer med lämplig markdown‑syntax. + +## Förstå html to markdown‑biblioteket + +Biblioteket **GroupDocs.Conversion** döljer parsing‑ och renderingsdetaljer som du annars skulle behöva hantera manuellt. Det: + +* Bevarar CSS‑baserad styling där det är möjligt (t.ex. fet, kursiv). +* Genererar ren, läsbar markdown utan extra HTML‑entiteter. +* Stöder batch‑konvertering, så att du kan loopa över en katalog med HTML‑filer med samma kod. + +Om du föredrar en lättare lösning, erbjuder paketet `markdownify` ett API med en enda funktion: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +Båda tillvägagångssätten uppnår samma slutmål—**convert html to markdown**—men GroupDocs‑alternativet ger mer kontroll över utdataformatet och integreras enkelt i större dokument‑bearbetnings‑pipelines. + +## Vanliga fallgropar och hur man undviker dem + +| Problem | Varför det uppstår | Lösning | +|-------|---------------|-----| +| Saknade bilder i markdown | Konverteraren inkluderar endast bild‑URL:er; den bäddar inte in filer. | Se till att bildfiler är åtkomliga från markdown‑platsen eller kopiera dem tillsammans med utdata. | +| Trasiga relativa länkar | HTML kan använda relativa sökvägar som blir ogiltiga efter konvertering. | Använd `md_options.base_path` (om tillgängligt) för att skriva om länkar, eller kör ett efterbehandlings‑skript för att justera sökvägar. | +| Unicode‑tecken blir escapade | Vissa bibliotek escapar icke‑ASCII‑tecken. | Sätt `md_options.encode_utf8 = True` (eller motsvarande flagga) för att behålla tecknen intakta. | + +Att åtgärda dessa problem tidigt sparar tid när du skalar konverteringen till dussintals eller hundratals filer. + +## Fullt, körbart exempel + +Nedan är ett självständigt skript som du kan kopiera, modifiera och köra omedelbart. Ersätt `YOUR_DIRECTORY` med den faktiska mappen på din maskin. + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +Kör skriptet: + +```bash +python markdown_from_html.py +``` + +Du bör se ett bekräftelsemeddelande och en ny `git_flavored.md`‑fil som innehåller markdown‑versionen av din HTML. + +## Slutsats + +Du vet nu **how to create markdown** från en HTML‑källa med Python. Guiden täckte installation av ett pålitligt **html to markdown library**, laddning av en **html file to markdown**, konfiguration av **html to markdown python**‑alternativ och sparande av resultatet. Med denna grund kan du automatisera dokumentations‑pipelines, migrera äldre webbsidor eller generera innehåll för static‑site generators. + +**Nästa steg** + +* Utforska batch‑konvertering genom att iterera över en mapp med HTML‑filer. +* Anpassa `MarkdownSaveOptions` för att styra rubrikstilar, listformat eller bildhantering. +* Kombinera detta skript med ett CI/CD‑arbetsflöde för att hålla din markdown‑dokumentation automatiskt uppdaterad. + +Lycka till med konverteringen! + +## Vad bör du lära dig härnäst? + +Följande handledningar täcker närbesläktade ämnen som bygger på teknikerna som demonstreras i denna guide. Varje resurs innehåller kompletta fungerande kodexempel med steg‑för‑steg‑förklaringar för att hjälpa dig bemästra ytterligare API‑funktioner och utforska alternativa implementationsmetoder i dina egna projekt. + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/swedish/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..886e65ea4 --- /dev/null +++ b/html/swedish/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,187 @@ +--- +category: general +date: 2026-08-22 +description: Lär dig hur du skapar markdown från HTML i Python med ett enkelt tredstegsskript. + Inkluderar konverteringsalternativ och exporttips. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: sv +lastmod: 2026-08-22 +og_description: Skapa markdown från HTML med Python på bara tre rader. Den här guiden + visar konvertering, formateringsalternativ och hur du exporterar HTML till markdown + på ett effektivt sätt. +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: Skapa markdown från HTML i Python – steg‑för‑steg guide +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: Hur man skapar markdown från HTML med Python +url: /sv/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur man skapar markdown från HTML med Python + +Om du behöver **skapa markdown från HTML**, visar den här korta guiden exakt hur du gör det med Python. Du kommer att se ett tydligt, tre‑stegsskript som laddar en HTML‑fil, konfigurerar Git‑flavored Markdown‑utdata och skriver resultatet till disk. + +Att konvertera webbinnehåll till lättviktigt markup är en vanlig uppgift när man bygger statiska webbplatser, dokumentationspipelines eller data‑analys‑notebookar. I den här handledningen kommer vi även att beröra hur man **convert HTML to markdown** med valfri formatering, svara på frågan **how to convert HTML** effektivt, och demonstrera **export HTML to markdown**‑arbetsflödet med det populära `groupdocs-conversion`‑biblioteket. + +## Förutsättningar + +Innan du börjar, se till att du har: + +* Python 3.8 eller nyare installerat. +* Paketet `groupdocs-conversion` (eller vilket bibliotek som helst som tillhandahåller `HTMLDocument`, `MarkdownSaveOptions` och `Converter`). Installera det med: + +```bash +pip install groupdocs-conversion +``` + +* En HTML‑fil du vill omvandla, t.ex. `sample.html` som ligger i en mapp du kontrollerar. + +Inga ytterligare systemberoenden krävs, och koden fungerar på Windows, macOS och Linux. + +## Steg 1: Ladda källdokumentet HTML + +Den första operationen är att skapa ett `HTMLDocument`‑objekt som representerar källfilen. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**Varför detta är viktigt:** `HTMLDocument` parsar filen, löser relativa länkar och förbereder DOM för konvertering. Om filen inte kan hittas kastar konstruktorn ett tydligt `FileNotFoundError`, så du kan hantera saknade indata tidigt. + +## Steg 2: Konfigurera Markdown‑spara‑alternativ (Git‑flavored) + +Markdown har flera dialekter. Git‑flavored Markdown (GFM) lägger till tabeller, uppgiftslistor och inramade kodblock, vilket ofta krävs för README‑filer eller GitHub‑sidor. + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**Varför detta är viktigt:** Genom att explicit välja `MarkdownFormatter.GIT` säkerställer du att utdata följer samma regler som GitHub renderar, vilket eliminerar överraskningar när markdown visas i ett repository. Om du föredrar vanlig Markdown, ersätt `MarkdownFormatter.GIT` med `MarkdownFormatter.DEFAULT`. + +## Steg 3: Konvertera HTML‑dokumentet till en Markdown‑fil + +Anropa nu konverteringsmotorn och skriv resultatet till målplatsen. + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**Varför detta är viktigt:** `Converter.convert` sköter det tunga arbetet — översätter HTML‑taggar till deras markdown‑motsvarigheter, bevarar bilder (genom att kopiera dem till utdata‑mappen om det behövs) och tillämpar den formatterare du valt. Metoden returnerar `None` vid framgång, men du kan fånga `ConversionException` för detaljerad felrapportering. + +### Förväntad utdata + +Efter att ha kört skriptet kommer `sample.md` att innehålla något i stil med: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +Den exakta markdownen speglar strukturen i `sample.html`. Tabeller, bilder och kodblock kommer att konverteras enligt GFM‑reglerna. + +## Vanliga variationer och kantfall + +| Situation | Rekommenderad justering | +|-----------|-------------------| +| **Stora HTML‑filer (>10 MB)** | Öka Python‑rekursionsgränsen eller strömma indata med `HTMLDocument.open_stream()` om biblioteket stödjer det. | +| **Bilder som refereras med absoluta URL:er** | Ställ in `md_options.embed_images = True` för att bädda in bilder som base‑64‑data‑URI:er, eller behåll dem som länkar för lättare utdata. | +| **Du behöver vanlig Markdown istället för GFM** | Ändra `md_options.formatter = MarkdownFormatter.DEFAULT`. | +| **Anpassade CSS‑klasser bör ignoreras** | Använd `md_options.ignore_css_classes = ["unwanted-class"]`. | +| **Kör i en CI/CD‑pipeline** | Omge skriptet med ett `try/except`‑block och avsluta med en icke‑noll status vid fel, så att pipelinen kan misslyckas snabbt. | + +### Proffstips + +Om du planerar att konvertera många filer i ett batch, återanvänd en enda `MarkdownSaveOptions`‑instans och ändra bara in‑/utdata‑sökvägarna inom en loop. Detta minskar objekt‑skapande overhead och snabbar upp processen med ~15 %. + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## Hur man konverterar HTML till markdown i andra språk (snabbanteckning) + +Även om den här handledningen fokuserar på **html to markdown python**, gäller samma koncept för Java, C# eller JavaScript‑SDK:er: skapa ett dokumentobjekt, konfigurera en markdown‑formatterare och anropa konverteraren. Om du någonsin behöver **export HTML to markdown** från en icke‑Python‑miljö, leta efter motsvarande `HtmlDocument`, `MarkdownSaveOptions` och `Converter`‑klasser i det språk‑specifika SDK‑et. + +## Slutsats + +Du vet nu hur du **create markdown from HTML** med ett koncist Python‑skript. Det tre‑stegiga flödet — ladda HTML, sätt Git‑flavored‑alternativ och kör konverteringen — täcker kärnan i varje **convert html to markdown**‑arbetsflöde. Härifrån kan du: + +* Integrera skriptet i statiska webbplats‑generatorer. +* Automatisera dokumentationsuppdateringar i CI‑pipelines. +* Utöka konverteringen med anpassad efterbehandling (t.ex. omskrivning av länkar eller justering av rubriker). + +Känn dig fri att experimentera med de sekundära alternativen — **how to convert html** med olika formatterare, eller justera **export html to markdown**‑inställningar för bilder och tabeller. Lycka till med konverteringen! + +## Vad bör du lära dig härnäst? + +Följande handledningar täcker närbesläktade ämnen som bygger på teknikerna som demonstrerats i den här guiden. Varje resurs innehåller kompletta fungerande kodexempel med steg‑för‑steg‑förklaringar för att hjälpa dig bemästra ytterligare API‑funktioner och utforska alternativa implementationsmetoder i dina egna projekt. + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/swedish/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..9d55ccf6b --- /dev/null +++ b/html/swedish/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,282 @@ +--- +category: general +date: 2026-08-22 +description: Skapa PDF från SVG med Python på några minuter. Lär dig att konvertera + SVG till PDF, spara SVG som PDF och använda en pålitlig SVG‑till‑PDF‑omvandlare. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: sv +lastmod: 2026-08-22 +og_description: Skapa PDF från SVG med Python snabbt. Den här guiden visar hur du + konverterar SVG till PDF, använder en SVG‑till‑PDF‑omvandlare och sparar SVG som + PDF i ett enda skript. +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: Skapa PDF från SVG i Python – steg‑för‑steg‑handledning +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: Hur man skapar PDF från SVG i Python – komplett guide +url: /sv/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur man skapar PDF från SVG i Python – komplett guide + +Om du snabbt behöver **create PDF from SVG**, visar den här handledningen exakt hur. Vi går igenom hur du konverterar en SVG‑fil till en PDF med en populär SVG‑till‑PDF‑konverterare, så att du kan bädda in vektorgrafik i rapporter, fakturor eller e‑böcker utan att lämna din Python‑kod. + +Du kommer att lära dig hur du **convert SVG to PDF**, hanterar skalning, bevarar typsnitt och slutligen **save SVG as PDF** med ett enda, reproducerbart skript. Inga externa kommandoradsverktyg krävs—bara några rader Python och Aspose.SVG for Python‑biblioteket. + +## Förutsättningar + +Innan du börjar, se till att du har: + +| Krav | Orsak | +|------|-------| +| Python 3.8+ | Biblioteket riktar sig mot moderna Python‑miljöer. | +| `aspose.svg` package | Tillhandahåller `SVGDocument`, `PdfSaveOptions` och `Converter`. Installera med `pip install aspose-svg`. | +| En SVG‑fil (`vector.svg`) | Den källvektorgrafik du vill konvertera. | +| Skrivbehörighet till mål‑mappen | Behövs för **save SVG as PDF**. | + +Du kan installera biblioteket med: + +```bash +pip install aspose-svg +``` + +> **Pro tip:** Använd en virtuell miljö (`python -m venv venv`) för att hålla beroenden isolerade. + +## Översikt över konverteringsprocessen + +Konverteringen består av tre enkla steg: + +1. Läs in **SVG document** från disk. +2. Skapa **PDF save options** (du kan anpassa sidstorlek, DPI osv.). +3. Anropa **converter** för att producera en PDF‑fil. + +Följande avsnitt bryter ner varje steg, förklarar *varför* koden är skriven på det sättet och visar det kompletta, körbara skriptet. + +## Skapa PDF från SVG med Aspose.SVG för Python + +Denna H2‑rubrik innehåller huvudnyckelordet **create pdf from svg**, vilket uppfyller SEO‑kravet. + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### Varför detta fungerar + +* **`SVGDocument`** analyserar SVG‑XML‑en och bygger en minnesrepresentation som konverteraren kan rendera. +* **`PdfSaveOptions`** låter dig finjustera PDF‑utdata (sidstorlek, komprimering, DPI). Standardinställningarna producerar redan en trogen PDF, vilket är varför exemplet fungerar direkt. +* **`Converter.convert`** utför det tunga arbetet: den rasteriserar vektordatan på PDF‑sidor samtidigt som den bevarar vektorprecision, så den resulterande PDF‑filen förblir skarp vid alla zoomnivåer. + +## Konvertera SVG till PDF med anpassad sidstorlek + +Om du behöver en specifik sidstorlek—t.ex. A4 för utskrivbara rapporter—justera `PdfSaveOptions`: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **Edge case:** Vissa SVG‑filer definierar en `viewBox` som inte matchar de önskade PDF‑dimensionerna. Att åsidosätta `page_width`/`page_height` säkerställer att PDF‑filen passar dina layout‑förväntningar. + +## Spara SVG som PDF samtidigt som du bevarar typsnitt + +När din SVG refererar till externa typsnitt, se till att typsnitten är tillgängliga för konverteraren. Placera `.ttf`‑filerna i samma katalog som SVG‑filen eller ange en anpassad typsnittsmapp: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +Konverteraren bäddar in typsnitten direkt i PDF‑filen, vilket garanterar att **svg file to pdf**‑konverteringen ser identisk ut på alla maskiner. + +## Batch‑konvertering: svg file to pdf för många filer + +Ofta har du en mapp full av SVG‑tillgångar. Följande loop demonstrerar en effektiv **svg to pdf converter** som bearbetar varje `.svg`‑fil i en katalog: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +Detta kodsnutt illustrerar ett praktiskt **convert svg to pdf**‑arbetsflöde som kan integreras i CI‑pipelines eller automatiska rapportgeneratorer. + +## Verifiera utdata + +Efter att ha kört skriptet, öppna den genererade PDF‑filen med någon visare (Adobe Reader, Chrome eller Preview). Du bör se: + +* Vektorformer renderade skarpt vid alla zoomnivåer. +* Text som matchar SVG‑källan, med typsnitt inbäddade om du har tillhandahållit dem. +* Inga raster‑artefakter—eftersom konverteringen behåller den ursprungliga vektordatan. + +Om du märker saknade typsnitt, dubbelkolla att typsnitts‑filerna är åtkomliga och att SVG‑filen refererar till dem korrekt (`font-family`‑attributet). + +## Vanliga fallgropar och hur du undviker dem + +| Symptom | Trolig orsak | Åtgärd | +|---------|--------------|-------| +| Tomma PDF‑sidor | SVG har externa resurser (bilder, typsnitt) som inte hittas | Tillhandahåll `fonts_folder` och säkerställ att länkade bilder finns i samma katalog eller använd absoluta URL:er. | +| Text visas som konturer | Typsnittet är inte inbäddat | Ställ in `pdf_options.embed_fonts = True` (standard) och verifiera att typsnittsfilen finns. | +| PDF är större än förväntat | Hög DPI eller okomprimerade bilder | Minska `pdf_options.dpi` eller aktivera kompression: `pdf_options.compress = True`. | +| SVG-dimensioner klipps av | `viewBox` är större än PDF‑sida | Justera `pdf_options.page_width`/`page_height` eller skala SVG via `svg_doc.set_viewport`. | + +## Fullständigt end‑to‑end‑exempel + +Nedan är ett fristående skript som inkluderar felhantering, loggning och valfria kommandoradsargument. Spara det som `svg_to_pdf.py` och kör `python svg_to_pdf.py`. + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +Att köra skriptet skapar en **save SVG as PDF**‑operation som du kan bädda in i större automations‑pipelines. + +### Förväntad konsolutdata + + + +## Vad bör du lära dig härnäst? + +Följande handledningar täcker närbesläktade ämnen som bygger på teknikerna som demonstreras i den här guiden. Varje resurs innehåller kompletta fungerande kodexempel med steg‑för‑steg‑förklaringar för att hjälpa dig bemästra ytterligare API‑funktioner och utforska alternativa implementationsmetoder i dina egna projekt. + +- [Convert SVG to PDF in .NET with Aspose.HTML](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg to pdf java – Generate PDF from SVG with Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [Convierte SVG a PDF en .NET con Aspose.HTML](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/swedish/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/swedish/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..9aaf28e13 --- /dev/null +++ b/html/swedish/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-08-22 +description: Hur man aktiverar strömning för konvertering av stora HTML-filer till + PDF i Python, vilket minskar minnesanvändningen och påskyndar genereringen av utdata. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: sv +lastmod: 2026-08-22 +og_description: hur man aktiverar streaming för stora HTML‑till‑PDF‑konverteringar + i Python, minskar minnesanvändningen och snabbar upp genereringen av utdata +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: Aktivera strömning för HTML‑till‑PDF‑konvertering i Python +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: Hur man aktiverar streaming vid konvertering av HTML till PDF i Python +url: /sv/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur du aktiverar streaming vid konvertering av HTML till PDF i Python + +Om du behöver **hur du aktiverar streaming** under en stor HTML‑till‑PDF‑konvertering visar den här guiden de exakta stegen. Genom att aktivera streaming undviker du att ladda hela dokumentet i minnet, vilket är avgörande när du konverterar HTML till PDF för stora filer. + +Du kommer att lära dig hur du aktiverar streaming, konverterar HTML till PDF med Python och hanterar kantfall såsom stora HTML‑till‑PDF‑jobb. Lösningen fungerar med det populära `groupdocs-conversion`‑biblioteket (eller liknande), men koncepten gäller för alla konverterare som stödjer streaming. + +![Diagram som visar strömmande konvertering från HTML till PDF med Python](streaming-diagram.png) + +## Vad du behöver + +- Python 3.9 eller nyare +- `groupdocs-conversion` (eller ett bibliotek som erbjuder `PdfSaveOptions` med en streaming‑flagga) +- En HTML‑fil som du vill omvandla till en PDF (exemplet använder en stor fil som heter `large.html`) + +Att ha dessa förutsättningar säkerställer att koden körs utan ytterligare konfiguration. + +## Steg 1: Installera konverteringsbiblioteket + +Först installerar du Python‑paketet som tillhandahåller `HTMLDocument`, `PdfSaveOptions` och `Converter`. Det vanligaste valet är **GroupDocs.Conversion** SDK: + +```bash +pip install groupdocs-conversion +``` + +> **Proffstips:** Använd ett virtuellt miljö (`python -m venv .venv`) för att hålla beroenden isolerade. + +## Steg 2: Läs in HTML‑dokumentet du vill konvertera + +Att läsa in käll‑HTML är enkelt. Klassen `HTMLDocument` läser filen från disk och förbereder den för konvertering. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +`HTMLDocument`‑objektet representerar hela HTML‑markupen, inklusive externa resurser som bilder och CSS. Detta är startpunkten för varje **convert html to pdf**‑operation. + +## Steg 3: Skapa PDF‑sparaalternativ och aktivera streaming + +Att aktivera streaming är kärnan i **hur du aktiverar streaming**. Istället för att buffra hela PDF‑filen i minnet skriver konverteraren bitar direkt till utskriftsfilen. + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +När `enable_streaming` är satt till `True` använder biblioteket en write‑through‑metod som dramatiskt minskar RAM‑förbrukningen – avgörande för **large html to pdf**‑scenarier. + +## Steg 4: Konvertera HTML‑dokumentet till PDF med de konfigurerade alternativen + +Nu anropar du konverteringen. Metoden `Converter.convert` tar källdokumentet, alternativobjektet och destinationssökvägen. + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +När detta anrop är klart innehåller `large.pdf` den renderade PDF‑filen, genererad medan data strömmades till disk. Hela processen slutförs vanligtvis snabbare än en icke‑streamande konvertering eftersom operativsystemet kan spola data till filsystemet inkrementellt. + +### Förväntad output + +Att köra skriptet producerar en PDF‑fil vars storlek matchar innehållet i den ursprungliga HTML‑filen. Du kan verifiera resultatet med någon PDF‑visare: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## Varför streaming är viktigt för stora HTML‑till‑PDF‑konverteringar + +När du **convert html to pdf** utan streaming bygger biblioteket först hela PDF‑filen i RAM innan den skrivs till disk. För en liten sida är detta okej, men ett **large html to pdf**‑jobb (t.ex. en 10 MB HTML‑rapport med många bilder) kan överskrida minnesgränserna för vanliga serverlösa funktioner eller låg‑minnes‑containrar. + +Att aktivera streaming löser tre problem: + +1. **Minneseffektivitet** – endast en liten buffert hålls i RAM. +2. **Snabbare upplevd prestanda** – filen syns på disken medan den fortfarande genereras, vilket gör att efterföljande processer kan börja läsa den tidigare. +3. **Skalbarhet** – du kan köra många konverteringar parallellt utan att tömma värdens minne. + +## Vanliga fallgropar och hur du undviker dem + +| Symptom | Trolig orsak | Åtgärd | +|---------|--------------|-----| +| `MemoryError` under konvertering | Streaming‑flaggan är inte satt eller biblioteksversionen är för gammal | Säkerställ att `pdf_opts.enable_streaming = True` och uppgradera till senaste SDK (`pip install --upgrade groupdocs-conversion`). | +| Bilder saknas i PDF‑filen | Relativa bildvägar kan inte lösas | Skicka baskatalogen till `HTMLDocument` eller bädda in bilder som base64. | +| Utdata‑PDF är tom | HTML‑filen hittades inte eller är oläsbar | Verifiera sökvägen `"YOUR_DIRECTORY/large.html"` och kontrollera filbehörigheter. | +| Konverteringen hänger sig | Stora externa resurser (fonter, CSS) blockerar rendering | För‑ladda externa resurser eller använd en headless‑browser för att inlinea dem. | + +### Kantfall: Konvertera HTML från en sträng + +Om ditt HTML‑innehåll finns i minnet snarare än i en fil kan du fortfarande **hur du aktiverar streaming** genom att omsluta strängen i en `HTMLDocument`‑konstruktor som accepterar rå HTML: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +Streaming‑beteendet förblir identiskt eftersom SDK:n skriver PDF‑filen inkrementellt. + +## Fullt skript du kan kopiera‑klistra + +Nedan följer ett komplett, färdigt exempel som innehåller alla steg som diskuterats. Ersätt `YOUR_DIRECTORY` med den faktiska sökvägen på din maskin. + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +Att köra `python full_example.py` genererar `large.pdf` med streaming‑metoden. + +## Sammanfattning + +- Du vet nu **hur du aktiverar streaming** för HTML‑till‑PDF‑konvertering i Python. +- Skriptet demonstrerar hela **convert html to pdf**‑arbetsflödet och hanterar **large html to pdf**‑arbetsbelastningar effektivt. +- Genom att sätta `PdfSaveOptions.enable_streaming = True` skriver konverteraren utdata successivt, vilket är det rekommenderade sättet att **stream html to pdf**. + +## Vad du kan utforska härnäst + +- **HTML to PDF Python**‑bibliotek som stödjer CSS3 och JavaScript (t.ex. `WeasyPrint`, `pdfkit`). +- Lägg till lösenordsskydd eller kryptering till den genererade PDF‑filen via ytterligare `PdfSaveOptions`‑inställningar. +- Parallellisera flera konverteringar i ett kö‑system (Celery, RabbitMQ) samtidigt som minnesanvändningen hålls låg. + +Känn dig fri att experimentera med olika HTML‑källor, sidstorlekar och PDF‑metadata. Streaming gör det möjligt att hantera ännu större dokument utan att offra prestanda. Lycka till med kodandet! + +## Vad bör du lära dig härnäst? + +Följande handledningar täcker närliggande ämnen som bygger på teknikerna som demonstrerats i den här guiden. Varje resurs innehåller kompletta fungerande kodexempel med steg‑för‑steg‑förklaringar för att hjälpa dig bemästra ytterligare API‑funktioner och utforska alternativa implementationsmetoder i dina egna projekt. + +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Create Fixed Thread Pool for Parallel HTML to PDF Conversion](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [How to Enable JavaScript in Aspose HTML – Load HTML & Get Text](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/swedish/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..5f4d72793 --- /dev/null +++ b/html/swedish/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,255 @@ +--- +category: general +date: 2026-08-22 +description: Hur man exporterar länkar från HTML och konverterar dem till en markdown‑fil, + inklusive stycken. Steg‑för‑steg‑guide för HTML‑till‑markdown‑konvertering. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: sv +lastmod: 2026-08-22 +og_description: Hur man exporterar länkar från ett HTML‑dokument och konverterar det + till en markdown‑fil, inklusive stycken. Följ den här kompletta handledningen för + pålitlig HTML‑till‑markdown‑konvertering. +og_image_alt: How to export links while converting HTML to Markdown +og_title: Hur man exporterar länkar när man konverterar HTML till Markdown – steg‑för‑steg‑guide +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: Hur man exporterar länkar när man konverterar HTML till Markdown +url: /sv/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur man exporterar länkar när man konverterar HTML till Markdown + +Om du behöver **how to export links** från en HTML‑sida och omvandla resultatet till en ren **html to markdown file**, visar den här guiden de exakta stegen. Du kommer också att upptäcka **how to extract paragraphs** så att markdown‑utdata innehåller huvudinnehållet du bryr dig om. I slutet av handledningen kan du besvara frågan “**how to convert html** to markdown” med ett färdigt skript. + +Att exportera länkar och extrahera stycken är vanliga uppgifter när du migrerar webbcontent till statiska webbplatser, dokumentationsportaler eller headless CMS‑back‑ends. Metoden nedan fungerar med GroupDocs Conversion SDK för Python, men koncepten gäller för alla bibliotek som låter dig konfigurera exportfunktioner. + +--- + +## Vad du behöver + +- Python 3.9 eller nyare +- `groupdocs-conversion`‑paketet (installera med `pip install groupdocs-conversion`) +- En HTML‑fil du vill bearbeta (t.ex. `input.html`) +- Grundläggande kunskap om Python‑skriptning + +--- + +## Hur man exporterar länkar med HTML‑till‑Markdown‑konvertering + +Det första stora steget är att konfigurera konverteringen så att endast de önskade funktionerna—länkar och stycken—skrivs till **html to markdown file**. SDK:n låter dig ange en bitmask av `MarkdownFeature`‑värden; vi kombinerar `LINKS` och `PARAGRAPHS` för att hålla utdata fokuserad. + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### Varför detta fungerar + +- **`HTMLDocument`** analyserar den ursprungliga filen och bygger ett DOM‑träd som konverteraren kan gå igenom. +- **`MarkdownSaveOptions`** ger dig fin‑granulär kontroll över vad SDK:n skriver. Att sätta `features` till `LINKS | PARAGRAPHS` instruerar motorn att ignorera bilder, tabeller eller skript, vilket minskar brus i den slutliga **html to markdown file**. +- **`Converter.convert`** utför det tunga arbetet. Den respekterar funktionsmasken, extraherar ankartaggar (``) och stycketaggar (`

`), och skriver dem med standard‑Markdown‑syntax. + +--- + +## Hur man konverterar HTML till Markdown med fullständigt innehåll (valfritt) + +Om du senare bestämmer dig för att du behöver hela sidan—inte bara länkar och stycken—justera helt enkelt funktionsmasken: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +Att köra samma konvertering nu producerar en komplett **html to markdown file** som speglar den ursprungliga layouten. Detta demonstrerar **how to convert html** på ett flexibelt sätt: du styr utdata genom att växla funktionsflaggor. + +--- + +## Hur man extraherar endast stycken + +Ibland bryr du dig bara om den textuella kroppen i en artikel, inte om hyperlänkarna. Du kan isolera stycken genom att sätta masken till enbart `PARAGRAPHS`: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +Den resulterande markdown‑filen kommer att innehålla ren, rad‑bryten text utan någon länk‑markup. Detta kodsnutt svarar på frågan **how to extract paragraphs** från en HTML‑källa. + +--- + +## Vanliga fallgropar och hur man undviker dem + +| Problem | Varför det händer | Lösning | +|-------|----------------|-----| +| Tom utdatafil | Käll‑HTML‑filen innehåller inga ``‑ eller `

`‑taggar som matchar de valda funktionerna. | Verifiera HTML‑strukturen eller bredda funktionsmasken (t.ex. inkludera `HEADINGS`). | +| Kodningsproblem | HTML‑filen använder en teckenkodning som inte är UTF‑8 och SDK:n läser den felaktigt. | Skicka en explicit kodning till `HTMLDocument`, t.ex. `HTMLDocument(path, encoding="iso-8859-1")`. | +| Skriver över befintlig markdown | Att köra skriptet flera gånger ersätter den tidigare filen. | Lägg till en tidsstämpel i utdatafilens namn eller kontrollera `os.path.exists` innan du skriver. | + +**Pro tip:** När du bearbetar många filer i en mapp, omslut konverteringslogiken i en loop och logga varje resultat. Detta ger dig en tydlig revisionsspår och gör det enkelt att återuppta efter ett fel. + +--- + +## Fullt skript du kan kopiera‑och‑klistra + +Nedan är en fristående Python‑fil (`convert_links_paragraphs.py`) som du kan köra direkt. Den innehåller argument‑parsing så att du kan ange in‑ och utdata‑sökvägar utan att redigera koden. + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**Hur man kör** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +Kommandot ovan demonstrerar **how to export links** och **how to extract paragraphs** i ett enda anrop. Utelämna `--links` eller `--paragraphs` för att anpassa utdata efter dina behov. + +--- + +## Verifiering – hur utdata ser ut + +Givet följande enkla HTML (`input.html`): + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +Att köra skriptet med båda flaggorna producerar `links_and_paragraphs.md`: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +Du kan se att endast de två styckena och hyperlänken finns—precis vad du bad om när du sökte **how to export links** medan du utförde **convert html to markdown**. + +--- + +## Nästa steg och relaterade ämnen + +- **How to convert html to markdown** med bilder: lägg till `MarkdownFeature.IMAGES` till masken. +- **How to extract paragraphs** och sedan efter‑processa + +## Vad bör du lära dig härnäst? + +Följande handledningar täcker närbesläktade ämnen som bygger på teknikerna som demonstreras i den här guiden. Varje resurs innehåller kompletta fungerande kodexempel med steg‑för‑steg‑förklaringar för att hjälpa dig bemästra ytterligare API‑funktioner och utforska alternativa implementationsmetoder i dina egna projekt. + +- [How to Set Offset When Converting HTML to Markdown in Java](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown to HTML Java - Convert with Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [Convert HTML to Markdown – Complete C# Guide](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/swedish/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..5df74a544 --- /dev/null +++ b/html/swedish/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,280 @@ +--- +category: general +date: 2026-08-22 +description: Hur man laddar HTML med Aspose.HTML i Python – begränsa resursdjupet + och förbereda dokumentet för konvertering eller redigering. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: sv +lastmod: 2026-08-22 +og_description: Hur man laddar HTML med Aspose.HTML i Python, ställer in resurshanteringsdjup + och gör dokumentet redo för konvertering eller redigering. +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: Hur man laddar HTML med Aspose.HTML – Python‑guide +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: Hur man laddar HTML med Aspose.HTML i Python +url: /sv/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur man laddar HTML med Aspose.HTML i Python + +Om du snabbt och säkert behöver **how to load html** i ett Python‑projekt, visar den här guiden de exakta stegen. Efter de två första meningarna kommer du att veta hur du konfigurerar resurshantering, laddar filen och håller processen redo för vidare **HTML conversion** eller redigering. + +Att ladda stora eller komplexa sidor får ofta naiva parsers att misslyckas eftersom externa resurser (bilder, skript, CSS) kan orsaka djup rekursion eller nätverksfördröjningar. Denna handledning täcker ett robust mönster med **Aspose.HTML for Python**, demonstrerar **HTMLDocument class**, och förklarar varför inställningen **max_handling_depth** är viktig. + +Du kommer att gå igenom: + +* Installera Aspose.HTML‑paketet +* Skapa en `ResourceHandlingOptions`‑instans och begränsa djupet +* Använda `HTMLDocument`‑klassen för att ladda en sida +* Förbereda dokumentet för konvertering till PDF, PNG eller vidare manipulation + +Ingen tidigare erfarenhet av Aspose.HTML krävs, bara grundläggande kunskaper i Python. + +--- + +## Hur man laddar HTML med Aspose.HTML i Python + +Kärnan i lösningen är ett trestegsmönster som kombinerar **ResourceHandlingOptions** med **HTMLDocument class**. Att begränsa hanteringsdjupet förhindrar okontrollerade nätverksanrop när en sida refererar till många nästlade resurser. + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### Varför detta fungerar + +* **`ResourceHandlingOptions`** talar om för parsern hur många nivåer av externa resurser den får följa. Att sätta `max_handling_depth = 3` stoppar laddaren efter tre hopp, vilket är tillräckligt för de flesta webbplatser men skyddar mot oändliga slingor. +* **`HTMLDocument`** läser filen, tillämpar alternativen och bygger ett DOM‑träd i minnet som du kan fråga, modifiera eller rendera. +* Det valfria konverteringssnutten demonstrerar hur det laddade dokumentet integreras med **HTML conversion**‑funktioner, såsom att spara till PDF. + +--- + +## Förstå ResourceHandlingOptions + +`ResourceHandlingOptions` är en del av **Aspose.HTML for Python** och ger dig fin‑granulerad kontroll över nätverksaktivitet. + +| Egenskap | Syfte | Typiskt värde | +|-------------------------|--------------------------------------------------|---------------| +| `max_handling_depth` | Maximalt rekursionsdjup för länkade resurser | `3` (default) | +| `allow_external_resources` | Om externa CSS-, JS- och bildresurser ska hämtas | `True` | +| `timeout` | Nätverkstimeout per begäran (sekunder) | `30` | + +**Praktiskt tips:** Om du vet att målsidan bara refererar till lokala tillgångar, sätt `allow_external_resources = False` för att snabba upp laddningen och undvika onödiga HTTP‑anrop. + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## Använda HTMLDocument‑klassen + +**HTMLDocument class** är ingångspunkten för alla Aspose.HTML‑operationer. När den har instansierats kan du: + +* Komma åt DOM via `doc.root` +* Fråga element med CSS‑selektorer (`doc.query_selector_all("img")`) +* Rendera sidan till rasterformat (`doc.save("page.png")`) +* Konvertera till PDF (`doc.save("page.pdf", PDFSaveOptions())`) + +Nedan är ett kort kodexempel som extraherar alla bild‑`src`‑attribut efter laddning: + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**Varför du kan behöva detta:** När du utför **HTML conversion** måste du ofta justera eller ersätta bild‑URL:er innan rendering till ett annat format. Att komma åt DOM direkt ger dig den flexibiliteten. + +--- + +## Nästa steg efter att ha laddat HTML + +Nu när dokumentet finns i minnet kan du välja mellan flera vanliga arbetsflöden: + +1. **Konvertera till PDF** – Perfekt för arkivering eller utskrift. +2. **Rendera till PNG/JPEG** – Användbart för miniatyrer eller visuella förhandsvisningar. +3. **Redigera DOM** – Infoga, ta bort eller modifiera element innan sparning. +4. **Extrahera text** – Hämta ren text för indexering eller analys. + +### Exempel: Konvertera till PDF med anpassad sidstorlek + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**Förväntat resultat:** En fil med namnet `big_page.pdf` visas i arbetskatalogen och innehåller den renderade HTML‑en med alla tillåtna resurser tillämpade. Om du sätter `max_handling_depth` till 3, inbäddas endast resurser upp till tre nivåer djup, vilket håller PDF‑filens storlek rimlig. + +--- + +## Vanliga fallgropar och hur man undviker dem + +| Symtom | Orsak | Lösning | +|--------------------------------------|----------------------------------------|---------| +| Saknade bilder i den renderade PDF‑en | `allow_external_resources` satt till `False` | Aktivera externa resurser eller bädda in bilder lokalt | +| `TimeoutError` vid laddning | Nätverkslatens överstiger `timeout` | Öka `rh_opts.timeout` eller för‑ladda resurser | +| Oväntad CSS‑stil | Länkad stylesheet inte laddad på grund av djupbegränsning | Höj `max_handling_depth` eller lägg manuellt till nödvändig CSS | +| `UnicodeDecodeError` på icke‑UTF8‑filer| HTML‑filen använder en annan kodning | Skicka `encoding="windows-1252"` när du skapar `HTMLDocument` | + +--- + +## Fullständigt, körbart exempel + +Nedan är ett fristående skript som du kan kopiera och klistra in i en fil med namnet `load_html_demo.py`. Det innehåller installationsinstruktioner, felhantering och ett sista verifieringssteg. + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +**Kör skriptet** + +```bash +python load_html_demo.py +``` + +Du bör se konsolutdata som bekräftar laddningen, en lista med bild‑URL:er och ett framgångsmeddelande för PDF‑konverteringen. Den genererade `big_page.pdf` kommer att spegla HTML‑innehållet begränsat av den konfigurerade **max_handling_depth**. + +--- + +## Slutsats + +I den här handledningen gick vi igenom **how to load html** med **Aspose.HTML for Python**, konfigurerade **ResourceHandlingOptions** för att styra `max_handling_depth` och demonstrerade praktiska efter‑laddningsåtgärder såsom bildextraktion och PDF‑konvertering. Genom att följa stegen har du nu en pålitlig grund för alla **HTML conversion**‑arbetsflöden, oavsett om du bygger en web‑scraper, en dokumentarkiveringstjänst eller en dynamisk rapportgenerator. + +**Nästa steg** + +* Experimentera med olika `max_handling_depth`‑värden för att balansera fullständighet mot prestanda. +* Försök konvertera dokumentet till + +## Vad bör du lära dig härnäst? + +Följande handledningar täcker närbesläktade ämnen som bygger på de tekniker som demonstrerats i den här guiden. Varje resurs innehåller kompletta fungerande kodexempel med steg‑för‑steg‑förklaringar för att hjälpa dig bemästra ytterligare API‑funktioner och utforska alternativa implementationsmetoder i dina egna projekt. + +- [Hur man parsar HTML Java – Ladda, fråga & räkna element](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [Hur man redigerar HTML-dokumentträd i Aspose.HTML för Java](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [Hantera dokumentladdningshändelser i Aspose.HTML för Java](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/thai/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..5c71638ea --- /dev/null +++ b/html/thai/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,190 @@ +--- +category: general +date: 2026-08-22 +description: วิธีแปลง HTML เป็น PDF ใน Python ด้วย Aspose.HTML – เรียนรู้การสร้าง + PDF จากไฟล์ HTML, สร้าง PDF จากโค้ด HTML, และบันทึก HTML เป็น PDF ด้วย Python อย่างรวดเร็ว +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: th +lastmod: 2026-08-22 +og_description: วิธีแปลง HTML เป็น PDF ด้วย Python และ Aspose.HTML บทเรียนนี้จะแสดงวิธีสร้าง + PDF จากไฟล์ HTML, สร้าง PDF จากโค้ด HTML, และบันทึก HTML เป็น PDF ด้วย Python. +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: วิธีแปลง HTML เป็น PDF ด้วย Python – คู่มือขั้นตอนโดยละเอียด +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: วิธีแปลง HTML เป็น PDF ใน Python ด้วย Aspose.HTML +url: /th/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีแปลง HTML เป็น PDF ด้วย Python และ Aspose.HTML + +หากคุณต้องการ **how to convert html to pdf** อย่างรวดเร็ว คู่มือนี้จะแสดงวิธีแก้ไขที่สมบูรณ์และพร้อมใช้งาน คุณจะได้เห็นวิธี **create pdf from html file**, **generate pdf from html code**, และ **save html as pdf python** ด้วย API ที่เรียบง่ายของ Aspose.HTML + +เราจะเดินผ่านทุกขั้นตอน อธิบายว่าทำไมแต่ละบรรทัดจึงสำคัญ และครอบคลุมข้อผิดพลาดทั่วไป เพื่อให้คุณสามารถปรับโค้ดให้เข้ากับโครงการใดก็ได้ ไม่ต้องใช้เครื่องมือภายนอก เพียงไม่กี่บรรทัดของ Python. + +## ข้อกำหนดเบื้องต้น + +* ติดตั้ง Python 3.8 หรือใหม่กว่า +* มีลิขสิทธิ์ Aspose.HTML for Python ที่ใช้งานได้ (หรือคีย์ทดลองฟรี) +* ติดตั้งแพคเกจ `aspose.html`: + +```bash +pip install aspose-html +``` + +การมีสิ่งเหล่านี้พร้อมจะทำให้การแปลงทำงานได้โดยไม่มีข้อผิดพลาดระหว่างรัน. + +## ขั้นตอนที่ 1: โหลดเอกสาร HTML (create pdf from html file) + +งานแรกคือการอ่านไฟล์ HTML ต้นฉบับ Aspose.HTML แสดงเอกสารด้วยคลาส `HTMLDocument` ซึ่งทำหน้าที่นามธรรมการทำ I/O ของไฟล์ การดึงข้อมูลจากเครือข่าย และการวิเคราะห์ DOM + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*ทำไมจึงสำคัญ:* +`HTMLDocument` โหลด HTML, แก้ไขเส้นทางของทรัพยากรแบบ relative (รูปภาพ, CSS, ฟอนต์) และสร้าง DOM ที่ตัวแปลงสามารถเรนเดอร์ได้อย่างแม่นยำ หากข้ามขั้นตอนนี้หรือใช้สตริงธรรมดา จะทำให้การแก้ไขทรัพยากรเหล่านั้นสูญหาย + +## ขั้นตอนที่ 2: ตั้งค่าตัวเลือกการบันทึก PDF (save html as pdf python) + +Aspose.HTML ให้คุณปรับแต่งผลลัพธ์ PDF อย่างละเอียดผ่าน `PdfSaveOptions` การตั้งค่าเริ่มต้นจะสร้าง PDF คุณภาพสูงอยู่แล้ว แต่คุณสามารถปรับขนาดหน้า, การบีบอัด, หรือเมตาดาต้าได้ตามต้องการ + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*ทำไมจึงสำคัญ:* +แม้คุณจะใช้ค่าตั้งต้น การสร้างอ็อบเจ็กต์ตัวเลือกทำให้โค้ดขยายได้ การเปลี่ยนแปลงในอนาคต—เช่นการฝังรหัสผ่าน PDF—สามารถเพิ่มได้โดยไม่ต้องปรับโครงสร้างสคริปต์ + +## ขั้นตอนที่ 3: ทำการแปลง (convert html to pdf python) + +เมธอด `Converter.convert` เชื่อมต่อเอกสาร HTML กับตัวเลือก PDF เข้าด้วยกัน และเขียนผลลัพธ์ไปยังเส้นทางไฟล์ที่คุณระบุ + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*ทำไมจึงสำคัญ:* +`Converter.convert` ทำงานของเอนจินการเรนเดอร์ แปลง HTML/CSS เป็นเวกเตอร์ PDF มันจัดการกับเลย์เอาต์ซับซ้อน, ฟอนต์ฝัง, และกราฟิก SVG โดยอัตโนมัติ—สิ่งที่ไลบรารีแบบแมนนวลมักพลาด + +### ผลลัพธ์ที่คาดหวัง + +การรันสคริปต์จะสร้างไฟล์ `sample.pdf` ในไดเรกทอรีเดียวกัน เปิดด้วยโปรแกรมดู PDF ใดก็ได้ คุณควรเห็นการแสดงผลที่ตรงกับ `sample.html` รวมถึงสไตล์, รูปภาพ, และการแบ่งหน้า + +## ความแปรผันทั่วไปและกรณีขอบ + +| สถานการณ์ | วิธีการจัดการ | +|-----------|-----------------| +| **HTML เป็นสตริง ไม่ใช่ไฟล์** | ใช้ `HTMLDocument.from_string(html_string)` แทนการโหลดจากพาธ | +| **ต้องการ PDF ที่มีการป้องกันด้วยรหัสผ่าน** | ตั้งค่า `pdf_options.encryption.password = "yourPassword"` ก่อนทำการแปลง | +| **ไฟล์ HTML ขนาดใหญ่ทำให้ใช้หน่วยความจำมาก** | เปิดโหมดสตรีมมิ่ง: `pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream` | +| **ฟอนต์ที่กำหนดเองหายไป** | ลงทะเบียนโฟลเดอร์ฟอนต์: `pdf_options.fonts_folder = "path/to/fonts"` | + +การแปรผันเหล่านี้แสดงให้เห็นถึงความยืดหยุ่นของ Aspose.HTML API ในขณะที่ยังคงเวิร์กโฟลว์หลักเหมือนเดิม. + +## สคริปต์เต็ม (generate pdf from html code) + +ด้านล่างเป็นโปรแกรมที่สมบูรณ์และสามารถรันได้ซึ่งรวมทุกขั้นตอนไว้ด้วยกัน คัดลอกและวางลงไป แทนที่ `YOUR_DIRECTORY` ด้วยโฟลเดอร์จริง แล้วรัน + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +Run it with: + +```bash +python convert_html_to_pdf.py +``` + +คุณจะเห็นข้อความยืนยันและไฟล์ PDF จะปรากฏข้างไฟล์ HTML ต้นฉบับ + +## เคล็ดลับการแก้ปัญหา (pro tip) + +* **Missing images or CSS** – ตรวจสอบให้แน่ใจว่าไฟล์ HTML ใช้ URL แบบ absolute หรือเส้นทาง relative ถูกต้องเมื่อเทียบกับ `YOUR_DIRECTORY` +* **Unicode characters appear as squares** – ฝังฟอนต์ที่จำเป็นผ่าน `pdf_options.fonts_folder` +* **Conversion is slow** – เปิด `pdf_options.use_system_fonts = False` เพื่อหลีกเลี่ยงการสแกนแคตาล็อกฟอนต์ของระบบ + +## สรุป + +ตอนนี้คุณรู้แล้วว่า **how to convert html to pdf** ด้วย Python และ Aspose.HTML ตั้งแต่การโหลดไฟล์ HTML จนถึงการบันทึก PDF คุณภาพสูง รูปแบบเดียวกันนี้ทำให้คุณสามารถ **create pdf from html file**, **generate pdf from html code**, และ **save html as pdf python** สำหรับเวิร์กโฟลว์อัตโนมัติใด ๆ + +ต่อไปคุณอาจสำรวจ: + +* การเพิ่มลายน้ำหรือหัว/ท้ายกระดาษ (keyword: *create pdf from html file*) +* การแปลง URL สดแทนไฟล์ในเครื่อง (keyword: *convert html to pdf python*) +* การรวมตัวแปลงเข้ากับ Flask หรือ Django API เพื่อให้บริการ PDF ตามความต้องการ + +## สิ่งที่คุณควรเรียนต่อไป? + +บทแนะนำต่อไปนี้ครอบคลุมหัวข้อที่เกี่ยวข้องอย่างใกล้ชิดและต่อยอดจากเทคนิคที่แสดงในคู่มือนี้ แต่ละแหล่งข้อมูลมีตัวอย่างโค้ดทำงานเต็มรูปแบบพร้อมคำอธิบายทีละขั้นตอน เพื่อช่วยให้คุณเชี่ยวชาญฟีเจอร์ API เพิ่มเติมและสำรวจวิธีการนำไปใช้แบบอื่นในโปรเจกต์ของคุณ. + +- [Convert HTML to PDF with Aspose.HTML – Full Manipulation Guide](/html/english/) +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Convert HTML to PDF in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-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/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/thai/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..eaa26565a --- /dev/null +++ b/html/thai/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-08-22 +description: เรียนรู้วิธีสร้าง markdown จากไฟล์ HTML ด้วย Python คู่มือขั้นตอนนี้จะแสดงวิธีแปลง + HTML เป็น markdown ด้วยไลบรารีที่เชื่อถือได้ +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: th +lastmod: 2026-08-22 +og_description: วิธีสร้าง markdown จากไฟล์ HTML ด้วย Python. ปฏิบัติตามคำแนะนำนี้เพื่อแปลง + HTML เป็น markdown อย่างรวดเร็วด้วยไลบรารีที่พิสูจน์แล้ว +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: วิธีสร้าง Markdown จาก HTML ด้วย Python – คู่มือครบถ้วน +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: วิธีสร้าง Markdown จาก HTML ด้วย Python – คู่มือเต็ม +url: /th/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีสร้าง markdown จาก HTML ด้วย Python – คู่มือฉบับสมบูรณ์ + +หากคุณต้องการทราบ **วิธีสร้าง markdown** จากเนื้อหาเว็บที่มีอยู่ คุณสามารถแปลงไฟล์ HTML เป็น markdown ได้ด้วยเพียงไม่กี่บรรทัดของ Python คู่มือนี้จะพาคุณผ่านขั้นตอน **convert html to markdown** โดยใช้ **html to markdown library** ที่ทำงานบน Windows, macOS, และ Linux + +คุณจะได้เรียนรู้วิธีติดตั้งไลบรารี, โหลดเอกสาร HTML, กำหนดตัวเลือก Git‑flavored markdown, และบันทึกผลลัพธ์ลงดิสก์ เมื่อจบคู่มือคุณจะสามารถแปลง **html file to markdown** ใด ๆ ได้โดยอัตโนมัติ ซึ่งเป็นประโยชน์สำหรับ static‑site generators, pipelines ของเอกสาร, หรือโครงการย้ายเนื้อหา + +## ข้อกำหนดเบื้องต้น + +ก่อนเริ่มทำตามขั้นตอนต่อไปนี้ให้แน่ใจว่าคุณมี: + +* Python 3.8 หรือใหม่กว่า (ตรวจสอบด้วย `python --version`). +* เข้าถึงเทอร์มินัลหรือ command prompt. +* ไฟล์ HTML ที่คุณต้องการแปลง (ตัวอย่างใช้ `sample.html`). +* การเชื่อมต่ออินเทอร์เน็ตเพื่อทำการติดตั้งแพ็กเกจที่จำเป็น. + +ตัวอย่างโค้ดนี้ใช้ไลบรารี **GroupDocs.Conversion for Python** ซึ่งให้คลาส `HTMLDocument`, `MarkdownSaveOptions`, และ `Converter` ตามที่แสดงต่อไป แนวคิดเดียวกันสามารถใช้กับแพ็กเกจ **html to markdown python** อื่น ๆ เช่น `markdownify` หรือ `html2text` — ความแตกต่างเพียงแค่คำสั่ง import + +## วิธีสร้าง markdown – ขั้นตอน 1: ติดตั้งไลบรารี html to markdown สำหรับ Python + +งานแรกคือการเพิ่มไลบรารีการแปลงเข้าไปในสภาพแวดล้อมของคุณ รันคำสั่ง pip ด้านล่างในเทอร์มินัลของคุณ: + +```bash +pip install groupdocs-conversion +``` + +> **เคล็ดลับ:** ใช้ virtual environment (`python -m venv .venv`) เพื่อแยกการพึ่งพาออกจากการติดตั้ง Python ระดับระบบของคุณ + +การติดตั้งแพ็กเกจทำให้คุณเข้าถึงคลาส `HTMLDocument`, `MarkdownSaveOptions`, และ `Converter` ที่จำเป็นสำหรับกระบวนการแปลง + +## แปลง html เป็น markdown – ขั้นตอน 2: โหลดเอกสาร HTML + +หลังจากติดตั้งไลบรารีแล้ว ให้ import คลาสที่จำเป็นและสร้างอินสแตนซ์ `HTMLDocument` ที่ชี้ไปยังไฟล์ต้นทางของคุณ + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +อ็อบเจกต์ `HTMLDocument` จะอ่านไฟล์และเตรียมพร้อมสำหรับการแปลง หากไฟล์ไม่พบ ตัวสร้างจะโยน `FileNotFoundError` ดังนั้นตรวจสอบให้แน่ใจว่าเส้นทางถูกต้อง + +## ไฟล์ html ไปยัง markdown – ขั้นตอน 3: กำหนดตัวเลือก Git‑flavored markdown + +หลายโครงการนิยม Git‑flavored markdown เพราะเพิ่มการสนับสนุนตาราง, รายการทำงาน, และไวยากรณ์ขีดฆ่า ไลบรารีให้คุณเปิดใช้ preset นี้ผ่านคุณสมบัติ `git` ของ `MarkdownSaveOptions` + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +การตั้งค่า `git = True` จะบอกตัวแปลงให้สร้างไวยากรณ์ที่ GitHub, GitLab, และ Bitbucket แสดงผลได้อย่างถูกต้อง หากต้องการ markdown ธรรมดาให้ตั้งค่าเป็น `False` + +## บันทึกผลลัพธ์ markdown – ขั้นตอน 4: เขียนผลลัพธ์ด้วยไลบรารี html to markdown + +สุดท้ายเรียกเมธอด `Converter.convert` โดยส่งเอกสารต้นทาง, อ็อบเจกต์ตัวเลือก, และเส้นทางปลายทาง + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +เมื่อสคริปต์ทำงานเสร็จ `git_flavored.md` จะมีการแสดงผล markdown ของ `sample.html` คุณสามารถเปิดไฟล์นี้ในโปรแกรมแก้ไขใดก็ได้หรือส่งต่อให้ static‑site generator ได้โดยตรง + +### ผลลัพธ์ที่คาดหวัง + +สมมติว่า `sample.html` มีหัวเรื่องและย่อหน้าอย่างง่าย ผลลัพธ์ markdown ที่สร้างอาจมีลักษณะดังนี้: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +หาก HTML ต้นฉบับมีตาราง, รายการ, หรือ code block preset Git‑flavored จะคงโครงสร้างเหล่านั้นไว้โดยใช้ไวยากรณ์ markdown ที่เหมาะสม + +## ทำความเข้าใจไลบรารี html to markdown + +ไลบรารี **GroupDocs.Conversion** แยกการทำงานของการพาร์สและเรนเดอร์ออกจากคุณ ซึ่งคุณไม่ต้องจัดการด้วยตนเอง มัน: + +* รักษาการจัดรูปแบบแบบ CSS เมื่อเป็นไปได้ (เช่น ตัวหนา, ตัวเอียง). +* สร้าง markdown ที่สะอาดและอ่านง่ายโดยไม่มี HTML entities เพิ่มเติม. +* รองรับการแปลงเป็นชุด, ดังนั้นคุณสามารถวนลูปผ่านไดเรกทอรีของไฟล์ HTML ด้วยโค้ดเดียวกัน. + +หากคุณต้องการโซลูชันที่เบากว่า แพ็กเกจ `markdownify` มี API แบบฟังก์ชันเดียว: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +ทั้งสองวิธีบรรลุเป้าหมายเดียวกัน — **convert html to markdown** — แต่ตัวเลือกของ GroupDocs ให้การควบคุมรูปแบบผลลัพธ์มากกว่าและผสานรวมง่ายกับ pipelines การประมวลผลเอกสารขนาดใหญ่ + +## ปัญหาที่พบบ่อยและวิธีหลีกเลี่ยง + +| ปัญหา | สาเหตุ | วิธีแก้ | +|-------|--------|---------| +| รูปภาพหายไปใน markdown | ตัวแปลงจะใส่เฉพาะ URL ของรูปภาพเท่านั้น; ไม่ฝังไฟล์รูปภาพ. | ตรวจสอบให้แน่ใจว่าไฟล์รูปภาพเข้าถึงได้จากตำแหน่งของ markdown หรือคัดลอกไฟล์เหล่านั้นไปพร้อมกับผลลัพธ์. | +| ลิงก์สัมพันธ์เสีย | HTML อาจใช้เส้นทางสัมพันธ์ที่กลายเป็นไม่ถูกต้องหลังการแปลง. | ใช้ `md_options.base_path` (หากมี) เพื่อเขียนลิงก์ใหม่, หรือรันสคริปต์ post‑processing เพื่อปรับเส้นทาง. | +| อักขระ Unicode ถูกแปลงเป็น escape | ไลบรารีบางตัวจะแปลงอักขระที่ไม่ใช่ ASCII เป็น escape. | ตั้งค่า `md_options.encode_utf8 = True` (หรือแฟล็กที่เทียบเท่า) เพื่อรักษาอักขระให้คงเดิม. | + +การจัดการปัญหาเหล่านี้ตั้งแต่แรกจะช่วยประหยัดเวลาเมื่อคุณขยายการแปลงเป็นหลายสิบหรือหลายร้อยไฟล์ + +## ตัวอย่างเต็มที่สามารถรันได้ + +ด้านล่างเป็นสคริปต์อิสระที่คุณสามารถคัดลอก, แก้ไข, และรันได้ทันที แทนที่ `YOUR_DIRECTORY` ด้วยโฟลเดอร์จริงบนเครื่องของคุณ + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +รันสคริปต์: + +```bash +python markdown_from_html.py +``` + +คุณควรเห็นข้อความยืนยันและไฟล์ `git_flavored.md` ใหม่ที่มีเวอร์ชัน markdown ของ HTML ของคุณ + +## สรุป + +ตอนนี้คุณรู้ **วิธีสร้าง markdown** จากแหล่ง HTML ด้วย Python แล้ว คู่มือได้อธิบายการติดตั้ง **html to markdown library** ที่เชื่อถือได้, การโหลด **html file to markdown**, การกำหนดตัวเลือก **html to markdown python**, และการบันทึกผลลัพธ์ ด้วยพื้นฐานนี้คุณสามารถอัตโนมัติกระบวนการเอกสาร, ย้ายหน้าเว็บเก่า, หรือสร้างเนื้อหาสำหรับ static‑site generators + +**ขั้นตอนต่อไป** + +* สำรวจการแปลงเป็นชุดโดยวนลูปผ่านโฟลเดอร์ของไฟล์ HTML. +* ปรับแต่ง `MarkdownSaveOptions` เพื่อควบคุมรูปแบบหัวข้อ, การจัดรูปแบบรายการ, หรือการจัดการรูปภาพ. +* รวมสคริปต์นี้กับ workflow CI/CD เพื่อให้เอกสาร markdown ของคุณอัปเดตโดยอัตโนมัติ. + +ขอให้แปลงสำเร็จ! + +## สิ่งที่คุณควรเรียนต่อไป + +บทเรียนต่อไปนี้ครอบคลุมหัวข้อที่เกี่ยวข้องอย่างใกล้ชิดและต่อยอดจากเทคนิคที่แสดงในคู่มือนี้ แต่ละแหล่งรวมตัวอย่างโค้ดทำงานเต็มรูปแบบพร้อมคำอธิบายทีละขั้นตอน เพื่อช่วยคุณเชี่ยวชาญฟีเจอร์ API เพิ่มเติมและสำรวจแนวทางการทำงานทางเลือกในโครงการของคุณ + +- [แปลง HTML เป็น Markdown ใน Aspose.HTML สำหรับ Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [แปลง HTML เป็น Markdown ใน .NET ด้วย Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [แปลง markdown เป็น html – คู่มือ Java พร้อมผลลัพธ์ PDF](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/thai/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..8f9f1ccc5 --- /dev/null +++ b/html/thai/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,186 @@ +--- +category: general +date: 2026-08-22 +description: เรียนรู้วิธีสร้าง markdown จาก HTML ด้วย Python ด้วยสคริปต์สามขั้นตอนง่าย + ๆ รวมถึงตัวเลือกการแปลงและเคล็ดลับการส่งออก. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: th +lastmod: 2026-08-22 +og_description: สร้าง markdown จาก HTML ด้วย Python เพียงสามบรรทัด คู่มือนี้แสดงการแปลง + ตัวเลือกการจัดรูปแบบ และวิธีการส่งออก HTML ไปเป็น markdown อย่างมีประสิทธิภาพ +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: สร้าง Markdown จาก HTML ด้วย Python – คู่มือแบบขั้นตอนต่อขั้นตอน +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: วิธีสร้างมาร์กดาวน์จาก HTML ด้วย Python +url: /th/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีสร้าง markdown จาก HTML ด้วย Python + +หากคุณต้องการ **สร้าง markdown จาก HTML** คู่มือสั้นนี้จะแสดงวิธีทำอย่างละเอียดด้วย Python คุณจะได้เห็นสคริปต์สามขั้นตอนที่ชัดเจนซึ่งโหลดไฟล์ HTML, กำหนดค่าการส่งออก Git‑flavored Markdown, และเขียนผลลัพธ์ลงดิสก์ + +การแปลงเนื้อหาเว็บเป็น markup ที่เบานั้นเป็นงานทั่วไปเมื่อสร้างเว็บไซต์แบบสแตติก, ระบบท่อเอกสาร, หรือโน๊ตบุ๊คการวิเคราะห์ข้อมูล ในบทเรียนนี้เราจะพูดถึงวิธี **แปลง HTML เป็น markdown** พร้อมการจัดรูปแบบเพิ่มเติม, ตอบคำถาม **วิธีแปลง HTML** อย่างมีประสิทธิภาพ, และสาธิตกระบวนการ **export HTML to markdown** โดยใช้ไลบรารียอดนิยม `groupdocs-conversion`. + +## ความต้องการเบื้องต้น + +ก่อนเริ่ม, โปรดตรวจสอบว่าคุณมี: + +* ติดตั้ง Python 3.8 หรือใหม่กว่า +* แพ็กเกจ `groupdocs-conversion` (หรือไลบรารีใด ๆ ที่ให้ `HTMLDocument`, `MarkdownSaveOptions`, และ `Converter`). ติดตั้งโดยใช้: + +```bash +pip install groupdocs-conversion +``` + +* ไฟล์ HTML ที่คุณต้องการแปลง, เช่น `sample.html` ที่อยู่ในโฟลเดอร์ที่คุณควบคุม + +ไม่ต้องการการพึ่งพาระบบเพิ่มเติม และโค้ดทำงานบน Windows, macOS, และ Linux. + +## ขั้นตอนที่ 1: โหลดเอกสาร HTML ต้นฉบับ + +การดำเนินการแรกคือการสร้างอ็อบเจ็กต์ `HTMLDocument` ที่แทนไฟล์ต้นฉบับ + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**ทำไมจึงสำคัญ:** `HTMLDocument` จะทำการพาร์สไฟล์, แก้ลิงก์แบบ relative, และเตรียม DOM สำหรับการแปลง หากไม่พบไฟล์ คอนสตรัคเตอร์จะโยง `FileNotFoundError` ที่ชัดเจน เพื่อให้คุณจัดการกับอินพุตที่หายไปได้ตั้งแต่ต้น + +## ขั้นตอนที่ 2: กำหนดค่าตัวเลือกการบันทึก Markdown (Git‑flavored) + +Markdown มีหลายรูปแบบ. Git‑flavored Markdown (GFM) เพิ่มตาราง, รายการงาน, และโค้ดบล็อกที่มี fence, ซึ่งมักจำเป็นสำหรับไฟล์ README หรือหน้า GitHub + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**ทำไมจึงสำคัญ:** การเลือก `MarkdownFormatter.GIT` อย่างชัดเจนทำให้ผลลัพธ์สอดคล้องกับกฎที่ GitHub แสดงผล, ป้องกันความประหลาดใจเมื่อ markdown แสดงในรีโพซิทอรี หากคุณต้องการ Markdown ธรรมดา ให้เปลี่ยน `MarkdownFormatter.GIT` เป็น `MarkdownFormatter.DEFAULT`. + +## ขั้นตอนที่ 3: แปลงเอกสาร HTML เป็นไฟล์ Markdown + +ตอนนี้เรียกใช้เอนจินการแปลงและเขียนผลลัพธ์ไปยังเส้นทางเป้าหมาย + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**ทำไมจึงสำคัญ:** `Converter.convert` ทำงานหนัก—แปลงแท็ก HTML ให้เป็น markdown ที่สอดคล้อง, รักษาภาพ (โดยคัดลอกไปยังโฟลเดอร์ผลลัพธ์หากจำเป็น), และใช้ฟอร์แมตเตอร์ที่คุณเลือก วิธีนี้คืนค่า `None` เมื่อสำเร็จ, แต่คุณสามารถดักจับ `ConversionException` เพื่อรับรายงานข้อผิดพลาดโดยละเอียด + +### ผลลัพธ์ที่คาดหวัง + +หลังจากรันสคริปต์, `sample.md` จะมีเนื้อหาแบบประมาณนี้: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +Markdown ที่ได้จะสะท้อนโครงสร้างของ `sample.html`. ตาราง, ภาพ, และโค้ดบล็อกจะถูกแปลงตามกฎของ GFM + +## ความแปรผันทั่วไปและกรณีขอบ + +| สถานการณ์ | การปรับแต่งที่แนะนำ | +|-----------|-------------------| +| **ไฟล์ HTML ขนาดใหญ่ (>10 MB)** | เพิ่มขีดจำกัดการทำ recursion ของ Python หรือสตรีมอินพุตโดยใช้ `HTMLDocument.open_stream()` หากไลบรารีรองรับ | +| **ภาพที่อ้างอิงด้วย URL แบบเต็ม** | ตั้งค่า `md_options.embed_images = True` เพื่อฝังภาพเป็น data URI แบบ base‑64, หรือเก็บเป็นลิงก์เพื่อผลลัพธ์ที่เบากว่า | +| **คุณต้องการ Markdown ธรรมดาแทน GFM** | เปลี่ยนเป็น `md_options.formatter = MarkdownFormatter.DEFAULT`. | +| **ควรละเว้นคลาส CSS ที่กำหนดเอง** | ใช้ `md_options.ignore_css_classes = ["unwanted-class"]`. | +| **ทำงานใน pipeline CI/CD** | ห่อสคริปต์ในบล็อก `try/except` และออกด้วยสถานะไม่เป็นศูนย์เมื่อเกิดความล้มเหลว เพื่อให้ pipeline ล้มเหลวอย่างรวดเร็ว | + +### เคล็ดลับพิเศษ + +หากคุณวางแผนจะแปลงไฟล์หลายไฟล์เป็นชุด, ให้ใช้อินสแตนซ์ `MarkdownSaveOptions` เพียงอันเดียวและเปลี่ยนเส้นทางอินพุต/เอาต์พุตภายในลูปเท่านั้น วิธีนี้ลดภาระการสร้างอ็อบเจ็กต์และเร่งกระบวนการประมาณ ~15 % + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## วิธีแปลง HTML เป็น markdown ในภาษาอื่น (หมายเหตุสั้น) + +แม้ว่าบทเรียนนี้จะเน้นที่ **html to markdown python**, แนวคิดเดียวกันใช้ได้กับ Java, C#, หรือ JavaScript SDKs: สร้างอ็อบเจ็กต์เอกสาร, กำหนดค่าตัวจัดรูปแบบ markdown, และเรียกใช้คอนเวอร์เตอร์ หากคุณต้องการ **export HTML to markdown** จากสภาพแวดล้อมที่ไม่ใช่ Python, ค้นหาคลาสที่เทียบเท่า `HtmlDocument`, `MarkdownSaveOptions`, และ `Converter` ใน SDK เฉพาะภาษานั้น + +## สรุป + +ตอนนี้คุณรู้วิธี **สร้าง markdown จาก HTML** ด้วยสคริปต์ Python ที่กระชับ กระบวนการสามขั้นตอน—โหลด HTML, ตั้งค่าตัวเลือก Git‑flavored, และรันการแปลง—ครอบคลุมแกนหลักของ workflow **convert html to markdown** ใด ๆ จากนี้คุณสามารถ: + +* ผสานสคริปต์เข้ากับ static‑site generator +* อัตโนมัติการอัปเดตเอกสารใน pipeline CI +* ขยายการแปลงด้วยการประมวลผลหลังการแปลงแบบกำหนดเอง (เช่น การเขียนทับลิงก์หรือการปรับหัวข้อ) + +อย่าลังเลที่จะทดลองกับตัวเลือกรอง—**วิธีแปลง html** ด้วยฟอร์แมตเตอร์ต่าง ๆ, หรือปรับการตั้งค่า **export html to markdown** สำหรับภาพและตาราง ขอให้แปลงอย่างสนุกสนาน! + +## สิ่งที่คุณควรเรียนต่อไป? + +บทเรียนต่อไปนี้ครอบคลุมหัวข้อที่เกี่ยวข้องอย่างใกล้ชิดซึ่งต่อยอดจากเทคนิคที่แสดงในคู่มือนี้ แต่ละแหล่งข้อมูลมีตัวอย่างโค้ดทำงานครบถ้วนพร้อมคำอธิบายขั้นตอนเพื่อช่วยให้คุณเชี่ยวชาญฟีเจอร์ API เพิ่มเติมและสำรวจแนวทางการนำไปใช้แบบอื่นในโปรเจกต์ของคุณ + +- [แปลง HTML เป็น Markdown ใน Aspose.HTML สำหรับ Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [แปลง HTML เป็น Markdown ใน .NET ด้วย Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [แปลง markdown เป็น html – คู่มือ Java พร้อมผลลัพธ์ PDF](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/thai/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..dcc5df37b --- /dev/null +++ b/html/thai/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-08-22 +description: สร้าง PDF จาก SVG ด้วย Python ในเวลาไม่กี่นาที เรียนรู้วิธีแปลง SVG เป็น + PDF บันทึก SVG เป็น PDF และใช้ตัวแปลง SVG เป็น PDF ที่เชื่อถือได้ +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: th +lastmod: 2026-08-22 +og_description: สร้าง PDF จาก SVG ด้วย Python อย่างรวดเร็ว คู่มือนี้แสดงวิธีแปลง SVG + เป็น PDF ใช้ตัวแปลง SVG เป็น PDF และบันทึก SVG เป็น PDF ในสคริปต์เดียว +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: สร้าง PDF จาก SVG ด้วย Python – คู่มือทีละขั้นตอน +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: วิธีสร้าง PDF จาก SVG ด้วย Python – คู่มือครบถ้วน +url: /th/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีสร้าง PDF จาก SVG ด้วย Python – คู่มือเต็ม + +หากคุณต้องการ **สร้าง PDF จาก SVG** อย่างรวดเร็ว บทแนะนำนี้จะแสดงให้คุณเห็นขั้นตอนอย่างละเอียด เราจะอธิบายการแปลงไฟล์ SVG ไปเป็น PDF ด้วยตัวแปลง SVG‑to‑PDF ที่เป็นที่นิยม เพื่อให้คุณสามารถฝังกราฟิกเวกเตอร์ในรายงาน ใบแจ้งหนี้ หรืออี‑บุ๊คได้โดยไม่ต้องออกจากโค้ด Python ของคุณ + +คุณจะได้เรียนรู้วิธี **แปลง SVG เป็น PDF** จัดการการสเกล เก็บฟอนต์ไว้ และสุดท้าย **บันทึก SVG เป็น PDF** ด้วยสคริปต์เดียวที่ทำซ้ำได้ ไม่ต้องใช้เครื่องมือบรรทัดคำสั่งภายนอก—เพียงไม่กี่บรรทัดของ Python และไลบรารี Aspose.SVG for Python + +## Prerequisites + +ก่อนเริ่มทำงาน โปรดตรวจสอบว่าคุณมี: + +| Requirement | Reason | +|-------------|--------| +| Python 3.8+ | ไลบรารีนี้ออกแบบมาสำหรับรันไทม์ Python รุ่นใหม่ | +| `aspose.svg` package | ให้บริการ `SVGDocument`, `PdfSaveOptions` และ `Converter` ติดตั้งด้วย `pip install aspose-svg` | +| ไฟล์ SVG (`vector.svg`) | กราฟิกเวกเตอร์ต้นฉบับที่คุณต้องการแปลง | +| สิทธิ์การเขียนในโฟลเดอร์ผลลัพธ์ | จำเป็นสำหรับ **บันทึก SVG เป็น PDF** | + +คุณสามารถติดตั้งไลบรารีได้ด้วย: + +```bash +pip install aspose-svg +``` + +> **Pro tip:** ใช้ virtual environment (`python -m venv venv`) เพื่อแยกการพึ่งพาออกจากระบบ + +## Overview of the conversion process + +การแปลงประกอบด้วยสามขั้นตอนง่าย ๆ: + +1. โหลด **SVG document** จากดิสก์ +2. สร้าง **PDF save options** (คุณสามารถปรับขนาดหน้า, DPI ฯลฯ) +3. เรียก **converter** เพื่อสร้างไฟล์ PDF + +ส่วนต่อไปนี้จะแยกแต่ละขั้นตอน อธิบาย *ทำไม* โค้ดจึงเขียนเช่นนั้น และแสดงสคริปต์เต็มที่สามารถรันได้ + +## Create PDF from SVG using Aspose.SVG for Python + +หัวข้อ H2 นี้มีคีย์เวิร์ดหลัก **create pdf from svg** เพื่อตอบสนองข้อกำหนด SEO + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### Why this works + +* **`SVGDocument`** ทำการพาร์ส XML ของ SVG และสร้างการแสดงผลในหน่วยความจำที่ตัวแปลงสามารถเรนเดอร์ได้ +* **`PdfSaveOptions`** ให้คุณปรับแต่งผลลัพธ์ PDF (ขนาดหน้า, การบีบอัด, DPI) ค่าเริ่มต้นแล้วสร้าง PDF ที่แม่นยำแล้วจึงทำให้ตัวอย่างทำงานได้ทันที +* **`Converter.convert`** ทำหน้าที่หนัก: แปลงข้อมูลเวกเตอร์เป็นหน้า PDF พร้อมคงความคมชัดของเวกเตอร์ ทำให้ PDF ที่ได้คมชัดที่ระดับการซูมใด ๆ ก็ตาม + +## Convert SVG to PDF with custom page size + +หากคุณต้องการขนาดหน้าที่เฉพาะ—เช่น A4 สำหรับรายงานที่ต้องพิมพ์—ให้ปรับ `PdfSaveOptions` ดังนี้: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **Edge case:** บางไฟล์ SVG มี `viewBox` ที่ไม่ตรงกับขนาด PDF ที่ต้องการ การกำหนดค่า `page_width`/`page_height` ใหม่จะทำให้ PDF พอดีกับการออกแบบของคุณ + +## Save SVG as PDF while preserving fonts + +เมื่อ SVG ของคุณอ้างอิงฟอนต์ภายนอก ให้แน่ใจว่าฟอนต์เหล่านั้นเข้าถึงได้สำหรับตัวแปลง วางไฟล์ `.ttf` ไว้ในโฟลเดอร์เดียวกับ SVG หรือระบุโฟลเดอร์ฟอนต์แบบกำหนดเอง: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +ตัวแปลงจะฝังฟอนต์ลงใน PDF โดยตรง ทำให้การแปลง **svg file to pdf** มีผลลัพธ์ที่เหมือนกันบนเครื่องใด ๆ ก็ตาม + +## Batch conversion: svg file to pdf for many files + +บ่อยครั้งที่คุณมีโฟลเดอร์เต็มไปด้วยไฟล์ SVG ลูปต่อไปนี้แสดงตัวอย่าง **svg to pdf converter** ที่ประมวลผลไฟล์ `.svg` ทุกไฟล์ในไดเรกทอรี: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +โค้ดส่วนนี้แสดง workflow **convert svg to pdf** ที่สามารถนำไปผสานกับ CI pipelines หรือระบบสร้างรายงานอัตโนมัติได้ + +## Verify the output + +หลังจากรันสคริปต์แล้ว เปิด PDF ที่สร้างขึ้นด้วยโปรแกรมดูใดก็ได้ (Adobe Reader, Chrome หรือ Preview) คุณควรเห็น: + +* รูปร่างเวกเตอร์แสดงผลคมชัดที่ระดับการซูมใด ๆ +* ข้อความตรงกับแหล่ง SVG พร้อมฝังฟอนต์หากคุณได้จัดเตรียมไว้ +* ไม่มีอาร์ติแฟคต์แบบราสเตอร์—เพราะการแปลงยังคงรักษาข้อมูลเวกเตอร์เดิมไว้ + +หากพบฟอนต์หาย ให้ตรวจสอบว่าไฟล์ฟอนต์เข้าถึงได้และ SVG อ้างอิงฟอนต์อย่างถูกต้อง (`font-family` attribute) + +## Common pitfalls and how to avoid them + +| Symptom | Likely cause | Fix | +|---------|--------------|-----| +| หน้า PDF ว่าง | SVG มีทรัพยากรภายนอก (รูปภาพ, ฟอนต์) ไม่พบ | ให้กำหนด `fonts_folder` และตรวจสอบให้รูปภาพที่ลิงก์อยู่ในโฟลเดอร์เดียวกันหรือใช้ URL แบบเต็ม | +| ข้อความแสดงเป็นเส้นขอบ | ฟอนต์ไม่ได้ฝัง | ตั้งค่า `pdf_options.embed_fonts = True` (ค่าเริ่มต้น) และตรวจสอบว่ามีไฟล์ฟอนต์อยู่ | +| PDF มีขนาดใหญ่กว่าที่คาด | DPI สูงหรือรูปภาพไม่ได้บีบอัด | ลดค่า `pdf_options.dpi` หรือเปิดการบีบอัด: `pdf_options.compress = True` | +| มิติของ SVG ถูกตัด | `viewBox` มีขนาดใหญ่กว่าหน้ากระดาษ PDF | ปรับ `pdf_options.page_width`/`page_height` หรือสเกล SVG ผ่าน `svg_doc.set_viewport` | + +## Full end‑to‑end example + +ด้านล่างเป็นสคริปต์อิสระที่รวมการจัดการข้อผิดพลาด, การบันทึก log, และอาร์กิวเมนต์บรรทัดคำสั่งแบบเลือกได้ บันทึกเป็น `svg_to_pdf.py` แล้วรันด้วย `python svg_to_pdf.py` + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +การรันสคริปต์จะทำการ **บันทึก SVG เป็น PDF** ที่คุณสามารถนำไปฝังใน pipeline การทำงานอัตโนมัติที่ใหญ่ขึ้นได้ + +### Expected console output + + + +## What Should You Learn Next? + +บทแนะนำต่อไปนี้ครอบคลุมหัวข้อที่เกี่ยวข้องอย่างใกล้ชิดและต่อยอดจากเทคนิคที่แสดงในคู่มือนี้ แต่ละแหล่งรวมตัวอย่างโค้ดทำงานเต็มรูปแบบพร้อมคำอธิบายทีละขั้นตอน เพื่อช่วยให้คุณเชี่ยวชาญฟีเจอร์ API เพิ่มเติมและสำรวจวิธีการทำงานทางเลือกในโปรเจกต์ของคุณเอง + +- [แปลง SVG เป็น PDF ใน .NET ด้วย Aspose.HTML](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg to pdf java – สร้าง PDF จาก SVG ด้วย Aspose.HTML สำหรับ Java](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [แปลง SVG เป็น PDF ใน .NET ด้วย Aspose.HTML](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/thai/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..fcc0cf0fe --- /dev/null +++ b/html/thai/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-08-22 +description: วิธีเปิดใช้งานการสตรีมสำหรับการแปลง HTML เป็น PDF ขนาดใหญ่ใน Python เพื่อลดการใช้หน่วยความจำและเร่งการสร้างผลลัพธ์ +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: th +lastmod: 2026-08-22 +og_description: วิธีเปิดใช้งานการสตรีมสำหรับการแปลง HTML เป็น PDF ขนาดใหญ่ใน Python + เพื่อลดการใช้หน่วยความจำและเร่งการสร้างผลลัพธ์ +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: เปิดใช้งานการสตรีมสำหรับการแปลง HTML เป็น PDF ใน Python +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: วิธีเปิดใช้งานการสตรีมขณะแปลง HTML เป็น PDF ใน Python +url: /th/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีเปิดใช้งานการสตรีมเมื่อต้องแปลง HTML เป็น PDF ด้วย Python + +หากคุณต้องการ **วิธีเปิดใช้งานการสตรีม** ระหว่างการแปลง HTML‑to‑PDF ขนาดใหญ่ คู่มือนี้จะแสดงขั้นตอนที่แน่นอน โดยการเปิดใช้งานการสตรีมคุณจะหลีกเลี่ยงการโหลดเอกสารทั้งหมดเข้าสู่หน่วยความจำ ซึ่งเป็นสิ่งสำคัญเมื่อคุณ แปลง HTML เป็น PDF สำหรับไฟล์ขนาดใหญ่ + +คุณจะได้เรียนรู้วิธีเปิดใช้งานการสตรีม, แปลง HTML เป็น PDF ด้วย Python, และจัดการกับกรณีขอบเช่นงาน large HTML to PDF . โซลูชันนี้ทำงานร่วมกับไลบรารี `groupdocs-conversion` (หรือที่คล้ายกัน) ที่เป็นที่นิยม, แต่แนวคิดสามารถใช้กับตัวแปลงใด ๆ ที่รองรับการสตรีมได้ + +![Diagram showing streaming conversion from HTML to PDF using Python](streaming-diagram.png) + +## สิ่งที่คุณต้องมี + +- Python 3.9 หรือใหม่กว่า +- `groupdocs-conversion` (หรือไลบรารีใด ๆ ที่มี `PdfSaveOptions` พร้อมฟลักซ์การสตรีม) +- ไฟล์ HTML ที่คุณต้องการแปลงเป็น PDF (ตัวอย่างใช้ไฟล์ขนาดใหญ่ชื่อ `large.html`) + +การมีข้อกำหนดเหล่านี้จะทำให้โค้ดทำงานได้โดยไม่ต้องกำหนดค่าเพิ่มเติม + +## ขั้นตอนที่ 1: ติดตั้งไลบรารีการแปลง + +ขั้นแรก, ติดตั้งแพคเกจ Python ที่ให้บริการ `HTMLDocument`, `PdfSaveOptions`, และ `Converter`. ตัวเลือกที่พบบ่อยที่สุดคือ SDK **GroupDocs.Conversion**: + +```bash +pip install groupdocs-conversion +``` + +> **เคล็ดลับมืออาชีพ:** ใช้ virtual environment (`python -m venv .venv`) เพื่อแยกการพึ่งพาออกจากกัน + +## ขั้นตอนที่ 2: โหลดเอกสาร HTML ที่ต้องการแปลง + +การโหลด HTML ต้นฉบับทำได้อย่างง่ายดาย คลาส `HTMLDocument` จะอ่านไฟล์จากดิสก์และเตรียมพร้อมสำหรับการแปลง + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +อ็อบเจ็กต์ `HTMLDocument` แทนโครงสร้าง HTML ทั้งหมด, รวมถึงทรัพยากรภายนอกเช่นรูปภาพและ CSS. นี่เป็นจุดเริ่มต้นสำหรับการทำงาน **convert html to pdf** ใด ๆ + +## ขั้นตอนที่ 3: สร้าง PDF save options และเปิดใช้งานการสตรีม + +การเปิดใช้งานการสตรีมเป็นหัวใจของ **วิธีเปิดใช้งานการสตรีม**. แทนการบัฟเฟอร์ PDF ทั้งหมดในหน่วยความจำ, ตัวแปลงจะเขียนข้อมูลเป็นชิ้นส่วนโดยตรงไปยังไฟล์ผลลัพธ์. + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +เมื่อ `enable_streaming` ถูกตั้งค่าเป็น `True`, ไลบรารีจะใช้วิธีการเขียนผ่าน (write‑through) ที่ลดการใช้ RAM อย่างมาก—สำคัญสำหรับสถานการณ์ **large html to pdf**. + +## ขั้นตอนที่ 4: แปลงเอกสาร HTML เป็น PDF ด้วยตัวเลือกที่กำหนด + +ตอนนี้เรียกใช้การแปลง. เมธอด `Converter.convert` รับเอกสารต้นฉบับ, อ็อบเจ็กต์ตัวเลือก, และเส้นทางปลายทาง. + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +หลังจากการเรียกนี้เสร็จสิ้น, `large.pdf` จะมี PDF ที่เรนเดอร์แล้ว, ซึ่งสร้างขึ้นขณะสตรีมข้อมูลไปยังดิสก์. กระบวนการทั้งหมดมักเสร็จเร็วกว่าแบบไม่สตรีมเนื่องจากระบบปฏิบัติการสามารถล้างข้อมูลไปยังไฟล์ระบบเป็นขั้นตอน. + +### ผลลัพธ์ที่คาดหวัง + +การรันสคริปต์จะสร้างไฟล์ PDF ที่ขนาดตรงกับเนื้อหาใน HTML ดั้งเดิม. คุณสามารถตรวจสอบผลลัพธ์ด้วยโปรแกรมดู PDF ใดก็ได้: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## ทำไมการสตรีมจึงสำคัญสำหรับการแปลง HTML เป็น PDF ขนาดใหญ่ + +เมื่อคุณ **convert html to pdf** โดยไม่มีการสตรีม, ไลบรารีจะสร้าง PDF ทั้งหมดใน RAM ก่อนเขียนลงดิสก์. สำหรับหน้าเล็ก ๆ นั้นถือว่าโอเค, แต่งาน **large html to pdf** (เช่น รายงาน HTML ขนาด 10 MB ที่มีรูปภาพหลายรูป) อาจเกินขีดจำกัดหน่วยความจำของฟังก์ชัน serverless หรือคอนเทนเนอร์ที่มีหน่วยความจำต่ำ. + +การเปิดใช้งานการสตรีมจะแก้ปัญหา 3 ประการ: + +1. **Memory efficiency** – มีเพียงบัฟเฟอร์ขนาดเล็กที่เก็บใน RAM. +2. **Faster perceived performance** – ไฟล์ปรากฏบนดิสก์ขณะยังกำลังสร้าง, ทำให้กระบวนการต่อไปสามารถเริ่มอ่านได้เร็วขึ้น. +3. **Scalability** – คุณสามารถรันการแปลงหลายงานพร้อมกันโดยไม่ทำให้หน่วยความจำของโฮสต์หมด. + +## ข้อผิดพลาดทั่วไปและวิธีหลีกเลี่ยง + +| Symptom | Likely cause | Fix | +|---------|--------------|-----| +| `MemoryError` during conversion | ไม่ได้ตั้งค่า streaming flag หรือเวอร์ชันไลบรารีเก่าเกินไป | ตรวจสอบให้แน่ใจว่า `pdf_opts.enable_streaming = True` และอัปเกรดเป็น SDK ล่าสุด (`pip install --upgrade groupdocs-conversion`). | +| Missing images in the PDF | ไม่สามารถแก้ไขเส้นทางรูปภาพแบบ relative ได้ | ส่งค่า base directory ไปยัง `HTMLDocument` หรือฝังรูปภาพเป็น base64. | +| Output PDF is blank | ไม่พบไฟล์ HTML หรือไฟล์ไม่สามารถอ่านได้ | ตรวจสอบเส้นทาง `"YOUR_DIRECTORY/large.html"` และตรวจสอบสิทธิ์ไฟล์. | +| Conversion hangs indefinitely | แหล่งทรัพยากรภายนอกขนาดใหญ่ (fonts, CSS) ทำให้การเรนเดอร์หยุด | ดาวน์โหลดแอสเซทภายนอกล่วงหน้าหรือใช้ headless browser เพื่อฝังลงในไฟล์. | + +### กรณีขอบ: แปลง HTML จากสตริง + +หากเนื้อหา HTML ของคุณอยู่ในหน่วยความจำแทนไฟล์, คุณยังคงสามารถ **วิธีเปิดใช้งานการสตรีม** ได้โดยการห่อสตริงในคอนสตรัคเตอร์ `HTMLDocument` ที่รับ HTML ดิบ: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +พฤติกรรมการสตรีมยังคงเหมือนเดิมเนื่องจาก SDK เขียน PDF อย่างต่อเนื่อง. + +## สคริปต์เต็มที่คุณสามารถคัดลอกและวางได้ + +ด้านล่างเป็นตัวอย่างที่สมบูรณ์พร้อมรันที่รวมทุกขั้นตอนที่อธิบายไว้. แทนที่ `YOUR_DIRECTORY` ด้วยเส้นทางจริงบนเครื่องของคุณ. + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +การรัน `python full_example.py` จะสร้าง `large.pdf` ด้วยวิธีการสตรีม. + +## สรุป + +- ตอนนี้คุณรู้แล้วว่า **วิธีเปิดใช้งานการสตรีม** สำหรับการแปลง HTML‑to‑PDF ด้วย Python. +- สคริปต์นี้แสดงขั้นตอนเต็มของ **convert html to pdf** พร้อมการจัดการงาน **large html to pdf** อย่างมีประสิทธิภาพ. +- โดยตั้งค่า `PdfSaveOptions.enable_streaming = True`, ตัวแปลงจะเขียนผลลัพธ์อย่างต่อเนื่อง, ซึ่งเป็นวิธีที่แนะนำสำหรับ **stream html to pdf**. + +## สิ่งที่ควรสำรวจต่อไป + +- ไลบรารี **HTML to PDF Python** ที่รองรับ CSS3 และ JavaScript (เช่น `WeasyPrint`, `pdfkit`). +- การเพิ่มการป้องกันด้วยรหัสผ่านหรือการเข้ารหัสให้กับ PDF ที่สร้างขึ้นผ่านการตั้งค่า `PdfSaveOptions` เพิ่มเติม. +- การทำงานแบบขนานหลายการแปลงในระบบคิว (Celery, RabbitMQ) พร้อมรักษาการใช้หน่วยความจำให้ต่ำ. + +คุณสามารถทดลองกับแหล่ง HTML ต่าง ๆ, ขนาดหน้า, และเมตาดาต้า PDF ได้ตามต้องการ. การสตรีมทำให้คุณจัดการเอกสารที่ใหญ่ขึ้นได้โดยไม่เสียประสิทธิภาพ. ขอให้สนุกกับการเขียนโค้ด! + +## คุณควรเรียนรู้อะไรต่อไป? + +บทเรียนต่อไปนี้ครอบคลุมหัวข้อที่เกี่ยวข้องอย่างใกล้ชิดซึ่งต่อยอดจากเทคนิคที่แสดงในคู่มือนี้. แต่ละแหล่งข้อมูลมีตัวอย่างโค้ดทำงานครบถ้วนพร้อมคำอธิบายทีละขั้นตอนเพื่อช่วยให้คุณเชี่ยวชาญฟีเจอร์ API เพิ่มเติมและสำรวจแนวทางการนำไปใช้แบบอื่นในโปรเจกต์ของคุณ. + +- [วิธีแปลง HTML เป็น PDF ด้วย Java – ใช้ Aspose.HTML สำหรับ Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [สร้าง Fixed Thread Pool สำหรับการแปลง HTML เป็น PDF แบบขนาน](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [วิธีเปิดใช้งาน JavaScript ใน Aspose HTML – โหลด HTML และดึงข้อความ](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/thai/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..7437cf95e --- /dev/null +++ b/html/thai/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-08-22 +description: วิธีส่งออกลิงก์จาก HTML และแปลงเป็นไฟล์ markdown รวมถึงย่อหน้า คู่มือขั้นตอนต่อขั้นตอนสำหรับการแปลง + HTML เป็น markdown +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: th +lastmod: 2026-08-22 +og_description: วิธีส่งออกลิงก์จากเอกสาร HTML และแปลงเป็นไฟล์ markdown รวมถึงย่อหน้า + ทำตามบทแนะนำฉบับเต็มนี้เพื่อการแปลง HTML เป็น markdown ที่เชื่อถือได้ +og_image_alt: How to export links while converting HTML to Markdown +og_title: วิธีส่งออกลิงก์ขณะแปลง HTML เป็น Markdown – คู่มือทีละขั้นตอน +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: วิธีส่งออกลิงก์ขณะแปลง HTML เป็น Markdown +url: /th/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีส่งออกลิงก์ขณะแปลง HTML เป็น Markdown + +หากคุณต้องการ **how to export links** จากหน้า HTML และแปลงผลลัพธ์เป็น **ไฟล์ html to markdown** ที่สะอาด คำแนะนำนี้จะแสดงขั้นตอนที่แน่นอน คุณยังจะค้นพบ **how to extract paragraphs** เพื่อให้ผลลัพธ์ markdown มีเนื้อหาหลักที่คุณต้องการ ในตอนท้ายของบทเรียนคุณจะสามารถตอบคำถาม “**how to convert html** to markdown” ด้วยสคริปต์ที่พร้อมใช้งาน + +การส่งออกลิงก์และการสกัดย่อหน้าคือภารกิจทั่วไปเมื่อคุณย้ายเนื้อหาเว็บไปยังเว็บไซต์แบบสเตติก, พอร์ทัลเอกสาร, หรือแบ็กเอนด์ของ Headless CMS วิธีการด้านล่างทำงานกับ GroupDocs Conversion SDK สำหรับ Python แต่แนวคิดสามารถใช้กับไลบรารีใด ๆ ที่ให้คุณกำหนดค่าฟีเจอร์การส่งออก + +--- + +## สิ่งที่คุณต้องการ + +- Python 3.9 หรือใหม่กว่า +- แพ็กเกจ `groupdocs-conversion` (ติดตั้งด้วย `pip install groupdocs-conversion`) +- ไฟล์ HTML ที่คุณต้องการประมวลผล (เช่น `input.html`) +- ความคุ้นเคยพื้นฐานกับการเขียนสคริปต์ Python + +--- + +## วิธีส่งออกลิงก์ด้วยการแปลง HTML เป็น Markdown + +ขั้นตอนสำคัญแรกคือการกำหนดค่าการแปลงเพื่อให้เฉพาะฟีเจอร์ที่ต้องการ—ลิงก์และย่อหน้า—เท่านั้นที่ถูกเขียนลงใน **html to markdown file** SDK ให้คุณตั้งค่า bitmask ของค่า `MarkdownFeature`; เราเชื่อม `LINKS` และ `PARAGRAPHS` เพื่อให้ผลลัพธ์มุ่งเน้น + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### ทำไมวิธีนี้ถึงได้ผล + +- **`HTMLDocument`** ทำการพาร์สไฟล์ต้นฉบับและสร้าง DOM ที่ตัวแปลงสามารถเดินผ่านได้. +- **`MarkdownSaveOptions`** ให้คุณควบคุมอย่างละเอียดว่าตัว SDK จะเขียนอะไร การตั้งค่า `features` เป็น `LINKS | PARAGRAPHS` บอกให้เอนจินละเว้นรูปภาพ, ตาราง, หรือสคริปต์ ซึ่งช่วยลดสัญญาณรบกวนใน **html to markdown file** สุดท้าย. +- **`Converter.convert`** ทำหน้าที่หลัก มันเคารพ mask ของฟีเจอร์, สกัดแท็ก anchor (``) และแท็ก paragraph (`

`), และเขียนโดยใช้ไวยากรณ์ Markdown มาตรฐาน. + +--- + +## วิธีแปลง HTML เป็น Markdown พร้อมเนื้อหาครบ (ทางเลือก) + +หากคุณในภายหลังตัดสินใจว่าต้องการทั้งหน้า—not เพียงลิงก์และย่อหน้า—เพียงปรับ mask ของฟีเจอร์: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +การรันการแปลงเดียวกันนี้ตอนนี้จะสร้าง **html to markdown file** ที่สมบูรณ์ซึ่งสะท้อนโครงสร้างต้นฉบับ นี่เป็นการสาธิต **how to convert html** อย่างยืดหยุ่น: คุณควบคุมผลลัพธ์โดยสลับฟีเจอร์ฟลัก + +--- + +## วิธีสกัดย่อหน้าเท่านั้น + +บางครั้งคุณอาจสนใจเฉพาะเนื้อหาข้อความของบทความ ไม่ใช่ลิงก์ คุณสามารถแยกย่อหน้าโดยตั้ง mask เป็น `PARAGRAPHS` เพียงอย่างเดียว: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +Markdown ที่ได้จะมีข้อความที่สะอาดและตัดบรรทัดโดยไม่มีการทำเครื่องหมายลิงก์ใด ๆ ส่วนนี้ตอบคำถาม **how to extract paragraphs** จากแหล่ง HTML + +--- + +## ข้อผิดพลาดทั่วไปและวิธีหลีกเลี่ยง + +| ปัญหา | สาเหตุ | วิธีแก้ | +|-------|--------|---------| +| ไฟล์ผลลัพธ์ว่าง | HTML ต้นทางไม่มีแท็ก `` หรือ `

` ที่ตรงกับฟีเจอร์ที่เลือก | ตรวจสอบโครงสร้าง HTML หรือขยาย mask ของฟีเจอร์ (เช่น รวม `HEADINGS`). | +| ปัญหาการเข้ารหัส | HTML ใช้ charset ที่ไม่ใช่ UTF‑8 และ SDK อ่านผิด | ส่งค่า encoding อย่างชัดเจนให้ `HTMLDocument` เช่น `HTMLDocument(path, encoding="iso-8859-1")`. | +| เขียนทับ markdown ที่มีอยู่ | รันสคริปต์หลายครั้งทำให้ไฟล์เดิมถูกแทนที่ | เพิ่ม timestamp ไปยังชื่อไฟล์ผลลัพธ์หรือเช็ค `os.path.exists` ก่อนเขียน. | + +**เคล็ดลับ:** เมื่อประมวลผลหลายไฟล์ในโฟลเดอร์ ให้ห่อโลจิกการแปลงในลูปและบันทึกผลลัพธ์แต่ละไฟล์ สิ่งนี้จะให้บันทึกการตรวจสอบที่ชัดเจนและทำให้การทำงานต่อหลังจากความล้มเหลวง่ายขึ้น. + +--- + +## สคริปต์เต็มที่คุณสามารถคัดลอก‑วาง + +ด้านล่างเป็นไฟล์ Python (`convert_links_paragraphs.py`) ที่ทำงานอิสระซึ่งคุณสามารถรันได้โดยตรง มีการพาร์สอาร์กิวเมนต์เพื่อให้คุณระบุเส้นทางอินพุตและเอาต์พุตโดยไม่ต้องแก้ไขโค้ด. + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**วิธีรัน** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +คำสั่งข้างต้นแสดง **how to export links** และ **how to extract paragraphs** ในการเรียกเดียวเดียว ให้ละ `--links` หรือ `--paragraphs` เพื่อปรับผลลัพธ์ตามความต้องการของคุณ. + +--- + +## การตรวจสอบ – รูปแบบผลลัพธ์ + +โดยใช้ HTML อย่างง่ายต่อไปนี้ (`input.html`): + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +การรันสคริปต์พร้อมทั้งสอง flag จะสร้าง `links_and_paragraphs.md`: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +คุณจะเห็นว่ามีเพียงสองย่อหน้าและลิงก์เดียวเท่านั้นที่ปรากฏ—ตรงกับที่คุณต้องการเมื่อค้นหา **how to export links** ขณะทำ **convert html to markdown**. + +--- + +## ขั้นตอนต่อไปและหัวข้อที่เกี่ยวข้อง + +- **How to convert html to markdown** พร้อมรูปภาพ: เพิ่ม `MarkdownFeature.IMAGES` ไปยัง mask. +- **How to extract paragraphs** แล้วทำการ post‑process + +## คุณควรเรียนรู้อะไรต่อไป? + +บทแนะนำต่อไปนี้ครอบคลุมหัวข้อที่เกี่ยวข้องอย่างใกล้ชิดซึ่งต่อยอดจากเทคนิคที่แสดงในคู่มือนี้ แต่ละแหล่งข้อมูลมีตัวอย่างโค้ดทำงานครบถ้วนพร้อมคำอธิบายทีละขั้นตอนเพื่อช่วยคุณเชี่ยวชาญฟีเจอร์ API เพิ่มเติมและสำรวจแนวทางการทำงานทางเลือกในโครงการของคุณ. + +- [วิธีตั้งค่า Offset เมื่อแปลง HTML เป็น Markdown ใน Java](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown เป็น HTML Java - แปลงด้วย Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [แปลง HTML เป็น Markdown – คู่มือ C# ฉบับสมบูรณ์](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/thai/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..f160f72d5 --- /dev/null +++ b/html/thai/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-08-22 +description: วิธีโหลด HTML ด้วย Aspose.HTML ใน Python – จำกัดความลึกของทรัพยากรและเตรียมเอกสารให้พร้อมสำหรับการแปลงหรือแก้ไข +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: th +lastmod: 2026-08-22 +og_description: วิธีโหลด HTML ด้วย Aspose.HTML ใน Python ตั้งค่าความลึกของการจัดการทรัพยากร + และเตรียมเอกสารให้พร้อมสำหรับการแปลงหรือแก้ไข. +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: วิธีโหลด HTML ด้วย Aspose.HTML – คู่มือ Python +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: วิธีโหลด HTML ด้วย Aspose.HTML ใน Python +url: /th/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีโหลด HTML ด้วย Aspose.HTML ใน Python + +หากคุณต้องการ **วิธีโหลด html** อย่างรวดเร็วและปลอดภัยในโครงการ Python คู่มือนี้จะแสดงขั้นตอนที่ชัดเจนให้คุณ เมื่ออ่านสองประโยคแรกแล้วคุณจะรู้วิธีกำหนดค่าการจัดการทรัพยากร, โหลดไฟล์, และเตรียมกระบวนการสำหรับ **HTML conversion** หรือการแก้ไขต่อไป + +การโหลดหน้าเว็บขนาดใหญ่หรือซับซ้อนมักทำให้ตัวแยกวิเคราะห์แบบธรรมดาล้มเหลว เนื่องจากทรัพยากรภายนอก (รูปภาพ, สคริปต์, CSS) สามารถทำให้เกิดการเรียกซ้ำลึกหรือความล่าช้าของเครือข่าย คู่มือนี้ครอบคลุมรูปแบบที่มั่นคงโดยใช้ **Aspose.HTML for Python**, แสดงตัวอย่าง **HTMLDocument class**, และอธิบายเหตุผลที่การตั้งค่า **max_handling_depth** มีความสำคัญ + +คุณจะได้ทำตาม: + +* การติดตั้งแพคเกจ Aspose.HTML +* การสร้างอินสแตนซ์ `ResourceHandlingOptions` และจำกัดความลึก +* การใช้คลาส `HTMLDocument` เพื่อโหลดหน้าเว็บ +* การเตรียมเอกสารสำหรับการแปลงเป็น PDF, PNG, หรือการจัดการต่อไป + +ไม่จำเป็นต้องมีประสบการณ์กับ Aspose.HTML มาก่อน เพียงแค่มีความรู้พื้นฐานของ Python + +--- + +## วิธีโหลด HTML ด้วย Aspose.HTML ใน Python + +แกนหลักของวิธีแก้คือรูปแบบสามขั้นตอนที่ผสาน **ResourceHandlingOptions** กับ **HTMLDocument class** การจำกัดความลึกของการจัดการช่วยป้องกันการเรียกเครือข่ายที่ไม่สิ้นสุดเมื่อหน้าเว็บอ้างอิงทรัพยากรซ้อนหลายระดับ + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### ทำไมวิธีนี้ถึงได้ผล + +* **`ResourceHandlingOptions`** บอกตัวแยกวิเคราะห์ว่าจะตามระดับของทรัพยากรภายนอกได้กี่ระดับ การตั้งค่า `max_handling_depth = 3` จะหยุดการโหลดหลังจากสามขั้น ซึ่งเพียงพอสำหรับเว็บไซต์ส่วนใหญ่แต่ยังป้องกันลูปไม่สิ้นสุด +* **`HTMLDocument`** อ่านไฟล์, ใช้ตัวเลือกที่กำหนด, และสร้าง DOM ในหน่วยความจำที่คุณสามารถ query, modify, หรือ render ได้ +* ตัวอย่างการแปลงแบบเลือกใช้แสดงให้เห็นว่าเอกสารที่โหลดแล้วทำงานร่วมกับคุณลักษณะ **HTML conversion** อย่างการบันทึกเป็น PDF อย่างไร + +--- + +## ทำความเข้าใจ ResourceHandlingOptions + +`ResourceHandlingOptions` เป็นส่วนหนึ่งของ **Aspose.HTML for Python** และให้การควบคุมเครือข่ายอย่างละเอียด + +| Property | วัตถุประสงค์ | Typical value | +|-------------------------|--------------------------------------------------------|---------------| +| `max_handling_depth` | ความลึกสูงสุดของการเรียกซ้ำสำหรับทรัพยากรที่เชื่อมโยง | `3` (default) | +| `allow_external_resources` | กำหนดว่าจะดาวน์โหลด CSS, JS, รูปภาพภายนอกหรือไม่ | `True` | +| `timeout` | เวลาหมดของการเชื่อมต่อต่อคำขอ (วินาที) | `30` | + +**เคล็ดลับเชิงปฏิบัติ:** หากคุณทราบว่าหน้าเป้าหมายอ้างอิงเฉพาะ assets ภายในเท่านั้น ให้ตั้งค่า `allow_external_resources = False` เพื่อเร่งความเร็วการโหลดและหลีกเลี่ยงการเรียก HTTP ที่ไม่จำเป็น + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## การใช้ HTMLDocument class + +**HTMLDocument class** เป็นจุดเริ่มต้นสำหรับการทำงานทั้งหมดของ Aspose.HTML เมื่อสร้างอินสแตนซ์แล้วคุณสามารถ: + +* เข้าถึง DOM ผ่าน `doc.root` +* คิวรีอิลิเมนต์ด้วย CSS selector (`doc.query_selector_all("img")`) +* เรนเดอร์หน้าเป็นรูปแบบแรสเตอร์ (`doc.save("page.png")`) +* แปลงเป็น PDF (`doc.save("page.pdf", PDFSaveOptions())`) + +ด้านล่างเป็นโค้ดสั้น ๆ ที่สกัดแอตทริบิวต์ `src` ของรูปภาพทั้งหมดหลังจากโหลด: + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**ทำไมคุณอาจต้องการสิ่งนี้:** เมื่อทำ **HTML conversion** คุณมักต้องปรับหรือแทนที่ URL ของรูปภาพก่อนการเรนเดอร์เป็นรูปแบบอื่น การเข้าถึง DOM โดยตรงให้ความยืดหยุ่นนั้น + +--- + +## ขั้นตอนต่อไปหลังจากโหลด HTML + +ตอนนี้เอกสารถูกเก็บไว้ในหน่วยความจำแล้ว คุณสามารถเลือกทำงานตามกระบวนการทั่วไปต่อไปนี้: + +1. **Convert to PDF** – เหมาะสำหรับการเก็บถาวรหรือการพิมพ์ +2. **Render to PNG/JPEG** – มีประโยชน์สำหรับภาพตัวอย่างหรือพรีวิว +3. **Edit the DOM** – แทรก, ลบ, หรือแก้ไขอิลิเมนต์ก่อนบันทึก +4. **Extract text** – ดึงเนื้อหาเป็นข้อความธรรมดาเพื่อทำดัชนีหรือวิเคราะห์ + +### ตัวอย่าง: แปลงเป็น PDF ด้วยขนาดหน้าที่กำหนดเอง + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**ผลลัพธ์ที่คาดหวัง:** ไฟล์ชื่อ `big_page.pdf` จะปรากฏในไดเรกทอรีทำงาน โดยมี HTML ที่เรนเดอร์พร้อมทรัพยากรที่อนุญาตทั้งหมด หากคุณตั้งค่า `max_handling_depth` เป็น 3 จะฝังเฉพาะทรัพยากรที่ลึกไม่เกินสามระดับ ทำให้ขนาด PDF อยู่ในระดับสมเหตุสมผล + +--- + +## ข้อผิดพลาดทั่วไปและวิธีหลีกเลี่ยง + +| Symptom (อาการ) | Cause (สาเหตุ) | Fix (วิธีแก้) | +|----------------------------------------------|--------------------------------------------------|---------------| +| รูปภาพหายไปใน PDF ที่เรนเดอร์ | `allow_external_resources` ตั้งค่าเป็น `False` | เปิดใช้งาน external resources หรือฝังรูปภาพในเครื่อง | +| `TimeoutError` ระหว่างการโหลด | ความหน่วงของเครือข่ายเกิน `timeout` | เพิ่มค่า `rh_opts.timeout` หรือดาวน์โหลด assets ล่วงหน้า | +| สไตล์ CSS ไม่คาดคิด | สไตล์ชีตที่เชื่อมโยงไม่ได้โหลดเนื่องจากจำกัดความลึก | เพิ่มค่า `max_handling_depth` หรือเพิ่ม CSS ที่จำเป็นด้วยตนเอง | +| `UnicodeDecodeError` บนไฟล์ที่ไม่ใช่ UTF‑8 | ไฟล์ HTML ใช้การเข้ารหัสอื่น | ส่ง `encoding="windows-1252"` เมื่อสร้าง `HTMLDocument` | + +--- + +## ตัวอย่างเต็มที่สามารถรันได้ + +ด้านล่างเป็นสคริปต์อิสระที่คุณสามารถคัดลอกวางลงในไฟล์ชื่อ `load_html_demo.py` รวมคำแนะนำการติดตั้ง, การจัดการข้อผิดพลาด, และขั้นตอนตรวจสอบสุดท้าย + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +**การรันสคริปต์** + +```bash +python load_html_demo.py +``` + +คุณควรเห็นผลลัพธ์บนคอนโซลยืนยันการโหลด, รายการ URL ของรูปภาพ, และข้อความสำเร็จสำหรับการแปลงเป็น PDF ไฟล์ `big_page.pdf` ที่สร้างขึ้นจะสะท้อนเนื้อหา HTML ที่ถูกจำกัดโดย **max_handling_depth** ที่กำหนด + +--- + +## สรุป + +ในบทแนะนำนี้เราได้ครอบคลุม **วิธีโหลด html** ด้วย **Aspose.HTML for Python**, ตั้งค่า **ResourceHandlingOptions** เพื่อควบคุม `max_handling_depth`, และสาธิตการทำงานหลังโหลดเช่นการสกัดรูปภาพและการแปลงเป็น PDF โดยทำตามขั้นตอนเหล่านี้คุณจะมีพื้นฐานที่เชื่อถือได้สำหรับเวิร์กโฟลว์ **HTML conversion** ใด ๆ ไม่ว่าจะเป็นการสร้างเว็บ‑สคราเปอร์, บริการเก็บเอกสาร, หรือเครื่องมือสร้างรายงานแบบไดนามิก + +**ขั้นตอนต่อไป** + +* ทดลองใช้ค่าต่าง ๆ ของ `max_handling_depth` เพื่อสมดุลระหว่างความสมบูรณ์และประสิทธิภาพ +* ลองแปลงเอกสารเป็น + +--- + +## คุณควรเรียนรู้อะไรต่อไป? + +บทแนะนำต่อไปนี้ครอบคลุมหัวข้อที่เกี่ยวข้องอย่างใกล้ชิดและต่อยอดจากเทคนิคที่แสดงในคู่มือนี้ แต่ละแหล่งรวมตัวอย่างโค้ดทำงานเต็มรูปแบบพร้อมคำอธิบายทีละขั้นตอน เพื่อช่วยคุณเชี่ยวชาญฟีเจอร์ API เพิ่มเติมและสำรวจแนวทางการนำไปใช้แบบต่าง ๆ ในโครงการของคุณ + +- [วิธีแยกวิเคราะห์ HTML ด้วย Java – โหลด, คิวรีและนับองค์ประกอบ](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [วิธีแก้ไขโครงสร้างเอกสาร HTML ใน Aspose.HTML สำหรับ Java](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [จัดการเหตุการณ์การโหลดเอกสารใน Aspose.HTML สำหรับ Java](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/turkish/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..4a13e655f --- /dev/null +++ b/html/turkish/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,194 @@ +--- +category: general +date: 2026-08-22 +description: Aspose.HTML kullanarak Python'da HTML'yi PDF'ye nasıl dönüştürülür – + HTML dosyasından PDF oluşturmayı, HTML kodundan PDF üretmeyi ve HTML'yi Python'da + hızlı bir şekilde PDF olarak kaydetmeyi öğrenin. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: tr +lastmod: 2026-08-22 +og_description: Aspose.HTML ile Python’da HTML’yi PDF’ye nasıl dönüştürülür. Bu öğreticide, + HTML dosyasından PDF oluşturmayı, HTML kodundan PDF üretmeyi ve HTML’yi Python’da + PDF olarak kaydetmeyi gösteriyoruz. +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: Python'da HTML'yi PDF'ye Dönüştürme – Adım Adım Kılavuz +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: Python'da Aspose.HTML ile HTML'yi PDF'ye nasıl dönüştürülür +url: /tr/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Python ile Aspose.HTML kullanarak HTML'yi PDF'ye dönüştürme + +Eğer **how to convert html to pdf** hızlı bir şekilde yapmanız gerekiyorsa, bu kılavuz size eksiksiz, çalıştırmaya hazır bir çözüm gösterir. Aspose.HTML'in basit API'sını kullanarak **create pdf from html file**, **generate pdf from html code**, ve **save html as pdf python** nasıl yapılacağını göreceksiniz. + +Her adımı adım adım inceleyecek, her satırın neden önemli olduğunu açıklayacak ve yaygın tuzakları ele alacağız, böylece kodu herhangi bir projeye uyarlayabilirsiniz. Harici araçlar yok, sadece birkaç satır Python. + +## Önkoşullar + +* Python 3.8 ve üzeri kurulu. +* Aktif bir Aspose.HTML for Python lisansı (veya ücretsiz değerlendirme anahtarı). +* `aspose.html` paketinin kurulu olması: + +```bash +pip install aspose-html +``` + +Bunların hazır olması, dönüşümün çalışma zamanı hataları olmadan gerçekleşmesini sağlar. + +## Adım 1: HTML belgesini yükleyin (create pdf from html file) + +İlk görev, kaynak HTML'yi okumaktır. Aspose.HTML, bir belgeyi `HTMLDocument` sınıfı ile temsil eder; bu sınıf dosya I/O, ağ üzerinden alma ve DOM ayrıştırmayı soyutlar. + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*Neden önemli:* +`HTMLDocument` HTML'yi yükler, göreceli kaynakları (görseller, CSS, fontlar) çözer ve dönüştürücünün doğru bir şekilde render edebilmesi için bir DOM oluşturur. Bu adımı atlamak ya da düz bir string kullanmak, bu kaynak çözümlemelerini kaybetmenize neden olur. + +## Adım 2: PDF kaydetme seçeneklerini yapılandırın (save html as pdf python) + +Aspose.HTML, PDF çıktısını `PdfSaveOptions` aracılığıyla ince ayar yapmanıza olanak tanır. Varsayılan yapılandırma zaten yüksek kaliteli bir PDF üretir, ancak gerekirse sayfa boyutunu, sıkıştırmayı veya meta verileri ayarlayabilirsiniz. + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*Neden önemli:* +Varsayılanları korusanız bile, bir seçenek nesnesi oluşturmak kodu genişletilebilir kılar. Gelecekteki değişiklikler—örneğin bir PDF şifresi eklemek—scripti yeniden yapılandırmadan eklenebilir. + +## Adım 3: Dönüşümü gerçekleştirin (convert html to pdf python) + +`Converter.convert` yöntemi, HTML belgesini ve PDF seçeneklerini birleştirir, sonucu belirttiğiniz dosya yoluna yazar. + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*Neden önemli:* +`Converter.convert` render motorunu çalıştırır, HTML/CSS'yi PDF vektörlerine rasterleştirir. Karmaşık düzenleri, gömülü fontları ve SVG grafiklerini otomatik olarak işler—manuel kütüphanelerin sıkça kaçırdığı bir şey. + +### Beklenen çıktı + +Scripti çalıştırdığınızda aynı dizinde `sample.pdf` oluşturulur. Herhangi bir PDF görüntüleyicide açın; `sample.html`'nin stiller, görseller ve sayfa sonları dahil olmak üzere doğru bir temsilini görmelisiniz. + +## Yaygın varyasyonlar ve uç durumlar + +| Durum | Nasıl ele alınır | +|-----------|-----------------| +| **HTML bir dizedir, dosya değildir** | Bir yoldan yüklemek yerine `HTMLDocument.from_string(html_string)` kullanın. | +| **Şifre korumalı bir PDF'ye ihtiyacınız var** | Dönüşümden önce `pdf_options.encryption.password = "yourPassword"` ayarlayın. | +| **Büyük HTML dosyaları bellek baskısına neden olur** | Akış modunu etkinleştirin: `pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`. | +| **Özel fontlar eksik** | Font klasörünü kaydedin: `pdf_options.fonts_folder = "path/to/fonts"`. | + +Bu varyasyonlar, temel iş akışını aynı tutarken Aspose.HTML API'sının esnekliğini gösterir. + +## Tam script (generate pdf from html code) + +Aşağıda tüm adımları içeren eksiksiz, çalıştırılabilir program yer alıyor. Kopyalayıp yapıştırın, `YOUR_DIRECTORY`'yi gerçek bir klasörle değiştirin ve çalıştırın. + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +Şu şekilde çalıştırın: + +```bash +python convert_html_to_pdf.py +``` + +Onay mesajını göreceksiniz ve PDF, kaynak HTML'nin yanında görünecek. + +## Sorun giderme ipuçları (pro tip) + +* **Missing images or CSS** – HTML dosyasının mutlak URL'ler kullandığından veya göreceli yolların `YOUR_DIRECTORY`'ye göre doğru olduğundan emin olun. +* **Unicode characters appear as squares** – Gerekli fontları `pdf_options.fonts_folder` aracılığıyla gömün. +* **Conversion is slow** – Sistem font kataloğunu taramaktan kaçınmak için `pdf_options.use_system_fonts = False` ayarını etkinleştirin. + +## Sonuç + +Artık Python ile Aspose.HTML kullanarak **how to convert html to pdf**'yi biliyorsunuz; bir HTML dosyasını yüklemekten yüksek kaliteli bir PDF kaydetmeye kadar. Aynı desen, herhangi bir otomasyon iş akışı için **create pdf from html file**, **generate pdf from html code**, ve **save html as pdf python** yapmanıza olanak tanır. + +Sonrasında şunları keşfedebilirsiniz: + +* Filigranlar veya başlık/altbilgi ekleme (anahtar kelime: *create pdf from html file*). +* Yerel dosya yerine canlı bir URL dönüştürme (anahtar kelime: *convert html to pdf python*). +* Dönüştürücüyü Flask veya Django API'sine entegre ederek talep üzerine PDF sunma. + +Seçeneklerle denemeler yapmaktan çekinmeyin, iyi PDF üretimleri! + +## Sonra Ne Öğrenmelisiniz? + +Aşağıdaki öğreticiler, bu kılavuzda gösterilen tekniklere dayanan ve yakından ilgili konuları kapsar. Her kaynak, ek API özelliklerini öğrenmenize ve kendi projelerinizde alternatif uygulama yaklaşımlarını keşfetmenize yardımcı olmak için adım adım açıklamalar içeren eksiksiz çalışan kod örnekleri sunar. + +- [Aspose.HTML ile HTML'yi PDF'ye Dönüştürme – Tam Manipülasyon Kılavuzu](/html/english/) +- [HTML'yi PDF'ye Dönüştürme Java – Aspose.HTML for Java Kullanarak](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Aspose.HTML ile .NET'te HTML'yi PDF'ye Dönüştürme](/html/english/net/html-extensions-and-conversions/convert-html-to-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/turkish/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/turkish/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..61f557cf0 --- /dev/null +++ b/html/turkish/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-08-22 +description: Python kullanarak bir HTML dosyasından markdown oluşturmayı öğrenin. + Bu adım adım rehber, güvenilir bir kütüphane ile HTML'yi markdown’a nasıl dönüştüreceğinizi + gösterir. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: tr +lastmod: 2026-08-22 +og_description: Python kullanarak bir HTML dosyasından markdown nasıl oluşturulur. + Bu kılavuzu izleyerek kanıtlanmış bir kütüphane ile HTML'yi hızlıca markdown'a dönüştürün. +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: Python'da HTML'den markdown nasıl oluşturulur – tam rehber +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: Python'da HTML'den Markdown Nasıl Oluşturulur – Tam Rehber +url: /tr/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML'den Python ile markdown nasıl oluşturulur – tam kılavuz + +Mevcut web içeriğinden **markdown nasıl oluşturulur** bilmeniz gerekiyorsa, sadece birkaç Python satırıyla bir HTML dosyasını markdown'a dönüştürebilirsiniz. Bu öğretici, Windows, macOS ve Linux'ta çalışan özel bir **html to markdown library** kullanarak **convert html to markdown** işlemini adım adım gösterir. + +Kütüphaneyi nasıl kuracağınızı, bir HTML belgesini nasıl yükleyeceğinizi, Git‑flavored markdown seçeneklerini nasıl yapılandıracağınızı ve sonucu diske nasıl yazacağınızı öğreneceksiniz. Kılavuzun sonunda, herhangi bir **html file to markdown** dosyasını otomatik olarak dönüştürebileceksiniz; bu, static‑site generator'ları, dokümantasyon hatları veya içerik taşıma projeleri için faydalıdır. + +## Önkoşullar + +* Python 3.8 veya daha yeni bir sürüm yüklü ( `python --version` komutuyla kontrol edin). +* Bir terminal veya komut istemcisine erişim. +* Dönüştürmek istediğiniz bir HTML dosyası (örnek `sample.html` kullanır). +* Gerekli paketi kurmak için internet bağlantısı. + +Kod örneği, daha sonra gösterilen `HTMLDocument`, `MarkdownSaveOptions` ve `Converter` sınıflarını sağlayan **GroupDocs.Conversion for Python** kütüphanesini kullanır. Aynı kavramlar, `markdownify` veya `html2text` gibi diğer **html to markdown python** paketlerine de uygulanır—tek fark, import ifadeleridir. + +## Markdown nasıl oluşturulur – adım 1: html to markdown python kütüphanesini kurun + +İlk görev, dönüşüm kütüphanesini ortamınıza eklemektir. Terminalinizde aşağıdaki pip komutunu çalıştırın: + +```bash +pip install groupdocs-conversion +``` + +> **Pro ipucu:** Bağımlılıkları global Python kurulumunuzdan izole tutmak için bir sanal ortam (`python -m venv .venv`) kullanın. + +Paketi kurmak, dönüşüm süreci için gerekli `HTMLDocument`, `MarkdownSaveOptions` ve `Converter` sınıflarına erişim sağlar. + +## HTML'yi markdown'a dönüştür – adım 2: HTML belgesini yükleyin + +Kütüphane kurulduktan sonra, gerekli sınıfları içe aktarın ve kaynak dosyanıza işaret eden bir `HTMLDocument` örneği oluşturun. + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +`HTMLDocument` nesnesi dosyayı okur ve dönüşüm için hazırlar. Dosya mevcut değilse, yapıcı bir `FileNotFoundError` hatası verir; bu yüzden yolun doğru olduğundan emin olun. + +## html dosyasını markdown'a dönüştür – adım 3: Git‑flavored markdown seçeneklerini yapılandırın + +Birçok proje, tablolar, görev listeleri ve üstü çizili sözdizimi desteği eklediği için Git‑flavored markdown'ı tercih eder. Kütüphane, bu ön ayarı `MarkdownSaveOptions` üzerindeki `git` özelliği ile etkinleştirmenizi sağlar. + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +`git = True` ayarı, dönüştürücünün GitHub, GitLab ve Bitbucket'in doğru şekilde render ettiği sözdizimini üretmesini sağlar. Düz markdown istiyorsanız, bayrağı `False` bırakın. + +## Markdown çıktısını kaydet – adım 4: html to markdown kütüphanesi ile sonucu yazın + +Son olarak, `Converter.convert` metodunu çağırın ve kaynak belgeyi, seçenek nesnesini ve hedef yolu iletin. + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +Betik tamamlandığında, `git_flavored.md` dosyası `sample.html`'in markdown temsili içerir. Dosyayı herhangi bir editörde açabilir veya doğrudan bir static‑site generator'ına besleyebilirsiniz. + +### Beklenen çıktı + +`sample.html` basit bir başlık ve paragraf içerdiğini varsayarsak, oluşturulan markdown şöyle görünebilir: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +Orijinal HTML tablolar, listeler veya kod blokları içeriyorsa, Git‑flavored ön ayarı bu yapıları uygun markdown sözdizimiyle korur. + +## html to markdown kütüphanesini anlamak + +**GroupDocs.Conversion** kütüphanesi, aksi takdirde manuel olarak ele almanız gereken ayrıştırma ve render detaylarını soyutlar. Şunları yapar: + +* Mümkün olduğunda CSS‑tabanlı stilleri korur (ör. kalın, italik). +* Ek HTML varlıkları olmadan temiz, okunabilir markdown üretir. +* Toplu dönüşümü destekler, böylece aynı kodla bir dizindeki HTML dosyaları üzerinde döngü yapabilirsiniz. + +Daha hafif bir çözüm tercih ediyorsanız, `markdownify` paketi tek‑fonksiyonlu bir API sunar: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +Her iki yaklaşım da aynı son hedefe ulaşır—**convert html to markdown**—ancak GroupDocs seçeneği çıktı formatı üzerinde daha fazla kontrol sağlar ve daha büyük belge‑işleme hatlarına kolayca entegre olur. + +## Yaygın tuzaklar ve nasıl kaçınılır + +| Sorun | Neden oluşur | Çözüm | +|-------|---------------|-----| +| Markdown'da eksik görseller | Dönüştürücü yalnızca görsel URL'lerini ekler; dosyaları gömmez. | Görsel dosyalarının markdown konumundan erişilebilir olduğundan emin olun veya çıktının yanına kopyalayın. | +| Kırık göreceli bağlantılar | HTML, dönüşüm sonrası geçersiz hale gelen göreceli yollar kullanabilir. | `md_options.base_path` (varsa) kullanarak bağlantıları yeniden yazın veya yolları ayarlamak için bir post‑işleme betiği çalıştırın. | +| Unicode karakterler kaçışa uğruyor | Bazı kütüphaneler ASCII olmayan karakterleri kaçırır. | Karakterlerin bozulmaması için `md_options.encode_utf8 = True` (veya eşdeğer bayrak) ayarlayın. | + +Bu sorunları erken ele almak, dönüşümü onlarca ya da yüzlerce dosyaya ölçeklendirdiğinizde zaman tasarrufu sağlar. + +## Tam, çalıştırılabilir örnek + +Aşağıda, doğrudan kopyalayıp, değiştirip çalıştırabileceğiniz bağımsız bir betik bulunuyor. `YOUR_DIRECTORY` ifadesini makinenizdeki gerçek klasörle değiştirin. + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +Betik çalıştırın: + +```bash +python markdown_from_html.py +``` + +Bir onay mesajı ve HTML'inizin markdown sürümünü içeren yeni bir `git_flavored.md` dosyası görmelisiniz. + +## Sonuç + +Artık Python kullanarak bir HTML kaynağından **markdown nasıl oluşturulur** biliyorsunuz. Kılavuz, güvenilir bir **html to markdown library** kurmayı, bir **html file to markdown** yüklemeyi, **html to markdown python** seçeneklerini yapılandırmayı ve sonucu kaydetmeyi kapsadı. Bu temelle, dokümantasyon hatlarını otomatikleştirebilir, eski web sayfalarını taşıyabilir veya static‑site generator'ları için içerik üretebilirsiniz. + +**Sonraki adımlar** + +* HTML dosyalarının bulunduğu bir klasör üzerinde döngü yaparak toplu dönüşümü keşfedin. +* `MarkdownSaveOptions`'ı başlık stilleri, liste biçimlendirme veya görsel işleme kontrolü için özelleştirin. +* Bu betiği bir CI/CD iş akışıyla birleştirerek markdown dokümantasyonunuzu otomatik olarak güncel tutun. + +İyi dönüşümler! + +## Sonraki Öğrenmeniz Gerekenler? + +Aşağıdaki öğreticiler, bu kılavuzda gösterilen tekniklere dayanarak yakından ilgili konuları kapsar. Her kaynak, ek API özelliklerini öğrenmenize ve kendi projelerinizde alternatif uygulama yaklaşımlarını keşfetmenize yardımcı olmak için adım adım açıklamalar içeren tam çalışan kod örnekleri sunar. + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/turkish/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..b157acdca --- /dev/null +++ b/html/turkish/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,187 @@ +--- +category: general +date: 2026-08-22 +description: Python'da HTML'den markdown oluşturmayı basit üç adımlı bir betikle öğrenin. + Dönüştürme seçenekleri ve dışa aktarma ipuçları içerir. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: tr +lastmod: 2026-08-22 +og_description: Python ile HTML'den sadece üç satırda markdown oluşturun. Bu rehber, + dönüşüm, biçimlendirme seçenekleri ve HTML'yi markdown'a verimli bir şekilde nasıl + dışa aktaracağınızı gösterir. +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: Python'da HTML'den Markdown Oluşturma – Adım Adım Rehber +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: Python kullanarak HTML'den markdown nasıl oluşturulur +url: /tr/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML'den Markdown Oluşturma Python ile + +If you need to **create markdown from HTML**, this short guide shows exactly how to do it with Python. You’ll see a clear, three‑step script that loads an HTML file, configures Git‑flavored Markdown output, and writes the result to disk. + +Converting web content to lightweight markup is a common task when building static sites, documentation pipelines, or data‑analysis notebooks. In this tutorial we’ll also touch on how to **convert HTML to markdown** with optional formatting, answer the question **how to convert HTML** efficiently, and demonstrate the **export HTML to markdown** workflow using the popular `groupdocs-conversion` library. + +## Önkoşullar + +Before you start, make sure you have: + +* Python 3.8 ve üzeri kurulu. +* `groupdocs-conversion` paketi (veya `HTMLDocument`, `MarkdownSaveOptions` ve `Converter` sağlayan herhangi bir kütüphane). Şu komutla kurun: + +```bash +pip install groupdocs-conversion +``` + +* Dönüştürmek istediğiniz bir HTML dosyası, örneğin kontrol ettiğiniz bir klasörde bulunan `sample.html`. + +No additional system dependencies are required, and the code works on Windows, macOS, and Linux. + +## Adım 1: Kaynak HTML belgesini yükleyin + +The first operation is to create an `HTMLDocument` object that represents the source file. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**Neden önemli:** `HTMLDocument` dosyayı ayrıştırır, göreceli bağlantıları çözer ve dönüşüm için DOM'u hazırlar. Dosya bulunamazsa, yapıcı net bir `FileNotFoundError` hatası verir, böylece eksik girdileri erken ele alabilirsiniz. + +## Adım 2: Markdown kaydetme seçeneklerini yapılandırın (Git‑flavored) + +Markdown'ın çeşitli lehçeleri vardır. Git‑flavored Markdown (GFM), genellikle README dosyaları veya GitHub sayfaları için gerekli olan tablolar, görev listeleri ve fenced code block'lar ekler. + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**Neden önemli:** `MarkdownFormatter.GIT`'i açıkça seçerek, çıktının GitHub'ın render ettiği kurallara uymasını sağlarsınız ve markdown bir depoda gösterildiğinde sürprizlerle karşılaşmazsınız. Düz Markdown tercih ediyorsanız, `MarkdownFormatter.GIT` yerine `MarkdownFormatter.DEFAULT` kullanın. + +## Adım 3: HTML belgesini bir Markdown dosyasına dönüştürün + +Now invoke the conversion engine and write the result to the target path. + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**Neden önemli:** `Converter.convert` ağır işi üstlenir—HTML etiketlerini markdown eşdeğerlerine çevirir, görüntüleri (gerekirse çıkış klasörüne kopyalayarak) korur ve seçtiğiniz biçimlendiriciyi uygular. Metot başarılı olduğunda `None` döndürür, ancak ayrıntılı hata raporlaması için `ConversionException` yakalayabilirsiniz. + +### Beklenen çıktı + +After running the script, `sample.md` will contain something like: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +The exact markdown reflects the structure of `sample.html`. Tables, images, and code blocks will be converted according to GFM rules. + +## Yaygın varyasyonlar ve uç durumlar + +| Durum | Önerilen ayar | +|-----------|-------------------| +| **Büyük HTML dosyaları (>10 MB)** | Python yineleme limitini artırın veya kütüphane destekliyorsa `HTMLDocument.open_stream()` kullanarak girişi akış olarak işleyin. | +| **Mutlak URL'lerle referans verilen görüntüler** | `md_options.embed_images = True` olarak ayarlayarak görüntüleri base‑64 veri URI'leri olarak gömün, ya da daha hafif çıktı için bağlantı olarak tutun. | +| **GFM yerine düz Markdown'a ihtiyacınız var** | `md_options.formatter = MarkdownFormatter.DEFAULT` olarak değiştirin. | +| **Özel CSS sınıfları göz ardı edilmeli** | `md_options.ignore_css_classes = ["unwanted-class"]` kullanın. | +| **CI/CD hattında çalıştırma** | Betik bir `try/except` bloğuna sarın ve başarısızlıkta sıfır olmayan bir durum kodu ile çıkın, böylece pipeline hızlıca başarısız olur. | + +### Pro ipucu + +If you plan to convert many files in a batch, reuse a single `MarkdownSaveOptions` instance and only change the input/output paths inside a loop. This reduces object‑creation overhead and speeds up the process by ~15 %. + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## HTML'yi markdown'a diğer dillerde nasıl dönüştürürsünüz (kısa not) + +While this tutorial focuses on **html to markdown python**, the same concepts apply to Java, C#, or JavaScript SDKs: create a document object, configure a markdown formatter, and invoke the converter. If you ever need to **export HTML to markdown** from a non‑Python environment, look for the equivalent `HtmlDocument`, `MarkdownSaveOptions`, and `Converter` classes in the language‑specific SDK. + +## Sonuç + +You now know how to **create markdown from HTML** with a concise Python script. The three‑step flow—load the HTML, set Git‑flavored options, and run the conversion—covers the core of any **convert html to markdown** workflow. From here you can: + +* Betiği statik site oluşturucularına entegre edin. +* CI hatlarında dokümantasyon güncellemelerini otomatikleştirin. +* Dönüşümü özel son‑işlemelerle genişletin (ör. bağlantı yeniden yazımları veya başlık ayarlamaları). + +Feel free to experiment with the secondary options—**how to convert html** with different formatters, or tweaking **export html to markdown** settings for images and tables. Happy converting! + +## Sonra Ne Öğrenmelisiniz? + +The following tutorials cover closely related topics that build on the techniques demonstrated in this guide. Each resource includes complete working code examples with step-by-step explanations to help you master additional API features and explore alternative implementation approaches in your own projects. + +- [Java için Aspose.HTML'de HTML'yi Markdown'a Dönüştür](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Aspose.HTML ile .NET'te HTML'yi Markdown'a Dönüştür](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Markdown'ı HTML'ye Dönüştür – Java rehberi ve PDF çıktısı](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/turkish/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..3614e403f --- /dev/null +++ b/html/turkish/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-08-22 +description: Python ile dakikalar içinde SVG'den PDF oluşturun. SVG'yi PDF'ye dönüştürmeyi + öğrenin, SVG'yi PDF olarak kaydedin ve güvenilir bir SVG'den PDF'ye dönüştürücü + kullanın. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: tr +lastmod: 2026-08-22 +og_description: Python ile SVG'den hızlıca PDF oluşturun. Bu rehber, SVG'yi PDF'ye + nasıl dönüştüreceğinizi, bir SVG‑PDF dönüştürücü kullanmayı ve tek bir betikte SVG'yi + PDF olarak kaydetmeyi gösterir. +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: Python'da SVG'den PDF Oluşturma – adım adım öğretici +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: Python’da SVG’den PDF Oluşturma – Tam Rehber +url: /tr/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Python'da SVG'den PDF Oluşturma – tam rehber + +Eğer **create PDF from SVG** işlemini hızlıca yapmak istiyorsanız, bu öğretici size tam olarak nasıl yapılacağını gösterir. Popüler bir SVG‑to‑PDF dönüştürücü kullanarak bir SVG dosyasını PDF'ye dönüştürmeyi adım adım anlatacağız, böylece raporlar, faturalar veya e‑kitaplar içinde vektör grafikleri Python kodunuzdan çıkmadan ekleyebilirsiniz. + +Tek bir, tekrarlanabilir betik ile **convert SVG to PDF**, ölçeklendirmeyi yönetmeyi, yazı tiplerini korumayı ve nihayet **save SVG as PDF** işlemini nasıl yapacağınızı öğreneceksiniz. Harici komut satırı araçları gerekmez—sadece birkaç Python satırı ve Aspose.SVG for Python kütüphanesi yeterlidir. + +## Önkoşullar + +| Gereksinim | Sebep | +|-------------|--------| +| Python 3.8+ | Kütüphane modern Python çalışma zamanlarını hedefler. | +| `aspose.svg` paketi | `SVGDocument`, `PdfSaveOptions` ve `Converter` sağlar. `pip install aspose-svg` ile kurun. | +| Bir SVG dosyası (`vector.svg`) | Dönüştürmek istediğiniz kaynak vektör grafiği. | +| Çıktı klasörüne yazma izni | **save SVG as PDF** için gerekir. | + +Kütüphaneyi şu komutla kurabilirsiniz: + +```bash +pip install aspose-svg +``` + +> **Pro ipucu:** Bağımlılıkları izole tutmak için bir sanal ortam (`python -m venv venv`) kullanın. + +## Dönüştürme sürecinin genel görünümü + +Dönüştürme üç basit adımdan oluşur: + +1. Diskten **SVG document** yükleyin. +2. **PDF save options** oluşturun (sayfa boyutu, DPI vb. özelleştirebilirsiniz). +3. **converter**'ı çağırarak bir PDF dosyası üretin. + +Aşağıdaki bölümler her adımı ayrıntılı olarak açıklar, kodun *neden* bu şekilde yazıldığını açıklar ve tam, çalıştırılabilir betiği gösterir. + +## Aspose.SVG for Python kullanarak SVG'den PDF Oluşturma + +Bu H2 başlığı, SEO gereksinimini karşılayan temel anahtar kelime **create pdf from svg** ifadesini içerir. + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### Neden bu çalışıyor + +* **`SVGDocument`** SVG XML'ini ayrıştırır ve dönüştürücünün render edebileceği bellek içi bir temsil oluşturur. +* **`PdfSaveOptions`** PDF çıktısını (sayfa boyutu, sıkıştırma, DPI) ayarlamanıza izin verir. Varsayılanlar zaten doğru bir PDF üretir, bu yüzden örnek doğrudan çalışır. +* **`Converter.convert`** ağır işi yapar: vektör verilerini PDF sayfalarına rasterleştirirken vektör bütünlüğünü korur, böylece ortaya çıkan PDF herhangi bir yakınlaştırma seviyesinde net kalır. + +## Özel sayfa boyutuyla SVG'yi PDF'ye Dönüştürme + +Belirli bir sayfa boyutuna ihtiyacınız varsa—örneğin, yazdırılabilir raporlar için A4—`PdfSaveOptions`'ı ayarlayın: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **Köşe durumu:** Bazı SVG'ler, istenen PDF boyutlarıyla eşleşmeyen bir `viewBox` tanımlar. `page_width`/`page_height` değerlerini geçersiz kılarak PDF'inizin düzen beklentilerinize uymasını sağlarsınız. + +## Yazı tiplerini koruyarak SVG'yi PDF olarak Kaydetme + +SVG'niz dış yazı tiplerine referans veriyorsa, bu yazı tiplerinin dönüştürücü tarafından erişilebilir olduğundan emin olun. `.ttf` dosyalarını SVG ile aynı dizine koyun veya özel bir font klasörü belirtin: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +Dönüştürücü, yazı tiplerini doğrudan PDF'e gömer, böylece **svg file to pdf** dönüşümünün herhangi bir makinede aynı görünmesini garanti eder. + +## Toplu Dönüştürme: birden çok dosya için svg dosyasını pdf'ye + +Genellikle içinde birçok SVG varlığı bulunan bir klasörünüz olur. Aşağıdaki döngü, bir dizindeki her `.svg` dosyasını işleyen verimli bir **svg to pdf converter** örneği gösterir: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +Bu kod parçacığı, CI boru hatlarına veya otomatik rapor oluşturuculara entegre edilebilecek pratik bir **convert svg to pdf** iş akışını gösterir. + +## Çıktıyı Doğrulama + +Betik çalıştırıldıktan sonra, oluşturulan PDF'i herhangi bir görüntüleyicide (Adobe Reader, Chrome veya Preview) açın. Şunları görmelisiniz: + +* Herhangi bir yakınlaştırma seviyesinde keskin bir şekilde render edilen vektör şekilleri. +* SVG kaynağıyla eşleşen metin, eğer sağladıysanız yazı tipleri gömülmüş olarak. +* Raster artefaktları yoktur—çünkü dönüşüm orijinal vektör verisini korur. + +Eksik yazı tipleri fark ederseniz, yazı tipi dosyalarının erişilebilir olduğundan ve SVG'nin onları doğru şekilde (`font-family` özniteliği) referans ettiğinden emin olmak için iki kez kontrol edin. + +## Yaygın tuzaklar ve nasıl kaçınılır + +| Belirti | Muhtemel neden | Çözüm | +|---------|----------------|------| +| Boş PDF sayfaları | SVG, bulunamayan harici kaynaklara (görseller, yazı tipleri) sahip | `fonts_folder` sağlayın ve bağlanan görsellerin aynı dizinde olduğundan emin olun veya mutlak URL'ler kullanın. | +| Metin konturlar olarak görünüyor | Yazı tipi gömülmemiş | `pdf_options.embed_fonts = True` (varsayılan) ayarlayın ve yazı tipi dosyasının mevcut olduğunu doğrulayın. | +| PDF beklenenden büyük | Yüksek DPI veya sıkıştırılmamış görseller | `pdf_options.dpi` değerini azaltın veya sıkıştırmayı etkinleştirin: `pdf_options.compress = True`. | +| SVG boyutları kırpılıyor | `viewBox` PDF sayfasından daha büyük | `pdf_options.page_width`/`page_height` ayarlayın veya SVG'yi `svg_doc.set_viewport` ile ölçeklendirin. | + +## Tam uçtan uca örnek + +Aşağıda hata yönetimi, günlük kaydı ve isteğe bağlı komut satırı argümanlarını içeren bağımsız bir betik bulunmaktadır. `svg_to_pdf.py` olarak kaydedin ve `python svg_to_pdf.py` komutuyla çalıştırın. + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +Betik çalıştırıldığında, daha büyük otomasyon boru hatlarına entegre edebileceğiniz bir **save SVG as PDF** işlemi üretilir. + +### Beklenen konsol çıktısı + + + +## Sonra Ne Öğrenmelisiniz? + +Aşağıdaki öğreticiler, bu rehberde gösterilen tekniklere dayanarak yakından ilgili konuları kapsar. Her kaynak, ek API özelliklerini öğrenmenize ve kendi projelerinizde alternatif uygulama yaklaşımlarını keşfetmenize yardımcı olmak için adım adım açıklamalar içeren tam çalışan kod örnekleri sunar. + +- [Aspose.HTML ile .NET'te SVG'yi PDF'ye Dönüştürme](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg to pdf java – Aspose.HTML for Java ile SVG'den PDF Oluşturma](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [Aspose.HTML ile .NET'te SVG'yi PDF'ye Dönüştürme](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/turkish/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/turkish/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..65368684d --- /dev/null +++ b/html/turkish/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-08-22 +description: Python'da büyük HTML'den PDF'ye dönüşümde akışı etkinleştirerek bellek + kullanımını azaltmak ve çıktı üretimini hızlandırmak. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: tr +lastmod: 2026-08-22 +og_description: Python'da büyük HTML'den PDF'ye dönüşümde akışı etkinleştirerek bellek + kullanımını azaltma ve çıktı üretimini hızlandırma. +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: Python'da HTML'den PDF'ye dönüşümde akışı etkinleştir +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: Python'da HTML'yi PDF'ye dönüştürürken akışı nasıl etkinleştirirsiniz +url: /tr/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Python'da HTML'den PDF'ye Dönüştürürken Streaming Nasıl Etkinleştirilir + +Büyük bir HTML‑to‑PDF dönüşümü sırasında **streaming nasıl etkinleştirilir** ihtiyacınız varsa, bu kılavuz size tam adımları gösterir. Streaming'i etkinleştirerek tüm belgeyi belleğe yüklemekten kaçınırsınız; bu, büyük dosyalar için HTML'yi PDF'ye dönüştürürken çok önemlidir. + +Streaming'i nasıl etkinleştireceğinizi, Python ile HTML'yi PDF'ye nasıl dönüştüreceğinizi ve büyük HTML‑to‑PDF işleri gibi uç durumları nasıl ele alacağınızı öğreneceksiniz. Çözüm, popüler `groupdocs-conversion` (veya benzeri) kütüphanesiyle çalışır, ancak kavramlar herhangi bir streaming‑destekli dönüştürücüye de uygulanabilir. + +![Python kullanarak HTML'den PDF'ye streaming dönüşümünü gösteren diyagram](streaming-diagram.png) + +## İhtiyacınız Olanlar + +- Python 3.9 ve üzeri +- `groupdocs-conversion` (veya `PdfSaveOptions` içinde streaming bayrağı sunan herhangi bir kütüphane) +- PDF'ye dönüştürmek istediğiniz bir HTML dosyası (örnek, `large.html` adlı büyük bir dosya kullanır) + +Bu ön koşullar, kodun ek yapılandırma olmadan çalışmasını sağlar. + +## Adım 1: Dönüştürme Kütüphanesini Kurun + +İlk olarak, `HTMLDocument`, `PdfSaveOptions` ve `Converter` sağlayan Python paketini kurun. En yaygın tercih **GroupDocs.Conversion** SDK'sıdır: + +```bash +pip install groupdocs-conversion +``` + +> **Pro ipucu:** Bağımlılıkları izole tutmak için bir sanal ortam kullanın (`python -m venv .venv`). + +## Adım 2: Dönüştürmek İstediğiniz HTML Belgesini Yükleyin + +Kaynak HTML'i yüklemek oldukça basittir. `HTMLDocument` sınıfı dosyayı diskte okur ve dönüşüm için hazırlar. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +`HTMLDocument` nesnesi, görseller ve CSS gibi dış kaynakları da içeren tüm HTML işaretlemesini temsil eder. Bu, herhangi bir **convert html to pdf** işleminin başlangıç noktasıdır. + +## Adım 3: PDF Kaydetme Seçeneklerini Oluşturun ve Streaming'i Etkinleştirin + +Streaming'i etkinleştirmek, **streaming nasıl etkinleştirilir** sorusunun özüdür. Tüm PDF'i bellekte tamponlamak yerine, dönüştürücü parçaları doğrudan çıktı dosyasına yazar. + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +`enable_streaming` `True` olarak ayarlandığında, kütüphane RAM tüketimini büyük ölçüde azaltan bir write‑through yaklaşımı kullanır—bu, **large html to pdf** senaryoları için kritik öneme sahiptir. + +## Adım 4: HTML Belgesini PDF'ye Dönüştürün ve Yapılandırılmış Seçenekleri Kullanın + +Şimdi dönüşümü başlatın. `Converter.convert` yöntemi kaynak belgeyi, seçenek nesnesini ve hedef yolu alır. + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +Bu çağrı tamamlandığında, `large.pdf` akış sırasında diske yazılan oluşturulmuş PDF'i içerir. İşlem, işletim sisteminin verileri dosya sistemine kademeli olarak boşaltabilmesi sayesinde genellikle streaming olmayan bir dönüşümden daha hızlı biter. + +### Beklenen Çıktı + +Betik çalıştırıldığında, orijinal HTML'in içeriğiyle aynı boyutta bir PDF dosyası üretilir. Sonucu herhangi bir PDF görüntüleyiciyle doğrulayabilirsiniz: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## Büyük HTML'den PDF'ye Dönüşümlerde Streaming'in Önemi + +Streaming olmadan **convert html to pdf** yaptığınızda, kütüphane önce tüm PDF'i RAM'de oluşturur ve ardından diske yazar. Orta ölçekli bir sayfa için bu sorun olmaz, ancak çok sayıda görsel içeren 10 MB'lık bir HTML raporu gibi **large html to pdf** işi, tipik sunucusuz fonksiyonların veya düşük bellekli konteynerlerin bellek sınırlarını aşabilir. + +Streaming'i etkinleştirmek üç sorunu çözer: + +1. **Bellek verimliliği** – RAM'de yalnızca küçük bir tampon tutulur. +2. **Daha hızlı algılanan performans** – Dosya, hâlâ üretilirken diskte görünür; bu sayede sonraki süreçler dosyayı daha erken okumaya başlayabilir. +3. **Ölçeklenebilirlik** – Hostun belleğini tüketmeden paralel olarak çok sayıda dönüşüm çalıştırabilirsiniz. + +## Yaygın Tuzaklar ve Nasıl Kaçınılır + +| Semptom | Muhtemel neden | Çözüm | +|---------|----------------|------| +| `MemoryError` dönüşüm sırasında | Streaming bayrağı ayarlanmamış veya kütüphane sürümü çok eski | `pdf_opts.enable_streaming = True` olduğundan emin olun ve en son SDK'ya yükseltin (`pip install --upgrade groupdocs-conversion`). | +| PDF'de eksik görseller | Göreceli görsel yolları çözülemiyor | `HTMLDocument`'e temel dizini geçirin veya görselleri base64 olarak gömün. | +| Çıktı PDF boş | HTML dosyası bulunamadı veya okunamıyor | `"YOUR_DIRECTORY/large.html"` yolunu doğrulayın ve dosya izinlerini kontrol edin. | +| Dönüşüm süresiz olarak takılıyor | Büyük dış kaynaklar (fontlar, CSS) renderlamayı engelliyor | Dış varlıkları önceden indirin veya bir headless tarayıcı kullanarak satır içi (inline) yapın. | + +### Kenar Durumu: HTML'yi Dizeden Dönüştürmek + +HTML içeriğiniz bir dosya yerine bellekte bulunuyorsa, ham HTML kabul eden bir `HTMLDocument` yapıcısına dizeyi sararak yine **streaming nasıl etkinleştirilir** yapabilirsiniz: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +Streaming davranışı aynı kalır çünkü SDK PDF'i kademeli olarak yazar. + +## Kopyalayıp Yapıştırabileceğiniz Tam Betik + +Aşağıda, tartışılan tüm adımları içeren eksiksiz, çalıştırmaya hazır bir örnek bulunuyor. `YOUR_DIRECTORY` ifadesini makinenizdeki gerçek yol ile değiştirin. + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +`python full_example.py` komutunu çalıştırmak, streaming yaklaşımını kullanarak `large.pdf` dosyasını oluşturur. + +## Özet + +- Artık Python'da HTML‑to‑PDF dönüşümü için **streaming nasıl etkinleştirilir** biliyorsunuz. +- Betik, **convert html to pdf** iş akışının tam halini gösterir ve **large html to pdf** yüklerini verimli bir şekilde işler. +- `PdfSaveOptions.enable_streaming = True` ayarlanarak, dönüştürücü çıktıyı kademeli yazar; bu, **stream html to pdf** için önerilen yöntemdir. + +## Sonra Neler Keşfetmeli + +- **HTML to PDF Python** kütüphaneleri (ör. `WeasyPrint`, `pdfkit`) CSS3 ve JavaScript desteği sunar. +- Ek `PdfSaveOptions` ayarlarıyla oluşturulan PDF'e parola koruması veya şifreleme ekleme. +- Bellek kullanımını düşük tutarak bir kuyruk sistemi (Celery, RabbitMQ) içinde birden çok dönüşümü paralelleştirme. + +Farklı HTML kaynakları, sayfa boyutları ve PDF meta verileriyle denemeler yapmaktan çekinmeyin. Streaming, performanstan ödün vermeden çok daha büyük belgeleri yönetmenizi sağlar. İyi kodlamalar! + +## Sonra Ne Öğrenmelisiniz? + +Aşağıdaki öğreticiler, bu kılavuzda gösterilen tekniklere dayanan ve yakından ilgili konuları kapsar. Her kaynak, ek API özelliklerini ustalaşmanıza ve kendi projelerinizde alternatif uygulama yaklaşımlarını keşfetmenize yardımcı olacak tam çalışan kod örnekleri ve adım‑adım açıklamalar içerir. + +- [HTML'yi PDF'ye Dönüştürme Java – Aspose.HTML for Java Kullanarak](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Paralel HTML'den PDF'ye Dönüşüm için Sabit İş Parçacığı Havuzu Oluşturma](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [Aspose HTML'de JavaScript'i Etkinleştirme – HTML Yükle & Metin Al](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/turkish/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..25fb0eb00 --- /dev/null +++ b/html/turkish/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-08-22 +description: HTML'den bağlantıları dışa aktarma ve paragraf dahil markdown dosyasına + dönüştürme. HTML'den markdown'a dönüşüm için adım adım kılavuz. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: tr +lastmod: 2026-08-22 +og_description: HTML belgesinden bağlantıları dışa aktarmayı ve paragrafları da içerecek + şekilde bir markdown dosyasına dönüştürmeyi öğrenin. Güvenilir HTML'den markdown'a + dönüşüm için bu kapsamlı öğreticiyi izleyin. +og_image_alt: How to export links while converting HTML to Markdown +og_title: HTML'yi Markdown'a dönüştürürken bağlantıları nasıl dışa aktarılır – adım + adım rehber +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: HTML'yi Markdown'a dönüştürürken bağlantıları nasıl dışa aktarılır? +url: /tr/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HTML'yi Markdown'a Dönüştürürken Bağlantıları Dışa Aktarma + +Eğer bir HTML sayfasından **bağlantıları dışa aktarma** ve sonucu temiz bir **html to markdown dosyasına** dönüştürmeniz gerekiyorsa, bu kılavuz size tam adımları gösterir. Ayrıca **paragrafları çıkarmayı** keşfedecek ve markdown çıktısının sizin için önemli olan ana içeriği içermesini sağlayacaksınız. Öğreticinin sonunda “**html nasıl markdown'a dönüştürülür**” sorusuna hazır‑çalıştır bir script ile cevap verebileceksiniz. + +Bağlantıları dışa aktarmak ve paragrafları çıkarmak, web içeriğini statik sitelere, dokümantasyon portallarına veya headless CMS arka uçlarına taşıdığınızda yaygın görevlerdir. Aşağıdaki yaklaşım GroupDocs Conversion SDK for Python ile çalışır, ancak kavramlar dışa aktarma özelliklerini yapılandırmanıza izin veren herhangi bir kütüphane için geçerlidir. + +--- + +## Gereksinimler + +- Python 3.9 ve üzeri +- `groupdocs-conversion` paketi (`pip install groupdocs-conversion` ile kurulur) +- İşlemek istediğiniz bir HTML dosyası (örnek: `input.html`) +- Python betikleme konusunda temel bilgi + +--- + +## HTML'den Markdown'a Dönüştürürken Bağlantıları Dışa Aktarma + +İlk büyük adım, yalnızca istenen özelliklerin—bağlantılar ve paragraflar—**html to markdown dosyasına** yazılacak şekilde dönüşümü yapılandırmaktır. SDK, `MarkdownFeature` değerlerinin bir bitmask'ını ayarlamanıza izin verir; çıktıyı odaklamak için `LINKS` ve `PARAGRAPHS` birleştiririz. + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### Bunun Neden Çalıştığı + +- **`HTMLDocument`** orijinal dosyayı ayrıştırır ve dönüştürücünün gezebileceği bir DOM oluşturur. +- **`MarkdownSaveOptions`** SDK'nin ne yazacağını ince ayarlarla kontrol etmenizi sağlar. `features` değerini `LINKS | PARAGRAPHS` olarak ayarlamak, motorun görselleri, tabloları veya scriptleri yok saymasını söyler; bu da son **html to markdown dosyasındaki** gürültüyü azaltır. +- **`Converter.convert`** ağır işi yapar. Özellik maskesine uyar, bağlantı etiketlerini (``) ve paragraf etiketlerini (`

`) çıkarır ve bunları standart Markdown sözdizimiyle yazar. + +--- + +## Tam İçerikle HTML'yi Markdown'a Dönüştürme (isteğe bağlı) + +Daha sonra tüm sayfaya—sadece bağlantılar ve paragraflar değil—ihtiyacınız olduğuna karar verirseniz, sadece özellik maskesini ayarlamanız yeterlidir: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +Aynı dönüşümü şimdi çalıştırmak, orijinal düzeni yansıtan tam bir **html to markdown dosyası** üretir. Bu, **html nasıl markdown'a dönüştürülür** sorusuna esnek bir yanıt gösterir: çıktı, özellik bayraklarını değiştirerek kontrol edilir. + +--- + +## Yalnızca Paragrafları Çıkarma + +Bazen bir makalenin metin gövdeleriyle ilgilenirsiniz, bağlantılarla değil. Maskeyi yalnızca `PARAGRAPHS` olarak ayarlayarak paragrafları izole edebilirsiniz: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +Ortaya çıkan markdown, hiçbir bağlantı işareti olmadan temiz, satır‑bölünmüş metin içerir. Bu snippet, bir HTML kaynağından **paragrafları nasıl çıkarılır** sorusuna yanıt verir. + +--- + +## Yaygın Tuzaklar ve Nasıl Önlenir + +| Sorun | Neden Oluşur | Çözüm | +|-------|--------------|-------| +| Boş çıktı dosyası | Kaynak HTML, seçilen özelliklerle eşleşen `` veya `

` etiketine sahip değil. | HTML yapısını kontrol edin veya özellik maskesini genişletin (ör. `HEADINGS` ekleyin). | +| Kodlama sorunları | HTML, UTF-8 olmayan bir karakter seti kullanıyor ve SDK bunu yanlış okuyor. | `HTMLDocument`'e açık bir kodlama gönderin, örn. `HTMLDocument(path, encoding="iso-8859-1")`. | +| Mevcut markdown dosyasının üzerine yazma | Betik birden fazla çalıştırıldığında önceki dosyanın üzerine yazar. | Çıktı dosya adına bir zaman damgası ekleyin veya yazmadan önce `os.path.exists` kontrolü yapın. | + +**Pro ipucu:** Bir klasörde birçok dosya işlenirken, dönüşüm mantığını bir döngü içinde sarın ve her sonucu kaydedin. Bu, net bir denetim izi sağlar ve bir hata sonrası devam etmeyi kolaylaştırır. + +--- + +## Kopyalayıp Yapıştırabileceğiniz Tam Script + +Aşağıda doğrudan çalıştırabileceğiniz, bağımsız bir Python dosyası (`convert_links_paragraphs.py`) yer alıyor. Kodda değişiklik yapmadan giriş ve çıkış yollarını belirtebilmeniz için argüman ayrıştırma içerir. + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**Nasıl Çalıştırılır** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +Yukarıdaki komut, **bağlantıları dışa aktarma** ve **paragrafları çıkarma** işlemlerini tek bir çağrıda gösterir. Çıktıyı ihtiyaçlarınıza göre özelleştirmek için `--links` veya `--paragraphs` bayraklarını çıkarın. + +--- + +## Doğrulama – Çıktının Görünümü + +Aşağıdaki basit HTML (`input.html`) verildiğinde: + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +Betik her iki bayrakla çalıştırıldığında `links_and_paragraphs.md` üretilir: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +Sadece iki paragraf ve hiperlinkin mevcut olduğunu görebilirsiniz—**bağlantıları dışa aktarma** araması yaparken **html'yi markdown'a dönüştür** istediğiniz tam olarak bu. + +--- + +## Sonraki Adımlar ve İlgili Konular + +- **HTML'yi markdown'a dönüştürme** görüntülerle: maskeye `MarkdownFeature.IMAGES` ekleyin. +- **Paragrafları çıkarmak** ve ardından son işlem yapmak + +## Sonra Ne Öğrenmelisiniz? + +Aşağıdaki öğreticiler, bu kılavuzda gösterilen tekniklere dayanan ve yakından ilgili konuları kapsar. Her kaynak, ek API özelliklerini öğrenmenize ve kendi projelerinizde alternatif uygulama yaklaşımlarını keşfetmenize yardımcı olacak tam çalışan kod örnekleri ve adım‑adım açıklamalar içerir. + +- [Java'da HTML'yi Markdown'a Dönüştürürken Ofset Ayarlama](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown'tan HTML'ye Java - Aspose.HTML ile Dönüştürme](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [HTML'yi Markdown'a Dönüştür – Tam C# Kılavuzu](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/turkish/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..ffb9f937a --- /dev/null +++ b/html/turkish/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,282 @@ +--- +category: general +date: 2026-08-22 +description: Aspose.HTML ile Python'da HTML nasıl yüklenir – kaynak derinliğini sınırlayın + ve belgeyi dönüştürme veya düzenleme için hazır hale getirin. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: tr +lastmod: 2026-08-22 +og_description: Python'da Aspose.HTML ile HTML nasıl yüklenir, kaynak işleme derinliği + nasıl ayarlanır ve belge dönüşüm veya düzenleme için nasıl hazırlanır. +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: Aspose.HTML ile HTML nasıl yüklenir – Python rehberi +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: Python'da Aspose.HTML ile HTML nasıl yüklenir +url: /tr/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Python’da Aspose.HTML ile HTML Nasıl Yüklenir + +Bir Python projesinde **HTML nasıl yüklenir** sorusuna hızlı ve güvenli bir çözüm arıyorsanız, bu rehber tam adımları gösterir. İlk iki cümlenin sonunda kaynak yönetimini nasıl yapılandıracağınızı, dosyayı nasıl yükleyeceğinizi ve süreci sonraki **HTML dönüşümü** veya düzenleme için nasıl hazır tutacağınızı öğreneceksiniz. + +Büyük veya karmaşık sayfaların yüklenmesi, dış kaynaklar (görseller, betikler, CSS) nedeniyle derin özyineleme veya ağ gecikmeleri oluşturabilir. Bu öğreticide **Aspose.HTML for Python** kullanarak sağlam bir desen, **HTMLDocument sınıfı** ve **max_handling_depth** ayarının neden önemli olduğu anlatılmaktadır. + +Şunları öğreneceksiniz: + +* Aspose.HTML paketinin kurulumu +* `ResourceHandlingOptions` örneği oluşturma ve derinliği sınırlama +* `HTMLDocument` sınıfını kullanarak bir sayfa yükleme +* Belgeyi PDF, PNG gibi formatlara dönüştürmeye veya daha fazla manipülasyona hazırlama + +Aspose.HTML ile ilgili önceden bir deneyiminiz olmasına gerek yok, sadece temel Python bilgisi yeterlidir. + +--- + +## Python’da Aspose.HTML ile HTML Nasıl Yüklenir + +Çözümün çekirdeği, **ResourceHandlingOptions** ile **HTMLDocument sınıfı**nı birleştiren üç adımlı bir desendir. İşlem derinliğini sınırlamak, bir sayfa çok sayıda iç içe kaynak referans ettiğinde kontrol dışı ağ çağrılarını önler. + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### Neden Bu Şekilde Çalışır + +* **`ResourceHandlingOptions`** ayrıştırıcıya dış kaynakların kaç seviye derinliğe kadar izlenebileceğini söyler. `max_handling_depth = 3` ayarı, çoğu site için yeterli olup sonsuz döngüleri engeller. +* **`HTMLDocument`** dosyayı okur, seçenekleri uygular ve sorgulayabileceğiniz, değiştirebileceğiniz veya render edebileceğiniz bellek içi bir DOM oluşturur. +* Opsiyonel dönüşüm kodu, yüklenen belgenin **HTML conversion** özellikleriyle, örneğin PDF olarak kaydetme, nasıl bütünleştirileceğini gösterir. + +--- + +## ResourceHandlingOptions’ı Anlamak + +`ResourceHandlingOptions`, **Aspose.HTML for Python** içinde yer alır ve ağ etkinliğini ince ayar yapmanıza olanak tanır. + +| Özellik | Açıklama | Tipik değer | +|-------------------------|----------------------------------------------------|-------------| +| `max_handling_depth` | Bağlantılı kaynaklar için maksimum özyineleme derinliği | `3` (varsayılan) | +| `allow_external_resources` | Dış CSS, JS, görsellerin indirilip indirilmeyeceği | `True` | +| `timeout` | İstek başına ağ zaman aşımı (saniye) | `30` | + +**Pratik ipucu:** Hedef sayfanın yalnızca yerel varlıkları referans ettiğini biliyorsanız, `allow_external_resources = False` ayarıyla yükleme hızını artırabilir ve gereksiz HTTP çağrılarından kaçınabilirsiniz. + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## HTMLDocument Sınıfını Kullanmak + +**HTMLDocument sınıfı**, tüm Aspose.HTML işlemlerinin giriş noktasıdır. Örnek oluşturulduktan sonra şunları yapabilirsiniz: + +* `doc.root` ile DOM’a erişim +* CSS seçicileriyle öğeleri sorgulama (`doc.query_selector_all("img")`) +* Sayfayı raster formatlara render etme (`doc.save("page.png")`) +* PDF’ye dönüştürme (`doc.save("page.pdf", PDFSaveOptions())`) + +Aşağıda, yükleme sonrası tüm görsel `src` özniteliklerini çıkaran kısa bir kod parçacığı bulunmaktadır: + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**Neden İhtiyacınız Olabilir:** **HTML conversion** gerçekleştirirken, başka bir formata render etmeden önce görsel URL’lerini ayarlamanız veya değiştirmeniz gerekebilir. DOM’a doğrudan erişim bu esnekliği sağlar. + +--- + +## HTML Yüklendikten Sonraki Adımlar + +Belge bellekte olduğuna göre, aşağıdaki yaygın iş akışlarından birini seçebilirsiniz: + +1. **PDF’ye Dönüştür** – Arşivleme veya baskı için ideal. +2. **PNG/JPEG’ye Render Et** – Küçük ön izlemeler veya görsel ön izlemeler için kullanışlı. +3. **DOM’u Düzenle** – Kaydetmeden önce öğeleri ekleyin, kaldırın veya değiştirin. +4. **Metin Çıkar** – Dizinleme veya analiz için düz metin içeriği alın. + +### Örnek: Özel Sayfa Boyutu ile PDF’ye Dönüştürme + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**Beklenen çıktı:** Çalışma dizininde `big_page.pdf` adlı bir dosya oluşur ve tüm izin verilen kaynaklar uygulanmış şekilde render edilmiş HTML’i içerir. `max_handling_depth` 3 olarak ayarlandığında, yalnızca üç seviyeye kadar olan kaynaklar gömülür ve PDF boyutu makul kalır. + +--- + +## Yaygın Tuzaklar ve Önlemleri + +| Belirti | Neden | Çözüm | +|------------------------------------------|-----------------------------------------------|-------| +| Render edilen PDF’de eksik görseller | `allow_external_resources` `False` olarak ayarlandı | Dış kaynakları etkinleştirin veya görselleri yerel olarak gömün | +| Yükleme sırasında `TimeoutError` | Ağ gecikmesi `timeout` değerini aşıyor | `rh_opts.timeout` değerini artırın veya varlıkları önceden indirin | +| Beklenmeyen CSS stilleri | Derinlik sınırı nedeniyle stil sayfası yüklenmedi | `max_handling_depth` değerini yükseltin veya gerekli CSS’i manuel ekleyin | +| UTF‑8 olmayan dosyalarda `UnicodeDecodeError` | HTML dosyası farklı bir kodlama kullanıyor | `HTMLDocument` oluştururken `encoding="windows-1252"` gibi uygun kodlamayı belirtin | + +--- + +## Tam, Çalıştırılabilir Örnek + +Aşağıda, `load_html_demo.py` adlı bir dosyaya kopyalayıp yapıştırabileceğiniz, kurulum talimatları, hata yönetimi ve son doğrulama adımını içeren bağımsız bir betik yer alıyor. + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +### Betiği Çalıştırma + +```bash +python load_html_demo.py +``` + +Konsolda yüklemenin başarılı olduğunu, görsel URL listesini ve PDF dönüşümünün tamamlandığını gösteren bir çıktı görmelisiniz. Oluşturulan `big_page.pdf`, yapılandırılmış **max_handling_depth** sınırıyla sınırlı HTML içeriğini yansıtacaktır. + +--- + +## Sonuç + +Bu öğreticide **Python için Aspose.HTML** kullanarak **HTML nasıl yüklenir** sorusunu ele aldık, `max_handling_depth` kontrolü için **ResourceHandlingOptions** yapılandırdık ve görsel çıkarımı ile PDF dönüşümü gibi pratik sonrası işlemleri gösterdik. Adımları izleyerek, bir web‑scraper, belge‑arşivleme servisi veya dinamik rapor oluşturucu gibi herhangi bir **HTML conversion** iş akışı için güvenilir bir temel elde ettiniz. + +**Sonraki adımlar** + +* Tamamlayıcılık ve performans dengesini ayarlamak için farklı `max_handling_depth` değerleriyle deneyler yapın. +* Belgeyi şu şekilde dönüştürmeyi deneyin + + +## Bir Sonraki Öğrenmeniz Gerekenler + + +Aşağıdaki öğreticiler, bu rehberde gösterilen tekniklere dayanan ve ilgili konuları derinlemesine ele alan tam çalışan kod örnekleri ve adım‑adım açıklamalar içerir. + +- [HTML Java Nasıl Ayrıştırılır – Yükleme, Sorgulama ve Eleman Sayma](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [Aspose.HTML for Java’da HTML Belge Ağacını Düzenleme](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [Aspose.HTML for Java’da Belge Yükleme Olaylarını Ele Alma](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/vietnamese/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..e6fc4a190 --- /dev/null +++ b/html/vietnamese/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-08-22 +description: Cách chuyển đổi HTML sang PDF trong Python bằng Aspose.HTML – học cách + tạo PDF từ tệp HTML, tạo PDF từ mã HTML và lưu HTML dưới dạng PDF trong Python một + cách nhanh chóng. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: vi +lastmod: 2026-08-22 +og_description: Cách chuyển đổi HTML sang PDF trong Python với Aspose.HTML. Hướng + dẫn này cho bạn biết cách tạo PDF từ tệp HTML, tạo PDF từ mã HTML và lưu HTML dưới + dạng PDF trong Python. +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: Cách chuyển đổi HTML sang PDF trong Python – hướng dẫn từng bước +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: Cách chuyển đổi HTML sang PDF trong Python bằng Aspose.HTML +url: /vi/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách chuyển đổi HTML sang PDF trong Python với Aspose.HTML + +Nếu bạn cần **how to convert html to pdf** nhanh chóng, hướng dẫn này sẽ cho bạn một giải pháp hoàn chỉnh, sẵn sàng chạy. Bạn sẽ thấy cách **create pdf from html file**, **generate pdf from html code**, và **save html as pdf python** bằng API đơn giản của Aspose.HTML. + +Chúng tôi sẽ hướng dẫn từng bước, giải thích lý do mỗi dòng quan trọng, và đề cập đến các lỗi thường gặp để bạn có thể điều chỉnh mã cho bất kỳ dự án nào. Không cần công cụ bên ngoài, chỉ vài dòng Python. + +## Yêu cầu trước + +* Cài đặt Python 3.8 hoặc mới hơn. +* Giấy phép Aspose.HTML cho Python đang hoạt động (hoặc khóa dùng thử miễn phí). +* Gói `aspose.html` đã được cài đặt: + +```bash +pip install aspose-html +``` + +Có đầy đủ các mục trên sẽ đảm bảo quá trình chuyển đổi chạy mà không gặp lỗi thời gian chạy. + +## Bước 1: Tải tài liệu HTML (create pdf from html file) + +Nhiệm vụ đầu tiên là đọc HTML nguồn. Aspose.HTML đại diện cho một tài liệu bằng lớp `HTMLDocument`, lớp này trừu tượng hoá việc I/O tệp, tải dữ liệu mạng và phân tích DOM. + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*Why this matters:* +*Tại sao điều này quan trọng:* +`HTMLDocument` tải HTML, giải quyết các tài nguyên tương đối (hình ảnh, CSS, phông chữ), và xây dựng một DOM mà bộ chuyển đổi có thể render một cách chính xác. Bỏ qua bước này hoặc dùng một chuỗi đơn sẽ mất các giải quyết tài nguyên đó. + +## Bước 2: Cấu hình tùy chọn lưu PDF (save html as pdf python) + +Aspose.HTML cho phép bạn tinh chỉnh đầu ra PDF thông qua `PdfSaveOptions`. Cấu hình mặc định đã tạo ra PDF chất lượng cao, nhưng bạn có thể điều chỉnh kích thước trang, nén, hoặc siêu dữ liệu nếu cần. + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*Why this matters:* +*Tại sao điều này quan trọng:* +Ngay cả khi bạn giữ nguyên mặc định, việc tạo một đối tượng tùy chọn giúp mã mở rộng được. Các thay đổi trong tương lai—như nhúng mật khẩu PDF—có thể được thêm mà không cần tái cấu trúc script. + +## Bước 3: Thực hiện chuyển đổi (convert html to pdf python) + +Phương thức `Converter.convert` liên kết tài liệu HTML và các tùy chọn PDF lại với nhau, ghi kết quả vào đường dẫn tệp mà bạn chỉ định. + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*Why this matters:* +*Tại sao điều này quan trọng:* +`Converter.convert` thực thi engine render, raster hóa HTML/CSS thành các vector PDF. Nó tự động xử lý bố cục phức tạp, phông chữ nhúng và đồ họa SVG—điều mà các thư viện thủ công thường bỏ qua. + +### Kết quả mong đợi + +Chạy script sẽ tạo ra `sample.pdf` trong cùng thư mục. Mở nó bằng bất kỳ trình xem PDF nào; bạn sẽ thấy bản sao chính xác của `sample.html`, bao gồm kiểu dáng, hình ảnh và ngắt trang. + +## Các biến thể phổ biến và trường hợp đặc biệt + +| Tình huống | Cách xử lý | +|-----------|------------| +| **HTML là một chuỗi, không phải tệp** | Sử dụng `HTMLDocument.from_string(html_string)` thay vì tải từ một đường dẫn. | +| **Bạn cần PDF có mật khẩu bảo vệ** | Đặt `pdf_options.encryption.password = "yourPassword"` trước khi chuyển đổi. | +| **Các tệp HTML lớn gây áp lực bộ nhớ** | Bật chế độ streaming: `pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`. | +| **Phông chữ tùy chỉnh bị thiếu** | Đăng ký thư mục phông chữ: `pdf_options.fonts_folder = "path/to/fonts"`.| + +Những biến thể này minh họa tính linh hoạt của API Aspose.HTML trong khi vẫn giữ quy trình chính giống nhau. + +## Toàn bộ script (generate pdf from html code) + +Dưới đây là chương trình đầy đủ, có thể chạy được, bao gồm tất cả các bước. Sao chép‑dán, thay `YOUR_DIRECTORY` bằng thư mục thực tế, và thực thi. + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +Chạy nó với: + +```bash +python convert_html_to_pdf.py +``` + +Bạn sẽ thấy thông báo xác nhận, và PDF sẽ xuất hiện bên cạnh HTML nguồn. + +## Mẹo khắc phục sự cố (pro tip) + +* **Missing images or CSS** – Đảm bảo tệp HTML sử dụng URL tuyệt đối hoặc các đường dẫn tương đối đúng so với `YOUR_DIRECTORY`. +* **Unicode characters appear as squares** – Nhúng các phông chữ cần thiết qua `pdf_options.fonts_folder`. +* **Conversion is slow** – Bật `pdf_options.use_system_fonts = False` để tránh quét danh mục phông chữ hệ thống. + +## Kết luận + +Bây giờ bạn đã biết **how to convert html to pdf** trong Python với Aspose.HTML, từ việc tải tệp HTML đến lưu PDF chất lượng cao. Mẫu tương tự cho phép bạn **create pdf from html file**, **generate pdf from html code**, và **save html as pdf python** cho bất kỳ quy trình tự động nào. + +Tiếp theo, bạn có thể khám phá: + +* Thêm watermark hoặc header/footer (từ khóa: *create pdf from html file*). +* Chuyển đổi URL trực tiếp thay vì tệp cục bộ (từ khóa: *convert html to pdf python*). +* Tích hợp bộ chuyển đổi vào API Flask hoặc Django để cung cấp PDF theo yêu cầu. + +## Bạn nên học gì tiếp theo? + +Các hướng dẫn sau đây bao gồm các chủ đề liên quan chặt chẽ, xây dựng trên các kỹ thuật được trình bày trong hướng dẫn này. Mỗi tài nguyên bao gồm các ví dụ mã hoạt động đầy đủ với giải thích từng bước để giúp bạn nắm vững các tính năng API bổ sung và khám phá các cách triển khai thay thế trong dự án của mình. + +- [Chuyển đổi HTML sang PDF với Aspose.HTML – Hướng dẫn thao tác đầy đủ](/html/english/) +- [Cách chuyển đổi HTML sang PDF Java – Sử dụng Aspose.HTML cho Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Chuyển đổi HTML sang PDF trong .NET với Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-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/vietnamese/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/vietnamese/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..ccf40d8ec --- /dev/null +++ b/html/vietnamese/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-08-22 +description: Học cách tạo markdown từ tệp HTML bằng Python. Hướng dẫn từng bước này + cho thấy cách chuyển đổi HTML sang markdown với một thư viện đáng tin cậy. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: vi +lastmod: 2026-08-22 +og_description: Cách tạo markdown từ tệp HTML bằng Python. Hãy theo hướng dẫn này + để chuyển đổi HTML sang markdown nhanh chóng với thư viện đã được chứng minh. +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: Cách tạo markdown từ HTML trong Python – hướng dẫn đầy đủ +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: Cách tạo markdown từ HTML trong Python – hướng dẫn đầy đủ +url: /vi/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách tạo markdown từ HTML trong Python – hướng dẫn đầy đủ + +Nếu bạn muốn biết **cách tạo markdown** từ nội dung web hiện có, bạn có thể chuyển đổi một tệp HTML sang markdown chỉ với vài dòng Python. Bài hướng dẫn này sẽ chỉ cho bạn **cách convert html to markdown** bằng một **thư viện html to markdown** chuyên dụng, hoạt động trên Windows, macOS và Linux. + +Bạn sẽ học cách cài đặt thư viện, tải tài liệu HTML, cấu hình các tùy chọn Git‑flavored markdown, và ghi kết quả ra đĩa. Khi kết thúc, bạn có thể tự động chuyển đổi bất kỳ **html file to markdown** nào, hữu ích cho các trình tạo site tĩnh, quy trình tài liệu, hoặc dự án di chuyển nội dung. + +## Yêu cầu trước + +Trước khi bắt đầu, hãy chắc chắn rằng bạn có: + +* Python 3.8 trở lên đã được cài đặt (kiểm tra bằng `python --version`). +* Truy cập vào terminal hoặc command prompt. +* Một tệp HTML bạn muốn chuyển đổi (ví dụ dùng `sample.html`). +* Kết nối Internet để cài đặt gói cần thiết. + +Ví dụ mã sử dụng thư viện **GroupDocs.Conversion for Python**, cung cấp các lớp `HTMLDocument`, `MarkdownSaveOptions`, và `Converter` như sẽ được trình bày phía sau. Các khái niệm tương tự áp dụng cho các gói **html to markdown python** khác như `markdownify` hoặc `html2text`—sự khác nhau duy nhất là các câu lệnh import. + +## Cách tạo markdown – bước 1: cài đặt thư viện html to markdown cho Python + +Nhiệm vụ đầu tiên là thêm thư viện chuyển đổi vào môi trường của bạn. Chạy lệnh pip sau trong terminal: + +```bash +pip install groupdocs-conversion +``` + +> **Mẹo:** Sử dụng môi trường ảo (`python -m venv .venv`) để giữ các phụ thuộc tách biệt khỏi cài đặt Python toàn cục của bạn. + +Cài đặt gói sẽ cho phép bạn truy cập các lớp `HTMLDocument`, `MarkdownSaveOptions`, và `Converter` cần thiết cho quá trình chuyển đổi. + +## Chuyển đổi html sang markdown – bước 2: tải tài liệu HTML + +Sau khi thư viện được cài đặt, import các lớp cần thiết và tạo một thể hiện `HTMLDocument` trỏ tới tệp nguồn của bạn. + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +Đối tượng `HTMLDocument` sẽ đọc tệp và chuẩn bị cho việc chuyển đổi. Nếu tệp không tồn tại, hàm khởi tạo sẽ ném ra `FileNotFoundError`, vì vậy hãy chắc chắn đường dẫn là đúng. + +## html file to markdown – bước 3: cấu hình tùy chọn Git‑flavored markdown + +Nhiều dự án ưu tiên Git‑flavored markdown vì nó hỗ trợ bảng, danh sách công việc, và cú pháp gạch ngang. Thư viện cho phép bạn bật preset này qua thuộc tính `git` trên `MarkdownSaveOptions`. + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +Đặt `git = True` sẽ khiến bộ chuyển đổi xuất ra cú pháp mà GitHub, GitLab và Bitbucket hiển thị đúng. Nếu bạn muốn markdown thuần, để cờ `False`. + +## Lưu kết quả markdown – bước 4: ghi kết quả bằng thư viện html to markdown + +Cuối cùng, gọi phương thức `Converter.convert`, truyền tài liệu nguồn, đối tượng tùy chọn, và đường dẫn đích. + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +Khi script hoàn thành, `git_flavored.md` sẽ chứa bản markdown của `sample.html`. Bạn có thể mở tệp này bằng bất kỳ trình soạn thảo nào hoặc đưa trực tiếp vào trình tạo site tĩnh. + +### Kết quả mong đợi + +Giả sử `sample.html` chứa một tiêu đề và đoạn văn đơn giản, markdown được tạo ra có thể trông như sau: + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +Nếu HTML gốc có bảng, danh sách hoặc khối mã, preset Git‑flavored sẽ giữ nguyên các cấu trúc đó bằng cú pháp markdown thích hợp. + +## Hiểu về thư viện html to markdown + +Thư viện **GroupDocs.Conversion** trừu tượng hoá các chi tiết phân tích và render mà bạn thường phải tự xử lý. Nó: + +* Giữ lại kiểu dáng dựa trên CSS khi có thể (ví dụ: in đậm, in nghiêng). +* Tạo markdown sạch sẽ, dễ đọc mà không có các thực thể HTML thừa. +* Hỗ trợ chuyển đổi hàng loạt, cho phép bạn lặp qua một thư mục các tệp HTML bằng cùng một đoạn mã. + +Nếu bạn muốn một giải pháp nhẹ hơn, gói `markdownify` cung cấp một API một hàm duy nhất: + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +Cả hai cách đều đạt được mục tiêu cuối cùng—**convert html to markdown**—nhưng tùy chọn GroupDocs cung cấp kiểm soát nhiều hơn về định dạng đầu ra và dễ dàng tích hợp vào các pipeline xử lý tài liệu lớn. + +## Những lỗi thường gặp và cách tránh + +| Vấn đề | Nguyên nhân | Giải pháp | +|-------|-------------|----------| +| Thiếu hình ảnh trong markdown | Bộ chuyển đổi chỉ đưa URL của hình ảnh; không nhúng file. | Đảm bảo các file hình ảnh có thể truy cập từ vị trí markdown hoặc sao chép chúng cùng với đầu ra. | +| Liên kết tương đối bị hỏng | HTML có thể dùng đường dẫn tương đối, trở nên không hợp lệ sau khi chuyển đổi. | Sử dụng `md_options.base_path` (nếu có) để viết lại liên kết, hoặc chạy script xử lý hậu kỳ để điều chỉnh đường dẫn. | +| Ký tự Unicode bị escape | Một số thư viện escape các ký tự không phải ASCII. | Đặt `md_options.encode_utf8 = True` (hoặc cờ tương đương) để giữ nguyên ký tự. | + +Giải quyết những vấn đề này sớm sẽ tiết kiệm thời gian khi bạn mở rộng chuyển đổi lên hàng chục hoặc hàng trăm tệp. + +## Ví dụ đầy đủ, có thể chạy ngay + +Dưới đây là một script tự chứa mà bạn có thể sao chép, chỉnh sửa và chạy ngay. Thay `YOUR_DIRECTORY` bằng thư mục thực tế trên máy của bạn. + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +Chạy script: + +```bash +python markdown_from_html.py +``` + +Bạn sẽ thấy thông báo xác nhận và một tệp `git_flavored.md` mới chứa phiên bản markdown của HTML. + +## Kết luận + +Bây giờ bạn đã biết **cách tạo markdown** từ nguồn HTML bằng Python. Hướng dẫn đã đề cập tới việc cài đặt một **thư viện html to markdown** đáng tin cậy, tải **html file to markdown**, cấu hình các tùy chọn **html to markdown python**, và lưu kết quả. Với nền tảng này, bạn có thể tự động hoá pipeline tài liệu, di chuyển các trang web legacy, hoặc tạo nội dung cho các trình tạo site tĩnh. + +**Bước tiếp theo** + +* Khám phá chuyển đổi hàng loạt bằng cách lặp qua một thư mục các tệp HTML. +* Tùy chỉnh `MarkdownSaveOptions` để kiểm soát kiểu tiêu đề, định dạng danh sách, hoặc xử lý hình ảnh. +* Kết hợp script này với workflow CI/CD để giữ tài liệu markdown luôn cập nhật tự động. + +Chúc bạn chuyển đổi thành công! + +## Bạn nên học gì tiếp theo? + +Các hướng dẫn sau đây đề cập đến các chủ đề liên quan chặt chẽ, xây dựng trên các kỹ thuật được trình bày trong hướng dẫn này. Mỗi tài nguyên bao gồm các ví dụ mã hoàn chỉnh với giải thích từng bước để giúp bạn làm chủ các tính năng API bổ sung và khám phá các cách triển khai thay thế trong dự án của mình. + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/vietnamese/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..8b7b8d020 --- /dev/null +++ b/html/vietnamese/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,185 @@ +--- +category: general +date: 2026-08-22 +description: Tìm hiểu cách tạo markdown từ HTML trong Python bằng một script đơn giản + ba bước. Bao gồm các tùy chọn chuyển đổi và mẹo xuất. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: vi +lastmod: 2026-08-22 +og_description: Tạo markdown từ HTML bằng Python chỉ trong ba dòng. Hướng dẫn này + trình bày cách chuyển đổi, các tùy chọn định dạng và cách xuất HTML sang markdown + một cách hiệu quả. +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: Tạo markdown từ HTML trong Python – hướng dẫn từng bước +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: Cách tạo markdown từ HTML bằng Python +url: /vi/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách tạo markdown từ HTML bằng Python + +Nếu bạn cần **create markdown from HTML**, hướng dẫn ngắn này sẽ cho bạn thấy cách thực hiện bằng Python. Bạn sẽ thấy một script ba bước rõ ràng, tải một tệp HTML, cấu hình đầu ra Git‑flavored Markdown, và ghi kết quả ra đĩa. + +Chuyển đổi nội dung web sang ngôn ngữ đánh dấu nhẹ là một nhiệm vụ phổ biến khi xây dựng các trang tĩnh, quy trình tài liệu, hoặc sổ notebook phân tích dữ liệu. Trong hướng dẫn này, chúng ta cũng sẽ đề cập đến cách **convert HTML to markdown** với định dạng tùy chọn, trả lời câu hỏi **how to convert HTML** một cách hiệu quả, và trình diễn quy trình **export HTML to markdown** bằng thư viện phổ biến `groupdocs-conversion`. + +## Yêu cầu trước + +* Python 3.8 hoặc mới hơn đã được cài đặt. +* Gói `groupdocs-conversion` (hoặc bất kỳ thư viện nào cung cấp `HTMLDocument`, `MarkdownSaveOptions`, và `Converter`). Cài đặt nó bằng: + +```bash +pip install groupdocs-conversion +``` + +* Một tệp HTML bạn muốn chuyển đổi, ví dụ `sample.html` nằm trong thư mục bạn kiểm soát. + +Không cần phụ thuộc hệ thống bổ sung, và mã hoạt động trên Windows, macOS và Linux. + +## Bước 1: Tải tài liệu HTML nguồn + +Hoạt động đầu tiên là tạo một đối tượng `HTMLDocument` đại diện cho tệp nguồn. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**Tại sao điều này quan trọng:** `HTMLDocument` phân tích tệp, giải quyết các liên kết tương đối, và chuẩn bị DOM để chuyển đổi. Nếu không tìm thấy tệp, hàm khởi tạo sẽ ném ra `FileNotFoundError` rõ ràng, cho phép bạn xử lý các đầu vào thiếu sớm. + +## Bước 2: Cấu hình tùy chọn lưu Markdown (Git‑flavored) + +Markdown có một số phương ngữ. Git‑flavored Markdown (GFM) bổ sung bảng, danh sách công việc, và các khối mã được bao quanh, thường cần cho các tệp README hoặc trang GitHub. + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**Tại sao điều này quan trọng:** Bằng cách chọn rõ ràng `MarkdownFormatter.GIT`, bạn đảm bảo đầu ra tuân theo cùng các quy tắc mà GitHub hiển thị, loại bỏ bất ngờ khi markdown được hiển thị trong kho. Nếu bạn muốn Markdown thuần, thay thế `MarkdownFormatter.GIT` bằng `MarkdownFormatter.DEFAULT`. + +## Bước 3: Chuyển đổi tài liệu HTML sang tệp Markdown + +Bây giờ gọi công cụ chuyển đổi và ghi kết quả vào đường dẫn đích. + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**Tại sao điều này quan trọng:** `Converter.convert` thực hiện phần công việc nặng—dịch các thẻ HTML sang tương đương markdown, giữ lại hình ảnh (bằng cách sao chép chúng vào thư mục đầu ra nếu cần), và áp dụng bộ định dạng bạn đã chọn. Phương thức trả về `None` khi thành công, nhưng bạn có thể bắt `ConversionException` để báo cáo lỗi chi tiết. + +### Kết quả mong đợi + +Sau khi chạy script, `sample.md` sẽ chứa nội dung tương tự như: + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +Markdown chính xác phản ánh cấu trúc của `sample.html`. Bảng, hình ảnh và khối mã sẽ được chuyển đổi theo quy tắc GFM. + +## Các biến thể thường gặp và trường hợp đặc biệt + +| Tình huống | Điều chỉnh đề xuất | +|-----------|-------------------| +| **Các tệp HTML lớn (>10 MB)** | Tăng giới hạn đệ quy của Python hoặc truyền dữ liệu đầu vào theo luồng bằng `HTMLDocument.open_stream()` nếu thư viện hỗ trợ. | +| **Hình ảnh được tham chiếu bằng URL tuyệt đối** | Đặt `md_options.embed_images = True` để nhúng hình ảnh dưới dạng data URI base‑64, hoặc giữ chúng dưới dạng liên kết để giảm kích thước đầu ra. | +| **Bạn cần Markdown thuần thay vì GFM** | Thay đổi `md_options.formatter = MarkdownFormatter.DEFAULT`. | +| **Các lớp CSS tùy chỉnh nên bị bỏ qua** | Sử dụng `md_options.ignore_css_classes = ["unwanted-class"]`. | +| **Chạy trong pipeline CI/CD** | Bao bọc script trong khối `try/except` và thoát với mã trạng thái khác 0 khi thất bại, để pipeline có thể dừng nhanh. | + +### Mẹo chuyên nghiệp + +Nếu bạn dự định chuyển đổi nhiều tệp trong một lô, hãy tái sử dụng một thể hiện `MarkdownSaveOptions` duy nhất và chỉ thay đổi các đường dẫn đầu vào/đầu ra trong vòng lặp. Điều này giảm chi phí tạo đối tượng và tăng tốc quá trình khoảng ~15 %. + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## Cách chuyển đổi HTML sang markdown trong các ngôn ngữ khác (ghi chú nhanh) + +Mặc dù hướng dẫn này tập trung vào **html to markdown python**, các khái niệm tương tự áp dụng cho SDK Java, C# hoặc JavaScript: tạo một đối tượng tài liệu, cấu hình bộ định dạng markdown, và gọi bộ chuyển đổi. Nếu bạn cần **export HTML to markdown** từ môi trường không phải Python, hãy tìm các lớp `HtmlDocument`, `MarkdownSaveOptions`, và `Converter` tương đương trong SDK riêng của ngôn ngữ. + +## Kết luận + +Bây giờ bạn đã biết cách **create markdown from HTML** bằng một script Python ngắn gọn. Quy trình ba bước—tải HTML, thiết lập các tùy chọn Git‑flavored, và chạy chuyển đổi—bao phủ cốt lõi của bất kỳ quy trình **convert html to markdown** nào. Từ đây bạn có thể: + +* Tích hợp script vào các công cụ tạo site tĩnh. +* Tự động cập nhật tài liệu trong các pipeline CI. +* Mở rộng chuyển đổi với xử lý hậu kỳ tùy chỉnh (ví dụ: viết lại liên kết hoặc điều chỉnh tiêu đề). + +Bạn có thể thoải mái thử nghiệm các tùy chọn phụ—**how to convert html** với các bộ định dạng khác nhau, hoặc điều chỉnh cài đặt **export html to markdown** cho hình ảnh và bảng. Chúc chuyển đổi vui vẻ! + +## Bạn Nên Học Gì Tiếp Theo? + +Các hướng dẫn sau đây bao gồm các chủ đề liên quan chặt chẽ, xây dựng trên các kỹ thuật được trình bày trong hướng dẫn này. Mỗi tài nguyên bao gồm các ví dụ mã hoàn chỉnh với giải thích từng bước để giúp bạn nắm vững các tính năng API bổ sung và khám phá các cách triển khai thay thế trong dự án của mình. + +- [Chuyển đổi HTML sang Markdown trong Aspose.HTML cho Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Chuyển đổi HTML sang Markdown trong .NET với Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Chuyển đổi markdown sang html – Hướng dẫn Java với đầu ra PDF](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/vietnamese/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..c56410167 --- /dev/null +++ b/html/vietnamese/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,283 @@ +--- +category: general +date: 2026-08-22 +description: Tạo PDF từ SVG bằng Python trong vài phút. Học cách chuyển đổi SVG sang + PDF, lưu SVG dưới dạng PDF và sử dụng một công cụ chuyển đổi SVG sang PDF đáng tin + cậy. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: vi +lastmod: 2026-08-22 +og_description: Tạo PDF từ SVG bằng Python nhanh chóng. Hướng dẫn này chỉ cách chuyển + đổi SVG sang PDF, sử dụng công cụ chuyển SVG sang PDF, và lưu SVG dưới dạng PDF + trong một script duy nhất. +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: Tạo PDF từ SVG trong Python – hướng dẫn từng bước +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: Cách tạo PDF từ SVG trong Python – hướng dẫn đầy đủ +url: /vi/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách tạo PDF từ SVG trong Python – hướng dẫn đầy đủ + +Nếu bạn cần **tạo PDF từ SVG** nhanh chóng, hướng dẫn này sẽ chỉ cho bạn cách thực hiện. Chúng tôi sẽ hướng dẫn chuyển đổi một tệp SVG sang PDF bằng một công cụ chuyển đổi SVG‑to‑PDF phổ biến, để bạn có thể nhúng đồ họa vector vào báo cáo, hoá đơn hoặc sách điện tử mà không rời khỏi mã Python của mình. + +Bạn sẽ học cách **chuyển đổi SVG sang PDF**, quản lý tỷ lệ, bảo tồn phông chữ, và cuối cùng **lưu SVG dưới dạng PDF** bằng một script duy nhất, có thể tái tạo. Không cần công cụ dòng lệnh bên ngoài—chỉ cần vài dòng Python và thư viện Aspose.SVG for Python. + +## Yêu cầu trước + +Trước khi bắt đầu, hãy chắc chắn rằng bạn đã có: + +| Yêu cầu | Lý do | +|-------------|--------| +| Python 3.8+ | Thư viện nhắm tới các môi trường Python hiện đại. | +| `aspose.svg` package | Cung cấp `SVGDocument`, `PdfSaveOptions`, và `Converter`. Cài đặt bằng `pip install aspose-svg`. | +| An SVG file (`vector.svg`) | Tệp vector SVG nguồn mà bạn muốn chuyển đổi. | +| Write permission to the output folder | Cần thiết để **save SVG as PDF**. | + +Bạn có thể cài đặt thư viện bằng: + +```bash +pip install aspose-svg +``` + +> **Mẹo chuyên nghiệp:** Sử dụng môi trường ảo (`python -m venv venv`) để cô lập các phụ thuộc. + +## Tổng quan quy trình chuyển đổi + +Quá trình chuyển đổi bao gồm ba bước đơn giản: + +1. Tải **tài liệu SVG** từ đĩa. +2. Tạo **các tùy chọn lưu PDF** (bạn có thể tùy chỉnh kích thước trang, DPI, v.v.). +3. Gọi **converter** để tạo tệp PDF. + +Các phần sau sẽ phân tích từng bước, giải thích *tại sao* mã được viết như vậy, và hiển thị script đầy đủ, có thể chạy được. + +## Tạo PDF từ SVG bằng Aspose.SVG cho Python + +Tiêu đề H2 này chứa từ khóa chính **create pdf from svg**, đáp ứng yêu cầu SEO. + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### Tại sao cách này hoạt động + +* `SVGDocument` phân tích XML SVG và xây dựng một biểu diễn trong bộ nhớ mà converter có thể render. +* `PdfSaveOptions` cho phép bạn điều chỉnh đầu ra PDF (kích thước trang, nén, DPI). Các giá trị mặc định đã tạo ra PDF chính xác, vì vậy ví dụ hoạt động ngay lập tức. +* `Converter.convert` thực hiện phần công việc nặng: nó raster hoá dữ liệu vector lên các trang PDF trong khi bảo tồn độ chính xác vector, do đó PDF kết quả vẫn sắc nét ở bất kỳ mức phóng đại nào. + +## Chuyển SVG sang PDF với kích thước trang tùy chỉnh + +Nếu bạn cần một kích thước trang cụ thể—ví dụ, A4 cho báo cáo có thể in—hãy điều chỉnh `PdfSaveOptions`: + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **Trường hợp đặc biệt:** Một số SVG định nghĩa `viewBox` không khớp với kích thước PDF mong muốn. Ghi đè `page_width`/`page_height` đảm bảo PDF phù hợp với bố cục bạn mong đợi. + +## Lưu SVG dưới dạng PDF trong khi bảo tồn phông chữ + +Khi SVG của bạn tham chiếu tới phông chữ bên ngoài, hãy chắc chắn rằng các phông chữ có thể truy cập được bởi converter. Đặt các tệp `.ttf` trong cùng thư mục với SVG hoặc chỉ định thư mục phông chữ tùy chỉnh: + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +Converter sẽ nhúng phông chữ trực tiếp vào PDF, đảm bảo việc chuyển đổi **svg file to pdf** trông giống hệt trên bất kỳ máy nào. + +## Chuyển đổi hàng loạt: svg file to pdf cho nhiều tệp + +Thường bạn có một thư mục chứa đầy các tài sản SVG. Vòng lặp dưới đây minh họa một **svg to pdf converter** hiệu quả, xử lý mọi tệp `.svg` trong một thư mục: + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +Đoạn mã này minh họa quy trình làm việc thực tế **convert svg to pdf** có thể tích hợp vào các pipeline CI hoặc trình tạo báo cáo tự động. + +## Xác minh đầu ra + +Sau khi chạy script, mở PDF đã tạo bằng bất kỳ trình xem nào (Adobe Reader, Chrome, hoặc Preview). Bạn sẽ thấy: + +* Các hình vector được render sắc nét ở bất kỳ mức phóng đại nào. +* Văn bản khớp với nguồn SVG, với phông chữ được nhúng nếu bạn đã cung cấp. +* Không có artefact raster—vì quá trình chuyển đổi giữ nguyên dữ liệu vector gốc. + +Nếu bạn thấy thiếu phông chữ, hãy kiểm tra lại rằng các tệp phông chữ có thể truy cập và SVG tham chiếu chúng đúng cách (thuộc tính `font-family`). + +## Những lỗi thường gặp và cách tránh + +| Triệu chứng | Nguyên nhân có thể | Cách khắc phục | +|---------|--------------|-----| +| Trang PDF trắng | SVG có tài nguyên bên ngoài (hình ảnh, phông chữ) không tìm thấy | Cung cấp `fonts_folder` và đảm bảo các hình ảnh được liên kết nằm trong cùng thư mục hoặc sử dụng URL tuyệt đối. | +| Văn bản xuất hiện dưới dạng outline | Phông chữ không được nhúng | Đặt `pdf_options.embed_fonts = True` (mặc định) và xác minh tệp phông chữ tồn tại. | +| PDF lớn hơn mong đợi | DPI cao hoặc hình ảnh chưa nén | Giảm `pdf_options.dpi` hoặc bật nén: `pdf_options.compress = True`. | +| Kích thước SVG bị cắt | `viewBox` lớn hơn trang PDF | Điều chỉnh `pdf_options.page_width`/`page_height` hoặc thu phóng SVG bằng `svg_doc.set_viewport`. | + +## Ví dụ hoàn chỉnh từ đầu đến cuối + +Dưới đây là một script độc lập bao gồm xử lý lỗi, ghi log và các đối số dòng lệnh tùy chọn. Lưu lại dưới tên `svg_to_pdf.py` và chạy `python svg_to_pdf.py`. + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +Chạy script sẽ tạo ra một thao tác **save SVG as PDF** mà bạn có thể nhúng vào các pipeline tự động lớn hơn. + +### Đầu ra dự kiến trên console + + + +## Bạn nên học gì tiếp theo? + +Các hướng dẫn sau đây bao gồm các chủ đề liên quan chặt chẽ, xây dựng trên các kỹ thuật được trình bày trong hướng dẫn này. Mỗi tài nguyên bao gồm các ví dụ mã hoàn chỉnh, hoạt động với giải thích từng bước để giúp bạn nắm vững các tính năng API bổ sung và khám phá các cách triển khai thay thế trong dự án của mình. + +- [Chuyển SVG sang PDF trong .NET với Aspose.HTML](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg to pdf java – Tạo PDF từ SVG với Aspose.HTML cho Java](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [Chuyển SVG sang PDF trong .NET với Aspose.HTML](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/vietnamese/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/vietnamese/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..7a7a91c04 --- /dev/null +++ b/html/vietnamese/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-08-22 +description: cách bật streaming cho việc chuyển đổi HTML sang PDF lớn trong Python, + giảm việc sử dụng bộ nhớ và tăng tốc quá trình tạo đầu ra. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: vi +lastmod: 2026-08-22 +og_description: Cách bật streaming cho việc chuyển đổi HTML sang PDF quy mô lớn trong + Python, giảm mức tiêu thụ bộ nhớ và tăng tốc độ tạo kết quả. +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: Kích hoạt streaming cho chuyển đổi HTML‑to‑PDF trong Python +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: Cách bật phát luồng khi chuyển đổi HTML sang PDF trong Python +url: /vi/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách bật streaming khi chuyển đổi HTML sang PDF trong Python + +Nếu bạn cần **cách bật streaming** trong quá trình chuyển đổi HTML‑to‑PDF lớn, hướng dẫn này sẽ chỉ cho bạn các bước chính xác. Bằng cách bật streaming, bạn tránh việc tải toàn bộ tài liệu vào bộ nhớ, điều này rất quan trọng khi bạn chuyển đổi HTML sang PDF cho các tệp lớn. + +Bạn sẽ học cách bật streaming, chuyển đổi HTML sang PDF bằng Python, và xử lý các trường hợp đặc biệt như các công việc chuyển đổi HTML sang PDF lớn. Giải pháp hoạt động với thư viện phổ biến `groupdocs-conversion` (hoặc tương tự), nhưng các khái niệm áp dụng cho bất kỳ bộ chuyển đổi hỗ trợ streaming nào. + +![Sơ đồ cho thấy quá trình chuyển đổi streaming từ HTML sang PDF bằng Python](streaming-diagram.png) + +## Những gì bạn cần + +- Python 3.9 hoặc mới hơn +- `groupdocs-conversion` (hoặc bất kỳ thư viện nào cung cấp `PdfSaveOptions` với cờ streaming) +- Một tệp HTML mà bạn muốn chuyển thành PDF (ví dụ sử dụng tệp lớn tên `large.html`) + +Có đầy đủ các yêu cầu trên sẽ đảm bảo mã chạy mà không cần cấu hình bổ sung. + +## Bước 1: Cài đặt thư viện chuyển đổi + +Đầu tiên, cài đặt gói Python cung cấp `HTMLDocument`, `PdfSaveOptions` và `Converter`. Lựa chọn phổ biến nhất là **GroupDocs.Conversion** SDK: + +```bash +pip install groupdocs-conversion +``` + +> **Mẹo chuyên nghiệp:** Sử dụng môi trường ảo (`python -m venv .venv`) để giữ các phụ thuộc được cô lập. + +## Bước 2: Tải tài liệu HTML bạn muốn chuyển đổi + +Việc tải HTML nguồn rất đơn giản. Lớp `HTMLDocument` đọc tệp từ đĩa và chuẩn bị nó cho quá trình chuyển đổi. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +Đối tượng `HTMLDocument` đại diện cho toàn bộ markup HTML, bao gồm các tài nguyên bên ngoài như hình ảnh và CSS. Đây là điểm khởi đầu cho bất kỳ thao tác **convert html to pdf** nào. + +## Bước 3: Tạo tùy chọn lưu PDF và bật streaming + +Bật streaming là trọng tâm của **cách bật streaming**. Thay vì lưu toàn bộ PDF trong bộ nhớ, bộ chuyển đổi sẽ ghi các khối dữ liệu trực tiếp vào tệp đầu ra. + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +Khi `enable_streaming` được đặt thành `True`, thư viện sẽ sử dụng cách ghi‑through giúp giảm đáng kể việc tiêu thụ RAM—rất quan trọng trong các kịch bản **large html to pdf**. + +## Bước 4: Chuyển đổi tài liệu HTML sang PDF bằng các tùy chọn đã cấu hình + +Bây giờ gọi hàm chuyển đổi. Phương thức `Converter.convert` nhận tài liệu nguồn, đối tượng tùy chọn và đường dẫn đích. + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +Sau khi lệnh này hoàn thành, `large.pdf` sẽ chứa PDF đã được render, được tạo ra trong khi dữ liệu được stream tới đĩa. Toàn bộ quá trình thường nhanh hơn so với chuyển đổi không streaming vì hệ điều hành có thể flush dữ liệu lên hệ thống tệp một cách tuần tự. + +### Kết quả mong đợi + +Chạy script sẽ tạo ra một tệp PDF có kích thước khớp với nội dung của HTML gốc. Bạn có thể kiểm tra kết quả bằng bất kỳ trình xem PDF nào: + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## Tại sao streaming quan trọng đối với chuyển đổi HTML sang PDF lớn + +Khi bạn **convert html to pdf** mà không có streaming, thư viện sẽ xây dựng toàn bộ PDF trong RAM trước khi ghi ra đĩa. Đối với một trang vừa phải thì ổn, nhưng một công việc **large html to pdf** (ví dụ: báo cáo HTML 10 MB với nhiều hình ảnh) có thể vượt quá giới hạn bộ nhớ của các hàm serverless hoặc container bộ nhớ thấp. + +Bật streaming giải quyết ba vấn đề: + +1. **Hiệu quả bộ nhớ** – chỉ giữ một bộ đệm nhỏ trong RAM. +2. **Hiệu năng cảm nhận nhanh hơn** – tệp xuất hiện trên đĩa trong khi vẫn đang được tạo, cho phép các quy trình downstream bắt đầu đọc sớm hơn. +3. **Khả năng mở rộng** – bạn có thể chạy nhiều chuyển đổi song song mà không làm cạn kiệt bộ nhớ của máy chủ. + +## Các lỗi thường gặp và cách tránh + +| Triệu chứng | Nguyên nhân khả dĩ | Cách khắc phục | +|------------|--------------------|----------------| +| `MemoryError` trong quá trình chuyển đổi | Cờ streaming chưa được bật hoặc phiên bản thư viện quá cũ | Đảm bảo `pdf_opts.enable_streaming = True` và nâng cấp lên SDK mới nhất (`pip install --upgrade groupdocs-conversion`). | +| Hình ảnh bị thiếu trong PDF | Đường dẫn hình ảnh tương đối không thể giải quyết | Cung cấp thư mục gốc cho `HTMLDocument` hoặc nhúng hình ảnh dưới dạng base64. | +| PDF đầu ra trắng | Không tìm thấy hoặc không đọc được tệp HTML | Kiểm tra đường dẫn `"YOUR_DIRECTORY/large.html"` và quyền truy cập tệp. | +| Quá trình chuyển đổi bị treo vô hạn | Các tài nguyên bên ngoài lớn (phông chữ, CSS) chặn việc render | Tải trước các tài nguyên bên ngoài hoặc dùng trình duyệt headless để nhúng chúng. | + +### Trường hợp đặc biệt: Chuyển đổi HTML từ chuỗi + +Nếu nội dung HTML của bạn tồn tại trong bộ nhớ thay vì tệp, bạn vẫn có thể **cách bật streaming** bằng cách bọc chuỗi vào hàm khởi tạo `HTMLDocument` chấp nhận HTML thô: + +```python +html_content = "

Report

" +doc = HTMLDocument(html_content, is_raw=True) # `is_raw` tells the SDK the input is a string +Converter.convert(doc, pdf_opts, "report.pdf") +``` + +Hành vi streaming vẫn giống hệt vì SDK sẽ ghi PDF một cách tuần tự. + +## Script đầy đủ bạn có thể sao chép‑dán + +Dưới đây là một ví dụ hoàn chỉnh, sẵn sàng chạy, bao gồm tất cả các bước đã thảo luận. Thay `YOUR_DIRECTORY` bằng đường dẫn thực tế trên máy của bạn. + +```python +# full_example.py +import os +from groupdocs.conversion import HTMLDocument, PdfSaveOptions, Converter + +def convert_html_to_pdf_with_streaming(src_html_path: str, dest_pdf_path: str) -> None: + """ + Convert a large HTML file to PDF while streaming the output. + This function demonstrates how to enable streaming, which reduces memory usage. + """ + # Verify source exists + if not os.path.isfile(src_html_path): + raise FileNotFoundError(f"Source HTML not found: {src_html_path}") + + # Load the HTML document + doc = HTMLDocument(src_html_path) + + # Configure PDF save options with streaming enabled + pdf_opts = PdfSaveOptions() + pdf_opts.enable_streaming = True # critical for large files + + # Perform the conversion + Converter.convert(doc, pdf_opts, dest_pdf_path) + print(f"Conversion complete: {dest_pdf_path}") + +if __name__ == "__main__": + SOURCE = "YOUR_DIRECTORY/large.html" + DESTINATION = "YOUR_DIRECTORY/large.pdf" + convert_html_to_pdf_with_streaming(SOURCE, DESTINATION) +``` + +Chạy `python full_example.py` sẽ tạo ra `large.pdf` bằng cách sử dụng phương pháp streaming. + +## Tóm tắt + +- Bạn đã biết **cách bật streaming** cho chuyển đổi HTML‑to‑PDF trong Python. +- Script minh họa quy trình **convert html to pdf** đầy đủ, xử lý hiệu quả các tải công việc **large html to pdf**. +- Bằng cách đặt `PdfSaveOptions.enable_streaming = True`, bộ chuyển đổi sẽ ghi đầu ra từng phần, đây là cách được khuyến nghị để **stream html to pdf**. + +## Những gì bạn nên khám phá tiếp theo + +- Thư viện **HTML to PDF Python** hỗ trợ CSS3 và JavaScript (ví dụ: `WeasyPrint`, `pdfkit`). +- Thêm bảo vệ bằng mật khẩu hoặc mã hoá cho PDF được tạo thông qua các thiết lập bổ sung của `PdfSaveOptions`. +- Song song hoá nhiều chuyển đổi trong hệ thống hàng đợi (Celery, RabbitMQ) đồng thời giữ mức sử dụng bộ nhớ thấp. + +Hãy tự do thử nghiệm với các nguồn HTML khác nhau, kích thước trang và siêu dữ liệu PDF. Streaming giúp bạn xử lý các tài liệu còn lớn hơn mà không làm giảm hiệu năng. Chúc bạn lập trình vui vẻ! + +## Bạn Nên Học Gì Tiếp Theo? + + +Các hướng dẫn sau đây đề cập đến các chủ đề liên quan chặt chẽ, xây dựng trên các kỹ thuật được trình bày trong hướng dẫn này. Mỗi tài nguyên bao gồm mã mẫu đầy đủ và các giải thích từng bước để giúp bạn làm chủ các tính năng API bổ sung và khám phá các cách triển khai thay thế trong dự án của mình. + +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Create Fixed Thread Pool for Parallel HTML to PDF Conversion](/html/english/java/conversion-html-to-other-formats/create-fixed-thread-pool-for-parallel-html-to-pdf-conversion/) +- [How to Enable JavaScript in Aspose HTML – Load HTML & Get Text](/html/english/java/advanced-usage/how-to-enable-javascript-in-aspose-html-load-html-get-text/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md b/html/vietnamese/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md new file mode 100644 index 000000000..a154623bd --- /dev/null +++ b/html/vietnamese/python/general/how-to-export-links-while-converting-html-to-markdown/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-08-22 +description: Cách xuất liên kết từ HTML và chuyển đổi thành tệp markdown, bao gồm + cả đoạn văn. Hướng dẫn từng bước chuyển đổi HTML sang markdown. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to export links +- convert html to markdown +- how to convert html +- how to extract paragraphs +- html to markdown file +language: vi +lastmod: 2026-08-22 +og_description: Cách xuất liên kết từ tài liệu HTML và chuyển chúng thành tệp markdown, + bao gồm cả các đoạn văn. Hãy theo dõi hướng dẫn đầy đủ này để chuyển đổi HTML sang + markdown một cách đáng tin cậy. +og_image_alt: How to export links while converting HTML to Markdown +og_title: Cách xuất liên kết khi chuyển đổi HTML sang Markdown – hướng dẫn từng bước +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: How to export links from HTML and convert it to a markdown file, including + paragraphs. Step‑by‑step guide for HTML to markdown conversion. + headline: How to export links while converting HTML to Markdown + type: TechArticle +tags: +- HTML conversion +- Markdown +- Python +title: Cách xuất liên kết khi chuyển đổi HTML sang Markdown +url: /vi/python/general/how-to-export-links-while-converting-html-to-markdown/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách xuất liên kết khi chuyển đổi HTML sang Markdown + +Nếu bạn cần **cách xuất liên kết** từ một trang HTML và chuyển kết quả thành một **tệp html sang markdown** sạch sẽ, hướng dẫn này sẽ chỉ cho bạn các bước chính xác. Bạn cũng sẽ khám phá **cách trích xuất các đoạn văn** để đầu ra markdown chứa nội dung chính mà bạn quan tâm. Khi kết thúc tutorial, bạn có thể trả lời câu hỏi “**cách chuyển đổi html** sang markdown” bằng một script đã sẵn sàng chạy. + +Việc xuất liên kết và trích xuất đoạn văn là các nhiệm vụ phổ biến khi bạn di chuyển nội dung web sang các trang tĩnh, cổng tài liệu, hoặc backend CMS không đầu (headless). Cách tiếp cận dưới đây hoạt động với GroupDocs Conversion SDK cho Python, nhưng các khái niệm áp dụng cho bất kỳ thư viện nào cho phép bạn cấu hình các tính năng xuất. + +--- + +## Những gì bạn cần + +- Python 3.9 hoặc mới hơn +- Gói `groupdocs-conversion` (cài đặt bằng `pip install groupdocs-conversion`) +- Một tệp HTML bạn muốn xử lý (ví dụ: `input.html`) +- Kiến thức cơ bản về lập trình Python + +--- + +## Cách xuất liên kết khi chuyển đổi HTML sang Markdown + +Bước quan trọng đầu tiên là cấu hình chuyển đổi sao cho chỉ các tính năng mong muốn—liên kết và đoạn văn—được ghi vào **tệp html sang markdown**. SDK cho phép bạn đặt một bitmask của các giá trị `MarkdownFeature`; chúng ta kết hợp `LINKS` và `PARAGRAPHS` để giữ đầu ra tập trung. + +```python +# Import the required classes from the GroupDocs Conversion SDK +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +# Step 1: Load the source HTML document +html_doc = HTMLDocument("YOUR_DIRECTORY/input.html") + +# Step 2: Create Markdown save options and select the features to export +markdown_options = MarkdownSaveOptions() +# Export only links and paragraphs from the HTML +markdown_options.features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + +# Step 3: Convert the HTML to Markdown using the configured options +output_path = "YOUR_DIRECTORY/links_and_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) + +print(f"Conversion complete. Markdown saved to {output_path}") +``` + +### Tại sao cách này hoạt động + +- **`HTMLDocument`** phân tích tệp gốc và xây dựng một DOM mà bộ chuyển đổi có thể duyệt. +- **`MarkdownSaveOptions`** cung cấp cho bạn kiểm soát chi tiết về những gì SDK ghi. Đặt `features` thành `LINKS | PARAGRAPHS` nói với engine bỏ qua hình ảnh, bảng, hoặc script, giảm tiếng ồn trong **tệp html sang markdown** cuối cùng. +- **`Converter.convert`** thực hiện phần công việc nặng. Nó tôn trọng mask tính năng, trích xuất các thẻ anchor (``) và thẻ đoạn (`

`), và ghi chúng bằng cú pháp Markdown tiêu chuẩn. + +--- + +## Cách chuyển đổi HTML sang Markdown với toàn bộ nội dung (tùy chọn) + +Nếu sau này bạn quyết định cần toàn bộ trang—không chỉ liên kết và đoạn văn—chỉ cần điều chỉnh mask tính năng: + +```python +# Export everything the SDK supports (links, paragraphs, images, tables, etc.) +markdown_options.features = MarkdownFeature.ALL +``` + +Chạy cùng một chuyển đổi lúc này sẽ tạo ra một **tệp html sang markdown** hoàn chỉnh phản ánh bố cục gốc. Điều này minh họa **cách chuyển đổi html** một cách linh hoạt: bạn kiểm soát đầu ra bằng cách bật/tắt các cờ tính năng. + +--- + +## Cách chỉ trích xuất đoạn văn + +Đôi khi bạn chỉ quan tâm đến phần nội dung văn bản của một bài viết, không cần các siêu liên kết. Bạn có thể cô lập đoạn văn bằng cách đặt mask thành `PARAGRAPHS` duy nhất: + +```python +markdown_options.features = MarkdownFeature.PARAGRAPHS +output_path = "YOUR_DIRECTORY/only_paragraphs.md" +Converter.convert(html_doc, markdown_options, output_path) +``` + +Markdown kết quả sẽ chứa văn bản sạch, ngắt dòng hợp lý mà không có bất kỳ markup liên kết nào. Đoạn mã này trả lời câu hỏi **cách trích xuất đoạn văn** từ nguồn HTML. + +--- + +## Những lỗi thường gặp và cách tránh chúng + +| Vấn đề | Nguyên nhân | Cách khắc phục | +|-------|------------|----------------| +| Tệp đầu ra rỗng | HTML nguồn không chứa thẻ `` hoặc `

` phù hợp với các tính năng đã chọn. | Kiểm tra cấu trúc HTML hoặc mở rộng mask tính năng (ví dụ: bao gồm `HEADINGS`). | +| Vấn đề mã hoá | HTML sử dụng charset không phải UTF‑8 và SDK đọc sai. | Cung cấp mã hoá rõ ràng cho `HTMLDocument`, ví dụ `HTMLDocument(path, encoding="iso-8859-1")`. | +| Ghi đè lên markdown hiện có | Chạy script nhiều lần thay thế tệp trước đó. | Thêm dấu thời gian vào tên tệp đầu ra hoặc kiểm tra `os.path.exists` trước khi ghi. | + +**Mẹo chuyên nghiệp:** Khi xử lý nhiều tệp trong một thư mục, bao bọc logic chuyển đổi trong một vòng lặp và ghi log cho mỗi kết quả. Điều này cung cấp một chuỗi kiểm tra rõ ràng và giúp bạn dễ dàng tiếp tục sau khi gặp lỗi. + +--- + +## Toàn bộ script bạn có thể sao chép‑dán + +Dưới đây là một tệp Python độc lập (`convert_links_paragraphs.py`) mà bạn có thể chạy ngay. Nó bao gồm việc phân tích đối số để bạn có thể chỉ định đường dẫn đầu vào và đầu ra mà không cần chỉnh sửa mã. + +```python +#!/usr/bin/env python3 +""" +convert_links_paragraphs.py + +A complete example that shows how to export links and extract paragraphs +when converting HTML to a markdown file using GroupDocs Conversion SDK. +""" + +import argparse +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter + +def convert_html_to_md(input_html: str, output_md: str, features: int) -> None: + """Perform the conversion with the given feature mask.""" + if not os.path.isfile(input_html): + raise FileNotFoundError(f"Input file not found: {input_html}") + + # Load the HTML document + html_doc = HTMLDocument(input_html) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.features = features + + # Run the conversion + Converter.convert(html_doc, md_options, output_md) + print(f"✅ Conversion finished – markdown saved to: {output_md}") + +def main() -> None: + parser = argparse.ArgumentParser( + description="How to export links while converting HTML to Markdown." + ) + parser.add_argument("input", help="Path to the source HTML file.") + parser.add_argument( + "output", + help="Path for the resulting markdown file (e.g., links_and_paragraphs.md).", + ) + parser.add_argument( + "--links", + action="store_true", + help="Include links in the markdown output.", + ) + parser.add_argument( + "--paragraphs", + action="store_true", + help="Include paragraphs in the markdown output.", + ) + args = parser.parse_args() + + # Build the feature mask based on user flags + selected_features = 0 + if args.links: + selected_features |= MarkdownFeature.LINKS + if args.paragraphs: + selected_features |= MarkdownFeature.PARAGRAPHS + + # Default to both links and paragraphs if no flag is provided + if selected_features == 0: + selected_features = MarkdownFeature.LINKS | MarkdownFeature.PARAGRAPHS + + try: + convert_html_to_md(args.input, args.output, selected_features) + except Exception as exc: + print(f"❌ Conversion failed: {exc}") + +if __name__ == "__main__": + main() +``` + +**Cách chạy** + +```bash +python convert_links_paragraphs.py YOUR_DIRECTORY/input.html YOUR_DIRECTORY/links_and_paragraphs.md --links --paragraphs +``` + +Lệnh trên minh họa **cách xuất liên kết** và **cách trích xuất đoạn văn** trong một lần gọi. Bỏ `--links` hoặc `--paragraphs` để tùy chỉnh đầu ra theo nhu cầu của bạn. + +--- + +## Kiểm tra – đầu ra trông như thế nào + +Cho HTML đơn giản sau (`input.html`): + +```html + + +Sample page + +

Welcome to the tutorial.

+

Visit our site for more info.

+ + +``` + +Chạy script với cả hai flag sẽ tạo ra `links_and_paragraphs.md`: + +```markdown +Welcome to the tutorial. + +Visit [our site](https://example.com) for more info. +``` + +Bạn sẽ thấy chỉ có hai đoạn văn và một siêu liên kết được giữ lại—đúng như yêu cầu khi bạn tìm **cách xuất liên kết** trong khi thực hiện **chuyển đổi html sang markdown**. + +--- + +## Các bước tiếp theo và các chủ đề liên quan + +- **Cách chuyển đổi html sang markdown** với hình ảnh: thêm `MarkdownFeature.IMAGES` vào mask. +- **Cách trích xuất đoạn văn** và sau đó xử lý tiếp + +## Bạn Nên Học Gì Tiếp Theo? + + +Các tutorial sau đây bao gồm các chủ đề liên quan chặt chẽ, xây dựng trên các kỹ thuật được trình bày trong hướng dẫn này. Mỗi tài nguyên đều có mã mẫu đầy đủ và giải thích từng bước để giúp bạn nắm vững các tính năng API bổ sung và khám phá các cách triển khai thay thế trong dự án của mình. + +- [How to Set Offset When Converting HTML to Markdown in Java](/html/english/java/conversion-html-to-other-formats/how-to-set-offset-when-converting-html-to-markdown-in-java/) +- [Markdown to HTML Java - Convert with Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) +- [Convert HTML to Markdown – Complete C# Guide](/html/english/java/conversion-html-to-other-formats/convert-html-to-markdown-complete-c-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-load-html-with-aspose-html-in-python/_index.md b/html/vietnamese/python/general/how-to-load-html-with-aspose-html-in-python/_index.md new file mode 100644 index 000000000..a342ac5ce --- /dev/null +++ b/html/vietnamese/python/general/how-to-load-html-with-aspose-html-in-python/_index.md @@ -0,0 +1,280 @@ +--- +category: general +date: 2026-08-22 +description: Cách tải HTML bằng Aspose.HTML trong Python – giới hạn độ sâu tài nguyên + và chuẩn bị tài liệu để chuyển đổi hoặc chỉnh sửa. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to load html +- Aspose.HTML for Python +- HTMLDocument class +- ResourceHandlingOptions +- max_handling_depth +- HTML conversion +language: vi +lastmod: 2026-08-22 +og_description: Cách tải HTML bằng Aspose.HTML trong Python, thiết lập độ sâu xử lý + tài nguyên và chuẩn bị tài liệu để chuyển đổi hoặc chỉnh sửa. +og_image_alt: Screenshot of Python code loading an HTML file using Aspose.HTML +og_title: Cách tải HTML bằng Aspose.HTML – Hướng dẫn Python +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + headline: How to load HTML with Aspose.HTML in Python + type: TechArticle +- description: How to load HTML with Aspose.HTML in Python – limit resource depth + and get the document ready for conversion or editing. + name: How to load HTML with Aspose.HTML in Python + steps: + - name: '**Convert to PDF** – Ideal for archiving or printing.' + text: '**Convert to PDF** – Ideal for archiving or printing.' + - name: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + text: '**Render to PNG/JPEG** – Useful for thumbnails or visual previews.' + - name: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + text: '**Edit the DOM** – Insert, remove, or modify elements before saving.' + - name: '**Extract text** – Pull plain‑text content for indexing or analysis.' + text: '**Extract text** – Pull plain‑text content for indexing or analysis.' + type: HowTo +tags: +- Python +- Aspose.HTML +- HTML processing +title: Cách tải HTML bằng Aspose.HTML trong Python +url: /vi/python/general/how-to-load-html-with-aspose-html-in-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách tải HTML với Aspose.HTML trong Python + +Nếu bạn cần **cách tải html** nhanh chóng và an toàn trong một dự án Python, hướng dẫn này sẽ cho bạn các bước chính xác. Sau hai câu đầu tiên, bạn sẽ biết cách cấu hình việc xử lý tài nguyên, tải tệp, và chuẩn bị quy trình cho việc **chuyển đổi HTML** hoặc chỉnh sửa tiếp theo. + +Việc tải các trang lớn hoặc phức tạp thường làm cho các bộ phân tích ngây thơ gặp khó khăn vì các tài nguyên bên ngoài (hình ảnh, script, CSS) có thể gây đệ quy sâu hoặc độ trễ mạng. Bài hướng dẫn này đề cập đến một mẫu mạnh mẽ sử dụng **Aspose.HTML for Python**, trình bày **HTMLDocument class**, và giải thích lý do việc thiết lập **max_handling_depth** quan trọng. + +Bạn sẽ đi qua: + +* Cài đặt gói Aspose.HTML +* Tạo một thể hiện `ResourceHandlingOptions` và giới hạn độ sâu +* Sử dụng lớp `HTMLDocument` để tải một trang +* Chuẩn bị tài liệu để chuyển đổi sang PDF, PNG, hoặc thao tác tiếp theo + +Không cần kinh nghiệm trước với Aspose.HTML, chỉ cần kiến thức cơ bản về Python. + +--- + +## Cách tải HTML với Aspose.HTML trong Python + +Cốt lõi của giải pháp là một mẫu ba‑bước kết hợp **ResourceHandlingOptions** với **HTMLDocument class**. Giới hạn độ sâu xử lý ngăn các cuộc gọi mạng không kiểm soát khi một trang tham chiếu nhiều tài nguyên lồng nhau. + +```python +# Step 1: Import the required Aspose.HTML classes +from aspose.html import HTMLDocument, ResourceHandlingOptions + +# Step 2: Create resource‑handling options and limit the depth to 3 levels +rh_opts = ResourceHandlingOptions() +rh_opts.max_handling_depth = 3 # Prevents deep recursion + +# Step 3: Load the HTML document using the configured options +doc = HTMLDocument("YOUR_DIRECTORY/big_page.html", resource_handling_options=rh_opts) + +# Step 4: The document is now ready for further processing (e.g., conversion, editing) +# Example: convert to PDF (requires Aspose.HTML for PDF support) +# from aspose.html import PDFSaveOptions +# pdf_opts = PDFSaveOptions() +# doc.save("output.pdf", pdf_opts) +``` + +### Tại sao cách này hoạt động + +* **`ResourceHandlingOptions`** cho bộ phân tích biết bao nhiêu cấp độ tài nguyên bên ngoài nó có thể theo dõi. Đặt `max_handling_depth = 3` dừng bộ tải sau ba lần nhảy, đủ cho hầu hết các trang nhưng bảo vệ khỏi vòng lặp vô hạn. +* **`HTMLDocument`** đọc tệp, áp dụng các tùy chọn, và xây dựng một DOM trong bộ nhớ mà bạn có thể truy vấn, sửa đổi hoặc render. +* Đoạn mã chuyển đổi tùy chọn minh họa cách tài liệu đã tải tích hợp với các tính năng **HTML conversion**, chẳng hạn lưu dưới dạng PDF. + +--- + +## Hiểu về ResourceHandlingOptions + +`ResourceHandlingOptions` là một phần của **Aspose.HTML for Python** và cho phép bạn kiểm soát chi tiết hoạt động mạng. + +| Thuộc tính | Mục đích | Giá trị điển hình | +|---------------------------|-----------------------------------------------------|-------------------| +| `max_handling_depth` | Độ sâu đệ quy tối đa cho các tài nguyên liên kết | `3` (mặc định) | +| `allow_external_resources` | Có tải về CSS, JS, hình ảnh bên ngoài hay không | `True` | +| `timeout` | Thời gian chờ mạng cho mỗi yêu cầu (giây) | `30` | + +**Mẹo thực tế:** Nếu bạn biết trang mục tiêu chỉ tham chiếu các tài sản nội bộ, đặt `allow_external_resources = False` để tăng tốc tải và tránh các cuộc gọi HTTP không cần thiết. + +```python +rh_opts.allow_external_resources = False +rh_opts.timeout = 15 +``` + +--- + +## Sử dụng lớp HTMLDocument + +**HTMLDocument class** là điểm khởi đầu cho mọi thao tác Aspose.HTML. Khi đã khởi tạo, bạn có thể: + +* Truy cập DOM qua `doc.root` +* Truy vấn các phần tử bằng CSS selector (`doc.query_selector_all("img")`) +* Render trang sang định dạng raster (`doc.save("page.png")`) +* Chuyển đổi sang PDF (`doc.save("page.pdf", PDFSaveOptions())`) + +Dưới đây là một đoạn mã ngắn trích xuất tất cả thuộc tính `src` của hình ảnh sau khi tải: + +```python +# Extract all image sources from the loaded document +images = doc.query_selector_all("img") +src_list = [img.get_attribute("src") for img in images] + +print("Found images:") +for src in src_list: + print(" -", src) +``` + +**Tại sao bạn có thể cần điều này:** Khi thực hiện **HTML conversion**, bạn thường phải điều chỉnh hoặc thay thế URL hình ảnh trước khi render sang định dạng khác. Truy cập DOM trực tiếp cung cấp sự linh hoạt này. + +--- + +## Các bước tiếp theo sau khi tải HTML + +Bây giờ tài liệu đã nằm trong bộ nhớ, bạn có thể chọn một trong vài quy trình làm việc phổ biến: + +1. **Chuyển đổi sang PDF** – Lý tưởng cho lưu trữ hoặc in ấn. +2. **Render sang PNG/JPEG** – Hữu ích cho ảnh thu nhỏ hoặc preview trực quan. +3. **Chỉnh sửa DOM** – Thêm, xóa hoặc sửa đổi các phần tử trước khi lưu. +4. **Trích xuất văn bản** – Lấy nội dung plain‑text để lập chỉ mục hoặc phân tích. + +### Ví dụ: Chuyển đổi sang PDF với kích thước trang tùy chỉnh + +```python +from aspose.html import PDFSaveOptions, PageSetup + +pdf_opts = PDFSaveOptions() +page_setup = PageSetup() +page_setup.width = 595 # A4 width in points +page_setup.height = 842 # A4 height in points +pdf_opts.page_setup = page_setup + +doc.save("big_page.pdf", pdf_opts) +print("PDF saved as big_page.pdf") +``` + +**Kết quả mong đợi:** Một tệp có tên `big_page.pdf` xuất hiện trong thư mục làm việc, chứa HTML đã render với tất cả các tài nguyên được cho phép. Nếu bạn đặt `max_handling_depth` thành 3, chỉ các tài nguyên sâu tối đa ba cấp sẽ được nhúng, giữ kích thước PDF ở mức hợp lý. + +--- + +## Những cạm bẫy thường gặp và cách tránh + +| Triệu chứng | Nguyên nhân | Cách khắc phục | +|------------------------------------------|-----------------------------------------------|----------------| +| Thiếu hình ảnh trong PDF đã render | `allow_external_resources` được đặt thành `False` | Bật tài nguyên bên ngoài hoặc nhúng hình ảnh cục bộ | +| `TimeoutError` khi tải | Độ trễ mạng vượt quá `timeout` | Tăng `rh_opts.timeout` hoặc tải trước các tài nguyên | +| Kiểu dáng CSS không mong muốn | Stylesheet liên kết không được tải do giới hạn độ sâu | Tăng `max_handling_depth` hoặc thêm CSS cần thiết thủ công | +| `UnicodeDecodeError` trên tệp không phải UTF‑8 | Tệp HTML sử dụng mã hoá khác | Truyền `encoding="windows-1252"` khi tạo `HTMLDocument` | + +--- + +## Ví dụ đầy đủ, có thể chạy được + +Dưới đây là một script tự chứa mà bạn có thể sao chép‑dán vào tệp có tên `load_html_demo.py`. Nó bao gồm hướng dẫn cài đặt, xử lý lỗi, và bước xác minh cuối cùng. + +```python +#!/usr/bin/env python3 +""" +How to load HTML with Aspose.HTML in Python – complete demo +""" + +# 1️⃣ Install Aspose.HTML for Python (run once) +# pip install aspose-html + +# 2️⃣ Import required classes +from aspose.html import HTMLDocument, ResourceHandlingOptions, PDFSaveOptions, PageSetup + +def load_html(file_path: str, max_depth: int = 3): + """Load an HTML file with limited resource depth.""" + rh_opts = ResourceHandlingOptions() + rh_opts.max_handling_depth = max_depth + rh_opts.allow_external_resources = True # change to False if you only need local assets + rh_opts.timeout = 30 # seconds + + try: + doc = HTMLDocument(file_path, resource_handling_options=rh_opts) + print(f"Successfully loaded '{file_path}' with depth {max_depth}.") + return doc + except Exception as e: + print(f"Error loading HTML: {e}") + raise + +def list_images(doc: HTMLDocument): + """Print all image URLs found in the document.""" + images = doc.query_selector_all("img") + srcs = [img.get_attribute("src") for img in images] + if not srcs: + print("No tags found.") + else: + print("Image sources:") + for src in srcs: + print(f" - {src}") + +def convert_to_pdf(doc: HTMLDocument, out_path: str): + """Save the loaded HTML as a PDF with A4 page size.""" + pdf_opts = PDFSaveOptions() + page_setup = PageSetup() + page_setup.width = 595 # A4 width (points) + page_setup.height = 842 # A4 height (points) + pdf_opts.page_setup = page_setup + doc.save(out_path, pdf_opts) + print(f"PDF saved to '{out_path}'.") + +if __name__ == "__main__": + html_file = "YOUR_DIRECTORY/big_page.html" # <-- adjust path + pdf_file = "big_page.pdf" + + # Load the HTML document + document = load_html(html_file, max_depth=3) + + # List images (demonstrates DOM access) + list_images(document) + + # Convert to PDF (demonstrates HTML conversion) + convert_to_pdf(document, pdf_file) +``` + +**Chạy script** + +```bash +python load_html_demo.py +``` + +Bạn sẽ thấy đầu ra console xác nhận việc tải, danh sách URL hình ảnh, và thông báo thành công cho việc chuyển đổi PDF. Tệp `big_page.pdf` được tạo sẽ phản ánh nội dung HTML bị giới hạn bởi **max_handling_depth** đã cấu hình. + +--- + +## Kết luận + +Trong tutorial này chúng tôi đã trình bày **cách tải html** bằng **Aspose.HTML for Python**, cấu hình **ResourceHandlingOptions** để kiểm soát `max_handling_depth`, và minh họa các hành động sau tải thực tiễn như trích xuất hình ảnh và chuyển đổi PDF. Khi làm theo các bước, bạn đã có một nền tảng đáng tin cậy cho bất kỳ quy trình **HTML conversion** nào, dù bạn đang xây dựng một web‑scraper, dịch vụ lưu trữ tài liệu, hay trình tạo báo cáo động. + +**Các bước tiếp theo** + +* Thử nghiệm với các giá trị `max_handling_depth` khác nhau để cân bằng giữa độ đầy đủ và hiệu năng. +* Thử chuyển đổi tài liệu sang + +## Bạn nên học gì tiếp theo? + +Các tutorial sau đây đề cập đến các chủ đề liên quan chặt chẽ, xây dựng trên các kỹ thuật đã được trình bày trong hướng dẫn này. Mỗi tài nguyên bao gồm các ví dụ mã hoàn chỉnh với giải thích từng bước để giúp bạn nắm vững các tính năng API bổ sung và khám phá các cách triển khai thay thế trong dự án của mình. + +- [Cách phân tích HTML Java – Tải, Truy vấn & Đếm phần tử](/html/english/java/creating-managing-html-documents/how-to-parse-html-java-load-query-count-elements/) +- [Cách chỉnh sửa cây tài liệu HTML trong Aspose.HTML cho Java](/html/english/java/editing-html-documents/edit-html-document-tree/) +- [Xử lý sự kiện tải tài liệu trong Aspose.HTML cho Java](/html/english/java/creating-managing-html-documents/handle-document-load-events/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file

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 literal 0 HcmV?d00001 diff --git a/html/french/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md b/html/french/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md new file mode 100644 index 000000000..c40ac4138 --- /dev/null +++ b/html/french/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/_index.md @@ -0,0 +1,192 @@ +--- +category: general +date: 2026-08-22 +description: Comment convertir du HTML en PDF en Python avec Aspose.HTML – apprenez + à créer un PDF à partir d’un fichier HTML, à générer un PDF à partir de code HTML + et à enregistrer du HTML en PDF rapidement avec Python. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to convert html to pdf +- create pdf from html file +- generate pdf from html code +- save html as pdf python +- convert html to pdf python +language: fr +lastmod: 2026-08-22 +og_description: Comment convertir du HTML en PDF en Python avec Aspose.HTML. Ce tutoriel + vous montre comment créer un PDF à partir d’un fichier HTML, générer un PDF à partir + de code HTML et enregistrer du HTML en PDF avec Python. +og_image_alt: Screenshot of Python code converting an HTML document to a PDF file +og_title: Comment convertir du HTML en PDF avec Python – guide étape par étape +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: How to convert HTML to PDF in Python using Aspose.HTML – learn to create + PDF from HTML file, generate PDF from HTML code, and save HTML as PDF Python quickly. + headline: How to convert HTML to PDF in Python with Aspose.HTML + type: TechArticle +tags: +- Aspose.HTML +- Python +- PDF conversion +- HTML processing +title: Comment convertir du HTML en PDF en Python avec Aspose.HTML +url: /fr/python/general/how-to-convert-html-to-pdf-in-python-with-aspose-html/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment convertir HTML en PDF en Python avec Aspose.HTML + +Si vous avez besoin de **how to convert html to pdf** rapidement, ce guide vous montre une solution complète, prête à l’emploi. Vous verrez comment **create pdf from html file**, **generate pdf from html code**, et **save html as pdf python** en utilisant l’API simple d’Aspose.HTML. + +Nous parcourrons chaque étape, expliquerons pourquoi chaque ligne est importante, et couvrirons les pièges courants afin que vous puissiez adapter le code à n’importe quel projet. Aucun outil externe, seulement quelques lignes de Python. + +## Prérequis + +* Python 3.8 ou version supérieure installé. +* Une licence active d’Aspose.HTML pour Python (ou une clé d’évaluation gratuite). +* Le package `aspose.html` installé : + +```bash +pip install aspose-html +``` + +Disposer de ces éléments garantit que la conversion s’exécute sans erreurs d’exécution. + +## Étape 1 : Charger le document HTML (create pdf from html file) + +La première tâche consiste à lire le HTML source. Aspose.HTML représente un document avec la classe `HTMLDocument`, qui abstrait les entrées/sorties de fichiers, la récupération réseau et l’analyse du DOM. + +```python +from aspose.html import HTMLDocument + +# Replace YOUR_DIRECTORY with the folder that contains sample.html +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +*Pourquoi c’est important :* +`HTMLDocument` charge le HTML, résout les ressources relatives (images, CSS, polices), et construit un DOM que le convertisseur peut rendre avec précision. Ignorer cette étape ou utiliser une simple chaîne de caractères ferait perdre ces résolutions de ressources. + +## Étape 2 : Configurer les options d’enregistrement PDF (save html as pdf python) + +Aspose.HTML vous permet d’ajuster finement la sortie PDF via `PdfSaveOptions`. La configuration par défaut produit déjà un PDF de haute qualité, mais vous pouvez ajuster la taille de page, la compression ou les métadonnées si nécessaire. + +```python +from aspose.html import PdfSaveOptions + +pdf_options = PdfSaveOptions() +# Example: set page size to A4 (optional) +# pdf_options.page_setup.size = PdfSaveOptions.PageSize.A4 +``` + +*Pourquoi c’est important :* +Même si vous conservez les valeurs par défaut, créer un objet d’options rend le code extensible. Des changements futurs — comme l’ajout d’un mot de passe PDF — peuvent être intégrés sans restructurer le script. + +## Étape 3 : Effectuer la conversion (convert html to pdf python) + +La méthode `Converter.convert` lie le document HTML et les options PDF, en écrivant le résultat vers le chemin de fichier que vous spécifiez. + +```python +from aspose.html import Converter + +output_path = "YOUR_DIRECTORY/sample.pdf" +Converter.convert(html_doc, pdf_options, output_path) +print(f"PDF saved to {output_path}") +``` + +*Pourquoi c’est important :* +`Converter.convert` exécute le moteur de rendu, rasterisant le HTML/CSS en vecteurs PDF. Il gère automatiquement les mises en page complexes, les polices intégrées et les graphiques SVG — ce que les bibliothèques manuelles manquent souvent. + +### Résultat attendu + +L’exécution du script génère `sample.pdf` dans le même répertoire. Ouvrez-le avec n’importe quel lecteur PDF ; vous devriez voir une représentation fidèle de `sample.html`, incluant les styles, les images et les sauts de page. + +## Variations courantes et cas limites + +| Situation | Comment le gérer | +|-----------|-----------------| +| **HTML est une chaîne, pas un fichier** | Utilisez `HTMLDocument.from_string(html_string)` au lieu de charger depuis un chemin. | +| **Vous avez besoin d’un PDF protégé par mot de passe** | Définissez `pdf_options.encryption.password = "yourPassword"` avant la conversion. | +| **Les gros fichiers HTML provoquent une pression mémoire** | Activez le mode streaming : `pdf_options.save_mode = PdfSaveOptions.SaveMode.Stream`. | +| **Les polices personnalisées sont manquantes** | Enregistrez le dossier de polices : `pdf_options.fonts_folder = "path/to/fonts"`. | + +Ces variations illustrent la flexibilité de l’API Aspose.HTML tout en conservant le flux de travail principal identique. + +## Script complet (generate pdf from html code) + +Ci-dessous le programme complet et exécutable qui intègre toutes les étapes. Copiez‑collez‑le, remplacez `YOUR_DIRECTORY` par un dossier réel, puis exécutez‑le. + +```python +# convert_html_to_pdf.py +# ------------------------------------------------- +# Complete example: convert an HTML file to a PDF +# using Aspose.HTML for Python. +# ------------------------------------------------- + +from aspose.html import Converter, HTMLDocument, PdfSaveOptions + +def convert_html_to_pdf(html_path: str, pdf_path: str) -> None: + """ + Loads an HTML document, applies default PDF options, + and writes the rendered PDF to `pdf_path`. + """ + # Load the HTML file + html_doc = HTMLDocument(html_path) + + # Set up PDF save options (default configuration) + pdf_options = PdfSaveOptions() + + # Perform conversion + Converter.convert(html_doc, pdf_options, pdf_path) + +if __name__ == "__main__": + # Update these paths to match your environment + html_file = "YOUR_DIRECTORY/sample.html" + pdf_file = "YOUR_DIRECTORY/sample.pdf" + + convert_html_to_pdf(html_file, pdf_file) + print(f"PDF successfully created at: {pdf_file}") +``` + +Exécutez‑le avec : + +```bash +python convert_html_to_pdf.py +``` + +Vous verrez le message de confirmation, et le PDF apparaîtra à côté du HTML source. + +## Conseils de dépannage (pro tip) + +* **Missing images or CSS** – Assurez‑vous que le fichier HTML utilise des URL absolues ou que les chemins relatifs sont corrects par rapport à `YOUR_DIRECTORY`. +* **Unicode characters appear as squares** – Intégrez les polices requises via `pdf_options.fonts_folder`. +* **Conversion is slow** – Activez `pdf_options.use_system_fonts = False` pour éviter de parcourir le catalogue de polices du système. + +## Conclusion + +Vous savez maintenant **how to convert html to pdf** en Python avec Aspose.HTML, depuis le chargement d’un fichier HTML jusqu’à l’enregistrement d’un PDF de haute qualité. Le même modèle vous permet de **create pdf from html file**, **generate pdf from html code**, et **save html as pdf python** pour tout flux de travail d’automatisation. + +Ensuite, vous pourriez explorer : + +* Ajouter des filigranes ou des en‑têtes/pieds de page (mot‑clé : *create pdf from html file*). +* Convertir une URL en direct au lieu d’un fichier local (mot‑clé : *convert html to pdf python*). +* Intégrer le convertisseur dans une API Flask ou Django pour fournir des PDFs à la demande. + +## Que devriez‑vous apprendre ensuite ? + +Les tutoriels suivants couvrent des sujets étroitement liés qui s’appuient sur les techniques démontrées dans ce guide. Chaque ressource comprend des exemples de code complets et fonctionnels avec des explications étape par étape pour vous aider à maîtriser des fonctionnalités supplémentaires de l’API et explorer des approches d’implémentation alternatives dans vos propres projets. + +- [Convertir HTML en PDF avec Aspose.HTML – Guide complet de manipulation](/html/english/) +- [Comment convertir HTML en PDF Java – Utilisation d’Aspose.HTML pour Java](/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf/) +- [Convertir HTML en PDF en .NET avec Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-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/french/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md b/html/french/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md new file mode 100644 index 000000000..fa15f3ff6 --- /dev/null +++ b/html/french/python/general/how-to-create-markdown-from-html-in-python-complete-guide/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-08-22 +description: Apprenez à créer du markdown à partir d’un fichier HTML en utilisant + Python. Ce guide étape par étape montre comment convertir le HTML en markdown avec + une bibliothèque fiable. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to create markdown +- convert html to markdown +- html file to markdown +- html to markdown python +- html to markdown library +language: fr +lastmod: 2026-08-22 +og_description: Comment créer du markdown à partir d'un fichier HTML avec Python. + Suivez ce guide pour convertir rapidement le HTML en markdown grâce à une bibliothèque + éprouvée. +og_image_alt: Screenshot showing how to create markdown from HTML in Python +og_title: Comment créer du markdown à partir de HTML en Python – guide complet +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from an HTML file using Python. This step‑by‑step + guide shows how to convert HTML to markdown with a reliable library. + headline: How to create markdown from HTML in Python – complete guide + type: TechArticle +tags: +- markdown +- python +- html conversion +- documentation +title: Comment créer du markdown à partir de HTML en Python – guide complet +url: /fr/python/general/how-to-create-markdown-from-html-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment créer du markdown à partir de HTML en Python – guide complet + +Si vous avez besoin de savoir **comment créer du markdown** à partir de contenu web existant, vous pouvez convertir un fichier HTML en markdown avec seulement quelques lignes de Python. Ce tutoriel vous guide à travers **convert html to markdown** en utilisant une **bibliothèque html to markdown** dédiée qui fonctionne sous Windows, macOS et Linux. + +Vous apprendrez comment installer la bibliothèque, charger un document HTML, configurer les options de markdown de type Git, et écrire le résultat sur le disque. À la fin du guide, vous pourrez transformer automatiquement n'importe quel **html file to markdown**, ce qui est utile pour les générateurs de sites statiques, les pipelines de documentation ou les projets de migration de contenu. + +## Prérequis + +* Python 3.8 ou plus récent installé (vérifiez avec `python --version`). +* Accès à un terminal ou à l’invite de commande. +* Un fichier HTML que vous souhaitez convertir (l'exemple utilise `sample.html`). +* Connexion Internet pour installer le paquet requis. + +L'exemple de code utilise la bibliothèque **GroupDocs.Conversion for Python**, qui fournit les classes `HTMLDocument`, `MarkdownSaveOptions` et `Converter` présentées plus loin. Les mêmes concepts s'appliquent à d'autres paquets **html to markdown python** tels que `markdownify` ou `html2text` — la seule différence réside dans les instructions d'importation. + +## Comment créer du markdown – étape 1 : installer la bibliothèque html to markdown python + +La première tâche consiste à ajouter la bibliothèque de conversion à votre environnement. Exécutez la commande pip suivante dans votre terminal : + +```bash +pip install groupdocs-conversion +``` + +> **Astuce :** Utilisez un environnement virtuel (`python -m venv .venv`) pour garder les dépendances isolées de votre installation Python globale. + +L'installation du paquet vous donne accès aux classes `HTMLDocument`, `MarkdownSaveOptions` et `Converter` nécessaires au processus de conversion. + +## Convert html to markdown – étape 2 : charger le document HTML + +Une fois la bibliothèque installée, importez les classes nécessaires et créez une instance `HTMLDocument` qui pointe vers votre fichier source. + +```python +# step 2: import classes and load the HTML file +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +# Replace YOUR_DIRECTORY with the actual path to your HTML file +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +L'objet `HTMLDocument` lit le fichier et le prépare pour la conversion. Si le fichier n'existe pas, le constructeur lève une `FileNotFoundError`, assurez‑vous donc que le chemin est correct. + +## html file to markdown – étape 3 : configurer les options de markdown de type Git + +De nombreux projets préfèrent le markdown de type Git car il ajoute la prise en charge des tableaux, des listes de tâches et de la syntaxe de texte barré. La bibliothèque vous permet d'activer ce préréglage via la propriété `git` de `MarkdownSaveOptions`. + +```python +# step 3: create markdown options and enable Git‑flavored preset +md_options = MarkdownSaveOptions() +md_options.git = True # enables GitHub‑compatible markdown features +``` + +Définir `git = True` indique au convertisseur d'émettre une syntaxe que GitHub, GitLab et Bitbucket rendent correctement. Si vous avez besoin d'un markdown simple, laissez le drapeau à `False`. + +## Enregistrer la sortie markdown – étape 4 : écrire le résultat avec la bibliothèque html to markdown + +Enfin, invoquez la méthode `Converter.convert`, en passant le document source, l'objet d'options et le chemin de destination. + +```python +# step 4: perform the conversion and save the markdown file +output_path = "YOUR_DIRECTORY/git_flavored.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"Conversion complete! Markdown saved to {output_path}") +``` + +Lorsque le script se termine, `git_flavored.md` contient la représentation markdown de `sample.html`. Vous pouvez ouvrir le fichier dans n'importe quel éditeur ou le fournir directement à un générateur de site statique. + +### Sortie attendue + +En supposant que `sample.html` contienne un titre simple et un paragraphe, le markdown généré pourrait ressembler à : + +```markdown +# Sample Document + +This is a paragraph in the HTML file. It will be converted to plain text in markdown. +``` + +Si le HTML original inclut des tableaux, des listes ou des blocs de code, le préréglage de type Git préservera ces structures en utilisant la syntaxe markdown appropriée. + +## Comprendre la bibliothèque html to markdown + +La bibliothèque **GroupDocs.Conversion** abstrait les détails d'analyse et de rendu que vous auriez autrement à gérer manuellement. Elle : +* Préserve le style basé sur CSS lorsque cela est possible (par ex., gras, italique). +* Génère un markdown propre et lisible sans entités HTML supplémentaires. +* Prend en charge la conversion par lots, vous permettant de parcourir un répertoire de fichiers HTML avec le même code. + +Si vous préférez une solution plus légère, le paquet `markdownify` propose une API à fonction unique : + +```python +from markdownify import markdownify as md + +with open("sample.html", "r", encoding="utf-8") as f: + html_content = f.read() + +markdown = md(html_content, heading_style="ATX") +print(markdown) +``` + +Les deux approches atteignent le même objectif final—**convert html to markdown**—mais l'option GroupDocs offre plus de contrôle sur le format de sortie et s'intègre facilement dans des pipelines de traitement de documents plus importants. + +## Pièges courants et comment les éviter + +| Problème | Pourquoi cela se produit | Solution | +|----------|--------------------------|----------| +| Images manquantes dans le markdown | Le convertisseur n'inclut que les URL d'images ; il n'intègre pas les fichiers. | Assurez‑vous que les fichiers image sont accessibles depuis l'emplacement du markdown ou copiez‑les à côté du résultat. | +| Liens relatifs cassés | Le HTML peut utiliser des chemins relatifs qui deviennent invalides après la conversion. | Utilisez `md_options.base_path` (si disponible) pour réécrire les liens, ou exécutez un script de post‑traitement pour ajuster les chemins. | +| Les caractères Unicode sont échappés | Certaines bibliothèques échappent les caractères non‑ASCII. | Définissez `md_options.encode_utf8 = True` (ou le drapeau équivalent) pour conserver les caractères intacts. | + +Résoudre ces problèmes dès le départ fait gagner du temps lorsque vous passez la conversion à des dizaines ou des centaines de fichiers. + +## Exemple complet et exécutable + +Voici un script autonome que vous pouvez copier, modifier et exécuter immédiatement. Remplacez `YOUR_DIRECTORY` par le dossier réel sur votre machine. + +```python +# markdown_from_html.py +# Complete example that converts an HTML file to Git‑flavored markdown + +import os +from groupdocs.conversion import HTMLDocument, MarkdownSaveOptions, Converter + +def convert_html_to_markdown(html_path: str, markdown_path: str, git_flavored: bool = True) -> None: + """ + Converts the HTML file at ``html_path`` to markdown and writes the result to ``markdown_path``. + + Parameters: + html_path (str): Full path to the source HTML file. + markdown_path (str): Destination path for the generated markdown file. + git_flavored (bool): When True, enables Git‑flavored markdown features. + """ + if not os.path.isfile(html_path): + raise FileNotFoundError(f"Source HTML file not found: {html_path}") + + # Load the HTML document + html_doc = HTMLDocument(html_path) + + # Configure markdown options + md_options = MarkdownSaveOptions() + md_options.git = git_flavored + + # Perform conversion + Converter.convert(html_doc, md_options, markdown_path) + + print(f"Successfully converted '{html_path}' to markdown at '{markdown_path}'") + +if __name__ == "__main__": + # Adjust these paths as needed + src_html = "YOUR_DIRECTORY/sample.html" + dst_md = "YOUR_DIRECTORY/git_flavored.md" + + convert_html_to_markdown(src_html, dst_md) +``` + +Exécutez le script : + +```bash +python markdown_from_html.py +``` + +Vous devriez voir un message de confirmation et un nouveau fichier `git_flavored.md` contenant la version markdown de votre HTML. + +## Conclusion + +Vous savez maintenant **comment créer du markdown** à partir d'une source HTML en utilisant Python. Le guide a couvert l'installation d'une **bibliothèque html to markdown** fiable, le chargement d'un **html file to markdown**, la configuration des options **html to markdown python**, et l'enregistrement du résultat. Avec cette base, vous pouvez automatiser les pipelines de documentation, migrer des pages web héritées ou générer du contenu pour des générateurs de sites statiques. + +**Étapes suivantes** + +* Explorez la conversion par lots en parcourant un dossier de fichiers HTML. +* Personnalisez les `MarkdownSaveOptions` pour contrôler les styles de titres, le formatage des listes ou la gestion des images. +* Combinez ce script avec un workflow CI/CD pour maintenir votre documentation markdown à jour automatiquement. + +Bonne conversion! + +## Que devriez‑vous apprendre ensuite ? + +Les tutoriels suivants couvrent des sujets étroitement liés qui s'appuient sur les techniques démontrées dans ce guide. Chaque ressource comprend des exemples de code complets et fonctionnels avec des explications étape par étape pour vous aider à maîtriser des fonctionnalités d'API supplémentaires et explorer des approches d'implémentation alternatives dans vos propres projets. + +- [Convert HTML to Markdown in Aspose.HTML for Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convert HTML to Markdown in .NET with Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convert markdown to html – Java guide with PDF output](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-markdown-from-html-using-python/_index.md b/html/french/python/general/how-to-create-markdown-from-html-using-python/_index.md new file mode 100644 index 000000000..98eb6c571 --- /dev/null +++ b/html/french/python/general/how-to-create-markdown-from-html-using-python/_index.md @@ -0,0 +1,185 @@ +--- +category: general +date: 2026-08-22 +description: Apprenez à créer du markdown à partir de HTML en Python avec un script + simple en trois étapes. Inclut des options de conversion et des astuces d'exportation. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create markdown from html +- convert html to markdown +- how to convert html +- export html to markdown +- html to markdown python +language: fr +lastmod: 2026-08-22 +og_description: Créez du markdown à partir de HTML avec Python en seulement trois + lignes. Ce guide montre la conversion, les options de formatage et comment exporter + du HTML en markdown efficacement. +og_image_alt: Screenshot of a Python script converting an HTML file to a markdown + file +og_title: Créer du markdown à partir de HTML en Python – guide étape par étape +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: Learn how to create markdown from HTML in Python with a simple three‑step + script. Includes conversion options and export tips. + headline: How to create markdown from HTML using Python + type: TechArticle +tags: +- markdown +- html +- python +- conversion +title: Comment créer du markdown à partir de HTML avec Python +url: /fr/python/general/how-to-create-markdown-from-html-using-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment créer du markdown à partir de HTML avec Python + +Si vous devez **créer du markdown à partir de HTML**, ce court guide montre exactement comment le faire avec Python. Vous verrez un script clair en trois étapes qui charge un fichier HTML, configure la sortie Markdown de type Git et écrit le résultat sur le disque. + +Convertir du contenu web en balisage léger est une tâche courante lors de la création de sites statiques, de pipelines de documentation ou de notebooks d’analyse de données. Dans ce tutoriel, nous aborderons également comment **convertir du HTML en markdown** avec un formatage optionnel, répondrons à la question **comment convertir du HTML** efficacement, et démontrerons le flux de travail **export HTML to markdown** en utilisant la populaire bibliothèque `groupdocs-conversion`. + +## Prérequis + +* Python 3.8 ou une version plus récente installé. +* Le package `groupdocs-conversion` (ou toute bibliothèque qui fournit `HTMLDocument`, `MarkdownSaveOptions` et `Converter`). Installez-le avec : + +```bash +pip install groupdocs-conversion +``` + +* Un fichier HTML que vous souhaitez transformer, par exemple `sample.html` situé dans un dossier que vous contrôlez. + +Aucune dépendance système supplémentaire n’est requise, et le code fonctionne sous Windows, macOS et Linux. + +## Étape 1 : Charger le document HTML source + +La première opération consiste à créer un objet `HTMLDocument` qui représente le fichier source. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 1 – load the source HTML document +html_path = "YOUR_DIRECTORY/sample.html" +html_doc = HTMLDocument(html_path) +``` + +**Pourquoi c’est important :** `HTMLDocument` analyse le fichier, résout les liens relatifs et prépare le DOM pour la conversion. Si le fichier est introuvable, le constructeur lève une `FileNotFoundError` claire, vous permettant de gérer les entrées manquantes dès le départ. + +## Étape 2 : Configurer les options d’enregistrement Markdown (Git‑flavored) + +Markdown possède plusieurs dialectes. Le Git‑flavored Markdown (GFM) ajoute des tableaux, des listes de tâches et des blocs de code délimités, souvent requis pour les fichiers README ou les pages GitHub. + +```python +from groupdocs.conversion import MarkdownSaveOptions, MarkdownFormatter + +# Step 2 – set up the Markdown options +md_options = MarkdownSaveOptions() +# Choose GFM for maximum compatibility with GitHub, GitLab, etc. +md_options.formatter = MarkdownFormatter.GIT # alternative: MarkdownFormatter.DEFAULT +``` + +**Pourquoi c’est important :** En sélectionnant explicitement `MarkdownFormatter.GIT`, vous vous assurez que la sortie suit les mêmes règles que celles rendues par GitHub, évitant les surprises lorsque le markdown est affiché dans un dépôt. Si vous préférez le Markdown simple, remplacez `MarkdownFormatter.GIT` par `MarkdownFormatter.DEFAULT`. + +## Étape 3 : Convertir le document HTML en fichier Markdown + +Appelez maintenant le moteur de conversion et écrivez le résultat vers le chemin cible. + +```python +from groupdocs.conversion import Converter + +# Step 3 – perform the conversion and export the file +output_path = "YOUR_DIRECTORY/sample.md" +Converter.convert(html_doc, md_options, output_path) + +print(f"✅ Conversion complete: {output_path}") +``` + +**Pourquoi c’est important :** `Converter.convert` effectue le travail lourd — traduire les balises HTML en leurs équivalents markdown, préserver les images (en les copiant dans le dossier de sortie si nécessaire), et appliquer le formateur que vous avez sélectionné. La méthode renvoie `None` en cas de succès, mais vous pouvez intercepter `ConversionException` pour un rapport d’erreur détaillé. + +### Sortie attendue + +Après l’exécution du script, `sample.md` contiendra quelque chose comme : + +```markdown +# Sample Title + +This is a paragraph extracted from the original HTML file. + +- Item 1 +- Item 2 +- Item 3 + +```python +print("Hello, world!") +``` + +> A blockquote from the source page. + +[Link text](https://example.com) +``` + +Le markdown exact reflète la structure de `sample.html`. Les tableaux, images et blocs de code seront convertis selon les règles GFM. + +## Variantes courantes et cas limites + +| Situation | Astuce recommandée | +|-----------|--------------------| +| **Fichiers HTML volumineux (>10 MB)** | Augmentez la limite de récursion Python ou diffusez l’entrée en utilisant `HTMLDocument.open_stream()` si la bibliothèque le supporte. | +| **Images référencées avec des URL absolues** | Définissez `md_options.embed_images = True` pour intégrer les images en tant que URI base‑64, ou conservez-les comme liens pour une sortie plus légère. | +| **Vous avez besoin de Markdown simple au lieu de GFM** | Modifiez `md_options.formatter = MarkdownFormatter.DEFAULT`. | +| **Les classes CSS personnalisées doivent être ignorées** | Utilisez `md_options.ignore_css_classes = ["unwanted-class"]`. | +| **Exécution dans un pipeline CI/CD** | Enveloppez le script dans un bloc `try/except` et quittez avec un statut non nul en cas d’échec, afin que le pipeline échoue rapidement. | + +### Astuce pro + +Si vous prévoyez de convertir de nombreux fichiers en lot, réutilisez une seule instance de `MarkdownSaveOptions` et ne changez que les chemins d’entrée/sortie à l’intérieur d’une boucle. Cela réduit la surcharge de création d’objets et accélère le processus d’environ 15 %. + +```python +import os +from pathlib import Path + +source_dir = Path("YOUR_DIRECTORY/html") +target_dir = Path("YOUR_DIRECTORY/md") +target_dir.mkdir(parents=True, exist_ok=True) + +for html_file in source_dir.glob("*.html"): + md_file = target_dir / f"{html_file.stem}.md" + doc = HTMLDocument(str(html_file)) + Converter.convert(doc, md_options, str(md_file)) + print(f"Converted {html_file.name} → {md_file.name}") +``` + +## Comment convertir du HTML en markdown dans d’autres langages (note rapide) + +Bien que ce tutoriel se concentre sur **html to markdown python**, les mêmes concepts s’appliquent aux SDK Java, C# ou JavaScript : créez un objet document, configurez un formateur markdown, et invoquez le convertisseur. Si vous avez besoin un jour de **export HTML to markdown** depuis un environnement non‑Python, recherchez les classes équivalentes `HtmlDocument`, `MarkdownSaveOptions` et `Converter` dans le SDK spécifique au langage. + +## Conclusion + +Vous savez maintenant comment **créer du markdown à partir de HTML** avec un script Python concis. Le flux en trois étapes — charger le HTML, définir les options Git‑flavored, et exécuter la conversion — couvre le cœur de tout flux de travail **convert html to markdown**. À partir d’ici, vous pouvez : + +* Intégrer le script dans des générateurs de sites statiques. +* Automatiser les mises à jour de documentation dans les pipelines CI. +* Étendre la conversion avec un post‑traitement personnalisé (par ex., réécriture de liens ou ajustements de titres). + +N’hésitez pas à expérimenter avec les options secondaires — **how to convert html** avec différents formateurs, ou à ajuster les paramètres **export html to markdown** pour les images et les tableaux. Bonne conversion ! + +## Que devriez‑vous apprendre ensuite ? + +Les tutoriels suivants couvrent des sujets étroitement liés qui s’appuient sur les techniques démontrées dans ce guide. Chaque ressource inclut des exemples de code complets et fonctionnels avec des explications pas à pas pour vous aider à maîtriser des fonctionnalités d’API supplémentaires et explorer des approches d’implémentation alternatives dans vos propres projets. + +- [Convertir HTML en Markdown avec Aspose.HTML pour Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Convertir HTML en Markdown en .NET avec Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [Convertir markdown en html – guide Java avec sortie PDF](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html-java-guide-with-pdf-output/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md b/html/french/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md new file mode 100644 index 000000000..10179d70d --- /dev/null +++ b/html/french/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/_index.md @@ -0,0 +1,283 @@ +--- +category: general +date: 2026-08-22 +description: Créez un PDF à partir de SVG avec Python en quelques minutes. Apprenez + à convertir SVG en PDF, à enregistrer SVG en PDF et à utiliser un convertisseur + SVG vers PDF fiable. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- create pdf from svg +- convert svg to pdf +- svg file to pdf +- svg to pdf converter +- save svg as pdf +language: fr +lastmod: 2026-08-22 +og_description: Créez un PDF à partir de SVG avec Python rapidement. Ce guide montre + comment convertir un SVG en PDF, utiliser un convertisseur SVG vers PDF et enregistrer + un SVG en PDF dans un seul script. +og_image_alt: Screenshot of a Python script converting an SVG file to a PDF document +og_title: Créer un PDF à partir de SVG en Python – tutoriel étape par étape +schemas: +- author: Aspose + dateModified: '2026-08-22' + description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + headline: How to create PDF from SVG in Python – complete guide + type: TechArticle +- description: Create PDF from SVG using Python in minutes. Learn to convert SVG to + PDF, save SVG as PDF, and use a reliable SVG to PDF converter. + name: How to create PDF from SVG in Python – complete guide + steps: + - name: Load the **SVG document** from disk. + text: Load the **SVG document** from disk. + - name: Create **PDF save options** (you can customize page size, DPI, etc.). + text: Create **PDF save options** (you can customize page size, DPI, etc.). + - name: Call the **converter** to produce a PDF file. + text: Call the **converter** to produce a PDF file. + type: HowTo +tags: +- Python +- SVG +- PDF conversion +- Aspose +- Document processing +title: Comment créer un PDF à partir de SVG en Python – guide complet +url: /fr/python/general/how-to-create-pdf-from-svg-in-python-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment créer un PDF à partir de SVG en Python – guide complet + +Si vous devez **créer un PDF à partir de SVG** rapidement, ce tutoriel vous montre exactement comment faire. Nous allons parcourir la conversion d’un fichier SVG en PDF à l’aide d’un convertisseur SVG‑vers‑PDF populaire, afin que vous puissiez intégrer des graphiques vectoriels dans des rapports, factures ou livres numériques sans quitter votre code Python. + +Vous apprendrez comment **convertir SVG en PDF**, gérer le redimensionnement, préserver les polices, et enfin **enregistrer SVG en PDF** avec un script unique et reproductible. Aucun outil en ligne de commande externe n’est requis — seulement quelques lignes de Python et la bibliothèque Aspose.SVG pour Python. + +## Prérequis + +Avant de commencer, assurez‑vous d’avoir : + +| Exigence | Raison | +|----------|--------| +| Python 3.8+ | La bibliothèque cible les environnements d’exécution Python modernes. | +| `aspose.svg` package | Fournit `SVGDocument`, `PdfSaveOptions` et `Converter`. Installez avec `pip install aspose-svg`. | +| Un fichier SVG (`vector.svg`) | Le graphique vectoriel source que vous souhaitez convertir. | +| Permission d’écriture sur le dossier de sortie | Nécessaire pour **enregistrer SVG en PDF**. | + +Vous pouvez installer la bibliothèque avec : + +```bash +pip install aspose-svg +``` + +> **Astuce :** Utilisez un environnement virtuel (`python -m venv venv`) pour isoler les dépendances. + +## Vue d’ensemble du processus de conversion + +La conversion se compose de trois étapes simples : + +1. Charger le **document SVG** depuis le disque. +2. Créer les **options d’enregistrement PDF** (vous pouvez personnaliser la taille de page, le DPI, etc.). +3. Appeler le **convertisseur** pour produire un fichier PDF. + +Les sections suivantes détaillent chaque étape, expliquent *pourquoi* le code est écrit ainsi, et affichent le script complet et exécutable. + +## Créer un PDF à partir de SVG avec Aspose.SVG pour Python + +Cet en‑tête H2 contient le mot‑clé principal **create pdf from svg**, satisfaisant l’exigence SEO. + +```python +# step_01_load_svg.py +import os +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +# ---------------------------------------------------------------------- +# Step 1: Load the SVG document from a file +# ---------------------------------------------------------------------- +svg_path = os.path.join("YOUR_DIRECTORY", "vector.svg") +svg_doc = SVGDocument(svg_path) + +# ---------------------------------------------------------------------- +# Step 2: Create PDF save options (default settings are fine for a basic conversion) +# ---------------------------------------------------------------------- +pdf_options = PdfSaveOptions() +# Example: change DPI for higher‑resolution output +# pdf_options.dpi = 300 + +# ---------------------------------------------------------------------- +# Step 3: Convert the SVG to PDF and save the result +# ---------------------------------------------------------------------- +output_path = os.path.join("YOUR_DIRECTORY", "vector.pdf") +Converter.convert(svg_doc, pdf_options, output_path) + +print(f"✅ PDF created at: {output_path}") +``` + +### Pourquoi cela fonctionne + +* **`SVGDocument`** analyse le XML SVG et construit une représentation en mémoire que le convertisseur peut rendre. +* **`PdfSaveOptions`** vous permet d’ajuster la sortie PDF (taille de page, compression, DPI). Les valeurs par défaut produisent déjà un PDF fidèle, ce qui explique pourquoi l’exemple fonctionne immédiatement. +* **`Converter.convert`** effectue le travail lourd : il rasterise les données vectorielles sur les pages PDF tout en préservant la fidélité vectorielle, de sorte que le PDF résultant reste net à n’importe quel niveau de zoom. + +## Convertir SVG en PDF avec une taille de page personnalisée + +Si vous avez besoin d’une taille de page spécifique — par exemple, A4 pour des rapports imprimables — ajustez le `PdfSaveOptions` : + +```python +pdf_options = PdfSaveOptions() +pdf_options.page_width = 595 # points (8.27 inches) +pdf_options.page_height = 842 # points (11.69 inches) +``` + +> **Cas particulier :** Certains SVG définissent un `viewBox` qui ne correspond pas aux dimensions PDF souhaitées. Remplacer `page_width`/`page_height` garantit que le PDF s’adapte à vos attentes de mise en page. + +## Enregistrer SVG en PDF tout en préservant les polices + +Lorsque votre SVG référence des polices externes, assurez‑vous que les polices sont accessibles au convertisseur. Placez les fichiers `.ttf` dans le même répertoire que le SVG ou spécifiez un dossier de polices personnalisé : + +```python +svg_doc = SVGDocument(svg_path, fonts_folder="YOUR_DIRECTORY/fonts") +``` + +Le convertisseur intègre les polices directement dans le PDF, garantissant que la conversion **svg file to pdf** apparaît identique sur n’importe quelle machine. + +## Conversion par lots : fichier SVG en PDF pour de nombreux fichiers + +Souvent, vous avez un dossier rempli d’actifs SVG. La boucle suivante montre un **svg to pdf converter** efficace qui traite chaque fichier `.svg` d’un répertoire : + +```python +import glob + +input_dir = "YOUR_DIRECTORY" +output_dir = "YOUR_DIRECTORY/pdf_output" +os.makedirs(output_dir, exist_ok=True) + +for svg_file in glob.glob(os.path.join(input_dir, "*.svg")): + doc = SVGDocument(svg_file) + out_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + out_path = os.path.join(output_dir, out_name) + Converter.convert(doc, PdfSaveOptions(), out_path) + print(f"Converted {svg_file} → {out_path}") +``` + +Cet extrait illustre un flux de travail pratique **convert svg to pdf** qui peut être intégré aux pipelines CI ou aux générateurs de rapports automatisés. + +## Vérifier la sortie + +Après avoir exécuté le script, ouvrez le PDF généré avec n’importe quel lecteur (Adobe Reader, Chrome ou Preview). Vous devriez voir : + +* Des formes vectorielles rendues nettement à n’importe quel niveau de zoom. +* Du texte correspondant à la source SVG, avec les polices intégrées si vous les avez fournies. +* Aucun artefact raster — car la conversion conserve les données vectorielles d’origine. + +Si vous remarquez des polices manquantes, vérifiez que les fichiers de police sont accessibles et que le SVG les référence correctement (attribut `font-family`). + +## Problèmes courants et comment les éviter + +| Symptôme | Cause probable | Solution | +|----------|----------------|----------| +| Pages PDF blanches | Le SVG possède des ressources externes (images, polices) introuvables | Fournissez `fonts_folder` et assurez‑vous que les images liées sont dans le même répertoire ou utilisez des URL absolues. | +| Le texte apparaît en contours | Police non intégrée | Définissez `pdf_options.embed_fonts = True` (par défaut) et vérifiez que le fichier de police est présent. | +| Le PDF est plus volumineux que prévu | DPI élevé ou images non compressées | Réduisez `pdf_options.dpi` ou activez la compression : `pdf_options.compress = True`. | +| Les dimensions du SVG sont tronquées | `viewBox` plus grand que la page PDF | Ajustez `pdf_options.page_width`/`page_height` ou redimensionnez le SVG via `svg_doc.set_viewport`. | + +## Exemple complet de bout en bout + +Voici un script autonome qui inclut la gestion des erreurs, la journalisation et des arguments en ligne de commande optionnels. Enregistrez‑le sous `svg_to_pdf.py` et exécutez `python svg_to_pdf.py`. + +```python +#!/usr/bin/env python3 +""" +svg_to_pdf.py – a complete example that creates PDF from SVG, +supports custom page size, font embedding, and batch processing. + +Usage: + python svg_to_pdf.py INPUT_SVG OUTPUT_PDF [--dpi 300] [--pagesize A4] + +Author: Your Name +Date: 2026‑08‑22 +""" + +import argparse +import os +import sys +import glob +from aspose.svg import SVGDocument, PdfSaveOptions, Converter + +def parse_args(): + parser = argparse.ArgumentParser(description="Convert SVG files to PDF.") + parser.add_argument("input", help="Path to an SVG file or a directory containing SVGs.") + parser.add_argument("output", help="Destination PDF file or directory.") + parser.add_argument("--dpi", type=int, default=96, + help="Resolution for rasterised elements (default: 96).") + parser.add_argument("--pagesize", choices=["A4", "Letter", "Custom"], default="A4", + help="Page size for the PDF.") + parser.add_argument("--fontdir", default=None, + help="Folder containing font files referenced by the SVG.") + return parser.parse_args() + +def get_page_dimensions(pagesize): + # Points (1 pt = 1/72 inch) + if pagesize == "A4": + return 595, 842 + elif pagesize == "Letter": + return 612, 792 + else: + return None, None # Custom – let Aspose use SVG viewBox + +def convert_file(svg_path, pdf_path, dpi, page_dims, font_dir): + try: + doc = SVGDocument(svg_path, fonts_folder=font_dir) if font_dir else SVGDocument(svg_path) + options = PdfSaveOptions() + options.dpi = dpi + if page_dims[0] and page_dims[1]: + options.page_width, options.page_height = page_dims + Converter.convert(doc, options, pdf_path) + print(f"✅ {svg_path} → {pdf_path}") + except Exception as e: + print(f"❌ Failed to convert {svg_path}: {e}", file=sys.stderr) + +def main(): + args = parse_args() + page_dims = get_page_dimensions(args.pagesize) + + if os.path.isdir(args.input): + # Batch mode + os.makedirs(args.output, exist_ok=True) + pattern = os.path.join(args.input, "*.svg") + for svg_file in glob.glob(pattern): + pdf_name = os.path.splitext(os.path.basename(svg_file))[0] + ".pdf" + pdf_path = os.path.join(args.output, pdf_name) + convert_file(svg_file, pdf_path, args.dpi, page_dims, args.fontdir) + else: + # Single file mode + os.makedirs(os.path.dirname(args.output), exist_ok=True) + convert_file(args.input, args.output, args.dpi, page_dims, args.fontdir) + +if __name__ == "__main__": + main() +``` + +L’exécution du script produit une opération **save SVG as PDF** que vous pouvez intégrer dans des pipelines d’automatisation plus vastes. + +### Sortie console attendue + + + +## Que devriez‑vous apprendre ensuite ? + +Les tutoriels suivants couvrent des sujets étroitement liés qui s’appuient sur les techniques démontrées dans ce guide. Chaque ressource comprend des exemples de code complets et fonctionnels avec des explications étape par étape pour vous aider à maîtriser des fonctionnalités d’API supplémentaires et explorer des approches d’implémentation alternatives dans vos propres projets. + +- [Convertir SVG en PDF en .NET avec Aspose.HTML](/html/english/net/canvas-and-image-manipulation/convert-svg-to-pdf/) +- [svg to pdf java – Générer un PDF à partir de SVG avec Aspose.HTML pour Java](/html/english/java/conversion-html-to-other-formats/convert-svg-to-pdf/) +- [Convertir SVG en PDF en .NET avec Aspose.HTML](/html/spanish/net/canvas-and-image-manipulation/convert-svg-to-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/french/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md b/html/french/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md new file mode 100644 index 000000000..e04241f85 --- /dev/null +++ b/html/french/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-08-22 +description: Comment activer le streaming pour la conversion d'HTML volumineux en + PDF avec Python, afin de réduire l'utilisation de la mémoire et d'accélérer la génération + du résultat. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- how to enable streaming +- convert html to pdf +- html to pdf python +- large html to pdf +- stream html to pdf +language: fr +lastmod: 2026-08-22 +og_description: Comment activer le streaming pour la conversion de gros fichiers HTML + en PDF en Python, afin de réduire l'utilisation de la mémoire et d'accélérer la + génération du résultat. +og_image_alt: Diagram showing streaming conversion from HTML to PDF using Python +og_title: Activer le streaming pour la conversion HTML‑vers‑PDF en Python +schemas: +- author: GroupDocs + dateModified: '2026-08-22' + description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + headline: How to enable streaming when converting HTML to PDF in Python + type: TechArticle +- description: how to enable streaming for large HTML to PDF conversion in Python, + reducing memory usage and speeding up output generation. + name: How to enable streaming when converting HTML to PDF in Python + steps: + - name: '**Memory efficiency** – only a small buffer is kept in RAM.' + text: '**Memory efficiency** – only a small buffer is kept in RAM.' + - name: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + text: '**Faster perceived performance** – the file appears on disk while still + being generated, allowing downstream processes to start reading it earlier.' + - name: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + text: '**Scalability** – you can run many conversions in parallel without exhausting + the host’s memory.' + type: HowTo +tags: +- HTML +- PDF +- Python +- streaming +- conversion +title: Comment activer le streaming lors de la conversion de HTML en PDF avec Python +url: /fr/python/general/how-to-enable-streaming-when-converting-html-to-pdf-in-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment activer le streaming lors de la conversion de HTML en PDF avec Python + +Si vous avez besoin de **how to enable streaming** pendant une conversion HTML‑vers‑PDF volumineuse, ce guide vous montre les étapes exactes. En activant le streaming, vous évitez de charger le document complet en mémoire, ce qui est essentiel lorsque vous convertissez du HTML en PDF pour de gros fichiers. + +Vous apprendrez comment activer le streaming, convertir du HTML en PDF avec Python, et gérer les cas limites tels que les tâches de large HTML to PDF. La solution fonctionne avec la bibliothèque populaire `groupdocs-conversion` (ou similaire), mais les concepts s’appliquent à tout convertisseur compatible streaming. + +![Diagram showing streaming conversion from HTML to PDF using Python](streaming-diagram.png) + +## Ce dont vous aurez besoin + +- Python 3.9 ou plus récent +- `groupdocs-conversion` (ou toute bibliothèque qui propose `PdfSaveOptions` avec un drapeau de streaming) +- Un fichier HTML que vous souhaitez transformer en PDF (l’exemple utilise un gros fichier nommé `large.html`) + +Disposer de ces prérequis garantit que le code s’exécute sans configuration supplémentaire. + +## Étape 1 : Installer la bibliothèque de conversion + +Tout d’abord, installez le paquet Python qui fournit `HTMLDocument`, `PdfSaveOptions` et `Converter`. Le choix le plus courant est le SDK **GroupDocs.Conversion** : + +```bash +pip install groupdocs-conversion +``` + +> **Astuce :** Utilisez un environnement virtuel (`python -m venv .venv`) pour isoler les dépendances. + +## Étape 2 : Charger le document HTML que vous souhaitez convertir + +Charger le HTML source est simple. La classe `HTMLDocument` lit le fichier depuis le disque et le prépare à la conversion. + +```python +from groupdocs.conversion import HTMLDocument + +# Step 2: Load the HTML document you want to convert +doc = HTMLDocument("YOUR_DIRECTORY/large.html") +``` + +L’objet `HTMLDocument` représente l’ensemble du balisage HTML, y compris les ressources externes telles que les images et le CSS. C’est le point de départ pour toute opération **convert html to pdf**. + +## Étape 3 : Créer les options d’enregistrement PDF et activer le streaming + +Activer le streaming est le cœur de **how to enable streaming**. Au lieu de mettre en mémoire tampon l’ensemble du PDF, le convertisseur écrit des morceaux directement dans le fichier de sortie. + +```python +from groupdocs.conversion import PdfSaveOptions + +# Step 3: Create PDF save options and enable streaming +pdf_opts = PdfSaveOptions() +pdf_opts.enable_streaming = True # stream output instead of buffering the whole file +``` + +Lorsque `enable_streaming` est réglé sur `True`, la bibliothèque utilise une approche write‑through qui réduit considérablement la consommation de RAM—crucial pour les scénarios **large html to pdf**. + +## Étape 4 : Convertir le document HTML en PDF en utilisant les options configurées + +Appelez maintenant la conversion. La méthode `Converter.convert` prend le document source, l’objet d’options et le chemin de destination. + +```python +from groupdocs.conversion import Converter + +# Step 4: Convert the HTML document to PDF using the configured options +Converter.convert(doc, pdf_opts, "YOUR_DIRECTORY/large.pdf") +``` + +Après l’exécution de cet appel, `large.pdf` contient le PDF rendu, généré tout en diffusant les données vers le disque. Le processus complet se termine généralement plus rapidement qu’une conversion sans streaming, car le système d’exploitation peut écrire les données sur le système de fichiers de façon incrémentale. + +### Résultat attendu + +L’exécution du script produit un fichier PDF dont la taille correspond au contenu du HTML original. Vous pouvez vérifier le résultat avec n’importe quel lecteur PDF : + +```bash +open YOUR_DIRECTORY/large.pdf # macOS +start YOUR_DIRECTORY\large.pdf # Windows +xdg-open YOUR_DIRECTORY/large.pdf # Linux +``` + +## Pourquoi le streaming est important pour les conversions HTML vers PDF volumineuses + +Lorsque vous **convert html to pdf** sans streaming, la bibliothèque construit d’abord le PDF complet en RAM avant de l’écrire sur le disque. Pour une page modeste, cela suffit, mais une tâche **large html to pdf** (par ex., un rapport HTML de 10 Mo avec de nombreuses images) peut dépasser les limites de mémoire des fonctions serverless typiques ou des conteneurs à faible mémoire. + +Activer le streaming résout trois problèmes : + +1. **Efficacité mémoire** – seul un petit tampon est conservé en RAM. +2. **Performance perçue plus rapide** – le fichier apparaît sur le disque tout en étant généré, permettant aux processus en aval de commencer à le lire plus tôt. +3. **Scalabilité** – vous pouvez exécuter de nombreuses conversions en parallèle sans épuiser la mémoire de l’hôte. + +## Pièges courants et comment les éviter + +| Symptôme | Cause probable | Solution | +|----------|----------------|----------| +| `MemoryError` pendant la conversion | Le drapeau de streaming n’est pas activé ou la version de la bibliothèque est trop ancienne | Assurez‑vous que `pdf_opts.enable_streaming = True` et mettez à jour vers le SDK le plus récent (`pip install --upgrade groupdocs-conversion`). | +| Images manquantes dans le PDF | Les chemins d’image relatifs ne peuvent pas être résolus | Passez le répertoire de base à `HTMLDocument` ou intégrez les images en base64. | +| Le PDF de sortie est vide | Le fichier HTML est introuvable ou illisible | Vérifiez le chemin `"YOUR_DIRECTORY/large.html"` et les permissions du fichier. | +| La conversion se bloque indéfiniment | De grandes ressources externes (polices, CSS) bloquent le rendu | Pré‑téléchargez les ressources externes ou utilisez un navigateur sans tête pour les intégrer. | + +### Cas limite : Conversion de HTML depuis une chaîne + +Si votre contenu HTML réside en mémoire plutôt que dans un fichier, vous pouvez toujours **how to enable streaming** en enveloppant la chaîne dans un constructeur `HTMLDocument` qui accepte du HTML brut : + +```python +html_content = "