`، فإن `links_and_paras.md` سيظهر شيئًا كهذا: + +```markdown +[Visit Aspose](https://www.aspose.com) + +This is a sample paragraph describing the purpose of the page. + +Another link: [GitHub Repository](https://github.com/aspose-html) +``` + +جميع هياكل HTML الأخرى—الجداول، الصور، السكريبتات—تُهمل بصمت، مما يحافظ على نظافة الملف. + +## معالجة الحالات الحدية الشائعة + +### 1. الروابط النسبية + +إذا كان HTML الخاص بك يستخدم روابط نسبية (`href="docs/intro.html"`)، سيحافظ المحول عليها كما هي. لجعلها مطلقة، قم بمعالجة المستند مسبقًا: + +```python +from urllib.parse import urljoin + +base_url = "https://example.com/" +for link in doc.get_elements_by_tag_name("a"): + link.set_attribute("href", urljoin(base_url, link.get_attribute("href"))) +``` + +### 2. Unicode والرموز الخاصة + +يدعم Markdown UTF‑8 مباشرة، لكن تأكد من أن `options.encoding` يطابق المصدر. ضبطه إلى `"utf-8"` (كما هو موضح أعلاه) يمنع ظهور أحرف مشوهة. + +### 3. ملف الإدخال المفقود + +محاولة تحميل ملف غير موجود ترفع استثناء `FileNotFoundError`. غلف عملية التحميل بكتلة try/except لتقديم رسالة أكثر ودية: + +```python +try: + doc = HTMLDocument(html_path) +except FileNotFoundError: + print(f"Error: {html_path} not found. Check the path and try again.") + exit(1) +``` + +### 4. تضمين ميزات إضافية + +إذا قررت لاحقًا أنك تحتاج أيضًا إلى نص **غامق** أو **مائل**، ما عليك سوى توسيع علامة `features`: + +```python +options.features |= MarkdownFeature.BOLD | MarkdownFeature.ITALIC +``` + +هذا النهج التدريجي يبقي كودك مقروءًا ويسمح لك بالتجربة دون إعادة كتابة السكريبت بالكامل. + +## البرنامج الكامل العامل + +بتجميع كل ما سبق، إليك مثال مستقل يمكنك نسخه ولصقه في ملف اسمه `convert_html_to_md.py`: + +```python +# convert_html_to_md.py +# A complete, runnable script that converts HTML to Markdown (links + paragraphs only) + +from aspose.html import HTMLDocument, MarkdownSaveOptions, MarkdownFeature, Converter +from urllib.parse import urljoin +import os +import sys + +def main(): + # ---------- Configuration ---------- + input_dir = "YOUR_DIRECTORY" # <-- change this + input_file = os.path.join(input_dir, "input.html") + output_file = os.path.join(input_dir, "links_and_paras.md") + base_url = "https://example.com/" # optional, for making links absolute + + # ---------- Step 1: Load HTML ---------- + try: + doc = HTMLDocument(input_file) + print(f"Loaded HTML file: {input_file}") + except FileNotFoundError: + print(f"Error: {input_file} not found.") + sys.exit(1) + + # Optional: resolve relative URLs + for link in doc.get_elements_by_tag_name("a"): + href = link.get_attribute("href") + if href and not href.startswith(("http://", "https://")): + link.set_attribute("href", urljoin(base_url, href)) + + # ---------- Step 2: Set Markdown options ---------- + options = MarkdownSaveOptions() + options.features = MarkdownFeature.LINK | MarkdownFeature.PARAGRAPH + options.encoding = "utf-8" + options.new_line_type = MarkdownSaveOptions.NewLineType.UNIX + print("Markdown options set: LINK + PARAGRAPH only.") + + # ---------- Step 3: Convert ---------- + Converter.convert_html(doc, options, output_file) + print(f"Conversion finished. Markdown saved to: {output_file}") + +if __name__ == "__main__": + main() +``` + +شغّله باستخدام: + +```bash +python convert_html_to_md.py +``` + +إذا تم إعداد كل شيء بشكل صحيح، سترى جملتي الطباعة التي تؤكد التحميل والتحويل، وملف `links_and_paras.md` جديد ينتظرك في مجلدك. + +## نصائح احترافية وملاحظات + +- **الأداء:** بالنسبة لملفات HTML الضخمة (عدة ميغابايت)، فكر في تدفق الإدخال أو زيادة حد الذاكرة. Aspose يتعامل مع DOM كبير بأريحية، لكن جهازك الافتراضي قد يحتاج إلى مساحة heap أكبر. +- **الاختبار:** اكتب اختبار وحدة سريع يمرر مقطع HTML معروف ويتحقق من ناتج Markdown الدقيق. هذا يحميك من تغييرات مستقبلية في المكتبة قد تغير السلوك الافتراضي. +- **توافق الإصدارات:** الكود أعلاه يستهدف Aspose.HTML 23.9.0. إذا كنت تستخدم إصدارًا أقدم، فإن أسماء الـ enum (`MarkdownFeature`) هي نفسها، لكن خاصية `new_line_type` قد تكون مفقودة—فقط احذفها. + +## الخاتمة + +لقد غطينا للتو **كيف تحول HTML إلى Markdown** باستخدام API القوي من Aspose، مع التركيز على استخراج الروابط والفقرات فقط. تدفق الخطوات الثلاث—التحميل، التكوين، التحويل—يبقي كودك نظيفًا وقابلًا للتكيف. + +لا تتردد في التجربة: أضف `MarkdownFeature.IMAGE` إذا احتجت لاحقًا إلى صور مدمجة، أو غيّر مسار الإخراج لإنشاء ملفات متعددة دفعة واحدة. نفس النمط يعمل لتحويل HTML إلى صيغ أخرى (PDF، DOCX) عبر استبدال فئة خيارات الحفظ. + +هل لديك أسئلة إضافية حول تخصيص التحويل، التعامل مع الجداول، أو دمجه في خدمة ويب؟ اترك تعليقًا، وتمنياتنا لك ببرمجة سعيدة! + +## ماذا يجب أن تتعلم بعد ذلك؟ + +الدروس التالية تغطي مواضيع ذات صلة وثيقة تبني على التقنيات الموضحة في هذا الدليل. كل مورد يتضمن أمثلة كود كاملة مع شروحات خطوة بخطوة لمساعدتك على إتقان ميزات 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 - التحويل باستخدام Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/arabic/python/general/convert-html-to-markdown-complete-guide-with-css-images/_index.md b/html/arabic/python/general/convert-html-to-markdown-complete-guide-with-css-images/_index.md new file mode 100644 index 000000000..a1648aaf8 --- /dev/null +++ b/html/arabic/python/general/convert-html-to-markdown-complete-guide-with-css-images/_index.md @@ -0,0 +1,178 @@ +--- +category: general +date: 2026-06-10 +description: حوّل HTML إلى Markdown مع CSS والصور في سكريبت واحد. تعلم خطوة بخطوة + كيفية الحفاظ على الأنماط والملفات الخارجية والحصول على Markdown نظيف. +draft: false +keywords: +- convert html to markdown +- convert html with css +- how to convert html with images +language: ar +og_description: تحويل HTML إلى Markdown مع الحفاظ على CSS والصور. يوضح هذا الدليل + الكود الكامل، ويشرح كل خيار، ويقدم مثالًا جاهزًا للتنفيذ. +og_title: تحويل HTML إلى Markdown – دليل كامل مع CSS والصور +schemas: +- author: Aspose + dateModified: '2026-06-10' + description: Convert HTML to Markdown with CSS and images in a single script. Learn + step‑by‑step how to preserve styles, external assets, and get clean Markdown. + headline: Convert HTML to Markdown – Complete Guide with CSS & Images + type: TechArticle +- description: Convert HTML to Markdown with CSS and images in a single script. Learn + step‑by‑step how to preserve styles, external assets, and get clean Markdown. + name: Convert HTML to Markdown – Complete Guide with CSS & Images + steps: + - name: Expected Result + text: 'After the script finishes, you should see:' + - name: What if my HTML uses inline `data:` URIs for images? + text: The converter treats data URIs as embedded resources and will **not** write + them to the `resources` folder by default. If you need them extracted, set `res_opts.inline_images + = False` (or the library’s equivalent) before step 2. + - name: How do I keep the original CSS file linked in the Markdown? + text: 'After conversion, add a reference at the top of your Markdown:' + - name: Can I convert multiple HTML files in one run? + text: Sure. Wrap the four steps in a `for` loop, change the input and output paths + each iteration, and reuse the same `options` object. Just make sure each HTML + file has its own dedicated `resource_folder` to avoid collisions. + type: HowTo +tags: +- HTML +- Markdown +- Python +title: تحويل HTML إلى Markdown – دليل كامل مع CSS والصور +url: /ar/python/general/convert-html-to-markdown-complete-guide-with-css-images/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# تحويل HTML إلى Markdown – دليل شامل مع CSS والصور + +هل احتجت يومًا إلى **تحويل HTML إلى Markdown** لكنك كنت قلقًا من فقدان تنسيق CSS أو الصور المضمنة؟ لست وحدك. يواجه العديد من المطورين هذه المشكلة عندما يحاولون نقل المحتوى من صفحة ويب إلى ملف Markdown خفيف الوزن لتوليد المواقع الثابتة أو الوثائق أو الملاحظات التي تُدار عبر التحكم في الإصدارات. + +الخبر السار؟ ببضع أسطر من Python والمكتبة المناسبة، يمكنك **تحويل HTML إلى Markdown** مع نسخ الأصول الخارجية تلقائيًا، والحفاظ على CSS، وإبقاء كل صورة سليمة. في هذا الدرس سنستعرض سكربت عملي يمكنك نسخه ولصقه لحل هذه المشكلة بالضبط، وسنشرح أيضًا لماذا كل إعداد مهم. في النهاية ستتمكن من تشغيل المحول على أي ملف HTML والحصول على ملف `.md` نظيف بالإضافة إلى مجلد `resources` مليء بالأصول الأصلية. + +> **ما ستحصل عليه:** مثال كامل بلغة Python، تفصيل لإعدادات `resource_handling_options`، نصائح للتعامل مع الحالات الخاصة، واقتراحات للخطوات التالية مثل تعديل CSS أو معالجة عناوين data URI المضمنة. + +## المتطلبات المسبقة + +- Python 3.8+ مثبت على جهازك. +- **Aspose.HTML for Python via .NET** (أو أي مكتبة مشابهة توفر `HTMLDocument`، `MarkdownSaveOptions`، إلخ). قم بتثبيتها باستخدام: + +```bash +pip install aspose-html +``` + +- ملف HTML تريد تحويله، ويفضل أن يحتوي على مراجع CSS وصور خارجية، مثل `sample_with_images.html`. +- صلاحية كتابة في دليل الإخراج. + +إذا كنت تستخدم مكتبة مختلفة، فإن المفاهيم تبقى نفسها – فقط قم بربط أسماء الفئات وفقًا لذلك. + +## الخطوة 1: تحميل مستند HTML + +الخطوة الأولى هي إنشاء كائن `HTMLDocument` يشير إلى ملف المصدر. يقوم هذا الكائن بتحليل العلامات، بناء DOM، وتجهيز كل شيء للتحويل. + +```python +# Step 1: Load the HTML document +doc = HTMLDocument("YOUR_DIRECTORY/sample_with_images.html") +``` + +*لماذا هذا مهم:* تحميل المستند يمنح المحول تمثيلًا ملموسًا للصفحة، بما في ذلك الروابط إلى ملفات CSS الخارجية وعلامات الصور. بدون هذه الخطوة لن يعرف المحول ما هي الموارد التي يجب نسخها. + +## الخطوة 2: تكوين معالجة الموارد (CSS والصور) + +بعد ذلك نقوم بإعداد `ResourceHandlingOptions`. هذا هو جوهر جزء **convert html with css** و**how to convert html with images** في الدرس. من خلال تفعيل `save_external_resources` وتحديد مجلد، ستقوم المكتبة تلقائيًا بتنزيل كل ورقة أنماط مرتبطة، صورة، أو خط. + +```python +# Step 2: Set up resource handling to copy external assets (images, CSS, fonts) +res_opts = ResourceHandlingOptions() +res_opts.save_external_resources = True # Enable copying of external resources +res_opts.resource_folder = "YOUR_DIRECTORY/resources" +``` + +*لماذا هذا مهم:* إذا تخطيت هذا الإعداد، سيتضمن Markdown الناتج روابط مكسورة، وستفقد أي تنسيقات معرفة في ملفات CSS الخارجية. تفعيل `save_external_resources` يضمن أن الصور ستظهر عند فتح Markdown وأن CSS يمكن إرفاقه مرة أخرى إذا لزم الأمر. + +## الخطوة 3: ربط خيارات الموارد بخيارات حفظ Markdown + +الآن نربط خيارات الموارد بـ `MarkdownSaveOptions`. فكر في ذلك كإخبار المحول: “عند كتابة ملف `.md`، احترم قواعد الموارد التي حددناها للتو”. + +```python +# Step 3: Attach the resource options to the Markdown save options +options = MarkdownSaveOptions() +options.resource_handling_options = res_opts +``` + +*لماذا هذا مهم:* كائن `MarkdownSaveOptions` يحتوي على جميع الإعدادات التي يمكنك تعديلها لعملية التحويل – من أنماط العناوين إلى صيغ الروابط. من خلال إدخال `resource_handling_options`، تضمن أن المحول يطبق سلوك نسخ الأصول طوال العملية بأكملها. + +## الخطوة 4: تشغيل التحويل + +أخيرًا، نستدعي الطريقة الساكنة `convert_html`، مع تمرير المستند، الخيارات، ومسار الإخراج المطلوب. تقوم الطريقة بكتابة ملف Markdown وإنشاء مجلد `resources` بجانبه. + +```python +# Step 4: Convert the HTML document to Markdown, saving resources alongside the file +Converter.convert_html(doc, options, "YOUR_DIRECTORY/with_resources.md") +``` + +*لماذا هذا مهم:* هذا السطر الواحد يقوم بالعمل الشاق – تحليل HTML، تحويل العلامات إلى صيغة Markdown، إعادة كتابة عناوين الصور لتشير إلى مجلد الموارد الجديد، والحفاظ على أي مراجع CSS قد ترغب في إعادة استخدامها لاحقًا. + +### النتيجة المتوقعة + +بعد انتهاء السكربت، يجب أن ترى: + +- `with_resources.md` – ملف Markdown نظيف تكون روابط صوره مثل ``. +- `resources/` – مجلد يحتوي على كل ملف CSS خارجي، صورة، وخط كان HTML الأصلي يشير إليه. + +افتح ملف `.md` في أي عارض Markdown (VS Code، GitHub، MkDocs) وسترى محتوى الصفحة الأصلي، الصور معروضة، ويمكنك حتى ربط ملف CSS يدويًا إذا احتجت إلى عرض مُنسق. + +--- + +## الأسئلة الشائعة والحالات الخاصة + +### ماذا لو كان HTML الخاص بي يستخدم عناوين `data:` مضمّنة للصور؟ + +المحول يتعامل مع عناوين data كموارد مضمّنة ولن يكتبها إلى مجلد `resources` بشكل افتراضي. إذا كنت بحاجة لاستخراجها، عيّن `res_opts.inline_images = False` (أو ما يعادلها في المكتبة) قبل الخطوة 2. + +### كيف أحافظ على ربط ملف CSS الأصلي في Markdown؟ + +بعد التحويل، أضف إشارة في أعلى ملف Markdown: + +```markdown + +``` + +نظرًا لأننا فعلنا `save_external_resources`، فإن ملف `style.css` الآن موجود في `resources/`، لذا سيعمل الرابط محليًا. + +### هل يمكنني تحويل عدة ملفات HTML في تشغيل واحد؟ + +بالتأكيد. ضع الخطوات الأربع داخل حلقة `for`، غير مسارات الإدخال والإخراج في كل تكرار، وأعد استخدام كائن `options` نفسه. فقط تأكد من أن كل ملف HTML له مجلد `resource_folder` مخصص لتجنب التعارضات. + +--- + +## نصائح احترافية ومخاطر + +- **نصيحة احترافية:** استخدم اسمًا قصيرًا وفريدًا لمجلد `resource_folder` لكل تحويل (مثال: `resources_page1`) لتجنب استبدال الملفات عندما تقوم بمعالجة دفعة من الصفحات. +- **احذر من:** الصفحات التي تشير إلى نفس ملف CSS من دلائل مختلفة. سيقوم المحول بنسخ الملف مرة واحدة لكل مجلد إخراج، مما قد ينتج نسخًا مكررة. قم بتجميعها يدويًا بعد التحويل إذا كان استهلاك المساحة يمثل قلقًا. +- **تلميح أداء:** إذا كنت تحتاج فقط إلى الصور وليس CSS، عيّن `res_opts.save_css = False`. سيتخطى ذلك نسخ الملفات غير الضرورية ويسرّع العملية. + +## الخلاصة + +أصبح لديك الآن سكربت كامل وجاهز للتنفيذ **convert html to markdown** مع الحفاظ على تنسيق CSS وكل الصور المضمّنة. من خلال تكوين `ResourceHandlingOptions` وربطها بـ `MarkdownSaveOptions`، يتعامل التحويل تلقائيًا مع كل من **convert html with css** و**how to convert html with images**. + +لا تتردد في التجربة: استبدل صيغة الإخراج (مثال: `MarkdownSaveOptions` → `PlainTextSaveOptions`)، عدّل بنية مجلد الموارد، أو دمج السكربت في خط أنابيب توليد موقع ثابت أكبر. الفكرة الأساسية – إدارة الأصول الخارجية بشكل صريح – تنطبق على أي سير عمل تحويل HTML إلى 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 - التحويل باستخدام Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/arabic/python/general/convert-html-to-markdown-python-save-markdown-file-with-pyth/_index.md b/html/arabic/python/general/convert-html-to-markdown-python-save-markdown-file-with-pyth/_index.md new file mode 100644 index 000000000..3664ec2a7 --- /dev/null +++ b/html/arabic/python/general/convert-html-to-markdown-python-save-markdown-file-with-pyth/_index.md @@ -0,0 +1,268 @@ +--- +category: general +date: 2026-06-10 +description: حوّل HTML إلى Markdown باستخدام بايثون بسرعة وتعلم كيفية حفظ ملف Markdown + باستخدام بايثون مع Aspose.HTML. دليل خطوة بخطوة للمطورين. +draft: false +keywords: +- convert html to markdown python +- save markdown file with python +language: ar +og_description: حوّل HTML إلى Markdown باستخدام بايثون في دقائق وتعرّف على كيفية حفظ + ملف Markdown باستخدام بايثون ومكتبة Aspose.HTML. +og_title: تحويل HTML إلى Markdown باستخدام بايثون – دليل كامل +schemas: +- author: Aspose + dateModified: '2026-06-10' + description: convert html to markdown python quickly and learn how to save markdown + file with python using Aspose.HTML. Step‑by‑step guide for developers. + headline: convert html to markdown python – save markdown file with python + type: TechArticle +- description: convert html to markdown python quickly and learn how to save markdown + file with python using Aspose.HTML. Step‑by‑step guide for developers. + name: convert html to markdown python – save markdown file with python + steps: + - name: 1. Unicode Characters + text: If your HTML contains emojis or non‑ASCII symbols, always open the output + file with `encoding="utf-8"` (as shown above). Forgetting this can lead to `UnicodeEncodeError` + on Windows. + - name: 2. Large Documents + text: For files larger than ~100 MB, consider processing the HTML in chunks. Aspose.HTML + supports `HTMLDocument.load(stream)` where `stream` can be a file‑like object + that reads lazily. + - name: 3. Relative Links and Images + text: 'Markdown will preserve the `src` and `href` attributes as they appear. + If you need to rewrite them to absolute URLs, run a post‑processing step:' + - name: 4. Tables and Complex Layouts + text: 'Standard converters may flatten complex tables into plain text. If preserving + table structure is critical, enable the `use_gfm` flag in `MarkdownSaveOptions`:' + type: HowTo +tags: +- python +- markdown +- html-conversion +title: تحويل HTML إلى Markdown باستخدام بايثون – حفظ ملف Markdown باستخدام بايثون +url: /ar/python/general/convert-html-to-markdown-python-save-markdown-file-with-pyth/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# تحويل HTML إلى Markdown باستخدام Python – دليل شامل + +هل تساءلت يومًا **كيف تحول html إلى markdown python** دون أن تشعر بالإحباط؟ لست وحدك. يحتاج العديد من المطورين إلى أخذ جزء من HTML — ربما تدوينة مدونة، قالب بريد إلكتروني، أو صفحة تم استخراجها — وتحويله إلى Markdown نظيف لتوليد المواقع الثابتة أو خطوط أنابيب التوثيق. + +الأخبار السارة؟ ببضع أسطر من الكود يمكنك أيضًا **save markdown file with python** والحصول على ملف `.md` جاهز للاستخدام على القرص. في هذا الدرس سنستخدم Aspose.HTML للـ Python، وسنستعرض أيضًا بدائل، وحالات حافة، ونصائح أفضل الممارسات حتى تتمكن من تكييف الحل مع أي مشروع. + +## المتطلبات المسبقة + +قبل أن نبدأ، تأكد من وجود ما يلي: + +* Python 3.8 أو أحدث مثبت. +* حزمة `aspose-html` (`pip install aspose-html`) – هذه هي المكتبة التي تقوم بالعمل الفعلي. +* مجلد قابل للكتابة حيث سيُحفظ ملف الـ Markdown الناتج (سنسميه `YOUR_DIRECTORY`). + +إذا كان لديك كل ذلك، عظيم—لننتقل إلى الخطوة التالية. + +## الخطوة 1: إنشاء كائن HTMLDocument + +أول شيء تحتاج إلى القيام به هو إنشاء كائن `HTMLDocument`. فكر فيه كتمثيل للصفحة في الذاكرة يمكن لـ Aspose.HTML التعامل معه. + +```python +from aspose.html import Converter, HTMLDocument, MarkdownSaveOptions + +# Initialize a blank HTML document +html_doc = HTMLDocument() +``` + +لماذا هذا مهم: فئة `HTMLDocument` تُجرد منطق التحليل. من خلال إمداد هذا الكائن بـ HTML خام، تترك Aspose يتعامل مع العلامات غير الصحيحة، وترميزات الأحرف، وغيرها من الخصائص التي قد تحتاج إلى تنظيفها يدويًا. + +## الخطوة 2: تحميل محتوى HTML الخاص بك + +بعد ذلك، اكتب الـ HTML الذي تريد تحويله. في سيناريو واقعي قد تقرأه من ملف، طلب ويب، أو قاعدة بيانات. للتوضيح سنضمّن مقتطفًا صغيرًا مباشرة. + +```python +# Write a simple HTML snippet into the document +html_doc.write("""
This is bold text.
""") +``` + +> **نصيحة احترافية:** إذا كنت تجلب HTML من الويب، استخدم `html_doc.load(url)` بدلاً من `write`. سيتعامل Aspose تلقائيًا مع عمليات إعادة التوجيه وضغط gzip. + +## الخطوة 3: تكوين خيارات حفظ Markdown (اختياري) + +تأتي Aspose.HTML بإعدادات افتراضية معقولة، لكن يمكنك تعديل أشياء مثل نهايات الأسطر، أنماط العناوين، أو ما إذا كنت تريد الحفاظ على تعليقات HTML. هنا نستخدم الإعدادات الافتراضية، وهي كافية لمعظم الحالات. + +```python +# Set up default Markdown save options (no custom settings needed) +md_options = MarkdownSaveOptions() +``` + +إذا احتجت يومًا لتغيير المخرجات، استكشف خصائص `MarkdownSaveOptions` — مثال: `md_options.use_gfm = True` لإنتاج GitHub‑Flavored Markdown. + +## الخطوة 4: التحويل و **save markdown file with python** + +الآن يأتي الجزء الأساسي: تحويل مستند HTML في الذاكرة إلى Markdown وكتابة النتيجة إلى القرص. هذا السطر الواحد يقوم بالتحويل **والحفظ**، وهو ما يجيب على سؤال “how to save markdown file with python” في العنوان. + +```python +# Convert the HTML document to Markdown and save the result +Converter.convert_html(html_doc, md_options, "YOUR_DIRECTORY/output.md") +``` + +خلف الكواليس، `Converter.convert_html`: + +1. يحلل شجرة HTML. +2. يمر على كل عقدة، ويطابق العلامات مع ما يعادلها في Markdown. +3. يبث النص الناتج مباشرة إلى مسار الملف الذي قدمته. + +نظرًا لأن التحويل يتم بطريقة تدفقية، يبقى استهلاك الذاكرة منخفضًا حتى للوثائق الضخمة. + +## الخطوة 5: التحقق من النتيجة (اختياري لكن موصى به) + +من العادات الجيدة دائمًا قراءة الملف مرة أخرى وطباعة مقتطف، فقط لتأكيد أن كل شيء تم عرضه كما هو متوقع. + +```python +# Quick sanity check +with open("YOUR_DIRECTORY/output.md", "r", encoding="utf-8") as f: + print(f.read()) +``` + +يجب أن ترى: + +``` +# Hello +This is **bold** text. +``` + +هذا هو النتيجة الكلاسيكية لـ **convert html to markdown python** باستخدام Aspose.HTML. + +--- + + + +*التوضيح أعلاه يُظهر خط أنابيب التحويل.* + +## مكتبات بديلة (عندما لا يكون Aspose خيارًا) + +بينما Aspose.HTML قوية ومدعومة بالكامل، قد تفضّل حلًا بحتًا للـ Python لا يتطلب ترخيصًا تجاريًا. إليك بعض الخيارات التي تُصان من قبل المجتمع: + +| المكتبة | التثبيت | الاستخدام الأساسي | الإيجابيات | السلبيات | +|---------|---------|-------------------|-----------|----------| +| **markdownify** | `pip install markdownify` | `markdownify(html_string)` | صغير، لا يعتمد على أي شيء | معالجة محدودة للجداول المعقدة | +| **html2text** | `pip install html2text` | `html2text.html2text(html_string)` | ناضج، يتعامل مع الكثير من حالات الحافة | المخرجات قد تكون صاخبة للـ HTML غير القياسي | +| **pandoc** (عبر `pypandoc`) | `pip install pypandoc` | `pypandoc.convert_text(html, 'md', format='html')` | دقة عالية، يدعم صيغًا متعددة | يتطلب ملف تنفيذي خارجي لـ Pandoc | + +إذا استخدمت أيًا من هذه المكتبات، تظل خطوة “save markdown file with python” كما هي: افتح ملفًا واكتب السلسلة التي تُرجعها أداة التحويل. + +```python +import markdownify + +md = markdownify.markdownify("This is bold text with an example link.
""" + + output_file = Path("YOUR_DIRECTORY") / "output.md" + convert_html_to_md(html, output_file) + + # Show the result + print("--- Generated Markdown ---") + print(output_file.read_text(encoding="utf-8")) +``` + +شغّله باستخدام: + +```bash +python convert_html_to_markdown.py +``` + +يجب أن ترى رسالة التأكيد متبوعةً بمحتوى الـ Markdown المطبع على الشاشة. + +--- + +## الخلاصة + +استعرضنا حلًا كاملًا لـ **convert html to markdown python** باستخدام Aspose.HTML، وأظهرنا بالضبط كيفية **save markdown file with python** في استدعاء واحد مرتب. الآن لديك: + +* دالة واضحة وقابلة لإعادة الاستخدام (`convert_html_to_md`) يمكنك إدماجها في أي قاعدة شفرة. +* معرفة بالتعديلات الاختيارية (جداول GFM، تعديل الروابط) لحالات الحافة الواقعية. +* بدائل في حال احتجت إلى مجموعة أدوات مفتوحة المصدر. + +ما الخطوة التالية؟ جرّب إمداد المحول بـ HTML مباشر من أداة استخراج ويب، جرب تخصيص `MarkdownSaveOptions`، أو دمج البرنامج النصي في خط أنابيب CI يُولّد توثيقًا تلقائيًا من الويكي الداخلي. السماء هي الحد، والكود ينتظر منك فقط. + +هل لديك أسئلة أو تريد مشاركة حالة استخدام مميزة؟ اترك تعليقًا أدناه — برمجة سعيدة! + +## ما الذي يجب أن تتعلمه بعد ذلك؟ + +الدروس التالية تغطي مواضيع ذات صلة وثيقة تبني على التقنيات التي تم توضيحها في هذا الدليل. كل مورد يتضمن أمثلة شفرة كاملة مع شروحات خطوة بخطوة لمساعدتك على إتقان ميزات API إضافية واستكشاف نهج تنفيذ بديلة في مشاريعك. + +- [تحويل HTML إلى Markdown في .NET باستخدام Aspose.HTML](/html/english/net/html-extensions-and-conversions/convert-html-to-markdown/) +- [تحويل HTML إلى Markdown في Aspose.HTML للـ Java](/html/english/java/saving-html-documents/convert-html-to-markdown/) +- [Markdown إلى HTML في Java - التحويل باستخدام Aspose.HTML](/html/english/java/conversion-html-to-other-formats/convert-markdown-to-html/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/arabic/python/general/convert-html-to-pdf-export-html-as-pdf-with-a-complete-pytho/_index.md b/html/arabic/python/general/convert-html-to-pdf-export-html-as-pdf-with-a-complete-pytho/_index.md new file mode 100644 index 000000000..fd5cbe7d5 --- /dev/null +++ b/html/arabic/python/general/convert-html-to-pdf-export-html-as-pdf-with-a-complete-pytho/_index.md @@ -0,0 +1,232 @@ +--- +category: general +date: 2026-06-10 +description: تحويل HTML إلى PDF وتعلم كيفية تصدير HTML كملف PDF باستخدام بايثون. دليل + خطوة بخطوة يجيب أيضًا على كيفية تحويل HTML بكفاءة. +draft: false +keywords: +- convert html to pdf +- export html as pdf +- how to convert html +language: ar +og_description: حوّل HTML إلى PDF بسرعة. يوضح هذا الدرس كيفية تصدير HTML كملف PDF + ويجيب على سؤال كيفية تحويل HTML ببضع أسطر من بايثون فقط. +og_title: تحويل HTML إلى PDF – تصدير HTML كملف PDF (دليل بايثون) +schemas: +- author: Aspose + dateModified: '2026-06-10' + description: Convert HTML to PDF and learn how to export HTML as PDF using Python. + Step‑by‑step guide that also answers how to convert HTML efficiently. + headline: Convert HTML to PDF – Export HTML as PDF with a Complete Python Guide + type: TechArticle +- description: Convert HTML to PDF and learn how to export HTML as PDF using Python. + Step‑by‑step guide that also answers how to convert HTML efficiently. + name: Convert HTML to PDF – Export HTML as PDF with a Complete Python Guide + steps: + - name: 1. **What if I want to embed images after all?** + text: 'Just flip the flag:' + - name: 2. **Can I control page size or orientation?** + text: Yes, `PDFSaveOptions` exposes a `page_setup` property. + - name: 3. **How to handle CSS that references external fonts?** + text: Make sure the fonts are either installed on the system or reachable via + a URL. The converter will embed them automatically if they’re accessible. + - name: 4. **Large HTML files causing memory errors?** + text: Processing huge documents can be memory‑intensive. Break the HTML into smaller + fragments and convert each fragment to a separate PDF page, then merge them + using `PdfDocument`. + type: HowTo +tags: +- python +- html-to-pdf +- aspose +title: تحويل HTML إلى PDF – تصدير HTML كملف PDF مع دليل بايثون كامل +url: /ar/python/general/convert-html-to-pdf-export-html-as-pdf-with-a-complete-pytho/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# تحويل HTML إلى PDF – تصدير HTML كملف PDF مع دليل Python كامل + +هل تساءلت يومًا **كيف تحول HTML** إلى PDF أنيق دون الحاجة إلى أدوات سطر الأوامر؟ لست وحدك. سواء كنت تحتاج إلى أرشفة مقال ويب، أو إنشاء فواتير من قالب، أو تعبئة تقرير لعميل، فإن *convert html to pdf* مهمة تظهر أكثر مما تتخيل. + +في هذا الدرس سنستعرض حلًا عمليًا من البداية إلى النهاية يتيح لك **export html as pdf** باستخدام مكتبة Python شهيرة. بنهاية الدرس ستحصل على سكريبت جاهز للتنفيذ، وتفهم لماذا كل إعداد مهم، وتعرف كيف تعدل العملية للصور، CSS، أو المستندات الكبيرة. + +--- + +## ما ستحتاجه + +قبل أن نبدأ، تأكد من وجود ما يلي: + +* Python 3.9+ مثبت (أي نسخة حديثة تعمل) +* إمكانية الوصول إلى `pip` لتثبيت الحزم الخارجية +* ملف HTML بسيط (سنسميه `complex.html`) تريد تحويله إلى PDF +* صلاحية كتابة في مجلد سيحفظ فيه الـ PDF وأي موارد مستخرجة + +لا أطر عمل ثقيلة، ولا خدمات خارجية—فقط كود Python نقي. + +--- + +## الخطوة 1: تثبيت المكتبة **Convert HTML to PDF** + +أسهل طريقة لـ *convert html to pdf* في Python هي باستخدام حزمة **Aspose.HTML for Python via .NET**. هي تدعم CSS، JavaScript، وحتى الموارد الخارجية مثل الصور. + +```bash +pip install aspose-html +``` + +> **نصيحة احترافية:** إذا كنت خلف بروكسي مؤسسي، أضف `--proxy http://your-proxy:port` إلى الأمر. + +--- + +## الخطوة 2: تحميل مستند HTML + +الآن بعد أن أصبحت المكتبة جاهزة، يمكننا تحميل الملف المصدر. فكر في `HTMLDocument` كمتصفح افتراضي يحلل العلامات لنا. + +```python +from aspose.html import HTMLDocument + +# Step 2: Load the HTML document +doc = HTMLDocument("YOUR_DIRECTORY/complex.html") +``` + +> **لماذا هذا مهم:** تحميل المستند أولًا يمنح المحول شجرة DOM كاملة، مما يضمن احترام محددات CSS، الخطوط، والسكريبتات المدمجة قبل توليد الـ PDF. + +--- + +## الخطوة 3: إعداد معالجة الموارد – **Export HTML as PDF** دون تضمين الصور + +عند *export html as pdf* غالبًا ما يكون لديك خيارين: تضمين كل صورة مباشرة داخل الـ PDF (مما قد يثقل الملف) أو إبقاء الصور كملفات منفصلة. أدناه نضبط المحول لت **تخزين الصور في مجلد** بدلاً من تضمينها. + +```python +from aspose.html.converters import ResourceHandlingOptions + +# Step 3: Configure resource handling (no image embedding) +res_opts = ResourceHandlingOptions() +res_opts.embed_images = False # Keep images external +res_opts.resource_folder = "YOUR_DIRECTORY/pdf_resources" +``` + +> **حالة خاصة:** إذا كان HTML الخاص بك يشير إلى صور عبر HTTPS، تأكد من أن البيئة لديها اتصال بالإنترنت؛ وإلا سيتخطى المحول تلك الموارد وستظهر أماكن احتياطية في الـ PDF النهائي. + +--- + +## الخطوة 4: تكوين خيارات حفظ PDF باستخدام إعدادات الموارد + +كائن `PDFSaveOptions` يربط إعدادات معالجة الموارد بعملية توليد الـ PDF الفعلية. + +```python +from aspose.html.converters import PDFSaveOptions + +# Step 4: Attach the resource handling options to PDF settings +pdf_opts = PDFSaveOptions() +pdf_opts.resource_handling_options = res_opts +``` + +> **ما الذي يحدث خلف الكواليس؟** خيار `resource_handling_options` يخبر المحول بكتابة كل صورة خارجية في `pdf_resources` ثم الإشارة إليها من داخل الـ PDF، مما يحافظ على خفة المستند الرئيسي. + +--- + +## الخطوة 5: تنفيذ التحويل – **How to Convert HTML** في نداء واحد + +أخيرًا، نستدعي الطريقة الساكنة `Converter.convert_html`. هذا السطر الواحد يقوم بكل الأعمال الصعبة: التحليل، العرض، استخراج الموارد، وكتابة الملف. + +```python +from aspose.html.converters import Converter + +# Step 5: Convert the HTML document to PDF +output_path = "YOUR_DIRECTORY/output.pdf" +Converter.convert_html(doc, pdf_opts, output_path) +print(f"✅ PDF created at: {output_path}") +``` + +إذا سارت الأمور بسلاسة، سترى علامة صح خضراء في وحدة التحكم وملف PDF جديد في `YOUR_DIRECTORY`. + +--- + +## التحقق السريع – هل نجح التحويل؟ + +افتح ملف `output.pdf` بأي عارض PDF. يجب أن ترى: + +* كل النصوص مُظهرة بالخطوط الأصلية +* الصور معروضة بشكل صحيح، مأخوذة من مجلد `pdf_resources` +* التخطيط مطابق تمامًا لصفحة HTML الأصلية (بما في ذلك الهوامش، الرؤوس، والتذييلات) + + + +*نص بديل:* *convert html to pdf result example* – يُظهر ناتج الـ PDF بجانب HTML الأصلي. + +--- + +## أسئلة شائعة وحالات خاصة + +### 1. **ماذا لو أردت تضمين الصور في النهاية؟** +فقط عكس العلامة: + +```python +res_opts.embed_images = True # Images become part of the PDF +``` + +### 2. **هل يمكن التحكم في حجم الصفحة أو الاتجاه؟** +نعم، `PDFSaveOptions` يحتوي على خاصية `page_setup`. + +```python +pdf_opts.page_setup = pdf_opts.page_setup.clone() +pdf_opts.page_setup.size = pdf_opts.page_setup.size_a4 +pdf_opts.page_setup.orientation = pdf_opts.page_setup.orientation_landscape +``` + +### 3. **كيف أتعامل مع CSS يشير إلى خطوط خارجية؟** +تأكد من أن الخطوط إما مثبتة على النظام أو يمكن الوصول إليها عبر URL. سيقوم المحول بتضمينها تلقائيًا إذا كانت متاحة. + +### 4. **ملفات HTML الكبيرة تسبب أخطاء الذاكرة؟** +معالجة المستندات الضخمة قد تكون مستهلكة للذاكرة. قسم الـ HTML إلى أجزاء أصغر وحول كل جزء إلى صفحة PDF منفصلة، ثم دمجها باستخدام `PdfDocument`. + +```python +from aspose.pdf import Document as PdfDocument + +# Example of merging PDFs (pseudo‑code) +merged = PdfDocument() +for part in html_parts: + part_pdf = "temp_part.pdf" + Converter.convert_html(part, pdf_opts, part_pdf) + merged.append(PdfDocument(part_pdf)) +merged.save("final_output.pdf") +``` + +--- + +## نصائح لتجربة تحويل سلسة + +* **حافظ على نظافة مجلد الموارد** – احذف الصور القديمة قبل كل تشغيل لتجنب الملفات المتبقية. +* **تحقق من صحة HTML** – العلامات غير الصحيحة قد تؤدي إلى فقدان عناصر في الـ PDF. استخدم مدقق HTML أولًا. +* **استخدم عناوين URL مطلقة للموارد الخارجية** – المسارات النسبية قد تنكسر إذا تم تشغيل المحول من دليل عمل مختلف. +* **اختبر على عارضات PDF مختلفة** – بعض العارضات تتعامل مع الخطوط المدمجة بصورة مختلفة؛ فحص سريع يمنع المفاجآت للمستخدم النهائي. + +--- + +## الخلاصة + +لقد استعرضنا طريقة كاملة وجاهزة للإنتاج **convert html to pdf** و **export html as pdf** باستخدام Python. من خلال تثبيت حزمة واحدة، ضبط معالجة الموارد، واستدعاء `Converter.convert_html`، يمكنك الإجابة على السؤال القديم *how to convert html* إلى PDF مصقول في بضع أسطر فقط. + +من هنا يمكنك استكشاف: + +* إضافة رؤوس/تذييلات باستخدام `pdf_opts.add_header_footer` +* تحويل عدة ملفات HTML في سكريبت دفعي +* دمج التحويل في خدمة ويب 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/convert-svg-to-png-in-python-full-step-by-step-guide/_index.md b/html/arabic/python/general/convert-svg-to-png-in-python-full-step-by-step-guide/_index.md new file mode 100644 index 000000000..eb211e9b1 --- /dev/null +++ b/html/arabic/python/general/convert-svg-to-png-in-python-full-step-by-step-guide/_index.md @@ -0,0 +1,276 @@ +--- +category: general +date: 2026-06-10 +description: تحويل SVG إلى PNG في بايثون بسرعة. تعلم كيفية تحميل ملف SVG، واستخدام + محول SVG في بايثون، وحفظ SVG كـ PNG باستخدام كود موثوق. +draft: false +keywords: +- convert svg to png +- save svg as png +- export svg as png +- python svg converter +- load svg file python +language: ar +og_description: حوّل SVG إلى PNG في بايثون بسرعة. يوضح هذا الدليل كيفية تحميل ملف + SVG، واستخدام محول SVG في بايثون، وتصدير SVG كـ PNG. +og_title: تحويل SVG إلى PNG في بايثون – دليل كامل +schemas: +- author: Aspose + dateModified: '2026-06-10' + description: Convert SVG to PNG in Python quickly. Learn how to load SVG file, use + a python svg converter, and save SVG as PNG with reliable code. + headline: Convert SVG to PNG in Python – Full Step‑by‑Step Guide + type: TechArticle +- description: Convert SVG to PNG in Python quickly. Learn how to load SVG file, use + a python svg converter, and save SVG as PNG with reliable code. + name: Convert SVG to PNG in Python – Full Step‑by‑Step Guide + steps: + - name: Loads an SVG file. + text: Loads an SVG file. + - name: Converts it to PNG. + text: Converts it to PNG. + - name: Saves the PNG to a user‑specified location. + text: Saves the PNG to a user‑specified location. + - name: Optionally prints a success message. + text: Optionally prints a success message. + - name: '**External fonts** – If the SVG references a font not installed on the + system, CairoSVG will fall back to a generic one. Embed fonts in the SVG or + install them locally.' + text: '**External fonts** – If the SVG references a font not installed on the + system, CairoSVG will fall back to a generic one. Embed fonts in the SVG or + install them locally.' + - name: '**Embedded images** – Base64‑encoded images work fine; external image links + need to be reachable at conversion time.' + text: '**Embedded images** – Base64‑encoded images work fine; external image links + need to be reachable at conversion time.' + - name: '**Large dimensions** – Converting a massive SVG at high DPI can consume + a lot of RAM. Consider scaling down with the `output_width`/`output_height` + arguments.' + text: '**Large dimensions** – Converting a massive SVG at high DPI can consume + a lot of RAM. Consider scaling down with the `output_width`/`output_height` + arguments.' + - name: '**Transparency** – PNG supports alpha, but some viewers may display a white + background. Test the output in the target environment.' + text: '**Transparency** – PNG supports alpha, but some viewers may display a white + background. Test the output in the target environment.' + type: HowTo +tags: +- Python +- SVG +- Image Processing +title: تحويل SVG إلى PNG في بايثون – دليل كامل خطوة بخطوة +url: /ar/python/general/convert-svg-to-png-in-python-full-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# تحويل SVG إلى PNG في بايثون – دليل كامل خطوة بخطوة + +هل احتجت يومًا إلى **convert SVG to PNG** باستخدام بايثون لكن لم تكن متأكدًا أي مكتبة تختار؟ لست وحدك؛ العديد من المطورين يواجهون هذه المشكلة عندما يحتاجون إلى صور نقطية للصور المصغرة على الويب أو تقارير PDF. في هذا الدليل سنستعرض تحميل ملف SVG، اختيار *python svg converter* قوي، وأخيرًا **save SVG as PNG** ببضع أسطر من الشيفرة فقط. في النهاية ستحصل على سكريبت قابل لإعادة الاستخدام يعمل على Windows و macOS و Linux. + +سنناقش أيضًا كيفية **export SVG as PNG** بالجملة، التعامل مع مشاكل الشفافية، والحفاظ على تنظيم الكود. لا إطالة، فقط خطوات عملية يمكنك نسخها ولصقها في مشروعك الآن. + +--- + +## تحويل SVG إلى PNG – نظرة عامة + +قبل الخوض في الشيفرة، دعونا نوضح المكونات المتحركة: + +| المكوّن | لماذا يهم | +|-----------|----------------| +| **SVG loader** | يقرأ ترميز المتجه حتى يتمكن المحول من فهم الأشكال، التدرجات، والخطوط. | +| **Conversion engine** | يحوّل وصف المتجه إلى بكسلات نقطية. الخيارات الشائعة هي **CairoSVG**، **svglib** + **ReportLab**، أو **Pillow** مع مساعد. | +| **Output writer** | يحفظ الصورة النقطية الناتجة كملف PNG، مع الحفاظ على الشفافية عند الحاجة. | + +اختيار *python svg converter* المناسب يمكن أن يوفر عليك المتاعب لاحقًا—بعضها يدعم أنماط CSS، والبعض الآخر لا. سنركز على **CairoSVG** لأنه بايثون نقي، يعتمد على أقل عدد من الاعتمادات، وينتج PNG بجودة عالية مباشرة. + +--- + +## تحميل ملف SVG في بايثون + +الخطوة الأولى هي الحصول على بيانات SVG في الذاكرة. يمكنك إما قراءة الملف كسلسلة نصية أو السماح للمحول بفتحه مباشرة. إليك أداة مساعدة صغيرة تجريد منطق تحميل الملف وتطرح خطأ واضح إذا كان المسار غير صحيح: + +```python +import pathlib + +def load_svg(path: str) -> pathlib.Path: + """ + Validate that the SVG file exists and return a pathlib.Path object. + This function makes it easy to reuse the same check throughout your code. + """ + svg_path = pathlib.Path(path).expanduser().resolve() + if not svg_path.is_file(): + raise FileNotFoundError(f"SVG file not found: {svg_path}") + if svg_path.suffix.lower() != ".svg": + raise ValueError(f"Expected an .svg file, got: {svg_path.suffix}") + return svg_path +``` + +*لماذا هذا مهم*: محمل نظيف يعزل مشكلات نظام الملفات عن منطق التحويل، مما يجعل السكريبت أكثر قابلية للصيانة. كما يجيب على سؤال المطورين الشائع “**load svg file python**” في المنتديات. + +--- + +## اختيار محول SVG بايثون + +هناك عدة خيارات، لكن دعونا نقارن الأكثر شيوعًا: + +| المكتبة | أمر التثبيت | الإيجابيات | السلبيات | +|---------|----------------|------|------| +| **CairoSVG** | `pip install cairosvg` | يدعم CSS، التدرجات، الخطوط؛ تحويل بسطر واحد؛ غلاف بايثون نقي حول Cairo | يتطلب ملفات ثنائية `cairo` على بعض الأنظمة (التثبيت عبر مدير الحزم النظامي) | +| **svglib + ReportLab** | `pip install svglib reportlab` | مناسب لسلاسل PDF؛ لا مكتبات C خارجية | يتطلب شيفرة أكثر قليلاً؛ أبطأ للدفعات الكبيرة | + +للتبسيط سنستمر مع **CairoSVG**. إذا كنت تفضّل مجموعة بايثون نقيّة بدون ملفات ثنائية خارجية، يمكنك استبدالها بـ `svglib` لاحقًا—فقط غيّر دالة التحويل. + +```bash +pip install cairosvg +``` + +*نصيحة احترافية*: على أوبونتو قد تحتاج إلى `sudo apt-get install libcairo2-dev` قبل تثبيت الحزمة؛ مستخدمو macOS يمكنهم تشغيل `brew install cairo`. + +--- + +## تصدير SVG كـ PNG وحفظ النتيجة + +الآن بعد أن لدينا محملًا ومحولًا، العملية الأساسية هي استدعاء من سطرين. أدناه سكريبت كامل جاهز للتنفيذ يقوم بـ: + +1. تحميل ملف SVG. +2. تحويله إلى PNG. +3. حفظ PNG في موقع يحدده المستخدم. +4. اختياريًا طباعة رسالة نجاح. + +```python +import pathlib +import sys +from cairosvg import svg2png + +def convert_svg_to_png(svg_path: pathlib.Path, png_path: pathlib.Path, dpi: int = 96) -> None: + """ + Convert an SVG file to PNG and write the result to disk. + + Parameters + ---------- + svg_path : pathlib.Path + Path to the source .svg file. + png_path : pathlib.Path + Destination path for the .png output. + dpi : int, optional + Dots‑per‑inch for the raster image. Higher DPI yields larger files. + """ + # Read raw SVG data (CairoSVG can also accept a filename directly) + svg_data = svg_path.read_bytes() + + # Perform the conversion; we write directly to a file-like object. + try: + svg2png(bytestring=svg_data, write_to=str(png_path), dpi=dpi) + except Exception as exc: + raise RuntimeError(f"Failed to convert {svg_path} to PNG: {exc}") from exc + +def main(): + if len(sys.argv) != 3: + print("Usage: python convert_svg.py