diff --git a/html/arabic/java/advanced-usage/_index.md b/html/arabic/java/advanced-usage/_index.md index 5fd516250..8ba220c3e 100644 --- a/html/arabic/java/advanced-usage/_index.md +++ b/html/arabic/java/advanced-usage/_index.md @@ -136,6 +136,9 @@ weight: 20 ### [كيفية تشغيل JavaScript في Java – دليل كامل](./how-to-run-javascript-in-java-complete-guide/) تعلم كيفية تشغيل كود JavaScript داخل تطبيقات Java باستخدام Aspose.HTML for Java. +### [كيفية استخدام Aspose لتحويل EPUB إلى DOCX – دليل خطوة بخطوة](./how-to-use-aspose-to-convert-epub-to-docx-step-by-step-guide/) +تعلم كيفية تحويل ملفات EPUB إلى DOCX باستخدام Aspose خطوة بخطوة. + --- **آخر تحديث:** 2025-11-29 diff --git a/html/arabic/java/advanced-usage/how-to-use-aspose-to-convert-epub-to-docx-step-by-step-guide/_index.md b/html/arabic/java/advanced-usage/how-to-use-aspose-to-convert-epub-to-docx-step-by-step-guide/_index.md new file mode 100644 index 000000000..0f64d2e13 --- /dev/null +++ b/html/arabic/java/advanced-usage/how-to-use-aspose-to-convert-epub-to-docx-step-by-step-guide/_index.md @@ -0,0 +1,236 @@ +--- +category: general +date: 2026-02-14 +description: تعلم كيفية استخدام Aspose لتحويل ملفات EPUB إلى DOCX بسرعة. يغطي هذا + الدرس أيضًا كيفية تحويل EPUB، وتحويل الكتب الإلكترونية إلى Word، وتحويل مستند EPUB + باستخدام Java. +draft: false +keywords: +- how to use aspose +- convert epub to docx +- how to convert epub +- convert ebook to word +- convert epub document +language: ar +og_description: كيفية استخدام Aspose لتحويل EPUB إلى DOCX في Java. اتبع هذا الدليل + الكامل لتحويل الكتاب الإلكتروني إلى Word، وتحويل مستند EPUB، وأكثر. +og_title: كيفية استخدام Aspose – تحويل EPUB إلى DOCX بسرعة +tags: +- Aspose +- Java +- EPUB +- DOCX +- File Conversion +title: كيفية استخدام Aspose لتحويل EPUB إلى DOCX – دليل خطوة بخطوة +url: /ar/java/advanced-usage/how-to-use-aspose-to-convert-epub-to-docx-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية استخدام Aspose – تحويل EPUB إلى DOCX بسرعة + +هل تساءلت يومًا **كيف تستخدم Aspose** لتحويل ملف EPUB إلى مستند Word؟ لست وحدك. يحتاج العديد من المطورين إلى أتمتة تحويل الكتب الإلكترونية للتقارير أو التحرير أو الأرشفة، وتُسهّل واجهة برمجة التطبيقات Java الخاصة بـ Aspose العملية كقطعة من الكعك. في هذا الدليل سنستعرض مثالًا كاملاً وقابلاً للتنفيذ **يحوّل EPUB إلى DOCX** في ثلاث أسطر من الشيفرة فقط. + +سنضيف أيضًا بعض الحيل ذات الصلة—مثل **كيفية تحويل epub** باستخدام صيغ أخرى، ما يجب فعله إذا كان ملف المصدر يحتوي على صور، وكيفية **تحويل ebook إلى word** مباشرة. في النهاية ستحصل على مقتطف قوي وجاهز للإنتاج يمكنك إدراجه في أي مشروع Java. + +--- + +## ما ستحتاجه + +قبل أن نغوص، تأكد من توفر المتطلبات التالية: + +- **Java Development Kit (JDK) 8 أو أحدث** – يستخدم الكود واجهة `java.nio.file` التي تم تقديمها في Java 7، لذا أي JDK حديث يعمل. +- مكتبة **Aspose.HTML for Java** (الإصدار 23.9 أو أحدث). يمكنك الحصول عليها عبر Maven: + + ```xml + + com.aspose + aspose-html + 23.9 + + ``` + +- **ملف EPUB** تريد تحويله – ضعّه في مكان يمكن الوصول إليه، مثل `src/main/resources/input.epub`. +- **مجلد قابل للكتابة** للملف DOCX الناتج، مثل `src/main/resources/output.docx`. + +هذا كل شيء. لا أدوات إضافية، لا ملفات تنفيذية أصلية، فقط Java عادية وملف JAR واحد من Aspose. + +## الخطوة 1: إعداد هيكل المشروع + +للحفاظ على التنظيم، أنشئ مشروع Maven (أو Gradle) بسيط بالهيكل التالي: + +``` +my-epub-converter/ +├─ src/ +│ └─ main/ +│ ├─ java/ +│ │ └─ EpubToDocx.java +│ └─ resources/ +│ ├─ input.epub +│ └─ output.docx (will be generated) +└─ pom.xml +``` + +> **نصيحة احترافية:** احتفظ بملف EPUB المصدر في مجلد `resources`؛ بهذه الطريقة يمكنك الإشارة إليه باستخدام مسار نسبي بغض النظر عن بيئة التطوير المتكاملة. + +## الخطوة 2: كتابة كود التحويل + +الآن افتح `EpubToDocx.java` والصق المقتطف الكامل القابل للتنفيذ أدناه. كل سطر مُعلق لتتمكن من معرفة *سبب* أهمية كل جزء. + +```java +import com.aspose.html.converters.Converter; +import java.nio.file.Path; +import java.nio.file.Paths; + +/** + * Simple utility that converts an EPUB file to DOCX using Aspose.HTML. + * + * How it works: + * 1️⃣ Resolve the source EPUB location. + * 2️⃣ Resolve the target DOCX location. + * 3️⃣ Call Converter.convert() – Aspose handles all the heavy lifting. + * + * You can run this class directly from your IDE or via: + * mvn exec:java -Dexec.mainClass=EpubToDocx + */ +public class EpubToDocx { + public static void main(String[] args) throws Exception { + // Step 1: Define the source EPUB file location + // Using Paths.get() makes the code OS‑agnostic. + Path epubPath = Paths.get("src/main/resources/input.epub"); + + // Step 2: Define the target DOCX file location + // The output path can be the same folder or any writable directory. + Path docxPath = Paths.get("src/main/resources/output.docx"); + + // Step 3: Convert the EPUB document to DOCX format + // Aspose.HTML reads the EPUB, renders it, and writes a Word file. + Converter.convert(epubPath.toUri(), docxPath.toUri()); + + // Confirmation message – helpful when the code runs in CI pipelines. + System.out.println("Conversion complete! Check: " + docxPath.toAbsolutePath()); + } +} +``` + +### لماذا يعمل هذا + +- **`Converter.convert()`** يخفّف عنك كل عمليات التحليل، ومعالجة CSS، وإدراج الصور التي كانت ستتطلب في غير ذلك مُحلل EPUB مخصص. +- واجهة **`Path`** تضمن التعامل الصحيح مع فواصل الملفات على Windows أو macOS أو Linux. +- بتحويل كائنات **URI** (`toUri()`)، نتجنب مشاكل الترميز المتعلقة بالمسافات أو الأحرف الخاصة في أسماء الملفات. + +## الخطوة 3: تشغيل والتحقق من النتيجة + +قم بترجمة البرنامج وتنفيذه: + +```bash +mvn clean compile exec:java -Dexec.mainClass=EpubToDocx +``` + +إذا سارت الأمور بسلاسة، سترى: + +``` +Conversion complete! Check: /full/path/to/src/main/resources/output.docx +``` + +افتح `output.docx` في Microsoft Word أو LibreOffice أو Google Docs. يجب أن ترى محتوى الكتاب الإلكتروني بالكامل، بما في ذلك العناوين والفقرات والصور المدمجة، معادًا بدقة. + +> **ملاحظة حالة حافة:** إذا كان ملف EPUB يحتوي على محتوى محمي بـ DRM، سيُطلق Aspose استثناءً. في هذه الحالة ستحتاج إلى إزالة DRM أولاً أو استخدام مكتبة تدعم ذلك. + +## أسئلة شائعة ومشكلات محتملة + +### 1. هل يمكنني تحويل عدة ملفات EPUB دفعة واحدة؟ + +بالطبع. ضع منطق التحويل داخل حلقة، واقرأ جميع ملفات `.epub` من دليل، وأنشئ ملفات `.docx` المقابلة. فقط تذكر معالجة الاستثناءات لكل ملف حتى لا يتسبب كتاب إلكتروني واحد سيء في إيقاف الدفعة بأكملها. + +```java +Files.list(Paths.get("src/main/resources/batch")) + .filter(p -> p.toString().endsWith(".epub")) + .forEach(epub -> { + Path docx = Paths.get(epub.toString().replaceAll("\\.epub$", ".docx")); + try { + Converter.convert(epub.toUri(), docx.toUri()); + } catch (Exception e) { + System.err.println("Failed on " + epub + ": " + e.getMessage()); + } + }); +``` + +### 2. ماذا عن التنسيق؟ هل سيحافظ DOCX على CSS الأصلي للـ EPUB؟ + +يقوم Aspose.HTML بعرض EPUB باستخدام محرك المتصفح المدمج، لذا يتم الحفاظ على معظم CSS (الخطوط، الألوان، الهوامش). ومع ذلك، قد تحتاج الخطوط الويب الغريبة إلى تضمين يدوي؛ يمكنك توفير `FontResolver` مخصص إذا واجهت مشاكل في الحروف المفقودة. + +### 3. هل هناك طريقة لتحويل **ebook إلى word** بدون Aspose؟ + +يمكنك استخدام أمر LibreOffice `soffice --convert-to docx`، لكن هذه الطريقة أبطأ، وتتطلب تثبيت مكتب كامل، وغالبًا ما تتعامل بشكل غير صحيح مع التخطيطات المعقدة. حل Aspose النقي المكتوب بـ Java عادةً ما يكون أسرع وأكثر موثوقية للخطوط الأوتوماتيكية. + +### 4. كيف يختلف هذا عن **convert epub document** باستخدام منتجات Aspose الأخرى؟ + +يركّز Aspose.HTML على مستندات تنسيق الويب (HTML، EPUB، MHTML). إذا كنت تحتاج إلى مخرجات PDF، فستنتقل إلى `Aspose.PDF` بعد التحويل إلى HTML، أو تستخدم `Converter.convert()` مع URI هدف PDF. يبقى قاعدة الشيفرة نفسها ثابتة—فقط غيّر امتداد المخرج. + +## مشروع كامل وجاهز للنسخ + +فيما يلي ملف `pom.xml` بسيط يجلب Aspose.HTML. لا تتردد في نسخه ولصقه في جذر مشروعك. + +```xml + + 4.0.0 + + com.example + epub‑to‑docx + 1.0.0 + + 8 + 8 + + + + + com.aspose + aspose-html + 23.9 + + + + + + + org.codehaus.mojo + exec-maven-plugin + 3.0.0 + + EpubToDocx + + + + + +``` + +مع هذا `pom.xml`، **الحل الكامل**—من الاعتمادات إلى التنفيذ—مُغلق في مجلد واحد. لا حاجة لسكربتات خارجية. + +## نظرة بصرية + +![كيفية استخدام Aspose – تحويل تدفق EPUB إلى DOCX](/images/epub-to-docx-flow.png) + +*نص بديل للصورة: “مخطط تحويل Aspose يوضح إدخال EPUB، معالجة Aspose.HTML، وإخراج DOCX.”* + +يوضح المخطط التدفق البسيط: **EPUB → Aspose.HTML Converter → DOCX**. وهو مفيد عندما تحتاج إلى شرح الخطوات لأصحاب المصلحة غير التقنيين. + +## الخلاصة + +لقد غطينا للتو **كيفية استخدام Aspose** لـ **تحويل EPUB إلى DOCX** في Java، مع مثال قابل للتنفيذ، وإعداد Maven، ونصائح عملية لمعالجة الدفعات ومشكلات التنسيق. هذا الحل يجيب على السؤال الأساسي—*كيفية تحويل epub*—ويظهر لك أيضًا كيفية **تحويل ebook إلى word** ومعالجة الحالات الحدية الشائعة. + +الخطوات التالية؟ جرّب تغيير URI الإخراج إلى `output.pdf` وشاهد Aspose يُنشئ PDF بدلاً من ذلك، أو دمج المحول في نقطة نهاية REST باستخدام Spring Boot حتى يتمكن المستخدمون من رفع EPUB والحصول على DOCX فورًا. الاحتمالات لا حصر لها، ومع API القوي من Aspose أنت مجهز جيدًا لاستكشافها. + +هل لديك المزيد من الأسئلة حول سيناريوهات **convert epub document**، أو تحتاج مساعدة في تعديل إعدادات التحويل؟ اترك تعليقًا أدناه، وبرمجة سعيدة! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/java/conversion-html-to-other-formats/_index.md b/html/arabic/java/conversion-html-to-other-formats/_index.md index 7c53c6411..f7162e3da 100644 --- a/html/arabic/java/conversion-html-to-other-formats/_index.md +++ b/html/arabic/java/conversion-html-to-other-formats/_index.md @@ -83,21 +83,21 @@ XPS هو صيغة الطباعة الخاصة بمايكروسوفت. باستخ ## التحويل - دروس تحويل HTML إلى صيغ أخرى ### [تحويل HTML إلى PDF](./convert-html-to-pdf/) -تعلم كيفية تحويل HTML إلى PDF في Java باستخدام Aspose.HTML. أنشئ ملفات PDF عالية الجودة من محتوى HTML بسهولة. ### [تحويل HTML إلى MHTML](./convert-html-to-mhtml/) -حوّل HTML إلى MHTML بسهولة باستخدام Aspose.HTML for Java. اتبع دليلنا خطوة بخطوة لتحويل HTML إلى MHTML بكفاءة. ### [تحويل HTML إلى XPS](./convert-html-to-xps/) -تعلم كيفية تحويل HTML إلى XPS بسهولة باستخدام Aspose.HTML for Java. أنشئ مستندات متعددة المنصات بسهولة. ### [تحويل Markdown إلى HTML](./convert-markdown-to-html/) -حوّل Markdown إلى HTML في Java بسلاسة مع Aspose.HTML for Java. اتبع دليلنا خطوة بخطوة لتبسيط احتياجات تحويل المستندات. ### [تحويل SVG إلى صورة](./convert-svg-to-image/) -تعلم كيفية تحويل SVG إلى صور في Java باستخدام Aspose.HTML. دليل شامل لإنتاج مخرجات عالية الجودة. ### [تحويل SVG إلى PDF](./convert-svg-to-pdf/) -حوّل SVG إلى PDF في Java باستخدام Aspose.HTML. حل سلس لتحويل المستندات بجودة عالية. ### [تحويل SVG إلى XPS](./convert-svg-to-xps/) -تعلم كيفية تحويل SVG إلى XPS باستخدام Aspose.HTML for Java. دليل بسيط خطوة بخطوة لتحويلات سلسة. ### [تحويل HTML إلى PDF في Java – دليل خطوة بخطوة مع إعدادات حجم الصفحة](./convert-html-to-pdf-in-java-step-by-step-guide-with-page-siz/) تعلم تحويل HTML إلى PDF في Java مع إعدادات حجم الصفحة خطوة بخطوة باستخدام Aspose.HTML. +### [تحويل HTML إلى PDF في Java – دليل شامل خطوة بخطوة](./convert-html-to-pdf-in-java-complete-step-by-step-guide/) +### [كيفية ضغط PDF باستخدام Aspose HTML إلى PDF – دليل Java](./how-to-compress-pdf-with-aspose-html-to-pdf-java-guide/) +تعلم كيفية تقليل حجم ملف PDF باستخدام Aspose.HTML إلى PDF في Java مع إرشادات خطوة بخطوة. +### [تحويل HTML ديناميكي إلى PDF باستخدام Aspose HTML for Java](./convert-dynamic-html-pdf-with-aspose-html-for-java/) +تعلم كيفية تحويل صفحات HTML الديناميكية إلى ملفات PDF باستخدام Aspose HTML for Java. +### [كيفية استخدام Aspose – تحويل دفعة HTML إلى PDF في Java](./how-to-use-aspose-batch-convert-html-to-pdf-in-java/) +تعلم كيفية تحويل مجموعة من ملفات HTML إلى PDF دفعة واحدة باستخدام Aspose.HTML for Java. ## الأسئلة المتكررة diff --git a/html/arabic/java/conversion-html-to-other-formats/convert-dynamic-html-pdf-with-aspose-html-for-java/_index.md b/html/arabic/java/conversion-html-to-other-formats/convert-dynamic-html-pdf-with-aspose-html-for-java/_index.md new file mode 100644 index 000000000..988f47aab --- /dev/null +++ b/html/arabic/java/conversion-html-to-other-formats/convert-dynamic-html-pdf-with-aspose-html-for-java/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-02-14 +description: تعلم كيفية تحويل HTML الديناميكي إلى PDF باستخدام Aspose HTML للغة Java، + وتحميل HTML مع السكريبتات، والانتظار لتنفيذ جافاسكريبت، واستعلام صفوف جدول المحدد + في سير عمل واحد. +draft: false +keywords: +- convert dynamic html pdf +- load html with scripts +- wait for javascript execution +- query selector table rows +- aspose html pdf java +language: ar +og_description: دليل خطوة بخطوة لتحويل HTML ديناميكي إلى PDF، تحميل HTML مع السكريبتات، + الانتظار لتنفيذ جافاسكريبت، واستعلام صفوف الجدول باستخدام Aspose HTML PDF Java. +og_title: تحويل HTML ديناميكي إلى PDF باستخدام Aspose HTML للـ Java +tags: +- Aspose +- Java +- HTML-to-PDF +title: تحويل HTML الديناميكي إلى PDF باستخدام Aspose HTML for Java +url: /ar/java/conversion-html-to-other-formats/convert-dynamic-html-pdf-with-aspose-html-for-java/ +--- + +. + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# تحويل HTML ديناميكي إلى PDF باستخدام Aspose HTML for Java + +هل احتجت يوماً إلى **تحويل HTML ديناميكي إلى PDF** لكن الصفحة التي تتعامل معها تعتمد على JavaScript لبناء الجداول أو المخططات أو القوائم؟ لست وحدك. في العديد من المشاريع الواقعية لا يكون الـ HTML ثابتًا – تُنفّذ السكريبتات، تظهر عقد الـ DOM، وفقط بعد ذلك يصبح شكل الصفحة كما تتوقع. + +في هذا الدرس سنستعرض مثالًا كاملاً وقابلًا للتنفيذ ي **يحمّل HTML مع السكريبتات**، **ينتظر تنفيذ JavaScript**، يفحص الـ DOM النهائي باستخدام **محدد استعلام لصفوف الجدول**، وأخيرًا **يحوّل HTML الديناميكي إلى PDF** باستخدام مكتبة Aspose HTML for Java. في النهاية ستحصل على فئة Java واحدة يمكنك إدراجها في أي مشروع Maven أو Gradle وتشغيلها فورًا. + +> **لماذا يهم؟** +> تحويل الصفحة قبل انتهاء تشغيل السكريبتات غالبًا ما ينتج PDF فارغ أو جدول مفقود. النهج الموضح هنا يضمن أن الـ PDF يعكس تمامًا ما يراه المستخدم في المتصفح. + +--- + +## ما الذي ستحتاجه + +- **Java 17** (أو أي JDK حديث؛ الـ API يعمل مع Java 8+ لكن الإصدارات الأحدث تعطي أداءً أفضل) +- **Aspose.HTML for Java** 23.10 (أو أحدث) – يمكنك الحصول عليها من Maven Central +- ملف **HTML ديناميكي** (سنستخدم `dynamic.html` يحتوي على سكريبت يبني جدولًا) +- إلمام أساسي بـ Java I/O و Maven/Gradle (ليس من الضروري خبرة عميقة) + +إذا كان لديك ملف `pom.xml` لمشروع Maven، أضف تبعية Aspose: + +```xml + + com.aspose + aspose-html + 23.10 + +``` + +--- + +## الخطوة 1: تحميل HTML مع تمكين السكريبتات + +أول ما علينا فعله هو إخبار Aspose أن الـ HTML الذي سنحمّله قد يحتوي على JavaScript يحتاج إلى التنفيذ. يتم ذلك عبر `HTMLLoadOptions` – اضبط علم **enableScripts** إلى `true`. + +```java +import com.aspose.html.*; +import com.aspose.html.dom.*; +import java.nio.file.Paths; + +/** + * Demonstrates loading an HTML file that contains JavaScript. + */ +public class RunJsBeforeConversion { + + public static void main(String[] args) throws Exception { + + // -------------------------------------------------------------------- + // 1️⃣ Load the HTML document with JavaScript execution enabled + // -------------------------------------------------------------------- + // The `true` argument tells Aspose to enable script execution. + HTMLLoadOptions loadOptions = new HTMLLoadOptions(true); + + // Adjust the path to point at your own dynamic.html file. + HTMLDocument htmlDocument = new HTMLDocument( + Paths.get("YOUR_DIRECTORY/dynamic.html").toUri(), + loadOptions); +``` + +> **نصيحة احترافية:** احفظ ملف HTML بجوار مجلد المصدر أو استخدم مسارًا مطلقًا؛ وإلا سيتسبب استدعاء `toUri()` في رمي استثناء `FileNotFoundException`. + +--- + +## الخطوة 2: الانتظار لتنفيذ JavaScript + +تقوم Aspose بتشغيل السكريبتات على محرك خفيف الوزن، لكن لا يزال عليك إعطاء الصفحة لحظة لإنهاء التنفيذ. في نظام إنتاجي قد تُربط بحدث DOM‑ready، لكن للعرض السريع يكفي إيقاف مؤقت بسيط. + +```java + // -------------------------------------------------------------------- + // 2️⃣ Wait for JavaScript execution (simple pause for demo purposes) + // -------------------------------------------------------------------- + // 2 seconds is usually enough for tiny demos; increase if your script + // does heavy work or makes async network calls. + Thread.sleep(2000); +``` + +> **لماذا الإيقاف المؤقت؟** المكتبة تنفّذ السكريبتات بشكل متزامن، إلا أن بعض العمليات (مثل `setTimeout`) تُضاف إلى طابور. النوم يضمن تفريغ تلك الطوابير قبل فحص الـ DOM. + +--- + +## الخطوة 3: محدد استعلام لصفوف الجدول – التحقق من الـ DOM + +الآن بعد أن انتهت السكريبتات، يمكننا التعامل مع المستند كما نفعل في وحدة تحكم المتصفح: نستخدم محددات CSS للحصول على العناصر. هنا نحدد جدولًا له `id="report"` ونطبع عدد الصفوف التي يحتويها. + +```java + // -------------------------------------------------------------------- + // 3️⃣ Inspect the DOM after script execution + // -------------------------------------------------------------------- + // Using a CSS selector to find the table generated by JavaScript. + Element reportTable = htmlDocument.querySelector("table#report"); + + // Guard against a missing table – helpful when the script fails. + if (reportTable == null) { + System.out.println("⚠️ No table with id='report' found."); + return; + } + + // The Element API gives us direct access to rows collection. + int rowCount = reportTable.getRows().getLength(); + System.out.println("Rows after script execution: " + rowCount); +``` + +الناتج النموذجي للملف `dynamic.html` يكون كالتالي: + +``` +Rows after script execution: 5 +``` + +إذا رأيت عددًا مختلفًا، تحقق من السكريبت في ملف HTML – ربما يولّد الصفوف بشكل شرطي. + +--- + +## الخطوة 4: تحويل حالة الـ DOM النهائية إلى PDF + +بعد التحقق من الـ DOM، الخطوة الأخيرة هي سطر واحد فقط: مرّر `HTMLDocument` إلى `Converter.convert`. الناتج هو PDF يعكس تمامًا ما سيعرضه المتصفح بعد انتهاء السكريبتات. + +```java + // -------------------------------------------------------------------- + // 4️⃣ Convert the final DOM state to a PDF file + // -------------------------------------------------------------------- + Converter.convert(htmlDocument, + Paths.get("YOUR_DIRECTORY/dynamic.pdf").toUri()); + + System.out.println("✅ PDF generated at YOUR_DIRECTORY/dynamic.pdf"); + } +} +``` + +افتح `dynamic.pdf` بأي عارض – يجب أن ترى الجدول المكتمل، الأنماط، وأي صور أضافها السكريبت. + +--- + +## مثال كامل يعمل (جميع الخطوات مجمعة) + +فيما يلي ملف المصدر الكامل الذي يمكنك نسخه ولصقه في `src/main/java/RunJsBeforeConversion.java`. تذكر أن تستبدل `YOUR_DIRECTORY` بالمسار الفعلي الذي يحتوي على `dynamic.html`. + +```java +import com.aspose.html.*; +import com.aspose.html.dom.*; +import java.nio.file.Paths; + +/** + * End‑to‑end demo: load a dynamic HTML page, let its JavaScript run, + * query the generated table, and convert the result to PDF. + * + * Requires Aspose.HTML for Java 23.10+ on the classpath. + */ +public class RunJsBeforeConversion { + public static void main(String[] args) throws Exception { + + // 1️⃣ Load HTML with scripts enabled + HTMLLoadOptions loadOptions = new HTMLLoadOptions(true); + HTMLDocument htmlDocument = new HTMLDocument( + Paths.get("YOUR_DIRECTORY/dynamic.html").toUri(), + loadOptions); + + // 2️⃣ Wait for JavaScript execution (2 seconds) + Thread.sleep(2000); + + // 3️⃣ Query selector table rows – verify script output + Element reportTable = htmlDocument.querySelector("table#report"); + if (reportTable == null) { + System.out.println("⚠️ No table with id='report' found."); + return; + } + int rowCount = reportTable.getRows().getLength(); + System.out.println("Rows after script execution: " + rowCount); + + // 4️⃣ Convert the final DOM to PDF + Converter.convert(htmlDocument, + Paths.get("YOUR_DIRECTORY/dynamic.pdf").toUri()); + + System.out.println("✅ PDF generated at YOUR_DIRECTORY/dynamic.pdf"); + } +} +``` + +شغّله باستخدام: + +```bash +mvn compile exec:java -Dexec.mainClass=RunJsBeforeConversion +``` + +أو الأمر المكافئ في Gradle. + +--- + +## الأخطاء الشائعة وكيفية تجنّبها + +| المشكلة | لماذا تحدث | الحل | +|--------|------------|------| +| **PDF فارغ** | تم تعطيل السكريبتات (`HTMLLoadOptions(false)`) أو كان الإيقاف المؤقت قصيرًا جدًا. | احرص على ضبط `true` للسكريبتات وزد مدة `Thread.sleep` إذا كانت صفحتك تستخدم استدعاءات غير متزامنة. | +| **`reportTable` فارغ** | المحدد خاطئ أو السكريبت لم ينشئ العنصر. | تأكد من أن `