diff --git a/html/arabic/java/advanced-usage/_index.md b/html/arabic/java/advanced-usage/_index.md index 5fd516250..96894b0ad 100644 --- a/html/arabic/java/advanced-usage/_index.md +++ b/html/arabic/java/advanced-usage/_index.md @@ -136,6 +136,11 @@ weight: 20 ### [كيفية تشغيل JavaScript في Java – دليل كامل](./how-to-run-javascript-in-java-complete-guide/) تعلم كيفية تشغيل كود JavaScript داخل تطبيقات Java باستخدام Aspose.HTML for Java. +### [كيفية استخدام Sandbox لتحويل HTML إلى PDF في Java – دليل خطوة بخطوة](./how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) + +### [تمكين تنفيذ السكريبت في Java – دليل شامل Aspose.HTML](./enable-script-execution-in-java-complete-aspose-html-guide/) +تعلم كيفية تمكين تشغيل JavaScript في تطبيقات Java باستخدام Aspose.HTML – دليل خطوة بخطوة. + --- **آخر تحديث:** 2025-11-29 diff --git a/html/arabic/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-guide/_index.md b/html/arabic/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-guide/_index.md new file mode 100644 index 000000000..be27e0ebd --- /dev/null +++ b/html/arabic/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-guide/_index.md @@ -0,0 +1,217 @@ +--- +category: general +date: 2026-02-13 +description: تمكين تنفيذ النصوص البرمجية أثناء تحميل مستند HTML باستخدام Aspose.HTML. + تعلّم ضبط مهلة النص البرمجي، واستخدام query selector java، والحصول على الخلفية المحسوبة + في دليل واحد. +draft: false +keywords: +- enable script execution +- set script timeout +- load html document +- query selector java +- get computed background +language: ar +og_description: تمكين تنفيذ النصوص البرمجية في جافا باستخدام Aspose.HTML. يوضح هذا + الدليل كيفية تعيين مهلة النص البرمجي، تحميل مستند HTML، استخدام query selector في + جافا والحصول على الخلفية المحسوبة. +og_title: تمكين تنفيذ النصوص البرمجية في جافا – دليل Aspose.HTML +tags: +- Aspose.HTML +- Java +- DOM Manipulation +title: تمكين تنفيذ النص البرمجي في جافا – دليل Aspose.HTML الكامل +url: /ar/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# تمكين تنفيذ السكريبت في جافا – دليل Aspose.HTML الكامل + +هل تساءلت يوماً كيف **enable script execution** عند معالجة ملف HTML في جافا؟ ربما تقوم بإنشاء مُعالج من جانب الخادم، أو تحتاج ببساطة لاستخراج القيم التي يولدها JavaScript في وقت التشغيل. في هذا الدرس ستتعرف بالضبط على كيفية تشغيل تنفيذ السكريبت، **set script timeout**، واستخراج لون الخلفية المحسوب من عنصر ديناميكي — كل ذلك باستخدام Aspose.HTML. + +سنستعرض تحميل مستند HTML، تكوين المحرك، الانتظار حتى تنتهي السكريبتات، وأخيراً استخدام **query selector java** لتحديد العنصر الذي يهمك. في النهاية، ستتمكن من **get computed background** دون مغادرة بيئة جافا. + +## المتطلبات المسبقة + +- Java 17 أو أحدث (الكود يُمكن أن يُترجم مع إصدارات أقدم، لكن يُنصح بـ 17) +- Aspose.HTML for Java 23.12 أو أحدث – يمكنك الحصول على حزمة Maven `com.aspose:aspose-html:23.12` +- ملف HTML بسيط (`scripted.html`) يحتوي على سكريبت يغيّر عنصر بـ `id="dynamicDiv"` + +لا توجد أطر عمل إضافية مطلوبة؛ المكتبة تتعامل مع كل شيء داخلياً. + +--- + +## الخطوة 1 – تحميل مستند HTML وتمكين تنفيذ السكريبت + +أول شيء عليك فعله هو **load html document** داخل كائن `HtmlDocument`. بشكل افتراضي Aspose.HTML يتيح تنفيذ السكريبت، لكننا سنحدده صراحةً لجعل النية واضحة تماماً. + +```java +import com.aspose.html.*; +import com.aspose.html.dom.*; + +public class JsAndDomTutorial { + public static void main(String[] args) throws Exception { + + // Step 1: Load the HTML file that contains JavaScript + HtmlDocument htmlDoc = new HtmlDocument("YOUR_DIRECTORY/scripted.html", new LoadOptions()); + + // Explicitly enable script execution – this is the key line + htmlDoc.getWindow().setScriptsEnabled(true); +``` + +> **لماذا هذا مهم:** إذا تم تعطيل السكريبتات، أي JavaScript يغيّر الـ DOM سيتجاهل، ولن تتمكن أبداً من **get computed background** لاحقاً. + +--- + +## الخطوة 2 – ضبط مهلة السكريبت لتجنب التوقف + +تشغيل سكريبتات غير موثوقة قد يكون محفوفاً بالمخاطر. Aspose.HTML يتيح لك **set script timeout** بحيث يتوقف المحرك عن أي سكريبت يستغرق أكثر من عدد المليثانية المحدد. هنا نمنح السكريبتات حتى 5 ثوانٍ. + +```java + // Step 2: Allow scripts up to 5 seconds before timing out + htmlDoc.getWindow().setTimeout(5000); +``` + +> **نصيحة محترف:** 5 ثوانٍ تعتبر وفرة لمعظم الصفحات البسيطة. بالنسبة للمكتبات الثقيلة (مثل Chart.js) قد تحتاج إلى رفعها إلى 10 000 ملث. تذكر أن مهلة أقصر تجعل خدمتك أكثر صموداً ضد الشيفرات الخبيثة. + +--- + +## الخطوة 3 – إعطاء السكريبتات وقتاً للانتهاء + +تنفيذ JavaScript غير متزامن. توقف قصير يسمح للمحرك بإنهاء أي مؤقتات أو وعود معلقة. يمكنك فحص `document.readyState`، لكن `Thread.sleep` بسيط يكفي لمعظم سيناريوهات العرض. + +```java + // Step 3: Pause the thread so scripts can finish (2 seconds is usually enough) + Thread.sleep(2000); +``` + +> **ماذا لو احتجت دقة أكبر؟** استبدل `Thread.sleep` بحلقة تتحقق من `htmlDoc.getReadyState() == "complete"` – بذلك تنتظر بالضبط ما يلزم. + +--- + +## الخطوة 4 – تحديد العنصر الديناميكي باستخدام Query Selector Java + +الآن بعد أن استقر المحتوى، يمكننا استخدام **query selector java** للحصول على العنصر الذي تم تعديل نمطه بواسطة السكريبت. المحدد `#dynamicDiv` يطابق `
` الذي نتوقع وجوده. + +```java + // Step 4: Find the element that the script modified + Element dynamicDiv = htmlDoc.querySelector("#dynamicDiv"); + if (dynamicDiv != null) { +``` + +> **خطأ شائع:** نسيان `#` لمحدد الـ ID. `querySelector("dynamicDiv")` سيبحث عن وسم ``، وهو غير موجود بطبيعة الحال. + +--- + +## الخطوة 5 – استرجاع لون الخلفية المحسوب + +أخيراً، نستخدم **get computed background** من النمط المحسوب للعنصر. هذا يعكس القيمة النهائية بعد تطبيق جميع قواعد CSS وتغييرات JavaScript. + +```java + // Step 5: Read the computed background color + String backgroundColor = dynamicDiv.getComputedStyle().getBackgroundColor(); + System.out.println("Computed background: " + backgroundColor); + } else { + System.out.println("Element #dynamicDiv not found."); + } + + // Clean up resources + htmlDoc.dispose(); + } +} +``` + +**الناتج المتوقع** (بافتراض أن السكريبت يعيّن `background-color: rgb(255, 0, 0)`): + +``` +Computed background: rgb(255, 0, 0) +``` + +إذا استخدم السكريبت لوناً مسمى مثل `red`، ستظل القيمة المحسوبة تُرجع بصيغة `rgb(...)` الموحدة. + +--- + +## الحالات الخاصة والبدائل + +| الحالة | ما الذي يجب تغييره | السبب | +|-----------|----------------|--------| +| **تحتاج سكريبتات متعددة إلى وقت أطول** | زيادة المهلة (`setTimeout(10000)`) | منع الإنهاء المبكر | +| **HTML يتم تحميله من URL** | استخدم `new HtmlDocument("https://example.com", new LoadOptions())` | يعمل بنفس طريقة تحميل ملف | +| **تحتاج للانتظار لتغيير DOM محدد** | راقب `dynamicDiv.getComputedStyle().getBackgroundColor()` داخل حلقة مع توقف قصير | يضمن التقاط القيمة النهائية | +| **تشغيل داخل حاوية بدون خيط UI** | لا خطوات إضافية – Aspose.HTML يعمل بدون واجهة | مثالي لأنابيب CI | + +--- + +## مثال كامل جاهز للتنفيذ (انسخه‑ألصقه) + +```java +import com.aspose.html.*; +import com.aspose.html.dom.*; + +public class JsAndDomTutorial { + public static void main(String[] args) throws Exception { + + // Load the HTML document that contains JavaScript + HtmlDocument htmlDoc = new HtmlDocument("YOUR_DIRECTORY/scripted.html", new LoadOptions()); + + // Enable script execution – crucial for dynamic content + htmlDoc.getWindow().setScriptsEnabled(true); + + // Set a generous script timeout (5 seconds) + htmlDoc.getWindow().setTimeout(5000); + + // Give scripts a moment to finish + Thread.sleep(2000); + + // Use query selector java to locate the element altered by the script + Element dynamicDiv = htmlDoc.querySelector("#dynamicDiv"); + if (dynamicDiv != null) { + // Retrieve the computed background color after script execution + String backgroundColor = dynamicDiv.getComputedStyle().getBackgroundColor(); + System.out.println("Computed background: " + backgroundColor); + } else { + System.out.println("Element #dynamicDiv not found."); + } + + // Release native resources + htmlDoc.dispose(); + } +} +``` + +احفظه كـ `JsAndDomTutorial.java`، استبدل `YOUR_DIRECTORY` بمسار ملف HTML الخاص بك، ثم قم بالترجمة باستخدام `javac -cp aspose-html-23.12.jar JsAndDomTutorial.java`، وشغّله بـ `java -cp .:aspose-html-23.12.jar JsAndDomTutorial`. يجب أن ترى لون الخلفية المحسوب يُطبع في وحدة التحكم. + +--- + +## الأسئلة المتكررة + +**س: هل يدعم Aspose.HTML بنية ES6؟** +ج: نعم. يستخدم المحرك مفسّر JavaScript حديث يدعم `let`، `const`، الدوال السهمية، وحتى `async/await`. فقط تأكد من إعطاء مهلة كافية باستخدام `set script timeout`. + +**س: ماذا لو كانت الصفحة تستخدم ملفات سكريبت خارجية؟** +ج: طالما أن تلك الملفات قابلة للوصول (مسار محلي أو URL مطلق) سيتم جلبها تلقائياً. إذا كنت تعمل دون اتصال، اجمع السكريبتات داخل HTML أو استخدم `LoadOptions.setBaseUrl()` لتوجيهها إلى مجلد محلي. + +**س: هل يمكنني استرجاع أنماط محسوبة أخرى؟** +ج: بالتأكيد. كائن `ComputedStyle` يوفّر كل خاصية CSS – `getFontSize()`، `getMarginTop()`، وغيرها. استخدم نفس النمط الذي استخدمته لـ **get computed background**. + +--- + +## الخلاصة + +أنت الآن تعرف كيف **enable script execution** في Aspose.HTML لجافا، **set script timeout**، **load html document**، استغلال **query selector java**، وأخيراً **get computed background** من عنصر مُنَسَّق ديناميكياً. هذا التدفق من البداية إلى النهاية يُعد أساساً صلباً لأي مهمة تصيير HTML من جانب الخادم أو استخراج بيانات. + +هل أنت مستعد للخطوة التالية؟ جرّب استخراج العرض والارتفاع المحسوبين، أو حتى قراءة القيم من عناصر canvas. أو اجمع ذلك مع تحويل PDF لالتقاط الصفحة المُصوَّرة بالكامل – Aspose.HTML يجعل ذلك سهلًا للغاية. + +برمجة سعيدة، ولا تنسَ تجربة تعديل المهلة ومحددات الاختيار لتتناسب مع حالتك الخاصة! 🚀 + +--- + +![Screenshot showing enable script execution in Aspose.HTML](/images/enable-script-execution.png "Enable script execution in Aspose.HTML example") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/_index.md b/html/arabic/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/_index.md new file mode 100644 index 000000000..625577a2a --- /dev/null +++ b/html/arabic/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/_index.md @@ -0,0 +1,230 @@ +--- +category: general +date: 2026-02-13 +description: تعلم كيفية استخدام وضع العزل عند تحويل HTML إلى PDF باستخدام Java، وتعطيل + JavaScript، وتعيين وكيل مستخدم مخصص، والحصول على ملفات PDF موثوقة بسرعة. +draft: false +keywords: +- how to use sandbox +- html to pdf java +- convert html to pdf +- how to disable javascript +- set user agent +language: ar +og_description: تعلّم كيفية استخدام الساندبوكس لتحويل HTML إلى PDF باستخدام Java، + وتعطيل JavaScript، وتعيين وكيل المستخدم في بضع دقائق فقط. +og_title: كيفية استخدام Sandbox لتحويل HTML إلى PDF في Java – دليل كامل +tags: +- Java +- Aspose.HTML +- PDF conversion +- Sandbox +title: كيفية استخدام Sandbox لتحويل HTML إلى PDF في Java – دليل خطوة بخطوة +url: /ar/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية استخدام Sandbox لتحويل HTML إلى PDF باستخدام Java – دليل كامل + +هل تساءلت يومًا **كيف تستخدم sandbox** عندما تحتاج إلى تحويل صفحة HTML إلى PDF باستخدام Java؟ لست وحدك—فالكثير من المطورين يواجهون مشكلة عندما يعتمد HTML الخاص بهم على السكريبتات أو بصمة متصفح معينة، وتظهر النتيجة النهائية غير مشابهة للأصل. + +الأخبار الجيدة؟ باستخدام فئة `Sandbox` في Aspose.HTML يمكنك **تعطيل JavaScript**، وتزييف **وكيل المستخدم**، والحفاظ على عملية التحويل داخل صندوق عزل بحيث لا يتلامس أبداً مع نظام الملفات الحقيقي. في هذا الدرس سنستعرض مثالًا كاملاً قابلاً للتنفيذ يُظهر تحويل **html to pdf java**، يغطي **كيفية تعطيل JavaScript**، ويشرح كيفية **تعيين وكيل المستخدم** للحصول على مخرجات محددة. + +## ما ستبنيه + +بنهاية هذا الدليل ستحصل على برنامج Java يقوم بـ: + +1. إنشاء صندوق عزل يحاكي شاشة بحجم 800 × 600. +2. تحويل `input.html` إلى `output.pdf` دون تنفيذ أي JavaScript. +3. إرسال سلسلة **وكيل مستخدم** مخصصة بحيث يتم عرض الصفحة بالضبط كما تتوقع. + +بدون خدمات خارجية، بدون سحر مخفي—فقط Java صافية وAspose.HTML. + +## المتطلبات المسبقة + +- **Java 17** (أو أي JDK حديث) مثبت ومُعرّف المتغير `JAVA_HOME`. +- ملفات JAR الخاصة بـ **Aspose.HTML for Java 4.0** موجودة في مسار الـ classpath. يمكنك الحصول عليها من مستودع Maven الرسمي أو من موقع Aspose. +- ملف `input.html` بسيط في مجلد تملكه. + +هذا كل شيء. إذا كان لديك مشروع Maven بالفعل، أضف الاعتماد التالي: + +```xml + + com.aspose + aspose-html + 4.0 + +``` + +وإلا فقط ضع ملفات الـ JAR في المجلد `libs/` وأشر إليها في سطر الأوامر. + +--- + +## كيفية استخدام Sandbox لتحويل HTML إلى PDF بأمان + +### الخطوة 1: تهيئة الـ Sandbox + +الصندوق العزل هو قلب الحل. يعزل محرك التحويل، ويتظاهر بأنه جهاز بحجم معين،—والأهم—يسمح لك **بتعطيل JavaScript**. إليك الشيفرة: + +```java +import com.aspose.html.*; +import com.aspose.html.converters.*; +import com.aspose.html.sandbox.*; + +public class SandboxExample { + public static void main(String[] args) throws Exception { + + // Create a sandbox that mimics an 800×600 screen + Sandbox sandbox = new Sandbox(); + sandbox.setDeviceSize(new Size(800, 600)); + + // Disable JavaScript execution – this is how to disable JavaScript in the sandbox + sandbox.setEnableJavaScript(false); + + // Spoof a custom user‑agent so the page thinks it’s being rendered by AsposeHTML/4.0 + sandbox.setUserAgent("AsposeHTML/4.0 (Java)"); +``` + +**لماذا هذا مهم:** +- **حجم الجهاز** يؤثر على استعلامات CSS الإعلامية (`@media screen and (max-width:…)`). +- إيقاف **JavaScript** يمنع السكريبتات من تعديل الـ DOM، وهو أمر أساسي عندما تحتاج إلى PDF محدد النتائج. +- **وكيل المستخدم المخصص** يمكنه إجبار الخادم على تقديم تخطيط صديق للهواتف المحمولة أو ورقة أنماط محددة. + +> *نصيحة محترف:* إذا احتجت لاحقًا إلى JavaScript لصفحة معينة، فقط عيّن `sandbox.setEnableJavaScript(true);`—يمكن إعادة استخدام نفس الصندوق العزل. + +### الخطوة 2: إعداد خيارات تحويل PDF + +فئة `PdfConvertOptions` في Aspose.HTML تمنحك تحكمًا دقيقًا في المخرجات. بالنسبة لهذا العرض، الإعدادات الافتراضية مثالية، لكن يمكنك تعديل DPI، تضمين الخطوط، أو تحديد نسخة PDF إذا رغبت. + +```java + // Default PDF conversion options – good enough for most html to pdf java scenarios + PdfConvertOptions pdfOptions = new PdfConvertOptions(); +``` + +**لماذا قد ترغب في تعديلها:** +- DPI أعلى للحصول على ملفات PDF جاهزة للطباعة. +- `pdfOptions.setEmbedStandardFonts(true);` لضمان تمثيل الخطوط بشكل صحيح على أي جهاز. + +### الخطوة 3: تحويل ملف HTML باستخدام الـ Sandbox + +الآن نجمع كل شيء معًا. طريقة `Converter.convert` تأخذ مسار ملف HTML المصدر، مسار ملف PDF الهدف، خيارات التحويل، والصندوق العزل الذي أعددناه. + +```java + // Perform the conversion inside the sandbox + Converter.convert( + "YOUR_DIRECTORY/input.html", // source HTML (html to pdf java) + "YOUR_DIRECTORY/output.pdf", // target PDF + pdfOptions, + sandbox); // sandbox applied here + + System.out.println("PDF generated with sandbox settings."); + } +} +``` + +إذا تم ربط كل شيء بشكل صحيح، ستظهر رسالة في وحدة التحكم وستجد `output.pdf` بجوار ملف HTML الخاص بك. + +### الخطوة 4: التحقق من النتيجة + +افتح ملف PDF المُولد في أي عارض. يجب أن ترى تمثيلًا دقيقًا لـ `input.html` **بدون أي تغييرات ناتجة عن JavaScript**. أبعاد الصفحة ستطابق حجم الجهاز 800 × 600، والمحتوى سيعكس **وكيل المستخدم** الذي قمت بتعيينه. + +> *ماذا لو ظهر PDF فارغًا؟* تأكد من أن ملف HTML قابل للوصول وأنك فعلاً عطلت JavaScript فقط عندما كان ذلك مقصودًا. أحيانًا تحتاج الموارد الخارجية (خطوط، صور) إلى اتصال شبكي؛ يمكن تكوين الصندوق العزل للسماح أو حظر ذلك أيضًا. + +--- + +## كيفية تعطيل JavaScript في الـ Sandbox (تسليط الضوء على الكلمة المفتاحية الثانوية) + +إذا كنت مهتمًا فقط بجزء **كيفية تعطيل JavaScript**، السطر الأساسي هو: + +```java +sandbox.setEnableJavaScript(false); +``` + +هذا الاستدعاء الوحيد يخبر محرك العرض بتجاهل أي وسوم `