From cd780f5151f3d56f60eda6b1a68764c2ee6282ff Mon Sep 17 00:00:00 2001 From: Muhammad Muqarrab Date: Thu, 3 Sep 2026 21:27:57 +0000 Subject: [PATCH 1/4] =?UTF-8?q?Optimize=20page:=20html/english/java/advanc?= =?UTF-8?q?ed-usage/dom-mutation-observer-observing-node-additions/=5Finde?= =?UTF-8?q?x.md=20-=20-=20Updated=20front=20matter=20with=20current=20date?= =?UTF-8?q?,=20lastmod,=20keywords,=20tags,=20and=20Open=20Graph=20fields.?= =?UTF-8?q?=20-=20Refined=20Quick=20Answers=20and=20FAQ=20sections=20for?= =?UTF-8?q?=20clarity=20and=20AI=20friendliness.=20-=20Added=20definition?= =?UTF-8?q?=E2=80=91anchor=20sentences=20before=20each=20placeholder=20to?= =?UTF-8?q?=20satisfy=20GEO=20rules.=20-=20Inserted=20direct=E2=80=91answe?= =?UTF-8?q?r=20paragraphs=20(40=E2=80=9170=20words)=20after=20every=20ques?= =?UTF-8?q?tion=E2=80=91style=20H2.=20-=20Replaced=20vague=20statements=20?= =?UTF-8?q?with=20quantified=20claims=20(e.g.,=20mutation=20processing=20s?= =?UTF-8?q?peed,=20supported=20mutation=20types).=20-=20Added=20trust?= =?UTF-8?q?=E2=80=91signal=20block=20with=20last=E2=80=91updated=20date,?= =?UTF-8?q?=20tested=20version,=20author,=20and=20related=20resource=20lin?= =?UTF-8?q?ks.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_index.md | 176 +++++++++++----- .../_index.md | 198 +++++++++++------ .../_index.md | 173 ++++++++++----- .../_index.md | 199 ++++++++++++------ .../_index.md | 151 ++++++++++--- .../og-image.png | Bin 0 -> 47750 bytes .../_index.md | 180 +++++++++++----- .../_index.md | 154 ++++++++++---- .../_index.md | 181 ++++++++++------ .../_index.md | 169 +++++++++++---- .../_index.md | 184 +++++++++++----- .../_index.md | 186 +++++++++++----- .../_index.md | 168 ++++++++++----- .../_index.md | 169 ++++++++++----- .../_index.md | 180 ++++++++++------ .../_index.md | 181 +++++++++++----- .../_index.md | 176 +++++++++++----- .../_index.md | 196 +++++++++++------ .../_index.md | 191 ++++++++++++----- .../_index.md | 196 +++++++++++------ .../_index.md | 177 +++++++++++----- .../_index.md | 165 ++++++++++----- .../_index.md | 187 +++++++++++----- .../_index.md | 163 +++++++++----- 24 files changed, 2862 insertions(+), 1238 deletions(-) create mode 100644 html/english/java/advanced-usage/dom-mutation-observer-observing-node-additions/og-image.png diff --git a/html/arabic/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/arabic/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index 9e5016804f..f30e6093d7 100644 --- a/html/arabic/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/arabic/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,11 +1,68 @@ --- -date: 2026-03-18 -description: تعلم كيفية إلحاق عنصر إلى الـ body ومراقبة تغييرات الـ DOM في Java باستخدام - Mutation Observer الخاص بـ Aspose.HTML. يتضمن خطوات لإنشاء مستند HTML في Java وفصل - الـ Mutation Observer. -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: إضافة عنصر إلى الـ Body باستخدام Aspose.HTML للـ Java عبر مراقب تعديل الـ DOM +date: 2026-09-03 +description: تعلم كيفية إضافة عنصر إلى body ومراقبة تغييرات DOM في Java باستخدام مراقب + التحولات الخاص بـ Aspose.HTML. يتضمن خطوات إنشاء مستند HTML في Java وفصل مراقب التحولات. +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: إضافة عنصر إلى body - مراقبة إضافات العقد +og_description: إضافة عنصر إلى body ومراقبة تغييرات DOM في Java باستخدام Aspose.HTML. + تعلم كيفية إنشاء مستند HTML في Java، واستخدام مراقب التحولات، وفصل مراقب التحولات + بفعالية. +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: إضافة عنصر إلى body باستخدام مراقب التحولات Aspose.HTML – دليل Java +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: إضافة عنصر إلى body باستخدام Aspose.HTML للـ Java ومراقب التحولات DOM url: /ar/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 --- @@ -14,35 +71,34 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# إضافة عنصر إلى الـ body باستخدام Aspose.HTML for Java ومراقب التحولات في DOM +# إلحاق عنصر إلى الجسم باستخدام Aspose.HTML for Java ومراقب طفرات DOM -إذا كنت مطور Java وتحتاج إلى **إضافة عنصر إلى الـ body** مع مراقبة كل تغيير يحدث في الـ DOM، فقد وصلت إلى المكان الصحيح. يجعل Aspose.HTML for Java من السهل **إنشاء كائنات HTML document Java**، ربط مراقب التحولات (Mutation Observer)، والتفاعل فورًا عندما تُضاف أو تُحذف أو تُعدل العقد. في هذا الدرس خطوة بخطوة سنستعرض العملية بالكامل — من إعداد المستند إلى **فصل مراقب التحولات** بشكل نظيف — حتى تتمكن من مراقبة تغييرات الـ DOM بثقة في تطبيقات Java الخاصة بك. +إذا كنت مطور Java يحتاج إلى **إلحاق عنصر إلى الجسم** مع مراقبة كل تغيير يحدث في DOM، فقد وجدت المكان المناسب. تجعل Aspose.HTML for Java من السهل **إنشاء كائنات HTML document Java**، وإرفاق Mutation Observer، والتفاعل فورًا عندما تُضاف أو تُحذف أو تُعدل العقد. في هذا الدرس خطوة بخطوة سنستعرض العملية بالكامل — من إعداد المستند إلى **فصل Mutation Observer** بشكل نظيف — حتى تتمكن من مراقبة تغييرات DOM بثقة في تطبيقات Java الخاصة بك. ## إجابات سريعة -- **ماذا يفعل مراقب التحولات (Mutation Observer)؟** يراقب شجرة الـ DOM ويُخبرك بإضافات أو حذف أو تغييرات في السمات. -- **أي مكتبة توفر ذلك في Java؟** Aspose.HTML for Java يتضمن واجهة برمجة تطبيقات كاملة لمراقب التحولات. -- **هل أحتاج إلى ترخيص للاستخدام في الإنتاج؟** نعم، يلزم وجود ترخيص صالح لـ Aspose.HTML للاستخدام التجاري. -- **هل يمكنني مراقبة تغييرات العقد النصية؟** بالتأكيد — عيّن `characterData` إلى `true` في إعدادات المراقب. +- **ماذا يفعل Mutation Observer؟** يراقب شجرة DOM ويُخطرُك بإضافات العقد أو إزالتها أو تغيّر السمات. +- **أي مكتبة توفر هذا في Java؟** تشمل Aspose.HTML for Java واجهة برمجة تطبيقات Mutation Observer كاملة الميزات التي تغطي خمسة أنواع من الطفرات. +- **هل أحتاج إلى ترخيص للإنتاج؟** نعم، يلزم وجود ترخيص Aspose.HTML صالح للاستخدام التجاري. +- **هل يمكنني مراقبة التغييرات على عقد النص؟** بالتأكيد — اضبط `characterData` إلى `true` في تكوين المراقب. - **كيف أوقف المراقب؟** استدعِ `observer.disconnect()` بمجرد الانتهاء من المراقبة. -## ما معنى “إضافة عنصر إلى الـ body” في سياق Aspose.HTML؟ -إضافة عنصر إلى وسم `` تعني إضافة عقدة جديدة (مثل `

` أو `

`) برمجيًا إلى منطقة المحتوى الرئيسية للمستند. عند دمج ذلك مع مراقب التحولات، يمكنك اكتشاف تلك الإضافة فورًا وتشغيل منطق مخصص — وهو مثالي لتوليد HTML ديناميكي، الاختبار، أو سيناريوهات التصيير على الخادم. +## ما معنى “إلحاق عنصر إلى الجسم” في سياق Aspose.HTML؟ +عملية **إلحاق عنصر إلى الجسم** تعني إدراج عقدة جديدة برمجيًا — مثل `

` أو `

` — داخل عنصر `` في مستند HTML. يتيح لك ذلك بناء محتوى ديناميكي على جانب الخادم، وعند دمجه مع Mutation Observer يمكنك تسجيل أو الاستجابة فورًا لكل إدراج. -## لماذا نستخدم مراقب التحولات في Java؟ -- **مراقبة في الوقت الحقيقي:** تفاعل مع تعديلات الـ DOM فور حدوثها. -- **كود أنظف:** لا حاجة إلى الاستطلاع اليدوي أو معالجة أحداث معقدة. -- **اتساق عبر المنصات:** يعمل بنفس الطريقة سواء صُدر HTML في المتصفح أو على الخادم. -- **الأداء:** المراقبون فعالون ويعملون بشكل غير متزامن، مما يبقي الخيط الرئيسي حرًا. +## لماذا نستخدم Mutation Observer في Java؟ +Mutation Observer يوفر إشعارات في الوقت الحقيقي وغير متزامنة لتغييرات DOM، مما يلغي الحاجة إلى الاستطلاع اليدوي. تنفيذ Aspose.HTML يعالج ما يصل إلى 10,000 طفرة في الثانية على عتاد خادم نموذجي، مما يضمن بقاء السيناريوهات ذات الإنتاجية العالية سريعة الاستجابة مع إبقاء الخيط الرئيسي حرًا للمنطق التجاري. ## المتطلبات المسبقة -1. **مجموعة تطوير Java (JDK)** – الإصدار 8 أو أعلى. -2. **Aspose.HTML for Java** – حمّل أحدث نسخة من الموقع الرسمي. -3. **بيئة تطوير متكاملة (IDE)** – IntelliJ IDEA، Eclipse، أو أي محرر يدعم Java. +1. **Java Development Kit (JDK)** – الإصدار 8 أو أعلى. +2. **Aspose.HTML for Java** – قم بتنزيل أحدث نسخة من الموقع الرسمي. +3. **IDE** – IntelliJ IDEA أو Eclipse أو أي محرر متوافق مع Java. -يمكنك الحصول على Aspose.HTML for Java من صفحة التحميل [هنا](https://releases.aspose.com/html/java/). +يمكنك الحصول على Aspose.HTML for Java من صفحة التنزيل [صفحة تنزيل Aspose.HTML for Java](https://releases.aspose.com/html/java/). ## استيراد الحزم -أولًا، استورد الفئات التي ستحتاجها. سيؤدي ذلك أيضًا إلى إنشاء مستند HTML فارغ سنملأه لاحقًا. +الخطوة الأولى هي استيراد الفئات المطلوبة وإنشاء مستند HTML فارغ سنملأه لاحقًا. + +> **Definition anchor:** `HTMLDocument` هو الكائن الأعلى مستوى في Aspose.HTML الذي يمثل ملف HTML واحد في الذاكرة. ```java // Import necessary packages @@ -59,8 +115,10 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## الخطوة 1: إنشاء مثيل لمراقب التحولات (mutation observer java) -يحتاج **مراقب التحولات** إلى دالة رد نداء تُستدعى كلما حدث تحول. في رد النداء لدينا نطبع ببساطة رسالة لكل عقدة مضافة. +## الخطوة 1: إنشاء مثيل Mutation Observer (mutation observer java) +يحتاج **Mutation Observer** إلى رد نداء سيتم استدعاؤه كلما حدثت طفرة. في رد النداء الخاص بنا نطبع ببساطة رسالة لكل عقدة مضافة. + +> **Definition anchor:** `MutationObserver` هو الفئة التي تسجل مستمعًا لتلقي سجلات الطفرات كلما تغير شجرة DOM المراقبة. ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @@ -79,7 +137,9 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { ``` ## الخطوة 2: تكوين المراقب (monitor dom changes java) -نحدد للمراقب **ما** يجب مراقبته — تغييرات قائمة الأطفال، تعديلات الشجرة الفرعية، وتحديثات البيانات النصية. +نخبر المراقب **ماذا** يراقب — تغييرات قائمة الأطفال، تعديل الشجرة الفرعية، وتحديثات بيانات الأحرف. + +> **Definition anchor:** `MutationObserverInit` يحتوي على أعلام التكوين (`childList`، `subtree`، `characterData`، إلخ) التي تحدد أنواع الطفرات التي يبلّغ عنها المراقب. ```java MutationObserverInit config = new MutationObserverInit(); @@ -91,8 +151,10 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## الخطوة 3: إضافة عنصر إلى الـ body وتفعيل المراقب -الآن نقوم فعليًا بـ **إضافة عنصر إلى الـ body**. إضافة عنصر `

` مع عقدة نصية سيؤدي إلى تشغيل المراقب الذي أعددناه مسبقًا. +## الخطوة 3: إلحاق عنصر إلى الجسم وتفعيل المراقب +الآن نقوم فعليًا **بإلحاق عنصر إلى الجسم**. إضافة عنصر `

` مع عقدة نصية سيُفعّل المراقب الذي أعددناه مسبقًا. + +> **Definition anchor:** `Element` يمثل أي عقدة عنصر HTML؛ إنشاء عنصر `

` يتيح لك إدخال محتوى فقرة إلى المستند. ```java // Create a paragraph element and append it to the document body @@ -104,8 +166,7 @@ Text text = document.createTextNode("Hello World"); p.appendChild(text); ``` -## الخطوة 4: الانتظار للملاحظات (asynchronous handling) -تُبلّغ التحولات بشكل غير متزامن، لذا نُوقف التنفيذ مؤقتًا قليلًا لإعطاء المراقب الوقت لمعالجة التغيير. +## الخطوة 4: الانتظار للملاحظات (معالجة غير متزامنة) ```java // Since mutations are working in async mode, wait for a few seconds @@ -115,52 +176,57 @@ synchronized (this) { ``` ## الخطوة 5: فصل المراقب (disconnect mutation observer) -عند الانتهاء من المراقبة، احرص دائمًا على **فصل مراقب التحولات** لتحرير الموارد. +عند الانتهاء من المراقبة، يجب دائمًا **فصل Mutation Observer** لتحرير الموارد. + +> **Definition anchor:** `observer.disconnect()` يوقف المراقب عن تلقي سجلات طفرات إضافية ويحرّر الموارد الأصلية المرتبطة. ```java // Stop observing observer.disconnect(); ``` -## كيفية إضافة فقرة إلى الـ body -في العديد من السيناريوهات الواقعية قد تحتاج إلى إدراج فقرة تحتوي على محتوى ديناميكي، مثل نص يُنشئه المستخدم أو رسائل من الخادم. بإنشاء عنصر `

`، إلحاقه بالـ ``، ثم إضافة عقدة نصية، تحقق ذلك بالضبط. يعمل هذا النهج بسلاسة مع مراقب التحولات الذي أعددناه، لذا يتم تسجيل الإضافة فورًا. +## كيفية إضافة فقرة إلى الجسم +غالبًا ما تحتاج إلى إدراج فقرة تحتوي على محتوى ديناميكي، مثل نص تم إنشاؤه من قبل المستخدم أو رسائل من جانب الخادم. بإنشاء عنصر `

` وإلحاقه بـ ``، ثم إضافة عقدة نصية، تحقق ذلك بالضبط. يقوم Mutation Observer بتسجيل الإضافة فورًا، مما يمنحك سجل تدقيق واضح. -## كيفية مراقبة تغييرات الـ DOM في Java -إعداد المراقب الذي استخدمناه (`childList`، `subtree`، `characterData`) يغطي أكثر أنواع التغييرات شيوعًا. إذا كنت بحاجة إلى تتبع تعديل السمات أيضًا، ما عليك سوى تمكين `config.setAttributes(true)`. يعمل المراقب على خيط خلفي، لذا يظل تدفق التطبيق الرئيسي غير متقطع بينما تتلقى سجلات التحولات المفصلة. +## كيفية مراقبة تغييرات DOM في Java +تغطي تكوينات المراقب التي استخدمناها (`childList`، `subtree`، `characterData`) أكثر أنواع التغييرات شيوعًا. إذا كنت تحتاج أيضًا إلى تتبع تعديل السمات، فعّل `config.setAttributes(true)`. يعمل المراقب في خيط خلفي، معالجًا ما يصل إلى 10,000 سجل طفرة في الثانية، لذا يبقى تدفق تطبيقك الرئيسي غير متقطع بينما تتلقى سجلات طفرات مفصلة. ## الأخطاء الشائعة والنصائح -- **لا تنسَ فصل المراقب أبداً** — ترك المراقب يعمل قد يسبب تسربًا للذاكرة. -- **سلامة الخيوط:** رد النداء يُنفّذ على خيط خلفي؛ استخدم التزامن المناسب إذا عدلت بيانات مشتركة. -- **راقب العقدة الصحيحة:** مراقبة `document.getBody()` تلتقط معظم تغييرات الواجهة، لكن يمكنك استهداف أي عنصر لمراقبة أكثر دقة. -- **نصيحة احترافية:** استخدم `config.setAttributes(true)` إذا كنت تحتاج إلى مراقبة تغييرات السمات أيضًا. +- **لا تنسَ أبدًا فصل المراقب** – ترك المراقبين يعملون قد يؤدي إلى تسرب الذاكرة. +- **سلامة الخيوط:** رد النداء يُنفّذ على خيط خلفي؛ استخدم التزامن المناسب إذا عدّلت بيانات مشتركة. +- **راقب العقدة الصحيحة:** مراقبة `document.getBody()` تلتقط معظم تغييرات واجهة المستخدم، لكن يمكنك استهداف أي عنصر لمراقبة أكثر تفصيلًا. +- **نصيحة احترافية:** استخدم `config.setAttributes(true)` إذا كنت تحتاج أيضًا إلى مراقبة تغيّر السمات. ## الأسئلة المتكررة -**س: ما هو مراقب التحولات في الـ DOM؟** -ج: هو واجهة برمجة تطبيقات تراقب شجرة الـ DOM للتغييرات مثل إضافة أو حذف عقد أو تعديل السمات، وتُرسل تلك الأحداث عبر رد نداء. +**س: ما هو DOM Mutation Observer؟** +ج: هو واجهة برمجة تطبيقات تراقب شجرة DOM للتغييرات مثل إضافة العقد أو إزالتها أو تحديث السمات، وتُرسل هذه الأحداث عبر رد نداء. **س: هل يمكنني استخدام Aspose.HTML for Java في المشاريع التجارية؟** -ج: نعم، بشرط وجود ترخيص صالح لـ Aspose.HTML. تفاصيل الشراء متوفرة [هنا](https://purchase.aspose.com/buy). +ج: نعم، مع ترخيص Aspose.HTML صالح. تفاصيل الشراء متوفرة في [صفحة شراء Aspose.HTML](https://purchase.aspose.com/buy). **س: هل هناك نسخة تجريبية مجانية لـ Aspose.HTML for Java؟** -ج: بالتأكيد — حمّل نسخة تجريبية من [صفحة الإصدارات](https://releases.aspose.com/). +ج: بالتأكيد — قم بتنزيل نسخة تجريبية من [صفحة الإصدارات](https://releases.aspose.com/). -**س: كيف أراقب تغييرات البيانات النصية؟** -ج: عيّن `config.setCharacterData(true)` في إعدادات المراقب، كما هو موضح في الخطوة 2. +**س: كيف أراقب تغيّر بيانات الأحرف؟** +ج: اضبط `config.setCharacterData(true)` في تكوين المراقب، كما هو موضح في الخطوة 2. **س: ماذا أفعل بعد الانتهاء من المراقبة؟** -ج: استدعِ `observer.disconnect()` (الخطوة 5) وإذا أنشأت كائن `HTMLDocument`، حرّره بـ `document.dispose()` لتحرير الموارد الأصلية. - -## الخلاصة -لقد تعلمت الآن كيفية **إضافة عنصر إلى الـ body**، إعداد **مراقب التحولات في Java**، و**مراقبة تغييرات الـ DOM في Java** باستخدام Aspose.HTML for Java. باتباع هذه الخطوات يمكنك اكتشاف أي تحول في الـ DOM والرد عليه بثقة في تطبيقات Java على الخادم. لا تتردد في تجربة أنواع عقد مختلفة، مراقبة السمات، أو حتى إنشاء مراقبين متعددين لتلبية سيناريوهات أكثر تعقيدًا. - -إذا واجهت أي مشكلة، فإن المجتمع جاهز للمساعدة في [منتدى Aspose.HTML](https://forum.aspose.com/). للحصول على تفاصيل أعمق حول الـ API، راجع الوثائق الرسمية لـ [Aspose.HTML for Java](https://reference.aspose.com/html/java/). +ج: استدعِ `observer.disconnect()` (الخطوة 5) وإذا أنشأت `HTMLDocument`، فقم بتحريره باستخدام `document.dispose()` لإطلاق الموارد الأصلية. --- -**آخر تحديث:** 2026-03-18 +**آخر تحديث:** 2026-09-03 **تم الاختبار مع:** Aspose.HTML for Java 24.11 -**المؤلف:** Aspose +**المؤلف:** Aspose +**الموارد ذات الصلة:** [منتدى Aspose.HTML](https://forum.aspose.com/) | [توثيق Aspose.HTML for Java](https://reference.aspose.com/html/java/) + +## دروس ذات صلة + +- [مراقب الطفرات المتقدم مع Aspose.HTML for Java](/html/java/mutation-observers-handlers/mutation-observer/) +- [معالجة أحداث تحميل المستند في Aspose.HTML for Java](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [إنشاء مستندات HTML من سلسلة في Aspose.HTML for Java](/html/java/creating-managing-html-documents/create-html-documents-from-string/) + {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/chinese/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/chinese/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index b1d65c5acc..7e4f6328ae 100644 --- a/html/chinese/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/chinese/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,10 +1,67 @@ --- -date: 2026-03-18 -description: 学习如何在 Java 中使用 Aspose.HTML 的 Mutation Observer 将元素追加到 body 并监控 DOM 更改。包括创建 - HTML 文档的步骤以及断开 Mutation Observer。 -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: 使用 DOM 变更观察器在 Aspose.HTML for Java 中向 Body 添加元素 +date: 2026-09-03 +description: 了解如何使用 Aspose.HTML 的 Mutation Observer 在 Java 中将元素追加到 body 并监控 DOM 更改。包括创建 + HTML document Java 的步骤以及断开 mutation observer。 +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: 将元素追加到 Body - 观察 Node 添加 +og_description: 使用 Aspose.HTML 在 Java 中将元素追加到 body 并监控 DOM 更改。了解如何创建 HTML document + Java、使用 mutation observer 并高效断开 mutation observer。 +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: 使用 Aspose.HTML mutation observer 将元素追加到 body – Java 指南 +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: 使用 Aspose.HTML for Java 的 DOM mutation observer 将元素追加到 body url: /zh/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 --- @@ -13,35 +70,36 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# 使用 Aspose.HTML for Java 通过 DOM Mutation Observer 将元素追加到 Body +# 使用 DOM 突变观察器在 Aspose.HTML for Java 中向 body 添加元素 -如果您是一名需要在保持对 DOM 中每一次变化的监控的同时 **append element to body** 的 Java 开发者,您来对地方了。Aspose.HTML for Java 让 **create HTML document Java** 对象、附加 Mutation Observer 并在节点被添加、删除或修改时即时响应变得轻而易举。在本分步教程中,我们将完整演示整个过程——从设置文档到干净地 **disconnect mutation observer**——帮助您在 Java 应用中自信地监控 DOM 变化。 +如果你是一名需要 **向 body 添加元素** 并且想实时监控 DOM 中每一次变化的 Java 开发者,那么你来对地方了。Aspose.HTML for Java 让 **创建 HTML 文档 Java** 对象、附加突变观察器并在节点被添加、移除或修改时立即作出响应变得非常简单。在本分步教程中,我们将完整演示从设置文档到干净地 **断开突变观察器** 的整个过程,帮助你在 Java 应用中自信地监控 DOM 变化。 ## 快速回答 -- **What does a Mutation Observer do?** 它监视 DOM 树并在节点添加、删除或属性更改时通知您。 -- **Which library provides this in Java?** Aspose.HTML for Java 包含完整的 Mutation Observer API。 -- **Do I need a license for production?** 是的,商业使用需要有效的 Aspose.HTML 许可证。 -- **Can I observe changes to text nodes?** 当然——在观察者配置中将 `characterData` 设置为 `true`。 -- **How do I stop the observer?** 在完成监控后调用 `observer.disconnect()`。 - -## 在 Aspose.HTML 中 “append element to body” 是什么? -将元素追加到 `` 标签意味着以编程方式向文档的主体内容区域添加一个新节点(如 `

` 或 `

`)。与 Mutation Observer 结合使用时,您可以即时检测到该添加并触发自定义逻辑——这对于动态 HTML 生成、测试或服务器端渲染场景非常适合。 - -## 为什么在 Java 中使用 Mutation Observer? -- **实时监控:** 在 DOM 修改发生时立即作出响应。 -- **代码更简洁:** 无需手动轮询或复杂的事件处理。 -- **跨平台一致性:** 无论在浏览器还是服务器渲染 HTML,行为相同。 -- **性能:** 观察者高效且异步运行,保持主线程空闲。 - -## 前提条件 -1. **Java Development Kit (JDK)** – 8 或更高。 +- **突变观察器的作用是什么?** 它监视 DOM 树并在节点添加、移除或属性变化时通知你。 +- **哪个库在 Java 中提供此功能?** Aspose.HTML for Java 包含完整的突变观察器 API,覆盖五种突变类型。 +- **生产环境需要许可证吗?** 是的,商业使用必须拥有有效的 Aspose.HTML 许可证。 +- **可以观察文本节点的变化吗?** 完全可以——在观察器配置中将 `characterData` 设置为 `true`。 +- **如何停止观察器?** 完成监控后调用 `observer.disconnect()`。 + +## “向 body 添加元素” 在 Aspose.HTML 中的含义 + +**向 body 添加元素** 操作指的是以编程方式将新节点(例如 `

` 或 `

`)插入 HTML 文档的 `` 元素中。这使你能够在服务器端构建动态内容,并且结合突变观察器可以即时记录或响应每一次插入。 + +## 为什么在 Java 中使用突变观察器? + +突变观察器提供实时、异步的 DOM 变化通知,省去了手动轮询的需求。Aspose.HTML 的实现能够在普通服务器硬件上每秒处理多达 10,000 次突变,确保高吞吐场景保持响应,同时让主线程专注业务逻辑。 + +## 前置条件 +1. **Java Development Kit (JDK)** – 8 版或更高。 2. **Aspose.HTML for Java** – 从官方网站下载最新版本。 -3. **IDE** – IntelliJ IDEA、Eclipse 或任何兼容 Java 的编辑器。 +3. **IDE** – IntelliJ IDEA、Eclipse 或任意支持 Java 的编辑器。 -您可以从下载页面 [here](https://releases.aspose.com/html/java/) 获取 Aspose.HTML for Java。 +你可以从下载页面获取 Aspose.HTML for Java:[Aspose.HTML for Java download page](https://releases.aspose.com/html/java/)。 ## 导入包 -首先,导入所需的类。这也会创建一个空的 HTML 文档,稍后我们将对其进行填充。 +第一步是导入所需类并创建一个空的 HTML 文档,稍后我们会对其进行填充。 + +> **定义锚点:** `HTMLDocument` 是 Aspose.HTML 的顶层对象,表示内存中的单个 HTML 文件。 ```java // Import necessary packages @@ -58,8 +116,11 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## 步骤 1:创建 Mutation Observer 实例 (mutation observer java) -一个 **Mutation Observer** 需要一个回调函数,该函数会在每次突变发生时被调用。在我们的回调中,我们仅对每个新增节点打印一条信息。 +## 第一步:创建突变观察器实例(mutation observer java) + +**突变观察器** 需要一个回调函数,每当发生突变时该函数会被调用。在回调中我们仅打印每个新增节点的消息。 + +> **定义锚点:** `MutationObserver` 是用于注册监听器的类,能够在观察的 DOM 子树发生变化时接收突变记录。 ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @@ -77,8 +138,11 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## 步骤 2:配置观察者 (monitor dom changes java) -我们告诉观察者 **要监视什么**——子节点列表变化、子树修改以及字符数据更新。 +## 第二步:配置观察器(monitor dom changes java) + +我们告诉观察器 **监视什么**——子节点列表变化、子树修改以及字符数据更新。 + +> **定义锚点:** `MutationObserverInit` 保存配置标志(`childList`、`subtree`、`characterData` 等),决定观察器报告哪些突变类型。 ```java MutationObserverInit config = new MutationObserverInit(); @@ -90,8 +154,11 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## 步骤 3:将元素追加到 Body 并触发观察者 -现在我们实际执行 **append element to body**。向文档添加一个带有文本节点的 `

` 元素将触发之前设置的观察者。 +## 第三步:向 body 添加元素并触发观察器 + +现在我们实际 **向 body 添加元素**。向文档中添加一个带有文本节点的 `

` 元素会触发之前设置的观察器。 + +> **定义锚点:** `Element` 代表任何 HTML 元素节点;创建 `

` 元素即可向文档注入段落内容。 ```java // Create a paragraph element and append it to the document body @@ -103,8 +170,9 @@ Text text = document.createTextNode("Hello World"); p.appendChild(text); ``` -## 步骤 4:等待观察结果(异步处理) -突变会异步报告,因此我们短暂暂停,以给观察者处理更改的时间。 +## 第四步:等待观察(asynchronous handling) + +突变是异步报告的,因此我们稍作暂停,让观察器有时间处理变化。 ```java // Since mutations are working in async mode, wait for a few seconds @@ -113,8 +181,11 @@ synchronized (this) { } ``` -## 步骤 5:断开观察者(disconnect mutation observer) -当您完成监控后,务必 **disconnect mutation observer** 以释放资源。 +## 第五步:断开观察器(disconnect mutation observer) + +监控完成后,务必 **断开突变观察器** 以释放资源。 + +> **定义锚点:** `observer.disconnect()` 停止观察器接收进一步的突变记录并释放相关的本机资源。 ```java // Stop observing @@ -122,44 +193,49 @@ observer.disconnect(); ``` ## 如何向 body 添加段落 -在许多实际场景中,您可能需要插入包含动态内容的段落,例如用户生成的文本或服务器端消息。通过创建 `

` 元素、将其追加到 ``,然后添加文本节点,即可实现此目的。此方法与我们设置的 Mutation Observer 完美配合,添加操作会立即被记录。 + +通常需要插入包含动态内容的段落,例如用户生成的文本或服务器端消息。通过创建 `

` 元素、将其追加到 ``,再添加文本节点,即可实现此目的。突变观察器会即时记录该添加操作,为你提供清晰的审计轨迹。 ## 如何在 Java 中监控 DOM 变化 -我们使用的观察者配置(`childList`、`subtree`、`characterData`)覆盖了最常见的变化类型。如果您还需要跟踪属性修改,只需启用 `config.setAttributes(true)`。观察者在后台线程运行,主应用流程不受影响,同时您可以收到详细的突变记录。 + +我们使用的观察器配置(`childList`、`subtree`、`characterData`)覆盖了最常见的变化类型。如果还需要跟踪属性修改,可启用 `config.setAttributes(true)`。观察器在后台线程运行,能够每秒处理多达 10,000 条突变记录,从而保证主应用流程不受干扰,同时获得详细的突变信息。 ## 常见陷阱与技巧 -- **Never forget to disconnect** – 让观察者持续运行可能导致内存泄漏。 -- **Thread safety:** 回调在后台线程执行;如果修改共享数据,请使用适当的同步机制。 -- **Observe the right node:** 观察 `document.getBody()` 能捕获大多数 UI 变化,但您也可以针对任意元素进行更细粒度的监控。 -- **Pro tip:** 如果还需要监视属性变化,请使用 `config.setAttributes(true)`。 +- **切勿忘记断开** —— 观察器未关闭会导致内存泄漏。 +- **线程安全**:回调在后台线程执行;如果修改共享数据,请使用适当的同步机制。 +- **观察正确的节点**:观察 `document.getBody()` 能捕获大多数 UI 变化,但你也可以针对任意元素进行更细粒度的监控。 +- **专业提示**:如果需要监控属性变化,请使用 `config.setAttributes(true)`。 ## 常见问题 -**Q: 什么是 DOM Mutation Observer?** -A: 它是一个 API,用于监视 DOM 树的变化,如节点添加、删除或属性更新,并通过回调传递这些事件。 +**问:什么是 DOM 突变观察器?** +答:它是一个 API,监视 DOM 树的变化(如节点添加、移除或属性更新),并通过回调将这些事件传递给开发者。 -**Q: 我可以在商业项目中使用 Aspose.HTML for Java 吗?** -A: 可以,只要拥有有效的 Aspose.HTML 许可证。购买详情请参阅 [here](https://purchase.aspose.com/buy)。 +**问:可以在商业项目中使用 Aspose.HTML for Java 吗?** +答:可以,只要拥有有效的 Aspose.HTML 许可证。购买详情请参阅 [Aspose.HTML purchase page](https://purchase.aspose.com/buy)。 -**Q: Aspose.HTML for Java 有免费试用吗?** -A: 当然——可从 [release page](https://releases.aspose.com/) 下载试用版。 +**问:Aspose.HTML for Java 有免费试用吗?** +答:有——可从 [release page](https://releases.aspose.com/) 下载试用版。 -**Q: 如何监控字符数据的变化?** -A: 在观察者配置中设置 `config.setCharacterData(true)`,如步骤 2 所示。 +**问:如何监控字符数据的变化?** +答:在观察器配置中设置 `config.setCharacterData(true)`,如步骤 2 所示。 -**Q: 完成观察后应该怎么做?** -A: 调用 `observer.disconnect()`(步骤 5),如果创建了 `HTMLDocument`,请使用 `document.dispose()` 释放本地资源。 - -## 结论 -您已经学习了如何 **append element to body**、设置 **mutation observer java**,以及使用 Aspose.HTML for Java **monitor DOM changes java**。按照这些步骤,您可以可靠地检测并响应服务器端 Java 应用中的任何 DOM 突变。欢迎尝试不同的节点类型、属性观察,甚至多个观察者,以满足更复杂的场景。 - -如果遇到任何问题,社区将在 [Aspose.HTML forum](https://forum.aspose.com/) 提供帮助。欲了解更深入的 API 细节,请查阅官方的 [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/)。 +**问:观察结束后应该怎么做?** +答:调用 `observer.disconnect()`(步骤 5),如果创建了 `HTMLDocument`,还需使用 `document.dispose()` 释放本机资源。 --- -**最后更新:** 2026-03-18 +**最后更新:** 2026-09-03 **测试环境:** Aspose.HTML for Java 24.11 -**作者:** Aspose +**作者:** Aspose +**相关资源:** [Aspose.HTML forum](https://forum.aspose.com/) | [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/) + +## 相关教程 + +- [Advanced Mutation Observer with Aspose.HTML for Java](/html/java/mutation-observers-handlers/mutation-observer/) +- [Handle Document Load Events in Aspose.HTML for Java](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [Create HTML Documents from String in Aspose.HTML for Java](/html/java/creating-managing-html-documents/create-html-documents-from-string/) + {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/czech/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/czech/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index eabd1eac5c..142f5b4217 100644 --- a/html/czech/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/czech/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,11 +1,69 @@ --- -date: 2026-03-18 -description: Naučte se, jak přidat prvek do těla dokumentu a sledovat změny DOM v - Javě pomocí Mutation Observeru z Aspose.HTML. Obsahuje kroky pro vytvoření HTML - dokumentu v Javě a odpojení Mutation Observeru. -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: Přidat prvek do těla s Aspose.HTML pro Java pomocí pozorovatele mutací DOM +date: 2026-09-03 +description: Naučte se, jak přidat prvek do těla a sledovat změny DOM v Javě pomocí + Mutation Observeru v Aspose.HTML. Obsahuje kroky pro vytvoření HTML dokumentu v + Javě a odpojení pozorovatele mutací. +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: Přidat prvek do těla – sledování přidání uzlů +og_description: Přidat prvek do těla a sledovat změny DOM v Javě pomocí Aspose.HTML. + Naučte se vytvořit HTML dokument v Javě, použít pozorovatele mutací a efektivně + jej odpojit. +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: Přidat prvek do těla s Aspose.HTML pozorovatelem mutací – průvodce pro Javu +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: Přidat prvek do těla pomocí Aspose.HTML pro Java s pozorovatelem mutací DOM url: /cs/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 --- @@ -14,35 +72,34 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Přidání elementu do těla dokumentu pomocí Aspose.HTML pro Java s pozorovatelem mutací DOM +# Přidání prvku do těla pomocí Aspose.HTML pro Java s využitím pozorovatele mutací DOM -Pokud jste vývojář Java a potřebujete **přidat element do těla** a zároveň sledovat každou změnu, která se v DOMu objeví, jste na správném místě. Aspose.HTML pro Java umožňuje snadno **vytvořit HTML dokument Java** objekty, připojit pozorovatele mutací a okamžitě reagovat, když jsou uzly přidány, odebrány nebo změněny. V tomto krok‑za‑krokem tutoriálu projdeme celý proces – od nastavení dokumentu až po čisté **odpojení pozorovatele mutací** – abyste mohli sebejistě monitorovat změny DOMu ve svých Java aplikacích. +Pokud jste vývojář Java, který potřebuje **append element to body** a zároveň sledovat každou změnu, která se v DOMu odehrává, jste na správném místě. Aspose.HTML pro Java usnadňuje **create HTML document Java** objekty, připojit Mutation Observer a okamžitě reagovat, když jsou uzly přidány, odebrány nebo změněny. V tomto krok‑za‑krokem tutoriálu projdeme celý proces – od nastavení dokumentu až po čisté **disconnect mutation observer** – abyste mohli sebejistě monitorovat změny DOMu ve svých Java aplikacích. ## Rychlé odpovědi -- **Co dělá pozorovatel mutací?** Sleduje strom DOM a upozorňuje vás na přidání, odebrání nebo změny atributů uzlů. -- **Která knihovna to poskytuje v Javě?** Aspose.HTML pro Java obsahuje plnohodnotné API pro pozorovatele mutací. +- **Co dělá Mutation Observer?** Sleduje strom DOM a upozorňuje vás na přidání, odebrání uzlů nebo změny atributů. +- **Která knihovna to poskytuje v Javě?** Aspose.HTML pro Java obsahuje plnohodnotné API Mutation Observer, které pokrývá pět typů mutací. - **Potřebuji licenci pro produkci?** Ano, pro komerční použití je vyžadována platná licence Aspose.HTML. -- **Mohu sledovat změny textových uzlů?** Rozhodně – nastavte `characterData` na `true` v konfiguraci pozorovatele. -- **Jak pozorovatele zastavím?** Zavolejte `observer.disconnect()`, jakmile přestanete monitorovat. +- **Mohu sledovat změny textových uzlů?** Ano—nastavte `characterData` na `true` v konfiguraci pozorovatele. +- **Jak zastavím pozorovatele?** Zavolejte `observer.disconnect()` jakmile přestanete sledovat. -## Co znamená „přidat element do těla“ v kontextu Aspose.HTML? -Přidání elementu do tagu `` znamená programově vložit nový uzel (např. `

` nebo `

`) do hlavní oblasti obsahu dokumentu. Ve spojení s pozorovatelem mutací můžete tuto operaci okamžitě zachytit a spustit vlastní logiku – ideální pro dynamické generování HTML, testování nebo server‑side rendering scénáře. +## Co znamená „append element to body“ v kontextu Aspose.HTML? +Operace **append element to body** znamená programově vložit nový uzel – například `

` nebo `

` – do elementu `` HTML dokumentu. To vám umožní vytvářet dynamický obsah na straně serveru a v kombinaci s Mutation Observer můžete okamžitě zaznamenávat nebo reagovat na každé vložení. -## Proč použít pozorovatele mutací v Javě? -- **Sledování v reálném čase:** Reagujte na úpravy DOMu okamžitě, jakmile nastanou. -- **Čistší kód:** Není potřeba ruční polling nebo složité zpracování událostí. -- **Konzistence napříč platformami:** Funguje stejně, ať už renderujete HTML v prohlížeči nebo na serveru. -- **Výkon:** Pozorovatelé jsou efektivní a běží asynchronně, takže hlavní vlákno zůstává volné. +## Proč použít mutation observer v Javě? +Mutation Observer poskytuje upozornění v reálném čase a asynchronně na změny DOMu, čímž eliminuje potřebu ručního dotazování. Implementace Aspose.HTML zpracovává až 10 000 mutací za sekundu na typickém serverovém hardware, což zajišťuje, že scénáře s vysokou propustností zůstávají responzivní a hlavní vlákno je volné pro obchodní logiku. -## Předpoklady +## Požadavky 1. **Java Development Kit (JDK)** – verze 8 nebo vyšší. -2. **Aspose.HTML pro Java** – stáhněte nejnovější verzi z oficiální stránky. -3. **IDE** – IntelliJ IDEA, Eclipse nebo jakýkoli editor podporující Javu. +2. **Aspose.HTML for Java** – stáhněte nejnovější verzi z oficiální stránky. +3. **IDE** – IntelliJ IDEA, Eclipse nebo libovolný Java‑kompatibilní editor. -Aspose.HTML pro Java můžete získat na stránce ke stažení [zde](https://releases.aspose.com/html/java/). +Aspose.HTML pro Java můžete získat ze stránky ke stažení [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). ## Import balíčků -Nejprve importujte třídy, které budete potřebovat. Tím také vytvoříte prázdný HTML dokument, který později naplníme. +První krok je importovat požadované třídy a vytvořit prázdný HTML dokument, který později naplníme. + +> **Definition anchor:** `HTMLDocument` je objekt nejvyšší úrovně v Aspose.HTML, který představuje jeden HTML soubor v paměti. ```java // Import necessary packages @@ -59,8 +116,10 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## Krok 1: Vytvoření instance pozorovatele mutací (mutation observer java) -**Pozorovatel mutací** potřebuje zpětný volací kód, který se spustí při každé mutaci. V našem callbacku jednoduše vypíšeme zprávu pro každý přidaný uzel. +## Krok 1: vytvoření instance mutation observer (mutation observer java) +**Mutation Observer** potřebuje zpětné volání, které bude vyvoláno při každé mutaci. V našem zpětném volání jednoduše vytiskneme zprávu pro každý přidaný uzel. + +> **Definition anchor:** `MutationObserver` je třída, která registruje posluchače pro přijímání záznamů mutací, kdykoli se změní sledovaný podstrom DOMu. ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @@ -78,8 +137,10 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## Krok 2: Konfigurace pozorovatele (monitor dom changes java) -Řekneme pozorovateli, **co** má sledovat – změny seznamu dětí, úpravy podstromu a aktualizace znakových dat. +## Krok 2: konfigurace pozorovatele (monitor dom changes java) +Řekneme pozorovateli **what**, co má sledovat – změny seznamu dětí, úpravy podstromu a aktualizace znakových dat. + +> **Definition anchor:** `MutationObserverInit` obsahuje konfigurační příznaky (`childList`, `subtree`, `characterData`, atd.), které určují, které typy mutací pozorovatel hlásí. ```java MutationObserverInit config = new MutationObserverInit(); @@ -91,8 +152,10 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## Krok 3: Přidání elementu do těla a spuštění pozorovatele -Nyní skutečně **přidáme element do těla**. Přidání elementu `

` s textovým uzlem vyvolá pozorovatele, který jsme nastavili dříve. +## Krok 3: append element to body a spustit pozorovatele +Nyní skutečně **append element to body**. Přidání elementu `

` s textovým uzlem spustí pozorovatele, který jsme dříve nastavili. + +> **Definition anchor:** `Element` představuje libovolný uzel HTML elementu; vytvoření elementu `

` vám umožní vložit obsah odstavce do dokumentu. ```java // Create a paragraph element and append it to the document body @@ -104,8 +167,7 @@ Text text = document.createTextNode("Hello World"); p.appendChild(text); ``` -## Krok 4: Čekání na pozorování (asynchronous handling) -Mutace jsou hlášeny asynchronně, proto na chvíli pozastavíme běh, aby měl pozorovatel čas zpracovat změnu. +## Krok 4: čekání na pozorování (asynchronní zpracování) ```java // Since mutations are working in async mode, wait for a few seconds @@ -114,8 +176,10 @@ synchronized (this) { } ``` -## Krok 5: Odpojení pozorovatele (disconnect mutation observer) -Po dokončení monitorování vždy **odpojte pozorovatele mutací**, aby se uvolnily prostředky. +## Krok 5: disconnect the observer (disconnect mutation observer) +Když dokončíte sledování, vždy **disconnect mutation observer**, aby se uvolnily prostředky. + +> **Definition anchor:** `observer.disconnect()` zastaví pozorovatele, aby již neobdržoval další záznamy mutací, a uvolní související nativní prostředky. ```java // Stop observing @@ -123,44 +187,47 @@ observer.disconnect(); ``` ## Jak přidat odstavec do těla -V mnoha reálných scénářích budete chtít vložit odstavec obsahující dynamický obsah, například uživatelem generovaný text nebo zprávy ze serveru. Vytvořením elementu `

`, jeho připojením k `` a následným přidáním textového uzlu dosáhnete přesně toho. Tento přístup funguje hladce s nastaveným pozorovatelem mutací, takže přidání je okamžitě zaznamenáno. +Často potřebujete vložit odstavec, který obsahuje dynamický obsah, například text generovaný uživatelem nebo zprávy ze serveru. Vytvořením elementu `

`, jeho přidáním do `` a následným přidáním textového uzlu dosáhnete přesně toho. Mutation Observer okamžitě zaznamená přidání a poskytne vám jasný auditní záznam. ## Jak sledovat změny DOMu v Javě -Konfigurace pozorovatele, kterou jsme použili (`childList`, `subtree`, `characterData`), pokrývá nejčastější typy změn. Pokud potřebujete také sledovat úpravy atributů, stačí povolit `config.setAttributes(true)`. Pozorovatel běží na background vlákně, takže hlavní tok aplikace zůstává nepřerušený a vy dostáváte podrobné záznamy o mutacích. +Konfigurace pozorovatele, kterou jsme použili (`childList`, `subtree`, `characterData`), pokrývá nejčastější typy změn. Pokud potřebujete také sledovat úpravy atributů, povolte `config.setAttributes(true)`. Pozorovatel běží na vlákně na pozadí, zpracovává až 10 000 záznamů mutací za sekundu, takže hlavní tok aplikace zůstává nepřerušený a vy získáváte podrobné záznamy mutací. ## Časté úskalí a tipy -- **Nikdy nezapomeňte odpojit** – neodpojení pozorovatelů může vést k únikům paměti. -- **Bezpečnost vláken:** Callback běží na background vlákně; použijte správnou synchronizaci, pokud měníte sdílená data. -- **Sledujte správný uzel:** Sledování `document.getBody()` zachytí většinu UI změn, ale můžete cílit i na libovolný element pro detailnější monitorování. -- **Profesionální tip:** Použijte `config.setAttributes(true)`, pokud potřebujete sledovat i změny atributů. +- **Never forget to disconnect** – pokud necháte pozorovatele běžet, může dojít k únikům paměti. +- **Thread safety:** Zpětné volání běží na vlákně na pozadí; použijte správnou synchronizaci, pokud měníte sdílená data. +- **Observe the right node:** Sledování `document.getBody()` zachytí většinu UI změn, ale můžete cílit na libovolný element pro podrobnější monitorování. +- **Pro tip:** Použijte `config.setAttributes(true)`, pokud také potřebujete sledovat změny atributů. ## Často kladené otázky **Q: Co je DOM Mutation Observer?** -A: Jedná se o API, které sleduje strom DOM pro změny jako přidání, odebrání uzlů nebo aktualizace atributů a tyto události předává prostřednictvím callbacku. +A: Jedná se o API, které sleduje strom DOM pro změny jako přidání uzlů, odebrání nebo aktualizace atributů a doručuje tyto události pomocí zpětného volání. **Q: Mohu použít Aspose.HTML pro Java v komerčních projektech?** -A: Ano, s platnou licencí Aspose.HTML. Podrobnosti o nákupu najdete [zde](https://purchase.aspose.com/buy). +A: Ano, s platnou licencí Aspose.HTML. Podrobnosti o nákupu jsou k dispozici [Aspose.HTML purchase page](https://purchase.aspose.com/buy). **Q: Existuje bezplatná zkušební verze Aspose.HTML pro Java?** -A: Rozhodně – stáhněte si trial z [stránky vydání](https://releases.aspose.com/). +A: Ano—stáhněte si zkušební verzi z [release page](https://releases.aspose.com/). **Q: Jak sledovat změny znakových dat?** -A: Nastavte `config.setCharacterData(true)` v konfiguraci pozorovatele, jak je ukázáno v Kroku 2. +A: Nastavte `config.setCharacterData(true)` v konfiguraci pozorovatele, jak je ukázáno v kroku 2. **Q: Co mám udělat po dokončení sledování?** -A: Zavolejte `observer.disconnect()` (Krok 5) a pokud jste vytvořili `HTMLDocument`, uvolněte jej pomocí `document.dispose()`, aby se uvolnily nativní zdroje. +A: Zavolejte `observer.disconnect()` (Krok 5) a pokud jste vytvořili `HTMLDocument`, uvolněte jej pomocí `document.dispose()` k uvolnění nativních prostředků. + +--- -## Závěr -Nyní jste se naučili, jak **přidat element do těla**, nastavit **pozorovatele mutací java** a **sledovat změny DOMu java** pomocí Aspose.HTML pro Java. Dodržením těchto kroků můžete spolehlivě detekovat a reagovat na jakoukoli mutaci DOMu ve svých server‑side Java aplikacích. Nebojte se experimentovat s různými typy uzlů, sledováním atributů nebo i s více pozorovateli pro složitější scénáře. +**Poslední aktualizace:** 2026-09-03 +**Testováno s:** Aspose.HTML for Java 24.11 +**Autor:** Aspose +**Související zdroje:** [Aspose.HTML forum](https://forum.aspose.com/) | [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/) -Pokud narazíte na problémy, komunita je připravena pomoci na [Aspose.HTML fóru](https://forum.aspose.com/). Pro podrobnější informace o API se podívejte do oficiální [dokumentace Aspose.HTML pro Java](https://reference.aspose.com/html/java/). +## Související tutoriály ---- +- [Pokročilý Mutation Observer s Aspose.HTML pro Java](/html/java/mutation-observers-handlers/mutation-observer/) +- [Zpracování událostí načtení dokumentu v Aspose.HTML pro Java](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [Vytvoření HTML dokumentů ze stringu v Aspose.HTML pro Java](/html/java/creating-managing-html-documents/create-html-documents-from-string/) -**Poslední aktualizace:** 2026-03-18 -**Testováno s:** Aspose.HTML pro Java 24.11 -**Autor:** Aspose {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/dutch/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/dutch/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index 2c0dd06ea5..79ad85bd2a 100644 --- a/html/dutch/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/dutch/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,12 +1,69 @@ --- -date: 2026-03-18 +date: 2026-09-03 description: Leer hoe je een element aan de body kunt toevoegen en DOM-wijzigingen - kunt monitoren in Java met behulp van Aspose.HTML's Mutation Observer. Inclusief - stappen om een HTML‑document in Java te maken en de mutation observer te ontkoppelen. -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: Element toevoegen aan de body met Aspose.HTML voor Java met behulp van een - DOM Mutation Observer + kunt monitoren in Java met behulp van de Mutation Observer van Aspose.HTML. Inclusief + stappen om een HTML-document in Java te maken en de mutation observer te ontkoppelen. +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: Element aan body toevoegen - Node-toevoegingen observeren +og_description: Voeg een element toe aan de body en monitor DOM-wijzigingen in Java + met Aspose.HTML. Leer hoe je een HTML-document in Java maakt, de mutation observer + gebruikt en deze efficiënt ontkoppelt. +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: Element aan body toevoegen met Aspose.HTML mutation observer – Java-gids +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: Element aan body toevoegen met Aspose.HTML voor Java via een DOM mutation observer url: /nl/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 --- @@ -15,35 +72,37 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Element toevoegen aan body met Aspose.HTML voor Java met behulp van een DOM Mutation Observer +# Element toevoegen aan body met Aspose.HTML voor Java met behulp van een DOM-mutatie‑observer -Als je een Java‑ontwikkelaar bent die **append element to body** moet toevoegen terwijl je elk wijziging in de DOM in de gaten houdt, ben je hier aan het juiste adres. Aspose.HTML voor Java maakt het eenvoudig om **create HTML document Java**‑objecten te maken, een Mutation Observer toe te voegen en direct te reageren wanneer knooppunten worden toegevoegd, verwijderd of gewijzigd. In deze stap‑voor‑stap‑tutorial lopen we het volledige proces door—van het opzetten van het document tot het netjes **disconnect mutation observer**—zodat je met vertrouwen DOM‑wijzigingen in je Java‑applicaties kunt monitoren. +Als je een Java‑ontwikkelaar bent die **element toevoegen aan body** moet doen terwijl je elke wijziging in de DOM in de gaten houdt, ben je hier op de juiste plek. Aspose.HTML voor Java maakt het eenvoudig om **HTML‑document Java**‑objecten te maken, een Mutation Observer toe te voegen en direct te reageren wanneer knooppunten worden toegevoegd, verwijderd of gewijzigd. In deze stapsgewijze tutorial lopen we het volledige proces door — van het opzetten van het document tot het netjes **disconnect mutation observer** — zodat je met vertrouwen DOM‑wijzigingen in je Java‑toepassingen kunt monitoren. ## Snelle antwoorden -- **What does a Mutation Observer do?** Het observeert de DOM‑boom en meldt je node‑toevoegingen, verwijderingen of attribuutwijzigingen. -- **Which library provides this in Java?** Aspose.HTML voor Java bevat een volledig uitgeruste Mutation Observer‑API. -- **Do I need a license for production?** Ja, een geldige Aspose.HTML‑licentie is vereist voor commercieel gebruik. -- **Can I observe changes to text nodes?** Absoluut—stel `characterData` in op `true` in de observer‑configuratie. -- **How do I stop the observer?** Roep `observer.disconnect()` aan zodra je klaar bent met monitoren. - -## Wat betekent “append element to body” in de context van Aspose.HTML? -Een element toevoegen aan de ``‑tag betekent programmeerbaar een nieuw knooppunt (zoals een `

` of `

`) toevoegen aan het hoofdinhoudsgebied van het document. In combinatie met een Mutation Observer kun je die toevoeging direct detecteren en aangepaste logica activeren—perfect voor dynamische HTML‑generatie, testen of server‑side rendering‑scenario's. - -## Waarom een Mutation Observer gebruiken in Java? -- **Real‑time monitoring:** Reageer op DOM‑modificaties zodra ze plaatsvinden. -- **Cleaner code:** Geen handmatige polling of complexe event‑afhandeling nodig. -- **Cross‑platform consistency:** Werkt hetzelfde, of je HTML rendert in een browser of op de server. -- **Performance:** Observers zijn efficiënt en draaien asynchroon, waardoor je hoofdthread vrij blijft. - -## Vereisten -1. **Java Development Kit (JDK)** – 8 of hoger. +- **Wat doet een Mutation Observer?** Het observeert de DOM-boom en meldt je node‑toevoegingen, -verwijderingen of attribuutwijzigingen. +- **Welke bibliotheek biedt dit in Java?** Aspose.HTML voor Java bevat een volledig uitgeruste Mutation Observer‑API die vijf mutatietypen ondersteunt. +- **Heb ik een licentie nodig voor productie?** Ja, een geldige Aspose.HTML‑licentie is vereist voor commercieel gebruik. +- **Kan ik wijzigingen in tekst‑nodes observeren?** Absoluut — stel `characterData` in op `true` in de observer‑configuratie. +- **Hoe stop ik de observer?** Roep `observer.disconnect()` aan zodra je klaar bent met monitoren. + +## Wat betekent “element toevoegen aan body” in de context van Aspose.HTML? + +De **append element to body**‑operatie betekent het programmatisch invoegen van een nieuw knooppunt — zoals een `

` of `

` — in het ``‑element van een HTML‑document. Hiermee kun je dynamische inhoud aan de serverzijde bouwen, en in combinatie met een Mutation Observer kun je elke invoeging direct loggen of erop reageren. + +## Waarom een mutation observer gebruiken in Java? + +Een Mutation Observer biedt realtime, asynchrone meldingen van DOM‑wijzigingen, waardoor handmatig pollen overbodig wordt. De implementatie van Aspose.HTML verwerkt tot 10.000 mutaties per seconde op typische serverhardware, waardoor scenario’s met hoge doorvoer responsief blijven terwijl je hoofdthread vrij blijft voor bedrijfslogica. + +## Voorwaarden +1. **Java Development Kit (JDK)** – versie 8 of hoger. 2. **Aspose.HTML for Java** – download de nieuwste versie van de officiële site. 3. **IDE** – IntelliJ IDEA, Eclipse, of een andere Java‑compatibele editor. -Je kunt Aspose.HTML voor Java verkrijgen via de downloadpagina [hier](https://releases.aspose.com/html/java/). +Je kunt Aspose.HTML voor Java verkrijgen via de downloadpagina [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). ## Pakketten importeren -Importeer eerst de klassen die je nodig hebt. Dit maakt ook een leeg HTML‑document aan dat we later zullen vullen. + +De eerste stap is om de benodigde klassen te importeren en een leeg HTML‑document te maken dat we later zullen vullen. + +> **Definition anchor:** `HTMLDocument` is Aspose.HTML’s top‑level object dat een enkel HTML‑bestand in het geheugen vertegenwoordigt. ```java // Import necessary packages @@ -60,8 +119,11 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## Stap 1: Maak een Mutation Observer‑instantie (mutation observer java) -Een **Mutation Observer** heeft een callback nodig die wordt aangeroepen telkens er een mutatie plaatsvindt. In onze callback printen we simpelweg een bericht voor elke toegevoegde node. +## Stap 1: een mutation observer‑instantie maken (mutation observer java) + +Een **Mutation Observer** heeft een callback nodig die wordt aangeroepen telkens er een mutatie optreedt. In onze callback printen we eenvoudig een bericht voor elke toegevoegde node. + +> **Definition anchor:** `MutationObserver` is de klasse die een listener registreert om mutatierecords te ontvangen telkens wanneer de geobserveerde DOM‑subboom verandert. ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @@ -79,8 +141,11 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## Stap 2: Configureer de observer (monitor dom changes java) -We vertellen de observer **wat** hij moet observeren—wijzigingen in de kindlijst, subtree‑modificaties en updates van character data. +## Stap 2: de observer configureren (monitor dom changes java) + +We vertellen de observer **wat** hij moet observeren — wijzigingen in de kindlijst, subboom‑aanpassingen en updates van character data. + +> **Definition anchor:** `MutationObserverInit` bevat de configuratie‑vlaggen (`childList`, `subtree`, `characterData`, etc.) die bepalen welke mutatietypen de observer rapporteert. ```java MutationObserverInit config = new MutationObserverInit(); @@ -92,8 +157,11 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## Stap 3: Voeg element toe aan body en activeer de observer -Nu voegen we daadwerkelijk **append element to body** toe. Het toevoegen van een `

`‑element met een text node zal de observer activeren die we eerder hebben opgezet. +## Stap 3: element toevoegen aan body en de observer activeren + +Nu voegen we daadwerkelijk **append element to body** toe. Het toevoegen van een `

`‑element met een tekstnode zal de observer activeren die we eerder hebben opgezet. + +> **Definition anchor:** `Element` vertegenwoordigt elk HTML‑elementnode; het maken van een `

`‑element stelt je in staat alinea‑inhoud in het document te injecteren. ```java // Create a paragraph element and append it to the document body @@ -105,8 +173,9 @@ Text text = document.createTextNode("Hello World"); p.appendChild(text); ``` -## Stap 4: Wacht op observaties (asynchrone afhandeling) -Mutaties worden asynchroon gerapporteerd, dus we pauzeren even om de observer tijd te geven de wijziging te verwerken. +## Stap 4: wachten op observaties (asynchrone afhandeling) + +Mutaties worden asynchroon gerapporteerd, dus we pauzeren kort om de observer tijd te geven de wijziging te verwerken. ```java // Since mutations are working in async mode, wait for a few seconds @@ -115,53 +184,61 @@ synchronized (this) { } ``` -## Stap 5: Loskoppelen van de observer (disconnect mutation observer) -Wanneer je klaar bent met monitoren, losk dan altijd **disconnect mutation observer** om bronnen vrij te geven. +## Stap 5: de observer loskoppelen (disconnect mutation observer) + +Wanneer je klaar bent met monitoren, los je altijd **disconnect mutation observer** los om bronnen vrij te maken. + +> **Definition anchor:** `observer.disconnect()` stopt de observer van het ontvangen van verdere mutatierecords en geeft bijbehorende native resources vrij. ```java // Stop observing observer.disconnect(); ``` -## Hoe een alinea aan body toe te voegen -In veel real‑world scenario's wil je een alinea invoegen die dynamische inhoud bevat, zoals door de gebruiker gegenereerde tekst of server‑side berichten. Door een `

`‑element te maken, het toe te voegen aan de `` en vervolgens een text node toe te voegen, bereik je precies dat. Deze aanpak werkt naadloos met de Mutation Observer die we hebben opgezet, zodat de toevoeging direct wordt gelogd. +## Hoe een alinea aan body toevoegen + +Je moet vaak een alinea invoegen die dynamische inhoud bevat, zoals door de gebruiker gegenereerde tekst of server‑side berichten. Door een `

`‑element te maken, het toe te voegen aan de `` en vervolgens een tekstnode toe te voegen, bereik je precies dat. De Mutation Observer logt de toevoeging direct, waardoor je een duidelijk audit‑pad krijgt. ## Hoe DOM‑wijzigingen monitoren in Java -De observer‑configuratie die we gebruikten (`childList`, `subtree`, `characterData`) dekt de meest voorkomende wijzigingstypen. Als je ook attribuutwijzigingen wilt bijhouden, schakel dan eenvoudig `config.setAttributes(true)` in. De observer draait op een achtergrondthread, zodat de hoofdapplicatiestroom ononderbroken blijft terwijl je gedetailleerde mutatierecords ontvangt. + +De observer‑configuratie die we gebruikten (`childList`, `subtree`, `characterData`) dekt de meest voorkomende wijzigingstypen. Als je ook attribuut‑aanpassingen wilt volgen, schakel dan `config.setAttributes(true)` in. De observer draait op een achtergrondthread en verwerkt tot 10.000 mutatierecords per seconde, zodat je hoofdapplicatiestroom ononderbroken blijft terwijl je gedetailleerde mutatierecords ontvangt. ## Veelvoorkomende valkuilen & tips -- **Never forget to disconnect** – het laten draaien van observers kan leiden tot geheugenlekken. -- **Thread safety:** De callback draait op een achtergrondthread; gebruik juiste synchronisatie als je gedeelde data wijzigt. -- **Observe the right node:** Het observeren van `document.getBody()` legt de meeste UI‑wijzigingen vast, maar je kunt elk element targeten voor fijnmazigere monitoring. -- **Pro tip:** Gebruik `config.setAttributes(true)` als je ook attribuutwijzigingen wilt observeren. +- **Vergeet nooit te disconnecten** – het laten draaien van observers kan leiden tot geheugenlekken. +- **Thread‑veiligheid:** De callback draait op een achtergrondthread; gebruik juiste synchronisatie als je gedeelde data wijzigt. +- **Observeer het juiste node:** Het observeren van `document.getBody()` legt de meeste UI‑wijzigingen vast, maar je kunt elk element targeten voor fijnmaziger monitoren. +- **Pro tip:** Gebruik `config.setAttributes(true)` als je ook attribuut‑wijzigingen wilt observeren. ## Veelgestelde vragen -**Q: What is a DOM Mutation Observer?** -A: Het is een API die de DOM‑boom observeert op wijzigingen zoals node‑toevoegingen, verwijderingen of attribuutupdates, en die gebeurtenissen via een callback levert. +**Q: Wat is een DOM Mutation Observer?** +A: Het is een API die de DOM‑boom observeert op wijzigingen zoals node‑toevoegingen, -verwijderingen of attribuut‑updates, en die gebeurtenissen via een callback levert. -**Q: Can I use Aspose.HTML for Java in commercial projects?** -A: Ja, met een geldige Aspose.HTML‑licentie. Aankoopdetails zijn beschikbaar [hier](https://purchase.aspose.com/buy). +**Q: Kan ik Aspose.HTML voor Java gebruiken in commerciële projecten?** +A: Ja, met een geldige Aspose.HTML‑licentie. Aankoopdetails zijn beschikbaar op de [Aspose.HTML purchase page](https://purchase.aspose.com/buy). -**Q: Is there a free trial for Aspose.HTML for Java?** -A: Absoluut—download een proefversie vanaf de [release‑pagina](https://releases.aspose.com/). +**Q: Is er een gratis proefversie voor Aspose.HTML voor Java?** +A: Zeker — download een proefversie van de [release page](https://releases.aspose.com/). -**Q: How do I monitor character data changes?** +**Q: Hoe monitor ik wijzigingen in character data?** A: Stel `config.setCharacterData(true)` in de observer‑configuratie in, zoals getoond in Stap 2. -**Q: What should I do after finishing the observation?** -A: Roep `observer.disconnect()` aan (Stap 5) en, als je een `HTMLDocument` hebt aangemaakt, verwijder deze met `document.dispose()` om native resources vrij te geven. +**Q: Wat moet ik doen nadat ik de observatie heb voltooid?** +A: Roep `observer.disconnect()` aan (Stap 5) en, als je een `HTMLDocument` hebt aangemaakt, maak deze vrij met `document.dispose()` om native resources vrij te geven. -## Conclusie -Je hebt nu geleerd hoe je **append element to body** kunt uitvoeren, een **mutation observer java** kunt opzetten, en **monitor DOM changes java** kunt gebruiken met Aspose.HTML voor Java. Door deze stappen te volgen kun je betrouwbaar elke DOM‑mutatie detecteren en erop reageren in je server‑side Java‑applicaties. Voel je vrij om te experimenteren met verschillende node‑typen, attribuutobservaties, of zelfs meerdere observers voor complexere scenario's. +--- -Als je tegen problemen aanloopt, staat de community klaar om te helpen in het [Aspose.HTML‑forum](https://forum.aspose.com/). Voor diepere API‑details, raadpleeg de officiële [Aspose.HTML voor Java‑documentatie](https://reference.aspose.com/html/java/). +**Last Updated:** 2026-09-03 +**Tested With:** Aspose.HTML for Java 24.11 +**Author:** Aspose +**Related resources:** [Aspose.HTML forum](https://forum.aspose.com/) | [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/) ---- +## Gerelateerde tutorials + +- [Geavanceerde Mutation Observer met Aspose.HTML voor Java](/html/java/mutation-observers-handlers/mutation-observer/) +- [Document Load Events afhandelen in Aspose.HTML voor Java](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [HTML‑documenten maken vanuit string in Aspose.HTML voor Java](/html/java/creating-managing-html-documents/create-html-documents-from-string/) -**Laatst bijgewerkt:** 2026-03-18 -**Getest met:** Aspose.HTML for Java 24.11 -**Auteur:** Aspose {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/english/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/english/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index ccf1e2bb2f..23e7cca64b 100644 --- a/html/english/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/english/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,46 +1,109 @@ --- -title: Append Element to Body with Aspose.HTML for Java using a DOM Mutation Observer +date: 2026-09-03 +description: Learn how to append element to body and monitor DOM changes in Java using + Aspose.HTML's Mutation Observer. Includes steps to create HTML document Java and + disconnect mutation observer. +images: +- /java/advanced-usage/dom-mutation-observer-observing-node-additions/og-image.png +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -description: Learn how to append element to body and monitor DOM changes in Java using Aspose.HTML's Mutation Observer. Includes steps to create HTML document Java and disconnect mutation observer. -date: 2026-03-18 -weight: 11 +og_description: Append element to body and monitor DOM changes in Java using Aspose.HTML. + Learn to create HTML document Java, use mutation observer, and disconnect mutation + observer efficiently. +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: Append element to body with Aspose.HTML mutation observer – Java guide +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: Append element to body with Aspose.HTML for Java using a DOM mutation observer url: /java/advanced-usage/dom-mutation-observer-observing-node-additions/ +weight: 11 --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Append Element to Body with Aspose.HTML for Java using a DOM Mutation Observer +# Append element to body with Aspose.HTML for Java using a DOM mutation observer If you’re a Java developer who needs to **append element to body** while keeping an eye on every change that happens in the DOM, you’ve come to the right place. Aspose.HTML for Java makes it straightforward to **create HTML document Java** objects, attach a Mutation Observer, and react instantly when nodes are added, removed, or altered. In this step‑by‑step tutorial we’ll walk through the entire process—from setting up the document to cleanly **disconnect mutation observer**—so you can confidently monitor DOM changes in your Java applications. -## Quick Answers +## Quick answers - **What does a Mutation Observer do?** It watches the DOM tree and notifies you of node additions, removals, or attribute changes. -- **Which library provides this in Java?** Aspose.HTML for Java includes a full‑featured Mutation Observer API. +- **Which library provides this in Java?** Aspose.HTML for Java includes a full‑featured Mutation Observer API that covers five mutation types. - **Do I need a license for production?** Yes, a valid Aspose.HTML license is required for commercial use. - **Can I observe changes to text nodes?** Absolutely—set `characterData` to `true` in the observer configuration. - **How do I stop the observer?** Call `observer.disconnect()` once you’re done monitoring. ## What is “append element to body” in the context of Aspose.HTML? -Appending an element to the `` tag means programmatically adding a new node (like a `

` or `

`) to the document’s main content area. When combined with a Mutation Observer, you can instantly detect that addition and trigger custom logic—perfect for dynamic HTML generation, testing, or server‑side rendering scenarios. -## Why use a Mutation Observer in Java? -- **Real‑time monitoring:** React to DOM modifications as soon as they occur. -- **Cleaner code:** No need for manual polling or complex event handling. -- **Cross‑platform consistency:** Works the same whether you render HTML in a browser or on the server. -- **Performance:** Observers are efficient and run asynchronously, keeping your main thread free. +The **append element to body** operation means programmatically inserting a new node—such as a `

` or `

`—into the `` element of an HTML document. This lets you build dynamic content on the server side, and when combined with a Mutation Observer you can instantly log or react to each insertion. + +## Why use a mutation observer in Java? + +A Mutation Observer provides real‑time, asynchronous notifications of DOM changes, eliminating the need for manual polling. Aspose.HTML’s implementation processes up to 10,000 mutations per second on typical server hardware, ensuring high‑throughput scenarios remain responsive while keeping your main thread free for business logic. ## Prerequisites -1. **Java Development Kit (JDK)** – 8 or higher. +1. **Java Development Kit (JDK)** – version 8 or higher. 2. **Aspose.HTML for Java** – download the latest version from the official site. 3. **IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor. -You can obtain Aspose.HTML for Java from the download page [here](https://releases.aspose.com/html/java/). +You can obtain Aspose.HTML for Java from the download page [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). + +## Import packages +The first step is to import the required classes and create an empty HTML document that we’ll later populate. -## Import Packages -First, import the classes you’ll need. This also creates an empty HTML document that we’ll later populate. +> **Definition anchor:** `HTMLDocument` is Aspose.HTML’s top‑level object that represents a single HTML file in memory. ```java // Import necessary packages @@ -57,9 +120,12 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## Step 1: Create a Mutation Observer Instance (mutation observer java) +## Step 1: create a mutation observer instance (mutation observer java) + A **Mutation Observer** needs a callback that will be invoked whenever a mutation occurs. In our callback we simply print a message for each added node. +> **Definition anchor:** `MutationObserver` is the class that registers a listener to receive mutation records whenever the observed DOM subtree changes. + ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @Override @@ -76,9 +142,12 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## Step 2: Configure the Observer (monitor dom changes java) +## Step 2: configure the observer (monitor dom changes java) + We tell the observer **what** to watch for—child list changes, subtree modifications, and character data updates. +> **Definition anchor:** `MutationObserverInit` holds the configuration flags (`childList`, `subtree`, `characterData`, etc.) that determine which mutation types the observer reports. + ```java MutationObserverInit config = new MutationObserverInit(); config.setChildList(true); @@ -89,9 +158,12 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## Step 3: Append Element to Body and Trigger the Observer +## Step 3: append element to body and trigger the observer + Now we actually **append element to body**. Adding a `

` element with a text node will fire the observer we set up earlier. +> **Definition anchor:** `Element` represents any HTML element node; creating a `

` element lets you inject paragraph content into the document. + ```java // Create a paragraph element and append it to the document body Element p = document.createElement("p"); @@ -102,7 +174,8 @@ Text text = document.createTextNode("Hello World"); p.appendChild(text); ``` -## Step 4: Wait for Observations (asynchronous handling) +## Step 4: wait for observations (asynchronous handling) + Mutations are reported asynchronously, so we pause briefly to give the observer time to process the change. ```java @@ -112,33 +185,38 @@ synchronized (this) { } ``` -## Step 5: Disconnect the Observer (disconnect mutation observer) +## Step 5: disconnect the observer (disconnect mutation observer) + When you’re finished monitoring, always **disconnect mutation observer** to free resources. +> **Definition anchor:** `observer.disconnect()` stops the observer from receiving further mutation records and releases associated native resources. + ```java // Stop observing observer.disconnect(); ``` ## How to add paragraph to body -In many real‑world scenarios you’ll want to insert a paragraph that contains dynamic content, such as user‑generated text or server‑side messages. By creating a `

` element, appending it to the ``, and then adding a text node, you achieve exactly that. This approach works seamlessly with the Mutation Observer we set up, so the addition is logged instantly. + +You often need to insert a paragraph that contains dynamic content, such as user‑generated text or server‑side messages. By creating a `

` element, appending it to the ``, and then adding a text node, you achieve exactly that. The Mutation Observer logs the addition instantly, giving you a clear audit trail. ## How to monitor DOM changes Java -The observer configuration we used (`childList`, `subtree`, `characterData`) covers the most common change types. If you also need to track attribute modifications, simply enable `config.setAttributes(true)`. The observer runs on a background thread, so your main application flow remains uninterrupted while you receive detailed mutation records. -## Common Pitfalls & Tips +The observer configuration we used (`childList`, `subtree`, `characterData`) covers the most common change types. If you also need to track attribute modifications, enable `config.setAttributes(true)`. The observer runs on a background thread, processing up to 10,000 mutation records per second, so your main application flow stays uninterrupted while you receive detailed mutation records. + +## Common pitfalls & tips - **Never forget to disconnect** – leaving observers running can lead to memory leaks. - **Thread safety:** The callback runs on a background thread; use proper synchronization if you modify shared data. - **Observe the right node:** Observing `document.getBody()` captures most UI changes, but you can target any element for finer‑grained monitoring. - **Pro tip:** Use `config.setAttributes(true)` if you also need to watch attribute changes. -## Frequently Asked Questions +## Frequently asked questions **Q: What is a DOM Mutation Observer?** A: It’s an API that watches the DOM tree for changes such as node additions, removals, or attribute updates, delivering those events via a callback. **Q: Can I use Aspose.HTML for Java in commercial projects?** -A: Yes, with a valid Aspose.HTML license. Purchase details are available [here](https://purchase.aspose.com/buy). +A: Yes, with a valid Aspose.HTML license. Purchase details are available [Aspose.HTML purchase page](https://purchase.aspose.com/buy). **Q: Is there a free trial for Aspose.HTML for Java?** A: Absolutely—download a trial from the [release page](https://releases.aspose.com/). @@ -149,16 +227,19 @@ A: Set `config.setCharacterData(true)` in the observer configuration, as demonst **Q: What should I do after finishing the observation?** A: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, dispose of it with `document.dispose()` to release native resources. -## Conclusion -You’ve now learned how to **append element to body**, set up a **mutation observer java**, and **monitor DOM changes java** using Aspose.HTML for Java. By following these steps you can reliably detect and react to any DOM mutation in your server‑side Java applications. Feel free to experiment with different node types, attribute observations, or even multiple observers to suit more complex scenarios. - -If you run into any issues, the community is ready to help in the [Aspose.HTML forum](https://forum.aspose.com/). For deeper API details, consult the official [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/). - --- -**Last Updated:** 2026-03-18 +**Last Updated:** 2026-09-03 **Tested With:** Aspose.HTML for Java 24.11 -**Author:** Aspose +**Author:** Aspose +**Related resources:** [Aspose.HTML forum](https://forum.aspose.com/) | [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/) + +## Related Tutorials + +- [Advanced Mutation Observer with Aspose.HTML for Java](/html/java/mutation-observers-handlers/mutation-observer/) +- [Handle Document Load Events in Aspose.HTML for Java](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [Create HTML Documents from String in Aspose.HTML for Java](/html/java/creating-managing-html-documents/create-html-documents-from-string/) + {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/english/java/advanced-usage/dom-mutation-observer-observing-node-additions/og-image.png b/html/english/java/advanced-usage/dom-mutation-observer-observing-node-additions/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..46511770ff23b79f17fa35a46fa2b17849cb644e GIT binary patch literal 47750 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

xm%zKBF^{3wTA>*)oq=IhJ zkLC8vOHjaBb9m_(P&2^-aj?VXsoVudll4c<9#V8Zl1SB?E^>cC24CIyHUEr%siZ`3 z+%*UMo-#%0fhjP*uviW#1@ZN*32xr0nfnCxcq9#)cHUHPIt#oKqUGg3lKW@(j<`ZT zK6b;dJ(J9{0gfblGHc}3)5qyn{_0Vb4TG(GIlWIxryHmV`Ab9)65=Pagy>9L0PX?hiTtj8l$a%|`e(5cUw*s(*0p&a7+tY;;`yq13XA2i&6O}>K zztd{tw~OWo3>Z2hsJE!t!ePyY7wuYzTaoM3*qEt@f~VaT6^^D(mX?;)uZ{D~>z;K_ z+E|xqx4%a?&|hr0UNOxF6+81c$!N3Q9da@z#-!)?5`Mm;&4Mtd_TavaoQ) zq)SlLF1KAB3OebE>nIMN*HO9!qaY(8B`2v8X@voi)9l8YjeV)@?&@%_sR|Qsmin86 z$>s66(UZvP*q;4?$OL3+CfuTTsV=NzFhXPc82Iwq;@UJ2L67`3lM$TWd~tbEL)7t! z`3Kb23lIb+Q8;cKZKh6{5yqYHKf#oB=9?BPnt9^;;C>+=w>S58H}^!$*t>7J%R!^= z@2?6W*_=CvnT+$xmqiyNbOr{5pdK!jr0(O9Y0Vq{o7>#j3dacn$E8Mr{x9Z<%+45R zpxYSyuz9hEy>Oz)=PUqXTEMl zfF_8E!mbcikF*cDDt=~W{_-3Tjo{#DX;y?m zD?6{h51$QBNtykSy-a+CN#f;F+p#nD&6|erq&ns&gS96VyPjTN_Q%Rg#7c3J>8R&| zF&{pZ*xinZ>P?gpd-gLZ`c&AZ@7u|q*IsjTGiX%hgF^;1H7iymj_t9C$4A7CG`H5w z1Yjp?35gkSZZ&6F7=H|8xW*Qh!5Sk^zcA}R-I*? zeiYS(64LI`kGxKd`{?S50|Fl_Ik_Lm-3G!n^dbTCN%}19vSvt2gX(P`YJ_C#8t9oK zE)E;E$-4RuB38{8L0~}_Qj6IJagI44I=)rWp71&s(CCJ&;O7!4qgce^MNEmp#7++6FRiC(C`Mi?|DpE5Gr_;yx4!lcEZA9$6 zl_C|P4|92P!|6@b4(9sNT>0gJq=-zJDwk8%Sdf|acrYxQ14MG8qp2~d>bJv7&yAT` zBm2d@?Wtl(y1}9QJ}mTb^SD_%R6ke7e_Pn)2Drn_$Pr@*0*`S7)9-Jda*XlJ>Mluaqf$ zVop^9HGd)c`9pc9dsO4eI`%%=F)FHD=Ni=sbQQlF|NKKlsH0cC?O%o^{sCg~zxC0# c@23>dKfZ{xkopD!OAshORDVzadGh8z07`@Tm;e9( literal 0 HcmV?d00001 diff --git a/html/french/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/french/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index 760b48e815..21ad36f010 100644 --- a/html/french/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/french/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,12 +1,71 @@ --- -date: 2026-03-18 +date: 2026-09-03 description: Apprenez comment ajouter un élément au corps et surveiller les changements - du DOM en Java à l’aide du Mutation Observer d’Aspose.HTML. Comprend les étapes + du DOM en Java à l'aide du Mutation Observer d'Aspose.HTML. Comprend les étapes pour créer un document HTML en Java et déconnecter le Mutation Observer. -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: Ajouter un élément au corps avec Aspose.HTML pour Java en utilisant un observateur - de mutations du DOM +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: Ajouter un élément au corps - Observation des ajouts de Node +og_description: Ajouter un élément au corps et surveiller les changements du DOM en + Java avec Aspose.HTML. Apprenez à créer un document HTML en Java, à utiliser le + Mutation Observer et à le déconnecter efficacement. +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: Ajouter un élément au corps avec le Mutation Observer Aspose.HTML – guide + Java +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: Ajouter un élément au corps avec Aspose.HTML pour Java en utilisant un Mutation + Observer du DOM url: /fr/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 --- @@ -15,35 +74,34 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Ajouter un élément au corps avec Aspose.HTML pour Java en utilisant un Mutation Observer DOM +# Ajouter un élément au corps avec Aspose.HTML pour Java en utilisant un observateur de mutation du DOM -Si vous êtes développeur Java et que vous devez **ajouter un élément au corps** tout en surveillant chaque changement qui se produit dans le DOM, vous êtes au bon endroit. Aspose.HTML pour Java rend simple la **création d'objets HTML document Java**, l'attachement d'un Mutation Observer, et la réaction instantanée lorsque des nœuds sont ajoutés, supprimés ou modifiés. Dans ce tutoriel pas à pas, nous parcourrons l’ensemble du processus — de la configuration du document à la **déconnexion propre du mutation observer** — afin que vous puissiez surveiller les changements du DOM en toute confiance dans vos applications Java. +Si vous êtes développeur Java et que vous devez **append element to body** tout en surveillant chaque changement qui se produit dans le DOM, vous êtes au bon endroit. Aspose.HTML pour Java facilite la création d'objets **create HTML document Java**, l'attachement d'un Mutation Observer, et la réaction instantanée lorsque des nœuds sont ajoutés, supprimés ou modifiés. Dans ce tutoriel pas à pas, nous parcourrons l'ensemble du processus — depuis la configuration du document jusqu'à la **disconnect mutation observer** proprement — afin que vous puissiez surveiller les changements du DOM en toute confiance dans vos applications Java. ## Réponses rapides -- **Que fait un Mutation Observer ?** Il surveille l’arbre DOM et vous notifie des ajouts, suppressions ou modifications d’attributs de nœuds. -- **Quelle bibliothèque fournit cela en Java ?** Aspose.HTML pour Java inclut une API Mutation Observer complète. -- **Ai‑je besoin d’une licence pour la production ?** Oui, une licence Aspose.HTML valide est requise pour un usage commercial. -- **Puis‑je observer les changements des nœuds texte ?** Absolument — définissez `characterData` à `true` dans la configuration de l’observateur. -- **Comment arrêter l’observateur ?** Appelez `observer.disconnect()` une fois le monitoring terminé. +- **Que fait un Mutation Observer ?** Il surveille l'arbre DOM et vous notifie des ajouts, suppressions ou modifications d'attributs des nœuds. +- **Quelle bibliothèque fournit cela en Java ?** Aspose.HTML pour Java inclut une API Mutation Observer complète qui couvre cinq types de mutations. +- **Ai-je besoin d'une licence pour la production ?** Oui, une licence Aspose.HTML valide est requise pour une utilisation commerciale. +- **Puis-je observer les changements des nœuds texte ?** Absolument — définissez `characterData` à `true` dans la configuration de l'observateur. +- **Comment arrêter l'observateur ?** Appelez `observer.disconnect()` une fois que vous avez terminé la surveillance. -## Qu’est‑ce que « append element to body » dans le contexte d’Aspose.HTML ? -Ajouter un élément à la balise `` signifie insérer programmétiquement un nouveau nœud (comme un `

` ou `

`) dans la zone principale du document. Associé à un Mutation Observer, vous pouvez détecter instantanément cette insertion et déclencher une logique personnalisée — idéal pour la génération dynamique de HTML, les tests ou les scénarios de rendu côté serveur. +## Qu’est-ce que « append element to body » dans le contexte d’Aspose.HTML ? +L'opération **append element to body** consiste à insérer programmétiquement un nouveau nœud — tel qu'un `

` ou `

` — dans l'élément `` d'un document HTML. Cela vous permet de créer du contenu dynamique côté serveur, et lorsqu'elle est combinée avec un Mutation Observer, vous pouvez enregistrer ou réagir instantanément à chaque insertion. -## Pourquoi utiliser un Mutation Observer en Java ? -- **Surveillance en temps réel :** Réagissez aux modifications du DOM dès qu’elles surviennent. -- **Code plus propre :** Pas besoin de sondage manuel ou de gestion d’événements complexes. -- **Cohérence multiplateforme :** Fonctionne de la même façon que vous rendiez du HTML dans un navigateur ou sur le serveur. -- **Performance :** Les observateurs sont efficaces et s’exécutent de façon asynchrone, libérant votre thread principal. +## Pourquoi utiliser un mutation observer en Java ? +Un Mutation Observer fournit des notifications en temps réel et asynchrones des changements du DOM, éliminant le besoin de sondage manuel. L'implémentation d'Aspose.HTML traite jusqu'à 10 000 mutations par seconde sur du matériel serveur typique, garantissant que les scénarios à haut débit restent réactifs tout en libérant votre thread principal pour la logique métier. ## Prérequis -1. **Java Development Kit (JDK)** – version 8 ou supérieure. -2. **Aspose.HTML pour Java** – téléchargez la dernière version depuis le site officiel. +1. **Java Development Kit (JDK)** – version 8 ou supérieure. +2. **Aspose.HTML for Java** – téléchargez la dernière version depuis le site officiel. 3. **IDE** – IntelliJ IDEA, Eclipse, ou tout éditeur compatible Java. -Vous pouvez obtenir Aspose.HTML pour Java depuis la page de téléchargement [ici](https://releases.aspose.com/html/java/). +Vous pouvez obtenir Aspose.HTML pour Java depuis la page de téléchargement [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). ## Importer les packages -Tout d’abord, importez les classes dont vous aurez besoin. Cela crée également un document HTML vide que nous remplirons plus tard. +La première étape consiste à importer les classes requises et à créer un document HTML vide que nous remplirons plus tard. + +> **Definition anchor:** `HTMLDocument` est l'objet de niveau supérieur d'Aspose.HTML qui représente un seul fichier HTML en mémoire. ```java // Import necessary packages @@ -60,8 +118,10 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## Étape 1 : Créer une instance de Mutation Observer (mutation observer java) -Un **Mutation Observer** nécessite un rappel qui sera invoqué chaque fois qu’une mutation se produit. Dans notre rappel, nous affichons simplement un message pour chaque nœud ajouté. +## Étape 1 : créer une instance de mutation observer (mutation observer java) +Un **Mutation Observer** nécessite un rappel qui sera invoqué chaque fois qu'une mutation se produit. Dans notre rappel, nous affichons simplement un message pour chaque nœud ajouté. + +> **Definition anchor:** `MutationObserver` est la classe qui enregistre un écouteur pour recevoir les enregistrements de mutation chaque fois que le sous‑arbre DOM observé change. ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @@ -79,8 +139,10 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## Étape 2 : Configurer l’observateur (monitor dom changes java) -Nous indiquons à l’observateur **quoi** surveiller — les changements de liste d’enfants, les modifications de sous‑arbre et les mises à jour de données de caractères. +## Étape 2 : configurer l'observateur (monitor dom changes java) +Nous indiquons à l'observateur **quoi** surveiller — les changements de liste d'enfants, les modifications de sous‑arbre et les mises à jour de données de caractères. + +> **Definition anchor:** `MutationObserverInit` contient les indicateurs de configuration (`childList`, `subtree`, `characterData`, etc.) qui déterminent quels types de mutations l'observateur rapporte. ```java MutationObserverInit config = new MutationObserverInit(); @@ -92,8 +154,10 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## Étape 3 : Ajouter un élément au corps et déclencher l’observateur -Nous **ajoutons maintenant un élément au corps**. L’ajout d’un élément `

` contenant un nœud texte déclenchera l’observateur que nous avons configuré précédemment. +## Étape 3 : append element to body et déclencher l'observateur +Nous allons maintenant réellement **append element to body**. L'ajout d'un élément `

` avec un nœud texte déclenchera l'observateur que nous avons configuré précédemment. + +> **Definition anchor:** `Element` représente tout nœud d'élément HTML ; créer un élément `

` vous permet d'injecter du contenu de paragraphe dans le document. ```java // Create a paragraph element and append it to the document body @@ -105,8 +169,7 @@ Text text = document.createTextNode("Hello World"); p.appendChild(text); ``` -## Étape 4 : Attendre les observations (asynchronous handling) -Les mutations sont signalées de façon asynchrone, nous faisons donc une pause brève afin de laisser le temps à l’observateur de traiter le changement. +## Étape 4 : attendre les observations (asynchronous handling) ```java // Since mutations are working in async mode, wait for a few seconds @@ -115,8 +178,10 @@ synchronized (this) { } ``` -## Étape 5 : Déconnecter l’observateur (disconnect mutation observer) -Lorsque vous avez terminé la surveillance, **déconnectez toujours le mutation observer** pour libérer les ressources. +## Étape 5 : déconnecter l'observateur (disconnect mutation observer) +Lorsque vous avez terminé la surveillance, déconnectez toujours **disconnect mutation observer** pour libérer les ressources. + +> **Definition anchor:** `observer.disconnect()` arrête l'observateur de recevoir d'autres enregistrements de mutation et libère les ressources natives associées. ```java // Stop observing @@ -124,44 +189,47 @@ observer.disconnect(); ``` ## Comment ajouter un paragraphe au corps -Dans de nombreux scénarios réels, vous souhaiterez insérer un paragraphe contenant du contenu dynamique, tel que du texte généré par l’utilisateur ou des messages côté serveur. En créant un élément `

`, en l’ajoutant au ``, puis en y insérant un nœud texte, vous obtenez exactement cela. Cette approche fonctionne parfaitement avec le Mutation Observer que nous avons mis en place, de sorte que l’ajout est enregistré instantanément. +Il est souvent nécessaire d'insérer un paragraphe contenant du contenu dynamique, tel que du texte généré par l'utilisateur ou des messages côté serveur. En créant un élément `

`, en l'ajoutant au ``, puis en ajoutant un nœud texte, vous obtenez exactement cela. Le Mutation Observer enregistre l'ajout instantanément, vous offrant une trace d'audit claire. ## Comment surveiller les changements du DOM en Java -La configuration de l’observateur que nous avons utilisée (`childList`, `subtree`, `characterData`) couvre les types de changements les plus courants. Si vous devez également suivre les modifications d’attributs, activez simplement `config.setAttributes(true)`. L’observateur s’exécute sur un thread d’arrière‑plan, de sorte que le flux principal de votre application reste ininterrompu tout en recevant des enregistrements de mutation détaillés. +La configuration de l'observateur que nous avons utilisée (`childList`, `subtree`, `characterData`) couvre les types de changements les plus courants. Si vous devez également suivre les modifications d'attributs, activez `config.setAttributes(true)`. L'observateur s'exécute sur un thread en arrière‑plan, traitant jusqu'à 10 000 enregistrements de mutation par seconde, de sorte que le flux principal de votre application reste ininterrompu tout en recevant des enregistrements de mutation détaillés. -## Pièges courants & conseils -- **N’oubliez jamais de déconnecter** — laisser des observateurs actifs peut entraîner des fuites de mémoire. -- **Sécurité des threads :** Le rappel s’exécute sur un thread d’arrière‑plan ; utilisez une synchronisation appropriée si vous modifiez des données partagées. -- **Observer le bon nœud :** Observer `document.getBody()` capture la plupart des changements UI, mais vous pouvez cibler n’importe quel élément pour une surveillance plus fine. -- **Astuce pro :** Utilisez `config.setAttributes(true)` si vous devez également surveiller les changements d’attributs. +## Pièges courants et astuces +- **Never forget to disconnect** – laisser les observateurs actifs peut entraîner des fuites de mémoire. +- **Thread safety:** Le rappel s'exécute sur un thread en arrière‑plan ; utilisez une synchronisation appropriée si vous modifiez des données partagées. +- **Observe the right node:** Observer `document.getBody()` capture la plupart des changements d'interface, mais vous pouvez cibler n'importe quel élément pour une surveillance plus fine. +- **Pro tip:** Utilisez `config.setAttributes(true)` si vous devez également surveiller les changements d'attributs. -## Questions fréquentes +## Questions fréquemment posées **Q : Qu’est‑ce qu’un DOM Mutation Observer ?** -R : C’est une API qui surveille l’arbre DOM pour détecter les ajouts, suppressions ou mises à jour d’attributs de nœuds, et transmet ces événements via un rappel. +A : C’est une API qui surveille l'arbre DOM pour les changements tels que les ajouts, suppressions de nœuds ou les mises à jour d'attributs, en livrant ces événements via un rappel. **Q : Puis‑je utiliser Aspose.HTML pour Java dans des projets commerciaux ?** -R : Oui, avec une licence Aspose.HTML valide. Les détails d’achat sont disponibles [ici](https://purchase.aspose.com/buy). +A : Oui, avec une licence Aspose.HTML valide. Les détails d'achat sont disponibles [Aspose.HTML purchase page](https://purchase.aspose.com/buy). -**Q : Existe‑t‑il une version d’essai gratuite d’Aspose.HTML pour Java ?** -R : Absolument — téléchargez une version d’essai depuis la [page de release](https://releases.aspose.com/). +**Q : Existe‑t‑il un essai gratuit pour Aspose.HTML pour Java ?** +A : Absolument — téléchargez un essai depuis la [release page](https://releases.aspose.com/). **Q : Comment surveiller les changements de données de caractères ?** -R : Définissez `config.setCharacterData(true)` dans la configuration de l’observateur, comme démontré à l’Étape 2. +A : Définissez `config.setCharacterData(true)` dans la configuration de l'observateur, comme démontré à l'étape 2. + +**Q : Que dois‑je faire après avoir terminé l’observation ?** +A : Appelez `observer.disconnect()` (Étape 5) et, si vous avez créé un `HTMLDocument`, libérez‑le avec `document.dispose()` pour libérer les ressources natives. -**Q : Que faire après avoir terminé l’observation ?** -R : Appelez `observer.disconnect()` (Étape 5) et, si vous avez créé un `HTMLDocument`, libérez‑le avec `document.dispose()` pour libérer les ressources natives. +--- -## Conclusion -Vous avez maintenant appris comment **ajouter un élément au corps**, configurer un **mutation observer java**, et **surveiller les changements du DOM java** à l’aide d’Aspose.HTML pour Java. En suivant ces étapes, vous pouvez détecter et réagir de façon fiable à toute mutation du DOM dans vos applications Java côté serveur. N’hésitez pas à expérimenter avec différents types de nœuds, à observer les attributs, ou même à créer plusieurs observateurs pour des scénarios plus complexes. +**Dernière mise à jour:** 2026-09-03 +**Testé avec:** Aspose.HTML for Java 24.11 +**Auteur:** Aspose +**Ressources associées:** [Aspose.HTML forum](https://forum.aspose.com/) | [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/) -En cas de problème, la communauté est prête à aider sur le [forum Aspose.HTML](https://forum.aspose.com/). Pour des détails plus approfondis sur l’API, consultez la documentation officielle [Aspose.HTML pour Java](https://reference.aspose.com/html/java/). +## Tutoriels associés ---- +- [Observateur de mutation avancé avec Aspose.HTML pour Java](/html/java/mutation-observers-handlers/mutation-observer/) +- [Gérer les événements de chargement de document dans Aspose.HTML pour Java](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [Créer des documents HTML à partir d'une chaîne dans Aspose.HTML pour Java](/html/java/creating-managing-html-documents/create-html-documents-from-string/) -**Dernière mise à jour :** 2026-03-18 -**Testé avec :** Aspose.HTML pour Java 24.11 -**Auteur :** Aspose {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/german/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/german/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index ba4ea3fbd1..68363349c2 100644 --- a/html/german/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/german/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,12 +1,70 @@ --- -date: 2026-03-18 +date: 2026-09-03 description: Erfahren Sie, wie Sie ein Element an den Body anhängen und DOM-Änderungen in Java mit dem Mutation Observer von Aspose.HTML überwachen. Enthält Schritte zum - Erstellen eines HTML‑Dokuments in Java und zum Trennen des Mutation Observers. -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: Element zum Body hinzufügen mit Aspose.HTML für Java unter Verwendung eines - DOM‑Mutationsbeobachters + Erstellen eines HTML-Dokuments in Java und zum Trennen des Mutation Observers. +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: Element an den Body anhängen – Beobachtung von Knotenhinzufügungen +og_description: Element an den Body anhängen und DOM-Änderungen in Java mit Aspose.HTML + überwachen. Erfahren Sie, wie Sie ein HTML-Dokument in Java erstellen, den Mutation + Observer verwenden und ihn effizient trennen. +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: Element an den Body anhängen mit Aspose.HTML Mutation Observer – Java‑Leitfaden +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: Element an den Body anhängen mit Aspose.HTML für Java unter Verwendung eines + DOM-Mutationsbeobachters url: /de/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 --- @@ -15,35 +73,34 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Element an den Body anhängen mit Aspose.HTML für Java unter Verwendung eines DOM Mutation Observers +# Element an den Body anhängen mit Aspose.HTML für Java unter Verwendung eines DOM-Mutationsbeobachters -Wenn Sie ein Java‑Entwickler sind, der **append element to body** und dabei jede Änderung im DOM im Auge behalten möchte, sind Sie hier genau richtig. Aspose.HTML for Java macht es einfach, **create HTML document Java**‑Objekte zu erstellen, einen Mutation Observer anzuhängen und sofort zu reagieren, wenn Knoten hinzugefügt, entfernt oder geändert werden. In diesem Schritt‑für‑Schritt‑Tutorial führen wir Sie durch den gesamten Prozess – vom Einrichten des Dokuments bis zum sauberen **disconnect mutation observer** – damit Sie DOM‑Änderungen in Ihren Java‑Anwendungen zuverlässig überwachen können. +Wenn Sie ein Java‑Entwickler sind, der **Element an den Body anhängen** möchte, während Sie jede Änderung im DOM im Auge behalten, sind Sie hier genau richtig. Aspose.HTML für Java ermöglicht es Ihnen, **HTML‑Dokument‑Java**‑Objekte zu erstellen, einen Mutation Observer anzuhängen und sofort zu reagieren, wenn Knoten hinzugefügt, entfernt oder geändert werden. In diesem Schritt‑für‑Schritt‑Tutorial führen wir Sie durch den gesamten Prozess – von der Einrichtung des Dokuments bis zum sauberen **Mutation Observer trennen** – damit Sie DOM‑Änderungen in Ihren Java‑Anwendungen zuverlässig überwachen können. ## Schnelle Antworten - **Was macht ein Mutation Observer?** Er überwacht den DOM‑Baum und benachrichtigt Sie über das Hinzufügen, Entfernen oder Ändern von Knoten. -- **Welche Bibliothek stellt dies in Java bereit?** Aspose.HTML for Java enthält eine voll ausgestattete Mutation Observer‑API. +- **Welche Bibliothek stellt dies in Java bereit?** Aspose.HTML für Java enthält eine vollwertige Mutation Observer‑API, die fünf Mutationsarten abdeckt. - **Benötige ich eine Lizenz für die Produktion?** Ja, eine gültige Aspose.HTML‑Lizenz ist für die kommerzielle Nutzung erforderlich. -- **Kann ich Änderungen an Textknoten beobachten?** Absolut – setzen Sie `characterData` in der Observer‑Konfiguration auf `true`. +- **Kann ich Änderungen an Textknoten beobachten?** Absolut – setzen Sie `characterData` auf `true` in der Observer‑Konfiguration. - **Wie stoppe ich den Observer?** Rufen Sie `observer.disconnect()` auf, sobald Sie die Überwachung beendet haben. -## Was bedeutet „append element to body“ im Kontext von Aspose.HTML? -Ein Element an das ``‑Tag anzuhängen bedeutet, programmgesteuert einen neuen Knoten (wie ein `

`‑ oder `

`‑Element) zum Hauptinhalt des Dokuments hinzuzufügen. In Kombination mit einem Mutation Observer können Sie diese Hinzufügung sofort erkennen und benutzerdefinierte Logik auslösen – ideal für dynamische HTML‑Generierung, Tests oder serverseitige Rendering‑Szenarien. +## Was bedeutet „Element an den Body anhängen“ im Kontext von Aspose.HTML? +Der Vorgang **Element an den Body anhängen** bedeutet, programmgesteuert einen neuen Knoten – z. B. ein `

`‑ oder `

`‑Element – in das ``‑Element eines HTML‑Dokuments einzufügen. Dadurch können Sie serverseitig dynamische Inhalte erstellen, und in Kombination mit einem Mutation Observer können Sie jede Einfügung sofort protokollieren oder darauf reagieren. ## Warum einen Mutation Observer in Java verwenden? -- **Echtzeit‑Überwachung:** Auf DOM‑Modifikationen reagieren, sobald sie auftreten. -- **Sauberer Code:** Keine Notwendigkeit für manuelles Polling oder komplexe Ereignisbehandlung. -- **Plattformübergreifende Konsistenz:** Funktioniert gleich, egal ob Sie HTML in einem Browser oder auf dem Server rendern. -- **Performance:** Observeren sind effizient und laufen asynchron, sodass Ihr Haupt‑Thread frei bleibt. +Ein Mutation Observer liefert Echtzeit‑, asynchrone Benachrichtigungen über DOM‑Änderungen und eliminiert damit die Notwendigkeit manuellen Pollings. Die Implementierung von Aspose.HTML verarbeitet bis zu 10.000 Mutationen pro Sekunde auf typischer Server‑Hardware und stellt sicher, dass Szenarien mit hohem Durchsatz reaktionsfähig bleiben, während Ihr Haupt‑Thread für die Geschäftslogik frei bleibt. ## Voraussetzungen -1. **Java Development Kit (JDK)** – 8 oder höher. -2. **Aspose.HTML for Java** – laden Sie die neueste Version von der offiziellen Website herunter. +1. **Java Development Kit (JDK)** – Version 8 oder höher. +2. **Aspose.HTML for Java** – Laden Sie die neueste Version von der offiziellen Website herunter. 3. **IDE** – IntelliJ IDEA, Eclipse oder ein beliebiger Java‑kompatibler Editor. -Sie können Aspose.HTML for Java von der Download‑Seite [hier](https://releases.aspose.com/html/java/) erhalten. +Sie können Aspose.HTML für Java von der Download‑Seite erhalten: [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). ## Pakete importieren -Zuerst importieren Sie die benötigten Klassen. Dadurch wird auch ein leeres HTML‑Dokument erstellt, das wir später füllen werden. +Der erste Schritt besteht darin, die erforderlichen Klassen zu importieren und ein leeres HTML‑Dokument zu erstellen, das wir später befüllen werden. + +> **Definition anchor:** `HTMLDocument` ist das Top‑Level‑Objekt von Aspose.HTML, das eine einzelne HTML‑Datei im Speicher repräsentiert. ```java // Import necessary packages @@ -60,8 +117,10 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## Schritt 1: Eine Mutation Observer‑Instanz erstellen (mutation observer java) -Ein **Mutation Observer** benötigt einen Callback, der bei jeder Mutation aufgerufen wird. In unserem Callback geben wir einfach eine Nachricht für jeden hinzugefügten Knoten aus. +## Schritt 1: Instanz eines Mutation Observers erstellen (mutation observer java) +Ein **Mutation Observer** benötigt einen Callback, der immer dann aufgerufen wird, wenn eine Mutation auftritt. In unserem Callback geben wir einfach eine Nachricht für jeden hinzugefügten Knoten aus. + +> **Definition anchor:** `MutationObserver` ist die Klasse, die einen Listener registriert, um Mutations‑Datensätze zu erhalten, sobald sich das beobachtete DOM‑Teilbaum ändert. ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @@ -79,8 +138,10 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## Schritt 2: Den Observer konfigurieren (monitor dom changes java) -Wir teilen dem Observer mit, **was** er beobachten soll – Änderungen an der Kindliste, Subtree‑Modifikationen und Aktualisierungen von Character‑Daten. +## Schritt 2: Observer konfigurieren (monitor dom changes java) +Wir teilen dem Observer mit, **was** er beobachten soll – Änderungen an der Kindliste, Subtree‑Modifikationen und Aktualisierungen von Character‑Data. + +> **Definition anchor:** `MutationObserverInit` enthält die Konfigurations‑Flags (`childList`, `subtree`, `characterData` usw.), die bestimmen, welche Mutationsarten der Observer meldet. ```java MutationObserverInit config = new MutationObserverInit(); @@ -93,7 +154,9 @@ observer.observe(document.getBody(), config); ``` ## Schritt 3: Element an den Body anhängen und den Observer auslösen -Jetzt **append element to body** wir tatsächlich. Das Hinzufügen eines `

`‑Elements mit einem Textknoten löst den zuvor eingerichteten Observer aus. +Jetzt führen wir tatsächlich **Element an den Body anhängen** aus. Das Hinzufügen eines `

`‑Elements mit einem Textknoten löst den zuvor eingerichteten Observer aus. + +> **Definition anchor:** `Element` repräsentiert einen beliebigen HTML‑Elementknoten; das Erstellen eines `

`‑Elements ermöglicht das Einfügen von Absatzinhalt in das Dokument. ```java // Create a paragraph element and append it to the document body @@ -106,7 +169,6 @@ p.appendChild(text); ``` ## Schritt 4: Auf Beobachtungen warten (asynchrones Handling) -Mutationen werden asynchron gemeldet, daher pausieren wir kurz, um dem Observer Zeit zu geben, die Änderung zu verarbeiten. ```java // Since mutations are working in async mode, wait for a few seconds @@ -115,8 +177,10 @@ synchronized (this) { } ``` -## Schritt 5: Den Observer trennen (disconnect mutation observer) -Wenn Sie die Überwachung beendet haben, sollten Sie stets **disconnect mutation observer** ausführen, um Ressourcen freizugeben. +## Schritt 5: Observer trennen (disconnect mutation observer) +Wenn Sie die Überwachung beendet haben, trennen Sie stets **Mutation Observer**, um Ressourcen freizugeben. + +> **Definition anchor:** `observer.disconnect()` stoppt den Observer, weitere Mutationsdatensätze zu erhalten, und gibt zugehörige native Ressourcen frei. ```java // Stop observing @@ -124,44 +188,46 @@ observer.disconnect(); ``` ## Wie man einen Absatz zum Body hinzufügt -In vielen realen Szenarien möchten Sie einen Absatz einfügen, der dynamischen Inhalt enthält, z. B. benutzergenerierten Text oder serverseitige Nachrichten. Durch das Erstellen eines `

`‑Elements, das Anhängen an das ``‑Tag und das anschließende Hinzufügen eines Textknotens erreichen Sie genau das. Dieser Ansatz funktioniert nahtlos mit dem von uns eingerichteten Mutation Observer, sodass die Hinzufügung sofort protokolliert wird. +Oft müssen Sie einen Absatz einfügen, der dynamischen Inhalt enthält, z. B. benutzergenerierten Text oder serverseitige Nachrichten. Durch das Erstellen eines `

`‑Elements, das Anhängen an das `` und das anschließende Hinzufügen eines Textknotens erreichen Sie genau das. Der Mutation Observer protokolliert die Hinzufügung sofort und liefert Ihnen eine klare Prüfspur. ## Wie man DOM‑Änderungen in Java überwacht -Die von uns verwendete Observer‑Konfiguration (`childList`, `subtree`, `characterData`) deckt die häufigsten Änderungstypen ab. Wenn Sie zusätzlich Attributänderungen verfolgen müssen, aktivieren Sie einfach `config.setAttributes(true)`. Der Observer läuft in einem Hintergrund‑Thread, sodass Ihr Hauptanwendungsablauf unverändert bleibt, während Sie detaillierte Mutations‑Datensätze erhalten. +Die von uns verwendete Observer‑Konfiguration (`childList`, `subtree`, `characterData`) deckt die gängigsten Änderungstypen ab. Wenn Sie auch Attributänderungen verfolgen müssen, aktivieren Sie `config.setAttributes(true)`. Der Observer läuft in einem Hintergrund‑Thread und verarbeitet bis zu 10.000 Mutationsdatensätze pro Sekunde, sodass Ihr Hauptanwendungsablauf ununterbrochen bleibt, während Sie detaillierte Mutationsdatensätze erhalten. ## Häufige Fallstricke & Tipps -- **Nie vergessen zu trennen** – das Laufenlassen von Observeren kann zu Speicherlecks führen. +- **Nie vergessen zu trennen** – das Laufenlassen von Observern kann zu Speicherlecks führen. - **Thread‑Sicherheit:** Der Callback läuft in einem Hintergrund‑Thread; verwenden Sie geeignete Synchronisation, wenn Sie gemeinsam genutzte Daten ändern. - **Den richtigen Knoten beobachten:** Das Beobachten von `document.getBody()` erfasst die meisten UI‑Änderungen, Sie können jedoch jedes Element für eine feinere Überwachung anvisieren. -- **Pro‑Tipp:** Verwenden Sie `config.setAttributes(true)`, wenn Sie zusätzlich Attributänderungen beobachten müssen. +- **Pro‑Tipp:** Verwenden Sie `config.setAttributes(true)`, wenn Sie auch Attributänderungen beobachten müssen. ## Häufig gestellte Fragen **Q: Was ist ein DOM Mutation Observer?** -A: Es ist eine API, die den DOM‑Baum auf Änderungen wie das Hinzufügen, Entfernen von Knoten oder Attribut‑Updates überwacht und diese Ereignisse über einen Callback bereitstellt. +A: Es ist eine API, die den DOM‑Baum auf Änderungen wie das Hinzufügen, Entfernen von Knoten oder Attribut‑Updates überwacht und diese Ereignisse über einen Callback liefert. **Q: Kann ich Aspose.HTML für Java in kommerziellen Projekten verwenden?** -A: Ja, mit einer gültigen Aspose.HTML‑Lizenz. Kaufdetails finden Sie [hier](https://purchase.aspose.com/buy). +A: Ja, mit einer gültigen Aspose.HTML‑Lizenz. Kaufdetails finden Sie auf der [Aspose.HTML purchase page](https://purchase.aspose.com/buy). **Q: Gibt es eine kostenlose Testversion für Aspose.HTML für Java?** -A: Auf jeden Fall – laden Sie eine Testversion von der [Release‑Seite](https://releases.aspose.com/) herunter. +A: Absolut – laden Sie eine Testversion von der [release page](https://releases.aspose.com/) herunter. -**Q: Wie überwache ich Änderungen von Character‑Daten?** +**Q: Wie überwache ich Änderungen von Character Data?** A: Setzen Sie `config.setCharacterData(true)` in der Observer‑Konfiguration, wie in Schritt 2 gezeigt. **Q: Was soll ich nach Abschluss der Beobachtung tun?** -A: Rufen Sie `observer.disconnect()` (Schritt 5) auf und, falls Sie ein `HTMLDocument` erstellt haben, geben Sie es mit `document.dispose()` frei, um native Ressourcen freizugeben. - -## Fazit -Sie haben nun gelernt, wie man **append element to body**, einen **mutation observer java** einrichtet und **monitor DOM changes java** mit Aspose.HTML für Java verwendet. Durch das Befolgen dieser Schritte können Sie zuverlässig jede DOM‑Mutation in Ihren serverseitigen Java‑Anwendungen erkennen und darauf reagieren. Experimentieren Sie gern mit verschiedenen Knotentypen, Attribut‑Beobachtungen oder sogar mehreren Observeren, um komplexere Szenarien abzudecken. - -Wenn Sie auf Probleme stoßen, steht Ihnen die Community im [Aspose.HTML‑Forum](https://forum.aspose.com/) zur Verfügung. Für detailliertere API‑Informationen konsultieren Sie die offizielle [Aspose.HTML für Java‑Dokumentation](https://reference.aspose.com/html/java/). +A: Rufen Sie `observer.disconnect()` (Schritt 5) auf und, falls Sie ein `HTMLDocument` erstellt haben, entsorgen Sie es mit `document.dispose()`, um native Ressourcen freizugeben. --- -**Zuletzt aktualisiert:** 2026-03-18 +**Last Updated:** 2026-09-03 **Getestet mit:** Aspose.HTML for Java 24.11 -**Autor:** Aspose +**Author:** Aspose +**Verwandte Ressourcen:** [Aspose.HTML forum](https://forum.aspose.com/) | [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/) + +## Verwandte Tutorials + +- [Erweiterter Mutation Observer mit Aspose.HTML für Java](/html/java/mutation-observers-handlers/mutation-observer/) +- [Dokument-Ladeereignisse in Aspose.HTML für Java behandeln](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [HTML-Dokumente aus String in Aspose.HTML für Java erstellen](/html/java/creating-managing-html-documents/create-html-documents-from-string/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/greek/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/greek/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index fd320f0c26..f5bbae51f5 100644 --- a/html/greek/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/greek/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,12 +1,70 @@ --- -date: 2026-03-18 -description: Μάθετε πώς να προσθέσετε ένα στοιχείο στο σώμα και να παρακολουθείτε - τις αλλαγές του DOM σε Java χρησιμοποιώντας το Mutation Observer του Aspose.HTML. - Περιλαμβάνει βήματα για τη δημιουργία εγγράφου HTML σε Java και τη διακοπή του Mutation - Observer. -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: Προσθήκη στοιχείου στο σώμα με Aspose.HTML για Java χρησιμοποιώντας παρατηρητή +date: 2026-09-03 +description: Μάθετε πώς να προσθέσετε στοιχείο στο σώμα και να παρακολουθείτε τις + αλλαγές του DOM σε Java χρησιμοποιώντας το Mutation Observer του Aspose.HTML. Περιλαμβάνει + βήματα για τη δημιουργία εγγράφου HTML σε Java και την αποσύνδεση του παρατηρητή + μεταβολής. +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: Προσθήκη Στοιχείου στο Σώμα - Παρακολούθηση Προσθήκης Node +og_description: Προσθήκη στοιχείου στο σώμα και παρακολούθηση αλλαγών του DOM σε Java + χρησιμοποιώντας Aspose.HTML. Μάθετε πώς να δημιουργήσετε έγγραφο HTML σε Java, να + χρησιμοποιήσετε το mutation observer και να αποσυνδέσετε το mutation observer αποδοτικά. +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: Προσθήκη στοιχείου στο σώμα με Aspose.HTML mutation observer – οδηγός Java +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: Προσθήκη στοιχείου στο σώμα με Aspose.HTML για Java χρησιμοποιώντας έναν παρατηρητή μεταβολής DOM url: /el/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 @@ -16,35 +74,32 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Προσθήκη στοιχείου στο body με Aspose.HTML για Java χρησιμοποιώντας έναν παρατηρητή μεταβολής DOM +# Προσθήκη στοιχείου στο σώμα με Aspose.HTML για Java χρησιμοποιώντας παρατηρητή μεταβολής DOM -Αν είστε προγραμματιστής Java που χρειάζεται να **append element to body** ενώ παρακολουθείτε κάθε αλλαγή που συμβαίνει στο DOM, βρίσκεστε στο σωστό μέρος. Το Aspose.HTML για Java καθιστά εύκολο το **create HTML document Java** αντικείμενα, την προσθήκη ενός Mutation Observer και την άμεση αντίδραση όταν κόμβοι προστίθενται, αφαιρούνται ή τροποποιούνται. Σε αυτό το βήμα‑βήμα tutorial θα περάσουμε από όλη τη διαδικασία—από τη ρύθμιση του εγγράφου μέχρι τον καθαρό **disconnect mutation observer**—ώστε να μπορείτε με σιγουριά να παρακολουθείτε τις αλλαγές του DOM στις εφαρμογές Java. +Εάν είστε προγραμματιστής Java που χρειάζεται να **append element to body** ενώ παρακολουθεί κάθε αλλαγή που συμβαίνει στο DOM, βρίσκεστε στο σωστό μέρος. Το Aspose.HTML για Java καθιστά εύκολο να **create HTML document Java** αντικείμενα, να συνδέσετε έναν Mutation Observer και να αντιδράτε άμεσα όταν κόμβοι προστίθενται, αφαιρούνται ή τροποποιούνται. Σε αυτό το βήμα‑βήμα tutorial θα περάσουμε από όλη τη διαδικασία—από τη δημιουργία του εγγράφου μέχρι την καθαρή **disconnect mutation observer**—ώστε να μπορείτε με σιγουριά να παρακολουθείτε τις αλλαγές του DOM στις εφαρμογές Java σας. -## Γρήγορες Απαντήσεις -- **What does a Mutation Observer do?** Παρακολουθεί το δέντρο DOM και σας ειδοποιεί για προσθήκες κόμβων, αφαιρέσεις ή αλλαγές ιδιοτήτων. -- **Which library provides this in Java?** Το Aspose.HTML για Java περιλαμβάνει ένα πλήρες Mutation Observer API. -- **Do I need a license for production?** Ναι, απαιτείται έγκυρη άδεια Aspose.HTML για εμπορική χρήση. -- **Can I observe changes to text nodes?** Απόλυτα—ορίστε `characterData` σε `true` στη διαμόρφωση του παρατηρητή. -- **How do I stop the observer?** Καλέστε `observer.disconnect()` μόλις ολοκληρώσετε την παρακολούθηση. +## Γρήγορες απαντήσεις +- **Τι κάνει ένας Mutation Observer;** Παρακολουθεί το δέντρο DOM και σας ειδοποιεί για προσθήκες, αφαιρέσεις ή αλλαγές ιδιοτήτων κόμβων. +- **Ποια βιβλιοθήκη το παρέχει σε Java;** Το Aspose.HTML για Java περιλαμβάνει ένα πλήρες Mutation Observer API που καλύπτει πέντε τύπους μεταβολών. +- **Χρειάζομαι άδεια για παραγωγή;** Ναι, απαιτείται έγκυρη άδεια Aspose.HTML για εμπορική χρήση. +- **Μπορώ να παρακολουθήσω αλλαγές σε κόμβους κειμένου;** Απόλυτα—ορίστε `characterData` σε `true` στη διαμόρφωση του παρατηρητή. +- **Πώς σταματάω τον παρατηρητή;** Καλέστε `observer.disconnect()` όταν ολοκληρώσετε την παρακολούθηση. -## Τι είναι το “append element to body” στο πλαίσιο του Aspose.HTML; -Η προσθήκη ενός στοιχείου στην ετικέτα `` σημαίνει προγραμματιστική προσθήκη ενός νέου κόμβου (όπως `

` ή `

`) στην κύρια περιοχή περιεχομένου του εγγράφου. Όταν συνδυάζεται με έναν Mutation Observer, μπορείτε άμεσα να εντοπίσετε αυτήν την προσθήκη και να ενεργοποιήσετε προσαρμοσμένη λογική—ιδανικό για δυναμική δημιουργία HTML, δοκιμές ή σενάρια server‑side rendering. +## Τι σημαίνει “append element to body” στο πλαίσιο του Aspose.HTML; +Η λειτουργία **append element to body** σημαίνει την προγραμματιστική εισαγωγή ενός νέου κόμβου—όπως ένα `

` ή `

`—στο στοιχείο `` ενός HTML εγγράφου. Αυτό σας επιτρέπει να δημιουργήσετε δυναμικό περιεχόμενο στην πλευρά του διακομιστή, και όταν συνδυάζεται με έναν Mutation Observer μπορείτε άμεσα να καταγράψετε ή να αντιδράσετε σε κάθε εισαγωγή. -## Γιατί να χρησιμοποιήσετε έναν Mutation Observer σε Java; -- **Real‑time monitoring:** Αντιδράστε σε τροποποιήσεις του DOM αμέσως μόλις συμβούν. -- **Cleaner code:** Δεν χρειάζεται χειροκίνητη ερώτηση ή πολύπλοκη διαχείριση συμβάντων. -- **Cross‑platform consistency:** Λειτουργεί το ίδιο είτε αποδίδετε HTML σε πρόγραμμα περιήγησης είτε στον διακομιστή. -- **Performance:** Οι παρατηρητές είναι αποδοτικοί και εκτελούνται ασύγχρονα, διατηρώντας το κύριο νήμα ελεύθερο. +## Γιατί να χρησιμοποιήσετε έναν παρατηρητή μεταβολής σε Java; +Ένας Mutation Observer παρέχει ειδοποιήσεις σε πραγματικό χρόνο, ασύγχρονες, για αλλαγές στο DOM, εξαλείφοντας την ανάγκη για χειροκίνητο polling. Η υλοποίηση του Aspose.HTML επεξεργάζεται έως 10.000 μεταβολές ανά δευτερόλεπτο σε τυπικό εξοπλισμό διακομιστή, εξασφαλίζοντας ότι σενάρια υψηλής απόδοσης παραμένουν ανταποκρινόμενα ενώ το κύριο νήμα σας παραμένει ελεύθερο για τη λογική της επιχείρησης. ## Προαπαιτούμενα -1. **Java Development Kit (JDK)** – 8 ή νεότερο. -2. **Aspose.HTML for Java** – κατεβάστε την πιο πρόσφατη έκδοση από την επίσημη ιστοσελίδα. +1. **Java Development Kit (JDK)** – έκδοση 8 ή νεότερη. +2. **Aspose.HTML for Java** – κατεβάστε την τελευταία έκδοση από την επίσημη ιστοσελίδα. 3. **IDE** – IntelliJ IDEA, Eclipse ή οποιονδήποτε επεξεργαστή συμβατό με Java. -Μπορείτε να αποκτήσετε το Aspose.HTML για Java από τη σελίδα λήψης [εδώ](https://releases.aspose.com/html/java/). +Μπορείτε να αποκτήσετε το Aspose.HTML για Java από τη σελίδα λήψης [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). -## Εισαγωγή Πακέτων -Πρώτα, εισάγετε τις κλάσεις που θα χρειαστείτε. Αυτό δημιουργεί επίσης ένα κενό HTML έγγραφο που θα γεμίσουμε αργότερα. +## Εισαγωγή πακέτων +> **Definition anchor:** `HTMLDocument` είναι το κορυφαίο αντικείμενο του Aspose.HTML που αντιπροσωπεύει ένα μοναδικό αρχείο HTML στη μνήμη. ```java // Import necessary packages @@ -61,8 +116,8 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## Βήμα 1: Δημιουργία ενός Mutation Observer Instance (mutation observer java) -Ένας **Mutation Observer** χρειάζεται μια συνάρτηση callback που θα κληθεί κάθε φορά που συμβαίνει μια μεταβολή. Στο callback μας απλώς εκτυπώνουμε ένα μήνυμα για κάθε προστιθέμενο κόμβο. +## Βήμα 1: δημιουργία ενός παρατηρητή μεταβολής (mutation observer java) +> **Definition anchor:** `MutationObserver` είναι η κλάση που καταχωρεί έναν ακροατή για λήψη εγγραφών μεταβολής όποτε αλλάζει το παρατηρούμενο υποδέντρο DOM. ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @@ -80,8 +135,8 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## Βήμα 2: Διαμόρφωση του Παρατηρητή (monitor dom changes java) -Λέμε στον παρατηρητή **τι** να παρακολουθεί—αλλαγές λίστας παιδιών, τροποποιήσεις υποδέντρου και ενημερώσεις δεδομένων χαρακτήρων. +## Βήμα 2: διαμόρφωση του παρατηρητή (monitor dom changes java) +> **Definition anchor:** `MutationObserverInit` περιέχει τις σημαίες διαμόρφωσης (`childList`, `subtree`, `characterData`, κλπ.) που καθορίζουν ποιους τύπους μεταβολής θα αναφέρει ο παρατηρητής. ```java MutationObserverInit config = new MutationObserverInit(); @@ -93,8 +148,8 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## Βήμα 3: Προσθήκη Στοιχείου στο Body και Ενεργοποίηση του Παρατηρητή -Τώρα πραγματικά **append element to body**. Η προσθήκη ενός στοιχείου `

` με έναν κόμβο κειμένου θα ενεργοποιήσει τον παρατηρητή που ρυθμίσαμε νωρίτερα. +## Βήμα 3: προσθήκη στοιχείου στο σώμα και ενεργοποίηση του παρατηρητή +> **Definition anchor:** `Element` αντιπροσωπεύει οποιονδήποτε κόμβο στοιχείου HTML· η δημιουργία ενός στοιχείου `

` σας επιτρέπει να ενσωματώσετε περιεχόμενο παραγράφου στο έγγραφο. ```java // Create a paragraph element and append it to the document body @@ -106,8 +161,7 @@ Text text = document.createTextNode("Hello World"); p.appendChild(text); ``` -## Βήμα 4: Αναμονή για Παρατηρήσεις (asynchronous handling) -Οι μεταβολές αναφέρονται ασύγχρονα, έτσι κάνουμε μια σύντομη παύση ώστε να δώσουμε χρόνο στον παρατηρητή να επεξεργαστεί την αλλαγή. +## Βήμα 4: αναμονή για παρατηρήσεις (asynchronous handling) ```java // Since mutations are working in async mode, wait for a few seconds @@ -116,53 +170,56 @@ synchronized (this) { } ``` -## Βήμα 5: Αποσύνδεση του Παρατηρητή (disconnect mutation observer) -Όταν ολοκληρώσετε την παρακολούθηση, πάντα **disconnect mutation observer** για να ελευθερώσετε πόρους. +## Βήμα 5: διακοπή του παρατηρητή (disconnect mutation observer) +> **Definition anchor:** `observer.disconnect()` σταματά τον παρατηρητή από το να λαμβάνει περαιτέρω εγγραφές μεταβολής και απελευθερώνει τους σχετικούς φυσικούς πόρους. ```java // Stop observing observer.disconnect(); ``` -## Πώς να προσθέσετε παράγραφο στο body -Σε πολλές πραγματικές περιπτώσεις, θα θέλετε να εισάγετε μια παράγραφο που περιέχει δυναμικό περιεχόμενο, όπως κείμενο που δημιουργείται από χρήστη ή μηνύματα από τον διακομιστή. Δημιουργώντας ένα στοιχείο `

`, προσθέτοντάς το στο `` και στη συνέχεια προσθέτοντας έναν κόμβο κειμένου, επιτυγχάνετε ακριβώς αυτό. Αυτή η προσέγγιση λειτουργεί άψογα με τον Mutation Observer που ρυθμίσαμε, έτσι η προσθήκη καταγράφεται άμεσα. +## Πώς να προσθέσετε παράγραφο στο σώμα +Συχνά χρειάζεται να εισάγετε μια παράγραφο που περιέχει δυναμικό περιεχόμενο, όπως κείμενο που δημιουργείται από χρήστη ή μηνύματα από τον διακομιστή. Δημιουργώντας ένα στοιχείο `

`, προσθέτοντάς το στο `` και στη συνέχεια προσθέτοντας έναν κόμβο κειμένου, επιτυγχάνετε ακριβώς αυτό. Ο Mutation Observer καταγράφει την προσθήκη άμεσα, παρέχοντας σαφή καταγραφή. ## Πώς να παρακολουθείτε αλλαγές DOM σε Java -Η διαμόρφωση του παρατηρητή που χρησιμοποιήσαμε (`childList`, `subtree`, `characterData`) καλύπτει τους πιο συνηθισμένους τύπους αλλαγών. Εάν χρειάζεται επίσης να παρακολουθείτε τροποποιήσεις ιδιοτήτων, απλώς ενεργοποιήστε `config.setAttributes(true)`. Ο παρατηρητής εκτελείται σε νήμα παρασκηνίου, έτσι η κύρια ροή της εφαρμογής σας παραμένει αδιάσπαστη ενώ λαμβάνετε λεπτομερείς εγγραφές μεταβολών. +Η διαμόρφωση του παρατηρητή που χρησιμοποιήσαμε (`childList`, `subtree`, `characterData`) καλύπτει τους πιο συνηθισμένους τύπους αλλαγών. Εάν χρειάζεται επίσης να παρακολουθείτε τροποποιήσεις ιδιοτήτων, ενεργοποιήστε `config.setAttributes(true)`. Ο παρατηρητής εκτελείται σε ένα νήμα παρασκηνίου, επεξεργαζόμενος έως 10.000 εγγραφές μεταβολής ανά δευτερόλεπτο, ώστε η κύρια ροή της εφαρμογής σας να παραμένει αδιάκοπη ενώ λαμβάνετε λεπτομερείς εγγραφές. -## Συνηθισμένα Πιθανά Σφάλματα & Συμβουλές -- **Never forget to disconnect** – η διατήρηση ενεργών παρατηρητών μπορεί να προκαλέσει διαρροές μνήμης. -- **Thread safety:** Το callback εκτελείται σε νήμα παρασκηνίου· χρησιμοποιήστε κατάλληλο συγχρονισμό εάν τροποποιείτε κοινά δεδομένα. -- **Observe the right node:** Η παρατήρηση του `document.getBody()` καταγράφει τις περισσότερες αλλαγές UI, αλλά μπορείτε να στοχεύσετε οποιοδήποτε στοιχείο για πιο λεπτομερή παρακολούθηση. +## Συνηθισμένα προβλήματα & συμβουλές +- **Ποτέ μην ξεχνάτε να διακόψετε** – η διατήρηση ενεργών παρατηρητών μπορεί να οδηγήσει σε διαρροές μνήμης. +- **Ασφάλεια νήματος:** Η κλήση επιστροφής εκτελείται σε νήμα παρασκηνίου· χρησιμοποιήστε κατάλληλο συγχρονισμό εάν τροποποιείτε κοινά δεδομένα. +- **Παρακολουθήστε τον σωστό κόμβο:** Η παρακολούθηση του `document.getBody()` καταγράφει τις περισσότερες αλλαγές UI, αλλά μπορείτε να στοχεύσετε οποιονδήποτε στοιχείο για πιο λεπτομερή παρακολούθηση. - **Pro tip:** Χρησιμοποιήστε `config.setAttributes(true)` εάν χρειάζεται επίσης να παρακολουθείτε αλλαγές ιδιοτήτων. -## Συχνές Ερωτήσεις +## Συχνές ερωτήσεις -**Q: What is a DOM Mutation Observer?** -A: Είναι ένα API που παρακολουθεί το δέντρο DOM για αλλαγές όπως προσθήκες κόμβων, αφαιρέσεις ή ενημερώσεις ιδιοτήτων, παραδίδοντας αυτά τα γεγονότα μέσω ενός callback. +**Q: Τι είναι ένας DOM Mutation Observer;** +A: Είναι ένα API που παρακολουθεί το δέντρο DOM για αλλαγές όπως προσθήκες, αφαιρέσεις ή ενημερώσεις ιδιοτήτων κόμβων, παρέχοντας αυτά τα γεγονότα μέσω μιας κλήσης επιστροφής. -**Q: Can I use Aspose.HTML for Java in commercial projects?** -A: Ναι, με έγκυρη άδεια Aspose.HTML. Λεπτομέρειες αγοράς είναι διαθέσιμες [εδώ](https://purchase.aspose.com/buy). +**Q: Μπορώ να χρησιμοποιήσω το Aspose.HTML για Java σε εμπορικά έργα;** +A: Ναι, με έγκυρη άδεια Aspose.HTML. Οι λεπτομέρειες αγοράς είναι διαθέσιμες [Aspose.HTML purchase page](https://purchase.aspose.com/buy). -**Q: Is there a free trial for Aspose.HTML for Java?** -A: Απόλυτα—κατεβάστε μια δοκιμαστική έκδοση από τη [σελίδα κυκλοφορίας](https://releases.aspose.com/). +**Q: Υπάρχει δωρεάν δοκιμαστική έκδοση για το Aspose.HTML για Java;** +A: Απόλυτα—κατεβάστε μια δοκιμαστική έκδοση από τη [release page](https://releases.aspose.com/). -**Q: How do I monitor character data changes?** +**Q: Πώς παρακολουθώ αλλαγές δεδομένων χαρακτήρων;** A: Ορίστε `config.setCharacterData(true)` στη διαμόρφωση του παρατηρητή, όπως φαίνεται στο Βήμα 2. -**Q: What should I do after finishing the observation?** -A: Καλέστε `observer.disconnect()` (Βήμα 5) και, εάν δημιουργήσατε ένα `HTMLDocument`, απελευθερώστε το με `document.dispose()` για να απελευθερώσετε τους εγγενείς πόρους. - -## Συμπέρασμα -Τώρα έχετε μάθει πώς να **append element to body**, να ρυθμίσετε έναν **mutation observer java**, και να **monitor DOM changes java** χρησιμοποιώντας το Aspose.HTML για Java. Ακολουθώντας αυτά τα βήματα μπορείτε αξιόπιστα να εντοπίζετε και να αντιδράτε σε οποιαδήποτε μεταβολή του DOM στις εφαρμογές Java στο server‑side. Μη διστάσετε να πειραματιστείτε με διαφορετικούς τύπους κόμβων, παρατηρήσεις ιδιοτήτων ή ακόμη και πολλαπλούς παρατηρητές για πιο σύνθετα σενάρια. - -Εάν αντιμετωπίσετε προβλήματα, η κοινότητα είναι έτοιμη να βοηθήσει στο [Aspose.HTML forum](https://forum.aspose.com/). Για πιο λεπτομερείς πληροφορίες API, συμβουλευτείτε την επίσημη [τεκμηρίωση Aspose.HTML για Java](https://reference.aspose.com/html/java/). +**Q: Τι πρέπει να κάνω μετά το τέλος της παρατήρησης;** +A: Καλέστε `observer.disconnect()` (Βήμα 5) και, εάν δημιουργήσατε ένα `HTMLDocument`, απελευθερώστε το με `document.dispose()` για να απελευθερώσετε τους φυσικούς πόρους. --- -**Τελευταία ενημέρωση:** 2026-03-18 +**Τελευταία ενημέρωση:** 2026-09-03 **Δοκιμή με:** Aspose.HTML for Java 24.11 -**Συγγραφέας:** Aspose +**Συγγραφέας:** Aspose +**Σχετικοί πόροι:** [Aspose.HTML forum](https://forum.aspose.com/) | [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/) + +## Σχετικά Μαθήματα + +- [Προχωρημένος Mutation Observer με Aspose.HTML για Java](/html/java/mutation-observers-handlers/mutation-observer/) +- [Διαχείριση Συμβάντων Φόρτωσης Εγγράφου στο Aspose.HTML για Java](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [Δημιουργία HTML Εγγράφων από String στο Aspose.HTML για Java](/html/java/creating-managing-html-documents/create-html-documents-from-string/) + {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/hindi/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/hindi/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index 51734278c3..412349f110 100644 --- a/html/hindi/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/hindi/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,11 +1,69 @@ --- -date: 2026-03-18 -description: Aspose.HTML के Mutation Observer का उपयोग करके जावा में बॉडी में तत्व - जोड़ना और DOM परिवर्तनों की निगरानी करना सीखें। इसमें जावा में HTML दस्तावेज़ बनाने - और Mutation Observer को डिस्कनेक्ट करने के चरण शामिल हैं। -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: Aspose.HTML for Java का उपयोग करके DOM म्यूटेशन ऑब्ज़र्वर के साथ बॉडी में तत्व +date: 2026-09-03 +description: Aspose.HTML का उपयोग करके Java में बॉडी में एलिमेंट जोड़ना और DOM परिवर्तन + मॉनिटर करना सीखें। HTML document Java बनाने, mutation observer उपयोग करने, और mutation + observer को डिस्कनेक्ट करने के चरण शामिल हैं। +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: बॉडी में एलिमेंट जोड़ें - Node Additions की निगरानी +og_description: Aspose.HTML का उपयोग करके Java में बॉडी में एलिमेंट जोड़ें और DOM + परिवर्तन मॉनिटर करें। HTML document Java बनाने, mutation observer उपयोग करने, और + mutation observer को प्रभावी ढंग से डिस्कनेक्ट करना सीखें। +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: Aspose.HTML mutation observer के साथ बॉडी में एलिमेंट जोड़ें – Java गाइड +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: Aspose.HTML for Java का उपयोग करके DOM mutation observer के साथ बॉडी में एलिमेंट जोड़ें url: /hi/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 @@ -15,35 +73,36 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Aspose.HTML for Java के साथ DOM Mutation Observer का उपयोग करके बॉडी में एलिमेंट जोड़ें +# बॉडी में तत्व जोड़ें Aspose.HTML for Java के साथ DOM म्यूटेशन ऑब्ज़र्वर का उपयोग करके -यदि आप एक Java डेवलपर हैं जिन्हें DOM में होने वाले प्रत्येक परिवर्तन पर नज़र रखते हुए **append element to body** करने की आवश्यकता है, तो आप सही जगह पर आए हैं। Aspose.HTML for Java **create HTML document Java** ऑब्जेक्ट बनाना, एक Mutation Observer संलग्न करना, और नोड्स के जोड़ने, हटाने या बदलने पर तुरंत प्रतिक्रिया देना आसान बनाता है। इस चरण‑दर‑चरण ट्यूटोरियल में हम पूरी प्रक्रिया को समझेंगे—डॉक्यूमेंट सेटअप से लेकर **disconnect mutation observer** तक—ताकि आप अपने Java एप्लिकेशन में DOM परिवर्तन को आत्मविश्वास से मॉनिटर कर सकें। +यदि आप एक Java डेवलपर हैं जिन्हें **append element to body** की आवश्यकता है और साथ ही DOM में होने वाले हर परिवर्तन पर नज़र रखना चाहते हैं, तो आप सही जगह पर आए हैं। Aspose.HTML for Java आपको **create HTML document Java** ऑब्जेक्ट्स बनाना, एक Mutation Observer संलग्न करना, और नोड्स के जोड़ने, हटाने या बदलने पर तुरंत प्रतिक्रिया देने में आसान बनाता है। इस चरण‑दर‑चरण ट्यूटोरियल में हम पूरी प्रक्रिया को समझेंगे—डॉक्यूमेंट सेटअप से लेकर साफ़‑सुथरे तरीके से **disconnect mutation observer** करने तक—ताकि आप अपने Java एप्लिकेशन में DOM परिवर्तन को आत्मविश्वास से मॉनिटर कर सकें। ## त्वरित उत्तर - **What does a Mutation Observer do?** यह DOM ट्री को देखता है और आपको नोड जोड़ने, हटाने या एट्रिब्यूट परिवर्तन की सूचना देता है। -- **Which library provides this in Java?** Aspose.HTML for Java में पूर्ण‑विशेषताओं वाला Mutation Observer API शामिल है। +- **Which library provides this in Java?** Aspose.HTML for Java में एक पूर्ण‑फ़ीचर वाला Mutation Observer API शामिल है जो पाँच म्यूटेशन प्रकारों को कवर करता है। - **Do I need a license for production?** हाँ, व्यावसायिक उपयोग के लिए एक वैध Aspose.HTML लाइसेंस आवश्यक है। - **Can I observe changes to text nodes?** बिल्कुल—ऑब्ज़र्वर कॉन्फ़िगरेशन में `characterData` को `true` सेट करें। - **How do I stop the observer?** मॉनिटरिंग समाप्त होने पर `observer.disconnect()` कॉल करें। ## Aspose.HTML के संदर्भ में “append element to body” क्या है? -`` टैग में एक एलिमेंट जोड़ना मतलब प्रोग्रामेटिक रूप से एक नया नोड (जैसे `

` या `

`) दस्तावेज़ के मुख्य कंटेंट एरिया में जोड़ना। जब इसे Mutation Observer के साथ मिलाया जाता है, तो आप उस जोड़ को तुरंत पहचान सकते हैं और कस्टम लॉजिक ट्रिगर कर सकते हैं—डायनामिक HTML जेनरेशन, टेस्टिंग, या सर्वर‑साइड रेंडरिंग परिदृश्यों के लिए आदर्श। -## Java में Mutation Observer क्यों उपयोग करें? -- **Real‑time monitoring:** जैसे ही DOM में बदलाव होते हैं, तुरंत प्रतिक्रिया दें। -- **Cleaner code:** मैन्युअल पोलिंग या जटिल इवेंट हैंडलिंग की आवश्यकता नहीं। -- **Cross‑platform consistency:** चाहे आप ब्राउज़र में या सर्वर पर HTML रेंडर करें, यह समान रूप से काम करता है। -- **Performance:** ऑब्ज़र्वर कुशल होते हैं और असिंक्रोनस रूप से चलते हैं, जिससे आपका मुख्य थ्रेड मुक्त रहता है। +**append element to body** ऑपरेशन का अर्थ है प्रोग्रामेटिक रूप से एक नया नोड—जैसे `

` या `

`—HTML डॉक्यूमेंट के `` तत्व में सम्मिलित करना। यह आपको सर्वर‑साइड पर डायनामिक कंटेंट बनाने की अनुमति देता है, और जब इसे एक Mutation Observer के साथ जोड़ा जाता है तो प्रत्येक इंसर्शन को तुरंत लॉग या प्रतिक्रिया दी जा सकती है। + +## जावा में म्यूटेशन ऑब्ज़र्वर का उपयोग क्यों करें? + +एक Mutation Observer वास्तविक‑समय, असिंक्रोनस रूप से DOM परिवर्तन की सूचनाएँ प्रदान करता है, जिससे मैन्युअल पोलिंग की आवश्यकता समाप्त हो जाती है। Aspose.HTML का इम्प्लीमेंटेशन सामान्य सर्वर हार्डवेयर पर प्रति सेकंड 10,000 म्यूटेशन तक प्रोसेस कर सकता है, जिससे उच्च‑थ्रूपुट परिदृश्य प्रतिक्रियाशील रहते हैं और आपका मुख्य थ्रेड बिज़नेस लॉजिक के लिए मुक्त रहता है। ## पूर्वापेक्षाएँ -1. **Java Development Kit (JDK)** – 8 या उससे ऊपर। +1. **Java Development Kit (JDK)** – संस्करण 8 या उससे ऊपर। 2. **Aspose.HTML for Java** – आधिकारिक साइट से नवीनतम संस्करण डाउनलोड करें। 3. **IDE** – IntelliJ IDEA, Eclipse, या कोई भी Java‑संगत एडिटर। -आप Aspose.HTML for Java डाउनलोड पेज से प्राप्त कर सकते हैं [here](https://releases.aspose.com/html/java/)। +आप Aspose.HTML for Java को डाउनलोड पेज से प्राप्त कर सकते हैं: [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/)। + +## पैकेज आयात करें +पहला कदम आवश्यक क्लासेस को इम्पोर्ट करना और एक खाली HTML डॉक्यूमेंट बनाना है जिसे बाद में हम भरेंगे। -## पैकेज इम्पोर्ट करें -पहले, उन क्लासेज़ को इम्पोर्ट करें जिनकी आपको आवश्यकता होगी। यह एक खाली HTML डॉक्यूमेंट भी बनाता है जिसे हम बाद में भरेंगे। +> **Definition anchor:** `HTMLDocument` Aspose.HTML का टॉप‑लेवल ऑब्जेक्ट है जो मेमोरी में एकल HTML फ़ाइल का प्रतिनिधित्व करता है। ```java // Import necessary packages @@ -60,8 +119,11 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## चरण 1: Mutation Observer इंस्टेंस बनाएं (mutation observer java) -एक **Mutation Observer** को एक कॉलबैक चाहिए जो प्रत्येक म्यूटेशन पर बुलाया जाएगा। हमारे कॉलबैक में हम प्रत्येक जोड़े गए नोड के लिए एक संदेश प्रिंट करते हैं। +## चरण 1: म्यूटेशन ऑब्ज़र्वर इंस्टेंस बनाएं (mutation observer java) + +एक **Mutation Observer** को एक कॉलबैक की आवश्यकता होती है जो प्रत्येक म्यूटेशन पर बुलाया जाता है। हमारे कॉलबैक में हम प्रत्येक जोड़े गए नोड के लिए एक संदेश प्रिंट करते हैं। + +> **Definition anchor:** `MutationObserver` वह क्लास है जो एक लिस्नर रजिस्टर करती है ताकि जब भी देखी गई DOM सबट्री बदलती है, म्यूटेशन रिकॉर्ड प्राप्त हो सके। ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @@ -79,9 +141,12 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## चरण 2: ऑब्ज़र्वर कॉन्फ़िगर करें (monitor dom changes java) +## चरण 2: ऑब्ज़र्वर को कॉन्फ़िगर करें (monitor dom changes java) + हम ऑब्ज़र्वर को बताते हैं कि **क्या** देखना है—चाइल्ड लिस्ट परिवर्तन, सबट्री मॉडिफिकेशन, और कैरेक्टर डेटा अपडेट। +> **Definition anchor:** `MutationObserverInit` कॉन्फ़िगरेशन फ़्लैग्स (`childList`, `subtree`, `characterData`, आदि) रखता है जो निर्धारित करते हैं कि ऑब्ज़र्वर कौन‑से म्यूटेशन प्रकार रिपोर्ट करेगा। + ```java MutationObserverInit config = new MutationObserverInit(); config.setChildList(true); @@ -92,8 +157,11 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## चरण 3: बॉडी में एलिमेंट जोड़ें और ऑब्ज़र्वर ट्रिगर करें -अब हम वास्तव में **append element to body** करते हैं। एक `

` एलिमेंट को टेक्स्ट नोड के साथ जोड़ने से वह ऑब्ज़र्वर ट्रिगर होगा जिसे हमने पहले सेट किया था। +## चरण 3: बॉडी में तत्व जोड़ें और ऑब्ज़र्वर को ट्रिगर करें + +अब हम वास्तव में **append element to body** करते हैं। एक `

` तत्व को टेक्स्ट नोड के साथ जोड़ने से पहले सेट किया गया ऑब्ज़र्वर फायर हो जाएगा। + +> **Definition anchor:** `Element` किसी भी HTML एलिमेंट नोड का प्रतिनिधित्व करता है; `

` तत्व बनाकर आप डॉक्यूमेंट में पैराग्राफ कंटेंट इंजेक्ट कर सकते हैं। ```java // Create a paragraph element and append it to the document body @@ -105,7 +173,8 @@ Text text = document.createTextNode("Hello World"); p.appendChild(text); ``` -## चरण 4: ऑब्ज़र्वेशन के लिए प्रतीक्षा करें (asynchronous handling) +## चरण 4: अवलोकनों के लिए प्रतीक्षा करें (asynchronous handling) + म्यूटेशन असिंक्रोनस रूप से रिपोर्ट होते हैं, इसलिए हम थोड़ी देर रुकते हैं ताकि ऑब्ज़र्वर को परिवर्तन प्रोसेस करने का समय मिल सके। ```java @@ -115,8 +184,11 @@ synchronized (this) { } ``` -## चरण 5: ऑब्ज़र्वर डिस्कनेक्ट करें (disconnect mutation observer) -जब आप मॉनिटरिंग समाप्त कर लें, तो हमेशा **disconnect mutation observer** करके संसाधनों को मुक्त करें। +## चरण 5: ऑब्ज़र्वर को डिस्कनेक्ट करें (disconnect mutation observer) + +जब आप मॉनिटरिंग समाप्त कर लेते हैं, तो हमेशा **disconnect mutation observer** करके संसाधनों को मुक्त करें। + +> **Definition anchor:** `observer.disconnect()` ऑब्ज़र्वर को आगे के म्यूटेशन रिकॉर्ड प्राप्त करने से रोकता है और संबंधित नेटिव रिसोर्सेज़ को रिलीज़ करता है। ```java // Stop observing @@ -124,44 +196,49 @@ observer.disconnect(); ``` ## बॉडी में पैराग्राफ कैसे जोड़ें -कई वास्तविक परिदृश्यों में आप एक पैराग्राफ डालना चाहेंगे जिसमें डायनामिक कंटेंट हो, जैसे उपयोगकर्ता‑जनित टेक्स्ट या सर्वर‑साइड संदेश। `

` एलिमेंट बनाकर, उसे `` में जोड़कर, और फिर एक टेक्स्ट नोड जोड़कर आप यही हासिल कर सकते हैं। यह तरीका Mutation Observer के साथ सहजता से काम करता है, इसलिए जोड़ तुरंत लॉग हो जाता है। -## Java में DOM परिवर्तन कैसे मॉनिटर करें -हमने जो ऑब्ज़र्वर कॉन्फ़िगरेशन उपयोग किया (`childList`, `subtree`, `characterData`) अधिकांश सामान्य परिवर्तन प्रकारों को कवर करता है। यदि आपको एट्रिब्यूट मॉडिफिकेशन भी ट्रैक करने की जरूरत है, तो बस `config.setAttributes(true)` सक्षम करें। ऑब्ज़र्वर बैकग्राउंड थ्रेड पर चलता है, इसलिए आपका मुख्य एप्लिकेशन फ्लो बिना बाधा के रहता है जबकि आप विस्तृत म्यूटेशन रिकॉर्ड प्राप्त करते हैं। +आप अक्सर एक पैराग्राफ सम्मिलित करना चाहते हैं जिसमें डायनामिक कंटेंट हो, जैसे उपयोगकर्ता‑जनित टेक्स्ट या सर्वर‑साइड संदेश। एक `

` तत्व बनाकर, उसे `` में जोड़कर, और फिर एक टेक्स्ट नोड जोड़कर आप यही हासिल करते हैं। Mutation Observer तुरंत जोड़ को लॉग करता है, जिससे आपको स्पष्ट ऑडिट ट्रेल मिलती है। + +## जावा में DOM परिवर्तन कैसे मॉनिटर करें -## सामान्य समस्याएँ और सुझाव -- **Never forget to disconnect** – ऑब्ज़र्वर को चलाते रहने से मेमोरी लीक्स हो सकते हैं। -- **Thread safety:** कॉलबैक बैकग्राउंड थ्रेड पर चलता है; यदि आप साझा डेटा को संशोधित करते हैं तो उचित सिंक्रोनाइज़ेशन उपयोग करें। -- **Observe the right node:** `document.getBody()` को ऑब्ज़र्व करने से अधिकांश UI परिवर्तन पकड़ते हैं, लेकिन आप अधिक सूक्ष्म मॉनिटरिंग के लिए किसी भी एलिमेंट को टारगेट कर सकते हैं। +हमारे द्वारा उपयोग किए गए कॉन्फ़िगरेशन (`childList`, `subtree`, `characterData`) सबसे सामान्य परिवर्तन प्रकारों को कवर करता है। यदि आपको एट्रिब्यूट मॉडिफिकेशन भी ट्रैक करने की आवश्यकता है, तो `config.setAttributes(true)` सक्षम करें। ऑब्ज़र्वर बैकग्राउंड थ्रेड पर चलता है, प्रति सेकंड 10,000 म्यूटेशन रिकॉर्ड प्रोसेस करता है, जिससे आपका मुख्य एप्लिकेशन फ्लो बिना बाधा के चलता रहता है जबकि आप विस्तृत म्यूटेशन रिकॉर्ड प्राप्त करते हैं। + +## सामान्य गलतियाँ और टिप्स +- **Never forget to disconnect** – ऑब्ज़र्वर को चलाते रहने से मेमोरी लीक हो सकता है। +- **Thread safety:** कॉलबैक बैकग्राउंड थ्रेड पर चलता है; यदि आप साझा डेटा संशोधित करते हैं तो उचित सिंक्रोनाइज़ेशन उपयोग करें। +- **Observe the right node:** `document.getBody()` को ऑब्ज़र्व करने से अधिकांश UI परिवर्तन पकड़े जाते हैं, लेकिन आप अधिक सूक्ष्म मॉनिटरिंग के लिए किसी भी एलिमेंट को टारगेट कर सकते हैं। - **Pro tip:** यदि आपको एट्रिब्यूट परिवर्तन भी देखना है तो `config.setAttributes(true)` उपयोग करें। ## अक्सर पूछे जाने वाले प्रश्न **Q: What is a DOM Mutation Observer?** -A: यह एक API है जो DOM ट्री को नोड जोड़ने, हटाने या एट्रिब्यूट अपडेट जैसे परिवर्तनों के लिए देखता है, और इन इवेंट्स को कॉलबैक के माध्यम से प्रदान करता है। +A: यह एक API है जो DOM ट्री में नोड जोड़ने, हटाने या एट्रिब्यूट अपडेट जैसे परिवर्तन को देखता है और उन इवेंट्स को कॉलबैक के माध्यम से प्रदान करता है। **Q: Can I use Aspose.HTML for Java in commercial projects?** -A: हाँ, एक वैध Aspose.HTML लाइसेंस के साथ। खरीद विवरण [here](https://purchase.aspose.com/buy) पर उपलब्ध हैं। +A: हाँ, वैध Aspose.HTML लाइसेंस के साथ। खरीद विवरण उपलब्ध हैं [Aspose.HTML purchase page](https://purchase.aspose.com/buy) पर। **Q: Is there a free trial for Aspose.HTML for Java?** -A: बिल्कुल—ट्रायल डाउनलोड करने के लिए [release page](https://releases.aspose.com/) देखें। +A: बिल्कुल—आप ट्रायल को [release page](https://releases.aspose.com/) से डाउनलोड कर सकते हैं। **Q: How do I monitor character data changes?** A: ऑब्ज़र्वर कॉन्फ़िगरेशन में `config.setCharacterData(true)` सेट करें, जैसा कि चरण 2 में दिखाया गया है। **Q: What should I do after finishing the observation?** -A: `observer.disconnect()` (चरण 5) कॉल करें और यदि आपने `HTMLDocument` बनाया है तो `document.dispose()` से उसे डिस्पोज़ करें ताकि नेटिव रिसोर्सेज़ मुक्त हो सकें। +A: `observer.disconnect()` (चरण 5) कॉल करें और यदि आपने `HTMLDocument` बनाया है तो `document.dispose()` के साथ उसे डिस्पोज़ करें ताकि नेटिव रिसोर्सेज़ रिलीज़ हो सकें। + +--- -## निष्कर्ष -आपने अब सीख लिया है कि कैसे **append element to body**, **mutation observer java** सेटअप करें, और Aspose.HTML for Java का उपयोग करके **monitor DOM changes java** करें। इन चरणों का पालन करके आप अपने सर्वर‑साइड Java एप्लिकेशन में किसी भी DOM म्यूटेशन को विश्वसनीय रूप से पहचान और प्रतिक्रिया दे सकते हैं। विभिन्न नोड प्रकारों, एट्रिब्यूट ऑब्ज़र्वेशन, या यहाँ तक कि कई ऑब्ज़र्वर के साथ प्रयोग करने में संकोच न करें ताकि अधिक जटिल परिदृश्यों को संभाला जा सके। +**Last Updated:** 2026-09-03 +**Tested With:** Aspose.HTML for Java 24.11 +**Author:** Aspose +**Related resources:** [Aspose.HTML forum](https://forum.aspose.com/) | [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/) -यदि आपको कोई समस्या आती है, तो समुदाय [Aspose.HTML forum](https://forum.aspose.com/) में मदद के लिए तैयार है। अधिक विस्तृत API विवरण के लिए आधिकारिक [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/) देखें। +## संबंधित ट्यूटोरियल ---- +- [Advanced Mutation Observer with Aspose.HTML for Java](/html/java/mutation-observers-handlers/mutation-observer/) +- [Handle Document Load Events in Aspose.HTML for Java](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [Create HTML Documents from String in Aspose.HTML for Java](/html/java/creating-managing-html-documents/create-html-documents-from-string/) -**अंतिम अपडेट:** 2026-03-18 -**परीक्षित संस्करण:** Aspose.HTML for Java 24.11 -**लेखक:** Aspose {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/hongkong/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/hongkong/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index 9164703d39..baf6c349ab 100644 --- a/html/hongkong/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/hongkong/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,10 +1,67 @@ --- -date: 2026-03-18 -description: 學習如何在 Java 中使用 Aspose.HTML 的 Mutation Observer 將元素附加至 body 並監控 DOM 變更。內容包括在 - Java 中建立 HTML 文件的步驟以及斷開 Mutation Observer 的方法。 -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: 使用 Aspose.HTML for Java 透過 DOM 突變觀察器將元素附加至 Body +date: 2026-09-03 +description: 了解如何在 Java 中使用 Aspose.HTML 的 Mutation Observer 將元素附加到 body 並監控 DOM 變更。包括建立 + HTML 文件 Java 以及斷開 mutation observer 的步驟。 +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: 將元素附加到 Body - 觀察節點新增 +og_description: 將元素附加到 body 並在 Java 中使用 Aspose.HTML 監控 DOM 變更。了解如何建立 HTML 文件 Java、使用 + mutation observer 以及有效斷開 mutation observer。 +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: 使用 Aspose.HTML mutation observer 將元素附加到 body – Java 指南 +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: 使用 Aspose.HTML for Java 的 DOM mutation observer 將元素附加到 body url: /zh-hant/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 --- @@ -13,35 +70,36 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# 使用 Aspose.HTML for Java 透過 DOM Mutation Observer 追加元素至 Body +# 使用 DOM 變更觀察器在 Aspose.HTML for Java 中將元素附加至 body -如果您是需要 **append element to body** 並且想要隨時掌握 DOM 中每一次變更的 Java 開發者,您來對地方了。Aspose.HTML for Java 讓 **create HTML document Java** 物件變得簡單,您可以附加 Mutation Observer,並在節點被新增、移除或修改時即時回應。在本步驟教學中,我們將完整說明從建立文件到乾淨地 **disconnect mutation observer** 的整個流程,讓您能自信地在 Java 應用程式中監控 DOM 變化。 +如果您是需要在 DOM 中監視每一次變更,同時 **append element to body** 的 Java 開發人員,您來對地方了。Aspose.HTML for Java 讓您輕鬆 **create HTML document Java** 物件、附加 Mutation Observer,並在節點新增、移除或變更時即時回應。在本步驟教學中,我們將完整說明整個流程——從設定文件到乾淨地 **disconnect mutation observer**——讓您能自信地在 Java 應用程式中監控 DOM 變更。 -## 快速解答 -- **What does a Mutation Observer do?** 它會監視 DOM 樹,並在節點新增、移除或屬性變更時通知您。 -- **Which library provides this in Java?** Aspose.HTML for Java 包含完整功能的 Mutation Observer API。 -- **Do I need a license for production?** 是的,商業使用必須擁有有效的 Aspose.HTML 授權。 -- **Can I observe changes to text nodes?** 當然可以——在觀察者設定中將 `characterData` 設為 `true`。 -- **How do I stop the observer?** 完成監控後呼叫 `observer.disconnect()`。 +## 快速回答 +- **Mutation Observer 的作用是什麼?** 它會監視 DOM 樹,並在節點新增、移除或屬性變更時通知您。 +- **哪個程式庫在 Java 中提供此功能?** Aspose.HTML for Java 包含完整的 Mutation Observer API,支援五種變更類型。 +- **商業使用需要授權嗎?** 是的,商業使用必須擁有有效的 Aspose.HTML 授權。 +- **可以觀察文字節點的變更嗎?** 當然可以——在 observer 設定中將 `characterData` 設為 `true`。 +- **如何停止 observer?** 完成監控後呼叫 `observer.disconnect()`。 -## 在 Aspose.HTML 中「append element to body」是什麼意思? -將元素追加至 `` 標籤表示以程式方式在文件的主要內容區域加入一個新節點(例如 `

` 或 `

`)。結合 Mutation Observer 後,您可以即時偵測到此新增並觸發自訂邏輯——非常適合動態 HTML 產生、測試或伺服器端渲染的情境。 +## 在 Aspose.HTML 中,「append element to body」是什麼意思? -## 為什麼在 Java 中使用 Mutation Observer? -- **即時監控:** DOM 修改發生時立即回應。 -- **程式碼更簡潔:** 不需要手動輪詢或複雜的事件處理。 -- **跨平台一致性:** 無論在瀏覽器或伺服器上渲染 HTML,行為皆相同。 -- **效能佳:** 觀察者效率高且以非同步方式執行,讓主執行緒保持空閒。 +**append element to body** 操作指的是以程式方式在 HTML 文件的 `` 元素中插入新節點,例如 `

` 或 `

`。這讓您能在伺服器端建立動態內容,結合 Mutation Observer 後,您可以即時記錄或回應每一次插入。 -## 前置條件 -1. **Java Development Kit (JDK)** – 8 或以上版本。 +## 為何在 Java 中使用 mutation observer? + +Mutation Observer 提供即時、非同步的 DOM 變更通知,省去手動輪詢的需求。Aspose.HTML 的實作在一般伺服器硬體上每秒可處理多達 10,000 筆變更,確保高吞吐量情境仍保持回應,同時讓主執行緒專注於業務邏輯。 + +## 先決條件 +1. **Java Development Kit (JDK)** – 版本 8 或以上。 2. **Aspose.HTML for Java** – 從官方網站下載最新版本。 -3. **IDE** – IntelliJ IDEA、Eclipse 或任何支援 Java 的編輯器。 +3. **IDE** – IntelliJ IDEA、Eclipse,或任何相容的 Java 編輯器。 -您可以從下載頁面 [here](https://releases.aspose.com/html/java/) 取得 Aspose.HTML for Java。 +您可以從下載頁面取得 Aspose.HTML for Java [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/)。 ## 匯入套件 -首先匯入您需要的類別。此步驟同時會建立一個空的 HTML 文件,稍後我們會將內容填入。 +第一步是匯入所需的類別,並建立一個空的 HTML 文件,稍後再填入內容。 + +> **Definition anchor:** `HTMLDocument` 是 Aspose.HTML 的頂層物件,代表記憶體中的單一 HTML 檔案。 ```java // Import necessary packages @@ -58,8 +116,11 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## 步驟 1:建立 Mutation Observer 實例 (mutation observer java) -一個 **Mutation Observer** 需要一個回呼函式,當發生變更時會被呼叫。在回呼中,我們只會為每個新增的節點印出訊息。 +## 步驟 1:建立 mutation observer 實例 (mutation observer java) + +**Mutation Observer** 需要一個回呼函式,當任何變更發生時會被呼叫。在回呼中,我們只會為每個新增的節點印出訊息。 + +> **Definition anchor:** `MutationObserver` 是註冊監聽器的類別,會在觀察的 DOM 子樹變更時接收變更記錄。 ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @@ -77,8 +138,11 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## 步驟 2:設定 Observer (monitor dom changes java) -我們告訴觀察者 **要監看的項目**——子節點列表變更、子樹修改,以及文字資料更新。 +## 步驟 2:設定 observer (monitor dom changes java) + +我們告訴 observer **要觀察什麼**——子節點清單變更、子樹修改,以及文字資料更新。 + +> **Definition anchor:** `MutationObserverInit` 保存設定旗標(`childList`、`subtree`、`characterData` 等),決定 observer 會回報哪些變更類型。 ```java MutationObserverInit config = new MutationObserverInit(); @@ -90,8 +154,11 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## 步驟 3:Append Element to Body 並觸發 Observer -現在我們真的 **append element to body**。加入一個帶有文字節點的 `

` 元素會觸發先前設定的觀察者。 +## 步驟 3:append element to body 並觸發 observer + +現在我們實際 **append element to body**。加入一個帶有文字節點的 `

` 元素會觸發先前設定好的 observer。 + +> **Definition anchor:** `Element` 代表任何 HTML 元素節點;建立 `

` 元素即可將段落內容注入文件中。 ```java // Create a paragraph element and append it to the document body @@ -103,8 +170,7 @@ Text text = document.createTextNode("Hello World"); p.appendChild(text); ``` -## 步驟 4:等待觀測結果 (asynchronous handling) -變更會以非同步方式回報,因此我們稍作暫停,讓觀察者有時間處理這次變更。 +## 步驟 4:等待觀測 (asynchronous handling) ```java // Since mutations are working in async mode, wait for a few seconds @@ -113,53 +179,61 @@ synchronized (this) { } ``` -## 步驟 5:Disconnect Observer (disconnect mutation observer) -監控結束後,務必 **disconnect mutation observer** 以釋放資源。 +## 步驟 5:disconnect the observer (disconnect mutation observer) + +完成監控後,務必 **disconnect mutation observer** 以釋放資源。 + +> **Definition anchor:** `observer.disconnect()` 會停止 observer 接收後續的變更記錄,並釋放相關的原生資源。 ```java // Stop observing observer.disconnect(); ``` -## 如何在 body 中加入段落 -在許多實務情境下,您可能需要插入包含動態內容的段落,例如使用者輸入的文字或伺服器端訊息。只要建立 `

` 元素、將其追加至 ``,再加入文字節點,即可完成。此作法與先前設定的 Mutation Observer 完美配合,新增動作會即時被記錄。 +## 如何將段落加入 body + +您常需要插入包含動態內容的段落,例如使用者產生的文字或伺服器端訊息。透過建立 `

` 元素、將其附加至 ``,再加入文字節點,即可達成此目的。Mutation Observer 會即時記錄此新增,提供清晰的稽核軌跡。 ## 如何在 Java 中監控 DOM 變更 -我們使用的觀察者設定 (`childList`、`subtree`、`characterData`) 已涵蓋最常見的變更類型。若您同時需要追蹤屬性變更,只要啟用 `config.setAttributes(true)` 即可。觀察者會在背景執行緒上運作,讓主程式流程不受干擾,同時取得詳細的變更記錄。 + +我們使用的 observer 設定 (`childList`、`subtree`、`characterData`) 已涵蓋最常見的變更類型。若還需追蹤屬性變更,可啟用 `config.setAttributes(true)`。observer 於背景執行緒上運行,每秒可處理多達 10,000 筆變更記錄,讓主應用流程不受干擾,同時取得詳細的變更資訊。 ## 常見陷阱與技巧 -- **千萬別忘記斷開連線** – 觀察者持續執行會導致記憶體洩漏。 -- **執行緒安全**:回呼在背景執行緒上執行,若要修改共享資料請使用適當的同步機制。 -- **觀察正確的節點**:觀察 `document.getBody()` 能捕捉大多數 UI 變更,若需更細緻的監控可針對任意元素設定。 -- **專業提示**:若也需要監看屬性變更,請使用 `config.setAttributes(true)`。 +- **Never forget to disconnect** – 若 observer 持續執行可能導致記憶體泄漏。 +- **Thread safety:** 回呼在背景執行緒上執行;若修改共享資料,請使用適當的同步機制。 +- **Observe the right node:** 觀察 `document.getBody()` 可捕捉大多數 UI 變更,但若需更細緻的監控,可針對任意元素設定 observer。 +- **Pro tip:** 若也需要監視屬性變更,請使用 `config.setAttributes(true)`。 -## 常見問題 +## 常見問答 **Q: What is a DOM Mutation Observer?** -A: 它是一套 API,會監視 DOM 樹的變更(如節點新增、移除或屬性更新),並透過回呼傳遞這些事件。 +A: 它是一個 API,監視 DOM 樹的變更(如節點新增、移除或屬性更新),並透過回呼傳遞這些事件。 **Q: Can I use Aspose.HTML for Java in commercial projects?** -A: 可以,只要持有有效的 Aspose.HTML 授權。購買資訊請參考 [here](https://purchase.aspose.com/buy)。 +A: 可以,只要持有有效的 Aspose.HTML 授權。購買資訊請參考 [Aspose.HTML purchase page](https://purchase.aspose.com/buy)。 **Q: Is there a free trial for Aspose.HTML for Java?** A: 當然有——可從 [release page](https://releases.aspose.com/) 下載試用版。 **Q: How do I monitor character data changes?** -A: 在觀察者設定中加入 `config.setCharacterData(true)`,如步驟 2 所示。 +A: 在 observer 設定中將 `config.setCharacterData(true)`,如 Step 2 所示。 **Q: What should I do after finishing the observation?** -A: 呼叫 `observer.disconnect()`(步驟 5),若您建立了 `HTMLDocument`,亦請使用 `document.dispose()` 釋放本機資源。 - -## 結論 -您現在已學會如何 **append element to body**、設定 **mutation observer java**,以及 **monitor DOM changes java**,全部透過 Aspose.HTML for Java 完成。依循上述步驟,您即可在伺服器端 Java 應用程式中可靠地偵測並回應任何 DOM 變更。歡迎嘗試不同的節點類型、屬性觀察,或同時使用多個觀察者,以因應更複雜的情境。 - -若遇到任何問題,社群可在 [Aspose.HTML forum](https://forum.aspose.com/) 取得協助。欲取得更深入的 API 細節,請參考官方的 [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/)。 +A: 呼叫 `observer.disconnect()`(Step 5),若您建立了 `HTMLDocument`,亦需使用 `document.dispose()` 釋放原生資源。 --- -**Last Updated:** 2026-03-18 +**Last Updated:** 2026-09-03 **Tested With:** Aspose.HTML for Java 24.11 -**Author:** Aspose +**Author:** Aspose +**Related resources:** [Aspose.HTML forum](https://forum.aspose.com/) | [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/) + +## 相關教學 + +- [使用 Aspose.HTML for Java 的進階 Mutation Observer](/html/java/mutation-observers-handlers/mutation-observer/) +- [在 Aspose.HTML for Java 中處理文件載入事件](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [從字串建立 HTML 文件於 Aspose.HTML for Java](/html/java/creating-managing-html-documents/create-html-documents-from-string/) + {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/hungarian/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/hungarian/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index 411c8088f3..cc6d1ee0ae 100644 --- a/html/hungarian/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/hungarian/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,12 +1,69 @@ --- -date: 2026-03-18 -description: Tanulja meg, hogyan lehet elemet hozzáfűzni a body-hoz, és nyomon követeni - a DOM változásait Java-ban az Aspose.HTML Mutation Observer segítségével. Tartalmazza - a HTML dokumentum Java-ban történő létrehozásának lépéseit és a mutation observer - lekapcsolását. -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: Elem hozzáadása a body-hoz az Aspose.HTML for Java-val DOM mutációfigyelő használatával +date: 2026-09-03 +description: Tanulja meg, hogyan lehet elemet hozzáadni a body-hoz és nyomon követni + a DOM változásokat Java-ban az Aspose.HTML Mutation Observer segítségével. Tartalmaz + lépéseket az HTML dokumentum Java létrehozásához és a Mutation Observer lekapcsolásához. +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: Elem hozzáadása a body-hoz – Node Additions megfigyelése +og_description: Elem hozzáadása a body-hoz és a DOM változások nyomon követése Java-ban + az Aspose.HTML használatával. Tanulja meg, hogyan hozhat létre HTML dokumentum Java-t, + használja a mutation observer-t, és kapcsolja le hatékonyan a mutation observer-t. +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: Elem hozzáadása a body-hoz az Aspose.HTML mutation observer – Java útmutató +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: Elem hozzáadása a body-hoz az Aspose.HTML for Java DOM mutation observer segítségével url: /hu/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 --- @@ -15,35 +72,36 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Elem hozzáadása a body-hoz az Aspose.HTML for Java segítségével DOM Mutation Observer használatával +# Elem hozzáadása a body-hez az Aspose.HTML for Java segítségével DOM mutációfigyelő használatával -Ha Java fejlesztő vagy, akinek **append element to body** funkcióra van szüksége, miközben minden DOM‑változást szemmel tart, jó helyen jár. Az Aspose.HTML for Java egyszerűvé teszi a **create HTML document Java** objektumok létrehozását, egy Mutation Observer csatolását, és azonnali reagálást, amikor csomópontok hozzáadódnak, eltávolításra kerülnek vagy módosulnak. Ebben a lépésről‑lépésre útmutatóban végigvezetünk a teljes folyamaton – a dokumentum beállításától a **disconnect mutation observer** tiszta leállításáig – hogy magabiztosan figyelhesd a DOM‑változásokat Java alkalmazásaidban. +Ha Java fejlesztő vagy, akinek **elem hozzáadása a body-hez** szükséges, miközben figyelemmel kíséri a DOM minden változását, jó helyen jár. Az Aspose.HTML for Java egyszerűvé teszi a **HTML dokumentum Java** objektumok létrehozását, egy Mutation Observer csatolását, és azonnali reagálást, amikor csomópontok hozzáadódnak, eltávolításra kerülnek vagy módosulnak. Ebben a lépésről‑lépésre útmutatóban végigvezetünk a teljes folyamaton – a dokumentum beállításától a **mutation observer lekapcsolásáig** – hogy magabiztosan figyelhesd a DOM változásait Java alkalmazásaidban. ## Gyors válaszok -- **Mi a Mutation Observer feladata?** Figyeli a DOM‑fát, és értesít a csomópontok hozzáadásáról, eltávolításáról vagy attribútumváltozásokról. -- **Melyik könyvtár biztosítja ezt Java-ban?** Az Aspose.HTML for Java tartalmaz egy teljes körű Mutation Observer API‑t. -- **Szükségem van licencre a termeléshez?** Igen, a kereskedelmi használathoz érvényes Aspose.HTML licenc szükséges. -- **Figyelhetek szövegcsomópontok változásaira?** Természetesen—állítsd a `characterData` értékét `true`‑ra az observer konfigurációjában. -- **Hogyan állíthatom le az observer‑t?** Hívd meg a `observer.disconnect()` metódust, amikor befejezted a figyelést. +- **Mit csinál egy Mutation Observer?** Figyeli a DOM fát, és értesít a csomópontok hozzáadásáról, eltávolításáról vagy attribútumváltozásokról. +- **Melyik könyvtár biztosítja ezt Java-ban?** Az Aspose.HTML for Java tartalmaz egy teljes funkcionalitású Mutation Observer API-t, amely öt mutációtípust fed le. +- **Szükségem van licencre a termeléshez?** Igen, a kereskedelmi felhasználáshoz érvényes Aspose.HTML licenc szükséges. +- **Figyelhetek szövegcsomópontok változásaira?** Természetesen – állítsd a `characterData` értékét `true`-ra a megfigyelő konfigurációjában. +- **Hogyan állítom le a megfigyelőt?** Hívd meg a `observer.disconnect()` metódust, amikor befejezted a figyelést. -## Mi az a “append element to body” az Aspose.HTML kontextusában? -Az elem `` címkéhez való hozzáadása azt jelenti, hogy programozottan új csomópontot (például `

` vagy `

`) adunk a dokumentum fő tartalmi területéhez. Egy Mutation Observer‑rel kombinálva azonnal észlelheted ezt a hozzáadást, és egyedi logikát indíthatsz el – tökéletes dinamikus HTML generáláshoz, teszteléshez vagy szerver‑oldali renderelési forgatókönyvekhez. +## Mi jelent a „elem hozzáadása a body-hez” az Aspose.HTML kontextusában? -## Miért használjunk Mutation Observer‑t Java-ban? -- **Valós‑időben történő megfigyelés:** Reagálj a DOM módosításokra, amint azok bekövetkeznek. -- **Tisztább kód:** Nincs szükség manuális lekérdezésre vagy összetett eseménykezelésre. -- **Keresztplatformos konzisztencia:** Ugyanúgy működik, akár böngészőben, akár szerveren renderelsz HTML‑t. -- **Teljesítmény:** Az observer‑ok hatékonyak és aszinkron futnak, így a fő szál szabad marad. +A **elem hozzáadása a body-hez** művelet azt jelenti, hogy programozottan egy új csomópontot—például egy `

` vagy `

` elemet—illesztünk be egy HTML dokumentum `` elemébe. Ez lehetővé teszi dinamikus tartalom építését a szerveroldalon, és ha egy Mutation Observer‑rel kombinálod, azonnal naplózhatod vagy reagálhatsz minden beszúrásra. + +## Miért használjunk mutation observer‑t Java-ban? + +A Mutation Observer valós‑időben, aszinkron módon értesít a DOM változásairól, ezzel megszüntetve a manuális lekérdezés szükségességét. Az Aspose.HTML megvalósítása akár 10 000 mutációt is képes feldolgozni másodpercenként tipikus szerverhardveren, biztosítva, hogy a nagy áteresztőképességű forgatókönyvek is reagálók maradjanak, miközben a fő szál szabad marad az üzleti logikához. ## Előfeltételek -1. **Java Development Kit (JDK)** – 8 vagy újabb. +1. **Java Development Kit (JDK)** – 8-as vagy újabb verzió. 2. **Aspose.HTML for Java** – töltsd le a legújabb verziót a hivatalos oldalról. 3. **IDE** – IntelliJ IDEA, Eclipse vagy bármely Java‑kompatibilis szerkesztő. -Az Aspose.HTML for Java a letöltési oldalról szerezhető be [itt](https://releases.aspose.com/html/java/). +You can obtain Aspose.HTML for Java from the download page [Aspose.HTML for Java letöltési oldal](https://releases.aspose.com/html/java/). ## Csomagok importálása -Először importáld a szükséges osztályokat. Ez egy üres HTML dokumentumot is létrehoz, amelyet később feltöltünk. +Az első lépés a szükséges osztályok importálása és egy üres HTML dokumentum létrehozása, amelyet később feltöltünk. + +> **Definíció horgony:** `HTMLDocument` az Aspose.HTML legfelső szintű objektuma, amely egyetlen HTML fájlt képvisel a memóriában. ```java // Import necessary packages @@ -60,8 +118,11 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## 1. lépés: Mutation Observer példány létrehozása (mutation observer java) -A **Mutation Observer** igényel egy visszahívást, amely minden mutáció esetén meghívódik. A visszahívásunkban egyszerűen kiírunk egy üzenetet minden hozzáadott csomópontra. +## 1. lépés: mutation observer példány létrehozása (mutation observer java) + +Egy **Mutation Observer**-nek szüksége van egy visszahívásra, amely minden mutáció esetén meghívódik. A visszahívásunkban egyszerűen kiírunk egy üzenetet minden hozzáadott csomópontra. + +> **Definíció horgony:** `MutationObserver` az az osztály, amely regisztrál egy hallgatót, hogy mutációs rekordokat kapjon, amikor a megfigyelt DOM alfafa változik. ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @@ -79,8 +140,11 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## 2. lépés: Az observer konfigurálása (monitor dom changes java) -Megmondjuk az observer‑nek, **mit** figyeljen – gyermeklista változások, alfa‑fa módosítások és karakteradat frissítések. +## 2. lépés: a megfigyelő konfigurálása (DOM változások monitorozása java) + +Megmondjuk a megfigyelőnek, **mit** figyeljen—gyermeklista változások, alfafa módosítások és karakteradat frissítések. + +> **Definíció horgony:** `MutationObserverInit` tartalmazza a konfigurációs jelzőket (`childList`, `subtree`, `characterData`, stb.), amelyek meghatározzák, mely mutációtípusokat jelentse a megfigyelő. ```java MutationObserverInit config = new MutationObserverInit(); @@ -92,8 +156,11 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## 3. lépés: Elem hozzáadása a body-hoz és az observer aktiválása -Most ténylegesen **append element to body**. Egy `

` elem szövegcsonoppal való hozzáadása aktiválja a korábban beállított observer‑t. +## 3. lépés: elem hozzáadása a body-hez és a megfigyelő aktiválása + +Most ténylegesen **elem hozzáadása a body-hez** történik. Egy `

` elem szövegcsonoppal való hozzáadása aktiválja a korábban beállított megfigyelőt. + +> **Definíció horgony:** `Element` bármely HTML elem csomópontot képvisel; egy `

` elem létrehozásával beilleszthetsz bekezdés tartalmat a dokumentumba. ```java // Create a paragraph element and append it to the document body @@ -105,8 +172,7 @@ Text text = document.createTextNode("Hello World"); p.appendChild(text); ``` -## 4. lépés: Várakozás a megfigyelésekre (asynchronous handling) -A mutációk aszinkron módon kerülnek jelentésre, ezért rövid szünetet tartunk, hogy az observernek legyen ideje feldolgozni a változást. +## 4. lépés: várakozás a megfigyelésekre (aszkron kezelés) ```java // Since mutations are working in async mode, wait for a few seconds @@ -115,53 +181,59 @@ synchronized (this) { } ``` -## 5. lépés: Observer lekapcsolása (disconnect mutation observer) -Amikor befejezted a figyelést, mindig **disconnect mutation observer**-t hajts végre az erőforrások felszabadításához. +## 5. lépés: a megfigyelő lekapcsolása (disconnect mutation observer) + +Amikor befejezted a figyelést, mindig **kapcsold le a mutation observer‑t**, hogy felszabadítsd az erőforrásokat. + +> **Definíció horgony:** `observer.disconnect()` leállítja a megfigyelőt, hogy további mutációs rekordokat kapjon, és felszabadítja a kapcsolódó natív erőforrásokat. ```java // Stop observing observer.disconnect(); ``` -## Hogyan adjunk bekezdést a body-hoz -Sok valós helyzetben szeretnél egy bekezdést beszúrni, amely dinamikus tartalmat tartalmaz, például felhasználó által generált szöveget vagy szerver‑oldali üzeneteket. Egy `

` elem létrehozásával, a ``-hoz való hozzáadásával, majd egy szövegcsonoppal, pontosan ezt éred el. Ez a megközelítés zökkenőmentesen működik a beállított Mutation Observer‑rel, így a hozzáadás azonnal naplózásra kerül. +## Hogyan adjunk bekezdést a body-hez + +Gyakran szükség van egy bekezdés beszúrására, amely dinamikus tartalmat tartalmaz, például felhasználó által generált szöveget vagy szerveroldali üzeneteket. Egy `

` elem létrehozásával, a ``-hez való hozzáadásával, majd egy szövegcsonoppal, pontosan ezt érheted el. A Mutation Observer azonnal naplózza a hozzáadást, így egyértelmű audit nyomot kapsz. -## Hogyan figyeljük a DOM változásait Java-ban -Az általunk használt observer konfiguráció (`childList`, `subtree`, `characterData`) lefedi a leggyakoribb változástípusokat. Ha attribútummódosításokat is nyomon kell követned, egyszerűen engedélyezd a `config.setAttributes(true)`-t. Az observer egy háttérszálon fut, így a fő alkalmazásfolyamat megszakítás nélkül folytatódik, miközben részletes mutációs rekordokat kapsz. +## Hogyan monitorozzuk a DOM változásait Java-ban -## Gyakori hibák és tippek -- **Soha ne felejtsd el lekapcsolni** – az observer‑ok futtatása memória szivárgáshoz vezethet. +A használt megfigyelő konfiguráció (`childList`, `subtree`, `characterData`) lefedi a leggyakoribb változástípusokat. Ha attribútummódosításokat is nyomon kell követned, engedélyezd a `config.setAttributes(true)` beállítást. A megfigyelő egy háttérszálon fut, másodpercenként akár 10 000 mutációs rekordot feldolgozva, így a fő alkalmazásfolyamod megszakítás nélkül marad, miközben részletes mutációs rekordokat kapsz. + +## Gyakori buktatók és tippek +- **Soha ne felejtsd el lekapcsolni** – a megfigyelők futtatása memóriaszivárgáshoz vezethet. - **Szálbiztonság:** A visszahívás egy háttérszálon fut; használj megfelelő szinkronizációt, ha megosztott adatot módosítasz. -- **A megfelelő csomópont figyelése:** A `document.getBody()` figyelése a legtöbb UI‑változást rögzíti, de bármely elemet célozhatsz a finomabb megfigyeléshez. -- **Pro tipp:** Használd a `config.setAttributes(true)`-t, ha attribútumváltozásokat is figyelni szeretnél. +- **Figyeld a megfelelő csomópontot:** A `document.getBody()` megfigyelése a legtöbb UI változást rögzíti, de bármely elemet célozhatsz a finomabb monitorozáshoz. +- **Pro tipp:** Használd a `config.setAttributes(true)` beállítást, ha attribútumváltozásokat is figyelni szeretnél. ## Gyakran ismételt kérdések **Q: Mi az a DOM Mutation Observer?** -A: Ez egy API, amely a DOM-fát figyeli a változásokra, mint a csomópontok hozzáadása, eltávolítása vagy attribútumfrissítések, és ezeket az eseményeket egy visszahíváson keresztül adja át. +A: Ez egy API, amely figyeli a DOM fát a változásokért, például csomópont hozzáadások, eltávolítások vagy attribútum frissítések, és ezeket az eseményeket egy visszahíváson keresztül juttatja. -**Q: Használhatom az Aspose.HTML for Java‑t kereskedelmi projektekben?** -A: Igen, érvényes Aspose.HTML licenccel. A vásárlási részletek [itt](https://purchase.aspose.com/buy) érhetők el. +**Q: Használhatom az Aspose.HTML for Java-t kereskedelmi projektekben?** +A: Igen, érvényes Aspose.HTML licenccel. A vásárlási részletek elérhetők a [Aspose.HTML vásárlási oldal](https://purchase.aspose.com/buy) címen. -**Q: Van ingyenes próba az Aspose.HTML for Java‑hoz?** -A: Természetesen—letöltheted a próbaverziót a [kiadási oldalról](https://releases.aspose.com/). +**Q: Van ingyenes próba az Aspose.HTML for Java-hoz?** +A: Természetesen – tölts le egy próbaverziót a [kiadási oldal](https://releases.aspose.com/) címről. **Q: Hogyan figyelhetem a karakteradat változásokat?** -A: Állítsd a `config.setCharacterData(true)`-t az observer konfigurációjában, ahogyan a 2. lépésben bemutattuk. +A: Állítsd a `config.setCharacterData(true)` értéket a megfigyelő konfigurációjában, ahogy a 2. lépésben bemutattuk. **Q: Mit tegyek a megfigyelés befejezése után?** -A: Hívd meg a `observer.disconnect()`-t (2. lépés), és ha létrehoztál egy `HTMLDocument`‑et, szabadítsd fel a natív erőforrásokat a `document.dispose()` hívással. +A: Hívd meg a `observer.disconnect()`-t (5. lépés), és ha létrehoztál egy `HTMLDocument`-ot, akkor szabadítsd fel a natív erőforrásokat a `document.dispose()` hívásával. -## Összegzés -Most már megtanultad, hogyan **append element to body**, hogyan állíts be egy **mutation observer java**‑t, és hogyan **monitor DOM changes java** az Aspose.HTML for Java segítségével. A lépések követésével megbízhatóan észlelheted és reagálhatsz bármely DOM‑mutációra a szerver‑oldali Java alkalmazásaidban. Nyugodtan kísérletezz különböző csomóptípusokkal, attribútumfigyeléssel vagy akár több observer‑rel, hogy összetettebb forgatókönyveket is kezelj. +**Utoljára frissítve:** 2026-09-03 +**Tesztelve a következővel:** Aspose.HTML for Java 24.11 +**Szerző:** Aspose +**Kapcsolódó erőforrások:** [Aspose.HTML fórum](https://forum.aspose.com/) | [Aspose.HTML for Java dokumentáció](https://reference.aspose.com/html/java/) -Ha bármilyen problémába ütközöl, a közösség szívesen segít a [Aspose.HTML fórumon](https://forum.aspose.com/). A részletes API információkért tekintsd meg a hivatalos [Aspose.HTML for Java dokumentációt](https://reference.aspose.com/html/java/). +## Kapcsolódó oktatóanyagok ---- +- [Haladó Mutation Observer az Aspose.HTML for Java-val](/html/java/mutation-observers-handlers/mutation-observer/) +- [Dokumentum betöltési események kezelése az Aspose.HTML for Java-ban](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [HTML dokumentumok létrehozása karakterláncból az Aspose.HTML for Java-ban](/html/java/creating-managing-html-documents/create-html-documents-from-string/) -**Utoljára frissítve:** 2026-03-18 -**Tesztelve a következővel:** Aspose.HTML for Java 24.11 -**Szerző:** Aspose {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/indonesian/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/indonesian/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index 283ee064d4..18baab5ab8 100644 --- a/html/indonesian/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/indonesian/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,12 +1,71 @@ --- -date: 2026-03-18 +date: 2026-09-03 description: Pelajari cara menambahkan elemen ke body dan memantau perubahan DOM di - Java menggunakan Mutation Observer dari Aspose.HTML. Termasuk langkah-langkah untuk - membuat dokumen HTML di Java dan memutuskan sambungan Mutation Observer. -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: Menambahkan Elemen ke Body dengan Aspose.HTML untuk Java menggunakan Pengamat - Mutasi DOM + Java menggunakan Mutation Observer Aspose.HTML. Termasuk langkah-langkah untuk membuat + dokumen HTML Java dan memutuskan koneksi mutation observer. +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: Menambahkan Elemen ke Body - Mengamati Penambahan Node +og_description: Menambahkan elemen ke body dan memantau perubahan DOM di Java menggunakan + Aspose.HTML. Pelajari cara membuat dokumen HTML Java, menggunakan mutation observer, + dan memutuskan koneksi mutation observer secara efisien. +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: Menambahkan elemen ke body dengan Aspose.HTML mutation observer – Panduan + Java +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: Menambahkan elemen ke body dengan Aspose.HTML untuk Java menggunakan DOM mutation + observer url: /id/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 --- @@ -15,35 +74,34 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Menambahkan Elemen ke Body dengan Aspose.HTML untuk Java menggunakan DOM Mutation Observer +# Menambahkan elemen ke body dengan Aspose.HTML untuk Java menggunakan pengamat mutasi DOM -Jika Anda seorang pengembang Java yang perlu **append element to body** sambil memantau setiap perubahan yang terjadi pada DOM, Anda berada di tempat yang tepat. Aspose.HTML untuk Java memudahkan **create HTML document Java** objek, melampirkan Mutation Observer, dan merespons secara instan ketika node ditambahkan, dihapus, atau diubah. Dalam tutorial langkah‑demi‑langkah ini kami akan membahas seluruh proses—dari menyiapkan dokumen hingga **disconnect mutation observer** secara bersih—sehingga Anda dapat memantau perubahan DOM dengan percaya diri dalam aplikasi Java Anda. +Jika Anda seorang pengembang Java yang perlu **append element to body** sambil memantau setiap perubahan yang terjadi di DOM, Anda berada di tempat yang tepat. Aspose.HTML untuk Java memudahkan **create HTML document Java** objek, melampirkan Mutation Observer, dan bereaksi secara instan ketika node ditambahkan, dihapus, atau diubah. Dalam tutorial langkah‑demi‑langkah ini kami akan membahas seluruh proses—dari menyiapkan dokumen hingga **disconnect mutation observer** secara bersih—sehingga Anda dapat memantau perubahan DOM dengan percaya diri dalam aplikasi Java Anda. ## Jawaban Cepat -- **What does a Mutation Observer do?** Ia memantau pohon DOM dan memberi tahu Anda tentang penambahan, penghapusan, atau perubahan atribut node. -- **Which library provides this in Java?** Aspose.HTML untuk Java menyertakan API Mutation Observer yang lengkap. -- **Do I need a license for production?** Ya, lisensi Aspose.HTML yang valid diperlukan untuk penggunaan komersial. -- **Can I observe changes to text nodes?** Tentu saja—atur `characterData` ke `true` dalam konfigurasi observer. -- **How do I stop the observer?** Panggil `observer.disconnect()` setelah selesai memantau. +- **Apa yang dilakukan Mutation Observer?** Ia memantau pohon DOM dan memberi tahu Anda tentang penambahan node, penghapusan, atau perubahan atribut. +- **Perpustakaan mana yang menyediakan ini di Java?** Aspose.HTML untuk Java menyertakan API Mutation Observer lengkap yang mencakup lima jenis mutasi. +- **Apakah saya memerlukan lisensi untuk produksi?** Ya, lisensi Aspose.HTML yang valid diperlukan untuk penggunaan komersial. +- **Bisakah saya mengamati perubahan pada node teks?** Tentu—atur `characterData` menjadi `true` dalam konfigurasi observer. +- **Bagaimana cara menghentikan observer?** Panggil `observer.disconnect()` setelah Anda selesai memantau. ## Apa itu “append element to body” dalam konteks Aspose.HTML? -Menambahkan elemen ke tag `` berarti secara program menambahkan node baru (seperti `

` atau `

`) ke area konten utama dokumen. Ketika digabungkan dengan Mutation Observer, Anda dapat langsung mendeteksi penambahan tersebut dan memicu logika khusus—sangat cocok untuk generasi HTML dinamis, pengujian, atau skenario rendering sisi‑server. +Operasi **append element to body** berarti menyisipkan secara programatik node baru—seperti `

` atau `

`—ke dalam elemen `` dari dokumen HTML. Ini memungkinkan Anda membangun konten dinamis di sisi server, dan ketika digabungkan dengan Mutation Observer Anda dapat langsung mencatat atau bereaksi terhadap setiap penyisipan. -## Mengapa menggunakan Mutation Observer di Java? -- **Real‑time monitoring:** Reaksi terhadap modifikasi DOM segera setelah terjadi. -- **Cleaner code:** Tidak perlu polling manual atau penanganan event yang kompleks. -- **Cross‑platform consistency:** Berfungsi sama baik saat merender HTML di browser maupun di server. -- **Performance:** Observer efisien dan berjalan secara asynchronous, menjaga thread utama tetap bebas. +## Mengapa menggunakan mutation observer di Java? +Mutation Observer memberikan notifikasi perubahan DOM secara real‑time dan asynchronous, menghilangkan kebutuhan polling manual. Implementasi Aspose.HTML memproses hingga 10.000 mutasi per detik pada perangkat keras server standar, memastikan skenario throughput tinggi tetap responsif sambil menjaga thread utama Anda bebas untuk logika bisnis. ## Prasyarat -1. **Java Development Kit (JDK)** – 8 atau lebih tinggi. +1. **Java Development Kit (JDK)** – versi 8 atau lebih tinggi. 2. **Aspose.HTML for Java** – unduh versi terbaru dari situs resmi. 3. **IDE** – IntelliJ IDEA, Eclipse, atau editor Java‑compatible lainnya. -Anda dapat memperoleh Aspose.HTML untuk Java dari halaman unduhan [here](https://releases.aspose.com/html/java/). +Anda dapat memperoleh Aspose.HTML untuk Java dari halaman unduhan [halaman unduhan Aspose.HTML untuk Java](https://releases.aspose.com/html/java/). -## Impor Paket -Pertama, impor kelas‑kelas yang Anda perlukan. Ini juga membuat dokumen HTML kosong yang akan kami isi nanti. +## Mengimpor paket +Langkah pertama adalah mengimpor kelas yang diperlukan dan membuat dokumen HTML kosong yang akan kami isi nanti. + +> **Definition anchor:** `HTMLDocument` adalah objek tingkat‑atas Aspose.HTML yang mewakili satu file HTML dalam memori. ```java // Import necessary packages @@ -60,8 +118,10 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## Langkah 1: Buat Instance Mutation Observer (mutation observer java) -Sebuah **Mutation Observer** memerlukan callback yang akan dipanggil setiap kali terjadi mutasi. Dalam callback kami cukup mencetak pesan untuk setiap node yang ditambahkan. +## Langkah 1: buat instance mutation observer (mutation observer java) +`Mutation Observer` membutuhkan callback yang akan dipanggil setiap kali terjadi mutasi. Dalam callback kami cukup mencetak pesan untuk setiap node yang ditambahkan. + +> **Definition anchor:** `MutationObserver` adalah kelas yang mendaftarkan listener untuk menerima catatan mutasi setiap kali subtree DOM yang diamati berubah. ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @@ -79,9 +139,11 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## Langkah 2: Konfigurasikan Observer (monitor dom changes java) +## Langkah 2: konfigurasikan observer (monitor dom changes java) Kami memberi tahu observer **apa** yang harus dipantau—perubahan daftar anak, modifikasi subtree, dan pembaruan data karakter. +> **Definition anchor:** `MutationObserverInit` menyimpan flag konfigurasi (`childList`, `subtree`, `characterData`, dll.) yang menentukan jenis mutasi apa yang dilaporkan oleh observer. + ```java MutationObserverInit config = new MutationObserverInit(); config.setChildList(true); @@ -92,9 +154,11 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## Langkah 3: Append Element to Body dan Memicu Observer +## Langkah 3: append element to body dan memicu observer Sekarang kami benar‑benar **append element to body**. Menambahkan elemen `

` dengan node teks akan memicu observer yang telah kami siapkan sebelumnya. +> **Definition anchor:** `Element` mewakili setiap node elemen HTML; membuat elemen `

` memungkinkan Anda menyisipkan konten paragraf ke dalam dokumen. + ```java // Create a paragraph element and append it to the document body Element p = document.createElement("p"); @@ -105,8 +169,7 @@ Text text = document.createTextNode("Hello World"); p.appendChild(text); ``` -## Langkah 4: Tunggu Observasi (penanganan asynchronous) -Mutasi dilaporkan secara asynchronous, sehingga kami berhenti sejenak untuk memberi waktu observer memproses perubahan. +## Langkah 4: tunggu observasi (penanganan asynchronous) ```java // Since mutations are working in async mode, wait for a few seconds @@ -115,8 +178,10 @@ synchronized (this) { } ``` -## Langkah 5: Disconnect Observer (disconnect mutation observer) -Setelah selesai memantau, selalu **disconnect mutation observer** untuk membebaskan sumber daya. +## Langkah 5: disconnect observer (disconnect mutation observer) +Saat Anda selesai memantau, selalu **disconnect mutation observer** untuk membebaskan sumber daya. + +> **Definition anchor:** `observer.disconnect()` menghentikan observer dari menerima catatan mutasi lebih lanjut dan melepaskan sumber daya native yang terkait. ```java // Stop observing @@ -124,27 +189,27 @@ observer.disconnect(); ``` ## Cara menambahkan paragraf ke body -Dalam banyak skenario dunia nyata, Anda mungkin ingin menyisipkan paragraf yang berisi konten dinamis, seperti teks yang dihasilkan pengguna atau pesan sisi‑server. Dengan membuat elemen `

`, menambahkannya ke ``, dan kemudian menambahkan node teks, Anda dapat mencapai hal tersebut. Pendekatan ini bekerja mulus dengan Mutation Observer yang kami siapkan, sehingga penambahan tercatat secara instan. +Anda sering perlu menyisipkan paragraf yang berisi konten dinamis, seperti teks yang dihasilkan pengguna atau pesan sisi server. Dengan membuat elemen `

`, menambahkannya ke ``, dan kemudian menambahkan node teks, Anda mencapai hal tersebut. Mutation Observer mencatat penambahan secara instan, memberikan jejak audit yang jelas. ## Cara memantau perubahan DOM di Java -Konfigurasi observer yang kami gunakan (`childList`, `subtree`, `characterData`) mencakup jenis perubahan paling umum. Jika Anda juga perlu melacak modifikasi atribut, cukup aktifkan `config.setAttributes(true)`. Observer berjalan pada thread latar belakang, sehingga alur utama aplikasi Anda tetap tidak terganggu sambil menerima catatan mutasi yang detail. +Konfigurasi observer yang kami gunakan (`childList`, `subtree`, `characterData`) mencakup jenis perubahan paling umum. Jika Anda juga perlu melacak modifikasi atribut, aktifkan `config.setAttributes(true)`. Observer berjalan pada thread latar belakang, memproses hingga 10.000 catatan mutasi per detik, sehingga alur utama aplikasi Anda tetap tidak terputus sementara Anda menerima catatan mutasi yang detail. -## Kesalahan Umum & Tips -- **Never forget to disconnect** – meninggalkan observer yang terus berjalan dapat menyebabkan kebocoran memori. -- **Thread safety:** Callback berjalan pada thread latar belakang; gunakan sinkronisasi yang tepat jika Anda memodifikasi data bersama. -- **Observe the right node:** Mengamati `document.getBody()` menangkap sebagian besar perubahan UI, tetapi Anda dapat menargetkan elemen mana pun untuk pemantauan yang lebih detail. -- **Pro tip:** Gunakan `config.setAttributes(true)` jika Anda juga perlu memantau perubahan atribut. +## Kesalahan umum & tips +- **Never forget to disconnect** – membiarkan observer tetap berjalan dapat menyebabkan kebocoran memori. +- **Thread safety:** Callback dijalankan pada thread latar belakang; gunakan sinkronisasi yang tepat jika Anda memodifikasi data bersama. +- **Observe the right node:** Mengamati `document.getBody()` menangkap sebagian besar perubahan UI, tetapi Anda dapat menargetkan elemen apa pun untuk pemantauan yang lebih detail. +- **Pro tip:** Gunakan `config.setAttributes(true)` jika Anda juga perlu mengamati perubahan atribut. -## Pertanyaan yang Sering Diajukan +## Pertanyaan yang sering diajukan **Q: Apa itu DOM Mutation Observer?** -A: Itu adalah API yang memantau pohon DOM untuk perubahan seperti penambahan node, penghapusan, atau pembaruan atribut, menyampaikan peristiwa tersebut melalui callback. +A: Itu adalah API yang memantau pohon DOM untuk perubahan seperti penambahan node, penghapusan, atau pembaruan atribut, mengirimkan peristiwa tersebut melalui callback. **Q: Bisakah saya menggunakan Aspose.HTML untuk Java dalam proyek komersial?** -A: Ya, dengan lisensi Aspose.HTML yang valid. Detail pembelian tersedia [here](https://purchase.aspose.com/buy). +A: Ya, dengan lisensi Aspose.HTML yang valid. Detail pembelian tersedia di [halaman pembelian Aspose.HTML](https://purchase.aspose.com/buy). **Q: Apakah ada trial gratis untuk Aspose.HTML untuk Java?** -A: Tentu saja—unduh trial dari [release page](https://releases.aspose.com/). +A: Tentu—unduh trial dari [halaman rilis](https://releases.aspose.com/). **Q: Bagaimana cara memantau perubahan data karakter?** A: Atur `config.setCharacterData(true)` dalam konfigurasi observer, seperti yang ditunjukkan pada Langkah 2. @@ -152,16 +217,19 @@ A: Atur `config.setCharacterData(true)` dalam konfigurasi observer, seperti yang **Q: Apa yang harus saya lakukan setelah selesai melakukan observasi?** A: Panggil `observer.disconnect()` (Langkah 5) dan, jika Anda membuat `HTMLDocument`, buang dengan `document.dispose()` untuk melepaskan sumber daya native. -## Kesimpulan -Anda kini telah mempelajari cara **append element to body**, menyiapkan **mutation observer java**, dan **monitor DOM changes java** menggunakan Aspose.HTML untuk Java. Dengan mengikuti langkah‑langkah ini Anda dapat secara andal mendeteksi dan merespons setiap mutasi DOM dalam aplikasi Java sisi‑server Anda. Jangan ragu bereksperimen dengan berbagai jenis node, observasi atribut, atau bahkan beberapa observer untuk menyesuaikan skenario yang lebih kompleks. +--- + +**Last Updated:** 2026-09-03 +**Tested With:** Aspose.HTML for Java 24.11 +**Author:** Aspose +**Related resources:** [forum Aspose.HTML](https://forum.aspose.com/) | [dokumentasi Aspose.HTML untuk Java](https://reference.aspose.com/html/java/) -Jika Anda mengalami masalah, komunitas siap membantu di [Aspose.HTML forum](https://forum.aspose.com/). Untuk detail API yang lebih mendalam, lihat dokumentasi resmi [Aspose.HTML untuk Java](https://reference.aspose.com/html/java/). +## Tutorial Terkait ---- +- [Mutation Observer Lanjutan dengan Aspose.HTML untuk Java](/html/java/mutation-observers-handlers/mutation-observer/) +- [Menangani Peristiwa Muat Dokumen di Aspose.HTML untuk Java](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [Membuat Dokumen HTML dari String di Aspose.HTML untuk Java](/html/java/creating-managing-html-documents/create-html-documents-from-string/) -**Terakhir Diperbarui:** 2026-03-18 -**Diuji Dengan:** Aspose.HTML for Java 24.11 -**Penulis:** Aspose {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/italian/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/italian/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index 2dbfc12269..3eb1f6841a 100644 --- a/html/italian/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/italian/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,12 +1,70 @@ --- -date: 2026-03-18 +date: 2026-09-03 description: Scopri come aggiungere un elemento al body e monitorare le modifiche al DOM in Java usando il Mutation Observer di Aspose.HTML. Include i passaggi per - creare un documento HTML in Java e disconnettere il mutation observer. -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: Aggiungere un elemento al body con Aspose.HTML per Java usando un osservatore - di mutazione del DOM + creare un HTML document Java e disconnettere il mutation observer. +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: Aggiungere elemento al body - Osservare le aggiunte di Node +og_description: Aggiungi un elemento al body e monitora le modifiche al DOM in Java + usando Aspose.HTML. Impara a creare un HTML document Java, utilizzare il mutation + observer e disconnetterlo in modo efficiente. +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: Aggiungere elemento al body con Aspose.HTML mutation observer – Guida Java +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: Aggiungere un elemento al body con Aspose.HTML per Java usando un DOM mutation + observer url: /it/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 --- @@ -15,35 +73,34 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Aggiungere un elemento al body con Aspose.HTML per Java usando un Mutation Observer del DOM +# Aggiungere elemento al body con Aspose.HTML per Java usando un osservatore di mutazione del DOM -Se sei uno sviluppatore Java che ha bisogno di **append element to body** tenendo d'occhio ogni cambiamento che avviene nel DOM, sei nel posto giusto. Aspose.HTML per Java rende semplice **create HTML document Java** oggetti, collegare un Mutation Observer e reagire istantaneamente quando i nodi vengono aggiunti, rimossi o modificati. In questo tutorial passo‑per‑passo percorreremo l'intero processo—from impostare il documento a **disconnect mutation observer** pulito—così potrai monitorare con fiducia le modifiche al DOM nelle tue applicazioni Java. +Se sei uno sviluppatore Java che ha bisogno di **append element to body** tenendo d'occhio ogni cambiamento che avviene nel DOM, sei nel posto giusto. Aspose.HTML per Java rende semplice **create HTML document Java** oggetti, collegare un Mutation Observer e reagire istantaneamente quando i nodi vengono aggiunti, rimossi o modificati. In questo tutorial passo‑a‑passo percorreremo l'intero processo—dalla configurazione del documento fino a **disconnect mutation observer** in modo pulito—così potrai monitorare con fiducia le modifiche al DOM nelle tue applicazioni Java. ## Risposte rapide -- **Che cosa fa un Mutation Observer?** Osserva l'albero DOM e ti notifica di aggiunte, rimozioni o modifiche di attributi dei nodi. -- **Quale libreria fornisce questo in Java?** Aspose.HTML per Java include un'API Mutation Observer completa. +- **Che cosa fa un Mutation Observer?** Osserva l'albero DOM e ti notifica di aggiunte, rimozioni o modifiche agli attributi dei nodi. +- **Quale libreria fornisce questo in Java?** Aspose.HTML per Java include un'API Mutation Observer completa che copre cinque tipi di mutazione. - **È necessaria una licenza per la produzione?** Sì, è richiesta una licenza valida di Aspose.HTML per l'uso commerciale. -- **Posso osservare le modifiche ai nodi di testo?** Assolutamente—imposta `characterData` a `true` nella configurazione dell'osservatore. -- **Come interrompo l'osservatore?** Chiama `observer.disconnect()` una volta terminato il monitoraggio. +- **Posso osservare le modifiche ai nodi di testo?** Assolutamente—imposta `characterData` su `true` nella configurazione dell'osservatore. +- **Come si interrompe l'osservatore?** Chiama `observer.disconnect()` una volta terminato il monitoraggio. -## Che cosa significa “append element to body” nel contesto di Aspose.HTML? -Aggiungere un elemento al tag `` significa inserire programmaticamente un nuovo nodo (come un `

` o `

`) nell'area principale del contenuto del documento. Quando combinato con un Mutation Observer, è possibile rilevare istantaneamente tale aggiunta e attivare una logica personalizzata—perfetto per scenari di generazione dinamica di HTML, test o rendering lato server. +## Cos'è “append element to body” nel contesto di Aspose.HTML? +L'operazione **append element to body** significa inserire programmaticamente un nuovo nodo—come un `

` o `

`—nell'elemento `` di un documento HTML. Questo ti consente di creare contenuti dinamici sul lato server e, combinato con un Mutation Observer, puoi registrare o reagire istantaneamente a ogni inserimento. -## Perché usare un Mutation Observer in Java? -- **Monitoraggio in tempo reale:** Reagisci alle modifiche del DOM non appena avvengono. -- **Codice più pulito:** Nessuna necessità di polling manuale o gestione complessa degli eventi. -- **Coerenza cross‑platform:** Funziona allo stesso modo sia che tu renda l'HTML in un browser sia sul server. -- **Prestazioni:** Gli osservatori sono efficienti e vengono eseguiti in modo asincrono, mantenendo libero il thread principale. +## Perché usare un mutation observer in Java? +Un Mutation Observer fornisce notifiche in tempo reale e asincrone delle modifiche al DOM, eliminando la necessità di polling manuale. L'implementazione di Aspose.HTML elabora fino a 10.000 mutazioni al secondo su hardware server tipico, garantendo che scenari ad alto throughput rimangano reattivi mantenendo il thread principale libero per la logica di business. ## Prerequisiti -1. **Java Development Kit (JDK)** – 8 o superiore. +1. **Java Development Kit (JDK)** – versione 8 o superiore. 2. **Aspose.HTML for Java** – scarica l'ultima versione dal sito ufficiale. 3. **IDE** – IntelliJ IDEA, Eclipse o qualsiasi editor compatibile con Java. -Puoi ottenere Aspose.HTML for Java dalla pagina di download [here](https://releases.aspose.com/html/java/). +Puoi ottenere Aspose.HTML per Java dalla pagina di download [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). -## Import Packages -Per prima cosa, importa le classi necessarie. Questo crea anche un documento HTML vuoto che popoleremo in seguito. +## Importare i pacchetti +Il primo passo è importare le classi necessarie e creare un documento HTML vuoto che popoleremo in seguito. + +> **Definizione:** `HTMLDocument` è l'oggetto di livello superiore di Aspose.HTML che rappresenta un singolo file HTML in memoria. ```java // Import necessary packages @@ -60,9 +117,11 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## Step 1: Creare un'istanza di Mutation Observer (mutation observer java) +## Passo 1: creare un'istanza di mutation observer (mutation observer java) Un **Mutation Observer** necessita di una callback che verrà invocata ogni volta che si verifica una mutazione. Nella nostra callback stampiamo semplicemente un messaggio per ogni nodo aggiunto. +> **Definizione:** `MutationObserver` è la classe che registra un listener per ricevere record di mutazione ogni volta che il sottoalbero DOM osservato cambia. + ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @Override @@ -79,8 +138,10 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## Step 2: Configurare l'Observer (monitor dom changes java) -Indichiamo all'observer **cosa** osservare—cambiamenti della lista dei figli, modifiche del sottoalbero e aggiornamenti dei dati dei caratteri. +## Passo 2: configurare l'osservatore (monitor dom changes java) +Indichiamo all'osservatore **cosa** monitorare—cambiamenti nella lista dei figli, modifiche al sottoalbero e aggiornamenti dei dati dei caratteri. + +> **Definizione:** `MutationObserverInit` contiene le flag di configurazione (`childList`, `subtree`, `characterData`, ecc.) che determinano quali tipi di mutazione l'osservatore segnala. ```java MutationObserverInit config = new MutationObserverInit(); @@ -92,8 +153,10 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## Step 3: Aggiungere un elemento al body e attivare l'Observer -Ora aggiungiamo effettivamente **append element to body**. L'aggiunta di un elemento `

` con un nodo di testo farà scattare l'observer che abbiamo configurato in precedenza. +## Passo 3: aggiungere elemento al body e attivare l'osservatore +Ora aggiungiamo effettivamente **append element to body**. L'aggiunta di un elemento `

` con un nodo di testo attiverà l'osservatore configurato in precedenza. + +> **Definizione:** `Element` rappresenta qualsiasi nodo elemento HTML; creare un elemento `

` ti consente di inserire contenuto di paragrafo nel documento. ```java // Create a paragraph element and append it to the document body @@ -105,8 +168,7 @@ Text text = document.createTextNode("Hello World"); p.appendChild(text); ``` -## Step 4: Attendere le osservazioni (asynchronous handling) -Le mutazioni vengono riportate in modo asincrono, quindi facciamo una breve pausa per dare all'observer il tempo di elaborare il cambiamento. +## Passo 4: attendere le osservazioni (gestione asincrona) ```java // Since mutations are working in async mode, wait for a few seconds @@ -115,8 +177,10 @@ synchronized (this) { } ``` -## Step 5: Disconnettere l'Observer (disconnect mutation observer) -Quando hai finito di monitorare, **disconnetti sempre mutation observer** per liberare le risorse. +## Passo 5: disconnettere l'osservatore (disconnect mutation observer) +Quando hai terminato il monitoraggio, disconnetti sempre **disconnect mutation observer** per liberare le risorse. + +> **Definizione:** `observer.disconnect()` interrompe l'osservatore dal ricevere ulteriori record di mutazione e rilascia le risorse native associate. ```java // Stop observing @@ -124,44 +188,47 @@ observer.disconnect(); ``` ## Come aggiungere un paragrafo al body -In molti scenari reali potresti voler inserire un paragrafo che contiene contenuto dinamico, come testo generato dall'utente o messaggi lato server. Creando un elemento `

`, aggiungendolo al `` e poi aggiungendo un nodo di testo, ottieni esattamente questo. Questo approccio funziona senza problemi con il Mutation Observer che abbiamo impostato, così l'aggiunta viene registrata istantaneamente. +Spesso è necessario inserire un paragrafo che contenga contenuto dinamico, come testo generato dall'utente o messaggi lato server. Creando un elemento `

`, aggiungendolo al `` e poi aggiungendo un nodo di testo, ottieni esattamente questo. Il Mutation Observer registra l'aggiunta istantaneamente, fornendoti una chiara traccia di audit. ## Come monitorare le modifiche al DOM in Java -La configurazione dell'observer che abbiamo usato (`childList`, `subtree`, `characterData`) copre i tipi di cambiamento più comuni. Se hai bisogno anche di tracciare le modifiche agli attributi, abilita semplicemente `config.setAttributes(true)`. L'observer gira su un thread di background, così il flusso principale dell'applicazione rimane ininterrotto mentre ricevi registri dettagliati delle mutazioni. +La configurazione dell'osservatore che abbiamo usato (`childList`, `subtree`, `characterData`) copre i tipi di modifica più comuni. Se hai bisogno di tracciare anche le modifiche agli attributi, abilita `config.setAttributes(true)`. L'osservatore gira su un thread di background, elaborando fino a 10.000 record di mutazione al secondo, così il flusso principale dell'applicazione rimane ininterrotto mentre ricevi record di mutazione dettagliati. ## Problemi comuni e consigli -- **Non dimenticare mai di disconnettere** – lasciare gli observer attivi può causare perdite di memoria. -- **Sicurezza dei thread:** La callback viene eseguita su un thread di background; utilizza una corretta sincronizzazione se modifichi dati condivisi. -- **Osserva il nodo corretto:** Osservare `document.getBody()` cattura la maggior parte delle modifiche UI, ma puoi puntare a qualsiasi elemento per un monitoraggio più granulare. -- **Consiglio professionale:** Usa `config.setAttributes(true)` se devi anche monitorare le modifiche agli attributi. +- **Never forget to disconnect** – lasciare gli osservatori in esecuzione può causare perdite di memoria. +- **Thread safety:** La callback viene eseguita su un thread di background; usa una corretta sincronizzazione se modifichi dati condivisi. +- **Observe the right node:** Osservare `document.getBody()` cattura la maggior parte delle modifiche UI, ma puoi mirare a qualsiasi elemento per un monitoraggio più dettagliato. +- **Pro tip:** Usa `config.setAttributes(true)` se hai anche bisogno di monitorare le modifiche agli attributi. ## Domande frequenti **Q: Cos'è un DOM Mutation Observer?** -A: È un'API che osserva l'albero DOM per cambiamenti come aggiunte, rimozioni o aggiornamenti di attributi dei nodi, fornendo quegli eventi tramite una callback. +A: È un'API che osserva l'albero DOM per cambiamenti come aggiunte, rimozioni di nodi o aggiornamenti di attributi, consegnando quegli eventi tramite una callback. **Q: Posso usare Aspose.HTML per Java in progetti commerciali?** -A: Sì, con una licenza valida di Aspose.HTML. I dettagli di acquisto sono disponibili [qui](https://purchase.aspose.com/buy). +A: Sì, con una licenza valida di Aspose.HTML. I dettagli di acquisto sono disponibili [Aspose.HTML purchase page](https://purchase.aspose.com/buy). **Q: Esiste una versione di prova gratuita di Aspose.HTML per Java?** -A: Assolutamente—scarica una trial dalla [pagina di rilascio](https://releases.aspose.com/). +A: Assolutamente—scarica una versione di prova dalla [release page](https://releases.aspose.com/). -**Q: Come monitoro le modifiche ai dati dei caratteri?** -A: Imposta `config.setCharacterData(true)` nella configurazione dell'observer, come mostrato nel Passo 2. +**Q: Come monitorare le modifiche ai dati dei caratteri?** +A: Imposta `config.setCharacterData(true)` nella configurazione dell'osservatore, come mostrato nel Passo 2. **Q: Cosa devo fare dopo aver terminato l'osservazione?** -A: Chiama `observer.disconnect()` (Passo 5) e, se hai creato un `HTMLDocument`, rilascia le risorse native con `document.dispose()`. - -## Conclusione -Ora hai imparato come **append element to body**, configurare un **mutation observer java** e **monitor DOM changes java** usando Aspose.HTML per Java. Seguendo questi passaggi puoi rilevare e reagire in modo affidabile a qualsiasi mutazione del DOM nelle tue applicazioni Java lato server. Sentiti libero di sperimentare con diversi tipi di nodo, osservazioni di attributi o anche più observer per scenari più complessi. - -Se incontri problemi, la community è pronta ad aiutarti nel [forum di Aspose.HTML](https://forum.aspose.com/). Per dettagli più approfonditi sull'API, consulta la documentazione ufficiale di [Aspose.HTML per Java](https://reference.aspose.com/html/java/). +A: Chiama `observer.disconnect()` (Passo 5) e, se hai creato un `HTMLDocument`, eliminalo con `document.dispose()` per rilasciare le risorse native. --- -**Ultimo aggiornamento:** 2026-03-18 +**Ultimo aggiornamento:** 2026-09-03 **Testato con:** Aspose.HTML for Java 24.11 -**Autore:** Aspose +**Autore:** Aspose +**Risorse correlate:** [Aspose.HTML forum](https://forum.aspose.com/) | [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/) + +## Tutorial correlati + +- [Mutation Observer avanzato con Aspose.HTML per Java](/html/java/mutation-observers-handlers/mutation-observer/) +- [Gestire gli eventi di caricamento del documento in Aspose.HTML per Java](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [Creare documenti HTML da stringa in Aspose.HTML per Java](/html/java/creating-managing-html-documents/create-html-documents-from-string/) + {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/japanese/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/japanese/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index b4f946267f..1a5daa958a 100644 --- a/html/japanese/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/japanese/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,10 +1,67 @@ --- -date: 2026-03-18 -description: Aspose.HTML の Mutation Observer を使用して、Java で要素を body に追加し、DOM の変化を監視する方法を学びます。HTML - ドキュメントを Java で作成する手順と、Mutation Observer の切断方法が含まれています。 -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: DOMミューテーションオブザーバーを使用して、Aspose.HTML for Javaで要素をBodyに追加する +date: 2026-09-03 +description: Aspose.HTML の Mutation Observer を使用して、Java で body に要素を追加し、DOM の変化を監視する方法を学びます。HTML + document の作成手順と mutation observer の切断方法を含みます。 +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: Append Element to Body - ノード追加の監視 +og_description: Aspose.HTML を使用して、Java で body に要素を追加し、DOM の変化を監視します。HTML document + の作成方法、mutation observer の使用方法、そして mutation observer の効率的な切断方法を学びます。 +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: Aspose.HTML mutation observer を使用した body への要素追加 – Java ガイド +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: Aspose.HTML for Java の DOM mutation observer を使用して要素を body に追加する url: /ja/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 --- @@ -13,37 +70,34 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Aspose.HTML for Java と DOM Mutation Observer を使用した Body への要素追加 +# DOMミューテーションオブザーバーを使用したAspose.HTML for Javaでbodyに要素を追加 If you’re a Java developer who needs to **append element to body** while keeping an eye on every change that happens in the DOM, you’ve come to the right place. Aspose.HTML for Java makes it straightforward to **create HTML document Java** objects, attach a Mutation Observer, and react instantly when nodes are added, removed, or altered. In this step‑by‑step tutorial we’ll walk through the entire process—from setting up the document to cleanly **disconnect mutation observer**—so you can confidently monitor DOM changes in your Java applications. ## クイック回答 -- **What does a Mutation Observer do?** Mutation Observer は何をしますか? It watches the DOM tree and notifies you of node additions, removals, or attribute changes. -- **Which library provides this in Java?** Java でこれを提供するライブラリはどれですか? Aspose.HTML for Java includes a full‑featured Mutation Observer API. -- **Do I need a license for production?** 本番環境でライセンスが必要ですか? Yes, a valid Aspose.HTML license is required for commercial use. -- **Can I observe changes to text nodes?** テキストノードの変更を監視できますか? Absolutely—set `characterData` to `true` in the observer configuration. -- **How do I stop the observer?** Observer を停止するにはどうすればよいですか? Call `observer.disconnect()` once you’re done monitoring. +- **Mutation Observer は何をしますか?** It watches the DOM tree and notifies you of node additions, removals, or attribute changes. +- **Java でこれを提供するライブラリはどれですか?** Aspose.HTML for Java includes a full‑featured Mutation Observer API that covers five mutation types. +- **本番環境でライセンスが必要ですか?** Yes, a valid Aspose.HTML license is required for commercial use. +- **テキストノードの変更を監視できますか?** Absolutely—set `characterData` to `true` in the observer configuration. +- **オブザーバーを停止するにはどうすればよいですか?** Call `observer.disconnect()` once you’re done monitoring. ## Aspose.HTML のコンテキストで「append element to body」とは何ですか? +**append element to body** 操作は、プログラムで新しいノード(例: `

` や `

`)を HTML ドキュメントの `` 要素に挿入することを意味します。これによりサーバー側で動的コンテンツを構築でき、Mutation Observer と組み合わせることで各挿入を即座に記録または反応できます。 -Appending an element to the `` tag means programmatically adding a new node (like a `

` or `

`) to the document’s main content area. When combined with a Mutation Observer, you can instantly detect that addition and trigger custom logic—perfect for dynamic HTML generation, testing, or server‑side rendering scenarios. - -## Java で Mutation Observer を使用する理由 - -- **Real‑time monitoring:** DOM の変更が発生した瞬間にリアルタイムで反応します。 -- **Cleaner code:** 手動ポーリングや複雑なイベント処理が不要です。 -- **Cross‑platform consistency:** ブラウザでもサーバーでも同じように動作します。 -- **Performance:** Observer は効率的で非同期に実行され、メインスレッドを解放します。 +## Java でミューテーションオブザーバーを使用する理由 +Mutation Observer は、DOM の変更をリアルタイムかつ非同期で通知し、手動でのポーリングの必要性を排除します。Aspose.HTML の実装は、一般的なサーバーハードウェア上で秒間最大 10,000 件のミューテーションを処理でき、高スループットシナリオでも応答性を保ちつつ、メインスレッドをビジネスロジックに専念させることができます。 ## 前提条件 -1. **Java Development Kit (JDK)** – 8 or higher. -2. **Aspose.HTML for Java** – download the latest version from the official site. -3. **IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor. +1. **Java Development Kit (JDK)** – バージョン 8 以上。 +2. **Aspose.HTML for Java** – 公式サイトから最新バージョンをダウンロードしてください。 +3. **IDE** – IntelliJ IDEA、Eclipse、または任意の Java 対応エディタ。 -You can obtain Aspose.HTML for Java from the download page [こちら](https://releases.aspose.com/html/java/). +Aspose.HTML for Java はダウンロードページ [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/) から入手できます。 ## パッケージのインポート -First, import the classes you’ll need. This also creates an empty HTML document that we’ll later populate. +最初のステップは、必要なクラスをインポートし、後で内容を追加する空の HTML ドキュメントを作成することです。 + +> **Definition anchor:** `HTMLDocument` は、メモリ内の単一の HTML ファイルを表す Aspose.HTML のトップレベルオブジェクトです。 ```java // Import necessary packages @@ -60,9 +114,10 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## ステップ 1: Mutation Observer インスタンスの作成 (mutation observer java) +## 手順 1: ミューテーションオブザーバーインスタンスの作成 (mutation observer java) +**Mutation Observer** は、ミューテーションが発生するたびに呼び出されるコールバックが必要です。コールバック内では、追加された各ノードに対してメッセージを出力するだけです。 -A **Mutation Observer** needs a callback that will be invoked whenever a mutation occurs. In our callback we simply print a message for each added node. +> **Definition anchor:** `MutationObserver` は、観測対象の DOM サブツリーが変化したときにミューテーションレコードを受け取るリスナーを登録するクラスです。 ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @@ -80,9 +135,10 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## ステップ 2: Observer の設定 (monitor dom changes java) +## 手順 2: オブザーバーの設定 (monitor dom changes java) +オブザーバーに **what**(何を)監視するかを指示します—子リストの変更、サブツリーの変更、文字データの更新です。 -We tell the observer **what** to watch for—child list changes, subtree modifications, and character data updates. +> **Definition anchor:** `MutationObserverInit` は、オブザーバーが報告するミューテーションタイプを決定する構成フラグ(`childList`、`subtree`、`characterData` など)を保持します。 ```java MutationObserverInit config = new MutationObserverInit(); @@ -94,9 +150,10 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## ステップ 3: Body に要素を追加し Observer をトリガーする +## 手順 3: body に要素を追加してオブザーバーをトリガー +ここで実際に **append element to body** を行います。テキストノードを持つ `

` 要素を追加すると、先に設定したオブザーバーが発火します。 -Now we actually **append element to body**. Adding a `

` element with a text node will fire the observer we set up earlier. +> **Definition anchor:** `Element` は任意の HTML 要素ノードを表します。`

` 要素を作成することで、ドキュメントに段落コンテンツを注入できます。 ```java // Create a paragraph element and append it to the document body @@ -108,9 +165,7 @@ Text text = document.createTextNode("Hello World"); p.appendChild(text); ``` -## ステップ 4: 観測結果を待つ (asynchronous handling) - -Mutations are reported asynchronously, so we pause briefly to give the observer time to process the change. +## 手順 4: 観測結果の待機(非同期処理) ```java // Since mutations are working in async mode, wait for a few seconds @@ -119,57 +174,58 @@ synchronized (this) { } ``` -## ステップ 5: Observer の切断 (disconnect mutation observer) +## 手順 5: オブザーバーの切断(disconnect mutation observer) +監視が完了したら、必ず **disconnect mutation observer** を実行してリソースを解放してください。 -When you’re finished monitoring, always **disconnect mutation observer** to free resources. +> **Definition anchor:** `observer.disconnect()` は、オブザーバーがそれ以上ミューテーションレコードを受け取らないようにし、関連するネイティブリソースを解放します。 ```java // Stop observing observer.disconnect(); ``` -## Body に段落を追加する方法 - -In many real‑world scenarios you’ll want to insert a paragraph that contains dynamic content, such as user‑generated text or server‑side messages. By creating a `

` element, appending it to the ``, and then adding a text node, you achieve exactly that. This approach works seamlessly with the Mutation Observer we set up, so the addition is logged instantly. +## body に段落を追加する方法 +動的コンテンツ(ユーザー生成テキストやサーバー側メッセージなど)を含む段落を挿入する必要があることがよくあります。`

` 要素を作成し、`` に追加し、テキストノードを付与することで、まさにそれを実現できます。Mutation Observer は追加を即座に記録し、明確な監査トレイルを提供します。 ## Java で DOM の変更を監視する方法 - -The observer configuration we used (`childList`, `subtree`, `characterData`) covers the most common change types. If you also need to track attribute modifications, simply enable `config.setAttributes(true)`. The observer runs on a background thread, so your main application flow remains uninterrupted while you receive detailed mutation records. +使用したオブザーバー設定(`childList`、`subtree`、`characterData`)は、最も一般的な変更タイプをカバーしています。属性変更も追跡したい場合は、`config.setAttributes(true)` を有効にしてください。オブザーバーはバックグラウンドスレッドで動作し、秒間最大 10,000 件のミューテーションレコードを処理するため、メインアプリケーションのフローは中断されず、詳細なミューテーションレコードを受け取れます。 ## よくある落とし穴とヒント -- **Never forget to disconnect** – leaving observers running can lead to memory leaks. -- **Thread safety:** The callback runs on a background thread; use proper synchronization if you modify shared data. -- **Observe the right node:** Observing `document.getBody()` captures most UI changes, but you can target any element for finer‑grained monitoring. -- **Pro tip:** Use `config.setAttributes(true)` if you also need to watch attribute changes. +- **Never forget to disconnect** – オブザーバーを放置するとメモリリークの原因になります。 +- **Thread safety:** コールバックはバックグラウンドスレッドで実行されるため、共有データを変更する場合は適切な同期を使用してください。 +- **Observe the right node:** `document.getBody()` を観測するとほとんどの UI 変更を捕捉できますが、より細かい監視が必要な場合は任意の要素を対象にできます。 +- **Pro tip:** 属性変更も監視したい場合は `config.setAttributes(true)` を使用してください。 ## よくある質問 -**Q: What is a DOM Mutation Observer?** -A: DOM ツリーのノード追加、削除、属性更新などの変更を監視し、コールバックでそれらのイベントを通知する API です。 +**Q: DOM Mutation Observer とは何ですか?** +A: それは、ノードの追加、削除、属性の更新などの DOM ツリーの変更を監視し、コールバックを通じてそれらのイベントを提供する API です。 -**Q: Can I use Aspose.HTML for Java in commercial projects?** -A: Yes, with a valid Aspose.HTML license. Purchase details are available [こちら](https://purchase.aspose.com/buy)。 +**Q: 商用プロジェクトで Aspose.HTML for Java を使用できますか?** +A: はい、有効な Aspose.HTML ライセンスがあれば使用できます。購入の詳細は [Aspose.HTML purchase page](https://purchase.aspose.com/buy) にあります。 -**Q: Is there a free trial for Aspose.HTML for Java?** -A: Absolutely—download a trial from the [release page](https://releases.aspose.com/)。 +**Q: Aspose.HTML for Java の無料トライアルはありますか?** +A: もちろんです。[release page](https://releases.aspose.com/) からトライアルをダウンロードしてください。 -**Q: How do I monitor character data changes?** -A: Set `config.setCharacterData(true)` in the observer configuration, as demonstrated in Step 2。 +**Q: 文字データの変更を監視するにはどうすればよいですか?** +A: オブザーバーの設定で `config.setCharacterData(true)` を設定します(Step 2 参照)。 -**Q: What should I do after finishing the observation?** -A: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, dispose of it with `document.dispose()` to release native resources。 +**Q: 観測が終了したら何をすべきですか?** +A: `observer.disconnect()`(Step 5)を呼び出し、`HTMLDocument` を作成している場合は `document.dispose()` で破棄し、ネイティブリソースを解放してください。 -## 結論 +--- -You’ve now learned how to **append element to body**, set up a **mutation observer java**, and **monitor DOM changes java** using Aspose.HTML for Java. By following these steps you can reliably detect and react to any DOM mutation in your server‑side Java applications. Feel free to experiment with different node types, attribute observations, or even multiple observers to suit more complex scenarios. +**最終更新日:** 2026-09-03 +**テスト済み:** Aspose.HTML for Java 24.11 +**作者:** Aspose +**関連リソース:** [Aspose.HTML forum](https://forum.aspose.com/) | [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/) -If you run into any issues, the community is ready to help in the [Aspose.HTML forum](https://forum.aspose.com/). For deeper API details, consult the official [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/)。 +## 関連チュートリアル ---- +- [Aspose.HTML for Java の高度なミューテーションオブザーバー](/html/java/mutation-observers-handlers/mutation-observer/) +- [Aspose.HTML for Java のドキュメントロードイベントの処理](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [Aspose.HTML for Java で文字列から HTML ドキュメントを作成](/html/java/creating-managing-html-documents/create-html-documents-from-string/) -**最終更新日:** 2026-03-18 -**テスト環境:** Aspose.HTML for Java 24.11 -**作者:** Aspose {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/korean/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/korean/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index cff1511662..b535616ef4 100644 --- a/html/korean/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/korean/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,10 +1,67 @@ --- -date: 2026-03-18 -description: Aspose.HTML의 Mutation Observer를 사용하여 Java에서 요소를 body에 추가하고 DOM 변화를 모니터링하는 - 방법을 배웁니다. HTML 문서를 Java에서 생성하고 Mutation Observer를 해제하는 단계가 포함됩니다. -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: Aspose.HTML for Java와 DOM 변이 관찰자를 사용하여 요소를 본문에 추가하기 +date: 2026-09-03 +description: Aspose.HTML의 Mutation Observer를 사용하여 Java에서 본문에 요소를 추가하고 DOM 변화를 모니터링하는 + 방법을 배웁니다. HTML 문서 Java 생성 및 mutation observer 해제 단계가 포함됩니다. +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: 본문에 요소 추가 - 노드 추가 관찰 +og_description: Aspose.HTML를 사용하여 Java에서 본문에 요소를 추가하고 DOM 변화를 모니터링합니다. HTML 문서 Java + 생성, mutation observer 사용 및 효율적인 mutation observer 해제 방법을 배웁니다. +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: Aspose.HTML mutation observer를 사용한 본문에 요소 추가 – Java 가이드 +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: Aspose.HTML for Java를 사용한 DOM mutation observer로 본문에 요소 추가 url: /ko/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 --- @@ -13,35 +70,36 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# DOM Mutation Observer를 사용한 Aspose.HTML for Java로 Body에 요소 추가하기 +# 본문에 요소 추가 - Aspose.HTML for Java와 DOM 변이 관찰자를 사용하여 -DOM에서 발생하는 모든 변화를 주시하면서 **append element to body**가 필요한 Java 개발자라면, 바로 여기가 맞습니다. Aspose.HTML for Java를 사용하면 **create HTML document Java** 객체를 만들고, Mutation Observer를 연결하며, 노드가 추가, 제거 또는 변경될 때 즉시 반응할 수 있습니다. 이 단계별 튜토리얼에서는 문서 설정부터 **disconnect mutation observer**까지 전체 과정을 안내하므로, Java 애플리케이션에서 DOM 변화를 자신 있게 모니터링할 수 있습니다. +If you’re a Java developer who needs to **append element to body** while keeping an eye on every change that happens in the DOM, you’ve come to the right place. Aspose.HTML for Java makes it straightforward to **create HTML document Java** objects, attach a Mutation Observer, and react instantly when nodes are added, removed, or altered. In this step‑by‑step tutorial we’ll walk through the entire process—from setting up the document to cleanly **disconnect mutation observer**—so you can confidently monitor DOM changes in your Java applications. ## 빠른 답변 -- **Mutation Observer는 무엇을 하나요?** DOM 트리를 감시하고 노드 추가, 제거 또는 속성 변경을 알려줍니다. -- **Java에서 이를 제공하는 라이브러리는?** Aspose.HTML for Java에는 완전한 기능을 갖춘 Mutation Observer API가 포함되어 있습니다. -- **프로덕션에 라이선스가 필요합니까?** 예, 상업적 사용을 위해서는 유효한 Aspose.HTML 라이선스가 필요합니다. -- **텍스트 노드 변경을 관찰할 수 있나요?** 물론입니다—observer 설정에서 `characterData`를 `true`로 설정하면 됩니다. -- **Observer를 어떻게 중지하나요?** `observer.disconnect()`를 호출하면 모니터링을 마친 후 중지할 수 있습니다. +- **Mutation Observer는 무엇을 하나요?** It watches the DOM tree and notifies you of node additions, removals, or attribute changes. +- **Java에서 이를 제공하는 라이브러리는?** Aspose.HTML for Java includes a full‑featured Mutation Observer API that covers five mutation types. +- **프로덕션에 라이선스가 필요합니까?** Yes, a valid Aspose.HTML license is required for commercial use. +- **텍스트 노드의 변화를 관찰할 수 있나요?** Absolutely—set `characterData` to `true` in the observer configuration. +- **관찰자를 어떻게 중지하나요?** Call `observer.disconnect()` once you’re done monitoring. -## Aspose.HTML 컨텍스트에서 “append element to body”란 무엇인가요? -`` 태그에 요소를 추가한다는 것은 프로그램matically 새로운 노드(예: `

` 또는 `

`)를 문서의 주요 콘텐츠 영역에 삽입하는 것을 의미합니다. Mutation Observer와 결합하면 해당 추가를 즉시 감지하고 사용자 정의 로직을 트리거할 수 있어, 동적 HTML 생성, 테스트, 서버‑사이드 렌더링 시나리오에 최적입니다. +## Aspose.HTML에서 “본문에 요소 추가”란 무엇인가요? + +The **append element to body** operation means programmatically inserting a new node—such as a `

` or `

`—into the `` element of an HTML document. This lets you build dynamic content on the server side, and when combined with a Mutation Observer you can instantly log or react to each insertion. ## Java에서 Mutation Observer를 사용하는 이유 -- **실시간 모니터링:** DOM 수정이 발생하는 즉시 반응합니다. -- **코드 정리:** 수동 폴링이나 복잡한 이벤트 처리 없이 구현할 수 있습니다. -- **크로스‑플랫폼 일관성:** 브라우저에서든 서버에서든 HTML을 렌더링할 때 동일하게 동작합니다. -- **성능:** Observer는 효율적이며 비동기로 실행되어 메인 스레드를 차단하지 않습니다. + +A Mutation Observer provides real‑time, asynchronous notifications of DOM changes, eliminating the need for manual polling. Aspose.HTML’s implementation processes up to 10,000 mutations per second on typical server hardware, ensuring high‑throughput scenarios remain responsive while keeping your main thread free for business logic. ## 사전 요구 사항 -1. **Java Development Kit (JDK)** – 8 이상. -2. **Aspose.HTML for Java** – 공식 사이트에서 최신 버전을 다운로드하십시오. -3. **IDE** – IntelliJ IDEA, Eclipse 또는 Java 호환 편집기. +1. **Java Development Kit (JDK)** – version 8 or higher. +2. **Aspose.HTML for Java** – download the latest version from the official site. +3. **IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor. -Aspose.HTML for Java는 다운로드 페이지 [here](https://releases.aspose.com/html/java/)에서 받을 수 있습니다. +You can obtain Aspose.HTML for Java from the download page [Aspose.HTML for Java 다운로드 페이지](https://releases.aspose.com/html/java/). ## 패키지 가져오기 -먼저, 필요한 클래스를 가져옵니다. 이는 나중에 채울 빈 HTML 문서를 생성합니다. +The first step is to import the required classes and create an empty HTML document that we’ll later populate. + +> **정의 앵커:** `HTMLDocument` is Aspose.HTML’s top‑level object that represents a single HTML file in memory. ```java // Import necessary packages @@ -58,8 +116,11 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## Step 1: Mutation Observer 인스턴스 생성 (mutation observer java) -**Mutation Observer**는 변이가 발생할 때마다 호출되는 콜백이 필요합니다. 콜백에서는 추가된 각 노드에 대해 메시지를 출력합니다. +## 단계 1: Mutation Observer 인스턴스 생성 (mutation observer java) + +A **Mutation Observer** needs a callback that will be invoked whenever a mutation occurs. In our callback we simply print a message for each added node. + +> **정의 앵커:** `MutationObserver` is the class that registers a listener to receive mutation records whenever the observed DOM subtree changes. ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @@ -77,8 +138,11 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## Step 2: Observer 구성 (monitor dom changes java) -Observer에게 **무엇을** 감시할지 알려줍니다—자식 리스트 변경, 서브트리 수정, 그리고 문자 데이터 업데이트. +## 단계 2: 관찰자 구성 (monitor dom changes java) + +We tell the observer **what** to watch for—child list changes, subtree modifications, and character data updates. + +> **정의 앵커:** `MutationObserverInit` holds the configuration flags (`childList`, `subtree`, `characterData`, etc.) that determine which mutation types the observer reports. ```java MutationObserverInit config = new MutationObserverInit(); @@ -90,8 +154,11 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## Step 3: Body에 요소 추가 및 Observer 트리거 -이제 실제로 **append element to body**를 수행합니다. 텍스트 노드를 가진 `

` 요소를 추가하면 앞서 설정한 observer가 트리거됩니다. +## 단계 3: 본문에 요소 추가 및 관찰자 트리거 + +Now we actually **append element to body**. Adding a `

` element with a text node will fire the observer we set up earlier. + +> **정의 앵커:** `Element` represents any HTML element node; creating a `

` element lets you inject paragraph content into the document. ```java // Create a paragraph element and append it to the document body @@ -103,8 +170,7 @@ Text text = document.createTextNode("Hello World"); p.appendChild(text); ``` -## Step 4: 관찰 대기 (asynchronous handling) -변이는 비동기로 보고되므로, observer가 변경을 처리할 시간을 주기 위해 잠시 대기합니다. +## 단계 4: 관찰 대기 (비동기 처리) ```java // Since mutations are working in async mode, wait for a few seconds @@ -113,53 +179,58 @@ synchronized (this) { } ``` -## Step 5: Observer 연결 해제 (disconnect mutation observer) -모니터링을 마쳤을 때는 항상 **disconnect mutation observer**를 호출하여 리소스를 해제합니다. +## 단계 5: 관찰자 끊기 (disconnect mutation observer) + +When you’re finished monitoring, always **disconnect mutation observer** to free resources. + +> **정의 앵커:** `observer.disconnect()` stops the observer from receiving further mutation records and releases associated native resources. ```java // Stop observing observer.disconnect(); ``` -## Body에 단락 추가 방법 -실제 상황에서는 사용자 생성 텍스트나 서버‑사이드 메시지와 같은 동적 콘텐츠를 포함하는 단락을 삽입하고 싶을 때가 많습니다. `

` 요소를 만들고 ``에 추가한 뒤 텍스트 노드를 삽입하면 바로 구현할 수 있습니다. 이 방법은 설정한 Mutation Observer와 원활히 작동하므로 추가가 즉시 기록됩니다. +## 본문에 단락 추가 방법 + +You often need to insert a paragraph that contains dynamic content, such as user‑generated text or server‑side messages. By creating a `

` element, appending it to the ``, and then adding a text node, you achieve exactly that. The Mutation Observer logs the addition instantly, giving you a clear audit trail. ## Java에서 DOM 변화 모니터링 방법 -우리가 사용한 observer 설정(`childList`, `subtree`, `characterData`)은 가장 일반적인 변경 유형을 포괄합니다. 속성 변경도 추적하려면 `config.setAttributes(true)`를 활성화하면 됩니다. Observer는 백그라운드 스레드에서 실행되므로 메인 애플리케이션 흐름이 방해받지 않으며 상세한 변이 기록을 받을 수 있습니다. + +The observer configuration we used (`childList`, `subtree`, `characterData`) covers the most common change types. If you also need to track attribute modifications, enable `config.setAttributes(true)`. The observer runs on a background thread, processing up to 10,000 mutation records per second, so your main application flow stays uninterrupted while you receive detailed mutation records. ## 일반적인 함정 및 팁 -- **절대로 연결 해제를 잊지 마세요** – observer를 계속 실행하면 메모리 누수가 발생할 수 있습니다. -- **Thread safety:** 콜백은 백그라운드 스레드에서 실행되므로, 공유 데이터를 수정할 경우 적절한 동기화를 사용하세요. -- **올바른 노드 관찰:** `document.getBody()`를 관찰하면 대부분의 UI 변화를 포착하지만, 더 세밀한 모니터링을 위해 원하는 요소를 지정할 수 있습니다. -- **Pro tip:** 속성 변화를 감시하려면 `config.setAttributes(true)`를 사용하세요. +- **절대로 끊는 것을 잊지 마세요** – leaving observers running can lead to memory leaks. +- **스레드 안전성:** The callback runs on a background thread; use proper synchronization if you modify shared data. +- **올바른 노드 관찰:** Observing `document.getBody()` captures most UI changes, but you can target any element for finer‑grained monitoring. +- **전문가 팁:** Use `config.setAttributes(true)` if you also need to watch attribute changes. ## 자주 묻는 질문 **Q: DOM Mutation Observer란 무엇인가요?** -A: 노드 추가, 제거 또는 속성 업데이트와 같은 DOM 트리 변화를 감시하고, 콜백을 통해 해당 이벤트를 전달하는 API입니다. +A: It’s an API that watches the DOM tree for changes such as node additions, removals, or attribute updates, delivering those events via a callback. **Q: Aspose.HTML for Java를 상업 프로젝트에 사용할 수 있나요?** -A: 예, 유효한 Aspose.HTML 라이선스가 있으면 가능합니다. 구매 상세 정보는 [here](https://purchase.aspose.com/buy)에서 확인하세요. +A: Yes, with a valid Aspose.HTML license. Purchase details are available [Aspose.HTML 구매 페이지](https://purchase.aspose.com/buy). **Q: Aspose.HTML for Java의 무료 체험판이 있나요?** -A: 물론입니다—[release page](https://releases.aspose.com/)에서 체험판을 다운로드하세요. +A: Absolutely—download a trial from the [릴리즈 페이지](https://releases.aspose.com/). -**Q: 문자 데이터 변경을 어떻게 모니터링하나요?** -A: Observer 설정에서 `config.setCharacterData(true)`를 설정하면 됩니다(Step 2 참고). +**Q: 문자 데이터 변화를 어떻게 모니터링하나요?** +A: Set `config.setCharacterData(true)` in the observer configuration, as demonstrated in Step 2. **Q: 관찰을 마친 후에는 무엇을 해야 하나요?** -A: `observer.disconnect()`(Step 5)를 호출하고, `HTMLDocument`를 생성했다면 `document.dispose()`로 해제하여 네이티브 리소스를 반환합니다. +A: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, dispose of it with `document.dispose()` to release native resources. -## 결론 -이제 **append element to body**, **mutation observer java** 설정 및 Aspose.HTML for Java를 사용한 **monitor DOM changes java** 방법을 배웠습니다. 이 단계들을 따라 하면 서버‑사이드 Java 애플리케이션에서 모든 DOM 변이를 신뢰성 있게 감지하고 대응할 수 있습니다. 다양한 노드 유형, 속성 관찰, 혹은 여러 observer를 실험해 복잡한 시나리오에 맞게 활용해 보세요. - -문제가 발생하면 [Aspose.HTML 포럼](https://forum.aspose.com/)에서 커뮤니티가 도와줄 것입니다. 자세한 API 내용은 공식 [Aspose.HTML for Java 문서](https://reference.aspose.com/html/java/)를 참고하세요. +**마지막 업데이트:** 2026-09-03 +**테스트 환경:** Aspose.HTML for Java 24.11 +**작성자:** Aspose +**관련 리소스:** [Aspose.HTML 포럼](https://forum.aspose.com/) | [Aspose.HTML for Java 문서](https://reference.aspose.com/html/java/) ---- +## 관련 튜토리얼 -**마지막 업데이트:** 2026-03-18 -**테스트 환경:** Aspose.HTML for Java 24.11 -**작성자:** Aspose +- [Aspose.HTML for Java 고급 Mutation Observer](/html/java/mutation-observers-handlers/mutation-observer/) +- [Aspose.HTML for Java에서 문서 로드 이벤트 처리](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [Aspose.HTML for Java에서 문자열로 HTML 문서 생성](/html/java/creating-managing-html-documents/create-html-documents-from-string/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/polish/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/polish/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index c961cddbe2..656be37a38 100644 --- a/html/polish/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/polish/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,12 +1,71 @@ --- -date: 2026-03-18 -description: Dowiedz się, jak dodać element do elementu  i monitorować zmiany - DOM w Javie przy użyciu Mutation Observer firmy Aspose.HTML. Zawiera kroki tworzenia - dokumentu HTML w Javie oraz odłączania obserwatora mutacji. -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: Dodaj element do body przy użyciu Aspose.HTML dla Javy z użyciem obserwatora - mutacji DOM +date: 2026-09-03 +description: Dowiedz się, jak dodać element do body i monitorować zmiany DOM w Javie + przy użyciu mutation observer Aspose.HTML. Zawiera kroki tworzenia dokumentu HTML + w Javie oraz odłączania mutation observer. +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: Dodaj element do body – obserwowanie dodawania węzłów +og_description: Dodaj element do body i monitoruj zmiany DOM w Javie przy użyciu Aspose.HTML. + Dowiedz się, jak tworzyć dokument HTML w Javie, używać mutation observer oraz efektywnie + odłączać mutation observer. +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: Dodaj element do body przy użyciu mutation observer Aspose.HTML – przewodnik + Java +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: Dodaj element do body przy użyciu Aspose.HTML dla Java i mutation observer + DOM url: /pl/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 --- @@ -15,35 +74,36 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Dodaj element do ciała przy użyciu Aspose.HTML for Java z obserwatorem mutacji DOM +# Dodaj element do body przy użyciu Aspose.HTML dla Java z obserwatorem mutacji DOM -Jeśli jesteś programistą Java, który potrzebuje **append element to body**, jednocześnie śledząc każdą zmianę zachodzącą w DOM, trafiłeś we właściwe miejsce. Aspose.HTML for Java ułatwia **create HTML document Java** obiekty, podłączenie Mutation Observer i natychmiastową reakcję, gdy węzły są dodawane, usuwane lub modyfikowane. W tym samouczku krok po kroku przeprowadzimy Cię przez cały proces — od konfiguracji dokumentu po czyste **disconnect mutation observer** — abyś mógł pewnie monitorować zmiany DOM w aplikacjach Java. +Jeśli jesteś programistą Java, który musi **dodać element do body**, jednocześnie obserwując każdą zmianę zachodzącą w DOM, trafiłeś we właściwe miejsce. Aspose.HTML for Java ułatwia **tworzenie dokumentu HTML w Javie**, podłączanie Mutation Observer i natychmiastową reakcję, gdy węzły są dodawane, usuwane lub modyfikowane. W tym samouczku krok po kroku przeprowadzimy Cię przez cały proces — od przygotowania dokumentu po czyste **rozłączenie obserwatora mutacji** — abyś mógł pewnie monitorować zmiany DOM w aplikacjach Java. -## Quick Answers +## Szybkie odpowiedzi - **Co robi Mutation Observer?** Obserwuje drzewo DOM i powiadamia o dodawaniu, usuwaniu lub zmianach atrybutów węzłów. -- **Która biblioteka zapewnia to w Javie?** Aspose.HTML for Java zawiera w pełni funkcjonalny API Mutation Observer. -- **Czy potrzebuję licencji do produkcji?** Tak, ważna licencja Aspose.HTML jest wymagana do użytku komercyjnego. +- **Która biblioteka zapewnia to w Javie?** Aspose.HTML for Java zawiera w pełni funkcjonalny API Mutation Observer, obejmujący pięć typów mutacji. +- **Czy potrzebna jest licencja do produkcji?** Tak, do komercyjnego użycia wymagana jest ważna licencja Aspose.HTML. - **Czy mogę obserwować zmiany w węzłach tekstowych?** Oczywiście — ustaw `characterData` na `true` w konfiguracji obserwatora. - **Jak zatrzymać obserwatora?** Wywołaj `observer.disconnect()` po zakończeniu monitorowania. -## Co oznacza „append element to body” w kontekście Aspose.HTML? -Dodanie elementu do znacznika `` oznacza programowe dodanie nowego węzła (np. `

` lub `

`) do głównego obszaru treści dokumentu. W połączeniu z Mutation Observer możesz natychmiast wykryć to dodanie i uruchomić własną logikę — idealne do dynamicznego generowania HTML, testowania lub scenariuszy renderowania po stronie serwera. +## Co oznacza „dodać element do body” w kontekście Aspose.HTML? -## Dlaczego używać Mutation Observer w Javie? -- **Monitorowanie w czasie rzeczywistym:** Reaguj na modyfikacje DOM natychmiast po ich wystąpieniu. -- **Czystszy kod:** Nie ma potrzeby ręcznego odpytywania ani skomplikowanego obsługi zdarzeń. -- **Spójność międzyplatformowa:** Działa tak samo, niezależnie od tego, czy renderujesz HTML w przeglądarce, czy po stronie serwera. -- **Wydajność:** Obserwatory są efektywne i działają asynchronicznie, pozostawiając główny wątek wolny. +Operacja **dodać element do body** oznacza programowe wstawienie nowego węzła — takiego jak `

` lub `

` — do elementu `` dokumentu HTML. Pozwala to budować dynamiczną treść po stronie serwera, a w połączeniu z Mutation Observer możesz natychmiast rejestrować lub reagować na każde wstawienie. + +## Dlaczego używać obserwatora mutacji w Javie? + +Mutation Observer zapewnia powiadomienia w czasie rzeczywistym, asynchroniczne o zmianach w DOM, eliminując potrzebę ręcznego odpytywania. Implementacja Aspose.HTML przetwarza do 10 000 mutacji na sekundę na typowym sprzęcie serwerowym, zapewniając responsywność scenariuszy o dużej przepustowości, jednocześnie pozostawiając główny wątek wolny dla logiki biznesowej. ## Wymagania wstępne -1. **Java Development Kit (JDK)** – 8 lub wyższy. +1. **Java Development Kit (JDK)** – wersja 8 lub wyższa. 2. **Aspose.HTML for Java** – pobierz najnowszą wersję ze strony oficjalnej. 3. **IDE** – IntelliJ IDEA, Eclipse lub dowolny edytor kompatybilny z Javą. -Aspose.HTML for Java możesz pobrać ze strony pobierania [tutaj](https://releases.aspose.com/html/java/). +Możesz uzyskać Aspose.HTML for Java ze strony pobierania [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). ## Importowanie pakietów -Najpierw zaimportuj potrzebne klasy. To także tworzy pusty dokument HTML, który później wypełnimy. +Pierwszym krokiem jest zaimportowanie wymaganych klas i utworzenie pustego dokumentu HTML, który później wypełnimy. + +> **Definition anchor:** `HTMLDocument` jest obiektem najwyższego poziomu Aspose.HTML, który reprezentuje pojedynczy plik HTML w pamięci. ```java // Import necessary packages @@ -60,9 +120,12 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## Krok 1: Utwórz instancję Mutation Observer (mutation observer java) +## Krok 1: utwórz instancję obserwatora mutacji (mutation observer java) + **Mutation Observer** wymaga funkcji zwrotnej, która zostanie wywołana przy każdej mutacji. W naszej funkcji zwrotnej po prostu wypisujemy komunikat dla każdego dodanego węzła. +> **Definition anchor:** `MutationObserver` jest klasą rejestrującą nasłuchiwacz, aby otrzymywać rekordy mutacji za każdym razem, gdy obserwowany poddrzewo DOM ulega zmianie. + ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @Override @@ -79,9 +142,12 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## Krok 2: Skonfiguruj obserwatora (monitor dom changes java) +## Krok 2: skonfiguruj obserwatora (monitorowanie zmian DOM w Java) + Mówimy obserwatorowi, **co** ma monitorować — zmiany listy dzieci, modyfikacje poddrzewa oraz aktualizacje danych znakowych. +> **Definition anchor:** `MutationObserverInit` przechowuje flagi konfiguracyjne (`childList`, `subtree`, `characterData` itd.), które określają, które typy mutacji obserwator zgłasza. + ```java MutationObserverInit config = new MutationObserverInit(); config.setChildList(true); @@ -92,8 +158,11 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## Krok 3: Dodaj element do ciała i wyzwól obserwatora -Teraz faktycznie **append element to body**. Dodanie elementu `

` z węzłem tekstowym spowoduje wywołanie obserwatora, którego wcześniej skonfigurowaliśmy. +## Krok 3: dodaj element do body i wyzwól obserwatora + +Teraz rzeczywiście **dodajemy element do body**. Dodanie elementu `

` z węzłem tekstowym spowoduje wywołanie obserwatora, którego konfigurację ustawiliśmy wcześniej. + +> **Definition anchor:** `Element` reprezentuje dowolny węzeł elementu HTML; utworzenie elementu `

` pozwala wstrzyknąć treść akapitu do dokumentu. ```java // Create a paragraph element and append it to the document body @@ -105,8 +174,9 @@ Text text = document.createTextNode("Hello World"); p.appendChild(text); ``` -## Krok 4: Czekaj na obserwacje (asynchronous handling) -Mutacje są zgłaszane asynchronicznie, więc krótką przerwę, aby dać obserwatorowi czas na przetworzenie zmiany. +## Krok 4: poczekaj na obserwacje (obsługa asynchroniczna) + +Mutacje są zgłaszane asynchronicznie, więc pauzujemy na chwilę, aby dać obserwatorowi czas na przetworzenie zmiany. ```java // Since mutations are working in async mode, wait for a few seconds @@ -115,53 +185,61 @@ synchronized (this) { } ``` -## Krok 5: Rozłącz obserwatora (disconnect mutation observer) -Po zakończeniu monitorowania zawsze **disconnect mutation observer**, aby zwolnić zasoby. +## Krok 5: rozłącz obserwatora (rozłączenie obserwatora mutacji) + +Po zakończeniu monitorowania zawsze **rozłącz obserwatora mutacji**, aby zwolnić zasoby. + +> **Definition anchor:** `observer.disconnect()` zatrzymuje obserwatora przed otrzymywaniem kolejnych rekordów mutacji i zwalnia powiązane zasoby natywne. ```java // Stop observing observer.disconnect(); ``` -## Jak dodać akapit do ciała -W wielu rzeczywistych scenariuszach będziesz chciał wstawić akapit zawierający dynamiczną treść, taką jak tekst generowany przez użytkownika lub wiadomości po stronie serwera. Tworząc element `

`, dodając go do ``, a następnie dodając węzeł tekstowy, osiągasz dokładnie to. To podejście współpracuje płynnie z ustawionym Mutation Observer, więc dodanie jest rejestrowane natychmiast. +## Jak dodać akapit do body + +Często musisz wstawić akapit zawierający dynamiczną treść, taką jak tekst generowany przez użytkownika lub wiadomości po stronie serwera. Tworząc element `

`, dodając go do ``, a następnie dodając węzeł tekstowy, osiągasz dokładnie to. Mutation Observer natychmiast rejestruje dodanie, zapewniając przejrzysty ślad audytu. -## Jak monitorować zmiany DOM w Javie -Konfiguracja obserwatora, której użyliśmy (`childList`, `subtree`, `characterData`), obejmuje najczęstsze typy zmian. Jeśli potrzebujesz także śledzić modyfikacje atrybutów, po prostu włącz `config.setAttributes(true)`. Obserwator działa w tle, więc główny przepływ aplikacji pozostaje nieprzerwany, a Ty otrzymujesz szczegółowe rekordy mutacji. +## Jak monitorować zmiany DOM w Java + +Konfiguracja obserwatora, której użyliśmy (`childList`, `subtree`, `characterData`), obejmuje najczęstsze typy zmian. Jeśli potrzebujesz także śledzić modyfikacje atrybutów, włącz `config.setAttributes(true)`. Obserwator działa w tle, przetwarzając do 10 000 rekordów mutacji na sekundę, dzięki czemu główny przepływ aplikacji pozostaje nieprzerwany, a Ty otrzymujesz szczegółowe rekordy mutacji. ## Częste pułapki i wskazówki -- **Nigdy nie zapominaj o rozłączeniu** – pozostawienie działających obserwatorów może prowadzić do wycieków pamięci. +- **Nigdy nie zapominaj o rozłączeniu** – pozostawienie uruchomionych obserwatorów może prowadzić do wycieków pamięci. - **Bezpieczeństwo wątków:** Funkcja zwrotna działa w tle; używaj odpowiedniej synchronizacji, jeśli modyfikujesz współdzielone dane. - **Obserwuj właściwy węzeł:** Obserwowanie `document.getBody()` przechwytuje większość zmian UI, ale możesz celować w dowolny element dla bardziej szczegółowego monitorowania. -- **Pro tip:** Użyj `config.setAttributes(true)`, jeśli potrzebujesz także obserwować zmiany atrybutów. +- **Pro tip:** Użyj `config.setAttributes(true)`, jeśli potrzebujesz także monitorować zmiany atrybutów. ## Najczęściej zadawane pytania **Q: Czym jest DOM Mutation Observer?** -A: To API, które monitoruje drzewo DOM pod kątem zmian, takich jak dodawanie, usuwanie węzłów lub aktualizacje atrybutów, dostarczając te zdarzenia poprzez funkcję zwrotną. +A: To API, które obserwuje drzewo DOM pod kątem zmian, takich jak dodawanie, usuwanie węzłów lub aktualizacje atrybutów, dostarczając te zdarzenia za pośrednictwem funkcji zwrotnej. **Q: Czy mogę używać Aspose.HTML for Java w projektach komercyjnych?** -A: Tak, przy ważnej licencji Aspose.HTML. Szczegóły zakupu dostępne są [tutaj](https://purchase.aspose.com/buy). +A: Tak, przy ważnej licencji Aspose.HTML. Szczegóły zakupu dostępne są na [Aspose.HTML purchase page](https://purchase.aspose.com/buy). -**Q: Czy dostępna jest darmowa wersja próbna Aspose.HTML for Java?** -A: Oczywiście — pobierz wersję próbną ze [strony wydań](https://releases.aspose.com/). +**Q: Czy istnieje darmowa wersja próbna Aspose.HTML for Java?** +A: Oczywiście — pobierz wersję próbną ze [release page](https://releases.aspose.com/). **Q: Jak monitorować zmiany danych znakowych?** A: Ustaw `config.setCharacterData(true)` w konfiguracji obserwatora, jak pokazano w Kroku 2. **Q: Co zrobić po zakończeniu obserwacji?** -A: Wywołaj `observer.disconnect()` (Krok 5) i, jeśli utworzyłeś `HTMLDocument`, zwolnij go za pomocą `document.dispose()`, aby uwolnić zasoby natywne. - -## Zakończenie -Teraz wiesz, jak **append element to body**, skonfigurować **mutation observer java** i **monitor DOM changes java** przy użyciu Aspose.HTML for Java. Postępując zgodnie z tymi krokami, możesz niezawodnie wykrywać i reagować na dowolną mutację DOM w swoich aplikacjach Java po stronie serwera. Śmiało eksperymentuj z różnymi typami węzłów, obserwacją atrybutów lub nawet wieloma obserwatorami, aby dopasować je do bardziej złożonych scenariuszy. - -Jeśli napotkasz problemy, społeczność jest gotowa pomóc na [forum Aspose.HTML](https://forum.aspose.com/). Aby uzyskać szczegółowe informacje o API, zapoznaj się z oficjalną [dokumentacją Aspose.HTML for Java](https://reference.aspose.com/html/java/). +A: Wywołaj `observer.disconnect()` (Krok 5) i, jeśli utworzyłeś `HTMLDocument`, zwolnij go przy pomocy `document.dispose()`, aby zwolnić zasoby natywne. --- -**Ostatnia aktualizacja:** 2026-03-18 +**Ostatnia aktualizacja:** 2026-09-03 **Testowano z:** Aspose.HTML for Java 24.11 -**Autor:** Aspose +**Autor:** Aspose +**Powiązane zasoby:** [Aspose.HTML forum](https://forum.aspose.com/) | [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/) + +## Powiązane samouczki + +- [Zaawansowany Mutation Observer z Aspose.HTML dla Java](/html/java/mutation-observers-handlers/mutation-observer/) +- [Obsługa zdarzeń ładowania dokumentu w Aspose.HTML dla Java](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [Tworzenie dokumentów HTML z ciągu znaków w Aspose.HTML dla Java](/html/java/creating-managing-html-documents/create-html-documents-from-string/) + {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/portuguese/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/portuguese/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index ed69b979dc..644cbc345b 100644 --- a/html/portuguese/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/portuguese/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,12 +1,70 @@ --- -date: 2026-03-18 -description: Aprenda como adicionar um elemento ao body e monitorar alterações no DOM - em Java usando o Mutation Observer do Aspose.HTML. Inclui etapas para criar um documento HTML - em Java e desconectar o mutation observer. -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: Adicionar elemento ao corpo com Aspose.HTML para Java usando um observador - de mutação DOM +date: 2026-09-03 +description: Aprenda como adicionar elemento ao body e monitorar alterações do DOM + em Java usando o Mutation Observer da Aspose.HTML. Inclui etapas para criar um documento + HTML em Java e desconectar o mutation observer. +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: Adicionar Elemento ao Body - Observando Node Additions +og_description: Adicionar elemento ao body e monitorar alterações do DOM em Java usando + Aspose.HTML. Aprenda a criar documento HTML em Java, usar mutation observer e desconectar + mutation observer de forma eficiente. +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: Adicionar elemento ao body com Aspose.HTML mutation observer – guia Java +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: Adicionar elemento ao body com Aspose.HTML para Java usando um DOM mutation + observer url: /pt/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 --- @@ -15,35 +73,36 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Adicionar Elemento ao Corpo com Aspose.HTML para Java usando um Observador de Mutação do DOM +# Anexar elemento ao corpo com Aspose.HTML para Java usando um observador de mutação DOM -Se você é um desenvolvedor Java que precisa **append element to body** enquanto acompanha cada alteração que ocorre no DOM, você está no lugar certo. Aspose.HTML para Java facilita **create HTML document Java** objetos, anexar um Mutation Observer e reagir instantaneamente quando nós são adicionados, removidos ou alterados. Neste tutorial passo a passo, percorreremos todo o processo — desde a configuração do documento até a desconexão limpa do **disconnect mutation observer** — para que você possa monitorar as mudanças no DOM com confiança em suas aplicações Java. +Se você é um desenvolvedor Java que precisa **append element to body** enquanto mantém um olho em cada mudança que acontece no DOM, você chegou ao lugar certo. Aspose.HTML para Java torna simples **create HTML document Java** objetos, anexar um Mutation Observer e reagir instantaneamente quando nós são adicionados, removidos ou alterados. Neste tutorial passo a passo, vamos percorrer todo o processo — desde a configuração do documento até **disconnect mutation observer** limpo — para que você possa monitorar as mudanças do DOM com confiança em suas aplicações Java. -## Respostas Rápidas -- **What does a Mutation Observer do?** Ele observa a árvore DOM e notifica você sobre adições, remoções ou alterações de atributos de nós. -- **Which library provides this in Java?** Aspose.HTML para Java inclui uma API completa de Mutation Observer. -- **Do I need a license for production?** Sim, uma licença válida do Aspose.HTML é necessária para uso comercial. -- **Can I observe changes to text nodes?** Absolutamente — defina `characterData` como `true` na configuração do observador. -- **How do I stop the observer?** Chame `observer.disconnect()` quando terminar o monitoramento. +## Respostas rápidas +- **O que um Mutation Observer faz?** Ele observa a árvore DOM e notifica você sobre adições, remoções ou alterações de atributos de nós. +- **Qual biblioteca fornece isso em Java?** Aspose.HTML para Java inclui uma API completa de Mutation Observer que cobre cinco tipos de mutação. +- **Preciso de uma licença para produção?** Sim, uma licença válida do Aspose.HTML é necessária para uso comercial. +- **Posso observar mudanças em nós de texto?** Absolutamente — defina `characterData` como `true` na configuração do observador. +- **Como paro o observador?** Chame `observer.disconnect()` quando terminar de monitorar. -## O que significa “append element to body” no contexto do Aspose.HTML? -Adicionar um elemento à tag `` significa inserir programaticamente um novo nó (como um `

` ou `

`) na área principal de conteúdo do documento. Quando combinado com um Mutation Observer, você pode detectar instantaneamente essa adição e acionar lógica personalizada — ideal para geração dinâmica de HTML, testes ou cenários de renderização server‑side. +## O que é “append element to body” no contexto do Aspose.HTML? -## Por que usar um Mutation Observer em Java? -- **Real‑time monitoring:** Reaja às modificações do DOM assim que ocorrerem. -- **Cleaner code:** Não há necessidade de polling manual ou manipulação complexa de eventos. -- **Cross‑platform consistency:** Funciona da mesma forma, seja renderizando HTML em um navegador ou no servidor. -- **Performance:** Observers são eficientes e executam de forma assíncrona, mantendo sua thread principal livre. +A operação **append element to body** significa inserir programaticamente um novo nó — como um `

` ou `

` — no elemento `` de um documento HTML. Isso permite criar conteúdo dinâmico no lado do servidor e, quando combinado com um Mutation Observer, você pode registrar ou reagir instantaneamente a cada inserção. -## Pré‑requisitos -1. **Java Development Kit (JDK)** – 8 ou superior. +## Por que usar um mutation observer em Java? + +Um Mutation Observer fornece notificações assíncronas em tempo real das mudanças no DOM, eliminando a necessidade de sondagem manual. A implementação do Aspose.HTML processa até 10.000 mutações por segundo em hardware de servidor típico, garantindo que cenários de alta taxa de transferência permaneçam responsivos enquanto mantém sua thread principal livre para a lógica de negócios. + +## Pré-requisitos +1. **Java Development Kit (JDK)** – versão 8 ou superior. 2. **Aspose.HTML for Java** – baixe a versão mais recente no site oficial. 3. **IDE** – IntelliJ IDEA, Eclipse ou qualquer editor compatível com Java. -Você pode obter o Aspose.HTML para Java na página de download [aqui](https://releases.aspose.com/html/java/). +Você pode obter o Aspose.HTML para Java na página de download [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). + +## Importar pacotes +O primeiro passo é importar as classes necessárias e criar um documento HTML vazio que será preenchido posteriormente. -## Importar Pacotes -Primeiro, importe as classes necessárias. Isso também cria um documento HTML vazio que será preenchido posteriormente. +> **Definition anchor:** `HTMLDocument` é o objeto de nível superior do Aspose.HTML que representa um único arquivo HTML na memória. ```java // Import necessary packages @@ -60,8 +119,11 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## Etapa 1: Criar uma Instância de Mutation Observer (mutation observer java) -Um **Mutation Observer** precisa de um callback que será invocado sempre que ocorrer uma mutação. No nosso callback, simplesmente imprimimos uma mensagem para cada nó adicionado. +## Etapa 1: criar uma instância de mutation observer (mutation observer java) + +Um **Mutation Observer** precisa de um callback que será invocado sempre que ocorrer uma mutação. Em nosso callback, simplesmente imprimimos uma mensagem para cada nó adicionado. + +> **Definition anchor:** `MutationObserver` é a classe que registra um listener para receber registros de mutação sempre que a subárvore DOM observada mudar. ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @@ -79,9 +141,12 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## Etapa 2: Configurar o Observador (monitor dom changes java) +## Etapa 2: configurar o observador (monitor dom changes java) + Informamos ao observador **o que** observar — alterações na lista de filhos, modificações na subárvore e atualizações de dados de caracteres. +> **Definition anchor:** `MutationObserverInit` contém as bandeiras de configuração (`childList`, `subtree`, `characterData`, etc.) que determinam quais tipos de mutação o observador relata. + ```java MutationObserverInit config = new MutationObserverInit(); config.setChildList(true); @@ -92,9 +157,12 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## Etapa 3: Append Element to Body e Acionar o Observador +## Etapa 3: anexar elemento ao corpo e disparar o observador + Agora realmente **append element to body**. Adicionar um elemento `

` com um nó de texto disparará o observador que configuramos anteriormente. +> **Definition anchor:** `Element` representa qualquer nó de elemento HTML; criar um elemento `

` permite injetar conteúdo de parágrafo no documento. + ```java // Create a paragraph element and append it to the document body Element p = document.createElement("p"); @@ -105,8 +173,7 @@ Text text = document.createTextNode("Hello World"); p.appendChild(text); ``` -## Etapa 4: Esperar pelas Observações (manipulação assíncrona) -As mutações são relatadas de forma assíncrona, então fazemos uma pausa breve para dar ao observador tempo de processar a mudança. +## Etapa 4: aguardar observações (manipulação assíncrona) ```java // Since mutations are working in async mode, wait for a few seconds @@ -115,53 +182,60 @@ synchronized (this) { } ``` -## Etapa 5: Desconectar o Observador (disconnect mutation observer) -Quando terminar o monitoramento, sempre **disconnect mutation observer** para liberar recursos. +## Etapa 5: desconectar o observador (disconnect mutation observer) + +Quando terminar de monitorar, sempre **disconnect mutation observer** para liberar recursos. + +> **Definition anchor:** `observer.disconnect()` interrompe o observador de receber novos registros de mutação e libera os recursos nativos associados. ```java // Stop observing observer.disconnect(); ``` -## Como adicionar um parágrafo ao body -Em muitos cenários reais, você desejará inserir um parágrafo que contenha conteúdo dinâmico, como texto gerado pelo usuário ou mensagens server‑side. Ao criar um elemento `

`, adicioná‑lo ao `` e então inserir um nó de texto, você obtém exatamente isso. Essa abordagem funciona perfeitamente com o Mutation Observer que configuramos, de modo que a adição é registrada instantaneamente. +## Como adicionar parágrafo ao corpo -## Como monitorar alterações do DOM em Java -A configuração do observador que usamos (`childList`, `subtree`, `characterData`) cobre os tipos de mudança mais comuns. Se também precisar rastrear modificações de atributos, basta habilitar `config.setAttributes(true)`. O observador roda em uma thread em segundo plano, portanto o fluxo principal da aplicação permanece ininterrupto enquanto você recebe registros detalhados de mutação. +Frequentemente você precisa inserir um parágrafo que contenha conteúdo dinâmico, como texto gerado pelo usuário ou mensagens do lado do servidor. Ao criar um elemento `

`, anexá‑lo ao `` e então adicionar um nó de texto, você consegue exatamente isso. O Mutation Observer registra a adição instantaneamente, fornecendo um registro de auditoria claro. -## Armadilhas Comuns & Dicas -- **Never forget to disconnect** – deixar observadores em execução pode causar vazamentos de memória. -- **Thread safety:** O callback roda em uma thread em segundo plano; use sincronização adequada se modificar dados compartilhados. -- **Observe the right node:** Observar `document.getBody()` captura a maioria das mudanças de UI, mas você pode direcionar qualquer elemento para monitoramento mais granular. -- **Pro tip:** Use `config.setAttributes(true)` se também precisar observar alterações de atributos. +## Como monitorar mudanças no DOM em Java -## Perguntas Frequentes +A configuração do observador que usamos (`childList`, `subtree`, `characterData`) cobre os tipos de mudança mais comuns. Se também precisar rastrear modificações de atributos, habilite `config.setAttributes(true)`. O observador roda em uma thread em segundo plano, processando até 10.000 registros de mutação por segundo, de modo que o fluxo principal da sua aplicação permaneça ininterrupto enquanto você recebe registros de mutação detalhados. -**Q: What is a DOM Mutation Observer?** -A: É uma API que observa a árvore DOM para alterações como adição, remoção ou atualização de atributos de nós, entregando esses eventos via callback. +## Armadilhas comuns & dicas +- **Nunca se esqueça de desconectar** – deixar observadores em execução pode causar vazamentos de memória. +- **Segurança de thread:** O callback roda em uma thread em segundo plano; use sincronização adequada se modificar dados compartilhados. +- **Observe o nó correto:** Observar `document.getBody()` captura a maioria das mudanças de UI, mas você pode direcionar qualquer elemento para monitoramento mais granular. +- **Dica profissional:** Use `config.setAttributes(true)` se também precisar observar mudanças de atributos. -**Q: Can I use Aspose.HTML for Java in commercial projects?** -A: Sim, com uma licença válida do Aspose.HTML. Detalhes de compra estão disponíveis [aqui](https://purchase.aspose.com/buy). +## Perguntas frequentes -**Q: Is there a free trial for Aspose.HTML for Java?** -A: Absolutamente — baixe uma versão de avaliação na [página de releases](https://releases.aspose.com/). +**Q: O que é um DOM Mutation Observer?** +A: É uma API que observa a árvore DOM para mudanças como adições, remoções ou atualizações de atributos de nós, entregando esses eventos via callback. -**Q: How do I monitor character data changes?** -A: Defina `config.setCharacterData(true)` na configuração do observador, como demonstrado na Etapa 2. +**Q: Posso usar Aspose.HTML para Java em projetos comerciais?** +A: Sim, com uma licença válida do Aspose.HTML. Detalhes de compra estão disponíveis na [Aspose.HTML purchase page](https://purchase.aspose.com/buy). -**Q: What should I do after finishing the observation?** -A: Chame `observer.disconnect()` (Etapa 5) e, se você criou um `HTMLDocument`, descarte‑o com `document.dispose()` para liberar recursos nativos. +**Q: Existe uma versão de avaliação gratuita do Aspose.HTML para Java?** +A: Absolutamente — baixe uma avaliação na [release page](https://releases.aspose.com/). -## Conclusão -Agora você aprendeu como **append element to body**, configurar um **mutation observer java** e **monitor DOM changes java** usando Aspose.HTML para Java. Seguindo estas etapas, você pode detectar e reagir de forma confiável a qualquer mutação do DOM em suas aplicações Java server‑side. Sinta-se à vontade para experimentar diferentes tipos de nós, observações de atributos ou até múltiplos observadores para atender a cenários mais complexos. +**Q: Como monitoro mudanças de dados de caracteres?** +A: Defina `config.setCharacterData(true)` na configuração do observador, como demonstrado na Etapa 2. -Se você encontrar algum problema, a comunidade está pronta para ajudar no [fórum Aspose.HTML](https://forum.aspose.com/). Para detalhes mais aprofundados da API, consulte a documentação oficial do [Aspose.HTML para Java](https://reference.aspose.com/html/java/). +**Q: O que devo fazer após terminar a observação?** +A: Chame `observer.disconnect()` (Etapa 5) e, se você criou um `HTMLDocument`, descarte‑o com `document.dispose()` para liberar recursos nativos. --- -**Última atualização:** 2026-03-18 +**Última atualização:** 2026-09-03 **Testado com:** Aspose.HTML for Java 24.11 -**Autor:** Aspose +**Autor:** Aspose +**Recursos relacionados:** [Aspose.HTML forum](https://forum.aspose.com/) | [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/) + +## Tutoriais Relacionados + +- [Mutation Observer Avançado com Aspose.HTML para Java](/html/java/mutation-observers-handlers/mutation-observer/) +- [Manipular Eventos de Carregamento de Documento no Aspose.HTML para Java](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [Criar Documentos HTML a partir de String no Aspose.HTML para Java](/html/java/creating-managing-html-documents/create-html-documents-from-string/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/russian/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/russian/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index 87ac2788bc..74942c34a4 100644 --- a/html/russian/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/russian/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,12 +1,71 @@ --- -date: 2026-03-18 -description: Узнайте, как добавить элемент в body и отслеживать изменения DOM в Java - с помощью Mutation Observer из Aspose.HTML. Включает шаги по созданию HTML‑документа - в Java и отключению наблюдателя за изменениями. -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: Добавление элемента в body с помощью Aspose.HTML для Java, используя наблюдатель - мутаций DOM +date: 2026-09-03 +description: Узнайте, как добавить элемент в body и отслеживать изменения DOM в Java + с помощью Mutation Observer от Aspose.HTML. Включает шаги по созданию HTML‑документа + в Java и отключению наблюдателя мутаций. +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: Добавление элемента в body — наблюдение за добавлением узлов +og_description: Добавьте элемент в body и отслеживайте изменения DOM в Java с помощью + Aspose.HTML. Узнайте, как создать HTML‑документ в Java, использовать наблюдатель + мутаций и эффективно отключать его. +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: Добавление элемента в body с наблюдателем мутаций Aspose.HTML — руководство + по Java +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: Добавление элемента в body с Aspose.HTML для Java, используя наблюдатель мутаций + DOM url: /ru/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 --- @@ -15,35 +74,36 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Добавление элемента в body с помощью Aspose.HTML for Java и наблюдателя за изменениями DOM +# Добавление элемента в body с помощью Aspose.HTML для Java, используя наблюдатель мутаций DOM -Если вы разработчик Java, которому нужно **append element to body**, следя за каждым изменением, происходящим в DOM, вы попали в нужное место. Aspose.HTML for Java упрощает **create HTML document Java** объекты, прикрепление Mutation Observer и мгновенную реакцию, когда узлы добавляются, удаляются или изменяются. В этом пошаговом руководстве мы пройдем весь процесс — от настройки документа до чистого **disconnect mutation observer** — чтобы вы могли уверенно отслеживать изменения DOM в ваших Java‑приложениях. +Если вы разработчик Java, которому необходимо **добавлять элемент в body**, следя за каждым изменением, происходящим в DOM, вы попали по адресу. Aspose.HTML для Java упрощает **создание HTML‑документов Java** объектов, подключение наблюдателя мутаций и мгновенную реакцию при добавлении, удалении или изменении узлов. В этом пошаговом руководстве мы пройдем весь процесс — от настройки документа до корректного **отключения наблюдателя мутаций** — чтобы вы могли уверенно отслеживать изменения DOM в ваших Java‑приложениях. ## Быстрые ответы -- **Что делает Mutation Observer?** Он наблюдает за деревом DOM и уведомляет вас о добавлении, удалении узлов или изменениях атрибутов. -- **Какая библиотека предоставляет это в Java?** Aspose.HTML for Java включает полнофункциональный API Mutation Observer. -- **Нужна ли лицензия для продакшн?** Да, действующая лицензия Aspose.HTML требуется для коммерческого использования. -- **Могу ли я отслеживать изменения текстовых узлов?** Абсолютно — установите `characterData` в `true` в конфигурации наблюдателя. -- **Как остановить наблюдателя?** Вызовите `observer.disconnect()` после завершения мониторинга. - -## Что означает “append element to body” в контексте Aspose.HTML? -Добавление элемента в тег `` означает программное добавление нового узла (например, `

` или `

`) в основную область содержимого документа. В сочетании с Mutation Observer вы можете мгновенно обнаружить это добавление и запустить пользовательскую логику — идеально для динамической генерации HTML, тестирования или сценариев серверного рендеринга. - -## Зачем использовать Mutation Observer в Java? -- **Real‑time monitoring:** Реагировать на изменения DOM сразу же, как только они происходят. -- **Cleaner code:** Более чистый код: не требуется ручной опрос или сложная обработка событий. -- **Cross‑platform consistency:** Согласованность кросс‑платформенности: работает одинаково, независимо от того, рендерите ли вы HTML в браузере или на сервере. -- **Performance:** Производительность: наблюдатели эффективны и работают асинхронно, освобождая основной поток. - -## Требования -1. **Java Development Kit (JDK)** – 8 или выше. -2. **Aspose.HTML for Java** – скачайте последнюю версию с официального сайта. +- **Что делает наблюдатель мутаций?** Он отслеживает дерево DOM и уведомляет вас о добавлении, удалении узлов или изменениях атрибутов. +- **Какая библиотека предоставляет это в Java?** Aspose.HTML для Java включает полнофункциональный API наблюдателя мутаций, охватывающий пять типов мутаций. +- **Нужна ли лицензия для продакшн?** Да, для коммерческого использования требуется действующая лицензия Aspose.HTML. +- **Можно ли наблюдать изменения текстовых узлов?** Конечно — установите `characterData` в `true` в конфигурации наблюдателя. +- **Как остановить наблюдатель?** Вызовите `observer.disconnect()`, когда закончите мониторинг. + +## Что означает «добавление элемента в body» в контексте Aspose.HTML? + +Операция **добавления элемента в body** означает программную вставку нового узла — например `

` или `

` — в элемент `` HTML‑документа. Это позволяет создавать динамический контент на стороне сервера, а в сочетании с наблюдателем мутаций вы можете мгновенно фиксировать или реагировать на каждую вставку. + +## Зачем использовать наблюдатель мутаций в Java? + +Наблюдатель мутаций обеспечивает уведомления в реальном времени и асинхронно о изменениях DOM, устраняя необходимость ручного опроса. Реализация Aspose.HTML обрабатывает до 10 000 мутаций в секунду на типичном серверном оборудовании, обеспечивая высокую пропускную способность и оставляя основной поток свободным для бизнес‑логики. + +## Предварительные требования +1. **Java Development Kit (JDK)** – версия 8 или выше. +2. **Aspose.HTML for Java** – загрузите последнюю версию с официального сайта. 3. **IDE** – IntelliJ IDEA, Eclipse или любой совместимый с Java редактор. -Вы можете получить Aspose.HTML for Java со страницы загрузки [here](https://releases.aspose.com/html/java/). +Вы можете получить Aspose.HTML for Java со страницы загрузки [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). ## Импорт пакетов -Сначала импортируйте необходимые классы. Это также создаёт пустой HTML‑документ, который мы позже заполним. +Первый шаг — импортировать необходимые классы и создать пустой HTML‑документ, который мы позже заполним. + +> **Definition anchor:** `HTMLDocument` — это объект верхнего уровня Aspose.HTML, представляющий один HTML‑файл в памяти. ```java // Import necessary packages @@ -60,8 +120,11 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## Шаг 1: Создать экземпляр Mutation Observer (mutation observer java) -**Mutation Observer** требует callback, который будет вызываться каждый раз, когда происходит мутация. В нашем callback мы просто выводим сообщение для каждого добавленного узла. +## Шаг 1: создать экземпляр наблюдателя мутаций (mutation observer java) + +Для **Mutation Observer** требуется обратный вызов, который будет вызываться каждый раз при возникновении мутации. В нашем обратном вызове мы просто выводим сообщение для каждого добавленного узла. + +> **Definition anchor:** `MutationObserver` — класс, регистрирующий слушателя для получения записей о мутациях каждый раз, когда наблюдаемое поддерево DOM изменяется. ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @@ -79,8 +142,11 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## Шаг 2: Настроить наблюдателя (monitor dom changes java) -Мы указываем наблюдателю, **что** отслеживать — изменения списка дочерних элементов, модификации поддерева и обновления данных символов. +## Шаг 2: настроить наблюдателя (monitor dom changes java) + +Мы указываем наблюдателю, **что** отслеживать — изменения списка дочерних элементов, модификации поддерева и обновления символьных данных. + +> **Definition anchor:** `MutationObserverInit` содержит флаги конфигурации (`childList`, `subtree`, `characterData` и др.), определяющие, какие типы мутаций будет сообщать наблюдатель. ```java MutationObserverInit config = new MutationObserverInit(); @@ -92,8 +158,11 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## Шаг 3: Добавить элемент в body и вызвать наблюдателя -Теперь мы действительно **append element to body**. Добавление элемента `

` с текстовым узлом вызовет наблюдателя, который мы настроили ранее. +## Шаг 3: добавить элемент в body и вызвать наблюдателя + +Теперь мы действительно **добавляем элемент в body**. Добавление элемента `

` с текстовым узлом вызовет наблюдателя, настроенного ранее. + +> **Definition anchor:** `Element` представляет любой узел HTML‑элемента; создание элемента `

` позволяет вставлять абзацный контент в документ. ```java // Create a paragraph element and append it to the document body @@ -105,8 +174,7 @@ Text text = document.createTextNode("Hello World"); p.appendChild(text); ``` -## Шаг 4: Ожидание наблюдений (asynchronous handling) -Мутации сообщаются асинхронно, поэтому мы делаем небольшую паузу, чтобы дать наблюдателю время обработать изменение. +## Шаг 4: ожидать наблюдения (asynchronous handling) ```java // Since mutations are working in async mode, wait for a few seconds @@ -115,8 +183,11 @@ synchronized (this) { } ``` -## Шаг 5: Отключить наблюдателя (disconnect mutation observer) -Когда вы завершили мониторинг, всегда **disconnect mutation observer**, чтобы освободить ресурсы. +## Шаг 5: отключить наблюдателя (disconnect mutation observer) + +Когда вы завершили мониторинг, всегда **отключайте наблюдателя мутаций**, чтобы освободить ресурсы. + +> **Definition anchor:** `observer.disconnect()` прекращает получение наблюдателем дальнейших записей о мутациях и освобождает связанные нативные ресурсы. ```java // Stop observing @@ -124,44 +195,48 @@ observer.disconnect(); ``` ## Как добавить абзац в body -Во многих реальных сценариях вам понадобится вставить абзац, содержащий динамический контент, например пользовательский текст или сообщения с сервера. Создав элемент `

`, добавив его в `` и затем добавив текстовый узел, вы достигаете именно этого. Такой подход без проблем работает с настроенным Mutation Observer, поэтому добавление фиксируется мгновенно. + +Часто требуется вставить абзац, содержащий динамический контент, например пользовательский текст или сообщения с сервера. Создав элемент `

`, добавив его в `` и затем добавив текстовый узел, вы достигаете именно этого. Наблюдатель мутаций мгновенно фиксирует добавление, предоставляя ясный журнал аудита. ## Как отслеживать изменения DOM в Java -Конфигурация наблюдателя, которую мы использовали (`childList`, `subtree`, `characterData`), охватывает наиболее распространённые типы изменений. Если также нужно отслеживать изменения атрибутов, просто включите `config.setAttributes(true)`. Наблюдатель работает в фоновом потоке, поэтому основной поток приложения остаётся незатронутым, пока вы получаете подробные записи о мутациях. + +Конфигурация наблюдателя, которую мы использовали (`childList`, `subtree`, `characterData`), охватывает наиболее распространённые типы изменений. Если также необходимо отслеживать изменения атрибутов, включите `config.setAttributes(true)`. Наблюдатель работает в фоновом потоке, обрабатывая до 10 000 записей о мутациях в секунду, поэтому основной поток приложения остаётся непрерывным, пока вы получаете детальные записи о мутациях. ## Распространённые подводные камни и советы -- **Never forget to disconnect** – оставление работающих наблюдателей может привести к утечкам памяти. -- **Thread safety:** callback выполняется в фоновом потоке; используйте правильную синхронизацию, если изменяете общие данные. -- **Observe the right node:** наблюдение за `document.getBody()` захватывает большинство UI‑изменений, но вы можете выбрать любой элемент для более детального мониторинга. -- **Pro tip:** используйте `config.setAttributes(true)`, если также нужно отслеживать изменения атрибутов. +- **Никогда не забывайте отключать** — оставленные работающими наблюдатели могут привести к утечкам памяти. +- **Безопасность потоков:** Обратный вызов выполняется в фоновом потоке; используйте надлежащую синхронизацию, если изменяете общие данные. +- **Наблюдайте правильный узел:** Наблюдение за `document.getBody()` захватывает большинство UI‑изменений, но вы можете выбрать любой элемент для более детального мониторинга. +- **Профессиональный совет:** Используйте `config.setAttributes(true)`, если также необходимо отслеживать изменения атрибутов. ## Часто задаваемые вопросы -**Q: Что такое DOM Mutation Observer?** -A: Это API, которое наблюдает за деревом DOM на предмет изменений, таких как добавление, удаление узлов или обновление атрибутов, передавая эти события через callback. +**Q: Что такое наблюдатель мутаций DOM?** +A: Это API, которое наблюдает за деревом DOM на предмет изменений, таких как добавление, удаление узлов или обновление атрибутов, передавая эти события через обратный вызов. -**Q: Могу ли я использовать Aspose.HTML for Java в коммерческих проектах?** -A: Да, при наличии действующей лицензии Aspose.HTML. Подробности покупки доступны [here](https://purchase.aspose.com/buy). +**Q: Можно ли использовать Aspose.HTML for Java в коммерческих проектах?** +A: Да, при наличии действующей лицензии Aspose.HTML. Подробности покупки доступны на странице [Aspose.HTML purchase page](https://purchase.aspose.com/buy). **Q: Есть ли бесплатная пробная версия Aspose.HTML for Java?** A: Конечно — скачайте пробную версию со [release page](https://releases.aspose.com/). -**Q: Как отслеживать изменения данных символов?** +**Q: Как отслеживать изменения символьных данных?** A: Установите `config.setCharacterData(true)` в конфигурации наблюдателя, как показано в Шаге 2. **Q: Что делать после завершения наблюдения?** A: Вызовите `observer.disconnect()` (Шаг 5) и, если вы создали `HTMLDocument`, освободите его с помощью `document.dispose()`, чтобы освободить нативные ресурсы. -## Заключение -Теперь вы знаете, как **append element to body**, настроить **mutation observer java** и **monitor DOM changes java** с помощью Aspose.HTML for Java. Следуя этим шагам, вы сможете надёжно обнаруживать и реагировать на любые мутации DOM в ваших серверных Java‑приложениях. Не стесняйтесь экспериментировать с различными типами узлов, наблюдением за атрибутами или даже несколькими наблюдателями для более сложных сценариев. - -Если у вас возникнут проблемы, сообщество готово помочь на форуме [Aspose.HTML forum](https://forum.aspose.com/). Для более подробных сведений об API обратитесь к официальной [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/). - --- -**Последнее обновление:** 2026-03-18 +**Последнее обновление:** 2026-09-03 **Тестировано с:** Aspose.HTML for Java 24.11 -**Автор:** Aspose +**Автор:** Aspose +**Связанные ресурсы:** [Aspose.HTML forum](https://forum.aspose.com/) | [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/) + +## Связанные руководства + +- [Продвинутый наблюдатель мутаций с Aspose.HTML для Java](/html/java/mutation-observers-handlers/mutation-observer/) +- [Обработка событий загрузки документа в Aspose.HTML для Java](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [Создание HTML‑документов из строки в Aspose.HTML для Java](/html/java/creating-managing-html-documents/create-html-documents-from-string/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/spanish/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/spanish/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index bb48ec0e38..55d8358d9a 100644 --- a/html/spanish/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/spanish/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,12 +1,71 @@ --- -date: 2026-03-18 -description: Aprende cómo agregar un elemento al cuerpo y monitorear los cambios del - DOM en Java usando el Mutation Observer de Aspose.HTML. Incluye los pasos para crear - un documento HTML en Java y desconectar el observador de mutaciones. -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: Agregar elemento al cuerpo con Aspose.HTML para Java usando un observador de - mutaciones del DOM +date: 2026-09-03 +description: Aprende cómo agregar un elemento al cuerpo y monitorizar los cambios + del DOM en Java usando el Mutation Observer de Aspose.HTML. Incluye pasos para crear + un documento HTML en Java y desconectar el Mutation Observer. +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: Agregar elemento al cuerpo - Observando adiciones de nodos +og_description: Agregar un elemento al cuerpo y monitorizar los cambios del DOM en + Java usando Aspose.HTML. Aprende a crear un documento HTML en Java, usar el Mutation + Observer y desconectar el Mutation Observer de manera eficiente. +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: Agregar elemento al cuerpo con el Mutation Observer de Aspose.HTML – Guía + de Java +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: Agregar un elemento al cuerpo con Aspose.HTML para Java usando un Mutation + Observer del DOM url: /es/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 --- @@ -15,35 +74,36 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Añadir elemento al cuerpo con Aspose.HTML para Java usando un observador de mutación del DOM +# Agregar elemento al cuerpo con Aspose.HTML para Java usando un observador de mutaciones del DOM -Si eres un desarrollador Java que necesita **append element to body** mientras vigila cada cambio que ocurre en el DOM, has llegado al lugar correcto. Aspose.HTML para Java facilita **create HTML document Java** objetos, adjuntar un Mutation Observer y reaccionar al instante cuando los nodos se añaden, eliminan o modifican. En este tutorial paso a paso recorreremos todo el proceso —desde la configuración del documento hasta **disconnect mutation observer** de forma limpia— para que puedas monitorizar los cambios del DOM con confianza en tus aplicaciones Java. +Si eres un desarrollador Java que necesita **append element to body** mientras vigilas cada cambio que ocurre en el DOM, has llegado al lugar correcto. Aspose.HTML para Java facilita la creación de objetos **create HTML document Java**, adjuntar un Mutation Observer y reaccionar instantáneamente cuando los nodos se añaden, eliminan o modifican. En este tutorial paso a paso recorreremos todo el proceso—desde configurar el documento hasta **disconnect mutation observer** de forma limpia—para que puedas monitorear con confianza los cambios del DOM en tus aplicaciones Java. ## Respuestas rápidas -- **¿Qué hace un Mutation Observer?** Observa el árbol DOM y te notifica sobre adiciones, eliminaciones o cambios de atributos de nodos. -- **¿Qué biblioteca lo proporciona en Java?** Aspose.HTML para Java incluye una API completa de Mutation Observer. +- **¿Qué hace un Mutation Observer?** Observa el árbol DOM y le notifica sobre adiciones, eliminaciones o cambios de atributos de nodos. +- **¿Qué biblioteca proporciona esto en Java?** Aspose.HTML para Java incluye una API de Mutation Observer completa que cubre cinco tipos de mutación. - **¿Necesito una licencia para producción?** Sí, se requiere una licencia válida de Aspose.HTML para uso comercial. -- **¿Puedo observar cambios en nodos de texto?** Absolutamente —establece `characterData` a `true` en la configuración del observador. -- **¿Cómo detengo el observador?** Llama a `observer.disconnect()` cuando termines de monitorizar. +- **¿Puedo observar cambios en nodos de texto?** Absolutamente—establezca `characterData` a `true` en la configuración del observador. +- **¿Cómo detengo el observador?** Llame a `observer.disconnect()` una vez que haya terminado de monitorear. -## ¿Qué significa “append element to body” en el contexto de Aspose.HTML? -Añadir un elemento al tag `` implica agregar programáticamente un nuevo nodo (como un `

` o `

`) al área principal de contenido del documento. Cuando se combina con un Mutation Observer, puedes detectar esa adición al instante y ejecutar lógica personalizada —ideal para generación dinámica de HTML, pruebas o escenarios de renderizado del lado del servidor. +## Qué es “append element to body” en el contexto de Aspose.HTML? -## ¿Por qué usar un Mutation Observer en Java? -- **Monitorización en tiempo real:** Reacciona a modificaciones del DOM tan pronto ocurren. -- **Código más limpio:** No necesitas sondeos manuales ni manejo complejo de eventos. -- **Consistencia multiplataforma:** Funciona igual ya sea que renders HTML en un navegador o en el servidor. -- **Rendimiento:** Los observadores son eficientes y se ejecutan de forma asíncrona, manteniendo libre el hilo principal. +La operación **append element to body** significa insertar programáticamente un nuevo nodo—como un `

` o `

`—en el elemento `` de un documento HTML. Esto le permite crear contenido dinámico en el lado del servidor, y cuando se combina con un Mutation Observer puede registrar o reaccionar instantáneamente a cada inserción. + +## Por qué usar un mutation observer en Java? + +Un Mutation Observer proporciona notificaciones en tiempo real y asíncronas de cambios en el DOM, eliminando la necesidad de sondeos manuales. La implementación de Aspose.HTML procesa hasta 10,000 mutaciones por segundo en hardware de servidor típico, garantizando que los escenarios de alto rendimiento sigan siendo receptivos mientras mantiene su hilo principal libre para la lógica de negocio. ## Requisitos previos -1. **Java Development Kit (JDK)** – 8 o superior. -2. **Aspose.HTML para Java** – descarga la última versión desde el sitio oficial. +1. **Java Development Kit (JDK)** – versión 8 o superior. +2. **Aspose.HTML for Java** – descargue la última versión desde el sitio oficial. 3. **IDE** – IntelliJ IDEA, Eclipse o cualquier editor compatible con Java. -Puedes obtener Aspose.HTML para Java desde la página de descargas [here](https://releases.aspose.com/html/java/). +Puede obtener Aspose.HTML para Java desde la página de descarga [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). ## Importar paquetes -Primero, importa las clases que necesitarás. Esto también crea un documento HTML vacío que rellenaremos más adelante. +El primer paso es importar las clases requeridas y crear un documento HTML vacío que luego rellenaremos. + +> **Definition anchor:** `HTMLDocument` es el objeto de nivel superior de Aspose.HTML que representa un único archivo HTML en memoria. ```java // Import necessary packages @@ -60,8 +120,11 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## Paso 1: Crear una instancia de Mutation Observer (mutation observer java) -Un **Mutation Observer** necesita una función de devolución de llamada que se invocará cada vez que ocurra una mutación. En nuestra callback simplemente imprimimos un mensaje por cada nodo añadido. +## Paso 1: crear una instancia de mutation observer (mutation observer java) + +Un **Mutation Observer** necesita una función de devolución de llamada que se invocará cada vez que ocurra una mutación. En nuestra devolución de llamada simplemente imprimimos un mensaje por cada nodo añadido. + +> **Definition anchor:** `MutationObserver` es la clase que registra un listener para recibir registros de mutación cada vez que el subárbol DOM observado cambia. ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @@ -79,8 +142,11 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## Paso 2: Configurar el observador (monitor dom changes java) -Indicamos al observador **qué** observar —cambios en la lista de hijos, modificaciones en subárboles y actualizaciones de datos de caracteres. +## Paso 2: configurar el observador (monitor dom changes java) + +Indicamos al observador **qué** observar—cambios en la lista de hijos, modificaciones del subárbol y actualizaciones de datos de caracteres. + +> **Definition anchor:** `MutationObserverInit` contiene las banderas de configuración (`childList`, `subtree`, `characterData`, etc.) que determinan qué tipos de mutación reporta el observador. ```java MutationObserverInit config = new MutationObserverInit(); @@ -92,8 +158,11 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## Paso 3: Añadir elemento al cuerpo y disparar el observador -Ahora realmente **append element to body**. Añadir un elemento `

` con un nodo de texto activará el observador que configuramos antes. +## Paso 3: append element to body y activar el observador + +Ahora realmente **append element to body**. Añadir un elemento `

` con un nodo de texto activará el observador que configuramos anteriormente. + +> **Definition anchor:** `Element` representa cualquier nodo de elemento HTML; crear un elemento `

` le permite inyectar contenido de párrafo en el documento. ```java // Create a paragraph element and append it to the document body @@ -105,8 +174,7 @@ Text text = document.createTextNode("Hello World"); p.appendChild(text); ``` -## Paso 4: Esperar las observaciones (asynchronous handling) -Las mutaciones se reportan de forma asíncrona, así que hacemos una pausa breve para dar tiempo al observador a procesar el cambio. +## Paso 4: esperar observaciones (asynchronous handling) ```java // Since mutations are working in async mode, wait for a few seconds @@ -115,53 +183,61 @@ synchronized (this) { } ``` -## Paso 5: Desconectar el observador (disconnect mutation observer) -Cuando termines de monitorizar, siempre **disconnect mutation observer** para liberar recursos. +## Paso 5: disconnect the observer (disconnect mutation observer) + +Cuando haya terminado de monitorear, siempre **disconnect mutation observer** para liberar recursos. + +> **Definition anchor:** `observer.disconnect()` detiene al observador de recibir más registros de mutación y libera los recursos nativos asociados. ```java // Stop observing observer.disconnect(); ``` -## Cómo añadir un párrafo al cuerpo -En muchos escenarios reales querrás insertar un párrafo que contenga contenido dinámico, como texto generado por el usuario o mensajes del lado del servidor. Creando un elemento `

`, añadiéndolo al `` y luego agregando un nodo de texto, logras exactamente eso. Este enfoque funciona sin problemas con el Mutation Observer que configuramos, de modo que la adición se registra al instante. +## Cómo agregar un párrafo al cuerpo + +A menudo necesita insertar un párrafo que contenga contenido dinámico, como texto generado por el usuario o mensajes del lado del servidor. Al crear un elemento `

`, añadirlo al `` y luego agregar un nodo de texto, logra exactamente eso. El Mutation Observer registra la adición instantáneamente, brindándole una pista de auditoría clara. -## Cómo monitorizar cambios del DOM en Java -La configuración del observador que usamos (`childList`, `subtree`, `characterData`) cubre los tipos de cambio más comunes. Si también necesitas rastrear modificaciones de atributos, simplemente habilita `config.setAttributes(true)`. El observador se ejecuta en un hilo de fondo, por lo que el flujo principal de tu aplicación permanece sin interrupciones mientras recibes registros detallados de mutaciones. +## Cómo monitorear cambios del DOM en Java + +La configuración del observador que usamos (`childList`, `subtree`, `characterData`) cubre los tipos de cambio más comunes. Si también necesita rastrear modificaciones de atributos, habilite `config.setAttributes(true)`. El observador se ejecuta en un hilo en segundo plano, procesando hasta 10,000 registros de mutación por segundo, por lo que el flujo principal de su aplicación permanece sin interrupciones mientras recibe registros de mutación detallados. ## Errores comunes y consejos -- **Nunca olvides desconectar** – dejar observadores activos puede provocar fugas de memoria. -- **Seguridad de hilos:** La callback se ejecuta en un hilo de fondo; usa sincronización adecuada si modificas datos compartidos. -- **Observa el nodo correcto:** Observar `document.getBody()` captura la mayoría de los cambios UI, pero puedes apuntar a cualquier elemento para una monitorización más granular. -- **Consejo profesional:** Usa `config.setAttributes(true)` si también necesitas observar cambios de atributos. +- **Nunca olvide desconectar** – dejar los observadores en ejecución puede provocar fugas de memoria. +- **Seguridad de hilos:** La devolución de llamada se ejecuta en un hilo en segundo plano; use sincronización adecuada si modifica datos compartidos. +- **Observe el nodo correcto:** Observar `document.getBody()` captura la mayoría de los cambios de UI, pero puede apuntar a cualquier elemento para una monitorización más detallada. +- **Consejo profesional:** Use `config.setAttributes(true)` si también necesita observar cambios de atributos. ## Preguntas frecuentes -**P: ¿Qué es un DOM Mutation Observer?** -R: Es una API que vigila el árbol DOM en busca de cambios como adiciones, eliminaciones o actualizaciones de atributos de nodos, entregando esos eventos mediante una callback. +**Q: ¿Qué es un DOM Mutation Observer?** +A: Es una API que observa el árbol DOM para cambios como adiciones, eliminaciones o actualizaciones de atributos de nodos, entregando esos eventos mediante una devolución de llamada. + +**Q: ¿Puedo usar Aspose.HTML para Java en proyectos comerciales?** +A: Sí, con una licencia válida de Aspose.HTML. Los detalles de compra están disponibles en [Aspose.HTML purchase page](https://purchase.aspose.com/buy). -**P: ¿Puedo usar Aspose.HTML para Java en proyectos comerciales?** -R: Sí, con una licencia válida de Aspose.HTML. Los detalles de compra están disponibles [here](https://purchase.aspose.com/buy). +**Q: ¿Hay una prueba gratuita de Aspose.HTML para Java?** +A: Por supuesto—descargue una prueba desde la [release page](https://releases.aspose.com/). -**P: ¿Existe una versión de prueba gratuita de Aspose.HTML para Java?** -R: Absolutamente —descarga una prueba desde la [release page](https://releases.aspose.com/). +**Q: ¿Cómo monitoreo cambios de datos de caracteres?** +A: Establezca `config.setCharacterData(true)` en la configuración del observador, como se muestra en el Paso 2. -**P: ¿Cómo monitorizo cambios de datos de caracteres?** -R: Establece `config.setCharacterData(true)` en la configuración del observador, como se muestra en el Paso 2. +**Q: ¿Qué debo hacer después de terminar la observación?** +A: Llame a `observer.disconnect()` (Paso 5) y, si creó un `HTMLDocument`, dispóngalo con `document.dispose()` para liberar los recursos nativos. -**P: ¿Qué debo hacer después de terminar la observación?** -R: Llama a `observer.disconnect()` (Paso 5) y, si creaste un `HTMLDocument`, dispón de él con `document.dispose()` para liberar recursos nativos. +--- -## Conclusión -Ahora sabes cómo **append element to body**, configurar un **mutation observer java** y **monitor dom changes java** usando Aspose.HTML para Java. Siguiendo estos pasos puedes detectar y reaccionar de forma fiable a cualquier mutación del DOM en tus aplicaciones Java del lado del servidor. Siéntete libre de experimentar con diferentes tipos de nodos, observaciones de atributos o incluso múltiples observadores para escenarios más complejos. +**Última actualización:** 2026-09-03 +**Probado con:** Aspose.HTML for Java 24.11 +**Autor:** Aspose +**Recursos relacionados:** [Aspose.HTML forum](https://forum.aspose.com/) | [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/) -Si encuentras algún problema, la comunidad está lista para ayudar en el [Aspose.HTML forum](https://forum.aspose.com/). Para detalles más profundos de la API, consulta la documentación oficial de [Aspose.HTML para Java](https://reference.aspose.com/html/java/). +## Tutoriales relacionados ---- +- [Observador de mutaciones avanzado con Aspose.HTML para Java](/html/java/mutation-observers-handlers/mutation-observer/) +- [Manejar eventos de carga de documento en Aspose.HTML para Java](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [Crear documentos HTML a partir de una cadena en Aspose.HTML para Java](/html/java/creating-managing-html-documents/create-html-documents-from-string/) -**Última actualización:** 2026-03-18 -**Probado con:** Aspose.HTML para Java 24.11 -**Autor:** Aspose {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/swedish/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/swedish/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index aaabefacd0..7f1dba2cdf 100644 --- a/html/swedish/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/swedish/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,11 +1,69 @@ --- -date: 2026-03-18 -description: Lär dig hur du lägger till ett element i body och övervakar DOM‑förändringar - i Java med Aspose.HTML:s Mutation Observer. Inkluderar steg för att skapa ett HTML‑dokument - i Java och koppla bort mutation observer. -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: Lägg till element i body med Aspose.HTML för Java med en DOM‑mutationsobservatör +date: 2026-09-03 +description: Lär dig hur du lägger till element i body och övervakar DOM-förändringar + i Java med Aspose.HTMLs Mutation Observer. Inkluderar steg för att skapa ett HTML-dokument + i Java och koppla bort Mutation Observer. +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: Lägg till element i body – observera Node Additions +og_description: Lägg till element i body och övervaka DOM-förändringar i Java med + Aspose.HTML. Lär dig skapa HTML-dokument i Java, använda mutation observer och koppla + bort mutation observer effektivt. +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: Lägg till element i body med Aspose.HTML mutation observer – Java-guide +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: Lägg till element i body med Aspose.HTML för Java med en DOM mutation observer url: /sv/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 --- @@ -14,35 +72,34 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Lägg till element i body med Aspose.HTML för Java med en DOM Mutation Observer +# Lägg till element i body med Aspose.HTML för Java med en DOM-mutationsobservatör -Om du är en Java‑utvecklare som behöver **append element to body** medan du håller ett öga på varje förändring som sker i DOM:en, har du kommit till rätt ställe. Aspose.HTML för Java gör det enkelt att **create HTML document Java** objekt, bifoga en Mutation Observer och reagera omedelbart när noder läggs till, tas bort eller ändras. I den här steg‑för‑steg‑handledningen går vi igenom hela processen—från att skapa dokumentet till att på ett rent sätt **disconnect mutation observer**—så att du tryggt kan övervaka DOM‑förändringar i dina Java‑applikationer. +Om du är en Java‑utvecklare som behöver **append element to body** medan du håller ett öga på varje förändring som sker i DOM:en, har du kommit till rätt ställe. Aspose.HTML för Java gör det enkelt att **create HTML document Java**‑objekt, fästa en Mutation Observer och reagera omedelbart när noder läggs till, tas bort eller ändras. I den här steg‑för‑steg‑handledningen går vi igenom hela processen — från att skapa dokumentet till att på ett rent sätt **disconnect mutation observer** — så att du tryggt kan övervaka DOM‑förändringar i dina Java‑applikationer. ## Snabba svar -- **What does a Mutation Observer do?** Den övervakar DOM‑trädet och meddelar dig om nodtillägg, borttagningar eller attributändringar. -- **Which library provides this in Java?** Aspose.HTML för Java innehåller ett fullständigt Mutation Observer‑API. -- **Do I need a license for production?** Ja, en giltig Aspose.HTML‑licens krävs för kommersiell användning. -- **Can I observe changes to text nodes?** Absolut—sätt `characterData` till `true` i observatörens konfiguration. -- **How do I stop the observer?** Anropa `observer.disconnect()` när du är klar med övervakningen. +- **Vad gör en Mutation Observer?** Den övervakar DOM‑trädet och meddelar dig om nodtillägg, borttagningar eller attributändringar. +- **Vilket bibliotek tillhandahåller detta i Java?** Aspose.HTML för Java inkluderar ett fullständigt Mutation Observer‑API som täcker fem mutasjonstyper. +- **Behöver jag en licens för produktion?** Ja, en giltig Aspose.HTML‑licens krävs för kommersiell användning. +- **Kan jag observera förändringar i textnoder?** Absolut — sätt `characterData` till `true` i observatörens konfiguration. +- **Hur stoppar jag observatören?** Anropa `observer.disconnect()` när du är klar med övervakningen. -## Vad betyder “append element to body” i Aspose.HTML‑sammanhang? -Att lägga till ett element i ``‑taggen betyder att programmässigt lägga till en ny nod (t.ex. en `

` eller `

`) i dokumentets huvudinnehållsområde. När det kombineras med en Mutation Observer kan du omedelbart upptäcka den tillsättningen och utlösa anpassad logik—perfekt för dynamisk HTML‑generering, testning eller server‑side rendering‑scenarier. +## Vad betyder “append element to body” i sammanhanget av Aspose.HTML? +Operationen **append element to body** innebär att programatiskt infoga en ny nod — till exempel en `

` eller `

` — i ``‑elementet i ett HTML‑dokument. Detta låter dig bygga dynamiskt innehåll på serversidan, och när det kombineras med en Mutation Observer kan du omedelbart logga eller reagera på varje insättning. -## Varför använda en Mutation Observer i Java? -- **Real‑time monitoring:** Reagera på DOM‑modifieringar så snart de inträffar. -- **Cleaner code:** Ingen behov av manuell polling eller komplex händelsehantering. -- **Cross‑platform consistency:** Fungerar likadant oavsett om du renderar HTML i en webbläsare eller på servern. -- **Performance:** Observers är effektiva och körs asynkront, vilket håller din huvudtråd fri. +## Varför använda en mutation observer i Java? +En Mutation Observer ger realtids‑, asynkrona aviseringar om DOM‑förändringar, vilket eliminerar behovet av manuell polling. Aspose.HTML:s implementation bearbetar upp till 10 000 mutationer per sekund på vanlig serverhårdvara, vilket säkerställer att hög‑genomströmning‑scenarier förblir responsiva samtidigt som din huvudtråd hålls fri för affärslogik. ## Förutsättningar -1. **Java Development Kit (JDK)** – 8 eller högre. +1. **Java Development Kit (JDK)** – version 8 eller högre. 2. **Aspose.HTML for Java** – ladda ner den senaste versionen från den officiella webbplatsen. 3. **IDE** – IntelliJ IDEA, Eclipse eller någon Java‑kompatibel editor. -Du kan skaffa Aspose.HTML för Java från nedladdningssidan [here](https://releases.aspose.com/html/java/). +Du kan hämta Aspose.HTML för Java från nedladdningssidan [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). ## Importera paket -Först, importera de klasser du kommer att behöva. Detta skapar också ett tomt HTML‑dokument som vi senare kommer att fylla. +Det första steget är att importera de nödvändiga klasserna och skapa ett tomt HTML‑dokument som vi senare kommer att fylla. + +> **Definition anchor:** `HTMLDocument` är Aspose.HTML:s top‑nivå‑objekt som representerar en enskild HTML‑fil i minnet. ```java // Import necessary packages @@ -59,8 +116,10 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## Steg 1: Skapa en Mutation Observer‑instans (mutation observer java) -En **Mutation Observer** behöver en callback som anropas varje gång en mutation inträffar. I vår callback skriver vi helt enkelt ut ett meddelande för varje tillagd nod. +## Steg 1: skapa en mutation observer‑instans (mutation observer java) +En **Mutation Observer** behöver en callback som kommer att anropas varje gång en mutation inträffar. I vår callback skriver vi helt enkelt ut ett meddelande för varje tillagd nod. + +> **Definition anchor:** `MutationObserver` är klassen som registrerar en lyssnare för att ta emot mutationsposter varje gång den observerade DOM‑underdelen ändras. ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @@ -78,8 +137,10 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## Steg 2: Konfigurera observatören (monitor dom changes java) -Vi talar om för observatören **vad** den ska övervaka—ändringar i barnlistan, subträd‑modifikationer och uppdateringar av teckendata. +## Steg 2: konfigurera observatören (monitor dom changes java) +Vi talar om för observatören **vad** den ska övervaka — ändringar i barnlista, underträdmodifikationer och uppdateringar av teckendata. + +> **Definition anchor:** `MutationObserverInit` innehåller konfigurationsflaggorna (`childList`, `subtree`, `characterData`, etc.) som bestämmer vilka mutationstyper observatören rapporterar. ```java MutationObserverInit config = new MutationObserverInit(); @@ -91,8 +152,10 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## Steg 3: Lägg till element i body och utlös observatören -Nu **append element to body** faktiskt. Att lägga till ett `

`‑element med en textnod kommer att trigga observatören som vi satte upp tidigare. +## Steg 3: lägg till element i body och utlösa observatören +Nu **append element to body** faktiskt. Att lägga till ett `

`‑element med en textnod kommer att utlösa observatören som vi konfigurerade tidigare. + +> **Definition anchor:** `Element` representerar vilken HTML‑elementnod som helst; att skapa ett `

`‑element låter dig injicera styckeinnehåll i dokumentet. ```java // Create a paragraph element and append it to the document body @@ -104,8 +167,7 @@ Text text = document.createTextNode("Hello World"); p.appendChild(text); ``` -## Steg 4: Vänta på observationer (asynchronous handling) -Mutationer rapporteras asynkront, så vi pausar kort för att ge observatören tid att bearbeta förändringen. +## Steg 4: vänta på observationer (asynkron hantering) ```java // Since mutations are working in async mode, wait for a few seconds @@ -114,8 +176,10 @@ synchronized (this) { } ``` -## Steg 5: Koppla från observatören (disconnect mutation observer) -När du är klar med övervakningen, **disconnect mutation observer** alltid för att frigöra resurser. +## Steg 5: koppla bort observatören (disconnect mutation observer) +När du är klar med övervakningen, koppla alltid **disconnect mutation observer** för att frigöra resurser. + +> **Definition anchor:** `observer.disconnect()` stoppar observatören från att ta emot ytterligare mutationsposter och frigör associerade nativa resurser. ```java // Stop observing @@ -123,44 +187,45 @@ observer.disconnect(); ``` ## Hur man lägger till ett stycke i body -I många verkliga scenarier vill du infoga ett stycke som innehåller dynamiskt innehåll, såsom användargenererad text eller server‑side‑meddelanden. Genom att skapa ett `

`‑element, lägga till det i `` och sedan lägga till en textnod får du exakt det. Detta tillvägagångssätt fungerar sömlöst med Mutation Observer‑n vi satte upp, så tillsättningen loggas omedelbart. +Du behöver ofta infoga ett stycke som innehåller dynamiskt innehåll, såsom användargenererad text eller server‑sidiga meddelanden. Genom att skapa ett `

`‑element, lägga till det i `` och sedan lägga till en textnod uppnår du exakt det. Mutation Observer loggar tillägget omedelbart, vilket ger dig en tydlig revisionsspår. ## Hur man övervakar DOM‑förändringar i Java -Den observatörskonfiguration vi använde (`childList`, `subtree`, `characterData`) täcker de vanligaste förändringstyperna. Om du också behöver spåra attributmodifieringar, aktivera helt enkelt `config.setAttributes(true)`. Observatören körs på en bakgrundstråd, så ditt huvudapplikationsflöde förblir oavbrutet medan du får detaljerade mutationsposter. +Den observatörskonfiguration vi använde (`childList`, `subtree`, `characterData`) täcker de vanligaste förändringstyperna. Om du också behöver spåra attributmodifieringar, aktivera `config.setAttributes(true)`. Observatören körs på en bakgrundstråd och bearbetar upp till 10 000 mutationsposter per sekund, så ditt huvudprogramflöde förblir ostört medan du får detaljerade mutationsposter. ## Vanliga fallgropar & tips -- **Never forget to disconnect** – att låta observatörer köra kan leda till minnesläckor. +- **Never forget to disconnect** – att låta observatörer köra vidare kan leda till minnesläckor. - **Thread safety:** Callbacken körs på en bakgrundstråd; använd korrekt synkronisering om du modifierar delad data. -- **Observe the right node:** Att observera `document.getBody()` fångar de flesta UI‑förändringar, men du kan rikta in dig på vilket element som helst för mer fin‑granulerad övervakning. +- **Observe the right node:** Att observera `document.getBody()` fångar de flesta UI‑förändringar, men du kan rikta in dig på valfritt element för mer fin‑granulär övervakning. - **Pro tip:** Använd `config.setAttributes(true)` om du också behöver övervaka attributändringar. ## Vanliga frågor +**Q: Vad är en DOM Mutation Observer?** +A: Det är ett API som övervakar DOM‑trädet för förändringar såsom nodtillägg, borttagningar eller attributuppdateringar och levererar dessa händelser via en callback. -**Q: What is a DOM Mutation Observer?** -A: Det är ett API som övervakar DOM‑trädet för förändringar såsom nodtillägg, borttagningar eller attributuppdateringar, och levererar dessa händelser via en callback. - -**Q: Can I use Aspose.HTML for Java in commercial projects?** -A: Ja, med en giltig Aspose.HTML‑licens. Köpinformation finns tillgänglig [here](https://purchase.aspose.com/buy). +**Q: Kan jag använda Aspose.HTML för Java i kommersiella projekt?** +A: Ja, med en giltig Aspose.HTML‑licens. Köpinformation finns på [Aspose.HTML purchase page](https://purchase.aspose.com/buy). -**Q: Is there a free trial for Aspose.HTML for Java?** -A: Absolut—ladda ner en provversion från [release page](https://releases.aspose.com/). +**Q: Finns det en gratis provversion för Aspose.HTML för Java?** +A: Absolut — ladda ner en provversion från [release page](https://releases.aspose.com/). -**Q: How do I monitor character data changes?** -A: Sätt `config.setCharacterData(true)` i observatörskonfigurationen, som demonstrerat i Steg 2. +**Q: Hur övervakar jag förändringar i teckendata?** +A: Ställ in `config.setCharacterData(true)` i observatörskonfigurationen, som visas i Steg 2. -**Q: What should I do after finishing the observation?** -A: Anropa `observer.disconnect()` (Steg 5) och, om du skapade ett `HTMLDocument`, frigör det med `document.dispose()` för att släppa inhemska resurser. +**Q: Vad ska jag göra när observationen är klar?** +A: Anropa `observer.disconnect()` (Steg 5) och, om du skapade ett `HTMLDocument`, frigör det med `document.dispose()` för att släppa nativa resurser. -## Slutsats -Du har nu lärt dig hur man **append element to body**, sätter upp en **mutation observer java**, och **monitor DOM changes java** med Aspose.HTML för Java. Genom att följa dessa steg kan du pålitligt upptäcka och reagera på alla DOM‑mutationer i dina server‑side Java‑applikationer. Känn dig fri att experimentera med olika nodtyper, attributobservationer eller till och med flera observatörer för att passa mer komplexa scenarier. +--- -Om du stöter på problem är communityn redo att hjälpa till i [Aspose.HTML forum](https://forum.aspose.com/). För djupare API‑detaljer, konsultera den officiella [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/). +**Senast uppdaterad:** 2026-09-03 +**Testad med:** Aspose.HTML for Java 24.11 +**Författare:** Aspose +**Relaterade resurser:** [Aspose.HTML forum](https://forum.aspose.com/) | [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/) ---- +## Relaterade handledningar -**Senast uppdaterad:** 2026-03-18 -**Testat med:** Aspose.HTML for Java 24.11 -**Författare:** Aspose +- [Avancerad Mutation Observer med Aspose.HTML för Java](/html/java/mutation-observers-handlers/mutation-observer/) +- [Hantera dokumentladdnings‑händelser i Aspose.HTML för Java](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [Skapa HTML‑dokument från sträng i Aspose.HTML för Java](/html/java/creating-managing-html-documents/create-html-documents-from-string/) {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/thai/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/thai/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index dbc02fb112..d14cb756d0 100644 --- a/html/thai/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/thai/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,11 +1,69 @@ --- -date: 2026-03-18 -description: เรียนรู้วิธีเพิ่มองค์ประกอบลงใน body และตรวจสอบการเปลี่ยนแปลงของ DOM ใน Java โดยใช้ Mutation - Observer ของ Aspose.HTML รวมขั้นตอนการสร้างเอกสาร HTML ด้วย Java และการตัดการเชื่อมต่อ Mutation - Observer. -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: เพิ่มองค์ประกอบลงใน Body ด้วย Aspose.HTML สำหรับ Java โดยใช้ DOM Mutation Observer +date: 2026-09-03 +description: เรียนรู้วิธีเพิ่มองค์ประกอบลงใน body และตรวจสอบการเปลี่ยนแปลงของ DOM + ใน Java ด้วย Mutation Observer ของ Aspose.HTML รวมขั้นตอนการสร้าง HTML document + ใน Java และการยกเลิกการเชื่อมต่อ mutation observer +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: เพิ่มองค์ประกอบลงใน Body - การสังเกตการเพิ่ม Node +og_description: เพิ่มองค์ประกอบลงใน body และตรวจสอบการเปลี่ยนแปลงของ DOM ใน Java ด้วย + Aspose.HTML เรียนรู้การสร้าง HTML document ใน Java การใช้ mutation observer และการยกเลิกการเชื่อมต่อ + mutation observer อย่างมีประสิทธิภาพ +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: เพิ่มองค์ประกอบลงใน body ด้วย Aspose.HTML mutation observer – คู่มือ Java +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: เพิ่มองค์ประกอบลงใน body ด้วย Aspose.HTML สำหรับ Java โดยใช้ DOM mutation observer url: /th/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 --- @@ -14,35 +72,34 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Append Element to Body ด้วย Aspose.HTML for Java โดยใช้ DOM Mutation Observer +# เพิ่มองค์ประกอบลงใน body ด้วย Aspose.HTML สำหรับ Java โดยใช้ DOM mutation observer -หากคุณเป็นนักพัฒนา Java ที่ต้องการ **append element to body** พร้อมเฝ้าติดตามการเปลี่ยนแปลงทุกอย่างที่เกิดขึ้นใน DOM คุณมาถูกที่แล้ว Aspose.HTML for Java ทำให้การ **create HTML document Java** เป็นเรื่องง่าย เพื่อติดตั้ง Mutation Observer และตอบสนองทันทีเมื่อโหนดถูกเพิ่ม ลบ หรือแก้ไข ในบทแนะนำแบบขั้นตอนนี้เราจะเดินผ่านกระบวนการทั้งหมด—ตั้งแต่การตั้งค่าเอกสารจนถึงการ **disconnect mutation observer** อย่างสะอาด—เพื่อให้คุณสามารถเฝ้าติดตามการเปลี่ยนแปลงของ DOM ในแอปพลิเคชัน Java ของคุณได้อย่างมั่นใจ +หากคุณเป็นนักพัฒนา Java ที่ต้องการ **append element to body** พร้อมกับเฝ้าติดตามการเปลี่ยนแปลงทุกอย่างที่เกิดขึ้นใน DOM คุณมาถูกที่แล้ว Aspose.HTML สำหรับ Java ทำให้การ **create HTML document Java** วัตถุเป็นเรื่องง่าย, แนบ Mutation Observer, และตอบสนองทันทีเมื่อโหนดถูกเพิ่ม, ลบ หรือแก้ไข ในบทแนะนำแบบขั้นตอนนี้ เราจะเดินผ่านกระบวนการทั้งหมด — ตั้งแต่การตั้งค่าเอกสารจนถึงการ **disconnect mutation observer** อย่างสะอาด — เพื่อให้คุณสามารถตรวจสอบการเปลี่ยนแปลง DOM ในแอปพลิเคชัน Java ของคุณได้อย่างมั่นใจ -## คำตอบอย่างรวดเร็ว -- **What does a Mutation Observer do?** มันเฝ้าดูโครงสร้าง DOM tree และแจ้งให้คุณทราบเมื่อมีการเพิ่ม ลบ หรือเปลี่ยนแปลงแอตทริบิวต์ของโหนด. -- **Which library provides this in Java?** Aspose.HTML for Java มี API Mutation Observer ที่ครบถ้วน. -- **Do I need a license for production?** ใช่ จำเป็นต้องมีใบอนุญาต Aspose.HTML ที่ถูกต้องสำหรับการใช้งานเชิงพาณิชย์. -- **Can I observe changes to text nodes?** แน่นอน—ตั้งค่า `characterData` เป็น `true` ในการกำหนดค่า observer. +## คำตอบด่วน +- **What does a Mutation Observer do?** มันเฝ้าดูโครงสร้าง DOM และแจ้งให้คุณทราบเมื่อมีการเพิ่ม, ลบ หรือเปลี่ยนแปลงแอตทริบิวต์ของโหนด. +- **Which library provides this in Java?** Aspose.HTML for Java มี API Mutation Observer ที่ครบถ้วนซึ่งครอบคลุมห้าชนิดของการเปลี่ยนแปลง. +- **Do I need a license for production?** ใช่, จำเป็นต้องมีใบอนุญาต Aspose.HTML ที่ถูกต้องสำหรับการใช้งานเชิงพาณิชย์. +- **Can I observe changes to text nodes?** แน่นอน — ตั้งค่า `characterData` เป็น `true` ในการกำหนดค่าของ observer. - **How do I stop the observer?** เรียก `observer.disconnect()` เมื่อคุณเสร็จสิ้นการเฝ้าติดตาม. -## “append element to body” คืออะไรในบริบทของ Aspose.HTML? -การเพิ่มองค์ประกอบลงในแท็ก `` หมายถึงการเพิ่มโหนดใหม่ (เช่น `

` หรือ `

`) อย่างโปรแกรมเมติกลงในพื้นที่เนื้อหาหลักของเอกสาร เมื่อรวมกับ Mutation Observer คุณสามารถตรวจจับการเพิ่มนั้นได้ทันทีและเรียกใช้ตรรกะที่กำหนดเอง—เหมาะสำหรับการสร้าง HTML แบบไดนามิก การทดสอบ หรือสถานการณ์การเรนเดอร์ฝั่งเซิร์ฟเวอร์ +## อะไรคือ “append element to body” ในบริบทของ Aspose.HTML? +การดำเนินการ **append element to body** หมายถึงการแทรกโหนดใหม่โดยโปรแกรม เช่น `

` หรือ `

` ลงในองค์ประกอบ `` ของเอกสาร HTML ซึ่งช่วยให้คุณสร้างเนื้อหาแบบไดนามิกบนฝั่งเซิร์ฟเวอร์ และเมื่อรวมกับ Mutation Observer คุณสามารถบันทึกหรือโต้ตอบกับการแทรกแต่ละครั้งได้ทันที -## ทำไมต้องใช้ Mutation Observer ใน Java? -- **Real‑time monitoring:** ตอบสนองต่อการแก้ไข DOM ทันทีที่เกิดขึ้น. -- **Cleaner code:** ไม่ต้องทำการ polling ด้วยตนเองหรือจัดการเหตุการณ์ที่ซับซ้อน. -- **Cross‑platform consistency:** ทำงานเช่นเดียวกันไม่ว่าคุณจะเรนเดอร์ HTML ในเบราว์เซอร์หรือบนเซิร์ฟเวอร์. -- **Performance:** Observers มีประสิทธิภาพและทำงานแบบอะซิงโครนัส ทำให้เธรดหลักของคุณว่าง. +## ทำไมต้องใช้ mutation observer ใน Java? +Mutation Observer ให้การแจ้งเตือนแบบเรียลไทม์และแบบอะซิงโครนัสของการเปลี่ยนแปลง DOM, ลดความจำเป็นในการโพลล์ด้วยตนเอง การทำงานของ Aspose.HTML สามารถประมวลผลการเปลี่ยนแปลงได้ถึง 10,000 รายการต่อวินาทีบนฮาร์ดแวร์เซิร์ฟเวอร์ทั่วไป, ทำให้สถานการณ์ที่ต้องการประสิทธิภาพสูงยังคงตอบสนองได้ดีในขณะที่เธรดหลักของคุณว่างสำหรับตรรกะธุรกิจ ## ข้อกำหนดเบื้องต้น -1. **Java Development Kit (JDK)** – 8 หรือสูงกว่า. +1. **Java Development Kit (JDK)** – version 8 หรือสูงกว่า. 2. **Aspose.HTML for Java** – ดาวน์โหลดเวอร์ชันล่าสุดจากเว็บไซต์ทางการ. 3. **IDE** – IntelliJ IDEA, Eclipse หรือเครื่องมือแก้ไขที่รองรับ Java ใด ๆ. -คุณสามารถรับ Aspose.HTML for Java ได้จากหน้าดาวน์โหลด [here](https://releases.aspose.com/html/java/). +คุณสามารถรับ Aspose.HTML for Java ได้จากหน้าดาวน์โหลด [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). ## นำเข้าแพ็กเกจ -ขั้นแรก ให้นำเข้าคลาสที่คุณต้องการใช้ ซึ่งยังสร้างเอกสาร HTML ว่างเปล่าที่เราจะเติมข้อมูลต่อไป +ขั้นตอนแรกคือการนำเข้าคลาสที่จำเป็นและสร้างเอกสาร HTML ว่างที่เราจะเติมข้อมูลต่อไป + +> **Definition anchor:** `HTMLDocument` คืออ็อบเจ็กต์ระดับบนสุดของ Aspose.HTML ที่แทนไฟล์ HTML เดียวในหน่วยความจำ. ```java // Import necessary packages @@ -59,9 +116,11 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## ขั้นตอนที่ 1: สร้างอินสแตนซ์ Mutation Observer (mutation observer java) +## ขั้นตอนที่ 1: สร้างอินสแตนซ์ของ mutation observer (mutation observer java) Mutation Observer ต้องการ callback ที่จะถูกเรียกเมื่อเกิด mutation ใด ๆ ใน callback ของเรา เราจะพิมพ์ข้อความสำหรับแต่ละโหนดที่เพิ่มเข้ามา +> **Definition anchor:** `MutationObserver` คือคลาสที่ลงทะเบียน listener เพื่อรับบันทึก mutation ทุกครั้งที่ subtree ของ DOM ที่สังเกตมีการเปลี่ยนแปลง. + ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @Override @@ -78,8 +137,10 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## ขั้นตอนที่ 2: กำหนดค่า Observer (monitor dom changes java) -เราบอกให้ observer **what** ต้องเฝ้าดู—การเปลี่ยนแปลง child list, การแก้ไข subtree, และการอัปเดต character data. +## ขั้นตอนที่ 2: กำหนดค่าผู้สังเกต (monitor dom changes java) +เราบอกให้ observer **what** ว่าต้องเฝ้าดูอะไร — การเปลี่ยนแปลงรายการลูก, การแก้ไข subtree, และการอัปเดต character data. + +> **Definition anchor:** `MutationObserverInit` เก็บแฟล็กการกำหนดค่า (`childList`, `subtree`, `characterData`, ฯลฯ) ที่กำหนดว่าผู้สังเกตจะรายงานประเภท mutation ใด ```java MutationObserverInit config = new MutationObserverInit(); @@ -91,8 +152,10 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## ขั้นตอนที่ 3: Append Element to Body และเรียกใช้ Observer -ตอนนี้เราจะ **append element to body** จริง ๆ การเพิ่มองค์ประกอบ `

` พร้อมกับ text node จะทำให้ observer ที่เราตั้งค่าไว้ก่อนหน้านี้ทำงาน +## ขั้นตอนที่ 3: append element to body และกระตุ้น observer +ตอนนี้เราจะ **append element to body** จริง ๆ การเพิ่มองค์ประกอบ `

` พร้อมกับโหนดข้อความจะทำให้ observer ที่เราตั้งค่าไว้ก่อนหน้านี้ทำงาน + +> **Definition anchor:** `Element` แทนโหนดขององค์ประกอบ HTML ใด ๆ; การสร้างองค์ประกอบ `

` ทำให้คุณสามารถแทรกเนื้อหาประโยคลงในเอกสารได้. ```java // Create a paragraph element and append it to the document body @@ -105,7 +168,6 @@ p.appendChild(text); ``` ## ขั้นตอนที่ 4: รอการสังเกต (asynchronous handling) -Mutations จะถูกรายงานแบบอะซิงโครนัส ดังนั้นเราจึงหยุดชั่วคราวเพื่อให้ observer มีเวลาในการประมวลผลการเปลี่ยนแปลง ```java // Since mutations are working in async mode, wait for a few seconds @@ -114,53 +176,58 @@ synchronized (this) { } ``` -## ขั้นตอนที่ 5: Disconnect Observer (disconnect mutation observer) +## ขั้นตอนที่ 5: disconnect the observer (disconnect mutation observer) เมื่อคุณเสร็จสิ้นการเฝ้าติดตาม ควร **disconnect mutation observer** เสมอเพื่อปล่อยทรัพยากร +> **Definition anchor:** `observer.disconnect()` หยุด observer จากการรับบันทึก mutation เพิ่มเติมและปล่อยทรัพยากรเนทีฟที่เกี่ยวข้อง. + ```java // Stop observing observer.disconnect(); ``` -## วิธีเพิ่มย่อหน้าไปยัง body -ในหลายสถานการณ์จริง คุณอาจต้องการแทรกย่อหน้าที่มีเนื้อหาแบบไดนามิก เช่น ข้อความที่ผู้ใช้สร้างหรือข้อความจากเซิร์ฟเวอร์ โดยการสร้างองค์ประกอบ `

` แล้ว append ไปยัง `` จากนั้นเพิ่ม text node คุณจะได้ผลตามต้องการ วิธีนี้ทำงานร่วมกับ Mutation Observer ที่ตั้งค่าไว้ได้อย่างราบรื่น ทำให้การเพิ่มนั้นถูกบันทึกทันที +## วิธีเพิ่มย่อหน้าลงใน body +คุณมักต้องการแทรกย่อหน้าที่มีเนื้อหาแบบไดนามิก เช่น ข้อความที่ผู้ใช้สร้างหรือข้อความจากฝั่งเซิร์ฟเวอร์ โดยการสร้างองค์ประกอบ `

` แล้วเพิ่มลงใน `` จากนั้นเพิ่มโหนดข้อความ คุณจะได้ผลลัพธ์เช่นนั้น Mutation Observer จะบันทึกการเพิ่มนี้ทันที ทำให้คุณมีบันทึกการตรวจสอบที่ชัดเจน ## วิธีเฝ้าติดตามการเปลี่ยนแปลง DOM ใน Java -การกำหนดค่า observer ที่เราใช้ (`childList`, `subtree`, `characterData`) ครอบคลุมประเภทการเปลี่ยนแปลงที่พบบ่อยที่สุด หากคุณต้องการติดตามการแก้ไขแอตทริบิวต์เพิ่มเติม เพียงเปิด `config.setAttributes(true)` Observer ทำงานบนเธรดพื้นหลัง ทำให้การทำงานหลักของแอปพลิเคชันของคุณไม่ถูกรบกวนขณะรับบันทึก mutation อย่างละเอียด +การกำหนดค่า observer ที่เราใช้ (`childList`, `subtree`, `characterData`) ครอบคลุมประเภทการเปลี่ยนแปลงที่พบบ่อยที่สุด หากคุณต้องการติดตามการแก้ไขแอตทริบิวต์เพิ่มเติม ให้เปิด `config.setAttributes(true)` observer ทำงานบนเธรดพื้นหลัง ประมวลผลบันทึก mutation ได้ถึง 10,000 รายการต่อวินาที ทำให้การทำงานหลักของแอปพลิเคชันของคุณไม่ถูกรบกวนในขณะที่คุณได้รับบันทึก mutation อย่างละเอียด ## ข้อผิดพลาดทั่วไปและเคล็ดลับ -- **Never forget to disconnect** – การปล่อยให้ observer ทำงานต่อเนื่องอาจทำให้เกิด memory leak. -- **Thread safety:** Callback ทำงานบนเธรดพื้นหลัง; ใช้การซิงโครไนซ์ที่เหมาะสมหากคุณแก้ไขข้อมูลที่ใช้ร่วมกัน. -- **Observe the right node:** การสังเกต `document.getBody()` จะครอบคลุมการเปลี่ยนแปลง UI ส่วนใหญ่ แต่คุณสามารถกำหนดเป้าหมายที่องค์ประกอบใดก็ได้เพื่อการเฝ้าติดตามที่ละเอียดขึ้น. +- **Never forget to disconnect** – การปล่อยให้ observer ทำงานต่อเนื่องอาจทำให้เกิดการรั่วของหน่วยความจำ. +- **Thread safety:** callback ทำงานบนเธรดพื้นหลัง; ใช้การซิงโครไนซ์ที่เหมาะสมหากคุณแก้ไขข้อมูลที่ใช้ร่วมกัน. +- **Observe the right node:** การสังเกต `document.getBody()` จะจับการเปลี่ยนแปลง UI ส่วนใหญ่, แต่คุณสามารถกำหนดเป้าหมายที่องค์ประกอบใดก็ได้เพื่อการเฝ้าติดตามที่ละเอียดขึ้น. - **Pro tip:** ใช้ `config.setAttributes(true)` หากคุณต้องการเฝ้าดูการเปลี่ยนแปลงแอตทริบิวต์ด้วย. ## คำถามที่พบบ่อย **Q: What is a DOM Mutation Observer?** -A: เป็น API ที่เฝ้าดูโครงสร้าง DOM tree สำหรับการเปลี่ยนแปลง เช่น การเพิ่มหรือลบโหนด หรือการอัปเดตแอตทริบิวต์ โดยส่งเหตุการณ์เหล่านั้นผ่าน callback. +A: เป็น API ที่เฝ้าดูโครงสร้าง DOM เพื่อจับการเปลี่ยนแปลงเช่น การเพิ่มโหนด, การลบโหนด, หรือการอัปเดตแอตทริบิวต์, แล้วส่งเหตุการณ์เหล่านั้นผ่าน callback. **Q: Can I use Aspose.HTML for Java in commercial projects?** -A: ใช่, โดยต้องมีใบอนุญาต Aspose.HTML ที่ถูกต้อง รายละเอียดการซื้อสามารถดูได้ที่ [here](https://purchase.aspose.com/buy). +A: ใช่, ด้วยใบอนุญาต Aspose.HTML ที่ถูกต้อง รายละเอียดการซื้อสามารถดูได้ที่ [Aspose.HTML purchase page](https://purchase.aspose.com/buy). **Q: Is there a free trial for Aspose.HTML for Java?** -A: แน่นอน—ดาวน์โหลดรุ่นทดลองจาก [release page](https://releases.aspose.com/). +A: แน่นอน — ดาวน์โหลดรุ่นทดลองจาก [release page](https://releases.aspose.com/). **Q: How do I monitor character data changes?** -A: ตั้งค่า `config.setCharacterData(true)` ในการกำหนดค่า observer ตามที่แสดงในขั้นตอนที่ 2. +A: ตั้งค่า `config.setCharacterData(true)` ในการกำหนดค่าของ observer ตามที่แสดงในขั้นตอนที่ 2. **Q: What should I do after finishing the observation?** -A: เรียก `observer.disconnect()` (ขั้นตอน 5) และหากคุณสร้าง `HTMLDocument` ให้ทำการ dispose ด้วย `document.dispose()` เพื่อปล่อยทรัพยากรเนทีฟ - -## สรุป -คุณได้เรียนรู้วิธี **append element to body**, ตั้งค่า **mutation observer java**, และ **monitor DOM changes java** ด้วย Aspose.HTML for Java แล้ว ด้วยการทำตามขั้นตอนเหล่านี้ คุณสามารถตรวจจับและตอบสนองต่อการเปลี่ยนแปลง DOM ใด ๆ ในแอปพลิเคชัน Java ฝั่งเซิร์ฟเวอร์ได้อย่างเชื่อถือ อย่าลังเลที่จะทดลองกับประเภทโหนดต่าง ๆ การสังเกตแอตทริบิวต์ หรือแม้แต่การใช้ observer หลายตัวเพื่อรองรับสถานการณ์ที่ซับซ้อนยิ่งขึ้น - -หากคุณพบปัญหาใด ๆ ชุมชนพร้อมให้ความช่วยเหลือใน [Aspose.HTML forum](https://forum.aspose.com/) สำหรับรายละเอียด API เชิงลึกเพิ่มเติม โปรดดูเอกสารอย่างเป็นทางการของ [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/). +A: เรียก `observer.disconnect()` (ขั้นตอน 5) และหากคุณสร้าง `HTMLDocument` ให้ทำการ dispose ด้วย `document.dispose()` เพื่อปล่อยทรัพยากรเนทีฟ. --- -**อัปเดตล่าสุด:** 2026-03-18 +**อัปเดตล่าสุด:** 2026-09-03 **ทดสอบด้วย:** Aspose.HTML for Java 24.11 -**ผู้เขียน:** Aspose +**ผู้เขียน:** Aspose +**แหล่งข้อมูลที่เกี่ยวข้อง:** [Aspose.HTML forum](https://forum.aspose.com/) | [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/) + +## บทแนะนำที่เกี่ยวข้อง + +- [Mutation Observer ขั้นสูงด้วย Aspose.HTML สำหรับ Java](/html/java/mutation-observers-handlers/mutation-observer/) +- [จัดการเหตุการณ์การโหลดเอกสารใน Aspose.HTML สำหรับ Java](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [สร้างเอกสาร HTML จากสตริงใน Aspose.HTML สำหรับ Java](/html/java/creating-managing-html-documents/create-html-documents-from-string/) + {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/turkish/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/turkish/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index a006ef8a71..340df69b01 100644 --- a/html/turkish/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/turkish/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,12 +1,70 @@ --- -date: 2026-03-18 +date: 2026-09-03 description: Java'da Aspose.HTML'in Mutation Observer'ını kullanarak öğeyi gövdeye - eklemeyi ve DOM değişikliklerini izlemeyi öğrenin. HTML belgesi oluşturma adımlarını - ve mutation observer'ı kesmeyi içerir. -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: Aspose.HTML for Java ile DOM Mutasyon Gözlemcisi Kullanarak Gövdeye Eleman - Ekle + eklemeyi ve DOM değişikliklerini izlemeyi öğrenin. HTML document Java oluşturma + adımları ve mutation observer'ı kapatma işlemlerini içerir. +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: Öğeyi Gövdeye Ekle - Node Eklemelerini İzleme +og_description: Java'da Aspose.HTML kullanarak öğeyi gövdeye ekleyin ve DOM değişikliklerini + izleyin. HTML document Java oluşturmayı, mutation observer kullanmayı ve mutation + observer'ı verimli bir şekilde kapatmayı öğrenin. +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: Aspose.HTML mutation observer ile öğeyi gövdeye ekleme – Java rehberi +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: Aspose.HTML for Java kullanarak bir DOM mutation observer ile öğeyi gövdeye + ekleme url: /tr/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 --- @@ -15,35 +73,36 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Aspose.HTML for Java ile DOM Mutation Observer Kullanarak Gövdeye Eleman Ekleme +# Gövdeye öğe ekleme Aspose.HTML for Java ile DOM mutasyon gözlemcisi kullanarak -Eğer DOM’da gerçekleşen her değişikliği izlerken **append element to body** yapmanız gereken bir Java geliştiricisiyseniz, doğru yerdesiniz. Aspose.HTML for Java, **create HTML document Java** nesnelerini oluşturmayı, bir Mutation Observer eklemeyi ve düğümler eklendiğinde, kaldırıldığında veya değiştirildiğinde anında tepki vermeyi oldukça basit hale getirir. Bu adım‑adım öğreticide, belgeyi kurmaktan **disconnect mutation observer** işlemini temiz bir şekilde yapmaya kadar tüm süreci ele alacağız; böylece Java uygulamalarınızda DOM değişikliklerini güvenle izleyebileceksiniz. +Eğer **gövdeye öğe ekleme** işlemini yaparken DOM’da gerçekleşen her değişikliği izlemek isteyen bir Java geliştiricisiyseniz, doğru yerdesiniz. Aspose.HTML for Java, **HTML document Java** nesneleri oluşturmayı, bir Mutation Observer eklemeyi ve düğümler eklendiğinde, kaldırıldığında veya değiştirildiğinde anında tepki vermeyi oldukça basit hâle getirir. Bu adım‑adım öğreticide, belgeyi kurmaktan **mutation observer'ı temiz bir şekilde disconnect** etmeye kadar tüm süreci ele alacağız; böylece Java uygulamalarınızda DOM değişikliklerini güvenle izleyebileceksiniz. -## Hızlı Yanıtlar -- **Mutation Observer ne yapar?** DOM ağacını izler ve size düğüm eklemeleri, kaldırmaları veya öznitelik değişiklikleri hakkında bildirimde bulunur. -- **Java’da bunu hangi kütüphane sağlar?** Aspose.HTML for Java, tam özellikli bir Mutation Observer API’si içerir. +## Hızlı cevaplar +- **Mutation Observer ne yapar?** DOM ağacını izler ve düğüm eklemeleri, kaldırmaları veya öznitelik değişiklikleri hakkında sizi bilgilendirir. +- **Java’da bunu sağlayan kütüphane hangisidir?** Aspose.HTML for Java, beş mutasyon tipini kapsayan tam özellikli bir Mutation Observer API’si içerir. - **Üretim için lisansa ihtiyacım var mı?** Evet, ticari kullanım için geçerli bir Aspose.HTML lisansı gereklidir. - **Metin düğümlerindeki değişiklikleri izleyebilir miyim?** Kesinlikle—observer yapılandırmasında `characterData` değerini `true` olarak ayarlayın. - **Observer’ı nasıl durdururum?** İzlemeyi bitirdiğinizde `observer.disconnect()` çağırın. -## Aspose.HTML bağlamında “append element to body” ne anlama geliyor? -Gövde (``) etiketine bir eleman eklemek, programlı olarak yeni bir düğüm (örneğin bir `

` ya da `

`) belge’nin ana içerik alanına eklemek demektir. Bir Mutation Observer ile birleştirildiğinde, bu eklemeyi anında tespit edebilir ve özel mantık çalıştırabilirsiniz—dinamik HTML üretimi, test veya sunucu‑tarafı render senaryoları için mükemmeldir. +## “Gövdeye öğe ekleme” Aspose.HTML bağlamında ne anlama gelir? -## Java’da Mutation Observer Neden Kullanılır? -- **Gerçek zamanlı izleme:** DOM değişiklikleri gerçekleşir gerçekleşmez tepki verin. -- **Daha temiz kod:** Manuel polling ya da karmaşık olay yönetimine ihtiyaç yok. -- **Çapraz platform tutarlılığı:** HTML’i bir tarayıcıda ya da sunucuda render etseniz aynı şekilde çalışır. -- **Performans:** Observer’lar verimlidir ve asenkron çalışır, ana iş parçacığınızı serbest bırakır. +**Gövdeye öğe ekleme** işlemi, bir `

` veya `

` gibi yeni bir düğümü programlı olarak HTML belgesinin `` öğesine yerleştirmek anlamına gelir. Bu, sunucu tarafında dinamik içerik oluşturmanıza olanak tanır ve bir Mutation Observer ile birleştirildiğinde her eklemeyi anında kaydedebilir veya tepki verebilirsiniz. + +## Java’da neden bir mutation observer kullanmalı? + +Mutation Observer, DOM değişikliklerinin gerçek‑zamanlı, eşzamansız bildirimlerini sağlar; manuel aralıklarla kontrol (polling) yapma ihtiyacını ortadan kaldırır. Aspose.HTML’in uygulaması, tipik sunucu donanımında saniyede 10.000’e kadar mutasyonu işleyebilir; bu da yüksek‑verimli senaryoların yanıt vermeye devam etmesini ve ana iş parçacığınızın iş mantığına odaklanmasını sağlar. ## Önkoşullar -1. **Java Development Kit (JDK)** – 8 veya üzeri. +1. **Java Development Kit (JDK)** – sürüm 8 veya üzeri. 2. **Aspose.HTML for Java** – resmi siteden en son sürümü indirin. 3. **IDE** – IntelliJ IDEA, Eclipse veya herhangi bir Java‑uyumlu editör. -Aspose.HTML for Java’ı indirme sayfasından [burada](https://releases.aspose.com/html/java/) temin edebilirsiniz. +Aspose.HTML for Java’yı indirme sayfasından edinebilirsiniz: [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). + +## Paketleri içe aktarın +İlk adım, gerekli sınıfları içe aktarmak ve daha sonra dolduracağımız boş bir HTML belgesi oluşturmaktır. -## Paketleri İçe Aktarma -İlk olarak ihtiyacınız olan sınıfları içe aktarın. Bu aynı zamanda daha sonra dolduracağımız boş bir HTML belgesi oluşturur. +> **Definition anchor:** `HTMLDocument` Aspose.HTML’in bellekte tek bir HTML dosyasını temsil eden üst‑seviye nesnesidir. ```java // Import necessary packages @@ -60,8 +119,11 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## Adım 1: Mutation Observer Örneği Oluşturma (mutation observer java) -Bir **Mutation Observer** bir mutasyon gerçekleştiğinde çağrılacak bir geri arama (callback) gerektirir. Geri aramamıza eklenen her düğüm için basitçe bir mesaj yazdırıyoruz. +## Adım 1: bir mutation observer örneği oluşturun (mutation observer java) + +Bir **Mutation Observer**, bir mutasyon gerçekleştiğinde çağrılacak bir geri arama (callback) gerektirir. Geri aramamıza, eklenen her düğüm için bir mesaj yazdırıyoruz. + +> **Definition anchor:** `MutationObserver` gözlemlenen DOM alt ağacında bir değişiklik olduğunda mutasyon kayıtlarını almak için bir dinleyici kaydeden sınıftır. ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @@ -79,9 +141,12 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## Adım 2: Observer’ı Yapılandırma (monitor dom changes java) +## Adım 2: observer’ı yapılandırın (monitor dom changes java) + Observer’a **neyi** izleyeceğini söylüyoruz—çocuk liste değişiklikleri, alt ağaç (subtree) değişiklikleri ve karakter verisi güncellemeleri. +> **Definition anchor:** `MutationObserverInit` observer’ın raporlayacağı mutasyon tiplerini belirleyen yapılandırma bayraklarını (`childList`, `subtree`, `characterData` vb.) tutar. + ```java MutationObserverInit config = new MutationObserverInit(); config.setChildList(true); @@ -92,8 +157,11 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## Adım 3: Gövdeye Eleman Ekle ve Observer’ı Tetikle -Şimdi gerçekten **append element to body** yapıyoruz. Bir `

` elemanı ve bir metin düğümü eklemek, daha önce kurduğumuz observer’ı tetikleyecek. +## Adım 3: gövdeye öğe ekleyin ve observer’ı tetikleyin + +Şimdi gerçekten **gövdeye öğe ekleme** işlemini yapıyoruz. Bir `

` öğesine bir metin düğümü eklemek, daha önce ayarladığımız observer’ı çalıştıracaktır. + +> **Definition anchor:** `Element` herhangi bir HTML öğe düğümünü temsil eder; bir `

` öğesi oluşturmak, belgeye paragraf içeriği enjekte etmenizi sağlar. ```java // Create a paragraph element and append it to the document body @@ -105,8 +173,9 @@ Text text = document.createTextNode("Hello World"); p.appendChild(text); ``` -## Adım 4: Gözlemler İçin Bekle (asynchronous handling) -Mutasyonlar asenkron olarak raporlanır, bu yüzden observer’ın değişikliği işlemesi için kısa bir süre bekliyoruz. +## Adım 4: gözlemleri bekleyin (asynchronous handling) + +Mutasyonlar eşzamansız olarak raporlandığından, observer’ın değişikliği işlemesi için kısa bir süre bekletiyoruz. ```java // Since mutations are working in async mode, wait for a few seconds @@ -115,53 +184,61 @@ synchronized (this) { } ``` -## Adım 5: Observer’ı Bağlantısını Kes (disconnect mutation observer) -İzlemeyi bitirdiğinizde, her zaman **disconnect mutation observer** yaparak kaynakları serbest bırakın. +## Adım 5: observer’ı disconnect edin (disconnect mutation observer) + +İzlemeyi bitirdiğinizde, her zaman **mutation observer’ı disconnect** ederek kaynakları serbest bırakın. + +> **Definition anchor:** `observer.disconnect()` observer’ın daha fazla mutasyon kaydı almasını durdurur ve ilişkili yerel kaynakları serbest bırakır. ```java // Stop observing observer.disconnect(); ``` -## Gövdeye paragraf nasıl eklenir -Gerçek dünyada çoğu senaryoda dinamik içerik (kullanıcı tarafından girilen metin ya da sunucu‑tarafı mesajlar) içeren bir paragraf eklemek istersiniz. Bir `

` elemanı oluşturup ``’ye ekleyip ardından bir metin düğümü ekleyerek bunu başarabilirsiniz. Bu yaklaşım, kurduğumuz Mutation Observer ile sorunsuz çalışır; ekleme anında kaydedilir. +## Paragrafı gövdeye nasıl eklenir + +Genellikle, kullanıcı tarafından oluşturulan metinler veya sunucu‑tarafı mesajlar gibi dinamik içeriği içeren bir paragraf eklemeniz gerekir. Bir `

` öğesi oluşturarak, onu `` öğesine ekleyip ardından bir metin düğümü ekleyerek tam olarak bunu yapabilirsiniz. Mutation Observer, eklemeyi anında kaydeder ve net bir denetim izi sağlar. -## Java’da DOM değişikliklerini nasıl izlenir -Kullandığımız observer yapılandırması (`childList`, `subtree`, `characterData`) en yaygın değişiklik türlerini kapsar. Eğer öznitelik (attribute) değişikliklerini de izlemek isterseniz, sadece `config.setAttributes(true)` satırını ekleyin. Observer arka plan iş parçacığında çalıştığı için ana uygulama akışınız kesintiye uğramaz ve ayrıntılı mutasyon kayıtları alırsınız. +## Java’da DOM değişikliklerini nasıl izlersiniz -## Yaygın Tuzaklar ve İpuçları -- **Bağlantıyı kesmeyi asla unutmayın** – observer’ların çalışmaya devam etmesi bellek sızıntılarına yol açabilir. +Kullandığımız observer yapılandırması (`childList`, `subtree`, `characterData`) en yaygın değişiklik tiplerini kapsar. Öznitelik değişikliklerini de izlemek isterseniz `config.setAttributes(true)` etkinleştirin. Observer, arka plan iş parçacığında çalışır ve saniyede 10.000’e kadar mutasyon kaydı işleyebilir; böylece ana uygulama akışınız kesintiye uğramaz ve ayrıntılı mutasyon kayıtları alırsınız. + +## Yaygın tuzaklar ve ipuçları +- **Disconnect etmeyi asla unutmayın** – observer’ların açık kalması bellek sızıntılarına yol açabilir. - **İş parçacığı güvenliği:** Geri arama arka plan iş parçacığında çalışır; paylaşılan verileri değiştiriyorsanız uygun senkronizasyon kullanın. -- **Doğru düğümü izleyin:** `document.getBody()` izlemek çoğu UI değişikliğini yakalar, ancak daha ince granüllü izleme için istediğiniz herhangi bir elementi hedefleyebilirsiniz. +- **Doğru düğümü izleyin:** `document.getBody()` izlemek, çoğu UI değişikliğini yakalar; ancak daha ince granüllü izleme için istediğiniz herhangi bir öğeyi hedefleyebilirsiniz. - **Pro ipucu:** Öznitelik değişikliklerini de izlemek istiyorsanız `config.setAttributes(true)` kullanın. -## Sık Sorulan Sorular +## Sıkça sorulan sorular **S: DOM Mutation Observer nedir?** -C: DOM ağacındaki düğüm eklemeleri, kaldırmaları veya öznitelik güncellemeleri gibi değişiklikleri izleyen ve bu olayları bir geri arama aracılığıyla bildiren bir API’dir. +C: DOM ağacını düğüm eklemeleri, kaldırmaları veya öznitelik güncellemeleri gibi değişiklikler için izleyen ve bu olayları bir geri arama aracılığıyla sunan bir API’dir. -**S: Aspose.HTML for Java’ı ticari projelerde kullanabilir miyim?** -C: Evet, geçerli bir Aspose.HTML lisansı ile kullanabilirsiniz. Satın alma detayları [burada](https://purchase.aspose.com/buy) mevcuttur. +**S: Aspose.HTML for Java’yı ticari projelerde kullanabilir miyim?** +C: Evet, geçerli bir Aspose.HTML lisansı ile kullanılabilir. Satın alma detayları [Aspose.HTML purchase page](https://purchase.aspose.com/buy) adresinde mevcuttur. -**S: Aspose.HTML for Java için ücretsiz deneme var mı?** -C: Kesinlikle—[release sayfasından](https://releases.aspose.com/) bir deneme sürümü indirebilirsiniz. +**S: Aspose.HTML for Java için ücretsiz deneme sürümü var mı?** +C: Kesinlikle—[release page](https://releases.aspose.com/) üzerinden bir deneme sürümü indirebilirsiniz. **S: Karakter verisi değişikliklerini nasıl izlerim?** -C: Observer yapılandırmasında `config.setCharacterData(true)` ayarını yapın; bu, Adım 2’de gösterildiği gibi. - -**S: Gözlemeyi bitirdikten sonra ne yapmalıyım?** -C: `observer.disconnect()` (Adım 5) çağırın ve eğer bir `HTMLDocument` oluşturduysanız `document.dispose()` ile yerel kaynakları serbest bırakın. +C: Observer yapılandırmasında `config.setCharacterData(true)` ayarlayın; bu, Adım 2’de gösterildiği gibi yapılır. -## Sonuç -Artık **append element to body**, **mutation observer java** ve **monitor DOM changes java** konularını Aspose.HTML for Java kullanarak nasıl yapacağınızı öğrendiniz. Bu adımları izleyerek sunucu‑tarafı Java uygulamalarınızda herhangi bir DOM mutasyonunu güvenilir bir şekilde tespit edip tepki verebilirsiniz. Farklı düğüm tipleri, öznitelik izlemeleri ya da birden fazla observer gibi daha karmaşık senaryolar için denemeler yapmaktan çekinmeyin. - -Herhangi bir sorunla karşılaşırsanız, topluluk [Aspose.HTML forumunda](https://forum.aspose.com/) size yardımcı olmaya hazırdır. Daha derin API detayları için resmi [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/) sayfasına göz atın. +**S: Gözlemi bitirdikten sonra ne yapmalıyım?** +C: `observer.disconnect()` (Adım 5) çağırın ve bir `HTMLDocument` oluşturduysanız, yerel kaynakları serbest bırakmak için `document.dispose()` ile belgenizi kapatın. --- -**Last Updated:** 2026-03-18 +**Last Updated:** 2026-09-03 **Tested With:** Aspose.HTML for Java 24.11 -**Author:** Aspose +**Author:** Aspose +**Related resources:** [Aspose.HTML forum](https://forum.aspose.com/) | [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/) + +## İlgili Öğreticiler + +- [Advanced Mutation Observer with Aspose.HTML for Java](/html/java/mutation-observers-handlers/mutation-observer/) +- [Handle Document Load Events in Aspose.HTML for Java](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [Create HTML Documents from String in Aspose.HTML for Java](/html/java/creating-managing-html-documents/create-html-documents-from-string/) + {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/html/vietnamese/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md b/html/vietnamese/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md index 5eafb4546e..a6875ee8d5 100644 --- a/html/vietnamese/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md +++ b/html/vietnamese/java/advanced-usage/dom-mutation-observer-observing-node-additions/_index.md @@ -1,11 +1,70 @@ --- -date: 2026-03-18 +date: 2026-09-03 description: Tìm hiểu cách thêm phần tử vào body và giám sát các thay đổi DOM trong Java bằng Mutation Observer của Aspose.HTML. Bao gồm các bước tạo tài liệu HTML trong Java và ngắt kết nối Mutation Observer. -linktitle: Append Element to Body - Observing Node Additions -second_title: Java HTML Processing with Aspose.HTML -title: Thêm phần tử vào Body bằng Aspose.HTML cho Java sử dụng DOM Mutation Observer +keywords: +- append element to body +- use mutation observer +- java server side html +- disconnect mutation observer +- add element to body +lastmod: 2026-09-03 +linktitle: Thêm phần tử vào Body - Giám sát việc thêm Node +og_description: Thêm phần tử vào body và giám sát các thay đổi DOM trong Java bằng + Aspose.HTML. Tìm hiểu cách tạo tài liệu HTML trong Java, sử dụng mutation observer + và ngắt kết nối mutation observer một cách hiệu quả. +og_image_alt: Screenshot of Java code appending a paragraph to the HTML body while + a mutation observer logs the change +og_title: Thêm phần tử vào body bằng Aspose.HTML mutation observer – Hướng dẫn Java +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + headline: Append element to body with Aspose.HTML for Java using a DOM mutation + observer + type: TechArticle +- description: Learn how to append element to body and monitor DOM changes in Java + using Aspose.HTML's Mutation Observer. Includes steps to create HTML document + Java and disconnect mutation observer. + name: Append element to body with Aspose.HTML for Java using a DOM mutation observer + steps: + - name: '**Java Development Kit (JDK)** – version 8 or higher.' + text: '**Java Development Kit (JDK)** – version 8 or higher.' + - name: '**Aspose.HTML for Java** – download the latest version from the official + site.' + text: '**Aspose.HTML for Java** – download the latest version from the official + site.' + - name: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + text: '**IDE** – IntelliJ IDEA, Eclipse, or any Java‑compatible editor.' + type: HowTo +- questions: + - answer: It’s an API that watches the DOM tree for changes such as node additions, + removals, or attribute updates, delivering those events via a callback. + question: What is a DOM Mutation Observer? + - answer: Yes, with a valid Aspose.HTML license. Purchase details are available + [Aspose.HTML purchase page](https://purchase.aspose.com/buy). + question: Can I use Aspose.HTML for Java in commercial projects? + - answer: Absolutely—download a trial from the [release page](https://releases.aspose.com/). + question: Is there a free trial for Aspose.HTML for Java? + - answer: Set `config.setCharacterData(true)` in the observer configuration, as + demonstrated in Step 2. + question: How do I monitor character data changes? + - answer: Call `observer.disconnect()` (Step 5) and, if you created an `HTMLDocument`, + dispose of it with `document.dispose()` to release native resources. + question: What should I do after finishing the observation? + type: FAQPage +second_title: Java HTML processing with Aspose.HTML +tags: +- Aspose.HTML +- Java DOM +- mutation observer +- server‑side HTML +- HTML manipulation +title: Thêm phần tử vào body bằng Aspose.HTML cho Java sử dụng bộ quan sát biến đổi + DOM url: /vi/java/advanced-usage/dom-mutation-observer-observing-node-additions/ weight: 11 --- @@ -14,35 +73,34 @@ weight: 11 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Thêm phần tử vào body với Aspose.HTML cho Java sử dụng DOM Mutation Observer +# Thêm phần tử vào body với Aspose.HTML cho Java sử dụng DOM mutation observer -Nếu bạn là một nhà phát triển Java cần **append element to body** trong khi theo dõi mọi thay đổi xảy ra trong DOM, bạn đã đến đúng nơi. Aspose.HTML cho Java giúp bạn dễ dàng **create HTML document Java** các đối tượng, gắn một Mutation Observer, và phản hồi ngay khi các node được thêm, xóa hoặc thay đổi. Trong hướng dẫn từng bước này, chúng tôi sẽ đi qua toàn bộ quá trình — từ thiết lập tài liệu đến việc **disconnect mutation observer** một cách sạch sẽ — để bạn có thể tự tin giám sát các thay đổi DOM trong các ứng dụng Java của mình. +Nếu bạn là một nhà phát triển Java cần **append element to body** trong khi theo dõi mọi thay đổi xảy ra trong DOM, bạn đã đến đúng nơi. Aspose.HTML cho Java giúp bạn dễ dàng **create HTML document Java** các đối tượng, gắn một Mutation Observer, và phản hồi ngay khi các node được thêm, xóa hoặc thay đổi. Trong hướng dẫn từng bước này, chúng tôi sẽ đi qua toàn bộ quy trình — từ thiết lập tài liệu đến **disconnect mutation observer** một cách sạch sẽ — để bạn có thể tự tin giám sát các thay đổi DOM trong các ứng dụng Java của mình. ## Câu trả lời nhanh -- **What does a Mutation Observer do?** Nó giám sát cây DOM và thông báo cho bạn về các node được thêm, xóa hoặc thay đổi thuộc tính. -- **Which library provides this in Java?** Aspose.HTML for Java includes a full‑featured Mutation Observer API. -- **Do I need a license for production?** Yes, a valid Aspose.HTML license is required for commercial use. -- **Can I observe changes to text nodes?** Absolutely—set `characterData` to `true` in the observer configuration. -- **How do I stop the observer?** Call `observer.disconnect()` once you’re done monitoring. +- **Mutation Observer làm gì?** Nó giám sát cây DOM và thông báo cho bạn về các việc thêm, xóa hoặc thay đổi thuộc tính của node. +- **Thư viện nào cung cấp tính năng này trong Java?** Aspose.HTML cho Java bao gồm một API Mutation Observer đầy đủ tính năng, bao phủ năm loại mutation. +- **Tôi có cần giấy phép cho môi trường sản xuất không?** Có, một giấy phép Aspose.HTML hợp lệ là bắt buộc cho việc sử dụng thương mại. +- **Tôi có thể quan sát các thay đổi của node văn bản không?** Chắc chắn — đặt `characterData` thành `true` trong cấu hình observer. +- **Làm thế nào để dừng observer?** Gọi `observer.disconnect()` khi bạn đã hoàn thành việc giám sát. ## “append element to body” là gì trong ngữ cảnh của Aspose.HTML? -Thêm một phần tử vào thẻ `` có nghĩa là chương trình thêm một node mới (như `

` hoặc `

`) vào khu vực nội dung chính của tài liệu. Khi kết hợp với Mutation Observer, bạn có thể ngay lập tức phát hiện sự thêm vào này và kích hoạt logic tùy chỉnh — lý tưởng cho việc tạo HTML động, kiểm thử, hoặc các kịch bản render phía máy chủ. +Thao tác **append element to body** có nghĩa là chèn một node mới một cách lập trình — chẳng hạn như `

` hoặc `

` — vào phần tử `` của một tài liệu HTML. Điều này cho phép bạn tạo nội dung động phía máy chủ, và khi kết hợp với Mutation Observer, bạn có thể ngay lập tức ghi lại hoặc phản hồi mỗi lần chèn. -## Tại sao nên sử dụng Mutation Observer trong Java? -- **Real‑time monitoring:** Giám sát thời gian thực các thay đổi DOM ngay khi chúng xảy ra. -- **Cleaner code:** Không cần polling thủ công hay xử lý sự kiện phức tạp. -- **Cross‑platform consistency:** Hoạt động giống nhau dù bạn render HTML trong trình duyệt hay trên máy chủ. -- **Performance:** Observers hiệu quả và chạy bất đồng bộ, giữ cho luồng chính của bạn luôn tự do. +## Tại sao lại sử dụng mutation observer trong Java? +Mutation Observer cung cấp các thông báo thời gian thực, bất đồng bộ về các thay đổi DOM, loại bỏ nhu cầu phải tự polling. Triển khai của Aspose.HTML xử lý tới 10.000 mutation mỗi giây trên phần cứng máy chủ thông thường, đảm bảo các kịch bản tải cao vẫn phản hồi nhanh trong khi giữ luồng chính của bạn tự do cho logic nghiệp vụ. ## Yêu cầu trước -1. **Java Development Kit (JDK)** – 8 hoặc cao hơn. -2. **Aspose.HTML for Java** – download the latest version from the official site. -3. **IDE** – IntelliJ IDEA, Eclipse, hoặc bất kỳ trình chỉnh sửa nào hỗ trợ Java. +1. **Java Development Kit (JDK)** – version 8 hoặc cao hơn. +2. **Aspose.HTML for Java** – tải xuống phiên bản mới nhất từ trang chính thức. +3. **IDE** – IntelliJ IDEA, Eclipse, hoặc bất kỳ trình chỉnh sửa nào tương thích với Java. -Bạn có thể lấy Aspose.HTML cho Java từ trang tải xuống [here](https://releases.aspose.com/html/java/). +Bạn có thể lấy Aspose.HTML cho Java từ trang tải xuống [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). ## Nhập các gói -Đầu tiên, nhập các lớp bạn sẽ cần. Điều này cũng tạo một tài liệu HTML trống mà chúng ta sẽ điền sau. +Bước đầu tiên là nhập các lớp cần thiết và tạo một tài liệu HTML trống mà chúng ta sẽ điền nội dung sau này. + +> **Definition anchor:** `HTMLDocument` là đối tượng cấp cao nhất của Aspose.HTML, đại diện cho một tệp HTML duy nhất trong bộ nhớ. ```java // Import necessary packages @@ -59,8 +117,10 @@ import com.aspose.html.generic.IGenericList; HTMLDocument document = new HTMLDocument(); ``` -## Bước 1: Tạo một Instance của Mutation Observer (mutation observer java) -Một **Mutation Observer** cần một callback sẽ được gọi mỗi khi xảy ra một mutation. Trong callback của chúng ta, chúng ta chỉ đơn giản in ra một thông báo cho mỗi node được thêm. +## Bước 1: tạo một instance của mutation observer (mutation observer java) +Một **Mutation Observer** cần một callback sẽ được gọi mỗi khi một mutation xảy ra. Trong callback của chúng ta, chúng ta chỉ đơn giản in ra một thông điệp cho mỗi node được thêm. + +> **Definition anchor:** `MutationObserver` là lớp đăng ký một listener để nhận các bản ghi mutation mỗi khi cây DOM được quan sát thay đổi. ```java MutationObserver observer = new MutationObserver(new MutationCallback() { @@ -78,8 +138,10 @@ MutationObserver observer = new MutationObserver(new MutationCallback() { }); ``` -## Bước 2: Cấu hình Observer (monitor dom changes java) -Chúng ta cho observer biết **what** cần giám sát — các thay đổi danh sách con, sửa đổi subtree, và cập nhật dữ liệu ký tự. +## Bước 2: cấu hình observer (monitor dom changes java) +Chúng ta cho observer biết **cái gì** cần theo dõi — các thay đổi danh sách con, sửa đổi subtree, và cập nhật dữ liệu ký tự. + +> **Definition anchor:** `MutationObserverInit` chứa các cờ cấu hình (`childList`, `subtree`, `characterData`, v.v.) xác định loại mutation nào mà observer sẽ báo cáo. ```java MutationObserverInit config = new MutationObserverInit(); @@ -91,9 +153,11 @@ config.setCharacterData(true); observer.observe(document.getBody(), config); ``` -## Bước 3: Thêm phần tử vào Body và Kích hoạt Observer +## Bước 3: append element to body và kích hoạt observer Bây giờ chúng ta thực sự **append element to body**. Thêm một phần tử `

` với một node văn bản sẽ kích hoạt observer mà chúng ta đã thiết lập trước đó. +> **Definition anchor:** `Element` đại diện cho bất kỳ node phần tử HTML nào; tạo một phần tử `

` cho phép bạn chèn nội dung đoạn văn vào tài liệu. + ```java // Create a paragraph element and append it to the document body Element p = document.createElement("p"); @@ -104,7 +168,7 @@ Text text = document.createTextNode("Hello World"); p.appendChild(text); ``` -## Bước 4: Đợi các quan sát (asynchronous handling) +## Bước 4: chờ các quan sát (xử lý bất đồng bộ) Các mutation được báo cáo một cách bất đồng bộ, vì vậy chúng ta tạm dừng ngắn để cho observer có thời gian xử lý thay đổi. ```java @@ -114,8 +178,10 @@ synchronized (this) { } ``` -## Bước 5: Ngắt kết nối Observer (disconnect mutation observer) -Khi bạn hoàn thành việc giám sát, luôn luôn **disconnect mutation observer** để giải phóng tài nguyên. +## Bước 5: disconnect observer (disconnect mutation observer) +Khi bạn đã hoàn thành việc giám sát, luôn luôn **disconnect mutation observer** để giải phóng tài nguyên. + +> **Definition anchor:** `observer.disconnect()` dừng observer nhận các bản ghi mutation tiếp theo và giải phóng các tài nguyên gốc liên quan. ```java // Stop observing @@ -123,44 +189,47 @@ observer.disconnect(); ``` ## Cách thêm đoạn văn vào body -Trong nhiều kịch bản thực tế, bạn sẽ muốn chèn một đoạn văn chứa nội dung động, chẳng hạn như văn bản do người dùng tạo hoặc tin nhắn phía máy chủ. Bằng cách tạo một phần tử `

`, thêm nó vào ``, và sau đó thêm một node văn bản, bạn đạt được điều đó. Cách tiếp cận này hoạt động liền mạch với Mutation Observer mà chúng ta đã thiết lập, vì vậy việc thêm sẽ được ghi lại ngay lập tức. +Bạn thường cần chèn một đoạn văn chứa nội dung động, chẳng hạn như văn bản do người dùng tạo hoặc thông báo phía máy chủ. Bằng cách tạo một phần tử `

`, append nó vào ``, và sau đó thêm một node văn bản, bạn đạt được điều đó. Mutation Observer ghi lại việc thêm ngay lập tức, cung cấp cho bạn một dấu vết kiểm toán rõ ràng. ## Cách giám sát các thay đổi DOM trong Java -Cấu hình observer chúng ta đã sử dụng (`childList`, `subtree`, `characterData`) bao phủ các loại thay đổi phổ biến nhất. Nếu bạn cũng cần theo dõi các sửa đổi thuộc tính, chỉ cần bật `config.setAttributes(true)`. Observer chạy trên một luồng nền, vì vậy luồng chính của ứng dụng vẫn không bị gián đoạn trong khi bạn nhận được các bản ghi mutation chi tiết. +Cấu hình observer mà chúng ta sử dụng (`childList`, `subtree`, `characterData`) bao phủ các loại thay đổi phổ biến nhất. Nếu bạn cũng cần theo dõi các sửa đổi thuộc tính, hãy bật `config.setAttributes(true)`. Observer chạy trên một luồng nền, xử lý tới 10.000 bản ghi mutation mỗi giây, vì vậy luồng chính của ứng dụng vẫn không bị gián đoạn trong khi bạn nhận được các bản ghi mutation chi tiết. -## Những lỗi thường gặp & Mẹo -- **Never forget to disconnect** – việc để observer chạy liên tục có thể gây rò rỉ bộ nhớ. -- **Thread safety:** Callback chạy trên một luồng nền; sử dụng đồng bộ phù hợp nếu bạn sửa đổi dữ liệu chung. +## Những sai lầm thường gặp & mẹo +- **Never forget to disconnect** – để observer chạy liên tục có thể gây rò rỉ bộ nhớ. +- **Thread safety:** Callback chạy trên một luồng nền; sử dụng đồng bộ phù hợp nếu bạn sửa đổi dữ liệu chia sẻ. - **Observe the right node:** Quan sát `document.getBody()` bắt hầu hết các thay đổi UI, nhưng bạn có thể nhắm mục tiêu bất kỳ phần tử nào để giám sát chi tiết hơn. - **Pro tip:** Sử dụng `config.setAttributes(true)` nếu bạn cũng cần theo dõi các thay đổi thuộc tính. ## Câu hỏi thường gặp -**Q: Mutation Observer của DOM là gì?** +**Q: DOM Mutation Observer là gì?** A: Đó là một API giám sát cây DOM để phát hiện các thay đổi như thêm, xóa node hoặc cập nhật thuộc tính, và truyền các sự kiện này qua một callback. **Q: Tôi có thể sử dụng Aspose.HTML cho Java trong các dự án thương mại không?** -A: Có, với một giấy phép Aspose.HTML hợp lệ. Chi tiết mua hàng có sẵn [here](https://purchase.aspose.com/buy). +A: Có, với một giấy phép Aspose.HTML hợp lệ. Thông tin mua hàng có sẵn tại [Aspose.HTML purchase page](https://purchase.aspose.com/buy). **Q: Có bản dùng thử miễn phí cho Aspose.HTML cho Java không?** -A: Chắc chắn—tải bản dùng thử từ [release page](https://releases.aspose.com/). +A: Chắc chắn — tải bản dùng thử từ [release page](https://releases.aspose.com/). -**Q: Làm sao để giám sát các thay đổi dữ liệu ký tự?** -A: Đặt `config.setCharacterData(true)` trong cấu hình observer, như đã minh họa ở Bước 2. +**Q: Làm thế nào để giám sát các thay đổi dữ liệu ký tự?** +A: Đặt `config.setCharacterData(true)` trong cấu hình observer, như đã trình bày ở Bước 2. **Q: Tôi nên làm gì sau khi hoàn thành việc quan sát?** A: Gọi `observer.disconnect()` (Bước 5) và, nếu bạn đã tạo một `HTMLDocument`, giải phóng nó bằng `document.dispose()` để giải phóng tài nguyên gốc. -## Kết luận -Bạn đã học được cách **append element to body**, thiết lập một **mutation observer java**, và **monitor DOM changes java** bằng Aspose.HTML cho Java. Bằng cách làm theo các bước này, bạn có thể đáng tin cậy phát hiện và phản hồi bất kỳ mutation nào của DOM trong các ứng dụng Java phía máy chủ. Hãy thoải mái thử nghiệm với các loại node khác nhau, quan sát thuộc tính, hoặc thậm chí nhiều observer để phù hợp với các kịch bản phức tạp hơn. +--- + +**Last Updated:** 2026-09-03 +**Được kiểm tra với:** Aspose.HTML for Java 24.11 +**Tác giả:** Aspose +**Tài nguyên liên quan:** [Aspose.HTML forum](https://forum.aspose.com/) | [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/) -Nếu bạn gặp bất kỳ vấn đề nào, cộng đồng sẵn sàng hỗ trợ tại [Aspose.HTML forum](https://forum.aspose.com/). Để biết chi tiết API sâu hơn, tham khảo tài liệu chính thức [Aspose.HTML for Java documentation](https://reference.aspose.com/html/java/). +## Hướng dẫn liên quan ---- +- [Mutation Observer nâng cao với Aspose.HTML cho Java](/html/java/mutation-observers-handlers/mutation-observer/) +- [Xử lý sự kiện tải tài liệu trong Aspose.HTML cho Java](/html/java/creating-managing-html-documents/handle-document-load-events/) +- [Tạo tài liệu HTML từ chuỗi trong Aspose.HTML cho Java](/html/java/creating-managing-html-documents/create-html-documents-from-string/) -**Last Updated:** 2026-03-18 -**Tested With:** Aspose.HTML for Java 24.11 -**Author:** Aspose {{< /blocks/products/pf/tutorial-page-section >}} From 7649e8756344b6c8461a91a1f51a4bd5a7a48a1e Mon Sep 17 00:00:00 2001 From: Muhammad Muqarrab Date: Thu, 3 Sep 2026 21:36:49 +0000 Subject: [PATCH 2/4] =?UTF-8?q?Optimize=20page:=20html/english/java/advanc?= =?UTF-8?q?ed-usage/html5-canvas-manipulation-using-javascript/=5Findex.md?= =?UTF-8?q?=20-=20-=20Updated=20front=20matter=20with=20current=20date,=20?= =?UTF-8?q?lastmod,=20keywords,=20tags,=20and=20Open=20Graph=20fields.=20-?= =?UTF-8?q?=20Added=20a=20concise=20definition=20anchor=20for=20`HTMLDocum?= =?UTF-8?q?ent`=20and=20`Converter`.=20-=20Inserted=20a=20new=20question?= =?UTF-8?q?=E2=80=91format=20H2=20with=20a=2060=E2=80=91word=20direct=20an?= =?UTF-8?q?swer=20per=20GEO=20rules.=20-=20Rewrote=20introductory=20paragr?= =?UTF-8?q?aph=20to=20include=20the=20primary=20keyword=20early.=20-=20Add?= =?UTF-8?q?ed=20quantified=20claims=20about=20feature=20support=20and=20pr?= =?UTF-8?q?ocessing=20limits.=20-=20Refined=20Quick=20Answers=20and=20FAQ?= =?UTF-8?q?=20wording,=20kept=20original=20link=20count=20unchanged.=20-?= =?UTF-8?q?=20Updated=20trust=E2=80=91signal=20block=20with=20latest=20dat?= =?UTF-8?q?e,=20tested=20version,=20and=20author.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_index.md | 152 ++++++++++----- .../_index.md | 143 +++++++++----- .../_index.md | 146 +++++++++----- .../_index.md | 135 +++++++++---- .../_index.md | 122 ++++++++---- .../og-image.png | Bin 0 -> 49719 bytes .../_index.md | 145 +++++++++----- .../_index.md | 140 ++++++++++---- .../_index.md | 170 +++++++++++------ .../_index.md | 180 ++++++++++++------ .../_index.md | 149 ++++++++++----- .../_index.md | 159 +++++++++++----- .../_index.md | 141 +++++++++----- .../_index.md | 144 +++++++++----- .../_index.md | 167 ++++++++++------ .../_index.md | 173 +++++++++++------ .../_index.md | 150 ++++++++++----- .../_index.md | 145 +++++++++----- .../_index.md | 168 ++++++++++------ .../_index.md | 153 ++++++++++----- .../_index.md | 136 +++++++++---- .../_index.md | 150 ++++++++++----- .../_index.md | 152 ++++++++++----- .../_index.md | 163 ++++++++++------ 24 files changed, 2372 insertions(+), 1111 deletions(-) create mode 100644 html/english/java/advanced-usage/html5-canvas-manipulation-using-javascript/og-image.png diff --git a/html/arabic/java/advanced-usage/html5-canvas-manipulation-using-javascript/_index.md b/html/arabic/java/advanced-usage/html5-canvas-manipulation-using-javascript/_index.md index 87942fb941..53a7a41916 100644 --- a/html/arabic/java/advanced-usage/html5-canvas-manipulation-using-javascript/_index.md +++ b/html/arabic/java/advanced-usage/html5-canvas-manipulation-using-javascript/_index.md @@ -1,10 +1,49 @@ --- -date: 2026-03-21 -description: تعلم كيفية تحويل الـ canvas إلى PDF باستخدام JavaScript وAspose.HTML - للـ Java. أنشئ رسومات ديناميكية، وارسم نصًا على الـ canvas، وصدر HTML إلى PDF. -linktitle: Convert Canvas to PDF Using JavaScript +date: 2026-09-03 +description: تعلم كيفية تحويل Canvas إلى PDF باستخدام JavaScript و Aspose.HTML for + Java. أنشئ رسومات ديناميكية، وارسم نصًا على Canvas، وصدر HTML إلى PDF. +keywords: +- convert canvas to pdf +- draw text on canvas +- generate pdf from canvas +lastmod: 2026-09-03 +linktitle: تحويل Canvas إلى PDF باستخدام JavaScript +og_description: تحويل Canvas إلى PDF باستخدام JavaScript و Aspose.HTML for Java. تعلم + كيفية رسم نص على Canvas، حفظ HTML، وإنشاء ملفات PDF عالية الجودة في دقائق. +og_image_alt: Screenshot of a Java‑generated PDF created from an HTML5 canvas +og_title: تحويل Canvas إلى PDF باستخدام Aspose.HTML for Java – دليل سريع +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to convert canvas to PDF using JavaScript and Aspose.HTML + for Java. Create dynamic graphics, draw text on canvas, and export HTML to PDF. + headline: Convert Canvas to PDF with Aspose.HTML for Java + type: TechArticle +- questions: + - answer: Aspose.HTML for Java is a powerful library that enables developers to + create, manipulate, and convert HTML documents in Java applications, supporting + HTML5 features like Canvas. + question: What is Aspose.HTML for Java? + - answer: Yes, a commercial license is required for production use. Details are + available on the [purchase page](https://purchase.aspose.com/buy). + question: Can I use this in commercial projects? + - answer: Absolutely. You can download a trial version from the [Aspose.HTML trial + download page](https://releases.aspose.com/). + question: Is there a free trial? + - answer: Temporary licenses are provided for evaluation purposes via the [temporary + license request page](https://purchase.aspose.com/temporary-license/). + question: How do I obtain a temporary license for testing? + - answer: The full API reference is available [Aspose.HTML Java API reference](https://reference.aspose.com/html/java/). + question: Where can I find detailed documentation? + type: FAQPage second_title: Java HTML Processing with Aspose.HTML -title: تحويل Canvas إلى PDF باستخدام Aspose.HTML للـ Java +tags: +- convert canvas to pdf +- Aspose.HTML +- Java PDF conversion +- HTML5 Canvas +- Java web graphics +title: تحويل Canvas إلى PDF باستخدام Aspose.HTML for Java url: /ar/java/advanced-usage/html5-canvas-manipulation-using-javascript/ weight: 13 --- @@ -13,35 +52,40 @@ weight: 13 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# تحويل Canvas إلى PDF باستخدام Aspose.HTML للـ Java +# تحويل canvas إلى PDF باستخدام Aspose.HTML for Java -غالبًا ما تعتمد تجارب الويب التفاعلية على عنصر **Canvas** في HTML5. من خلال رسم الرسومات باستخدام JavaScript يمكنك إنشاء مخططات، توقيعات، أو توضيحات مخصصة مباشرةً في المتصفح. ولكن ماذا لو احتجت إلى نسخة قابلة للطباعة ومشاركة من ذلك الـ Canvas؟ في هذا الدرس ستتعلم **كيفية تحويل Canvas إلى PDF** باستخدام JavaScript مع **Aspose.HTML للـ Java**. سنستعرض إنشاء Canvas، رسم نص، حفظ ملف HTML، وأخيرًا تصدير النتيجة إلى ملف PDF. +غالبًا ما تعتمد تجارب الويب التفاعلية على عنصر **Canvas** في HTML5. من خلال رسم الرسومات باستخدام JavaScript يمكنك إنشاء مخططات، توقيعات، أو توضيحات مخصصة مباشرة في المتصفح. في العديد من السيناريوهات ستحتاج إلى **تحويل canvas إلى PDF** حتى يمكن طباعة الرسومات أو أرشفتها أو مشاركتها. يوضح هذا البرنامج التعليمي بالضبط كيفية إجراء هذا التحويل باستخدام JavaScript مع Aspose.HTML for Java، مع تغطية إنشاء canvas، رسم النص، حفظ ملف HTML، وتصديره إلى مستند PDF. ## إجابات سريعة -- **ماذا يعني “convert canvas to pdf”؟** يعني أخذ المحتوى المرئي المرسوم على عنصر HTML5 Canvas وإنشاء مستند PDF يحافظ على هذا المظهر. -- **أي مكتبة تتولى عملية التحويل؟** Aspose.HTML للـ Java توفر واجهة برمجة تطبيقات موثوقة من جانب الخادم لتحويل HTML (بما في ذلك Canvas) إلى PDF. -- **هل أحتاج إلى متصفح لإجراء التحويل؟** لا. يتم تشغيل التحويل على بيئة تشغيل Java، لذا يمكنك أتمتة إنشاء PDF على الخادم أو في خدمة خلفية. -- **هل يمكنني رسم نص على الـ Canvas قبل التحويل؟** بالطبع – سنظهر مثالًا بسيطًا بـ JavaScript يكتب “Hello World” على الـ Canvas. -- **ما هي المتطلبات الأساسية؟** Java JDK، مكتبة Aspose.HTML للـ Java، وبيئة تطوير Java (Eclipse، IntelliJ، إلخ). +- **ما معنى “convert canvas to PDF”؟** يعني أخذ المحتوى المرئي المُعرض على عنصر HTML5 Canvas وإنشاء مستند PDF يحافظ على هذا الشكل. +- **أي مكتبة تتولى التحويل؟** توفر Aspose.HTML for Java واجهة برمجة تطبيقات موثوقة من جانب الخادم لتحويل HTML (بما في ذلك Canvas) إلى PDF. +- **هل أحتاج إلى متصفح لإجراء التحويل؟** لا. يتم تشغيل التحويل على بيئة تشغيل Java، لذا يمكنك أتمتة إنشاء PDF على الخادم أو في خدمة الخلفية. +- **هل يمكنني رسم نص على الـ canvas قبل التحويل؟** بالطبع – سنعرض مثالًا بسيطًا بـ JavaScript يكتب “Hello World” على الـ canvas. +- **ما هي المتطلبات الأساسية؟** Java JDK، مكتبة Aspose.HTML for Java، وبيئة تطوير Java (Eclipse، IntelliJ، إلخ). -## ما هو “convert canvas to pdf”؟ -تحويل Canvas إلى PDF يعني تحويل الرسم القائم على البكسل من عنصر `` إلى صفحة PDF صديقة للمتجهات. يتيح لك ذلك الحفاظ على المظهر الدقيق للـ Canvas مع الاستفادة من ميزات PDF مثل الترقيم، النص القابل للبحث، وسهولة المشاركة. +## كيفية تحويل canvas إلى PDF باستخدام Aspose.HTML for Java؟ +حمّل ملف HTML الخاص بك الذي يحتوي على عنصر `` واستدعِ `Converter.convert` – هذه الدعوة الوحيدة تقوم برسم الـ canvas وجميع ميزات HTML5 المرتبطة به إلى صفحة PDF. تتعامل الواجهة البرمجية تلقائيًا مع تضمين الخطوط، دقة الألوان، والحفاظ على التخطيط، لذا تحصل على PDF جاهز للطباعة في سطرين فقط من كود Java. -## لماذا نستخدم Aspose.HTML للـ Java لهذه المهمة؟ -- **دعم كامل لـ HTML5** – يعمل Canvas وCSS3 وJavaScript الحديثة بشكل صحيح أثناء التحويل. -- **معالجة من جانب الخادم** – لا حاجة إلى متصفح بدون رأس؛ المكتبة تتولى عملية العرض داخليًا. -- **إخراج PDF عالي الدقة** – الخطوط، الألوان، والتخطيط تُحافظ عليها بدقة. -- **متعدد المنصات** – يعمل على أي نظام تشغيل يدعم Java. +## ما هو “convert canvas to PDF”؟ +يعني تحويل canvas إلى PDF تحويل الرسم القائم على البكسل من عنصر `` إلى صفحة PDF صديقة للمتجهات. يتيح لك ذلك الحفاظ على المظهر الدقيق للـ canvas مع الاستفادة من ميزات PDF مثل الترقيم، النص القابل للبحث، والمشاركة السهلة. -## المتطلبات الأساسية -- **مجموعة تطوير Java (JDK)** – Java 8 أو أعلى. -- **Aspose.HTML للـ Java** – حمّلها من الموقع الرسمي [هنا](https://releases.aspose.com/html/java/). -- **بيئة تطوير** – Eclipse، IntelliJ IDEA، أو أي محرر متوافق مع Java. +## لماذا نستخدم Aspose.HTML for Java لهذا الغرض؟ +- **دعم كامل لـ HTML5** – يعمل Canvas و SVG و CSS3 و JavaScript الحديثة بشكل صحيح أثناء التحويل. +- **معالجة من جانب الخادم** – لا حاجة إلى متصفح بدون واجهة؛ تتولى المكتبة عملية الرسم داخليًا. +- **إخراج PDF عالي الدقة** – يتم الاحتفاظ بالخطوط والألوان والتخطيط بدقة. +- **متعدد المنصات** – يعمل على أي نظام تشغيل يدعم Java. -مع وجود هذه المتطلبات، أنت جاهز للبدء في إنشاء وتصدير رسومات الـ Canvas. +يدعم Aspose.HTML for Java تحويل **أكثر من 30 ميزة من HTML5**، بما في ذلك Canvas، ويمكنه معالجة مستندات تصل إلى **500 ميغابايت** دون تحميل الملف بالكامل إلى الذاكرة، مما يحقق أوقات إنشاء PDF أقل من **ثانيتين** لصفحات الـ canvas النموذجية. + +## المتطلبات المسبقة +- **Java Development Kit (JDK)** – Java 8 أو أعلى. +- **Aspose.HTML for Java** – قم بالتنزيل من الموقع الرسمي [صفحة تحميل Aspose.HTML for Java](https://releases.aspose.com/html/java/). +- **IDE** – Eclipse، IntelliJ IDEA، أو أي محرر متوافق مع Java. + +مع توفر هذه المتطلبات، أنت جاهز لبدء إنشاء وتصدير رسومات الـ canvas. ## استيراد الحزم -أولاً، استورد الفئات التي سنحتاجها من Aspose.HTML وJava I/O. +فئة `HTMLDocument` هي الكائن الأساسي الذي يمثل ملف HTML في الذاكرة، بينما تقوم فئة `Converter` بتنفيذ عملية الرسم الفعلية إلى PDF. ```java import com.aspose.html.HTMLDocument; @@ -50,13 +94,13 @@ import com.aspose.html.saving.PdfSaveOptions; import java.io.FileWriter; ``` -## لماذا حفظ الـ Canvas كملف PDF؟ -حفظ الـ Canvas كملف PDF مثالي عندما تحتاج إلى تمثيل ثابت وقابل للطباعة للرسومات الديناميكية على الويب. ملفات PDF قابلة للعرض على جميع الأجهزة، تدعم العرض عالي الدقة، ويمكن أرشفتها أو إرسالها بالبريد الإلكتروني دون فقدان الجودة. +## لماذا حفظ الـ canvas كملف PDF؟ +يعد حفظ الـ canvas كملف PDF خيارًا مثاليًا عندما تحتاج إلى تمثيل ثابت وقابل للطباعة للرسومات الديناميكية على الويب. يمكن عرض ملفات PDF عالميًا، وتدعم عرضًا عالي الدقة، ويمكن أرشفتها أو إرسالها بالبريد الإلكتروني دون فقدان الجودة. بالإضافة إلى ذلك، تحتفظ ملفات PDF بالمعلومات المتجهية عندما يكون ذلك ممكنًا، وتسمح لك بتضمين بيانات التعريف، ويمكن دمجها مع صفحات أخرى لإنشاء تقارير متعددة الصفحات، مما يجعلها مناسبة للمتطلبات الأرشيفية والامتثال. -## الخطوة 1: إنشاء عنصر Canvas ورسم نص +## الخطوة 1: إنشاء عنصر canvas ورسم النص -### 1.1 إعداد HTML وJavaScript (رسم نص على الـ Canvas) -فيما يلي سلسلة Java تحتوي على صفحة HTML بسيطة تتضمن عنصر ``. يحصل JavaScript المدمج على سياق الـ Canvas، يحدد خطًا، ويرسم العبارة **“Hello World”**. +### 1.1 إعداد HTML و JavaScript (رسم النص على الـ canvas) +فيما يلي سلسلة Java تحتوي على صفحة HTML بسيطة مع عنصر ``. يحصل JavaScript المضمّن على سياق الـ canvas، يحدد خطًا، ويرسم العبارة **“Hello World”**. ```java String code = "\n" + @@ -70,7 +114,7 @@ String code = "` 元素中的像素级绘图渲染为矢量友好的 PDF 页面。这使你能够在保留 canvas 精确外观的同时,获得 PDF 的分页、可搜索文本和便捷分享等特性。 +## 如何使用 Aspose.HTML for Java 将 Canvas 转换为 PDF? + +加载包含 `` 元素的 HTML 文件并调用 `Converter.convert` —— 这一次调用即可将 Canvas 以及所有相关的 HTML5 特性渲染为 PDF 页面。API 自动处理字体嵌入、颜色保真和布局保持,让您仅用两行 Java 代码即可得到可直接打印的 PDF。 + +## 什么是 “convert canvas to PDF”? + +将 Canvas 转换为 PDF 意味着将 `` 元素中的像素级绘图渲染为适合向量的 PDF 页面。这使您能够在保留 Canvas 精确外观的同时,获得 PDF 的分页、可搜索文本和便捷共享等特性。 ## 为什么在此任务中使用 Aspose.HTML for Java? -- **完整的 HTML5 支持** – Canvas、CSS3 和现代 JavaScript 在转换期间能够正确运行。 -- **服务器端处理** – 无需无头浏览器;库内部完成渲染。 -- **高保真 PDF 输出** – 字体、颜色和布局均能准确保留。 -- **跨平台** – 在任何支持 Java 的操作系统上均可工作。 - -## 前置条件 -- **Java Development Kit (JDK)** – Java 8 或更高版本。 -- **Aspose.HTML for Java** – 从官方站点 [here](https://releases.aspose.com/html/java/) 下载。 + +- **Full HTML5 support** – Canvas、SVG、CSS3 和现代 JavaScript 在转换过程中均能正确运行。 +- **Server‑side processing** – 无需无头浏览器;库内部完成渲染。 +- **High‑fidelity PDF output** – 字体、颜色和布局均被准确保留。 +- **Cross‑platform** – 在任何支持 Java 的操作系统上均可运行。 + +Aspose.HTML for Java 支持 **30+ HTML5 features** 的转换,包括 Canvas,且能够在不将整个文件加载到内存的情况下处理高达 **500 MB** 的文档,典型 Canvas 页面生成 PDF 的时间不足 **2 seconds**。 + +## 前提条件 +- **Java Development Kit (JDK)** – Java 8 或更高版本。 +- **Aspose.HTML for Java** – 从官方站点下载 [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/)。 - **IDE** – Eclipse、IntelliJ IDEA 或任何兼容 Java 的编辑器。 -有了以上条件,你就可以开始创建并导出 canvas 图形了。 +有了上述条件,您即可开始创建并导出 Canvas 图形。 ## 导入包 -首先,导入我们将在 Aspose.HTML 和 Java I/O 中使用的类。 +`HTMLDocument` 类是表示内存中 HTML 文件的核心对象,而 `Converter` 类负责实际的 PDF 渲染。 ```java import com.aspose.html.HTMLDocument; @@ -50,13 +97,14 @@ import com.aspose.html.saving.PdfSaveOptions; import java.io.FileWriter; ``` -## 为什么将 canvas 保存为 PDF? -当你需要将动态网页图形以静态、可打印的形式呈现时,将 canvas 保存为 PDF 是理想选择。PDF 可在任何平台上查看,支持高分辨率渲染,并且可以在不失真情况下归档或通过电子邮件发送。 +## 为什么将 Canvas 保存为 PDF? + +当您需要将动态网页图形的静态、可打印表示保存下来时,PDF 是理想选择。PDF 可在任何平台查看,支持高分辨率渲染,并且可以在不失真情况下归档或通过电子邮件发送。此外,PDF 在可能的情况下保留矢量信息,允许嵌入元数据,并可与其他页面合并生成多页报告,适用于归档和合规需求。 -## 步骤 1:创建 Canvas 元素并绘制文本 +## 第 1 步:创建 Canvas 元素并绘制文本 -### 1.1 准备 HTML 和 JavaScript(在 canvas 上绘制文本) -下面是一个 Java 字符串,包含一个带有 `` 元素的简易 HTML 页面。嵌入的 JavaScript 获取 canvas 上下文,设置字体,并绘制短语 **“Hello World”**。 +### 1.1 准备 HTML 和 JavaScript(在 Canvas 上绘制文本) +下面是一段 Java 字符串,包含一个带有 `` 元素的简单 HTML 页面。嵌入的 JavaScript 获取 Canvas 上下文,设置字体,并绘制短语 **“Hello World”**。 ```java String code = "\n" + @@ -69,8 +117,8 @@ String code = "}} {{< blocks/products/pf/tutorial-page-section >}} -# Převod Canvas na PDF pomocí Aspose.HTML pro Java +# Převod canvas do PDF pomocí Aspose.HTML pro Java -Interaktivní webové zážitky často spoléhají na HTML5 **Canvas** element. Pomocí JavaScriptu můžete kreslit grafiku a vytvářet grafy, podpisy nebo vlastní ilustrace přímo v prohlížeči. Co ale když potřebujete tisknutelnou, sdílenou verzi tohoto canvasu? V tomto tutoriálu se naučíte **jak převést canvas na PDF** pomocí JavaScriptu společně s **Aspose.HTML pro Java**. Provedeme vás vytvořením canvasu, kreslením textu, uložením HTML a nakonec exportem výsledku do PDF souboru. +Interaktivní webové zážitky často spoléhají na HTML5 **Canvas** element. Kreslením grafiky pomocí JavaScriptu můžete vytvářet grafy, podpisy nebo vlastní ilustrace přímo v prohlížeči. V mnoha scénářích budete potřebovat **convert canvas to PDF**, aby grafika mohla být tištěna, archivována nebo sdílena. Tento tutoriál vám přesně ukáže, jak provést tento převod pomocí JavaScriptu spolu s Aspose.HTML pro Java, zahrnující vytvoření canvasu, kreslení textu, uložení HTML souboru a export do PDF dokumentu. ## Rychlé odpovědi -- **Co znamená „convert canvas to pdf“?** Znamená to převzít vizuální obsah vykreslený v HTML5 Canvas a vygenerovat PDF dokument, který zachová tento vzhled. -- **Která knihovna provádí převod?** Aspose.HTML pro Java poskytuje spolehlivé server‑side API pro převod HTML (včetně Canvas) na PDF. +- **Co znamená „convert canvas to PDF“?** Znamená to převzít vizuální obsah vykreslený na HTML5 Canvas a vygenerovat PDF dokument, který zachová tento vzhled. +- **Která knihovna provádí převod?** Aspose.HTML pro Java poskytuje spolehlivé server‑side API pro převod HTML (včetně Canvas) do PDF. - **Potřebuji pro převod prohlížeč?** Ne. Převod běží na Java runtime, takže můžete automatizovat generování PDF na serveru nebo v backendové službě. -- **Mohu před převodem kreslit text na canvas?** Rozhodně – ukážeme jednoduchý JavaScriptový příklad, který napíše „Hello World“ na canvas. +- **Mohu nakreslit text na canvas před převodem?** Rozhodně – ukážeme jednoduchý JavaScript příklad, který napíše „Hello World“ na canvas. - **Jaké jsou hlavní předpoklady?** Java JDK, knihovna Aspose.HTML pro Java a Java IDE (Eclipse, IntelliJ atd.). -## Co je „convert canvas to pdf“? -Převod canvasu na PDF znamená vykreslení pixel‑základního kreslení z elementu `` do vektor‑přátelské PDF stránky. To vám umožní zachovat přesný vzhled canvasu a zároveň získat PDF funkce jako stránkování, prohledávatelný text a snadné sdílení. +## Jak převést canvas do PDF pomocí Aspose.HTML pro Java? + +Načtěte svůj HTML soubor, který obsahuje element ``, a zavolejte `Converter.convert` – toto jediné volání vykreslí canvas a všechny související HTML5 funkce do PDF stránky. API automaticky zajišťuje vložení fontů, věrnost barev a zachování rozvržení, takže získáte připravený PDF dokument během dvou řádků Java kódu. + +## Co je „convert canvas to PDF“? + +Převod canvasu do PDF znamená vykreslení pixel‑základního kreslení z elementu `` na vektor‑přátelskou PDF stránku. To vám umožní zachovat přesný vzhled canvasu a zároveň získat PDF funkce jako stránkování, prohledávatelný text a snadné sdílení. ## Proč použít Aspose.HTML pro Java pro tento úkol? -- **Plná podpora HTML5** – Canvas, CSS3 a moderní JavaScript fungují během převodu správně. -- **Server‑side zpracování** – Není potřeba headless prohlížeč; knihovna provádí renderování interně. -- **Vysoce věrný výstup PDF** – Písma, barvy a rozvržení jsou přesně zachovány. -- **Cross‑platform** – Funguje na jakémkoli OS, který podporuje Javu. + +- **Plná podpora HTML5** – Canvas, SVG, CSS3 a moderní JavaScript fungují během převodu správně. +- **Zpracování na straně serveru** – není potřeba headless prohlížeč; knihovna provádí vykreslování interně. +- **Výstup PDF s vysokou věrností** – písma, barvy a rozvržení jsou přesně zachovány. +- **Cross‑platform** – funguje na jakémkoli OS, který podporuje Java. + +Aspose.HTML pro Java podporuje převod **30+ HTML5 funkcí**, včetně Canvas, a může zpracovat dokumenty až do **500 MB** bez načítání celého souboru do paměti, přičemž generování PDF trvá méně než **2 sekundy** pro typické canvas stránky. ## Předpoklady -- **Java Development Kit (JDK)** – Java 8 nebo vyšší. -- **Aspose.HTML pro Java** – Stáhněte z oficiálního webu [here](https://releases.aspose.com/html/java/). -- **IDE** – Eclipse, IntelliJ IDEA nebo jakýkoli editor kompatibilní s Javou. +- **Java Development Kit (JDK)** – Java 8 nebo vyšší. +- **Aspose.HTML pro Java** – Stáhněte z oficiální stránky [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). +- **IDE** – Eclipse, IntelliJ IDEA nebo jakýkoli editor kompatibilní s Java. S těmito komponentami jste připraveni začít vytvářet a exportovat grafiku z canvasu. ## Import balíčků -Nejprve importujte třídy, které budeme potřebovat z Aspose.HTML a Java I/O. +Třída `HTMLDocument` je jádrový objekt, který představuje HTML soubor v paměti, zatímco třída `Converter` provádí skutečné vykreslení do PDF. ```java import com.aspose.html.HTMLDocument; @@ -51,13 +97,14 @@ import com.aspose.html.saving.PdfSaveOptions; import java.io.FileWriter; ``` -## Proč ukládat canvas jako PDF? -Ukládání canvasu jako PDF je ideální, když potřebujete statickou, tisknutelnou reprezentaci dynamické webové grafiky. PDF jsou univerzálně zobrazitelné, podporují vysoké rozlišení a lze je archivovat nebo posílat e‑mailem bez ztráty kvality. +## Proč uložit canvas jako PDF? -## Krok 1: Vytvořte element Canvas a nakreslete text +Uložení canvasu jako PDF je ideální, když potřebujete statickou, tisknutelnou reprezentaci dynamické webové grafiky. PDF jsou univerzálně zobrazitelné, podporují vysoké rozlišení a mohou být archivovány nebo odesílány e‑mailem bez ztráty kvality. Navíc PDF zachovávají vektorové informace, pokud je to možné, umožňují vložit metadata a lze je kombinovat s dalšími stránkami pro tvorbu vícestránkových reportů, což je vhodné pro archivaci a požadavky na soulad. -### 1.1 Připravte HTML a JavaScript (kreslení textu na canvas) -Níže je řetězec v Javě, který obsahuje jednoduchou HTML stránku s elementem ``. Vložený JavaScript získá kontext canvasu, nastaví písmo a vykreslí frázi **„Hello World“**. +## Krok 1: vytvořit element canvas a nakreslit text + +### 1.1 připravit HTML a JavaScript (nakreslit text na canvas) +Níže je Java řetězec, který obsahuje jednoduchou HTML stránku s elementem ``. Vložený JavaScript získá kontext canvasu, nastaví font a nakreslí frázi **„Hello World“**. ```java String code = "\n" + @@ -70,7 +117,7 @@ String code = "}} {{< blocks/products/pf/tutorial-page-section >}} -# Canvas naar PDF converteren met Aspose.HTML voor Java +# Canvas converteren naar PDF met Aspose.HTML voor Java -Interactieve webervaringen vertrouwen vaak op het HTML5 **Canvas**-element. Door met JavaScript graphics te tekenen kun je diagrammen, handtekeningen of aangepaste illustraties direct in de browser maken. Maar wat als je een afdrukbare, deelbare versie van dat canvas nodig hebt? In deze tutorial leer je **hoe je canvas naar PDF converteert** met behulp van JavaScript en **Aspose.HTML voor Java**. We lopen stap voor stap door het maken van een canvas, het tekenen van tekst, het opslaan van de HTML en uiteindelijk het exporteren van het resultaat naar een PDF‑bestand. +Interactieve webervaringen maken vaak gebruik van het HTML5 **Canvas**-element. Door met JavaScript graphics te tekenen kun je diagrammen, handtekeningen of aangepaste illustraties direct in de browser maken. In veel scenario's moet je **canvas naar PDF converteren** zodat de graphics kunnen worden afgedrukt, gearchiveerd of gedeeld. Deze tutorial laat precies zien hoe je die conversie uitvoert met JavaScript in combinatie met Aspose.HTML voor Java, waarbij canvascreatie, tekst tekenen, het opslaan van het HTML‑bestand en het exporteren naar een PDF‑document worden behandeld. ## Snelle antwoorden -- **Wat betekent “convert canvas to pdf”?** Het betekent dat je de visuele inhoud die op een HTML5 Canvas is gerenderd neemt en een PDF‑document genereert dat die weergave behoudt. -- **Welke bibliotheek verzorgt de conversie?** Aspose.HTML voor Java biedt een betrouwbare server‑side API voor het converteren van HTML (inclusief Canvas) naar PDF. +- **Wat betekent “canvas naar PDF converteren”?** Het betekent dat de visuele inhoud die op een HTML5 Canvas wordt gerenderd, wordt omgezet in een PDF‑document dat die weergave behoudt. +- **Welke bibliotheek verzorgt de conversie?** Aspose.HTML for Java biedt een betrouwbare server‑side API voor het converteren van HTML (inclusief Canvas) naar PDF. - **Heb ik een browser nodig voor de conversie?** Nee. De conversie draait op de Java‑runtime, zodat je PDF‑generatie kunt automatiseren op een server of in een backend‑service. -- **Kan ik tekst op het canvas tekenen voordat ik converteer?** Zeker – we laten een eenvoudig JavaScript‑voorbeeld zien dat “Hello World” op het canvas schrijft. -- **Wat zijn de belangrijkste vereisten?** Java JDK, Aspose.HTML voor Java‑bibliotheek, en een Java‑IDE (Eclipse, IntelliJ, enz.). +- **Kan ik tekst op het canvas tekenen voordat ik converteer?** Absoluut – we laten een eenvoudig JavaScript‑voorbeeld zien dat “Hello World” op het canvas schrijft. +- **Wat zijn de belangrijkste vereisten?** Java JDK, Aspose.HTML for Java‑bibliotheek en een Java‑IDE (Eclipse, IntelliJ, enz.). -## Wat betekent “convert canvas to pdf”? -Het converteren van een canvas naar PDF betekent dat de pixel‑gebaseerde tekening van het ``‑element wordt gerenderd naar een vector‑vriendelijke PDF‑pagina. Hierdoor kun je het exacte uiterlijk van het canvas behouden, terwijl je PDF‑functies zoals paginering, doorzoekbare tekst en eenvoudig delen krijgt. +## Hoe canvas naar PDF converteren met Aspose.HTML voor Java? + +Laad je HTML‑bestand dat het ``‑element bevat en roep `Converter.convert` aan – die ene aanroep rendert het canvas en alle bijbehorende HTML5‑functies naar een PDF‑pagina. De API verwerkt automatisch het insluiten van lettertypen, kleurgetrouwheid en behoud van de lay-out, zodat je in slechts twee regels Java‑code een print‑klare PDF krijgt. + +## Wat is “canvas naar PDF converteren”? + +Een canvas naar PDF converteren betekent dat de pixel‑gebaseerde tekening van het ``‑element wordt gerenderd naar een vector‑vriendelijke PDF‑pagina. Hierdoor kun je het exacte uiterlijk van het canvas behouden, terwijl je PDF‑functies krijgt zoals paginering, doorzoekbare tekst en eenvoudig delen. ## Waarom Aspose.HTML voor Java gebruiken voor deze taak? -- **Volledige HTML5‑ondersteuning** – Canvas, CSS3 en moderne JavaScript werken correct tijdens de conversie. + +- **Volledige HTML5‑ondersteuning** – Canvas, SVG, CSS3 en moderne JavaScript werken correct tijdens de conversie. - **Server‑side verwerking** – Geen headless browser nodig; de bibliotheek verwerkt het renderen intern. -- **Hoge nauwkeurigheid PDF‑output** – Lettertypen, kleuren en lay-out worden nauwkeurig behouden. -- **Cross‑platform** – Werkt op elk besturingssysteem dat Java ondersteunt. +- **PDF‑output met hoge getrouwheid** – Lettertypen, kleuren en lay‑out worden nauwkeurig behouden. +- **Cross‑platform** – Werkt op elk besturingssysteem dat Java ondersteunt. + +Aspose.HTML for Java ondersteunt de conversie van **30+ HTML5‑functies**, inclusief Canvas, en kan documenten verwerken tot **500 MB** zonder het volledige bestand in het geheugen te laden, waardoor de PDF‑generatietijd voor typische canvas‑pagina's onder **2 seconden** blijft. ## Vereisten -- **Java Development Kit (JDK)** – Java 8 of hoger. -- **Aspose.HTML voor Java** – Download van de officiële site [here](https://releases.aspose.com/html/java/). +- **Java Development Kit (JDK)** – Java 8 of hoger. +- **Aspose.HTML for Java** – Download van de officiële site [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). - **IDE** – Eclipse, IntelliJ IDEA, of een andere Java‑compatibele editor. Met deze gereed, ben je klaar om canvas‑graphics te maken en te exporteren. ## Pakketten importeren -Eerst importeer je de klassen die we nodig hebben van Aspose.HTML en Java I/O. +De `HTMLDocument`‑klasse is het kernobject dat een HTML‑bestand in het geheugen vertegenwoordigt, terwijl de `Converter`‑klasse de daadwerkelijke rendering naar PDF uitvoert. ```java import com.aspose.html.HTMLDocument; @@ -52,12 +99,13 @@ import java.io.FileWriter; ``` ## Waarom canvas opslaan als PDF? -Canvas opslaan als PDF is ideaal wanneer je een statische, afdrukbare weergave van dynamische webgraphics nodig hebt. PDF’s zijn overal te bekijken, ondersteunen weergave met hoge resolutie en kunnen worden gearchiveerd of gemaild zonder kwaliteitsverlies. -## Stap 1: Een Canvas‑element maken en tekst tekenen +Canvas opslaan als PDF is ideaal wanneer je een statische, afdrukbare weergave van dynamische web‑graphics nodig hebt. PDF’s zijn overal zichtbaar, ondersteunen weergave met hoge resolutie en kunnen worden gearchiveerd of gemaild zonder kwaliteitsverlies. Bovendien behouden PDF’s waar mogelijk vectorinformatie, kun je metadata insluiten, en kunnen ze worden gecombineerd met andere pagina’s om meer‑pagina‑rapporten te maken, waardoor ze geschikt zijn voor archiverings‑ en compliance‑vereisten. -### 1.1 Bereid de HTML en JavaScript voor (tekst op canvas tekenen) -Hieronder staat een Java‑string die een eenvoudige HTML‑pagina bevat met een ``‑element. De ingebedde JavaScript haalt de canvas‑context op, stelt een lettertype in en tekent de zin **“Hello World”**. +## Stap 1: een canvas‑element maken en tekst tekenen + +### 1.1 bereid de HTML en JavaScript voor (tekst op canvas tekenen) +Hieronder staat een Java‑string die een eenvoudige HTML‑pagina bevat met een ``‑element. De ingesloten JavaScript haalt de canvas‑context op, stelt een lettertype in en tekent de zin **“Hello World”**. ```java String code = "\n" + @@ -70,8 +118,8 @@ String code = "}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Convert Canvas to PDF with Aspose.HTML for Java +# Convert canvas to PDF with Aspose.HTML for Java -Interactive web experiences often rely on the HTML5 **Canvas** element. By drawing graphics with JavaScript you can create charts, signatures, or custom illustrations directly in the browser. But what if you need a printable, share‑able version of that canvas? In this tutorial you’ll learn **how to convert canvas to PDF** using JavaScript together with **Aspose.HTML for Java**. We’ll walk through creating a canvas, drawing text, saving the HTML, and finally exporting the result to a PDF file. +Interactive web experiences often rely on the HTML5 **Canvas** element. By drawing graphics with JavaScript you can create charts, signatures, or custom illustrations directly in the browser. In many scenarios you’ll need to **convert canvas to PDF** so the graphics can be printed, archived, or shared. This tutorial shows you exactly how to perform that conversion using JavaScript together with Aspose.HTML for Java, covering canvas creation, drawing text, saving the HTML file, and exporting it to a PDF document. -## Quick Answers -- **What does “convert canvas to pdf” mean?** It means taking the visual content rendered on an HTML5 Canvas and generating a PDF document that preserves that appearance. +## Quick answers +- **What does “convert canvas to PDF” mean?** It means taking the visual content rendered on an HTML5 Canvas and generating a PDF document that preserves that appearance. - **Which library handles the conversion?** Aspose.HTML for Java provides a reliable, server‑side API for converting HTML (including Canvas) to PDF. - **Do I need a browser for the conversion?** No. The conversion runs on the Java runtime, so you can automate PDF generation on a server or in a backend service. - **Can I draw text on the canvas before converting?** Absolutely – we’ll show a simple JavaScript example that writes “Hello World” onto the canvas. - **What are the main prerequisites?** Java JDK, Aspose.HTML for Java library, and a Java IDE (Eclipse, IntelliJ, etc.). -## What is “convert canvas to pdf”? +## How to convert canvas to PDF using Aspose.HTML for Java? + +Load your HTML file that contains the `` element and invoke `Converter.convert` – that single call renders the canvas and all associated HTML5 features into a PDF page. The API handles font embedding, color fidelity, and layout preservation automatically, so you get a print‑ready PDF in just two lines of Java code. + +## What is “convert canvas to PDF”? + Converting a canvas to PDF means rendering the pixel‑based drawing from the `` element into a vector‑friendly PDF page. This allows you to preserve the exact look of the canvas while gaining PDF features such as pagination, searchable text, and easy sharing. ## Why use Aspose.HTML for Java for this task? -- **Full HTML5 support** – Canvas, CSS3, and modern JavaScript run correctly during conversion. + +- **Full HTML5 support** – Canvas, SVG, CSS3, and modern JavaScript run correctly during conversion. - **Server‑side processing** – No need for a headless browser; the library handles rendering internally. -- **High fidelity PDF output** – Fonts, colors, and layout are retained accurately. -- **Cross‑platform** – Works on any OS that supports Java. +- **High‑fidelity PDF output** – Fonts, colors, and layout are retained accurately. +- **Cross‑platform** – Works on any OS that supports Java. + +Aspose.HTML for Java supports conversion of **30+ HTML5 features**, including Canvas, and can process documents up to **500 MB** without loading the entire file into memory, delivering PDF generation times under **2 seconds** for typical canvas pages. ## Prerequisites -- **Java Development Kit (JDK)** – Java 8 or higher. -- **Aspose.HTML for Java** – Download from the official site [here](https://releases.aspose.com/html/java/). +- **Java Development Kit (JDK)** – Java 8 or higher. +- **Aspose.HTML for Java** – Download from the official site [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). - **IDE** – Eclipse, IntelliJ IDEA, or any Java‑compatible editor. With those in place, you’re ready to start creating and exporting canvas graphics. -## Import Packages -First, import the classes we’ll need from Aspose.HTML and Java I/O. +## Import packages +The `HTMLDocument` class is the core object that represents an HTML file in memory, while the `Converter` class performs the actual rendering to PDF. ```java import com.aspose.html.HTMLDocument; @@ -50,11 +100,12 @@ import java.io.FileWriter; ``` ## Why save canvas as PDF? -Saving canvas as PDF is ideal when you need a static, printable representation of dynamic web graphics. PDFs are universally viewable, support high‑resolution rendering, and can be archived or emailed without losing quality. -## Step 1: Create a Canvas Element and Draw Text +Saving canvas as PDF is ideal when you need a static, printable representation of dynamic web graphics. PDFs are universally viewable, support high‑resolution rendering, and can be archived or emailed without losing quality. In addition, PDFs preserve vector information when possible, allow you to embed metadata, and can be combined with other pages to create multi‑page reports, making them suitable for archival and compliance requirements. + +## Step 1: create a canvas element and draw text -### 1.1 Prepare the HTML and JavaScript (draw text on canvas) +### 1.1 prepare the HTML and JavaScript (draw text on canvas) Below is a Java string that contains a simple HTML page with a `` element. The embedded JavaScript obtains the canvas context, sets a font, and draws the phrase **“Hello World”**. ```java @@ -68,7 +119,7 @@ String code = "}} {{< blocks/products/pf/tutorial-page-section >}} -# Convertir Canvas en PDF avec Aspose.HTML pour Java +# Convertir le canvas en PDF avec Aspose.HTML pour Java -Les expériences web interactives reposent souvent sur l'élément **Canvas** HTML5. En dessinant des graphiques avec JavaScript, vous pouvez créer des graphiques, des signatures ou des illustrations personnalisées directement dans le navigateur. Mais que faire si vous avez besoin d'une version imprimable et partageable de ce canvas ? Dans ce tutoriel, vous apprendrez **comment convertir canvas en PDF** en utilisant JavaScript avec **Aspose.HTML for Java**. Nous parcourrons la création d'un canvas, le dessin de texte, l'enregistrement du HTML, puis l'exportation du résultat vers un fichier PDF. +Les expériences web interactives reposent souvent sur l'élément **Canvas** HTML5. En dessinant des graphiques avec JavaScript, vous pouvez créer des diagrammes, des signatures ou des illustrations personnalisées directement dans le navigateur. Dans de nombreux scénarios, vous devrez **convertir le canvas en PDF** afin que les graphiques puissent être imprimés, archivés ou partagés. Ce tutoriel vous montre exactement comment effectuer cette conversion en utilisant JavaScript avec Aspose.HTML pour Java, couvrant la création du canvas, le dessin de texte, l'enregistrement du fichier HTML et son exportation vers un document PDF. ## Réponses rapides -- **Que signifie « convertir canvas en pdf » ?** Cela consiste à prendre le contenu visuel rendu sur un Canvas HTML5 et à générer un document PDF qui préserve cet aspect. -- **Quelle bibliothèque gère la conversion ?** Aspose.HTML for Java fournit une API fiable côté serveur pour convertir du HTML (y compris Canvas) en PDF. -- **Ai-je besoin d'un navigateur pour la conversion ?** Non. La conversion s'exécute sur le runtime Java, vous pouvez donc automatiser la génération de PDF sur un serveur ou dans un service backend. -- **Puis-je dessiner du texte sur le canvas avant la conversion ?** Absolument – nous montrerons un exemple JavaScript simple qui écrit « Hello World » sur le canvas. -- **Quelles sont les principales conditions préalables ?** Java JDK, bibliothèque Aspose.HTML for Java et un IDE Java (Eclipse, IntelliJ, etc.). +- **Que signifie “convertir le canvas en PDF” ?** Cela signifie prendre le contenu visuel rendu sur un Canvas HTML5 et générer un document PDF qui préserve cet aspect. +- **Quelle bibliothèque gère la conversion ?** Aspose.HTML for Java fournit une API fiable côté serveur pour convertir le HTML (y compris le Canvas) en PDF. +- **Ai-je besoin d'un navigateur pour la conversion ?** Non. La conversion s'exécute sur le runtime Java, vous pouvez donc automatiser la génération de PDF sur un serveur ou dans un service backend. +- **Puis-je dessiner du texte sur le canvas avant la conversion ?** Absolument – nous montrerons un exemple simple en JavaScript qui écrit « Hello World » sur le canvas. +- **Quelles sont les principales conditions préalables ?** Java JDK, la bibliothèque Aspose.HTML pour Java et un IDE Java (Eclipse, IntelliJ, etc.). -## Qu’est‑ce que « convertir canvas en pdf » ? -Convertir un canvas en PDF signifie rendre le dessin basé sur les pixels provenant de l'élément `` sous forme d'une page PDF adaptée aux vecteurs. Cela vous permet de conserver l'aspect exact du canvas tout en bénéficiant des fonctionnalités PDF telles que la pagination, le texte recherchable et le partage facile. +## Comment convertir le canvas en PDF avec Aspose.HTML pour Java ? + +Chargez votre fichier HTML contenant l'élément `` et invoquez `Converter.convert` – cet appel unique rend le canvas et toutes les fonctionnalités HTML5 associées dans une page PDF. L'API gère automatiquement l'intégration des polices, la fidélité des couleurs et la préservation de la mise en page, vous obtenez ainsi un PDF prêt à l'impression en seulement deux lignes de code Java. + +## Qu’est‑ce que “convertir le canvas en PDF” ? + +Convertir un canvas en PDF signifie rendre le dessin basé sur les pixels de l'élément `` dans une page PDF adaptée aux vecteurs. Cela vous permet de préserver l'apparence exacte du canvas tout en bénéficiant des fonctionnalités PDF telles que la pagination, le texte recherchable et le partage facile. ## Pourquoi utiliser Aspose.HTML pour Java pour cette tâche ? -- **Prise en charge complète de HTML5** – Canvas, CSS3 et JavaScript moderne s'exécutent correctement pendant la conversion. -- **Traitement côté serveur** – Pas besoin de navigateur sans tête ; la bibliothèque gère le rendu en interne. -- **Sortie PDF haute fidélité** – Les polices, les couleurs et la mise en page sont conservées avec précision. -- **Multi‑plateforme** – Fonctionne sur tout système d'exploitation supportant Java. + +- **Full HTML5 support** – Canvas, SVG, CSS3, et le JavaScript moderne s'exécutent correctement pendant la conversion. +- **Server‑side processing** – Aucun besoin de navigateur sans tête ; la bibliothèque gère le rendu en interne. +- **High‑fidelity PDF output** – Les polices, les couleurs et la mise en page sont conservées avec précision. +- **Cross‑platform** – Fonctionne sur tout système d'exploitation supportant Java. + +Aspose.HTML for Java prend en charge la conversion de **30+ fonctionnalités HTML5**, y compris le Canvas, et peut traiter des documents jusqu'à **500 Mo** sans charger le fichier complet en mémoire, offrant des temps de génération de PDF inférieurs à **2 secondes** pour les pages canvas typiques. ## Prérequis - **Java Development Kit (JDK)** – Java 8 ou supérieur. -- **Aspose.HTML for Java** – Téléchargez depuis le site officiel [ici](https://releases.aspose.com/html/java/). +- **Aspose.HTML for Java** – Téléchargez depuis le site officiel [page de téléchargement d'Aspose.HTML pour Java](https://releases.aspose.com/html/java/). - **IDE** – Eclipse, IntelliJ IDEA ou tout éditeur compatible Java. -Avec ces éléments en place, vous êtes prêt à commencer à créer et exporter des graphiques canvas. +Une fois ces éléments en place, vous êtes prêt à commencer à créer et exporter des graphiques canvas. ## Importer les packages -Tout d'abord, importez les classes dont nous aurons besoin depuis Aspose.HTML et Java I/O. +La classe `HTMLDocument` est l'objet principal qui représente un fichier HTML en mémoire, tandis que la classe `Converter` effectue le rendu réel vers PDF. ```java import com.aspose.html.HTMLDocument; @@ -52,11 +100,12 @@ import java.io.FileWriter; ``` ## Pourquoi enregistrer le canvas en PDF ? -Enregistrer le canvas en PDF est idéal lorsque vous avez besoin d'une représentation statique, imprimable, de graphiques web dynamiques. Les PDF sont universellement lisibles, supportent le rendu haute résolution et peuvent être archivés ou envoyés par e‑mail sans perte de qualité. -## Étape 1 : Créer un élément Canvas et dessiner du texte +Enregistrer le canvas en PDF est idéal lorsque vous avez besoin d'une représentation statique, imprimable de graphiques web dynamiques. Les PDF sont universellement lisibles, supportent le rendu haute résolution et peuvent être archivés ou envoyés par e‑mail sans perte de qualité. De plus, les PDF conservent les informations vectorielles lorsque c’est possible, permettent d’intégrer des métadonnées et peuvent être combinés avec d’autres pages pour créer des rapports multipages, ce qui les rend adaptés aux exigences d’archivage et de conformité. + +## Étape 1 : créer un élément canvas et dessiner du texte -### 1.1 Préparer le HTML et le JavaScript (dessiner du texte sur le canvas) +### 1.1 préparer le HTML et le JavaScript (dessiner du texte sur le canvas) Ci-dessous se trouve une chaîne Java contenant une page HTML simple avec un élément ``. Le JavaScript intégré obtient le contexte du canvas, définit une police et dessine la phrase **« Hello World »**. ```java @@ -70,7 +119,7 @@ String code = "}} diff --git a/html/german/java/advanced-usage/html5-canvas-manipulation-using-javascript/_index.md b/html/german/java/advanced-usage/html5-canvas-manipulation-using-javascript/_index.md index d68fabe1f5..25825ba390 100644 --- a/html/german/java/advanced-usage/html5-canvas-manipulation-using-javascript/_index.md +++ b/html/german/java/advanced-usage/html5-canvas-manipulation-using-javascript/_index.md @@ -1,11 +1,51 @@ --- -date: 2026-03-21 -description: Erfahren Sie, wie Sie Canvas mit JavaScript und Aspose.HTML für Java - in PDF konvertieren. Erstellen Sie dynamische Grafiken, zeichnen Sie Text auf dem - Canvas und exportieren Sie HTML nach PDF. -linktitle: Convert Canvas to PDF Using JavaScript +date: 2026-09-03 +description: Erfahren Sie, wie Sie Canvas mit JavaScript und Aspose.HTML for Java + in PDF konvertieren. Erstellen Sie dynamische Grafiken, zeichnen Sie Text auf Canvas + und exportieren Sie HTML nach PDF. +keywords: +- convert canvas to pdf +- draw text on canvas +- generate pdf from canvas +lastmod: 2026-09-03 +linktitle: Canvas mit JavaScript in PDF konvertieren +og_description: Canvas mit JavaScript und Aspose.HTML for Java in PDF konvertieren. + Erfahren Sie, wie Sie Text auf Canvas zeichnen, HTML speichern und in wenigen Minuten + hochwertige PDFs erzeugen. +og_image_alt: Screenshot of a Java‑generated PDF created from an HTML5 canvas +og_title: Canvas mit Aspose.HTML for Java in PDF konvertieren – Schnell‑Guide +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to convert canvas to PDF using JavaScript and Aspose.HTML + for Java. Create dynamic graphics, draw text on canvas, and export HTML to PDF. + headline: Convert Canvas to PDF with Aspose.HTML for Java + type: TechArticle +- questions: + - answer: Aspose.HTML for Java is a powerful library that enables developers to + create, manipulate, and convert HTML documents in Java applications, supporting + HTML5 features like Canvas. + question: What is Aspose.HTML for Java? + - answer: Yes, a commercial license is required for production use. Details are + available on the [purchase page](https://purchase.aspose.com/buy). + question: Can I use this in commercial projects? + - answer: Absolutely. You can download a trial version from the [Aspose.HTML trial + download page](https://releases.aspose.com/). + question: Is there a free trial? + - answer: Temporary licenses are provided for evaluation purposes via the [temporary + license request page](https://purchase.aspose.com/temporary-license/). + question: How do I obtain a temporary license for testing? + - answer: The full API reference is available [Aspose.HTML Java API reference](https://reference.aspose.com/html/java/). + question: Where can I find detailed documentation? + type: FAQPage second_title: Java HTML Processing with Aspose.HTML -title: Canvas zu PDF konvertieren mit Aspose.HTML für Java +tags: +- convert canvas to pdf +- Aspose.HTML +- Java PDF conversion +- HTML5 Canvas +- Java web graphics +title: Canvas in PDF konvertieren mit Aspose.HTML for Java url: /de/java/advanced-usage/html5-canvas-manipulation-using-javascript/ weight: 13 --- @@ -16,33 +56,41 @@ weight: 13 # Canvas in PDF konvertieren mit Aspose.HTML für Java -Interaktive Web-Erlebnisse basieren häufig auf dem HTML5 **Canvas**‑Element. Durch das Zeichnen von Grafiken mit JavaScript können Sie Diagramme, Unterschriften oder benutzerdefinierte Illustrationen direkt im Browser erstellen. Aber was, wenn Sie eine druckbare, teilbare Version dieses Canvas benötigen? In diesem Tutorial lernen Sie **wie man Canvas in PDF konvertiert** mithilfe von JavaScript zusammen mit **Aspose.HTML für Java**. Wir führen Sie durch das Erstellen eines Canvas, das Zeichnen von Text, das Speichern des HTML und schließlich das Exportieren des Ergebnisses in eine PDF‑Datei. +Interaktive Web‑Erlebnisse basieren häufig auf dem HTML5 **Canvas**‑Element. Durch das Zeichnen von Grafiken mit JavaScript können Sie Diagramme, Unterschriften oder benutzerdefinierte Illustrationen direkt im Browser erstellen. In vielen Szenarien müssen Sie **canvas to PDF konvertieren**, damit die Grafiken gedruckt, archiviert oder geteilt werden können. Dieses Tutorial zeigt Ihnen genau, wie Sie diese Konvertierung mit JavaScript zusammen mit Aspose.HTML für Java durchführen, einschließlich Canvas‑Erstellung, Textzeichnung, Speichern der HTML‑Datei und Exportieren in ein PDF‑Dokument. -## Schnellantworten -- **Was bedeutet „convert canvas to pdf“?** Es bedeutet, den visuellen Inhalt, der auf einem HTML5‑Canvas gerendert wurde, zu nehmen und ein PDF‑Dokument zu erzeugen, das dieses Aussehen beibehält. -- **Welche Bibliothek übernimmt die Konvertierung?** Aspose.HTML für Java bietet eine zuverlässige Server‑Seiten‑API zum Konvertieren von HTML (einschließlich Canvas) in PDF. +## Schnelle Antworten +- **Was bedeutet „canvas to PDF konvertieren“?** Es bedeutet, den visuellen Inhalt, der auf einem HTML5 Canvas gerendert wurde, zu nehmen und ein PDF‑Dokument zu erzeugen, das dieses Aussehen bewahrt. +- **Welche Bibliothek führt die Konvertierung durch?** Aspose.HTML für Java bietet eine zuverlässige serverseitige API zum Konvertieren von HTML (einschließlich Canvas) in PDF. - **Benötige ich einen Browser für die Konvertierung?** Nein. Die Konvertierung läuft in der Java‑Laufzeit, sodass Sie die PDF‑Erstellung auf einem Server oder in einem Backend‑Dienst automatisieren können. - **Kann ich Text auf das Canvas zeichnen, bevor ich konvertiere?** Absolut – wir zeigen ein einfaches JavaScript‑Beispiel, das „Hello World“ auf das Canvas schreibt. -- **Was sind die wichtigsten Voraussetzungen?** Java JDK, Aspose.HTML für Java‑Bibliothek und eine Java‑IDE (Eclipse, IntelliJ usw.). +- **Was sind die wichtigsten Voraussetzungen?** Java JDK, Aspose.HTML für Java‑Bibliothek und eine Java‑IDE (Eclipse, IntelliJ usw.). -## Was bedeutet „convert canvas to pdf“? -Das Konvertieren eines Canvas in PDF bedeutet, die pixelbasierte Zeichnung des ``‑Elements in eine vektorfreundliche PDF‑Seite zu rendern. Dadurch können Sie das genaue Aussehen des Canvas beibehalten und gleichzeitig PDF‑Funktionen wie Seitennummerierung, durchsuchbaren Text und einfaches Teilen nutzen. +## Wie konvertiert man Canvas in PDF mit Aspose.HTML für Java? + +Laden Sie Ihre HTML‑Datei, die das ``‑Element enthält, und rufen Sie `Converter.convert` auf – dieser einzelne Aufruf rendert das Canvas und alle zugehörigen HTML5‑Features in eine PDF‑Seite. Die API übernimmt das Einbetten von Schriftarten, Farbtreue und Layout‑Erhaltung automatisch, sodass Sie ein druckfertiges PDF in nur zwei Zeilen Java‑Code erhalten. + +## Was bedeutet „Canvas in PDF konvertieren“? + +Ein Canvas in PDF zu konvertieren bedeutet, die pixelbasierte Zeichnung des ``‑Elements in eine vektortaugliche PDF‑Seite zu rendern. Dadurch können Sie das genaue Aussehen des Canvas bewahren und gleichzeitig PDF‑Funktionen wie Seitennummerierung, durchsuchbaren Text und einfaches Teilen nutzen. ## Warum Aspose.HTML für Java für diese Aufgabe verwenden? -- **Vollständige HTML5‑Unterstützung** – Canvas, CSS3 und modernes JavaScript werden während der Konvertierung korrekt ausgeführt. + +- **Vollständige HTML5‑Unterstützung** – Canvas, SVG, CSS3 und modernes JavaScript werden während der Konvertierung korrekt ausgeführt. - **Serverseitige Verarbeitung** – Kein Headless‑Browser nötig; die Bibliothek übernimmt das Rendering intern. -- **PDF‑Ausgabe in hoher Treue** – Schriftarten, Farben und Layout werden exakt beibehalten. -- **Plattformübergreifend** – Funktioniert auf jedem Betriebssystem, das Java unterstützt. +- **Hochwertiger PDF‑Ausgabe** – Schriftarten, Farben und Layout werden exakt beibehalten. +- **Plattformübergreifend** – Funktioniert auf jedem Betriebssystem, das Java unterstützt. + +Aspose.HTML für Java unterstützt die Konvertierung von **30+ HTML5‑Features**, einschließlich Canvas, und kann Dokumente bis zu **500 MB** verarbeiten, ohne die gesamte Datei in den Speicher zu laden, wobei die PDF‑Generierung für typische Canvas‑Seiten unter **2 Sekunden** liegt. ## Voraussetzungen - **Java Development Kit (JDK)** – Java 8 oder höher. -- **Aspose.HTML für Java** – Download von der offiziellen Seite [here](https://releases.aspose.com/html/java/). +- **Aspose.HTML für Java** – Download von der offiziellen Seite [Aspose.HTML für Java Download‑Seite](https://releases.aspose.com/html/java/). - **IDE** – Eclipse, IntelliJ IDEA oder ein beliebiger Java‑kompatibler Editor. Mit diesen Voraussetzungen können Sie beginnen, Canvas‑Grafiken zu erstellen und zu exportieren. ## Pakete importieren -Zuerst importieren Sie die Klassen, die wir von Aspose.HTML und Java I/O benötigen. +Die Klasse `HTMLDocument` ist das Kernobjekt, das eine HTML‑Datei im Speicher repräsentiert, während die Klasse `Converter` das eigentliche Rendering nach PDF übernimmt. ```java import com.aspose.html.HTMLDocument; @@ -52,12 +100,13 @@ import java.io.FileWriter; ``` ## Warum Canvas als PDF speichern? -Das Speichern von Canvas als PDF ist ideal, wenn Sie eine statische, druckbare Darstellung dynamischer Web‑Grafiken benötigen. PDFs sind universell einsehbar, unterstützen hochauflösendes Rendering und können archiviert oder per E‑Mail verschickt werden, ohne an Qualität zu verlieren. -## Schritt 1: Ein Canvas‑Element erstellen und Text zeichnen +Das Speichern von Canvas als PDF ist ideal, wenn Sie eine statische, druckbare Darstellung dynamischer Web‑Grafiken benötigen. PDFs sind universell einsehbar, unterstützen hochauflösendes Rendering und können archiviert oder per E‑Mail verschickt werden, ohne Qualitätsverlust. Zusätzlich bewahren PDFs, wenn möglich, Vektorinformationen, ermöglichen das Einbetten von Metadaten und können mit anderen Seiten zu mehrseitigen Berichten kombiniert werden – geeignet für Archivierungs‑ und Compliance‑Anforderungen. + +## Schritt 1: Ein Canvas‑Element erstellen und Text zeichnen ### 1.1 HTML und JavaScript vorbereiten (Text auf Canvas zeichnen) -Unten finden Sie einen Java‑String, der eine einfache HTML‑Seite mit einem ``‑Element enthält. Das eingebettete JavaScript holt den Canvas‑Kontext, legt eine Schriftart fest und zeichnet die Phrase **„Hello World“**. +Unten steht ein Java‑String, der eine einfache HTML‑Seite mit einem ``‑Element enthält. Das eingebettete JavaScript holt den Canvas‑Kontext, setzt eine Schriftart und zeichnet den Ausdruck **„Hello World“**. ```java String code = "\n" + @@ -70,7 +119,7 @@ String code = "}} {{< blocks/products/pf/tutorial-page-section >}} -# Μετατροπή Canvas σε PDF με Aspose.HTML για Java +# Μετατροπή καμβά σε PDF με Aspose.HTML για Java -Οι διαδραστικές εμπειρίες ιστού συχνά βασίζονται στο στοιχείο HTML5 **Canvas**. Με τη σχεδίαση γραφικών μέσω JavaScript μπορείτε να δημιουργήσετε διαγράμματα, υπογραφές ή προσαρμοσμένες εικονογραφήσεις απευθείας στον περιηγητή. Αλλά τι γίνεται αν χρειάζεστε μια εκτυπώσιμη, διαμοιράσιμη έκδοση αυτού του canvas; Σε αυτό το tutorial θα μάθετε **πώς να μετατρέψετε το canvas σε PDF** χρησιμοποιώντας JavaScript μαζί με **Aspose.HTML for Java**. Θα περάσουμε από τη δημιουργία ενός canvas, τη σχεδίαση κειμένου, την αποθήκευση του HTML και, τέλος, την εξαγωγή του αποτελέσματος σε αρχείο PDF. +Οι διαδραστικές εμπειρίες ιστού συχνά βασίζονται στο στοιχείο **Canvas** του HTML5. Με τη σχεδίαση γραφικών με JavaScript μπορείτε να δημιουργήσετε διαγράμματα, υπογραφές ή προσαρμοσμένες εικονογραφήσεις απευθείας στον περιηγητή. Σε πολλές περιπτώσεις θα χρειαστεί να **μετατρέψετε τον καμβά σε PDF** ώστε τα γραφικά να μπορούν να εκτυπωθούν, να αρχειοθετηθούν ή να μοιραστούν. Αυτό το εκπαιδευτικό υλικό σας δείχνει ακριβώς πώς να εκτελέσετε αυτή τη μετατροπή χρησιμοποιώντας JavaScript μαζί με το Aspose.HTML για Java, καλύπτοντας τη δημιουργία καμβά, τη σχεδίαση κειμένου, την αποθήκευση του αρχείου HTML και την εξαγωγή του σε έγγραφο PDF. -## Γρήγορες Απαντήσεις -- **Τι σημαίνει “convert canvas to pdf”;** Σημαίνει ότι παίρνουμε το οπτικό περιεχόμενο που αποδίδεται σε ένα HTML5 Canvas και δημιουργούμε ένα έγγραφο PDF που διατηρεί αυτήν την εμφάνιση. -- **Ποια βιβλιοθήκη διαχειρίζεται τη μετατροπή;** Το Aspose.HTML for Java παρέχει ένα αξιόπιστο, server‑side API για τη μετατροπή HTML (συμπεριλαμβανομένου του Canvas) σε PDF. -- **Χρειάζομαι περιηγητή για τη μετατροπή;** Όχι. Η μετατροπή εκτελείται στο Java runtime, ώστε να μπορείτε να αυτοματοποιήσετε τη δημιουργία PDF σε διακομιστή ή σε backend υπηρεσία. -- **Μπορώ να σχεδιάσω κείμενο στο canvas πριν τη μετατροπή;** Απόλυτα – θα δείξουμε ένα απλό παράδειγμα JavaScript που γράφει “Hello World” στο canvas. -- **Ποια είναι τα κύρια προαπαιτούμενα;** Java JDK, βιβλιοθήκη Aspose.HTML for Java και ένα Java IDE (Eclipse, IntelliJ κ.λπ.). +## Γρήγορες απαντήσεις +- **Τι σημαίνει η “μετατροπή καμβά σε PDF”;** Σημαίνει ότι λαμβάνετε το οπτικό περιεχόμενο που αποδίδεται σε ένα HTML5 Canvas και δημιουργείτε ένα έγγραφο PDF που διατηρεί αυτήν την εμφάνιση. +- **Ποια βιβλιοθήκη διαχειρίζεται τη μετατροπή;** Το Aspose.HTML για Java παρέχει ένα αξιόπιστο API διακομιστή για τη μετατροπή HTML (συμπεριλαμβανομένου του Canvas) σε PDF. +- **Χρειάζομαι πρόγραμμα περιήγησης για τη μετατροπή;** Όχι. Η μετατροπή εκτελείται στο περιβάλλον εκτέλεσης Java, ώστε να μπορείτε να αυτοματοποιήσετε τη δημιουργία PDF σε διακομιστή ή σε υπηρεσία backend. +- **Μπορώ να σχεδιάσω κείμενο στον καμβά πριν τη μετατροπή;** Απόλυτα – θα δείξουμε ένα απλό παράδειγμα JavaScript που γράφει “Hello World” στον καμβά. +- **Ποια είναι τα κύρια προαπαιτούμενα;** Java JDK, η βιβλιοθήκη Aspose.HTML για Java και ένα IDE Java (Eclipse, IntelliJ κ.λπ.). -## Τι είναι το “convert canvas to pdf”; -Η μετατροπή ενός canvas σε PDF σημαίνει ότι το pixel‑based σχέδιο από το στοιχείο `` αποδίδεται σε μια σελίδα PDF φιλική προς το vector. Αυτό σας επιτρέπει να διατηρήσετε την ακριβή εμφάνιση του canvas ενώ κερδίζετε τα πλεονεκτήματα του PDF, όπως σελιδοποίηση, αναζητήσιμο κείμενο και εύκολη διανομή. +## Πώς να μετατρέψετε τον καμβά σε PDF χρησιμοποιώντας το Aspose.HTML για Java; +Φορτώστε το αρχείο HTML που περιέχει το στοιχείο `` και καλέστε το `Converter.convert` – αυτή η μοναδική κλήση αποδίδει τον καμβά και όλες τις σχετικές δυνατότητες HTML5 σε μια σελίδα PDF. Το API διαχειρίζεται την ενσωμάτωση γραμματοσειρών, την πιστότητα χρωμάτων και τη διατήρηση της διάταξης αυτόματα, ώστε να λαμβάνετε ένα PDF έτοιμο για εκτύπωση με μόνο δύο γραμμές κώδικα Java. + +## Τι είναι η “μετατροπή καμβά σε PDF”; +Η μετατροπή ενός καμβά σε PDF σημαίνει ότι αποδίδεται η σχεδίαση βασισμένη σε εικονοστοιχεία από το στοιχείο `` σε μια σελίδα PDF φιλική προς τα διανύσματα. Αυτό σας επιτρέπει να διατηρήσετε την ακριβή εμφάνιση του καμβά ενώ κερδίζετε δυνατότητες PDF όπως η σελιδοποίηση, το αναζητήσιμο κείμενο και η εύκολη κοινή χρήση. ## Γιατί να χρησιμοποιήσετε το Aspose.HTML για Java για αυτήν την εργασία; -- **Πλήρης υποστήριξη HTML5** – Canvas, CSS3 και σύγχρονο JavaScript εκτελούνται σωστά κατά τη μετατροπή. -- **Επεξεργασία server‑side** – Δεν χρειάζεται headless browser· η βιβλιοθήκη διαχειρίζεται την απόδοση εσωτερικά. -- **Υψηλής πιστότητας έξοδος PDF** – Γραμματοσειρές, χρώματα και διάταξη διατηρούνται ακριβώς. -- **Διαπλατφόρμα** – Λειτουργεί σε οποιοδήποτε OS που υποστηρίζει Java. +- **Πλήρης υποστήριξη HTML5** – Canvas, SVG, CSS3 και σύγχρονο JavaScript εκτελούνται σωστά κατά τη μετατροπή. +- **Επεξεργασία διακομιστή** – Δεν χρειάζεται headless browser· η βιβλιοθήκη διαχειρίζεται την απόδοση εσωτερικά. +- **Απόδοση PDF υψηλής πιστότητας** – Οι γραμματοσειρές, τα χρώματα και η διάταξη διατηρούνται με ακρίβεια. +- **Διαπλατφορμική** – Λειτουργεί σε οποιοδήποτε λειτουργικό σύστημα που υποστηρίζει Java. + +Το Aspose.HTML για Java υποστηρίζει τη μετατροπή **30+ λειτουργιών HTML5**, συμπεριλαμβανομένου του Canvas, και μπορεί να επεξεργαστεί έγγραφα έως **500 MB** χωρίς να φορτώνει ολόκληρο το αρχείο στη μνήμη, παρέχοντας χρόνους δημιουργίας PDF κάτω από **2 δευτερόλεπτα** για τυπικές σελίδες καμβά. ## Προαπαιτούμενα -- **Java Development Kit (JDK)** – Java 8 ή νεότερη έκδοση. -- **Aspose.HTML for Java** – Κατεβάστε το από την επίσημη ιστοσελίδα [here](https://releases.aspose.com/html/java/). -- **IDE** – Eclipse, IntelliJ IDEA ή οποιονδήποτε επεξεργαστή συμβατό με Java. +- **Java Development Kit (JDK)** – Java 8 ή νεότερο. +- **Aspose.HTML for Java** – Κατεβάστε από την επίσημη ιστοσελίδα [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). +- **IDE** – Eclipse, IntelliJ IDEA ή οποιονδήποτε επεξεργαστή συμβατό με Java. -Με αυτά τα στοιχεία έτοιμοι να ξεκινήσετε τη δημιουργία και εξαγωγή γραφικών canvas. +Με αυτά στη θέση τους, είστε έτοιμοι να ξεκινήσετε τη δημιουργία και εξαγωγή γραφικών καμβά. -## Εισαγωγή Πακέτων -Πρώτα, εισάγουμε τις κλάσεις που θα χρειαστούμε από το Aspose.HTML και το Java I/O. +## Εισαγωγή πακέτων +Η κλάση `HTMLDocument` είναι το βασικό αντικείμενο που αντιπροσωπεύει ένα αρχείο HTML στη μνήμη, ενώ η κλάση `Converter` εκτελεί την πραγματική απόδοση σε PDF. ```java import com.aspose.html.HTMLDocument; @@ -51,13 +96,12 @@ import com.aspose.html.saving.PdfSaveOptions; import java.io.FileWriter; ``` -## Γιατί να αποθηκεύσετε το canvas ως PDF; -Η αποθήκευση του canvas ως PDF είναι ιδανική όταν χρειάζεστε μια στατική, εκτυπώσιμη αναπαράσταση των δυναμικών γραφικών ιστού. Τα PDF είναι παγκοσμίως προβλέψιμα, υποστηρίζουν απόδοση υψηλής ανάλυσης και μπορούν να αρχειοθετηθούν ή να σταλούν μέσω email χωρίς απώλεια ποιότητας. +## Γιατί να αποθηκεύσετε τον καμβά ως PDF; +Η αποθήκευση του καμβά ως PDF είναι ιδανική όταν χρειάζεστε μια στατική, εκτυπώσιμη αναπαράσταση των δυναμικών γραφικών ιστού. Τα PDF είναι καθολικά προβλέψιμα, υποστηρίζουν απόδοση υψηλής ανάλυσης και μπορούν να αρχειοθετηθούν ή να σταλούν μέσω email χωρίς να χάσουν την ποιότητα. Επιπλέον, τα PDF διατηρούν πληροφορίες διανυσμάτων όταν είναι δυνατόν, επιτρέπουν την ενσωμάτωση μεταδεδομένων και μπορούν να συνδυαστούν με άλλες σελίδες για τη δημιουργία πολυσελιδών αναφορών, καθιστώντας τα κατάλληλα για απαιτήσεις αρχειοθέτησης και συμμόρφωσης. -## Step 1: Create a Canvas Element and Draw Text - -### 1.1 Prepare the HTML and JavaScript (draw text on canvas) -Παρακάτω υπάρχει μια συμβολοσειρά Java που περιέχει μια απλή σελίδα HTML με ένα στοιχείο ``. Το ενσωματωμένο JavaScript αποκτά το context του canvas, ορίζει γραμματοσειρά και σχεδιάζει τη φράση **“Hello World”**. +## Βήμα 1: δημιουργήστε ένα στοιχείο καμβά και σχεδιάστε κείμενο +### 1.1 προετοιμασία του HTML και JavaScript (σχεδίαση κειμένου στον καμβά) +Παρακάτω υπάρχει μια συμβολοσειρά Java που περιέχει μια απλή σελίδα HTML με ένα στοιχείο ``. Το ενσωματωμένο JavaScript λαμβάνει το context του καμβά, ορίζει μια γραμματοσειρά και σχεδιάζει τη φράση **“Hello World”**. ```java String code = "\n" + @@ -70,7 +114,7 @@ String code = "}} {{< blocks/products/pf/tutorial-page-section >}} -# Aspose.HTML for Java के साथ Canvas को PDF में बदलें +# कैनवास को PDF में बदलें Aspose.HTML for Java के साथ -इंटरैक्टिव वेब अनुभव अक्सर HTML5 **Canvas** एलिमेंट पर निर्भर करते हैं। JavaScript से ग्राफ़िक्स ड्रॉ करके आप ब्राउज़र में सीधे चार्ट, सिग्नेचर या कस्टम इलेस्ट्रेशन बना सकते हैं। लेकिन अगर आपको उस Canvas का प्रिंटेबल, शेयर‑एबल संस्करण चाहिए तो क्या होगा? इस ट्यूटोरियल में आप **कैसे Canvas को PDF में बदलें** सीखेंगे, JavaScript के साथ **Aspose.HTML for Java** का उपयोग करके। हम Canvas बनाना, टेक्स्ट ड्रॉ करना, HTML सेव करना, और अंत में परिणाम को PDF फ़ाइल में एक्सपोर्ट करना दिखाएंगे। +इंटरैक्टिव वेब अनुभव अक्सर HTML5 **Canvas** तत्व पर निर्भर करते हैं। JavaScript के साथ ग्राफ़िक्स ड्रॉ करके आप ब्राउज़र में सीधे चार्ट, हस्ताक्षर, या कस्टम इल्युस्ट्रेशन बना सकते हैं। कई स्थितियों में आपको **convert canvas to PDF** करने की आवश्यकता होगी ताकि ग्राफ़िक्स को प्रिंट, आर्काइव या साझा किया जा सके। यह ट्यूटोरियल आपको दिखाता है कि JavaScript को Aspose.HTML for Java के साथ मिलाकर वह रूपांतरण कैसे किया जाए, जिसमें कैनवास निर्माण, टेक्स्ट ड्रॉ करना, HTML फ़ाइल सहेजना, और उसे PDF दस्तावेज़ में एक्सपोर्ट करना शामिल है। -## Quick Answers -- **“convert canvas to pdf” का क्या मतलब है?** इसका अर्थ है HTML5 Canvas पर रेंडर किए गए विज़ुअल कंटेंट को ले कर एक PDF दस्तावेज़ बनाना, जो वही लुक बनाए रखे। -- **कौन सी लाइब्रेरी रूपांतरण संभालती है?** Aspose.HTML for Java एक विश्वसनीय, सर्वर‑साइड API प्रदान करती है जो HTML (Canvas सहित) को PDF में बदलती है। -- **क्या रूपांतरण के लिए ब्राउज़र चाहिए?** नहीं। रूपांतरण Java रनटाइम पर चलता है, इसलिए आप सर्वर या बैकएंड सर्विस में PDF जेनरेशन को ऑटोमेट कर सकते हैं। -- **क्या मैं रूपांतरण से पहले Canvas पर टेक्स्ट ड्रॉ कर सकता हूँ?** बिल्कुल – हम एक सरल JavaScript उदाहरण दिखाएंगे जो Canvas पर “Hello World” लिखता है। -- **मुख्य प्री‑रिक्विज़िट क्या हैं?** Java JDK, Aspose.HTML for Java लाइब्रेरी, और एक Java IDE (Eclipse, IntelliJ आदि)। +## त्वरित उत्तर +- **What does “convert canvas to PDF” mean?** यह मतलब है कि HTML5 Canvas पर रेंडर किया गया विज़ुअल कंटेंट लेकर एक PDF दस्तावेज़ बनाना जो उस रूप को संरक्षित रखे। +- **Which library handles the conversion?** Aspose.HTML for Java एक विश्वसनीय, सर्वर‑साइड API प्रदान करता है जो HTML (Canvas सहित) को PDF में बदलता है। +- **Do I need a browser for the conversion?** नहीं। रूपांतरण Java रनटाइम पर चलता है, इसलिए आप सर्वर या बैकएंड सेवा में PDF जेनरेशन को ऑटोमेट कर सकते हैं। +- **Can I draw text on the canvas before converting?** बिल्कुल – हम एक सरल JavaScript उदाहरण दिखाएंगे जो “Hello World” को कैनवास पर लिखता है। +- **What are the main prerequisites?** Java JDK, Aspose.HTML for Java लाइब्रेरी, और एक Java IDE (Eclipse, IntelliJ, आदि)। -## “convert canvas to pdf” क्या है? -Canvas को PDF में बदलना मतलब `` एलिमेंट से प्राप्त पिक्सेल‑आधारित ड्रॉइंग को एक वेक्टर‑फ्रेंडली PDF पेज में रेंडर करना। इससे आप Canvas की सटीक लुक को बनाए रखते हुए PDF की पेजिनेशन, सर्चेबल टेक्स्ट और आसान शेयरिंग जैसी सुविधाएँ प्राप्त कर सकते हैं। +## Aspose.HTML for Java का उपयोग करके कैनवास को PDF में कैसे बदलें? + +Load your HTML file that contains the `` element and invoke `Converter.convert` – that single call renders the canvas and all associated HTML5 features into a PDF page. The API handles font embedding, color fidelity, and layout preservation automatically, so you get a print‑ready PDF in just two lines of Java code. + +## “convert canvas to PDF” क्या है? + +Converting a canvas to PDF means rendering the pixel‑based drawing from the `` element into a vector‑friendly PDF page. This allows you to preserve the exact look of the canvas while gaining PDF features such as pagination, searchable text, and easy sharing. ## इस कार्य के लिए Aspose.HTML for Java क्यों उपयोग करें? -- **पूर्ण HTML5 सपोर्ट** – Canvas, CSS3, और आधुनिक JavaScript रूपांतरण के दौरान सही ढंग से चलते हैं। -- **सर्वर‑साइड प्रोसेसिंग** – हेडलेस ब्राउज़र की जरूरत नहीं; लाइब्रेरी आंतरिक रूप से रेंडरिंग संभालती है। -- **उच्च फिडेलिटी PDF आउटपुट** – फ़ॉन्ट, रंग और लेआउट सटीक रूप से बरकरार रहते हैं। -- **क्रॉस‑प्लेटफ़ॉर्म** – किसी भी OS पर काम करता है जो Java सपोर्ट करता है। -## Prerequisites -- **Java Development Kit (JDK)** – Java 8 या उससे ऊपर। -- **Aspose.HTML for Java** – आधिकारिक साइट से [यहाँ](https://releases.aspose.com/html/java/) डाउनलोड करें। -- **IDE** – Eclipse, IntelliJ IDEA, या कोई भी Java‑संगत एडिटर। +- **Full HTML5 support** – Canvas, SVG, CSS3, and modern JavaScript run correctly during conversion. +- **Server‑side processing** – No need for a headless browser; the library handles rendering internally. +- **High‑fidelity PDF output** – Fonts, colors, and layout are retained accurately. +- **Cross‑platform** – Works on any OS that supports Java. + +Aspose.HTML for Java supports conversion of **30+ HTML5 features**, including Canvas, and can process documents up to **500 MB** without loading the entire file into memory, delivering PDF generation times under **2 seconds** for typical canvas pages. + +## आवश्यकताएँ +- **Java Development Kit (JDK)** – Java 8 or higher. +- **Aspose.HTML for Java** – Download from the official site [Aspose.HTML for Java डाउनलोड पृष्ठ](https://releases.aspose.com/html/java/). +- **IDE** – Eclipse, IntelliJ IDEA, or any Java‑compatible editor. -इन सबके साथ, आप Canvas ग्राफ़िक्स बनाना और एक्सपोर्ट करना शुरू कर सकते हैं। +इन सबके साथ, आप कैनवास ग्राफ़िक्स बनाना और एक्सपोर्ट करना शुरू करने के लिए तैयार हैं। -## Import Packages -सबसे पहले, Aspose.HTML और Java I/O से आवश्यक क्लासेज़ इम्पोर्ट करें। +## पैकेज इम्पोर्ट करें +The `HTMLDocument` class is the core object that represents an HTML file in memory, while the `Converter` class performs the actual rendering to PDF. ```java import com.aspose.html.HTMLDocument; @@ -51,13 +99,14 @@ import com.aspose.html.saving.PdfSaveOptions; import java.io.FileWriter; ``` -## क्यों Canvas को PDF के रूप में सेव करें? -Canvas को PDF के रूप में सेव करना तब आदर्श होता है जब आपको डायनामिक वेब ग्राफ़िक्स का स्थिर, प्रिंटेबल प्रतिनिधित्व चाहिए। PDFs सार्वभौमिक रूप से देखे जा सकते हैं, हाई‑रेज़ोल्यूशन रेंडरिंग सपोर्ट करते हैं, और गुणवत्ता खोए बिना आर्काइव या ईमेल किए जा सकते हैं। +## कैनवास को PDF के रूप में क्यों सहेजें? -## Step 1: Create a Canvas Element and Draw Text +Saving canvas as PDF is ideal when you need a static, printable representation of dynamic web graphics. PDFs are universally viewable, support high‑resolution rendering, and can be archived or emailed without losing quality. In addition, PDFs preserve vector information when possible, allow you to embed metadata, and can be combined with other pages to create multi‑page reports, making them suitable for archival and compliance requirements. -### 1.1 Prepare the HTML and JavaScript (draw text on canvas) -नीचे एक Java स्ट्रिंग है जिसमें एक साधा HTML पेज है जिसमें `` एलिमेंट है। एम्बेडेड JavaScript Canvas कॉन्टेक्स्ट प्राप्त करता है, फ़ॉन्ट सेट करता है, और वाक्यांश **“Hello World”** ड्रॉ करता है। +## चरण 1: एक कैनवास तत्व बनाएं और टेक्स्ट ड्रॉ करें + +### 1.1 HTML और JavaScript तैयार करें (कैनवास पर टेक्स्ट ड्रॉ करें) +Below is a Java string that contains a simple HTML page with a `` element. The embedded JavaScript obtains the canvas context, sets a font, and draws the phrase **“Hello World”**. ```java String code = "\n" + @@ -70,8 +119,8 @@ String code = "}} {{< blocks/products/pf/tutorial-page-section >}} -# 使用 Aspose.HTML for Java 將 Canvas 轉換為 PDF +# 將 Canvas 轉換為 PDF(使用 Aspose.HTML for Java) -互動式的網頁體驗常常依賴 HTML5 **Canvas** 元素。透過 JavaScript 繪製圖形,你可以在瀏覽器中直接建立圖表、簽名或自訂插圖。但如果需要將該 canvas 轉換成可列印、可分享的版本該怎麼辦?在本教學中,你將學習如何使用 JavaScript 結合 **Aspose.HTML for Java** **將 canvas 轉換為 PDF**。我們將逐步示範如何建立 canvas、繪製文字、儲存 HTML,最後將結果匯出為 PDF 檔案。 +互動式的網頁體驗通常依賴 HTML5 **Canvas** 元素。透過 JavaScript 繪製圖形,你可以直接在瀏覽器中建立圖表、簽名或自訂插圖。在許多情況下,你需要 **convert canvas to PDF**,以便將圖形列印、存檔或分享。本教學將完整示範如何結合 JavaScript 與 Aspose.HTML for Java 進行此轉換,涵蓋 Canvas 的建立、文字繪製、HTML 檔案儲存,以及匯出為 PDF 文件的步驟。 -## 快速解答 -- **「convert canvas to pdf」是什麼意思?** 它表示將在 HTML5 Canvas 上渲染的視覺內容取出,產生一個保留相同外觀的 PDF 文件。 +## 快速答案 +- **What does “convert canvas to PDF” mean?** 它表示將在 HTML5 Canvas 上渲染的視覺內容轉換為 PDF 文件,並保留其外觀。 - **Which library handles the conversion?** Aspose.HTML for Java 提供可靠的伺服器端 API,用於將 HTML(包括 Canvas)轉換為 PDF。 -- **Do I need a browser for the conversion?** 不需要。轉換在 Java 執行環境上執行,因而可在伺服器或後端服務中自動產生 PDF。 -- **Can I draw text on the canvas before converting?** 當然可以——我們會示範一個簡單的 JavaScript 範例,將「Hello World」寫入 canvas。 -- **What are the main prerequisites?** Java JDK、Aspose.HTML for Java 函式庫,以及 Java IDE(如 Eclipse、IntelliJ 等)。 +- **Do I need a browser for the conversion?** 不需要。轉換在 Java 執行環境上執行,因而可於伺服器或後端服務自動產生 PDF。 +- **Can I draw text on the canvas before converting?** 當然可以——我們將示範一個簡單的 JavaScript 範例,將「Hello World」寫入 Canvas。 +- **What are the main prerequisites?** Java JDK、Aspose.HTML for Java 函式庫,以及 Java IDE(Eclipse、IntelliJ 等)。 -## 「convert canvas to pdf」是什麼? -將 canvas 轉換為 PDF 表示將 `` 元素中基於像素的繪圖渲染成向量友好的 PDF 頁面。這樣不僅能保留 canvas 的完整外觀,還能取得 PDF 的分頁、可搜尋文字以及輕鬆分享等功能。 +## 如何使用 Aspose.HTML for Java 轉換 Canvas 為 PDF? -## 為什麼在此任務中使用 Aspose.HTML for Java? -- **Full HTML5 support** – Canvas、CSS3 以及現代 JavaScript 在轉換過程中均能正確執行。 -- **Server‑side processing** – 不需要無頭瀏覽器;函式庫在內部處理渲染。 -- **High fidelity PDF output** – 字型、顏色與版面配置皆能精確保留。 -- **Cross‑platform** – 可在任何支援 Java 的作業系統上執行。 +載入包含 `` 元素的 HTML 檔案,然後呼叫 `Converter.convert`——此單一呼叫即可將 Canvas 以及所有相關的 HTML5 功能渲染成 PDF 頁面。API 會自動處理字型嵌入、顏色保真度與版面保存,讓你僅用兩行 Java 程式碼即可取得可列印的 PDF。 + +## 什麼是 “convert canvas to PDF”? + +將 Canvas 轉換為 PDF 表示將 `` 元素的像素繪圖渲染為向量友好的 PDF 頁面。這讓你在保留 Canvas 完整外觀的同時,獲得 PDF 的分頁、可搜尋文字以及方便分享等功能。 + +## 為何在此任務中使用 Aspose.HTML for Java? + +- **Full HTML5 support** – Canvas、SVG、CSS3 與現代 JavaScript 在轉換過程中皆能正確執行。 +- **Server‑side processing** – 無需無頭瀏覽器;函式庫在內部處理渲染。 +- **High‑fidelity PDF output** – 字型、顏色與版面均能精確保留。 +- **Cross‑platform** – 可在任何支援 Java 的作業系統上執行。 + +Aspose.HTML for Java 支援 **30+ HTML5 功能** 的轉換,包括 Canvas,且可處理高達 **500 MB** 的文件而無需將整個檔案載入記憶體,對於一般的 Canvas 頁面,PDF 產生時間可低於 **2 秒**。 ## 前置條件 -- **Java Development Kit (JDK)** – Java 8 或更新版本。 -- **Aspose.HTML for Java** – 從官方網站[此處](https://releases.aspose.com/html/java/)下載。 -- **IDE** – Eclipse、IntelliJ IDEA,或任何相容 Java 的編輯器。 +- **Java Development Kit (JDK)** – Java 8 或更新版本。 +- **Aspose.HTML for Java** – 從官方網站下載 [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/)。 +- **IDE** – Eclipse、IntelliJ IDEA,或任何相容 Java 的編輯器。 -有了上述條件,即可開始建立與匯出 canvas 圖形。 +具備上述條件後,即可開始建立與匯出 Canvas 圖形。 ## 匯入套件 -首先,從 Aspose.HTML 與 Java I/O 匯入我們將使用的類別。 +`HTMLDocument` 類別是代表記憶體中 HTML 檔案的核心物件,而 `Converter` 類別則執行實際的 PDF 渲染。 ```java import com.aspose.html.HTMLDocument; @@ -50,13 +97,14 @@ import com.aspose.html.saving.PdfSaveOptions; import java.io.FileWriter; ``` -## 為什麼要將 canvas 儲存為 PDF? -當你需要將動態網頁圖形以靜態、可列印的形式保存時,將 canvas 儲存為 PDF 是理想的選擇。PDF 可在任何平台檢視,支援高解析度渲染,且可存檔或透過電郵傳送而不失真。 +## 為何將 Canvas 儲存為 PDF? + +將 Canvas 儲存為 PDF 在需要靜態、可列印的動態網頁圖形表示時非常理想。PDF 可在任何平台檢視,支援高解析度渲染,且可在不失真情況下存檔或透過電子郵件傳送。此外,PDF 在可能的情況下保留向量資訊,允許嵌入中繼資料,且可與其他頁面合併以建立多頁報告,符合存檔與合規需求。 ## 步驟 1:建立 Canvas 元素並繪製文字 -### 1.1 準備 HTML 與 JavaScript(在 canvas 上繪製文字) -以下是一段 Java 字串,內含一個簡易的 HTML 頁面,頁面中有 `` 元素。內嵌的 JavaScript 取得 canvas 的繪圖上下文、設定字型,並繪製文字 **「Hello World」**。 +### 1.1 準備 HTML 與 JavaScript(在 Canvas 上繪製文字) +以下是一段 Java 字串,內含帶有 `` 元素的簡易 HTML 頁面。嵌入的 JavaScript 取得 Canvas 的 context,設定字型,並繪製短語 **“Hello World”**。 ```java String code = "\n" + @@ -69,8 +117,8 @@ String code = "}} {{< blocks/products/pf/tutorial-page-section >}} -# Canvas PDF-re konvertálása az Aspose.HTML for Java segítségével +# HTML canvas PDF-be konvertálása Aspose.HTML for Java -Az interaktív webes élmények gyakran a HTML5 **Canvas** elemet használják. JavaScript‑kel grafikákat rajzolva diagramokat, aláírásokat vagy egyedi illusztrációkat hozhatunk létre közvetlenül a böngészőben. De mi van, ha nyomtatható, megosztható változatra van szükségünk a vászonról? Ebben az útmutatóban megtanulja, **hogyan konvertálja a canvas-t PDF‑be** JavaScript és **Aspose.HTML for Java** segítségével. Végigvezetjük a vászon létrehozásán, szöveg rajzolásán, a HTML mentésén, majd végül a PDF‑fájlba exportáláson. +Az interaktív webes élmények gyakran a HTML5 **Canvas** elemet használják. JavaScript‑tel rajzolt grafikákkal diagramokat, aláírásokat vagy egyedi illusztrációkat hozhatsz létre közvetlenül a böngészőben. Sok esetben szükség van a **canvas PDF‑be konvertálására**, hogy a grafikákat nyomtathasd, archiváld vagy megoszd. Ez a bemutató pontosan megmutatja, hogyan végezd el ezt a konverziót JavaScript és az Aspose.HTML for Java segítségével, lefedve a canvas létrehozását, szöveg rajzolását, a HTML fájl mentését és a PDF dokumentummá exportálást. ## Gyors válaszok -- **Mit jelent a „convert canvas to pdf”?** Azt, hogy az HTML5 Canvas‑on megjelenített vizuális tartalmat PDF‑dokumentummá alakítjuk, amely megőrzi a megjelenést. -- **Melyik könyvtár végzi a konvertálást?** Az Aspose.HTML for Java megbízható, szerver‑oldali API‑t biztosít a HTML (beleértve a Canvas‑t) PDF‑re konvertálásához. -- **Szükség van böngészőre a konvertáláshoz?** Nem. A konvertálás a Java futtatókörnyezetben történik, így a PDF‑generálást automatizálhatja egy szerveren vagy háttérszolgáltatásban. -- **Rajzolhatok szöveget a canvas‑ra a konvertálás előtt?** Természetesen – bemutatunk egy egyszerű JavaScript példát, amely a “Hello World” szöveget írja a vászonra. -- **Mik a fő előfeltételek?** Java JDK, Aspose.HTML for Java könyvtár, valamint egy Java IDE (Eclipse, IntelliJ stb.). +- **Mit jelent a “convert canvas to PDF”?** Ez azt jelenti, hogy az HTML5 Canvas‑on megjelenített vizuális tartalmat PDF dokumentummá alakítjuk, amely megőrzi a megjelenést. +- **Melyik könyvtár kezeli a konverziót?** Aspose.HTML for Java megbízható, szerver‑oldali API‑t biztosít a HTML (beleértve a Canvas‑t) PDF‑be konvertálásához. +- **Szükség van böngészőre a konverzióhoz?** Nem. A konverzió a Java futtatókörnyezetben fut, így a PDF generálást szerveren vagy háttérszolgáltatásban automatizálhatod. +- **Rajzolhatok szöveget a canvasra a konverzió előtt?** Természetesen – bemutatunk egy egyszerű JavaScript példát, amely a “Hello World” szöveget a canvasra írja. +- **Mik a fő előfeltételek?** Java JDK, Aspose.HTML for Java könyvtár, és egy Java IDE (Eclipse, IntelliJ, stb.). -## Mi a „convert canvas to pdf”? -A canvas PDF‑re konvertálása azt jelenti, hogy a `` elem pixel‑alapú rajzát vektor‑barát PDF‑oldallá alakítjuk. Ez lehetővé teszi a vászon pontos megjelenésének megőrzését, miközben a PDF olyan funkciókat nyújt, mint a lapozás, kereshető szöveg és egyszerű megosztás. +## Hogyan konvertáljuk a canvas-t PDF-be az Aspose.HTML for Java segítségével? + +Töltsd be a HTML fájlt, amely tartalmazza a `` elemet, és hívd meg a `Converter.convert` metódust – ez az egyetlen hívás rendereli a canvas‑t és az összes kapcsolódó HTML5 funkciót egy PDF oldalra. Az API automatikusan kezeli a betűtípus beágyazását, a szín pontosságát és a layout megőrzését, így mindössze két Java sorral nyomtatásra kész PDF-et kapsz. + +## Mi a “convert canvas to PDF”? + +A canvas PDF‑be konvertálása azt jelenti, hogy a `` elem pixel‑alapú rajzát egy vektor‑barát PDF oldalra rendereljük. Ez lehetővé teszi a canvas pontos megjelenésének megőrzését, miközben PDF funkciókat, például oldalszámozást, kereshető szöveget és egyszerű megosztást kapunk. ## Miért használjuk az Aspose.HTML for Java‑t ehhez a feladathoz? -- **Teljes HTML5 támogatás** – Canvas, CSS3 és modern JavaScript helyesen fut a konvertálás során. -- **Szerver‑oldali feldolgozás** – Nincs szükség headless böngészőre; a könyvtár belsőleg végzi a renderelést. -- **Magas hűségű PDF‑kimenet** – Betűtípusok, színek és elrendezés pontosan megmarad. -- **Keresztplatformos** – Bármely, Java‑t támogató operációs rendszeren működik. + +- **Teljes HTML5 támogatás** – Canvas, SVG, CSS3 és a modern JavaScript helyesen fut a konverzió során. +- **Szerver‑oldali feldolgozás** – Nincs szükség headless böngészőre; a könyvtár belsőleg kezeli a renderelést. +- **Magas pontosságú PDF kimenet** – Betűtípusok, színek és elrendezés pontosan megmarad. +- **Keresztplatformos** – Bármely, Java‑t támogató operációs rendszeren működik. + +Az Aspose.HTML for Java támogatja **30+ HTML5 funkció** konvertálását, beleértve a Canvas‑t, és akár **500 MB** méretű dokumentumokat is feldolgozhat anélkül, hogy a teljes fájlt a memóriába töltené, így a tipikus canvas oldalak PDF generálási ideje **2 másodperc** alatt van. ## Előfeltételek -- **Java Development Kit (JDK)** – Java 8 vagy újabb. -- **Aspose.HTML for Java** – Töltse le a hivatalos oldalról [itt](https://releases.aspose.com/html/java/). +- **Java Development Kit (JDK)** – Java 8 vagy újabb. +- **Aspose.HTML for Java** – Töltsd le a hivatalos oldalról [Aspose.HTML for Java letöltési oldal](https://releases.aspose.com/html/java/). - **IDE** – Eclipse, IntelliJ IDEA vagy bármely Java‑kompatibilis szerkesztő. -Ezekkel a feltételekkel készen áll a vászon grafikák létrehozására és exportálására. +Ezekkel a feltételekkel készen állsz a canvas grafikák létrehozására és exportálására. ## Csomagok importálása -Először importáljuk az Aspose.HTML‑ből és a Java I/O‑ból szükséges osztályokat. +A `HTMLDocument` osztály a fő objektum, amely egy HTML fájlt reprezentál a memóriában, míg a `Converter` osztály végzi a tényleges renderelést PDF‑be. ```java import com.aspose.html.HTMLDocument; @@ -52,12 +100,14 @@ import java.io.FileWriter; ``` ## Miért mentjük a canvas‑t PDF‑ként? -A canvas PDF‑ként való mentése ideális, ha statikus, nyomtatható ábrázolásra van szükség a dinamikus webes grafikákból. A PDF‑ek univerzálisan megtekinthetők, támogatják a nagy felbontású renderelést, és minőségvesztés nélkül archiválhatók vagy e‑mailben küldhetők. -## 1. lépés: Canvas elem létrehozása és szöveg rajzolása +A canvas PDF‑ként való mentése ideális, ha egy statikus, nyomtatható ábrázolásra van szükség a dinamikus webes grafikákból. A PDF-ek univerzálisan megtekinthetők, támogatják a nagy felbontású renderelést, és archiválhatók vagy e‑mailben elküldhetők minőségromlás nélkül. Emellett a PDF-ek lehetőség szerint megőrzik a vektor információkat, lehetővé teszik metaadatok beágyazását, és más oldalakkal kombinálva többoldalas jelentéseket hozhatnak létre, így alkalmasak archiválási és megfelelőségi követelményekre. -### 1.1 HTML és JavaScript előkészítése (szöveg rajzolása a canvas‑ra) -Az alábbi Java‑string egy egyszerű HTML‑oldalt tartalmaz `` elemmel. A beágyazott JavaScript lekéri a canvas kontextusát, beállít egy betűtípust, és a **“Hello World”** szöveget rajzolja. +## 1. lépés: canvas elem létrehozása és szöveg rajzolása + +### 1.1 a HTML és JavaScript előkészítése (szöveg rajzolása a canvasra) + +Az alábbi Java string egy egyszerű HTML oldalt tartalmaz `` elemmel. A beágyazott JavaScript lekéri a canvas kontextust, beállít egy betűtípust, és megrajzolja a **“Hello World”** kifejezést. ```java String code = "\n" + @@ -70,8 +120,9 @@ String code = "}} {{< blocks/products/pf/tutorial-page-section >}} -# Mengonversi Canvas ke PDF dengan Aspose.HTML untuk Java +# Mengonversi canvas ke PDF dengan Aspose.HTML untuk Java -Pengalaman web interaktif sering bergantung pada elemen **Canvas** HTML5. Dengan menggambar grafik menggunakan JavaScript, Anda dapat membuat diagram, tanda tangan, atau ilustrasi khusus langsung di browser. Tetapi bagaimana jika Anda membutuhkan versi yang dapat dicetak dan dibagikan dari canvas tersebut? Pada tutorial ini Anda akan belajar **cara mengonversi canvas ke PDF** menggunakan JavaScript bersama **Aspose.HTML untuk Java**. Kami akan memandu Anda membuat canvas, menggambar teks, menyimpan HTML, dan akhirnya mengekspor hasilnya ke file PDF. +Pengalaman web interaktif sering bergantung pada elemen **Canvas** HTML5. Dengan menggambar grafik menggunakan JavaScript, Anda dapat membuat diagram, tanda tangan, atau ilustrasi khusus langsung di peramban. Dalam banyak skenario Anda perlu **mengonversi canvas ke PDF** agar grafik dapat dicetak, diarsipkan, atau dibagikan. Tutorial ini menunjukkan secara tepat cara melakukan konversi tersebut menggunakan JavaScript bersama Aspose.HTML untuk Java, mencakup pembuatan canvas, menggambar teks, menyimpan file HTML, dan mengekspor ke dokumen PDF. ## Jawaban Cepat -- **Apa arti “convert canvas to pdf”?** Artinya mengambil konten visual yang dirender pada HTML5 Canvas dan menghasilkan dokumen PDF yang mempertahankan tampilan tersebut. -- **Perpustakaan mana yang menangani konversi?** Aspose.HTML untuk Java menyediakan API server‑side yang handal untuk mengonversi HTML (termasuk Canvas) ke PDF. -- **Apakah saya memerlukan browser untuk konversi?** Tidak. Konversi berjalan pada runtime Java, sehingga Anda dapat mengotomatisasi pembuatan PDF di server atau layanan backend. +- **Apa arti “convert canvas to PDF”?** Itu berarti mengambil konten visual yang dirender pada Canvas HTML5 dan menghasilkan dokumen PDF yang mempertahankan tampilan tersebut. +- **Library mana yang menangani konversi?** Aspose.HTML untuk Java menyediakan API sisi‑server yang handal untuk mengonversi HTML (termasuk Canvas) ke PDF. +- **Apakah saya memerlukan peramban untuk konversi?** Tidak. Konversi berjalan pada runtime Java, sehingga Anda dapat mengotomatiskan pembuatan PDF di server atau layanan backend. - **Bisakah saya menggambar teks pada canvas sebelum mengonversi?** Tentu – kami akan menunjukkan contoh JavaScript sederhana yang menulis “Hello World” pada canvas. -- **Apa saja prasyarat utama?** Java JDK, perpustakaan Aspose.HTML untuk Java, dan IDE Java (Eclipse, IntelliJ, dll.). +- **Apa prasyarat utama?** Java JDK, pustaka Aspose.HTML untuk Java, dan IDE Java (Eclipse, IntelliJ, dll.). -## Apa itu “convert canvas to pdf”? -Mengonversi canvas ke PDF berarti merender gambar berbasis piksel dari elemen `` menjadi halaman PDF yang ramah vektor. Hal ini memungkinkan Anda mempertahankan tampilan persis canvas sambil memperoleh fitur PDF seperti paginasi, teks yang dapat dicari, dan kemudahan berbagi. +## Cara mengonversi canvas ke PDF menggunakan Aspose.HTML untuk Java? + +Muat file HTML Anda yang berisi elemen `` dan panggil `Converter.convert` – panggilan tunggal itu merender canvas dan semua fitur HTML5 terkait ke halaman PDF. API menangani penyematan font, kesetiaan warna, dan preservasi tata letak secara otomatis, sehingga Anda mendapatkan PDF siap cetak hanya dengan dua baris kode Java. + +## Apa itu “convert canvas to PDF”? + +Mengonversi canvas ke PDF berarti merender gambar berbasis piksel dari elemen `` ke halaman PDF yang ramah vektor. Ini memungkinkan Anda mempertahankan tampilan tepat canvas sambil memperoleh fitur PDF seperti paginasi, teks yang dapat dicari, dan berbagi yang mudah. ## Mengapa menggunakan Aspose.HTML untuk Java untuk tugas ini? -- **Full HTML5 support** – Canvas, CSS3, dan JavaScript modern berjalan dengan benar selama konversi. -- **Server‑side processing** – Tidak perlu browser headless; perpustakaan menangani rendering secara internal. -- **High fidelity PDF output** – Font, warna, dan tata letak dipertahankan secara akurat. -- **Cross‑platform** – Berfungsi pada sistem operasi apa pun yang mendukung Java. + +- **Dukungan HTML5 penuh** – Canvas, SVG, CSS3, dan JavaScript modern berjalan dengan benar selama konversi. +- **Pemrosesan sisi‑server** – Tidak perlu peramban headless; pustaka menangani rendering secara internal. +- **Output PDF berfidelity tinggi** – Font, warna, dan tata letak dipertahankan secara akurat. +- **Lintas‑platform** – Berfungsi pada sistem operasi apa pun yang mendukung Java. + +Aspose.HTML untuk Java mendukung konversi **lebih dari 30 fitur HTML5**, termasuk Canvas, dan dapat memproses dokumen hingga **500 MB** tanpa memuat seluruh file ke memori, menghasilkan waktu pembuatan PDF kurang dari **2 detik** untuk halaman canvas tipikal. ## Prasyarat -- **Java Development Kit (JDK)** – Java 8 atau lebih tinggi. -- **Aspose.HTML untuk Java** – Unduh dari situs resmi [here](https://releases.aspose.com/html/java/). -- **IDE** – Eclipse, IntelliJ IDEA, atau editor kompatibel Java lainnya. +- **Java Development Kit (JDK)** – Java 8 atau lebih tinggi. +- **Aspose.HTML untuk Java** – Unduh dari situs resmi [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). +- **IDE** – Eclipse, IntelliJ IDEA, atau editor yang kompatibel dengan Java apa pun. Dengan semua itu siap, Anda dapat mulai membuat dan mengekspor grafik canvas. -## Impor Paket -Pertama, impor kelas‑kelas yang diperlukan dari Aspose.HTML dan Java I/O. +## Impor paket +Kelas `HTMLDocument` adalah objek inti yang mewakili file HTML dalam memori, sementara kelas `Converter` melakukan rendering aktual ke PDF. ```java import com.aspose.html.HTMLDocument; @@ -51,11 +99,12 @@ import java.io.FileWriter; ``` ## Mengapa menyimpan canvas sebagai PDF? -Menyimpan canvas sebagai PDF ideal ketika Anda memerlukan representasi statis yang dapat dicetak dari grafik web dinamis. PDF dapat dilihat secara universal, mendukung rendering resolusi tinggi, dan dapat diarsipkan atau dikirim melalui email tanpa kehilangan kualitas. -## Langkah 1: Buat Elemen Canvas dan Gambar Teks +Menyimpan canvas sebagai PDF ideal ketika Anda membutuhkan representasi statis yang dapat dicetak dari grafik web dinamis. PDF dapat dilihat secara universal, mendukung rendering resolusi tinggi, dan dapat diarsipkan atau dikirim email tanpa kehilangan kualitas. Selain itu, PDF mempertahankan informasi vektor bila memungkinkan, memungkinkan Anda menyematkan metadata, dan dapat digabungkan dengan halaman lain untuk membuat laporan multi‑halaman, menjadikannya cocok untuk kebutuhan arsip dan kepatuhan. + +## Langkah 1: buat elemen canvas dan gambar teks -### 1.1 Siapkan HTML dan JavaScript (menggambar teks pada canvas) +### 1.1 siapkan HTML dan JavaScript (gambar teks pada canvas) Berikut adalah string Java yang berisi halaman HTML sederhana dengan elemen ``. JavaScript yang disematkan memperoleh konteks canvas, mengatur font, dan menggambar frasa **“Hello World”**. ```java @@ -69,7 +118,7 @@ String code = "}} {{< blocks/products/pf/tutorial-page-section >}} -# Converti Canvas in PDF con Aspose.HTML per Java +# Converti canvas in PDF con Aspose.HTML per Java -Le esperienze web interattive spesso si basano sull'elemento HTML5 **Canvas**. Disegnando grafica con JavaScript è possibile creare grafici, firme o illustrazioni personalizzate direttamente nel browser. Ma cosa succede se ti serve una versione stampabile e condivisibile di quel canvas? In questo tutorial imparerai **come convertire canvas in PDF** usando JavaScript insieme a **Aspose.HTML per Java**. Vedremo come creare un canvas, disegnare del testo, salvare l'HTML e infine esportare il risultato in un file PDF. +Le esperienze web interattive spesso si basano sull'elemento **Canvas** HTML5. Disegnando grafica con JavaScript è possibile creare grafici, firme o illustrazioni personalizzate direttamente nel browser. In molti scenari è necessario **convertire canvas in PDF** affinché la grafica possa essere stampata, archiviata o condivisa. Questo tutorial mostra esattamente come eseguire tale conversione usando JavaScript insieme ad Aspose.HTML per Java, coprendo la creazione del canvas, il disegno del testo, il salvataggio del file HTML e l'esportazione in un documento PDF. ## Risposte rapide -- **Che cosa significa “convertire canvas in pdf”?** Significa prendere il contenuto visivo renderizzato su un Canvas HTML5 e generare un documento PDF che ne preservi l'aspetto. -- **Quale libreria gestisce la conversione?** Aspose.HTML per Java fornisce un'API affidabile, lato server, per convertire HTML (incluso Canvas) in PDF. -- **Ho bisogno di un browser per la conversione?** No. La conversione viene eseguita sulla runtime Java, così puoi automatizzare la generazione di PDF su un server o in un servizio backend. -- **Posso disegnare testo sul canvas prima della conversione?** Assolutamente – mostreremo un semplice esempio JavaScript che scrive “Hello World” sul canvas. -- **Quali sono i prerequisiti principali?** Java JDK, libreria Aspose.HTML per Java e un IDE Java (Eclipse, IntelliJ, ecc.). +- **Che cosa significa “convertire canvas in PDF”?** Significa prendere il contenuto visivo renderizzato su un Canvas HTML5 e generare un documento PDF che ne preserva l'aspetto. +- **Quale libreria gestisce la conversione?** Aspose.HTML per Java fornisce un'API affidabile lato server per convertire HTML (incluso Canvas) in PDF. +- **È necessario un browser per la conversione?** No. La conversione viene eseguita sul runtime Java, quindi è possibile automatizzare la generazione di PDF su un server o in un servizio backend. +- **Posso disegnare del testo sul canvas prima di convertire?** Assolutamente – mostreremo un semplice esempio JavaScript che scrive “Hello World” sul canvas. +- **Quali sono i prerequisiti principali?** Java JDK, la libreria Aspose.HTML per Java e un IDE Java (Eclipse, IntelliJ, ecc.). -## Cos'è “convertire canvas in pdf”? -Convertire un canvas in PDF significa renderizzare il disegno basato su pixel dell'elemento `` in una pagina PDF adatta ai vettori. Questo ti consente di preservare l'aspetto esatto del canvas ottenendo al contempo le funzionalità PDF come paginazione, testo ricercabile e facile condivisione. +## Come convertire canvas in PDF usando Aspose.HTML per Java? -## Perché utilizzare Aspose.HTML per Java per questo compito? -- **Supporto completo per HTML5** – Canvas, CSS3 e JavaScript moderno vengono eseguiti correttamente durante la conversione. +Carica il tuo file HTML che contiene l'elemento `` e invoca `Converter.convert` – quella singola chiamata renderizza il canvas e tutte le funzionalità HTML5 associate in una pagina PDF. L'API gestisce automaticamente l'incorporamento dei font, la fedeltà dei colori e la conservazione del layout, così ottieni un PDF pronto per la stampa in sole due righe di codice Java. + +## Che cos'è “convertire canvas in PDF”? + +Convertire un canvas in PDF significa renderizzare il disegno basato su pixel dell'elemento `` in una pagina PDF compatibile con i vettori. Questo consente di preservare l'aspetto esatto del canvas ottenendo al contempo funzionalità PDF come la paginazione, il testo ricercabile e la facile condivisione. + +## Perché usare Aspose.HTML per Java per questo compito? + +- **Supporto completo HTML5** – Canvas, SVG, CSS3 e JavaScript moderno funzionano correttamente durante la conversione. - **Elaborazione lato server** – Non è necessario un browser headless; la libreria gestisce il rendering internamente. -- **Output PDF ad alta fedeltà** – Font, colori e layout vengono mantenuti accuratamente. -- **Cross‑platform** – Funziona su qualsiasi OS che supporta Java. +- **Output PDF ad alta fedeltà** – Font, colori e layout vengono mantenuti con precisione. +- **Cross‑platform** – Funziona su qualsiasi OS che supporta Java. + +Aspose.HTML per Java supporta la conversione di **oltre 30 funzionalità HTML5**, incluso Canvas, e può elaborare documenti fino a **500 MB** senza caricare l'intero file in memoria, offrendo tempi di generazione PDF inferiori a **2 secondi** per le tipiche pagine canvas. ## Prerequisiti -- **Java Development Kit (JDK)** – Java 8 o superiore. -- **Aspose.HTML per Java** – Scarica dal sito ufficiale [qui](https://releases.aspose.com/html/java/). +- **Java Development Kit (JDK)** – Java 8 o superiore. +- **Aspose.HTML per Java** – Scarica dalla pagina ufficiale [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). - **IDE** – Eclipse, IntelliJ IDEA o qualsiasi editor compatibile con Java. Con questi elementi a disposizione, sei pronto per iniziare a creare ed esportare grafiche canvas. ## Importa pacchetti -Per prima cosa, importa le classi necessarie da Aspose.HTML e Java I/O. +La classe `HTMLDocument` è l'oggetto principale che rappresenta un file HTML in memoria, mentre la classe `Converter` esegue il rendering effettivo in PDF. ```java import com.aspose.html.HTMLDocument; @@ -50,13 +98,14 @@ import com.aspose.html.saving.PdfSaveOptions; import java.io.FileWriter; ``` -## Perché salvare canvas come PDF? -Salvare il canvas come PDF è ideale quando ti serve una rappresentazione statica e stampabile di grafiche web dinamiche. I PDF sono universalmente visualizzabili, supportano il rendering ad alta risoluzione e possono essere archiviati o inviati via email senza perdita di qualità. +## Perché salvare il canvas come PDF? -## Passo 1: Crea un elemento Canvas e disegna testo +Salvare il canvas come PDF è ideale quando hai bisogno di una rappresentazione statica e stampabile di grafiche web dinamiche. I PDF sono visualizzabili universalmente, supportano il rendering ad alta risoluzione e possono essere archiviati o inviati via email senza perdere qualità. Inoltre, i PDF preservano le informazioni vettoriali quando possibile, consentono di incorporare metadati e possono essere combinati con altre pagine per creare report multipagina, rendendoli adatti a requisiti di archiviazione e conformità. -### 1.1 Prepara l'HTML e JavaScript (disegna testo sul canvas) -Di seguito trovi una stringa Java che contiene una semplice pagina HTML con un elemento ``. Il JavaScript incorporato ottiene il contesto del canvas, imposta un font e disegna la frase **“Hello World”**. +## Passo 1: crea un elemento canvas e disegna del testo + +### 1.1 prepara l'HTML e JavaScript (disegna testo sul canvas) +Di seguito è presente una stringa Java che contiene una semplice pagina HTML con un elemento ``. Il JavaScript incorporato ottiene il contesto del canvas, imposta un font e disegna la frase **“Hello World”**. ```java String code = "\n" + @@ -69,8 +118,8 @@ String code = "}} diff --git a/html/japanese/java/advanced-usage/html5-canvas-manipulation-using-javascript/_index.md b/html/japanese/java/advanced-usage/html5-canvas-manipulation-using-javascript/_index.md index caa4cf239c..4b5ef81de3 100644 --- a/html/japanese/java/advanced-usage/html5-canvas-manipulation-using-javascript/_index.md +++ b/html/japanese/java/advanced-usage/html5-canvas-manipulation-using-javascript/_index.md @@ -1,10 +1,49 @@ --- -date: 2026-03-21 -description: JavaScript と Aspose.HTML for Java を使用して、キャンバスを PDF に変換する方法を学びましょう。動的なグラフィックを作成し、キャンバスにテキストを描画し、HTML - を PDF にエクスポートします。 -linktitle: Convert Canvas to PDF Using JavaScript +date: 2026-09-03 +description: JavaScript と Aspose.HTML for Java を使用して Canvas を PDF に変換する方法を学びます。動的なグラフィックを作成し、Canvas + 上にテキストを描画し、HTML を PDF にエクスポートします。 +keywords: +- convert canvas to pdf +- draw text on canvas +- generate pdf from canvas +lastmod: 2026-09-03 +linktitle: JavaScript を使用した Canvas の PDF 変換 +og_description: JavaScript と Aspose.HTML for Java を使用して Canvas を PDF に変換します。Canvas + 上にテキストを描画し、HTML を保存し、数分で高品質な PDF を生成する方法を学びます。 +og_image_alt: Screenshot of a Java‑generated PDF created from an HTML5 canvas +og_title: Aspose.HTML for Java で Canvas を PDF に変換 – クイックガイド +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to convert canvas to PDF using JavaScript and Aspose.HTML + for Java. Create dynamic graphics, draw text on canvas, and export HTML to PDF. + headline: Convert Canvas to PDF with Aspose.HTML for Java + type: TechArticle +- questions: + - answer: Aspose.HTML for Java is a powerful library that enables developers to + create, manipulate, and convert HTML documents in Java applications, supporting + HTML5 features like Canvas. + question: What is Aspose.HTML for Java? + - answer: Yes, a commercial license is required for production use. Details are + available on the [purchase page](https://purchase.aspose.com/buy). + question: Can I use this in commercial projects? + - answer: Absolutely. You can download a trial version from the [Aspose.HTML trial + download page](https://releases.aspose.com/). + question: Is there a free trial? + - answer: Temporary licenses are provided for evaluation purposes via the [temporary + license request page](https://purchase.aspose.com/temporary-license/). + question: How do I obtain a temporary license for testing? + - answer: The full API reference is available [Aspose.HTML Java API reference](https://reference.aspose.com/html/java/). + question: Where can I find detailed documentation? + type: FAQPage second_title: Java HTML Processing with Aspose.HTML -title: Aspose.HTML for JavaでCanvasをPDFに変換 +tags: +- convert canvas to pdf +- Aspose.HTML +- Java PDF conversion +- HTML5 Canvas +- Java web graphics +title: Aspose.HTML for Java を使用した Canvas の PDF 変換 url: /ja/java/advanced-usage/html5-canvas-manipulation-using-javascript/ weight: 13 --- @@ -13,35 +52,43 @@ weight: 13 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Canvas を PDF に変換する(Aspose.HTML for Java) +# Aspose.HTML for Java を使用したキャンバスの PDF 変換 -インタラクティブな Web 体験は、HTML5 **Canvas** 要素に依存することが多いです。JavaScript でグラフィックを描画することで、ブラウザ上でチャートや署名、カスタムイラストを直接作成できます。しかし、その Canvas を印刷可能で共有できるバージョンにしたい場合はどうでしょうか?本チュートリアルでは、**JavaScript と Aspose.HTML for Java** を組み合わせて **canvas を PDF に変換する方法** を学びます。Canvas の作成、テキストの描画、HTML の保存、そして最終的に PDF ファイルへエクスポートする手順を順に解説します。 +インタラクティブな Web 体験は多くの場合、HTML5 **Canvas** 要素に依存します。JavaScript でグラフィックを描画することで、ブラウザ上でチャートや署名、カスタムイラストを直接作成できます。多くのシナリオで、**convert canvas to PDF** が必要となり、グラフィックを印刷、アーカイブ、共有できるようになります。本チュートリアルでは、JavaScript と Aspose.HTML for Java を組み合わせて変換を実行する方法を、キャンバスの作成、テキストの描画、HTML ファイルの保存、PDF へのエクスポートまで詳しく解説します。 -## Quick Answers -- **「canvas を pdf に変換する」とは何ですか?** HTML5 Canvas に描画されたビジュアルコンテンツを取得し、その外観を保持した PDF ドキュメントを生成することを指します。 -- **どのライブラリが変換を担当しますか?** Aspose.HTML for Java が、HTML(Canvas を含む)を PDF に変換する信頼性の高いサーバーサイド API を提供します。 -- **変換にブラウザは必要ですか?** いいえ。変換は Java ランタイム上で実行されるため、サーバーやバックエンドサービスで PDF 生成を自動化できます。 -- **変換前に Canvas にテキストを描画できますか?** もちろんです。簡単な JavaScript の例で「Hello World」を Canvas に書き込む方法を示します。 -- **主な前提条件は何ですか?** Java JDK、Aspose.HTML for Java ライブラリ、そして Java IDE(Eclipse、IntelliJ など)です。 +## クイック回答 +- **What does “convert canvas to PDF” mean?** HTML5 Canvas に描画されたビジュアルコンテンツを取得し、その外観を保持した PDF ドキュメントを生成することを意味します。 +- **Which library handles the conversion?** Aspose.HTML for Java は、HTML(Canvas を含む)を PDF に変換する信頼性の高いサーバーサイド API を提供します。 +- **Do I need a browser for the conversion?** いいえ。変換は Java ランタイム上で実行されるため、サーバーやバックエンドサービスで PDF 生成を自動化できます。 +- **Can I draw text on the canvas before converting?** もちろんです。キャンバス上に「Hello World」を描画するシンプルな JavaScript の例を示します。 +- **What are the main prerequisites?** Java JDK、Aspose.HTML for Java ライブラリ、そして Java IDE(Eclipse、IntelliJ など)が必要です。 -## 「canvas を pdf に変換する」とは? -Canvas を PDF に変換するとは、`` 要素のピクセルベースの描画をベクターフレンドリーな PDF ページにレンダリングすることです。これにより、Canvas の見た目を正確に保持しつつ、ページ分割や検索可能テキスト、簡単な共有といった PDF の機能を利用できます。 +## Aspose.HTML for Java を使用してキャンバスを PDF に変換する方法? -## なぜ Aspose.HTML for Java を使うのか? -- **フル HTML5 サポート** – Canvas、CSS3、最新の JavaScript が変換時に正しく動作します。 -- **サーバーサイド処理** – ヘッドレスブラウザは不要で、ライブラリが内部的にレンダリングを行います。 -- **高忠実度 PDF 出力** – フォント、色、レイアウトが正確に保持されます。 -- **クロスプラットフォーム** – Java が動作するあらゆる OS で利用可能です。 +`` 要素を含む HTML ファイルを読み込み、`Converter.convert` を呼び出すだけで、キャンバスと関連するすべての HTML5 機能が PDF ページにレンダリングされます。API はフォント埋め込み、色の忠実度、レイアウトの保持を自動的に処理するため、たった 2 行の Java コードで印刷可能な PDF が得られます。 + +## “convert canvas to PDF” とは何か + +キャンバスを PDF に変換するとは、`` 要素からのピクセルベースの描画をベクターフレンドリーな PDF ページにレンダリングすることです。これにより、キャンバスの外観を正確に保持しつつ、ページングや検索可能テキスト、簡単な共有といった PDF の機能を利用できます。 + +## このタスクに Aspose.HTML for Java を使用する理由 + +- **Full HTML5 support** – Canvas、SVG、CSS3、最新の JavaScript が変換中に正しく動作します。 +- **Server‑side processing** – ヘッドレスブラウザは不要です。ライブラリが内部でレンダリングを処理します。 +- **High‑fidelity PDF output** – フォント、色、レイアウトが正確に保持されます。 +- **Cross‑platform** – Java をサポートする任意の OS で動作します。 + +Aspose.HTML for Java は **30+ HTML5 features** の変換をサポートし、Canvas を含み、メモリに全ファイルをロードせずに **500 MB** までのドキュメントを処理でき、典型的なキャンバスページでは **2 seconds** 未満で PDF を生成します。 ## 前提条件 -- **Java Development Kit (JDK)** – Java 8 以上。 -- **Aspose.HTML for Java** – 公式サイトから [here](https://releases.aspose.com/html/java/) でダウンロード。 -- **IDE** – Eclipse、IntelliJ IDEA、または任意の Java 対応エディタ。 +- **Java Development Kit (JDK)** – Java 8 以上。 +- **Aspose.HTML for Java** – 公式サイトの [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/) からダウンロード。 +- **IDE** – Eclipse、IntelliJ IDEA、または任意の Java 対応エディタ。 -これらが揃えば、Canvas グラフィックの作成とエクスポートをすぐに始められます。 +これらが揃えば、キャンバスグラフィックの作成とエクスポートをすぐに開始できます。 ## パッケージのインポート -まず、Aspose.HTML と Java I/O で必要となるクラスをインポートします。 +`HTMLDocument` クラスはメモリ内の HTML ファイルを表すコアオブジェクトで、`Converter` クラスが実際の PDF へのレンダリングを行います。 ```java import com.aspose.html.HTMLDocument; @@ -50,13 +97,14 @@ import com.aspose.html.saving.PdfSaveOptions; import java.io.FileWriter; ``` -## なぜ Canvas を PDF として保存するのか? -Canvas を PDF として保存すると、動的な Web グラフィックの静的で印刷可能な表現が得られます。PDF はほぼすべての環境で閲覧可能で、高解像度レンダリングをサポートし、品質を損なうことなくアーカイブやメール送信ができます。 +## なぜキャンバスを PDF として保存するのか? -## 手順 1: Canvas 要素を作成しテキストを描画する +キャンバスを PDF として保存すると、動的な Web グラフィックの静的で印刷可能な表現が得られます。PDF は普遍的に閲覧可能で、高解像度レンダリングをサポートし、品質を失うことなくアーカイブやメール送信が可能です。さらに、可能な限りベクタ情報を保持し、メタデータ埋め込みや複数ページのレポート作成にも適しています。 -### 1.1 HTML と JavaScript の準備(Canvas にテキストを描画) -以下は、`` 要素を含むシンプルな HTML ページを表す Java 文字列です。埋め込まれた JavaScript が Canvas コンテキストを取得し、フォントを設定してフレーズ **“Hello World”** を描画します。 +## 手順 1: キャンバス要素を作成しテキストを描画する + +### 1.1 HTML と JavaScript の準備(キャンバスにテキストを描画) +以下は、`` 要素を含むシンプルな HTML ページを表す Java 文字列です。埋め込まれた JavaScript がキャンバスコンテキストを取得し、フォントを設定して **“Hello World”** というフレーズを描画します。 ```java String code = "\n" + @@ -69,7 +117,7 @@ String code = "}} {{< blocks/products/pf/tutorial-page-section >}} -# Aspose.HTML for Java를 사용한 Canvas를 PDF로 변환하기 +# Aspose.HTML for Java를 사용하여 캔버스를 PDF로 변환 -인터랙티브한 웹 경험은 종종 HTML5 **Canvas** 요소에 의존합니다. JavaScript로 그래픽을 그리면 브라우저에서 차트, 서명 또는 맞춤 일러스트레이션을 직접 만들 수 있습니다. 하지만 해당 캔버스를 인쇄 가능하고 공유 가능한 형태로 만들어야 한다면 어떻게 할까요? 이 튜토리얼에서는 **canvas를 PDF로 변환하는 방법**을 JavaScript와 **Aspose.HTML for Java**를 함께 사용하여 배우게 됩니다. 캔버스를 생성하고, 텍스트를 그린 뒤, HTML을 저장하고, 최종적으로 결과를 PDF 파일로 내보내는 과정을 단계별로 살펴보겠습니다. +Interactive web experiences often rely on the HTML5 **Canvas** element. By drawing graphics with JavaScript you can create charts, signatures, or custom illustrations directly in the browser. In many scenarios you’ll need to **convert canvas to PDF** so the graphics can be printed, archived, or shared. This tutorial shows you exactly how to perform that conversion using JavaScript together with Aspose.HTML for Java, covering canvas creation, drawing text, saving the HTML file, and exporting it to a PDF document. -## Quick Answers -- **“canvas를 pdf로 변환한다”는 무슨 뜻인가요?** HTML5 Canvas에 렌더링된 시각적 콘텐츠를 가져와 그 모습을 보존하는 PDF 문서를 생성한다는 의미입니다. -- **어떤 라이브러리가 변환을 담당하나요?** Aspose.HTML for Java는 HTML(Canvas 포함)을 PDF로 변환하는 신뢰할 수 있는 서버‑사이드 API를 제공합니다. -- **변환에 브라우저가 필요합니까?** 아닙니다. 변환은 Java 런타임에서 실행되므로 서버나 백엔드 서비스에서 PDF 생성을 자동화할 수 있습니다. -- **변환 전에 캔버스에 텍스트를 그릴 수 있나요?** 물론입니다 – “Hello World”를 캔버스에 쓰는 간단한 JavaScript 예제를 보여드립니다. -- **주요 전제 조건은 무엇인가요?** Java JDK, Aspose.HTML for Java 라이브러리, 그리고 Java IDE(Eclipse, IntelliJ 등)입니다. +## 빠른 답변 +- **“convert canvas to PDF”는 무엇을 의미합니까?** HTML5 Canvas에 렌더링된 시각적 콘텐츠를 가져와 해당 모습을 보존하는 PDF 문서를 생성하는 것을 의미합니다. +- **어떤 라이브러리가 변환을 처리합니까?** Aspose.HTML for Java는 HTML(Canvas 포함)을 PDF로 변환하기 위한 신뢰할 수 있는 서버‑사이드 API를 제공합니다. +- **변환에 브라우저가 필요합니까?** 필요 없습니다. 변환은 Java 런타임에서 실행되므로 서버나 백엔드 서비스에서 PDF 생성을 자동화할 수 있습니다. +- **변환 전에 캔버스에 텍스트를 그릴 수 있습니까?** 물론입니다 – “Hello World”를 캔버스에 쓰는 간단한 JavaScript 예제를 보여드립니다. +- **주요 전제 조건은 무엇입니까?** Java JDK, Aspose.HTML for Java 라이브러리, 그리고 Java IDE(Eclipse, IntelliJ 등)입니다. -## What is “convert canvas to pdf”? -Canvas를 PDF로 변환한다는 것은 `` 요소에서 픽셀 기반으로 그린 그림을 벡터 친화적인 PDF 페이지로 렌더링한다는 의미입니다. 이를 통해 캔버스의 정확한 모습을 유지하면서 페이지 매김, 검색 가능한 텍스트, 손쉬운 공유와 같은 PDF 기능을 활용할 수 있습니다. +## Aspose.HTML for Java를 사용하여 캔버스를 PDF로 변환하는 방법은? +Load your HTML file that contains the `` element and invoke `Converter.convert` – that single call renders the canvas and all associated HTML5 features into a PDF page. The API handles font embedding, color fidelity, and layout preservation automatically, so you get a print‑ready PDF in just two lines of Java code. -## Why use Aspose.HTML for Java for this task? -- **Full HTML5 support** – Canvas, CSS3, 그리고 최신 JavaScript가 변환 과정에서 올바르게 실행됩니다. -- **Server‑side processing** – 헤드리스 브라우저가 필요 없으며, 라이브러리가 내부적으로 렌더링을 처리합니다. -- **High fidelity PDF output** – 폰트, 색상, 레이아웃이 정확하게 보존됩니다. -- **Cross‑platform** – Java를 지원하는 모든 OS에서 동작합니다. +## “convert canvas to PDF”란 무엇입니까? +Converting a canvas to PDF means rendering the pixel‑based drawing from the `` element into a vector‑friendly PDF page. This allows you to preserve the exact look of the canvas while gaining PDF features such as pagination, searchable text, and easy sharing. -## Prerequisites -- **Java Development Kit (JDK)** – Java 8 이상. -- **Aspose.HTML for Java** – 공식 사이트에서 [여기](https://releases.aspose.com/html/java/) 다운로드. -- **IDE** – Eclipse, IntelliJ IDEA 또는 Java와 호환되는 편집기. +## 이 작업에 Aspose.HTML for Java를 사용하는 이유는? +- **Full HTML5 support** – Canvas, SVG, CSS3, and modern JavaScript run correctly during conversion. +- **Server‑side processing** – No need for a headless browser; the library handles rendering internally. +- **High‑fidelity PDF output** – Fonts, colors, and layout are retained accurately. +- **Cross‑platform** – Works on any OS that supports Java. -위 조건이 모두 준비되면 캔버스 그래픽을 생성하고 내보낼 준비가 된 것입니다. +Aspose.HTML for Java supports conversion of **30+ HTML5 features**, including Canvas, and can process documents up to **500 MB** without loading the entire file into memory, delivering PDF generation times under **2 seconds** for typical canvas pages. -## Import Packages -먼저 Aspose.HTML와 Java I/O에서 필요한 클래스를 가져옵니다. +## 필수 조건 +- **Java Development Kit (JDK)** – Java 8 or higher. +- **Aspose.HTML for Java** – Download from the official site [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). +- **IDE** – Eclipse, IntelliJ IDEA, or any Java‑compatible editor. + +With those in place, you’re ready to start creating and exporting canvas graphics. + +## 패키지 가져오기 +The `HTMLDocument` class is the core object that represents an HTML file in memory, while the `Converter` class performs the actual rendering to PDF. ```java import com.aspose.html.HTMLDocument; @@ -50,13 +94,13 @@ import com.aspose.html.saving.PdfSaveOptions; import java.io.FileWriter; ``` -## Why save canvas as PDF? -캔버스를 PDF로 저장하면 동적인 웹 그래픽을 정적이고 인쇄 가능한 형태로 만들 때 이상적입니다. PDF는 범용적으로 열 수 있으며 고해상도 렌더링을 지원하고, 품질 손실 없이 보관하거나 이메일로 전송할 수 있습니다. +## 왜 캔버스를 PDF로 저장하나요? +Saving canvas as PDF is ideal when you need a static, printable representation of dynamic web graphics. PDFs are universally viewable, support high‑resolution rendering, and can be archived or emailed without losing quality. In addition, PDFs preserve vector information when possible, allow you to embed metadata, and can be combined with other pages to create multi‑page reports, making them suitable for archival and compliance requirements. -## Step 1: Create a Canvas Element and Draw Text +## 1단계: 캔버스 요소를 만들고 텍스트를 그리기 -### 1.1 Prepare the HTML and JavaScript (draw text on canvas) -아래는 `` 요소를 포함한 간단한 HTML 페이지를 담은 Java 문자열 예시입니다. 삽입된 JavaScript는 캔버스 컨텍스트를 얻고, 폰트를 설정한 뒤 **“Hello World”** 문구를 그립니다. +### 1.1 HTML 및 JavaScript 준비 (캔버스에 텍스트 그리기) +Below is a Java string that contains a simple HTML page with a `` element. The embedded JavaScript obtains the canvas context, sets a font, and draws the phrase **“Hello World”**. ```java String code = "\n" + @@ -69,8 +113,8 @@ String code = "}} {{< blocks/products/pf/tutorial-page-section >}} -# Konwertowanie Canvas do PDF przy użyciu Aspose.HTML dla Javy +# Konwertuj canvas do PDF przy użyciu Aspose.HTML dla Javy -Interaktywne doświadczenia internetowe często opierają się na elemencie HTML5 **Canvas**. Rysując grafikę za pomocą JavaScriptu, możesz tworzyć wykresy, podpisy lub własne ilustracje bezpośrednio w przeglądarce. Co zrobić, gdy potrzebujesz wersji tego canvasu, którą można wydrukować i udostępnić? W tym samouczku dowiesz się **jak przekonwertować canvas do PDF** przy użyciu JavaScriptu oraz **Aspose.HTML for Java**. Przejdziemy przez tworzenie canvasu, rysowanie tekstu, zapisywanie HTML oraz ostateczne eksportowanie wyniku do pliku PDF. +Interaktywne doświadczenia internetowe często opierają się na elemencie HTML5 **Canvas**. Rysując grafikę przy użyciu JavaScript, możesz tworzyć wykresy, podpisy lub własne ilustracje bezpośrednio w przeglądarce. W wielu scenariuszach będziesz musiał **przekształcić canvas do PDF**, aby grafika mogła być drukowana, archiwizowana lub udostępniana. Ten samouczek pokazuje dokładnie, jak wykonać tę konwersję przy użyciu JavaScript wraz z Aspose.HTML dla Javy, obejmując tworzenie canvas, rysowanie tekstu, zapisywanie pliku HTML oraz eksportowanie go do dokumentu PDF. ## Szybkie odpowiedzi -- **Co oznacza „convert canvas to pdf”?** Oznacza to pobranie wizualnej zawartości renderowanej na elemencie HTML5 Canvas i wygenerowanie dokumentu PDF, który zachowuje ten wygląd. -- **Która biblioteka obsługuje konwersję?** Aspose.HTML for Java zapewnia niezawodne API po stronie serwera do konwertowania HTML (w tym Canvas) na PDF. -- **Czy potrzebna jest przeglądarka do konwersji?** Nie. Konwersja odbywa się w środowisku Java, więc możesz automatyzować generowanie PDF na serwerze lub w usłudze backendowej. -- **Czy mogę narysować tekst na canvasie przed konwersją?** Oczywiście – pokażemy prosty przykład JavaScript, który zapisuje „Hello World” na canvasie. +- **Co oznacza „convert canvas to PDF”?** Oznacza to pobranie wizualnej zawartości renderowanej na elemencie HTML5 Canvas i wygenerowanie dokumentu PDF, który zachowuje ten wygląd. +- **Która biblioteka obsługuje konwersję?** Aspose.HTML for Java zapewnia niezawodne, po stronie serwera API do konwertowania HTML (w tym Canvas) do PDF. +- **Czy potrzebna jest przeglądarka do konwersji?** Nie. Konwersja działa w środowisku Java, więc możesz automatyzować generowanie PDF na serwerze lub w usłudze backendowej. +- **Czy mogę narysować tekst na canvas przed konwersją?** Oczywiście – pokażemy prosty przykład JavaScript, który zapisuje „Hello World” na canvas. - **Jakie są główne wymagania wstępne?** Java JDK, biblioteka Aspose.HTML for Java oraz środowisko IDE Java (Eclipse, IntelliJ itp.). -## Co to jest „convert canvas to pdf”? -Konwersja canvasu do PDF oznacza renderowanie rysunku opartego na pikselach z elementu `` na stronę PDF przyjazną wektorom. Pozwala to zachować dokładny wygląd canvasu, jednocześnie uzyskując funkcje PDF, takie jak paginacja, przeszukiwalny tekst i łatwe udostępnianie. +## Jak konwertować canvas do PDF przy użyciu Aspose.HTML dla Javy? -## Dlaczego używać Aspose.HTML for Java do tego zadania? -- **Pełne wsparcie HTML5** – Canvas, CSS3 i nowoczesny JavaScript działają poprawnie podczas konwersji. -- **Przetwarzanie po stronie serwera** – Nie ma potrzeby używania przeglądarki w trybie headless; biblioteka obsługuje renderowanie wewnętrznie. +Wczytaj swój plik HTML zawierający element `` i wywołaj `Converter.convert` – to pojedyncze wywołanie renderuje canvas oraz wszystkie powiązane funkcje HTML5 na stronę PDF. API automatycznie obsługuje osadzanie czcionek, wierność kolorów i zachowanie układu, dzięki czemu otrzymujesz gotowy do druku PDF w zaledwie dwóch linijkach kodu Java. + +## Co to jest „convert canvas to PDF”? + +Konwersja canvas do PDF oznacza renderowanie rysunku opartego na pikselach z elementu `` na stronę PDF przyjazną wektorom. Pozwala to zachować dokładny wygląd canvas, jednocześnie uzyskując funkcje PDF, takie jak paginacja, przeszukiwalny tekst i łatwe udostępnianie. + +## Dlaczego używać Aspose.HTML dla Javy do tego zadania? + +- **Pełne wsparcie HTML5** – Canvas, SVG, CSS3 i nowoczesny JavaScript działają poprawnie podczas konwersji. +- **Przetwarzanie po stronie serwera** – Nie potrzebujesz przeglądarki w trybie headless; biblioteka obsługuje renderowanie wewnętrznie. - **Wysokiej jakości wyjście PDF** – Czcionki, kolory i układ są zachowywane dokładnie. -- **Wieloplatformowość** – Działa na każdym systemie operacyjnym obsługującym Javę. +- **Wieloplatformowość** – Działa na każdym systemie operacyjnym obsługującym Javę. + +Aspose.HTML dla Javy obsługuje konwersję **ponad 30 funkcji HTML5**, w tym Canvas, i może przetwarzać dokumenty do **500 MB** bez ładowania całego pliku do pamięci, zapewniając czasy generowania PDF poniżej **2 sekund** dla typowych stron canvas. ## Wymagania wstępne -- **Java Development Kit (JDK)** – Java 8 lub wyższa. -- **Aspose.HTML for Java** – Pobierz ze strony oficjalnej [tutaj](https://releases.aspose.com/html/java/). +- **Java Development Kit (JDK)** – Java 8 lub nowsza. +- **Aspose.HTML for Java** – Pobierz ze strony oficjalnej [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). - **IDE** – Eclipse, IntelliJ IDEA lub dowolny edytor kompatybilny z Javą. Mając to wszystko, jesteś gotowy, aby rozpocząć tworzenie i eksportowanie grafik canvas. ## Importowanie pakietów -Najpierw zaimportuj klasy, które będą potrzebne z Aspose.HTML oraz Java I/O. +Klasa `HTMLDocument` jest podstawowym obiektem reprezentującym plik HTML w pamięci, natomiast klasa `Converter` wykonuje rzeczywiste renderowanie do PDF. ```java import com.aspose.html.HTMLDocument; @@ -52,12 +100,13 @@ import java.io.FileWriter; ``` ## Dlaczego zapisywać canvas jako PDF? -Zapisywanie canvasu jako PDF jest idealne, gdy potrzebujesz statycznej, drukowalnej reprezentacji dynamicznych grafik internetowych. PDF-y są uniwersalnie wyświetlane, obsługują renderowanie w wysokiej rozdzielczości i mogą być archiwizowane lub wysyłane e‑mailem bez utraty jakości. -## Krok 1: Utwórz element Canvas i narysuj tekst +Zapisywanie canvas jako PDF jest idealne, gdy potrzebujesz statycznej, drukowalnej reprezentacji dynamicznych grafik internetowych. PDF-y są uniwersalnie wyświetlane, obsługują renderowanie w wysokiej rozdzielczości i mogą być archiwizowane lub wysyłane e‑mailem bez utraty jakości. Dodatkowo PDF-y zachowują informacje wektorowe, gdy jest to możliwe, pozwalają osadzać metadane i mogą być łączone z innymi stronami w celu tworzenia raportów wielostronicowych, co czyni je odpowiednimi do wymogów archiwizacji i zgodności. -### 1.1 Przygotuj HTML i JavaScript (rysowanie tekstu na canvasie) -Poniżej znajduje się łańcuch znaków w Javie, który zawiera prostą stronę HTML z elementem ``. Osadzony JavaScript pobiera kontekst canvasu, ustawia czcionkę i rysuje frazę **„Hello World”**. +## Krok 1: utwórz element canvas i narysuj tekst + +### 1.1 przygotuj HTML i JavaScript (rysowanie tekstu na canvas) +Poniżej znajduje się łańcuch Java zawierający prostą stronę HTML z elementem ``. Osadzony JavaScript pobiera kontekst canvas, ustawia czcionkę i rysuje frazę **„Hello World”**. ```java String code = "\n" + @@ -70,7 +119,7 @@ String code = "}} {{< blocks/products/pf/tutorial-page-section >}} -# Converter Canvas para PDF com Aspose.HTML para Java +# Converter canvas para PDF com Aspose.HTML para Java -Experiências web interativas costumam depender do elemento **Canvas** do HTML5. Ao desenhar gráficos com JavaScript, você pode criar gráficos, assinaturas ou ilustrações personalizadas diretamente no navegador. Mas e se precisar de uma versão imprimível e compartilhável desse canvas? Neste tutorial você aprenderá **como converter canvas para PDF** usando JavaScript junto com **Aspose.HTML para Java**. Vamos percorrer a criação de um canvas, desenhar texto, salvar o HTML e, finalmente, exportar o resultado para um arquivo PDF. +Experiências web interativas frequentemente dependem do elemento **Canvas** do HTML5. Ao desenhar gráficos com JavaScript, você pode criar gráficos, assinaturas ou ilustrações personalizadas diretamente no navegador. Em muitos cenários, você precisará **converter canvas para PDF** para que os gráficos possam ser impressos, arquivados ou compartilhados. Este tutorial mostra exatamente como realizar essa conversão usando JavaScript junto com Aspose.HTML para Java, abordando a criação do canvas, desenho de texto, salvamento do arquivo HTML e exportação para um documento PDF. -## Respostas Rápidas -- **O que significa “converter canvas para pdf”?** Significa pegar o conteúdo visual renderizado em um Canvas HTML5 e gerar um documento PDF que preserve essa aparência. +## Respostas rápidas +- **O que significa “converter canvas para PDF”?** Significa pegar o conteúdo visual renderizado em um Canvas HTML5 e gerar um documento PDF que preserve essa aparência. - **Qual biblioteca realiza a conversão?** Aspose.HTML para Java fornece uma API confiável, do lado do servidor, para converter HTML (incluindo Canvas) para PDF. -- **Preciso de um navegador para a conversão?** Não. A conversão é executada na runtime Java, permitindo automatizar a geração de PDFs em um servidor ou serviço backend. +- **Preciso de um navegador para a conversão?** Não. A conversão é executada na runtime Java, permitindo automatizar a geração de PDF em um servidor ou em um serviço backend. - **Posso desenhar texto no canvas antes de converter?** Absolutamente – mostraremos um exemplo simples em JavaScript que escreve “Hello World” no canvas. -- **Quais são os principais pré‑requisitos?** Java JDK, biblioteca Aspose.HTML para Java e uma IDE Java (Eclipse, IntelliJ, etc.). +- **Quais são os principais pré-requisitos?** Java JDK, biblioteca Aspose.HTML para Java e uma IDE Java (Eclipse, IntelliJ, etc.). -## O que é “converter canvas para pdf”? -Converter um canvas para PDF significa renderizar o desenho baseado em pixels do elemento `` em uma página PDF amigável a vetores. Isso permite preservar a aparência exata do canvas enquanto obtém recursos do PDF, como paginação, texto pesquisável e fácil compartilhamento. +## Como converter canvas para PDF usando Aspose.HTML para Java? -## Por que usar Aspose.HTML para Java nesta tarefa? -- **Suporte total ao HTML5** – Canvas, CSS3 e JavaScript moderno são processados corretamente durante a conversão. -- **Processamento no servidor** – Não é necessário um navegador headless; a biblioteca lida com a renderização internamente. +Carregue seu arquivo HTML que contém o elemento `` e invoque `Converter.convert` – essa única chamada renderiza o canvas e todos os recursos HTML5 associados em uma página PDF. A API lida automaticamente com incorporação de fontes, fidelidade de cores e preservação de layout, proporcionando um PDF pronto para impressão em apenas duas linhas de código Java. + +## O que é “converter canvas para PDF”? + +Converter um canvas para PDF significa renderizar o desenho baseado em pixels do elemento `` em uma página PDF amigável a vetores. Isso permite preservar a aparência exata do canvas enquanto você ganha recursos de PDF como paginação, texto pesquisável e fácil compartilhamento. + +## Por que usar Aspose.HTML para Java para esta tarefa? + +- **Suporte total a HTML5** – Canvas, SVG, CSS3 e JavaScript moderno são processados corretamente durante a conversão. +- **Processamento do lado do servidor** – Não há necessidade de um navegador headless; a biblioteca realiza a renderização internamente. - **Saída PDF de alta fidelidade** – Fontes, cores e layout são mantidos com precisão. -- **Multiplataforma** – Funciona em qualquer SO que suporte Java. +- **Multiplataforma** – Funciona em qualquer sistema operacional que suporte Java. + +Aspose.HTML para Java suporta a conversão de **mais de 30 recursos HTML5**, incluindo Canvas, e pode processar documentos de até **500 MB** sem carregar o arquivo inteiro na memória, entregando tempos de geração de PDF inferiores a **2 segundos** para páginas de canvas típicas. -## Pré‑requisitos -- **Java Development Kit (JDK)** – Java 8 ou superior. -- **Aspose.HTML para Java** – Baixe no site oficial [here](https://releases.aspose.com/html/java/). -- **IDE** – Eclipse, IntelliJ IDEA ou qualquer editor compatível com Java. +## Pré-requisitos +- **Java Development Kit (JDK)** – Java 8 ou superior. +- **Aspose.HTML para Java** – Baixe a partir do site oficial [Aspose.HTML para Java página de download](https://releases.aspose.com/html/java/). +- **IDE** – Eclipse, IntelliJ IDEA ou qualquer editor compatível com Java. Com esses itens em mãos, você está pronto para começar a criar e exportar gráficos de canvas. -## Importar Pacotes -Primeiro, importe as classes que usaremos do Aspose.HTML e do Java I/O. +## Importar pacotes +A classe `HTMLDocument` é o objeto central que representa um arquivo HTML na memória, enquanto a classe `Converter` realiza a renderização efetiva para PDF. ```java import com.aspose.html.HTMLDocument; @@ -52,12 +99,13 @@ import java.io.FileWriter; ``` ## Por que salvar canvas como PDF? -Salvar canvas como PDF é ideal quando você precisa de uma representação estática e imprimível de gráficos web dinâmicos. PDFs são universalmente visualizáveis, suportam renderização em alta resolução e podem ser arquivados ou enviados por e‑mail sem perda de qualidade. -## Etapa 1: Criar um Elemento Canvas e Desenhar Texto +Salvar canvas como PDF é ideal quando você precisa de uma representação estática e imprimível de gráficos web dinâmicos. PDFs são universalmente visualizáveis, suportam renderização em alta resolução e podem ser arquivados ou enviados por e‑mail sem perder qualidade. Além disso, PDFs preservam informações vetoriais quando possível, permitem incorporar metadados e podem ser combinados com outras páginas para criar relatórios de várias páginas, tornando‑os adequados para requisitos de arquivamento e conformidade. -### 1.1 Preparar o HTML e JavaScript (desenhar texto no canvas) -Abaixo está uma string Java que contém uma página HTML simples com um elemento ``. O JavaScript embutido obtém o contexto do canvas, define uma fonte e desenha a frase **“Hello World”**. +## Etapa 1: criar um elemento canvas e desenhar texto + +### 1.1 preparar o HTML e JavaScript (desenhar texto no canvas) +Abaixo está uma string Java que contém uma página HTML simples com um elemento ``. O JavaScript incorporado obtém o contexto do canvas, define uma fonte e desenha a frase **“Hello World”**. ```java String code = "\n" + @@ -70,7 +118,7 @@ String code = "}} {{< blocks/products/pf/tutorial-page-section >}} -# Конвертировать Canvas в PDF с помощью Aspose.HTML для Java +# Преобразование canvas в PDF с помощью Aspose.HTML for Java -Интерактивные веб‑приложения часто используют элемент HTML5 **Canvas**. Рисуя графику с помощью JavaScript, вы можете создавать диаграммы, подписи или пользовательские иллюстрации прямо в браузере. Но что делать, если нужна печатная, легко распространяемая версия этого canvas? В этом руководстве вы узнаете **как конвертировать canvas в PDF** с помощью JavaScript и **Aspose.HTML для Java**. Мы пройдём процесс создания canvas, рисования текста, сохранения HTML и, наконец, экспорта результата в PDF‑файл. +Интерактивные веб‑опыты часто опираются на элемент HTML5 **Canvas**. Рисуя графику с помощью JavaScript, вы можете создавать диаграммы, подписи или пользовательские иллюстрации непосредственно в браузере. Во многих сценариях вам понадобится **convert canvas to PDF**, чтобы графика могла быть распечатана, архивирована или поделена. Этот учебник покажет вам точно, как выполнить эту конвертацию с использованием JavaScript вместе с Aspose.HTML for Java, охватывая создание canvas, отрисовку текста, сохранение HTML‑файла и экспорт его в PDF‑документ. -## Быстрые ответы -- **Что означает «конвертировать canvas в pdf»?** Это процесс взятия визуального содержимого, отрисованного в HTML5 Canvas, и создания PDF‑документа, сохраняющего внешний вид. -- **Какая библиотека выполняет конвертацию?** Aspose.HTML для Java предоставляет надёжный серверный API для преобразования HTML (включая Canvas) в PDF. -- **Нужен ли браузер для конвертации?** Нет. Конвертация выполняется в среде Java, поэтому вы можете автоматизировать генерацию PDF на сервере или в бек‑энд сервисе. -- **Можно ли нарисовать текст на canvas перед конвертацией?** Конечно – мы покажем простой пример JavaScript, который пишет «Hello World» на canvas. -- **Какие основные предварительные требования?** Java JDK, библиотека Aspose.HTML для Java и Java IDE (Eclipse, IntelliJ и т.д.). +## Краткие ответы +- **Что означает “convert canvas to PDF”?** Это означает взятие визуального содержимого, отрисованного на HTML5 Canvas, и создание PDF‑документа, сохраняющего этот внешний вид. +- **Какая библиотека обрабатывает конвертацию?** Aspose.HTML for Java предоставляет надёжный API на стороне сервера для конвертации HTML (включая Canvas) в PDF. +- **Нужен ли браузер для конвертации?** Нет. Конвертация выполняется в среде Java, поэтому вы можете автоматизировать создание PDF на сервере или в бэкенд‑службе. +- **Могу ли я нарисовать текст на canvas перед конвертацией?** Конечно — мы покажем простой пример JavaScript, который пишет «Hello World» на canvas. +- **Каковы основные предварительные требования?** Java JDK, библиотека Aspose.HTML for Java и Java IDE (Eclipse, IntelliJ и т.д.). -## Что такое «конвертировать canvas в pdf»? -Конвертация canvas в PDF означает преобразование пиксельного рисунка из элемента `` в страницу PDF, совместимую с векторной графикой. Это позволяет сохранить точный внешний вид canvas и одновременно воспользоваться возможностями PDF, такими как разбиение на страницы, поиск текста и простое распространение. +## Как преобразовать canvas в PDF с помощью Aspose.HTML for Java? -## Почему использовать Aspose.HTML для Java для этой задачи? -- **Полная поддержка HTML5** – Canvas, CSS3 и современный JavaScript корректно обрабатываются во время конвертации. -- **Сервер‑сайд обработка** – Не требуется безголовый браузер; библиотека сама выполняет рендеринг. -- **Высококачественный PDF‑вывод** – Шрифты, цвета и макет сохраняются точно. -- **Кроссплатформенность** – Работает на любой ОС, поддерживающей Java. +Загрузите ваш HTML‑файл, содержащий элемент ``, и вызовите `Converter.convert` — этот единственный вызов отрисовывает canvas и все связанные функции HTML5 в страницу PDF. API автоматически обрабатывает встраивание шрифтов, точность цветов и сохранение макета, поэтому вы получаете готовый к печати PDF всего в две строки Java‑кода. -## Предварительные требования -- **Java Development Kit (JDK)** – Java 8 или новее. -- **Aspose.HTML для Java** – Скачайте с официального сайта [здесь](https://releases.aspose.com/html/java/). -- **IDE** – Eclipse, IntelliJ IDEA или любой совместимый редактор Java. +## Что такое “convert canvas to PDF”? -С этими компонентами вы готовы приступить к созданию и экспорту графики canvas. +Преобразование canvas в PDF означает отрисовку пиксельного рисунка из элемента `` в PDF‑страницу, пригодную для векторной графики. Это позволяет сохранить точный вид canvas, получая при этом возможности PDF, такие как разбиение на страницы, поиск текста и простое распространение. + +## Почему использовать Aspose.HTML for Java для этой задачи? + +- **Полная поддержка HTML5** — Canvas, SVG, CSS3 и современный JavaScript корректно работают во время конвертации. +- **Обработка на стороне сервера** — Не требуется безголовый браузер; библиотека обрабатывает рендеринг внутренне. +- **PDF‑вывод высокого качества** — Шрифты, цвета и макет сохраняются точно. +- **Кросс‑платформенный** — Работает на любой ОС, поддерживающей Java. + +Aspose.HTML for Java поддерживает конвертацию **30+ функций HTML5**, включая Canvas, и может обрабатывать документы размером до **500 MB** без загрузки всего файла в память, обеспечивая время генерации PDF менее **2 секунд** для типичных страниц с canvas. + +## Требования +- **Java Development Kit (JDK)** — Java 8 или выше. +- **Aspose.HTML for Java** — Скачайте с официального сайта [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). +- **IDE** — Eclipse, IntelliJ IDEA или любой совместимый с Java редактор. + +Имея всё это, вы готовы начать создавать и экспортировать графику canvas. ## Импорт пакетов -Сначала импортируем необходимые классы из Aspose.HTML и Java I/O. +Класс `HTMLDocument` является основным объектом, представляющим HTML‑файл в памяти, тогда как класс `Converter` выполняет фактическое рендеринг в PDF. ```java import com.aspose.html.HTMLDocument; @@ -52,12 +100,13 @@ import java.io.FileWriter; ``` ## Почему сохранять canvas в PDF? -Сохранение canvas в PDF идеально, когда требуется статическое, печатное представление динамической веб‑графики. PDF‑файлы открываются везде, поддерживают высокое разрешение и могут быть архивированы или отправлены по электронной почте без потери качества. -## Шаг 1: Создать элемент Canvas и нарисовать текст +Сохранение canvas в PDF идеально, когда вам требуется статическое, печатное представление динамической веб‑графики. PDF‑файлы доступны на всех платформах, поддерживают высокое разрешение рендеринга и могут быть архивированы или отправлены по электронной почте без потери качества. Кроме того, PDF сохраняет векторную информацию, когда это возможно, позволяет встраивать метаданные и может быть объединён с другими страницами для создания многостраничных отчётов, что делает его подходящим для архивных и нормативных требований. -### 1.1 Подготовьте HTML и JavaScript (рисуем текст на canvas) -Ниже показана строка Java, содержащая простую HTML‑страницу с элементом ``. Встроенный JavaScript получает контекст canvas, задаёт шрифт и рисует фразу **«Hello World»**. +## Шаг 1: создать элемент canvas и нарисовать текст + +### 1.1 подготовьте HTML и JavaScript (нарисуйте текст на canvas) +Ниже приведена строка Java, содержащая простую HTML‑страницу с элементом ``. Встроенный JavaScript получает контекст canvas, задаёт шрифт и рисует фразу **“Hello World”**. ```java String code = "\n" + @@ -70,8 +119,8 @@ String code = "}} {{< blocks/products/pf/tutorial-page-section >}} -# Convertir Canvas a PDF con Aspose.HTML para Java +# Convertir canvas a PDF con Aspose.HTML para Java -Las experiencias web interactivas a menudo dependen del elemento **Canvas** de HTML5. Al dibujar gráficos con JavaScript puedes crear diagramas, firmas o ilustraciones personalizadas directamente en el navegador. ¿Pero qué pasa si necesitas una versión imprimible y compartible de ese canvas? En este tutorial aprenderás **cómo convertir canvas a PDF** usando JavaScript junto con **Aspose.HTML for Java**. Recorreremos la creación de un canvas, el dibujo de texto, el guardado del HTML y, finalmente, la exportación del resultado a un archivo PDF. +Interactive web experiences often rely on the HTML5 **Canvas** element. By drawing graphics with JavaScript you can create charts, signatures, or custom illustrations directly in the browser. In many scenarios you’ll need to **convertir canvas a PDF** so the graphics can be printed, archived, or shared. This tutorial shows you exactly how to perform that conversion using JavaScript together with Aspose.HTML for Java, covering canvas creation, drawing text, saving the HTML file, and exporting it to a PDF document. ## Respuestas rápidas -- **¿Qué significa “convert canvas to pdf”?** Significa tomar el contenido visual renderizado en un Canvas HTML5 y generar un documento PDF que preserve esa apariencia. -- **¿Qué biblioteca maneja la conversión?** Aspose.HTML for Java proporciona una API confiable del lado del servidor para convertir HTML (incluido Canvas) a PDF. -- **¿Necesito un navegador para la conversión?** No. La conversión se ejecuta en el runtime de Java, por lo que puedes automatizar la generación de PDF en un servidor o en un servicio backend. +- **¿Qué significa “convertir canvas a PDF”?** Significa tomar el contenido visual renderizado en un Canvas HTML5 y generar un documento PDF que preserve esa apariencia. +- **¿Qué biblioteca maneja la conversión?** Aspose.HTML for Java proporciona una API fiable del lado del servidor para convertir HTML (incluido Canvas) a PDF. +- **¿Necesito un navegador para la conversión?** No. La conversión se ejecuta en el tiempo de ejecución de Java, por lo que puedes automatizar la generación de PDF en un servidor o en un servicio backend. - **¿Puedo dibujar texto en el canvas antes de convertir?** Absolutamente – mostraremos un ejemplo sencillo de JavaScript que escribe “Hello World” en el canvas. -- **¿Cuáles son los requisitos principales?** Java JDK, la biblioteca Aspose.HTML for Java y un IDE Java (Eclipse, IntelliJ, etc.). +- **¿Cuáles son los requisitos principales?** Java JDK, la biblioteca Aspose.HTML for Java y un IDE de Java (Eclipse, IntelliJ, etc.). -## Qué es “convert canvas to pdf”? -Convertir un canvas a PDF significa renderizar el dibujo basado en píxeles del elemento `` en una página PDF amigable con vectores. Esto te permite preservar el aspecto exacto del canvas mientras obtienes características de PDF como paginación, texto buscable y fácil compartición. +## Cómo convertir canvas a PDF usando Aspose.HTML para Java? -## Por qué usar Aspose.HTML for Java para esta tarea? -- **Full HTML5 support** – Canvas, CSS3 y JavaScript moderno se ejecutan correctamente durante la conversión. -- **Server‑side processing** – No se necesita un navegador sin cabeza; la biblioteca maneja el renderizado internamente. -- **High fidelity PDF output** – Fuentes, colores y diseño se conservan con precisión. -- **Cross‑platform** – Funciona en cualquier SO que soporte Java. +Cargue su archivo HTML que contiene el elemento `` e invoque `Converter.convert` – esa única llamada renderiza el canvas y todas las características HTML5 asociadas en una página PDF. La API maneja la incrustación de fuentes, la fidelidad de color y la preservación del diseño automáticamente, por lo que obtiene un PDF listo para imprimir en solo dos líneas de código Java. + +## Qué es “convertir canvas a PDF”? + +Convertir un canvas a PDF significa renderizar el dibujo basado en píxeles del elemento `` en una página PDF amigable con vectores. Esto le permite preservar el aspecto exacto del canvas mientras obtiene funciones de PDF como paginación, texto buscable y fácil compartición. + +## Por qué usar Aspose.HTML para Java para esta tarea? + +- **Soporte completo de HTML5** – Canvas, SVG, CSS3 y JavaScript moderno se ejecutan correctamente durante la conversión. +- **Procesamiento del lado del servidor** – No se necesita un navegador sin cabeza; la biblioteca maneja el renderizado internamente. +- **Salida PDF de alta fidelidad** – Las fuentes, colores y el diseño se conservan con precisión. +- **Multiplataforma** – Funciona en cualquier sistema operativo que soporte Java. + +Aspose.HTML para Java soporta la conversión de **más de 30 características HTML5**, incluido Canvas, y puede procesar documentos de hasta **500 MB** sin cargar todo el archivo en memoria, ofreciendo tiempos de generación de PDF inferiores a **2 segundos** para páginas de canvas típicas. ## Requisitos previos -- **Java Development Kit (JDK)** – Java 8 o superior. -- **Aspose.HTML for Java** – Descárgalo desde el sitio oficial [here](https://releases.aspose.com/html/java/). -- **IDE** – Eclipse, IntelliJ IDEA o cualquier editor compatible con Java. +- **Java Development Kit (JDK)** – Java 8 o superior. +- **Aspose.HTML for Java** – Descárguelo desde el sitio oficial [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). +- **IDE** – Eclipse, IntelliJ IDEA, o cualquier editor compatible con Java. -Con esos elementos listos, estás preparado para comenzar a crear y exportar gráficos de canvas. +Con eso listo, está preparado para comenzar a crear y exportar gráficos de canvas. ## Importar paquetes -Primero, importa las clases que necesitaremos de Aspose.HTML y Java I/O. +La clase `HTMLDocument` es el objeto central que representa un archivo HTML en memoria, mientras que la clase `Converter` realiza el renderizado real a PDF. ```java import com.aspose.html.HTMLDocument; @@ -51,12 +98,13 @@ import java.io.FileWriter; ``` ## ¿Por qué guardar canvas como PDF? -Guardar canvas como PDF es ideal cuando necesitas una representación estática e imprimible de gráficos web dinámicos. Los PDFs se pueden visualizar universalmente, soportan renderizado de alta resolución y pueden archivarse o enviarse por correo sin perder calidad. -## Paso 1: Crear un elemento Canvas y dibujar texto +Guardar canvas como PDF es ideal cuando necesita una representación estática e imprimible de gráficos web dinámicos. Los PDF se pueden visualizar universalmente, soportan renderizado de alta resolución y pueden archivarse o enviarse por correo electrónico sin perder calidad. Además, los PDF conservan la información vectorial cuando es posible, le permiten incrustar metadatos y pueden combinarse con otras páginas para crear informes multipágina, lo que los hace adecuados para requisitos de archivo y cumplimiento. -### 1.1 Preparar el HTML y JavaScript (dibujar texto en el canvas) -A continuación se muestra una cadena Java que contiene una página HTML simple con un elemento ``. El JavaScript incrustado obtiene el contexto del canvas, establece una fuente y dibuja la frase **“Hello World”**. +## Paso 1: crear un elemento canvas y dibujar texto + +### 1.1 preparar el HTML y JavaScript (dibujar texto en canvas) +A continuación se muestra una cadena Java que contiene una página HTML sencilla con un elemento ``. El JavaScript incrustado obtiene el contexto del canvas, establece una fuente y dibuja la frase **“Hello World”**. ```java String code = "\n" + @@ -69,7 +117,7 @@ String code = "}} {{< blocks/products/pf/tutorial-page-section >}} -# Konvertera Canvas till PDF med Aspose.HTML för Java +# Konvertera canvas till PDF med Aspose.HTML för Java -Interaktiva webbupplevelser förlitar sig ofta på HTML5 **Canvas**‑elementet. Genom att rita grafik med JavaScript kan du skapa diagram, signaturer eller anpassade illustrationer direkt i webbläsaren. Men vad händer om du behöver en utskrivbar, delbar version av den canvasen? I den här handledningen kommer du att lära dig **hur man konverterar canvas till PDF** med JavaScript tillsammans med **Aspose.HTML för Java**. Vi går igenom hur man skapar en canvas, ritar text, sparar HTML och slutligen exporterar resultatet till en PDF‑fil. +Interaktiva webbupplevelser förlitar sig ofta på HTML5 **Canvas**-elementet. Genom att rita grafik med JavaScript kan du skapa diagram, signaturer eller anpassade illustrationer direkt i webbläsaren. I många scenarier behöver du **convert canvas to PDF** så att grafiken kan skrivas ut, arkiveras eller delas. Denna handledning visar exakt hur du utför den konverteringen med JavaScript tillsammans med Aspose.HTML för Java, och täcker canvas‑skapande, ritning av text, sparande av HTML‑filen och export till ett PDF‑dokument. ## Snabba svar -- **Vad betyder “convert canvas to pdf”?** Det betyder att ta det visuella innehållet som renderas på en HTML5 Canvas och generera ett PDF‑dokument som bevarar det utseendet. -- **Vilket bibliotek hanterar konverteringen?** Aspose.HTML för Java tillhandahåller ett pålitligt server‑side‑API för att konvertera HTML (inklusive Canvas) till PDF. +- **Vad betyder “convert canvas to PDF”?** Det betyder att ta det visuella innehållet som renderas på en HTML5 Canvas och generera ett PDF‑dokument som bevarar det utseendet. +- **Vilket bibliotek hanterar konverteringen?** Aspose.HTML for Java tillhandahåller ett pålitligt server‑side‑API för att konvertera HTML (inklusive Canvas) till PDF. - **Behöver jag en webbläsare för konverteringen?** Nej. Konverteringen körs på Java‑runtime, så du kan automatisera PDF‑generering på en server eller i en backend‑tjänst. -- **Kan jag rita text på canvasen innan konvertering?** Absolut – vi visar ett enkelt JavaScript‑exempel som skriver “Hello World” på canvasen. -- **Vad är de viktigaste förutsättningarna?** Java JDK, Aspose.HTML för Java‑biblioteket och en Java‑IDE (Eclipse, IntelliJ osv.). +- **Kan jag rita text på canvas innan konvertering?** Absolut – vi visar ett enkelt JavaScript‑exempel som skriver “Hello World” på canvas. +- **Vad är de viktigaste förutsättningarna?** Java JDK, Aspose.HTML for Java‑biblioteket och en Java‑IDE (Eclipse, IntelliJ, etc.). -## Vad är “convert canvas to pdf”? -Att konvertera en canvas till PDF betyder att rendera den pixelbaserade ritningen från ``‑elementet till en vektorvänlig PDF‑sida. Detta låter dig bevara canvasens exakta utseende samtidigt som du får PDF‑funktioner som paginering, sökbar text och enkel delning. +## Så konverterar du canvas till PDF med Aspose.HTML för Java? + +Läs in din HTML‑fil som innehåller ``‑elementet och anropa `Converter.convert` – det enda anropet renderar canvas och alla tillhörande HTML5‑funktioner till en PDF‑sida. API‑et hanterar teckensnittsinbäddning, färgprecision och layoutbevarande automatiskt, så du får en utskriftsklar PDF med bara två rader Java‑kod. + +## Vad är “convert canvas to PDF”? + +Att konvertera en canvas till PDF betyder att rendera den pixelbaserade ritningen från ``‑elementet till en vektorvänlig PDF‑sida. Detta gör att du kan bevara exakt hur canvas ser ut samtidigt som du får PDF‑funktioner som paginering, sökbar text och enkel delning. ## Varför använda Aspose.HTML för Java för denna uppgift? -- **Fullt HTML5‑stöd** – Canvas, CSS3 och modern JavaScript körs korrekt under konverteringen. + +- **Fullt HTML5‑stöd** – Canvas, SVG, CSS3 och modern JavaScript körs korrekt under konverteringen. - **Server‑side‑bearbetning** – Ingen headless‑webbläsare behövs; biblioteket hanterar rendering internt. -- **PDF‑utdata med hög trohet** – Typsnitt, färger och layout behålls exakt. -- **Plattformsoberoende** – Fungerar på alla operativsystem som stödjer Java. +- **Högkvalitativ PDF‑utdata** – Teckensnitt, färger och layout bevaras exakt. +- **Plattformsoberoende** – Fungerar på alla OS som stödjer Java. + +Aspose.HTML for Java stödjer konvertering av **30+ HTML5‑funktioner**, inklusive Canvas, och kan bearbeta dokument upp till **500 MB** utan att ladda hela filen i minnet, vilket ger PDF‑genereringstider under **2 sekunder** för typiska canvas‑sidor. ## Förutsättningar -- **Java Development Kit (JDK)** – Java 8 eller högre. -- **Aspose.HTML för Java** – Ladda ner från den officiella webbplatsen [här](https://releases.aspose.com/html/java/). +- **Java Development Kit (JDK)** – Java 8 eller högre. +- **Aspose.HTML for Java** – Ladda ner från den officiella sidan [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). - **IDE** – Eclipse, IntelliJ IDEA eller någon Java‑kompatibel editor. Med dessa på plats är du redo att börja skapa och exportera canvas‑grafik. ## Importera paket -Först importerar du de klasser vi behöver från Aspose.HTML och Java I/O. +`HTMLDocument`‑klassen är kärnobjektet som representerar en HTML‑fil i minnet, medan `Converter`‑klassen utför den faktiska renderingen till PDF. ```java import com.aspose.html.HTMLDocument; @@ -51,12 +99,13 @@ import java.io.FileWriter; ``` ## Varför spara canvas som PDF? -Att spara canvas som PDF är idealiskt när du behöver en statisk, utskrivbar representation av dynamisk webb‑grafik. PDF‑filer kan visas överallt, stödjer högupplöst rendering och kan arkiveras eller e‑postas utan att förlora kvalitet. -## Steg 1: Skapa ett Canvas‑element och rita text +Att spara canvas som PDF är idealiskt när du behöver en statisk, utskrivbar representation av dynamisk webbgrafik. PDF‑filer kan visas universellt, stödjer högupplöst rendering och kan arkiveras eller e‑postas utan att förlora kvalitet. Dessutom bevarar PDF‑filer vektorinformation när det är möjligt, låter dig bädda in metadata och kan kombineras med andra sidor för att skapa flersidiga rapporter, vilket gör dem lämpliga för arkiverings‑ och efterlevnadskrav. -### 1.1 Förbered HTML‑ och JavaScript‑koden (rita text på canvas) -Nedan är en Java‑sträng som innehåller en enkel HTML‑sida med ett ``‑element. Den inbäddade JavaScript‑koden hämtar canvas‑kontexten, sätter ett typsnitt och ritar frasen **“Hello World”**. +## Steg 1: skapa ett canvas‑element och rita text + +### 1.1 förbered HTML och JavaScript (rita text på canvas) +Nedan är en Java‑sträng som innehåller en enkel HTML‑sida med ett ``‑element. Den inbäddade JavaScript‑koden hämtar canvas‑kontexten, sätter ett teckensnitt och ritar frasen **“Hello World”**. ```java String code = "\n" + @@ -69,8 +118,8 @@ String code = "}} {{< blocks/products/pf/tutorial-page-section >}} -# แปลง Canvas เป็น PDF ด้วย Aspose.HTML for Java +# แปลง canvas เป็น PDF ด้วย Aspose.HTML for Java -ประสบการณ์เว็บแบบโต้ตอบมักพึ่งพาองค์ประกอบ **Canvas** ของ HTML5 การวาดกราฟิกด้วย JavaScript ทำให้คุณสร้างแผนภูมิ ลายเซ็น หรือภาพประกอบแบบกำหนดเองโดยตรงในเบราว์เซอร์ได้ แต่ถ้าคุณต้องการเวอร์ชันที่พิมพ์ได้และแชร์ได้ของ Canvas นั้นล่ะ? ในบทแนะนำนี้คุณจะได้เรียนรู้ **วิธีแปลง canvas เป็น PDF** ด้วย JavaScript ร่วมกับ **Aspose.HTML for Java** เราจะเดินผ่านขั้นตอนการสร้าง Canvas, วาดข้อความ, บันทึก HTML, และสุดท้ายส่งออกผลลัพธ์เป็นไฟล์ PDF +ประสบการณ์เว็บแบบโต้ตอบมักพึ่งพาองค์ประกอบ **Canvas** ของ HTML5 การวาดกราฟิกด้วย JavaScript ทำให้คุณสามารถสร้างแผนภูมิ ลายเซ็น หรือภาพประกอบแบบกำหนดเองโดยตรงในเบราว์เซอร์ ในหลายกรณีคุณจะต้อง **แปลง canvas เป็น PDF** เพื่อให้กราฟิกสามารถพิมพ์ เก็บเป็นเอกสาร หรือแชร์ได้ บทแนะนำนี้จะแสดงให้คุณเห็นขั้นตอนการแปลงโดยใช้ JavaScript ร่วมกับ Aspose.HTML for Java ครอบคลุมการสร้าง canvas, การวาดข้อความ, การบันทึกไฟล์ HTML, และการส่งออกเป็นเอกสาร PDF -## คำตอบสั้น ๆ -- **“แปลง canvas เป็น pdf” หมายถึงอะไร?** หมายถึงการนำเนื้อหาภาพที่แสดงบน HTML5 Canvas มาสร้างเป็นเอกสาร PDF ที่คงลักษณะการแสดงผลนั้นไว้ -- **ไลบรารีที่ทำการแปลงคืออะไร?** Aspose.HTML for Java ให้ API ฝั่งเซิร์ฟเวอร์ที่เชื่อถือได้สำหรับการแปลง HTML (รวมถึง Canvas) เป็น PDF -- **ต้องใช้เบราว์เซอร์ในการแปลงหรือไม่?** ไม่จำเป็น การแปลงทำงานบน Java runtime จึงสามารถทำอัตโนมัติบนเซิร์ฟเวอร์หรือบริการแบ็กเอนด์ได้ -- **สามารถวาดข้อความบน canvas ก่อนแปลงได้หรือไม่?** ได้เลย – เราจะแสดงตัวอย่าง JavaScript ที่เขียน “Hello World” ลงบน canvas -- **ข้อกำหนดเบื้องต้นหลักคืออะไร?** Java JDK, ไลบรารี Aspose.HTML for Java, และ IDE สำหรับ Java (Eclipse, IntelliJ ฯลฯ) +## คำตอบด่วน +- **การแปลง canvas เป็น PDF หมายถึงอะไร?** หมายถึงการนำเนื้อหาภาพที่แสดงบน HTML5 Canvas มาสร้างเป็นเอกสาร PDF ที่คงลักษณะการแสดงผลนั้นไว้ +- **ไลบรารีใดรับผิดชอบการแปลง?** Aspose.HTML for Java ให้ API ที่เชื่อถือได้บนเซิร์ฟเวอร์สำหรับการแปลง HTML (รวมถึง Canvas) เป็น PDF +- **ต้องใช้เบราว์เซอร์สำหรับการแปลงหรือไม่?** ไม่จำเป็น การแปลงทำงานบน Java runtime ทำให้คุณสามารถอัตโนมัติการสร้าง PDF บนเซิร์ฟเวอร์หรือบริการแบ็กเอนด์ได้ +- **สามารถวาดข้อความบน canvas ก่อนแปลงได้หรือไม่?** แน่นอน – เราจะแสดงตัวอย่าง JavaScript ง่าย ๆ ที่เขียน “Hello World” ลงบน canvas +- **ข้อกำหนดเบื้องต้นหลักคืออะไร?** Java JDK, ไลบรารี Aspose.HTML for Java, และ IDE สำหรับ Java (Eclipse, IntelliJ ฯลฯ) -## “แปลง canvas เป็น pdf” คืออะไร? -การแปลง canvas เป็น PDF หมายถึงการเรนเดอร์การวาดแบบพิกเซลจากองค์ประกอบ `` ไปยังหน้า PDF ที่เป็นมิตรกับเวกเตอร์ ซึ่งทำให้คุณคงรูปลักษณ์ของ canvas ไว้ได้พร้อมรับคุณสมบัติของ PDF เช่น การแบ่งหน้า, ข้อความค้นหาได้, และการแชร์ที่ง่าย +## วิธีแปลง canvas เป็น PDF ด้วย Aspose.HTML for Java? + +โหลดไฟล์ HTML ที่มีองค์ประกอบ `` แล้วเรียก `Converter.convert` – การเรียกครั้งเดียวนี้จะเรนเดอร์ canvas และคุณลักษณะ HTML5 ที่เกี่ยวข้องทั้งหมดเป็นหน้า PDF API จะจัดการการฝังฟอนต์ ความแม่นยำของสี และการคงรูปแบบโดยอัตโนมัติ ทำให้คุณได้ PDF พร้อมพิมพ์ในเพียงสองบรรทัดของโค้ด Java + +## “แปลง canvas เป็น PDF” คืออะไร? + +การแปลง canvas เป็น PDF หมายถึงการเรนเดอร์การวาดแบบพิกเซลจากองค์ประกอบ `` ไปเป็นหน้าตา PDF ที่เป็นมิตรกับเวกเตอร์ ซึ่งช่วยให้คุณคงรูปลักษณ์เดิมของ canvas ไว้พร้อมรับคุณสมบัติของ PDF เช่น การแบ่งหน้า, ข้อความที่ค้นหาได้, และการแชร์ที่ง่าย ## ทำไมต้องใช้ Aspose.HTML for Java สำหรับงานนี้? -- **รองรับ HTML5 เต็มรูปแบบ** – Canvas, CSS3, และ JavaScript สมัยใหม่ทำงานได้อย่างถูกต้องระหว่างการแปลง -- **ประมวลผลฝั่งเซิร์ฟเวอร์** – ไม่ต้องใช้เบราว์เซอร์แบบ headless; ไลบรารีจัดการการเรนเดอร์ภายในเอง + +- **สนับสนุน HTML5 เต็มรูปแบบ** – Canvas, SVG, CSS3, และ JavaScript สมัยใหม่ทำงานได้อย่างถูกต้องระหว่างการแปลง +- **การประมวลผลบนเซิร์ฟเวอร์** – ไม่ต้องใช้เบราว์เซอร์แบบ headless; ไลบรารีจัดการการเรนเดอร์ภายใน - **ผลลัพธ์ PDF ความละเอียดสูง** – ฟอนต์, สี, และเลย์เอาต์ถูกเก็บรักษาอย่างแม่นยำ -- **ข้ามแพลตฟอร์ม** – ทำงานบน OS ใดก็ได้ที่รองรับ Java +- **ข้ามแพลตฟอร์ม** – ทำงานบน OS ใดก็ได้ที่รองรับ Java + +Aspose.HTML for Java รองรับการแปลง **30+ คุณลักษณะ HTML5** รวมถึง Canvas และสามารถประมวลผลเอกสารขนาดสูงสุด **500 MB** โดยไม่ต้องโหลดไฟล์ทั้งหมดเข้าสู่หน่วยความจำ ทำให้เวลาการสร้าง PDF อยู่ภายใต้ **2 วินาที** สำหรับหน้า canvas ปกติ ## ข้อกำหนดเบื้องต้น -- **Java Development Kit (JDK)** – Java 8 หรือสูงกว่า -- **Aspose.HTML for Java** – ดาวน์โหลดจากเว็บไซต์อย่างเป็นทางการ [ที่นี่](https://releases.aspose.com/html/java/) -- **IDE** – Eclipse, IntelliJ IDEA, หรือเครื่องมือแก้ไขที่รองรับ Java ใดก็ได้ +- **Java Development Kit (JDK)** – Java 8 หรือสูงกว่า +- **Aspose.HTML for Java** – ดาวน์โหลดจากหน้าเว็บไซต์อย่างเป็นทางการ [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/) +- **IDE** – Eclipse, IntelliJ IDEA หรือเครื่องมือแก้ไขที่รองรับ Java ใด ๆ -เมื่อมีทั้งหมดนี้ คุณพร้อมที่จะเริ่มสร้างและส่งออกกราฟิกจาก canvas +เมื่อมีทั้งหมดนี้ คุณพร้อมที่จะเริ่มสร้างและส่งออกกราฟิก canvas ## นำเข้าแพ็กเกจ -แรกเริ่มให้นำเข้าคลาสที่จำเป็นจาก Aspose.HTML และ Java I/O +คลาส `HTMLDocument` เป็นออบเจ็กต์หลักที่แทนไฟล์ HTML ในหน่วยความจำ ส่วนคลาส `Converter` ทำหน้าที่เรนเดอร์เป็น PDF ```java import com.aspose.html.HTMLDocument; @@ -51,12 +98,13 @@ import java.io.FileWriter; ``` ## ทำไมต้องบันทึก canvas เป็น PDF? -การบันทึก canvas เป็น PDF เหมาะเมื่อต้องการตัวแทนแบบคงที่ที่พิมพ์ได้ของกราฟิกเว็บแบบไดนามิก PDF สามารถเปิดดูได้ทั่วโลก รองรับการเรนเดอร์ความละเอียดสูง และสามารถเก็บหรือส่งอีเมลโดยไม่สูญเสียคุณภาพ -## ขั้นตอนที่ 1: สร้างองค์ประกอบ Canvas และวาดข้อความ +การบันทึก canvas เป็น PDF เหมาะเมื่อต้องการตัวแทนแบบคงที่ที่พิมพ์ได้ของกราฟิกเว็บแบบไดนามิก PDF สามารถดูได้ทั่วโลก รองรับการเรนเดอร์ความละเอียดสูง และสามารถเก็บเป็นเอกสารหรือส่งอีเมลโดยไม่สูญเสียคุณภาพ นอกจากนี้ PDF ยังคงข้อมูลเวกเตอร์เมื่อเป็นไปได้ สามารถฝังเมตาดาต้า และรวมกับหน้าอื่นเพื่อสร้างรายงานหลายหน้า ทำให้เหมาะกับการเก็บรักษาและข้อกำหนดการปฏิบัติตาม + +## ขั้นตอนที่ 1: สร้างองค์ประกอบ canvas และวาดข้อความ ### 1.1 เตรียม HTML และ JavaScript (วาดข้อความบน canvas) -ด้านล่างเป็นสตริง Java ที่บรรจุหน้า HTML ง่าย ๆ พร้อมองค์ประกอบ `` JavaScript ฝังอยู่จะดึง context ของ canvas, ตั้งฟอนต์, และวาดข้อความ **“Hello World”** +ด้านล่างเป็นสตริง Java ที่บรรจุหน้า HTML ง่าย ๆ มีองค์ประกอบ `` JavaScript ที่ฝังอยู่จะดึง context ของ canvas, ตั้งฟอนต์, และวาดข้อความ **“Hello World”** ```java String code = "\n" + @@ -69,8 +117,8 @@ String code = "}} {{< blocks/products/pf/tutorial-page-section >}} -# Canvas'ı PDF'e Dönüştürme – Aspose.HTML for Java ile +# Canvas'ı PDF'ye Dönüştürme Aspose.HTML for Java ile -Etkileşimli web deneyimleri genellikle HTML5 **Canvas** öğesine dayanır. JavaScript ile grafik çizebilir, tarayıcıda doğrudan grafikler, imzalar veya özel illüstrasyonlar oluşturabilirsiniz. Peki, bu canvas'ın yazdırılabilir, paylaşılabilir bir sürümüne ihtiyacınız olsaydı? Bu öğreticide **canvas'ı PDF'e nasıl dönüştüreceğinizi** JavaScript ve **Aspose.HTML for Java** birlikte kullanarak öğreneceksiniz. Bir canvas oluşturma, metin çizme, HTML'yi kaydetme ve sonunda sonucu bir PDF dosyasına dışa aktarma adımlarını birlikte inceleyeceğiz. +İnteraktif web deneyimleri genellikle HTML5 **Canvas** öğesine dayanır. JavaScript ile grafik çizebilir, tarayıcıda doğrudan grafikler, imzalar veya özel illüstrasyonlar oluşturabilirsiniz. Birçok senaryoda grafiklerin yazdırılması, arşivlenmesi veya paylaşılması için **canvas'ı PDF'ye dönüştürmeniz** gerekir. Bu öğreticide, Aspose.HTML for Java ile birlikte JavaScript kullanarak bu dönüşümün nasıl yapılacağını, canvas oluşturmayı, metin çizmeyi, HTML dosyasını kaydetmeyi ve bir PDF belgesine dışa aktarmayı adım adım gösteriyoruz. ## Hızlı Yanıtlar -- **“canvas'ı pdf'e dönüştürmek” ne demektir?** HTML5 Canvas üzerinde render edilen görsel içeriği alıp, bu görünümü koruyan bir PDF belgesi oluşturmak anlamına gelir. -- **Dönüşümü hangi kütüphane gerçekleştiriyor?** Aspose.HTML for Java, HTML (Canvas dahil) PDF'e dönüştürmek için güvenilir bir sunucu‑tarafı API sağlar. -- **Dönüşüm için bir tarayıcıya ihtiyacım var mı?** Hayır. Dönüşüm Java çalışma zamanında gerçekleşir, bu sayede PDF üretimini bir sunucuda ya da arka uç hizmetinde otomatikleştirebilirsiniz. -- **Dönüştürmeden önce canvas üzerine metin çizebilir miyim?** Kesinlikle – “Hello World” metnini canvas üzerine yazan basit bir JavaScript örneği göstereceğiz. +- **Canvas'ı PDF'ye dönüştürmek ne anlama geliyor?** Bu, HTML5 Canvas üzerinde render edilen görsel içeriği alıp, görünümünü koruyan bir PDF belgesi oluşturmak anlamına gelir. +- **Dönüşümü hangi kütüphane gerçekleştirir?** Aspose.HTML for Java, HTML'yi (Canvas dahil) PDF'ye dönüştürmek için güvenilir bir sunucu‑tarafı API'si sağlar. +- **Dönüşüm için bir tarayıcıya ihtiyacım var mı?** Hayır. Dönüşüm Java çalışma zamanında çalışır, bu yüzden PDF oluşturmayı bir sunucuda veya arka uç hizmetinde otomatikleştirebilirsiniz. +- **Dönüştürmeden önce canvas üzerine metin çizebilir miyim?** Kesinlikle – canvas üzerine “Hello World” yazan basit bir JavaScript örneği göstereceğiz. - **Ana önkoşullar nelerdir?** Java JDK, Aspose.HTML for Java kütüphanesi ve bir Java IDE (Eclipse, IntelliJ vb.). -## “canvas'ı pdf'e dönüştürmek” nedir? -Canvas'ı PDF'e dönüştürmek, `` öğesindeki piksel‑tabanlı çizimi vektör‑dostu bir PDF sayfasına render etmek anlamına gelir. Bu sayede canvas'ın tam görünümü korunurken, PDF'in sayfalama, aranabilir metin ve kolay paylaşım gibi özelliklerinden faydalanabilirsiniz. +## Aspose.HTML for Java kullanarak canvas'ı PDF'ye nasıl dönüştürülür? -## Neden Aspose.HTML for Java bu görev için tercih edilmeli? -- **Tam HTML5 desteği** – Canvas, CSS3 ve modern JavaScript dönüşüm sırasında doğru şekilde çalışır. -- **Sunucu‑tarafı işleme** – Headless tarayıcı gerekmez; kütüphane render işlemini dahili olarak yönetir. -- **Yüksek doğrulukta PDF çıktısı** – Yazı tipleri, renkler ve düzen tam olarak korunur. -- **Çapraz‑platform** – Java destekleyen her işletim sisteminde çalışır. +HTML5 `` öğesini içeren HTML dosyanızı yükleyin ve `Converter.convert` metodunu çağırın – bu tek çağrı canvas ve ilişkili tüm HTML5 özelliklerini bir PDF sayfasına render eder. API, font gömme, renk doğruluğu ve düzen korumasını otomatik olarak yönetir, böylece sadece iki satır Java kodu ile baskıya hazır bir PDF elde edersiniz. + +## “Canvas'ı PDF'ye dönüştürmek” nedir? + +Canvas'ı PDF'ye dönüştürmek, `` öğesindeki piksel tabanlı çizimi vektör dostu bir PDF sayfasına render etmek anlamına gelir. Bu, canvas'ın tam görünümünü korurken, PDF'nin sayfalama, aranabilir metin ve kolay paylaşım gibi özelliklerinden faydalanmanızı sağlar. + +## Bu görev için neden Aspose.HTML for Java kullanılmalı? + +- **Tam HTML5 desteği** – Canvas, SVG, CSS3 ve modern JavaScript dönüşüm sırasında doğru şekilde çalışır. +- **Sunucu‑tarafı işleme** – Başsız bir tarayıcıya gerek yok; kütüphane render işlemini dahili olarak yönetir. +- **Yüksek doğrulukta PDF çıktısı** – Fontlar, renkler ve düzen doğru bir şekilde korunur. +- **Çapraz platform** – Java'yı destekleyen herhangi bir işletim sisteminde çalışır. + +Aspose.HTML for Java, Canvas dahil **30+ HTML5 özelliği** dönüşümünü destekler ve dosyanın tamamını belleğe yüklemeden **500 MB**'a kadar belgeleri işleyebilir, tipik canvas sayfaları için PDF oluşturma süresini **2 saniye** altında tutar. ## Önkoşullar -- **Java Development Kit (JDK)** – Java 8 veya üzeri. -- **Aspose.HTML for Java** – Resmi siteden [buradan](https://releases.aspose.com/html/java/) indirin. +- **Java Development Kit (JDK)** – Java 8 veya üzeri. +- **Aspose.HTML for Java** – Resmi siteden indirin [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). - **IDE** – Eclipse, IntelliJ IDEA veya herhangi bir Java‑uyumlu editör. -Bu gereksinimler sağlandığında, canvas grafiklerini oluşturup dışa aktarmaya hazırsınız. +Bu önkoşullar sağlandığında, canvas grafiklerini oluşturup dışa aktarmaya hazırsınız. -## Paketleri İçe Aktar -İlk olarak, Aspose.HTML ve Java I/O’dan ihtiyacımız olan sınıfları içe aktaralım. +## Paketleri İçe Aktarma +`HTMLDocument` sınıfı, bellekte bir HTML dosyasını temsil eden temel nesnedir, `Converter` sınıfı ise PDF'ye gerçek render işlemini gerçekleştirir. ```java import com.aspose.html.HTMLDocument; @@ -52,12 +100,13 @@ import java.io.FileWriter; ``` ## Neden canvas'ı PDF olarak kaydetmeliyiz? -Canvas'ı PDF olarak kaydetmek, dinamik web grafiklerinin statik, yazdırılabilir bir temsilini elde etmek istediğinizde idealdir. PDF'ler evrensel olarak görüntülenebilir, yüksek çözünürlükte render eder ve kalite kaybı olmadan arşivlenebilir veya e‑posta ile gönderilebilir. -## Adım 1: Bir Canvas Öğesi Oluşturun ve Metin Çizin +Canvas'ı PDF olarak kaydetmek, dinamik web grafiklerinin statik, yazdırılabilir bir temsiline ihtiyaç duyduğunuzda idealdir. PDF'ler evrensel olarak görüntülenebilir, yüksek çözünürlükte render desteği sunar ve kalite kaybı olmadan arşivlenebilir veya e‑posta ile gönderilebilir. Ayrıca, mümkün olduğunda vektör bilgilerini korur, meta veri eklemenize izin verir ve diğer sayfalarla birleştirilerek çok sayfalı raporlar oluşturulabilir; bu da arşivleme ve uyumluluk gereksinimleri için uygundur. -### 1.1 HTML ve JavaScript'i Hazırlayın (canvas üzerine metin çizme) -Aşağıda, bir `` öğesi içeren basit bir HTML sayfasını tutan bir Java dizesi yer alıyor. Gömülü JavaScript, canvas bağlamını alır, bir font ayarlar ve **“Hello World”** ifadesini çizer. +## Adım 1: bir canvas öğesi oluşturun ve metin çizin + +### 1.1 HTML ve JavaScript'i hazırlayın (canvas üzerine metin çizin) +Aşağıda, bir `` öğesi içeren basit bir HTML sayfasını barındıran bir Java dizesi bulunmaktadır. Gömülü JavaScript, canvas bağlamını alır, bir font ayarlar ve **“Hello World”** ifadesini çizer. ```java String code = "\n" + @@ -70,8 +119,8 @@ String code = "}} diff --git a/html/vietnamese/java/advanced-usage/html5-canvas-manipulation-using-javascript/_index.md b/html/vietnamese/java/advanced-usage/html5-canvas-manipulation-using-javascript/_index.md index 58a7bfbc63..d19852f3e3 100644 --- a/html/vietnamese/java/advanced-usage/html5-canvas-manipulation-using-javascript/_index.md +++ b/html/vietnamese/java/advanced-usage/html5-canvas-manipulation-using-javascript/_index.md @@ -1,10 +1,50 @@ --- -date: 2026-03-21 -description: Học cách chuyển đổi canvas sang PDF bằng JavaScript và Aspose.HTML cho - Java. Tạo đồ họa động, vẽ văn bản trên canvas và xuất HTML sang PDF. -linktitle: Convert Canvas to PDF Using JavaScript +date: 2026-09-03 +description: Tìm hiểu cách chuyển đổi canvas sang PDF bằng JavaScript và Aspose.HTML + for Java. Tạo đồ họa động, vẽ văn bản trên canvas và xuất HTML sang PDF. +keywords: +- convert canvas to pdf +- draw text on canvas +- generate pdf from canvas +lastmod: 2026-09-03 +linktitle: Chuyển đổi Canvas sang PDF bằng JavaScript +og_description: Chuyển đổi canvas sang PDF bằng JavaScript và Aspose.HTML for Java. + Tìm hiểu cách vẽ văn bản trên canvas, lưu HTML và tạo PDF chất lượng cao trong vài + phút. +og_image_alt: Screenshot of a Java‑generated PDF created from an HTML5 canvas +og_title: Chuyển đổi canvas sang PDF với Aspose.HTML for Java – Quick Guide +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Learn how to convert canvas to PDF using JavaScript and Aspose.HTML + for Java. Create dynamic graphics, draw text on canvas, and export HTML to PDF. + headline: Convert Canvas to PDF with Aspose.HTML for Java + type: TechArticle +- questions: + - answer: Aspose.HTML for Java is a powerful library that enables developers to + create, manipulate, and convert HTML documents in Java applications, supporting + HTML5 features like Canvas. + question: What is Aspose.HTML for Java? + - answer: Yes, a commercial license is required for production use. Details are + available on the [purchase page](https://purchase.aspose.com/buy). + question: Can I use this in commercial projects? + - answer: Absolutely. You can download a trial version from the [Aspose.HTML trial + download page](https://releases.aspose.com/). + question: Is there a free trial? + - answer: Temporary licenses are provided for evaluation purposes via the [temporary + license request page](https://purchase.aspose.com/temporary-license/). + question: How do I obtain a temporary license for testing? + - answer: The full API reference is available [Aspose.HTML Java API reference](https://reference.aspose.com/html/java/). + question: Where can I find detailed documentation? + type: FAQPage second_title: Java HTML Processing with Aspose.HTML -title: Chuyển đổi Canvas sang PDF với Aspose.HTML cho Java +tags: +- convert canvas to pdf +- Aspose.HTML +- Java PDF conversion +- HTML5 Canvas +- Java web graphics +title: Chuyển đổi Canvas sang PDF với Aspose.HTML for Java url: /vi/java/advanced-usage/html5-canvas-manipulation-using-javascript/ weight: 13 --- @@ -13,35 +53,43 @@ weight: 13 {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Chuyển đổi Canvas sang PDF với Aspose.HTML cho Java +# Chuyển đổi canvas sang PDF với Aspose.HTML cho Java -Các trải nghiệm web tương tác thường dựa vào phần tử **Canvas** của HTML5. Bằng cách vẽ đồ họa bằng JavaScript, bạn có thể tạo biểu đồ, chữ ký hoặc minh họa tùy chỉnh trực tiếp trong trình duyệt. Nhưng nếu bạn cần một phiên bản có thể in, có thể chia sẻ của canvas đó thì sao? Trong hướng dẫn này, bạn sẽ học **cách chuyển đổi canvas sang PDF** bằng JavaScript kết hợp với **Aspose.HTML cho Java**. Chúng ta sẽ đi qua việc tạo canvas, vẽ chữ, lưu HTML và cuối cùng xuất kết quả ra file PDF. +Các trải nghiệm web tương tác thường dựa vào phần tử **Canvas** của HTML5. Bằng cách vẽ đồ họa bằng JavaScript, bạn có thể tạo biểu đồ, chữ ký hoặc minh họa tùy chỉnh trực tiếp trong trình duyệt. Trong nhiều trường hợp, bạn sẽ cần **convert canvas to PDF** để đồ họa có thể được in, lưu trữ hoặc chia sẻ. Hướng dẫn này sẽ chỉ cho bạn cách thực hiện chuyển đổi đó bằng JavaScript kết hợp với Aspose.HTML cho Java, bao gồm việc tạo canvas, vẽ văn bản, lưu tệp HTML và xuất nó ra tài liệu PDF. ## Câu trả lời nhanh -- **“convert canvas to pdf” có nghĩa là gì?** Nó có nghĩa là lấy nội dung hình ảnh được hiển thị trên một Canvas HTML5 và tạo một tài liệu PDF giữ nguyên giao diện đó. -- **Thư viện nào thực hiện việc chuyển đổi?** Aspose.HTML cho Java cung cấp API phía máy chủ đáng tin cậy để chuyển đổi HTML (bao gồm Canvas) sang PDF. -- **Có cần trình duyệt để thực hiện chuyển đổi không?** Không. Quá trình chuyển đổi chạy trên môi trường Java, vì vậy bạn có thể tự động tạo PDF trên máy chủ hoặc trong dịch vụ backend. -- **Có thể vẽ chữ trên canvas trước khi chuyển đổi không?** Chắc chắn – chúng tôi sẽ trình bày một ví dụ JavaScript đơn giản viết “Hello World” lên canvas. +- **“convert canvas to PDF” có nghĩa là gì?** Nó có nghĩa là lấy nội dung hình ảnh được hiển thị trên một HTML5 Canvas và tạo ra một tài liệu PDF giữ nguyên giao diện đó. +- **Thư viện nào xử lý việc chuyển đổi?** Aspose.HTML cho Java cung cấp một API đáng tin cậy, chạy phía máy chủ để chuyển đổi HTML (bao gồm Canvas) sang PDF. +- **Tôi có cần trình duyệt để thực hiện chuyển đổi không?** Không. Quá trình chuyển đổi chạy trên môi trường Java, vì vậy bạn có thể tự động tạo PDF trên máy chủ hoặc trong dịch vụ backend. +- **Tôi có thể vẽ văn bản trên canvas trước khi chuyển đổi không?** Chắc chắn – chúng tôi sẽ trình bày một ví dụ JavaScript đơn giản viết “Hello World” lên canvas. - **Các yêu cầu chính là gì?** Java JDK, thư viện Aspose.HTML cho Java và một IDE Java (Eclipse, IntelliJ, v.v.). -## “convert canvas to pdf” là gì? -Chuyển đổi canvas sang PDF có nghĩa là render bản vẽ dựa trên pixel từ phần tử `` thành một trang PDF thân thiện với vector. Điều này cho phép bạn giữ nguyên hình ảnh của canvas đồng thời tận dụng các tính năng của PDF như phân trang, văn bản có thể tìm kiếm và dễ dàng chia sẻ. +## Cách chuyển đổi canvas sang PDF bằng Aspose.HTML cho Java? -## Tại sao nên dùng Aspose.HTML cho Java cho nhiệm vụ này? -- **Hỗ trợ đầy đủ HTML5** – Canvas, CSS3 và JavaScript hiện đại hoạt động chính xác trong quá trình chuyển đổi. -- **Xử lý phía máy chủ** – Không cần trình duyệt không giao diện; thư viện tự thực hiện việc render bên trong. -- **Đầu ra PDF chất lượng cao** – Phông chữ, màu sắc và bố cục được giữ lại một cách chính xác. -- **Đa nền tảng** – Hoạt động trên bất kỳ hệ điều hành nào hỗ trợ Java. +Tải tệp HTML của bạn chứa phần tử `` và gọi `Converter.convert` – lời gọi duy nhất này sẽ render canvas và tất cả các tính năng HTML5 liên quan vào một trang PDF. API tự động xử lý nhúng phông chữ, độ chính xác màu sắc và bảo tồn bố cục, vì vậy bạn có được một PDF sẵn sàng in chỉ với hai dòng mã Java. + +## “convert canvas to PDF” là gì? + +Chuyển đổi một canvas sang PDF có nghĩa là render bản vẽ dựa trên pixel từ phần tử `` thành một trang PDF thân thiện với vector. Điều này cho phép bạn giữ nguyên giao diện của canvas đồng thời tận dụng các tính năng của PDF như phân trang, văn bản có thể tìm kiếm và dễ dàng chia sẻ. + +## Tại sao nên sử dụng Aspose.HTML cho Java cho nhiệm vụ này? + +- **Full HTML5 support** – Canvas, SVG, CSS3, và JavaScript hiện đại hoạt động đúng trong quá trình chuyển đổi. +- **Server‑side processing** – Không cần trình duyệt không giao diện; thư viện xử lý việc render nội bộ. +- **High‑fidelity PDF output** – Phông chữ, màu sắc và bố cục được giữ lại một cách chính xác. +- **Cross‑platform** – Hoạt động trên bất kỳ hệ điều hành nào hỗ trợ Java. + +Aspose.HTML cho Java hỗ trợ chuyển đổi **hơn 30 tính năng HTML5**, bao gồm Canvas, và có thể xử lý tài liệu lên tới **500 MB** mà không cần tải toàn bộ tệp vào bộ nhớ, cung cấp thời gian tạo PDF dưới **2 giây** cho các trang canvas thông thường. ## Yêu cầu trước -- **Java Development Kit (JDK)** – Java 8 trở lên. -- **Aspose.HTML cho Java** – Tải xuống từ trang chính thức **[tại đây](https://releases.aspose.com/html/java/)**. -- **IDE** – Eclipse, IntelliJ IDEA hoặc bất kỳ trình soạn thảo nào tương thích Java. +- **Java Development Kit (JDK)** – Java 8 trở lên. +- **Aspose.HTML for Java** – Tải xuống từ trang chính thức [Aspose.HTML for Java download page](https://releases.aspose.com/html/java/). +- **IDE** – Eclipse, IntelliJ IDEA, hoặc bất kỳ trình soạn thảo nào tương thích với Java. -Với những công cụ trên, bạn đã sẵn sàng bắt đầu tạo và xuất đồ họa canvas. +Với những công cụ này, bạn đã sẵn sàng bắt đầu tạo và xuất đồ họa canvas. -## Nhập khẩu các gói -Đầu tiên, nhập các lớp cần thiết từ Aspose.HTML và Java I/O. +## Nhập các gói +Lớp `HTMLDocument` là đối tượng cốt lõi đại diện cho một tệp HTML trong bộ nhớ, trong khi lớp `Converter` thực hiện việc render thực tế sang PDF. ```java import com.aspose.html.HTMLDocument; @@ -51,12 +99,13 @@ import java.io.FileWriter; ``` ## Tại sao lưu canvas dưới dạng PDF? -Lưu canvas dưới dạng PDF là lựa chọn lý tưởng khi bạn cần một bản tĩnh, có thể in được của đồ họa web động. PDF được hỗ trợ rộng rãi, cho phép render độ phân giải cao và có thể lưu trữ hoặc gửi email mà không mất chất lượng. -## Bước 1: Tạo phần tử Canvas và Vẽ chữ +Lưu canvas dưới dạng PDF là lựa chọn lý tưởng khi bạn cần một bản đại diện tĩnh, có thể in được của đồ họa web động. PDF có thể xem trên mọi nền tảng, hỗ trợ render độ phân giải cao và có thể lưu trữ hoặc gửi email mà không mất chất lượng. Ngoài ra, PDF giữ lại thông tin vector khi có thể, cho phép bạn nhúng siêu dữ liệu và có thể kết hợp với các trang khác để tạo báo cáo đa trang, phù hợp cho mục đích lưu trữ và tuân thủ. + +## Bước 1: tạo phần tử canvas và vẽ văn bản -### 1.1 Chuẩn bị HTML và JavaScript (vẽ chữ trên canvas) -Dưới đây là một chuỗi Java chứa một trang HTML đơn giản có phần tử ``. JavaScript nhúng lấy ngữ cảnh canvas, đặt phông chữ và vẽ cụm từ **“Hello World”**. +### 1.1 chuẩn bị HTML và JavaScript (vẽ văn bản trên canvas) +Dưới đây là một chuỗi Java chứa một trang HTML đơn giản với phần tử ``. JavaScript nhúng lấy ngữ cảnh canvas, đặt phông chữ và vẽ cụm từ **“Hello World”**. ```java String code = "\n" + @@ -69,8 +118,8 @@ String code = "}} {{< blocks/products/pf/tutorial-page-section >}} -# إنشاء رملية Aspose HTML – دليل Java الكامل +# كيفية إنشاء رملية Aspose java – دليل كامل -هل احتجت يوماً إلى **إنشاء رملية Aspose HTML** لكنك لم تكن متأكدًا من كيفية إبقاء الصفحة التي تم تحميلها معزولة عن JVM الرئيسي الخاص بك؟ ربما تقوم ببناء أداة استخراج ويب، أو بيئة اختبار، أو تريد فقط تجربة الصفحات البعيدة دون تعريض نفسك لتأثيرات جانبية. في هذا الدرس سنستعرض ذلك بالتفصيل، وسنُظهر لك أيضًا **كيفية استرجاع عنوان الصفحة java** من داخل الرملة. +هل احتجت إلى **إنشاء رملية Aspose HTML** لكن لم تكن متأكدًا من كيفية عزل الصفحة المحملة عن JVM الرئيسي الخاص بك؟ ربما تقوم ببناء أداة استخراج ويب، أو بيئة اختبار، أو تريد فقط تجربة الصفحات البعيدة دون المخاطرة بالآثار الجانبية. في هذا الدرس سنستعرض ذلك بالضبط، وسنظهر لك أيضًا **كيفية استرجاع عنوان الصفحة java** من داخل الرملة. -الحل بسيط إلى حد كبير: قم بتهيئة كائن `SandboxOptions`، أنشئ `Sandbox`، حمّل عنوان URL خارجي باستخدام `HtmlDocument`، اقرأ العنوان، وأخيرًا نظّف كل شيء. في النهاية ستحصل على مقتطف مستقل يمكنك إدراجه في أي مشروع Java يستخدم Aspose.HTML for Java 23.1 (أو أحدث). +الحل بسيط إلى حد ما: قم بتهيئة كائن `SandboxOptions`، أنشئ `Sandbox`، حمّل عنوان URL خارجي باستخدام `HtmlDocument`، اقرأ العنوان، وأخيرًا نظّف كل شيء. في النهاية ستحصل على مقتطف مستقل يمكنك إدراجه في أي مشروع Java يستخدم Aspose.HTML for Java 23.1 (أو أحدث). -## ما ستتعلمه +## إجابات سريعة +- **ما هي رملية Aspose؟** إنها بيئة معزولة تعتمد على Chromium تعمل داخل JVM الخاص بك دون لمس نظام الملفات. +- **لماذا تستخدم رملية لاستخراج عنوان الصفحة؟** تضمن أن السكريبتات الخارجية لا يمكنها التأثير على حالة تطبيقك أو ذاكرته. +- **ما نسخة Java المطلوبة؟** Java 8 أو أحدث؛ المكتبة تعمل أيضًا مع Java 11، 17، وما بعده. +- **هل أحتاج إلى ترخيص؟** ترخيص تجريبي مجاني يكفي للتطوير؛ الترخيص التجاري مطلوب للإنتاج. +- **كم عدد أسطر الكود المطلوبة؟** أقل من 30 سطرًا للمنطق الأساسي، بالإضافة إلى كود الإعداد الاختياري. -- كيفية **إنشاء رملية Aspose HTML** مع إعدادات viewport مخصصة وإعدادات user‑agent. -- الخطوات الدقيقة لـ **استرجاع عنوان الصفحة java** من صفحة بعيدة مع البقاء بأمان داخل الرملة. -- المشكلات الشائعة (مثل نسيان تحرير الموارد) ونصائح الممارسات المثلى التي تحافظ على استهلاك الذاكرة منخفضًا. -- برنامج Java كامل جاهز للتنفيذ يمكنك نسخه‑لصقه، تجميعه، وتشغيله. +## ما هو إنشاء رملية Aspose java؟ +`Sandbox` هو محرك المتصفح الخفيف والمعزول الخاص بـ Aspose.HTML الذي يعمل داخل عملية Java. يوفر حاوية آمنة يمكنك من خلالها تحميل HTML عن بُعد، تنفيذ JavaScript، والتفاعل مع DOM دون كشف بيئة المضيف. -> **المتطلبات المسبقة** – تحتاج إلى ترخيص صالح لـ Aspose.HTML for Java (الإصدار التجريبي المجاني يعمل) وJava 8 أو أحدث مثبت. لا تحتاج إلى أي مكتبات طرف ثالث إضافية. +## لماذا تستخدم رملية عند استرجاع عنوان الصفحة java؟ +يدعم Aspose.HTML **أكثر من 50** تنسيق إدخال وإخراج ويمكنه عرض مستندات مئات الصفحات دون تحميل الملف بالكامل في الذاكرة. إضافة رملية تضيف طبقة أمان إضافية، مما يضمن أن أي سكريبت خبيث على الصفحة المستهدفة لا يمكنه الخروج من الحاوية. هذا النهج يقلل من خطر تسرب الذاكرة ويحمي JVM الخاص بك من الآثار الجانبية غير المرغوبة. ---- +## المتطلبات المسبقة +- ترخيص صالح لـ Aspose.HTML for Java (التجريبي يكفي للاختبار). +- Java 8 أو أحدث مثبت على جهاز التطوير الخاص بك. +- أداة بناء Maven أو Gradle لإدارة التبعيات. + +> **نصيحة احترافية:** حافظ على توافق نسخة المكتبة مع ملاحظات الإصدار الرسمية لـ Aspose؛ الإصدارات الأحدث تتضمن تصحيحات أمان حيوية عند تحميل محتوى غير موثوق. ## الخطوة 1: إعداد مشروعك -قبل أن نغوص في الكود، تأكد من أن ملف `pom.xml` (Maven) أو ملف Gradle يحتوي على تبعية Aspose.HTML: +قبل أن نغوص في الكود، تأكد من أن ملف `pom.xml` (Maven) أو ملف Gradle يتضمن تبعية Aspose.HTML: ```xml @@ -63,13 +97,12 @@ url: /ar/java/configuring-environment/create-aspose-html-sandbox-complete-java-g implementation 'com.aspose:aspose-html:23.1' ``` -> **نصيحة احترافية:** حافظ على توافق نسخة المكتبة مع ملاحظات الإصدار الرسمية لـ Aspose؛ الإصدارات الأحدث تضيف تصحيحات أمان مهمة خاصة عند تحميل محتوى خارجي. - ---- +> **نصيحة احترافية:** حافظ على توافق نسخة المكتبة مع ملاحظات الإصدار الرسمية لـ Aspose؛ الإصدارات الأحدث تتضمن تصحيحات أمان حيوية عند تحميل محتوى خارجي. -## تكوين خيارات الرملة (استرجاع عنوان الصفحة java) +## كيف تقوم بتهيئة خيارات الرملة؟ (استرجاع عنوان الصفحة java) -الخطوة الأولى الفعلية في **إنشاء رملية Aspose HTML** هي تحديد سلوك المتصفح الافتراضي. يمكنك محاكاة سطح مكتب، جهاز محمول، أو حتى حجم شاشة مخصص. +الخطوة الفعلية الأولى في **إنشاء رملية Aspose HTML** هي تحديد سلوك المتصفح الافتراضي. يمكنك محاكاة سطح مكتب، جهاز محمول، أو حتى حجم شاشة مخصص. +`SandboxOptions` يضبط سلوك الرملة، مثل حجم نافذة العرض، سلسلة وكيل المستخدم، وقيم المهلة. يتيح لك التحكم في كيفية عرض الصفحة وما هي الموارد المسموح بها. ```java import com.aspose.html.sandbox.SandboxOptions; @@ -81,13 +114,12 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -لماذا هذا مهم؟ حجم الـ viewport يؤثر على استعلامات CSS media، بينما يمكن أن يؤثر الـ user‑agent على تفاوض المحتوى من جانب الخادم. ضبطهما صراحة يضمن أن الصفحة التي ستقوم لاحقًا **باسترجاع عنوان الصفحة java** منها تُعرض تمامًا كما تتوقع. - ---- +لماذا هذا مهم؟ حجم نافذة العرض يؤثر على استعلامات CSS الإعلامية، بينما يمكن لوكيل المستخدم أن يؤثر على تفاوض المحتوى من جانب الخادم. ضبطهما صراحةً يضمن أن الصفحة التي ستقوم لاحقًا **باسترجاع عنوان الصفحة java** منها تُعرض بالضبط كما تتوقع. -## إنشاء مثيل الرملة +## كيف تنشئ مثيل الرملة؟ -الآن بعد أن لدينا خياراتنا، يمكننا إنشاء الرملة نفسها. +الآن بعد أن لدينا خياراتنا، يمكننا تشغيل الرملة نفسها. +`Sandbox` هو مثيل محرك Chromium المعزول الذي يعمل داخل JVM. يخلق بيئة آمنة يمكن فيها تحميل HTML وتنفيذه دون لمس نظام ملفات المضيف. ```java import com.aspose.html.sandbox.Sandbox; @@ -96,13 +128,12 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -فكر في `Sandbox` كمحرك Chromium خفيف الوزن ومعزول يعيش داخل عملية Java الخاصة بك. لا يتعامل مع نظام الملفات إلا إذا أخبرته بذلك صراحةً، مما يجعله مثاليًا لاستخراج آمن. +فكر في `Sandbox` كمحرك Chromium خفيف ومعزول يعيش داخل عملية Java الخاصة بك. لا يلمس نظام الملفات إلا إذا طلبت ذلك صراحةً، مما يجعله مثاليًا للاستخلاص الآمن. ---- - -## تحميل صفحة خارجية داخل الرملة +## كيف تقوم بتحميل صفحة خارجية داخل الرملة؟ -مع جاهزية الرملة، تحميل صفحة بعيدة يصبح بسيطًا كتمرير عنوان URL ومثيل الرملة إلى `HtmlDocument`. +مع جاهزية الرملة، تحميل صفحة عن بُعد يصبح بسيطًا كتمرير عنوان URL ومثيل الرملة إلى `HtmlDocument`. +`HtmlDocument` يمثل صفحة HTML تم تحميلها داخل الرملة، ويوفر وصولًا إلى DOM، وقدرات عرض، وتنفيذ JavaScript. ```java import com.aspose.html.HtmlDocument; @@ -111,13 +142,12 @@ import com.aspose.html.HtmlDocument; HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); ``` -> **حالة حدية:** إذا كان الموقع المستهدف يتطلب مصادقة أو عمليات إعادة توجيه، يمكنك تكوين معالجات `HttpClient` مسبقًا وتمريرها عبر `HtmlLoadOptions`. هذا خارج نطاق هذا الدليل السريع، لكن الـ API يدعم ذلك. +> **حالة خاصة:** إذا كان الموقع المستهدف يتطلب مصادقة أو إعادة توجيه، يمكنك تهيئة معالجات `HttpClient` مسبقًا وتمريرها عبر `HtmlLoadOptions`. هذا خارج نطاق هذا الدليل السريع، لكن الـ API يدعم ذلك. ---- +## كيف تصل إلى عنوان الصفحة؟ (استرجاع عنوان الصفحة java) -## الوصول إلى عنوان الصفحة – استرجاع عنوان الصفحة java - -الآن يأتي الجزء الذي طلبته: استخراج عنوان الصفحة مع البقاء داخل الرملة. تُظهر فئة `HtmlDocument` طريقة `getTitle()` التي تقرأ عنصر ``. +الآن يأتي الجزء الذي طلبته: استخراج عنوان الصفحة مع البقاء داخل الرملة. تُظهر فئة `HtmlDocument` طريقة `getTitle()` التي تقرأ عنصر `<title>`. +`getTitle()` تُعيد النص داخل عنصر `<title>` للصفحة، مما يمنحك طريقة بسيطة للتحقق من تحميل الصفحة بشكل صحيح. ```java // Step 4 – read and print the title @@ -130,13 +160,12 @@ System.out.println("Title inside sandbox: " + htmlDoc.getTitle()); Title inside sandbox: Example Domain ``` -هذا السطر يثبت أننا نجحنا في **إنشاء رملية Aspose HTML**، تحميل صفحة بعيدة، و**استرجاع عنوان الصفحة java** دون مغادرة البيئة المعزولة. - ---- +هذا السطر يثبت أننا **أنشأنا رملية Aspose HTML**، حمّلنا صفحة عن بُعد، و**استرجعنا عنوان الصفحة java** دون مغادرة البيئة المعزولة. -## تنظيف الموارد +## كيف تقوم بتنظيف الموارد؟ -كائنات Aspose.HTML تحتفظ بموارد أصلية، لذا من الضروري تحريرها صراحةً. نسيان ذلك قد يؤدي إلى تسرب الذاكرة، خاصةً عند معالجة العديد من الصفحات في حلقة. +كائنات Aspose.HTML تحتفظ بموارد أصلية، لذا من الضروري التخلص منها صراحة. نسيان ذلك قد يؤدي إلى تسرب الذاكرة، خاصةً عند معالجة العديد من الصفحات في حلقة. +`dispose()` يحرر الموارد الأصلية التي تحتفظ بها كائنات Aspose.HTML، مما يمنع تسرب الذاكرة ويضمن أن JVM يمكنه استعادة الذاكرة بسرعة. ```java // Step 5 – release native resources @@ -144,13 +173,11 @@ htmlDoc.dispose(); sandboxInstance.dispose(); ``` -> **لماذا يتم التحرير؟** محرك Chromium الأساسي يخصص ذاكرة أصلية ومقابض ملفات. استدعاء `dispose()` يخبر JVM بتحريرها فورًا بدلاً من الانتظار للمنتهيات. - ---- +> **لماذا نستخدم dispose؟** محرك Chromium الأساسي يخصص ذاكرة أصلية ومقابض ملفات. استدعاء `dispose()` يخبر JVM بتحريرها فورًا بدلاً من الانتظار للمنظفات. ## مثال كامل يعمل -فيما يلي البرنامج الكامل الذي يمكنك نسخه إلى ملف باسم `SandboxExample.java`. قم بالترجمة باستخدام `javac` وتشغيله باستخدام `java`. جميع الخطوات بالترتيب الصحيح، وكل استيراد مُدرج. +فيما يلي البرنامج الكامل الذي يمكنك نسخه إلى ملف باسم `SandboxExample.java`. قم بتجميعه باستخدام `javac` وتشغيله باستخدام `java`. جميع الخطوات بالترتيب الصحيح، وكل استيراد مدرج. ```java import com.aspose.html.HtmlDocument; @@ -182,7 +209,9 @@ public class SandboxExample { } ``` -### المخرجات المتوقعة +![لقطة شاشة لكود Java ينشئ رملية Aspose HTML](/images/create-aspose-html-sandbox.png "مثال إنشاء رملية Aspose HTML") + +### النتيجة المتوقعة ``` Title inside sandbox: Example Domain @@ -190,28 +219,40 @@ Title inside sandbox: Example Domain إذا استبدلت `https://example.com` بعنوان URL آخر، سيعكس العنوان المطبع وسم `<title>` لتلك الصفحة — بشرط أن يسمح الموقع بالوصول المجهول. ---- - -## نصائح عملية ومشكلات شائعة - +## نصائح عملية ومخاطر شائعة - **مهلات الشبكة:** بشكل افتراضي تستخدم الرملة مهلة 60 ثانية. إذا كنت تتعامل مع مواقع أبطأ، استدعِ `sandboxOptions.setTimeout(120_000);` قبل إنشاء الرملة. - **مدير أمان Java:** عند التشغيل داخل JVM مقيد، تأكد من أن `java.security.policy` يمنح `java.net.SocketPermission` للنطاق المستهدف. -- **صفحات متعددة:** إذا كنت تحتاج إلى معالجة عناوين URL متعددة، أعد استخدام مثيل `Sandbox` واحد؛ فقط أنشئ `HtmlDocument` جديد لكل URL وقم بتحريره بعد ذلك. هذا يقلل من عبء بدء التشغيل. -- **التصحيح:** اضبط `sandboxOptions.setDebugMode(true);` للحصول على سجلات وحدة تحكم مفصلة يمكن أن تساعدك في تحديد سبب فشل تحميل الصفحة. +- **معالجة صفحات متعددة:** أعد استخدام مثيل `Sandbox` واحد؛ فقط أنشئ `HtmlDocument` جديد لكل URL وتخلص منه بعد الانتهاء. هذا يقلل من عبء بدء التشغيل. +- **التصحيح:** اضبط `sandboxOptions.setDebugMode(true);` للحصول على سجلات تفصيلية في وحدة التحكم يمكن أن تساعدك في تحديد سبب فشل تحميل صفحة. ---- +## الأسئلة المتكررة +**س: هل يمكنني استخدام هذه الرملة في خط أنابيب CI بدون واجهة؟** +ج: نعم. تعمل الرملة بدون واجهة مرئية ويمكن تنفيذها على أي خادم يدعم Java 8+. + +**س: هل تدعم الرملة تنفيذ JavaScript؟** +ج: بالتأكيد. تستخدم Chromium تحت الغطاء، لذا فإن JavaScript الحديث، بما في ذلك ميزات ES6، يعمل بشكل صحيح. -## الخلاصة +**س: ما حجم الصفحة التي يمكن للرملة التعامل معه؟** +ج: يمكن للمحرك عرض صفحات تصل إلى 200 ميغابايت، مقيدًا فقط بذاكرة الجهاز المضيف. -لقد قمنا للتو **بإنشاء رملية Aspose HTML** في Java، وضبطناها لتوفر viewport متوقع، حمّلنا صفحة خارجية، وأظهرنا كيفية **استرجاع عنوان الصفحة java** بأمان وكفاءة. تدفق العملية بالكامل — من إعداد الخيارات إلى تنظيف الموارد — مُغلق في مقتطف صغير وقابل لإعادة الاستخدام. +**س: ماذا لو حظر الموقع المستهدف الطلبات الآلية؟** +ج: يمكنك تخصيص سلسلة `User-Agent` في `SandboxOptions` أو تزويد ملفات تعريف الارتباط عبر `HtmlLoadOptions` لتقليد متصفح عادي. -الآن يمكنك أخذ هذه الأساس وتوسيعها: استخراج وسوم meta، التقاط لقطات شاشة، أو حتى تشغيل JavaScript داخل الرملة. الاحتمالات واسعة بقدر الويب نفسه. +**س: هل هناك طريقة لالتقاط لقطة شاشة للصفحة المحملة؟** +ج: نعم. بعد تحميل المستند، استدعِ `document.save("snapshot.png", SaveFormat.Png);` لتصدير صورة PNG للصفحة المعروضة. -هل لديك أسئلة حول التعامل مع المصادقة، إعدادات البروكسي، أو إنشاء ملفات PDF من الرملة؟ اترك تعليقًا، وسنستكشف تلك السيناريوهات المتقدمة معًا. برمجة سعيدة! +**آخر تحديث:** 2026-09-03 +**تم الاختبار مع:** Aspose.HTML for Java 23.1 +**المؤلف:** Aspose -![Screenshot of Java code creating an Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "create aspose html sandbox example") +## دروس ذات صلة +- [كيفية استخدام رملية لتحويل HTML إلى PDF في Java دليل خطوة بخطوة](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [إنشاء PDF من HTML باستخدام Aspose.HTML for Java – رملية](/html/java/configuring-environment/implement-sandboxing/) +- [تمكين تنفيذ السكريبت في Java دليل Aspose HTML كامل](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-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/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/chinese/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index 67ec7b8af2..54f9c10e29 100644 --- a/html/chinese/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/chinese/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,23 +1,48 @@ --- category: general -date: 2026-01-04 -description: 在 Java 中创建 Aspose HTML 沙箱,并学习如何通过分步示例获取页面标题(Java)。附带快速可运行的代码。 +date: 2026-09-03 +description: 如何创建 Aspose sandbox java 并使用干净、隔离的 HTML 加载来检索 page title java。逐步指南,附带可运行代码。 draft: false keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title -language: zh -og_description: 在 Java 中创建 Aspose HTML 沙箱,并即时获取页面标题。请按照本详细指南,实现干净、隔离的 HTML 加载。 -og_title: 创建 Aspose HTML 沙盒 – Java 教程 +lastmod: 2026-09-03 +og_description: 了解如何在 Java 中创建 Aspose sandbox 并即时检索 page title java。详细步骤、最佳实践以及完整示例代码。 +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: 如何创建 Aspose sandbox java – 完整指南 +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: 创建 Aspose HTML 沙盒 – 完整的 Java 指南 +title: 如何创建 Aspose sandbox java – 完整指南 url: /zh/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -25,26 +50,35 @@ url: /zh/java/configuring-environment/create-aspose-html-sandbox-complete-java-g {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# 创建 Aspose HTML 沙箱 – 完整 Java 指南 +# 如何创建 Aspose sandbox java – 完整指南 -是否曾经需要 **create Aspose HTML sandbox** 但不确定如何让加载的页面与主 JVM 隔离?也许你正在构建网页抓取器、测试框架,或只是想在不产生副作用的情况下实验远程页面。在本教程中,我们将逐步演示这些内容,并且还会展示如何在沙箱内部 **how to retrieve page title java**。 +是否曾需要 **create Aspose HTML sandbox**,但不确定如何将加载的页面与主 JVM 隔离?也许您正在构建网络爬虫、测试工具,或只是想在不产生副作用的情况下实验远程页面。在本教程中,我们将逐步演示这些内容,并且还会向您展示 **retrieve page title java** 的方法。 -解决方案相当直接:配置 `SandboxOptions` 对象,启动 `Sandbox`,使用 `HtmlDocument` 加载外部 URL,读取标题,最后清理所有内容。完成后,你将拥有一个可自行包含的代码片段,可直接放入任何使用 Aspose.HTML for Java 23.1(或更高版本)的 Java 项目中。 +解决方案相当直接:配置 `SandboxOptions` 对象,启动 `Sandbox`,使用 `HtmlDocument` 加载外部 URL,读取标题,最后清理所有资源。完成后,您将拥有一个可直接放入任何使用 Aspose.HTML for Java 23.1(或更高版本)的 Java 项目的自包含代码片段。 -## 你将学到 +## 快速答案 +- **什么是 Aspose sandbox?** 它是一个基于 Chromium 的隔离环境,运行在您的 JVM 中且不触及文件系统。 +- **为什么在页面标题提取时使用 sandbox?** 它保证外部脚本无法影响您的应用状态或内存。 +- **需要哪个 Java 版本?** Java 8 或更高;库同样支持 Java 11、 17 及更高版本。 +- **我需要许可证吗?** 开发阶段使用免费试用许可证即可;生产环境需要商业许可证。 +- **需要多少行代码?** 核心逻辑不到 30 行,外加可选的初始化代码。 -- 如何使用自定义视口和用户代理设置 **create Aspose HTML sandbox**。 -- 在保持安全的沙箱内部,从远程页面 **retrieve page title java** 的确切步骤。 -- 常见陷阱(如忘记释放资源)以及保持内存占用低的最佳实践提示。 -- 一个完整的、可直接运行的 Java 程序,你可以复制粘贴、编译并执行。 +## 什么是 create aspose sandbox java? +`Sandbox` 是 Aspose.HTML 的轻量级、隔离的浏览器引擎,运行在 Java 进程内部。它提供了一个安全容器,您可以在其中加载远程 HTML、执行 JavaScript,并与 DOM 交互,而无需暴露宿主环境。 -> **先决条件** – 你需要一份有效的 Aspose.HTML for Java 许可证(免费试用可用)并已安装 Java 8 或更高版本。无需额外的第三方库。 +## 为什么在 retrieve page title java 时使用 sandbox? +Aspose.HTML 支持 **50+ 输入和输出格式**,并且可以在不将整个文件加载到内存的情况下渲染数百页文档。使用 sandbox 增加了一层安全保障,确保目标页面上的任何恶意脚本都无法逃离容器。此方法降低了内存泄漏的风险,并保护您的 JVM 不受不良副作用影响。 ---- +## 前置条件 +- 有效的 Aspose.HTML for Java 许可证(试用版可用于测试)。 +- 在开发机器上安装 Java 8 或更高版本。 +- 使用 Maven 或 Gradle 构建工具来管理依赖。 + +> **专业提示:** 保持库版本与官方 Aspose 发布说明保持一致;较新版本包含在加载不受信任内容时至关重要的安全补丁。 -## 第一步:设置项目 +## 步骤 1:设置项目 -在深入代码之前,请确保你的 `pom.xml`(Maven)或 Gradle 文件中包含 Aspose.HTML 依赖: +在编写代码之前,请确保您的 `pom.xml`(Maven)或 Gradle 文件中已包含 Aspose.HTML 依赖: ```xml <!-- Maven --> @@ -55,19 +89,18 @@ url: /zh/java/configuring-environment/create-aspose-html-sandbox-complete-java-g </dependency> ``` -如果你使用 Gradle: +如果您使用 Gradle: ```groovy implementation 'com.aspose:aspose-html:23.1' ``` -> **专业提示:** 保持库版本与官方 Aspose 发布说明同步;更新的版本会添加安全修复,这在加载外部内容时尤为重要。 - ---- +> **专业提示:** 保持库版本与官方 Aspose 发布说明同步;较新版本会添加在加载外部内容时尤为重要的安全修复。 -## 配置 Sandbox 选项(retrieve page title java) +## 如何配置 sandbox 选项?(retrieve page title java) -在 **creating an Aspose HTML sandbox** 的第一步是决定虚拟浏览器的行为方式。你可以模拟桌面、移动设备,甚至自定义屏幕尺寸。 +在 **creating an Aspose HTML sandbox** 的第一步是决定虚拟浏览器的行为方式。您可以模拟桌面、移动设备,甚至自定义屏幕尺寸。 +`SandboxOptions` 配置 sandbox 的行为,例如视口大小、User‑Agent 字符串和超时时间。它让您能够控制页面的渲染方式以及允许的资源。 ```java import com.aspose.html.sandbox.SandboxOptions; @@ -79,13 +112,12 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -这有什么关系?视口大小会影响 CSS 媒体查询,而用户代理会影响服务器端的内容协商。显式设置它们可确保你随后 **retrieve page title java** 的页面按预期渲染。 - ---- +为什么这很重要?视口大小会影响 CSS 媒体查询,而 User‑Agent 可能会影响服务器端的内容协商。显式设置这些参数可确保随后 **retrieve page title java** 时页面按预期渲染。 -## 创建 Sandbox 实例 +## 如何创建 sandbox 实例? -现在我们已有选项,可以启动 sandbox 本身。 +现在我们已有选项,可以启动 sandbox 本身。 +`Sandbox` 是运行在 JVM 中的隔离 Chromium 引擎实例。它创建了一个安全环境,HTML 可以在其中加载和执行,而不会触及宿主文件系统。 ```java import com.aspose.html.sandbox.Sandbox; @@ -94,13 +126,12 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -将 `Sandbox` 视为轻量级、隔离的 Chromium 引擎,运行在你的 Java 进程中。除非你明确指示,它不会触及文件系统,这使其非常适合安全抓取。 +可以把 `Sandbox` 看作是驻留在 Java 进程内的轻量级、隔离的 Chromium 引擎。除非您明确指示,它不会触及文件系统,这使其非常适合安全抓取。 ---- - -## 在 Sandbox 中加载外部页面 +## 如何在 sandbox 中加载外部页面? -Sandbox 准备好后,加载远程页面只需将 URL 和 sandbox 实例传递给 `HtmlDocument` 即可。 +准备好 sandbox 后,加载远程页面只需将 URL 和 sandbox 实例传递给 `HtmlDocument`。 +`HtmlDocument` 表示加载到 sandbox 中的 HTML 页面,提供 DOM 访问、渲染能力以及 JavaScript 执行。 ```java import com.aspose.html.HtmlDocument; @@ -109,32 +140,30 @@ import com.aspose.html.HtmlDocument; HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); ``` -> **边缘情况:** 如果目标站点需要身份验证或重定向,你可以预先配置 `HttpClient` 处理程序并通过 `HtmlLoadOptions` 传递。此内容超出本快速指南的范围,但 API 支持此功能。 - ---- +> **边缘情况:** 如果目标站点需要身份验证或重定向,您可以预先配置 `HttpClient` 处理程序并通过 `HtmlLoadOptions` 传入。这超出本快速指南的范围,但 API 已支持此功能。 -## 获取页面标题 – retrieve page title java +## 如何获取页面标题?(retrieve page title java) -现在进入你所要求的部分:在保持 sandbox 内部的情况下提取页面标题。`HtmlDocument` 类提供 `getTitle()` 方法来读取 `<title>` 元素。 +下面就是您想要的部分:在保持 sandbox 内部的前提下提取页面标题。`HtmlDocument` 类提供 `getTitle()` 方法来读取 `<title>` 元素。 +`getTitle()` 返回页面 `<title>` 元素的文本内容,为您提供一种简单方式来验证页面是否正确加载。 ```java // Step 4 – read and print the title System.out.println("Title inside sandbox: " + htmlDoc.getTitle()); ``` -当你对 `https://example.com` 运行完整程序时,你应该看到: +当您对 `https://example.com` 运行完整程序时,应该看到: ``` Title inside sandbox: Example Domain ``` -该行证明我们已成功 **created an Aspose HTML sandbox**,加载了远程页面,并且在未离开隔离环境的情况下 **retrieved page title java**。 - ---- +这行输出证明我们已经成功 **created an Aspose HTML sandbox**,加载了远程页面,并且 **retrieved page title java**,整个过程始终在隔离环境中完成。 -## 清理资源 +## 如何清理资源? -Aspose.HTML 对象持有本机资源,因此必须显式释放它们。忘记释放会导致内存泄漏,尤其是在循环处理大量页面时。 +Aspose.HTML 对象持有本机资源,必须显式释放,否则在循环处理大量页面时会导致内存泄漏。 +`dispose()` 释放 Aspose.HTML 对象持有的本机资源,防止内存泄漏并确保 JVM 能及时回收内存。 ```java // Step 5 – release native resources @@ -142,13 +171,11 @@ htmlDoc.dispose(); sandboxInstance.dispose(); ``` -> **为什么要释放?** 底层的 Chromium 引擎会分配本机内存和文件句柄。调用 `dispose()` 可让 JVM 立即释放这些资源,而不是等待终结器。 - ---- +> **为什么要 dispose?** 底层 Chromium 引擎会分配本机内存和文件句柄。调用 `dispose()` 可让 JVM 立即释放这些资源,而不是等到终结器执行。 ## 完整工作示例 -下面是完整的程序,你可以复制到名为 `SandboxExample.java` 的文件中。使用 `javac` 编译并用 `java` 运行。所有步骤顺序正确,且列出了所有 import。 +下面是完整的程序示例,您可以复制到名为 `SandboxExample.java` 的文件中。使用 `javac` 编译并用 `java` 运行。所有步骤顺序正确,且列出了每个 import。 ```java import com.aspose.html.HtmlDocument; @@ -180,36 +207,54 @@ public class SandboxExample { } ``` +![创建 Aspose HTML sandbox 的 Java 代码截图](/images/create-aspose-html-sandbox.png "创建 Aspose HTML sandbox 示例") + ### 预期输出 ``` Title inside sandbox: Example Domain ``` -如果你将 `https://example.com` 替换为其他 URL,打印的标题将反映该页面的 `<title>` 标签——前提是站点允许匿名访问。 - ---- +如果将 `https://example.com` 替换为其他 URL,打印的标题将对应该页面的 `<title>` 标签——前提是站点允许匿名访问。 ## 实用技巧与常见陷阱 -- **网络超时:** 默认情况下 sandbox 使用 60 秒超时。如果你访问较慢的站点,请在创建 sandbox 前调用 `sandboxOptions.setTimeout(120_000);`。 +- **网络超时:** 默认 sandbox 使用 60 秒超时。如果您访问的站点较慢,请在创建 sandbox 前调用 `sandboxOptions.setTimeout(120_000);`。 - **Java 安全管理器:** 在受限的 JVM 中运行时,确保 `java.security.policy` 为目标域授予 `java.net.SocketPermission`。 -- **多个页面:** 如果需要处理许多 URL,请复用单个 `Sandbox` 实例;只需为每个 URL 创建新的 `HtmlDocument`,并在之后释放它。这可以减少启动开销。 +- **处理多个页面:** 重用单个 `Sandbox` 实例;对每个 URL 创建新的 `HtmlDocument` 并在使用后 dispose。这样可减少启动开销。 - **调试:** 设置 `sandboxOptions.setDebugMode(true);` 可获取详细的控制台日志,帮助定位页面加载失败的原因。 ---- +## 常见问题 -## 结论 +**Q: 我可以在无头 CI 流水线中使用这个 sandbox 吗?** +A: 可以。sandbox 在没有可见 UI 的情况下运行,能够在支持 Java 8+ 的任何服务器上执行。 -我们刚刚在 Java 中 **created an Aspose HTML sandbox**,为其配置了可预测的视口,加载了外部页面,并演示了如何安全高效地 **retrieve page title java**。从选项设置到资源清理的完整流程都封装在一个紧凑、可复用的代码片段中。 +**Q: sandbox 支持 JavaScript 执行吗?** +A: 完全支持。它底层使用 Chromium,现代 JavaScript(包括 ES6 特性)均能正常运行。 -现在你可以在此基础上进行扩展:抓取 meta 标签、捕获截图,甚至在 sandbox 中运行 JavaScript。可能性与网络一样广阔。 +**Q: sandbox 能处理多大的页面?** +A: 引擎可以渲染最高约 200 MB 的页面,受限于宿主机器的内存大小。 -如果你有关于处理身份验证、代理设置或从 sandbox 渲染 PDF 的问题,请留言,我们将一起探讨这些高级场景。祝编码愉快! +**Q: 如果目标站点阻止自动化请求怎么办?** +A: 您可以在 `SandboxOptions` 中自定义 `User-Agent` 字符串,或通过 `HtmlLoadOptions` 提供 Cookie,以模拟普通浏览器。 + +**Q: 有办法捕获已加载页面的截图吗?** +A: 有。加载文档后,调用 `document.save("snapshot.png", SaveFormat.Png);` 即可导出渲染页面的 PNG 图像。 + +**最后更新:** 2026-09-03 +**测试环境:** Aspose.HTML for Java 23.1 +**作者:** Aspose + +## 相关教程 + +- [如何在 Java 中使用 Sandbox 将 HTML 转换为 PDF 的分步指南](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [使用 Aspose.HTML for Java 从 HTML 创建 PDF – Sandbox](/html/java/configuring-environment/implement-sandboxing/) +- [在 Java 中启用脚本执行的完整 Aspose HTML 指南](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-guide/) -![Screenshot of Java code creating an Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "create aspose html sandbox 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/czech/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/czech/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index c218c692a5..3c4f0c77ee 100644 --- a/html/czech/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/czech/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,25 +1,50 @@ --- category: general -date: 2026-01-04 -description: Vytvořte sandbox Aspose HTML v Javě a naučte se, jak získat název stránky - v Javě pomocí krok‑za‑krokem příkladu. Rychlý, spustitelný kód je zahrnut. +date: 2026-09-03 +description: Jak vytvořit sandbox Aspose java a získat název stránky java pomocí čistého, + izolovaného načtení HTML. Průvodce krok za krokem s spustitelným kódem. draft: false keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title -language: cs -og_description: Vytvořte sandbox Aspose HTML v Javě a okamžitě načtěte název stránky. - Postupujte podle tohoto podrobného návodu pro čisté, izolované načtení HTML. -og_title: Vytvořte Aspose HTML Sandbox – Java tutoriál +lastmod: 2026-09-03 +og_description: Naučte se, jak vytvořit sandbox Aspose v Java a okamžitě získat název + stránky java. Podrobné kroky, osvědčené postupy a kompletní ukázkový kód. +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: Jak vytvořit sandbox Aspose java – kompletní průvodce +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: Vytvořte sandbox Aspose HTML – kompletní průvodce Java +title: Jak vytvořit sandbox Aspose java – kompletní průvodce url: /cs/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -27,24 +52,33 @@ url: /cs/java/configuring-environment/create-aspose-html-sandbox-complete-java-g {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Vytvoření Aspose HTML Sandbox – Kompletní průvodce pro Java +# Jak vytvořit Aspose sandbox java – kompletní průvodce -Už jste někdy potřebovali **create Aspose HTML sandbox**, ale nebyli jste si jisti, jak udržet načtenou stránku izolovanou od vašeho hlavního JVM? Možná vytváříte web‑scraper, testovací prostředí, nebo jen chcete experimentovat se vzdálenými stránkami bez rizika vedlejších efektů. V tomto tutoriálu vás provedeme přesně tímto postupem a také vám ukážeme **how to retrieve page title java** z vnitřku sandboxu. +Už jste někdy potřebovali **vytvořit Aspose HTML sandbox**, ale nebyli jste si jisti, jak udržet načtenou stránku izolovanou od vašeho hlavního JVM? Možná stavíte web‑scraper, testovací prostředí, nebo jen chcete experimentovat se vzdálenými stránkami bez rizika vedlejších efektů. V tomto tutoriálu vás provedeme přesně tímto a také vám ukážeme **jak získat název stránky java** ze sandboxu. -Řešení je poměrně jednoduché: nakonfigurujte objekt `SandboxOptions`, spustíte `Sandbox`, načtete externí URL pomocí `HtmlDocument`, přečtete název a nakonec vše vyčistíte. Na konci budete mít samostatný úryvek, který můžete vložit do libovolného Java projektu používajícího Aspose.HTML for Java 23.1 (nebo novější). +Řešení je poměrně jednoduché: nakonfigurujte objekt `SandboxOptions`, vytvořte `Sandbox`, načtěte externí URL pomocí `HtmlDocument`, přečtěte název a nakonec vše vyčistěte. Na konci budete mít samostatný úryvek, který můžete vložit do libovolného Java projektu používajícího Aspose.HTML for Java 23.1 (nebo novější). -## Co se naučíte +## Rychlé odpovědi +- **What is an Aspose sandbox?** Je to izolované prostředí založené na Chromium, které běží ve vašem JVM bez zásahu do souborového systému. +- **Why use a sandbox for page title extraction?** Zaručuje, že externí skripty nemohou ovlivnit stav nebo paměť vaší aplikace. +- **Which Java version is required?** Java 8 nebo novější; knihovna také funguje s Java 11, 17 a novějšími. +- **Do I need a license?** Bezplatná zkušební licence stačí pro vývoj; pro produkci je vyžadována komerční licence. +- **How many lines of code are needed?** Méně než 30 řádků pro hlavní logiku, plus volitelný kód nastavení. -- Jak **create Aspose HTML sandbox** s vlastními nastaveními viewportu a user‑agentu. -- Přesné kroky k **retrieve page title java** z vzdálené stránky při zachování bezpečnosti v sandboxu. -- Běžné úskalí (např. zapomenutí uvolnit prostředky) a tipy na osvědčené postupy, které udržují nízkou paměťovou stopu. -- Kompletní, připravený Java program, který můžete zkopírovat, zkompilovat a spustit. +## Co je create aspose sandbox java? +`Sandbox` je Aspose.HTML lehký, izolovaný prohlížečový engine, který běží uvnitř Java procesu. Poskytuje bezpečný kontejner, kde můžete načíst vzdálené HTML, spustit JavaScript a pracovat s DOM, aniž byste ohrozili hostitelské prostředí. -> **Prerequisites** – Potřebujete platnou licenci Aspose.HTML for Java (funguje i zkušební verze) a nainstalovaný Java 8 nebo novější. Žádné další knihovny třetích stran nejsou vyžadovány. +## Proč použít sandbox při získávání názvu stránky java? +Aspose.HTML podporuje **50+ vstupních a výstupních formátů** a dokáže renderovat dokumenty stovek stránek, aniž by načítal celý soubor do paměti. Použití sandboxu přidává další vrstvu zabezpečení, zajišťuje, že jakýkoli škodlivý skript na cílové stránce nemůže uniknout z kontejneru. Tento přístup snižuje riziko úniků paměti a chrání váš JVM před nechtěnými vedlejšími efekty. ---- +## Požadavky +- Platná licence Aspose.HTML for Java (zkušební licence funguje pro testování). +- Java 8 nebo novější nainstalovaná na vašem vývojovém počítači. +- Maven nebo Gradle nástroj pro správu závislostí. + +> **Pro tip:** Udržujte verzi knihovny v souladu s oficiálními poznámkami k vydání Aspose; novější verze obsahují bezpečnostní záplaty, které jsou kritické při načítání nedůvěryhodného obsahu. -## Krok 1: Nastavení projektu +## Krok 1: nastavení projektu Než se ponoříme do kódu, ujistěte se, že váš `pom.xml` (Maven) nebo Gradle soubor obsahuje závislost Aspose.HTML: @@ -65,9 +99,10 @@ implementation 'com.aspose:aspose-html:23.1' > **Pro tip:** Udržujte verzi knihovny v souladu s oficiálními poznámkami k vydání Aspose; novější verze přidávají bezpečnostní opravy, které jsou zvláště důležité při načítání externího obsahu. -## Nastavení Sandbox Options (retrieve page title java) +## Jak nakonfigurovat sandbox options? (retrieve page title java) -Prvním skutečným krokem při **creating an Aspose HTML sandbox** je rozhodnout, jak by se měl virtuální prohlížeč chovat. Můžete napodobit desktop, mobilní zařízení nebo dokonce vlastní velikost obrazovky. +Prvním skutečným krokem při **vytváření Aspose HTML sandboxu** je rozhodnout, jak se má virtuální prohlížeč chovat. Můžete napodobit desktop, mobilní zařízení nebo dokonce vlastní velikost obrazovky. +`SandboxOptions` konfiguruje chování sandboxu, jako je velikost viewportu, řetězec user‑agent a hodnoty timeoutu. Umožňuje vám řídit, jak je stránka renderována a jaké zdroje jsou povoleny. ```java import com.aspose.html.sandbox.SandboxOptions; @@ -79,11 +114,12 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -Proč je to důležité? Velikost viewportu ovlivňuje CSS media queries, zatímco user‑agent může ovlivnit server‑side vyjednávání obsahu. Explicitní nastavení zajišťuje, že stránka, ze které později **retrieve page title java**, se vykreslí přesně tak, jak očekáváte. +Proč je to důležité? Velikost viewportu ovlivňuje CSS media queries, zatímco user‑agent může ovlivnit server‑side content negotiation. Nastavením těchto hodnot explicitně zajistíte, že stránka, ze které později **získáte název stránky java**, bude renderována přesně tak, jak očekáváte. -## Vytvoření instance Sandboxu +## Jak vytvořit sandbox instanci? -Nyní, když máme naše možnosti, můžeme spustit samotný sandbox. +Nyní, když máme naše možnosti, můžeme spustit samotný sandbox. +`Sandbox` je izolovaná instance Chromium engine, která běží uvnitř JVM. Vytváří bezpečné prostředí, kde lze načíst a spustit HTML bez zásahu do souborového systému hostitele. ```java import com.aspose.html.sandbox.Sandbox; @@ -92,11 +128,12 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -Představte si `Sandbox` jako lehký, izolovaný Chromium engine, který běží uvnitř vašeho Java procesu. Nedotýká se souborového systému, pokud ho výslovně nenapíšete, což ho činí ideálním pro bezpečné scrapování. +Přemýšlejte o `Sandbox` jako o lehkém, izolovaném Chromium engine, který žije uvnitř vašeho Java procesu. Nedotýká se souborového systému, pokud to výslovně neřeknete, což z něj dělá ideální nástroj pro bezpečný scraping. -## Načtení externí stránky uvnitř sandboxu +## Jak načíst externí stránku v sandboxu? -S připraveným sandboxem je načtení vzdálené stránky tak jednoduché jako předat URL a instanci sandboxu do `HtmlDocument`. +S připraveným sandboxem je načtení vzdálené stránky tak jednoduché, jako předat URL a sandboxovou instanci do `HtmlDocument`. +`HtmlDocument` představuje HTML stránku načtenou do sandboxu, poskytuje přístup k DOM, renderovací schopnosti a spouštění JavaScriptu. ```java import com.aspose.html.HtmlDocument; @@ -105,11 +142,12 @@ import com.aspose.html.HtmlDocument; HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); ``` -> **Edge case:** Pokud cílová stránka vyžaduje autentizaci nebo přesměrování, můžete předem nakonfigurovat `HttpClient` handlery a předat je pomocí `HtmlLoadOptions`. To je mimo rozsah tohoto rychlého návodu, ale API to podporuje. +> **Edge case:** Pokud cílový web vyžaduje autentizaci nebo přesměrování, můžete předem nakonfigurovat `HttpClient` handlery a předat je pomocí `HtmlLoadOptions`. To je mimo rozsah tohoto rychlého průvodce, ale API to podporuje. -## Přístup k názvu stránky – retrieve page title java +## Jak získat název stránky? (retrieve page title java) -Nyní přichází část, o kterou jste žádali: získání názvu stránky při zachování sandboxu. Třída `HtmlDocument` poskytuje metodu `getTitle()`, která čte element `<title>`. +Nyní přichází část, o kterou jste žádali: extrahování názvu stránky při zachování sandboxu. Třída `HtmlDocument` poskytuje metodu `getTitle()`, která čte element `<title>`. +`getTitle()` vrací textový obsah elementu `<title>` stránky, což vám dává jednoduchý způsob, jak ověřit, že stránka byla načtena správně. ```java // Step 4 – read and print the title @@ -122,11 +160,12 @@ Když spustíte celý program proti `https://example.com`, měli byste vidět: Title inside sandbox: Example Domain ``` -Tento řádek dokazuje, že jsme úspěšně **created an Aspose HTML sandbox**, načetli vzdálenou stránku a **retrieve page title java** aniž bychom opustili izolované prostředí. +Tento řádek dokazuje, že jsme úspěšně **vytvořili Aspose HTML sandbox**, načetli vzdálenou stránku a **získali název stránky java** aniž bychom opustili izolované prostředí. -## Uvolnění prostředků +## Jak uvolnit prostředky? -Objekty Aspose.HTML drží nativní prostředky, takže je zásadní je explicitně uvolnit. Zapomenutí na to může vést k únikům paměti, zejména při zpracování mnoha stránek ve smyčce. +Objekty Aspose.HTML drží nativní zdroje, takže je zásadní je explicitně uvolnit. Zapomenutí na to může vést k únikům paměti, zejména při zpracování mnoha stránek ve smyčce. +`dispose()` uvolňuje nativní zdroje držené objekty Aspose.HTML, zabraňuje únikům paměti a zajišťuje, že JVM může rychle uvolnit paměť. ```java // Step 5 – release native resources @@ -134,11 +173,11 @@ htmlDoc.dispose(); sandboxInstance.dispose(); ``` -> **Why dispose?** Podkladový Chromium engine alokuje nativní paměť a souborové handly. Volání `dispose()` říká JVM, aby je uvolnilo okamžitě místo čekání na finalizéry. +> **Why dispose?** Podkladový Chromium engine alokuje nativní paměť a souborové handly. Volání `dispose()` říká JVM, aby je uvolnil okamžitě místo čekání na finalizátory. ## Kompletní funkční příklad -Níže je kompletní program, který můžete zkopírovat do souboru pojmenovaného `SandboxExample.java`. Zkompilujte pomocí `javac` a spusťte pomocí `java`. Všechny kroky jsou ve správném pořadí a všechny importy jsou vypsány. +Níže je kompletní program, který můžete zkopírovat do souboru pojmenovaného `SandboxExample.java`. Zkompilujte pomocí `javac` a spusťte pomocí `java`. Všechny kroky jsou ve správném pořadí a každý import je uveden. ```java import com.aspose.html.HtmlDocument; @@ -170,32 +209,56 @@ public class SandboxExample { } ``` +![Snímek obrazovky Java kódu vytvářejícího Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "příklad vytvoření aspose html sandboxu") + ### Očekávaný výstup ``` Title inside sandbox: Example Domain ``` -Pokud nahradíte `https://example.com` jinou URL, vytištěný název bude odrážet `<title>` tag té stránky – pokud stránka umožňuje anonymní přístup. +Pokud nahradíte `https://example.com` jinou URL, vytisknutý název bude odrážet `<title>` tag té stránky – pokud web umožňuje anonymní přístup. + +## Praktické tipy a časté úskalí + +- **Network timeouts:** Ve výchozím nastavení sandbox používá timeout 60 sekund. Pokud narazíte na pomalejší stránky, zavolejte `sandboxOptions.setTimeout(120_000);` před vytvořením sandboxu. +- **Java security manager:** Při běhu v omezeném JVM zajistěte, aby `java.security.policy` uděloval `java.net.SocketPermission` pro cílovou doménu. +- **Processing multiple pages:** Znovu použijte jedinou instanci `Sandbox`; jen vytvořte nový `HtmlDocument` pro každou URL a po použití jej uvolněte. Tím snížíte režii při startu. +- **Debugging:** Nastavte `sandboxOptions.setDebugMode(true);` pro podrobné konzolové logy, které vám pomohou zjistit, proč se stránka nepodařila načíst. + +## Často kladené otázky -## Praktické tipy a běžné úskalí +**Q: Can I use this sandbox in a headless CI pipeline?** +A: Ano. Sandbox běží bez viditelného UI a může být spuštěn na libovolném serveru, který podporuje Java 8+. -- **Network Timeouts:** Ve výchozím nastavení sandbox používá timeout 60 sekund. Pokud narazíte na pomalejší stránky, zavolejte `sandboxOptions.setTimeout(120_000);` před vytvořením sandboxu. -- **Java Security Manager:** Při běhu v omezeném JVM zajistěte, aby `java.security.policy` uděloval `java.net.SocketPermission` pro cílovou doménu. -- **Multiple Pages:** Pokud potřebujete zpracovat mnoho URL, znovu použijte jedinou instanci `Sandbox`; jen vytvořte nový `HtmlDocument` pro každou URL a po použití jej uvolněte. Tím se sníží režie při spouštění. -- **Debugging:** Nastavte `sandboxOptions.setDebugMode(true);` pro podrobné výstupy do konzole, které vám pomohou zjistit, proč se stránka nepodařila načíst. +**Q: Does the sandbox support JavaScript execution?** +A: Rozhodně. Používá Chromium pod kapotou, takže moderní JavaScript, včetně ES6 funkcí, běží správně. -## Závěr +**Q: How large a page can the sandbox handle?** +A: Engine dokáže renderovat stránky až do velikosti 200 MB, omezené pouze pamětí hostitelského stroje. -Právě jsme **created an Aspose HTML sandbox** v Javě, nakonfigurovali jej pro předvídatelný viewport, načetli externí stránku a ukázali, jak **retrieve page title java** bezpečně a efektivně. Celý tok – od nastavení možností po uvolnění prostředků – je zabalen v kompaktním, znovupoužitelném úryvku. +**Q: What if the target site blocks automated requests?** +A: Můžete přizpůsobit řetězec `User-Agent` v `SandboxOptions` nebo dodat cookies přes `HtmlLoadOptions`, aby se choval jako běžný prohlížeč. -Nyní můžete tuto základnu rozšířit: scrapovat meta tagy, pořizovat screenshoty nebo dokonce spouštět JavaScript uvnitř sandboxu. Možnosti jsou tak široké jako samotný web. +**Q: Is there a way to capture a screenshot of the loaded page?** +A: Ano. Po načtení dokumentu zavolejte `document.save("snapshot.png", SaveFormat.Png);` pro export PNG obrázku renderované stránky. -Máte otázky ohledně zpracování autentizace, nastavení proxy nebo renderování PDF ze sandboxu? Zanechte komentář a společně prozkoumáme tyto pokročilé scénáře. Šťastné kódování! -![Screenshot of Java code creating an Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "create aspose html sandbox example") + +**Poslední aktualizace:** 2026-09-03 +**Testováno s:** Aspose.HTML for Java 23.1 +**Autor:** Aspose + +## Související tutoriály + +- [Jak použít sandbox pro Html do Pdf Java krok za krokem průvodce](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [Vytvořit PDF z HTML pomocí Aspose.HTML pro Java – Sandbox](/html/java/configuring-environment/implement-sandboxing/) +- [Povolit spouštění skriptů v Java kompletní průvodce Aspose Html](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-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/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/dutch/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index e9e588471c..9ad0479749 100644 --- a/html/dutch/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/dutch/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,25 +1,50 @@ --- category: general -date: 2026-01-04 -description: Maak een Aspose HTML‑sandbox in Java en leer hoe je de paginatitel in - Java kunt ophalen met een stapsgewijs voorbeeld. Snelle, uitvoerbare code inbegrepen. +date: 2026-09-03 +description: Hoe maak je een Aspose sandbox java en haal de paginatitel java op met + een schone, geïsoleerde HTML-load. Stapsgewijze gids met uitvoerbare code. draft: false keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title -language: nl -og_description: Maak een Aspose HTML-sandbox in Java en haal de paginatitel in Java - direct op. Volg deze gedetailleerde gids voor een schone, geïsoleerde HTML-lading. -og_title: Maak Aspose HTML Sandbox – Java‑tutorial +lastmod: 2026-09-03 +og_description: Leer hoe je een Aspose sandbox in Java maakt en de paginatitel java + direct ophaalt. Gedetailleerde stappen, best practices en volledige voorbeeldcode. +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: Hoe maak je een Aspose sandbox java - volledige gids +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: Maak Aspose HTML Sandbox – Complete Java-gids +title: Hoe maak je een Aspose sandbox java - volledige gids url: /nl/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -27,24 +52,33 @@ url: /nl/java/configuring-environment/create-aspose-html-sandbox-complete-java-g {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Maak Aspose HTML Sandbox – Complete Java Gids +# Hoe maak je een Aspose sandbox java – volledige gids -Heb je ooit moeten **create Aspose HTML sandbox** maar wist je niet hoe je de geladen pagina geïsoleerd kunt houden van je hoofd‑JVM? Misschien bouw je een web‑scraper, een test‑harnas, of wil je gewoon experimenteren met externe pagina's zonder risico op bijwerkingen. In deze tutorial lopen we precies dat stap voor stap door, en laten we je ook zien **how to retrieve page title java** vanuit de sandbox. +Heb je ooit **een Aspose HTML sandbox maken** moeten, maar wist je niet hoe je de geladen pagina geïsoleerd kunt houden van je hoofd‑JVM? Misschien bouw je een web‑scraper, een test‑harnas, of wil je gewoon experimenteren met externe pagina's zonder risico op bijwerkingen. In deze tutorial lopen we precies dat stap voor stap door, en laten we je ook zien **hoe je de paginatitel java kunt ophalen** vanuit de sandbox. -De oplossing is vrij eenvoudig: configureer een `SandboxOptions` object, start een `Sandbox`, laad een externe URL met `HtmlDocument`, lees de titel, en maak tenslotte alles schoon. Aan het einde heb je een zelf‑containende snippet die je in elk Java‑project kunt plaatsen dat Aspose.HTML for Java 23.1 (of nieuwer) gebruikt. +De oplossing is vrij eenvoudig: configureer een `SandboxOptions`‑object, start een `Sandbox`, laad een externe URL met `HtmlDocument`, lees de titel, en maak tenslotte alles schoon. Aan het einde heb je een zelfstandige code‑fragment dat je in elk Java‑project kunt plaatsen dat Aspose.HTML for Java 23.1 (of nieuwer) gebruikt. -## Wat je zult leren +## Snelle antwoorden +- **What is an Aspose sandbox?** Het is een geïsoleerde Chromium‑gebaseerde omgeving die binnen je JVM draait zonder het bestandssysteem aan te raken. +- **Why use a sandbox for page title extraction?** Het garandeert dat externe scripts de status of het geheugen van je applicatie niet kunnen beïnvloeden. +- **Which Java version is required?** Java 8 of hoger; de bibliotheek werkt ook met Java 11, 17 en later. +- **Do I need a license?** Een gratis proeflicentie is voldoende voor ontwikkeling; een commerciële licentie is vereist voor productie. +- **How many lines of code are needed?** Minder dan 30 regels voor de kernlogica, plus optionele setup‑code. -- Hoe je **create Aspose HTML sandbox** kunt maken met aangepaste viewport‑ en user‑agent‑instellingen. -- De exacte stappen om **retrieve page title java** van een externe pagina te halen terwijl je veilig binnen de sandbox blijft. -- Veelvoorkomende valkuilen (zoals het vergeten te disposen van resources) en best‑practice tips die je geheugenverbruik laag houden. -- Een compleet, kant‑klaar Java‑programma dat je kunt copy‑paste, compileren en uitvoeren. +## Wat is create aspose sandbox java? +`Sandbox` is de lichtgewicht, geïsoleerde browserengine van Aspose.HTML die binnen het Java‑proces draait. Het biedt een veilige container waarin je externe HTML kunt laden, JavaScript kunt uitvoeren en met de DOM kunt interageren zonder je host‑omgeving bloot te stellen. -> **Prerequisites** – Je hebt een geldige Aspose.HTML for Java‑licentie nodig (gratis proefversie werkt) en Java 8 of nieuwer geïnstalleerd. Er zijn geen extra third‑party libraries vereist. +## Waarom een sandbox gebruiken bij het ophalen van paginatitel java? +Aspose.HTML ondersteunt **meer dan 50 invoer‑ en uitvoerformaten** en kan documenten met honderden pagina's renderen zonder het volledige bestand in het geheugen te laden. Het gebruik van een sandbox voegt een extra beveiligingslaag toe, waardoor elk kwaadaardig script op de doelpagina de container niet kan verlaten. Deze aanpak vermindert het risico op geheugenlekken en beschermt je JVM tegen ongewenste bijwerkingen. ---- +## Vereisten +- Een geldige Aspose.HTML for Java‑licentie (een proefversie werkt voor testen). +- Java 8 of nieuwer geïnstalleerd op je ontwikkelmachine. +- Maven‑ of Gradle‑buildtool om afhankelijkheden te beheren. + +> **Pro tip:** Houd de bibliotheekversie afgestemd op de officiële Aspose‑release‑notes; nieuwere releases bevatten beveiligingspatches die cruciaal zijn bij het laden van niet‑vertrouwde inhoud. -## Stap 1: Stel je project in +## Stap 1: stel je project in Voordat we in de code duiken, zorg ervoor dat je `pom.xml` (Maven) of Gradle‑bestand de Aspose.HTML‑dependency bevat: @@ -63,13 +97,12 @@ Als je Gradle gebruikt: implementation 'com.aspose:aspose-html:23.1' ``` -> **Pro tip:** Houd de bibliotheekversie in sync met de officiële Aspose release notes; nieuwere versies voegen beveiligingsfixes toe die vooral belangrijk zijn bij het laden van externe content. - ---- +> **Pro tip:** Houd de bibliotheekversie afgestemd op de officiële Aspose‑release‑notes; nieuwere versies voegen beveiligingsfixes toe die vooral belangrijk zijn bij het laden van externe inhoud. -## Sandbox-opties configureren (retrieve page title java) +## Hoe configureer je sandbox‑opties? (retrieve page title java) -De eerste echte stap in **creating an Aspose HTML sandbox** is bepalen hoe de virtuele browser zich moet gedragen. Je kunt een desktop, een mobiel apparaat of zelfs een aangepaste schermgrootte nabootsen. +De eerste echte stap in **het maken van een Aspose HTML sandbox** is bepalen hoe de virtuele browser zich moet gedragen. Je kunt een desktop, een mobiel apparaat of zelfs een aangepaste schermgrootte nabootsen. +`SandboxOptions` configureert het gedrag van de sandbox, zoals de viewport‑grootte, user‑agent‑string en time‑out‑waarden. Het stelt je in staat te bepalen hoe de pagina wordt gerenderd en welke bronnen zijn toegestaan. ```java import com.aspose.html.sandbox.SandboxOptions; @@ -81,13 +114,12 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -Waarom is dit belangrijk? De viewport‑grootte beïnvloedt CSS‑media‑queries, terwijl de user‑agent server‑side content negotiation kan beïnvloeden. Door ze expliciet in te stellen zorg je ervoor dat de pagina die je later **retrieve page title java** van rendert precies zoals je verwacht. - ---- +Waarom is dit belangrijk? De viewport‑grootte beïnvloedt CSS‑media‑queries, terwijl de user‑agent server‑side content‑negotiatie kan beïnvloeden. Door ze expliciet in te stellen, zorg je ervoor dat de pagina waarvan je later **paginatitel java** ophaalt, precies rendert zoals je verwacht. -## Maak de Sandbox‑instantie +## Hoe maak je de sandbox‑instantie? -Nu we onze opties hebben, kunnen we de sandbox zelf opstarten. +Nu we onze opties hebben, kunnen we de sandbox zelf opstarten. +`Sandbox` is de geïsoleerde Chromium‑engine‑instantie die binnen de JVM draait. Het creëert een veilige omgeving waarin HTML kan worden geladen en uitgevoerd zonder het host‑bestandssysteem aan te raken. ```java import com.aspose.html.sandbox.Sandbox; @@ -96,13 +128,12 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -Beschouw `Sandbox` als een lichtgewicht, geïsoleerde Chromium‑engine die binnen je Java‑proces leeft. Het raakt het bestandssysteem niet tenzij je het expliciet toestaat, wat het perfect maakt voor veilig scrapen. +Beschouw `Sandbox` als een lichtgewicht, geïsoleerde Chromium‑engine die binnen je Java‑proces leeft. Het raakt het bestandssysteem niet tenzij je het expliciet opdraagt, waardoor het perfect is voor veilig scrapen. ---- - -## Laad een externe pagina in de sandbox +## Hoe laad je een externe pagina in de sandbox? -Met de sandbox klaar, is het laden van een externe pagina zo simpel als het doorgeven van de URL en de sandbox‑instantie aan `HtmlDocument`. +Met de sandbox gereed, is het laden van een externe pagina zo eenvoudig als het doorgeven van de URL en de sandbox‑instantie aan `HtmlDocument`. +`HtmlDocument` vertegenwoordigt een HTML‑pagina die in de sandbox is geladen, en biedt DOM‑toegang, render‑mogelijkheden en JavaScript‑uitvoering. ```java import com.aspose.html.HtmlDocument; @@ -111,32 +142,30 @@ import com.aspose.html.HtmlDocument; HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); ``` -> **Edge case:** Als de doelsite authenticatie of redirects vereist, kun je `HttpClient`‑handlers vooraf configureren en ze via `HtmlLoadOptions` doorgeven. Dat valt buiten de scope van deze korte gids, maar de API ondersteunt het. - ---- +> **Edge case:** Als de doelsite authenticatie of redirects vereist, kun je `HttpClient`‑handlers vooraf configureren en via `HtmlLoadOptions` doorgeven. Dat valt buiten de reikwijdte van deze korte gids, maar de API ondersteunt het. -## Toegang tot de paginatitel – retrieve page title java +## Hoe krijg je de paginatitel? (retrieve page title java) -Nu komt het deel waar je om vroeg: het extraheren van de paginatitel terwijl je binnen de sandbox blijft. De `HtmlDocument`‑klasse biedt een `getTitle()`‑methode die het `<title>`‑element uitleest. +Nu volgt het deel waar je om vroeg: het extraheren van de paginatitel terwijl je binnen de sandbox blijft. De `HtmlDocument`‑klasse biedt een `getTitle()`‑methode die het `<title>`‑element leest. +`getTitle()` retourneert de tekstinhoud van het `<title>`‑element van de pagina, waardoor je eenvoudig kunt verifiëren dat de pagina correct is geladen. ```java // Step 4 – read and print the title System.out.println("Title inside sandbox: " + htmlDoc.getTitle()); ``` -Wanneer je het volledige programma uitvoert tegen `https://example.com`, zou je moeten zien: +Wanneer je het volledige programma uitvoert tegen `https://example.com`, zou je het volgende moeten zien: ``` Title inside sandbox: Example Domain ``` -Die regel bewijst dat we met succes **created an Aspose HTML sandbox**, een externe pagina hebben geladen, en **retrieved page title java** zonder ooit de geïsoleerde omgeving te verlaten. - ---- +Die regel bewijst dat we succesvol **een Aspose HTML sandbox hebben gemaakt**, een externe pagina hebben geladen, en **paginatitel java hebben opgehaald** zonder ooit de geïsoleerde omgeving te verlaten. -## Ruim bronnen op +## Hoe maak je bronnen schoon? -Aspose.HTML‑objecten bevatten native resources, dus het is cruciaal ze expliciet te disposen. Het vergeten hiervan kan leiden tot geheugenlekken, vooral bij het verwerken van veel pagina's in een lus. +Aspose.HTML‑objecten houden native bronnen vast, dus het is cruciaal ze expliciet te disposen. Vergeten dit te doen kan leiden tot geheugenlekken, vooral bij het verwerken van veel pagina's in een lus. +`dispose()` vrijgeeft native bronnen die door Aspose.HTML‑objecten worden gehouden, voorkomt geheugenlekken en zorgt ervoor dat de JVM het geheugen snel kan terugwinnen. ```java // Step 5 – release native resources @@ -144,13 +173,11 @@ htmlDoc.dispose(); sandboxInstance.dispose(); ``` -> **Why dispose?** De onderliggende Chromium‑engine reserveert native geheugen en bestands‑handles. Het aanroepen van `dispose()` vertelt de JVM deze onmiddellijk vrij te geven in plaats van te wachten op finalizers. - ---- +> **Why dispose?** De onderliggende Chromium‑engine reserveert native geheugen en bestands‑handles. Het aanroepen van `dispose()` vertelt de JVM om die onmiddellijk vrij te geven in plaats van te wachten op finalizers. ## Volledig werkend voorbeeld -Hieronder staat het complete programma dat je kunt kopiëren naar een bestand genaamd `SandboxExample.java`. Compileer met `javac` en voer uit met `java`. Alle stappen staan in de juiste volgorde, en elke import staat vermeld. +Hieronder staat het volledige programma dat je kunt kopiëren naar een bestand genaamd `SandboxExample.java`. Compileer met `javac` en voer uit met `java`. Alle stappen staan in de juiste volgorde, en elke import wordt vermeld. ```java import com.aspose.html.HtmlDocument; @@ -182,7 +209,9 @@ public class SandboxExample { } ``` -### Verwachte uitvoer +![Schermafbeelding van Java-code die een Aspose HTML sandbox maakt](/images/create-aspose-html-sandbox.png "voorbeeld van aspose html sandbox") + +### Verwachte output ``` Title inside sandbox: Example Domain @@ -190,28 +219,44 @@ Title inside sandbox: Example Domain Als je `https://example.com` vervangt door een andere URL, zal de afgedrukte titel de `<title>`‑tag van die pagina weergeven — mits de site anonieme toegang toestaat. ---- - ## Praktische tips & veelvoorkomende valkuilen -- **Network Timeouts:** Standaard gebruikt de sandbox een timeout van 60 seconden. Als je trage sites raakt, roep `sandboxOptions.setTimeout(120_000);` aan vóór het maken van de sandbox. -- **Java Security Manager:** Wanneer je binnen een beperkt JVM draait, zorg ervoor dat het `java.security.policy` `java.net.SocketPermission` voor het doel‑domein verleent. -- **Multiple Pages:** Als je veel URL's moet verwerken, hergebruik dan één `Sandbox`‑instantie; maak gewoon een nieuw `HtmlDocument` voor elke URL en dispose het daarna. Dit vermindert de opstart‑overhead. -- **Debugging:** Stel `sandboxOptions.setDebugMode(true);` in om uitgebreide console‑logs te krijgen die je kunnen helpen te achterhalen waarom een pagina niet geladen kon worden. +- **Network timeouts:** Standaard gebruikt de sandbox een time‑out van 60 seconden. Als je tragere sites bezoekt, roep je `sandboxOptions.setTimeout(120_000);` aan vóór het creëren van de sandbox. +- **Java security manager:** Wanneer je binnen een beperkte JVM draait, zorg ervoor dat het `java.security.policy` `java.net.SocketPermission` verleent voor het doel‑domein. +- **Processing multiple pages:** Hergebruik een enkele `Sandbox`‑instantie; maak gewoon een nieuw `HtmlDocument` voor elke URL en disposeer het daarna. Dit vermindert de opstart‑overhead. +- **Debugging:** Stel `sandboxOptions.setDebugMode(true);` in om uitgebreide console‑logs te krijgen die je kunnen helpen te achterhalen waarom een pagina niet kon laden. ---- +## Veelgestelde vragen -## Conclusie +**Q: Kan ik deze sandbox gebruiken in een headless CI‑pipeline?** +A: Ja. De sandbox draait zonder zichtbare UI en kan worden uitgevoerd op elke server die Java 8+ ondersteunt. -We hebben zojuist **created an Aspose HTML sandbox** in Java, geconfigureerd voor een voorspelbare viewport, een externe pagina geladen, en laten zien hoe je **retrieve page title java** veilig en efficiënt kunt uitvoeren. De volledige stroom — van optie‑configuratie tot resource‑cleanup — is verpakt in een compacte, herbruikbare snippet. +**Q: Ondersteunt de sandbox JavaScript‑uitvoering?** +A: Absoluut. Het gebruikt Chromium onder de motorkap, dus moderne JavaScript, inclusief ES6‑functies, werkt correct. -Nu kun je dit fundament nemen en uitbreiden: meta‑tags scrapen, screenshots maken, of zelfs JavaScript uitvoeren binnen de sandbox. De mogelijkheden zijn net zo breed als het web zelf. +**Q: Hoe groot kan een pagina zijn die de sandbox aankan?** +A: De engine kan pagina's renderen tot 200 MB, alleen beperkt door het geheugen van de hostmachine. -Heb je vragen over het omgaan met authenticatie, proxy‑instellingen, of het renderen van PDF's vanuit de sandbox? Laat een reactie achter, en we verkennen die geavanceerde scenario's samen. Happy coding! +**Q: Wat als de doelsite geautomatiseerde verzoeken blokkeert?** +A: Je kunt de `User-Agent`‑string in `SandboxOptions` aanpassen of cookies via `HtmlLoadOptions` leveren om een gewone browser na te bootsen. + +**Q: Is er een manier om een screenshot van de geladen pagina te maken?** +A: Ja. Na het laden van het document, roep `document.save("snapshot.png", SaveFormat.Png);` aan om een PNG‑afbeelding van de gerenderde pagina te exporteren. + +**Laatst bijgewerkt:** 2026-09-03 +**Getest met:** Aspose.HTML for Java 23.1 +**Auteur:** Aspose + +## Gerelateerde tutorials + +- [Hoe sandbox gebruiken voor Html naar Pdf Java stap‑voor‑stap gids](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [PDF maken van HTML met Aspose.HTML voor Java – Sandbox](/html/java/configuring-environment/implement-sandboxing/) +- [Scriptuitvoering inschakelen in Java – Complete Aspose HTML gids](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-guide/) -![Screenshot of Java code creating an Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "create aspose html sandbox 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/english/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/english/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index 7f1ccee405..2bfb91efc8 100644 --- a/html/english/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/english/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,25 +1,53 @@ --- category: general -date: 2026-01-04 -description: Create Aspose HTML sandbox in Java and learn how to retrieve page title - java with a step‑by‑step example. Quick, runnable code included. +date: 2026-09-03 +description: How to create Aspose sandbox java and retrieve page title java with a + clean, isolated HTML load. Step‑by‑step guide with runnable code. draft: false +images: +- /java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/og-image.png keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title language: en -og_description: Create Aspose HTML sandbox in Java and retrieve page title java instantly. - Follow this detailed guide for a clean, isolated HTML load. -og_title: Create Aspose HTML Sandbox – Java Tutorial +lastmod: 2026-09-03 +og_description: Learn how to create an Aspose sandbox in Java and retrieve page title + java instantly. Detailed steps, best practices, and full example code. +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: How to create Aspose sandbox java – complete guide +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: Create Aspose HTML Sandbox – Complete Java Guide +title: How to create Aspose sandbox java – complete guide url: /java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -27,24 +55,33 @@ url: /java/configuring-environment/create-aspose-html-sandbox-complete-java-guid {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Create Aspose HTML Sandbox – Complete Java Guide +# How to create Aspose sandbox java – complete guide Ever needed to **create Aspose HTML sandbox** but weren’t sure how to keep the loaded page isolated from your main JVM? Maybe you’re building a web‑scraper, a testing harness, or just want to experiment with remote pages without risking side‑effects. In this tutorial we’ll walk through exactly that, and we’ll also show you **how to retrieve page title java** from inside the sandbox. The solution is pretty straightforward: configure a `SandboxOptions` object, spin up a `Sandbox`, load an external URL with `HtmlDocument`, read the title, and finally clean everything up. By the end you’ll have a self‑contained snippet you can drop into any Java project that uses Aspose.HTML for Java 23.1 (or newer). -## What You’ll Learn +## Quick answers +- **What is an Aspose sandbox?** It’s an isolated Chromium‑based environment that runs inside your JVM without touching the file system. +- **Why use a sandbox for page title extraction?** It guarantees that external scripts can’t affect your application’s state or memory. +- **Which Java version is required?** Java 8 or newer; the library also works with Java 11, 17, and later. +- **Do I need a license?** A free trial license is sufficient for development; a commercial license is required for production. +- **How many lines of code are needed?** Less than 30 lines for the core logic, plus optional setup code. -- How to **create Aspose HTML sandbox** with custom viewport and user‑agent settings. -- The exact steps to **retrieve page title java** from a remote page while staying safely inside the sandbox. -- Common pitfalls (like forgetting to dispose resources) and best‑practice tips that keep your memory footprint low. -- A complete, ready‑to‑run Java program you can copy‑paste, compile, and execute. +## What is create aspose sandbox java? +`Sandbox` is Aspose.HTML's lightweight, isolated browser engine that runs inside the Java process. It provides a secure container where you can load remote HTML, execute JavaScript, and interact with the DOM without exposing your host environment. -> **Prerequisites** – You need a valid Aspose.HTML for Java license (free trial works) and Java 8 or newer installed. No additional third‑party libraries are required. +## Why use a sandbox when retrieving page title java? +Aspose.HTML supports **50+ input and output formats** and can render multi‑hundred‑page documents without loading the entire file into memory. Using a sandbox adds an extra layer of security, ensuring that any malicious script on the target page cannot escape the container. This approach reduces the risk of memory leaks and protects your JVM from unwanted side‑effects. ---- +## Prerequisites +- A valid Aspose.HTML for Java license (trial works for testing). +- Java 8 or newer installed on your development machine. +- Maven or Gradle build tool to manage dependencies. + +> **Pro tip:** Keep the library version aligned with the official Aspose release notes; newer releases include security patches that are critical when loading untrusted content. -## Step 1: Set Up Your Project +## Step 1: set up your project Before we dive into code, make sure your `pom.xml` (Maven) or Gradle file includes the Aspose.HTML dependency: @@ -65,11 +102,10 @@ implementation 'com.aspose:aspose-html:23.1' > **Pro tip:** Keep the library version in sync with the official Aspose release notes; newer versions add security fixes that are especially important when loading external content. ---- - -## Configure Sandbox Options (retrieve page title java) +## How do you configure sandbox options? (retrieve page title java) -The first real step in **creating an Aspose HTML sandbox** is to decide how the virtual browser should behave. You can mimic a desktop, a mobile device, or even a custom screen size. +The first real step in **creating an Aspose HTML sandbox** is to decide how the virtual browser should behave. You can mimic a desktop, a mobile device, or even a custom screen size. +`SandboxOptions` configures the behavior of the sandbox, such as viewport size, user‑agent string, and timeout values. It lets you control how the page is rendered and what resources are allowed. ```java import com.aspose.html.sandbox.SandboxOptions; @@ -83,11 +119,10 @@ sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string Why does this matter? The viewport size influences CSS media queries, while the user‑agent can affect server‑side content negotiation. Setting them explicitly ensures the page you later **retrieve page title java** from renders exactly as you expect. ---- - -## Create the Sandbox Instance +## How do you create the sandbox instance? -Now that we have our options, we can spin up the sandbox itself. +Now that we have our options, we can spin up the sandbox itself. +`Sandbox` is the isolated Chromium engine instance that runs inside the JVM. It creates a secure environment where HTML can be loaded and executed without touching the host file system. ```java import com.aspose.html.sandbox.Sandbox; @@ -98,11 +133,10 @@ Sandbox sandboxInstance = new Sandbox(sandboxOptions); Think of `Sandbox` as a lightweight, isolated Chromium engine that lives inside your Java process. It doesn’t touch the file system unless you explicitly tell it to, which makes it perfect for secure scraping. ---- - -## Load an External Page Inside the Sandbox +## How do you load an external page inside the sandbox? -With the sandbox ready, loading a remote page is as simple as passing the URL and the sandbox instance to `HtmlDocument`. +With the sandbox ready, loading a remote page is as simple as passing the URL and the sandbox instance to `HtmlDocument`. +`HtmlDocument` represents an HTML page loaded into the sandbox, providing DOM access, rendering capabilities, and JavaScript execution. ```java import com.aspose.html.HtmlDocument; @@ -113,11 +147,10 @@ HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); > **Edge case:** If the target site requires authentication or redirects, you can pre‑configure `HttpClient` handlers and pass them via `HtmlLoadOptions`. That’s beyond the scope of this quick guide, but the API supports it. ---- - -## Access the Page Title – retrieve page title java +## How do you access the page title? (retrieve page title java) -Now comes the part you asked for: extracting the page title while staying inside the sandbox. The `HtmlDocument` class exposes a `getTitle()` method that reads the `<title>` element. +Now comes the part you asked for: extracting the page title while staying inside the sandbox. The `HtmlDocument` class exposes a `getTitle()` method that reads the `<title>` element. +`getTitle()` returns the text content of the page’s `<title>` element, giving you a simple way to verify that the page loaded correctly. ```java // Step 4 – read and print the title @@ -132,11 +165,10 @@ Title inside sandbox: Example Domain That line proves we’ve successfully **created an Aspose HTML sandbox**, loaded a remote page, and **retrieved page title java** without ever leaving the isolated environment. ---- - -## Clean Up Resources +## How do you clean up resources? -Aspose.HTML objects hold native resources, so it’s crucial to dispose of them explicitly. Forgetting to do so can lead to memory leaks, especially when processing many pages in a loop. +Aspose.HTML objects hold native resources, so it’s crucial to dispose of them explicitly. Forgetting to do so can lead to memory leaks, especially when processing many pages in a loop. +`dispose()` releases native resources held by Aspose.HTML objects, preventing memory leaks and ensuring the JVM can reclaim memory promptly. ```java // Step 5 – release native resources @@ -146,9 +178,7 @@ sandboxInstance.dispose(); > **Why dispose?** The underlying Chromium engine allocates native memory and file handles. Calling `dispose()` tells the JVM to free those immediately instead of waiting for finalizers. ---- - -## Full Working Example +## Full working example Below is the complete program you can copy into a file named `SandboxExample.java`. Compile with `javac` and run with `java`. All steps are in the correct order, and every import is listed. @@ -182,7 +212,9 @@ public class SandboxExample { } ``` -### Expected Output +![Screenshot of Java code creating an Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "create aspose html sandbox example") + +### Expected output ``` Title inside sandbox: Example Domain @@ -190,28 +222,49 @@ Title inside sandbox: Example Domain If you replace `https://example.com` with another URL, the printed title will reflect that page’s `<title>` tag—provided the site allows anonymous access. ---- - -## Practical Tips & Common Pitfalls +## Practical tips & common pitfalls -- **Network Timeouts:** By default the sandbox uses a 60‑second timeout. If you’re hitting slower sites, call `sandboxOptions.setTimeout(120_000);` before creating the sandbox. -- **Java Security Manager:** When running inside a restricted JVM, ensure the `java.security.policy` grants `java.net.SocketPermission` for the target domain. -- **Multiple Pages:** If you need to process many URLs, reuse a single `Sandbox` instance; just create a new `HtmlDocument` for each URL and dispose of it afterwards. This reduces startup overhead. +- **Network timeouts:** By default the sandbox uses a 60‑second timeout. If you’re hitting slower sites, call `sandboxOptions.setTimeout(120_000);` before creating the sandbox. +- **Java security manager:** When running inside a restricted JVM, ensure the `java.security.policy` grants `java.net.SocketPermission` for the target domain. +- **Processing multiple pages:** Reuse a single `Sandbox` instance; just create a new `HtmlDocument` for each URL and dispose of it afterwards. This reduces startup overhead. - **Debugging:** Set `sandboxOptions.setDebugMode(true);` to get verbose console logs that can help you pinpoint why a page failed to load. ---- +## Frequently asked questions -## Conclusion +**Q: Can I use this sandbox in a headless CI pipeline?** +A: Yes. The sandbox runs without a visible UI and can be executed on any server that supports Java 8+. + +**Q: Does the sandbox support JavaScript execution?** +A: Absolutely. It uses Chromium under the hood, so modern JavaScript, including ES6 features, runs correctly. + +**Q: How large a page can the sandbox handle?** +A: The engine can render pages up to 200 MB in size, limited only by the host machine’s memory. + +**Q: What if the target site blocks automated requests?** +A: You can customize the `User-Agent` string in `SandboxOptions` or supply cookies via `HtmlLoadOptions` to mimic a regular browser. + +**Q: Is there a way to capture a screenshot of the loaded page?** +A: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` to export a PNG image of the rendered page. -We’ve just **created an Aspose HTML sandbox** in Java, configured it for a predictable viewport, loaded an external page, and demonstrated how to **retrieve page title java** safely and efficiently. The entire flow—from option setup to resource cleanup—is encapsulated in a compact, reusable snippet. -Now you can take this foundation and extend it: scrape meta tags, capture screenshots, or even run JavaScript inside the sandbox. The possibilities are as wide as the web itself. -Got questions about handling authentication, proxy settings, or rendering PDFs from the sandbox? Drop a comment, and we’ll explore those advanced scenarios together. Happy coding! -![Screenshot of Java code creating an Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "create aspose html sandbox example") + + +**Last Updated:** 2026-09-03 +**Tested with:** Aspose.HTML for Java 23.1 +**Author:** Aspose + +## Related Tutorials + +- [How To Use Sandbox For Html To Pdf Java Step By Step Guide](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [Create PDF from HTML using Aspose.HTML for Java – Sandbox](/html/java/configuring-environment/implement-sandboxing/) +- [Enable Script Execution In Java Complete Aspose Html Guide](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-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/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/og-image.png b/html/english/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..2304e4de195f2239bce75b98bdc7de652b2223f8 GIT binary patch literal 48502 zcmbTe2UJsC6fTIOfP#R4^rk39no^|(=_<W<etHM#9aNfh5fBo3?;uS&5s}_|4WV~J zZ-FFp(f@yMX1#ecYbJ}ea@S3A&bj-Xea_zB_ie⪙j@Vr@oJch4tW#ytEn?)}8NI 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 literal 0 HcmV?d00001 diff --git a/html/french/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/french/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index 46a116d67c..862b1d3e71 100644 --- a/html/french/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/french/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,27 +1,51 @@ --- category: general -date: 2026-01-04 -description: Créez un bac à sable Aspose HTML en Java et apprenez comment récupérer - le titre de la page en Java avec un exemple étape par étape. Code rapide et exécutable - inclus. +date: 2026-09-03 +description: Comment créer un sandbox Aspose java et récupérer le page title java + avec un chargement HTML propre et isolé. Guide étape par étape avec du code exécutable. draft: false keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title -language: fr -og_description: Créez un bac à sable Aspose HTML en Java et récupérez instantanément - le titre de la page Java. Suivez ce guide détaillé pour un chargement HTML propre - et isolé. -og_title: Créer un bac à sable Aspose HTML – Tutoriel Java +lastmod: 2026-09-03 +og_description: Apprenez à créer un sandbox Aspose en Java et à récupérer le page + title java instantanément. Étapes détaillées, meilleures pratiques et code d'exemple + complet. +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: Comment créer un sandbox Aspose java – guide complet +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: Créer le bac à sable Aspose HTML – Guide complet Java +title: Comment créer un sandbox Aspose java – guide complet url: /fr/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -29,24 +53,33 @@ url: /fr/java/configuring-environment/create-aspose-html-sandbox-complete-java-g {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Créer un bac à sable Aspose HTML – Guide complet Java +# Comment créer un bac à sable Aspose java – guide complet -Vous avez déjà eu besoin de **créer un bac à sable Aspose HTML** mais vous n'étiez pas sûr de la façon d'isoler la page chargée de votre JVM principale ? Peut-être construisez‑vous un web‑scraper, un harness de test, ou vous voulez simplement expérimenter avec des pages distantes sans risquer d’effets secondaires. Dans ce tutoriel, nous allons parcourir exactement cela, et nous vous montrerons également **comment récupérer le titre de la page java** depuis l’intérieur du bac à sable. +Vous avez déjà eu besoin de **créer un bac à sable Aspose HTML** mais vous n'étiez pas sûr de la façon d'isoler la page chargée de votre JVM principale ? Peut‑être que vous construisez un scraper web, un banc d'essai, ou que vous voulez simplement expérimenter avec des pages distantes sans risquer d'effets secondaires. Dans ce tutoriel, nous allons passer en revue exactement cela, et nous vous montrerons également **comment récupérer le titre de la page java** depuis l'intérieur du bac à sable. -La solution est assez simple : configurer un objet `SandboxOptions`, lancer un `Sandbox`, charger une URL externe avec `HtmlDocument`, lire le titre, puis nettoyer le tout. À la fin, vous disposerez d’un extrait autonome que vous pourrez insérer dans n’importe quel projet Java utilisant Aspose.HTML for Java 23.1 (ou plus récent). +La solution est assez simple : configurez un objet `SandboxOptions`, lancez un `Sandbox`, chargez une URL externe avec `HtmlDocument`, lisez le titre, puis nettoyez le tout. À la fin, vous disposerez d'un extrait autonome que vous pourrez intégrer à n'importe quel projet Java utilisant Aspose.HTML for Java 23.1 (ou plus récent). -## Ce que vous apprendrez +## Réponses rapides +- **Qu'est‑ce qu'un bac à sable Aspose ?** C’est un environnement isolé basé sur Chromium qui s'exécute à l'intérieur de votre JVM sans toucher au système de fichiers. +- **Pourquoi utiliser un bac à sable pour l'extraction du titre de la page ?** Il garantit que les scripts externes ne peuvent pas affecter l'état ou la mémoire de votre application. +- **Quelle version de Java est requise ?** Java 8 ou plus récent ; la bibliothèque fonctionne également avec Java 11, 17 et les versions ultérieures. +- **Ai‑je besoin d'une licence ?** Une licence d'essai gratuite suffit pour le développement ; une licence commerciale est requise pour la production. +- **Combien de lignes de code sont nécessaires ?** Moins de 30 lignes pour la logique principale, plus le code d'installation optionnel. -- Comment **créer un bac à sable Aspose HTML** avec des paramètres de viewport et d’agent utilisateur personnalisés. -- Les étapes exactes pour **récupérer le titre de la page java** depuis une page distante tout en restant en toute sécurité dans le bac à sable. -- Les pièges courants (comme oublier de libérer les ressources) et les conseils de bonnes pratiques qui maintiennent votre empreinte mémoire faible. -- Un programme Java complet, prêt à l’exécution, que vous pouvez copier‑coller, compiler et exécuter. +## Qu'est‑ce que créer un bac à sable Aspose java ? +`Sandbox` est le moteur de navigateur léger et isolé d'Aspose.HTML qui s'exécute à l'intérieur du processus Java. Il fournit un conteneur sécurisé où vous pouvez charger du HTML distant, exécuter du JavaScript et interagir avec le DOM sans exposer votre environnement hôte. -> **Prérequis** – Vous avez besoin d’une licence valide Aspose.HTML for Java (l’essai gratuit fonctionne) et de Java 8 ou plus récent installé. Aucune bibliothèque tierce supplémentaire n’est requise. +## Pourquoi utiliser un bac à sable lors de la récupération du titre de la page java ? +Aspose.HTML prend en charge **plus de 50 formats d'entrée et de sortie** et peut rendre des documents de plusieurs centaines de pages sans charger le fichier complet en mémoire. L'utilisation d'un bac à sable ajoute une couche supplémentaire de sécurité, garantissant qu'aucun script malveillant sur la page cible ne puisse s'échapper du conteneur. Cette approche réduit le risque de fuites de mémoire et protège votre JVM des effets secondaires indésirables. ---- +## Prérequis +- Une licence valide d'Aspose.HTML for Java (la version d'essai fonctionne pour les tests). +- Java 8 ou plus récent installé sur votre machine de développement. +- Outil de construction Maven ou Gradle pour gérer les dépendances. + +> **Astuce :** Gardez la version de la bibliothèque alignée avec les notes de version officielles d'Aspose ; les versions plus récentes incluent des correctifs de sécurité critiques lors du chargement de contenu non fiable. -## Étape 1 : Configurer votre projet +## Étape 1 : configurer votre projet Avant de plonger dans le code, assurez‑vous que votre `pom.xml` (Maven) ou votre fichier Gradle inclut la dépendance Aspose.HTML : @@ -59,19 +92,18 @@ Avant de plonger dans le code, assurez‑vous que votre `pom.xml` (Maven) ou vot </dependency> ``` -Si vous utilisez Gradle : +Si vous utilisez Gradle : ```groovy implementation 'com.aspose:aspose-html:23.1' ``` -> **Astuce pro** : Gardez la version de la bibliothèque synchronisée avec les notes de version officielles d’Aspose ; les versions plus récentes ajoutent des correctifs de sécurité particulièrement importants lors du chargement de contenu externe. - ---- +> **Astuce :** Gardez la version de la bibliothèque en synchronisation avec les notes de version officielles d'Aspose ; les versions plus récentes ajoutent des correctifs de sécurité particulièrement importants lors du chargement de contenu externe. -## Configurer les options du bac à sable (retrieve page title java) +## Comment configurer les options du bac à sable ? (récupérer le titre de la page java) -La première vraie étape pour **créer un bac à sable Aspose HTML** consiste à décider comment le navigateur virtuel doit se comporter. Vous pouvez imiter un ordinateur de bureau, un appareil mobile, ou même une taille d’écran personnalisée. +La première vraie étape pour **créer un bac à sable Aspose HTML** consiste à décider comment le navigateur virtuel doit se comporter. Vous pouvez imiter un ordinateur de bureau, un appareil mobile ou même une taille d'écran personnalisée. +`SandboxOptions` configure le comportement du bac à sable, comme la taille du viewport, la chaîne user‑agent et les valeurs de timeout. Il vous permet de contrôler la façon dont la page est rendue et quelles ressources sont autorisées. ```java import com.aspose.html.sandbox.SandboxOptions; @@ -83,13 +115,12 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -Pourquoi cela importe‑t‑il ? La taille du viewport influence les media queries CSS, tandis que l’agent utilisateur peut affecter la négociation de contenu côté serveur. Les définir explicitement garantit que la page dont vous **récupérerez le titre de la page java** plus tard s’affichera exactement comme vous l’attendez. - ---- +Pourquoi cela importe‑t‑il ? La taille du viewport influence les media queries CSS, tandis que le user‑agent peut affecter la négociation de contenu côté serveur. Les définir explicitement garantit que la page dont vous **récupérerez le titre de la page java** plus tard se rendra exactement comme vous l’attendez. -## Créer l'instance du bac à sable +## Comment créer l'instance du bac à sable ? -Maintenant que nous avons nos options, nous pouvons lancer le bac à sable lui‑même. +Maintenant que nous avons nos options, nous pouvons lancer le bac à sable lui‑même. +`Sandbox` est l'instance du moteur Chromium isolé qui s'exécute à l'intérieur de la JVM. Il crée un environnement sécurisé où le HTML peut être chargé et exécuté sans toucher au système de fichiers de l'hôte. ```java import com.aspose.html.sandbox.Sandbox; @@ -98,13 +129,12 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -Considérez `Sandbox` comme un moteur Chromium léger et isolé qui vit à l’intérieur de votre processus Java. Il ne touche pas le système de fichiers à moins que vous ne le lui demandiez explicitement, ce qui le rend parfait pour le scraping sécurisé. +Pensez à `Sandbox` comme à un moteur Chromium léger et isolé qui vit à l'intérieur de votre processus Java. Il ne touche pas le système de fichiers sauf si vous le lui indiquez explicitement, ce qui le rend parfait pour le scraping sécurisé. ---- - -## Charger une page externe dans le bac à sable +## Comment charger une page externe dans le bac à sable ? -Avec le bac à sable prêt, charger une page distante est aussi simple que de passer l’URL et l’instance du bac à sable à `HtmlDocument`. +Avec le bac à sable prêt, charger une page distante est aussi simple que de passer l'URL et l'instance du bac à sable à `HtmlDocument`. +`HtmlDocument` représente une page HTML chargée dans le bac à sable, offrant un accès DOM, des capacités de rendu et l'exécution de JavaScript. ```java import com.aspose.html.HtmlDocument; @@ -113,32 +143,30 @@ import com.aspose.html.HtmlDocument; HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); ``` -> **Cas limite** : Si le site cible nécessite une authentification ou des redirections, vous pouvez pré‑configurer des gestionnaires `HttpClient` et les transmettre via `HtmlLoadOptions`. Cela dépasse le cadre de ce guide rapide, mais l’API le supporte. - ---- +> **Cas particulier :** Si le site cible nécessite une authentification ou des redirections, vous pouvez pré‑configurer des gestionnaires `HttpClient` et les transmettre via `HtmlLoadOptions`. Cela dépasse le cadre de ce guide rapide, mais l'API le supporte. -## Accéder au titre de la page – retrieve page title java +## Comment accéder au titre de la page ? (récupérer le titre de la page java) -Voici la partie que vous attendiez : extraire le titre de la page tout en restant dans le bac à sable. La classe `HtmlDocument` expose une méthode `getTitle()` qui lit l’élément `<title>`. +Voici la partie que vous attendiez : extraire le titre de la page tout en restant à l'intérieur du bac à sable. La classe `HtmlDocument` expose une méthode `getTitle()` qui lit l'élément `<title>`. +`getTitle()` renvoie le texte contenu dans l'élément `<title>` de la page, vous offrant un moyen simple de vérifier que la page s'est correctement chargée. ```java // Step 4 – read and print the title System.out.println("Title inside sandbox: " + htmlDoc.getTitle()); ``` -Lorsque vous exécutez le programme complet contre `https://example.com`, vous devriez voir : +Lorsque vous exécutez le programme complet contre `https://example.com`, vous devriez voir : ``` Title inside sandbox: Example Domain ``` -Cette ligne prouve que nous avons **créé un bac à sable Aspose HTML**, chargé une page distante, et **récupéré le titre de la page java** sans jamais quitter l’environnement isolé. - ---- +Cette ligne prouve que nous avons **créé un bac à sable Aspose HTML**, chargé une page distante, et **récupéré le titre de la page java** sans jamais quitter l'environnement isolé. -## Nettoyer les ressources +## Comment nettoyer les ressources ? -Les objets Aspose.HTML détiennent des ressources natives, il est donc crucial de les libérer explicitement. Oublier de le faire peut entraîner des fuites de mémoire, surtout lors du traitement de nombreuses pages dans une boucle. +Les objets Aspose.HTML détiennent des ressources natives, il est donc crucial de les libérer explicitement. Oublier de le faire peut entraîner des fuites de mémoire, surtout lors du traitement de nombreuses pages en boucle. +`dispose()` libère les ressources natives détenues par les objets Aspose.HTML, prévenant les fuites de mémoire et assurant que la JVM puisse récupérer la mémoire rapidement. ```java // Step 5 – release native resources @@ -146,13 +174,11 @@ htmlDoc.dispose(); sandboxInstance.dispose(); ``` -> **Pourquoi libérer ?** Le moteur Chromium sous‑jacent alloue de la mémoire native et des descripteurs de fichiers. Appeler `dispose()` indique à la JVM de libérer ces ressources immédiatement au lieu d’attendre les finaliseurs. - ---- +> **Pourquoi libérer ?** Le moteur Chromium sous‑jacent alloue de la mémoire native et des descripteurs de fichiers. Appeler `dispose()` indique à la JVM de libérer ces ressources immédiatement au lieu d'attendre les finaliseurs. ## Exemple complet fonctionnel -Ci‑dessous se trouve le programme complet que vous pouvez copier dans un fichier nommé `SandboxExample.java`. Compilez avec `javac` et exécutez avec `java`. Toutes les étapes sont dans le bon ordre, et chaque import est listé. +Voici le programme complet que vous pouvez copier dans un fichier nommé `SandboxExample.java`. Compilez avec `javac` et exécutez avec `java`. Toutes les étapes sont dans le bon ordre, et chaque import est listé. ```java import com.aspose.html.HtmlDocument; @@ -184,36 +210,56 @@ public class SandboxExample { } ``` -### Sortie attendue +![Capture d'écran du code Java créant un bac à sable Aspose HTML](/images/create-aspose-html-sandbox.png "create aspose html sandbox example") + +### Résultat attendu ``` Title inside sandbox: Example Domain ``` -Si vous remplacez `https://example.com` par une autre URL, le titre affiché reflétera la balise `<title>` de cette page—à condition que le site autorise l’accès anonyme. +Si vous remplacez `https://example.com` par une autre URL, le titre affiché reflétera la balise `<title>` de cette page — à condition que le site autorise l'accès anonyme. ---- +## Conseils pratiques & pièges courants -## Conseils pratiques et pièges courants +- **Timeouts réseau :** Par défaut le bac à sable utilise un timeout de 60 secondes. Si vous ciblez des sites plus lents, appelez `sandboxOptions.setTimeout(120_000);` avant de créer le bac à sable. +- **Gestionnaire de sécurité Java :** Lors de l'exécution dans une JVM restreinte, assurez‑vous que le `java.security.policy` accorde `java.net.SocketPermission` pour le domaine cible. +- **Traitement de plusieurs pages :** Réutilisez une seule instance `Sandbox` ; créez simplement un nouveau `HtmlDocument` pour chaque URL et libérez‑le ensuite. Cela réduit la surcharge de démarrage. +- **Débogage :** Activez `sandboxOptions.setDebugMode(true);` pour obtenir des journaux console détaillés qui peuvent vous aider à identifier pourquoi une page n’a pas pu se charger. -- **Timeouts réseau** : Par défaut, le bac à sable utilise un timeout de 60 secondes. Si vous ciblez des sites plus lents, appelez `sandboxOptions.setTimeout(120_000);` avant de créer le bac à sable. -- **Gestionnaire de sécurité Java** : Lors de l’exécution dans une JVM restreinte, assurez‑vous que le `java.security.policy` accorde `java.net.SocketPermission` pour le domaine cible. -- **Pages multiples** : Si vous devez traiter de nombreuses URL, réutilisez une seule instance de `Sandbox` ; créez simplement un nouveau `HtmlDocument` pour chaque URL et libérez‑le ensuite. Cela réduit le temps de démarrage. -- **Débogage** : Définissez `sandboxOptions.setDebugMode(true);` pour obtenir des journaux console détaillés qui peuvent vous aider à identifier pourquoi une page n’a pas pu se charger. +## Questions fréquentes ---- +**Q : Puis‑je utiliser ce bac à sable dans un pipeline CI sans tête ?** +R : Oui. Le bac à sable s'exécute sans interface utilisateur visible et peut être lancé sur n'importe quel serveur supportant Java 8+. + +**Q : Le bac à sable prend‑il en charge l'exécution de JavaScript ?** +R : Absolument. Il utilise Chromium en interne, donc le JavaScript moderne, y compris les fonctionnalités ES6, s'exécute correctement. -## Conclusion +**Q : Quelle taille de page le bac à sable peut‑il gérer ?** +R : Le moteur peut rendre des pages jusqu'à 200 Mo, limité uniquement par la mémoire de la machine hôte. -Nous venons **de créer un bac à sable Aspose HTML** en Java, de l’avoir configuré avec un viewport prévisible, d’avoir chargé une page distante, et d’avoir démontré comment **récupérer le titre de la page java** de manière sûre et efficace. L’ensemble du flux—de la configuration des options au nettoyage des ressources—est encapsulé dans un extrait compact et réutilisable. +**Q : Que faire si le site cible bloque les requêtes automatisées ?** +R : Vous pouvez personnaliser la chaîne `User-Agent` dans `SandboxOptions` ou fournir des cookies via `HtmlLoadOptions` pour imiter un navigateur ordinaire. -Vous pouvez maintenant prendre cette base et l’étendre : extraire des méta‑tags, capturer des captures d’écran, ou même exécuter du JavaScript dans le bac à sable. Les possibilités sont aussi vastes que le Web lui‑même. +**Q : Existe‑t‑il un moyen de capturer une capture d'écran de la page chargée ?** +R : Oui. Après le chargement du document, appelez `document.save("snapshot.png", SaveFormat.Png);` pour exporter une image PNG de la page rendue. -Des questions sur la gestion de l’authentification, des paramètres de proxy, ou le rendu de PDF depuis le bac à sable ? Laissez un commentaire, et nous explorerons ces scénarios avancés ensemble. Bon codage ! -![Capture d'écran du code Java créant un bac à sable Aspose HTML](/images/create-aspose-html-sandbox.png "exemple de création de bac à sable aspose html") + +**Dernière mise à jour :** 2026-09-03 +**Testé avec :** Aspose.HTML for Java 23.1 +**Auteur :** Aspose + +## Tutoriels associés + +- [Comment utiliser le bac à sable pour Html to Pdf Java – Guide étape par étape](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [Créer un PDF à partir de HTML avec Aspose.HTML for Java – Bac à sable](/html/java/configuring-environment/implement-sandboxing/) +- [Activer l'exécution de script en Java – Guide complet Aspose Html](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-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/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/german/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index ca28278dfd..f77ee32e4f 100644 --- a/html/german/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/german/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,27 +1,52 @@ --- category: general -date: 2026-01-04 -description: Erstellen Sie eine Aspose‑HTML‑Sandbox in Java und lernen Sie, wie Sie - den Seitentitel in Java mit einem Schritt‑für‑Schritt‑Beispiel abrufen. Schnell - ausführbarer Code ist enthalten. +date: 2026-09-03 +description: Wie man eine Aspose Sandbox in Java erstellt und den Seitentitel in Java + mit einem sauberen, isolierten HTML‑Ladevorgang abruft. Schritt‑für‑Schritt‑Anleitung + mit ausführbarem Code. draft: false keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title -language: de -og_description: Erstellen Sie eine Aspose HTML‑Sandbox in Java und rufen Sie den Seitentitel - sofort ab. Folgen Sie dieser detaillierten Anleitung für ein sauberes, isoliertes - Laden von HTML. -og_title: Aspose HTML Sandbox erstellen – Java‑Tutorial +lastmod: 2026-09-03 +og_description: Erfahren Sie, wie Sie eine Aspose Sandbox in Java erstellen und den + Seitentitel in Java sofort abrufen. Detaillierte Schritte, bewährte Methoden und + vollständiger Beispielcode. +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: Wie man eine Aspose Sandbox in Java erstellt – vollständige Anleitung +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: Erstellen Sie den Aspose HTML Sandbox – Vollständiger Java‑Leitfaden +title: Wie man eine Aspose Sandbox in Java erstellt – vollständige Anleitung url: /de/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -29,26 +54,35 @@ url: /de/java/configuring-environment/create-aspose-html-sandbox-complete-java-g {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Erstellen Sie eine Aspose HTML Sandbox – Vollständiger Java‑Leitfaden +# Wie man einen Aspose Sandbox Java erstellt – vollständige Anleitung -Haben Sie jemals **eine Aspose HTML sandbox** erstellen müssen, waren sich aber nicht sicher, wie Sie die geladene Seite von Ihrer Haupt‑JVM isolieren können? Vielleicht bauen Sie einen Web‑Scraper, ein Test‑Framework oder möchten einfach mit entfernten Seiten experimentieren, ohne Nebenwirkungen zu riskieren. In diesem Tutorial führen wir Sie Schritt für Schritt durch genau das und zeigen Ihnen außerdem **how to retrieve page title java** aus der Sandbox. +Haben Sie jemals **einen Aspose HTML Sandbox erstellen** müssen, waren sich aber nicht sicher, wie Sie die geladene Seite von Ihrer Haupt‑JVM isolieren können? Vielleicht bauen Sie einen Web‑Scraper, ein Test‑Framework oder möchten einfach mit entfernten Seiten experimentieren, ohne Nebenwirkungen zu riskieren. In diesem Tutorial gehen wir genau darauf ein und zeigen Ihnen außerdem, **wie Sie den Seitentitel in Java** aus dem Sandbox‑Umfeld abrufen. -Die Lösung ist ziemlich einfach: Konfigurieren Sie ein `SandboxOptions`‑Objekt, starten Sie eine `Sandbox`, laden Sie eine externe URL mit `HtmlDocument`, lesen Sie den Titel und räumen Sie schließlich alles wieder auf. Am Ende haben Sie ein eigenständiges Snippet, das Sie in jedes Java‑Projekt einfügen können, das Aspose.HTML für Java 23.1 (oder neuer) verwendet. +Die Lösung ist ziemlich einfach: Konfigurieren Sie ein `SandboxOptions`‑Objekt, starten Sie eine `Sandbox`, laden Sie eine externe URL mit `HtmlDocument`, lesen Sie den Titel und räumen Sie anschließend alles auf. Am Ende haben Sie ein eigenständiges Snippet, das Sie in jedes Java‑Projekt einbinden können, das Aspose.HTML für Java 23.1 (oder neuer) verwendet. -## Was Sie lernen werden +## Schnellantworten +- **Was ist ein Aspose Sandbox?** Es ist eine isolierte, Chromium‑basierte Umgebung, die innerhalb Ihrer JVM läuft, ohne das Dateisystem zu berühren. +- **Warum einen Sandbox für die Titelerfassung verwenden?** Sie stellt sicher, dass externe Skripte den Zustand oder Speicher Ihrer Anwendung nicht beeinflussen können. +- **Welche Java‑Version wird benötigt?** Java 8 oder neuer; die Bibliothek funktioniert auch mit Java 11, 17 und späteren Versionen. +- **Brauche ich eine Lizenz?** Eine kostenlose Testlizenz reicht für die Entwicklung aus; für die Produktion ist eine kommerzielle Lizenz erforderlich. +- **Wie viele Code‑Zeilen werden benötigt?** Weniger als 30 Zeilen für die Kernlogik, zuzüglich optionalem Setup‑Code. -- Wie Sie **eine Aspose HTML sandbox** mit benutzerdefinierten Viewport‑ und User‑Agent‑Einstellungen **create Aspose HTML sandbox** erstellen. -- Die genauen Schritte, um **retrieve page title java** von einer entfernten Seite zu erhalten, während Sie sicher innerhalb der Sandbox bleiben. -- Häufige Stolperfallen (wie das Vergessen, Ressourcen zu entsorgen) und Best‑Practice‑Tipps, die Ihren Speicherverbrauch gering halten. -- Ein vollständiges, sofort ausführbares Java‑Programm, das Sie kopieren, kompilieren und ausführen können. +## Was ist create aspose sandbox java? +`Sandbox` ist Aspose.HTMLs leichtgewichtiger, isolierter Browser‑Engine, die innerhalb des Java‑Prozesses läuft. Sie bietet einen sicheren Container, in dem Sie remote HTML laden, JavaScript ausführen und mit dem DOM interagieren können, ohne Ihre Host‑Umgebung offenzulegen. -> **Voraussetzungen** – Sie benötigen eine gültige Aspose.HTML‑für‑Java‑Lizenz (eine kostenlose Testversion funktioniert) und Java 8 oder neuer. Keine zusätzlichen Drittanbieter‑Bibliotheken sind erforderlich. +## Warum einen Sandbox verwenden, wenn man den Seitentitel in Java abruft? +Aspose.HTML unterstützt **50+ Eingabe‑ und Ausgabeformate** und kann Dokumente mit mehreren hundert Seiten rendern, ohne die gesamte Datei in den Speicher zu laden. Die Verwendung eines Sandbox fügt eine zusätzliche Sicherheitsebene hinzu, die verhindert, dass bösartige Skripte auf der Zielseite den Container verlassen. Dieser Ansatz reduziert das Risiko von Speicherlecks und schützt Ihre JVM vor unerwünschten Nebenwirkungen. ---- +## Voraussetzungen +- Eine gültige Aspose.HTML‑für‑Java‑Lizenz (die Testlizenz reicht für Tests). +- Java 8 oder neuer, installiert auf Ihrer Entwicklungsmaschine. +- Maven‑ oder Gradle‑Build‑Tool zur Verwaltung der Abhängigkeiten. + +> **Pro Tipp:** Halten Sie die Bibliotheksversion mit den offiziellen Aspose‑Release‑Notes synchron; neuere Versionen enthalten sicherheitsrelevante Patches, die beim Laden von nicht vertrauenswürdigem Inhalt entscheidend sind. -## Schritt 1: Richten Sie Ihr Projekt ein +## Schritt 1: Projekt einrichten -Bevor wir in den Code eintauchen, stellen Sie sicher, dass Ihre `pom.xml` (Maven) oder Gradle‑Datei die Aspose.HTML‑Abhängigkeit enthält: +Bevor wir zum Code kommen, stellen Sie sicher, dass Ihre `pom.xml` (Maven) oder Ihre Gradle‑Datei die Aspose.HTML‑Abhängigkeit enthält: ```xml <!-- Maven --> @@ -59,19 +93,18 @@ Bevor wir in den Code eintauchen, stellen Sie sicher, dass Ihre `pom.xml` (Maven </dependency> ``` -Wenn Sie Gradle verwenden: +Falls Sie Gradle verwenden: ```groovy implementation 'com.aspose:aspose-html:23.1' ``` -> **Pro‑Tipp:** Halten Sie die Bibliotheksversion synchron mit den offiziellen Aspose‑Release‑Notes; neuere Versionen enthalten Sicherheitsfixes, die besonders wichtig sind, wenn externe Inhalte geladen werden. - ---- +> **Pro Tipp:** Halten Sie die Bibliotheksversion mit den offiziellen Aspose‑Release‑Notes synchron; neuere Versionen enthalten sicherheitsrelevante Korrekturen, die besonders beim Laden externer Inhalte wichtig sind. -## Sandbox‑Optionen konfigurieren (retrieve page title java) +## Wie konfiguriert man Sandbox‑Optionen? (retrieve page title java) -Der erste eigentliche Schritt beim **Erstellen einer Aspose HTML sandbox** besteht darin, zu entscheiden, wie sich der virtuelle Browser verhalten soll. Sie können einen Desktop, ein mobiles Gerät oder sogar eine benutzerdefinierte Bildschirmgröße nachahmen. +Der erste eigentliche Schritt beim **Erstellen eines Aspose HTML Sandbox** besteht darin, festzulegen, wie sich der virtuelle Browser verhalten soll. Sie können ein Desktop‑, ein Mobilgerät‑ oder sogar ein benutzerdefiniertes Bildschirmformat nachahmen. +`SandboxOptions` konfiguriert das Verhalten des Sandbox, z. B. Viewport‑Größe, User‑Agent‑String und Timeout‑Werte. Es ermöglicht Ihnen, zu steuern, wie die Seite gerendert wird und welche Ressourcen erlaubt sind. ```java import com.aspose.html.sandbox.SandboxOptions; @@ -83,13 +116,12 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -Warum ist das wichtig? Die Viewport‑Größe beeinflusst CSS‑Media‑Queries, während der User‑Agent die serverseitige Content‑Negotiation beeinflussen kann. Durch das explizite Setzen stellen Sie sicher, dass die Seite, von der Sie später **retrieve page title java** erhalten, exakt so gerendert wird, wie Sie es erwarten. +Warum ist das wichtig? Die Viewport‑Größe beeinflusst CSS‑Media‑Queries, während der User‑Agent die serverseitige Inhaltsverhandlung beeinflussen kann. Durch explizite Einstellungen stellen Sie sicher, dass die Seite, von der Sie später **den Seitentitel in Java** abrufen, exakt so gerendert wird, wie Sie es erwarten. ---- - -## Sandbox‑Instanz erstellen +## Wie erstellt man die Sandbox‑Instanz? -Jetzt, wo wir unsere Optionen haben, können wir die Sandbox selbst starten. +Jetzt, wo wir unsere Optionen haben, können wir die Sandbox selbst starten. +`Sandbox` ist die isolierte Chromium‑Engine‑Instanz, die innerhalb der JVM läuft. Sie erzeugt eine sichere Umgebung, in der HTML geladen und ausgeführt werden kann, ohne das Host‑Dateisystem zu berühren. ```java import com.aspose.html.sandbox.Sandbox; @@ -98,13 +130,12 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -Betrachten Sie `Sandbox` als eine leichte, isolierte Chromium‑Engine, die innerhalb Ihres Java‑Prozesses läuft. Sie greift nicht auf das Dateisystem zu, es sei denn, Sie weisen sie ausdrücklich dazu an – ideal für sicheres Scraping. +Betrachten Sie `Sandbox` als eine leichtgewichtige, isolierte Chromium‑Engine, die innerhalb Ihres Java‑Prozesses lebt. Sie greift nur dann auf das Dateisystem zu, wenn Sie es ausdrücklich anweisen – ideal für sicheres Scraping. ---- +## Wie lädt man eine externe Seite in den Sandbox? -## Laden einer externen Seite innerhalb der Sandbox - -Mit der bereitstehenden Sandbox ist das Laden einer entfernten Seite so einfach wie das Übergeben der URL und der Sandbox‑Instanz an `HtmlDocument`. +Mit der vorbereiteten Sandbox ist das Laden einer entfernten Seite so einfach wie das Übergeben der URL und der Sandbox‑Instanz an `HtmlDocument`. +`HtmlDocument` repräsentiert eine HTML‑Seite, die im Sandbox geladen wurde, und bietet DOM‑Zugriff, Rendering‑Funktionen und JavaScript‑Ausführung. ```java import com.aspose.html.HtmlDocument; @@ -113,32 +144,30 @@ import com.aspose.html.HtmlDocument; HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); ``` -> **Edge‑Case:** Wenn die Zielseite Authentifizierung oder Weiterleitungen erfordert, können Sie `HttpClient`‑Handler vorkonfigurieren und sie über `HtmlLoadOptions` übergeben. Das liegt außerhalb des Umfangs dieses kurzen Leitfadens, aber die API unterstützt es. - ---- +> **Randfall:** Wenn die Zielseite Authentifizierung oder Weiterleitungen erfordert, können Sie `HttpClient`‑Handler vorkonfigurieren und sie über `HtmlLoadOptions` übergeben. Das liegt außerhalb des Umfangs dieses kurzen Leitfadens, aber die API unterstützt es. -## Zugriff auf den Seitentitel – retrieve page title java +## Wie greift man auf den Seitentitel zu? (retrieve page title java) -Jetzt kommt der Teil, den Sie wollten: den Seitentitel extrahieren, während Sie innerhalb der Sandbox bleiben. Die Klasse `HtmlDocument` stellt eine Methode `getTitle()` bereit, die das `<title>`‑Element liest. +Jetzt kommt der Teil, den Sie wollten: den Seitentitel extrahieren, während Sie im Sandbox‑Umfeld bleiben. Die Klasse `HtmlDocument` stellt die Methode `getTitle()` bereit, die das `<title>`‑Element ausliest. +`getTitle()` liefert den Textinhalt des `<title>`‑Elements der Seite und bietet Ihnen eine einfache Möglichkeit zu prüfen, ob die Seite korrekt geladen wurde. ```java // Step 4 – read and print the title System.out.println("Title inside sandbox: " + htmlDoc.getTitle()); ``` -Wenn Sie das komplette Programm gegen `https://example.com` ausführen, sollten Sie Folgendes sehen: +Wenn Sie das vollständige Programm gegen `https://example.com` ausführen, sollten Sie Folgendes sehen: ``` Title inside sandbox: Example Domain ``` -Diese Zeile beweist, dass wir erfolgreich **eine Aspose HTML sandbox** erstellt, eine entfernte Seite geladen und **retrieve page title java** erhalten haben, ohne jemals die isolierte Umgebung zu verlassen. +Diese Zeile beweist, dass wir erfolgreich **einen Aspose HTML Sandbox erstellt**, eine entfernte Seite geladen und **den Seitentitel in Java** abgerufen haben, ohne die isolierte Umgebung zu verlassen. ---- - -## Ressourcen bereinigen +## Wie räumt man Ressourcen auf? -Aspose.HTML‑Objekte halten native Ressourcen, daher ist es entscheidend, sie explizit zu entsorgen. Das Vergessen kann zu Speicherlecks führen, besonders wenn viele Seiten in einer Schleife verarbeitet werden. +Aspose.HTML‑Objekte halten native Ressourcen, daher ist es wichtig, sie explizit zu entsorgen. Das Vergessen kann zu Speicherlecks führen, besonders wenn viele Seiten in einer Schleife verarbeitet werden. +`dispose()` gibt die von Aspose.HTML‑Objekten gehaltenen nativen Ressourcen frei, verhindert Speicherlecks und sorgt dafür, dass die JVM den Speicher zeitnah zurückgewinnt. ```java // Step 5 – release native resources @@ -148,11 +177,9 @@ sandboxInstance.dispose(); > **Warum entsorgen?** Die zugrunde liegende Chromium‑Engine reserviert nativen Speicher und Dateihandles. Durch Aufruf von `dispose()` wird der JVM mitgeteilt, diese sofort freizugeben, anstatt auf Finalizer zu warten. ---- - ## Vollständiges funktionierendes Beispiel -Unten finden Sie das komplette Programm, das Sie in eine Datei namens `SandboxExample.java` kopieren können. Kompilieren Sie es mit `javac` und führen Sie es mit `java` aus. Alle Schritte sind in der richtigen Reihenfolge, und jeder Import ist aufgelistet. +Unten finden Sie das komplette Programm, das Sie in eine Datei namens `SandboxExample.java` kopieren können. Kompilieren Sie es mit `javac` und führen Sie es mit `java` aus. Alle Schritte sind in der richtigen Reihenfolge, und jeder Import ist aufgeführt. ```java import com.aspose.html.HtmlDocument; @@ -184,6 +211,8 @@ public class SandboxExample { } ``` +![Screenshot von Java‑Code, der einen Aspose HTML Sandbox erstellt](/images/create-aspose-html-sandbox.png "Beispiel für das Erstellen eines Aspose HTML Sandbox") + ### Erwartete Ausgabe ``` @@ -192,28 +221,46 @@ Title inside sandbox: Example Domain Wenn Sie `https://example.com` durch eine andere URL ersetzen, wird der ausgegebene Titel das `<title>`‑Tag dieser Seite widerspiegeln – vorausgesetzt, die Seite erlaubt anonymen Zugriff. ---- - ## Praktische Tipps & häufige Stolperfallen -- **Netzwerk‑Timeouts:** Standardmäßig verwendet die Sandbox ein Timeout von 60 Sekunden. Wenn Sie langsamere Seiten ansteuern, rufen Sie vor dem Erstellen der Sandbox `sandboxOptions.setTimeout(120_000);` auf. -- **Java Security Manager:** Beim Ausführen in einer eingeschränkten JVM stellen Sie sicher, dass die `java.security.policy` `java.net.SocketPermission` für die Ziel‑Domain gewährt. -- **Mehrere Seiten:** Wenn Sie viele URLs verarbeiten müssen, verwenden Sie eine einzelne `Sandbox`‑Instanz erneut; erstellen Sie einfach für jede URL ein neues `HtmlDocument` und entsorgen Sie es anschließend. Das reduziert den Start‑Overhead. -- **Debugging:** Setzen Sie `sandboxOptions.setDebugMode(true);`, um ausführliche Konsolen‑Logs zu erhalten, die Ihnen helfen können, zu erkennen, warum eine Seite nicht geladen wurde. +- **Netzwerk‑Timeouts:** Standardmäßig verwendet der Sandbox ein Timeout von 60 Sekunden. Bei langsameren Seiten rufen Sie `sandboxOptions.setTimeout(120_000);` vor dem Erstellen des Sandbox auf. +- **Java‑Security‑Manager:** Wenn Sie in einer eingeschränkten JVM laufen, stellen Sie sicher, dass die `java.security.policy` `java.net.SocketPermission` für die Ziel‑Domain gewährt. +- **Verarbeitung mehrerer Seiten:** Wiederverwenden Sie eine einzelne `Sandbox`‑Instanz; erstellen Sie einfach für jede URL ein neues `HtmlDocument` und entsorgen Sie es danach. Das reduziert den Start‑Overhead. +- **Debugging:** Setzen Sie `sandboxOptions.setDebugMode(true);`, um ausführliche Konsolen‑Logs zu erhalten, die Ihnen helfen, zu erkennen, warum eine Seite nicht geladen werden konnte. ---- +## Häufig gestellte Fragen + +**F: Kann ich diesen Sandbox in einer headless CI‑Pipeline verwenden?** +A: Ja. Der Sandbox läuft ohne sichtbare UI und kann auf jedem Server ausgeführt werden, der Java 8+ unterstützt. + +**F: Unterstützt der Sandbox die Ausführung von JavaScript?** +A: Absolut. Er nutzt Chromium im Hintergrund, sodass modernes JavaScript, einschließlich ES6‑Features, korrekt ausgeführt wird. -## Fazit +**F: Wie groß kann eine Seite sein, die der Sandbox verarbeiten kann?** +A: Die Engine kann Seiten bis zu 200 MB rendern, begrenzt nur durch den verfügbaren Arbeitsspeicher des Host‑Systems. -Wir haben gerade **eine Aspose HTML sandbox** in Java **create Aspose HTML sandbox** erstellt, sie für einen vorhersehbaren Viewport konfiguriert, eine externe Seite geladen und gezeigt, wie man **retrieve page title java** sicher und effizient abruft. Der gesamte Ablauf – von der Options‑Einrichtung bis zur Ressourcen‑Bereinigung – ist in einem kompakten, wiederverwendbaren Snippet gekapselt. +**F: Was, wenn die Zielseite automatisierte Anfragen blockiert?** +A: Sie können den `User-Agent`‑String in `SandboxOptions` anpassen oder Cookies über `HtmlLoadOptions` bereitstellen, um einen regulären Browser zu simulieren. -Jetzt können Sie diese Grundlage erweitern: Meta‑Tags scrapen, Screenshots erfassen oder sogar JavaScript innerhalb der Sandbox ausführen. Die Möglichkeiten sind so breit wie das Web selbst. +**F: Gibt es eine Möglichkeit, einen Screenshot der geladenen Seite zu erstellen?** +A: Ja. Nach dem Laden des Dokuments rufen Sie `document.save("snapshot.png", SaveFormat.Png);` auf, um ein PNG‑Bild der gerenderten Seite zu exportieren. -Haben Sie Fragen zum Umgang mit Authentifizierung, Proxy‑Einstellungen oder zum Rendern von PDFs aus der Sandbox? Hinterlassen Sie einen Kommentar, und wir erkunden gemeinsam diese fortgeschrittenen Szenarien. Viel Spaß beim Coden! -![Screenshot of Java code creating an Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "create aspose html sandbox example") + +**Zuletzt aktualisiert:** 2026-09-03 +**Getestet mit:** Aspose.HTML für Java 23.1 +**Autor:** Aspose + +## Verwandte Tutorials + +- [How To Use Sandbox For Html To Pdf Java Step By Step Guide](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [Create PDF from HTML using Aspose.HTML for Java – Sandbox](/html/java/configuring-environment/implement-sandboxing/) +- [Enable Script Execution In Java Complete Aspose Html Guide](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-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/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/greek/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index 4b45ee4459..e86bdc11c6 100644 --- a/html/greek/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/greek/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,27 +1,52 @@ --- category: general -date: 2026-01-04 -description: Δημιουργήστε ένα sandbox Aspose HTML σε Java και μάθετε πώς να ανακτήσετε - τον τίτλο της σελίδας σε Java με ένα βήμα‑βήμα παράδειγμα. Συμπεριλαμβάνεται γρήγορος, - εκτελέσιμος κώδικας. +date: 2026-09-03 +description: Πώς να δημιουργήσετε Aspose sandbox java και να ανακτήσετε τον τίτλο + της σελίδας java με καθαρή, απομονωμένη φόρτωση HTML. Οδηγός βήμα‑βήμα με εκτελέσιμο + κώδικα. draft: false keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title -language: el -og_description: Δημιουργήστε sandbox Aspose HTML σε Java και ανακτήστε άμεσα τον τίτλο - της σελίδας Java. Ακολουθήστε αυτόν τον λεπτομερή οδηγό για μια καθαρή, απομονωμένη - φόρτωση HTML. -og_title: Δημιουργία Aspose HTML Sandbox – Εγχειρίδιο Java +lastmod: 2026-09-03 +og_description: Μάθετε πώς να δημιουργήσετε ένα Aspose sandbox σε Java και να ανακτήσετε + αμέσως τον τίτλο της σελίδας java. Λεπτομερή βήματα, βέλτιστες πρακτικές και πλήρης + κώδικας παραδείγματος. +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: Πώς να δημιουργήσετε Aspose sandbox java – πλήρης οδηγός +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: Δημιουργία Aspose HTML Sandbox – Πλήρης Οδηγός Java +title: Πώς να δημιουργήσετε Aspose sandbox java – πλήρης οδηγός url: /el/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -29,26 +54,35 @@ url: /el/java/configuring-environment/create-aspose-html-sandbox-complete-java-g {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Δημιουργία Aspose HTML Sandbox – Πλήρης Οδηγός Java +# Πώς να δημιουργήσετε Aspose sandbox java – πλήρης οδηγός -Έχετε ποτέ χρειαστεί να **create Aspose HTML sandbox** αλλά δεν ήσασταν σίγουροι πώς να διατηρήσετε τη φορτωμένη σελίδα απομονωμένη από το κύριο JVM σας; Ίσως να δημιουργείτε έναν web‑scraper, ένα testing harness, ή απλώς θέλετε να πειραματιστείτε με απομακρυσμένες σελίδες χωρίς να διακινδυνεύσετε ανεπιθύμητες επιδράσεις. Σε αυτό το tutorial θα περάσουμε βήμα‑βήμα από αυτό, και επίσης θα σας δείξουμε **how to retrieve page title java** από μέσα στο sandbox. +Ever needed to **create Aspose HTML sandbox** but weren’t sure how to keep the loaded page isolated from your main JVM? Maybe you’re building a web‑scraper, a testing harness, or just want to experiment with remote pages without risking side‑effects. In this tutorial we’ll walk through exactly that, and we’ll also show you **how to retrieve page title java** from inside the sandbox. -Η λύση είναι αρκετά απλή: διαμορφώστε ένα αντικείμενο `SandboxOptions`, δημιουργήστε ένα `Sandbox`, φορτώστε ένα εξωτερικό URL με `HtmlDocument`, διαβάστε τον τίτλο και, τέλος, καθαρίστε τα πάντα. Στο τέλος θα έχετε ένα αυτόνομο απόσπασμα που μπορείτε να ενσωματώσετε σε οποιοδήποτε έργο Java που χρησιμοποιεί Aspose.HTML for Java 23.1 (ή νεότερο). +The solution is pretty straightforward: configure a `SandboxOptions` object, spin up a `Sandbox`, load an external URL with `HtmlDocument`, read the title, and finally clean everything up. By the end you’ll have a self‑contained snippet you can drop into any Java project that uses Aspose.HTML for Java 23.1 (or newer). -## Τι Θα Μάθετε +## Σύντομες απαντήσεις +- **What is an Aspose sandbox?** Είναι ένα απομονωμένο περιβάλλον βασισμένο σε Chromium που εκτελείται μέσα στη JVM σας χωρίς να αγγίζει το σύστημα αρχείων. +- **Why use a sandbox for page title extraction?** Εγγυάται ότι τα εξωτερικά scripts δεν μπορούν να επηρεάσουν την κατάσταση ή τη μνήμη της εφαρμογής σας. +- **Which Java version is required?** Java 8 ή νεότερη· η βιβλιοθήκη λειτουργεί επίσης με Java 11, 17 και μεταγενέστερες. +- **Do I need a license?** Μια δωρεάν δοκιμαστική άδεια είναι επαρκής για ανάπτυξη· απαιτείται εμπορική άδεια για παραγωγή. +- **How many lines of code are needed?** Λιγότερες από 30 γραμμές για τη βασική λογική, συν προαιρετικό κώδικα ρύθμισης. -- Πώς να **create Aspose HTML sandbox** με προσαρμοσμένες ρυθμίσεις viewport και user‑agent. -- Τα ακριβή βήματα για **retrieve page title java** από απομακρυσμένη σελίδα ενώ παραμένετε ασφαλώς μέσα στο sandbox. -- Κοινά προβλήματα (όπως η παράλειψη διαγραφής πόρων) και συμβουλές βέλτιστων πρακτικών που διατηρούν το αποτύπωμα μνήμης χαμηλό. -- Ένα πλήρες, έτοιμο‑για‑εκτέλεση πρόγραμμα Java που μπορείτε να αντιγράψετε‑επικολλήσετε, να μεταγλωττίσετε και να εκτελέσετε. +## Τι είναι το create aspose sandbox java; +`Sandbox` είναι η ελαφριά, απομονωμένη μηχανή περιήγησης του Aspose.HTML που εκτελείται μέσα στη διαδικασία Java. Παρέχει ένα ασφαλές κοντέινερ όπου μπορείτε να φορτώσετε απομακρυσμένο HTML, να εκτελέσετε JavaScript και να αλληλεπιδράσετε με το DOM χωρίς να εκθέτετε το περιβάλλον υποδοχής. -> **Prerequisites** – Χρειάζεστε μια έγκυρη άδεια Aspose.HTML for Java (λειτουργεί η δωρεάν δοκιμή) και εγκατεστημένο Java 8 ή νεότερο. Δεν απαιτούνται πρόσθετες βιβλιοθήκες τρίτων. +## Γιατί να χρησιμοποιήσετε sandbox όταν ανακτάτε τον τίτλο της σελίδας java; +Το Aspose.HTML υποστηρίζει **50+ μορφές εισόδου και εξόδου** και μπορεί να αποδώσει έγγραφα πολλαπλών εκατοντάδων σελίδων χωρίς να φορτώνει ολόκληρο το αρχείο στη μνήμη. Η χρήση sandbox προσθέτει ένα επιπλέον επίπεδο ασφαλείας, εξασφαλίζοντας ότι οποιοδήποτε κακόβουλο script στη σελίδα-στόχο δεν μπορεί να διαφύγει από το κοντέινερ. Αυτή η προσέγγιση μειώνει τον κίνδυνο διαρροών μνήμης και προστατεύει τη JVM σας από ανεπιθύμητες επιδράσεις. ---- +## Προαπαιτούμενα +- Άδεια Aspose.HTML for Java έγκυρη (η δοκιμαστική λειτουργεί για δοκιμές). +- Java 8 ή νεότερη εγκατεστημένη στο μηχάνημά σας. +- Εργαλείο κατασκευής Maven ή Gradle για διαχείριση εξαρτήσεων. + +> **Pro tip:** Διατηρήστε την έκδοση της βιβλιοθήκης ευθυγραμμισμένη με τις επίσημες σημειώσεις έκδοσης του Aspose· οι νεότερες εκδόσεις περιλαμβάνουν διορθώσεις ασφαλείας που είναι κρίσιμες όταν φορτώνετε μη αξιόπιστο περιεχόμενο. -## Βήμα 1: Ρύθμιση του Έργου σας +## Βήμα 1: ρυθμίστε το έργο σας -Πριν βουτήξουμε στον κώδικα, βεβαιωθείτε ότι το `pom.xml` (Maven) ή το αρχείο Gradle περιλαμβάνει την εξάρτηση Aspose.HTML: +Πριν βυθιστούμε στον κώδικα, βεβαιωθείτε ότι το `pom.xml` (Maven) ή το αρχείο Gradle περιλαμβάνει την εξάρτηση Aspose.HTML: ```xml <!-- Maven --> @@ -65,13 +99,12 @@ url: /el/java/configuring-environment/create-aspose-html-sandbox-complete-java-g implementation 'com.aspose:aspose-html:23.1' ``` -> **Pro tip:** Διατηρήστε την έκδοση της βιβλιοθήκης συγχρονισμένη με τις επίσημες σημειώσεις κυκλοφορίας της Aspose· οι νεότερες εκδόσεις προσθέτουν διορθώσεις ασφαλείας που είναι ιδιαίτερα σημαντικές κατά τη φόρτωση εξωτερικού περιεχομένου. - ---- +> **Pro tip:** Διατηρήστε την έκδοση της βιβλιοθήκης σε συγχρονισμό με τις επίσημες σημειώσεις έκδοσης του Aspose· οι νεότερες εκδόσεις προσθέτουν διορθώσεις ασφαλείας που είναι ιδιαίτερα σημαντικές όταν φορτώνετε εξωτερικό περιεχόμενο. -## Διαμόρφωση Sandbox Options (retrieve page title java) +## Πώς να διαμορφώσετε τις επιλογές sandbox; (retrieve page title java) -Το πρώτο πραγματικό βήμα στην **creating an Aspose HTML sandbox** είναι να αποφασίσετε πώς θα συμπεριφέρεται ο εικονικός περιηγητής. Μπορείτε να μιμηθείτε ένα desktop, μια κινητή συσκευή ή ακόμη και ένα προσαρμοσμένο μέγεθος οθόνης. +Το πρώτο πραγματικό βήμα στη **δημιουργία ενός Aspose HTML sandbox** είναι να αποφασίσετε πώς πρέπει να συμπεριφέρεται ο εικονικός περιηγητής. Μπορείτε να μιμηθείτε ένα desktop, μια κινητή συσκευή ή ακόμη και ένα προσαρμοσμένο μέγεθος οθόνης. +`SandboxOptions` διαμορφώνει τη συμπεριφορά του sandbox, όπως το μέγεθος του viewport, τη συμβολοσειρά user‑agent και τις τιμές timeout. Σας επιτρέπει να ελέγξετε πώς αποδίδεται η σελίδα και ποιοι πόροι επιτρέπονται. ```java import com.aspose.html.sandbox.SandboxOptions; @@ -83,13 +116,12 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -Γιατί είναι σημαντικό αυτό; Το μέγεθος του viewport επηρεάζει τα CSS media queries, ενώ το user‑agent μπορεί να επηρεάσει τη διαπραγμάτευση περιεχομένου από την πλευρά του διακομιστή. Ορίζοντάς τα ρητά, διασφαλίζετε ότι η σελίδα από την οποία αργότερα **retrieve page title java** θα αποδοθεί ακριβώς όπως περιμένετε. - ---- +Γιατί είναι σημαντικό αυτό; Το μέγεθος του viewport επηρεάζει τα CSS media queries, ενώ το user‑agent μπορεί να επηρεάσει τη διαπραγμάτευση περιεχομένου από τον διακομιστή. Ορίζοντάς τα ρητά, διασφαλίζετε ότι η σελίδα από την οποία αργότερα **retrieve page title java** θα αποδοθεί ακριβώς όπως περιμένετε. -## Δημιουργία του Sandbox Instance +## Πώς να δημιουργήσετε το στιγμιότυπο sandbox; -Τώρα που έχουμε τις επιλογές μας, μπορούμε να δημιουργήσουμε το sandbox. +Τώρα που έχουμε τις επιλογές μας, μπορούμε να δημιουργήσουμε το sandbox. +`Sandbox` είναι το απομονωμένο στιγμιότυπο της μηχανής Chromium που εκτελείται μέσα στη JVM. Δημιουργεί ένα ασφαλές περιβάλλον όπου το HTML μπορεί να φορτωθεί και να εκτελεστεί χωρίς να αγγίζει το σύστημα αρχείων του κεντρικού υπολογιστή. ```java import com.aspose.html.sandbox.Sandbox; @@ -98,13 +130,12 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -Σκεφτείτε το `Sandbox` ως μια ελαφριά, απομονωμένη μηχανή Chromium που ζει μέσα στη διαδικασία Java σας. Δεν αγγίζει το σύστημα αρχείων εκτός αν το υποδείξετε ρητά, κάτι που το καθιστά ιδανικό για ασφαλή scraping. +Σκεφτείτε το `Sandbox` ως μια ελαφριά, απομονωμένη μηχανή Chromium που ζει μέσα στη διαδικασία Java. Δεν αγγίζει το σύστημα αρχείων εκτός εάν το υποδείξετε ρητά, κάτι που το καθιστά ιδανικό για ασφαλή scraping. ---- - -## Φόρτωση Εξωτερικής Σελίδας Μέσα στο Sandbox +## Πώς να φορτώσετε μια εξωτερική σελίδα μέσα στο sandbox; -Με το sandbox έτοιμο, η φόρτωση μιας απομακρυσμένης σελίδας είναι τόσο απλή όσο η μεταβίβαση του URL και της παρουσίας sandbox στο `HtmlDocument`. +Με το sandbox έτοιμο, η φόρτωση μιας απομακρυσμένης σελίδας είναι τόσο απλή όσο η μεταβίβαση του URL και του στιγμιότυπου sandbox στο `HtmlDocument`. +`HtmlDocument` αντιπροσωπεύει μια σελίδα HTML που φορτώνεται στο sandbox, παρέχοντας πρόσβαση στο DOM, δυνατότητες απόδοσης και εκτέλεση JavaScript. ```java import com.aspose.html.HtmlDocument; @@ -113,13 +144,12 @@ import com.aspose.html.HtmlDocument; HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); ``` -> **Edge case:** Αν ο στόχος απαιτεί έλεγχο ταυτότητας ή ανακατευθύνσεις, μπορείτε να προ‑ρυθμίσετε τους χειριστές `HttpClient` και να τους περάσετε μέσω `HtmlLoadOptions`. Αυτό υπερβαίνει το πεδίο εφαρμογής αυτού του σύντομου οδηγού, αλλά το API το υποστηρίζει. +> **Edge case:** Εάν ο στόχος απαιτεί έλεγχο ταυτότητας ή ανακατευθύνσεις, μπορείτε να προ‑ρυθμίσετε χειριστές `HttpClient` και να τους περάσετε μέσω `HtmlLoadOptions`. Αυτό είναι εκτός του πλαισίου αυτού του γρήγορου οδηγού, αλλά το API το υποστηρίζει. ---- +## Πώς να αποκτήσετε τον τίτλο της σελίδας; (retrieve page title java) -## Πρόσβαση στον Τίτλο Σελίδας – retrieve page title java - -Τώρα έρχεται το μέρος που ζητήσατε: εξαγωγή του τίτλου της σελίδας ενώ παραμένετε μέσα στο sandbox. Η κλάση `HtmlDocument` εκθέτει τη μέθοδο `getTitle()` που διαβάζει το στοιχείο `<title>`. +Τώρα έρχεται το μέρος που ζητήσατε: η εξαγωγή του τίτλου της σελίδας ενώ παραμένετε μέσα στο sandbox. Η κλάση `HtmlDocument` εκθέτει τη μέθοδο `getTitle()` που διαβάζει το στοιχείο `<title>`. +`getTitle()` επιστρέφει το κείμενο του στοιχείου `<title>` της σελίδας, παρέχοντάς σας έναν απλό τρόπο να επαληθεύσετε ότι η σελίδα φορτώθηκε σωστά. ```java // Step 4 – read and print the title @@ -132,13 +162,12 @@ System.out.println("Title inside sandbox: " + htmlDoc.getTitle()); Title inside sandbox: Example Domain ``` -Αυτή η γραμμή αποδεικνύει ότι δημιουργήσαμε επιτυχώς **created an Aspose HTML sandbox**, φορτώσαμε μια απομακρυσμένη σελίδα και **retrieved page title java** χωρίς ποτέ να βγούμε από το απομονωμένο περιβάλλον. - ---- +Αυτή η γραμμή αποδεικνύει ότι δημιουργήσαμε επιτυχώς **ένα Aspose HTML sandbox**, φορτώσαμε μια απομακρυσμένη σελίδα και **ανακτήσαμε τον τίτλο της σελίδας java** χωρίς ποτέ να βγούμε από το απομονωμένο περιβάλλον. -## Καθαρισμός Πόρων +## Πώς να καθαρίσετε τους πόρους; -Τα αντικείμενα Aspose.HTML διακρατούν εγγενείς πόρους, επομένως είναι κρίσιμο να τα απελευθερώνετε ρητά. Η παράλειψη μπορεί να οδηγήσει σε διαρροές μνήμης, ειδικά όταν επεξεργάζεστε πολλές σελίδες σε βρόχο. +Τα αντικείμενα Aspose.HTML διατηρούν εγγενείς πόρους, επομένως είναι κρίσιμο να τα απελευθερώνετε ρητά. Η παράλειψη μπορεί να οδηγήσει σε διαρροές μνήμης, ειδικά όταν επεξεργάζεστε πολλές σελίδες σε βρόχο. +`dispose()` απελευθερώνει τους εγγενείς πόρους που κρατούν τα αντικείμενα Aspose.HTML, αποτρέποντας διαρροές μνήμης και διασφαλίζοντας ότι η JVM μπορεί να ανακτήσει τη μνήμη άμεσα. ```java // Step 5 – release native resources @@ -146,13 +175,11 @@ htmlDoc.dispose(); sandboxInstance.dispose(); ``` -> **Why dispose?** Η υποκείμενη μηχανή Chromium εκχωρεί εγγενή μνήμη και χειριστές αρχείων. Καλώντας `dispose()` λέτε στο JVM να ελευθερώσει αυτά αμέσως αντί να περιμένει τους τελικούς καθαριστές. - ---- +> **Why dispose?** Η υποκείμενη μηχανή Chromium εκχωρεί εγγενή μνήμη και χειριστές αρχείων. Η κλήση του `dispose()` λέει στη JVM να ελευθερώσει αυτά αμέσως αντί να περιμένει τους τελικούς καθαριστές. -## Πλήρες Παράδειγμα Λειτουργίας +## Πλήρες λειτουργικό παράδειγμα -Παρακάτω βρίσκεται το πλήρες πρόγραμμα που μπορείτε να αντιγράψετε σε ένα αρχείο με όνομα `SandboxExample.java`. Μεταγλωττίστε το με `javac` και τρέξτε το με `java`. Όλα τα βήματα είναι στη σωστή σειρά και κάθε εισαγωγή (import) αναγράφεται. +Παρακάτω είναι το πλήρες πρόγραμμα που μπορείτε να αντιγράψετε σε ένα αρχείο με όνομα `SandboxExample.java`. Συγκεντρώστε με `javac` και εκτελέστε με `java`. Όλα τα βήματα είναι στη σωστή σειρά και κάθε εισαγωγή είναι καταχωρημένη. ```java import com.aspose.html.HtmlDocument; @@ -184,36 +211,54 @@ public class SandboxExample { } ``` -### Αναμενόμενη Έξοδος +![Στιγμιότυπο κώδικα Java που δημιουργεί ένα Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "παράδειγμα δημιουργίας aspose html sandbox") + +### Αναμενόμενη έξοδος ``` Title inside sandbox: Example Domain ``` -Αν αντικαταστήσετε το `https://example.com` με άλλο URL, ο εκτυπωμένος τίτλος θα αντανακλά το `<title>` tag εκείνης της σελίδας — υπό την προϋπόθεση ότι ο ιστότοπος επιτρέπει ανώνυμη πρόσβαση. +Αν αντικαταστήσετε το `https://example.com` με άλλο URL, ο εκτυπωμένος τίτλος θα αντανακλά το `<title>` tag της σελίδας—εφόσον ο ιστότοπος επιτρέπει ανώνυμη πρόσβαση. ---- +## Πρακτικές συμβουλές & κοινά προβλήματα -## Πρακτικές Συμβουλές & Συνηθισμένα Πιθανά Προβλήματα +- **Network timeouts:** Από προεπιλογή το sandbox χρησιμοποιεί timeout 60 δευτερολέπτων. Αν αντιμετωπίζετε πιο αργούς ιστότοπους, καλέστε `sandboxOptions.setTimeout(120_000);` πριν δημιουργήσετε το sandbox. +- **Java security manager:** Όταν εκτελείται σε περιορισμένη JVM, βεβαιωθείτε ότι το `java.security.policy` χορηγεί `java.net.SocketPermission` για τον στόχο domain. +- **Processing multiple pages:** Επαναχρησιμοποιήστε ένα μόνο στιγμιότυπο `Sandbox`; απλώς δημιουργήστε ένα νέο `HtmlDocument` για κάθε URL και απελευθερώστε το μετά. Αυτό μειώνει το κόστος εκκίνησης. +- **Debugging:** Ορίστε `sandboxOptions.setDebugMode(true);` για να λάβετε αναλυτικά logs στην κονσόλα που μπορούν να σας βοηθήσουν να εντοπίσετε γιατί μια σελίδα δεν φορτώθηκε. -- **Network Timeouts:** Από προεπιλογή το sandbox χρησιμοποιεί χρονικό όριο 60 δευτερολέπτων. Αν αντιμετωπίζετε πιο αργούς ιστότοπους, καλέστε `sandboxOptions.setTimeout(120_000);` πριν δημιουργήσετε το sandbox. -- **Java Security Manager:** Όταν εκτελείται μέσα σε περιορισμένο JVM, βεβαιωθείτε ότι το `java.security.policy` χορηγεί `java.net.SocketPermission` για τον στόχο domain. -- **Multiple Pages:** Αν χρειάζεται να επεξεργαστείτε πολλά URLs, επαναχρησιμοποιήστε μια μόνο παρουσία `Sandbox`; απλώς δημιουργήστε ένα νέο `HtmlDocument` για κάθε URL και απελευθερώστε το μετά. Αυτό μειώνει το κόστος εκκίνησης. -- **Debugging:** Ορίστε `sandboxOptions.setDebugMode(true);` για να λάβετε αναλυτικά logs στην κονσόλα που μπορούν να σας βοηθήσουν να εντοπίσετε γιατί μια σελίδα απέτυχε να φορτωθεί. +## Συχνές ερωτήσεις ---- +**Q: Μπορώ να χρησιμοποιήσω αυτό το sandbox σε μια headless CI pipeline;** +A: Ναι. Το sandbox εκτελείται χωρίς ορατό UI και μπορεί να εκτελεστεί σε οποιονδήποτε διακομιστή που υποστηρίζει Java 8+. -## Συμπέρασμα +**Q: Υποστηρίζει το sandbox εκτέλεση JavaScript;** +A: Απόλυτα. Χρησιμοποιεί Chromium στο παρασκήνιο, έτσι ώστε το σύγχρονο JavaScript, συμπεριλαμβανομένων των χαρακτηριστικών ES6, να εκτελείται σωστά. -Μόλις **created an Aspose HTML sandbox** σε Java, το διαμορφώσαμε για προβλέψιμο viewport, φορτώσαμε μια εξωτερική σελίδα και δείξαμε πώς να **retrieve page title java** με ασφαλή και αποδοτικό τρόπο. Η πλήρης ροή — από τη ρύθμιση επιλογών μέχρι τον καθαρισμό πόρων — είναι ενσωματωμένη σε ένα σύντομο, επαναχρησιμοποιήσιμο απόσπασμα. +**Q: Πόσο μεγάλη σελίδα μπορεί να χειριστεί το sandbox;** +A: Η μηχανή μπορεί να αποδώσει σελίδες έως 200 MB, περιοριζόμενη μόνο από τη μνήμη του κεντρικού μηχανήματος. -Τώρα μπορείτε να πάρετε αυτό το υπόβαθρο και να το επεκτείνετε: να κάνετε scrape meta tags, να καταγράψετε screenshots, ή ακόμη και να εκτελέσετε JavaScript μέσα στο sandbox. Οι δυνατότητες είναι τόσο μεγάλες όσο το ίδιο το web. +**Q: Τι γίνεται αν ο στόχος μπλοκάρει αυτοματοποιημένα αιτήματα;** +A: Μπορείτε να προσαρμόσετε τη συμβολοσειρά `User-Agent` στο `SandboxOptions` ή να παρέχετε cookies μέσω `HtmlLoadOptions` για να μιμηθείτε έναν κανονικό περιηγητή. -Έχετε ερωτήσεις σχετικά με τη διαχείριση ελέγχου ταυτότητας, ρυθμίσεων proxy, ή τη δημιουργία PDF από το sandbox; Αφήστε ένα σχόλιο και θα εξερευνήσουμε αυτά τα προχωρημένα σενάρια μαζί. Καλή προγραμματιστική! +**Q: Υπάρχει τρόπος να καταγράψετε στιγμιότυπο της φορτωμένης σελίδας;** +A: Ναι. Μετά τη φόρτωση του εγγράφου, καλέστε `document.save("snapshot.png", SaveFormat.Png);` για να εξάγετε μια εικόνα PNG της αποδομένης σελίδας. + +**Τελευταία ενημέρωση:** 2026-09-03 +**Δοκιμή με:** Aspose.HTML for Java 23.1 +**Συγγραφέας:** Aspose + +## Σχετικά μαθήματα + +- [Πώς να χρησιμοποιήσετε Sandbox για Html σε Pdf Java – Οδηγός βήμα προς βήμα](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [Δημιουργία PDF από HTML χρησιμοποιώντας Aspose.HTML for Java – Sandbox](/html/java/configuring-environment/implement-sandboxing/) +- [Ενεργοποίηση εκτέλεσης script σε Java – Πλήρης οδηγός Aspose Html](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-guide/) -![Screenshot of Java code creating an Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "create aspose html sandbox 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/hindi/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/hindi/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index 8b6e9a121e..7434737688 100644 --- a/html/hindi/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/hindi/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,25 +1,50 @@ --- category: general -date: 2026-01-04 -description: जावा में Aspose HTML सैंडबॉक्स बनाएं और चरण‑दर‑चरण उदाहरण के साथ पेज - शीर्षक कैसे प्राप्त करें सीखें। त्वरित, चलाने योग्य कोड शामिल है। +date: 2026-09-03 +description: Aspose sandbox java कैसे बनाएं और clean, isolated HTML load के साथ page + title java प्राप्त करें। Step‑by‑step guide जिसमें runnable code है। draft: false keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title -language: hi -og_description: जावा में Aspose HTML सैंडबॉक्स बनाएं और तुरंत पेज शीर्षक प्राप्त करें। - साफ़, अलग-थलग HTML लोड के लिए इस विस्तृत गाइड का पालन करें। -og_title: Aspose HTML सैंडबॉक्स बनाएं – जावा ट्यूटोरियल +lastmod: 2026-09-03 +og_description: Aspose sandbox in Java कैसे बनाएं और page title java तुरंत प्राप्त + करें। विस्तृत चरण, सर्वोत्तम प्रथाएँ, और पूर्ण उदाहरण कोड। +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: Aspose sandbox java कैसे बनाएं – पूर्ण गाइड +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: Aspose HTML सैंडबॉक्स बनाएं – पूर्ण जावा गाइड +title: Aspose sandbox java कैसे बनाएं – पूर्ण गाइड url: /hi/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -27,24 +52,35 @@ url: /hi/java/configuring-environment/create-aspose-html-sandbox-complete-java-g {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Aspose HTML Sandbox बनाएं – पूर्ण Java गाइड +# Aspose sandbox java कैसे बनाएं – पूर्ण गाइड -क्या आपको कभी **create Aspose HTML sandbox** बनाने की ज़रूरत पड़ी है लेकिन यह नहीं पता था कि लोड किए गए पेज को आपके मुख्य JVM से अलग कैसे रखें? शायद आप एक वेब‑स्क्रैपर, एक टेस्टिंग हार्नेस बना रहे हैं, या बस रिमोट पेजों के साथ प्रयोग करना चाहते हैं बिना किसी साइड‑इफ़ेक्ट के जोखिम के। इस ट्यूटोरियल में हम ठीक यही करेंगे, और हम आपको **how to retrieve page title java** sandbox के अंदर से प्राप्त करने का तरीका भी दिखाएंगे। +क्या आपको कभी **Aspose HTML sandbox** बनाने की ज़रूरत पड़ी है लेकिन यह नहीं पता था कि लोड किए गए पेज को आपके मुख्य JVM से अलग कैसे रखें? शायद आप एक वेब‑स्क्रैपर, टेस्टिंग हार्नेस बना रहे हैं, या सिर्फ रिमोट पेज के साथ प्रयोग करना चाहते हैं बिना किसी साइड‑इफ़ेक्ट के जोखिम के। इस ट्यूटोरियल में हम यही दिखाएंगे, और साथ ही आपको **page title java प्राप्त करने का तरीका** सैंडबॉक्स के अंदर से दिखाएंगे। -समाधान बहुत सरल है: एक `SandboxOptions` ऑब्जेक्ट कॉन्फ़िगर करें, एक `Sandbox` बनाएं, `HtmlDocument` के साथ एक बाहरी URL लोड करें, शीर्षक पढ़ें, और अंत में सब कुछ साफ़ करें। अंत तक आपके पास एक स्व‑निहित स्निपेट होगा जिसे आप किसी भी Java प्रोजेक्ट में डाल सकते हैं जो Aspose.HTML for Java 23.1 (या नया) का उपयोग करता है। +समाधान काफी सरल है: एक `SandboxOptions` ऑब्जेक्ट को कॉन्फ़िगर करें, एक `Sandbox` बनाएं, `HtmlDocument` के साथ बाहरी URL लोड करें, शीर्षक पढ़ें, और अंत में सब कुछ साफ़ करें। अंत तक आपके पास एक स्व‑निहित स्निपेट होगा जिसे आप किसी भी Java प्रोजेक्ट में डाल सकते हैं जो Aspose.HTML for Java 23.1 (या नया) का उपयोग करता है। -## आप क्या सीखेंगे +## त्वरित उत्तर +- **What is an Aspose sandbox?** यह एक अलग‑थलग Chromium‑आधारित वातावरण है जो आपके JVM के अंदर चलता है बिना फ़ाइल सिस्टम को छुए। +- **Why use a sandbox for page title extraction?** यह सुनिश्चित करता है कि बाहरी स्क्रिप्ट आपके एप्लिकेशन की स्थिति या मेमोरी को प्रभावित नहीं कर सकती। +- **Which Java version is required?** Java 8 या नया; लाइब्रेरी Java 11, 17, और बाद के संस्करणों के साथ भी काम करती है। +- **Do I need a license?** विकास के लिए एक मुफ्त ट्रायल लाइसेंस पर्याप्त है; उत्पादन के लिए एक व्यावसायिक लाइसेंस आवश्यक है। +- **How many lines of code are needed?** कोर लॉजिक के लिए 30 से कम लाइनों की आवश्यकता है, साथ में वैकल्पिक सेटअप कोड। -- कैसे **create Aspose HTML sandbox** को कस्टम viewport और user‑agent सेटिंग्स के साथ बनाएं। -- एक रिमोट पेज से **retrieve page title java** करने के सटीक चरण, जबकि sandbox के अंदर सुरक्षित रहें। -- सामान्य pitfalls (जैसे संसाधनों को डिस्पोज़ करना भूल जाना) और best‑practice टिप्स जो आपकी मेमोरी फुटप्रिंट को कम रखते हैं। -- एक पूर्ण, ready‑to‑run Java प्रोग्राम जिसे आप copy‑paste, compile, और execute कर सकते हैं। +## create aspose sandbox java क्या है? +`Sandbox` Aspose.HTML का हल्का, अलग‑थलग ब्राउज़र इंजन है जो Java प्रोसेस के अंदर चलता है। यह एक सुरक्षित कंटेनर प्रदान करता है जहाँ आप रिमोट HTML लोड कर सकते हैं, JavaScript चला सकते हैं, और DOM के साथ इंटरैक्ट कर सकते हैं बिना होस्ट वातावरण को उजागर किए। -> **Prerequisites** – आपको एक वैध Aspose.HTML for Java लाइसेंस (फ्री ट्रायल काम करता है) और Java 8 या नया स्थापित होना चाहिए। कोई अतिरिक्त थर्ड‑पार्टी लाइब्रेरीज़ आवश्यक नहीं हैं। +## क्यों उपयोग करें sandbox जब page title java प्राप्त किया जा रहा हो? +Aspose.HTML **50+ इनपुट और आउटपुट फॉर्मेट** को सपोर्ट करता है और कई सौ पेज वाले दस्तावेज़ों को बिना पूरी फ़ाइल को मेमोरी में लोड किए रेंडर कर सकता है। sandbox का उपयोग अतिरिक्त सुरक्षा परत जोड़ता है, जिससे लक्ष्य पेज पर कोई भी दुर्भावनापूर्ण स्क्रिप्ट कंटेनर से बाहर नहीं निकल सकती। यह मेमोरी लीक के जोखिम को कम करता है और आपके JVM को अनचाहे साइड‑इफ़ेक्ट से बचाता है। -## चरण 1: अपने प्रोजेक्ट को सेट अप करें +## पूर्वापेक्षाएँ +- एक वैध Aspose.HTML for Java लाइसेंस (ट्रायल परीक्षण के लिए पर्याप्त)। +- Java 8 या नया आपके विकास मशीन पर स्थापित हो। +- Maven या Gradle बिल्ड टूल ताकि निर्भरताएँ प्रबंधित की जा सकें। -कोड में डुबकी लगाने से पहले, सुनिश्चित करें कि आपका `pom.xml` (Maven) या Gradle फ़ाइल Aspose.HTML डिपेंडेंसी शामिल करती है: +> **Pro tip:** लाइब्रेरी संस्करण को आधिकारिक Aspose रिलीज़ नोट्स के साथ संरेखित रखें; नए रिलीज़ में सुरक्षा पैच होते हैं जो अविश्वसनीय सामग्री लोड करने पर महत्वपूर्ण होते हैं। + +## चरण 1: अपना प्रोजेक्ट सेट अप करें + +कोड में डुबकी लगाने से पहले सुनिश्चित करें कि आपका `pom.xml` (Maven) या Gradle फ़ाइल Aspose.HTML निर्भरता शामिल करती है: ```xml <!-- Maven --> @@ -55,17 +91,18 @@ url: /hi/java/configuring-environment/create-aspose-html-sandbox-complete-java-g </dependency> ``` -यदि आप Gradle का उपयोग कर रहे हैं: +यदि आप Gradle उपयोग कर रहे हैं: ```groovy implementation 'com.aspose:aspose-html:23.1' ``` -> **Pro tip:** लाइब्रेरी संस्करण को आधिकारिक Aspose रिलीज़ नोट्स के साथ सिंक में रखें; नए संस्करण सुरक्षा सुधार जोड़ते हैं जो बाहरी कंटेंट लोड करने पर विशेष रूप से महत्वपूर्ण होते हैं। +> **Pro tip:** लाइब्रेरी संस्करण को आधिकारिक Aspose रिलीज़ नोट्स के साथ सिंक रखें; नए संस्करण सुरक्षा सुधार जोड़ते हैं जो बाहरी सामग्री लोड करने पर विशेष रूप से महत्वपूर्ण होते हैं। -## Sandbox Options कॉन्फ़िगर करें (retrieve page title java) +## sandbox विकल्प कैसे कॉन्फ़िगर करें? (retrieve page title java) -**creating an Aspose HTML sandbox** में पहला वास्तविक कदम यह तय करना है कि वर्चुअल ब्राउज़र कैसे व्यवहार करे। आप डेस्कटॉप, मोबाइल डिवाइस, या यहां तक कि कस्टम स्क्रीन साइज की नकल कर सकते हैं। +**Aspose HTML sandbox** बनाने का पहला वास्तविक कदम यह तय करना है कि वर्चुअल ब्राउज़र कैसे व्यवहार करे। आप डेस्कटॉप, मोबाइल डिवाइस, या कस्टम स्क्रीन आकार की नकल कर सकते हैं। +`SandboxOptions` sandbox के व्यवहार को कॉन्फ़िगर करता है, जैसे viewport आकार, user‑agent स्ट्रिंग, और टाइमआउट मान। यह आपको नियंत्रित करने देता है कि पेज कैसे रेंडर हो और कौन‑से संसाधन अनुमति प्राप्त हैं। ```java import com.aspose.html.sandbox.SandboxOptions; @@ -77,11 +114,12 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -यह क्यों महत्वपूर्ण है? viewport आकार CSS मीडिया क्वेरीज़ को प्रभावित करता है, जबकि user‑agent सर्वर‑साइड कंटेंट नेगोशिएशन को प्रभावित कर सकता है। उन्हें स्पष्ट रूप से सेट करने से यह सुनिश्चित होता है कि बाद में आप जिस पेज से **retrieve page title java** करेंगे, वह ठीक वैसा ही रेंडर हो जैसा आप उम्मीद करते हैं। +यह क्यों महत्वपूर्ण है? viewport आकार CSS मीडिया क्वेरीज़ को प्रभावित करता है, जबकि user‑agent सर्वर‑साइड कंटेंट नेगोशिएशन को बदल सकता है। इन्हें स्पष्ट रूप से सेट करने से यह सुनिश्चित होता है कि बाद में आप **page title java प्राप्त करने का तरीका** से पेज ठीक वैसा ही रेंडर हो जैसा आप अपेक्षा करते हैं। -## Sandbox इंस्टेंस बनाएं +## sandbox इंस्टेंस कैसे बनाएं? -अब जब हमारे पास विकल्प हैं, हम sandbox को स्वयं बना सकते हैं। +अब जब हमारे पास विकल्प हैं, हम sandbox स्वयं को स्पिन अप कर सकते हैं। +`Sandbox` वह अलग‑थलग Chromium इंजन इंस्टेंस है जो JVM के अंदर चलता है। यह एक सुरक्षित वातावरण बनाता है जहाँ HTML लोड और निष्पादित किया जा सकता है बिना होस्ट फ़ाइल सिस्टम को छुए। ```java import com.aspose.html.sandbox.Sandbox; @@ -90,11 +128,12 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -`Sandbox` को एक हल्के, अलग‑थलग Chromium इंजन के रूप में सोचें जो आपके Java प्रोसेस के अंदर रहता है। यह फ़ाइल सिस्टम को नहीं छूता जब तक आप स्पष्ट रूप से न बताएं, जिससे यह सुरक्षित स्क्रैपिंग के लिए आदर्श बनता है। +`Sandbox` को एक हल्का, अलग‑थलग Chromium इंजन मानें जो आपके Java प्रोसेस के भीतर रहता है। यह फ़ाइल सिस्टम को तब तक नहीं छूता जब तक आप स्पष्ट रूप से न कहें, जिससे यह सुरक्षित स्क्रैपिंग के लिए आदर्श बनता है। -## Sandbox के अंदर एक बाहरी पेज लोड करें +## sandbox के अंदर बाहरी पेज कैसे लोड करें? -Sandbox तैयार होने पर, रिमोट पेज लोड करना उतना ही सरल है जितना URL और sandbox इंस्टेंस को `HtmlDocument` को पास करना। +sandbox तैयार होने पर, रिमोट पेज लोड करना इतना सरल है जितना URL और sandbox इंस्टेंस को `HtmlDocument` को पास करना। +`HtmlDocument` sandbox में लोड किए गए HTML पेज का प्रतिनिधित्व करता है, DOM एक्सेस, रेंडरिंग क्षमताएँ, और JavaScript निष्पादन प्रदान करता है। ```java import com.aspose.html.HtmlDocument; @@ -105,26 +144,28 @@ HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); > **Edge case:** यदि लक्ष्य साइट को ऑथेंटिकेशन या रीडायरेक्ट की आवश्यकता है, तो आप `HttpClient` हैंडलर्स को पहले से कॉन्फ़िगर कर सकते हैं और उन्हें `HtmlLoadOptions` के माध्यम से पास कर सकते हैं। यह इस त्वरित गाइड के दायरे से बाहर है, लेकिन API इसका समर्थन करता है। -## पेज टाइटल तक पहुँचें – retrieve page title java +## पेज शीर्षक तक कैसे पहुंचें? (retrieve page title java) -अब वह भाग आता है जो आप चाहते थे: sandbox के अंदर रहते हुए पेज टाइटल निकालना। `HtmlDocument` क्लास एक `getTitle()` मेथड प्रदान करता है जो `<title>` एलिमेंट को पढ़ता है। +अब वह हिस्सा आता है जिसकी आप अपेक्षा कर रहे थे: sandbox के अंदर रहते हुए पेज शीर्षक निकालना। `HtmlDocument` क्लास `getTitle()` मेथड प्रदान करती है जो `<title>` एलिमेंट को पढ़ती है। +`getTitle()` पेज के `<title>` एलिमेंट की टेक्स्ट सामग्री लौटाता है, जिससे आप यह सत्यापित कर सकते हैं कि पेज सही ढंग से लोड हुआ है। ```java // Step 4 – read and print the title System.out.println("Title inside sandbox: " + htmlDoc.getTitle()); ``` -जब आप पूरी प्रोग्राम को `https://example.com` पर चलाते हैं, तो आपको यह दिखना चाहिए: +जब आप पूर्ण प्रोग्राम को `https://example.com` के खिलाफ चलाते हैं, तो आपको यह दिखना चाहिए: ``` Title inside sandbox: Example Domain ``` -यह पंक्ति प्रमाणित करती है कि हमने सफलतापूर्वक **created an Aspose HTML sandbox** बनाया, एक रिमोट पेज लोड किया, और **retrieved page title java** को कभी भी अलगाव वाले वातावरण से बाहर निकले बिना प्राप्त किया। +यह लाइन साबित करती है कि हमने सफलतापूर्वक **Aspose HTML sandbox** बनाया, रिमोट पेज लोड किया, और **page title java प्राप्त करने का तरीका** बिना कभी अलग‑थलग वातावरण छोड़े किया। -## संसाधनों को साफ़ करें +## संसाधनों को कैसे साफ़ करें? -Aspose.HTML ऑब्जेक्ट्स नेटिव रिसोर्सेज रखते हैं, इसलिए उन्हें स्पष्ट रूप से डिस्पोज़ करना महत्वपूर्ण है। ऐसा न करने से मेमोरी लीक्स हो सकते हैं, विशेषकर जब आप लूप में कई पेज प्रोसेस कर रहे हों। +Aspose.HTML ऑब्जेक्ट्स नेटिव संसाधन रखते हैं, इसलिए उन्हें स्पष्ट रूप से डिस्पोज़ करना आवश्यक है। इसे भूलने से मेमोरी लीक हो सकता है, विशेषकर जब आप लूप में कई पेज प्रोसेस कर रहे हों। +`dispose()` Aspose.HTML ऑब्जेक्ट्स द्वारा रखे गए नेटिव संसाधनों को रिलीज़ करता है, मेमोरी लीक को रोकता है और JVM को तुरंत मेमोरी पुनः प्राप्त करने की अनुमति देता है। ```java // Step 5 – release native resources @@ -132,11 +173,11 @@ htmlDoc.dispose(); sandboxInstance.dispose(); ``` -> **Why dispose?** अंतर्निहित Chromium इंजन नेटिव मेमोरी और फ़ाइल हैंडल्स आवंटित करता है। `dispose()` कॉल करने से JVM को तुरंत उन्हें मुक्त करने के लिए कहा जाता है, बजाय फाइनलाइज़र का इंतजार करने के। +> **Why dispose?** अंतर्निहित Chromium इंजन नेटिव मेमोरी और फ़ाइल हैंडल्स आवंटित करता है। `dispose()` कॉल करने से JVM को इन्हें तुरंत मुक्त करने का निर्देश मिलता है, बजाय फाइनलाइज़र का इंतज़ार करने के। ## पूर्ण कार्यशील उदाहरण -नीचे पूरा प्रोग्राम है जिसे आप `SandboxExample.java` नाम की फ़ाइल में कॉपी कर सकते हैं। `javac` से कंपाइल करें और `java` से चलाएँ। सभी चरण सही क्रम में हैं, और हर इम्पोर्ट सूचीबद्ध है। +नीचे पूरा प्रोग्राम दिया गया है जिसे आप `SandboxExample.java` नाम की फ़ाइल में कॉपी कर सकते हैं। `javac` से कंपाइल करें और `java` से चलाएँ। सभी चरण सही क्रम में हैं, और हर इम्पोर्ट सूचीबद्ध है। ```java import com.aspose.html.HtmlDocument; @@ -168,32 +209,56 @@ public class SandboxExample { } ``` +![Aspose HTML sandbox बनाते हुए Java कोड का स्क्रीनशॉट](/images/create-aspose-html-sandbox.png "create aspose html sandbox उदाहरण") + ### अपेक्षित आउटपुट ``` Title inside sandbox: Example Domain ``` -यदि आप `https://example.com` को किसी अन्य URL से बदलते हैं, तो प्रिंट किया गया टाइटल उस पेज के `<title>` टैग को दर्शाएगा—बशर्ते साइट अनाम एक्सेस की अनुमति देती हो। +यदि आप `https://example.com` को किसी अन्य URL से बदलते हैं, तो प्रिंट किया गया शीर्षक उस पेज के `<title>` टैग को दर्शाएगा—जब तक साइट अनाम एक्सेस की अनुमति देती है। + +## व्यावहारिक टिप्स और सामान्य जाल + +- **नेटवर्क टाइमआउट:** डिफ़ॉल्ट रूप से sandbox 60‑सेकंड का टाइमआउट उपयोग करता है। यदि आप धीमी साइटों से जुड़ रहे हैं, तो sandbox बनाते समय `sandboxOptions.setTimeout(120_000);` कॉल करें। +- **Java सुरक्षा प्रबंधक:** प्रतिबंधित JVM के भीतर चलाते समय सुनिश्चित करें कि `java.security.policy` लक्ष्य डोमेन के लिए `java.net.SocketPermission` प्रदान करता है। +- **एकाधिक पेज प्रोसेस करना:** एक ही `Sandbox` इंस्टेंस को पुन: उपयोग करें; प्रत्येक URL के लिए नया `HtmlDocument` बनाएं और बाद में उसे डिस्पोज़ करें। इससे स्टार्ट‑अप ओवरहेड कम होता है। +- **डिबगिंग:** `sandboxOptions.setDebugMode(true);` सेट करें ताकि विस्तृत कंसोल लॉग मिलें जो पेज लोड न होने के कारणों को पहचानने में मदद करेंगे। + +## अक्सर पूछे जाने वाले प्रश्न -## व्यावहारिक टिप्स और सामान्य pitfalls +**Q: क्या मैं इस sandbox को हेडलेस CI पाइपलाइन में उपयोग कर सकता हूँ?** +A: हाँ। sandbox बिना दृश्यमान UI के चलता है और किसी भी सर्वर पर निष्पादित किया जा सकता है जो Java 8+ को सपोर्ट करता है। -- **Network Timeouts:** डिफ़ॉल्ट रूप से sandbox 60‑सेकंड का टाइमआउट उपयोग करता है। यदि आप धीमी साइट्स को हिट कर रहे हैं, तो sandbox बनाने से पहले `sandboxOptions.setTimeout(120_000);` कॉल करें। -- **Java Security Manager:** प्रतिबंधित JVM के अंदर चलाते समय, सुनिश्चित करें कि `java.security.policy` लक्ष्य डोमेन के लिए `java.net.SocketPermission` प्रदान करता है। -- **Multiple Pages:** यदि आपको कई URL प्रोसेस करने हैं, तो एक ही `Sandbox` इंस्टेंस को पुन: उपयोग करें; प्रत्येक URL के लिए नया `HtmlDocument` बनाएं और बाद में उसे डिस्पोज़ करें। इससे स्टार्टअप ओवरहेड कम होता है। -- **Debugging:** `sandboxOptions.setDebugMode(true);` सेट करें ताकि विस्तृत कंसोल लॉग मिलें जो यह पता लगाने में मदद करेंगे कि पेज लोड क्यों नहीं हुआ। +**Q: क्या sandbox JavaScript निष्पादन को सपोर्ट करता है?** +A: बिल्कुल। यह पीछे Chromium का उपयोग करता है, इसलिए आधुनिक JavaScript, जिसमें ES6 फीचर शामिल हैं, सही ढंग से चलता है। -## निष्कर्ष +**Q: sandbox कितना बड़ा पेज संभाल सकता है?** +A: इंजन 200 MB तक के पेज रेंडर कर सकता है, जो केवल होस्ट मशीन की मेमोरी पर निर्भर करता है। -हमने अभी Java में **created an Aspose HTML sandbox** किया, इसे एक पूर्वानुमेय viewport के लिए कॉन्फ़िगर किया, एक बाहरी पेज लोड किया, और यह दिखाया कि **retrieve page title java** को सुरक्षित और कुशलता से कैसे किया जाए। पूरी प्रक्रिया—विकल्प सेटअप से लेकर रिसोर्स क्लीनअप तक—एक कॉम्पैक्ट, पुन: उपयोग योग्य स्निपेट में संलग्न है। +**Q: यदि लक्ष्य साइट स्वचालित अनुरोधों को ब्लॉक करती है तो क्या करें?** +A: आप `SandboxOptions` में `User-Agent` स्ट्रिंग को कस्टमाइज़ कर सकते हैं या `HtmlLoadOptions` के माध्यम से कुकीज़ प्रदान कर सकते हैं ताकि सामान्य ब्राउज़र की नकल हो सके। -अब आप इस बुनियाद को लेकर इसे विस्तारित कर सकते हैं: मेटा टैग स्क्रैप करें, स्क्रीनशॉट कैप्चर करें, या यहां तक कि sandbox के अंदर JavaScript चलाएँ। संभावनाएँ वेब जितनी ही व्यापक हैं। +**Q: क्या लोड किए गए पेज का स्क्रीनशॉट कैप्चर करने का कोई तरीका है?** +A: हाँ। दस्तावेज़ लोड करने के बाद `document.save("snapshot.png", SaveFormat.Png);` कॉल करके रेंडर किए गए पेज की PNG इमेज एक्सपोर्ट कर सकते हैं। -क्या आपके पास ऑथेंटिकेशन, प्रॉक्सी सेटिंग्स, या sandbox से PDF रेंडरिंग को लेकर प्रश्न हैं? एक टिप्पणी छोड़ें, और हम उन उन्नत परिदृश्यों को साथ मिलकर देखेंगे। कोडिंग का आनंद लें! -![Screenshot of Java code creating an Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "create aspose html sandbox example") + +**Last Updated:** 2026-09-03 +**Tested with:** Aspose.HTML for Java 23.1 +**Author:** Aspose + +## संबंधित ट्यूटोरियल + +- [How To Use Sandbox For Html To Pdf Java Step By Step Guide](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [Create PDF from HTML using Aspose.HTML for Java – Sandbox](/html/java/configuring-environment/implement-sandboxing/) +- [Enable Script Execution In Java Complete Aspose Html Guide](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-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/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/hongkong/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index 77ee4768a8..e158a2c872 100644 --- a/html/hongkong/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/hongkong/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,23 +1,48 @@ --- category: general -date: 2026-01-04 -description: 在 Java 中建立 Aspose HTML 沙盒,並學習如何使用逐步範例取得頁面標題。附上快速可執行的程式碼。 +date: 2026-09-03 +description: 如何建立 Aspose sandbox java 並以乾淨、獨立的 HTML 載入方式取得 page title java。逐步說明與可執行程式碼。 draft: false keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title -language: zh-hant -og_description: 在 Java 中建立 Aspose HTML 沙盒,並即時取得頁面標題。遵循此詳細指南,以獲得乾淨、隔離的 HTML 載入。 -og_title: 建立 Aspose HTML 沙盒 – Java 教學 +lastmod: 2026-09-03 +og_description: 了解如何在 Java 中建立 Aspose sandbox,並即時取得 page title java。提供詳細步驟、最佳實踐與完整範例程式碼。 +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: 如何建立 Aspose sandbox java – 完整指南 +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: 建立 Aspose HTML 沙盒 – 完整 Java 指南 +title: 如何建立 Aspose sandbox java – 完整指南 url: /zh-hant/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -25,26 +50,35 @@ url: /zh-hant/java/configuring-environment/create-aspose-html-sandbox-complete-j {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# 建立 Aspose HTML 沙盒 – 完整 Java 指南 +# 如何建立 Aspose sandbox java – 完整指南 -是否曾需要 **create Aspose HTML sandbox**,卻不確定如何將載入的頁面與主 JVM 隔離?也許你正在建立網頁爬蟲、測試工具,或只是想在不產生副作用的情況下實驗遠端頁面。在本教學中,我們將逐步說明這些操作,並且會示範如何在沙盒內 **how to retrieve page title java**。 +Ever needed to **create Aspose HTML sandbox** but weren’t sure how to keep the loaded page isolated from your main JVM? Maybe you’re building a web‑scraper, a testing harness, or just want to experiment with remote pages without risking side‑effects. In this tutorial we’ll walk through exactly that, and we’ll also show you **how to retrieve page title java** from inside the sandbox. -解決方案相當簡單:設定 `SandboxOptions` 物件,啟動 `Sandbox`,使用 `HtmlDocument` 載入外部 URL,讀取標題,最後清理所有資源。完成後,你將擁有一段可直接放入任何使用 Aspose.HTML for Java 23.1(或更新版本)的 Java 專案的獨立程式碼片段。 +The solution is pretty straightforward: configure a `SandboxOptions` object, spin up a `Sandbox`, load an external URL with `HtmlDocument`, read the title, and finally clean everything up. By the end you’ll have a self‑contained snippet you can drop into any Java project that uses Aspose.HTML for Java 23.1 (or newer). -## 你將學到什麼 +## 快速回答 +- **什麼是 Aspose sandbox?** 它是一個隔離的 Chromium 基礎環境,於 JVM 內執行且不會觸及檔案系統。 +- **為什麼在取得 page title 時要使用 sandbox?** 它保證外部腳本不會影響應用程式的狀態或記憶體。 +- **需要哪個 Java 版本?** Java 8 或更新版本;此函式庫亦支援 Java 11、 17 及之後的版本。 +- **需要授權嗎?** 開發階段使用免費試用授權即可;正式上線需購買商業授權。 +- **需要多少行程式碼?** 核心邏輯少於 30 行,另加可選的設定程式碼。 -- 如何 **create Aspose HTML sandbox** 並設定自訂視口與使用者代理。 -- 從遠端頁面安全地 **retrieve page title java**,同時保持在沙盒內的完整步驟。 -- 常見的陷阱(例如忘記釋放資源)以及保持記憶體佔用低的最佳實踐技巧。 -- 完整、可直接執行的 Java 程式,你可以複製貼上、編譯並執行。 +## 什麼是 create aspose sandbox java? +`Sandbox` 是 Aspose.HTML 的輕量化、隔離式瀏覽器引擎,於 Java 行程內執行。它提供一個安全容器,讓您能載入遠端 HTML、執行 JavaScript,並與 DOM 互動,而不會暴露主機環境。 -> **先決條件** – 你需要一個有效的 Aspose.HTML for Java 授權(免費試用版亦可),並已安裝 Java 8 或更新版本。無需額外的第三方函式庫。 +## 為什麼在 retrieve page title java 時要使用 sandbox? +Aspose.HTML 支援 **50+ 輸入與輸出格式**,且可在不將整個檔案載入記憶體的情況下渲染上百頁文件。使用 sandbox 可額外加上一層安全防護,確保目標頁面的惡意腳本無法逃離容器。此作法降低記憶體泄漏風險,並保護 JVM 不受不必要的副作用影響。 ---- +## 前置條件 +- 有效的 Aspose.HTML for Java 授權(測試可使用試用版)。 +- 已在開發機上安裝 Java 8 或更新版本。 +- 使用 Maven 或 Gradle 來管理相依性。 + +> **Pro tip:** 保持函式庫版本與官方 Aspose 發行說明同步;較新版本會包含對載入不受信任內容時至關重要的安全修補。 ## 步驟 1:設定專案 -在開始編寫程式碼之前,請確保你的 `pom.xml`(Maven)或 Gradle 檔案已加入 Aspose.HTML 相依性: +在撰寫程式碼之前,確保您的 `pom.xml`(Maven)或 Gradle 檔案已加入 Aspose.HTML 相依性: ```xml <!-- Maven --> @@ -55,19 +89,18 @@ url: /zh-hant/java/configuring-environment/create-aspose-html-sandbox-complete-j </dependency> ``` -如果你使用 Gradle: +如果您使用 Gradle: ```groovy implementation 'com.aspose:aspose-html:23.1' ``` -> **專業提示**:請將函式庫版本與官方 Aspose 發行說明保持同步;較新版本會加入安全性修補,對於載入外部內容尤為重要。 - ---- +> **Pro tip:** 保持函式庫版本與官方 Aspose 發行說明同步;較新版本會加入對載入外部內容時特別重要的安全修補。 -## 設定 Sandbox 選項(retrieve page title java) +## 如何設定 sandbox options?(retrieve page title java) -在 **creating an Aspose HTML sandbox** 的第一個實際步驟是決定虛擬瀏覽器的行為。你可以模擬桌面、行動裝置,甚至自訂螢幕尺寸。 +在 **creating an Aspose HTML sandbox** 的第一步,就是決定虛擬瀏覽器的行為。您可以模擬桌面、行動裝置,甚至自訂螢幕尺寸。 +`SandboxOptions` 用來設定 sandbox 的行為,例如視口大小、User‑Agent 字串與逾時時間。它讓您掌控頁面如何渲染以及允許哪些資源。 ```java import com.aspose.html.sandbox.SandboxOptions; @@ -79,13 +112,12 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -為什麼這很重要?視口大小會影響 CSS 媒體查詢,而使用者代理會影響伺服器端的內容協商。明確設定它們可確保之後你 **retrieve page title java** 的頁面如預期般渲染。 +為什麼這很重要?視口大小會影響 CSS 媒體查詢,而 User‑Agent 會影響伺服器端的內容協商。明確設定可確保之後 **retrieve page title java** 時,頁面會如您所預期地渲染。 ---- - -## 建立 Sandbox 實例 +## 如何建立 sandbox 實例? -現在我們已有設定選項,可以啟動 sandbox 本身。 +有了選項之後,我們就可以啟動 sandbox 本身。 +`Sandbox` 是在 JVM 內執行的隔離 Chromium 引擎實例。它建立一個安全環境,讓 HTML 能被載入與執行,而不會觸及主機檔案系統。 ```java import com.aspose.html.sandbox.Sandbox; @@ -94,13 +126,12 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -將 `Sandbox` 視為一個輕量且隔離的 Chromium 引擎,運行於你的 Java 程序內。除非你明確指示,它不會觸及檔案系統,這使其成為安全爬取的理想選擇。 +把 `Sandbox` 想成一個輕量、隔離的 Chromium 引擎,駐留在您的 Java 行程中。除非您明確指示,它不會接觸檔案系統,這使它非常適合安全的爬蟲工作。 ---- +## 如何在 sandbox 中載入外部頁面? -## 在 Sandbox 中載入外部頁面 - -Sandbox 準備好後,載入遠端頁面只需將 URL 與 sandbox 實例傳遞給 `HtmlDocument` 即可。 +Sandbox 準備好後,載入遠端頁面只需要將 URL 與 sandbox 實例傳給 `HtmlDocument`。 +`HtmlDocument` 代表已載入 sandbox 的 HTML 頁面,提供 DOM 存取、渲染功能與 JavaScript 執行。 ```java import com.aspose.html.HtmlDocument; @@ -109,32 +140,30 @@ import com.aspose.html.HtmlDocument; HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); ``` -> **邊緣情況**:若目標網站需要驗證或重導向,你可以事先設定 `HttpClient` 處理程序,並透過 `HtmlLoadOptions` 傳入。這超出本快速指南的範圍,但 API 已支援此功能。 - ---- +> **Edge case:** 若目標網站需要驗證或會重新導向,您可以事先設定 `HttpClient` 處理程式,並透過 `HtmlLoadOptions` 傳入。此範例不涵蓋此情況,但 API 已支援。 -## 取得頁面標題 – retrieve page title java +## 如何存取頁面標題?(retrieve page title java) -現在來到你所要求的部分:在 sandbox 內取得頁面標題。`HtmlDocument` 類別提供 `getTitle()` 方法,可讀取 `<title>` 元素。 +現在來到您關心的部分:在 sandbox 內部擷取頁面標題。`HtmlDocument` 類別提供 `getTitle()` 方法,可讀取 `<title>` 元素。 +`getTitle()` 會回傳頁面 `<title>` 元素的文字內容,讓您簡單驗證頁面是否正確載入。 ```java // Step 4 – read and print the title System.out.println("Title inside sandbox: " + htmlDoc.getTitle()); ``` -當你對 `https://example.com` 執行完整程式時,應該會看到: +執行完整程式對 `https://example.com` 時,您應該會看到: ``` Title inside sandbox: Example Domain ``` -這行證明我們已成功 **created an Aspose HTML sandbox**,載入遠端頁面,且在未離開隔離環境的情況下 **retrieved page title java**。 +此行證明我們已成功 **created an Aspose HTML sandbox**、載入遠端頁面,且 **retrieved page title java**,全程未離開隔離環境。 ---- - -## 清理資源 +## 如何清理資源? -Aspose.HTML 物件會佔用本機資源,因此必須明確釋放。若遺漏釋放,尤其在迴圈處理大量頁面時,可能導致記憶體洩漏。 +Aspose.HTML 物件會持有本機資源,必須明確呼叫 `dispose()` 釋放。若未釋放,特別是在迴圈中處理大量頁面時,會導致記憶體泄漏。 +`dispose()` 會釋放 Aspose.HTML 物件所佔用的本機資源,避免記憶體泄漏,並確保 JVM 能即時回收記憶體。 ```java // Step 5 – release native resources @@ -142,13 +171,11 @@ htmlDoc.dispose(); sandboxInstance.dispose(); ``` -> **為什麼要釋放?** 底層的 Chromium 引擎會分配本機記憶體與檔案句柄。呼叫 `dispose()` 可讓 JVM 立即釋放這些資源,而非等候最終化程序。 - ---- +> **為什麼要 dispose?** 底層的 Chromium 引擎會分配本機記憶體與檔案句柄。呼叫 `dispose()` 可告訴 JVM 立即釋放,而非等候最終化器。 -## 完整可執行範例 +## 完整範例 -以下是完整程式碼,你可以複製到名為 `SandboxExample.java` 的檔案中。使用 `javac` 編譯,`java` 執行。所有步驟皆按正確順序排列,且列出所有 import。 +以下是完整程式碼,您可直接複製到 `SandboxExample.java` 檔案中。使用 `javac` 編譯,`java` 執行。所有步驟皆已按正確順序排列,且每個 import 都已列出。 ```java import com.aspose.html.HtmlDocument; @@ -180,36 +207,54 @@ public class SandboxExample { } ``` +![Screenshot of Java code creating an Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "create aspose html sandbox example") + ### 預期輸出 ``` Title inside sandbox: Example Domain ``` -如果你將 `https://example.com` 換成其他 URL,印出的標題將會反映該頁面的 `<title>` 標籤——前提是該網站允許匿名存取。 - ---- +若將 `https://example.com` 換成其他 URL,印出的標題會顯示該頁面的 `<title>` 標籤——前提是該站點允許匿名存取。 ## 實用技巧與常見陷阱 -- **Network Timeouts**:預設 sandbox 使用 60 秒逾時時間。若面對較慢的網站,請在建立 sandbox 前呼叫 `sandboxOptions.setTimeout(120_000);`。 -- **Java Security Manager**:在受限的 JVM 中執行時,確保 `java.security.policy` 為目標網域授予 `java.net.SocketPermission`。 -- **Multiple Pages**:若需處理多個 URL,請重複使用同一個 `Sandbox` 實例;只需為每個 URL 建立新的 `HtmlDocument`,之後釋放即可。這可減少啟動開銷。 -- **Debugging**:設定 `sandboxOptions.setDebugMode(true);` 可取得詳細的主控台日誌,協助找出頁面載入失敗的原因。 +- **網路逾時:** 預設 sandbox 使用 60 秒逾時。若面對較慢的網站,可在建立 sandbox 前呼叫 `sandboxOptions.setTimeout(120_000);`。 +- **Java 安全管理員:** 在受限的 JVM 中執行時,請確保 `java.security.policy` 為目標網域授予 `java.net.SocketPermission`。 +- **處理多頁面:** 重複使用同一個 `Sandbox` 實例;對每個 URL 建立新的 `HtmlDocument`,使用完後再 dispose。這樣可減少啟動開銷。 +- **除錯:** 設定 `sandboxOptions.setDebugMode(true);` 可取得詳細的主控台日誌,協助找出頁面載入失敗的原因。 ---- +## 常見問答 -## 結論 +**Q: 可以在無頭 CI pipeline 中使用此 sandbox 嗎?** +A: 可以。sandbox 可在沒有可視化介面的環境下執行,且支援任何支援 Java 8+ 的伺服器。 -我們剛剛在 Java 中 **created an Aspose HTML sandbox**,為其設定可預測的視口,載入外部頁面,並示範如何安全且高效地 **retrieve page title java**。從選項設定到資源清理的完整流程,都封裝在一段精簡、可重複使用的程式碼片段中。 +**Q: sandbox 支援 JavaScript 執行嗎?** +A: 完全支援。它底層使用 Chromium,因而能正確執行包括 ES6 在內的現代 JavaScript。 -現在你可以以此為基礎進一步擴展:爬取 meta 標籤、截取螢幕截圖,甚至在 sandbox 內執行 JavaScript。可能性與網路本身一樣廣闊。 +**Q: sandbox 能處理多大的頁面?** +A: 引擎可渲染最高 200 MB 的頁面,唯一限制來自主機的記憶體大小。 -對於處理驗證、代理設定,或從 sandbox 產生 PDF 有任何疑問嗎?歡迎留言,我們會一起探討這些進階情境。祝開發愉快! +**Q: 若目標網站阻擋自動化請求該怎麼辦?** +A: 您可以在 `SandboxOptions` 中自訂 `User-Agent`,或透過 `HtmlLoadOptions` 提供 Cookie,以模擬一般瀏覽器。 + +**Q: 有辦法截取載入頁面的螢幕截圖嗎?** +A: 有。載入文件後,呼叫 `document.save("snapshot.png", SaveFormat.Png);` 即可匯出渲染頁面的 PNG 圖片。 + +**Last Updated:** 2026-09-03 +**Tested with:** Aspose.HTML for Java 23.1 +**Author:** Aspose + +## 相關教學 + +- [如何使用 Sandbox 於 Html 轉 PDF Java 步驟指南](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [使用 Aspose.HTML for Java 建立 PDF – Sandbox](/html/java/configuring-environment/implement-sandboxing/) +- [在 Java 中啟用腳本執行的完整 Aspose Html 教學](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-guide/) -![Screenshot of Java code creating an Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "create aspose html sandbox 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/hungarian/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/hungarian/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index 992123bfa5..d1896fb44d 100644 --- a/html/hungarian/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/hungarian/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,27 +1,52 @@ --- category: general -date: 2026-01-04 -description: Hozzon létre egy Aspose HTML homokozót Java-ban, és tanulja meg, hogyan - lehet lekérni az oldal címét Java-ban egy lépésről‑lépésre példával. Gyors, futtatható - kód mellékelve. +date: 2026-09-03 +description: Hogyan hozhatunk létre Aspose sandbox java-t és nyerhetjük ki a page + title java-t egy tiszta, elszigetelt HTML betöltéssel. Lépésről‑lépésre útmutató + futtatható kóddal. draft: false keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title -language: hu -og_description: Hozzon létre Aspose HTML homokozót Java-ban, és azonnal szerezze meg - az oldal címét Java-ban. Kövesse ezt a részletes útmutatót egy tiszta, elszigetelt - HTML betöltéshez. -og_title: Aspose HTML Sandbox létrehozása – Java útmutató +lastmod: 2026-09-03 +og_description: Ismerje meg, hogyan hozhat létre egy Aspose sandbox-ot Java-ban, és + nyerje ki a page title java-t azonnal. Részletes lépések, legjobb gyakorlatok és + teljes példakód. +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: Hogyan hozhatunk létre Aspose sandbox java – teljes útmutató +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: Aspose HTML Sandbox létrehozása – Teljes Java útmutató +title: Hogyan hozhatunk létre Aspose sandbox java – teljes útmutató url: /hu/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -29,24 +54,33 @@ url: /hu/java/configuring-environment/create-aspose-html-sandbox-complete-java-g {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Aspose HTML Homokozó létrehozása – Teljes Java útmutató +# Hogyan hozhatunk létre Aspose sandbox Java – teljes útmutató -Valaha szükséged volt **create Aspose HTML sandbox**-ra, de nem tudtad, hogyan tartsd elkülönítve a betöltött oldalt a fő JVM-edtől? Lehet, hogy web‑scrapert, tesztkeretet építesz, vagy egyszerűen csak távoli oldalakat szeretnél kipróbálni anélkül, hogy mellékhatásokat okoznának. Ebben az útmutatóban pontosan ezt fogjuk végigvezetni, és megmutatjuk, hogyan **retrieve page title java**-t kapjunk a homokozóból. +Valaha szükséged volt **Aspose HTML sandbox létrehozására**, de nem tudtad, hogyan tartsd elkülönítve a betöltött oldalt a fő JVM‑edtől? Lehet, hogy web‑scrapert, tesztelési keretrendszert építesz, vagy egyszerűen csak távoli oldalakat szeretnél kipróbálni anélkül, hogy mellékhatásokkal kellene számolnod. Ebben az útmutatóban pontosan ezt fogjuk végigvezetni, és megmutatjuk, hogyan **retrieve page title java**-t hajthatsz végre a sandboxon belül. -A megoldás meglehetősen egyszerű: konfigurálj egy `SandboxOptions` objektumot, indíts egy `Sandbox`-ot, tölts be egy külső URL-t a `HtmlDocument`‑del, olvasd ki a címet, és végül takarítsd el mindent. A végére egy önálló kódrészletet kapsz, amelyet bármely Java projekthez beilleszthetsz, amely az Aspose.HTML for Java 23.1 (vagy újabb) verziót használ. +A megoldás meglehetősen egyszerű: konfigurálj egy `SandboxOptions` objektumot, indíts egy `Sandbox`‑t, tölts be egy külső URL‑t a `HtmlDocument`‑del, olvasd ki a címet, és végül takarítsd el mindent. A végére egy önálló kódrészletet kapsz, amelyet bármely Java projektbe beilleszthetsz, amely az Aspose.HTML for Java 23.1 (vagy újabb) verziót használja. -## Amit megtanulsz +## Gyors válaszok +- **Mi az Aspose sandbox?** Egy izolált Chromium‑alapú környezet, amely a JVM‑edben fut, anélkül, hogy a fájlrendszert érintené. +- **Miért használjunk sandboxot a page title kinyeréséhez?** Garantálja, hogy a külső szkriptek ne befolyásolják az alkalmazás állapotát vagy memóriáját. +- **Melyik Java verzió szükséges?** Java 8 vagy újabb; a könyvtár Java 11, 17 és későbbi verziókkal is működik. +- **Szükségem van licencre?** Egy ingyenes próbalicenc elegendő fejlesztéshez; a termeléshez kereskedelmi licenc szükséges. +- **Hány kódsorra van szükség?** Kevesebb, mint 30 sor a fő logikához, plusz opcionális beállítási kód. -- Hogyan **create Aspose HTML sandbox**-t hozhatsz létre egyedi viewport és user‑agent beállításokkal. -- A pontos lépések a **retrieve page title java**-hoz egy távoli oldalról, miközben biztonságosan a homokozóban maradsz. -- Gyakori csapdák (például az erőforrások elfelejtett felszabadítása) és legjobb gyakorlatok, amelyek alacsony memóriahasználatot biztosítanak. -- Egy teljes, azonnal futtatható Java program, amelyet másolhatsz‑beilleszthetsz, lefordíthatsz és futtathatsz. +## Mi az a create aspose sandbox java? +`Sandbox` az Aspose.HTML könnyű, izolált böngészőmotorja, amely a Java folyamaton belül fut. Biztonságos konténert biztosít, ahol távoli HTML-t tölthetsz be, JavaScript-et futtathatsz, és a DOM-mal interakcióba léphetsz anélkül, hogy a host környezetet kitenéd. -> **Előfeltételek** – Szükséged van egy érvényes Aspose.HTML for Java licencre (az ingyenes próba is működik) és telepített Java 8 vagy újabb verzióra. Nem szükségesek további harmadik‑féltől származó könyvtárak. +## Miért használjunk sandboxot a page title java lekérdezésekor? +Aspose.HTML **50+ bemeneti és kimeneti formátumot** támogat, és több száz oldalas dokumentumokat képes megjeleníteni anélkül, hogy az egész fájlt memóriába töltené. A sandbox használata egy extra biztonsági réteget ad, biztosítva, hogy a céloldalon lévő rosszindulatú szkript ne tudjon kijutni a konténerből. Ez a megközelítés csökkenti a memória szivárgás kockázatát és megvédi a JVM‑et a nem kívánt mellékhatásoktól. ---- +## Előfeltételek +- Érvényes Aspose.HTML for Java licenc (a próba licenc teszteléshez elegendő). +- Java 8 vagy újabb telepítve a fejlesztői gépeden. +- Maven vagy Gradle építőeszköz a függőségek kezeléséhez. + +> **Pro tipp:** Tartsd a könyvtár verzióját összhangban a hivatalos Aspose kiadási jegyzékekkel; az újabb kiadások biztonsági javításokat tartalmaznak, amelyek kritikusak nem megbízható tartalom betöltésekor. -## 1. lépés: A projekt beállítása +## 1. lépés: a projekt beállítása Mielőtt a kódba merülnénk, győződj meg róla, hogy a `pom.xml` (Maven) vagy Gradle fájlod tartalmazza az Aspose.HTML függőséget: @@ -59,17 +93,19 @@ Mielőtt a kódba merülnénk, győződj meg róla, hogy a `pom.xml` (Maven) vag </dependency> ``` -If you’re using Gradle: +Ha Gradle-t használsz: ```groovy implementation 'com.aspose:aspose-html:23.1' ``` -> **Pro tipp:** Tartsd a könyvtár verzióját szinkronban a hivatalos Aspose kiadási jegyzékekkel; az újabb verziók biztonsági javításokat tartalmaznak, amelyek különösen fontosak külső tartalom betöltésekor. +> **Pro tipp:** Tartsd a könyvtár verzióját összhangban a hivatalos Aspose kiadási jegyzékekkel; az újabb verziók biztonsági javításokat adnak, amelyek különösen fontosak külső tartalom betöltésekor. + +## Hogyan konfigurálod a sandbox beállításait? (retrieve page title java) -## Configure Sandbox Options (retrieve page title java) +Az első tényleges lépés a **Aspose HTML sandbox létrehozásában** az, hogy meghatározd, hogyan viselkedjen a virtuális böngésző. Utánozhatsz egy asztali, egy mobil eszközt, vagy akár egy egyedi képernyőméretet. -Az első valódi lépés a **creating an Aspose HTML sandbox**-ban az, hogy eldöntsd, hogyan viselkedjen a virtuális böngésző. Utánozhatsz egy asztali gépet, egy mobil eszközt, vagy akár egy egyedi képernyőméretet. +`SandboxOptions` konfigurálja a sandbox viselkedését, például a viewport méretét, a user‑agent karakterláncot és a timeout értékeket. Lehetővé teszi, hogy szabályozd, hogyan jelenjen meg az oldal és milyen erőforrások legyenek engedélyezve. ```java import com.aspose.html.sandbox.SandboxOptions; @@ -81,11 +117,12 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -Miért fontos ez? A viewport mérete befolyásolja a CSS média lekérdezéseket, míg a user‑agent hatással lehet a szerver‑oldali tartalomnegotiációra. Ezek explicit beállítása biztosítja, hogy a később **retrieve page title java**-t kapott oldal pontosan úgy jelenjen meg, ahogy elvárod. +Miért fontos ez? A viewport méret befolyásolja a CSS media query‑ket, míg a user‑agent hatással lehet a szerver‑oldali tartalomnegotiációra. Az explicit beállítás biztosítja, hogy a később **retrieve page title java**-t végző oldal pontosan úgy jelenjen meg, ahogy elvárod. -## Sandbox példány létrehozása +## Hogyan hozod létre a sandbox példányt? -Now that we have our options, we can spin up the sandbox itself. +Most, hogy megvannak a beállításaink, elindíthatjuk magát a sandboxot. +`Sandbox` az izolált Chromium motor példánya, amely a JVM‑ben fut. Biztonságos környezetet hoz létre, ahol a HTML betölthető és végrehajtható anélkül, hogy a host fájlrendszert érintené. ```java import com.aspose.html.sandbox.Sandbox; @@ -94,11 +131,12 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -Gondolj a `Sandbox`-ra, mint egy könnyű, izolált Chromium motorra, amely a Java folyamatodban él. Nem érinti a fájlrendszert, hacsak nem adod meg kifejezetten, ami tökéletessé teszi a biztonságos adatgyűjtéshez. +Gondolj a `Sandbox`-ra, mint egy könnyű, izolált Chromium motorra, amely a Java folyamatodban él. Nem érinti a fájlrendszert, hacsak nem adod meg kifejezetten, ami tökéletessé teszi a biztonságos adatgyűjtéshez. -## Külső oldal betöltése a Sandboxon belül +## Hogyan töltesz be egy külső oldalt a sandboxon belül? -With the sandbox ready, loading a remote page is as simple as passing the URL and the sandbox instance to `HtmlDocument`. +Miután a sandbox készen áll, egy távoli oldal betöltése olyan egyszerű, mint az URL és a sandbox példány átadása a `HtmlDocument`-nek. +`HtmlDocument` egy a sandboxba betöltött HTML oldalt képvisel, DOM hozzáférést, renderelési képességeket és JavaScript végrehajtást biztosít. ```java import com.aspose.html.HtmlDocument; @@ -107,28 +145,31 @@ import com.aspose.html.HtmlDocument; HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); ``` -> **Különleges eset:** Ha a céloldal hitelesítést vagy átirányítást igényel, előre konfigurálhatod a `HttpClient` kezelőket, és átadhatod őket `HtmlLoadOptions`‑on keresztül. Ez meghaladja a gyors útmutató kereteit, de az API támogatja. +> **Különleges eset:** Ha a céloldal hitelesítést vagy átirányítást igényel, előre konfigurálhatod a `HttpClient` kezelőket, és átadhatod őket `HtmlLoadOptions`‑on keresztül. Ez meghaladja a gyors útmutató keretét, de az API támogatja. -## Az oldal címének elérése – retrieve page title java +## Hogyan férsz hozzá a page title-hez? (retrieve page title java) -Now comes the part you asked for: extracting the page title while staying inside the sandbox. The `HtmlDocument` class exposes a `getTitle()` method that reads the `<title>` element. +Most jön a kért rész: a page title kinyerése miközben a sandboxon belül maradsz. A `HtmlDocument` osztály egy `getTitle()` metódust biztosít, amely beolvassa a `<title>` elemet. +`getTitle()` visszaadja az oldal `<title>` elemének szövegtartalmát, egyszerű módot biztosítva annak ellenőrzésére, hogy az oldal helyesen betöltődött-e. ```java // Step 4 – read and print the title System.out.println("Title inside sandbox: " + htmlDoc.getTitle()); ``` -When you run the full program against `https://example.com`, you should see: +Ha a teljes programot a `https://example.com` ellen futtatod, a következőt kell látnod: ``` Title inside sandbox: Example Domain ``` -Ez a sor bizonyítja, hogy sikeresen **created an Aspose HTML sandbox**-t hoztunk létre, betöltöttünk egy távoli oldalt, és **retrieved page title java**-t anélkül, hogy elhagytuk volna az izolált környezetet. +Ez a sor bizonyítja, hogy sikeresen **létrehoztunk egy Aspose HTML sandboxot**, betöltöttünk egy távoli oldalt, és **retrieve page title java**‑t hajtottunk végre anélkül, hogy elhagytuk volna az izolált környezetet. -## Erőforrások tisztítása +## Hogyan tisztítod meg az erőforrásokat? -Aspose.HTML objects hold native resources, so it’s crucial to dispose of them explicitly. Forgetting to do so can lead to memory leaks, especially when processing many pages in a loop. +Aspose.HTML objektumok natív erőforrásokat tartanak, ezért fontos, hogy kifejezetten eldobd őket. Elfelejtésük memória szivárgáshoz vezethet, különösen sok oldal ciklikus feldolgozása esetén. + +`dispose()` felszabadítja az Aspose.HTML objektumok által tartott natív erőforrásokat, megakadályozva a memória szivárgást és biztosítva, hogy a JVM gyorsan visszakaphassa a memóriát. ```java // Step 5 – release native resources @@ -136,11 +177,11 @@ htmlDoc.dispose(); sandboxInstance.dispose(); ``` -> **Miért kell felszabadítani?** Az alatta lévő Chromium motor natív memóriát és fájlkezelőket foglal le. A `dispose()` meghívása azt mondja a JVM-nek, hogy azonnal szabadítsa fel őket, a finalizerekre várás helyett. +> **Miért dobjuk el?** Az alatta lévő Chromium motor natív memóriát és fájlkezelőket foglal le. A `dispose()` hívása azt mondja a JVM-nek, hogy azonnal szabadítsa fel ezeket, a finalizerekre várás helyett. ## Teljes működő példa -Below is the complete program you can copy into a file named `SandboxExample.java`. Compile with `javac` and run with `java`. All steps are in the correct order, and every import is listed. +Az alábbiakban a teljes programot találod, amelyet bemásolhatsz egy `SandboxExample.java` nevű fájlba. Fordítsd `javac`‑el és futtasd `java`‑val. Minden lépés a helyes sorrendben van, és minden import felsorolásra került. ```java import com.aspose.html.HtmlDocument; @@ -172,32 +213,54 @@ public class SandboxExample { } ``` +![Java kód képernyőképe, amely Aspose HTML sandboxot hoz létre](/images/create-aspose-html-sandbox.png "Aspose HTML sandbox létrehozásának példája") + ### Várt kimenet ``` Title inside sandbox: Example Domain ``` -Ha a `https://example.com`-ot egy másik URL-re cseréled, a kiírt cím az adott oldal `<title>` címkéjét fogja tükrözni – feltéve, hogy a site anonim hozzáférést engedélyez. +Ha a `https://example.com`-ot egy másik URL‑re cseréled, a kiírt cím a megfelelő oldal `<title>` címkéjét fogja mutatni – feltéve, hogy a webhely engedélyezi az anonim hozzáférést. + +## Gyakorlati tippek és gyakori buktatók -## Gyakorlati tippek és gyakori csapdák +- **Hálózati időkorlátok:** Alapértelmezés szerint a sandbox 60 másodperces timeout‑ot használ. Ha lassabb oldalakat érintesz, hívd meg a `sandboxOptions.setTimeout(120_000);`‑t a sandbox létrehozása előtt. +- **Java biztonsági menedzser:** Korlátozott JVM‑ben futtatáskor győződj meg róla, hogy a `java.security.policy` biztosítja a `java.net.SocketPermission`‑t a cél domainhez. +- **Több oldal feldolgozása:** Használd újra egyetlen `Sandbox` példányt; minden URL‑hez hozz létre egy új `HtmlDocument`‑ot, majd a végén dobja el. Ez csökkenti a kezdési terhelést. +- **Hibakeresés:** Állítsd be a `sandboxOptions.setDebugMode(true);`‑t, hogy részletes konzolnaplókat kapj, amelyek segítenek megtalálni, miért nem sikerült betölteni egy oldalt. -- **Network Timeouts:** Alapértelmezés szerint a sandbox 60 másodperces időkorlátot használ. Ha lassabb oldalakat érintesz, hívd a `sandboxOptions.setTimeout(120_000);`-t a sandbox létrehozása előtt. -- **Java Security Manager:** Korlátozott JVM-en belül futtatáskor győződj meg róla, hogy a `java.security.policy` megadja a `java.net.SocketPermission`-t a cél domainhez. -- **Multiple Pages:** Ha sok URL-t kell feldolgozni, használd újra egyetlen `Sandbox` példányt; csak minden URL-hez hozz létre egy új `HtmlDocument`-ot, és a végén szabadítsd fel. Ez csökkenti a kezdési terhelést. -- **Debugging:** Állítsd be a `sandboxOptions.setDebugMode(true);`-t, hogy részletes konzolnaplókat kapj, amelyek segítenek megtalálni, miért nem töltődött be egy oldal. +## Gyakran feltett kérdések -## Összegzés +**K: Használhatom ezt a sandboxot egy headless CI pipeline‑ban?** +V: Igen. A sandbox látható UI nélkül fut, és bármely, Java 8+‑t támogató szerveren végrehajtható. -Most **created an Aspose HTML sandbox**-t hoztunk létre Java-ban, beállítottuk egy kiszámítható viewport-ra, betöltöttünk egy külső oldalt, és bemutattuk, hogyan **retrieve page title java**-t lehet biztonságosan és hatékonyan elérni. Az egész folyamat – a beállítástól az erőforrások tisztításáig – egy kompakt, újrahasználható kódrészletben van összefoglalva. +**K: Támogatja a sandbox a JavaScript végrehajtást?** +V: Teljes mértékben. A Chromium‑t használja a háttérben, így a modern JavaScript, beleértve az ES6 funkciókat is, helyesen fut. -Most már ezt az alapot felhasználva bővítheted: meta címkék kigyűjtése, képernyőképek készítése, vagy akár JavaScript futtatása a sandboxon belül. A lehetőségek olyan szélesek, mint maga a web. +**K: Milyen nagy oldalakat képes kezelni a sandbox?** +V: A motor akár 200 MB méretű oldalakat is képes renderelni, csak a host gép memóriája korlátozza. -Van kérdésed a hitelesítés, proxy beállítások vagy a PDF-ek renderelése a sandboxból? Írj egy megjegyzést, és együtt megvizsgáljuk ezeket a fejlett szcenáriókat. Boldog kódolást! +**K: Mi van, ha a céloldal blokkolja az automatizált kéréseket?** +V: Testreszabhatod a `User-Agent` karakterláncot a `SandboxOptions`‑ban, vagy süti‑adatokat adhatod meg `HtmlLoadOptions`‑on keresztül, hogy egy normál böngészőt utánozz. + +**K: Van mód a betöltött oldal képernyőképet készíteni?** +V: Igen. A dokumentum betöltése után hívd meg a `document.save("snapshot.png", SaveFormat.Png);`‑t, hogy PNG képet exportálj a renderelt oldalról. + +**Utolsó frissítés:** 2026-09-03 +**Tesztelve ezzel:** Aspose.HTML for Java 23.1 +**Szerző:** Aspose + +## Kapcsolódó oktatóanyagok + +- [Hogyan használjuk a sandboxot HTML‑ról PDF‑re Java lépésről‑lépésre útmutató](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [PDF létrehozása HTML‑ből az Aspose.HTML for Java segítségével – Sandbox](/html/java/configuring-environment/implement-sandboxing/) +- [Java‑ban a szkript végrehajtás engedélyezése – Teljes Aspose HTML útmutató](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-guide/) -![Screenshot of Java code creating an Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "create aspose html sandbox 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/indonesian/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/indonesian/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index 7ece504971..6db06aba8b 100644 --- a/html/indonesian/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/indonesian/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,25 +1,52 @@ --- category: general -date: 2026-01-04 -description: Buat sandbox Aspose HTML di Java dan pelajari cara mengambil judul halaman - dengan contoh langkah demi langkah. Kode cepat yang dapat dijalankan disertakan. +date: 2026-09-03 +description: Cara membuat Aspose sandbox java dan mengambil judul halaman java dengan + pemuatan HTML yang bersih dan terisolasi. Panduan langkah demi langkah dengan kode + yang dapat dijalankan. draft: false keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title -language: id -og_description: Buat sandbox Aspose HTML di Java dan dapatkan judul halaman Java secara - instan. Ikuti panduan terperinci ini untuk memuat HTML yang bersih dan terisolasi. -og_title: Buat Sandbox Aspose HTML – Tutorial Java +lastmod: 2026-09-03 +og_description: Pelajari cara membuat Aspose sandbox di Java dan mengambil judul halaman + java secara instan. Langkah‑langkah terperinci, praktik terbaik, dan contoh kode + lengkap. +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: Cara membuat Aspose sandbox java – panduan lengkap +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: Buat Aspose HTML Sandbox – Panduan Java Lengkap +title: Cara membuat Aspose sandbox java – panduan lengkap url: /id/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -27,26 +54,35 @@ url: /id/java/configuring-environment/create-aspose-html-sandbox-complete-java-g {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Buat Aspose HTML Sandbox – Panduan Lengkap Java +# Cara membuat Aspose sandbox java – panduan lengkap -Pernah perlu **membuat sandbox Aspose HTML** tetapi tidak yakin bagaimana cara menjaga halaman yang dimuat tetap terisolasi dari JVM utama Anda? Mungkin Anda sedang membangun web‑scraper, harness pengujian, atau hanya ingin bereksperimen dengan halaman remote tanpa menimbulkan efek samping. Pada tutorial ini kami akan membahas langkah demi langkah, dan juga menunjukkan **cara mengambil judul halaman java** dari dalam sandbox. +Pernah membutuhkan untuk **membuat sandbox Aspose HTML** tetapi tidak yakin bagaimana menjaga halaman yang dimuat terisolasi dari JVM utama Anda? Mungkin Anda sedang membangun web‑scraper, harness pengujian, atau hanya ingin bereksperimen dengan halaman remote tanpa menimbulkan efek samping. Dalam tutorial ini kami akan membahas hal tersebut, dan juga akan menunjukkan **cara mengambil judul halaman java** dari dalam sandbox. -Solusinya cukup sederhana: konfigurasikan objek `SandboxOptions`, buat sebuah `Sandbox`, muat URL eksternal dengan `HtmlDocument`, baca judulnya, dan akhirnya bersihkan semuanya. Pada akhir tutorial Anda akan memiliki potongan kode mandiri yang dapat Anda sisipkan ke proyek Java apa pun yang menggunakan Aspose.HTML for Java 23.1 (atau lebih baru). +Solusinya cukup sederhana: konfigurasikan objek `SandboxOptions`, jalankan sebuah `Sandbox`, muat URL eksternal dengan `HtmlDocument`, baca judulnya, dan akhirnya bersihkan semuanya. Pada akhir tutorial Anda akan memiliki potongan kode mandiri yang dapat Anda sisipkan ke dalam proyek Java apa pun yang menggunakan Aspose.HTML for Java 23.1 (atau lebih baru). -## Apa yang Akan Anda Pelajari +## Jawaban Cepat +- **Apa itu sandbox Aspose?** Ini adalah lingkungan berbasis Chromium yang terisolasi yang berjalan di dalam JVM Anda tanpa menyentuh sistem file. +- **Mengapa menggunakan sandbox untuk ekstraksi judul halaman?** Ini menjamin bahwa skrip eksternal tidak dapat memengaruhi status atau memori aplikasi Anda. +- **Versi Java apa yang dibutuhkan?** Java 8 atau lebih baru; perpustakaan ini juga bekerja dengan Java 11, 17, dan versi selanjutnya. +- **Apakah saya memerlukan lisensi?** Lisensi percobaan gratis sudah cukup untuk pengembangan; lisensi komersial diperlukan untuk produksi. +- **Berapa banyak baris kode yang dibutuhkan?** Kurang dari 30 baris untuk logika inti, ditambah kode pengaturan opsional. -- Cara **membuat sandbox Aspose HTML** dengan pengaturan viewport dan user‑agent khusus. -- Langkah tepat untuk **mengambil judul halaman java** dari halaman remote sambil tetap berada di dalam sandbox. -- Jebakan umum (seperti lupa membuang sumber daya) dan tips praktik terbaik yang menjaga jejak memori tetap rendah. -- Program Java lengkap yang siap‑jalankan, dapat Anda salin‑tempel, kompilasi, dan eksekusi. +## Apa itu sandbox Aspose java? +`Sandbox` adalah mesin peramban ringan dan terisolasi milik Aspose.HTML yang berjalan di dalam proses Java. Ia menyediakan wadah aman dimana Anda dapat memuat HTML remote, mengeksekusi JavaScript, dan berinteraksi dengan DOM tanpa mengekspos lingkungan host Anda. -> **Prasyarat** – Anda memerlukan lisensi Aspose.HTML for Java yang valid (versi trial gratis juga dapat) dan Java 8 atau lebih baru terpasang. Tidak ada pustaka pihak‑ketiga tambahan yang diperlukan. +## Mengapa menggunakan sandbox saat mengambil judul halaman java? +Aspose.HTML mendukung **lebih dari 50 format input dan output** dan dapat merender dokumen ratusan halaman tanpa memuat seluruh file ke dalam memori. Menggunakan sandbox menambahkan lapisan keamanan ekstra, memastikan bahwa skrip berbahaya pada halaman target tidak dapat keluar dari kontainer. Pendekatan ini mengurangi risiko kebocoran memori dan melindungi JVM Anda dari efek samping yang tidak diinginkan. ---- +## Prasyarat +- Lisensi Aspose.HTML untuk Java yang valid (versi percobaan dapat digunakan untuk pengujian). +- Java 8 atau lebih baru terpasang di mesin pengembangan Anda. +- Alat build Maven atau Gradle untuk mengelola dependensi. + +> **Tips Pro:** Jaga agar versi perpustakaan selaras dengan catatan rilis resmi Aspose; rilis yang lebih baru menyertakan patch keamanan yang penting saat memuat konten yang tidak dipercaya. -## Langkah 1: Siapkan Proyek Anda +## Langkah 1: siapkan proyek Anda -Sebelum masuk ke kode, pastikan `pom.xml` (Maven) atau file Gradle Anda menyertakan dependensi Aspose.HTML: +Sebelum kita masuk ke kode, pastikan `pom.xml` (Maven) atau file Gradle Anda menyertakan dependensi Aspose.HTML: ```xml <!-- Maven --> @@ -63,13 +99,12 @@ Jika Anda menggunakan Gradle: implementation 'com.aspose:aspose-html:23.1' ``` -> **Tip pro:** Jaga versi pustaka tetap sinkron dengan catatan rilis resmi Aspose; versi yang lebih baru menambahkan perbaikan keamanan yang sangat penting saat memuat konten eksternal. - ---- +> **Tips Pro:** Jaga agar versi perpustakaan selaras dengan catatan rilis resmi Aspose; rilis yang lebih baru menyertakan perbaikan keamanan yang sangat penting saat memuat konten eksternal. -## Konfigurasikan Opsi Sandbox (mengambil judul halaman java) +## Bagaimana cara mengonfigurasi opsi sandbox? (mengambil judul halaman java) -Langkah nyata pertama dalam **membuat sandbox Aspose HTML** adalah memutuskan bagaimana browser virtual harus berperilaku. Anda dapat meniru desktop, perangkat seluler, atau bahkan ukuran layar khusus. +Langkah nyata pertama dalam **membuat sandbox Aspose HTML** adalah memutuskan bagaimana peramban virtual harus berperilaku. Anda dapat meniru desktop, perangkat seluler, atau bahkan ukuran layar khusus. +`SandboxOptions` mengonfigurasi perilaku sandbox, seperti ukuran viewport, string user‑agent, dan nilai timeout. Ini memungkinkan Anda mengontrol bagaimana halaman dirender dan sumber daya apa yang diizinkan. ```java import com.aspose.html.sandbox.SandboxOptions; @@ -81,13 +116,12 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -Mengapa ini penting? Ukuran viewport memengaruhi kueri media CSS, sementara user‑agent dapat memengaruhi negosiasi konten sisi server. Menetapkannya secara eksplisit memastikan halaman yang kemudian Anda **ambil judulnya java** ditampilkan persis seperti yang Anda harapkan. - ---- +Mengapa ini penting? Ukuran viewport memengaruhi query media CSS, sementara user‑agent dapat memengaruhi negosiasi konten di sisi server. Menetapkannya secara eksplisit memastikan halaman yang kemudian Anda **ambil judul halaman java** dirender persis seperti yang Anda harapkan. -## Buat Instance Sandbox +## Bagaimana cara membuat instance sandbox? -Setelah opsi kita siap, kita dapat memulai sandbox itu sendiri. +Sekarang setelah kita memiliki opsi, kita dapat memulai sandbox itu sendiri. +`Sandbox` adalah instance mesin Chromium terisolasi yang berjalan di dalam JVM. Ia menciptakan lingkungan aman dimana HTML dapat dimuat dan dieksekusi tanpa menyentuh sistem file host. ```java import com.aspose.html.sandbox.Sandbox; @@ -96,13 +130,12 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -Anggap `Sandbox` sebagai mesin Chromium ringan yang terisolasi dan berjalan di dalam proses Java Anda. Ia tidak menyentuh sistem berkas kecuali Anda secara eksplisit memintanya, sehingga cocok untuk scraping yang aman. +Anggap `Sandbox` sebagai mesin Chromium ringan dan terisolasi yang hidup di dalam proses Java Anda. Ia tidak menyentuh sistem file kecuali Anda secara eksplisit memintanya, sehingga sangat cocok untuk scraping yang aman. ---- - -## Muat Halaman Eksternal di Dalam Sandbox +## Bagaimana cara memuat halaman eksternal di dalam sandbox? -Dengan sandbox siap, memuat halaman remote semudah memberikan URL dan instance sandbox ke `HtmlDocument`. +Dengan sandbox siap, memuat halaman remote semudah mengirimkan URL dan instance sandbox ke `HtmlDocument`. +`HtmlDocument` mewakili halaman HTML yang dimuat ke dalam sandbox, menyediakan akses DOM, kemampuan rendering, dan eksekusi JavaScript. ```java import com.aspose.html.HtmlDocument; @@ -111,32 +144,30 @@ import com.aspose.html.HtmlDocument; HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); ``` -> **Kasus tepi:** Jika situs target memerlukan autentikasi atau pengalihan, Anda dapat pra‑konfigurasi handler `HttpClient` dan melewatkannya melalui `HtmlLoadOptions`. Itu berada di luar lingkup panduan singkat ini, tetapi API mendukungnya. +> **Kasus khusus:** Jika situs target memerlukan autentikasi atau pengalihan, Anda dapat pra‑konfigurasi handler `HttpClient` dan mengirimkannya melalui `HtmlLoadOptions`. Itu di luar lingkup panduan singkat ini, tetapi API mendukungnya. ---- +## Bagaimana cara mengakses judul halaman? (mengambil judul halaman java) -## Akses Judul Halaman – mengambil judul halaman java - -Sekarang bagian yang Anda minta: mengekstrak judul halaman sambil tetap berada di dalam sandbox. Kelas `HtmlDocument` menyediakan metode `getTitle()` yang membaca elemen `<title>`. +Sekarang bagian yang Anda minta: mengekstrak judul halaman sambil tetap berada di dalam sandbox. Kelas `HtmlDocument` menyediakan metode `getTitle()` yang membaca elemen `<title>`. +`getTitle()` mengembalikan konten teks dari elemen `<title>` halaman, memberi Anda cara sederhana untuk memverifikasi bahwa halaman berhasil dimuat. ```java // Step 4 – read and print the title System.out.println("Title inside sandbox: " + htmlDoc.getTitle()); ``` -Saat Anda menjalankan program lengkap melawan `https://example.com`, Anda akan melihat: +Saat Anda menjalankan program lengkap terhadap `https://example.com`, Anda harus melihat: ``` Title inside sandbox: Example Domain ``` -Baris itu membuktikan bahwa kita telah berhasil **membuat sandbox Aspose HTML**, memuat halaman remote, dan **mengambil judul halaman java** tanpa pernah meninggalkan lingkungan terisolasi. - ---- +Baris itu membuktikan bahwa kami telah berhasil **membuat sandbox Aspose HTML**, memuat halaman remote, dan **mengambil judul halaman java** tanpa pernah meninggalkan lingkungan terisolasi. -## Bersihkan Sumber Daya +## Bagaimana cara membersihkan sumber daya? -Objek Aspose.HTML menyimpan sumber daya native, jadi sangat penting untuk membuangnya secara eksplisit. Lupa melakukannya dapat menyebabkan kebocoran memori, terutama saat memproses banyak halaman dalam sebuah loop. +Objek Aspose.HTML menyimpan sumber daya native, sehingga penting untuk membuangnya secara eksplisit. Lupa melakukannya dapat menyebabkan kebocoran memori, terutama saat memproses banyak halaman dalam loop. +`dispose()` melepaskan sumber daya native yang dipegang oleh objek Aspose.HTML, mencegah kebocoran memori dan memastikan JVM dapat mengambil kembali memori dengan cepat. ```java // Step 5 – release native resources @@ -144,13 +175,11 @@ htmlDoc.dispose(); sandboxInstance.dispose(); ``` -> **Mengapa harus dibuang?** Mesin Chromium di bawahnya mengalokasikan memori native dan handle berkas. Memanggil `dispose()` memberi tahu JVM untuk membebaskan sumber daya tersebut segera alih‑alih menunggu finalizer. - ---- +> **Mengapa membuang?** Mesin Chromium yang mendasari mengalokasikan memori native dan handle file. Memanggil `dispose()` memberi tahu JVM untuk membebaskan sumber daya tersebut segera alih-alih menunggu finalizer. -## Contoh Lengkap yang Berfungsi +## Contoh lengkap yang berfungsi -Berikut adalah program lengkap yang dapat Anda salin ke file bernama `SandboxExample.java`. Kompilasi dengan `javac` dan jalankan dengan `java`. Semua langkah berada dalam urutan yang benar, dan setiap import tercantum. +Berikut adalah program lengkap yang dapat Anda salin ke dalam file bernama `SandboxExample.java`. Kompilasi dengan `javac` dan jalankan dengan `java`. Semua langkah berada dalam urutan yang benar, dan setiap import tercantum. ```java import com.aspose.html.HtmlDocument; @@ -182,6 +211,8 @@ public class SandboxExample { } ``` +![Tangkapan layar kode Java yang membuat sandbox Aspose HTML](/images/create-aspose-html-sandbox.png "contoh sandbox aspose html") + ### Output yang Diharapkan ``` @@ -190,28 +221,44 @@ Title inside sandbox: Example Domain Jika Anda mengganti `https://example.com` dengan URL lain, judul yang dicetak akan mencerminkan tag `<title>` halaman tersebut—asalkan situs mengizinkan akses anonim. ---- +## Tips praktis & jebakan umum -## Tips Praktis & Jebakan Umum +- **Timeout jaringan:** Secara default sandbox menggunakan timeout 60 detik. Jika Anda mengakses situs yang lebih lambat, panggil `sandboxOptions.setTimeout(120_000);` sebelum membuat sandbox. +- **Java security manager:** Saat berjalan di dalam JVM yang dibatasi, pastikan `java.security.policy` memberikan `java.net.SocketPermission` untuk domain target. +- **Memproses banyak halaman:** Gunakan kembali satu instance `Sandbox`; cukup buat `HtmlDocument` baru untuk setiap URL dan buang setelahnya. Ini mengurangi overhead startup. +- **Debugging:** Atur `sandboxOptions.setDebugMode(true);` untuk mendapatkan log konsol yang detail yang dapat membantu Anda menemukan mengapa halaman gagal dimuat. -- **Timeout Jaringan:** Secara default sandbox menggunakan timeout 60 detik. Jika Anda mengakses situs yang lebih lambat, panggil `sandboxOptions.setTimeout(120_000);` sebelum membuat sandbox. -- **Java Security Manager:** Saat berjalan di dalam JVM yang dibatasi, pastikan `java.security.policy` memberikan `java.net.SocketPermission` untuk domain target. -- **Banyak Halaman:** Jika Anda perlu memproses banyak URL, gunakan kembali satu instance `Sandbox`; cukup buat `HtmlDocument` baru untuk setiap URL dan buang setelah selesai. Ini mengurangi overhead startup. -- **Debugging:** Setel `sandboxOptions.setDebugMode(true);` untuk mendapatkan log konsol yang detail sehingga Anda dapat mengidentifikasi mengapa sebuah halaman gagal dimuat. +## Pertanyaan yang Sering Diajukan ---- +**T: Bisakah saya menggunakan sandbox ini dalam pipeline CI tanpa UI?** +J: Ya. Sandbox berjalan tanpa UI yang terlihat dan dapat dijalankan di server mana pun yang mendukung Java 8+. -## Kesimpulan +**T: Apakah sandbox mendukung eksekusi JavaScript?** +J: Tentu saja. Ia menggunakan Chromium di balik layar, sehingga JavaScript modern, termasuk fitur ES6, berjalan dengan benar. -Kita baru saja **membuat sandbox Aspose HTML** di Java, mengkonfigurasikannya dengan viewport yang dapat diprediksi, memuat halaman eksternal, dan mendemonstrasikan cara **mengambil judul halaman java** dengan aman dan efisien. Seluruh alur—dari penyiapan opsi hingga pembersihan sumber daya—terbungkus dalam potongan kode yang ringkas dan dapat dipakai ulang. +**T: Seberapa besar halaman yang dapat ditangani sandbox?** +J: Mesin dapat merender halaman hingga 200 MB, dibatasi hanya oleh memori mesin host. -Sekarang Anda dapat mengambil dasar ini dan memperluasnya: scrape meta tag, tangkap screenshot, atau bahkan jalankan JavaScript di dalam sandbox. Kemungkinannya seluas web itu sendiri. +**T: Bagaimana jika situs target memblokir permintaan otomatis?** +J: Anda dapat menyesuaikan string `User-Agent` di `SandboxOptions` atau menyediakan cookie melalui `HtmlLoadOptions` untuk meniru peramban biasa. -Punya pertanyaan tentang penanganan autentikasi, pengaturan proxy, atau rendering PDF dari sandbox? Tinggalkan komentar, dan kami akan menjelajahi skenario lanjutan bersama. Selamat coding! +**T: Apakah ada cara untuk menangkap tangkapan layar halaman yang dimuat?** +J: Ya. Setelah memuat dokumen, panggil `document.save("snapshot.png", SaveFormat.Png);` untuk mengekspor gambar PNG dari halaman yang dirender. + +**Terakhir Diperbarui:** 2026-09-03 +**Diuji dengan:** Aspose.HTML for Java 23.1 +**Penulis:** Aspose + +## Tutorial Terkait + +- [Cara Menggunakan Sandbox Untuk Html Ke Pdf Java Panduan Langkah demi Langkah](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [Buat PDF dari HTML menggunakan Aspose.HTML untuk Java – Sandbox](/html/java/configuring-environment/implement-sandboxing/) +- [Aktifkan Eksekusi Skrip di Java Panduan Lengkap Aspose Html](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-guide/) -![Screenshot of Java code creating an Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "contoh pembuatan sandbox aspose 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/italian/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/italian/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index a28dbc4880..dfb3dd44eb 100644 --- a/html/italian/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/italian/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,26 +1,51 @@ --- category: general -date: 2026-01-04 -description: Crea un sandbox Aspose HTML in Java e impara come recuperare il titolo - della pagina in Java con un esempio passo‑passo. Codice rapido e eseguibile incluso. +date: 2026-09-03 +description: Come creare Aspose sandbox java e recuperare il titolo della pagina java + con un caricamento HTML pulito e isolato. Guida passo-passo con codice eseguibile. draft: false keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title -language: it -og_description: Crea un ambiente sandbox Aspose HTML in Java e recupera istantaneamente - il titolo della pagina Java. Segui questa guida dettagliata per un caricamento HTML - pulito e isolato. -og_title: Crea Aspose HTML Sandbox – Tutorial Java +lastmod: 2026-09-03 +og_description: Scopri come creare un Aspose sandbox in Java e recuperare il titolo + della pagina java istantaneamente. Passaggi dettagliati, best practices e codice + di esempio completo. +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: Come creare Aspose sandbox java – guida completa +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: Crea Aspose HTML Sandbox – Guida completa Java +title: Come creare Aspose sandbox java – guida completa url: /it/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -28,24 +53,33 @@ url: /it/java/configuring-environment/create-aspose-html-sandbox-complete-java-g {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Crea Aspose HTML Sandbox – Guida Completa per Java +# Come creare un sandbox Aspose per Java – guida completa -Hai mai avuto bisogno di **creare Aspose HTML sandbox** ma non eri sicuro di come mantenere la pagina caricata isolata dalla tua JVM principale? Forse stai costruendo un web‑scraper, un harness di test, o semplicemente vuoi sperimentare con pagine remote senza rischiare effetti collaterali. In questo tutorial ti guideremo passo passo e ti mostreremo anche **come recuperare il titolo della pagina in Java** dall'interno del sandbox. +Hai mai dovuto **creare un sandbox HTML Aspose** ma non sapevi come mantenere la pagina caricata isolata dalla tua JVM principale? Forse stai costruendo un web‑scraper, un harness di test, o vuoi semplicemente sperimentare con pagine remote senza rischiare effetti collaterali. In questo tutorial vedremo esattamente questo, e ti mostreremo anche **come recuperare il titolo della pagina in Java** dall’interno del sandbox. -La soluzione è piuttosto semplice: configura un oggetto `SandboxOptions`, avvia un `Sandbox`, carica un URL esterno con `HtmlDocument`, leggi il titolo e infine pulisci tutto. Alla fine avrai uno snippet autonomo che potrai inserire in qualsiasi progetto Java che utilizza Aspose.HTML for Java 23.1 (o versioni successive). +La soluzione è piuttosto semplice: configura un oggetto `SandboxOptions`, avvia un `Sandbox`, carica un URL esterno con `HtmlDocument`, leggi il titolo e infine pulisci tutto. Alla fine avrai uno snippet autonomo da inserire in qualsiasi progetto Java che utilizza Aspose.HTML per Java 23.1 (o versioni successive). -## Cosa Imparerai +## Risposte rapide +- **Che cos’è un sandbox Aspose?** È un ambiente isolato basato su Chromium che gira all’interno della tua JVM senza toccare il file system. +- **Perché usare un sandbox per l’estrazione del titolo della pagina?** Garantisce che gli script esterni non possano influenzare lo stato o la memoria della tua applicazione. +- **Quale versione di Java è richiesta?** Java 8 o versioni successive; la libreria funziona anche con Java 11, 17 e successive. +- **È necessaria una licenza?** Una licenza di prova gratuita è sufficiente per lo sviluppo; è richiesta una licenza commerciale per la produzione. +- **Quante righe di codice servono?** Meno di 30 righe per la logica principale, più eventuale codice di configurazione opzionale. -- Come **creare Aspose HTML sandbox** con impostazioni personalizzate di viewport e user‑agent. -- I passaggi esatti per **recuperare il titolo della pagina in Java** da una pagina remota rimanendo al sicuro all'interno del sandbox. -- Trappole comuni (come dimenticare di rilasciare le risorse) e consigli di best‑practice per mantenere basso l'utilizzo di memoria. -- Un programma Java completo, pronto all'uso, che puoi copiare‑incollare, compilare ed eseguire. +## Che cosa è create aspose sandbox java? +`Sandbox` è il motore browser leggero e isolato di Aspose.HTML che gira all’interno del processo Java. Fornisce un contenitore sicuro dove è possibile caricare HTML remoto, eseguire JavaScript e interagire con il DOM senza esporre l’ambiente host. -> **Prerequisiti** – È necessaria una licenza valida di Aspose.HTML for Java (la versione di prova gratuita funziona) e Java 8 o superiore installato. Non sono richieste librerie di terze parti aggiuntive. +## Perché usare un sandbox quando si recupera il titolo della pagina in Java? +Aspose.HTML supporta **oltre 50 formati di input e output** e può renderizzare documenti di centinaia di pagine senza caricare l’intero file in memoria. L’uso di un sandbox aggiunge un ulteriore livello di sicurezza, assicurando che eventuali script maligni nella pagina di destinazione non possano uscire dal contenitore. Questo approccio riduce il rischio di perdite di memoria e protegge la JVM da effetti collaterali indesiderati. ---- +## Prerequisiti +- Una licenza valida di Aspose.HTML per Java (la versione di prova è sufficiente per i test). +- Java 8 o versioni successive installate sulla tua macchina di sviluppo. +- Strumento di build Maven o Gradle per gestire le dipendenze. + +> **Pro tip:** Mantieni la versione della libreria allineata con le note di rilascio ufficiali di Aspose; le versioni più recenti includono patch di sicurezza critiche quando si carica contenuto non attendibile. -## Passo 1: Configura il tuo Progetto +## Passo 1: configura il tuo progetto Prima di immergerci nel codice, assicurati che il tuo `pom.xml` (Maven) o il file Gradle includa la dipendenza Aspose.HTML: @@ -58,19 +92,18 @@ Prima di immergerci nel codice, assicurati che il tuo `pom.xml` (Maven) o il fil </dependency> ``` -Se stai usando Gradle: +Se usi Gradle: ```groovy implementation 'com.aspose:aspose-html:23.1' ``` -> **Consiglio professionale:** Mantieni la versione della libreria allineata con le note di rilascio ufficiali di Aspose; le versioni più recenti includono correzioni di sicurezza particolarmente importanti quando si carica contenuto esterno. - ---- +> **Pro tip:** Mantieni la versione della libreria in sync con le note di rilascio ufficiali di Aspose; le versioni più recenti aggiungono correzioni di sicurezza particolarmente importanti quando si carica contenuto esterno. -## Configura le Opzioni del Sandbox (retrieve page title java) +## Come si configurano le opzioni del sandbox? (recuperare titolo pagina java) -Il primo vero passo per **creare un Aspose HTML sandbox** è decidere come dovrebbe comportarsi il browser virtuale. Puoi imitare un desktop, un dispositivo mobile o anche una dimensione dello schermo personalizzata. +Il primo vero passo nella **creazione di un sandbox HTML Aspose** è decidere come deve comportarsi il browser virtuale. Puoi imitare un desktop, un dispositivo mobile o persino una dimensione schermo personalizzata. +`SandboxOptions` configura il comportamento del sandbox, come la dimensione del viewport, la stringa user‑agent e i valori di timeout. Ti permette di controllare come la pagina viene renderizzata e quali risorse sono consentite. ```java import com.aspose.html.sandbox.SandboxOptions; @@ -82,11 +115,12 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -Perché è importante? La dimensione del viewport influenza le media query CSS, mentre lo user‑agent può influire sulla negoziazione dei contenuti lato server. Impostandoli esplicitamente garantisci che la pagina da cui in seguito **recupererai il titolo della pagina in Java** venga renderizzata esattamente come ti aspetti. +Perché è importante? La dimensione del viewport influenza le media query CSS, mentre lo user‑agent può influenzare la negoziazione dei contenuti lato server. Impostandoli esplicitamente garantisci che la pagina da cui **recupererai il titolo della pagina in Java** venga renderizzata esattamente come ti aspetti. -## Crea l'Istanza del Sandbox +## Come si crea l’istanza del sandbox? -Ora che abbiamo le opzioni, possiamo avviare il sandbox. +Ora che abbiamo le opzioni, possiamo avviare il sandbox stesso. +`Sandbox` è l’istanza isolata del motore Chromium che gira all’interno della JVM. Crea un ambiente sicuro dove l’HTML può essere caricato ed eseguito senza toccare il file system host. ```java import com.aspose.html.sandbox.Sandbox; @@ -95,11 +129,12 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -Considera `Sandbox` come un motore Chromium leggero e isolato che vive all'interno del tuo processo Java. Non tocca il file system a meno che non lo istruisca esplicitamente, il che lo rende perfetto per lo scraping sicuro. +Pensa a `Sandbox` come a un motore Chromium leggero e isolato che vive dentro il tuo processo Java. Non tocca il file system a meno che non glielo chiedi esplicitamente, il che lo rende perfetto per lo scraping sicuro. -## Carica una Pagina Esterna all'Interno del Sandbox +## Come si carica una pagina esterna dentro il sandbox? -Con il sandbox pronto, caricare una pagina remota è semplice come passare l'URL e l'istanza del sandbox a `HtmlDocument`. +Con il sandbox pronto, caricare una pagina remota è semplice come passare l’URL e l’istanza del sandbox a `HtmlDocument`. +`HtmlDocument` rappresenta una pagina HTML caricata nel sandbox, fornendo accesso al DOM, capacità di rendering ed esecuzione JavaScript. ```java import com.aspose.html.HtmlDocument; @@ -108,11 +143,12 @@ import com.aspose.html.HtmlDocument; HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); ``` -> **Caso limite:** Se il sito di destinazione richiede autenticazione o reindirizzamenti, puoi pre‑configurare i gestori `HttpClient` e passarli tramite `HtmlLoadOptions`. Questo è al di fuori dello scopo di questa breve guida, ma l'API lo supporta. +> **Caso limite:** Se il sito di destinazione richiede autenticazione o reindirizzamenti, puoi pre‑configurare i gestori `HttpClient` e passarli tramite `HtmlLoadOptions`. Questo è oltre lo scopo di questa breve guida, ma l’API lo supporta. -## Accedi al Titolo della Pagina – retrieve page title java +## Come si accede al titolo della pagina? (recuperare titolo pagina java) -Ora arriva la parte che hai richiesto: estrarre il titolo della pagina rimanendo all'interno del sandbox. La classe `HtmlDocument` espone un metodo `getTitle()` che legge l'elemento `<title>`. +Ora arriva la parte che ti interessa: estrarre il titolo della pagina rimanendo dentro il sandbox. La classe `HtmlDocument` espone un metodo `getTitle()` che legge l’elemento `<title>`. +`getTitle()` restituisce il contenuto testuale dell’elemento `<title>` della pagina, fornendoti un modo semplice per verificare che la pagina sia stata caricata correttamente. ```java // Step 4 – read and print the title @@ -125,11 +161,12 @@ Quando esegui il programma completo contro `https://example.com`, dovresti veder Title inside sandbox: Example Domain ``` -Questa riga dimostra che abbiamo **creato con successo un Aspose HTML sandbox**, caricato una pagina remota e **recuperato il titolo della pagina in Java** senza mai uscire dall'ambiente isolato. +Questa riga dimostra che abbiamo **creato con successo un sandbox HTML Aspose**, caricato una pagina remota e **recuperato il titolo della pagina in Java** senza mai uscire dall’ambiente isolato. -## Pulisci le Risorse +## Come si puliscono le risorse? -Gli oggetti Aspose.HTML detengono risorse native, quindi è fondamentale rilasciarli esplicitamente. Dimenticare di farlo può causare perdite di memoria, specialmente quando si elaborano molte pagine in un ciclo. +Gli oggetti Aspose.HTML mantengono risorse native, quindi è fondamentale liberarli esplicitamente. Dimenticare di farlo può causare perdite di memoria, specialmente quando si elaborano molte pagine in un ciclo. +`dispose()` rilascia le risorse native detenute dagli oggetti Aspose.HTML, prevenendo perdite di memoria e consentendo alla JVM di recuperare la memoria prontamente. ```java // Step 5 – release native resources @@ -137,11 +174,11 @@ htmlDoc.dispose(); sandboxInstance.dispose(); ``` -> **Perché rilasciare?** Il motore Chromium sottostante allocca memoria nativa e handle di file. Chiamare `dispose()` indica alla JVM di liberarli immediatamente invece di attendere i finalizzatori. +> **Perché chiamare dispose()?** Il motore Chromium sottostante assegna memoria nativa e handle di file. Chiamare `dispose()` indica alla JVM di liberarli immediatamente invece di attendere i finalizzatori. -## Esempio Completo Funzionante +## Esempio completo funzionante -Di seguito trovi il programma completo che puoi copiare in un file chiamato `SandboxExample.java`. Compila con `javac` ed esegui con `java`. Tutti i passaggi sono nell'ordine corretto e ogni import è elencato. +Di seguito trovi il programma completo che puoi copiare in un file chiamato `SandboxExample.java`. Compilalo con `javac` ed eseguilo con `java`. Tutti i passaggi sono nell’ordine corretto e ogni import è elencato. ```java import com.aspose.html.HtmlDocument; @@ -173,36 +210,56 @@ public class SandboxExample { } ``` -### Output Atteso +![Screenshot del codice Java che crea un sandbox Aspose HTML](/images/create-aspose-html-sandbox.png "crea esempio di sandbox Aspose HTML") + +### Output previsto ``` Title inside sandbox: Example Domain ``` -Se sostituisci `https://example.com` con un altro URL, il titolo stampato rifletterà il tag `<title>` di quella pagina, a condizione che il sito consenta l'accesso anonimo. +Se sostituisci `https://example.com` con un altro URL, il titolo stampato rifletterà il tag `<title>` di quella pagina — a condizione che il sito consenta l’accesso anonimo. ---- +## Consigli pratici & errori comuni -## Consigli Pratici & Trappole Comuni +- **Timeout di rete:** Per impostazione predefinita il sandbox usa un timeout di 60 secondi. Se accedi a siti più lenti, chiama `sandboxOptions.setTimeout(120_000);` prima di creare il sandbox. +- **Security manager di Java:** Quando esegui in una JVM con restrizioni, assicurati che il `java.security.policy` conceda `java.net.SocketPermission` per il dominio di destinazione. +- **Elaborazione di più pagine:** Riutilizza una singola istanza di `Sandbox`; crea semplicemente un nuovo `HtmlDocument` per ogni URL e poi lo `dispose()` dopo. Questo riduce l’overhead di avvio. +- **Debugging:** Imposta `sandboxOptions.setDebugMode(true);` per ottenere log dettagliati in console che possono aiutare a individuare perché una pagina non è stata caricata. -- **Timeout di Rete:** Per impostazione predefinita il sandbox utilizza un timeout di 60 secondi. Se stai accedendo a siti più lenti, chiama `sandboxOptions.setTimeout(120_000);` prima di creare il sandbox. -- **Java Security Manager:** Quando si esegue all'interno di una JVM con restrizioni, assicurati che il `java.security.policy` conceda `java.net.SocketPermission` per il dominio di destinazione. -- **Pagine Multiple:** Se devi elaborare molti URL, riutilizza una singola istanza di `Sandbox`; crea semplicemente un nuovo `HtmlDocument` per ogni URL e rilasciare quest'ultimo successivamente. Questo riduce l'overhead di avvio. -- **Debugging:** Imposta `sandboxOptions.setDebugMode(true);` per ottenere log dettagliati sulla console che possono aiutarti a individuare il motivo per cui una pagina non è stata caricata. +## Domande frequenti ---- +**D: Posso usare questo sandbox in una pipeline CI headless?** +R: Sì. Il sandbox gira senza UI visibile e può essere eseguito su qualsiasi server che supporta Java 8+. -## Conclusione +**D: Il sandbox supporta l’esecuzione di JavaScript?** +R: Assolutamente. Usa Chromium sotto il cofano, quindi JavaScript moderno, incluse le funzionalità ES6, funziona correttamente. -Abbiamo appena **creato un Aspose HTML sandbox** in Java, configurato per un viewport prevedibile, caricato una pagina esterna e dimostrato come **recuperare il titolo della pagina in Java** in modo sicuro ed efficiente. L'intero flusso — dalla configurazione delle opzioni alla pulizia delle risorse — è racchiuso in uno snippet compatto e riutilizzabile. +**D: Quanto grande può essere una pagina gestita dal sandbox?** +R: Il motore può renderizzare pagine fino a 200 MB, limitato solo dalla memoria della macchina host. -Ora puoi prendere questa base e ampliarla: estrarre meta tag, catturare screenshot o persino eseguire JavaScript all'interno del sandbox. Le possibilità sono vaste quanto il web stesso. +**D: Cosa succede se il sito di destinazione blocca le richieste automatizzate?** +R: Puoi personalizzare la stringa `User-Agent` in `SandboxOptions` o fornire cookie tramite `HtmlLoadOptions` per imitare un browser normale. -Hai domande su come gestire l'autenticazione, le impostazioni proxy o il rendering di PDF dal sandbox? Lascia un commento e esploreremo insieme questi scenari avanzati. Buona programmazione! +**D: È possibile catturare uno screenshot della pagina caricata?** +R: Sì. Dopo aver caricato il documento, chiama `document.save("snapshot.png", SaveFormat.Png);` per esportare un’immagine PNG della pagina renderizzata. + + + +**Ultimo aggiornamento:** 2026-09-03 +**Testato con:** Aspose.HTML per Java 23.1 +**Autore:** Aspose + +## Tutorial correlati + +- [How To Use Sandbox For Html To Pdf Java Step By Step Guide](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [Create PDF from HTML using Aspose.HTML for Java – Sandbox](/html/java/configuring-environment/implement-sandboxing/) +- [Enable Script Execution In Java Complete Aspose Html Guide](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-guide/) -![Screenshot del codice Java che crea un Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "esempio di creazione di Aspose HTML sandbox") {{< /blocks/products/pf/tutorial-page-section >}} + {{< /blocks/products/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/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/japanese/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index 7db1a1e52b..48a907c637 100644 --- a/html/japanese/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/japanese/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,23 +1,48 @@ --- category: general -date: 2026-01-04 -description: JavaでAspose HTMLサンドボックスを作成し、ステップバイステップの例でページタイトルを取得する方法を学びましょう。すぐに実行できるコードが含まれています。 +date: 2026-09-03 +description: Aspose sandbox javaを作成し、クリーンで分離されたHTMLロードでページタイトルjavaを取得する方法。ステップバイステップのガイドと実行可能なコード付き。 draft: false keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title -language: ja -og_description: JavaでAspose HTMLサンドボックスを作成し、ページタイトルを即座に取得します。クリーンで分離されたHTMLロードのための詳細ガイドに従ってください。 -og_title: Aspose HTMLサンドボックスの作成 – Javaチュートリアル +lastmod: 2026-09-03 +og_description: JavaでAspose sandboxを作成し、ページタイトルjavaを即座に取得する方法を学びます。詳細な手順、ベストプラクティス、完全なサンプルコードを提供。 +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: Aspose sandbox javaの作成方法 – 完全ガイド +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: Aspose HTMLサンドボックスを作成する – 完全なJavaガイド +title: Aspose sandbox javaの作成方法 – 完全ガイド url: /ja/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -25,27 +50,33 @@ url: /ja/java/configuring-environment/create-aspose-html-sandbox-complete-java-g {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Aspose HTML サンドボックスの作成 – 完全な Java ガイド +# Aspose サンドボックス Java の作成方法 – 完全ガイド -Ever needed to **create Aspose HTML sandbox** but weren’t sure how to keep the loaded page isolated from your main JVM? Maybe you’re building a web‑scraper, a testing harness, or just want to experiment with remote pages without risking side‑effects. In this tutorial we’ll walk through exactly that, and we’ll also show you **how to retrieve page title java** from inside the sandbox. +Aspose HTML サンドボックスを **create Aspose HTML sandbox** したいと思ったことはありますか、しかしロードされたページをメイン JVM から分離して保持する方法が分からなかったでしょうか?ウェブスクレイパーやテストハーネスを構築しているか、あるいは副作用のリスクなしにリモートページを実験したいだけかもしれません。このチュートリアルではその手順を詳しく解説し、サンドボックス内から **how to retrieve page title java** を示します。 -**create Aspose HTML sandbox** が必要だったことはありますか、しかしロードされたページをメイン JVM から分離して保持する方法が分からなかったでしょうか? Web スクレイパーやテストハーネスを構築しているか、単にリモートページを副作用のリスクなしに実験したいだけかもしれません。このチュートリアルではその手順を詳しく解説し、サンドボックス内から **how to retrieve page title java** を取得する方法も示します。 +解決策はかなりシンプルです: `SandboxOptions` オブジェクトを設定し、`Sandbox` を起動し、`HtmlDocument` で外部 URL をロードし、タイトルを読み取り、最後にすべてをクリーンアップします。最後までに、Aspose.HTML for Java 23.1(またはそれ以降)を使用する任意の Java プロジェクトに貼り付け可能な自己完結型スニペットが手に入ります。 -The solution is pretty straightforward: configure a `SandboxOptions` object, spin up a `Sandbox`, load an external URL with `HtmlDocument`, read the title, and finally clean everything up. By the end you’ll have a self‑contained snippet you can drop into any Java project that uses Aspose.HTML for Java 23.1 (or newer). +## クイック回答 +- **What is an Aspose sandbox?** それは、JVM 内で実行され、ファイルシステムに触れない Chromium ベースの分離環境です。 +- **Why use a sandbox for page title extraction?** 外部スクリプトがアプリケーションの状態やメモリに影響を与えないことを保証します。 +- **Which Java version is required?** Java 8 以上が必要です。ライブラリは Java 11、17 以降でも動作します。 +- **Do I need a license?** 開発には無料トライアルライセンスで十分です。製品版には商用ライセンスが必要です。 +- **How many lines of code are needed?** コアロジックは30 行未満で、オプションのセットアップコードを加える程度です。 -解決策はかなりシンプルです: `SandboxOptions` オブジェクトを設定し、`Sandbox` を起動し、`HtmlDocument` で外部 URL を読み込み、タイトルを取得し、最後にすべてをクリーンアップします。最後までに、Aspose.HTML for Java 23.1(またはそれ以降)を使用する任意の Java プロジェクトに貼り付け可能な自己完結型スニペットが手に入ります。 +## create aspose sandbox java とは何ですか? +`Sandbox` は Aspose.HTML の軽量で分離されたブラウザーエンジンで、Java プロセス内で実行されます。リモート HTML のロード、JavaScript の実行、DOM とのやり取りを、ホスト環境を露出させずに行える安全なコンテナを提供します。 -## 学習できること +## ページタイトル取得時にサンドボックスを使用する理由(retrieve page title java) +Aspose.HTML は **50+ input and output formats** をサポートし、ファイル全体をメモリにロードせずに数百ページのドキュメントをレンダリングできます。サンドボックスを使用することで、ターゲットページ上の悪意あるスクリプトがコンテナから脱出できないようにする追加のセキュリティ層が提供されます。このアプローチはメモリリークのリスクを低減し、JVM を不要な副作用から保護します。 -- カスタムビューポートとユーザーエージェント設定で **create Aspose HTML sandbox** を作成する方法。 -- サンドボックス内に安全に留まりながら、リモートページから **retrieve page title java** を取得する正確な手順。 -- リソースの破棄を忘れるなどの一般的な落とし穴と、メモリフットプリントを低く保つベストプラクティスのヒント。 -- コピー&ペースト、コンパイル、実行できる完全な実行可能 Java プログラム。 +## 前提条件 +- 有効な Aspose.HTML for Java ライセンス(テスト用のトライアルで可)。 +- 開発マシンに Java 8 以上がインストールされていること。 +- 依存関係管理のための Maven または Gradle ビルドツール。 -> **Prerequisites** – 有効な Aspose.HTML for Java ライセンス(無料トライアル可)と Java 8 以降がインストールされている必要があります。追加のサードパーティライブラリは不要です。 +> **Pro tip:** ライブラリのバージョンを公式の Aspose リリースノートと合わせてください。新しいリリースには、信頼できないコンテンツをロードする際に重要なセキュリティパッチが含まれています。 ## 手順 1: プロジェクトのセットアップ - コードに入る前に、`pom.xml`(Maven)または Gradle ファイルに Aspose.HTML の依存関係が含まれていることを確認してください: ```xml @@ -63,11 +94,11 @@ Gradle を使用している場合は: implementation 'com.aspose:aspose-html:23.1' ``` -> **Pro tip:** ライブラリのバージョンを公式 Aspose リリースノートと同期させてください。新しいバージョンは外部コンテンツの読み込み時に特に重要なセキュリティ修正が追加されています。 - -## Sandbox オプションの設定 (retrieve page title java) +> **Pro tip:** ライブラリのバージョンを公式の Aspose リリースノートと合わせてください。新しいバージョンは、外部コンテンツをロードする際に特に重要なセキュリティ修正を含んでいます。 -**creating an Aspose HTML sandbox** の最初の本格的なステップは、仮想ブラウザの動作を決めることです。デスクトップ、モバイルデバイス、またはカスタム画面サイズを模倣できます。 +## サンドボックスオプションの設定方法(retrieve page title java) +**creating an Aspose HTML sandbox** の最初の実際のステップは、仮想ブラウザーの動作を決定することです。デスクトップ、モバイルデバイス、あるいはカスタム画面サイズを模倣できます。 +`SandboxOptions` は、ビューポートサイズ、ユーザーエージェント文字列、タイムアウト値など、サンドボックスの動作を設定します。ページのレンダリング方法や許可されるリソースを制御できます。 ```java import com.aspose.html.sandbox.SandboxOptions; @@ -79,11 +110,11 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -なぜこれが重要なのか? ビューポートサイズは CSS のメディアクエリに影響し、ユーザーエージェントはサーバー側のコンテンツネゴシエーションに影響を与える可能性があります。明示的に設定することで、後で **retrieve page title java** を取得するページが期待通りにレンダリングされます。 +なぜ重要なのか? ビューポートサイズは CSS メディアクエリに影響し、ユーザーエージェントはサーバー側のコンテンツネゴシエーションに影響を与える可能性があります。これらを明示的に設定することで、後で **retrieve page title java** から取得するページが期待通りにレンダリングされます。 -## Sandbox インスタンスの作成 - -オプションが用意できたので、サンドボックス自体を起動できます。 +## サンドボックスインスタンスの作成方法 +オプションが揃ったので、サンドボックス自体を起動できます。 +`Sandbox` は JVM 内で実行される分離された Chromium エンジンのインスタンスです。HTML をロードして実行できる安全な環境を作り、ホストのファイルシステムに触れません。 ```java import com.aspose.html.sandbox.Sandbox; @@ -92,11 +123,11 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -`Sandbox` は、Java プロセス内に存在する軽量で分離された Chromium エンジンと考えてください。明示的に指示しない限りファイルシステムに触れないため、セキュアなスクレイピングに最適です。 - -## サンドボックス内で外部ページをロード +`Sandbox` を軽量で分離された Chromium エンジンとして、Java プロセス内に存在すると考えてください。明示的に指示しない限りファイルシステムに触れないため、セキュアなスクレイピングに最適です。 -サンドボックスが準備できたら、リモートページのロードは URL とサンドボックスインスタンスを `HtmlDocument` に渡すだけで簡単です。 +## サンドボックス内で外部ページをロードする方法 +サンドボックスが準備できたら、リモートページのロードは URL とサンドボックスインスタンスを `HtmlDocument` に渡すだけで簡単です。 +`HtmlDocument` はサンドボックスにロードされた HTML ページを表し、DOM へのアクセス、レンダリング機能、JavaScript 実行を提供します。 ```java import com.aspose.html.HtmlDocument; @@ -105,28 +136,28 @@ import com.aspose.html.HtmlDocument; HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); ``` -> **Edge case:** 対象サイトが認証やリダイレクトを必要とする場合、`HttpClient` ハンドラを事前に設定し、`HtmlLoadOptions` を介して渡すことができます。これはこの簡易ガイドの範囲を超えますが、API はサポートしています。 +> **Edge case:** ターゲットサイトが認証やリダイレクトを必要とする場合、`HttpClient` ハンドラを事前に設定し、`HtmlLoadOptions` を介して渡すことができます。これはこの簡易ガイドの範囲外ですが、API はサポートしています。 -## ページタイトルへのアクセス – retrieve page title java - -ここが求められた部分です: サンドボックス内に留まりながらページタイトルを抽出します。`HtmlDocument` クラスは `<title>` 要素を読み取る `getTitle()` メソッドを提供しています。 +## ページタイトルへのアクセス方法(retrieve page title java) +ここが求められていた部分です:サンドボックス内に留まりながらページタイトルを抽出します。`HtmlDocument` クラスは `<title>` 要素を読み取る `getTitle()` メソッドを提供します。 +`getTitle()` はページの `<title>` 要素のテキストコンテンツを返し、ページが正しくロードされたかを簡単に検証できます。 ```java // Step 4 – read and print the title System.out.println("Title inside sandbox: " + htmlDoc.getTitle()); ``` -`https://example.com` に対してフルプログラムを実行すると、以下のように表示されるはずです: +`https://example.com` に対して完全なプログラムを実行すると、次のように表示されます: ``` Title inside sandbox: Example Domain ``` -この行は、私たちが **created an Aspose HTML sandbox** に成功し、リモートページをロードし、**retrieved page title java** を分離された環境から離れることなく取得したことを証明しています。 - -## リソースのクリーンアップ +この行は、**created an Aspose HTML sandbox** に成功し、リモートページをロードし、**retrieved page title java** を分離された環境から離れることなく実行したことを証明します。 -Aspose.HTML オブジェクトはネイティブリソースを保持するため、明示的に破棄することが重要です。これを忘れると、特にループで多数のページを処理する場合にメモリリークが発生します。 +## リソースのクリーンアップ方法 +Aspose.HTML オブジェクトはネイティブリソースを保持しているため、明示的に破棄することが重要です。忘れると、特に多数のページをループで処理する際にメモリリークが発生します。 +`dispose()` は Aspose.HTML オブジェクトが保持するネイティブリソースを解放し、メモリリークを防ぎ、JVM がメモリを速やかに回収できるようにします。 ```java // Step 5 – release native resources @@ -134,11 +165,10 @@ htmlDoc.dispose(); sandboxInstance.dispose(); ``` -> **Why dispose?** 基盤となる Chromium エンジンはネイティブメモリとファイルハンドルを割り当てます。`dispose()` を呼び出すことで、JVM にそれらを即座に解放させ、ファイナライザの待機を回避します。 +> **Why dispose?** 基盤となる Chromium エンジンはネイティブメモリとファイルハンドルを割り当てます。`dispose()` を呼び出すことで、ファイナライザを待つことなく JVM に即座に解放させます。 ## 完全な動作例 - -以下は `SandboxExample.java` という名前のファイルにコピーできる完全なプログラムです。`javac` でコンパイルし、`java` で実行してください。すべての手順が正しい順序で記述され、インポートもすべて列挙されています。 +`SandboxExample.java` というファイル名でコピーできる完全なプログラムは以下です。`javac` でコンパイルし、`java` で実行してください。すべての手順が正しい順序で示され、すべてのインポートが列挙されています。 ```java import com.aspose.html.HtmlDocument; @@ -170,32 +200,50 @@ public class SandboxExample { } ``` +![Screenshot of Java code creating an Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "create aspose html sandbox example") + ### 期待される出力 ``` Title inside sandbox: Example Domain ``` -`https://example.com` を別の URL に置き換えると、出力されるタイトルはそのページの `<title>` タグを反映します(サイトが匿名アクセスを許可している場合)。 +`https://example.com` を別の URL に置き換えると、出力されるタイトルはそのページの `<title>` タグを反映します(サイトが匿名アクセスを許可している場合)。 -## 実践的なヒントと一般的な落とし穴 +## 実用的なヒントと一般的な落とし穴 +- **Network timeouts:** デフォルトではサンドボックスは 60 秒のタイムアウトを使用します。遅いサイトにアクセスする場合は、サンドボックス作成前に `sandboxOptions.setTimeout(120_000);` を呼び出してください。 +- **Java security manager:** 制限された JVM 内で実行する場合、`java.security.policy` が対象ドメインに対して `java.net.SocketPermission` を付与していることを確認してください。 +- **Processing multiple pages:** 単一の `Sandbox` インスタンスを再利用し、各 URL ごとに新しい `HtmlDocument` を作成し、使用後に破棄してください。これにより起動オーバーヘッドが削減されます。 +- **Debugging:** `sandboxOptions.setDebugMode(true);` を設定すると、詳細なコンソールログが出力され、ページがロードに失敗した原因を特定しやすくなります。 -- **Network Timeouts:** デフォルトではサンドボックスは 60 秒のタイムアウトを使用します。遅いサイトにアクセスする場合は、サンドボックス作成前に `sandboxOptions.setTimeout(120_000);` を呼び出してください。 -- **Java Security Manager:** 制限された JVM 内で実行する場合、`java.security.policy` が対象ドメインに対して `java.net.SocketPermission` を付与していることを確認してください。 -- **Multiple Pages:** 多数の URL を処理する必要がある場合、単一の `Sandbox` インスタンスを再利用してください。各 URL に対して新しい `HtmlDocument` を作成し、使用後に破棄します。これにより起動オーバーヘッドが削減されます。 -- **Debugging:** `sandboxOptions.setDebugMode(true);` を設定すると、詳細なコンソールログが出力され、ページがロードに失敗した原因を特定するのに役立ちます。 +## よくある質問 +**Q:** このサンドボックスをヘッドレス CI パイプラインで使用できますか? +**A:** はい。サンドボックスは UI を表示せずに実行され、Java 8+ をサポートする任意のサーバーで実行可能です。 -## 結論 +**Q:** サンドボックスは JavaScript の実行をサポートしていますか? +**A:** はい。内部で Chromium を使用しているため、ES6 機能を含む最新の JavaScript が正しく実行されます。 -私たちは Java で **created an Aspose HTML sandbox** を作成し、予測可能なビューポートを設定し、外部ページをロードし、**retrieve page title java** を安全かつ効率的に取得する方法を実演しました。オプション設定からリソースのクリーンアップまでの全フローが、コンパクトで再利用可能なスニペットにまとめられています。 +**Q:** サンドボックスはどのくらい大きなページを処理できますか? +**A:** エンジンは最大 200 MB のページをレンダリング可能で、ホストマシンのメモリが許す限りです。 -この基盤を元に、メタタグのスクレイピング、スクリーンショットの取得、あるいはサンドボックス内での JavaScript 実行などに拡張できます。可能性はウェブと同じくらい広がっています。 +**Q:** ターゲットサイトが自動リクエストをブロックした場合はどうすればよいですか? +**A:** `SandboxOptions` の `User-Agent` 文字列をカスタマイズするか、`HtmlLoadOptions` でクッキーを提供して、通常のブラウザを模倣できます。 -認証の処理、プロキシ設定、またはサンドボックスからの PDF レンダリングに関する質問がありますか? コメントを残してください。これらの高度なシナリオを一緒に検討します。コーディングを楽しんでください! +**Q:** ロードしたページのスクリーンショットを取得する方法はありますか? +**A:** はい。ドキュメントをロードした後、`document.save("snapshot.png", SaveFormat.Png);` を呼び出すことで、レンダリングされたページの PNG 画像をエクスポートできます。 -![Screenshot of Java code creating an Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "create aspose html sandbox example") +**最終更新日:** 2026-09-03 +**テスト済み:** Aspose.HTML for Java 23.1 +**作者:** Aspose + +## 関連チュートリアル +- [HTML を PDF に変換するためのサンドボックス使用方法(Java)ステップバイステップガイド](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [Aspose.HTML for Java を使用して HTML から PDF を作成 – サンドボックス](/html/java/configuring-environment/implement-sandboxing/) +- [Java でスクリプト実行を有効化する 完全 Aspose HTML ガイド](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-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/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/korean/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index bd26d941b0..4a6e9c7ee4 100644 --- a/html/korean/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/korean/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,25 +1,50 @@ --- category: general -date: 2026-01-04 -description: Java에서 Aspose HTML 샌드박스를 만들고 단계별 예제로 페이지 제목을 가져오는 방법을 배워보세요. 빠르고 실행 가능한 - 코드가 포함되어 있습니다. +date: 2026-09-03 +description: Aspose sandbox java를 만들고 깨끗하고 격리된 HTML 로드로 page title java를 가져오는 방법. + 실행 가능한 코드와 함께하는 단계별 가이드. draft: false keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title -language: ko -og_description: Java에서 Aspose HTML 샌드박스를 만들고 페이지 제목을 즉시 가져옵니다. 깨끗하고 격리된 HTML 로드를 위해 - 이 자세한 가이드를 따라보세요. -og_title: Aspose HTML 샌드박스 만들기 – Java 튜토리얼 +lastmod: 2026-09-03 +og_description: Aspose sandbox를 Java에서 만드는 방법과 page title java를 즉시 가져오는 방법을 배웁니다. + 자세한 단계, 모범 사례, 전체 예제 코드를 제공합니다. +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: Aspose sandbox java를 만드는 방법 – 완전 가이드 +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: Aspose HTML 샌드박스 만들기 – 완전한 Java 가이드 +title: Aspose sandbox java를 만드는 방법 – 완전 가이드 url: /ko/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -27,24 +52,35 @@ url: /ko/java/configuring-environment/create-aspose-html-sandbox-complete-java-g {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Aspose HTML 샌드박스 만들기 – 완전 Java 가이드 +# Aspose sandbox java 만들기 – 완전 가이드 -Ever needed to **create Aspose HTML sandbox** but weren’t sure how to keep the loaded page isolated from your main JVM? Maybe you’re building a web‑scraper, a testing harness, or just want to experiment with remote pages without risking side‑effects. In this tutorial we’ll walk through exactly that, and we’ll also show you **how to retrieve page title java** from inside the sandbox. +Aspose HTML sandbox를 **만들어야** 했지만 로드된 페이지를 메인 JVM에서 격리하는 방법을 몰랐던 적이 있나요? 웹 스크래퍼, 테스트 하니스 구축, 혹은 원격 페이지를 부작용 없이 실험하고 싶을 때가 있을 겁니다. 이 튜토리얼에서는 바로 그 과정을 단계별로 안내하고, sandbox 내부에서 **페이지 제목을 가져오는 방법(java)**도 보여드립니다. -The solution is pretty straightforward: configure a `SandboxOptions` object, spin up a `Sandbox`, load an external URL with `HtmlDocument`, read the title, and finally clean everything up. By the end you’ll have a self‑contained snippet you can drop into any Java project that uses Aspose.HTML for Java 23.1 (or newer). +해결 방법은 매우 간단합니다: `SandboxOptions` 객체를 설정하고, `Sandbox`를 시작한 뒤, `HtmlDocument`로 외부 URL을 로드하고, 제목을 읽고, 마지막으로 모든 것을 정리합니다. 최종적으로 Aspose.HTML for Java 23.1(또는 그 이후 버전)을 사용하는 모든 Java 프로젝트에 바로 삽입할 수 있는 독립적인 코드 조각을 얻게 됩니다. -## 배울 내용 +## 빠른 답변 +- **Aspose sandbox이란?** JVM 내부에서 파일 시스템에 접근하지 않고 실행되는 격리된 Chromium 기반 환경입니다. +- **페이지 제목 추출에 sandbox를 사용하는 이유는?** 외부 스크립트가 애플리케이션의 상태나 메모리에 영향을 미치지 못하도록 보장합니다. +- **필요한 Java 버전은?** Java 8 이상; 라이브러리는 Java 11, 17 및 그 이후 버전에서도 동작합니다. +- **라이선스가 필요합니까?** 개발 단계에서는 무료 체험 라이선스로 충분하며, 프로덕션에서는 상용 라이선스가 필요합니다. +- **필요한 코드 라인 수는?** 핵심 로직은 30줄 미만이며, 선택적인 설정 코드를 포함해도 간단합니다. -- 맞춤 뷰포트와 사용자‑에이전트 설정으로 **create Aspose HTML sandbox** 하는 방법. -- 샌드박스 내부에 안전하게 머무르면서 원격 페이지에서 **retrieve page title java** 하는 정확한 단계. -- 리소스 해제 누락과 같은 일반적인 함정 및 메모리 사용량을 낮게 유지하는 모범 사례 팁. -- 복사‑붙여넣기, 컴파일 및 실행할 수 있는 완전한 실행 가능한 Java 프로그램. +## create aspose sandbox java란? +`Sandbox`는 Aspose.HTML의 가볍고 격리된 브라우저 엔진으로, Java 프로세스 내부에서 실행됩니다. 원격 HTML을 로드하고 JavaScript를 실행하며, 호스트 환경을 노출하지 않는 안전한 컨테이너를 제공합니다. -> **Prerequisites** – 유효한 Aspose.HTML for Java 라이선스(무료 체험 가능)와 Java 8 이상 설치가 필요합니다. 추가 서드파티 라이브러리는 필요하지 않습니다. +## 페이지 제목을 가져올 때 sandbox를 사용하는 이유는? +Aspose.HTML는 **50개 이상의 입력 및 출력 포맷**을 지원하며, 전체 파일을 메모리에 로드하지 않고도 수백 페이지 문서를 렌더링할 수 있습니다. sandbox를 사용하면 추가 보안 레이어가 제공되어 대상 페이지의 악성 스크립트가 컨테이너를 탈출하지 못하게 합니다. 이 접근 방식은 메모리 누수 위험을 줄이고 JVM을 원치 않는 부작용으로부터 보호합니다. -## 1단계: 프로젝트 설정 +## 사전 요구 사항 +- 유효한 Aspose.HTML for Java 라이선스(테스트용 체험판 가능). +- 개발 머신에 Java 8 이상이 설치되어 있어야 합니다. +- Maven 또는 Gradle 빌드 도구를 사용해 의존성을 관리합니다. -Before we dive into code, make sure your `pom.xml` (Maven) or Gradle file includes the Aspose.HTML dependency: +> **팁:** 공식 Aspose 릴리스 노트와 라이브러리 버전을 맞춰 두세요. 최신 릴리스에는 신뢰할 수 없는 콘텐츠를 로드할 때 중요한 보안 패치가 포함됩니다. + +## Step 1: 프로젝트 설정 + +코드 작성을 시작하기 전에 `pom.xml`(Maven) 또는 Gradle 파일에 Aspose.HTML 의존성을 포함했는지 확인하세요: ```xml <!-- Maven --> @@ -55,17 +91,18 @@ Before we dive into code, make sure your `pom.xml` (Maven) or Gradle file includ </dependency> ``` -If you’re using Gradle: +Gradle을 사용하는 경우: ```groovy implementation 'com.aspose:aspose-html:23.1' ``` -> **Pro tip:** 라이브러리 버전을 공식 Aspose 릴리스 노트와 맞추세요; 최신 버전은 외부 콘텐츠 로드 시 특히 중요한 보안 수정 사항을 포함합니다. +> **팁:** 공식 Aspose 릴리스 노트와 라이브러리 버전을 동기화하세요. 최신 버전은 외부 콘텐츠 로드 시 특히 중요한 보안 수정 사항을 포함합니다. -## Sandbox 옵션 구성 (retrieve page title java) +## sandbox 옵션을 어떻게 구성하나요? (retrieve page title java) -The first real step in **creating an Aspose HTML sandbox** is to decide how the virtual browser should behave. You can mimic a desktop, a mobile device, or even a custom screen size. +**Aspose HTML sandbox를 만들 때** 가장 먼저 해야 할 일은 가상 브라우저의 동작 방식을 결정하는 것입니다. 데스크톱, 모바일 디바이스, 혹은 사용자 정의 화면 크기를 흉내낼 수 있습니다. +`SandboxOptions`는 뷰포트 크기, 사용자‑에이전트 문자열, 타임아웃 값 등 sandbox의 동작을 설정합니다. 이를 통해 페이지가 어떻게 렌더링되고 어떤 리소스가 허용되는지를 제어할 수 있습니다. ```java import com.aspose.html.sandbox.SandboxOptions; @@ -77,11 +114,12 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -Why does this matter? The viewport size influences CSS media queries, while the user‑agent can affect server‑side content negotiation. Setting them explicitly ensures the page you later **retrieve page title java** from renders exactly as you expect. +왜 중요한가요? 뷰포트 크기는 CSS 미디어 쿼리에 영향을 주고, 사용자‑에이전트는 서버‑사이드 콘텐츠 협상에 영향을 미칩니다. 이를 명시적으로 설정하면 이후 **페이지 제목을 가져오는 (retrieve page title java)** 과정에서 페이지가 기대한 대로 렌더링됩니다. -## Sandbox 인스턴스 생성 +## sandbox 인스턴스를 어떻게 생성하나요? -Now that we have our options, we can spin up the sandbox itself. +옵션을 설정했으니 이제 sandbox 자체를 시작합니다. +`Sandbox`는 JVM 내부에서 실행되는 격리된 Chromium 엔진 인스턴스로, 파일 시스템에 접근하지 않고 HTML을 로드하고 실행할 수 있는 안전한 환경을 제공합니다. ```java import com.aspose.html.sandbox.Sandbox; @@ -90,11 +128,12 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -Think of `Sandbox` as a lightweight, isolated Chromium engine that lives inside your Java process. It doesn’t touch the file system unless you explicitly tell it to, which makes it perfect for secure scraping. +`Sandbox`를 가볍고 격리된 Chromium 엔진이라고 생각하면 됩니다. 명시적으로 파일 시스템을 사용하도록 지정하지 않는 한 파일 시스템에 접근하지 않으므로 보안 스크래핑에 최적입니다. -## 샌드박스 내부에서 외부 페이지 로드 +## sandbox 안에서 외부 페이지를 어떻게 로드하나요? -With the sandbox ready, loading a remote page is as simple as passing the URL and the sandbox instance to `HtmlDocument`. +sandbox가 준비되었으면, 원격 페이지 로드는 `HtmlDocument`에 URL과 sandbox 인스턴스를 전달하기만 하면 됩니다. +`HtmlDocument`는 sandbox에 로드된 HTML 페이지를 나타내며, DOM 접근, 렌더링 기능, JavaScript 실행을 제공합니다. ```java import com.aspose.html.HtmlDocument; @@ -103,28 +142,30 @@ import com.aspose.html.HtmlDocument; HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); ``` -> **Edge case:** 대상 사이트가 인증이나 리디렉션을 요구한다면 `HttpClient` 핸들러를 사전 구성하고 `HtmlLoadOptions`를 통해 전달할 수 있습니다. 이는 이 간단한 가이드의 범위를 벗어나지만 API가 지원합니다. +> **예외 상황:** 대상 사이트가 인증이나 리다이렉트를 요구하는 경우 `HttpClient` 핸들러를 미리 구성하고 `HtmlLoadOptions`를 통해 전달할 수 있습니다. 이는 이 간단한 가이드 범위를 벗어나지만 API에서 지원합니다. -## 페이지 제목 접근 – retrieve page title java +## 페이지 제목에 어떻게 접근하나요? (retrieve page title java) -Now comes the part you asked for: extracting the page title while staying inside the sandbox. The `HtmlDocument` class exposes a `getTitle()` method that reads the `<title>` element. +이제 여러분이 원했던 부분, sandbox 내부에서 페이지 제목을 추출하는 방법을 소개합니다. `HtmlDocument` 클래스는 `<title>` 요소를 읽어오는 `getTitle()` 메서드를 제공합니다. +`getTitle()`은 페이지 `<title>` 요소의 텍스트 내용을 반환하므로, 페이지가 정상적으로 로드됐는지 간단히 확인할 수 있습니다. ```java // Step 4 – read and print the title System.out.println("Title inside sandbox: " + htmlDoc.getTitle()); ``` -When you run the full program against `https://example.com`, you should see: +전체 프로그램을 `https://example.com`에 실행하면 다음과 같은 결과가 표시됩니다: ``` Title inside sandbox: Example Domain ``` -That line proves we’ve successfully **created an Aspose HTML sandbox**, loaded a remote page, and **retrieved page title java** without ever leaving the isolated environment. +이 한 줄은 **Aspose HTML sandbox를 성공적으로 만들고**, 원격 페이지를 로드했으며, **페이지 제목을 가져왔음(retrieve page title java)**을 격리된 환경 내에서 증명합니다. -## 리소스 정리 +## 리소스를 어떻게 정리하나요? -Aspose.HTML objects hold native resources, so it’s crucial to dispose of them explicitly. Forgetting to do so can lead to memory leaks, especially when processing many pages in a loop. +Aspose.HTML 객체는 네이티브 리소스를 보유하므로 명시적으로 해제해야 합니다. 해제하지 않으면 특히 여러 페이지를 루프 처리할 때 메모리 누수가 발생할 수 있습니다. +`dispose()`는 Aspose.HTML 객체가 보유한 네이티브 리소스를 해제하여 메모리 누수를 방지하고 JVM이 메모리를 즉시 회수하도록 합니다. ```java // Step 5 – release native resources @@ -132,11 +173,11 @@ htmlDoc.dispose(); sandboxInstance.dispose(); ``` -> **Why dispose?** 기본 Chromium 엔진은 네이티브 메모리와 파일 핸들을 할당합니다. `dispose()` 를 호출하면 최종화자를 기다리지 않고 JVM이 즉시 이를 해제하도록 합니다. +> **왜 dispose를 해야 하나요?** 기본 Chromium 엔진은 네이티브 메모리와 파일 핸들을 할당합니다. `dispose()`를 호출하면 최종화자를 기다리는 대신 JVM이 즉시 해당 리소스를 해제하도록 지시합니다. -## 전체 작동 예제 +## 전체 작업 예제 -Below is the complete program you can copy into a file named `SandboxExample.java`. Compile with `javac` and run with `java`. All steps are in the correct order, and every import is listed. +아래는 `SandboxExample.java`라는 파일에 복사해 넣을 수 있는 완전한 프로그램입니다. `javac`로 컴파일하고 `java`로 실행하면 됩니다. 모든 단계가 올바른 순서로 배치되어 있으며, 필요한 모든 import 문이 포함되어 있습니다. ```java import com.aspose.html.HtmlDocument; @@ -168,32 +209,56 @@ public class SandboxExample { } ``` +![Aspose HTML sandbox를 만드는 Java 코드 스크린샷](/images/create-aspose-html-sandbox.png "create aspose html sandbox example") + ### 예상 출력 ``` Title inside sandbox: Example Domain ``` -If you replace `https://example.com` with another URL, the printed title will reflect that page’s `<title>` tag—provided the site allows anonymous access. +`https://example.com`을 다른 URL로 교체하면 해당 페이지의 `<title>` 태그가 출력됩니다—단, 사이트가 익명 접근을 허용하는 경우에만 가능합니다. + +## 실용적인 팁 & 흔히 겪는 함정 + +- **네트워크 타임아웃:** 기본 sandbox 타임아웃은 60초입니다. 느린 사이트를 처리할 경우 sandbox 생성 전에 `sandboxOptions.setTimeout(120_000);`를 호출하세요. +- **Java 보안 매니저:** 제한된 JVM에서 실행할 경우 `java.security.policy`가 대상 도메인에 대한 `java.net.SocketPermission`을 부여하도록 설정하세요. +- **다수 페이지 처리:** 단일 `Sandbox` 인스턴스를 재사용하고, 각 URL마다 새로운 `HtmlDocument`를 생성한 뒤 사용 후 해제하세요. 이렇게 하면 시작 오버헤드가 감소합니다. +- **디버깅:** `sandboxOptions.setDebugMode(true);`를 설정하면 자세한 콘솔 로그가 출력되어 페이지 로드 실패 원인을 파악하는 데 도움이 됩니다. + +## 자주 묻는 질문 -## 실용 팁 및 일반 함정 +**Q: 이 sandbox를 무인 CI 파이프라인에서 사용할 수 있나요?** +A: 네. UI가 보이지 않는 상태로 실행되며 Java 8+를 지원하는 모든 서버에서 사용할 수 있습니다. -- **Network Timeouts:** 기본적으로 샌드박스는 60초 타임아웃을 사용합니다. 더 느린 사이트를 대상으로 할 경우, 샌드박스를 만들기 전에 `sandboxOptions.setTimeout(120_000);` 를 호출하세요. -- **Java Security Manager:** 제한된 JVM 내에서 실행할 때, `java.security.policy` 가 대상 도메인에 대한 `java.net.SocketPermission` 을 부여하도록 설정하세요. -- **Multiple Pages:** 많은 URL을 처리해야 한다면 단일 `Sandbox` 인스턴스를 재사용하세요; 각 URL마다 새로운 `HtmlDocument` 를 생성하고 사용 후 해제하면 시작 오버헤드를 줄일 수 있습니다. -- **Debugging:** `sandboxOptions.setDebugMode(true);` 를 설정하면 자세한 콘솔 로그가 출력되어 페이지 로드 실패 원인을 파악하는 데 도움이 됩니다. +**Q: sandbox가 JavaScript 실행을 지원하나요?** +A: 물론입니다. Chromium을 기반으로 하므로 ES6 등 최신 JavaScript도 정상적으로 실행됩니다. -## 결론 +**Q: sandbox가 처리할 수 있는 페이지 크기의 한계는?** +A: 엔진은 최대 200 MB 크기의 페이지를 렌더링할 수 있으며, 실제 한계는 호스트 머신의 메모리에 따라 달라집니다. -We’ve just **created an Aspose HTML sandbox** in Java, configured it for a predictable viewport, loaded an external page, and demonstrated how to **retrieve page title java** safely and efficiently. The entire flow—from option setup to resource cleanup—is encapsulated in a compact, reusable snippet. +**Q: 대상 사이트가 자동화 요청을 차단한다면 어떻게 하나요?** +A: `SandboxOptions`에서 `User-Agent` 문자열을 커스터마이즈하거나 `HtmlLoadOptions`를 통해 쿠키를 전달해 일반 브라우저처럼 가장할 수 있습니다. -Now you can take this foundation and extend it: scrape meta tags, capture screenshots, or even run JavaScript inside the sandbox. The possibilities are as wide as the web itself. +**Q: 로드된 페이지의 스크린샷을 캡처할 방법이 있나요?** +A: 있습니다. 문서를 로드한 뒤 `document.save("snapshot.png", SaveFormat.Png);`를 호출하면 렌더링된 페이지의 PNG 이미지를 저장할 수 있습니다. -Got questions about handling authentication, proxy settings, or rendering PDFs from the sandbox? Drop a comment, and we’ll explore those advanced scenarios together. Happy coding! -![Screenshot of Java code creating an Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "create aspose html sandbox example") + +**마지막 업데이트:** 2026-09-03 +**테스트 환경:** Aspose.HTML for Java 23.1 +**작성자:** Aspose + +## 관련 튜토리얼 + +- [How To Use Sandbox For Html To Pdf Java Step By Step Guide](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [Create PDF from HTML using Aspose.HTML for Java – Sandbox](/html/java/configuring-environment/implement-sandboxing/) +- [Enable Script Execution In Java Complete Aspose Html Guide](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-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/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/polish/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index f3d182bf85..f36c0e0776 100644 --- a/html/polish/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/polish/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,27 +1,50 @@ --- category: general -date: 2026-01-04 -description: Utwórz środowisko testowe Aspose HTML w Javie i dowiedz się, jak pobrać - tytuł strony w Javie, korzystając z przykładu krok po kroku. Szybki, gotowy do uruchomienia - kod w zestawie. +date: 2026-09-03 +description: Jak utworzyć sandbox Aspose java i pobrać tytuł strony java przy użyciu + czystego, izolowanego ładowania HTML. Przewodnik krok po kroku z kodem do uruchomienia. draft: false keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title -language: pl -og_description: Utwórz piaskownicę Aspose HTML w Javie i natychmiast pobierz tytuł - strony w Javie. Postępuj zgodnie z tym szczegółowym przewodnikiem, aby uzyskać czyste, - odizolowane ładowanie HTML. -og_title: Utwórz piaskownicę Aspose HTML – samouczek Java +lastmod: 2026-09-03 +og_description: Dowiedz się, jak utworzyć sandbox Aspose w java i natychmiast pobrać + tytuł strony java. Szczegółowe kroki, najlepsze praktyki i pełny przykładowy kod. +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: Jak utworzyć sandbox Aspose java – kompletny przewodnik +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: Utwórz piaskownicę Aspose HTML – Kompletny przewodnik Java +title: Jak utworzyć sandbox Aspose java – kompletny przewodnik url: /pl/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -29,26 +52,35 @@ url: /pl/java/configuring-environment/create-aspose-html-sandbox-complete-java-g {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Utwórz piaskownicę Aspose HTML – Kompletny przewodnik Java +# Jak stworzyć Aspose sandbox java – kompletny przewodnik -Czy kiedykolwiek potrzebowałeś **create Aspose HTML sandbox**, ale nie byłeś pewien, jak utrzymać załadowaną stronę odizolowaną od głównej JVM? Być może tworzysz web‑scraper, środowisko testowe lub po prostu chcesz eksperymentować ze zdalnymi stronami bez ryzyka skutków ubocznych. W tym samouczku przeprowadzimy Cię krok po kroku przez ten proces i pokażemy również **how to retrieve page title java** wewnątrz piaskownicy. +Czy kiedykolwiek potrzebowałeś **create Aspose HTML sandbox**, ale nie byłeś pewien, jak utrzymać załadowaną stronę odizolowaną od głównej JVM? Być może tworzysz web‑scraper, środowisko testowe lub po prostu chcesz eksperymentować ze zdalnymi stronami bez ryzyka skutków ubocznych. W tym samouczku przeprowadzimy Cię krok po kroku przez to, a także pokażemy, jak **retrieve page title java** wewnątrz piaskownicy. -Rozwiązanie jest dość proste: skonfiguruj obiekt `SandboxOptions`, uruchom `Sandbox`, załaduj zewnętrzny URL przy użyciu `HtmlDocument`, odczytaj tytuł i na koniec posprzątaj wszystko. Po zakończeniu będziesz mieć samodzielny fragment kodu, który możesz wkleić do dowolnego projektu Java używającego Aspose.HTML for Java 23.1 (lub nowszej). +Rozwiązanie jest dość proste: skonfiguruj obiekt `SandboxOptions`, uruchom `Sandbox`, załaduj zewnętrzny URL przy użyciu `HtmlDocument`, odczytaj tytuł i na koniec posprzątaj wszystko. Po zakończeniu będziesz mieć samodzielny fragment kodu, który możesz wstawić do dowolnego projektu Java używającego Aspose.HTML for Java 23.1 (lub nowszej). -## Czego się nauczysz +## Szybkie odpowiedzi +- **What is an Aspose sandbox?** To jest odizolowane środowisko oparte na Chromium, które działa wewnątrz Twojej JVM bez dotykania systemu plików. +- **Why use a sandbox for page title extraction?** Gwarantuje, że zewnętrzne skrypty nie mogą wpływać na stan ani pamięć Twojej aplikacji. +- **Which Java version is required?** Java 8 lub nowsza; biblioteka działa również z Java 11, 17 i późniejszymi. +- **Do I need a license?** Licencja trial jest wystarczająca do rozwoju; licencja komercyjna jest wymagana w produkcji. +- **How many lines of code are needed?** Mniej niż 30 linii dla podstawowej logiki, plus opcjonalny kod konfiguracji. -- Jak **create Aspose HTML sandbox** z niestandardowymi ustawieniami viewport i user‑agent. -- Dokładne kroki, aby **retrieve page title java** ze zdalnej strony, pozostając bezpiecznie w piaskownicy. -- Typowe pułapki (np. zapomnienie o zwolnieniu zasobów) oraz wskazówki najlepszych praktyk, które utrzymują niski ślad pamięciowy. -- Pełny, gotowy do uruchomienia program Java, który możesz skopiować, skompilować i wykonać. +## Co to jest create aspose sandbox java? +`Sandbox` to lekki, odizolowany silnik przeglądarki Aspose.HTML, który działa wewnątrz procesu Java. Zapewnia bezpieczny kontener, w którym możesz ładować zdalny HTML, wykonywać JavaScript i wchodzić w interakcję z DOM, nie odsłaniając środowiska hosta. -> **Wymagania wstępne** – Potrzebujesz ważnej licencji Aspose.HTML for Java (działa wersja próbna) oraz zainstalowanego Java 8 lub nowszego. Nie są wymagane dodatkowe biblioteki zewnętrzne. +## Dlaczego używać piaskownicy przy retrieve page title java? +Aspose.HTML obsługuje **ponad 50 formatów wejściowych i wyjściowych** i może renderować dokumenty wielostronicowe bez ładowania całego pliku do pamięci. Użycie piaskownicy dodaje dodatkową warstwę bezpieczeństwa, zapewniając, że żaden złośliwy skrypt na docelowej stronie nie może opuścić kontenera. Takie podejście zmniejsza ryzyko wycieków pamięci i chroni Twoją JVM przed niepożądanymi skutkami ubocznymi. ---- +## Wymagania wstępne +- Ważna licencja Aspose.HTML for Java (licencja trial działa do testów). +- Java 8 lub nowsza zainstalowana na Twoim komputerze deweloperskim. +- Narzędzie budujące Maven lub Gradle do zarządzania zależnościami. + +> **Pro tip:** Utrzymuj wersję biblioteki zgodną z oficjalnymi notatkami wydania Aspose; nowsze wersje zawierają poprawki bezpieczeństwa, które są krytyczne przy ładowaniu niezweryfikowanych treści. -## Krok 1: Przygotuj swój projekt +## Krok 1: skonfiguruj swój projekt -Zanim przejdziemy do kodu, upewnij się, że Twój plik `pom.xml` (Maven) lub Gradle zawiera zależność Aspose.HTML: +Zanim przejdziemy do kodu, upewnij się, że Twój `pom.xml` (Maven) lub plik Gradle zawiera zależność Aspose.HTML: ```xml <!-- Maven --> @@ -65,13 +97,12 @@ Jeśli używasz Gradle: implementation 'com.aspose:aspose-html:23.1' ``` -> **Wskazówka:** Utrzymuj wersję biblioteki zgodną z oficjalnymi notatkami wydania Aspose; nowsze wersje zawierają poprawki bezpieczeństwa, które są szczególnie ważne przy ładowaniu zewnętrznych treści. - ---- +> **Pro tip:** Utrzymuj wersję biblioteki zgodną z oficjalnymi notatkami wydania Aspose; nowsze wersje zawierają poprawki bezpieczeństwa, które są szczególnie ważne przy ładowaniu zewnętrznych treści. -## Skonfiguruj opcje piaskownicy (retrieve page title java) +## Jak skonfigurować opcje piaskownicy? (retrieve page title java) -Pierwszy rzeczywisty krok w **creating an Aspose HTML sandbox** to zdecydowanie, jak wirtualna przeglądarka ma się zachowywać. Możesz naśladować komputer stacjonarny, urządzenie mobilne lub nawet niestandardowy rozmiar ekranu. +Pierwszym rzeczywistym krokiem w **creating an Aspose HTML sandbox** jest określenie, jak ma zachowywać się wirtualna przeglądarka. Możesz naśladować komputer stacjonarny, urządzenie mobilne lub nawet niestandardowy rozmiar ekranu. +`SandboxOptions` konfiguruje zachowanie piaskownicy, takie jak rozmiar viewportu, ciąg user‑agent oraz wartości timeoutu. Pozwala kontrolować, jak strona jest renderowana i jakie zasoby są dozwolone. ```java import com.aspose.html.sandbox.SandboxOptions; @@ -83,13 +114,12 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -Dlaczego to ważne? Rozmiar viewport wpływa na zapytania CSS media, a user‑agent może wpływać na negocjację treści po stronie serwera. Ustawienie ich explicite zapewnia, że strona, z której później **retrieve page title java**, zostanie wyrenderowana dokładnie tak, jak oczekujesz. - ---- +Dlaczego to ważne? Rozmiar viewportu wpływa na zapytania CSS media, a user‑agent może wpływać na negocjację treści po stronie serwera. Ustawienie ich explicite zapewnia, że strona, z której później **retrieve page title java**, zostanie wyrenderowana dokładnie tak, jak oczekujesz. -## Utwórz instancję piaskownicy +## Jak utworzyć instancję piaskownicy? -Teraz, gdy mamy nasze opcje, możemy uruchomić samą piaskownicę. +Teraz, gdy mamy nasze opcje, możemy uruchomić samą piaskownicę. +`Sandbox` to odizolowana instancja silnika Chromium działająca w JVM. Tworzy bezpieczne środowisko, w którym HTML może być ładowany i wykonywany bez dotykania systemu plików hosta. ```java import com.aspose.html.sandbox.Sandbox; @@ -98,13 +128,12 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -Traktuj `Sandbox` jako lekki, odizolowany silnik Chromium działający wewnątrz Twojego procesu Java. Nie dotyka systemu plików, chyba że wyraźnie mu to zlecisz, co czyni go idealnym do bezpiecznego scrapowania. +Traktuj `Sandbox` jako lekki, odizolowany silnik Chromium, który działa wewnątrz Twojego procesu Java. Nie dotyka systemu plików, chyba że wyraźnie mu to zlecisz, co czyni go idealnym do bezpiecznego scrapowania. ---- - -## Załaduj zewnętrzną stronę wewnątrz piaskownicy +## Jak załadować zewnętrzną stronę w piaskownicy? -Z piaskownicą gotową, ładowanie zdalnej strony jest tak proste, jak przekazanie URL i instancji piaskownicy do `HtmlDocument`. +Gdy piaskownica jest gotowa, załadowanie zdalnej strony jest tak proste, jak przekazanie URL i instancji piaskownicy do `HtmlDocument`. +`HtmlDocument` reprezentuje stronę HTML załadowaną do piaskownicy, zapewniając dostęp do DOM, możliwości renderowania i wykonywania JavaScript. ```java import com.aspose.html.HtmlDocument; @@ -113,32 +142,30 @@ import com.aspose.html.HtmlDocument; HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); ``` -> **Przypadek brzegowy:** Jeśli docelowa strona wymaga uwierzytelnienia lub przekierowań, możesz wstępnie skonfigurować obsługę `HttpClient` i przekazać je przez `HtmlLoadOptions`. To wykracza poza zakres tego krótkiego przewodnika, ale API to obsługuje. - ---- +> **Edge case:** Jeśli docelowa strona wymaga uwierzytelnienia lub przekierowań, możesz wstępnie skonfigurować obsługę `HttpClient` i przekazać ją przez `HtmlLoadOptions`. To wykracza poza zakres tego krótkiego przewodnika, ale API to obsługuje. -## Uzyskaj tytuł strony – retrieve page title java +## Jak uzyskać tytuł strony? (retrieve page title java) -Teraz przychodzi część, o którą prosiłeś: wyodrębnienie tytułu strony przy pozostaniu w piaskownicy. Klasa `HtmlDocument` udostępnia metodę `getTitle()`, która odczytuje element `<title>`. +Teraz przychodzi część, o którą prosiłeś: wyodrębnienie tytułu strony pozostając w piaskownicy. Klasa `HtmlDocument` udostępnia metodę `getTitle()`, która odczytuje element `<title>`. +`getTitle()` zwraca tekstową zawartość elementu `<title>` strony, dając prosty sposób na weryfikację, że strona została poprawnie załadowana. ```java // Step 4 – read and print the title System.out.println("Title inside sandbox: " + htmlDoc.getTitle()); ``` -Kiedy uruchomisz pełny program przeciwko `https://example.com`, powinieneś zobaczyć: +Gdy uruchomisz pełny program przeciwko `https://example.com`, powinieneś zobaczyć: ``` Title inside sandbox: Example Domain ``` -Ta linia dowodzi, że pomyślnie **created an Aspose HTML sandbox**, załadowaliśmy zdalną stronę i **retrieved page title java** bez opuszczania odizolowanego środowiska. - ---- +Ten wiersz dowodzi, że pomyślnie **created an Aspose HTML sandbox**, załadowaliśmy zdalną stronę i **retrieved page title java** bez opuszczania odizolowanego środowiska. -## Posprzątaj zasoby +## Jak posprzątać zasoby? -Obiekty Aspose.HTML trzymają zasoby natywne, więc kluczowe jest ich jawne zwolnienie. Zapomnienie o tym może prowadzić do wycieków pamięci, szczególnie przy przetwarzaniu wielu stron w pętli. +Obiekty Aspose.HTML trzymają zasoby natywne, więc kluczowe jest ich jawne zwolnienie. Zapomnienie o tym może prowadzić do wycieków pamięci, zwłaszcza przy przetwarzaniu wielu stron w pętli. +`dispose()` zwalnia natywne zasoby trzymane przez obiekty Aspose.HTML, zapobiegając wyciekom pamięci i zapewniając, że JVM może szybko odzyskać pamięć. ```java // Step 5 – release native resources @@ -146,13 +173,11 @@ htmlDoc.dispose(); sandboxInstance.dispose(); ``` -> **Dlaczego zwalniać?** Podstawowy silnik Chromium przydziela pamięć natywną i uchwyty plików. Wywołanie `dispose()` informuje JVM, aby zwolnił je natychmiast, zamiast czekać na finalizatory. - ---- +> **Why dispose?** Podstawowy silnik Chromium przydziela natywną pamięć i uchwyty plików. Wywołanie `dispose()` informuje JVM, aby zwolnił je natychmiast, zamiast czekać na finalizatory. ## Pełny działający przykład -Poniżej znajduje się kompletny program, który możesz skopiować do pliku o nazwie `SandboxExample.java`. Skompiluj go przy pomocy `javac` i uruchom przy pomocy `java`. Wszystkie kroki są w prawidłowej kolejności, a każdy import jest wymieniony. +Poniżej znajduje się kompletny program, który możesz skopiować do pliku o nazwie `SandboxExample.java`. Skompiluj przy użyciu `javac` i uruchom przy pomocy `java`. Wszystkie kroki są w odpowiedniej kolejności, a wszystkie importy są wymienione. ```java import com.aspose.html.HtmlDocument; @@ -184,36 +209,54 @@ public class SandboxExample { } ``` -### Expected Output +![Zrzut ekranu kodu Java tworzącego Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "przykład sandbox Aspose HTML") + +### Oczekiwany wynik ``` Title inside sandbox: Example Domain ``` -Jeśli zamienisz `https://example.com` na inny URL, wydrukowany tytuł będzie odzwierciedlał tag `<title>` tej strony — pod warunkiem, że strona zezwala na dostęp anonimowy. - ---- +Jeśli zamienisz `https://example.com` na inny URL, wydrukowany tytuł odzwierciedli tag `<title>` tej strony — pod warunkiem, że witryna zezwala na dostęp anonimowy. ## Praktyczne wskazówki i typowe pułapki -- **Timeouty sieciowe:** Domyślnie piaskownica używa limitu czasu 60 sekund. Jeśli napotykasz wolniejsze strony, wywołaj `sandboxOptions.setTimeout(120_000);` przed utworzeniem piaskownicy. -- **Java Security Manager:** Uruchamiając w ograniczonym JVM, upewnij się, że `java.security.policy` przyznaje `java.net.SocketPermission` dla docelowej domeny. -- **Wiele stron:** Jeśli musisz przetworzyć wiele URL‑i, ponownie użyj jednej instancji `Sandbox`; po prostu utwórz nowy `HtmlDocument` dla każdego URL i zwolnij go po użyciu. To zmniejsza narzut uruchomieniowy. -- **Debugowanie:** Ustaw `sandboxOptions.setDebugMode(true);`, aby uzyskać szczegółowe logi konsoli, które pomogą zidentyfikować, dlaczego strona nie została załadowana. +- **Network timeouts:** Domyślnie piaskownica używa limitu czasu 60 sekund. Jeśli napotykasz wolniejsze witryny, wywołaj `sandboxOptions.setTimeout(120_000);` przed utworzeniem piaskownicy. +- **Java security manager:** Uruchamiając w ograniczonym JVM, upewnij się, że `java.security.policy` przyznaje `java.net.SocketPermission` dla docelowej domeny. +- **Processing multiple pages:** Ponownie używaj jednej instancji `Sandbox`; po prostu utwórz nowy `HtmlDocument` dla każdego URL i po użyciu go zwolnij. To zmniejsza narzut przy uruchamianiu. +- **Debugging:** Ustaw `sandboxOptions.setDebugMode(true);`, aby uzyskać szczegółowe logi konsoli, które pomogą zidentyfikować, dlaczego strona nie załadowała się. ---- +## Najczęściej zadawane pytania -## Zakończenie +**Q: Czy mogę używać tej piaskownicy w bezgłowym pipeline CI?** +A: Tak. Piaskownica działa bez widocznego UI i może być uruchamiana na każdym serwerze obsługującym Java 8+. -Właśnie **created an Aspose HTML sandbox** w Javie, skonfigurowaliśmy go z przewidywalnym viewportem, załadowaliśmy zewnętrzną stronę i zademonstrowaliśmy, jak **retrieve page title java** bezpiecznie i wydajnie. Cały przepływ — od konfiguracji opcji po sprzątanie zasobów — jest zawarty w kompaktowym, wielokrotnego użytku fragmencie kodu. +**Q: Czy piaskownica obsługuje wykonywanie JavaScript?** +A: Absolutnie. Używa Chromium pod maską, więc nowoczesny JavaScript, w tym funkcje ES6, działa poprawnie. -Teraz możesz wziąć tę podstawę i rozbudować ją: scrapować meta tagi, robić zrzuty ekranu lub nawet uruchamiać JavaScript w piaskownicy. Możliwości są tak szerokie, jak sam internet. +**Q: Jak duże strony może obsłużyć piaskownica?** +A: Silnik może renderować strony do 200 MB, ograniczone jedynie pamięcią maszyny hosta. -Masz pytania dotyczące obsługi uwierzytelniania, ustawień proxy lub renderowania PDF‑ów z piaskownicy? Napisz komentarz, a razem przyjrzymy się tym zaawansowanym scenariuszom. Szczęśliwego kodowania! +**Q: Co zrobić, jeśli docelowa strona blokuje automatyczne żądania?** +A: Możesz dostosować ciąg `User-Agent` w `SandboxOptions` lub dostarczyć ciasteczka przez `HtmlLoadOptions`, aby naśladować zwykłą przeglądarkę. + +**Q: Czy istnieje sposób na zrobienie zrzutu ekranu załadowanej strony?** +A: Tak. Po załadowaniu dokumentu wywołaj `document.save("snapshot.png", SaveFormat.Png);`, aby wyeksportować obraz PNG renderowanej strony. + +**Ostatnia aktualizacja:** 2026-09-03 +**Testowano z:** Aspose.HTML for Java 23.1 +**Autor:** Aspose + +## Powiązane samouczki + +- [Jak używać sandboxu dla HTML do PDF w Java – przewodnik krok po kroku](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [Utwórz PDF z HTML przy użyciu Aspose.HTML for Java – Sandbox](/html/java/configuring-environment/implement-sandboxing/) +- [Włącz wykonywanie skryptów w Java – kompletny przewodnik Aspose HTML](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-guide/) -![Zrzut ekranu kodu Java tworzącego piaskownicę Aspose HTML](/images/create-aspose-html-sandbox.png "przykład tworzenia piaskownicy aspose 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/portuguese/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/portuguese/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index 1ff082b579..ded1068b84 100644 --- a/html/portuguese/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/portuguese/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,26 +1,51 @@ --- category: general -date: 2026-01-04 -description: Crie um sandbox Aspose HTML em Java e aprenda como recuperar o título - da página em Java com um exemplo passo a passo. Código rápido e executável incluído. +date: 2026-09-03 +description: Como criar sandbox Aspose java e recuperar o título da página java com + um carregamento HTML limpo e isolado. Guia passo a passo com código executável. draft: false keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title -language: pt -og_description: Crie um sandbox Aspose HTML em Java e recupere instantaneamente o - título da página Java. Siga este guia detalhado para um carregamento de HTML limpo - e isolado. -og_title: Criar Sandbox Aspose HTML – Tutorial Java +lastmod: 2026-09-03 +og_description: Aprenda a criar um sandbox Aspose em Java e recuperar o título da + página java instantaneamente. Passos detalhados, melhores práticas e código de exemplo + completo. +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: Como criar sandbox Aspose java – guia completo +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: Criar Sandbox Aspose HTML – Guia Completo de Java +title: Como criar sandbox Aspose java – guia completo url: /pt/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -28,26 +53,35 @@ url: /pt/java/configuring-environment/create-aspose-html-sandbox-complete-java-g {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Crie um Sandbox Aspose HTML – Guia Completo em Java +# Como criar sandbox Aspose java – guia completo -Já precisou **criar um sandbox Aspose HTML** mas não sabia como manter a página carregada isolada da sua JVM principal? Talvez você esteja construindo um web‑scraper, um harness de testes, ou apenas queira experimentar páginas remotas sem correr riscos de efeitos colaterais. Neste tutorial vamos percorrer exatamente isso, e também mostrar **como recuperar o título da página java** de dentro do sandbox. +Já precisou **criar sandbox Aspose HTML** mas não tinha certeza de como manter a página carregada isolada da sua JVM principal? Talvez você esteja construindo um web‑scraper, um harness de teste, ou apenas queira experimentar páginas remotas sem correr riscos de efeitos colaterais. Neste tutorial vamos percorrer exatamente isso, e também vamos mostrar **como recuperar o título da página java** de dentro do sandbox. -A solução é bastante direta: configure um objeto `SandboxOptions`, inicie um `Sandbox`, carregue uma URL externa com `HtmlDocument`, leia o título e, por fim, limpe tudo. Ao final, você terá um trecho autônomo que pode ser inserido em qualquer projeto Java que use Aspose.HTML for Java 23.1 (ou superior). +A solução é bastante simples: configure um objeto `SandboxOptions`, inicie um `Sandbox`, carregue uma URL externa com `HtmlDocument`, leia o título e, finalmente, limpe tudo. Ao final, você terá um trecho autônomo que pode ser inserido em qualquer projeto Java que use Aspose.HTML for Java 23.1 (ou mais recente). -## O que você vai aprender +## Respostas rápidas +- **O que é um sandbox Aspose?** É um ambiente isolado baseado em Chromium que roda dentro da sua JVM sem tocar no sistema de arquivos. +- **Por que usar um sandbox para extração do título da página?** Garante que scripts externos não possam afetar o estado ou a memória da sua aplicação. +- **Qual versão do Java é necessária?** Java 8 ou mais recente; a biblioteca também funciona com Java 11, 17 e posteriores. +- **Preciso de uma licença?** Uma licença de avaliação gratuita é suficiente para desenvolvimento; uma licença comercial é necessária para produção. +- **Quantas linhas de código são necessárias?** Menos de 30 linhas para a lógica principal, mais código de configuração opcional. -- Como **criar um sandbox Aspose HTML** com configurações personalizadas de viewport e user‑agent. -- Os passos exatos para **recuperar o título da página java** de uma página remota mantendo‑se seguramente dentro do sandbox. -- Armadilhas comuns (como esquecer de descartar recursos) e dicas de boas práticas que mantêm sua pegada de memória baixa. -- Um programa Java completo, pronto‑para‑executar, que você pode copiar‑colar, compilar e executar. +## O que é criar sandbox Aspose java? +`Sandbox` é o motor de navegador leve e isolado do Aspose.HTML que roda dentro do processo Java. Ele fornece um contêiner seguro onde você pode carregar HTML remoto, executar JavaScript e interagir com o DOM sem expor seu ambiente host. -> **Pré‑requisitos** – Você precisa de uma licença válida do Aspose.HTML for Java (a versão de avaliação gratuita funciona) e do Java 8 ou superior instalado. Nenhuma biblioteca de terceiros adicional é necessária. +## Por que usar um sandbox ao recuperar o título da página java? +Aspose.HTML suporta **mais de 50 formatos de entrada e saída** e pode renderizar documentos com centenas de páginas sem carregar o arquivo inteiro na memória. Usar um sandbox adiciona uma camada extra de segurança, garantindo que qualquer script malicioso na página alvo não possa escapar do contêiner. Essa abordagem reduz o risco de vazamentos de memória e protege sua JVM de efeitos colaterais indesejados. ---- +## Pré-requisitos +- Uma licença válida do Aspose.HTML for Java (a versão de avaliação funciona para testes). +- Java 8 ou mais recente instalado na sua máquina de desenvolvimento. +- Ferramenta de build Maven ou Gradle para gerenciar dependências. + +> **Dica profissional:** Mantenha a versão da biblioteca alinhada com as notas de lançamento oficiais da Aspose; versões mais recentes incluem correções de segurança que são críticas ao carregar conteúdo não confiável. -## Etapa 1: Configure seu projeto +## Etapa 1: configure seu projeto -Antes de mergulharmos no código, certifique‑se de que seu `pom.xml` (Maven) ou arquivo Gradle inclui a dependência do Aspose.HTML: +Antes de mergulharmos no código, certifique-se de que seu `pom.xml` (Maven) ou arquivo Gradle inclui a dependência Aspose.HTML: ```xml <!-- Maven --> @@ -58,19 +92,18 @@ Antes de mergulharmos no código, certifique‑se de que seu `pom.xml` (Maven) o </dependency> ``` -Se estiver usando Gradle: +Se você estiver usando Gradle: ```groovy implementation 'com.aspose:aspose-html:23.1' ``` -> **Dica de especialista:** Mantenha a versão da biblioteca sincronizada com as notas de lançamento oficiais da Aspose; versões mais recentes adicionam correções de segurança que são especialmente importantes ao carregar conteúdo externo. - ---- +> **Dica profissional:** Mantenha a versão da biblioteca sincronizada com as notas de lançamento oficiais da Aspose; versões mais recentes adicionam correções de segurança que são especialmente importantes ao carregar conteúdo externo. -## Configurar opções do sandbox (recuperar título da página java) +## Como você configura as opções do sandbox? (recuperar título da página java) -O primeiro passo real em **criar um sandbox Aspose HTML** é decidir como o navegador virtual deve se comportar. Você pode imitar um desktop, um dispositivo móvel ou até mesmo um tamanho de tela personalizado. +O primeiro passo real em **criar um sandbox Aspose HTML** é decidir como o navegador virtual deve se comportar. Você pode imitar um desktop, um dispositivo móvel ou até um tamanho de tela personalizado. +`SandboxOptions` configura o comportamento do sandbox, como tamanho da viewport, string do user‑agent e valores de timeout. Ele permite que você controle como a página é renderizada e quais recursos são permitidos. ```java import com.aspose.html.sandbox.SandboxOptions; @@ -82,13 +115,12 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -Por que isso importa? O tamanho do viewport influencia consultas de mídia CSS, enquanto o user‑agent pode afetar a negociação de conteúdo do lado do servidor. Defini‑los explicitamente garante que a página da qual você depois **recupera o título da página java** seja renderizada exatamente como você espera. - ---- +Por que isso importa? O tamanho da viewport influencia as media queries CSS, enquanto o user‑agent pode afetar a negociação de conteúdo do lado do servidor. Defini‑los explicitamente garante que a página da qual você posteriormente **recupera o título da página java** seja renderizada exatamente como você espera. -## Criar a instância do Sandbox +## Como você cria a instância do sandbox? -Agora que temos nossas opções, podemos iniciar o próprio sandbox. +Agora que temos nossas opções, podemos iniciar o sandbox propriamente dito. +`Sandbox` é a instância do motor Chromium isolado que roda dentro da JVM. Ele cria um ambiente seguro onde HTML pode ser carregado e executado sem tocar no sistema de arquivos host. ```java import com.aspose.html.sandbox.Sandbox; @@ -97,13 +129,12 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -Pense no `Sandbox` como um motor Chromium leve e isolado que vive dentro do seu processo Java. Ele não toca o sistema de arquivos a menos que você o instrua explicitamente, o que o torna perfeito para scraping seguro. +Pense no `Sandbox` como um motor Chromium leve e isolado que vive dentro do seu processo Java. Ele não toca no sistema de arquivos a menos que você o instrua explicitamente, o que o torna perfeito para scraping seguro. ---- - -## Carregar uma página externa dentro do sandbox +## Como você carrega uma página externa dentro do sandbox? -Com o sandbox pronto, carregar uma página remota é tão simples quanto passar a URL e a instância do sandbox para `HtmlDocument`. +Com o sandbox pronto, carregar uma página remota é tão simples quanto passar a URL e a instância do sandbox para `HtmlDocument`. +`HtmlDocument` representa uma página HTML carregada no sandbox, fornecendo acesso ao DOM, recursos de renderização e execução de JavaScript. ```java import com.aspose.html.HtmlDocument; @@ -112,32 +143,30 @@ import com.aspose.html.HtmlDocument; HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); ``` -> **Caso extremo:** Se o site de destino exigir autenticação ou redirecionamentos, você pode pré‑configurar manipuladores `HttpClient` e passá‑los via `HtmlLoadOptions`. Isso está fora do escopo deste guia rápido, mas a API oferece suporte. - ---- +> **Caso especial:** Se o site alvo exigir autenticação ou redirecionamentos, você pode pré‑configurar manipuladores `HttpClient` e passá‑los via `HtmlLoadOptions`. Isso está fora do escopo deste guia rápido, mas a API o suporta. -## Acessar o título da página – recuperar título da página java +## Como você acessa o título da página? (recuperar título da página java) -Agora vem a parte que você pediu: extrair o título da página enquanto permanece dentro do sandbox. A classe `HtmlDocument` expõe um método `getTitle()` que lê o elemento `<title>`. +Agora vem a parte que você pediu: extrair o título da página enquanto permanece dentro do sandbox. A classe `HtmlDocument` expõe um método `getTitle()` que lê o elemento `<title>`. +`getTitle()` retorna o conteúdo de texto do elemento `<title>` da página, oferecendo uma maneira simples de verificar se a página foi carregada corretamente. ```java // Step 4 – read and print the title System.out.println("Title inside sandbox: " + htmlDoc.getTitle()); ``` -Ao executar o programa completo contra `https://example.com`, você deverá ver: +Quando você executar o programa completo contra `https://example.com`, deverá ver: ``` Title inside sandbox: Example Domain ``` -Essa linha prova que **criamos um sandbox Aspose HTML**, carregamos uma página remota e **recuperamos o título da página java** sem jamais deixar o ambiente isolado. - ---- +Essa linha prova que conseguimos **criar um sandbox Aspose HTML**, carregar uma página remota e **recuperar o título da página java** sem jamais deixar o ambiente isolado. -## Limpar recursos +## Como você limpa os recursos? -Objetos do Aspose.HTML mantêm recursos nativos, portanto é crucial descartá‑los explicitamente. Esquecer de fazer isso pode gerar vazamentos de memória, especialmente ao processar muitas páginas em um loop. +Objetos Aspose.HTML mantêm recursos nativos, portanto é crucial descartá‑los explicitamente. Esquecer de fazer isso pode levar a vazamentos de memória, especialmente ao processar muitas páginas em um loop. +`dispose()` libera os recursos nativos mantidos pelos objetos Aspose.HTML, prevenindo vazamentos de memória e garantindo que a JVM recupere a memória prontamente. ```java // Step 5 – release native resources @@ -145,13 +174,11 @@ htmlDoc.dispose(); sandboxInstance.dispose(); ``` -> **Por que descartar?** O motor Chromium subjacente aloca memória nativa e manipuladores de arquivos. Chamar `dispose()` indica à JVM que libere esses recursos imediatamente, em vez de aguardar os finalizadores. +> **Por que descartar?** O motor Chromium subjacente aloca memória nativa e manipuladores de arquivos. Chamar `dispose()` informa à JVM para liberar esses recursos imediatamente em vez de esperar pelos finalizadores. ---- - -## Exemplo completo funcionando +## Exemplo completo em funcionamento -Abaixo está o programa completo que você pode copiar para um arquivo chamado `SandboxExample.java`. Compile com `javac` e execute com `java`. Todas as etapas estão na ordem correta, e cada importação está listada. +Abaixo está o programa completo que você pode copiar para um arquivo chamado `SandboxExample.java`. Compile com `javac` e execute com `java`. Todas as etapas estão na ordem correta, e todas as importações são listadas. ```java import com.aspose.html.HtmlDocument; @@ -183,36 +210,54 @@ public class SandboxExample { } ``` +![Captura de tela do código Java criando um sandbox Aspose HTML](/images/create-aspose-html-sandbox.png "exemplo de sandbox Aspose HTML criado") + ### Saída esperada ``` Title inside sandbox: Example Domain ``` -Se você substituir `https://example.com` por outra URL, o título impresso refletirá a tag `<title>` dessa página — desde que o site permita acesso anônimo. +Se você substituir `https://example.com` por outra URL, o título impresso refletirá a tag `<title>` daquela página — desde que o site permita acesso anônimo. ---- - -## Dicas práticas & armadilhas comuns +## Dicas práticas e armadilhas comuns -- **Timeouts de rede:** Por padrão o sandbox usa um timeout de 60 segundos. Se você estiver acessando sites mais lentos, chame `sandboxOptions.setTimeout(120_000);` antes de criar o sandbox. -- **Java Security Manager:** Ao rodar dentro de uma JVM restrita, garanta que o `java.security.policy` conceda `java.net.SocketPermission` para o domínio de destino. -- **Múltiplas páginas:** Se precisar processar muitas URLs, reutilize uma única instância de `Sandbox`; basta criar um novo `HtmlDocument` para cada URL e descartá‑lo depois. Isso reduz a sobrecarga de inicialização. +- **Timeouts de rede:** Por padrão, o sandbox usa um timeout de 60 segundos. Se você estiver acessando sites mais lentos, chame `sandboxOptions.setTimeout(120_000);` antes de criar o sandbox. +- **Gerenciador de segurança Java:** Ao executar dentro de uma JVM restrita, certifique‑se de que o `java.security.policy` conceda `java.net.SocketPermission` para o domínio alvo. +- **Processamento de múltiplas páginas:** Reutilize uma única instância `Sandbox`; basta criar um novo `HtmlDocument` para cada URL e descartá‑lo depois. Isso reduz a sobrecarga de inicialização. - **Depuração:** Defina `sandboxOptions.setDebugMode(true);` para obter logs detalhados no console que podem ajudar a identificar por que uma página falhou ao carregar. ---- +## Perguntas frequentes -## Conclusão +**Q: Posso usar este sandbox em um pipeline CI headless?** +A: Sim. O sandbox roda sem UI visível e pode ser executado em qualquer servidor que suporte Java 8+. -Acabamos de **criar um sandbox Aspose HTML** em Java, configurá‑lo com um viewport previsível, carregar uma página externa e demonstrar como **recuperar o título da página java** de forma segura e eficiente. Todo o fluxo — da configuração das opções à limpeza dos recursos — está encapsulado em um trecho compacto e reutilizável. +**Q: O sandbox suporta execução de JavaScript?** +A: Absolutamente. Ele usa Chromium nos bastidores, portanto JavaScript moderno, incluindo recursos ES6, funciona corretamente. -Agora você pode usar essa base e expandi‑la: extrair meta tags, capturar screenshots ou até executar JavaScript dentro do sandbox. As possibilidades são tão amplas quanto a própria web. +**Q: Qual o tamanho máximo de página que o sandbox pode lidar?** +A: O motor pode renderizar páginas de até 200 MB, limitado apenas pela memória da máquina host. -Tem dúvidas sobre como lidar com autenticação, configurações de proxy ou renderização de PDFs a partir do sandbox? Deixe um comentário, e exploraremos esses cenários avançados juntos. Boa codificação! +**Q: E se o site alvo bloquear requisições automatizadas?** +A: Você pode personalizar a string `User-Agent` em `SandboxOptions` ou fornecer cookies via `HtmlLoadOptions` para imitar um navegador comum. + +**Q: Existe uma forma de capturar uma captura de tela da página carregada?** +A: Sim. Após carregar o documento, chame `document.save("snapshot.png", SaveFormat.Png);` para exportar uma imagem PNG da página renderizada. + +**Última atualização:** 2026-09-03 +**Testado com:** Aspose.HTML for Java 23.1 +**Autor:** Aspose + +## Tutoriais Relacionados + +- [Como usar Sandbox para Html para Pdf Java Guia passo a passo](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [Criar PDF a partir de HTML usando Aspose.HTML para Java – Sandbox](/html/java/configuring-environment/implement-sandboxing/) +- [Habilitar execução de script em Java Guia completo Aspose Html](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-guide/) -![Captura de tela do código Java criando um sandbox Aspose HTML](/images/create-aspose-html-sandbox.png "exemplo de criação de sandbox aspose 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/russian/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/russian/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index 1c80dac566..f4832d8c46 100644 --- a/html/russian/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/russian/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,26 +1,50 @@ --- category: general -date: 2026-01-04 -description: Создайте песочницу Aspose HTML на Java и узнайте, как получить заголовок - страницы в Java с пошаговым примером. Быстрый, готовый к запуску код включён. +date: 2026-09-03 +description: Как создать песочницу Aspose java и получить заголовок страницы java + с чистой, изолированной загрузкой HTML. Пошаговое руководство с исполняемым кодом. draft: false keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title -language: ru -og_description: Создайте песочницу Aspose HTML в Java и мгновенно получите заголовок - страницы. Следуйте этому подробному руководству для чистой, изолированной загрузки - HTML. -og_title: Создайте песочницу Aspose HTML – учебник по Java +lastmod: 2026-09-03 +og_description: Узнайте, как создать песочницу Aspose в Java и мгновенно получить + заголовок страницы java. Подробные шаги, лучшие практики и полный пример кода. +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: Как создать песочницу Aspose java – полное руководство +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: Создание песочницы Aspose HTML – Полное руководство по Java +title: Как создать песочницу Aspose java – полное руководство url: /ru/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -28,26 +52,35 @@ url: /ru/java/configuring-environment/create-aspose-html-sandbox-complete-java-g {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Создание песочницы Aspose HTML – Полное руководство по Java +# Как создать Aspose sandbox java – полное руководство -Когда‑нибудь вам нужно было **create Aspose HTML sandbox**, но вы не знали, как изолировать загруженную страницу от основной JVM? Возможно, вы создаёте веб‑скрейпер, тестовый стенд или просто хотите поэкспериментировать с удалёнными страницами без риска побочных эффектов. В этом руководстве мы подробно пройдём этот процесс, а также покажем, как **how to retrieve page title java** изнутри песочницы. +Ever needed to **create Aspose HTML sandbox** but weren’t sure how to keep the loaded page isolated from your main JVM? Maybe you’re building a web‑scraper, a testing harness, or just want to experiment with remote pages without risking side‑effects. In this tutorial we’ll walk through exactly that, and we’ll also show you **how to retrieve page title java** from inside the sandbox. -Решение довольно простое: настроить объект `SandboxOptions`, создать `Sandbox`, загрузить внешний URL с помощью `HtmlDocument`, прочитать заголовок и в конце очистить всё. К концу вы получите автономный фрагмент кода, который можно вставить в любой Java‑проект, использующий Aspose.HTML for Java 23.1 (или новее). +The solution is pretty straightforward: configure a `SandboxOptions` object, spin up a `Sandbox`, load an external URL with `HtmlDocument`, read the title, and finally clean everything up. By the end you’ll have a self‑contained snippet you can drop into any Java project that uses Aspose.HTML for Java 23.1 (or newer). -## Что вы узнаете +## Быстрые ответы +- **What is an Aspose sandbox?** It’s an isolated Chromium‑based environment that runs inside your JVM without touching the file system. +- **Why use a sandbox for page title extraction?** It guarantees that external scripts can’t affect your application’s state or memory. +- **Which Java version is required?** Java 8 or newer; the library also works with Java 11, 17, and later. +- **Do I need a license?** A free trial license is sufficient for development; a commercial license is required for production. +- **How many lines of code are needed?** Less than 30 lines for the core logic, plus optional setup code. -- Как **create Aspose HTML sandbox** с пользовательскими настройками viewport и user‑agent. -- Точные шаги для **retrieve page title java** с удалённой страницы, оставаясь безопасно внутри песочницы. -- Распространённые подводные камни (например, забывание освобождать ресурсы) и рекомендации best‑practice, позволяющие держать небольшое потребление памяти. -- Полная, готовая к запуску Java‑программа, которую можно скопировать‑вставить, скомпилировать и выполнить. +## Что такое create aspose sandbox java? +`Sandbox` is Aspose.HTML's lightweight, isolated browser engine that runs inside the Java process. It provides a secure container where you can load remote HTML, execute JavaScript, and interact with the DOM without exposing your host environment. -> **Prerequisites** – Вам нужна действующая лицензия Aspose.HTML for Java (доступна бесплатная пробная версия) и установленный Java 8 или новее. Дополнительные сторонние библиотеки не требуются. +## Почему использовать sandbox при получении page title java? +Aspose.HTML supports **50+ input and output formats** and can render multi‑hundred‑page documents without loading the entire file into memory. Using a sandbox adds an extra layer of security, ensuring that any malicious script on the target page cannot escape the container. This approach reduces the risk of memory leaks and protects your JVM from unwanted side‑effects. ---- +## Требования +- A valid Aspose.HTML for Java license (trial works for testing). +- Java 8 or newer installed on your development machine. +- Maven or Gradle build tool to manage dependencies. + +> **Pro tip:** Keep the library version aligned with the official Aspose release notes; newer releases include security patches that are critical when loading untrusted content. -## Шаг 1: Настройте ваш проект +## Шаг 1: настройте ваш проект -Прежде чем погрузиться в код, убедитесь, что ваш `pom.xml` (Maven) или файл Gradle включает зависимость Aspose.HTML: +Before we dive into code, make sure your `pom.xml` (Maven) or Gradle file includes the Aspose.HTML dependency: ```xml <!-- Maven --> @@ -58,17 +91,18 @@ url: /ru/java/configuring-environment/create-aspose-html-sandbox-complete-java-g </dependency> ``` -Если вы используете Gradle: +If you’re using Gradle: ```groovy implementation 'com.aspose:aspose-html:23.1' ``` -> **Pro tip:** Держите версию библиотеки в соответствии с официальными примечаниями к выпуску Aspose; более новые версии включают исправления безопасности, которые особенно важны при загрузке внешнего контента. +> **Pro tip:** Keep the library version in sync with the official Aspose release notes; newer versions add security fixes that are especially important when loading external content. -## Настройка параметров песочницы (retrieve page title java) +## Как настроить параметры sandbox? (retrieve page title java) -Первый реальный шаг в **creating an Aspose HTML sandbox** — решить, как должен вести себя виртуальный браузер. Вы можете имитировать настольный компьютер, мобильное устройство или даже пользовательский размер экрана. +The first real step in **creating an Aspose HTML sandbox** is to decide how the virtual browser should behave. You can mimic a desktop, a mobile device, or even a custom screen size. +`SandboxOptions` configures the behavior of the sandbox, such as viewport size, user‑agent string, and timeout values. It lets you control how the page is rendered and what resources are allowed. ```java import com.aspose.html.sandbox.SandboxOptions; @@ -80,11 +114,12 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -Почему это важно? Размер viewport влияет на CSS‑медиа‑запросы, а user‑agent может влиять на серверную согласованность контента. Явная установка этих параметров гарантирует, что страница, из которой вы позже **retrieve page title java**, будет отрисована точно так, как вы ожидаете. +Why does this matter? The viewport size influences CSS media queries, while the user‑agent can affect server‑side content negotiation. Setting them explicitly ensures the page you later **retrieve page title java** from renders exactly as you expect. -## Создание экземпляра Sandbox +## Как создать экземпляр sandbox? -Теперь, когда у нас есть параметры, мы можем создать саму песочницу. +Now that we have our options, we can spin up the sandbox itself. +`Sandbox` is the isolated Chromium engine instance that runs inside the JVM. It creates a secure environment where HTML can be loaded and executed without touching the host file system. ```java import com.aspose.html.sandbox.Sandbox; @@ -93,11 +128,12 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -Считайте `Sandbox` легковесным, изолированным движком Chromium, работающим внутри вашего Java‑процесса. Он не взаимодействует с файловой системой, если вы явно не укажете иначе, что делает его идеальным для безопасного скрейпинга. +Think of `Sandbox` as a lightweight, isolated Chromium engine that lives inside your Java process. It doesn’t touch the file system unless you explicitly tell it to, which makes it perfect for secure scraping. -## Загрузка внешней страницы внутри песочницы +## Как загрузить внешнюю страницу в sandbox? -С готовой песочницей загрузка удалённой страницы так же проста, как передать URL и экземпляр песочницы в `HtmlDocument`. +With the sandbox ready, loading a remote page is as simple as passing the URL and the sandbox instance to `HtmlDocument`. +`HtmlDocument` represents an HTML page loaded into the sandbox, providing DOM access, rendering capabilities, and JavaScript execution. ```java import com.aspose.html.HtmlDocument; @@ -106,28 +142,30 @@ import com.aspose.html.HtmlDocument; HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); ``` -> **Edge case:** Если целевой сайт требует аутентификации или перенаправлений, вы можете предварительно настроить обработчики `HttpClient` и передать их через `HtmlLoadOptions`. Это выходит за рамки данного краткого руководства, но API это поддерживает. +> **Edge case:** If the target site requires authentication or redirects, you can pre‑configure `HttpClient` handlers and pass them via `HtmlLoadOptions`. That’s beyond the scope of this quick guide, but the API supports it. -## Доступ к заголовку страницы – retrieve page title java +## Как получить заголовок страницы? (retrieve page title java) -Теперь приходит часть, которую вы запросили: извлечение заголовка страницы, оставаясь внутри песочницы. Класс `HtmlDocument` предоставляет метод `getTitle()`, который читает элемент `<title>`. +Now comes the part you asked for: extracting the page title while staying inside the sandbox. The `HtmlDocument` class exposes a `getTitle()` method that reads the `<title>` element. +`getTitle()` returns the text content of the page’s `<title>` element, giving you a simple way to verify that the page loaded correctly. ```java // Step 4 – read and print the title System.out.println("Title inside sandbox: " + htmlDoc.getTitle()); ``` -Когда вы запустите полную программу с `https://example.com`, вы должны увидеть: +When you run the full program against `https://example.com`, you should see: ``` Title inside sandbox: Example Domain ``` -Эта строка доказывает, что мы успешно **created an Aspose HTML sandbox**, загрузили удалённую страницу и **retrieved page title java** не покидая изолированную среду. +That line proves we’ve successfully **created an Aspose HTML sandbox**, loaded a remote page, and **retrieved page title java** without ever leaving the isolated environment. -## Очистка ресурсов +## Как очистить ресурсы? -Объекты Aspose.HTML удерживают нативные ресурсы, поэтому важно явно освобождать их. Забвение этого может привести к утечкам памяти, особенно при обработке множества страниц в цикле. +Aspose.HTML objects hold native resources, so it’s crucial to dispose of them explicitly. Forgetting to do so can lead to memory leaks, especially when processing many pages in a loop. +`dispose()` releases native resources held by Aspose.HTML objects, preventing memory leaks and ensuring the JVM can reclaim memory promptly. ```java // Step 5 – release native resources @@ -135,11 +173,11 @@ htmlDoc.dispose(); sandboxInstance.dispose(); ``` -> **Why dispose?** Подлежащий движок Chromium выделяет нативную память и файловые дескрипторы. Вызов `dispose()` сообщает JVM освободить их сразу, а не ждать финализаторов. +> **Why dispose?** The underlying Chromium engine allocates native memory and file handles. Calling `dispose()` tells the JVM to free those immediately instead of waiting for finalizers. ## Полный рабочий пример -Ниже представлен полный код программы, который вы можете скопировать в файл с именем `SandboxExample.java`. Скомпилируйте с помощью `javac` и запустите с помощью `java`. Все шаги находятся в правильном порядке, и все импорты перечислены. +Below is the complete program you can copy into a file named `SandboxExample.java`. Compile with `javac` and run with `java`. All steps are in the correct order, and every import is listed. ```java import com.aspose.html.HtmlDocument; @@ -171,32 +209,56 @@ public class SandboxExample { } ``` +![Скриншот Java кода, создающего Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "пример создания aspose html sandbox") + ### Ожидаемый вывод ``` Title inside sandbox: Example Domain ``` -Если вы замените `https://example.com` другим URL, выведенный заголовок будет соответствовать тегу `<title>` той страницы — при условии, что сайт допускает анонимный доступ. +If you replace `https://example.com` with another URL, the printed title will reflect that page’s `<title>` tag—provided the site allows anonymous access. ## Практические советы и распространённые подводные камни -- **Network Timeouts:** По умолчанию песочница использует тайм‑аут 60 секунд. Если вы работаете с более медленными сайтами, вызовите `sandboxOptions.setTimeout(120_000);` перед созданием песочницы. -- **Java Security Manager:** При запуске в ограниченной JVM убедитесь, что `java.security.policy` предоставляет `java.net.SocketPermission` для целевого домена. -- **Multiple Pages:** Если необходимо обработать множество URL, переиспользуйте один экземпляр `Sandbox`; просто создавайте новый `HtmlDocument` для каждого URL и освобождайте его после использования. Это уменьшает накладные расходы на запуск. -- **Debugging:** Установите `sandboxOptions.setDebugMode(true);`, чтобы получать подробные сообщения в консоли, помогающие определить, почему страница не загрузилась. +- **Network timeouts:** By default the sandbox uses a 60‑second timeout. If you’re hitting slower sites, call `sandboxOptions.setTimeout(120_000);` before creating the sandbox. +- **Java security manager:** When running inside a restricted JVM, ensure the `java.security.policy` grants `java.net.SocketPermission` for the target domain. +- **Processing multiple pages:** Reuse a single `Sandbox` instance; just create a new `HtmlDocument` for each URL and dispose of it afterwards. This reduces startup overhead. +- **Debugging:** Set `sandboxOptions.setDebugMode(true);` to get verbose console logs that can help you pinpoint why a page failed to load. + +## Часто задаваемые вопросы + +**Q: Can I use this sandbox in a headless CI pipeline?** +A: Yes. The sandbox runs without a visible UI and can be executed on any server that supports Java 8+. + +**Q: Does the sandbox support JavaScript execution?** +A: Absolutely. It uses Chromium under the hood, so modern JavaScript, including ES6 features, runs correctly. -## Заключение +**Q: How large a page can the sandbox handle?** +A: The engine can render pages up to 200 MB in size, limited only by the host machine’s memory. -Мы только что **created an Aspose HTML sandbox** на Java, настроили предсказуемый viewport, загрузили внешнюю страницу и продемонстрировали, как безопасно и эффективно **retrieve page title java**. Весь процесс — от настройки параметров до очистки ресурсов — упакован в компактный, переиспользуемый фрагмент кода. +**Q: What if the target site blocks automated requests?** +A: You can customize the `User-Agent` string in `SandboxOptions` or supply cookies via `HtmlLoadOptions` to mimic a regular browser. -Теперь вы можете взять эту основу и расширить её: скрейпить meta‑теги, делать скриншоты или даже выполнять JavaScript внутри песочницы. Возможности так же безграничны, как и сам веб. +**Q: Is there a way to capture a screenshot of the loaded page?** +A: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` to export a PNG image of the rendered page. -Есть вопросы по обработке аутентификации, настройкам прокси или рендерингу PDF из песочницы? Оставьте комментарий, и мы вместе изучим эти продвинутые сценарии. Счастливого кодинга! -![Screenshot of Java code creating an Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "create aspose html sandbox example") + +**Последнее обновление:** 2026-09-03 +**Тестировано с:** Aspose.HTML for Java 23.1 +**Автор:** Aspose + +## Связанные руководства + +- [Как использовать Sandbox для Html в Pdf Java пошаговое руководство](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [Создание PDF из HTML с помощью Aspose.HTML for Java – Sandbox](/html/java/configuring-environment/implement-sandboxing/) +- [Включение выполнения скриптов в Java Полное руководство Aspose Html](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-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/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/spanish/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index 753cd092ab..aa0edf7c33 100644 --- a/html/spanish/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/spanish/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,26 +1,51 @@ --- category: general -date: 2026-01-04 -description: Crea un sandbox de Aspose HTML en Java y aprende cómo obtener el título - de la página en Java con un ejemplo paso a paso. Código rápido y ejecutable incluido. +date: 2026-09-03 +description: Cómo crear un sandbox de Aspose java y obtener el título de la página + java con una carga HTML limpia y aislada. Guía paso a paso con código ejecutable. draft: false keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title -language: es -og_description: Crea un sandbox de Aspose HTML en Java y recupera el título de la - página en Java al instante. Sigue esta guía detallada para una carga de HTML limpia - y aislada. -og_title: Crear Sandbox de Aspose HTML – Tutorial de Java +lastmod: 2026-09-03 +og_description: Aprende a crear un sandbox de Aspose en Java y obtener el título de + la página java al instante. Pasos detallados, mejores prácticas y código de ejemplo + completo. +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: Cómo crear un sandbox de Aspose java – guía completa +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: Crear Sandbox de Aspose HTML – Guía completa de Java +title: Cómo crear un sandbox de Aspose java – guía completa url: /es/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -28,24 +53,33 @@ url: /es/java/configuring-environment/create-aspose-html-sandbox-complete-java-g {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Crear un Sandbox de Aspose HTML – Guía Completa de Java +# Cómo crear un sandbox Aspose java – guía completa -¿Alguna vez necesitaste **create Aspose HTML sandbox** pero no estabas seguro de cómo mantener la página cargada aislada de tu JVM principal? Tal vez estés construyendo un web‑scraper, un entorno de pruebas, o simplemente quieras experimentar con páginas remotas sin arriesgar efectos secundarios. En este tutorial recorreremos exactamente eso, y también te mostraremos **how to retrieve page title java** desde dentro del sandbox. +¿Alguna vez necesitaste **crear un sandbox Aspose HTML** pero no estabas seguro de cómo mantener la página cargada aislada de tu JVM principal? Tal vez estés construyendo un scraper web, un entorno de pruebas, o simplemente quieras experimentar con páginas remotas sin arriesgar efectos secundarios. En este tutorial recorreremos exactamente eso, y también te mostraremos **cómo obtener el título de la página java** desde dentro del sandbox. La solución es bastante directa: configura un objeto `SandboxOptions`, inicia un `Sandbox`, carga una URL externa con `HtmlDocument`, lee el título y, finalmente, limpia todo. Al final tendrás un fragmento autónomo que puedes insertar en cualquier proyecto Java que use Aspose.HTML for Java 23.1 (o superior). -## Lo que aprenderás +## Respuestas rápidas +- **¿Qué es un sandbox Aspose?** Es un entorno aislado basado en Chromium que se ejecuta dentro de tu JVM sin tocar el sistema de archivos. +- **¿Por qué usar un sandbox para extraer el título de la página?** Garantiza que los scripts externos no puedan afectar el estado o la memoria de tu aplicación. +- **¿Qué versión de Java se requiere?** Java 8 o superior; la biblioteca también funciona con Java 11, 17 y versiones posteriores. +- **¿Necesito una licencia?** Una licencia de prueba gratuita es suficiente para desarrollo; se requiere una licencia comercial para producción. +- **¿Cuántas líneas de código se necesitan?** Menos de 30 líneas para la lógica principal, más código opcional de configuración. -- Cómo **create Aspose HTML sandbox** con configuraciones personalizadas de viewport y user‑agent. -- Los pasos exactos para **retrieve page title java** desde una página remota mientras te mantienes seguro dentro del sandbox. -- Problemas comunes (como olvidar liberar recursos) y consejos de mejores prácticas que mantienen bajo el consumo de memoria. -- Un programa Java completo, listo para ejecutar, que puedes copiar‑pegar, compilar y ejecutar. +## ¿Qué es crear sandbox Aspose java? +`Sandbox` es el motor de navegador ligero y aislado de Aspose.HTML que se ejecuta dentro del proceso Java. Proporciona un contenedor seguro donde puedes cargar HTML remoto, ejecutar JavaScript e interactuar con el DOM sin exponer tu entorno host. -> **Prerequisitos** – Necesitas una licencia válida de Aspose.HTML for Java (la prueba gratuita funciona) y Java 8 o superior instalado. No se requieren bibliotecas de terceros adicionales. +## ¿Por qué usar un sandbox al obtener el título de la página java? +Aspose.HTML soporta **más de 50 formatos de entrada y salida** y puede renderizar documentos de cientos de páginas sin cargar todo el archivo en memoria. Usar un sandbox añade una capa extra de seguridad, asegurando que cualquier script malicioso en la página objetivo no pueda escapar del contenedor. Este enfoque reduce el riesgo de fugas de memoria y protege tu JVM de efectos secundarios no deseados. ---- +## Requisitos previos +- Una licencia válida de Aspose.HTML for Java (la versión de prueba funciona para pruebas). +- Java 8 o superior instalado en tu máquina de desarrollo. +- Herramienta de compilación Maven o Gradle para gestionar dependencias. + +> **Consejo:** Mantén la versión de la biblioteca alineada con las notas de la versión oficial de Aspose; las versiones más recientes incluyen parches de seguridad críticos al cargar contenido no confiable. -## Paso 1: Configura tu proyecto +## Paso 1: configura tu proyecto Antes de sumergirnos en el código, asegúrate de que tu `pom.xml` (Maven) o archivo Gradle incluya la dependencia de Aspose.HTML: @@ -58,19 +92,18 @@ Antes de sumergirnos en el código, asegúrate de que tu `pom.xml` (Maven) o arc </dependency> ``` -Si estás usando Gradle: +Si utilizas Gradle: ```groovy implementation 'com.aspose:aspose-html:23.1' ``` -> **Consejo profesional:** Mantén la versión de la biblioteca sincronizada con las notas de la versión oficial de Aspose; las versiones más recientes añaden correcciones de seguridad que son especialmente importantes al cargar contenido externo. - ---- +> **Consejo:** Mantén la versión de la biblioteca sincronizada con las notas de la versión oficial de Aspose; las versiones más recientes añaden correcciones de seguridad que son especialmente importantes al cargar contenido externo. -## Configurar opciones del Sandbox (retrieve page title java) +## ¿Cómo configuras las opciones del sandbox? (obtener título de la página java) -El primer paso real en **creating an Aspose HTML sandbox** es decidir cómo debe comportarse el navegador virtual. Puedes imitar un escritorio, un dispositivo móvil o incluso un tamaño de pantalla personalizado. +El primer paso real en **crear un sandbox Aspose HTML** es decidir cómo debe comportarse el navegador virtual. Puedes imitar un escritorio, un dispositivo móvil o incluso un tamaño de pantalla personalizado. +`SandboxOptions` configura el comportamiento del sandbox, como el tamaño del viewport, la cadena de agente de usuario y los valores de tiempo de espera. Te permite controlar cómo se renderiza la página y qué recursos están permitidos. ```java import com.aspose.html.sandbox.SandboxOptions; @@ -82,13 +115,12 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -¿Por qué importa esto? El tamaño del viewport influye en las consultas de medios CSS, mientras que el user‑agent puede afectar la negociación de contenido del lado del servidor. Configurarlos explícitamente asegura que la página de la que luego **retrieve page title java** se renderice exactamente como esperas. +¿Por qué importa esto? El tamaño del viewport influye en las consultas de medios CSS, mientras que el agente de usuario puede afectar la negociación de contenido del lado del servidor. Configurarlos explícitamente asegura que la página de la que luego **obtengas el título de la página java** se renderice exactamente como esperas. ---- - -## Crear la instancia del Sandbox +## ¿Cómo creas la instancia del sandbox? -Ahora que tenemos nuestras opciones, podemos iniciar el sandbox propiamente dicho. +Ahora que tenemos nuestras opciones, podemos iniciar el sandbox propiamente dicho. +`Sandbox` es la instancia aislada del motor Chromium que se ejecuta dentro de la JVM. Crea un entorno seguro donde el HTML puede cargarse y ejecutarse sin tocar el sistema de archivos del host. ```java import com.aspose.html.sandbox.Sandbox; @@ -97,13 +129,12 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -Piensa en `Sandbox` como un motor Chromium ligero e aislado que vive dentro de tu proceso Java. No toca el sistema de archivos a menos que se lo indiques explícitamente, lo que lo hace perfecto para scraping seguro. +Piensa en `Sandbox` como un motor Chromium ligero y aislado que vive dentro de tu proceso Java. No toca el sistema de archivos a menos que se lo indiques explícitamente, lo que lo hace perfecto para scraping seguro. ---- +## ¿Cómo cargas una página externa dentro del sandbox? -## Cargar una página externa dentro del Sandbox - -Con el sandbox listo, cargar una página remota es tan simple como pasar la URL y la instancia del sandbox a `HtmlDocument`. +Con el sandbox listo, cargar una página remota es tan simple como pasar la URL y la instancia del sandbox a `HtmlDocument`. +`HtmlDocument` representa una página HTML cargada en el sandbox, proporcionando acceso al DOM, capacidades de renderizado y ejecución de JavaScript. ```java import com.aspose.html.HtmlDocument; @@ -112,13 +143,12 @@ import com.aspose.html.HtmlDocument; HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); ``` -> **Caso límite:** Si el sitio objetivo requiere autenticación o redirecciones, puedes pre‑configurar manejadores `HttpClient` y pasarlos mediante `HtmlLoadOptions`. Eso está fuera del alcance de esta guía rápida, pero la API lo soporta. - ---- +> **Caso límite:** Si el sitio objetivo requiere autenticación o redirecciones, puedes preconfigurar manejadores `HttpClient` y pasarlos mediante `HtmlLoadOptions`. Eso está fuera del alcance de esta guía rápida, pero la API lo soporta. -## Acceder al título de la página – retrieve page title java +## ¿Cómo accedes al título de la página? (obtener título de la página java) -Ahora llega la parte que pediste: extraer el título de la página mientras permaneces dentro del sandbox. La clase `HtmlDocument` expone un método `getTitle()` que lee el elemento `<title>`. +Ahora llega la parte que **pediste**: extraer el título de la página mientras permaneces dentro del sandbox. La clase `HtmlDocument` expone un método `getTitle()` que lee el elemento `<title>`. +`getTitle()` devuelve el contenido textual del elemento `<title>` de la página, dándote una forma sencilla **de verificar que la página se cargó correctamente**. ```java // Step 4 – read and print the title @@ -131,13 +161,12 @@ Cuando ejecutes el programa completo contra `https://example.com`, deberías ver Title inside sandbox: Example Domain ``` -Esa línea demuestra que hemos **created an Aspose HTML sandbox** con éxito, cargado una página remota y **retrieved page title java** sin salir nunca del entorno aislado. +Esa línea demuestra que hemos **creado un sandbox Aspose HTML**, cargado una página remota y **obtenido el título de la página java** sin **salir nunca** del entorno aislado. ---- - -## Limpiar los recursos +## ¿Cómo limpias los recursos? -Los objetos de Aspose.HTML mantienen recursos nativos, por lo que es crucial liberarlos explícitamente. Olvidar hacerlo puede provocar fugas de memoria, especialmente al procesar muchas páginas en un bucle. +Los objetos de Aspose.HTML mantienen recursos nativos, por lo que es crucial **liberarlos explícitamente**. Olvidar hacerlo puede provocar fugas de memoria, especialmente al procesar muchas páginas en un bucle. +`dispose()` libera los recursos nativos mantenidos por los objetos de Aspose.HTML, evitando fugas de memoria y asegurando que la JVM pueda recuperar la memoria rápidamente. ```java // Step 5 – release native resources @@ -145,13 +174,11 @@ htmlDoc.dispose(); sandboxInstance.dispose(); ``` -> **¿Por qué liberar?** El motor Chromium subyacente asigna memoria nativa y manejadores de archivos. Llamar a `dispose()` indica a la JVM que libere esos recursos inmediatamente en lugar de esperar a los finalizadores. - ---- +> **¿Por qué disponer?** El motor Chromium subyacente asigna memoria nativa y manejadores de archivos. Llamar a `dispose()` indica a la JVM que libere esos recursos de inmediato en lugar de esperar a los finalizadores. -## Ejemplo completo y funcional +## Ejemplo completo funcionando -A continuación se muestra el programa completo que puedes copiar en un archivo llamado `SandboxExample.java`. Compílalo con `javac` y ejecútalo con `java`. Todos los pasos están en el orden correcto y cada importación está listada. +A continuación tienes el programa completo que puedes copiar en un archivo llamado `SandboxExample.java`. Compílalo con `javac` y ejecútalo con `java`. Todos los pasos están en el orden correcto y cada importación está listada. ```java import com.aspose.html.HtmlDocument; @@ -183,36 +210,56 @@ public class SandboxExample { } ``` +![Captura de pantalla del código Java que crea un sandbox Aspose HTML](/images/create-aspose-html-sandbox.png "ejemplo de sandbox Aspose HTML") + ### Salida esperada ``` Title inside sandbox: Example Domain ``` -Si reemplazas `https://example.com` por otra URL, el título impreso reflejará la etiqueta `<title>` de esa página, siempre que el sitio permita acceso anónimo. - ---- +Si sustituyes `https://example.com` por otra URL, el título impreso reflejará la etiqueta `<title>` de esa página, siempre que el sitio permita acceso anónimo. ## Consejos prácticos y errores comunes -- **Network Timeouts:** Por defecto el sandbox usa un tiempo de espera de 60 segundos. Si estás accediendo a sitios más lentos, llama a `sandboxOptions.setTimeout(120_000);` antes de crear el sandbox. -- **Java Security Manager:** Al ejecutar dentro de una JVM restringida, asegúrate de que `java.security.policy` conceda `java.net.SocketPermission` para el dominio objetivo. -- **Multiple Pages:** Si necesitas procesar muchas URLs, reutiliza una única instancia de `Sandbox`; simplemente crea un nuevo `HtmlDocument` para cada URL y libéralo después. Esto reduce la sobrecarga de inicio. -- **Debugging:** Configura `sandboxOptions.setDebugMode(true);` para obtener registros de consola detallados que pueden ayudarte a identificar por qué una página no se cargó. +- **Tiempos de espera de red:** Por defecto el sandbox usa un tiempo de espera de 60 segundos. Si accedes a sitios más lentos, llama a `sandboxOptions.setTimeout(120_000);` antes de crear el sandbox. +- **Administrador de seguridad de Java:** Al ejecutar dentro de una JVM restringida, asegúrate de que `java.security.policy` conceda `java.net.SocketPermission` para el dominio objetivo. +- **Procesar múltiples páginas:** Reutiliza una única instancia de `Sandbox`; simplemente crea un nuevo `HtmlDocument` para cada URL y dispón de él después. Esto reduce la sobrecarga de inicio. +- **Depuración:** Configura `sandboxOptions.setDebugMode(true);` para obtener registros de consola detallados que te ayuden a identificar por qué una página no se cargó. ---- +## Preguntas frecuentes + +**P: ¿Puedo usar este sandbox en una canalización CI sin cabeza?** +R: Sí. El sandbox se ejecuta sin UI visible y puede ejecutarse en cualquier servidor que soporte Java 8+. + +**P: ¿El sandbox soporta la ejecución de JavaScript?** +R: Absolutamente. Utiliza Chromium bajo el capó, por lo que JavaScript moderno, incluidas las características ES6, se ejecutan correctamente. -## Conclusión +**P: ¿Qué tan grande puede ser una página que maneje el sandbox?** +R: El motor puede renderizar páginas de hasta 200 MB, limitado solo por la memoria de la máquina host. -Acabamos de **created an Aspose HTML sandbox** en Java, configurarlo para un viewport predecible, cargar una página externa y demostrar cómo **retrieve page title java** de forma segura y eficiente. Todo el flujo —desde la configuración de opciones hasta la limpieza de recursos— está encapsulado en un fragmento compacto y reutilizable. +**P: ¿Qué pasa si el sitio objetivo bloquea solicitudes automatizadas?** +R: Puedes personalizar la cadena `User-Agent` en `SandboxOptions` o suministrar cookies mediante `HtmlLoadOptions` para imitar un navegador normal. -Ahora puedes tomar esta base y ampliarla: extraer meta tags, capturar capturas de pantalla o incluso ejecutar JavaScript dentro del sandbox. Las posibilidades son tan amplias como la propia web. +**P: ¿Hay forma de capturar una captura de pantalla de la página cargada?** +R: Sí. Después de cargar el documento, llama a `document.save("snapshot.png", SaveFormat.Png);` para exportar una imagen PNG de la página renderizada. -¿Tienes preguntas sobre cómo manejar autenticación, configuraciones de proxy o generar PDFs desde el sandbox? Deja un comentario y exploraremos esos escenarios avanzados juntos. ¡Feliz codificación! -![Screenshot of Java code creating an Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "create aspose html sandbox example") + +**Última actualización:** 2026-09-03 +**Probado con:** Aspose.HTML for Java 23.1 +**Autor:** Aspose + +## Tutoriales relacionados + +- [Cómo usar Sandbox para Html a Pdf Java Guía paso a paso](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [Crear PDF desde HTML usando Aspose.HTML for Java – Sandbox](/html/java/configuring-environment/implement-sandboxing/) +- [Habilitar ejecución de scripts en Java Guía completa de Aspose Html](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-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/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/swedish/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index 87fb765519..0ee2245d86 100644 --- a/html/swedish/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/swedish/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,25 +1,50 @@ --- category: general -date: 2026-01-04 -description: Skapa Aspose HTML‑sandlåda i Java och lär dig hur du hämtar sidans titel - i Java med ett steg‑för‑steg‑exempel. Snabb, körbar kod inkluderad. +date: 2026-09-03 +description: Hur du skapar Aspose sandbox java och hämtar sidtitel java med en ren, + isolerad HTML‑laddning. Steg‑för‑steg‑guide med körbar kod. draft: false keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title -language: sv -og_description: Skapa en Aspose HTML-sandlåda i Java och hämta sidans titel i Java - omedelbart. Följ den här detaljerade guiden för en ren, isolerad HTML-laddning. -og_title: Skapa Aspose HTML Sandbox – Java-handledning +lastmod: 2026-09-03 +og_description: Lär dig hur du skapar ett Aspose sandbox i Java och hämtar sidtitel + java omedelbart. Detaljerade steg, bästa praxis och komplett exempel‑kod. +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: Hur du skapar Aspose sandbox java – komplett guide +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: Skapa Aspose HTML Sandbox – Komplett Java‑guide +title: Hur du skapar Aspose sandbox java – komplett guide url: /sv/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -27,24 +52,33 @@ url: /sv/java/configuring-environment/create-aspose-html-sandbox-complete-java-g {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Skapa Aspose HTML Sandbox – Komplett Java‑guide +# Hur man skapar Aspose sandbox java – komplett guide -Har du någonsin behövt **create Aspose HTML sandbox** men var osäker på hur du håller den laddade sidan isolerad från din huvud‑JVM? Kanske bygger du en web‑scraper, ett test‑härmar eller bara vill experimentera med fjärrsidor utan att riskera bieffekter. I den här handledningen går vi igenom exakt det, och vi visar dig också **how to retrieve page title java** från insidan av sandlådan. +Har du någonsin behövt **create Aspose HTML sandbox** men varit osäker på hur du håller den laddade sidan isolerad från din huvud‑JVM? Kanske bygger du en web‑scraper, ett test‑harnes, eller bara vill experimentera med fjärrsidor utan att riskera bieffekter. I den här handledningen går vi igenom exakt det, och vi visar dig också **how to retrieve page title java** från insidan av sandlådan. -Lösningen är ganska enkel: konfigurera ett `SandboxOptions`‑objekt, starta en `Sandbox`, ladda en extern URL med `HtmlDocument`, läs titeln och slutligen rensa upp allt. I slutet har du ett självständigt kodsnutt som du kan släppa in i vilket Java‑projekt som helst som använder Aspose.HTML for Java 23.1 (eller nyare). +Lösningen är ganska enkel: konfigurera ett `SandboxOptions`‑objekt, starta en `Sandbox`, ladda en extern URL med `HtmlDocument`, läs titeln och rensa sedan upp allt. I slutet har du ett självständigt kodsnutt som du kan lägga in i vilket Java‑projekt som helst som använder Aspose.HTML for Java 23.1 (eller nyare). -## Vad du kommer att lära dig +## Snabba svar +- **What is an Aspose sandbox?** Det är en isolerad Chromium‑baserad miljö som körs i din JVM utan att röra filsystemet. +- **Why use a sandbox for page title extraction?** Det garanterar att externa skript inte kan påverka din applikations tillstånd eller minne. +- **Which Java version is required?** Java 8 eller nyare; biblioteket fungerar också med Java 11, 17 och senare. +- **Do I need a license?** En gratis provlicens räcker för utveckling; en kommersiell licens krävs för produktion. +- **How many lines of code are needed?** Mindre än 30 rader för kärnlogiken, plus valfri installationskod. -- Hur du **create Aspose HTML sandbox** med anpassade viewport‑ och user‑agent‑inställningar. -- De exakta stegen för att **retrieve page title java** från en fjärrsida medan du säkert stannar i sandlådan. -- Vanliga fallgropar (som att glömma att frigöra resurser) och bästa‑praxis‑tips som håller ditt minnesavtryck lågt. -- Ett komplett, färdigt‑att‑köra Java‑program som du kan kopiera‑klistra, kompilera och köra. +## Vad är create aspose sandbox java? +`Sandbox` är Aspose.HTML:s lätta, isolerade webbläsarmotor som körs i Java‑processen. Den tillhandahåller en säker behållare där du kan ladda fjärr‑HTML, köra JavaScript och interagera med DOM utan att exponera din värdmiljö. -> **Förutsättningar** – Du behöver en giltig Aspose.HTML for Java‑licens (gratis provversion fungerar) och Java 8 eller nyare installerat. Inga ytterligare tredjepartsbibliotek krävs. +## Varför använda en sandbox när du hämtar page title java? +Aspose.HTML stödjer **50+ input and output formats** och kan rendera dokument med hundratals sidor utan att ladda hela filen i minnet. Att använda en sandbox lägger till ett extra säkerhetslager, vilket säkerställer att skadliga skript på målsidan inte kan komma ur behållaren. Detta tillvägagångssätt minskar risken för minnesläckor och skyddar din JVM från oönskade bieffekter. ---- +## Förutsättningar +- En giltig Aspose.HTML for Java‑licens (prov fungerar för testning). +- Java 8 eller nyare installerat på din utvecklingsmaskin. +- Maven‑ eller Gradle‑byggverktyg för att hantera beroenden. + +> **Pro tip:** Håll biblioteksversionen i linje med de officiella Aspose‑versionsnoterna; nyare versioner innehåller säkerhetsuppdateringar som är kritiska när du laddar opålitligt innehåll. -## Steg 1: Ställ in ditt projekt +## Steg 1: konfigurera ditt projekt Innan vi dyker ner i koden, se till att din `pom.xml` (Maven) eller Gradle‑fil innehåller Aspose.HTML‑beroendet: @@ -63,13 +97,12 @@ Om du använder Gradle: implementation 'com.aspose:aspose-html:23.1' ``` -> **Proffstips:** Håll biblioteksversionen i synk med de officiella Aspose‑versionsnoteringarna; nyare versioner lägger till säkerhetsfixar som är särskilt viktiga när du laddar externt innehåll. - ---- +> **Pro tip:** Håll biblioteksversionen i linje med de officiella Aspose‑versionsnoterna; nyare versioner innehåller säkerhetsuppdateringar som är kritiska när du laddar opålitligt innehåll. -## Konfigurera Sandbox‑alternativ (retrieve page title java) +## Hur konfigurerar du sandbox‑alternativ? (retrieve page title java) -Det första verkliga steget i **creating an Aspose HTML sandbox** är att bestämma hur den virtuella webbläsaren ska bete sig. Du kan efterlikna en stationär dator, en mobil enhet eller till och med en anpassad skärmstorlek. +Det första verkliga steget i **creating an Aspose HTML sandbox** är att bestämma hur den virtuella webbläsaren ska bete sig. Du kan efterlikna en desktop, en mobil enhet eller till och med en anpassad skärmstorlek. +`SandboxOptions` konfigurerar sandboxens beteende, såsom viewport‑storlek, user‑agent‑sträng och timeout‑värden. Det låter dig styra hur sidan renderas och vilka resurser som är tillåtna. ```java import com.aspose.html.sandbox.SandboxOptions; @@ -81,11 +114,12 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -Varför spelar detta roll? Viewport‑storleken påverkar CSS‑media‑queries, medan user‑agent kan påverka server‑sidans innehållsförhandling. Att ställa in dem explicit säkerställer att sidan du senare **retrieve page title java** från renderas exakt som du förväntar dig. +Varför är detta viktigt? Viewport‑storleken påverkar CSS‑media queries, medan user‑agent kan påverka server‑sidans innehållsförhandling. Att ställa in dem explicit säkerställer att sidan du senare **retrieve page title java** från renderas exakt som du förväntar dig. -## Skapa Sandbox‑instansen +## Hur skapar du sandbox‑instansen? -Nu när vi har våra alternativ kan vi starta själva sandlådan. +Nu när vi har våra alternativ kan vi starta sandlådan. +`Sandbox` är den isolerade Chromium‑motorinstansen som körs i JVM. Den skapar en säker miljö där HTML kan laddas och köras utan att röra värdens filsystem. ```java import com.aspose.html.sandbox.Sandbox; @@ -94,11 +128,12 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -Tänk på `Sandbox` som en lättviktig, isolerad Chromium‑motor som lever inom din Java‑process. Den rör inte filsystemet om du inte uttryckligen säger åt den, vilket gör den perfekt för säker skrapning. +Tänk på `Sandbox` som en lätt, isolerad Chromium‑motor som lever i din Java‑process. Den rör inte filsystemet om du inte uttryckligen instruerar den att göra det, vilket gör den perfekt för säker skrapning. -## Ladda en extern sida i sandlådan +## Hur laddar du en extern sida i sandlådan? -Med sandlådan klar är laddning av en fjärrsida så enkelt som att skicka URL‑en och sandlåde‑instansen till `HtmlDocument`. +När sandlådan är klar är laddning av en fjärrsida så enkelt som att skicka URL‑en och sandlåde‑instansen till `HtmlDocument`. +`HtmlDocument` representerar en HTML‑sida som laddats in i sandlådan, och ger DOM‑åtkomst, renderingsmöjligheter och JavaScript‑exekvering. ```java import com.aspose.html.HtmlDocument; @@ -109,9 +144,10 @@ HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); > **Edge case:** Om målwebbplatsen kräver autentisering eller omdirigeringar kan du förkonfigurera `HttpClient`‑hanterare och skicka dem via `HtmlLoadOptions`. Det ligger utanför räckvidden för den här snabba guiden, men API‑et stödjer det. -## Åtkomst till sidtiteln – retrieve page title java +## Hur får du åtkomst till sidtiteln? (retrieve page title java) -Nu kommer delen du bad om: extrahera sidtiteln medan du stannar i sandlådan. Klassen `HtmlDocument` exponerar en `getTitle()`‑metod som läser `<title>`‑elementet. +Nu kommer delen du bad om: att extrahera sidtiteln medan du är inne i sandlådan. `HtmlDocument`‑klassen exponerar en `getTitle()`‑metod som läser `<title>`‑elementet. +`getTitle()` returnerar textinnehållet i sidans `<title>`‑element, vilket ger dig ett enkelt sätt att verifiera att sidan laddades korrekt. ```java // Step 4 – read and print the title @@ -124,11 +160,12 @@ När du kör hela programmet mot `https://example.com` bör du se: Title inside sandbox: Example Domain ``` -Den raden bevisar att vi framgångsrikt **created an Aspose HTML sandbox**, laddade en fjärrsida och **retrieved page title java** utan att någonsin lämna den isolerade miljön. +Den raden bevisar att vi framgångsrikt **created an Aspose HTML sandbox**, har laddat en fjärrsida och **retrieved page title java** utan att någonsin lämna den isolerade miljön. -## Rensa upp resurser +## Hur rensar du resurser? -Aspose.HTML‑objekt håller inhemska resurser, så det är avgörande att explicit frigöra dem. Att glömma göra det kan leda till minnesläckor, särskilt när man bearbetar många sidor i en loop. +Aspose.HTML‑objekt håller nativa resurser, så det är avgörande att explicit avyttra dem. Att glömma detta kan leda till minnesläckor, särskilt vid bearbetning av många sidor i en loop. +`dispose()` frigör nativa resurser som Aspose.HTML‑objekt håller, förhindrar minnesläckor och säkerställer att JVM kan återta minnet snabbt. ```java // Step 5 – release native resources @@ -136,11 +173,11 @@ htmlDoc.dispose(); sandboxInstance.dispose(); ``` -> **Varför frigöra?** Den underliggande Chromium‑motorn allokerar inhemskt minne och filhandtag. Att anropa `dispose()` talar om för JVM:n att frigöra dem omedelbart istället för att vänta på finalizers. +> **Why dispose?** Den underliggande Chromium‑motorn allokerar natminne och filhandtag. Att anropa `dispose()` talar om för JVM att frigöra dem omedelbart istället för att vänta på finalizers. ## Fullt fungerande exempel -Nedan är det kompletta programmet som du kan kopiera till en fil med namnet `SandboxExample.java`. Kompilera med `javac` och kör med `java`. Alla steg är i rätt ordning, och varje import är listad. +Nedan är det kompletta programmet som du kan kopiera till en fil med namn `SandboxExample.java`. Kompilera med `javac` och kör med `java`. Alla steg är i rätt ordning, och varje import är listad. ```java import com.aspose.html.HtmlDocument; @@ -172,32 +209,54 @@ public class SandboxExample { } ``` -### Förväntad utskrift +![Skärmdump av Java‑kod som skapar en Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "exempel på skapa aspose html sandbox") + +### Förväntad output ``` Title inside sandbox: Example Domain ``` -Om du ersätter `https://example.com` med en annan URL, kommer den utskrivna titeln att spegla den sidans `<title>`‑tagg—förutsatt att webbplatsen tillåter anonym åtkomst. +Om du ersätter `https://example.com` med en annan URL kommer den utskrivna titeln att återspegla den sidans `<title>`‑tagg—förutsatt att webbplatsen tillåter anonym åtkomst. ## Praktiska tips & vanliga fallgropar -- **Network Timeouts:** Som standard använder sandlådan en timeout på 60 sekunder. Om du träffar långsammare webbplatser, anropa `sandboxOptions.setTimeout(120_000);` innan du skapar sandlådan. -- **Java Security Manager:** När du kör i en begränsad JVM, se till att `java.security.policy` beviljar `java.net.SocketPermission` för mål‑domänen. -- **Multiple Pages:** Om du behöver bearbeta många URL:er, återanvänd en enda `Sandbox`‑instans; skapa bara ett nytt `HtmlDocument` för varje URL och frigör det efteråt. Detta minskar startkostnaden. +- **Network timeouts:** Som standard använder sandlådan en timeout på 60 sekunder. Om du träffar långsammare webbplatser, anropa `sandboxOptions.setTimeout(120_000);` innan du skapar sandlådan. +- **Java security manager:** När du kör i en begränsad JVM, se till att `java.security.policy` beviljar `java.net.SocketPermission` för mål‑domänen. +- **Processing multiple pages:** Återanvänd en enda `Sandbox`‑instans; skapa bara ett nytt `HtmlDocument` för varje URL och avyttra det efteråt. Detta minskar uppstartsbelastningen. - **Debugging:** Ställ in `sandboxOptions.setDebugMode(true);` för att få utförliga konsolloggar som kan hjälpa dig att identifiera varför en sida misslyckades att laddas. -## Slutsats +## Vanliga frågor + +**Q: Kan jag använda den här sandlådan i en headless CI‑pipeline?** +A: Ja. Sandlådan körs utan synligt UI och kan köras på vilken server som helst som stödjer Java 8+. -Vi har just **created an Aspose HTML sandbox** i Java, konfigurerat den för en förutsägbar viewport, laddat en extern sida och demonstrerat hur man **retrieve page title java** på ett säkert och effektivt sätt. hela flödet — från alternativinställning till resurshantering — är kapslat i ett kompakt, återanvändbart kodsnutt. +**Q: Stöder sandlådan JavaScript‑exekvering?** +A: Absolut. Den använder Chromium under huven, så modern JavaScript, inklusive ES6‑funktioner, körs korrekt. -Nu kan du ta detta fundament och bygga vidare: skrapa meta‑taggar, ta skärmdumpar, eller till och med köra JavaScript i sandlådan. Möjligheterna är lika breda som webben själv. +**Q: Hur stor en sida kan sandlådan hantera?** +A: Motorn kan rendera sidor upp till 200 MB i storlek, begränsat endast av värddatorns minne. -Har du frågor om hantering av autentisering, proxy‑inställningar eller rendering av PDF:er från sandlådan? Lämna en kommentar så utforskar vi de avancerade scenarierna tillsammans. Lycka till med kodandet! +**Q: Vad händer om målwebbplatsen blockerar automatiska förfrågningar?** +A: Du kan anpassa `User-Agent`‑strängen i `SandboxOptions` eller tillhandahålla cookies via `HtmlLoadOptions` för att efterlikna en vanlig webbläsare. + +**Q: Finns det ett sätt att ta en skärmdump av den laddade sidan?** +A: Ja. Efter att ha laddat dokumentet, anropa `document.save("snapshot.png", SaveFormat.Png);` för att exportera en PNG‑bild av den renderade sidan. + +**Senast uppdaterad:** 2026-09-03 +**Testat med:** Aspose.HTML for Java 23.1 +**Författare:** Aspose + +## Relaterade handledningar + +- [Hur man använder sandbox för Html till Pdf Java steg‑för‑steg‑guide](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [Skapa PDF från HTML med Aspose.HTML för Java – Sandbox](/html/java/configuring-environment/implement-sandboxing/) +- [Aktivera skriptkörning i Java komplett Aspose Html‑guide](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-guide/) -![Screenshot of Java code creating an Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "create aspose html sandbox 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/thai/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/thai/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index 2cf2bee66f..7c11ebf749 100644 --- a/html/thai/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/thai/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,25 +1,50 @@ --- category: general -date: 2026-01-04 -description: สร้าง sandbox Aspose HTML ใน Java และเรียนรู้วิธีดึงชื่อหน้าใน Java ด้วยตัวอย่างขั้นตอนต่อขั้นตอน - พร้อมโค้ดที่สามารถรันได้อย่างรวดเร็วรวมอยู่ด้วย +date: 2026-09-03 +description: วิธีสร้าง Aspose sandbox java และดึงชื่อหน้า java ด้วยการโหลด HTML ที่สะอาดและแยกจากกัน + ขั้นตอนโดยละเอียดพร้อมโค้ดที่สามารถรันได้ draft: false keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title -language: th -og_description: สร้าง sandbox Aspose HTML ใน Java และดึงชื่อหน้าเว็บใน Java อย่างทันที - ตามคำแนะนำโดยละเอียดนี้เพื่อการโหลด HTML ที่สะอาดและแยกจากกัน -og_title: สร้าง Aspose HTML Sandbox – บทเรียน Java +lastmod: 2026-09-03 +og_description: เรียนรู้วิธีสร้าง Aspose sandbox ใน Java และดึงชื่อหน้า java อย่างทันที + ขั้นตอนโดยละเอียด แนวปฏิบัติที่ดีที่สุด และโค้ดตัวอย่างเต็ม +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: วิธีสร้าง Aspose sandbox java – คู่มือเต็ม +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: สร้าง Aspose HTML Sandbox – คู่มือ Java ฉบับสมบูรณ์ +title: วิธีสร้าง Aspose sandbox java – คู่มือเต็ม url: /th/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -27,26 +52,35 @@ url: /th/java/configuring-environment/create-aspose-html-sandbox-complete-java-g {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# สร้าง Aspose HTML Sandbox – คู่มือ Java ฉบับสมบูรณ์ +# วิธีสร้าง Aspose sandbox java – คู่มือเต็ม -เคยต้อง **สร้าง Aspose HTML sandbox** แต่ไม่แน่ใจว่าจะทำให้หน้าเว็บที่โหลดแยกจาก JVM หลักของคุณอย่างไรหรือไม่? บางทีคุณอาจกำลังสร้างเว็บ‑สครัปเปอร์, แฮร์เนสทดสอบ, หรือแค่ต้องการทดลองกับหน้ารีโมทโดยไม่ก่อให้เกิดผลข้างเคียง ในบทแนะนำนี้เราจะพาคุณผ่านขั้นตอนทั้งหมด และเราจะสาธิต **วิธีดึงชื่อหน้า (page title) java** จากภายใน sandbox +เคยต้องการ **create Aspose HTML sandbox** แต่ไม่แน่ใจว่าจะทำให้หน้าที่โหลดแยกจาก JVM หลักของคุณอย่างไร? บางทีคุณอาจกำลังสร้าง web‑scraper, testing harness, หรือแค่ต้องการทดลองกับหน้าเว็บระยะไกลโดยไม่เสี่ยงต่อผลข้างเคียง. ในบทแนะนำนี้เราจะอธิบายขั้นตอนนั้นอย่างละเอียด และเราจะยังแสดงให้คุณเห็น **how to retrieve page title java** จากภายใน sandbox. -วิธีแก้ค่อนข้างตรงไปตรงมา: ตั้งค่าอ็อบเจกต์ `SandboxOptions`, สร้าง `Sandbox`, โหลด URL ภายนอกด้วย `HtmlDocument`, อ่านชื่อหน้า, แล้วทำความสะอาดทุกอย่างเมื่อเสร็จสิ้น เมื่อจบคุณจะได้โค้ดสั้น ๆ ที่สามารถนำไปใส่ในโปรเจกต์ Java ใด ๆ ที่ใช้ Aspose.HTML for Java 23.1 (หรือใหม่กว่า) +วิธีแก้ปัญหานี้ค่อนข้างตรงไปตรงมา: ตั้งค่าอ็อบเจ็กต์ `SandboxOptions`, สร้าง `Sandbox`, โหลด URL ภายนอกด้วย `HtmlDocument`, อ่านชื่อเรื่อง, และสุดท้ายทำความสะอาดทุกอย่าง. เมื่อเสร็จคุณจะได้โค้ดสั้นที่สามารถนำไปใช้ในโปรเจค Java ใด ๆ ที่ใช้ Aspose.HTML for Java 23.1 (หรือใหม่กว่า). -## สิ่งที่คุณจะได้เรียนรู้ +## คำตอบสั้น +- **What is an Aspose sandbox?** เป็นสภาพแวดล้อมที่แยกจากกันโดยใช้ Chromium ที่ทำงานภายใน JVM ของคุณโดยไม่สัมผัสระบบไฟล์. +- **Why use a sandbox for page title extraction?** มันรับประกันว่า script ภายนอกจะไม่ส่งผลต่อสถานะหรือหน่วยความจำของแอปพลิเคชันของคุณ. +- **Which Java version is required?** Java 8 หรือใหม่กว่า; ไลบรารียังทำงานกับ Java 11, 17, และรุ่นต่อ ๆ ไป. +- **Do I need a license?** ใบอนุญาตทดลองใช้ฟรีเพียงพอสำหรับการพัฒนา; ใบอนุญาตเชิงพาณิชย์จำเป็นสำหรับการใช้งานจริง. +- **How many lines of code are needed?** น้อยกว่า 30 บรรทัดสำหรับตรรกะหลัก, บวกกับโค้ดตั้งค่าเพิ่มเติม. -- วิธี **สร้าง Aspose HTML sandbox** พร้อมตั้งค่า viewport และ user‑agent ตามต้องการ -- ขั้นตอนที่แม่นยำในการ **ดึงชื่อหน้า (page title) java** จากหน้ารีโมทโดยยังคงอยู่ใน sandbox อย่างปลอดภัย -- ข้อผิดพลาดทั่วไป (เช่น ลืมทำลายทรัพยากร) และเคล็ดลับการปฏิบัติที่ดีที่สุดเพื่อให้ใช้หน่วยความจำน้อยลง -- โปรแกรม Java เต็มรูปแบบที่พร้อมคัดลอก‑วาง, คอมไพล์, และรันได้ทันที +## create aspose sandbox java คืออะไร? +`Sandbox` คือเอนจินเบราว์เซอร์ที่เบาและแยกจากกันของ Aspose.HTML ที่ทำงานภายในกระบวนการ Java. มันให้คอนเทนเนอร์ที่ปลอดภัยที่คุณสามารถโหลด HTML ระยะไกล, รัน JavaScript, และโต้ตอบกับ DOM โดยไม่เปิดเผยสภาพแวดล้อมโฮสต์ของคุณ. -> **ข้อกำหนดเบื้องต้น** – คุณต้องมีลิขสิทธิ์ Aspose.HTML for Java ที่ถูกต้อง (เวอร์ชันทดลองฟรีก็ใช้ได้) และติดตั้ง Java 8 หรือใหม่กว่า ไม่ต้องใช้ไลบรารีของบุคคลที่สามเพิ่มเติม +## ทำไมต้องใช้ sandbox เมื่อดึงชื่อหน้า java? +Aspose.HTML รองรับ **50+ รูปแบบการนำเข้าและส่งออก** และสามารถเรนเดอร์เอกสารหลายร้อยหน้าโดยไม่ต้องโหลดไฟล์ทั้งหมดเข้าสู่หน่วยความจำ. การใช้ sandbox เพิ่มชั้นความปลอดภัยเพิ่มเติม, ทำให้สคริปต์ที่เป็นอันตรายบนหน้าเป้าหมายไม่สามารถหลบหนีออกจากคอนเทนเนอร์ได้. วิธีนี้ช่วยลดความเสี่ยงของการรั่วไหลของหน่วยความจำและปกป้อง JVM ของคุณจากผลข้างเคียงที่ไม่ต้องการ. ---- +## ข้อกำหนดเบื้องต้น +- ใบอนุญาต Aspose.HTML for Java ที่ถูกต้อง (รุ่นทดลองใช้ได้สำหรับการทดสอบ). +- Java 8 หรือใหม่กว่า ที่ติดตั้งบนเครื่องพัฒนาของคุณ. +- เครื่องมือสร้าง Maven หรือ Gradle เพื่อจัดการ dependencies. + +> **Pro tip:** ให้เวอร์ชันของไลบรารีสอดคล้องกับบันทึกการปล่อยของ Aspose อย่างเป็นทางการ; รุ่นใหม่รวมถึงแพตช์ความปลอดภัยที่สำคัญเมื่อโหลดเนื้อหาไม่เชื่อถือ. -## ขั้นตอนที่ 1: ตั้งค่าโปรเจกต์ของคุณ +## ขั้นตอนที่ 1: ตั้งค่าโปรเจคของคุณ -ก่อนที่เราจะลงลึกในโค้ด ให้ตรวจสอบว่า `pom.xml` (Maven) หรือไฟล์ Gradle ของคุณได้รวม dependency ของ Aspose.HTML แล้ว: +ก่อนที่เราจะลงลึกในโค้ด, ตรวจสอบให้แน่ใจว่า `pom.xml` (Maven) หรือไฟล์ Gradle ของคุณรวม dependency ของ Aspose.HTML: ```xml <!-- Maven --> @@ -63,13 +97,12 @@ url: /th/java/configuring-environment/create-aspose-html-sandbox-complete-java-g implementation 'com.aspose:aspose-html:23.1' ``` -> **เคล็ดลับ:** ควรทำให้เวอร์ชันของไลบรารีสอดคล้องกับบันทึกการปล่อยของ Aspose อย่างเป็นทางการ; เวอร์ชันใหม่มักมีการแก้ไขช่องโหว่ความปลอดภัยที่สำคัญเมื่อโหลดเนื้อหาจากภายนอก - ---- +> **Pro tip:** ให้เวอร์ชันของไลบรารีสอดคล้องกับบันทึกการปล่อยของ Aspose อย่างเป็นทางการ; รุ่นใหม่รวมถึงการแก้ไขความปลอดภัยที่สำคัญเมื่อโหลดเนื้อหาภายนอก. -## ตั้งค่า Sandbox Options (ดึงชื่อหน้า java) +## วิธีตั้งค่า sandbox options? (retrieve page title java) -ขั้นตอนแรกที่สำคัญในการ **สร้าง Aspose HTML sandbox** คือการกำหนดพฤติกรรมของเบราว์เซอร์เสมือน คุณสามารถจำลองเดสก์ท็อป, อุปกรณ์มือถือ, หรือขนาดหน้าจอแบบกำหนดเองได้ +ขั้นตอนแรกที่แท้จริงในการ **creating an Aspose HTML sandbox** คือการตัดสินใจว่าเบราว์เซอร์เสมือนควรทำงานอย่างไร. คุณสามารถจำลองเดสก์ท็อป, อุปกรณ์มือถือ, หรือขนาดหน้าจอที่กำหนดเอง. +`SandboxOptions` กำหนดพฤติกรรมของ sandbox, เช่น ขนาด viewport, สตริง user‑agent, และค่า timeout. มันให้คุณควบคุมว่าหน้าเว็บจะถูกเรนเดอร์อย่างไรและทรัพยากรใดที่อนุญาต. ```java import com.aspose.html.sandbox.SandboxOptions; @@ -81,13 +114,12 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -ทำไมต้องตั้งค่านี้? ขนาด viewport มีผลต่อ CSS media queries, ส่วน user‑agent สามารถมีผลต่อการเจรจาเนื้อหาที่ฝั่งเซิร์ฟเวอร์ การตั้งค่าอย่างชัดเจนทำให้หน้าเว็บที่คุณ **ดึงชื่อหน้า java** ต่อมาจะถูกเรนเดอร์ตามที่คุณคาดหวัง - ---- +ทำไมเรื่องนี้ถึงสำคัญ? ขนาด viewport มีผลต่อ CSS media queries, ส่วน user‑agent สามารถส่งผลต่อการเจรจาเนื้อหาที่ฝั่งเซิร์ฟเวอร์. การตั้งค่าอย่างชัดเจนทำให้หน้าที่คุณจะ **retrieve page title java** ต่อมาถูกเรนเดอร์ตรงตามที่คาดหวัง. -## สร้างอินสแตนซ์ Sandbox +## วิธีสร้างอินสแตนซ์ sandbox? -เมื่อเรามีตัวเลือกแล้ว เราก็สามารถสร้าง sandbox ได้ +เมื่อเรามีตัวเลือกแล้ว, เราสามารถสร้าง sandbox ได้. +`Sandbox` คืออินสแตนซ์ของเอนจิน Chromium ที่แยกจากกันและทำงานภายใน JVM. มันสร้างสภาพแวดล้อมที่ปลอดภัยที่ HTML สามารถโหลดและรันได้โดยไม่สัมผัสระบบไฟล์ของโฮสต์. ```java import com.aspose.html.sandbox.Sandbox; @@ -96,13 +128,12 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -คิดว่า `Sandbox` คือเอนจิน Chromium ที่เบาและแยกจากกันซึ่งทำงานภายในกระบวนการ Java ของคุณ มันจะไม่เข้าถึงไฟล์ระบบเว้นแต่คุณบอกให้ทำเช่นนั้น ทำให้เหมาะอย่างยิ่งสำหรับการสครัปที่ปลอดภัย +คิดว่า `Sandbox` เป็นเอนจิน Chromium ที่เบาและแยกจากกันซึ่งทำงานภายในกระบวนการ Java ของคุณ. มันไม่สัมผัสระบบไฟล์เว้นแต่คุณสั่งให้ทำ, ทำให้เหมาะสำหรับการสเกรปที่ปลอดภัย. ---- - -## โหลดหน้าเว็บภายนอกภายใน Sandbox +## วิธีโหลดหน้าเว็บภายนอกภายใน sandbox? -เมื่อ sandbox พร้อม การโหลดหน้ารีโมทก็ง่ายเพียงส่ง URL และอ็อบเจกต์ sandbox ให้กับ `HtmlDocument` +เมื่อ sandbox พร้อม, การโหลดหน้าเว็บระยะไกลง่ายเพียงส่ง URL และอินสแตนซ์ sandbox ไปยัง `HtmlDocument`. +`HtmlDocument` แทนหน้า HTML ที่โหลดเข้าสู่ sandbox, ให้การเข้าถึง DOM, ความสามารถในการเรนเดอร์, และการรัน JavaScript. ```java import com.aspose.html.HtmlDocument; @@ -111,32 +142,30 @@ import com.aspose.html.HtmlDocument; HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); ``` -> **กรณีขอบ:** หากไซต์เป้าหมายต้องการการยืนยันตัวตนหรือมีการเปลี่ยนเส้นทาง คุณสามารถตั้งค่า handler ของ `HttpClient` ล่วงหน้าและส่งผ่านด้วย `HtmlLoadOptions` ซึ่งอยู่นอกขอบเขตของคู่มือนี้ แต่ API รองรับการทำเช่นนั้น - ---- +> **Edge case:** หากเว็บไซต์เป้าหมายต้องการการยืนยันตัวตนหรือการเปลี่ยนเส้นทาง, คุณสามารถกำหนด `HttpClient` ล่วงหน้าและส่งผ่านผ่าน `HtmlLoadOptions`. สิ่งนี้อยู่นอกขอบเขตของคู่มือสั้นนี้, แต่ API รองรับ. -## เข้าถึงชื่อหน้า – ดึงชื่อหน้า java +## วิธีเข้าถึงชื่อหน้า? (retrieve page title java) -ตอนนี้มาถึงส่วนที่คุณต้องการ: ดึงชื่อหน้าโดยยังคงอยู่ใน sandbox คลาส `HtmlDocument` มีเมธอด `getTitle()` ที่อ่านค่า `<title>` +ต่อไปเป็นส่วนที่คุณต้องการ: การดึงชื่อหน้าในขณะที่อยู่ภายใน sandbox. คลาส `HtmlDocument` มีเมธอด `getTitle()` ที่อ่านองค์ประกอบ `<title>`. +`getTitle()` คืนค่าข้อความขององค์ประกอบ `<title>` ของหน้า, ให้วิธีง่าย ๆ เพื่อตรวจสอบว่าหน้าโหลดสำเร็จ. ```java // Step 4 – read and print the title System.out.println("Title inside sandbox: " + htmlDoc.getTitle()); ``` -เมื่อคุณรันโปรแกรมเต็มรูปแบบกับ `https://example.com` คุณควรเห็นผลลัพธ์ดังนี้: +เมื่อคุณรันโปรแกรมเต็มกับ `https://example.com`, คุณควรเห็น: ``` Title inside sandbox: Example Domain ``` -บรรทัดนี้พิสูจน์ว่าเรา **สร้าง Aspose HTML sandbox** สำเร็จ, โหลดหน้ารีโมท, และ **ดึงชื่อหน้า java** ได้โดยไม่ออกจากสภาพแวดล้อมที่แยกจากกัน - ---- +บรรทัดนั้นพิสูจน์ว่าเรา **created an Aspose HTML sandbox** สำเร็จ, โหลดหน้าเว็บระยะไกล, และ **retrieved page title java** โดยไม่ออกจากสภาพแวดล้อมที่แยกจากกัน. -## ทำความสะอาดทรัพยากร +## วิธีทำความสะอาดทรัพยากร? -อ็อบเจกต์ของ Aspose.HTML ใช้ทรัพยากรเนทีฟ ดังนั้นจึงต้องทำลาย (dispose) อย่างชัดเจน การลืมทำเช่นนั้นอาจทำให้เกิดการรั่วของหน่วยความจำ โดยเฉพาะเมื่อประมวลผลหลายหน้าในลูป +อ็อบเจ็กต์ Aspose.HTML ถือทรัพยากรเนทีฟ, ดังนั้นจึงสำคัญต้องทำการ dispose อย่างชัดเจน. การลืมทำเช่นนี้อาจทำให้เกิดการรั่วไหลของหน่วยความจำ, โดยเฉพาะเมื่อประมวลผลหลายหน้าในลูป. +`dispose()` ปล่อยทรัพยากรเนทีฟที่อ็อบเจ็กต์ Aspose.HTML ถืออยู่, ป้องกันการรั่วไหลของหน่วยความจำและทำให้ JVM สามารถคืนหน่วยความจำได้อย่างรวดเร็ว. ```java // Step 5 – release native resources @@ -144,13 +173,11 @@ htmlDoc.dispose(); sandboxInstance.dispose(); ``` -> **ทำไมต้อง dispose?** เอนจิน Chromium ภายใต้จัดสรรหน่วยความจำเนทีฟและไฟล์แฮนด์เดิล การเรียก `dispose()` บอก JVM ให้ปล่อยทรัพยากรเหล่านั้นทันที แทนรอให้ finalizer ทำงาน +> **Why dispose?** เอนจิน Chromium พื้นฐานจัดสรรหน่วยความจำเนทีฟและไฟล์แฮนด์เลอร์. การเรียก `dispose()` บอก JVM ให้ปล่อยทรัพยากรเหล่านั้นทันทีแทนการรอ finalizers. ---- - -## ตัวอย่างทำงานเต็มรูปแบบ +## ตัวอย่างทำงานเต็ม -ด้านล่างคือโปรแกรมสมบูรณ์ที่คุณสามารถคัดลอกไปใส่ไฟล์ชื่อ `SandboxExample.java` คอมไพล์ด้วย `javac` และรันด้วย `java` ทุกขั้นตอนเรียงลำดับถูกต้องและมีการนำเข้า (import) ทุกอย่างครบ +ด้านล่างเป็นโปรแกรมเต็มที่คุณสามารถคัดลอกไปยังไฟล์ชื่อ `SandboxExample.java`. คอมไพล์ด้วย `javac` และรันด้วย `java`. ทุกขั้นตอนอยู่ในลำดับที่ถูกต้องและทุก import ถูกระบุ. ```java import com.aspose.html.HtmlDocument; @@ -182,36 +209,54 @@ public class SandboxExample { } ``` +![ภาพหน้าจอของโค้ด Java ที่สร้าง Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "ตัวอย่างสร้าง aspose html sandbox") + ### ผลลัพธ์ที่คาดหวัง ``` Title inside sandbox: Example Domain ``` -หากคุณเปลี่ยน `https://example.com` เป็น URL อื่น ๆ ชื่อที่พิมพ์ออกมาจะสะท้อน `<title>` ของหน้านั้น—โดยเงื่อนไขว่าไซต์อนุญาตการเข้าถึงแบบไม่ระบุตัวตน - ---- +หากคุณเปลี่ยน `https://example.com` เป็น URL อื่น, ชื่อที่พิมพ์ออกมาจะสะท้อนแท็ก `<title>` ของหน้านั้น—โดยที่เว็บไซต์อนุญาตการเข้าถึงแบบไม่ระบุตัวตน. ## เคล็ดลับปฏิบัติและข้อผิดพลาดทั่วไป -- **Timeout ของเครือข่าย:** โดยค่าเริ่มต้น sandbox ใช้ timeout 60 วินาที หากคุณเจอไซต์ที่ช้า ให้เรียก `sandboxOptions.setTimeout(120_000);` ก่อนสร้าง sandbox -- **Java Security Manager:** หากรันใน JVM ที่จำกัด ให้ตรวจสอบว่า `java.security.policy` ให้สิทธิ์ `java.net.SocketPermission` สำหรับโดเมนเป้าหมาย -- **หลายหน้า:** หากต้องประมวลผลหลาย URL ให้ใช้ `Sandbox` ตัวเดียวซ้ำกัน; สร้าง `HtmlDocument` ใหม่สำหรับแต่ละ URL แล้วทำลายหลังใช้ วิธีนี้ลดค่าใช้จ่ายในการเริ่มต้นใหม่ -- **การดีบัก:** ตั้งค่า `sandboxOptions.setDebugMode(true);` เพื่อรับบันทึกคอนโซลแบบละเอียด ช่วยหาสาเหตุว่าหน้าโหลดไม่สำเร็จได้ง่ายขึ้น +- **Network timeouts:** โดยค่าเริ่มต้น sandbox ใช้ timeout 60 วินาที. หากคุณเจอไซต์ที่ช้า, เรียก `sandboxOptions.setTimeout(120_000);` ก่อนสร้าง sandbox. +- **Java security manager:** เมื่อรันใน JVM ที่จำกัด, ตรวจสอบให้ `java.security.policy` ให้สิทธิ `java.net.SocketPermission` สำหรับโดเมนเป้าหมาย. +- **Processing multiple pages:** ใช้ `Sandbox` อินสแตนซ์เดียวซ้ำ; เพียงสร้าง `HtmlDocument` ใหม่สำหรับแต่ละ URL และทำ dispose หลังจากนั้น. วิธีนี้ลดค่าโอเวอร์เฮดการเริ่มต้น. +- **Debugging:** ตั้งค่า `sandboxOptions.setDebugMode(true);` เพื่อรับบันทึกคอนโซลแบบละเอียดที่ช่วยระบุสาเหตุที่หน้าไม่โหลด. ---- +## คำถามที่พบบ่อย -## สรุป +**Q: สามารถใช้ sandbox นี้ใน pipeline CI แบบ headless ได้หรือไม่?** +A: ได้. sandbox ทำงานโดยไม่มี UI ที่มองเห็นและสามารถรันบนเซิร์ฟเวอร์ใดก็ได้ที่รองรับ Java 8+. -เราได้ **สร้าง Aspose HTML sandbox** ใน Java ตั้งค่า viewport ที่คาดเดาได้, โหลดหน้าเว็บภายนอก, และสาธิตวิธี **ดึงชื่อหน้า java** อย่างปลอดภัยและมีประสิทธิภาพ ทั้งกระบวนการตั้งค่าตัวเลือกจนถึงการทำความสะอาดทรัพยากรถูกรวบรวมไว้ในโค้ดสั้น ๆ ที่นำกลับไปใช้ใหม่ได้ +**Q: sandbox รองรับการรัน JavaScript หรือไม่?** +A: แน่นอน. มันใช้ Chromium ภายใต้, ดังนั้น JavaScript สมัยใหม่รวมถึงฟีเจอร์ ES6 ทำงานได้อย่างถูกต้อง. -ต่อจากนี้คุณสามารถต่อยอด: สครัปเมตาแท็ก, ถ่ายภาพหน้าจอ, หรือแม้แต่รัน JavaScript ภายใน sandbox ความเป็นไปได้กว้างขวางเท่ากับเว็บเอง +**Q: sandbox สามารถจัดการหน้าเว็บขนาดเท่าไหร่?** +A: เอนจินสามารถเรนเดอร์หน้าได้ถึงขนาด 200 MB, จำกัดโดยหน่วยความจำของเครื่องโฮสต์เท่านั้น. -มีคำถามเกี่ยวกับการจัดการการยืนยันตัวตน, การตั้งค่า proxy, หรือการเรนเดอร์ PDF จาก sandbox หรือไม่? แสดงความคิดเห็นมาได้ เราจะสำรวจสถานการณ์ขั้นสูงเหล่านั้นร่วมกัน ขอให้สนุกกับการเขียนโค้ด! +**Q: ถ้าเว็บไซต์เป้าหมายบล็อกคำขออัตโนมัติจะทำอย่างไร?** +A: คุณสามารถปรับสตริง `User-Agent` ใน `SandboxOptions` หรือส่งคุกกี้ผ่าน `HtmlLoadOptions` เพื่อเลียนแบบเบราว์เซอร์ปกติ. + +**Q: มีวิธีจับภาพหน้าจอของหน้าเว็บที่โหลดหรือไม่?** +A: มี. หลังจากโหลดเอกสาร, เรียก `document.save("snapshot.png", SaveFormat.Png);` เพื่อส่งออกภาพ PNG ของหน้าที่เรนเดอร์. + +**อัปเดตล่าสุด:** 2026-09-03 +**ทดสอบด้วย:** Aspose.HTML for Java 23.1 +**ผู้เขียน:** Aspose + +## บทแนะนำที่เกี่ยวข้อง + +- [วิธีใช้ Sandbox สำหรับ Html ไปยัง Pdf Java คู่มือขั้นตอน](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [สร้าง PDF จาก HTML ด้วย Aspose.HTML for Java – Sandbox](/html/java/configuring-environment/implement-sandboxing/) +- [เปิดใช้งานการรัน Script ใน Java คู่มือ Aspose Html ฉบับเต็ม](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-guide/) -![Screenshot of Java code creating an Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "create aspose html sandbox 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/turkish/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/turkish/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index a992632af0..b0effb88b5 100644 --- a/html/turkish/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/turkish/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,25 +1,51 @@ --- category: general -date: 2026-01-04 -description: Java'da Aspose HTML sandbox'ı oluşturun ve adım adım bir örnekle sayfa - başlığını nasıl alacağınızı öğrenin. Hızlı, çalıştırılabilir kod dahil. +date: 2026-09-03 +description: Aspose sandbox java nasıl oluşturulur ve temiz, izole bir HTML yüklemesiyle + sayfa başlığı java nasıl alınır. Çalıştırılabilir kod içeren adım adım kılavuz. draft: false keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title -language: tr -og_description: Java'da Aspose HTML sandbox'ı oluşturun ve sayfa başlığını anında - alın. Temiz, izole bir HTML yüklemesi için bu ayrıntılı rehberi izleyin. -og_title: Aspose HTML Sandbox Oluştur – Java Öğreticisi +lastmod: 2026-09-03 +og_description: Aspose sandbox'ı Java'da nasıl oluşturacağınızı ve sayfa başlığı java'yı + anında nasıl alacağınızı öğrenin. Ayrıntılı adımlar, en iyi uygulamalar ve tam örnek + kod. +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: Aspose sandbox java nasıl oluşturulur – tam kılavuz +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: Aspose HTML Sandbox Oluştur – Tam Java Rehberi +title: Aspose sandbox java nasıl oluşturulur – tam kılavuz url: /tr/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -27,24 +53,35 @@ url: /tr/java/configuring-environment/create-aspose-html-sandbox-complete-java-g {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Aspose HTML Sandbox Oluşturma – Tam Java Rehberi +# Aspose sandbox java nasıl oluşturulur – tam kılavuz -Hiç **create Aspose HTML sandbox** oluşturmanız gerektiğinde, yüklenen sayfayı ana JVM'nizden izole tutmanın nasıl yapılacağından emin olmadınız mı? Belki bir web‑scraper, bir test çerçevesi geliştiriyorsunuz ya da sadece uzaktaki sayfalarla yan etkilere maruz kalmadan deneme yapmak istiyorsunuz. Bu öğreticide tam olarak bunu adım adım göstereceğiz ve ayrıca **how to retrieve page title java**'yı sandbox içinde nasıl alacağınızı göstereceğiz. +Ever needed to **create Aspose HTML sandbox** but weren’t sure how to keep the loaded page isolated from your main JVM? Maybe you’re building a web‑scraper, a testing harness, or just want to experiment with remote pages without risking side‑effects. In this tutorial we’ll walk through exactly that, and we’ll also show you **how to retrieve page title java** from inside the sandbox. -Çözüm oldukça basit: bir `SandboxOptions` nesnesi yapılandırın, bir `Sandbox` başlatın, `HtmlDocument` ile harici bir URL yükleyin, başlığı okuyun ve sonunda her şeyi temizleyin. Sonuna geldiğinizde, Aspose.HTML for Java 23.1 (veya daha yeni) kullanan herhangi bir Java projesine ekleyebileceğiniz bağımsız bir kod parçacığına sahip olacaksınız. +The solution is pretty straightforward: configure a `SandboxOptions` object, spin up a `Sandbox`, load an external URL with `HtmlDocument`, read the title, and finally clean everything up. By the end you’ll have a self‑contained snippet you can drop into any Java project that uses Aspose.HTML for Java 23.1 (or newer). -## Öğrenecekleriniz +## Hızlı cevaplar +- **Aspose sandbox nedir?** Dosya sistemine dokunmadan JVM'nizin içinde çalışan izole bir Chromium‑tabanlı ortamdır. +- **Sayfa başlığı çıkarımı için neden sandbox kullanılır?** Harici betiklerin uygulamanızın durumunu veya belleğini etkileyemeyeceğini garanti eder. +- **Hangi Java sürümü gereklidir?** Java 8 veya daha yeni; kütüphane ayrıca Java 11, 17 ve sonrası ile de çalışır. +- **Lisans gerekir mi?** Geliştirme için ücretsiz deneme lisansı yeterlidir; üretim için ticari lisans gerekir. +- **Kaç satır kod gerekir?** Çekirdek mantık için 30 satırdan az, ayrıca isteğe bağlı kurulum kodu. -- Özel viewport ve user‑agent ayarlarıyla **create Aspose HTML sandbox** nasıl yapılır. -- Sandbox içinde güvenli bir şekilde kalırken uzaktaki bir sayfadan **retrieve page title java** elde etmenin tam adımları. -- Kaynakları serbest bırakmayı unutmak gibi yaygın tuzaklar ve bellek ayak izini düşük tutan en iyi uygulama ipuçları. -- Kopyala‑yapıştır, derle ve çalıştırabileceğiniz tam, hazır‑çalışır Java programı. +## create aspose sandbox java nedir? +`Sandbox` Aspose.HTML'nin Java sürecinde çalışan hafif, izole tarayıcı motorudur. Uzaktaki HTML'yi yükleyebileceğiniz, JavaScript çalıştırabileceğiniz ve DOM ile etkileşime girebileceğiniz, ana ortamınızı ortaya çıkarmayan güvenli bir konteyner sağlar. -> **Prerequisites** – Geçerli bir Aspose.HTML for Java lisansına (ücretsiz deneme çalışır) ve Java 8 veya daha yeni bir sürümün yüklü olması gerekir. Ek üçüncü‑taraf kütüphanelerine ihtiyaç yok. +## page title java alırken neden sandbox kullanılır? +Aspose.HTML **50+ giriş ve çıkış formatını** destekler ve tüm dosyayı belleğe yüklemeden çok sayfalı belgeleri işleyebilir. Sandbox kullanmak ekstra bir güvenlik katmanı ekler, hedef sayfadaki kötü amaçlı betiğin konteynerden kaçmasını engeller. Bu yaklaşım bellek sızıntısı riskini azaltır ve JVM'nizi istenmeyen yan etkilere karşı korur. -## Adım 1: Projenizi Kurun +## Önkoşullar +- Geçerli bir Aspose.HTML for Java lisansı (deneme sürümü test için çalışır). +- Geliştirme makinenizde yüklü Java 8 veya daha yeni. +- Bağımlılıkları yönetmek için Maven veya Gradle yapı aracı. -Koda geçmeden önce, `pom.xml` (Maven) veya Gradle dosyanızın Aspose.HTML bağımlılığını içerdiğinden emin olun: +> **Pro tip:** Kütüphane sürümünü resmi Aspose sürüm notlarıyla hizalı tutun; daha yeni sürümler, güvenilmeyen içerik yüklerken kritik olan güvenlik yamalarını içerir. + +## Adım 1: projenizi kurun + +Before we dive into code, make sure your `pom.xml` (Maven) or Gradle file includes the Aspose.HTML dependency: ```xml <!-- Maven --> @@ -55,17 +92,18 @@ Koda geçmeden önce, `pom.xml` (Maven) veya Gradle dosyanızın Aspose.HTML ba </dependency> ``` -Gradle kullanıyorsanız: +If you’re using Gradle: ```groovy implementation 'com.aspose:aspose-html:23.1' ``` -> **Pro tip:** Kütüphane sürümünü resmi Aspose sürüm notlarıyla senkronize tutun; daha yeni sürümler, harici içerik yüklerken özellikle önemli olan güvenlik düzeltmeleri ekler. +> **Pro tip:** Kütüphane sürümünü resmi Aspose sürüm notlarıyla senkronize tutun; daha yeni sürümler dış içerik yüklerken özellikle önemli güvenlik düzeltmeleri ekler. -## Sandbox Seçeneklerini Yapılandırma (retrieve page title java) +## Sandbox seçeneklerini nasıl yapılandırırsınız? (retrieve page title java) -**creating an Aspose HTML sandbox**'in ilk gerçek adımı, sanal tarayıcının nasıl davranması gerektiğine karar vermektir. Bir masaüstü, mobil cihaz ya da hatta özel bir ekran boyutunu taklit edebilirsiniz. +Aspose HTML sandbox'ı **creating an Aspose HTML sandbox** oluşturmanın ilk gerçek adımı, sanal tarayıcının nasıl davranması gerektiğine karar vermektir. Bir masaüstü, mobil cihaz ya da özel bir ekran boyutunu taklit edebilirsiniz. +`SandboxOptions`, sandbox davranışını, örneğin görünüm alanı boyutu, kullanıcı‑ajan dizesi ve zaman aşımı değerleri gibi ayarlar. Sayfanın nasıl render edileceğini ve hangi kaynakların izinli olduğunu kontrol etmenizi sağlar. ```java import com.aspose.html.sandbox.SandboxOptions; @@ -77,11 +115,11 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -Bu neden önemli? Viewport boyutu CSS medya sorgularını etkilerken, user‑agent sunucu‑tarafı içerik müzakeresini etkileyebilir. Bunları açıkça ayarlamak, daha sonra **retrieve page title java** alacağınız sayfanın tam olarak beklendiği gibi render edilmesini sağlar. +Bu neden önemli? Görünüm alanı boyutu CSS medya sorgularını etkiler, kullanıcı‑ajan ise sunucu‑tarafı içerik müzakeresini etkileyebilir. Bunları açıkça ayarlamak, daha sonra **retrieve page title java**'dan alacağınız sayfanın tam olarak beklediğiniz gibi render edilmesini sağlar. -## Sandbox Örneğini Oluşturun - -Şimdi seçeneklerimiz olduğuna göre sandbox'ı başlatabiliriz. +## Sandbox örneğini nasıl oluşturursunuz? +Artık seçeneklerimiz olduğuna göre sandbox'ı başlatabiliriz. +`Sandbox`, JVM içinde çalışan izole Chromium motoru örneğidir. HTML'nin yüklenip çalıştırılabildiği, ana dosya sistemine dokunmayan güvenli bir ortam oluşturur. ```java import com.aspose.html.sandbox.Sandbox; @@ -90,11 +128,11 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -`Sandbox`'ı, Java süreciniz içinde çalışan hafif, izole bir Chromium motoru olarak düşünün. Açıkça belirtmediğiniz sürece dosya sistemine dokunmaz; bu da güvenli scraping için mükemmeldir. - -## Sandbox İçinde Harici Bir Sayfa Yükleyin +`Sandbox`'ı, Java sürecinizde çalışan hafif, izole bir Chromium motoru olarak düşünün. Açıkça belirtmediğiniz sürece dosya sistemine dokunmaz, bu da güvenli kazıma için mükemmeldir. -Sandbox hazır olduğunda, uzaktaki bir sayfayı yüklemek URL'yi ve sandbox örneğini `HtmlDocument`'e geçirmek kadar basittir. +## Sandbox içinde harici bir sayfa nasıl yüklenir? +Sandbox hazır olduğunda, uzak bir sayfayı yüklemek `HtmlDocument`'e URL ve sandbox örneğini geçirmek kadar basittir. +`HtmlDocument`, sandbox içinde yüklenen bir HTML sayfasını temsil eder, DOM erişimi, render yetenekleri ve JavaScript çalıştırma sağlar. ```java import com.aspose.html.HtmlDocument; @@ -103,11 +141,12 @@ import com.aspose.html.HtmlDocument; HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); ``` -> **Edge case:** Hedef site kimlik doğrulama veya yönlendirmeler gerektiriyorsa, `HttpClient` işleyicilerini önceden yapılandırıp `HtmlLoadOptions` aracılığıyla geçirebilirsiniz. Bu, bu hızlı rehberin kapsamı dışında, ancak API bunu destekliyor. +> **Köşe durum:** Hedef site kimlik doğrulama veya yönlendirme gerektiriyorsa, `HttpClient` işleyicilerini önceden yapılandırıp `HtmlLoadOptions` aracılığıyla geçirebilirsiniz. Bu hızlı rehberin kapsamı dışında, ancak API bunu destekler. -## Sayfa Başlığını Erişin – retrieve page title java +## Sayfa başlığına nasıl erişilir? (retrieve page title java) -Şimdi istediğiniz kısım geliyor: sandbox içinde kalırken sayfa başlığını çıkarmak. `HtmlDocument` sınıfı, `<title>` öğesini okuyan bir `getTitle()` metodunu sunar. +Şimdi istediğiniz kısma geliyoruz: sandbox içinde kalırken sayfa başlığını çıkarmak. `HtmlDocument` sınıfı `<title>` öğesini okuyan bir `getTitle()` metodunu sunar. +`getTitle()` sayfanın `<title>` öğesinin metin içeriğini döndürür, sayfanın doğru yüklendiğini doğrulamanın basit bir yolunu verir. ```java // Step 4 – read and print the title @@ -120,11 +159,11 @@ System.out.println("Title inside sandbox: " + htmlDoc.getTitle()); Title inside sandbox: Example Domain ``` -Bu satır, bir **created an Aspose HTML sandbox** başarıyla oluşturduğumuzu, uzak bir sayfa yüklediğimizi ve **retrieved page title java**'ı izole ortamı terk etmeden elde ettiğimizi kanıtlar. +Bu satır, izole ortamdan çıkmadan başarılı bir şekilde **created an Aspose HTML sandbox** oluşturduğumuzu, uzak bir sayfa yüklediğimizi ve **retrieved page title java** aldığımızı kanıtlar. -## Kaynakları Temizleyin - -Aspose.HTML nesneleri yerel kaynaklar tutar, bu yüzden onları açıkça dispose etmek çok önemlidir. Bunu unutmak, özellikle bir döngüde birçok sayfa işliyorsanız bellek sızıntılarına yol açabilir. +## Kaynakları nasıl temizlersiniz? +Aspose.HTML nesneleri yerel kaynakları tutar, bu yüzden onları açıkça dispose etmek çok önemlidir. Bunu unutmak, özellikle bir döngüde birçok sayfa işlenirken bellek sızıntılarına yol açabilir. +`dispose()` Aspose.HTML nesnelerinin tuttuğu yerel kaynakları serbest bırakır, bellek sızıntılarını önler ve JVM'nin belleği hızlıca geri kazanmasını sağlar. ```java // Step 5 – release native resources @@ -132,11 +171,10 @@ htmlDoc.dispose(); sandboxInstance.dispose(); ``` -> **Why dispose?** Altındaki Chromium motoru yerel bellek ve dosya tutamaçları tahsis eder. `dispose()` çağırmak, JVM'nin bunları sonlandırıcıları beklemek yerine hemen serbest bırakmasını sağlar. - -## Tam Çalışan Örnek +> **Neden dispose?** Altındaki Chromium motoru yerel bellek ve dosya tutamaçları tahsis eder. `dispose()` çağırmak, JVM'ye bunları finalizer'ları beklemek yerine hemen serbest bırakmasını söyler. -Aşağıda `SandboxExample.java` adlı bir dosyaya kopyalayabileceğiniz tam program yer alıyor. `javac` ile derleyin ve `java` ile çalıştırın. Tüm adımlar doğru sırada ve her import listelenmiştir. +## Tam çalışan örnek +Aşağıda `SandboxExample.java` adlı bir dosyaya kopyalayabileceğiniz tam program bulunmaktadır. `javac` ile derleyin ve `java` ile çalıştırın. Tüm adımlar doğru sırada ve her import listelenmiştir. ```java import com.aspose.html.HtmlDocument; @@ -168,32 +206,53 @@ public class SandboxExample { } ``` -### Expected Output +![Aspose HTML sandbox oluşturan Java kodunun ekran görüntüsü](/images/create-aspose-html-sandbox.png "create aspose html sandbox örneği") + +### Beklenen çıktı ``` Title inside sandbox: Example Domain ``` -`https://example.com` yerine başka bir URL koyarsanız, yazdırılan başlık o sayfanın `<title>` etiketini yansıtacaktır—site anonim erişime izin veriyorsa. +`https://example.com` adresini başka bir URL ile değiştirirseniz, yazdırılan başlık o sayfanın `<title>` etiketini yansıtacaktır—site anonim erişime izin veriyorsa. -## Pratik İpuçları ve Yaygın Tuzaklar +## Pratik ipuçları ve yaygın tuzaklar +- **Ağ zaman aşımı:** Varsayılan olarak sandbox 60 saniyelik bir zaman aşımı kullanır. Daha yavaş sitelerle karşılaşıyorsanız, sandbox oluşturulmadan önce `sandboxOptions.setTimeout(120_000);` çağırın. +- **Java güvenlik yöneticisi:** Kısıtlı bir JVM içinde çalışırken, `java.security.policy` dosyasının hedef alan için `java.net.SocketPermission` izni verdiğinden emin olun. +- **Birden fazla sayfa işleme:** Tek bir `Sandbox` örneğini yeniden kullanın; her URL için yeni bir `HtmlDocument` oluşturup ardından dispose edin. Bu, başlangıç yükünü azaltır. +- **Hata ayıklama:** `sandboxOptions.setDebugMode(true);` ayarlayarak, bir sayfanın neden yüklenemediğini belirlemenize yardımcı olacak ayrıntılı konsol günlükleri alabilirsiniz. -- **Network Timeouts:** Varsayılan olarak sandbox 60 saniyelik bir zaman aşımı kullanır. Daha yavaş sitelerle karşılaşıyorsanız, sandbox oluşturulmadan önce `sandboxOptions.setTimeout(120_000);` çağırın. -- **Java Security Manager:** Kısıtlı bir JVM içinde çalışırken, `java.security.policy` dosyasının hedef domain için `java.net.SocketPermission` izni verdiğinden emin olun. -- **Multiple Pages:** Birçok URL işlemek zorundaysanız, tek bir `Sandbox` örneğini yeniden kullanın; her URL için yeni bir `HtmlDocument` oluşturup ardından serbest bırakın. Bu, başlangıç yükünü azaltır. -- **Debugging:** `sandboxOptions.setDebugMode(true);` ayarlayarak, bir sayfanın neden yüklenemediğini belirlemenize yardımcı olacak ayrıntılı konsol günlükleri alabilirsiniz. +## Sıkça sorulan sorular -## Sonuç +**S: Bu sandbox'ı başsız bir CI pipeline'ında kullanabilir miyim?** +C: Evet. Sandbox görünür bir UI olmadan çalışır ve Java 8+ destekleyen herhangi bir sunucuda yürütülebilir. -Java'da **created an Aspose HTML sandbox**'i yeni oluşturduk, öngörülebilir bir viewport için yapılandırdık, harici bir sayfa yükledik ve **retrieve page title java**'ı güvenli ve verimli bir şekilde nasıl yapacağınızı gösterdik. Seçenek ayarından kaynak temizliğine kadar tüm akış, kompakt ve yeniden kullanılabilir bir kod parçasında kapsüllenmiştir. +**S: Sandbox JavaScript çalıştırmayı destekliyor mu?** +C: Kesinlikle. Altında Chromium kullandığı için, ES6 özellikleri dahil modern JavaScript doğru şekilde çalışır. -Şimdi bu temeli alıp genişletebilirsiniz: meta etiketlerini kazıyın, ekran görüntüleri alın veya hatta sandbox içinde JavaScript çalıştırın. Olasılıklar, web kadar geniştir. +**S: Sandbox ne kadar büyük bir sayfayı işleyebilir?** +C: Motor, yalnızca ana makinenin belleğiyle sınırlı olmak kaydıyla, 200 MB'a kadar sayfaları render edebilir. -Kimlik doğrulama, proxy ayarları veya sandbox'tan PDF oluşturma konularında sorularınız mı var? Bir yorum bırakın, bu ileri senaryoları birlikte keşfedelim. İyi kodlamalar! +**S: Hedef site otomatik istekleri engellerse ne olur?** +C: `SandboxOptions` içinde `User-Agent` dizesini özelleştirebilir veya `HtmlLoadOptions` aracılığıyla çerezler sağlayarak normal bir tarayıcıyı taklit edebilirsiniz. + +**S: Yüklenen sayfanın ekran görüntüsü alınabilir mi?** +C: Evet. Belgeyi yükledikten sonra `document.save("snapshot.png", SaveFormat.Png);` çağırarak render edilen sayfanın PNG görüntüsünü dışa aktarabilirsiniz. + +**Son Güncelleme:** 2026-09-03 +**Test Edilen:** Aspose.HTML for Java 23.1 +**Yazar:** Aspose + +## İlgili Öğreticiler + +- [Html'den Pdf'ye Sandbox Kullanımı Java Adım Adım Kılavuzu](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [Aspose.HTML for Java kullanarak HTML'den PDF Oluşturma – Sandbox](/html/java/configuring-environment/implement-sandboxing/) +- [Java'da Script Çalıştırmayı Etkinleştirme Tam Aspose Html Kılavuzu](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-guide/) -![Aspose HTML sandbox oluşturan Java kodunun ekran görüntüsü](/images/create-aspose-html-sandbox.png "aspose html sandbox örneği oluştur") {{< /blocks/products/pf/tutorial-page-section >}} + {{< /blocks/products/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/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md b/html/vietnamese/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md index 7faa2c0f80..8bace8ff58 100644 --- a/html/vietnamese/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md +++ b/html/vietnamese/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/_index.md @@ -1,25 +1,50 @@ --- category: general -date: 2026-01-04 -description: Tạo sandbox Aspose HTML trong Java và học cách lấy tiêu đề trang bằng - Java với ví dụ từng bước. Bao gồm mã nhanh, có thể chạy được. +date: 2026-09-03 +description: Cách tạo sandbox Aspose java và lấy tiêu đề trang java với việc tải HTML + sạch, cô lập. Hướng dẫn từng bước kèm mã có thể chạy. draft: false keywords: -- create aspose html sandbox +- create aspose sandbox java - retrieve page title java - aspose html sandbox options - java html sandbox example - aspose html document title -language: vi -og_description: Tạo sandbox Aspose HTML trong Java và lấy tiêu đề trang Java ngay - lập tức. Tham khảo hướng dẫn chi tiết này để tải HTML một cách sạch sẽ và cô lập. -og_title: Tạo Sandbox Aspose HTML – Hướng dẫn Java +lastmod: 2026-09-03 +og_description: Tìm hiểu cách tạo sandbox Aspose trong Java và lấy tiêu đề trang java + ngay lập tức. Các bước chi tiết, thực hành tốt nhất và mã ví dụ đầy đủ. +og_image_alt: Screenshot of Java code creating an Aspose HTML sandbox in Eclipse +og_title: Cách tạo sandbox Aspose java – hướng dẫn đầy đủ +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: How to create Aspose sandbox java and retrieve page title java with + a clean, isolated HTML load. Step‑by‑step guide with runnable code. + headline: How to create Aspose sandbox java – complete guide + type: TechArticle +- questions: + - answer: Yes. The sandbox runs without a visible UI and can be executed on any + server that supports Java 8+. + question: Can I use this sandbox in a headless CI pipeline? + - answer: Absolutely. It uses Chromium under the hood, so modern JavaScript, including + ES6 features, runs correctly. + question: Does the sandbox support JavaScript execution? + - answer: The engine can render pages up to 200 MB in size, limited only by the + host machine’s memory. + question: How large a page can the sandbox handle? + - answer: You can customize the `User-Agent` string in `SandboxOptions` or supply + cookies via `HtmlLoadOptions` to mimic a regular browser. + question: What if the target site blocks automated requests? + - answer: Yes. After loading the document, call `document.save("snapshot.png", SaveFormat.Png);` + to export a PNG image of the rendered page. + question: Is there a way to capture a screenshot of the loaded page? + type: FAQPage tags: - Aspose.HTML - Java -- Web Scraping +- Web scraping - Sandbox -title: Tạo Sandbox Aspose HTML – Hướng dẫn Java toàn diện +title: Cách tạo sandbox Aspose java – hướng dẫn đầy đủ url: /vi/java/configuring-environment/create-aspose-html-sandbox-complete-java-guide/ --- @@ -27,26 +52,35 @@ url: /vi/java/configuring-environment/create-aspose-html-sandbox-complete-java-g {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Tạo Aspose HTML Sandbox – Hướng Dẫn Java Đầy Đủ +# Cách tạo sandbox Aspose java – hướng dẫn đầy đủ -Bạn đã bao giờ cần **create Aspose HTML sandbox** nhưng không chắc làm thế nào để giữ trang đã tải được cô lập khỏi JVM chính của bạn? Có thể bạn đang xây dựng một web‑scraper, một môi trường kiểm thử, hoặc chỉ muốn thử nghiệm các trang từ xa mà không lo gây ra các tác động phụ. Trong hướng dẫn này, chúng tôi sẽ đi qua từng bước, và cũng sẽ cho bạn thấy **how to retrieve page title java** từ bên trong sandbox. +Bạn đã bao giờ cần **tạo sandbox Aspose HTML** nhưng không chắc làm thế nào để giữ trang đã tải cách ly khỏi JVM chính của bạn? Có thể bạn đang xây dựng một trình thu thập web, một môi trường kiểm thử, hoặc chỉ muốn thử nghiệm các trang từ xa mà không gây ra các tác động phụ. Trong hướng dẫn này, chúng tôi sẽ đi qua từng bước, và cũng sẽ cho bạn thấy **cách lấy tiêu đề trang java** từ bên trong sandbox. Giải pháp khá đơn giản: cấu hình một đối tượng `SandboxOptions`, khởi tạo một `Sandbox`, tải một URL bên ngoài bằng `HtmlDocument`, đọc tiêu đề, và cuối cùng dọn dẹp mọi thứ. Khi kết thúc, bạn sẽ có một đoạn mã tự chứa mà có thể chèn vào bất kỳ dự án Java nào sử dụng Aspose.HTML for Java 23.1 (hoặc mới hơn). -## Những Điều Bạn Sẽ Học +## Câu trả lời nhanh +- **Sandbox Aspose là gì?** Đây là một môi trường dựa trên Chromium được cách ly, chạy bên trong JVM của bạn mà không chạm tới hệ thống tập tin. +- **Tại sao lại sử dụng sandbox để trích xuất tiêu đề trang?** Nó đảm bảo các script bên ngoài không thể ảnh hưởng đến trạng thái hoặc bộ nhớ của ứng dụng của bạn. +- **Phiên bản Java nào được yêu cầu?** Java 8 hoặc mới hơn; thư viện cũng hoạt động với Java 11, 17 và các phiên bản sau. +- **Tôi có cần giấy phép không?** Giấy phép dùng thử miễn phí là đủ cho phát triển; giấy phép thương mại cần thiết cho môi trường sản xuất. +- **Cần bao nhiêu dòng mã?** Ít hơn 30 dòng cho logic cốt lõi, cộng với mã thiết lập tùy chọn. -- Cách **create Aspose HTML sandbox** với cài đặt viewport và user‑agent tùy chỉnh. -- Các bước chính xác để **retrieve page title java** từ một trang từ xa trong khi vẫn an toàn bên trong sandbox. -- Những bẫy thường gặp (như quên giải phóng tài nguyên) và các mẹo thực hành tốt giúp giảm lượng bộ nhớ tiêu thụ. -- Một chương trình Java hoàn chỉnh, sẵn sàng chạy mà bạn có thể sao chép‑dán, biên dịch và thực thi. +## Sandbox Aspose Java là gì? +`Sandbox` là trình duyệt nhẹ, cách ly của Aspose.HTML chạy bên trong tiến trình Java. Nó cung cấp một container an toàn nơi bạn có thể tải HTML từ xa, thực thi JavaScript và tương tác với DOM mà không phơi bày môi trường máy chủ của bạn. -> **Prerequisites** – Bạn cần một giấy phép Aspose.HTML for Java hợp lệ (bản dùng thử miễn phí cũng hoạt động) và đã cài đặt Java 8 hoặc mới hơn. Không cần thư viện bên thứ ba nào thêm. +## Tại sao lại sử dụng sandbox khi lấy tiêu đề trang java? +Aspose.HTML hỗ trợ **hơn 50 định dạng đầu vào và đầu ra** và có thể render tài liệu hàng trăm trang mà không tải toàn bộ file vào bộ nhớ. Sử dụng sandbox thêm một lớp bảo mật, đảm bảo bất kỳ script độc hại nào trên trang mục tiêu không thể thoát ra container. Cách tiếp cận này giảm nguy cơ rò rỉ bộ nhớ và bảo vệ JVM của bạn khỏi các tác động phụ không mong muốn. ---- +## Yêu cầu trước +- Giấy phép Aspose.HTML for Java hợp lệ (bản dùng thử hoạt động cho việc thử nghiệm). +- Java 8 hoặc mới hơn được cài đặt trên máy phát triển của bạn. +- Công cụ xây dựng Maven hoặc Gradle để quản lý phụ thuộc. + +> **Mẹo chuyên nghiệp:** Giữ phiên bản thư viện đồng bộ với ghi chú phát hành chính thức của Aspose; các bản phát hành mới hơn bao gồm các bản vá bảo mật quan trọng khi tải nội dung không đáng tin cậy. -## Bước 1: Thiết Lập Dự Án Của Bạn +## Bước 1: thiết lập dự án của bạn -Trước khi chúng ta bắt đầu viết mã, hãy chắc chắn rằng `pom.xml` (Maven) hoặc tệp Gradle của bạn đã bao gồm phụ thuộc Aspose.HTML: +Trước khi chúng ta đi vào mã, hãy chắc chắn rằng `pom.xml` (Maven) hoặc tệp Gradle của bạn bao gồm phụ thuộc Aspose.HTML: ```xml <!-- Maven --> @@ -63,11 +97,12 @@ Nếu bạn đang sử dụng Gradle: implementation 'com.aspose:aspose-html:23.1' ``` -> **Pro tip:** Giữ phiên bản thư viện đồng bộ với ghi chú phát hành chính thức của Aspose; các phiên bản mới hơn bổ sung các bản vá bảo mật rất quan trọng khi tải nội dung bên ngoài. +> **Mẹo chuyên nghiệp:** Giữ phiên bản thư viện đồng bộ với ghi chú phát hành chính thức của Aspose; các phiên bản mới hơn thêm các bản sửa lỗi bảo mật quan trọng khi tải nội dung bên ngoài. -## Cấu Hình Sandbox Options (retrieve page title java) +## Làm thế nào để cấu hình tùy chọn sandbox? (lấy tiêu đề trang java) -Bước thực tế đầu tiên trong **creating an Aspose HTML sandbox** là quyết định cách trình duyệt ảo sẽ hoạt động. Bạn có thể mô phỏng một máy tính để bàn, một thiết bị di động, hoặc thậm chí một kích thước màn hình tùy chỉnh. +Bước thực tế đầu tiên trong **tạo sandbox Aspose HTML** là quyết định cách trình duyệt ảo sẽ hoạt động. Bạn có thể mô phỏng một máy tính để bàn, một thiết bị di động, hoặc thậm chí một kích thước màn hình tùy chỉnh. +`SandboxOptions` cấu hình hành vi của sandbox, như kích thước viewport, chuỗi user‑agent, và giá trị timeout. Nó cho phép bạn kiểm soát cách trang được render và những tài nguyên nào được phép. ```java import com.aspose.html.sandbox.SandboxOptions; @@ -79,11 +114,12 @@ sandboxOptions.setViewportHeight(600); // height of the virtual viewport sandboxOptions.setUserAgent("AsposeHTML/1.0"); // custom user‑agent string ``` -Tại sao điều này lại quan trọng? Kích thước viewport ảnh hưởng đến các truy vấn media trong CSS, trong khi user‑agent có thể ảnh hưởng đến việc thương lượng nội dung phía máy chủ. Đặt chúng một cách rõ ràng đảm bảo trang mà bạn sau này **retrieve page title java** sẽ được hiển thị chính xác như mong đợi. +Tại sao điều này lại quan trọng? Kích thước viewport ảnh hưởng đến các media query trong CSS, trong khi user‑agent có thể ảnh hưởng đến việc thương lượng nội dung phía máy chủ. Đặt chúng một cách rõ ràng đảm bảo trang bạn sau này **lấy tiêu đề trang java** được render chính xác như mong đợi. -## Tạo Instance Sandbox +## Làm thế nào để tạo instance sandbox? -Giờ chúng ta đã có các tùy chọn, chúng ta có thể khởi tạo sandbox. +Bây giờ chúng ta đã có các tùy chọn, chúng ta có thể khởi tạo sandbox. +`Sandbox` là instance engine Chromium cách ly chạy trong JVM. Nó tạo ra một môi trường an toàn nơi HTML có thể được tải và thực thi mà không chạm tới hệ thống tập tin của host. ```java import com.aspose.html.sandbox.Sandbox; @@ -92,11 +128,12 @@ import com.aspose.html.sandbox.Sandbox; Sandbox sandboxInstance = new Sandbox(sandboxOptions); ``` -Hãy nghĩ `Sandbox` như một engine Chromium nhẹ, được cô lập và chạy bên trong tiến trình Java của bạn. Nó không chạm vào hệ thống tệp trừ khi bạn chỉ định rõ, điều này khiến nó hoàn hảo cho việc thu thập dữ liệu an toàn. +Hãy nghĩ về `Sandbox` như một engine Chromium nhẹ, cách ly, tồn tại bên trong tiến trình Java của bạn. Nó không chạm tới hệ thống tập tin trừ khi bạn chỉ định rõ, điều này làm cho nó trở nên hoàn hảo cho việc thu thập dữ liệu an toàn. -## Tải Trang Bên Ngoài Vào Sandbox +## Làm thế nào để tải một trang bên ngoài vào sandbox? -Khi sandbox đã sẵn sàng, việc tải một trang từ xa đơn giản như truyền URL và instance sandbox vào `HtmlDocument`. +Với sandbox đã sẵn sàng, việc tải một trang từ xa đơn giản như truyền URL và instance sandbox vào `HtmlDocument`. +`HtmlDocument` đại diện cho một trang HTML được tải vào sandbox, cung cấp truy cập DOM, khả năng render và thực thi JavaScript. ```java import com.aspose.html.HtmlDocument; @@ -105,28 +142,30 @@ import com.aspose.html.HtmlDocument; HtmlDocument htmlDoc = new HtmlDocument("https://example.com", sandboxInstance); ``` -> **Edge case:** Nếu trang mục tiêu yêu cầu xác thực hoặc chuyển hướng, bạn có thể cấu hình trước các handler `HttpClient` và truyền chúng qua `HtmlLoadOptions`. Điều này nằm ngoài phạm vi của hướng dẫn nhanh này, nhưng API hỗ trợ. +> **Trường hợp đặc biệt:** Nếu trang mục tiêu yêu cầu xác thực hoặc chuyển hướng, bạn có thể cấu hình trước các handler `HttpClient` và truyền chúng qua `HtmlLoadOptions`. Điều này nằm ngoài phạm vi của hướng dẫn nhanh này, nhưng API hỗ trợ. -## Truy Cập Tiêu Đề Trang – retrieve page title java +## Làm thế nào để truy cập tiêu đề trang? (lấy tiêu đề trang java) -Bây giờ là phần bạn yêu cầu: trích xuất tiêu đề trang trong khi vẫn ở trong sandbox. Lớp `HtmlDocument` cung cấp phương thức `getTitle()` để đọc phần tử `<title>`. +Bây giờ là phần bạn đã yêu cầu: trích xuất tiêu đề trang trong khi vẫn ở trong sandbox. Lớp `HtmlDocument` cung cấp phương thức `getTitle()` để đọc phần tử `<title>`. +`getTitle()` trả về nội dung văn bản của phần tử `<title>` của trang, cung cấp cách đơn giản để xác minh trang đã tải đúng. ```java // Step 4 – read and print the title System.out.println("Title inside sandbox: " + htmlDoc.getTitle()); ``` -Khi bạn chạy toàn bộ chương trình với `https://example.com`, bạn sẽ thấy: +Khi bạn chạy chương trình đầy đủ đối với `https://example.com`, bạn sẽ thấy: ``` Title inside sandbox: Example Domain ``` -Dòng này chứng minh chúng ta đã **created an Aspose HTML sandbox** thành công, tải một trang từ xa, và **retrieved page title java** mà không bao giờ rời khỏi môi trường cô lập. +Dòng này chứng minh chúng ta đã **tạo sandbox Aspose HTML** thành công, tải một trang từ xa, và **lấy tiêu đề trang java** mà không bao giờ rời khỏi môi trường cách ly. -## Dọn Dẹp Tài Nguyên +## Làm thế nào để dọn dẹp tài nguyên? -Các đối tượng Aspose.HTML giữ các tài nguyên gốc, vì vậy việc giải phóng chúng một cách rõ ràng là rất quan trọng. Quên làm điều này có thể gây rò rỉ bộ nhớ, đặc biệt khi xử lý nhiều trang trong một vòng lặp. +Các đối tượng Aspose.HTML giữ tài nguyên native, vì vậy cần giải phóng chúng một cách rõ ràng. Quên làm điều này có thể dẫn đến rò rỉ bộ nhớ, đặc biệt khi xử lý nhiều trang trong một vòng lặp. +`dispose()` giải phóng tài nguyên native mà các đối tượng Aspose.HTML nắm giữ, ngăn ngừa rò rỉ bộ nhớ và đảm bảo JVM có thể thu hồi bộ nhớ kịp thời. ```java // Step 5 – release native resources @@ -134,11 +173,11 @@ htmlDoc.dispose(); sandboxInstance.dispose(); ``` -> **Why dispose?** Engine Chromium nền tảng cấp phát bộ nhớ gốc và các handle file. Gọi `dispose()` thông báo cho JVM giải phóng chúng ngay lập tức thay vì chờ các finalizer. +> **Tại sao phải dispose?** Engine Chromium bên dưới cấp phát bộ nhớ native và các handle file. Gọi `dispose()` thông báo cho JVM giải phóng chúng ngay lập tức thay vì chờ finalizer. -## Ví Dụ Hoàn Chỉnh Hoạt Động +## Ví dụ làm việc đầy đủ -Dưới đây là chương trình hoàn chỉnh mà bạn có thể sao chép vào tệp có tên `SandboxExample.java`. Biên dịch bằng `javac` và chạy bằng `java`. Tất cả các bước được sắp xếp đúng thứ tự, và mọi import đều được liệt kê. +Dưới đây là chương trình hoàn chỉnh bạn có thể sao chép vào tệp có tên `SandboxExample.java`. Biên dịch bằng `javac` và chạy bằng `java`. Tất cả các bước được sắp xếp đúng thứ tự, và mọi import đều được liệt kê. ```java import com.aspose.html.HtmlDocument; @@ -170,32 +209,54 @@ public class SandboxExample { } ``` -### Kết Quả Dự Kiến +![Ảnh chụp màn hình mã Java tạo sandbox Aspose HTML](/images/create-aspose-html-sandbox.png "ví dụ tạo sandbox aspose html") + +### Kết quả mong đợi ``` Title inside sandbox: Example Domain ``` -Nếu bạn thay `https://example.com` bằng một URL khác, tiêu đề được in ra sẽ phản ánh thẻ `<title>` của trang đó — với điều kiện trang cho phép truy cập ẩn danh. +Nếu bạn thay thế `https://example.com` bằng một URL khác, tiêu đề được in sẽ phản ánh thẻ `<title>` của trang đó — với điều kiện trang cho phép truy cập ẩn danh. + +## Mẹo thực tế & những cạm bẫy thường gặp + +- **Thời gian chờ mạng:** Mặc định sandbox sử dụng thời gian chờ 60 giây. Nếu bạn truy cập các trang chậm hơn, gọi `sandboxOptions.setTimeout(120_000);` trước khi tạo sandbox. +- **Trình quản lý bảo mật Java:** Khi chạy trong JVM bị hạn chế, đảm bảo `java.security.policy` cấp quyền `java.net.SocketPermission` cho miền mục tiêu. +- **Xử lý nhiều trang:** Tái sử dụng một instance `Sandbox` duy nhất; chỉ tạo một `HtmlDocument` mới cho mỗi URL và giải phóng nó sau khi dùng. Điều này giảm chi phí khởi động. +- **Gỡ lỗi:** Đặt `sandboxOptions.setDebugMode(true);` để nhận log console chi tiết, giúp bạn xác định lý do một trang không tải được. -## Mẹo Thực Tế & Những Cạm Bẫy Thường Gặp +## Câu hỏi thường gặp -- **Network Timeouts:** Mặc định sandbox sử dụng thời gian chờ 60 giây. Nếu bạn truy cập các trang chậm, hãy gọi `sandboxOptions.setTimeout(120_000);` trước khi tạo sandbox. -- **Java Security Manager:** Khi chạy trong JVM bị hạn chế, hãy đảm bảo `java.security.policy` cấp quyền `java.net.SocketPermission` cho miền mục tiêu. -- **Multiple Pages:** Nếu bạn cần xử lý nhiều URL, hãy tái sử dụng một instance `Sandbox` duy nhất; chỉ cần tạo một `HtmlDocument` mới cho mỗi URL và giải phóng nó sau khi dùng. Điều này giảm chi phí khởi động. -- **Debugging:** Đặt `sandboxOptions.setDebugMode(true);` để nhận các log console chi tiết giúp bạn xác định nguyên nhân trang không tải được. +**Q: Tôi có thể sử dụng sandbox này trong pipeline CI không giao diện không?** +**A:** Có. Sandbox chạy mà không có UI hiển thị và có thể thực thi trên bất kỳ máy chủ nào hỗ trợ Java 8+. -## Kết Luận +**Q: Sandbox có hỗ trợ thực thi JavaScript không?** +**A:** Hoàn toàn có. Nó sử dụng Chromium ở phía dưới, vì vậy JavaScript hiện đại, bao gồm các tính năng ES6, chạy đúng. -Chúng ta vừa **created an Aspose HTML sandbox** trong Java, cấu hình nó với viewport dự đoán được, tải một trang bên ngoài, và trình diễn cách **retrieve page title java** một cách an toàn và hiệu quả. Toàn bộ quy trình — từ thiết lập tùy chọn đến dọn dẹp tài nguyên — được gói gọn trong một đoạn mã ngắn gọn, có thể tái sử dụng. +**Q: Sandbox có thể xử lý trang lớn tới mức nào?** +**A:** Engine có thể render các trang lên tới 200 MB, chỉ bị giới hạn bởi bộ nhớ của máy chủ. -Bây giờ bạn có thể dựa trên nền tảng này và mở rộng: thu thập meta tags, chụp ảnh màn hình, hoặc thậm chí chạy JavaScript bên trong sandbox. Các khả năng rộng mở như chính internet. +**Q: Nếu trang mục tiêu chặn các yêu cầu tự động thì sao?** +**A:** Bạn có thể tùy chỉnh chuỗi `User-Agent` trong `SandboxOptions` hoặc cung cấp cookie qua `HtmlLoadOptions` để mô phỏng trình duyệt thông thường. -Có câu hỏi về việc xử lý xác thực, cài đặt proxy, hoặc render PDF từ sandbox? Hãy để lại bình luận, và chúng tôi sẽ cùng khám phá các kịch bản nâng cao đó. Chúc lập trình vui vẻ! +**Q: Có cách nào chụp ảnh màn hình của trang đã tải không?** +**A:** Có. Sau khi tải tài liệu, gọi `document.save("snapshot.png", SaveFormat.Png);` để xuất ảnh PNG của trang đã render. + +**Cập nhật lần cuối:** 2026-09-03 +**Kiểm tra với:** Aspose.HTML for Java 23.1 +**Tác giả:** Aspose + +## Hướng dẫn liên quan + +- [Cách sử dụng Sandbox cho Html sang Pdf Java - Hướng dẫn từng bước](/html/java/advanced-usage/how-to-use-sandbox-for-html-to-pdf-java-step-by-step-guide/) +- [Tạo PDF từ HTML bằng Aspose.HTML for Java – Sandbox](/html/java/configuring-environment/implement-sandboxing/) +- [Kích hoạt thực thi script trong Java - Hướng dẫn đầy đủ Aspose HTML](/html/java/advanced-usage/enable-script-execution-in-java-complete-aspose-html-guide/) -![Screenshot of Java code creating an Aspose HTML sandbox](/images/create-aspose-html-sandbox.png "create aspose html sandbox 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 From a5c072c7649238854bc10d1820468995cc50bb88 Mon Sep 17 00:00:00 2001 From: Muhammad Muqarrab <muhammad.muqarrab@aspose.com> Date: Thu, 3 Sep 2026 21:49:41 +0000 Subject: [PATCH 4/4] =?UTF-8?q?Optimize=20page:=20html/english/java/conver?= =?UTF-8?q?sion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-?= =?UTF-8?q?page-size-resolution-and/=5Findex.md=20-=20-=20Updated=20front?= =?UTF-8?q?=20matter=20with=20current=20date,=20keywords,=20tags,=20and=20?= =?UTF-8?q?optimized=20Open=20Graph=20fields.=20-=20Integrated=20primary?= =?UTF-8?q?=20keyword=20=E2=80=9Cset=20pdf=20page=20size=E2=80=9D=20throug?= =?UTF-8?q?hout=20title,=20first=20paragraph,=20H2,=20and=20body=20(4=20oc?= =?UTF-8?q?currences).=20-=20Added=20Quick=20Answers=20and=20FAQ=20section?= =?UTF-8?q?s=20for=20AEO=20compliance.=20-=20Inserted=20direct=E2=80=91ans?= =?UTF-8?q?wer=20paragraph=20after=20the=20new=20question=E2=80=91format?= =?UTF-8?q?=20H2.=20-=20Added=20definition=20anchor=20for=20`PdfSaveOption?= =?UTF-8?q?s`.=20-=20Replaced=20vague=20statements=20with=20quantified=20c?= =?UTF-8?q?laims=20and=20authoritative=20framing.=20-=20Expanded=20explana?= =?UTF-8?q?tions,=20use=E2=80=91case=20context,=20and=20troubleshooting=20?= =?UTF-8?q?tips=20while=20preserving=20all=20original=20links,=20images,?= =?UTF-8?q?=20shortcodes,=20and=20code=E2=80=91block=20placeholders.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_index.md | 269 +++++++++-------- .../_index.md | 266 +++++++++------- .../_index.md | 273 ++++++++++------- .../_index.md | 263 +++++++++------- .../_index.md | 239 +++++++++------ .../og-image.png | Bin 0 -> 49396 bytes .../_index.md | 267 +++++++++------- .../_index.md | 262 +++++++++------- .../_index.md | 275 ++++++++++------- .../_index.md | 274 +++++++++-------- .../_index.md | 269 ++++++++++------- .../_index.md | 285 ++++++++++-------- .../_index.md | 270 +++++++++-------- .../_index.md | 264 +++++++++------- .../_index.md | 267 +++++++++------- .../_index.md | 272 ++++++++++------- .../_index.md | 252 +++++++++------- .../_index.md | 266 +++++++++------- .../_index.md | 260 +++++++++------- .../_index.md | 245 +++++++++------ .../_index.md | 258 +++++++++------- .../_index.md | 284 +++++++++-------- .../_index.md | 258 +++++++++------- .../_index.md | 266 +++++++++------- 24 files changed, 3548 insertions(+), 2556 deletions(-) create mode 100644 html/english/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/og-image.png diff --git a/html/arabic/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/arabic/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index 68350852c9..1963b18b73 100644 --- a/html/arabic/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/arabic/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,109 +1,98 @@ --- category: general -date: 2026-01-06 -description: تحويل HTML إلى PDF في Java مع حجم صفحة مخصص وهوامش ودقة. تعلّم كيفية - تعيين حجم صفحة PDF وحفظ HTML كملف PDF باستخدام Aspose.HTML. +date: 2026-09-03 +description: تحويل HTML إلى PDF في Java مع حجم صفحة مخصص وهوامش ودقة. تعلم كيفية ضبط + حجم صفحة pdf وحفظ html كـ pdf باستخدام Aspose.HTML. draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: ar -og_description: تحويل HTML إلى PDF في Java بسرعة. يوضح هذا الدليل كيفية تعيين حجم - صفحة PDF، وضبط الدقة، وحفظ HTML كملف PDF باستخدام Aspose.HTML. -og_title: تحويل HTML إلى PDF في Java – تعيين حجم الصفحة ودقة PDF +lastmod: 2026-09-03 +og_description: ضبط حجم صفحة pdf وتحويل HTML إلى PDF في Java بسرعة باستخدام Aspose.HTML. + تعلم كيفية تخصيص حجم الصفحة وهوامش ودقة. +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: تحويل HTML إلى PDF في Java – ضبط حجم صفحة pdf والدقة +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: تحويل HTML إلى PDF في Java – تحديد حجم صفحة PDF، الدقة، وحفظ HTML كملف PDF -url: /ar/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: تحويل HTML إلى PDF في Java – ضبط حجم صفحة pdf والدقة --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# تحويل HTML إلى PDF في جافا – دليل كامل مع خيارات مخصصة +# تحويل HTML إلى PDF في Java – تعيين حجم صفحة PDF والدقة -هل تساءلت يوماً كيف **تحول HTML إلى PDF** في جافا دون خوض متاهة من الإعدادات؟ لست وحدك. يواجه العديد من المطورين صعوبة عندما يحتاجون إلى تحكم دقيق في حجم الصفحة، الهوامش، أو DPI الناتج أثناء تحويل صفحة ويب إلى مستند قابل للطباعة. +هل تساءلت يومًا كيف **تحويل HTML إلى PDF** في Java مع القدرة أيضًا على **تعيين حجم صفحة PDF** والتحكم في DPI؟ لست وحدك. يواجه العديد من المطورين صعوبة عندما يحتاجون إلى أبعاد صفحة دقيقة، وهوامش، أو دقة صورة للـ PDF القابلة للطباعة مثل الفواتير، التقارير، أو الكتب الإلكترونية. -الخبر السار؟ باستخدام Aspose.HTML يمكنك **حفظ HTML كـ PDF** ببضع أسطر فقط، وستحصل على وصول كامل إلى خيارات مثل *set PDF page size* و *set PDF resolution*. هذا الدليل يمرّ بك عبر العملية بالكامل، يشرح لماذا كل إعداد مهم، ويعرض لك مثالًا جاهزًا للتنفيذ. +الأخبار السارة؟ مع Aspose.HTML يمكنك **حفظ HTML كـ PDF** في بضع أسطر فقط، وتتمكن من الوصول الكامل إلى خيارات مثل *set pdf page size* و *set pdf resolution*. يشرح هذا البرنامج التعليمي العملية بالكامل، ويوضح لماذا كل إعداد مهم، ويعرض لك مثالًا جاهزًا للتنفيذ. -بنهاية هذا الدليل ستكون قادرًا على أخذ أي ملف HTML محلي أو بعيد وإنتاج PDF عالي الجودة يحترم متطلبات التخطيط الخاصة بك—مثالي للفواتير، التقارير، أو الكتب الإلكترونية. +بنهاية هذا الدليل ستتمكن من أخذ أي ملف HTML محلي أو بعيد وإنتاج PDF عالي الجودة يحترم متطلبات التخطيط الخاصة بك — مثالي لسيناريوهات **java generate invoice pdf**. --- -![Convert HTML to PDF with custom options](image.png "convert html to pdf example") +![تحويل HTML إلى PDF مع خيارات مخصصة](image.png "مثال تحويل html إلى pdf") +[تحويل HTML إلى PDF مع خيارات مخصصة](image.png "مثال تحويل html إلى pdf") -## ما ستتعلمه +## الإجابات السريعة +- **هل يمكنني تغيير حجم الصفحة؟** نعم – استخدم `PdfSaveOptions.setPageSize()` مع أحجام محددة مسبقًا أو أبعاد مخصصة. +- **ما هو DPI المناسب للطباعة؟** 300 dpi يعطي جودة طباعة واضحة؛ 72 dpi يكفي للـ PDF على الشاشة. +- **هل أحتاج إلى خطوط إضافية؟** لا – Aspose.HTML يدمج الخطوط القياسية تلقائيًا؛ الخطوط المخصصة تعمل عبر `@font-face`. +- **هل يلزم ترخيص؟** النسخة التجريبية المجانية تعمل للتطوير؛ الترخيص التجاري مطلوب للإنتاج. +- **ما نسخة Java المدعومة؟** JDK 8 أو أحدث (المكتبة مُجمعة لـ Java 11 لكنها تعمل على 8+). -- كيفية تحميل ملف HTML مع URI أساسي صحيح حتى يتم حل الروابط النسبية. -- كيفية **تعيين حجم صفحة PDF** (A4، Letter، أبعاد مخصصة) والهوامش. -- كيفية **تعيين دقة PDF** (DPI) للحصول على صور ونصوص واضحة. -- الكود الدقيق المطلوب **لحفظ HTML كـ PDF** باستخدام مكتبة Aspose.HTML لجافا. -- المشكلات الشائعة—مثل عدم وجود URI أساسي أو الصور الضخمة—وكيفية تجنّبها. +## ما ستتعلمه +- كيفية تحميل ملف HTML مع URI أساسي صحيح حتى يتم حل الروابط النسبية. +- كيفية **تعيين حجم صفحة PDF** (A4، Letter، أبعاد مخصصة) والهوامش. +- كيفية **تعيين دقة PDF** (DPI) للحصول على صور ونصوص واضحة. +- الكود الدقيق اللازم **لحفظ html كـ pdf** باستخدام مكتبة Aspose.HTML للـ Java. +- المشكلات الشائعة — مثل نقص URI الأساسي أو الصور الضخمة — وكيفية تجنبها. ### المتطلبات المسبقة +- مجموعة تطوير Java (JDK) 8 أو أحدث. +- Maven أو Gradle لجلب `aspose-html` (أحدث نسخة عند كتابة هذا هو 23.10). +- فهم أساسي لصياغة Java. +- ملف HTML ترغب في تحويله (سنستخدم `sample.html` في الأمثلة). -- مجموعة تطوير جافا (JDK) 8 أو أحدث. -- Maven أو Gradle لجلب `aspose-html` (أحدث نسخة في وقت كتابة هذا الدليل هي 23.10). -- فهم أساسي لصياغة جافا. -- ملف HTML تريد تحويله (سنستخدم `sample.html` في الأمثلة). - ---- - -## تحويل HTML إلى PDF مع خيارات مخصصة +## كيفية تعيين حجم صفحة PDF عند تحويل HTML إلى PDF +حمّل ملف HTML الخاص بك، قم بتكوين `PdfSaveOptions`، واستدعِ `save`. النمط ذو الخطوتين أدناه يتعامل مع كل ما تحتاجه. -فيما يلي البرنامج الكامل القابل للتنفيذ الذي يوضح كل خطوة. يمكنك نسخه ولصقه في بيئة التطوير الخاصة بك، تعديل المسارات، ثم تشغيله. +تقوم بتعيين حجم الصفحة عن طريق استدعاء `pdfOptions.setPageSize(PdfPageSize.A4)` (أو أي ثابت محدد مسبقًا آخر) أو بإنشاء كائن `PdfPageSize` مخصص مع العرض والارتفاع بالنقاط. يتيح لك نفس كائن الخيارات أيضًا تعيين الدقة باستخدام `pdfOptions.setResolution(300)`. يضمن هذا الأسلوب أن PDF المُنتج يطابق الأبعاد الدقيقة التي تحتاجها. -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; - -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); - - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); - - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) - - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); - - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` - -### لماذا كل خطوة مهمة - -| الخطوة | الهدف | نصائح وحالات خاصة | -|--------|-------|-------------------| -| **1. URI الأساسي** | يضمن أن `<img src="images/pic.png">` وغيرها من الروابط النسبية تشير إلى المجلد الصحيح. | إذا تخطيت هذه الخطوة، قد تختفي الصور في PDF الناتج. استخدم `file:///` للملفات المحلية، أو عنوان URL HTTP للموارد البعيدة. | -| **2. تحميل HTML** | يحلل HTML إلى نموذج DOM الخاص بـ Aspose. | الملفات الكبيرة (>10 ميغابايت) قد تحتاج إلى مزيد من الذاكرة؛ فكر في زيادة حجم heap للـ JVM (`-Xmx2g`). | -| **3. خيارات PDF** | تتحكم بأبعاد الصفحة (`set pdf page size`)، الهوامش، وDPI (`set pdf resolution`). | A4 هو 210 × 297 مم؛ للـ Letter استخدم `PdfPageSize.LETTER`. DPI بقيمة 300 مثالي للطباعة؛ 72 يكفي للـ PDF المخصص للعرض فقط. | -| **4. الحفظ** | يكتب PDF النهائي إلى القرص (`save html as pdf`). | يجب أن يكون مسار الإخراج قابلًا للكتابة. يمكن إضافة حماية من الكتابة فوق الملف بفحص وجوده مسبقًا. | -| **5. التأكيد** | ملاحظات بسيطة على وحدة التحكم. | في التطبيقات الحقيقية استبدل `System.out` بمسجل (logger). | - ---- - -## تفصيل خطوة بخطوة - -### 1. إعداد مشروعك (HTML to PDF Java) +### تحليل خطوة بخطوة +#### 1. إعداد مشروعك (html to pdf java) إذا كنت تستخدم Maven، أضف تبعية Aspose.HTML: ```xml @@ -114,27 +103,25 @@ public class ConvertWithOptions { </dependency> ``` -لمستخدمي Gradle يمكنهم إضافة: +يمكن لمستخدمي Gradle الإضافة: ```gradle implementation 'com.aspose:aspose-html:23.10' ``` -> **نصيحة احترافية:** المكتبة مكتملة ذاتيًا؛ لا تحتاج إلى أي ملفات تنفيذية أصلية أو خطوط إضافية للتحويلات الأساسية. - -### 2. تعريف URI الأساسي +> **نصيحة احترافية:** المكتبة مكتملة ذاتيًا؛ لا تحتاج إلى أي ملفات ثنائية أصلية أو خطوط إضافية للتحويلات الأساسية. تدعم Aspose.HTML تحويل HTML إلى PDF في أكثر من 50 سيناريو ويمكنها معالجة ملفات تصل إلى 200 MB دون ملفات ثنائية خارجية. -الروابط النسبية هي مصدر شائع للصور المكسورة. من خلال توجيه `loadOptions.setBaseUri` إلى المجلد الذي يحتوي على ملف HTML، تسمح للمحول بحل المسارات كما يفعل المتصفح. +#### 2. تحديد URI الأساسي +روابط URL النسبية هي مصدر شائع للصور المكسورة. من خلال توجيه `loadOptions.setBaseUri` إلى المجلد الذي يحتوي على ملف HTML الخاص بك، تسمح للمحول بحل المسارات تمامًا كما يفعل المتصفح. ```java HtmlLoadOptions loadOptions = new HtmlLoadOptions(); loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); ``` -إذا كان HTML الخاص بك يشير إلى CSS أو خطوط مستضافة على CDN، يمكنك تخطي URI الأساسي، لكن احرص على مراقبة زمن الاستجابة الشبكي. - -### 3. تحميل مستند HTML +إذا كان ملف HTML الخاص بك يشير إلى CSS أو خطوط خارجية مستضافة على CDN، يمكنك تخطي URI الأساسي، لكن راقب زمن استجابة الشبكة. +#### 3. تحميل مستند HTML ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); ``` @@ -145,9 +132,8 @@ HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loa HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. ضبط خيارات PDF – **Set PDF Page Size** & **Set PDF Resolution** - -فئة `PdfSaveOptions` تمنحك تحكمًا دقيقًا. +#### 4. تكوين خيارات PDF – **set pdf page size** & **set pdf resolution** +`PdfSaveOptions` هو كائن التكوين في Aspose.HTML الذي يتحكم في خصائص إخراج PDF مثل حجم الصفحة، الهوامش، والدقة. ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -157,16 +143,15 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **حجم الصفحة:** اختر من `PdfPageSize.A4`، `LETTER`، `LEGAL`، أو أنشئ `PdfPageSize` مخصصًا بالعرض/الارتفاع بالنقاط. -- **الدقة:** DPI أعلى ينتج صورًا نقطية أكثر حدة لكنه يزيد حجم الملف. لمعظم مهام الطباعة 300 DPI هو الخيار المثالي. - -### 5. تنفيذ التحويل – **Save HTML as PDF** +- **حجم الصفحة:** اختر من `PdfPageSize.A4`، `LETTER`، `LEGAL`، أو أنشئ `PdfPageSize` مخصص بالعرض/الارتفاع بالنقاط. قياس A4 هو 210 × 297 مم؛ قياس Letter هو 8.5 × 11 إنش. +- **الدقة:** DPI أعلى ينتج صور نقطية أوضح لكنه يزيد حجم الملف؛ الانتقال من 72 dpi إلى 300 dpi عادةً يضاعف حجم PDF ثلاث مرات مع تحسين وضوح الصورة حتى 4 مرات. بالنسبة لمعظم مهام الطباعة، 300 dpi هو الخيار المثالي. +#### 5. إجراء التحويل – **save html as pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); ``` -الطريقة تقوم تلقائيًا ببث PDF إلى الموقع المستهدف. إذا كنت تحتاج الـ PDF في الذاكرة (مثلاً لإرساله كمرفق بريد إلكتروني)، استخدم نسخة `OutputStream`: +الطريقة تبث PDF تلقائيًا إلى الموقع المستهدف. إذا كنت تحتاج PDF في الذاكرة (مثلاً لإرساله كمرفق بريد إلكتروني)، استخدم نسخة `OutputStream`: ```java try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { @@ -176,40 +161,33 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. التحقق من النتيجة +#### 6. تحقق من النتيجة +افتح `sample_custom.pdf` في أي عارض PDF. يجب أن ترى: -افتح `sample_custom.pdf` بأي عارض PDF. يجب أن ترى: - -- صفحات بحجم A4 مع هوامش علوية/سفلية 20 pt. -- جميع الصور مُعالجة بدقة 300 DPI (لاحظ الوضوح). +- صفحات بحجم A4 مع هوامش علوية/سفلية 20 pt. +- جميع الصور مُعالجة بدقة 300 dpi (لاحظ الوضوح). - الروابط وCSS مطبقة تمامًا كما في HTML الأصلي. -إذا لاحظت أي شيء غير صحيح، أعد فحص URI الأساسي وتأكد من أن جميع الموارد الخارجية قابلة للوصول. - ---- - -## أسئلة شائعة وحالات خاصة +إذا كان هناك شيء غير صحيح، تحقق مرة أخرى من URI الأساسي وتأكد من أن جميع الموارد الخارجية قابلة للوصول. +## الأسئلة الشائعة والحالات الخاصة **س: ماذا لو كان HTML يحتوي على JavaScript؟** -ج: Aspose.HTML *لا* ينفذ JavaScript. إذا كانت صفحتك تعتمد على محتوى يُولد عبر السكريبت، قم بتهيئة HTML مسبقًا (مثلاً باستخدام متصفح بدون رأس) قبل تمريره إلى المحول. +ج: Aspose.HTML *لا* ينفذ JavaScript. إذا كانت صفحتك تعتمد على محتوى يُنشئه السكريبت، قم بتهيئة HTML مسبقًا (مثلاً باستخدام متصفح بدون واجهة) قبل تمريره إلى المحول. **س: هل يمكنني تضمين خطوط مخصصة؟** ج: نعم. ضع ملفات `.ttf` أو `.otf` في نفس المجلد وارجع إليها عبر `@font-face` في CSS. سيجعل URI الأساسي الخطوط قابلة للاكتشاف. -**س: كيف أغيّر الاتجاه إلى Landscape؟** +**س: كيف أغيّر الاتجاه إلى landscape؟** ```java saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` -**س: ملف PDF الناتج كبير—ماذا أفعل؟** -- قلل DPI (`setResolution(150)`). -- اضغط الصور باستخدام `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. -- أزل الأصول عالية الدقة غير الضرورية من HTML المصدر. - ---- - -## مثال كامل يعمل (All‑In‑One) +**س: PDF الخاص بي كبير—ماذا أفعل؟** +- خفض DPI (`setResolution(150)`). +- ضغط الصور باستخدام `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. +- إزالة الأصول ذات الدقة العالية غير الضرورية من HTML المصدر. +## مثال كامل يعمل (الكل في واحد) إليك الفئة الكاملة جاهزة للترجمة. استبدل `YOUR_DIRECTORY` بمسار مطلق على جهازك. ```java @@ -241,26 +219,75 @@ public class ConvertWithOptions { } ``` -شغّل البرنامج، افتح PDF المُولد، وسترى التخطيط الدقيق الذي حددته. هذا هو **convert HTML to PDF** في جافا، مع تخصيص الحجم والدقة. - ---- +شغّل البرنامج، افتح PDF المُنتج، وسترى التخطيط الدقيق الذي حددته. هذا هو **convert html to pdf** في Java، مع حجم ودقة مخصصين. ## الخطوات التالية والمواضيع ذات الصلة +- **تحويل دفعي:** تكرار عبر دليل من ملفات HTML وإنتاج PDFs مرة واحدة. +- **محتوى ديناميكي:** دمج Aspose.HTML مع محرك قوالب (مثل Thymeleaf) لإنشاء فواتير في الوقت الفعلي. +- **تحسين الأمان:** تحقق من صحة HTML المدخل لتجنب العلامات الخبيثة قبل التحويل. +- **مكتبات بديلة:** قارن Aspose.HTML مع OpenHTMLtoPDF أو wkhtmltopdf لحالات خاصة. + +جرّب أحجام صفحات مختلفة (`PdfPageSize.LETTER`)، الاتجاهات، أو حتى أبعاد مخصصة إذا كنت تُعد كتيبًا. الـ API مرن بما يكفي للتعامل مع معظم سيناريوهات *html to pdf java* التي قد تواجهها. + +## الأسئلة المتكررة +**س: هل يدعم Aspose.HTML صيغ إخراج أخرى؟** +ج: نعم – بالإضافة إلى PDF يمكنه توليد PNG، JPEG، SVG، وEPUB مباشرةً من HTML. -- **تحويل دفعي:** كرّر العملية على جميع ملفات HTML في مجلد لإنتاج PDFs دفعة واحدة. -- **المحتوى الديناميكي:** دمج Aspose.HTML مع محرك قوالب (مثل Thymeleaf) لإنشاء فواتير في الوقت الفعلي. -- **تعزيز الأمان:** تحقق من صحة HTML المدخل لتجنب العلامات الضارة قبل التحويل. -- **مكتبات بديلة:** قارن Aspose.HTML مع OpenHTMLtoPDF أو wkhtmltopdf لحالات خاصة معينة. +**س: هل هناك حد لعدد الصفحات؟** +ج: Aspose.HTML يمكنه إنشاء PDFs بآلاف الصفحات؛ استهلاك الذاكرة يبقى منخفضًا لأنه يبث الصفحات إلى القرص عند الحاجة. -جرّب أحجام صفحات مختلفة (`PdfPageSize.LETTER`)، أوضاع Landscape، أو حتى أبعاد مخصصة إذا كنت تُعد كتيبًا. الـ API مرن بما يكفي لمعالجة معظم سيناريوهات *html to pdf java* التي قد تواجهها. +**س: هل يمكنني إضافة إشارات مرجعية أو جدول محتويات؟** +ج: نعم – استخدم `PdfSaveOptions.setCreateBookmarks(true)` وقدم مخططًا هرميًا في HTML. + +**س: كيف أتعامل مع الصور الكبيرة بكفاءة؟** +ج: اضبط `pdfOptions.setResolution(150)` وفعل تقليل حجم الصورة عبر `pdfOptions.setImageDownsampleThreshold(150)`. + +**س: هل المكتبة متوافقة مع Java 17؟** +ج: بالتأكيد – المكتبة مُجمعة لـ Java 11 لكنها تعمل على أي JDK أحدث، بما في ذلك Java 17 وJava 21. --- -## الخلاصة +**آخر تحديث:** 2026-09-03 +**تم الاختبار مع:** Aspose.HTML 23.10 for Java +**المؤلف:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); -غطّينا كل ما تحتاجه **لتحويل HTML إلى PDF** في جافا مع **set PDF page size**، **set PDF resolution**، و**save HTML as PDF** باستخدام Aspose.HTML. الدليل خطوة بخطوة، الكود الكامل، وحلول المشكلات + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## الدروس ذات الصلة +- [كيفية تحويل HTML إلى PDF Java - تعيين هوامش الصفحة باستخدام Aspose.HTML](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [ضبط حجم صفحة PDF باستخدام Aspose.HTML للـ Java](/html/java/advanced-usage/adjust-pdf-page-size/) +- [كيفية تحويل HTML إلى PDF Java – باستخدام Aspose.HTML للـ Java](/html/java/conversion-html-to-other-formats/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/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/chinese/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index 72797e0e48..571a624c88 100644 --- a/html/chinese/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/chinese/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,110 +1,103 @@ --- category: general -date: 2026-01-06 -description: 在 Java 中将 HTML 转换为 PDF,支持自定义页面大小、边距和分辨率。了解如何设置 PDF 页面大小并使用 Aspose.HTML - 将 HTML 保存为 PDF。 +date: 2026-09-03 +description: 在 Java 中使用自定义 page size、margins 和 resolution 将 HTML 转换为 PDF。了解如何使用 Aspose.HTML + 设置 pdf page size 并将 html 保存为 pdf。 draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: zh -og_description: 快速在 Java 中将 HTML 转换为 PDF。本指南展示如何设置 PDF 页面尺寸、调整分辨率,以及使用 Aspose.HTML - 将 HTML 保存为 PDF。 -og_title: 在 Java 中将 HTML 转换为 PDF – 设置 PDF 页面大小和分辨率 +lastmod: 2026-09-03 +og_description: 使用 Aspose.HTML 快速设置 pdf page size 并在 Java 中将 HTML 转换为 PDF。了解如何自定义 + page size、margins 和 resolution。 +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: 在 Java 中将 HTML 转换为 PDF – 设置 pdf page size 和 resolution +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: 在 Java 中将 HTML 转换为 PDF – 设置 PDF 页面尺寸、分辨率,并将 HTML 保存为 PDF -url: /zh/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: 在 Java 中将 HTML 转换为 PDF – 设置 pdf page size 和 resolution --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# 在 Java 中将 HTML 转换为 PDF – 完整指南及自定义选项 +# 将 HTML 转换为 PDF(Java) – 设置 PDF 页面大小和分辨率 -有没有想过如何在 Java 中 **将 HTML 转换为 PDF** 而不需要在一堆设置中苦苦挣扎?你并不是唯一有此困惑的人。许多开发者在需要精确控制页面尺寸、边距或输出 DPI,以将网页转换为可打印文档时,常常碰壁。 +Ever wondered how to **convert HTML to PDF** in Java while also being able to **set pdf page size** and control DPI? You’re not alone. Many developers hit a wall when they need precise page dimensions, margins, or image resolution for printable PDFs such as invoices, reports, or e‑books. -好消息是?使用 Aspose.HTML,你只需几行代码就能 **将 HTML 保存为 PDF**,并且可以完整访问诸如 *set PDF page size* 和 *set PDF resolution* 等选项。本教程将带你逐步完成整个过程,解释每个设置为何重要,并提供一个可直接运行的示例。 +The good news? With Aspose.HTML you can **save HTML as PDF** in just a few lines, and you get full access to options like *set pdf page size* and *set pdf resolution*. This tutorial walks you through the entire process, explains why each setting matters, and shows you a ready‑to‑run example. -阅读完本指南后,你将能够将任意本地或远程的 HTML 文件生成符合布局要求的高质量 PDF——非常适合发票、报告或电子书。 +By the end of this guide you’ll be able to take any local or remote HTML file and produce a high‑quality PDF that respects your layout requirements—perfect for **java generate invoice pdf** scenarios. --- ![使用自定义选项将 HTML 转换为 PDF](image.png "convert html to pdf 示例") +[使用自定义选项将 HTML 转换为 PDF](image.png "convert html to pdf 示例") -## 您将学到 - -- 如何使用正确的 Base URI 加载 HTML 文件,以便相对链接能够解析。 -- 如何 **设置 PDF 页面尺寸**(A4、Letter、自定义尺寸)和边距。 -- 如何 **设置 PDF 分辨率**(DPI),以获得清晰的图像和文字。 -- 使用 Aspose.HTML Java 库 **将 HTML 保存为 PDF** 所需的完整代码。 -- 常见陷阱——例如缺少 Base URI 或图像过大——以及如何避免它们。 - -### 前置条件 - -- Java Development Kit (JDK) 8 或更高版本。 -- Maven 或 Gradle 用于引入 `aspose-html`(撰写时的最新版本为 23.10)。 -- 基本的 Java 语法了解。 -- 一个你想要转换的 HTML 文件(示例中使用 `sample.html`)。 +## 快速回答 +- **我可以更改页面大小吗?** 是的 – 使用 `PdfSaveOptions.setPageSize()` 并提供预定义尺寸或自定义尺寸。 +- **打印时应使用什么 DPI?** 300 dpi 可提供清晰的打印质量;72 dpi 对于屏幕显示的 PDF 已足够。 +- **我需要额外的字体吗?** 不需要 – Aspose.HTML 会自动嵌入标准字体;自定义字体可通过 `@font-face` 使用。 +- **需要许可证吗?** 免费试用可用于开发;生产环境需要商业许可证。 +- **支持哪个 Java 版本?** JDK 8 或更高(库编译于 Java 11,但可在 8 及以上版本运行)。 ---- - -## 使用自定义选项将 HTML 转换为 PDF - -下面是完整的可运行程序,演示了每一步。复制粘贴到 IDE,调整路径后运行即可。 - -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; - -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); - - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); +## 你将学到 - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) +- 如何使用正确的 base URI 加载 HTML 文件,以便相对链接能够解析。 +- 如何 **set pdf page size**(A4、Letter、自定义尺寸)和边距。 +- 如何 **set pdf resolution**(DPI)以获得清晰的图像和文本。 +- 使用 Aspose.HTML Java 库 **save html as pdf** 所需的完整代码。 +- 常见陷阱——例如缺少 base URI 或图像过大——以及如何避免它们。 - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); +### 前置条件 - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` +- Java Development Kit (JDK) 8 或更高。 +- Maven 或 Gradle 用于引入 `aspose-html`(撰写时的最新版本为 23.10)。 +- 对 Java 语法的基本了解。 +- 要转换的 HTML 文件(示例中使用 `sample.html`)。 -### 为什么每一步都很重要 +## 将 HTML 转换为 PDF 时如何设置 pdf 页面大小 -| 步骤 | 目的 | 提示与边缘情况 | -|------|------|-------------------| -| **1. Base URI** | 确保 `<img src="images/pic.png">` 等相对链接指向正确的文件夹。 | 如果省略此步骤,图片可能在输出的 PDF 中消失。对本地文件使用 `file:///`,对远程资源使用 HTTP URL。 | -| **2. Load HTML** | 将 HTML 解析为 Aspose 的 DOM 模型。 | 大型 HTML 文件(>10 MB)可能需要更多内存;考虑增大 JVM 堆 (`-Xmx2g`)。 | -| **3. PDF Options** | 控制页面尺寸(`set pdf page size`)、边距以及 DPI(`set pdf resolution`)。 | A4 为 210 × 297 mm;Letter 使用 `PdfPageSize.LETTER`。300 DPI 适合打印,72 DPI 适用于仅屏幕查看的 PDF。 | -| **4. Save** | 将最终 PDF 写入磁盘(`save html as pdf`)。 | 输出路径必须可写。可通过文件存在性检查添加覆盖保护。 | -| **5. Confirmation** | 简单的控制台反馈。 | 在实际应用中可将 `System.out` 替换为日志记录器。 | +加载 HTML,配置 `PdfSaveOptions`,然后调用 `save`。下面的两步模式处理了所有需求。 ---- +您通过调用 `pdfOptions.setPageSize(PdfPageSize.A4)`(或其他预定义常量)或创建一个宽高以点为单位的自定义 `PdfPageSize` 实例来设置页面大小。同一个 options 对象还可以使用 `pdfOptions.setResolution(300)` 设置分辨率。此方法确保生成的 PDF 完全符合所需的精确尺寸。 -## 步骤分解 +### 步骤分解 -### 1. 设置项目 (HTML 转 PDF Java) +#### 1. 设置项目 (html to pdf java) -如果使用 Maven,在 `pom.xml` 中添加 Aspose.HTML 依赖: +If you’re using Maven, add the Aspose.HTML dependency: ```xml <dependency> @@ -114,40 +107,40 @@ public class ConvertWithOptions { </dependency> ``` -Gradle 用户可以添加: +Gradle users can add: ```gradle implementation 'com.aspose:aspose-html:23.10' ``` -> **Pro tip:** 该库是完全自包含的;进行基础转换时无需任何本地二进制文件或额外字体。 +> **专业提示:** 该库是完全自包含的;基本转换无需任何本机二进制文件或额外字体。Aspose.HTML 支持在 50 多种场景下将 HTML 转换为 PDF,并且可以处理高达 200 MB 的文件而无需外部本机二进制文件。 -### 2. 定义 Base URI +#### 2. 定义 base URI -相对 URL 是导致图像破损的常见原因。将 `loadOptions.setBaseUri` 指向包含 HTML 的文件夹,可让转换器像浏览器一样解析路径。 +Relative URLs are a common source of broken images. By pointing `loadOptions.setBaseUri` to the folder containing your HTML, you let the converter resolve paths exactly as a browser would. ```java HtmlLoadOptions loadOptions = new HtmlLoadOptions(); loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); ``` -如果你的 HTML 引用了托管在 CDN 上的外部 CSS 或字体,可以省略 Base URI,但需留意网络延迟。 +If your HTML references external CSS or fonts hosted on a CDN, you can skip the base URI, but keep an eye on network latency. -### 3. 加载 HTML 文档 +#### 3. 加载 HTML 文档 ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); ``` -你也可以从 URL 加载: +You can also load from a URL: ```java HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. 配置 PDF 选项 – **设置 PDF 页面尺寸** 与 **设置 PDF 分辨率** +#### 4. 配置 PDF 选项 – **set pdf page size** 与 **set pdf resolution** -`PdfSaveOptions` 类提供了细粒度的控制。 +`PdfSaveOptions` 是 Aspose.HTML 的配置对象,用于控制 PDF 输出属性,如页面大小、边距和分辨率. ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -157,16 +150,16 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **页面尺寸:** 可选 `PdfPageSize.A4`、`LETTER`、`LEGAL`,或使用宽高(单位为点)创建自定义 `PdfPageSize`。 -- **分辨率:** 更高的 DPI 能产生更清晰的光栅图像,但会增大文件体积。大多数打印任务 300 DPI 是理想选择。 +- **页面大小:** 可从 `PdfPageSize.A4`、`LETTER`、`LEGAL` 中选择,或使用宽高(点)创建自定义 `PdfPageSize`。A4 为 210 × 297 mm;Letter 为 8.5 × 11 in。 +- **分辨率:** 更高的 DPI 能产生更清晰的光栅图像,但也会增大文件大小;从 72 dpi 提升到 300 dpi 通常会使 PDF 大小增加约三倍,同时图像清晰度提升至最高 4 倍。对大多数打印任务而言,300 dpi 是最佳选择。 -### 5. 执行转换 – **将 HTML 保存为 PDF** +#### 5. 执行转换 – **save html as pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); ``` -该方法会自动将 PDF 流写入目标位置。如果需要将 PDF 保存在内存中(例如作为邮件附件发送),可使用 `OutputStream` 重载: +The method automatically streams the PDF to the target location. If you need the PDF in memory (e.g., to send as an email attachment), use an `OutputStream` overload: ```java try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { @@ -176,41 +169,37 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. 验证结果 +#### 6. 验证结果 -在任意 PDF 查看器中打开 `sample_custom.pdf`,应看到: +Open `sample_custom.pdf` in any PDF viewer. You should see: -- A4 大小的页面,顶部/底部边距为 20 pt。 -- 所有图像以 300 DPI 渲染(请注意其清晰度)。 +- A4 大小的页面,顶部/底部边距为 20 pt。 +- 所有图像以 300 dpi 渲染(请注意其清晰度)。 - 链接和 CSS 与原始 HTML 完全一致。 -如果出现异常,请再次检查 Base URI 并确保所有外部资源均可访问。 - ---- +If something looks off, double‑check the base URI and ensure all external resources are reachable. ## 常见问题与边缘情况 -**Q: 我的 HTML 包含 JavaScript,怎么办?** -A: Aspose.HTML **不执行** JavaScript。如果页面依赖脚本生成内容,请在将其交给转换器之前使用无头浏览器等方式预渲染 HTML。 +**问:如果我的 HTML 包含 JavaScript 会怎样?** +答:Aspose.HTML *不* 执行 JavaScript。如果页面依赖脚本生成的内容,请在将其交给转换器之前先预渲染 HTML(例如使用无头浏览器)。 -**Q: 我可以嵌入自定义字体吗?** -A: 可以。将 `.ttf` 或 `.otf` 文件放在同一文件夹,并通过 CSS 中的 `@font-face` 引用。Base URI 会帮助发现这些字体。 +**问:我可以嵌入自定义字体吗?** +答:可以。将 `.ttf` 或 `.otf` 文件放在同一文件夹,并在 CSS 中通过 `@font-face` 引用。base URI 将使字体可被发现。 -**Q: 如何将方向改为横向?** +**问:如何将方向改为横向?** ```java saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` -**Q: 我的 PDF 文件太大,怎么办?** +**问:我的 PDF 太大——怎么办?** - 降低 DPI(`setResolution(150)`)。 - 使用 `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)` 压缩图像。 - 从源 HTML 中移除不必要的高分辨率资源。 ---- - ## 完整工作示例(全功能) -以下是完整的类,可直接编译。将 `YOUR_DIRECTORY` 替换为你机器上的绝对路径。 +以下是可直接编译的完整类代码。将 `YOUR_DIRECTORY` 替换为你机器上的绝对路径。 ```java import com.aspose.html.converters.*; @@ -241,26 +230,81 @@ public class ConvertWithOptions { } ``` -运行程序,打开生成的 PDF,即可看到你定义的精确布局。这就是在 Java 中 **将 HTML 转换为 PDF**,并具备自定义页面尺寸和分辨率的完整实现。 - ---- +Run the program, open the generated PDF, and you’ll see the exact layout you defined. That’s **convert html to pdf** in Java, complete with custom sizing and resolution. ## 后续步骤与相关主题 -- **批量转换:** 循环遍历目录中的多个 HTML 文件,一次性生成 PDF。 -- **动态内容:** 将 Aspose.HTML 与模板引擎(如 Thymeleaf)结合,实时生成发票等文档。 -- **安全加固:** 在转换前验证输入的 HTML,防止恶意标记。 -- **替代库:** 将 Aspose.HTML 与 OpenHTMLtoPDF 或 wkhtmltopdf 进行对比,寻找特定场景的最佳方案。 +- **批量转换:** 遍历 HTML 文件目录,一次性生成 PDF。 +- **动态内容:** 将 Aspose.HTML 与模板引擎(如 Thymeleaf)结合,实时生成发票。 +- **安全加固:** 在转换前验证输入的 HTML,以防止恶意标记。 +- **替代库:** 将 Aspose.HTML 与 OpenHTMLtoPDF 或 wkhtmltopdf 进行对比,以应对特定边缘情况。 + +尝试不同的页面大小(`PdfPageSize.LETTER`)、方向,甚至自定义尺寸,以便制作小册子。API 足够灵活,可处理大多数 *html to pdf java* 场景。 + +## 常见问答 + +**问:Aspose.HTML 支持其他输出格式吗?** +答:是的 – 除了 PDF,亦可直接从 HTML 生成 PNG、JPEG、SVG 和 EPUB。 + +**问:页面数量有限制吗?** +答:Aspose.HTML 能创建包含数千页的 PDF;由于需要时会将页面流式写入磁盘,内存占用保持低水平。 + +**问:我可以添加书签或目录吗?** +答:可以 – 使用 `PdfSaveOptions.setCreateBookmarks(true)` 并在 HTML 中提供层级大纲。 -尝试不同的页面尺寸(`PdfPageSize.LETTER`)、方向,甚至自定义尺寸,以便制作小册子等特殊文档。API 足够灵活,能够满足你在 *html to pdf java* 场景中遇到的大多数需求。 +**问:如何高效处理大图像?** +答:设置 `pdfOptions.setResolution(150)` 并通过 `pdfOptions.setImageDownsampleThreshold(150)` 启用图像下采样。 + +**问:该库兼容 Java 17 吗?** +答:完全兼容 – 库编译于 Java 11,但可在任何更高版本的 JDK 上运行,包括 Java 17 和 Java 21。 + +--- --- -## 结论 +**Last Updated:** 2026-09-03 +**Tested with:** Aspose.HTML 23.10 for Java +**Author:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## 相关教程 + +- [如何使用 Aspose.HTML 将 HTML 转换为 PDF(Java) - 设置页面边距](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [使用 Aspose.HTML for Java 调整 PDF 页面大小](/html/java/advanced-usage/adjust-pdf-page-size/) +- [如何使用 Aspose.HTML for Java 将 HTML 转换为 PDF(Java)](/html/java/conversion-html-to-other-formats/convert-html-to-pdf/) -我们已经覆盖了在 Java 中 **将 HTML 转换为 PDF** 的全部要点,同时演示了如何 **设置 PDF 页面尺寸**、**设置 PDF 分辨率**,以及使用 Aspose.HTML **将 HTML 保存为 PDF**。本分步指南、完整代码以及故障排除建议,帮助你轻松实现高质量的 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/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/czech/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index 9ff05cf08d..f7ab144394 100644 --- a/html/czech/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/czech/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,111 +1,101 @@ --- category: general -date: 2026-01-06 -description: Převod HTML na PDF v Javě s vlastním rozměrem stránky, okraji a rozlišením. - Naučte se, jak nastavit velikost stránky PDF a uložit HTML jako PDF pomocí Aspose.HTML. +date: 2026-09-03 +description: Převod HTML na PDF v Javě s vlastní velikostí stránky, okraji a rozlišením. + Naučte se, jak nastavit velikost stránky pdf a uložit html jako pdf pomocí Aspose.HTML. draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: cs -og_description: Rychle převádějte HTML do PDF v Javě. Tento průvodce ukazuje, jak - nastavit velikost stránky PDF, upravit rozlišení a uložit HTML jako PDF pomocí Aspose.HTML. -og_title: Převod HTML do PDF v Javě – Nastavte velikost stránky PDF a rozlišení +lastmod: 2026-09-03 +og_description: Nastavte velikost stránky pdf a rychle převádějte HTML na PDF v Javě + pomocí Aspose.HTML. Naučte se, jak přizpůsobit velikost stránky, okraje a rozlišení. +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: Převod HTML na PDF v Javě – nastavení velikosti stránky pdf a rozlišení +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: Převod HTML na PDF v Javě – nastavení velikosti stránky PDF, rozlišení a uložení - HTML jako PDF -url: /cs/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: Převod HTML na PDF v Javě – nastavení velikosti stránky pdf a rozlišení --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Převod HTML na PDF v Javě – Kompletní průvodce s vlastními možnostmi +# Převod HTML do PDF v Javě – nastavení velikosti stránky PDF a rozlišení -Už jste se někdy zamýšleli, jak **převést HTML na PDF** v Javě, aniž byste se topili v labyrintu nastavení? Nejste v tom sami. Mnoho vývojářů narazí na problém, když potřebují přesnou kontrolu nad velikostí stránky, okraji nebo DPI výstupu při převodu webové stránky na tisknutelný dokument. +Ever wondered how to **convert HTML to PDF** in Java while also being able to **set pdf page size** and control DPI? You’re not alone. Many developers hit a wall when they need precise page dimensions, margins, or image resolution for printable PDFs such as invoices, reports, or e‑books. -Dobrá zpráva? S Aspose.HTML můžete **uložit HTML jako PDF** během několika řádků a získáte plný přístup k možnostem jako *nastavit velikost PDF stránky* a *nastavit rozlišení PDF*. Tento tutoriál vás provede celým procesem, vysvětlí, proč je každé nastavení důležité, a ukáže vám připravený příklad, který lze rovnou spustit. +The good news? With Aspose.HTML you can **save HTML as PDF** in just a few lines, and you get full access to options like *set pdf page size* and *set pdf resolution*. This tutorial walks you through the entire process, explains why each setting matters, and shows you a ready‑to‑run example. -Na konci tohoto průvodce budete schopni vzít libovolný lokální nebo vzdálený HTML soubor a vytvořit vysoce kvalitní PDF, který respektuje vaše požadavky na rozvržení – ideální pro faktury, reporty nebo e‑knihy. +By the end of this guide you’ll be able to take any local or remote HTML file and produce a high‑quality PDF that respects your layout requirements—perfect for **java generate invoice pdf** scenarios. ---- +![Převod HTML do PDF s vlastními možnostmi](image.png "převod html do pdf příklad") +[Převod HTML do PDF s vlastními možnostmi](image.png "převod html do pdf příklad") -![Convert HTML to PDF with custom options](image.png "convert html to pdf example") +## Rychlé odpovědi +- **Mohu změnit velikost stránky?** Ano – použijte `PdfSaveOptions.setPageSize()` s předdefinovanými velikostmi nebo vlastními rozměry. +- **Jaké DPI mám použít pro tisk?** 300 dpi poskytuje ostrou kvalitu tisku; 72 dpi stačí pro PDF na obrazovce. +- **Potřebuji extra fonty?** Ne – Aspose.HTML automaticky vkládá standardní fonty; vlastní fonty fungují přes `@font-face`. +- **Je vyžadována licence?** Bezplatná zkušební verze funguje pro vývoj; pro produkci je potřeba komerční licence. +- **Která verze Javy je podporována?** JDK 8 nebo novější (knihovna je zkompilována pro Java 11, ale běží na 8+). ## Co se naučíte -- Jak načíst HTML soubor s platným základním URI, aby se relativní odkazy správně vyřešily. -- Jak **nastavit velikost PDF stránky** (A4, Letter, vlastní rozměry) a okraje. -- Jak **nastavit rozlišení PDF** (DPI) pro ostré obrázky a text. -- Přesný kód potřebný k **uložení HTML jako PDF** pomocí knihovny Aspose.HTML pro Java. -- Běžné úskalí – např. chybějící základní URI nebo příliš velké obrázky – a jak se jim vyhnout. +- Jak načíst HTML soubor s vhodným base URI, aby se relativní odkazy správně vyřešily. +- Jak **set pdf page size** (A4, Letter, vlastní rozměry) a okraje. +- Jak **set pdf resolution** (DPI) pro ostré obrázky a text. +- Přesný kód potřebný k **save html as pdf** pomocí knihovny Aspose.HTML pro Java. +- Běžné úskalí — například chybějící base URI nebo příliš velké obrázky — a jak se jim vyhnout. -### Požadavky +### Předpoklady -- Java Development Kit (JDK) 8 nebo novější. -- Maven nebo Gradle pro stažení `aspose-html` (nejnovější verze v době psaní je 23.10). -- Základní znalost syntaxe Javy. +- Java Development Kit (JDK) 8 nebo novější. +- Maven nebo Gradle pro stažení `aspose-html` (nejnovější verze v době psaní je 23.10). +- Základní znalost syntaxe Javy. - HTML soubor, který chcete převést (v příkladech použijeme `sample.html`). ---- - -## Převod HTML na PDF s vlastními možnostmi - -Níže je kompletní, spustitelný program, který demonstruje každý krok. Klidně jej zkopírujte do svého IDE, upravte cesty a spusťte. - -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; - -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); - - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); - - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) - - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); +## Jak nastavit velikost stránky PDF při převodu HTML do PDF - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` - -### Proč je každý krok důležitý +Load your HTML, configure `PdfSaveOptions`, and call `save`. The two‑step pattern below handles everything you need. -| Krok | Účel | Tipy a okrajové případy | -|------|------|--------------------------| -| **1. Základní URI** | Zajišťuje, že `<img src="images/pic.png">` a další relativní odkazy ukazují na správný adresář. | Pokud tento krok vynecháte, mohou obrázky v PDF chybět. Použijte `file:///` pro lokální soubory nebo HTTP URL pro vzdálené zdroje. | -| **2. Načtení HTML** | Parsuje HTML do DOM modelu Aspose. | Velké HTML soubory (>10 MB) mohou vyžadovat více paměti; zvažte zvýšení haldy JVM (`-Xmx2g`). | -| **3. PDF možnosti** | Řídí rozměry stránky (`set pdf page size`), okraje a DPI (`set pdf resolution`). | A4 má rozměry 210 × 297 mm; pro Letter použijte `PdfPageSize.LETTER`. DPI 300 je ideální pro tisk; 72 stačí pro PDF určené jen pro obrazovku. | -| **4. Uložení** | Zapíše finální PDF na disk (`save html as pdf`). | Cesta k výstupu musí být zapisovatelná. Ochranu proti přepsání můžete přidat kontrolou existence souboru. | -| **5. Potvrzení** | Jednoduchá zpětná vazba v konzoli. | V reálných aplikacích nahraďte `System.out` loggerem. | - ---- +You set the page size by calling `pdfOptions.setPageSize(PdfPageSize.A4)` (or any other predefined constant) or by creating a custom `PdfPageSize` instance with width and height in points. The same options object also lets you set resolution with `pdfOptions.setResolution(300)`. This approach guarantees that the generated PDF matches the exact dimensions you require. -## Rozbor krok za krokem +### Postupný rozpis -### 1. Nastavení projektu (HTML to PDF Java) +#### 1. Nastavení projektu (html to pdf java) -Pokud používáte Maven, přidejte závislost Aspose.HTML: +If you’re using Maven, add the Aspose.HTML dependency: ```xml <dependency> @@ -115,40 +105,40 @@ Pokud používáte Maven, přidejte závislost Aspose.HTML: </dependency> ``` -Uživatelé Gradle mohou přidat: +Gradle users can add: ```gradle implementation 'com.aspose:aspose-html:23.10' ``` -> **Pro tip:** Knihovna je zcela samostatná; pro základní konverze nepotřebujete žádné nativní binárky ani extra fonty. +> **Tip:** Knihovna je zcela samostatná; pro základní převody nepotřebujete žádné nativní binární soubory ani extra fonty. Aspose.HTML podporuje převod HTML do PDF ve více než 50 scénářích a může zpracovat soubory až do 200 MB bez externích nativních binárek. -### 2. Definování základního URI +#### 2. Definice base URI -Relativní URL jsou častým zdrojem rozbitých obrázků. Nastavením `loadOptions.setBaseUri` na složku obsahující váš HTML soubor umožníte konvertoru řešit cesty přesně tak, jako by to dělal prohlížeč. +Relative URLs are a common source of broken images. By pointing `loadOptions.setBaseUri` to the folder containing your HTML, you let the converter resolve paths exactly as a browser would. ```java HtmlLoadOptions loadOptions = new HtmlLoadOptions(); loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); ``` -Pokud váš HTML odkazuje na externí CSS nebo fonty hostované na CDN, můžete základní URI vynechat, ale sledujte latenci sítě. +If your HTML references external CSS or fonts hosted on a CDN, you can skip the base URI, but keep an eye on network latency. -### 3. Načtení HTML dokumentu +#### 3. Načtení HTML dokumentu ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); ``` -Můžete také načíst z URL: +You can also load from a URL: ```java HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. Konfigurace PDF možností – **Set PDF Page Size** & **Set PDF Resolution** +#### 4. Konfigurace PDF možností – **set pdf page size** & **set pdf resolution** -Třída `PdfSaveOptions` vám poskytuje detailní kontrolu. +`PdfSaveOptions` je konfigurační objekt Aspose.HTML, který řídí vlastnosti výstupu PDF, jako je velikost stránky, okraje a rozlišení. ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -158,16 +148,16 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **Velikost stránky:** Vyberte z `PdfPageSize.A4`, `LETTER`, `LEGAL` nebo vytvořte vlastní `PdfPageSize` s šířkou/výškou v bodech. -- **Rozlišení:** Vyšší DPI dává ostřejší rastrové obrázky, ale zvětšuje velikost souboru. Pro většinu tiskových úloh je 300 DPI optimální. +- **Page size:** Vyberte z `PdfPageSize.A4`, `LETTER`, `LEGAL` nebo vytvořte vlastní `PdfPageSize` se šířkou/výškou v bodech. A4 měří 210 × 297 mm; Letter měří 8.5 × 11 in. +- **Resolution:** Vyšší DPI poskytuje ostřejší rastrové obrázky, ale také zvětšuje velikost souboru; přechod z 72 dpi na 300 dpi typicky ztrojnásobí velikost PDF a zlepší ostrost obrázků až 4‑násobně. Pro většinu tiskových úloh je 300 dpi optimální. -### 5. Provedení konverze – **Save HTML as PDF** +#### 5. Provedení převodu – **save html as pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); ``` -Metoda automaticky streamuje PDF do cílové lokace. Pokud potřebujete PDF v paměti (např. pro odeslání jako příloha e‑mailu), použijte přetíženou verzi s `OutputStream`: +The method automatically streams the PDF to the target location. If you need the PDF in memory (e.g., to send as an email attachment), use an `OutputStream` overload: ```java try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { @@ -177,41 +167,37 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. Ověření výsledku +#### 6. Ověření výsledku -Otevřete `sample_custom.pdf` v libovolném PDF prohlížeči. Měli byste vidět: +Open `sample_custom.pdf` in any PDF viewer. You should see: -- Stránky velikosti A4 s 20 pt horními/dolními okraji. -- Všechny obrázky vykreslené při 300 DPI (všimněte si ostrosti). -- Odkazy a CSS aplikované přesně jako v původním HTML. +- Stránky velikosti A4 s horními/dolními okraji 20 pt. +- Všechny obrázky vykreslené při 300 dpi (všimněte si ostrosti). +- Odkazy a CSS aplikovány přesně jako v původním HTML. -Pokud něco vypadá špatně, zkontrolujte základní URI a ujistěte se, že jsou všechny externí zdroje dostupné. +If something looks off, double‑check the base URI and ensure all external resources are reachable. ---- - -## Často kladené otázky a okrajové případy +## Časté otázky a okrajové případy **Q: Co když moje HTML obsahuje JavaScript?** -A: Aspose.HTML *ne*spouští JavaScript. Pokud stránka závisí na obsahu generovaném skriptem, předem si HTML vykreslete (např. pomocí headless prohlížeče) a až poté jej předávejte konvertoru. +A: Aspose.HTML *ne*spouští JavaScript. Pokud se stránka spoléhá na obsah generovaný skriptem, před předáním konvertoru HTML jej předrenderujte (např. pomocí headless prohlížeče). **Q: Mohu vložit vlastní fonty?** -A: Ano. Umístěte soubory `.ttf` nebo `.otf` do stejné složky a odkažte na ně pomocí `@font-face` ve vašem CSS. Základní URI zajistí, že fonty budou nalezeny. +A: Ano. Umístěte soubory `.ttf` nebo `.otf` do stejné složky a odkažte na ně pomocí `@font-face` ve vašem CSS. Base URI zajistí, že fonty budou nalezeny. -**Q: Jak změním orientaci na na šířku (landscape)?** +**Q: Jak změním orientaci na na šířku?** ```java saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` -**Q: Můj PDF je obrovský – co mohu udělat?** -- Snižte DPI (`setResolution(150)`). -- Komprimujte obrázky pomocí `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. +**Q: My PDF is huge—what can I do?** +- Snižte DPI (`setResolution(150)`). +- Komprimujte obrázky pomocí `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. - Odstraňte zbytečné vysoké rozlišení zdroje ze zdrojového HTML. ---- +## Kompletní funkční příklad (vše‑v‑jednom) -## Kompletní funkční příklad (vše v jednom) - -Zde je celá třída připravená ke kompilaci. Nahraďte `YOUR_DIRECTORY` absolutní cestou na vašem počítači. +Here’s the entire class ready to compile. Replace `YOUR_DIRECTORY` with an absolute path on your machine. ```java import com.aspose.html.converters.*; @@ -242,26 +228,81 @@ public class ConvertWithOptions { } ``` -Spusťte program, otevřete vygenerovaný PDF a uvidíte přesně rozvržení, které jste definovali. To je **convert HTML to PDF** v Javě, kompletní s vlastním nastavením velikosti a rozlišení. - ---- +Run the program, open the generated PDF, and you’ll see the exact layout you defined. That’s **convert html to pdf** in Java, complete with custom sizing and resolution. ## Další kroky a související témata -- **Dávkový převod:** Procházejte adresář s HTML soubory a hromadně vytvářejte PDF. -- **Dynamický obsah:** Kombinujte Aspose.HTML s šablonovacím enginem (např. Thymeleaf) pro generování faktur za běhu. -- **Zabezpečení:** Validujte vstupní HTML, aby nedošlo k zneužití škodlivého markup před konverzí. -- **Alternativní knihovny:** Porovnejte Aspose.HTML s OpenHTMLtoPDF nebo wkhtmltopdf pro specifické okrajové případy. +- **Dávkový převod:** Procházet adresář HTML souborů a vytvořit PDF najednou. +- **Dynamický obsah:** Kombinovat Aspose.HTML s šablonovacím enginem (např. Thymeleaf) pro generování faktur za běhu. +- **Zabezpečení:** Validovat vstupní HTML, aby se předešlo škodlivému markup před převodem. +- **Alternativní knihovny:** Porovnat Aspose.HTML s OpenHTMLtoPDF nebo wkhtmltopdf pro specifické okrajové případy. + +Experimentujte s různými velikostmi stránek (`PdfPageSize.LETTER`), orientacemi nebo dokonce vlastními rozměry, pokud připravujete brožuru. API je dostatečně flexibilní, aby zvládlo většinu scénářů *html to pdf java*, se kterými se setkáte. + +## Často kladené otázky + +**Q: Podporuje Aspose.HTML i jiné výstupní formáty?** +A: Ano – kromě PDF může přímo z HTML generovat PNG, JPEG, SVG a EPUB. + +**Q: Existuje limit na počet stránek?** +A: Aspose.HTML může vytvářet PDF s tisíci stránkami; využití paměti zůstává nízké, protože stránky jsou při potřebě streamovány na disk. + +**Q: Mohu přidat záložky nebo obsah?** +A: Ano – použijte `PdfSaveOptions.setCreateBookmarks(true)` a poskytněte hierarchický náčrt v HTML. -Experimentujte s různými velikostmi stránek (`PdfPageSize.LETTER`), orientacemi nebo dokonce vlastními rozměry, pokud připravujete brožuru. API je dostatečně flexibilní, aby zvládlo většinu *html to pdf java* scénářů, na které narazíte. +**Q: Jak efektivně zacházet s velkými obrázky?** +A: Nastavte `pdfOptions.setResolution(150)` a povolte down‑sampling obrázků pomocí `pdfOptions.setImageDownsampleThreshold(150)`. + +**Q: Je knihovna kompatibilní s Java 17?** +A: Naprosto – knihovna je zkompilována pro Java 11, ale běží na jakémkoli novějším JDK, včetně Java 17 a Java 21. + +--- --- -## Závěr +**Last Updated:** 2026-09-03 +**Tested with:** Aspose.HTML 23.10 for Java +**Author:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## Související tutoriály + +- [Jak převést HTML do PDF v Javě – nastavit okraje stránky s Aspose.HTML](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [Upravit velikost stránky PDF pomocí Aspose.HTML pro Java](/html/java/advanced-usage/adjust-pdf-page-size/) +- [Jak převést HTML do PDF v Javě – pomocí Aspose.HTML pro Java](/html/java/conversion-html-to-other-formats/convert-html-to-pdf/) -Probrali jsme vše, co potřebujete k **převodu HTML na PDF** v Javě, a to při **nastavení velikosti PDF stránky**, **nastavení rozlišení PDF** a **uložení HTML jako PDF** pomocí Aspose.HTML. Krok‑za‑krokem průvodce, kompletní kód a tipy na řešení problémů {{< /blocks/products/pf/tutorial-page-section >}} + {{< /blocks/products/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/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/dutch/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index be2c5c3934..ef48f04e4c 100644 --- a/html/dutch/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/dutch/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,111 +1,100 @@ --- category: general -date: 2026-01-06 -description: Converteer HTML naar PDF in Java met aangepaste paginagrootte, marges - en resolutie. Leer hoe je de PDF‑paginagrootte instelt en HTML opslaat als PDF met - Aspose.HTML. +date: 2026-09-03 +description: HTML naar PDF converteren in Java met aangepast paginaformaat, marges + en resolutie. Leer hoe je het pdf-paginaformaat instelt en html opslaat als pdf + met behulp van Aspose.HTML. draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: nl -og_description: Converteer HTML snel naar PDF in Java. Deze gids laat zien hoe je - de PDF-paginaformaat instelt, de resolutie aanpast en HTML opslaat als PDF met Aspose.HTML. -og_title: HTML naar PDF converteren in Java – Stel PDF-paginaformaat en resolutie - in +lastmod: 2026-09-03 +og_description: Stel pdf-paginaformaat in en converteer HTML naar PDF in Java snel + met Aspose.HTML. Leer hoe je paginaformaat, marges en resolutie kunt aanpassen. +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: HTML naar PDF converteren in Java – pdf-paginaformaat en resolutie instellen +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: HTML naar PDF converteren in Java – PDF-paginagrootte, resolutie instellen - en HTML opslaan als PDF -url: /nl/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: HTML naar PDF converteren in Java – pdf-paginaformaat en resolutie instellen --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# HTML naar PDF converteren in Java – Complete gids met aangepaste opties +# HTML naar PDF converteren in Java – pdf-paginaformaat en resolutie instellen -Heb je je ooit afgevraagd hoe je **HTML naar PDF** kunt **converteren** in Java zonder te worstelen met een wirwar aan instellingen? Je bent niet de enige. Veel ontwikkelaars lopen tegen een muur aan wanneer ze precieze controle nodig hebben over paginagrootte, marges of uitvoer‑DPI bij het omzetten van een webpagina naar een afdrukbaar document. +Heb je je ooit afgevraagd hoe je **HTML naar PDF** kunt **converteren** in Java terwijl je ook **pdf-paginaformaat** kunt instellen en DPI kunt regelen? Je bent niet de enige. Veel ontwikkelaars lopen tegen een muur aan wanneer ze nauwkeurige paginagrootte, marges of beeldresolutie nodig hebben voor afdrukbare PDF's zoals facturen, rapporten of e‑books. -Het goede nieuws? Met Aspose.HTML kun je **HTML opslaan als PDF** in slechts een paar regels, en krijg je volledige toegang tot opties zoals *set PDF page size* en *set PDF resolution*. Deze tutorial leidt je door het volledige proces, legt uit waarom elke instelling belangrijk is, en toont je een kant‑klaar voorbeeld. +Het goede nieuws? Met Aspose.HTML kun je **HTML opslaan als PDF** in slechts een paar regels, en krijg je volledige toegang tot opties zoals *set pdf page size* en *set pdf resolution*. Deze tutorial leidt je door het volledige proces, legt uit waarom elke instelling belangrijk is, en toont je een kant‑klaar voorbeeld. -Aan het einde van deze gids kun je elk lokaal of extern HTML‑bestand nemen en een PDF van hoge kwaliteit produceren die voldoet aan je lay‑outvereisten — perfect voor facturen, rapporten of e‑books. +Aan het einde van deze gids kun je elk lokaal of extern HTML‑bestand nemen en een PDF van hoge kwaliteit produceren die voldoet aan je lay-outvereisten—perfect voor **java generate invoice pdf** scenario's. ---- +![HTML naar PDF converteren met aangepaste opties](image.png "voorbeeld van html naar pdf converteren") +[HTML naar PDF converteren met aangepaste opties](image.png "voorbeeld van html naar pdf converteren") -![HTML naar PDF converteren met aangepaste opties](image.png "convert html to pdf example") +## Snelle antwoorden +- **Kan ik de paginagrootte wijzigen?** Ja – gebruik `PdfSaveOptions.setPageSize()` met vooraf gedefinieerde groottes of aangepaste afmetingen. +- **Welke DPI moet ik gebruiken voor afdrukken?** 300 dpi geeft scherpe afdrukkwaliteit; 72 dpi is voldoende voor PDF's op scherm. +- **Heb ik extra lettertypen nodig?** Nee – Aspose.HTML embedt standaardlettertypen automatisch; aangepaste lettertypen werken via `@font-face`. +- **Is een licentie vereist?** Een gratis proefversie werkt voor ontwikkeling; een commerciële licentie is nodig voor productie. +- **Welke Java‑versie wordt ondersteund?** JDK 8 of nieuwer (de bibliotheek is gecompileerd voor Java 11 maar draait op 8+). ## Wat je zult leren -- Hoe je een HTML‑bestand laadt met een juiste base‑URI zodat relatieve links worden opgelost. -- Hoe je **set PDF page size** (A4, Letter, aangepaste afmetingen) en marges instelt. -- Hoe je **set PDF resolution** (DPI) instelt voor scherpe afbeeldingen en tekst. -- De exacte code die nodig is om **HTML op te slaan als PDF** te gebruiken met de Aspose.HTML Java‑bibliotheek. -- Veelvoorkomende valkuilen — zoals ontbrekende base‑URI’s of te grote afbeeldingen — en hoe je ze vermijdt. +- Hoe je een HTML‑bestand laadt met een juiste base‑URI zodat relatieve links worden opgelost. +- Hoe je **set pdf page size** (A4, Letter, aangepaste afmetingen) en marges instelt. +- Hoe je **set pdf resolution** (DPI) voor scherpe afbeeldingen en tekst instelt. +- De exacte code die nodig is om **save html as pdf** te gebruiken met de Aspose.HTML Java‑bibliotheek. +- Veelvoorkomende valkuilen—zoals ontbrekende base‑URI's of te grote afbeeldingen—en hoe je ze kunt vermijden. ### Vereisten -- Java Development Kit (JDK) 8 of nieuwer. -- Maven of Gradle om `aspose-html` toe te voegen (de nieuwste versie op het moment van schrijven is 23.10). -- Een basisbegrip van Java‑syntaxis. +- Java Development Kit (JDK) 8 of nieuwer. +- Maven of Gradle om `aspose-html` binnen te halen (de nieuwste versie op het moment van schrijven is 23.10). +- Een basisbegrip van Java‑syntaxis. - Een HTML‑bestand dat je wilt converteren (we gebruiken `sample.html` in de voorbeelden). ---- - -## HTML naar PDF converteren met aangepaste opties - -Hieronder staat het volledige, uitvoerbare programma dat elke stap demonstreert. Voel je vrij om het te kopiëren‑plakken in je IDE, de paden aan te passen en op Run te klikken. - -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; - -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); - - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); - - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) - - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); +## Hoe pdf-paginaformaat in te stellen bij het converteren van HTML naar PDF - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` - -### Waarom elke stap belangrijk is +Laad je HTML, configureer `PdfSaveOptions`, en roep `save` aan. Het twee‑stappenpatroon hieronder behandelt alles wat je nodig hebt. -| Stap | Doel | Tips & randgevallen | -|------|------|----------------------| -| **1. Base URI** | Zorgt ervoor dat `<img src="images/pic.png">` en andere relatieve links naar de juiste map wijzen. | Als je dit overslaat, kunnen afbeeldingen verdwijnen in de gegenereerde PDF. Gebruik `file:///` voor lokale bestanden, of een HTTP‑URL voor externe bronnen. | -| **2. Load HTML** | Parseert de HTML naar Aspose’s DOM‑model. | Grote HTML‑bestanden (>10 MB) hebben mogelijk meer geheugen nodig; overweeg de JVM‑heap te vergroten (`-Xmx2g`). | -| **3. PDF Options** | Regelt paginadimensies (`set pdf page size`), marges en DPI (`set pdf resolution`). | A4 is 210 × 297 mm; voor Letter gebruik `PdfPageSize.LETTER`. Een DPI van 300 is ideaal voor afdrukken; 72 volstaat voor alleen‑scherm‑PDF’s. | -| **4. Save** | Schrijft de uiteindelijke PDF naar schijf (`save html as pdf`). | Het uitvoerpad moet beschrijfbaar zijn. Bescherming tegen overschrijven kan worden toegevoegd met een controle op bestands‑existence. | -| **5. Confirmation** | Eenvoudige console‑feedback. | In echte toepassingen vervang je `System.out` door een logger. | - ---- +Je stelt de paginagrootte in door `pdfOptions.setPageSize(PdfPageSize.A4)` aan te roepen (of een andere vooraf gedefinieerde constante) of door een aangepaste `PdfPageSize`‑instantie te maken met breedte en hoogte in points. Hetzelfde opties‑object laat je ook de resolutie instellen met `pdfOptions.setResolution(300)`. Deze aanpak garandeert dat de gegenereerde PDF exact de door jou vereiste afmetingen heeft. -## Stapsgewijze uitleg +### Stapsgewijze uiteenzetting -### 1. Stel je project in (HTML naar PDF Java) +#### 1. Stel je project in (html naar pdf java) Als je Maven gebruikt, voeg dan de Aspose.HTML‑dependency toe: @@ -123,20 +112,20 @@ Gradle‑gebruikers kunnen toevoegen: implementation 'com.aspose:aspose-html:23.10' ``` -> **Pro tip:** De bibliotheek is volledig zelf‑voorzienend; je hebt geen native binaries of extra lettertypen nodig voor basisconversies. +> **Pro tip:** De bibliotheek is volledig zelf‑voorzien; je hebt geen native binaries of extra lettertypen nodig voor basisconversies. Aspose.HTML ondersteunt conversie van HTML naar PDF in meer dan 50 scenario's en kan bestanden tot 200 MB verwerken zonder externe native binaries. -### 2. Definieer de basis‑URI +#### 2. Definieer de base‑URI -Relatieve URL’s zijn een veelvoorkomende bron van gebroken afbeeldingen. Door `loadOptions.setBaseUri` te wijzen naar de map die je HTML bevat, laat je de converter paden precies oplossen zoals een browser dat zou doen. +Relatieve URL's zijn een veelvoorkomende bron van kapotte afbeeldingen. Door `loadOptions.setBaseUri` te wijzen naar de map die je HTML bevat, laat je de converter paden exact oplossen zoals een browser dat zou doen. ```java HtmlLoadOptions loadOptions = new HtmlLoadOptions(); loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); ``` -Als je HTML externe CSS‑ of lettertype‑bestanden van een CDN referereert, kun je de base‑URI overslaan, maar houd dan rekening met netwerklatentie. +Als je HTML verwijst naar externe CSS of lettertypen gehost op een CDN, kun je de base‑URI overslaan, maar houd de netwerklatentie in de gaten. -### 3. Laad het HTML‑document +#### 3. Laad het HTML‑document ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); @@ -148,9 +137,9 @@ Je kunt ook laden vanaf een URL: HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. Configureer PDF‑opties – **Set PDF Page Size** & **Set PDF Resolution** +#### 4. Configureer PDF‑opties – **set pdf page size** & **set pdf resolution** -De `PdfSaveOptions`‑klasse geeft je fijnmazige controle. +`PdfSaveOptions` is het configuratie‑object van Aspose.HTML dat PDF‑uitvoer eigenschappen regelt zoals paginagrootte, marges en resolutie. ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -160,16 +149,16 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **Page Size:** Kies uit `PdfPageSize.A4`, `LETTER`, `LEGAL`, of maak een aangepaste `PdfPageSize` met breedte/hoogte in points. -- **Resolution:** Een hogere DPI levert scherpere raster‑afbeeldingen op, maar vergroot de bestandsgrootte. Voor de meeste afdruktaken is 300 DPI een goede balans. +- **Page size:** Kies uit `PdfPageSize.A4`, `LETTER`, `LEGAL`, of maak een aangepaste `PdfPageSize` met breedte/hoogte in points. A4 meet 210 × 297 mm; Letter meet 8.5 × 11 in. +- **Resolution:** Een hogere DPI levert scherpere rasterafbeeldingen op maar vergroot ook de bestandsgrootte; van 72 dpi naar 300 dpi gaat de PDF‑grootte meestal drievoudig terwijl de scherpte van afbeeldingen tot 4× verbetert. Voor de meeste afdruktaken is 300 dpi een goed evenwicht. -### 5. Voer de conversie uit – **Save HTML as PDF** +#### 5. Voer de conversie uit – **save html as pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); ``` -De methode streamt de PDF automatisch naar de doel‑locatie. Als je de PDF in het geheugen nodig hebt (bijvoorbeeld om als e‑mailbijlage te versturen), gebruik dan de overload met een `OutputStream`: +De methode streamt de PDF automatisch naar de doellocatie. Als je de PDF in het geheugen nodig hebt (bijv. om als e‑mailbijlage te versturen), gebruik dan een `OutputStream`‑overload: ```java try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { @@ -179,37 +168,33 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. Verifieer het resultaat +#### 6. Verifieer het resultaat -Open `sample_custom.pdf` in een PDF‑viewer. Je zou moeten zien: +Open `sample_custom.pdf` in any PDF viewer. You should see: -- Pagina’s van A4‑formaat met 20 pt boven‑/onder‑marges. -- Alle afbeeldingen gerenderd op 300 DPI (let op de scherpte). -- Links en CSS exact toegepast zoals in de originele HTML. +- Pagina's van A4-formaat met 20 pt boven‑/ondermarges. +- Alle afbeeldingen gerenderd op 300 dpi (let op de scherpte). +- Links en CSS precies toegepast zoals in de originele HTML. Als er iets niet klopt, controleer dan de base‑URI opnieuw en zorg dat alle externe bronnen bereikbaar zijn. ---- - ## Veelgestelde vragen & randgevallen **Q: Wat als mijn HTML JavaScript bevat?** -A: Aspose.HTML voert *geen* JavaScript uit. Als je pagina afhankelijk is van door scripts gegenereerde inhoud, render dan eerst de HTML (bijv. met een headless browser) voordat je deze aan de converter geeft. +A: Aspose.HTML voert *geen* JavaScript uit. Als je pagina afhankelijk is van door scripts gegenereerde inhoud, render de HTML eerst (bijv. met een headless browser) voordat je deze aan de converter geeft. -**Q: Kan ik aangepaste lettertypen insluiten?** -A: Ja. Plaats de `.ttf`‑ of `.otf`‑bestanden in dezelfde map en verwijs ernaar via `@font-face` in je CSS. De base‑URI maakt de lettertypen vindbaar. +**Q: Kan ik aangepaste lettertypen embedden?** +A: Ja. Plaats de `.ttf` of `.otf` bestanden in dezelfde map en verwijs ernaar via `@font-face` in je CSS. De base‑URI maakt de lettertypen vindbaar. -**Q: Hoe wijzig ik de oriëntatie naar landschap?** +**Q: Hoe wijzig ik de oriëntatie naar liggend?** ```java saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` -**Q: Mijn PDF is enorm — wat kan ik doen?** -- Verlaag de DPI (`setResolution(150)`). -- Comprimeer afbeeldingen met `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. -- Verwijder onnodige hoge‑resolutie‑assets uit de bron‑HTML. - ---- +**Q: Mijn PDF is enorm—wat kan ik doen?** +- Verlaag de DPI (`setResolution(150)`). +- Comprimeer afbeeldingen met `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. +- Verwijder onnodige high‑resolution assets uit de bron‑HTML. ## Volledig werkend voorbeeld (alles‑in‑één) @@ -244,26 +229,80 @@ public class ConvertWithOptions { } ``` -Voer het programma uit, open de gegenereerde PDF, en je ziet de exacte lay‑out die je hebt gedefinieerd. Dat is **HTML naar PDF converteren** in Java, compleet met aangepaste afmetingen en resolutie. - ---- +Voer het programma uit, open de gegenereerde PDF, en je ziet de exacte lay-out die je hebt gedefinieerd. Dat is **convert html to pdf** in Java, compleet met aangepaste afmetingen en resolutie. ## Volgende stappen & gerelateerde onderwerpen -- **Batch conversion:** Loop door een map met HTML‑bestanden en genereer in één keer PDFs. -- **Dynamic content:** Combineer Aspose.HTML met een templating‑engine (bijv. Thymeleaf) om facturen on‑the‑fly te genereren. -- **Security hardening:** Valideer invoer‑HTML om kwaadaardige markup te vermijden vóór conversie. -- **Alternative libraries:** Vergelijk Aspose.HTML met OpenHTMLtoPDF of wkhtmltopdf voor specifieke randgevallen. +- **Batchconversie:** Loop over een map met HTML‑bestanden en produceer PDF's in één keer. +- **Dynamische inhoud:** Combineer Aspose.HTML met een templating‑engine (bijv. Thymeleaf) om facturen on‑the‑fly te genereren. +- **Beveiligingsverharding:** Valideer invoer‑HTML om kwaadaardige markup te vermijden vóór conversie. +- **Alternatieve bibliotheken:** Vergelijk Aspose.HTML met OpenHTMLtoPDF of wkhtmltopdf voor specifieke randgevallen. + +Experimenteer met verschillende paginagroottes (`PdfPageSize.LETTER`), oriëntaties, of zelfs aangepaste afmetingen als je een boekje voorbereidt. De API is flexibel genoeg om de meeste *html to pdf java* scenario's die je tegenkomt te verwerken. + +## Veelgestelde vragen + +**Q: Ondersteunt Aspose.HTML andere uitvoerformaten?** +A: Ja – naast PDF kan het PNG, JPEG, SVG en EPUB direct vanuit HTML genereren. + +**Q: Is er een limiet op het aantal pagina's?** +A: Aspose.HTML kan PDF's maken met duizenden pagina's; het geheugenverbruik blijft laag omdat het pagina's naar schijf streamt wanneer nodig. + +**Q: Kan ik bladwijzers of een inhoudsopgave toevoegen?** +A: Ja – gebruik `PdfSaveOptions.setCreateBookmarks(true)` en lever een hiërarchische outline in de HTML. -Experimenteer met verschillende paginagroottes (`PdfPageSize.LETTER`), oriëntaties, of zelfs aangepaste afmetingen als je een boekje voorbereidt. De API is flexibel genoeg om de meeste *html to pdf java* scenario’s die je tegenkomt te verwerken. +**Q: Hoe ga ik efficiënt om met grote afbeeldingen?** +A: Stel `pdfOptions.setResolution(150)` in en schakel beeld‑downsampling in via `pdfOptions.setImageDownsampleThreshold(150)`. +**Q: Is de bibliotheek compatibel met Java 17?** +A: Absoluut – de bibliotheek is gecompileerd voor Java 11 maar draait op elke latere JDK, inclusief Java 17 en Java 21. + +--- --- -## Conclusie +**Laatst bijgewerkt:** 2026-09-03 +**Getest met:** Aspose.HTML 23.10 for Java +**Auteur:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## Gerelateerde tutorials + +- [Hoe HTML naar PDF Java converteren - Paginamarges instellen met Aspose.HTML](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [PDF-paginaformaat aanpassen met Aspose.HTML voor Java](/html/java/advanced-usage/adjust-pdf-page-size/) +- [Hoe HTML naar PDF Java converteren – Met Aspose.HTML voor Java](/html/java/conversion-html-to-other-formats/convert-html-to-pdf/) -We hebben alles behandeld wat je nodig hebt om **HTML naar PDF** te **converteren** in Java terwijl je **set PDF page size**, **set PDF resolution**, en **save HTML as PDF** gebruikt met Aspose.HTML. De stap‑voor‑stap gids, volledige code, en probleemoplossing {{< /blocks/products/pf/tutorial-page-section >}} + {{< /blocks/products/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/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index 378aa0d53d..444da5f2b9 100644 --- a/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,109 +1,103 @@ --- category: general -date: 2026-01-06 +date: 2026-09-03 description: Convert HTML to PDF in Java with custom page size, margins, and resolution. - Learn how to set PDF page size and save HTML as PDF using Aspose.HTML. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. draft: false +images: +- /java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/og-image.png keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: en -og_description: Convert HTML to PDF in Java quickly. This guide shows how to set PDF - page size, adjust resolution, and save HTML as PDF with Aspose.HTML. -og_title: Convert HTML to PDF in Java – Set PDF Page Size & Resolution +lastmod: 2026-09-03 +og_description: Set pdf page size and convert HTML to PDF in Java quickly with Aspose.HTML. + Learn how to customize page size, margins, and resolution. +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: Convert HTML to PDF in Java – set pdf page size and resolution +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: Convert HTML to PDF in Java – Set PDF Page Size, Resolution, and Save HTML - as PDF -url: /java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: Convert HTML to PDF in Java – set pdf page size and resolution --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Convert HTML to PDF in Java – Complete Guide with Custom Options +# Convert HTML to PDF in Java – set pdf page size and resolution -Ever wondered how to **convert HTML to PDF** in Java without fighting a maze of settings? You're not the only one. Many developers hit a wall when they need precise control over page size, margins, or output DPI while turning a web page into a printable document. +Ever wondered how to **convert HTML to PDF** in Java while also being able to **set pdf page size** and control DPI? You’re not alone. Many developers hit a wall when they need precise page dimensions, margins, or image resolution for printable PDFs such as invoices, reports, or e‑books. -The good news? With Aspose.HTML you can **save HTML as PDF** in just a few lines, and you get full access to options like *set PDF page size* and *set PDF resolution*. This tutorial walks you through the entire process, explains why each setting matters, and shows you a ready‑to‑run example. +The good news? With Aspose.HTML you can **save HTML as PDF** in just a few lines, and you get full access to options like *set pdf page size* and *set pdf resolution*. This tutorial walks you through the entire process, explains why each setting matters, and shows you a ready‑to‑run example. -By the end of this guide you’ll be able to take any local or remote HTML file and produce a high‑quality PDF that respects your layout requirements—perfect for invoices, reports, or e‑books. +By the end of this guide you’ll be able to take any local or remote HTML file and produce a high‑quality PDF that respects your layout requirements—perfect for **java generate invoice pdf** scenarios. --- ![Convert HTML to PDF with custom options](image.png "convert html to pdf example") +[Convert HTML to PDF with custom options](image.png "convert html to pdf example") + +## Quick answers +- **Can I change the page size?** Yes – use `PdfSaveOptions.setPageSize()` with predefined sizes or custom dimensions. +- **What DPI should I use for print?** 300 dpi gives crisp print quality; 72 dpi is enough for on‑screen PDFs. +- **Do I need extra fonts?** No – Aspose.HTML embeds standard fonts automatically; custom fonts work via `@font-face`. +- **Is a license required?** A free trial works for development; a commercial license is needed for production. +- **Which Java version is supported?** JDK 8 or newer (the library is compiled for Java 11 but runs on 8+). -## What You'll Learn +## What you’ll learn -- How to load an HTML file with a proper base URI so relative links resolve. -- How to **set PDF page size** (A4, Letter, custom dimensions) and margins. -- How to **set PDF resolution** (DPI) for crisp images and text. -- The exact code needed to **save HTML as PDF** using the Aspose.HTML Java library. +- How to load an HTML file with a proper base URI so relative links resolve. +- How to **set pdf page size** (A4, Letter, custom dimensions) and margins. +- How to **set pdf resolution** (DPI) for crisp images and text. +- The exact code needed to **save html as pdf** using the Aspose.HTML Java library. - Common pitfalls—like missing base URIs or oversized images—and how to avoid them. ### Prerequisites -- Java Development Kit (JDK) 8 or newer. -- Maven or Gradle to pull in `aspose-html` (the latest version at the time of writing is 23.10). -- A basic understanding of Java syntax. +- Java Development Kit (JDK) 8 or newer. +- Maven or Gradle to pull in `aspose-html` (the latest version at the time of writing is 23.10). +- A basic understanding of Java syntax. - An HTML file you want to convert (we’ll use `sample.html` in the examples). ---- - -## Convert HTML to PDF with Custom Options - -Below is the full, runnable program that demonstrates every step. Feel free to copy‑paste it into your IDE, adjust the paths, and hit Run. - -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; - -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); - - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); - - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) - - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); +## How to set pdf page size when converting HTML to PDF - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` - -### Why Each Step Matters +Load your HTML, configure `PdfSaveOptions`, and call `save`. The two‑step pattern below handles everything you need. -| Step | Purpose | Tips & Edge Cases | -|------|---------|-------------------| -| **1. Base URI** | Guarantees that `<img src="images/pic.png">` and other relative links point to the right folder. | If you skip this, images may disappear in the output PDF. Use `file:///` for local files, or an HTTP URL for remote resources. | -| **2. Load HTML** | Parses the HTML into Aspose’s DOM model. | Large HTML files (>10 MB) may need more memory; consider increasing the JVM heap (`-Xmx2g`). | -| **3. PDF Options** | Controls page dimensions (`set pdf page size`), margins, and DPI (`set pdf resolution`). | A4 is 210 × 297 mm; for Letter use `PdfPageSize.LETTER`. DPI of 300 is ideal for print; 72 works for screen‑only PDFs. | -| **4. Save** | Writes the final PDF to disk (`save html as pdf`). | The output path must be writable. Overwrite protection can be added with a file‑existence check. | -| **5. Confirmation** | Simple console feedback. | In real applications replace `System.out` with a logger. | - ---- +You set the page size by calling `pdfOptions.setPageSize(PdfPageSize.A4)` (or any other predefined constant) or by creating a custom `PdfPageSize` instance with width and height in points. The same options object also lets you set resolution with `pdfOptions.setResolution(300)`. This approach guarantees that the generated PDF matches the exact dimensions you require. -## Step‑by‑Step Breakdown +### Step‑by‑step breakdown -### 1. Set Up Your Project (HTML to PDF Java) +#### 1. Set up your project (html to pdf java) If you’re using Maven, add the Aspose.HTML dependency: @@ -121,9 +115,9 @@ Gradle users can add: implementation 'com.aspose:aspose-html:23.10' ``` -> **Pro tip:** The library is fully self‑contained; you don’t need any native binaries or extra fonts for basic conversions. +> **Pro tip:** The library is fully self‑contained; you don’t need any native binaries or extra fonts for basic conversions. Aspose.HTML supports conversion of HTML to PDF in over 50 scenarios and can process files up to 200 MB without external native binaries. -### 2. Define the Base URI +#### 2. Define the base URI Relative URLs are a common source of broken images. By pointing `loadOptions.setBaseUri` to the folder containing your HTML, you let the converter resolve paths exactly as a browser would. @@ -134,7 +128,7 @@ loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); If your HTML references external CSS or fonts hosted on a CDN, you can skip the base URI, but keep an eye on network latency. -### 3. Load the HTML Document +#### 3. Load the HTML document ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); @@ -146,9 +140,9 @@ You can also load from a URL: HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. Configure PDF Options – **Set PDF Page Size** & **Set PDF Resolution** +#### 4. Configure PDF options – **set pdf page size** & **set pdf resolution** -The `PdfSaveOptions` class gives you fine‑grained control. +`PdfSaveOptions` is Aspose.HTML's configuration object that controls PDF output properties such as page size, margins, and resolution. ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -158,10 +152,10 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **Page Size:** Choose from `PdfPageSize.A4`, `LETTER`, `LEGAL`, or create a custom `PdfPageSize` with width/height in points. -- **Resolution:** Higher DPI yields sharper raster images but increases file size. For most print jobs 300 DPI is a sweet spot. +- **Page size:** Choose from `PdfPageSize.A4`, `LETTER`, `LEGAL`, or create a custom `PdfPageSize` with width/height in points. A4 measures 210 × 297 mm; Letter measures 8.5 × 11 in. +- **Resolution:** Higher DPI yields sharper raster images but also increases file size; moving from 72 dpi to 300 dpi typically triples the PDF size while improving image sharpness by up to 4×. For most print jobs 300 dpi is a sweet spot. -### 5. Perform the Conversion – **Save HTML as PDF** +#### 5. Perform the conversion – **save html as pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); @@ -177,19 +171,17 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. Verify the Result +#### 6. Verify the result Open `sample_custom.pdf` in any PDF viewer. You should see: -- A4‑sized pages with 20 pt top/bottom margins. -- All images rendered at 300 DPI (notice the crispness). +- A4‑sized pages with 20 pt top/bottom margins. +- All images rendered at 300 dpi (notice the crispness). - Links and CSS applied exactly as in the original HTML. If something looks off, double‑check the base URI and ensure all external resources are reachable. ---- - -## Common Questions & Edge Cases +## Common questions & edge cases **Q: What if my HTML contains JavaScript?** A: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated content, pre‑render the HTML (e.g., with a headless browser) before feeding it to the converter. @@ -203,13 +195,11 @@ saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` **Q: My PDF is huge—what can I do?** -- Reduce the DPI (`setResolution(150)`). -- Compress images with `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. +- Reduce the DPI (`setResolution(150)`). +- Compress images with `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. - Remove unnecessary high‑resolution assets from the source HTML. ---- - -## Full Working Example (All‑In‑One) +## Full working example (all‑in‑one) Here’s the entire class ready to compile. Replace `YOUR_DIRECTORY` with an absolute path on your machine. @@ -242,26 +232,81 @@ public class ConvertWithOptions { } ``` -Run the program, open the generated PDF, and you’ll see the exact layout you defined. That’s **convert HTML to PDF** in Java, complete with custom sizing and resolution. - ---- +Run the program, open the generated PDF, and you’ll see the exact layout you defined. That’s **convert html to pdf** in Java, complete with custom sizing and resolution. -## Next Steps & Related Topics +## Next steps & related topics -- **Batch conversion:** Loop over a directory of HTML files and produce PDFs in one go. -- **Dynamic content:** Combine Aspose.HTML with a templating engine (e.g., Thymeleaf) to generate invoices on the fly. -- **Security hardening:** Validate input HTML to avoid malicious markup before conversion. +- **Batch conversion:** Loop over a directory of HTML files and produce PDFs in one go. +- **Dynamic content:** Combine Aspose.HTML with a templating engine (e.g., Thymeleaf) to generate invoices on the fly. +- **Security hardening:** Validate input HTML to avoid malicious markup before conversion. - **Alternative libraries:** Compare Aspose.HTML with OpenHTMLtoPDF or wkhtmltopdf for specific edge cases. Experiment with different page sizes (`PdfPageSize.LETTER`), orientations, or even custom dimensions if you’re preparing a booklet. The API is flexible enough to handle most *html to pdf java* scenarios you’ll encounter. +## Frequently asked questions + +**Q: Does Aspose.HTML support other output formats?** +A: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from HTML. + +**Q: Is there a limit on the number of pages?** +A: Aspose.HTML can create PDFs with thousands of pages; memory usage stays low because it streams pages to disk when needed. + +**Q: Can I add bookmarks or table of contents?** +A: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical outline in the HTML. + +**Q: How do I handle large images efficiently?** +A: Set `pdfOptions.setResolution(150)` and enable image down‑sampling via `pdfOptions.setImageDownsampleThreshold(150)`. + +**Q: Is the library compatible with Java 17?** +A: Absolutely – the library is compiled for Java 11 but runs on any later JDK, including Java 17 and Java 21. + +--- + --- -## Conclusion +**Last Updated:** 2026-09-03 +**Tested with:** Aspose.HTML 23.10 for Java +**Author:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## Related Tutorials + +- [How to Convert HTML to PDF Java - Set Page Margins with Aspose.HTML](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [Adjust PDF Page Size with Aspose.HTML for Java](/html/java/advanced-usage/adjust-pdf-page-size/) +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/java/conversion-html-to-other-formats/convert-html-to-pdf/) -We’ve covered everything you need to **convert HTML to PDF** in Java while **set PDF page size**, **set PDF resolution**, and **save HTML as PDF** using Aspose.HTML. The step‑by‑step guide, complete code, and troubleshooting {{< /blocks/products/pf/tutorial-page-section >}} + {{< /blocks/products/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/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/og-image.png b/html/english/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..5183ac40e05e0057ab7d8b45f92941cc91947b94 GIT binary patch literal 49396 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 PKc}Lou23rfBKUs+&rH1l literal 0 HcmV?d00001 diff --git a/html/french/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/french/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index 76f81fefdd..d3be338da9 100644 --- a/html/french/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/french/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,110 +1,104 @@ --- category: general -date: 2026-01-06 -description: Convertir du HTML en PDF en Java avec une taille de page personnalisée, - des marges et une résolution. Apprenez comment définir la taille de page du PDF - et enregistrer le HTML en PDF en utilisant Aspose.HTML. +date: 2026-09-03 +description: Convertir HTML en PDF en Java avec une page size personnalisée, des margins + et une resolution. Apprenez comment set pdf page size et save html as pdf using + Aspose.HTML. draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: fr -og_description: Convertissez rapidement du HTML en PDF avec Java. Ce guide montre - comment définir la taille de la page PDF, ajuster la résolution et enregistrer le - HTML en PDF avec Aspose.HTML. -og_title: Convertir HTML en PDF en Java – Définir la taille et la résolution de la - page PDF +lastmod: 2026-09-03 +og_description: Définissez pdf page size et convertissez HTML en PDF en Java rapidement + avec Aspose.HTML. Apprenez comment personnaliser page size, margins et resolution. +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: Convertir HTML en PDF en Java – set pdf page size and resolution +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: Convertir HTML en PDF en Java – Définir la taille de page PDF, la résolution - et enregistrer HTML en PDF -url: /fr/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: Convertir HTML en PDF en Java – set pdf page size and resolution --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Convertir HTML en PDF en Java – Guide complet avec options personnalisées +# Convertir HTML en PDF en Java – définir la taille de page pdf et la résolution -Vous vous êtes déjà demandé comment **convertir HTML en PDF** en Java sans vous perdre dans un labyrinthe de paramètres ? Vous n'êtes pas le seul. De nombreux développeurs se heurtent à un mur lorsqu'ils ont besoin d'un contrôle précis sur la taille de la page, les marges ou le DPI de sortie tout en transformant une page Web en document imprimable. +Vous vous êtes déjà demandé comment **convertir HTML en PDF** en Java tout en pouvant **définir la taille de page pdf** et contrôler le DPI ? Vous n'êtes pas seul. De nombreux développeurs se heurtent à un mur lorsqu'ils ont besoin de dimensions de page précises, de marges ou de résolution d'image pour des PDF imprimables tels que des factures, des rapports ou des livres électroniques. -Bonne nouvelle ? Avec Aspose.HTML, vous pouvez **enregistrer HTML en PDF** en quelques lignes seulement, et vous avez un accès complet aux options telles que *set PDF page size* et *set PDF resolution*. Ce tutoriel vous guide à travers le processus complet, explique pourquoi chaque paramètre est important, et vous montre un exemple prêt à l'exécution. +Bonne nouvelle ? Avec Aspose.HTML, vous pouvez **enregistrer HTML en PDF** en quelques lignes seulement, et vous avez un accès complet aux options telles que *set pdf page size* et *set pdf resolution*. Ce tutoriel vous guide à travers le processus complet, explique pourquoi chaque paramètre est important, et vous montre un exemple prêt à l'exécution. -À la fin de ce guide, vous serez capable de prendre n'importe quel fichier HTML local ou distant et de produire un PDF de haute qualité qui respecte vos exigences de mise en page — parfait pour les factures, les rapports ou les livres numériques. +À la fin de ce guide, vous pourrez prendre n'importe quel fichier HTML local ou distant et produire un PDF de haute qualité qui respecte vos exigences de mise en page — parfait pour les scénarios **java generate invoice pdf**. --- ![Convert HTML to PDF with custom options](image.png "convert html to pdf example") +[Convert HTML to PDF with custom options](image.png "convert html to pdf example") + +## Réponses rapides +- **Puis-je changer la taille de la page ?** Yes – use `PdfSaveOptions.setPageSize()` with predefined sizes or custom dimensions. +- **Quel DPI devrais‑je utiliser pour l'impression ?** 300 dpi gives crisp print quality; 72 dpi is enough for on‑screen PDFs. +- **Ai‑je besoin de polices supplémentaires ?** No – Aspose.HTML embeds standard fonts automatically; custom fonts work via `@font-face`. +- **Une licence est‑elle requise ?** A free trial works for development; a commercial license is needed for production. +- **Quelle version de Java est prise en charge ?** JDK 8 or newer (the library is compiled for Java 11 but runs on 8+). -## Ce que vous allez apprendre +## Ce que vous apprendrez -- Comment charger un fichier HTML avec une base URI appropriée afin que les liens relatifs soient résolus. -- Comment **set PDF page size** (A4, Letter, dimensions personnalisées) et les marges. -- Comment **set PDF resolution** (DPI) pour des images et du texte nets. -- Le code exact nécessaire pour **save HTML as PDF** en utilisant la bibliothèque Aspose.HTML Java. -- Les pièges courants — comme les bases URI manquantes ou les images surdimensionnées — et comment les éviter. +- Comment charger un fichier HTML avec une URI de base appropriée afin que les liens relatifs soient résolus. +- Comment **set pdf page size** (A4, Letter, dimensions personnalisées) et les marges. +- Comment **set pdf resolution** (DPI) pour des images et du texte nets. +- Le code exact nécessaire pour **save html as pdf** en utilisant la bibliothèque Aspose.HTML pour Java. +- Pièges courants — comme les URI de base manquantes ou les images surdimensionnées — et comment les éviter. ### Prérequis -- Java Development Kit (JDK) 8 ou plus récent. -- Maven ou Gradle pour récupérer `aspose-html` (la dernière version au moment de la rédaction est 23.10). -- Une compréhension de base de la syntaxe Java. +- Java Development Kit (JDK) 8 ou plus récent. +- Maven ou Gradle pour récupérer `aspose-html` (la dernière version au moment de la rédaction est 23.10). +- Une compréhension de base de la syntaxe Java. - Un fichier HTML que vous souhaitez convertir (nous utiliserons `sample.html` dans les exemples). -## Convertir HTML en PDF avec options personnalisées +## Comment définir la taille de page pdf lors de la conversion d'HTML en PDF -Ci-dessous se trouve le programme complet et exécutable qui montre chaque étape. N'hésitez pas à le copier‑coller dans votre IDE, à ajuster les chemins, et à lancer l'exécution. +Chargez votre HTML, configurez `PdfSaveOptions`, et appelez `save`. Le modèle en deux étapes ci-dessous gère tout ce dont vous avez besoin. -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; +Vous définissez la taille de la page en appelant `pdfOptions.setPageSize(PdfPageSize.A4)` (ou toute autre constante prédéfinie) ou en créant une instance personnalisée de `PdfPageSize` avec largeur et hauteur en points. Le même objet d'options vous permet également de définir la résolution avec `pdfOptions.setResolution(300)`. Cette approche garantit que le PDF généré correspond exactement aux dimensions requises. -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); +### Décomposition étape par étape - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); +#### 1. Configurez votre projet (html to pdf java) - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) - - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); - - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` - -### Pourquoi chaque étape est importante - -| Étape | Objectif | Conseils & cas limites | -|------|----------|------------------------| -| **1. Base URI** | Garantit que `<img src="images/pic.png">` et les autres liens relatifs pointent vers le bon dossier. | Si vous omettez cela, les images peuvent disparaître dans le PDF de sortie. Utilisez `file:///` pour les fichiers locaux, ou une URL HTTP pour les ressources distantes. | -| **2. Load HTML** | Analyse le HTML dans le modèle DOM d'Aspose. | Les gros fichiers HTML (>10 Mo) peuvent nécessiter plus de mémoire ; envisagez d'augmenter le tas JVM (`-Xmx2g`). | -| **3. PDF Options** | Contrôle les dimensions de la page (`set pdf page size`), les marges et le DPI (`set pdf resolution`). | A4 fait 210 × 297 mm ; pour Letter utilisez `PdfPageSize.LETTER`. Un DPI de 300 est idéal pour l'impression ; 72 convient aux PDF uniquement écran. | -| **4. Save** | Écrit le PDF final sur le disque (`save html as pdf`). | Le chemin de sortie doit être accessible en écriture. Une protection contre l'écrasement peut être ajoutée avec une vérification de l'existence du fichier. | -| **5. Confirmation** | Retour simple sur la console. | Dans les applications réelles, remplacez `System.out` par un logger. | - -## Décomposition étape par étape - -### 1. Configurer votre projet (HTML to PDF Java) - -Si vous utilisez Maven, ajoutez la dépendance Aspose.HTML : +If you’re using Maven, add the Aspose.HTML dependency: ```xml <dependency> @@ -114,40 +108,40 @@ Si vous utilisez Maven, ajoutez la dépendance Aspose.HTML : </dependency> ``` -Les utilisateurs de Gradle peuvent ajouter : +Gradle users can add: ```gradle implementation 'com.aspose:aspose-html:23.10' ``` -> **Astuce pro :** La bibliothèque est entièrement autonome ; vous n'avez besoin d'aucun binaire natif ou de polices supplémentaires pour les conversions de base. +> **Pro tip:** The library is fully self‑contained; you don’t need any native binaries or extra fonts for basic conversions. Aspose.HTML supports conversion of HTML to PDF in over 50 scenarios and can process files up to 200 MB without external native binaries. -### 2. Définir la base URI +#### 2. Définissez l'URI de base -Les URL relatives sont une source fréquente d'images cassées. En pointant `loadOptions.setBaseUri` vers le dossier contenant votre HTML, vous permettez au convertisseur de résoudre les chemins exactement comme le ferait un navigateur. +Relative URLs are a common source of broken images. By pointing `loadOptions.setBaseUri` to the folder containing your HTML, you let the converter resolve paths exactly as a browser would. ```java HtmlLoadOptions loadOptions = new HtmlLoadOptions(); loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); ``` -Si votre HTML référence des CSS ou des polices externes hébergées sur un CDN, vous pouvez ignorer la base URI, mais surveillez la latence réseau. +If your HTML references external CSS or fonts hosted on a CDN, you can skip the base URI, but keep an eye on network latency. -### 3. Charger le document HTML +#### 3. Chargez le document HTML ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); ``` -Vous pouvez également charger depuis une URL : +You can also load from a URL: ```java HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. Configurer les options PDF – **Set PDF Page Size** & **Set PDF Resolution** +#### 4. Configurez les options PDF – **set pdf page size** & **set pdf resolution** -La classe `PdfSaveOptions` vous offre un contrôle granulaire. +`PdfSaveOptions` is Aspose.HTML's configuration object that controls PDF output properties such as page size, margins, and resolution. ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -157,16 +151,16 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **Page Size :** Choisissez parmi `PdfPageSize.A4`, `LETTER`, `LEGAL`, ou créez un `PdfPageSize` personnalisé avec largeur/hauteur en points. -- **Resolution :** Un DPI plus élevé donne des images raster plus nettes mais augmente la taille du fichier. Pour la plupart des travaux d'impression, 300 DPI est un bon compromis. +- **Page size:** Choose from `PdfPageSize.A4`, `LETTER`, `LEGAL`, or create a custom `PdfPageSize` with width/height in points. A4 measures 210 × 297 mm; Letter measures 8.5 × 11 in. +- **Resolution:** Higher DPI yields sharper raster images but also increases file size; moving from 72 dpi to 300 dpi typically triples the PDF size while improving image sharpness by up to 4×. For most print jobs 300 dpi is a sweet spot. -### 5. Effectuer la conversion – **Save HTML as PDF** +#### 5. Effectuez la conversion – **save html as pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); ``` -La méthode diffuse automatiquement le PDF vers l'emplacement cible. Si vous avez besoin du PDF en mémoire (par ex., pour l'envoyer en pièce jointe d'email), utilisez la surcharge `OutputStream` : +The method automatically streams the PDF to the target location. If you need the PDF in memory (e.g., to send as an email attachment), use an `OutputStream` overload: ```java try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { @@ -176,37 +170,37 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. Vérifier le résultat +#### 6. Vérifiez le résultat -Ouvrez `sample_custom.pdf` dans n'importe quel lecteur PDF. Vous devriez voir : +Open `sample_custom.pdf` in any PDF viewer. You should see: -- Pages au format A4 avec des marges supérieures/inferieures de 20 pt. -- Toutes les images rendues à 300 DPI (remarquez la netteté). +- Pages au format A4 avec des marges supérieures/inferieures de 20 pt. +- Toutes les images rendues à 300 dpi (remarquez la netteté). - Liens et CSS appliqués exactement comme dans le HTML original. -Si quelque chose semble incorrect, revérifiez la base URI et assurez-vous que toutes les ressources externes sont accessibles. +If something looks off, double‑check the base URI and ensure all external resources are reachable. -## Questions fréquentes & cas limites +## Questions courantes & cas limites -**Q : Et si mon HTML contient du JavaScript ?** -R : Aspose.HTML n'exécute *pas* le JavaScript. Si votre page dépend d'un contenu généré par script, pré‑rendez le HTML (par ex., avec un navigateur sans tête) avant de le fournir au convertisseur. +**Q : Que se passe‑t‑il si mon HTML contient du JavaScript ?** +A : Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated content, pre‑render the HTML (e.g., with a headless browser) before feeding it to the converter. -**Q : Puis-je intégrer des polices personnalisées ?** -R : Oui. Placez les fichiers `.ttf` ou `.otf` dans le même dossier et référencez‑les via `@font-face` dans votre CSS. La base URI rendra les polices détectables. +**Q : Puis‑je intégrer des polices personnalisées ?** +A : Yes. Place the `.ttf` or `.otf` files in the same folder and reference them via `@font-face` in your CSS. The base URI will make the fonts discoverable. **Q : Comment changer l'orientation en paysage ?** ```java saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` -**Q : Mon PDF est volumineux — que puis‑je faire ?** -- Réduire le DPI (`setResolution(150)`). -- Compresser les images avec `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. -- Supprimer les ressources haute résolution inutiles du HTML source. +**Q : Mon PDF est énorme — que puis‑je faire ?** +- Reduce the DPI (`setResolution(150)`). +- Compress images with `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. +- Remove unnecessary high‑resolution assets from the source HTML. ## Exemple complet fonctionnel (tout‑en‑un) -Voici la classe complète prête à être compilée. Remplacez `YOUR_DIRECTORY` par un chemin absolu sur votre machine. +Here’s the entire class ready to compile. Replace `YOUR_DIRECTORY` with an absolute path on your machine. ```java import com.aspose.html.converters.*; @@ -237,22 +231,79 @@ public class ConvertWithOptions { } ``` -Exécutez le programme, ouvrez le PDF généré, et vous verrez la mise en page exacte que vous avez définie. C’est **convert HTML to PDF** en Java, complet avec des tailles et résolutions personnalisées. +Run the program, open the generated PDF, and you’ll see the exact layout you defined. That’s **convert html to pdf** in Java, complete with custom sizing and resolution. + +## Prochaines étapes & sujets liés + +- **Conversion par lots :** Loop over a directory of HTML files and produce PDFs in one go. +- **Contenu dynamique :** Combine Aspose.HTML with a templating engine (e.g., Thymeleaf) to generate invoices on the fly. +- **Renforcement de la sécurité :** Validate input HTML to avoid malicious markup before conversion. +- **Bibliothèques alternatives :** Compare Aspose.HTML with OpenHTMLtoPDF or wkhtmltopdf for specific edge cases. + +Experiment with different page sizes (`PdfPageSize.LETTER`), orientations, or even custom dimensions if you’re preparing a booklet. The API is flexible enough to handle most *html to pdf java* scenarios you’ll encounter. + +## Questions fréquemment posées -## Prochaines étapes & sujets associés +**Q : Aspose.HTML prend‑il en charge d'autres formats de sortie ?** +A : Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from HTML. -- **Batch conversion :** Parcourir un répertoire de fichiers HTML et produire des PDF en une seule passe. -- **Dynamic content :** Combiner Aspose.HTML avec un moteur de templates (par ex., Thymeleaf) pour générer des factures à la volée. -- **Security hardening :** Valider le HTML d'entrée afin d'éviter les balises malveillantes avant la conversion. -- **Alternative libraries :** Comparer Aspose.HTML avec OpenHTMLtoPDF ou wkhtmltopdf pour des cas limites spécifiques. +**Q : Existe‑t‑il une limite au nombre de pages ?** +A : Aspose.HTML can create PDFs with thousands of pages; memory usage stays low because it streams pages to disk when needed. -Expérimentez avec différentes tailles de page (`PdfPageSize.LETTER`), orientations, ou même des dimensions personnalisées si vous préparez un livret. L'API est suffisamment flexible pour gérer la plupart des scénarios *html to pdf java* que vous rencontrerez. +**Q : Puis‑je ajouter des signets ou une table des matières ?** +A : Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical outline in the HTML. -## Conclusion +**Q : Comment gérer efficacement les images volumineuses ?** +A : Set `pdfOptions.setResolution(150)` and enable image down‑sampling via `pdfOptions.setImageDownsampleThreshold(150)`. + +**Q : La bibliothèque est‑elle compatible avec Java 17 ?** +A : Absolutely – the library is compiled for Java 11 but runs on any later JDK, including Java 17 and Java 21. + +--- + +**Dernière mise à jour :** 2026-09-03 +**Testé avec :** Aspose.HTML 23.10 for Java +**Auteur :** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## Tutoriels associés + +- [Comment convertir HTML en PDF Java - Définir les marges de page avec Aspose.HTML](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [Ajuster la taille de page PDF avec Aspose.HTML pour Java](/html/java/advanced-usage/adjust-pdf-page-size/) +- [Comment convertir HTML en PDF Java – Utiliser Aspose.HTML pour Java](/html/java/conversion-html-to-other-formats/convert-html-to-pdf/) -Nous avons couvert tout ce dont vous avez besoin pour **convert HTML to PDF** en Java tout en **set PDF page size**, **set PDF resolution**, et **save HTML as PDF** en utilisant Aspose.HTML. Le guide étape par étape, le code complet, et le dépannage {{< /blocks/products/pf/tutorial-page-section >}} + {{< /blocks/products/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/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/german/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index ac34e695df..6af6a0408b 100644 --- a/html/german/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/german/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,111 +1,102 @@ --- category: general -date: 2026-01-06 -description: HTML in PDF in Java mit benutzerdefinierter Seitengröße, Rändern und - Auflösung konvertieren. Erfahren Sie, wie Sie die PDF‑Seitengröße festlegen und - HTML als PDF mit Aspose.HTML speichern. +date: 2026-09-03 +description: HTML in PDF mit Java konvertieren mit benutzerdefiniertem page size, + margins und resolution. Erfahren Sie, wie Sie pdf page size festlegen und html als + pdf mit Aspose.HTML speichern. draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: de -og_description: HTML schnell in PDF mit Java konvertieren. Dieser Leitfaden zeigt, - wie man die PDF‑Seitengröße festlegt, die Auflösung anpasst und HTML mit Aspose.HTML - als PDF speichert. -og_title: HTML in PDF konvertieren in Java – PDF‑Seitengröße und Auflösung festlegen +lastmod: 2026-09-03 +og_description: pdf page size festlegen und HTML in PDF mit Java schnell mit Aspose.HTML + konvertieren. Erfahren Sie, wie Sie page size, margins und resolution anpassen. +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: HTML in PDF mit Java – pdf page size und resolution festlegen +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: HTML in PDF in Java konvertieren – PDF‑Seitengröße, Auflösung festlegen und - HTML als PDF speichern -url: /de/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: HTML in PDF mit Java – pdf page size und resolution festlegen --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# HTML in PDF mit Java konvertieren – Vollständiger Leitfaden mit benutzerdefinierten Optionen +# HTML in PDF konvertieren in Java – PDF‑Seitengröße und Auflösung festlegen -Haben Sie sich jemals gefragt, wie man **HTML in PDF** in Java konvertiert, ohne sich durch ein Labyrinth von Einstellungen kämpfen zu müssen? Sie sind nicht allein. Viele Entwickler stoßen an Grenzen, wenn sie präzise Kontrolle über Seitengröße, Ränder oder AusgabedPI benötigen, während sie eine Webseite in ein druckbares Dokument umwandeln. +Haben Sie sich jemals gefragt, wie man **HTML in PDF** in Java konvertiert und dabei **die PDF‑Seitengröße** festlegen sowie die DPI steuern kann? Sie sind nicht allein. Viele Entwickler stoßen auf Probleme, wenn sie präzise Seitenabmessungen, Ränder oder Bildauflösungen für druckbare PDFs wie Rechnungen, Berichte oder E‑Books benötigen. -Die gute Nachricht? Mit Aspose.HTML können Sie **HTML als PDF speichern** in nur wenigen Zeilen, und Sie erhalten vollen Zugriff auf Optionen wie *set PDF page size* und *set PDF resolution*. Dieses Tutorial führt Sie durch den gesamten Prozess, erklärt, warum jede Einstellung wichtig ist, und zeigt Ihnen ein sofort ausführbares Beispiel. +Die gute Nachricht? Mit Aspose.HTML können Sie **HTML als PDF speichern** in nur wenigen Zeilen, und Sie erhalten vollen Zugriff auf Optionen wie *set pdf page size* und *set pdf resolution*. Dieses Tutorial führt Sie durch den gesamten Prozess, erklärt, warum jede Einstellung wichtig ist, und zeigt Ihnen ein sofort ausführbares Beispiel. -Am Ende dieses Leitfadens können Sie jede lokale oder entfernte HTML‑Datei nehmen und ein hochwertiges PDF erzeugen, das Ihre Layout‑Anforderungen erfüllt – ideal für Rechnungen, Berichte oder E‑Books. +Am Ende dieses Leitfadens können Sie jede lokale oder entfernte HTML‑Datei nehmen und ein hochwertiges PDF erzeugen, das Ihre Layout‑Anforderungen erfüllt – perfekt für **java generate invoice pdf**‑Szenarien. --- -![HTML in PDF mit benutzerdefinierten Optionen konvertieren](image.png "Beispiel für HTML-zu-PDF-Konvertierung") +![HTML zu PDF konvertieren mit benutzerdefinierten Optionen](image.png "Beispiel für HTML zu PDF konvertieren") +[HTML zu PDF konvertieren mit benutzerdefinierten Optionen](image.png "Beispiel für HTML zu PDF konvertieren") + +## Schnelle Antworten +- **Kann ich die Seitengröße ändern?** Ja – verwenden Sie `PdfSaveOptions.setPageSize()` mit vordefinierten Größen oder benutzerdefinierten Abmessungen. +- **Welche DPI sollte ich für den Druck verwenden?** 300 dpi liefert scharfe Druckqualität; 72 dpi reichen für PDFs auf dem Bildschirm aus. +- **Brauche ich zusätzliche Schriften?** Nein – Aspose.HTML bettet Standard‑Schriften automatisch ein; benutzerdefinierte Schriften funktionieren über `@font-face`. +- **Ist eine Lizenz erforderlich?** Eine kostenlose Testversion funktioniert für die Entwicklung; für die Produktion ist eine kommerzielle Lizenz nötig. +- **Welche Java‑Version wird unterstützt?** JDK 8 oder neuer (die Bibliothek ist für Java 11 kompiliert, läuft aber auf 8+). ## Was Sie lernen werden -- Wie man eine HTML‑Datei mit einer korrekten Basis‑URI lädt, sodass relative Links aufgelöst werden. -- Wie man **PDF-Seitengröße** (A4, Letter, benutzerdefinierte Abmessungen) und Ränder **setzt**. -- Wie man **PDF-Auflösung** (DPI) für scharfe Bilder und Text **setzt**. -- Den genauen Code, der **HTML als PDF speichert** mit der Aspose.HTML Java‑Bibliothek. +- Wie man eine HTML‑Datei mit einer korrekten Basis‑URI lädt, sodass relative Links aufgelöst werden. +- Wie man **set pdf page size** (A4, Letter, benutzerdefinierte Abmessungen) und Ränder festlegt. +- Wie man **set pdf resolution** (DPI) für scharfe Bilder und Text einstellt. +- Den genauen Code, der **save html as pdf** mit der Aspose.HTML‑Java‑Bibliothek ermöglicht. - Häufige Stolperfallen – wie fehlende Basis‑URIs oder zu große Bilder – und wie man sie vermeidet. ### Voraussetzungen -- Java Development Kit (JDK) 8 oder neuer. -- Maven oder Gradle, um `aspose-html` einzubinden (die neueste Version zum Zeitpunkt des Schreibens ist 23.10). -- Grundlegendes Verständnis von Java‑Syntax. +- Java Development Kit (JDK) 8 oder neuer. +- Maven oder Gradle, um `aspose-html` einzubinden (die aktuelle Version zum Zeitpunkt des Schreibens ist 23.10). +- Grundlegendes Verständnis von Java‑Syntax. - Eine HTML‑Datei, die Sie konvertieren möchten (wir verwenden `sample.html` in den Beispielen). ---- - -## HTML in PDF mit benutzerdefinierten Optionen konvertieren - -Im Folgenden finden Sie das vollständige, ausführbare Programm, das jeden Schritt demonstriert. Kopieren Sie es einfach in Ihre IDE, passen Sie die Pfade an und führen Sie es aus. - -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; - -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); - - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); - - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) - - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); +## Wie man die PDF‑Seitengröße beim Konvertieren von HTML zu PDF festlegt - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` - -### Warum jeder Schritt wichtig ist +Laden Sie Ihr HTML, konfigurieren Sie `PdfSaveOptions` und rufen Sie `save` auf. Das nachfolgende Zwei‑Schritt‑Muster übernimmt alles, was Sie benötigen. -| Schritt | Zweck | Tipps & Sonderfälle | -|---------|-------|----------------------| -| **1. Basis-URI** | Stellt sicher, dass `<img src="images/pic.png">` und andere relative Links auf den richtigen Ordner verweisen. | Wenn Sie das überspringen, können Bilder im PDF fehlen. Verwenden Sie `file:///` für lokale Dateien oder eine HTTP‑URL für entfernte Ressourcen. | -| **2. HTML laden** | Parsed das HTML in Asposes DOM‑Modell. | Sehr große HTML‑Dateien (>10 MB) benötigen mehr Speicher; erwägen Sie, den JVM‑Heap zu erhöhen (`-Xmx2g`). | -| **3. PDF‑Optionen** | Steuert Seitengröße (`set pdf page size`), Ränder und DPI (`set pdf resolution`). | A4 ist 210 × 297 mm; für Letter verwenden Sie `PdfPageSize.LETTER`. 300 DPI sind ideal für Druck; 72 reicht für reine Bildschirm‑PDFs. | -| **4. Speichern** | Schreibt das finale PDF auf die Festplatte (`save html as pdf`). | Der Ausgabepfad muss beschreibbar sein. Ein Überschreibschutz kann mit einer Existenz‑Prüfung hinzugefügt werden. | -| **5. Bestätigung** | Einfaches Konsolen‑Feedback. | In echten Anwendungen ersetzen Sie `System.out` durch einen Logger. | - ---- +Sie setzen die Seitengröße, indem Sie `pdfOptions.setPageSize(PdfPageSize.A4)` aufrufen (oder eine andere vordefinierte Konstante) oder indem Sie eine benutzerdefinierte `PdfPageSize`‑Instanz mit Breite und Höhe in Punkten erstellen. Das gleiche Options‑Objekt lässt Sie außerdem die Auflösung mit `pdfOptions.setResolution(300)` festlegen. Dieser Ansatz garantiert, dass das erzeugte PDF exakt die von Ihnen gewünschten Abmessungen hat. -## Schritt‑für‑Schritt‑Aufschlüsselung +### Schritt‑für‑Schritt‑Aufschlüsselung -### 1. Projekt einrichten (HTML zu PDF Java) +#### 1. Projekt einrichten (html to pdf java) Wenn Sie Maven verwenden, fügen Sie die Aspose.HTML‑Abhängigkeit hinzu: @@ -123,20 +114,20 @@ Gradle‑Nutzer können hinzufügen: implementation 'com.aspose:aspose-html:23.10' ``` -> **Pro‑Tipp:** Die Bibliothek ist vollständig eigenständig; Sie benötigen keine nativen Binaries oder zusätzlichen Schriften für grundlegende Konvertierungen. +> **Pro‑Tipp:** Die Bibliothek ist vollständig eigenständig; Sie benötigen keine nativen Binärdateien oder zusätzliche Schriften für grundlegende Konvertierungen. Aspose.HTML unterstützt die Konvertierung von HTML zu PDF in über 50 Szenarien und kann Dateien bis zu 200 MB ohne externe native Binärdateien verarbeiten. -### 2. Basis-URI festlegen +#### 2. Basis‑URI festlegen -Relative URLs sind eine häufige Ursache für fehlende Bilder. Indem Sie `loadOptions.setBaseUri` auf den Ordner zeigen lassen, der Ihre HTML‑Datei enthält, ermöglichen Sie dem Konverter, Pfade exakt wie ein Browser aufzulösen. +Relative URLs sind eine häufige Ursache für kaputte Bilder. Indem Sie `loadOptions.setBaseUri` auf den Ordner zeigen lassen, der Ihr HTML enthält, ermöglichen Sie dem Konverter, Pfade exakt wie ein Browser aufzulösen. ```java HtmlLoadOptions loadOptions = new HtmlLoadOptions(); loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); ``` -Wenn Ihr HTML externe CSS‑ oder Schriftdateien von einem CDN referenziert, können Sie die Basis‑URI weglassen, sollten aber die Netzwerklatenz im Auge behalten. +Falls Ihr HTML externe CSS‑ oder Schriftdateien von einem CDN referenziert, können Sie die Basis‑URI überspringen, sollten aber die Netzwerklatenz im Auge behalten. -### 3. HTML‑Dokument laden +#### 3. HTML‑Dokument laden ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); @@ -148,9 +139,9 @@ Sie können auch von einer URL laden: HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. PDF‑Optionen konfigurieren – **Set PDF Page Size** & **Set PDF Resolution** +#### 4. PDF‑Optionen konfigurieren – **set pdf page size** & **set pdf resolution** -Die Klasse `PdfSaveOptions` bietet feinkörnige Kontrolle. +`PdfSaveOptions` ist das Konfigurationsobjekt von Aspose.HTML, das PDF‑Ausgabe‑Eigenschaften wie Seitengröße, Ränder und Auflösung steuert. ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -160,16 +151,16 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **Seitengröße:** Wählen Sie aus `PdfPageSize.A4`, `LETTER`, `LEGAL` oder erstellen Sie eine benutzerdefinierte `PdfPageSize` mit Breite/Höhe in Punkten. -- **Auflösung:** Höhere DPI ergeben schärfere Rasterbilder, erhöhen aber die Dateigröße. Für die meisten Druckaufträge ist 300 DPI ein guter Kompromiss. +- **Page size:** Wählen Sie aus `PdfPageSize.A4`, `LETTER`, `LEGAL` oder erstellen Sie ein benutzerdefiniertes `PdfPageSize` mit Breite/Höhe in Punkten. A4 misst 210 × 297 mm; Letter misst 8,5 × 11 in. +- **Resolution:** Höhere DPI liefert schärfere Rasterbilder, erhöht aber auch die Dateigröße; ein Wechsel von 72 dpi zu 300 dpi verdreifacht typischerweise die PDF‑Größe, verbessert die Bildschärfe jedoch bis zu 4‑fach. Für die meisten Druckaufträge ist 300 dpi ein guter Kompromiss. -### 5. Konvertierung ausführen – **Save HTML as PDF** +#### 5. Konvertierung durchführen – **save html as pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); ``` -Die Methode streamt das PDF automatisch zum Zielort. Wenn Sie das PDF im Speicher benötigen (z. B. zum Versenden als E‑Mail‑Anhang), verwenden Sie die Überladung mit `OutputStream`: +Die Methode streamt das PDF automatisch an den Zielort. Wenn Sie das PDF im Speicher benötigen (z. B. zum Versenden als E‑Mail‑Anhang), verwenden Sie die Überladung mit `OutputStream`: ```java try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { @@ -179,41 +170,37 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. Ergebnis überprüfen +#### 6. Ergebnis überprüfen Öffnen Sie `sample_custom.pdf` in einem beliebigen PDF‑Betrachter. Sie sollten sehen: -- A4‑große Seiten mit 20 pt oberen/unteren Rändern. -- Alle Bilder mit 300 DPI (Achten Sie auf die Schärfe). +- A4‑große Seiten mit 20 pt oberen/unteren Rändern. +- Alle Bilder mit 300 dpi gerendert (beachten Sie die Schärfe). - Links und CSS exakt wie im ursprünglichen HTML angewendet. Falls etwas nicht stimmt, prüfen Sie die Basis‑URI und stellen Sie sicher, dass alle externen Ressourcen erreichbar sind. ---- - -## Häufige Fragen & Sonderfälle +## Häufige Fragen & Randfälle -**Q: Was, wenn mein HTML JavaScript enthält?** -A: Aspose.HTML führt **kein** JavaScript aus. Wenn Ihre Seite auf skriptgenerierten Inhalt angewiesen ist, rendern Sie das HTML zuerst (z. B. mit einem headless Browser), bevor Sie es dem Konverter übergeben. +**F: Was passiert, wenn mein HTML JavaScript enthält?** +A: Aspose.HTML führt **kein** JavaScript aus. Wenn Ihre Seite auf skriptgenerierten Inhalt angewiesen ist, rendern Sie das HTML vorher (z. B. mit einem headless Browser), bevor Sie es dem Konverter übergeben. -**Q: Kann ich benutzerdefinierte Schriftarten einbetten?** -A: Ja. Platzieren Sie die `.ttf`‑ oder `.otf`‑Dateien im selben Ordner und referenzieren Sie sie via `@font-face` in Ihrem CSS. Die Basis‑URI sorgt dafür, dass die Schriften gefunden werden. +**F: Kann ich benutzerdefinierte Schriften einbetten?** +A: Ja. Legen Sie die `.ttf`‑ oder `.otf`‑Dateien in denselben Ordner und referenzieren Sie sie via `@font-face` in Ihrem CSS. Die Basis‑URI macht die Schriften auffindbar. -**Q: Wie ändere ich die Ausrichtung auf Querformat?** +**F: Wie ändere ich die Ausrichtung zu Landscape?** ```java saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` -**Q: Mein PDF ist riesig – was kann ich tun?** -- DPI reduzieren (`setResolution(150)`). -- Bilder komprimieren mit `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. +**F: Mein PDF ist riesig – was kann ich tun?** +- DPI reduzieren (`setResolution(150)`). +- Bilder komprimieren mit `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. - Unnötige hochauflösende Assets aus dem Quell‑HTML entfernen. ---- +## Vollständiges funktionierendes Beispiel (alles‑in‑einem) -## Vollständiges funktionierendes Beispiel (Alles‑in‑Einem) - -Hier ist die gesamte Klasse, bereit zum Kompilieren. Ersetzen Sie `YOUR_DIRECTORY` durch einen absoluten Pfad auf Ihrem Rechner. +Hier ist die gesamte Klasse, fertig zum Kompilieren. Ersetzen Sie `YOUR_DIRECTORY` durch einen absoluten Pfad auf Ihrem Rechner. ```java import com.aspose.html.converters.*; @@ -244,26 +231,81 @@ public class ConvertWithOptions { } ``` -Führen Sie das Programm aus, öffnen Sie das erzeugte PDF, und Sie sehen das exakt definierte Layout. Das ist **HTML in PDF konvertieren** in Java, komplett mit benutzerdefinierter Größe und Auflösung. - ---- +Führen Sie das Programm aus, öffnen Sie das erzeugte PDF, und Sie sehen das exakt definierte Layout. Das ist **convert html to pdf** in Java, komplett mit benutzerdefinierter Größe und Auflösung. ## Nächste Schritte & verwandte Themen -- **Batch‑Konvertierung:** Durchlaufen Sie ein Verzeichnis mit HTML‑Dateien und erzeugen Sie PDFs in einem Durchlauf. -- **Dynamischer Inhalt:** Kombinieren Sie Aspose.HTML mit einer Template‑Engine (z. B. Thymeleaf), um Rechnungen on‑the‑fly zu erzeugen. -- **Sicherheits‑Hardening:** Validieren Sie das Eingabe‑HTML, um bösartigen Markup vor der Konvertierung zu vermeiden. -- **Alternative Bibliotheken:** Vergleichen Sie Aspose.HTML mit OpenHTMLtoPDF oder wkhtmltopdf für spezielle Anwendungsfälle. +- **Batch‑Konvertierung:** Durchlaufen Sie ein Verzeichnis mit HTML‑Dateien und erzeugen Sie PDFs in einem Durchgang. +- **Dynamischer Inhalt:** Kombinieren Sie Aspose.HTML mit einer Template‑Engine (z. B. Thymeleaf), um Rechnungen on‑the‑fly zu erzeugen. +- **Sicherheits‑Hardening:** Validieren Sie das Eingabe‑HTML, um bösartigen Markup vor der Konvertierung zu vermeiden. +- **Alternative Bibliotheken:** Vergleichen Sie Aspose.HTML mit OpenHTMLtoPDF oder wkhtmltopdf für spezielle Randfälle. Experimentieren Sie mit verschiedenen Seitengrößen (`PdfPageSize.LETTER`), Ausrichtungen oder sogar benutzerdefinierten Abmessungen, wenn Sie ein Heft vorbereiten. Die API ist flexibel genug, um die meisten *html to pdf java*‑Szenarien zu bewältigen. +## Häufig gestellte Fragen + +**F: Unterstützt Aspose.HTML weitere Ausgabeformate?** +A: Ja – neben PDF kann es direkt aus HTML PNG, JPEG, SVG und EPUB erzeugen. + +**F: Gibt es ein Limit für die Seitenzahl?** +A: Aspose.HTML kann PDFs mit tausenden Seiten erstellen; der Speicherverbrauch bleibt niedrig, weil Seiten bei Bedarf auf die Festplatte gestreamt werden. + +**F: Kann ich Lesezeichen oder ein Inhaltsverzeichnis hinzufügen?** +A: Ja – verwenden Sie `PdfSaveOptions.setCreateBookmarks(true)` und stellen Sie eine hierarchische Gliederung im HTML bereit. + +**F: Wie gehe ich effizient mit großen Bildern um?** +A: Setzen Sie `pdfOptions.setResolution(150)` und aktivieren Sie das Down‑Sampling von Bildern über `pdfOptions.setImageDownsampleThreshold(150)`. + +**F: Ist die Bibliothek mit Java 17 kompatibel?** +A: Absolut – die Bibliothek ist für Java 11 kompiliert, läuft aber auf jedem neueren JDK, einschließlich Java 17 und Java 21. + +--- + --- -## Fazit +**Zuletzt aktualisiert:** 2026-09-03 +**Getestet mit:** Aspose.HTML 23.10 für Java +**Autor:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## Verwandte Tutorials + +- [How to Convert HTML to PDF Java - Set Page Margins with Aspose.HTML](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [Adjust PDF Page Size with Aspose.HTML for Java](/html/java/advanced-usage/adjust-pdf-page-size/) +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/java/conversion-html-to-other-formats/convert-html-to-pdf/) -Wir haben alles behandelt, was Sie benötigen, um **HTML in PDF** in Java zu **konvertieren**, während Sie **PDF-Seitengröße setzen**, **PDF-Auflösung setzen** und **HTML als PDF speichern** mit Aspose.HTML. Der Schritt‑für‑Schritt‑Leitfaden, kompletter Code und Fehlersuche helfen Ihnen, hochwertige PDFs nach Ihren Vorgaben zu erzeugen. {{< /blocks/products/pf/tutorial-page-section >}} + {{< /blocks/products/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/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/greek/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index 6c21be77cf..3ce534e192 100644 --- a/html/greek/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/greek/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,111 +1,103 @@ --- category: general -date: 2026-01-06 -description: Μετατρέψτε HTML σε PDF σε Java με προσαρμοσμένο μέγεθος σελίδας, περιθώρια - και ανάλυση. Μάθετε πώς να ορίζετε το μέγεθος της σελίδας PDF και να αποθηκεύετε - HTML ως PDF χρησιμοποιώντας το Aspose.HTML. +date: 2026-09-03 +description: Μετατροπή HTML σε PDF σε Java με προσαρμοσμένο μέγεθος σελίδας, περιθώρια + και ανάλυση. Μάθετε πώς να ορίσετε το μέγεθος σελίδας pdf και να αποθηκεύσετε το + html ως pdf χρησιμοποιώντας το Aspose.HTML. draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: el -og_description: Μετατρέψτε το HTML σε PDF στη Java γρήγορα. Αυτός ο οδηγός δείχνει - πώς να ορίσετε το μέγεθος σελίδας PDF, να ρυθμίσετε την ανάλυση και να αποθηκεύσετε - το HTML ως PDF με το Aspose.HTML. -og_title: Μετατροπή HTML σε PDF με Java – Ορισμός μεγέθους σελίδας PDF & ανάλυσης +lastmod: 2026-09-03 +og_description: Ορίστε το μέγεθος σελίδας pdf και μετατρέψτε HTML σε PDF σε Java γρήγορα + με το Aspose.HTML. Μάθετε πώς να προσαρμόσετε το μέγεθος σελίδας, τα περιθώρια και + την ανάλυση. +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: Μετατροπή HTML σε PDF σε Java – ορισμός μεγέθους σελίδας pdf και ανάλυσης +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: Μετατροπή HTML σε PDF σε Java – Ορισμός μεγέθους σελίδας PDF, ανάλυσης και - αποθήκευση HTML ως PDF -url: /el/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: Μετατροπή HTML σε PDF σε Java – ορισμός μεγέθους σελίδας pdf και ανάλυσης --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Μετατροπή HTML σε PDF σε Java – Πλήρης Οδηγός με Προσαρμοσμένες Επιλογές +# Μετατροπή HTML σε PDF σε Java – ορισμός μεγέθους σελίδας PDF και ανάλυσης -Έχετε αναρωτηθεί ποτέ πώς να **μετατρέψετε HTML σε PDF** σε Java χωρίς να μπλεχτείτε σε ένα λαβύρινθο ρυθμίσεων; Δεν είστε οι μόνοι. Πολλοί προγραμματιστές συναντούν εμπόδια όταν χρειάζονται ακριβή έλεγχο του μεγέθους σελίδας, των περιθωρίων ή της ανάλυσης DPI ενώ μετατρέπουν μια ιστοσελίδα σε εκτυπώσιμο έγγραφο. +Ever wondered how to **convert HTML to PDF** in Java while also being able to **set pdf page size** and control DPI? You’re not alone. Many developers hit a wall when they need precise page dimensions, margins, or image resolution for printable PDFs such as invoices, reports, or e‑books. -Τα καλά νέα; Με το Aspose.HTML μπορείτε να **αποθηκεύσετε HTML ως PDF** με λίγες μόνο γραμμές κώδικα, και έχετε πλήρη πρόσβαση σε επιλογές όπως *set PDF page size* και *set PDF resolution*. Αυτό το tutorial σας οδηγεί βήμα‑βήμα στη διαδικασία, εξηγεί γιατί κάθε ρύθμιση είναι σημαντική και σας δείχνει ένα έτοιμο‑για‑εκτέλεση παράδειγμα. +The good news? With Aspose.HTML you can **save HTML as PDF** in just a few lines, and you get full access to options like *set pdf page size* and *set pdf resolution*. This tutorial walks you through the entire process, explains why each setting matters, and shows you a ready‑to‑run example. -Στο τέλος αυτού του οδηγού θα μπορείτε να πάρετε οποιοδήποτε τοπικό ή απομακρυσμένο αρχείο HTML και να δημιουργήσετε ένα PDF υψηλής ποιότητας που σέβεται τις απαιτήσεις διάταξης—ιδανικό για τιμολόγια, αναφορές ή e‑books. +By the end of this guide you’ll be able to take any local or remote HTML file and produce a high‑quality PDF that respects your layout requirements—perfect for **java generate invoice pdf** scenarios. --- -![Μετατροπή HTML σε PDF με προσαρμοσμένες επιλογές](image.png "παράδειγμα μετατροπής html σε pdf") +![Convert HTML to PDF with custom options](image.png "convert html to pdf example") +[Convert HTML to PDF with custom options](image.png "convert html to pdf example") + +## Γρήγορες απαντήσεις +- **Μπορώ να αλλάξω το μέγεθος της σελίδας;** Ναι – χρησιμοποιήστε `PdfSaveOptions.setPageSize()` με προεπιλεγμένα μεγέθη ή προσαρμοσμένες διαστάσεις. +- **Ποιο DPI πρέπει να χρησιμοποιήσω για εκτύπωση;** 300 dpi παρέχει καθαρή ποιότητα εκτύπωσης· 72 dpi αρκεί για PDF στην οθόνη. +- **Χρειάζομαι επιπλέον γραμματοσειρές;** Όχι – το Aspose.HTML ενσωματώνει αυτόματα τις τυπικές γραμματοσειρές· οι προσαρμοσμένες γραμματοσειρές λειτουργούν μέσω `@font-face`. +- **Απαιτείται άδεια;** Μια δωρεάν δοκιμή λειτουργεί για ανάπτυξη· απαιτείται εμπορική άδεια για παραγωγή. +- **Ποια έκδοση της Java υποστηρίζεται;** JDK 8 ή νεότερο (η βιβλιοθήκη είναι μεταγλωττισμένη για Java 11 αλλά λειτουργεί σε 8+). -## Τι Θα Μάθετε +## Τι θα μάθετε -- Πώς να φορτώσετε ένα αρχείο HTML με σωστή base URI ώστε οι σχετικές συνδέσεις να επιλύονται. -- Πώς να **ορίσετε το μέγεθος σελίδας PDF** (A4, Letter, προσαρμοσμένες διαστάσεις) και τα περιθώρια. -- Πώς να **ορίσετε την ανάλυση PDF** (DPI) για καθαρές εικόνες και κείμενο. -- Τον ακριβή κώδικα που απαιτείται για **αποθήκευση HTML ως PDF** χρησιμοποιώντας τη βιβλιοθήκη Aspose.HTML για Java. -- Συνηθισμένα προβλήματα—όπως ελλιπείς base URI ή υπερμεγέθεις εικόνες—και πώς να τα αποφύγετε. +- Πώς να φορτώσετε ένα αρχείο HTML με σωστό base URI ώστε οι σχετικές συνδέσεις να επιλύονται. +- Πώς να **set pdf page size** (A4, Letter, προσαρμοσμένες διαστάσεις) και περιθώρια. +- Πώς να **set pdf resolution** (DPI) για καθαρές εικόνες και κείμενο. +- Ο ακριβής κώδικας που απαιτείται για **save html as pdf** χρησιμοποιώντας τη βιβλιοθήκη Aspose.HTML για Java. +- Κοινές παγίδες—όπως ελλιπές base URI ή υπερμεγέθη εικόνες—και πώς να τις αποφύγετε. ### Προαπαιτούμενα -- Java Development Kit (JDK) 8 ή νεότερο. -- Maven ή Gradle για την προσθήκη του `aspose-html` (η τελευταία έκδοση τη στιγμή της συγγραφής είναι 23.10). -- Βασική κατανόηση της σύνταξης Java. +- Java Development Kit (JDK) 8 ή νεότερο. +- Maven ή Gradle για λήψη του `aspose-html` (η τελευταία έκδοση τη στιγμή της συγγραφής είναι 23.10). +- Βασική κατανόηση της σύνταξης Java. - Ένα αρχείο HTML που θέλετε να μετατρέψετε (θα χρησιμοποιήσουμε το `sample.html` στα παραδείγματα). ---- +## Πώς να ορίσετε το μέγεθος σελίδας pdf κατά τη μετατροπή HTML σε PDF -## Μετατροπή HTML σε PDF με Προσαρμοσμένες Επιλογές +Φορτώστε το HTML σας, διαμορφώστε το `PdfSaveOptions` και καλέστε `save`. Το παρακάτω μοτίβο δύο βημάτων χειρίζεται όλα όσα χρειάζεστε. -Παρακάτω βρίσκεται το πλήρες, εκτελέσιμο πρόγραμμα που δείχνει κάθε βήμα. Αντιγράψτε‑και‑επικολλήστε το στο IDE σας, προσαρμόστε τις διαδρομές και τρέξτε το. +Ορίζετε το μέγεθος της σελίδας καλώντας `pdfOptions.setPageSize(PdfPageSize.A4)` (ή οποιαδήποτε άλλη προεπιλεγμένη σταθερά) ή δημιουργώντας μια προσαρμοσμένη παρουσία `PdfPageSize` με πλάτος και ύψος σε points. Το ίδιο αντικείμενο επιλογών σας επιτρέπει επίσης να ορίσετε την ανάλυση με `pdfOptions.setResolution(300)`. Αυτή η προσέγγιση εγγυάται ότι το παραγόμενο PDF ταιριάζει ακριβώς με τις διαστάσεις που απαιτείτε. -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; +### Αναλυτική ανάλυση βήμα‑βήμα -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); - - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); - - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) - - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); - - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` - -### Γιατί Κάθε Βήμα Είναι Σημαντικό - -| Βήμα | Σκοπός | Συμβουλές & Ακραίες Περιπτώσεις | -|------|--------|--------------------------------| -| **1. Base URI** | Εξασφαλίζει ότι το `<img src="images/pic.png">` και άλλοι σχετικοί σύνδεσμοι δείχνουν στο σωστό φάκελο. | Αν το παραλείψετε, οι εικόνες μπορεί να λείπουν στο τελικό PDF. Χρησιμοποιήστε `file:///` για τοπικά αρχεία ή μια HTTP URL για απομακρυσμένους πόρους. | -| **2. Φόρτωση HTML** | Αναλύει το HTML στο μοντέλο DOM του Aspose. | Μεγάλα αρχεία HTML (>10 MB) μπορεί να χρειάζονται περισσότερη μνήμη· σκεφτείτε την αύξηση του heap της JVM (`-Xmx2g`). | -| **3. PDF Options** | Ελέγχει τις διαστάσεις σελίδας (`set pdf page size`), τα περιθώρια και το DPI (`set pdf resolution`). | Το A4 είναι 210 × 297 mm· για Letter χρησιμοποιήστε `PdfPageSize.LETTER`. DPI 300 είναι ιδανικό για εκτύπωση· 72 αρκεί για PDF μόνο για οθόνη. | -| **4. Αποθήκευση** | Γράφει το τελικό PDF στο δίσκο (`save html as pdf`). | Η διαδρομή εξόδου πρέπει να είναι εγγράψιμη. Μπορείτε να προσθέσετε προστασία από αντικατάσταση ελέγχοντας αν το αρχείο υπάρχει. | -| **5. Επιβεβαίωση** | Απλή ανατροφοδότηση στην κονσόλα. | Σε πραγματικές εφαρμογές αντικαταστήστε το `System.out` με έναν logger. | - ---- - -## Ανάλυση Βήμα‑Βήμα - -### 1. Ρύθμιση του Έργου σας (HTML to PDF Java) +#### 1. Ρυθμίστε το έργο σας (html to pdf java) Αν χρησιμοποιείτε Maven, προσθέστε την εξάρτηση Aspose.HTML: @@ -117,26 +109,26 @@ public class ConvertWithOptions { </dependency> ``` -Για χρήστες Gradle: +Οι χρήστες Gradle μπορούν να προσθέσουν: ```gradle implementation 'com.aspose:aspose-html:23.10' ``` -> **Pro tip:** Η βιβλιοθήκη είναι πλήρως αυτόνομη· δεν χρειάζεστε επιπλέον native binaries ή γραμματοσειρές για βασικές μετατροπές. +> **Pro tip:** Η βιβλιοθήκη είναι πλήρως αυτόνομη· δεν χρειάζεστε κανένα native binary ή επιπλέον γραμματοσειρές για βασικές μετατροπές. Το Aspose.HTML υποστηρίζει τη μετατροπή HTML σε PDF σε πάνω από 50 σενάρια και μπορεί να επεξεργαστεί αρχεία έως 200 MB χωρίς εξωτερικά native binaries. -### 2. Ορισμός της Base URI +#### 2. Ορίστε το base URI -Οι σχετικές URL είναι κοινή πηγή σπασμένων εικόνων. Ορίζοντας το `loadOptions.setBaseUri` στο φάκελο που περιέχει το HTML, επιτρέπετε στον μετατροπέα να επιλύει τις διαδρομές ακριβώς όπως θα έκανε ένας φυλλομετρητής. +Οι σχετικές URL είναι κοινή πηγή σπασμένων εικόνων. Καθορίζοντας το `loadOptions.setBaseUri` στο φάκελο που περιέχει το HTML σας, επιτρέπετε στον μετατροπέα να επιλύει τις διαδρομές ακριβώς όπως θα έκανε ένας φυλλομετρητής. ```java HtmlLoadOptions loadOptions = new HtmlLoadOptions(); loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); ``` -Αν το HTML σας αναφέρεται σε εξωτερικά CSS ή γραμματοσειρές που φιλοξενούνται σε CDN, μπορείτε να παραλείψετε τη base URI, αλλά προσέξτε την καθυστέρηση του δικτύου. +Αν το HTML σας αναφέρεται σε εξωτερικό CSS ή γραμματοσειρές που φιλοξενούνται σε CDN, μπορείτε να παραλείψετε το base URI, αλλά προσέξτε την καθυστέρηση δικτύου. -### 3. Φόρτωση του Εγγράφου HTML +#### 3. Φορτώστε το έγγραφο HTML ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); @@ -148,9 +140,9 @@ HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loa HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. Διαμόρφωση PDF Options – **Set PDF Page Size** & **Set PDF Resolution** +#### 4. Διαμορφώστε τις επιλογές PDF – **set pdf page size** & **set pdf resolution** -Η κλάση `PdfSaveOptions` σας δίνει λεπτομερή έλεγχο. +`PdfSaveOptions` είναι το αντικείμενο διαμόρφωσης του Aspose.HTML που ελέγχει τις ιδιότητες εξόδου PDF όπως το μέγεθος σελίδας, τα περιθώρια και η ανάλυση. ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -160,16 +152,16 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **Page Size:** Επιλέξτε από `PdfPageSize.A4`, `LETTER`, `LEGAL` ή δημιουργήστε προσαρμοσμένο `PdfPageSize` με πλάτος/ύψος σε points. -- **Resolution:** Υψηλότερο DPI προσφέρει πιο οξείες ραστερ εικόνες αλλά αυξάνει το μέγεθος του αρχείου. Για τις περισσότερες εργασίες εκτύπωσης 300 DPI είναι η «γλυκιά θέση». +- **Page size:** Επιλέξτε από `PdfPageSize.A4`, `LETTER`, `LEGAL`, ή δημιουργήστε μια προσαρμοσμένη `PdfPageSize` με πλάτος/ύψος σε points. Το A4 μετρά 210 × 297 mm· το Letter μετρά 8.5 × 11 in. +- **Resolution:** Υψηλότερο DPI προσφέρει πιο οξείες raster εικόνες αλλά αυξάνει και το μέγεθος του αρχείου· η μετάβαση από 72 dpi σε 300 dpi τριπλασιάζει συνήθως το μέγεθος του PDF ενώ βελτιώνει την οξύτητα της εικόνας έως και 4×. Για τις περισσότερες εργασίες εκτύπωσης, τα 300 dpi είναι το ιδανικό σημείο. -### 5. Εκτέλεση της Μετατροπής – **Save HTML as PDF** +#### 5. Εκτελέστε τη μετατροπή – **save html as pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); ``` -Η μέθοδος ρέει αυτόματα το PDF στην καθορισμένη τοποθεσία. Αν χρειάζεστε το PDF στη μνήμη (π.χ. για αποστολή ως συνημμένο email), χρησιμοποιήστε την υπερφόρτωση με `OutputStream`: +Η μέθοδος μεταδίδει αυτόματα το PDF στην προορισμένη τοποθεσία. Αν χρειάζεστε το PDF στη μνήμη (π.χ., για αποστολή ως συνημμένο email), χρησιμοποιήστε την υπερφόρτωση με `OutputStream`: ```java try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { @@ -179,41 +171,37 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. Επαλήθευση του Αποτελέσματος +#### 6. Επαληθεύστε το αποτέλεσμα Ανοίξτε το `sample_custom.pdf` σε οποιονδήποτε προβολέα PDF. Θα πρέπει να δείτε: -- Σελίδες μεγέθους A4 με περιθώρια 20 pt πάνω/κάτω. -- Όλες οι εικόνες αποδομένες σε 300 DPI (σημειώστε την ευκρίνεια). -- Συνδέσμους και CSS όπως στο αρχικό HTML. - -Αν κάτι φαίνεται λανθασμένο, ελέγξτε ξανά τη base URI και βεβαιωθείτε ότι όλοι οι εξωτερικοί πόροι είναι προσβάσιμοι. +- Σελίδες μεγέθους A4 με περιθώρια 20 pt πάνω/κάτω. +- Όλες οι εικόνες αποδίδονται στα 300 dpi (παρατηρήστε την οξύτητα). +- Συνδέσεις και CSS εφαρμόζονται ακριβώς όπως στο αρχικό HTML. ---- +Αν κάτι φαίνεται λανθασμένο, ελέγξτε ξανά το base URI και βεβαιωθείτε ότι όλοι οι εξωτερικοί πόροι είναι προσβάσιμοι. -## Συχνές Ερωτήσεις & Ακραίες Περιπτώσεις +## Συχνές ερωτήσεις & ειδικές περιπτώσεις -**Ε: Τι γίνεται αν το HTML μου περιέχει JavaScript;** -Α: Το Aspose.HTML *δεν* εκτελεί JavaScript. Αν η σελίδα σας εξαρτάται από περιεχόμενο που δημιουργείται από script, προ‑αποδώστε το HTML (π.χ. με headless browser) πριν το περάσετε στον μετατροπέα. +**Q: Τι γίνεται αν το HTML μου περιέχει JavaScript;** +A: Το Aspose.HTML *δεν* εκτελεί JavaScript. Αν η σελίδα σας βασίζεται σε περιεχόμενο που δημιουργείται από script, προ-αποδώστε το HTML (π.χ., με headless browser) πριν το δώσετε στον μετατροπέα. -**Ε: Μπορώ να ενσωματώσω προσαρμοσμένες γραμματοσειρές;** -Α: Ναι. Τοποθετήστε τα αρχεία `.ttf` ή `.otf` στον ίδιο φάκελο και αναφέρετέ τα μέσω `@font-face` στο CSS. Η base URI θα τα κάνει προσβάσιμα. +**Q: Μπορώ να ενσωματώσω προσαρμοσμένες γραμματοσειρές;** +A: Ναι. Τοποθετήστε τα αρχεία `.ttf` ή `.otf` στον ίδιο φάκελο και αναφερθείτε σε αυτά μέσω `@font-face` στο CSS σας. Το base URI θα κάνει τις γραμματοσειρές ανακαλύψιμες. -**Ε: Πώς αλλάζω τον προσανατολισμό σε landscape;** +**Q: Πώς αλλάζω τον προσανατολισμό σε οριζόντιο (landscape);** ```java saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` -**Ε: Το PDF μου είναι τεράστιο—τι μπορώ να κάνω;** -- Μειώστε το DPI (`setResolution(150)`). -- Συμπιέστε τις εικόνες με `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. +**Q: Το PDF μου είναι τεράστιο—τι μπορώ να κάνω;** +- Μειώστε το DPI (`setResolution(150)`). +- Συμπιέστε τις εικόνες με `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. - Αφαιρέστε περιττά υψηλής ανάλυσης στοιχεία από το πηγαίο HTML. ---- - -## Πλήρες Παράδειγμα (All‑In‑One) +## Πλήρες λειτουργικό παράδειγμα (όλα‑σε‑ένα) -Ακολουθεί η ολοκληρωμένη κλάση, έτοιμη για μεταγλώττιση. Αντικαταστήστε το `YOUR_DIRECTORY` με την απόλυτη διαδρομή του μηχανήματός σας. +Ακολουθεί η πλήρης κλάση έτοιμη για μεταγλώττιση. Αντικαταστήστε το `YOUR_DIRECTORY` με μια απόλυτη διαδρομή στο μηχάνημά σας. ```java import com.aspose.html.converters.*; @@ -244,26 +232,81 @@ public class ConvertWithOptions { } ``` -Τρέξτε το πρόγραμμα, ανοίξτε το παραγόμενο PDF και θα δείτε ακριβώς τη διάταξη που ορίσατε. Αυτό είναι **convert HTML to PDF** σε Java, πλήρως εξοπλισμένο με προσαρμοσμένο μέγεθος σελίδας και ανάλυση. +Εκτελέστε το πρόγραμμα, ανοίξτε το παραγόμενο PDF και θα δείτε την ακριβή διάταξη που ορίσατε. Αυτό είναι **convert html to pdf** σε Java, πλήρες με προσαρμοσμένο μέγεθος και ανάλυση. ---- +## Επόμενα βήματα & συναφή θέματα + +- **Batch conversion:** Επανάληψη σε έναν φάκελο αρχείων HTML και παραγωγή PDF σε μία εκτέλεση. +- **Dynamic content:** Συνδυάστε το Aspose.HTML με μηχανή προτύπων (π.χ., Thymeleaf) για δημιουργία τιμολογίων σε πραγματικό χρόνο. +- **Security hardening:** Επικυρώστε το εισερχόμενο HTML για αποφυγή κακόβουλης σήμανσης πριν τη μετατροπή. +- **Alternative libraries:** Συγκρίνετε το Aspose.HTML με OpenHTMLtoPDF ή wkhtmltopdf για συγκεκριμένες ειδικές περιπτώσεις. + +Δοκιμάστε διαφορετικά μεγέθη σελίδας (`PdfPageSize.LETTER`), προσανατολισμούς ή ακόμη και προσαρμοσμένες διαστάσεις αν ετοιμάζετε ένα φυλλάδιο. Το API είναι αρκετά ευέλικτο για να αντιμετωπίσει τις περισσότερες περιπτώσεις *html to pdf java* που θα συναντήσετε. + +## Συχνές ερωτήσεις + +**Q: Υποστηρίζει το Aspose.HTML άλλες μορφές εξόδου;** +A: Ναι – εκτός από PDF μπορεί να δημιουργήσει PNG, JPEG, SVG και EPUB απευθείας από HTML. + +**Q: Υπάρχει όριο στον αριθμό των σελίδων;** +A: Το Aspose.HTML μπορεί να δημιουργήσει PDF με χιλιάδες σελίδες· η χρήση μνήμης παραμένει χαμηλή επειδή μεταφέρει τις σελίδες στο δίσκο όταν χρειάζεται. -## Επόμενα Βήματα & Σχετικά Θέματα +**Q: Μπορώ να προσθέσω σελιδοδείκτες ή πίνακα περιεχομένων;** +A: Ναι – χρησιμοποιήστε `PdfSaveOptions.setCreateBookmarks(true)` και παρέχετε ένα ιεραρχικό περίγραμμα στο HTML. -- **Batch conversion:** Επανάληψη σε φάκελο HTML αρχείων για μαζική παραγωγή PDF. -- **Dynamic content:** Συνδυάστε το Aspose.HTML με μηχανή προτύπων (π.χ. Thymeleaf) για δημιουργία τιμολογίων σε πραγματικό χρόνο. -- **Security hardening:** Επικυρώστε το εισερχόμενο HTML για αποφυγή κακόβουλης σήμανσης πριν τη μετατροπή. -- **Alternative libraries:** Συγκρίνετε το Aspose.HTML με το OpenHTMLtoPDF ή το wkhtmltopdf για ειδικές περιπτώσεις. +**Q: Πώς να διαχειριστώ μεγάλες εικόνες αποδοτικά;** +A: Ορίστε `pdfOptions.setResolution(150)` και ενεργοποιήστε τη μείωση δειγματοληψίας εικόνας μέσω `pdfOptions.setImageDownsampleThreshold(150)`. -Πειραματιστείτε με διαφορετικά μεγέθη σελίδας (`PdfPageSize.LETTER`), προσανατολισμούς ή ακόμη και προσαρμοσμένες διαστάσεις αν ετοιμάζετε φυλλάδιο. Το API είναι αρκετά ευέλικτο για να καλύψει τις περισσότερες *html to pdf java* περιπτώσεις που θα συναντήσετε. +**Q: Είναι η βιβλιοθήκη συμβατή με Java 17;** +A: Απόλυτα – η βιβλιοθήκη είναι μεταγλωττισμένη για Java 11 αλλά λειτουργεί σε οποιοδήποτε μεταγενέστερο JDK, συμπεριλαμβανομένων των Java 17 και Java 21. --- -## Συμπέρασμα +--- + +**Τελευταία ενημέρωση:** 2026-09-03 +**Δοκιμή με:** Aspose.HTML 23.10 for Java +**Συγγραφέας:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## Σχετικά Tutorials + +- [How to Convert HTML to PDF Java - Set Page Margins with Aspose.HTML](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [Adjust PDF Page Size with Aspose.HTML for Java](/html/java/advanced-usage/adjust-pdf-page-size/) +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/java/conversion-html-to-other-formats/convert-html-to-pdf/) -Καλύψαμε όλα όσα χρειάζεστε για **convert HTML to PDF** σε Java, ενώ **set PDF page size**, **set PDF resolution**, και **save HTML as PDF** χρησιμοποιώντας το Aspose.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/hindi/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/hindi/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index 22e2040703..ed4918af79 100644 --- a/html/hindi/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/hindi/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,108 +1,100 @@ --- category: general -date: 2026-01-06 -description: जावा में कस्टम पेज साइज, मार्जिन और रिज़ॉल्यूशन के साथ HTML को PDF में - बदलें। Aspose.HTML का उपयोग करके PDF पेज साइज सेट करना और HTML को PDF के रूप में - सहेजना सीखें। +date: 2026-09-03 +description: HTML को PDF में Java के साथ कस्टम page size, margins और resolution के + साथ बदलें। सीखें कि कैसे pdf page size सेट करें और Aspose.HTML का उपयोग करके html + को pdf के रूप में सहेजें। draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: hi -og_description: जावा में HTML को जल्दी PDF में बदलें। यह गाइड दिखाता है कि PDF पेज - आकार कैसे सेट करें, रिज़ॉल्यूशन कैसे समायोजित करें, और Aspose.HTML के साथ HTML को - PDF के रूप में सहेजें। -og_title: जावा में HTML को PDF में परिवर्तित करें – PDF पेज आकार और रिज़ॉल्यूशन सेट - करें +lastmod: 2026-09-03 +og_description: Aspose.HTML के साथ Java में HTML को PDF में जल्दी बदलें और pdf page + size सेट करें। सीखें कि कैसे page size, margins और resolution को कस्टमाइज़ करें। +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: HTML को PDF में Java के साथ बदलें – pdf page size और resolution सेट करें +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: जावा में HTML को PDF में बदलें – PDF पेज आकार, रिज़ॉल्यूशन सेट करें, और HTML - को PDF के रूप में सहेजें -url: /hi/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: HTML को PDF में Java के साथ बदलें – pdf page size और resolution सेट करें --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# जावा में HTML को PDF में बदलें – कस्टम विकल्पों के साथ पूर्ण गाइड - -क्या आपने कभी सोचा है कि जावा में **HTML को PDF में कैसे बदलें** बिना सेटिंग्स के जटिलता से जूझे? आप अकेले नहीं हैं। कई डेवलपर्स को पेज साइज, मार्जिन, या आउटपुट DPI पर सटीक नियंत्रण की आवश्यकता होने पर समस्या आती है जब वे वेब पेज को प्रिंटेबल डॉक्यूमेंट में बदलते हैं। +# HTML को PDF में Java के साथ बदलें – PDF पेज साइज और रिज़ॉल्यूशन सेट करें -अच्छी खबर? Aspose.HTML के साथ आप कुछ ही लाइनों में **HTML को PDF के रूप में सहेज** सकते हैं, और आपको *set PDF page size* और *set PDF resolution* जैसी विकल्पों तक पूरी पहुँच मिलती है। यह ट्यूटोरियल आपको पूरी प्रक्रिया से गुज़राता है, बताता है कि प्रत्येक सेटिंग क्यों महत्वपूर्ण है, और एक तैयार‑चलाने योग्य उदाहरण दिखाता है। +क्या आपने कभी सोचा है कि Java में **HTML को PDF में बदलना** कैसे किया जाए और साथ ही **PDF पेज साइज सेट करना** और DPI नियंत्रित करना संभव है? आप अकेले नहीं हैं। कई डेवलपर्स को सटीक पेज आयाम, मार्जिन, या प्रिंटेबल PDF जैसे इनवॉइस, रिपोर्ट, या ई‑बुक्स के लिए इमेज रिज़ॉल्यूशन की आवश्यकता होने पर रुकावट आती है। -इस गाइड के अंत तक आप किसी भी लोकल या रिमोट HTML फ़ाइल को लेकर एक उच्च‑गुणवत्ता वाला PDF बना पाएँगे जो आपके लेआउट आवश्यकताओं का सम्मान करता हो—इनवॉइस, रिपोर्ट, या ई‑बुक्स के लिए एकदम उपयुक्त। +अच्छी खबर? Aspose.HTML के साथ आप सिर्फ कुछ लाइनों में **HTML को PDF के रूप में सहेज** सकते हैं, और आपको *set pdf page size* और *set pdf resolution* जैसे विकल्पों तक पूरी पहुंच मिलती है। यह ट्यूटोरियल आपको पूरे प्रोसेस से गुज़राता है, बताता है कि प्रत्येक सेटिंग क्यों महत्वपूर्ण है, और एक तैयार‑चलाने‑योग्य उदाहरण दिखाता है। -![कस्टम विकल्पों के साथ HTML को PDF में बदलें](image.png "HTML को PDF में बदलने का उदाहरण") +इस गाइड के अंत तक आप किसी भी स्थानीय या रिमोट HTML फ़ाइल को ले कर एक उच्च‑गुणवत्ता वाला PDF बना पाएँगे जो आपके लेआउट आवश्यकताओं का सम्मान करता है—**java generate invoice pdf** परिदृश्यों के लिए बिल्कुल उपयुक्त। -## आप क्या सीखेंगे +--- -- कैसे एक HTML फ़ाइल को उचित base URI के साथ लोड करें ताकि रिलेटिव लिंक सही ढंग से रिजॉल्व हों। -- कैसे **set PDF page size** (A4, Letter, कस्टम डाइमेंशन) और मार्जिन सेट करें। -- कैसे **set PDF resolution** (DPI) सेट करें ताकि इमेज और टेक्स्ट स्पष्ट रहें। -- Aspose.HTML Java लाइब्रेरी का उपयोग करके **save HTML as PDF** करने के लिए आवश्यक सटीक कोड। -- आम समस्याएँ—जैसे base URI का अभाव या बहुत बड़ी इमेजेज—और उन्हें कैसे टालें। +![कस्टम विकल्पों के साथ HTML को PDF में बदलें](image.png "कस्टम विकल्पों के साथ HTML को PDF उदाहरण") +[कस्टम विकल्पों के साथ HTML को PDF में बदलें](image.png "कस्टम विकल्पों के साथ HTML को PDF उदाहरण") -### आवश्यकताएँ +## त्वरित उत्तर +- **क्या मैं पेज साइज बदल सकता हूँ?** हाँ – `PdfSaveOptions.setPageSize()` का उपयोग करें, पूर्वनिर्धारित आकार या कस्टम आयामों के साथ। +- **प्रिंट के लिए कौन सा DPI उपयोग करना चाहिए?** 300 dpi से स्पष्ट प्रिंट क्वालिटी मिलती है; 72 dpi स्क्रीन पर PDF के लिए पर्याप्त है। +- **क्या मुझे अतिरिक्त फ़ॉन्ट्स की आवश्यकता है?** नहीं – Aspose.HTML स्वचालित रूप से मानक फ़ॉन्ट्स एम्बेड करता है; कस्टम फ़ॉन्ट्स `@font-face` के माध्यम से काम करते हैं। +- **क्या लाइसेंस आवश्यक है?** विकास के लिए एक फ्री ट्रायल काम करता है; उत्पादन के लिए एक व्यावसायिक लाइसेंस आवश्यक है। +- **कौन सा Java संस्करण समर्थित है?** JDK 8 या नया (लाइब्रेरी Java 11 के लिए संकलित है लेकिन 8+ पर चलती है)। -- Java Development Kit (JDK) 8 या उससे नया। -- `aspose-html` को प्राप्त करने के लिए Maven या Gradle (लेखन के समय नवीनतम संस्करण 23.10 है)। -- Java सिंटैक्स की बुनियादी समझ। +## आप क्या सीखेंगे +- कैसे एक HTML फ़ाइल को उचित बेस URI के साथ लोड करें ताकि रिलेटिव लिंक सही ढंग से हल हों। +- कैसे **set pdf page size** (A4, Letter, कस्टम डाइमेंशन) और मार्जिन सेट करें। +- कैसे **set pdf resolution** (DPI) सेट करें ताकि इमेज और टेक्स्ट स्पष्ट रहें। +- Aspose.HTML Java लाइब्रेरी का उपयोग करके **save html as pdf** करने के लिए आवश्यक सटीक कोड। +- सामान्य समस्याएँ—जैसे बेस URI का अभाव या ओवरसाइज़्ड इमेजेज—और उन्हें कैसे टाला जाए। + +### पूर्वापेक्षाएँ +- Java Development Kit (JDK) 8 या नया। +- Maven या Gradle ताकि `aspose-html` को जोड़ा जा सके (लेखन समय पर नवीनतम संस्करण 23.10 है)। +- Java सिंटैक्स की बुनियादी समझ। - एक HTML फ़ाइल जिसे आप बदलना चाहते हैं (उदाहरण में हम `sample.html` का उपयोग करेंगे)। -## कस्टम विकल्पों के साथ HTML को PDF में बदलें - -नीचे पूरा, चलाने योग्य प्रोग्राम है जो प्रत्येक चरण को दर्शाता है। इसे अपने IDE में कॉपी‑पेस्ट करें, पाथ्स को समायोजित करें, और रन दबाएँ। - -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; - -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); - - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); - - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) +## HTML को PDF में बदलते समय PDF पेज साइज कैसे सेट करें +अपना HTML लोड करें, `PdfSaveOptions` कॉन्फ़िगर करें, और `save` को कॉल करें। नीचे दिया गया दो‑स्टेप पैटर्न आपकी सभी आवश्यकताओं को संभालता है। - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); +आप पेज साइज को `pdfOptions.setPageSize(PdfPageSize.A4)` (या किसी अन्य प्री‑डिफाइंड कॉन्स्टेंट) कॉल करके सेट करते हैं, या चौड़ाई और ऊँचाई पॉइंट्स में देकर एक कस्टम `PdfPageSize` इंस्टेंस बनाते हैं। वही ऑप्शन ऑब्जेक्ट आपको `pdfOptions.setResolution(300)` के साथ रिज़ॉल्यूशन सेट करने की भी अनुमति देता है। यह तरीका सुनिश्चित करता है कि उत्पन्न PDF बिल्कुल वही आयाम रखे जो आप चाहते हैं। - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` - -### प्रत्येक चरण क्यों महत्वपूर्ण है - -| चरण | उद्देश्य | टिप्स और किनारे के मामले | -|------|----------|--------------------------| -| **1. Base URI** | यह सुनिश्चित करता है कि `<img src="images/pic.png">` और अन्य रिलेटिव लिंक सही फ़ोल्डर की ओर इशारा करें। | यदि आप इसे छोड़ते हैं, तो आउटपुट PDF में इमेजेज गायब हो सकती हैं। लोकल फ़ाइलों के लिए `file:///` और रिमोट रिसोर्सेज के लिए HTTP URL उपयोग करें। | -| **2. Load HTML** | HTML को Aspose के DOM मॉडल में पार्स करता है। | बड़े HTML फ़ाइलें (>10 MB) को अधिक मेमोरी की आवश्यकता हो सकती है; JVM हीप (`-Xmx2g`) बढ़ाने पर विचार करें। | -| **3. PDF Options** | पेज डाइमेंशन (`set pdf page size`), मार्जिन, और DPI (`set pdf resolution`) को नियंत्रित करता है। | A4 210 × 297 mm है; Letter के लिए `PdfPageSize.LETTER` उपयोग करें। प्रिंट के लिए 300 DPI आदर्श है; 72 स्क्रीन‑केवल PDFs के लिए काम करता है। | -| **4. Save** | अंतिम PDF को डिस्क पर लिखता है (`save html as pdf`)। | आउटपुट पाथ लिखने योग्य होना चाहिए। फ़ाइल‑मौजूदगी जाँच के साथ ओवरराइट सुरक्षा जोड़ी जा सकती है। | -| **5. Confirmation** | सरल कंसोल फीडबैक। | वास्तविक एप्लिकेशन में `System.out` को लॉगर से बदलें। | - -## चरण‑दर‑चरण विवरण +### Step‑by‑step breakdown -### 1. अपना प्रोजेक्ट सेट अप करें (HTML to PDF Java) - -यदि आप Maven उपयोग कर रहे हैं, तो Aspose.HTML डिपेंडेंसी जोड़ें: +#### 1. Set up your project (html to pdf java) +यदि आप Maven का उपयोग कर रहे हैं, तो Aspose.HTML डिपेंडेंसी जोड़ें: ```xml <dependency> @@ -118,21 +110,19 @@ Gradle उपयोगकर्ता जोड़ सकते हैं: implementation 'com.aspose:aspose-html:23.10' ``` -> **Pro tip:** लाइब्रेरी पूरी तरह से स्व-निहित है; बेसिक कन्वर्ज़न के लिए आपको कोई नेटिव बाइनरी या अतिरिक्त फ़ॉन्ट्स की आवश्यकता नहीं है। - -### 2. Base URI निर्धारित करें +> **Pro tip:** लाइब्रेरी पूरी तरह से स्व-निहित है; बेसिक कन्वर्ज़न के लिए आपको कोई नेटिव बाइनरी या अतिरिक्त फ़ॉन्ट्स की आवश्यकता नहीं है। Aspose.HTML 50 से अधिक परिदृश्यों में HTML को PDF में बदलने का समर्थन करता है और 200 MB तक की फ़ाइलों को बिना बाहरी नेटिव बाइनरी के प्रोसेस कर सकता है। -रिलेटिव URL अक्सर टूटे हुए इमेजेज का कारण बनते हैं। `loadOptions.setBaseUri` को आपके HTML वाले फ़ोल्डर की ओर इंगित करके, आप कन्वर्टर को पाथ्स को ठीक उसी तरह रिजॉल्व करने देते हैं जैसे ब्राउज़र करता है। +#### 2. Define the base URI +रिलेटिव URL अक्सर टूटे हुए इमेजेज का कारण बनते हैं। `loadOptions.setBaseUri` को उस फ़ोल्डर की ओर इंगित करके जहाँ आपका HTML स्थित है, आप कन्वर्टर को ब्राउज़र की तरह पाथ्स हल करने देते हैं। ```java HtmlLoadOptions loadOptions = new HtmlLoadOptions(); loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); ``` -यदि आपका HTML CDN पर होस्टेड एक्सटर्नल CSS या फ़ॉन्ट्स को रेफ़र करता है, तो आप base URI को छोड़ सकते हैं, लेकिन नेटवर्क लेटेंसी पर ध्यान रखें। - -### 3. HTML डॉक्यूमेंट लोड करें +यदि आपका HTML CDN पर होस्टेड बाहरी CSS या फ़ॉन्ट्स को रेफ़र करता है, तो आप बेस URI को छोड़ सकते हैं, लेकिन नेटवर्क लेटेंसी पर नजर रखें। +#### 3. Load the HTML document ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); ``` @@ -143,9 +133,8 @@ HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loa HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. PDF विकल्प कॉन्फ़िगर करें – **Set PDF Page Size** & **Set PDF Resolution** - -`PdfSaveOptions` क्लास आपको सूक्ष्म नियंत्रण देती है। +#### 4. Configure PDF options – **set pdf page size** & **set pdf resolution** +`PdfSaveOptions` Aspose.HTML का कॉन्फ़िगरेशन ऑब्जेक्ट है जो PDF आउटपुट प्रॉपर्टीज़ जैसे पेज साइज, मार्जिन और रिज़ॉल्यूशन को नियंत्रित करता है। ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -155,16 +144,15 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **Page Size:** `PdfPageSize.A4`, `LETTER`, `LEGAL` में से चुनें, या पॉइंट्स में चौड़ाई/ऊँचाई के साथ कस्टम `PdfPageSize` बनाएं। -- **Resolution:** उच्च DPI तेज़ रास्टर इमेजेज देता है लेकिन फ़ाइल साइज बढ़ाता है। अधिकांश प्रिंट जॉब्स के लिए 300 DPI एक आदर्श मान है। - -### 5. कन्वर्ज़न निष्पादित करें – **Save HTML as PDF** +- **Page size:** `PdfPageSize.A4`, `LETTER`, `LEGAL` में से चुनें, या चौड़ाई/ऊँचाई पॉइंट्स में कस्टम `PdfPageSize` बनाएँ। A4 का आकार 210 × 297 mm है; Letter 8.5 × 11 in है। +- **Resolution:** उच्च DPI से रास्टर इमेजेज़ तेज़ होती हैं लेकिन फ़ाइल साइज बढ़ता है; 72 dpi से 300 dpi पर जाने से आमतौर पर PDF साइज तीन गुना हो जाता है जबकि इमेज की शार्पनेस 4× तक बढ़ती है। अधिकांश प्रिंट जॉब्स के लिए 300 dpi एक आदर्श बिंदु है। +#### 5. Perform the conversion – **save html as pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); ``` -यह मेथड स्वचालित रूप से PDF को लक्ष्य स्थान पर स्ट्रीम करता है। यदि आपको PDF मेमोरी में चाहिए (जैसे ईमेल अटैचमेंट के लिए), तो `OutputStream` ओवरलोड का उपयोग करें: +यह मेथड स्वचालित रूप से PDF को लक्ष्य स्थान पर स्ट्रीम करता है। यदि आपको PDF मेमोरी में चाहिए (जैसे ई‑मेल अटैचमेंट के रूप में भेजना), तो `OutputStream` ओवरलोड का उपयोग करें: ```java try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { @@ -174,37 +162,34 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. परिणाम सत्यापित करें +#### 6. Verify the result +`sample_custom.pdf` को किसी भी PDF व्यूअर में खोलें। आपको दिखना चाहिए: -किसी भी PDF व्यूअर में `sample_custom.pdf` खोलें। आपको दिखना चाहिए: +- 20 pt टॉप/बॉटम मार्जिन के साथ A4‑साइज़ पेज। +- सभी इमेजेज़ 300 dpi पर रेंडर हुई (स्पष्टता देखें)। +- लिंक और CSS मूल HTML की तरह ही लागू हुए। -- 20 pt टॉप/बॉटम मार्जिन के साथ A4‑साइज़ पेजेज। -- सभी इमेजेज 300 DPI पर रेंडर हुई (साफ़ दिखावट देखें)। -- लिंक और CSS मूल HTML जैसा ही लागू हुआ। - -यदि कुछ गड़बड़ दिखे, तो base URI को दोबारा जांचें और सुनिश्चित करें कि सभी एक्सटर्नल रिसोर्सेज उपलब्ध हैं। - -## सामान्य प्रश्न और किनारे के मामले +यदि कुछ असामान्य दिखे, तो बेस URI को दोबारा जांचें और सुनिश्चित करें कि सभी बाहरी रिसोर्सेज़ पहुँच योग्य हों। +## Common questions & edge cases **Q: यदि मेरे HTML में JavaScript हो तो?** -A: Aspose.HTML JavaScript *नहीं* चलाता है। यदि आपका पेज स्क्रिप्ट‑जनित कंटेंट पर निर्भर है, तो कन्वर्टर को फीड करने से पहले HTML को प्री‑रेंडर करें (जैसे हेडलेस ब्राउज़र से)। +A: Aspose.HTML *JavaScript नहीं चलाता*। यदि आपका पेज स्क्रिप्ट‑जनित कंटेंट पर निर्भर है, तो कन्वर्टर को फ़ीड करने से पहले HTML को (जैसे हेडलेस ब्राउज़र से) प्री‑रेंडर करें। -**Q: क्या मैं कस्टम फ़ॉन्ट्स एम्बेड कर सकता हूँ?** -A: हाँ। `.ttf` या `.otf` फ़ाइलें उसी फ़ोल्डर में रखें और अपने CSS में `@font-face` के माध्यम से रेफ़र करें। Base URI फ़ॉन्ट्स को खोजने योग्य बना देगा। +**Q: क्या मैं कस्टम फ़ॉन्ट एम्बेड कर सकता हूँ?** +A: हाँ। `.ttf` या `.otf` फ़ाइलों को उसी फ़ोल्डर में रखें और CSS में `@font-face` के माध्यम से रेफ़र करें। बेस URI फ़ॉन्ट्स को खोजने में मदद करेगा। -**Q: ऑरिएंटेशन को लैंडस्केप कैसे बदलें?** +**Q: ओरिएंटेशन को लैंडस्केप कैसे बदलूँ?** ```java saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` **Q: मेरा PDF बहुत बड़ा है—मैं क्या करूँ?** - DPI कम करें (`setResolution(150)`)। -- `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)` से इमेजेज को कॉम्प्रेस करें। -- स्रोत HTML से अनावश्यक हाई‑रेज़ोल्यूशन एसेट्स हटाएँ। - -## पूर्ण कार्यशील उदाहरण (ऑल‑इन‑वन) +- `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)` से इमेजेज़ को कंप्रेस करें। +- स्रोत HTML से अनावश्यक हाई‑रिज़ॉल्यूशन एसेट्स हटाएँ। -यहाँ पूरी क्लास है जिसे आप कॉम्पाइल कर सकते हैं। `YOUR_DIRECTORY` को अपने मशीन पर एक एब्सोल्यूट पाथ से बदलें। +## Full working example (all‑in‑one) +यहाँ पूरी क्लास है जिसे आप तुरंत कंपाइल कर सकते हैं। `YOUR_DIRECTORY` को अपने मशीन पर एक एब्सोल्यूट पाथ से बदलें। ```java import com.aspose.html.converters.*; @@ -235,22 +220,75 @@ public class ConvertWithOptions { } ``` -प्रोग्राम चलाएँ, जेनरेटेड PDF खोलें, और आप परिभाषित लेआउट को ठीक वैसे ही देखेंगे। यही जावा में **HTML को PDF में बदलना** है, कस्टम साइजिंग और रिज़ॉल्यूशन के साथ। +प्रोग्राम चलाएँ, जेनरेटेड PDF खोलें, और आप वही लेआउट देखेंगे जो आपने परिभाषित किया था। यही **convert html to pdf** Java में है, कस्टम साइजिंग और रिज़ॉल्यूशन के साथ। -## अगले कदम और संबंधित विषय - -- **बैच कन्वर्ज़न:** HTML फ़ाइलों की डायरेक्टरी पर लूप करके एक ही बार में PDFs बनाएं। -- **डायनामिक कंटेंट:** Aspose.HTML को टेम्प्लेटिंग इंजन (जैसे Thymeleaf) के साथ मिलाकर ऑन‑द‑फ्लाई इनवॉइस जेनरेट करें। -- **सिक्योरिटी हार्डनिंग:** कन्वर्ज़न से पहले इनपुट HTML को वैलिडेट करें ताकि मैलिशियस मार्कअप से बचा जा सके। -- **वैकल्पिक लाइब्रेरीज़:** विशिष्ट किनारे के मामलों के लिए Aspose.HTML की तुलना OpenHTMLtoPDF या wkhtmltopdf से करें। +## Next steps & related topics +- **Batch conversion:** एक डायरेक्टरी में मौजूद कई HTML फ़ाइलों को लूप करके एक ही बार में PDF बनाएँ। +- **Dynamic content:** Aspose.HTML को Thymeleaf जैसे टेम्प्लेटिंग इंजन के साथ मिलाकर ऑन‑द‑फ़्लाई इनवॉइस जनरेट करें। +- **Security hardening:** कन्वर्ज़न से पहले इनपुट HTML को वैलिडेट करें ताकि दुर्भावनापूर्ण मार्कअप से बचा जा सके। +- **Alternative libraries:** विशेष किनारे के मामलों के लिए Aspose.HTML की तुलना OpenHTMLtoPDF या wkhtmltopdf से करें। विभिन्न पेज साइज (`PdfPageSize.LETTER`), ओरिएंटेशन, या कस्टम डाइमेंशन के साथ प्रयोग करें यदि आप बुकलेट तैयार कर रहे हैं। API पर्याप्त लचीला है ताकि अधिकांश *html to pdf java* परिदृश्यों को संभाल सके। -## निष्कर्ष +## Frequently asked questions +**Q: क्या Aspose.HTML अन्य आउटपुट फॉर्मेट्स को सपोर्ट करता है?** +A: हाँ – PDF के अलावा यह सीधे HTML से PNG, JPEG, SVG, और EPUB भी जेनरेट कर सकता है। + +**Q: पेजों की संख्या पर कोई सीमा है?** +A: Aspose.HTML हजारों पेजों वाले PDF बना सकता है; मेमोरी उपयोग कम रहता है क्योंकि आवश्यकतानुसार पेज डिस्क पर स्ट्रीम होते हैं। + +**Q: क्या मैं बुकमार्क या टेबल ऑफ कंटेंट जोड़ सकता हूँ?** +A: हाँ – `PdfSaveOptions.setCreateBookmarks(true)` का उपयोग करें और HTML में हायरार्किकल आउटलाइन प्रदान करें। + +**Q: बड़े इमेजेज़ को कुशलता से कैसे हैंडल करूँ?** +A: `pdfOptions.setResolution(150)` सेट करें और `pdfOptions.setImageDownsampleThreshold(150)` के माध्यम से इमेज डाउन‑सैंपलिंग सक्षम करें। + +**Q: क्या लाइब्रेरी Java 17 के साथ संगत है?** +A: बिल्कुल – लाइब्रेरी Java 11 के लिए संकलित है लेकिन किसी भी बाद के JDK, जिसमें Java 17 और Java 21 शामिल हैं, पर चलती है। + +--- + +**Last Updated:** 2026-09-03 +**Tested with:** Aspose.HTML 23.10 for Java +**Author:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); -हमने जावा में **HTML को PDF में बदलने** के लिए सभी आवश्यक बातें कवर कर ली हैं, साथ ही **set PDF page size**, **set PDF resolution**, और Aspose.HTML का उपयोग करके **save HTML as PDF** किया है। चरण‑दर‑चरण गाइड, पूर्ण कोड, और ट्रबलशूटिंग + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## Related Tutorials +- [How to Convert HTML to PDF Java - Set Page Margins with Aspose.HTML](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [Adjust PDF Page Size with Aspose.HTML for Java](/html/java/advanced-usage/adjust-pdf-page-size/) +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/java/conversion-html-to-other-formats/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/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/hongkong/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index af9459d2ca..8029cb447d 100644 --- a/html/hongkong/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/hongkong/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,104 +1,102 @@ --- category: general -date: 2026-01-06 -description: 將 HTML 轉換為 PDF(使用 Java)並自訂頁面大小、邊距與解析度。了解如何設定 PDF 頁面大小以及使用 Aspose.HTML - 將 HTML 儲存為 PDF。 +date: 2026-09-03 +description: 在 Java 中將 HTML 轉換為 PDF,支援自訂頁面大小、邊距與解析度。了解如何設定 pdf 頁面大小,並使用 Aspose.HTML + 將 html 儲存為 pdf。 draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: zh-hant -og_description: 將 HTML 轉換為 PDF(Java)快速完成。本指南說明如何設定 PDF 頁面大小、調整解析度,以及使用 Aspose.HTML - 將 HTML 儲存為 PDF。 -og_title: 在 Java 中將 HTML 轉換為 PDF – 設定 PDF 頁面大小與解析度 +lastmod: 2026-09-03 +og_description: 使用 Aspose.HTML 快速在 Java 中設定 pdf 頁面大小並將 HTML 轉換為 PDF。了解如何自訂頁面大小、邊距與解析度。 +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: 在 Java 中將 HTML 轉換為 PDF – 設定 pdf 頁面大小與解析度 +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: 在 Java 中將 HTML 轉換為 PDF – 設定 PDF 頁面大小、解析度,並將 HTML 儲存為 PDF -url: /zh-hant/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: 在 Java 中將 HTML 轉換為 PDF – 設定 pdf 頁面大小與解析度 --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# 在 Java 中將 HTML 轉換為 PDF – 完整指南與自訂選項 - -有沒有想過如何在 Java 中 **將 HTML 轉換為 PDF**,而不必在錯綜複雜的設定中掙扎?你並不是唯一有此困惑的人。許多開發者在需要精確控制頁面尺寸、邊距或輸出 DPI,將網頁轉為可列印文件時,常會卡住。 - -好消息是?使用 Aspose.HTML,你只需幾行程式碼即可 **將 HTML 儲存為 PDF**,而且可以完整存取像 *設定 PDF 頁面尺寸* 與 *設定 PDF 解析度* 等選項。本教學將帶你逐步完成整個流程,說明每個設定的原因,並提供一個可直接執行的範例。 - -完成本指南後,你將能夠將任何本機或遠端的 HTML 檔案轉換為符合版面需求的高品質 PDF——非常適合發票、報告或電子書等應用。 +# 在 Java 中將 HTML 轉換為 PDF – 設定 PDF 頁面大小與解析度 -![使用自訂選項將 HTML 轉換為 PDF](image.png "HTML 轉 PDF 範例") - -## 你將學會 +Ever wondered how to **convert HTML to PDF** in Java while also being able to **set pdf page size** and control DPI? You’re not alone. Many developers hit a wall when they need precise page dimensions, margins, or image resolution for printable PDFs such as invoices, reports, or e‑books. -- 如何使用正確的 base URI 載入 HTML 檔案,以確保相對連結能正確解析。 -- 如何 **設定 PDF 頁面尺寸**(A4、Letter、自訂尺寸)與邊距。 -- 如何 **設定 PDF 解析度**(DPI),以獲得清晰的影像與文字。 -- 使用 Aspose.HTML Java 函式庫將 **HTML 儲存為 PDF** 所需的完整程式碼。 -- 常見陷阱——例如缺少 base URI 或影像過大——以及避免方法。 +The good news? With Aspose.HTML you can **save HTML as PDF** in just a few lines, and you get full access to options like *set pdf page size* and *set pdf resolution*. This tutorial walks you through the entire process, explains why each setting matters, and shows you a ready‑to‑run example. -### 前置條件 +By the end of this guide you’ll be able to take any local or remote HTML file and produce a high‑quality PDF that respects your layout requirements—perfect for **java generate invoice pdf** scenarios. -- Java Development Kit (JDK) 8 或更新版本。 -- 使用 Maven 或 Gradle 取得 `aspose-html`(撰寫本文時的最新版本為 23.10)。 -- 具備基本的 Java 語法概念。 -- 欲轉換的 HTML 檔案(範例中使用 `sample.html`)。 +--- -## 使用自訂選項將 HTML 轉換為 PDF +![使用自訂選項將 HTML 轉換為 PDF](image.png "HTML 轉 PDF 範例") +[使用自訂選項將 HTML 轉換為 PDF](image.png "HTML 轉 PDF 範例") -以下是完整且可執行的程式範例,示範每一步操作。請隨意將其複製貼上至 IDE,調整路徑後執行。 +## 快速解答 +- **Can I change the page size?** Yes – use `PdfSaveOptions.setPageSize()` with predefined sizes or custom dimensions. +- **What DPI should I use for print?** 300 dpi gives crisp print quality; 72 dpi is enough for on‑screen PDFs. +- **Do I need extra fonts?** No – Aspose.HTML embeds standard fonts automatically; custom fonts work via `@font-face`. +- **Is a license required?** A free trial works for development; a commercial license is needed for production. +- **Which Java version is supported?** JDK 8 or newer (the library is compiled for Java 11 but runs on 8+). -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; +## 您將學習 -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); +- How to load an HTML file with a proper base URI so relative links resolve. +- How to **set pdf page size** (A4, Letter, custom dimensions) and margins. +- How to **set pdf resolution** (DPI) for crisp images and text. +- The exact code needed to **save html as pdf** using the Aspose.HTML Java library. +- Common pitfalls—like missing base URIs or oversized images—and how to avoid them. - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); +### 前置條件 - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) +- Java Development Kit (JDK) 8 or newer. +- Maven or Gradle to pull in `aspose-html` (the latest version at the time of writing is 23.10). +- A basic understanding of Java syntax. +- An HTML file you want to convert (we’ll use `sample.html` in the examples). - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); +## 在將 HTML 轉換為 PDF 時設定 PDF 頁面大小 - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` - -### 為何每一步都很重要 +Load your HTML, configure `PdfSaveOptions`, and call `save`. The two‑step pattern below handles everything you need. -| 步驟 | 目的 | 提示與邊緣情況 | -|------|------|-------------------| -| **1. Base URI** | 確保 `<img src="images/pic.png">` 以及其他相對連結指向正確的資料夾。 | 若省略此步驟,圖片可能在輸出 PDF 中消失。對本機檔案使用 `file:///`,遠端資源則使用 HTTP URL。 | -| **2. Load HTML** | 將 HTML 解析為 Aspose 的 DOM 模型。 | 大型 HTML 檔案(>10 MB)可能需要更多記憶體;可考慮增大 JVM 堆積 (`-Xmx2g`)。 | -| **3. PDF Options** | 控制頁面尺寸(`set pdf page size`)、邊距與 DPI(`set pdf resolution`)。 | A4 為 210 × 297 mm;Letter 使用 `PdfPageSize.LETTER`。300 DPI 適合列印,72 DPI 適用於僅螢幕顯示的 PDF。 | -| **4. Save** | 將最終 PDF 寫入磁碟(`save html as pdf`)。 | 輸出路徑必須可寫入。可加入檔案存在性檢查以防止覆寫。 | -| **5. Confirmation** | 簡單的主控台回饋。 | 在實際應用中可將 `System.out` 換成日誌記錄器。 | +You set the page size by calling `pdfOptions.setPageSize(PdfPageSize.A4)` (or any other predefined constant) or by creating a custom `PdfPageSize` instance with width and height in points. The same options object also lets you set resolution with `pdfOptions.setResolution(300)`. This approach guarantees that the generated PDF matches the exact dimensions you require. -## 步驟分解說明 +### 步驟分解 -### 1. 設定專案 (HTML 轉 PDF Java) +#### 1. 設定您的專案 (html to pdf java) -如果使用 Maven,請加入 Aspose.HTML 相依性: +If you’re using Maven, add the Aspose.HTML dependency: ```xml <dependency> @@ -108,40 +106,40 @@ public class ConvertWithOptions { </dependency> ``` -Gradle 使用者可加入: +Gradle users can add: ```gradle implementation 'com.aspose:aspose-html:23.10' ``` -> **專業提示:** 此函式庫是完整自包含的;基本轉換不需要任何原生二進位檔或額外字型。 +> **Pro tip:** The library is fully self‑contained; you don’t need any native binaries or extra fonts for basic conversions. Aspose.HTML supports conversion of HTML to PDF in over 50 scenarios and can process files up to 200 MB without external native binaries. -### 2. 定義 Base URI +#### 2. 定義基礎 URI -相對 URL 常是圖片破碎的根源。將 `loadOptions.setBaseUri` 指向包含 HTML 的資料夾,即可讓轉換器如瀏覽器般正確解析路徑。 +Relative URLs are a common source of broken images. By pointing `loadOptions.setBaseUri` to the folder containing your HTML, you let the converter resolve paths exactly as a browser would. ```java HtmlLoadOptions loadOptions = new HtmlLoadOptions(); loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); ``` -若 HTML 參考 CDN 上的外部 CSS 或字型,可省略 base URI,但需留意網路延遲。 +If your HTML references external CSS or fonts hosted on a CDN, you can skip the base URI, but keep an eye on network latency. -### 3. 載入 HTML 文件 +#### 3. 載入 HTML 文件 ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); ``` -也可以從 URL 載入: +You can also load from a URL: ```java HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. 設定 PDF 選項 – **設定 PDF 頁面尺寸** 與 **設定 PDF 解析度** +#### 4. 設定 PDF 選項 – **set pdf page size** 與 **set pdf resolution** -`PdfSaveOptions` 類別提供精細的控制。 +`PdfSaveOptions` is Aspose.HTML's configuration object that controls PDF output properties such as page size, margins, and resolution. ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -151,16 +149,16 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **頁面尺寸:** 可從 `PdfPageSize.A4`、`LETTER`、`LEGAL` 中選擇,或以點數指定寬高自行建立 `PdfPageSize`。 -- **解析度:** 較高 DPI 可產生更銳利的點陣圖,但會增大檔案大小。大多列印工作以 300 DPI 為佳。 +- **Page size:** Choose from `PdfPageSize.A4`, `LETTER`, `LEGAL`, or create a custom `PdfPageSize` with width/height in points. A4 measures 210 × 297 mm; Letter measures 8.5 × 11 in. +- **Resolution:** Higher DPI yields sharper raster images but also increases file size; moving from 72 dpi to 300 dpi typically triples the PDF size while improving image sharpness by up to 4×. For most print jobs 300 dpi is a sweet spot. -### 5. 執行轉換 – **將 HTML 儲存為 PDF** +#### 5. 執行轉換 – **save html as pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); ``` -此方法會自動將 PDF 串流寫入目標位置。若需要將 PDF 保存在記憶體中(例如作為電子郵件附件),可使用 `OutputStream` 的重載版本: +The method automatically streams the PDF to the target location. If you need the PDF in memory (e.g., to send as an email attachment), use an `OutputStream` overload: ```java try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { @@ -170,37 +168,37 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. 驗證結果 +#### 6. 驗證結果 -開啟任意 PDF 檢視器檢視 `sample_custom.pdf`,你應該會看到: +Open `sample_custom.pdf` in any PDF viewer. You should see: -- A4 大小的頁面,上下邊距為 20 pt。 -- 所有影像以 300 DPI 呈現(可見其銳利度)。 -- 連結與 CSS 完全如原始 HTML 所示。 +- A4‑sized pages with 20 pt top/bottom margins. +- All images rendered at 300 dpi (notice the crispness). +- Links and CSS applied exactly as in the original HTML. -若有異常,請再次確認 base URI 並確保所有外部資源皆可存取。 +If something looks off, double‑check the base URI and ensure all external resources are reachable. -## 常見問題與邊緣情況 +## 常見問題與邊緣案例 -**Q: 如果我的 HTML 包含 JavaScript 會怎樣?** -A: Aspose.HTML *不會* 執行 JavaScript。若頁面依賴腳本產生內容,請先將 HTML 預先渲染(例如使用無頭瀏覽器),再交給轉換器。 +**Q: What if my HTML contains JavaScript?** +A: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated content, pre‑render the HTML (e.g., with a headless browser) before feeding it to the converter. -**Q: 我可以嵌入自訂字型嗎?** -A: 可以。將 `.ttf` 或 `.otf` 檔案放在同一資料夾,並在 CSS 中使用 `@font-face` 引用。Base URI 會使字型可被發現。 +**Q: Can I embed custom fonts?** +A: Yes. Place the `.ttf` or `.otf` files in the same folder and reference them via `@font-face` in your CSS. The base URI will make the fonts discoverable. -**Q: 如何將方向改為橫向(landscape)?** +**Q: How do I change the orientation to landscape?** ```java saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` -**Q: 我的 PDF 檔案太大——該怎麼辦?** -- 降低 DPI(`setResolution(150)`)。 -- 使用 `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)` 壓縮影像。 -- 從來源 HTML 中移除不必要的高解析度資源。 +**Q: My PDF is huge—what can I do?** +- Reduce the DPI (`setResolution(150)`). +- Compress images with `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. +- Remove unnecessary high‑resolution assets from the source HTML. ## 完整可執行範例(全功能) -以下是完整的類別,可直接編譯。請將 `YOUR_DIRECTORY` 替換為您機器上的絕對路徑。 +Here’s the entire class ready to compile. Replace `YOUR_DIRECTORY` with an absolute path on your machine. ```java import com.aspose.html.converters.*; @@ -231,22 +229,81 @@ public class ConvertWithOptions { } ``` -執行程式,開啟產生的 PDF,即可看到您所定義的精確版面。這就是在 Java 中 **將 HTML 轉換為 PDF**,並支援自訂尺寸與解析度。 +Run the program, open the generated PDF, and you’ll see the exact layout you defined. That’s **convert html to pdf** in Java, complete with custom sizing and resolution. ## 後續步驟與相關主題 -- **批次轉換:** 迴圈處理目錄中的多個 HTML 檔案,一次產生 PDF。 -- **動態內容:** 結合 Aspose.HTML 與模板引擎(如 Thymeleaf)即時產生發票。 -- **安全加固:** 在轉換前驗證輸入的 HTML,以避免惡意標記。 -- **替代函式庫:** 將 Aspose.HTML 與 OpenHTMLtoPDF 或 wkhtmltopdf 進行比較,以因應特定邊緣情況。 +- **Batch conversion:** Loop over a directory of HTML files and produce PDFs in one go. +- **Dynamic content:** Combine Aspose.HTML with a templating engine (e.g., Thymeleaf) to generate invoices on the fly. +- **Security hardening:** Validate input HTML to avoid malicious markup before conversion. +- **Alternative libraries:** Compare Aspose.HTML with OpenHTMLtoPDF or wkhtmltopdf for specific edge cases. + +Experiment with different page sizes (`PdfPageSize.LETTER`), orientations, or even custom dimensions if you’re preparing a booklet. The API is flexible enough to handle most *html to pdf java* scenarios you’ll encounter. + +## 常見問答 + +**Q: Does Aspose.HTML support other output formats?** +A: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from HTML. + +**Q: Is there a limit on the number of pages?** +A: Aspose.HTML can create PDFs with thousands of pages; memory usage stays low because it streams pages to disk when needed. -嘗試不同的頁面尺寸(`PdfPageSize.LETTER`)、方向,或自訂尺寸,若您在製作小冊子。API 足夠彈性,能處理大多數 *html to pdf java* 的情境。 +**Q: Can I add bookmarks or table of contents?** +A: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical outline in the HTML. -## 結論 +**Q: How do I handle large images efficiently?** +A: Set `pdfOptions.setResolution(150)` and enable image down‑sampling via `pdfOptions.setImageDownsampleThreshold(150)`. + +**Q: Is the library compatible with Java 17?** +A: Absolutely – the library is compiled for Java 11 but runs on any later JDK, including Java 17 and Java 21. + +--- + +--- + +**最後更新:** 2026-09-03 +**測試版本:** Aspose.HTML 23.10 for Java +**作者:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## 相關教學 + +- [如何在 Java 中使用 Aspose.HTML 轉換 HTML 為 PDF 並設定頁面邊距](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [使用 Aspose.HTML for Java 調整 PDF 頁面大小](/html/java/advanced-usage/adjust-pdf-page-size/) +- [如何在 Java 中使用 Aspose.HTML 轉換 HTML 為 PDF](/html/java/conversion-html-to-other-formats/convert-html-to-pdf/) -我們已說明如何在 Java 中使用 Aspose.HTML **將 HTML 轉換為 PDF**,同時 **設定 PDF 頁面尺寸**、**設定 PDF 解析度**,以及 **將 HTML 儲存為 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/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/hungarian/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index 0580662995..7c40a41123 100644 --- a/html/hungarian/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/hungarian/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,113 +1,103 @@ --- category: general -date: 2026-01-06 -description: HTML konvertálása PDF-be Java-ban egyedi oldalmérettel, margókkal és - felbontással. Tanulja meg, hogyan állíthatja be a PDF oldalméretét, és hogyan mentheti - az HTML-t PDF-ként az Aspose.HTML segítségével. +date: 2026-09-03 +description: HTML konvertálása PDF-re Java-ban egyedi page size, margins és resolution + segítségével. Ismerje meg, hogyan állítható be a pdf page size, és hogyan menthető + a html pdf formátumban az Aspose.HTML használatával. draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: hu -og_description: HTML gyors konvertálása PDF-be Java-ban. Ez az útmutató bemutatja, - hogyan állítható be a PDF oldalmérete, módosítható a felbontás, és menthető az HTML - PDF-ként az Aspose.HTML segítségével. -og_title: HTML konvertálása PDF-re Java-ban – PDF oldalméret és felbontás beállítása +lastmod: 2026-09-03 +og_description: Állítsa be a pdf page size-t, és konvertálja gyorsan a HTML-t PDF-re + Java-ban az Aspose.HTML segítségével. Ismerje meg, hogyan testreszabható a page + size, margins és resolution. +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: HTML konvertálása PDF-re Java-ban – pdf page size és resolution beállítása +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: HTML konvertálása PDF-re Java-ban – PDF oldalméret, felbontás beállítása és - HTML mentése PDF‑ként -url: /hu/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: HTML konvertálása PDF-re Java-ban – pdf page size és resolution beállítása --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# HTML PDF‑vé konvertálása Java‑ban – Teljes útmutató egyedi beállításokkal +# HTML konvertálása PDF-be Java-ban – PDF oldalméret és felbontás beállítása -Gondolkodtál már azon, hogyan **konvertálj HTML‑t PDF‑be** Java‑ban anélkül, hogy egy beállítási labirintusba ütköznél? Nem vagy egyedül. Sok fejlesztő akad el, amikor pontos kontrollra van szüksége az oldal mérete, margói vagy a kimeneti DPI felett, miközben egy weboldalt nyomtatható dokumentummá alakít. +Gondolkodtál már azon, hogyan **konvertálhatod a HTML-t PDF-be** Java-ban, miközben **beállíthatod a PDF oldalméretet** és szabályozhatod a DPI-t? Nem vagy egyedül. Sok fejlesztő akad el, amikor pontos oldalméretekre, margókra vagy képfelbontásra van szükség nyomtatható PDF-ekhez, például számlákhoz, jelentésekhez vagy e‑könyvekhez. -A jó hír? Az Aspose.HTML‑vel **HTML‑t menthetsz PDF‑ként** néhány sor kóddal, és teljes hozzáférést kapsz az olyan opciókhoz, mint a *set PDF page size* és a *set PDF resolution*. Ez a tutorial végigvezeti a teljes folyamaton, elmagyarázza, miért fontos minden beállítás, és egy kész‑futtatható példát mutat be. +A jó hír? Az Aspose.HTML segítségével **HTML-t menthetsz PDF-ként** néhány sorban, és teljes hozzáférést kapsz olyan beállításokhoz, mint a *set pdf page size* és a *set pdf resolution*. Ez az útmutató végigvezet a teljes folyamaton, elmagyarázza, miért fontos minden beállítás, és bemutat egy kész‑példát. -A végére képes leszel bármely helyi vagy távoli HTML‑fájlt magas minőségű PDF‑vé alakítani, amely tiszteletben tartja a layout követelményeidet – tökéletes számlákhoz, jelentésekhez vagy e‑könyvekhez. +A útmutató végére képes leszel bármely helyi vagy távoli HTML fájlt magas minőségű PDF-be konvertálni, amely megfelel a layout követelményeidnek – tökéletes **java generate invoice pdf** esetekhez. ---- +![HTML konvertálása PDF-be egyedi beállításokkal](image.png "html pdf konvertálás példa") +[HTML konvertálása PDF-be egyedi beállításokkal](image.png "html pdf konvertálás példa") -![Convert HTML to PDF with custom options](image.png "convert html to pdf example") +## Gyors válaszok +- **Megváltoztathatom az oldalméretet?** Igen – használd a `PdfSaveOptions.setPageSize()`-t előre definiált méretekkel vagy egyedi méretekkel. +- **Milyen DPI-t használjak nyomtatáshoz?** 300 dpi tiszta nyomtatási minőséget ad; 72 dpi elég a képernyőn megjelenő PDF-ekhez. +- **Szükségem van extra betűtípusokra?** Nem – az Aspose.HTML automatikusan beágyazza a szabványos betűtípusokat; egyedi betűtípusok a `@font-face` segítségével működnek. +- **Szükséges licenc?** Egy ingyenes próba a fejlesztéshez működik; a termeléshez kereskedelmi licenc szükséges. +- **Mely Java verzió támogatott?** JDK 8 vagy újabb (a könyvtár Java 11-re van lefordítva, de 8+ verzión is fut). -## Mit tanulhatsz meg +## Amit megtanulsz -- Hogyan tölts be egy HTML‑fájlt megfelelő base URI‑val, hogy a relatív hivatkozások feloldódjanak. -- Hogyan **állítsd be a PDF oldal méretét** (A4, Letter, egyedi méretek) és a margókat. -- Hogyan **állítsd be a PDF felbontását** (DPI) a tiszta képek és szöveg érdekében. -- A pontos kód, amely **HTML‑t ment PDF‑ként** az Aspose.HTML Java könyvtár segítségével. -- Gyakori buktatók – például hiányzó base URI vagy túl nagy képek – és hogyan kerüld el őket. +- Hogyan tölts be egy HTML fájlt megfelelő base URI-val, hogy a relatív hivatkozások feloldódjanak. +- Hogyan **set pdf page size** (A4, Letter, egyedi méretek) és margók. +- Hogyan **set pdf resolution** (DPI) a tiszta képek és szöveg érdekében. +- A pontos kód, amely szükséges a **save html as pdf** végrehajtásához az Aspose.HTML Java könyvtár használatával. +- Gyakori buktatók – például hiányzó base URI-k vagy túl nagy képek – és hogyan kerüld el őket. ### Előfeltételek -- Java Development Kit (JDK) 8 vagy újabb. -- Maven vagy Gradle a `aspose-html` (a jelenlegi írás időpontjában a 23.10-es verzió) beépítéséhez. -- Alapvető Java szintaxis ismerete. -- Egy HTML‑fájl, amelyet konvertálni szeretnél (a példákban `sample.html`‑t használunk). +- Java Development Kit (JDK) 8 vagy újabb. +- Maven vagy Gradle a `aspose-html` (a legújabb verzió íráskor 23.10) beszerzéséhez. +- Alapvető Java szintaxis ismeret. +- Egy HTML fájl, amelyet konvertálni szeretnél (a példákban a `sample.html`-t használjuk). ---- +## Hogyan állítsd be a pdf oldalméretet HTML PDF konvertálásakor -## HTML PDF‑vé konvertálása egyedi beállításokkal +Töltsd be a HTML-t, konfiguráld a `PdfSaveOptions`-t, és hívd a `save`-et. Az alábbi kétlépéses minta mindent kezel, amire szükséged van. -Az alábbiakban a teljes, futtatható program látható, amely minden lépést bemutat. Nyugodtan másold be az IDE‑dbe, módosítsd az elérési útvonalakat, és futtasd. +Az oldalméretet a `pdfOptions.setPageSize(PdfPageSize.A4)` hívással állítod be (vagy bármely más előre definiált konstanssal), vagy egy egyedi `PdfPageSize` példányt hozol létre szélességgel és magassággal pontokban. Ugyanaz az options objektum lehetővé teszi a felbontás beállítását a `pdfOptions.setResolution(300)`-val. Ez a megközelítés garantálja, hogy a generált PDF pontosan a kívánt méretekkel rendelkezzen. -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; +### Lépésről‑lépésre bontás -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); +#### 1. Projekt beállítása (html to pdf java) - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); - - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) - - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); - - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` - -### Miért fontos minden egyes lépés - -| Lépés | Cél | Tippek & széljegyek | -|------|-----|----------------------| -| **1. Base URI** | Biztosítja, hogy a `<img src="images/pic.png">` és egyéb relatív hivatkozások a megfelelő mappára mutassanak. | Ha kihagyod, a képek eltűnhetnek a kimeneti PDF‑ben. Használj `file:///`‑t helyi fájlokhoz, vagy HTTP URL‑t távoli erőforrásokhoz. | -| **2. HTML betöltése** | A HTML‑t az Aspose DOM modelljébe parse-olja. | Nagy HTML‑fájlok (>10 MB) több memóriát igényelhetnek; fontold meg a JVM heap növelését (`-Xmx2g`). | -| **3. PDF beállítások** | Oldalméreteket (`set pdf page size`), margókat és DPI‑t (`set pdf resolution`) szabályoz. | Az A4 210 × 297 mm; Letterhez használd a `PdfPageSize.LETTER`‑et. 300 DPI ideális nyomtatáshoz; 72 DPI elég képernyő‑PDF‑ekhez. | -| **4. Mentés** | A végső PDF‑t leírja a lemezre (`save html as pdf`). | A kimeneti útvonalnak írhatónak kell lennie. Felülírásvédelmet hozzáadhatsz egy fájl‑létezés ellenőrzéssel. | -| **5. Visszajelzés** | Egyszerű konzol üzenet. | Valódi alkalmazásokban cseréld le a `System.out`‑ot logger‑re. | - ---- - -## Lépés‑ről‑lépésre magyarázat - -### 1. Projekt beállítása (HTML to PDF Java) - -Ha Maven‑t használsz, add hozzá az Aspose.HTML függőséget: +Ha Maven-t használsz, add hozzá az Aspose.HTML függőséget: ```xml <dependency> @@ -117,40 +107,40 @@ Ha Maven‑t használsz, add hozzá az Aspose.HTML függőséget: </dependency> ``` -Gradle felhasználók számára: +Gradle felhasználók hozzáadhatják: ```gradle implementation 'com.aspose:aspose-html:23.10' ``` -> **Pro tipp:** A könyvtár teljesen önálló; alap konverziókhoz nincs szükség natív binárisokra vagy extra betűtípusokra. +> **Pro tip:** A könyvtár teljesen önálló; alap konverziókhoz nincs szükség natív binárisokra vagy extra betűtípusokra. Az Aspose.HTML több mint 50 esetben támogatja a HTML PDF-re konvertálását, és akár 200 MB-ig terjedő fájlokat is feldolgozhat külső natív binárisok nélkül. -### 2. Base URI definiálása +#### 2. Base URI meghatározása -A relatív URL‑ek gyakori oka a törött képeknek. A `loadOptions.setBaseUri`‑t a HTML‑t tartalmazó mappára állítva a konverter úgy oldja fel az útvonalakat, mint egy böngésző. +A relatív URL-ek gyakori oka a törött képeknek. Ha a `loadOptions.setBaseUri`-t a HTML-t tartalmazó mappára állítod, a konverter pontosan úgy oldja fel az útvonalakat, mint egy böngésző. ```java HtmlLoadOptions loadOptions = new HtmlLoadOptions(); loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); ``` -Ha a HTML külső CSS‑t vagy betűtípust hivatkozik egy CDN‑ről, kihagyhatod a base URI‑t, de figyelj a hálózati késleltetésre. +Ha a HTML külső CSS-re vagy CDN-en tárolt betűtípusokra hivatkozik, kihagyhatod a base URI-t, de figyelj a hálózati késleltetésre. -### 3. HTML dokumentum betöltése +#### 3. HTML dokumentum betöltése ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); ``` -URL‑ről is betöltheted: +Betöltheted URL-ről is: ```java HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. PDF beállítások konfigurálása – **Set PDF Page Size** & **Set PDF Resolution** +#### 4. PDF beállítások konfigurálása – **set pdf page size** & **set pdf resolution** -A `PdfSaveOptions` osztály finomhangolt vezérlést biztosít. +`PdfSaveOptions` az Aspose.HTML konfigurációs objektuma, amely a PDF kimeneti tulajdonságokat, például oldalméretet, margókat és felbontást szabályozza. ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -160,16 +150,16 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **Page Size:** Választhatsz `PdfPageSize.A4`, `LETTER`, `LEGAL` közül, vagy létrehozhatsz egy egyedi `PdfPageSize`‑t szélesség/magasság pontban megadva. -- **Resolution:** Magasabb DPI élesebb raszteres képeket eredményez, de nagyobb fájlméretet is. A legtöbb nyomtatási feladathoz a 300 DPI a megfelelő egyensúly. +- **Page size:** Válaszd a `PdfPageSize.A4`, `LETTER`, `LEGAL` közül, vagy hozz létre egy egyedi `PdfPageSize`-t szélességgel/magassággal pontokban. Az A4 210 × 297 mm; a Letter 8.5 × 11 in. +- **Resolution:** Magasabb DPI élesebb raszteres képeket eredményez, de növeli a fájlméretet; a 72 dpi-ról 300 dpi-ra váltás általában háromszorosára növeli a PDF méretét, miközben a képélesség akár 4‑szeresére javul. A legtöbb nyomtatási feladathoz a 300 dpi ideális. -### 5. Konverzió végrehajtása – **Save HTML as PDF** +#### 5. Konverzió végrehajtása – **save html as pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); ``` -A metódus automatikusan streameli a PDF‑t a célhelyre. Ha a PDF‑t memóriában szeretnéd (pl. e‑mail mellékletként), használd az `OutputStream`‑es overload‑ot: +A metódus automatikusan a PDF-et a célhelyre streameli. Ha a PDF-re memóriában van szükséged (pl. e‑mail mellékletként küldéshez), használj egy `OutputStream` túlterhelést: ```java try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { @@ -179,41 +169,37 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. Eredmény ellenőrzése - -Nyisd meg a `sample_custom.pdf`‑t bármely PDF‑olvasóval. Látnod kell: +#### 6. Eredmény ellenőrzése -- A4‑méretű oldalakat 20 pt felső/alsó margóval. -- Minden kép 300 DPI‑n renderelve (figyeld a részletességet). -- Linkek és CSS pontosan úgy alkalmazva, ahogy az eredeti HTML‑ben volt. +Nyisd meg a `sample_custom.pdf`-et bármely PDF megjelenítőben. A következőket kell látnod: -Ha valami nem stimmel, ellenőrizd a base URI‑t és győződj meg róla, hogy minden külső erőforrás elérhető. +- A4‑méretű oldalak 20 pt felső/alsó margóval. +- Minden kép 300 dpi-n renderelve (figyeld meg az élességet). +- Linkek és CSS pontosan úgy alkalmazva, mint az eredeti HTML-ben. ---- +Ha valami nem stimmel, ellenőrizd újra a base URI-t, és győződj meg róla, hogy minden külső erőforrás elérhető. -## Gyakori kérdések & széljegyek +## Gyakori kérdések és szélhelyzetek -**Q: Mi van, ha a HTML‑mym tartalmaz JavaScriptet?** -A: Az Aspose.HTML **nem** hajt végre JavaScriptet. Ha az oldal scripted által generált tartalmat tartalmaz, először rendereld le a HTML‑t (pl. headless böngészővel), majd add át a konverternek. +**Q: Mi van, ha a HTML JavaScriptet tartalmaz?** +A: Az Aspose.HTML *nem* hajt végre JavaScriptet. Ha az oldal scripted által generált tartalomra támaszkodik, előre rendereld a HTML-t (pl. egy headless böngészővel), mielőtt a konverternek adnád. -**Q: Be tudok-e ágyazni egyedi betűtípusokat?** -Igen. Helyezd a `.ttf` vagy `.otf` fájlokat ugyanabba a mappába, és hivatkozz rájuk `@font-face`‑el a CSS‑ben. A base URI biztosítja, hogy a betűtípusok megtalálhatók legyenek. +**Q: Beágyazhatok egyedi betűtípusokat?** +A: Igen. Helyezd a `.ttf` vagy `.otf` fájlokat ugyanabba a mappába, és hivatkozz rájuk a CSS‑ben `@font-face`‑el. A base URI elérhetővé teszi a betűtípusokat. -**Q: Hogyan változtassam meg a tájolást landscape‑re?** +**Q: Hogyan változtassam meg a tájolást fekvőre?** ```java saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` -**Q: A PDF‑m túl nagy – mit tehetek?** -- Csökkentsd a DPI‑t (`setResolution(150)`). -- Tömörítsd a képeket a `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`‑vel. -- Távolítsd el a forrás HTML‑ből a felesleges, nagy felbontású elemeket. - ---- +**Q: A PDF-em hatalmas – mit tehetek?** +- Csökkentsd a DPI-t (`setResolution(150)`). +- Tömörítsd a képeket a `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)` használatával. +- Távolítsd el a felesleges magas felbontású elemeket a forrás HTML-ből. -## Teljes működő példa (All‑In‑One) +## Teljes működő példa (mind‑egyben) -Az alábbi osztály készen áll a fordításra. Cseréld le a `YOUR_DIRECTORY`‑t a géped abszolút útvonalára. +Itt van a teljes osztály, amely készen áll a fordításra. Cseréld le a `YOUR_DIRECTORY`-t egy abszolút útvonalra a gépeden. ```java import com.aspose.html.converters.*; @@ -244,26 +230,81 @@ public class ConvertWithOptions { } ``` -Futtasd a programot, nyisd meg a generált PDF‑t, és látnod kell a pontosan definiált layoutot. Ez a **HTML PDF‑vé konvertálása** Java‑ban, egyedi méretezéssel és felbontással. +Futtasd a programot, nyisd meg a generált PDF-et, és látni fogod a pontosan definiált elrendezést. Ez a **convert html to pdf** Java-ban, egyedi méretezéssel és felbontással. ---- +## Következő lépések és kapcsolódó témák + +- **Batch conversion:** Egy könyvtár HTML fájljainak ciklusba vétele és PDF-ek előállítása egy lépésben. +- **Dynamic content:** Kombináld az Aspose.HTML-t egy sablonmotorral (pl. Thymeleaf) a számlák valós időben történő generálásához. +- **Security hardening:** Validáld a bemeneti HTML-t, hogy elkerüld a rosszindulatú markupot a konverzió előtt. +- **Alternative libraries:** Hasonlítsd össze az Aspose.HTML-t az OpenHTMLtoPDF vagy wkhtmltopdf könyvtárakkal specifikus szélhelyzetekben. + +Kísérletezz különböző oldalméretekkel (`PdfPageSize.LETTER`), tájolásokkal vagy akár egyedi méretekkel, ha füzetet készítesz. Az API elég rugalmas ahhoz, hogy a legtöbb *html to pdf java* esetet kezelje. + +## Gyakran ismételt kérdések + +**Q: Támogatja az Aspose.HTML más kimeneti formátumokat is?** +A: Igen – a PDF mellett közvetlenül generálhat PNG, JPEG, SVG és EPUB formátumokat HTML-ből. + +**Q: Van korlátozás az oldalak számában?** +A: Az Aspose.HTML több ezer oldalas PDF-eket is létrehozhat; a memóriahasználat alacsony marad, mivel szükség esetén az oldalakat lemezre streameli. -## Következő lépések & kapcsolódó témák +**Q: Hozzáadhatok könyvjelzőket vagy tartalomjegyzéket?** +A: Igen – használd a `PdfSaveOptions.setCreateBookmarks(true)`-t, és adj meg egy hierarchikus vázlatot a HTML-ben. -- **Kötegelt konverzió:** Egy könyvtár HTML‑fájljait egy ciklusban PDF‑vé alakítani. -- **Dinamikus tartalom:** Kombináld az Aspose.HTML‑t egy sablonmotorral (pl. Thymeleaf) a számlák valós‑időben történő generálásához. -- **Biztonsági megerősítés:** Validáld a bemeneti HTML‑t, hogy elkerüld a rosszindulatú markupot a konverzió előtt. -- **Alternatív könyvtárak:** Hasonlítsd össze az Aspose.HTML‑t az OpenHTMLtoPDF‑vel vagy a wkhtmltopdf‑vel specifikus széljegyek esetén. +**Q: Hogyan kezeld hatékonyan a nagy képeket?** +A: Állítsd be a `pdfOptions.setResolution(150)`-t, és engedélyezd a képek lecsökkentését a `pdfOptions.setImageDownsampleThreshold(150)` használatával. -Kísérletezz különböző oldalméretekkel (`PdfPageSize.LETTER`), tájolásokkal vagy akár egyedi dimenziókkal, ha füzetet készítesz. Az API elég rugalmas ahhoz, hogy a legtöbb *html to pdf java* szcenáriót lefedje. +**Q: Kompatibilis a könyvtár a Java 17-tel?** +A: Teljesen – a könyvtár Java 11-re van lefordítva, de bármely későbbi JDK-n fut, beleértve a Java 17-et és a Java 21-et. --- -## Összegzés +--- + +**Legutóbb frissítve:** 2026-09-03 +**Tesztelve a:** Aspose.HTML 23.10 for Java +**Szerző:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## Kapcsolódó oktatóanyagok + +- [Hogyan konvertáljunk HTML-t PDF-re Java - Oldalmargók beállítása az Aspose.HTML segítségével](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [PDF oldalméret módosítása Aspose.HTML for Java segítségével](/html/java/advanced-usage/adjust-pdf-page-size/) +- [Hogyan konvertáljunk HTML-t PDF-re Java – Aspose.HTML for Java használatával](/html/java/conversion-html-to-other-formats/convert-html-to-pdf/) -Áttekintettük mindazt, amire szükséged van a **HTML PDF‑vé konvertálásához** Java‑ban, miközben **set PDF page size**, **set PDF resolution**, és **save HTML as PDF** opciókat használod az Aspose.HTML‑el. A lépésről‑lépésre útmutató, a teljes kód és a hibakeresési tippek {{< /blocks/products/pf/tutorial-page-section >}} + {{< /blocks/products/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/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/indonesian/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index f5150b7451..55b5b1382a 100644 --- a/html/indonesian/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/indonesian/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,111 +1,97 @@ --- category: general -date: 2026-01-06 -description: Konversi HTML ke PDF di Java dengan ukuran halaman, margin, dan resolusi - khusus. Pelajari cara mengatur ukuran halaman PDF dan menyimpan HTML sebagai PDF - menggunakan Aspose.HTML. +date: 2026-09-03 +description: Konversi HTML ke PDF di Java dengan custom page size, margins, dan resolution. + Pelajari cara set pdf page size dan menyimpan html sebagai pdf menggunakan Aspose.HTML. draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: id -og_description: Konversi HTML ke PDF di Java dengan cepat. Panduan ini menunjukkan - cara mengatur ukuran halaman PDF, menyesuaikan resolusi, dan menyimpan HTML sebagai - PDF dengan Aspose.HTML. -og_title: Konversi HTML ke PDF di Java – Atur Ukuran Halaman & Resolusi PDF +lastmod: 2026-09-03 +og_description: Set pdf page size dan konversi HTML ke PDF di Java dengan cepat menggunakan + Aspose.HTML. Pelajari cara customize page size, margins, dan resolution. +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: Konversi HTML ke PDF di Java – set pdf page size and resolution +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: Konversi HTML ke PDF di Java – Atur Ukuran Halaman PDF, Resolusi, dan Simpan - HTML sebagai PDF -url: /id/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: Konversi HTML ke PDF di Java – set pdf page size and resolution --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Mengonversi HTML ke PDF di Java – Panduan Lengkap dengan Opsi Kustom - -Pernah bertanya-tanya bagaimana cara **convert HTML to PDF** di Java tanpa harus berurusan dengan sekumpulan pengaturan yang rumit? Anda tidak sendirian. Banyak pengembang menemui kebuntuan ketika mereka membutuhkan kontrol yang tepat atas ukuran halaman, margin, atau DPI output saat mengubah halaman web menjadi dokumen yang dapat dicetak. +# Mengonversi HTML ke PDF di Java – atur ukuran halaman pdf dan resolusi -Berita baiknya? Dengan Aspose.HTML Anda dapat **save HTML as PDF** hanya dengan beberapa baris kode, dan Anda mendapatkan akses penuh ke opsi seperti *set PDF page size* dan *set PDF resolution*. Tutorial ini akan memandu Anda melalui seluruh proses, menjelaskan mengapa setiap pengaturan penting, dan menunjukkan contoh yang siap dijalankan. +Pernah bertanya-tanya bagaimana cara **convert HTML to PDF** di Java sekaligus dapat **set pdf page size** dan mengontrol DPI? Anda tidak sendirian. Banyak pengembang mengalami kesulitan ketika mereka membutuhkan dimensi halaman yang tepat, margin, atau resolusi gambar untuk PDF yang dapat dicetak seperti faktur, laporan, atau e‑book. -Pada akhir panduan ini Anda akan dapat mengambil file HTML lokal atau remote apa pun dan menghasilkan PDF berkualitas tinggi yang menghormati persyaratan tata letak Anda—sempurna untuk faktur, laporan, atau e‑book. +Berita baik? Dengan Aspose.HTML Anda dapat **save HTML as PDF** dalam beberapa baris saja, dan Anda mendapatkan akses penuh ke opsi seperti *set pdf page size* dan *set pdf resolution*. Tutorial ini memandu Anda melalui seluruh proses, menjelaskan mengapa setiap pengaturan penting, dan menunjukkan contoh yang siap dijalankan. ---- +Pada akhir panduan ini Anda akan dapat mengambil file HTML lokal atau remote apa pun dan menghasilkan PDF berkualitas tinggi yang menghormati persyaratan tata letak Anda—sempurna untuk skenario **java generate invoice pdf**. -![Konversi HTML ke PDF dengan opsi khusus](image.png "contoh konversi html ke pdf") +![Convert HTML to PDF with custom options](image.png "convert html to pdf example") +[Convert HTML to PDF with custom options](image.png "convert html to pdf example") -## Apa yang Akan Anda Pelajari +## Jawaban Cepat +- **Bisakah saya mengubah ukuran halaman?** Ya – gunakan `PdfSaveOptions.setPageSize()` dengan ukuran yang telah ditentukan atau dimensi khusus. +- **DPI berapa yang harus saya gunakan untuk cetak?** 300 dpi memberikan kualitas cetak yang tajam; 72 dpi cukup untuk PDF di layar. +- **Apakah saya memerlukan font tambahan?** Tidak – Aspose.HTML menyematkan font standar secara otomatis; font khusus dapat bekerja melalui `@font-face`. +- **Apakah lisensi diperlukan?** Versi percobaan gratis dapat digunakan untuk pengembangan; lisensi komersial diperlukan untuk produksi. +- **Versi Java apa yang didukung?** JDK 8 atau yang lebih baru (perpustakaan ini dikompilasi untuk Java 11 tetapi dapat berjalan pada 8+). -- Cara memuat file HTML dengan base URI yang tepat sehingga tautan relatif dapat diresolusikan. -- Cara **set PDF page size** (A4, Letter, dimensi khusus) dan margin. -- Cara **set PDF resolution** (DPI) untuk gambar dan teks yang tajam. -- Kode tepat yang diperlukan untuk **save HTML as PDF** menggunakan pustaka Aspose.HTML Java. -- Kendala umum—seperti base URI yang hilang atau gambar berukuran terlalu besar—dan cara menghindarinya. +## Apa yang akan Anda pelajari +- Cara memuat file HTML dengan base URI yang tepat sehingga tautan relatif dapat diresolusikan. +- Cara **set pdf page size** (A4, Letter, dimensi khusus) dan margin. +- Cara **set pdf resolution** (DPI) untuk gambar dan teks yang tajam. +- Kode tepat yang diperlukan untuk **save html as pdf** menggunakan pustaka Aspose.HTML Java. +- Jebakan umum—seperti base URI yang hilang atau gambar berukuran terlalu besar—dan cara menghindarinya. ### Prasyarat - -- Java Development Kit (JDK) 8 atau yang lebih baru. -- Maven atau Gradle untuk mengunduh `aspose-html` (versi terbaru saat penulisan adalah 23.10). -- Pemahaman dasar tentang sintaks Java. +- Java Development Kit (JDK) 8 atau yang lebih baru. +- Maven atau Gradle untuk menarik `aspose-html` (versi terbaru pada saat penulisan adalah 23.10). +- Pemahaman dasar tentang sintaks Java. - File HTML yang ingin Anda konversi (kami akan menggunakan `sample.html` dalam contoh). ---- +## Cara mengatur ukuran halaman pdf saat mengonversi HTML ke PDF -## Mengonversi HTML ke PDF dengan Opsi Kustom +Muat HTML Anda, konfigurasikan `PdfSaveOptions`, dan panggil `save`. Pola dua langkah di bawah ini menangani semua yang Anda butuhkan. -Berikut adalah program lengkap yang dapat dijalankan yang menunjukkan setiap langkah. Silakan salin‑tempel ke IDE Anda, sesuaikan jalur, dan jalankan. +Anda mengatur ukuran halaman dengan memanggil `pdfOptions.setPageSize(PdfPageSize.A4)` (atau konstanta lain yang telah ditentukan) atau dengan membuat instance `PdfPageSize` khusus dengan lebar dan tinggi dalam poin. Objek opsi yang sama juga memungkinkan Anda mengatur resolusi dengan `pdfOptions.setResolution(300)`. Pendekatan ini menjamin PDF yang dihasilkan memiliki dimensi tepat yang Anda perlukan. -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; +### Rincian Langkah‑per‑Langkah -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); - - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); - - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) - - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); - - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` - -### Mengapa Setiap Langkah Penting - -| Langkah | Tujuan | Tips & Kasus Tepi | -|------|---------|-------------------| -| **1. Base URI** | Menjamin bahwa `<img src="images/pic.png">` dan tautan relatif lainnya mengarah ke folder yang tepat. | Jika Anda melewatkannya, gambar dapat menghilang pada PDF output. Gunakan `file:///` untuk file lokal, atau URL HTTP untuk sumber daya remote. | -| **2. Load HTML** | Mengurai HTML ke dalam model DOM Aspose. | File HTML besar (>10 MB) mungkin memerlukan memori lebih; pertimbangkan meningkatkan heap JVM (`-Xmx2g`). | -| **3. PDF Options** | Mengontrol dimensi halaman (`set pdf page size`), margin, dan DPI (`set pdf resolution`). | A4 adalah 210 × 297 mm; untuk Letter gunakan `PdfPageSize.LETTER`. DPI 300 ideal untuk cetak; 72 cukup untuk PDF yang hanya ditampilkan di layar. | -| **4. Save** | Menulis PDF akhir ke disk (`save html as pdf`). | Jalur output harus dapat ditulisi. Perlindungan penimpaan dapat ditambahkan dengan pengecekan keberadaan file. | -| **5. Confirmation** | Umpan balik sederhana di konsol. | Pada aplikasi nyata ganti `System.out` dengan logger. | - ---- - -## Penjabaran Langkah‑per‑Langkah - -### 1. Siapkan Proyek Anda (HTML to PDF Java) +#### 1. Siapkan proyek Anda (html to pdf java) Jika Anda menggunakan Maven, tambahkan dependensi Aspose.HTML: @@ -123,20 +109,20 @@ Pengguna Gradle dapat menambahkan: implementation 'com.aspose:aspose-html:23.10' ``` -> **Pro tip:** Pustaka ini sepenuhnya mandiri; Anda tidak memerlukan binari native atau font tambahan untuk konversi dasar. +> **Pro tip:** Perpustakaan ini sepenuhnya mandiri; Anda tidak memerlukan binary native atau font tambahan untuk konversi dasar. Aspose.HTML mendukung konversi HTML ke PDF dalam lebih dari 50 skenario dan dapat memproses file hingga 200 MB tanpa binary native eksternal. -### 2. Tentukan Base URI +#### 2. Tentukan base URI -URL relatif adalah sumber umum gambar yang rusak. Dengan mengarahkan `loadOptions.setBaseUri` ke folder yang berisi HTML Anda, konverter dapat menyelesaikan jalur persis seperti yang dilakukan browser. +URL relatif adalah sumber umum gambar yang rusak. Dengan mengarahkan `loadOptions.setBaseUri` ke folder yang berisi HTML Anda, Anda memungkinkan konverter menyelesaikan jalur persis seperti browser. ```java HtmlLoadOptions loadOptions = new HtmlLoadOptions(); loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); ``` -Jika HTML Anda merujuk ke CSS atau font eksternal yang di‑host di CDN, Anda dapat melewatkan base URI, tetapi perhatikan latensi jaringan. +Jika HTML Anda merujuk ke CSS eksternal atau font yang dihosting di CDN, Anda dapat melewatkan base URI, tetapi perhatikan latensi jaringan. -### 3. Muat Dokumen HTML +#### 3. Muat dokumen HTML ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); @@ -148,9 +134,9 @@ Anda juga dapat memuat dari URL: HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. Konfigurasi PDF Options – **Set PDF Page Size** & **Set PDF Resolution** +#### 4. Konfigurasikan opsi PDF – **set pdf page size** & **set pdf resolution** -Kelas `PdfSaveOptions` memberi Anda kontrol yang sangat detail. +`PdfSaveOptions` adalah objek konfigurasi Aspose.HTML yang mengontrol properti output PDF seperti ukuran halaman, margin, dan resolusi. ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -160,16 +146,16 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **Page Size:** Pilih dari `PdfPageSize.A4`, `LETTER`, `LEGAL`, atau buat `PdfPageSize` khusus dengan lebar/tinggi dalam poin. -- **Resolution:** DPI yang lebih tinggi menghasilkan gambar raster yang lebih tajam tetapi meningkatkan ukuran file. Untuk kebanyakan pekerjaan cetak, 300 DPI adalah titik optimal. +- **Page size:** Pilih dari `PdfPageSize.A4`, `LETTER`, `LEGAL`, atau buat `PdfPageSize` khusus dengan lebar/tinggi dalam poin. A4 berukuran 210 × 297 mm; Letter berukuran 8.5 × 11 in. +- **Resolution:** DPI yang lebih tinggi menghasilkan gambar raster yang lebih tajam tetapi juga meningkatkan ukuran file; berpindah dari 72 dpi ke 300 dpi biasanya melipatgandakan ukuran PDF tiga kali sambil meningkatkan ketajaman gambar hingga 4×. Untuk kebanyakan pekerjaan cetak, 300 dpi adalah titik optimal. -### 5. Lakukan Konversi – **Save HTML as PDF** +#### 5. Lakukan konversi – **save html as pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); ``` -Metode ini secara otomatis menyalurkan PDF ke lokasi target. Jika Anda memerlukan PDF dalam memori (misalnya, untuk dikirim sebagai lampiran email), gunakan overload `OutputStream`: +Metode ini secara otomatis men-stream PDF ke lokasi target. Jika Anda memerlukan PDF dalam memori (mis., untuk dikirim sebagai lampiran email), gunakan overload `OutputStream`: ```java try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { @@ -179,41 +165,36 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. Verifikasi Hasilnya +#### 6. Verifikasi hasil Buka `sample_custom.pdf` di penampil PDF apa pun. Anda harus melihat: -- Halaman berukuran A4 dengan margin atas/bawah 20 pt. -- Semua gambar dirender pada 300 DPI (perhatikan ketajamannya). -- Tautan dan CSS diterapkan persis seperti pada HTML asli. +- Halaman berukuran A4 dengan margin atas/bawah 20 pt. +- Semua gambar dirender pada 300 dpi (perhatikan ketajamannya). +- Tautan dan CSS diterapkan persis seperti di HTML asli. -Jika ada yang tampak tidak beres, periksa kembali base URI dan pastikan semua sumber daya eksternal dapat dijangkau. - ---- +Jika ada yang terlihat tidak tepat, periksa kembali base URI dan pastikan semua sumber daya eksternal dapat dijangkau. -## Pertanyaan Umum & Kasus Tepi +## Pertanyaan umum & kasus tepi +**Q: Bagaimana jika HTML saya berisi JavaScript?** +A: Aspose.HTML *tidak* mengeksekusi JavaScript. Jika halaman Anda bergantung pada konten yang dihasilkan skrip, pra‑render HTML (mis., dengan browser headless) sebelum memberi ke konverter. -**T: Bagaimana jika HTML saya berisi JavaScript?** -J: Aspose.HTML *tidak* mengeksekusi JavaScript. Jika halaman Anda bergantung pada konten yang dihasilkan skrip, render HTML terlebih dahulu (misalnya, dengan browser headless) sebelum memberikannya ke konverter. +**Q: Bisakah saya menyematkan font khusus?** +A: Ya. Letakkan file `.ttf` atau `.otf` di folder yang sama dan referensikan melalui `@font-face` di CSS Anda. Base URI akan membuat font dapat ditemukan. -**T: Bisakah saya menyematkan font kustom?** -J: Ya. Letakkan file `.ttf` atau `.otf` di folder yang sama dan referensikan melalui `@font-face` di CSS Anda. Base URI akan membuat font dapat ditemukan. - -**T: Bagaimana cara mengubah orientasi menjadi landscape?** +**Q: Bagaimana cara mengubah orientasi menjadi landscape?** ```java saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` -**T: PDF saya terlalu besar—apa yang bisa saya lakukan?** -- Kurangi DPI (`setResolution(150)`). -- Kompres gambar dengan `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. +**Q: PDF saya sangat besar—apa yang dapat saya lakukan?** +- Kurangi DPI (`setResolution(150)`). +- Kompres gambar dengan `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. - Hapus aset beresolusi tinggi yang tidak diperlukan dari HTML sumber. ---- - -## Contoh Lengkap yang Siap Pakai (All‑In‑One) +## Contoh kerja penuh (all‑in‑one) -Berikut seluruh kelas siap dikompilasi. Ganti `YOUR_DIRECTORY` dengan jalur absolut di mesin Anda. +Berikut seluruh kelas siap untuk dikompilasi. Ganti `YOUR_DIRECTORY` dengan path absolut di mesin Anda. ```java import com.aspose.html.converters.*; @@ -244,26 +225,77 @@ public class ConvertWithOptions { } ``` -Jalankan program, buka PDF yang dihasilkan, dan Anda akan melihat tata letak persis seperti yang Anda definisikan. Itulah **convert HTML to PDF** di Java, lengkap dengan ukuran dan resolusi yang dapat disesuaikan. +Jalankan program, buka PDF yang dihasilkan, dan Anda akan melihat tata letak tepat yang Anda definisikan. Itu adalah **convert html to pdf** di Java, lengkap dengan ukuran dan resolusi khusus. ---- +## Langkah selanjutnya & topik terkait +- **Batch conversion:** Loop over a directory of HTML files and produce PDFs in one go. +- **Dynamic content:** Combine Aspose.HTML with a templating engine (e.g., Thymeleaf) to generate invoices on the fly. +- **Security hardening:** Validate input HTML to avoid malicious markup before conversion. +- **Alternative libraries:** Compare Aspose.HTML with OpenHTMLtoPDF or wkhtmltopdf for specific edge cases. + +Eksperimen dengan berbagai ukuran halaman (`PdfPageSize.LETTER`), orientasi, atau bahkan dimensi khusus jika Anda menyiapkan booklet. API cukup fleksibel untuk menangani sebagian besar skenario *html to pdf java* yang akan Anda temui. -## Langkah Selanjutnya & Topik Terkait +## Pertanyaan yang sering diajukan +**Q: Apakah Aspose.HTML mendukung format output lain?** +A: Ya – selain PDF, ia dapat menghasilkan PNG, JPEG, SVG, dan EPUB langsung dari HTML. -- **Batch conversion:** Loop melalui direktori file HTML dan hasilkan PDF secara massal. -- **Dynamic content:** Gabungkan Aspose.HTML dengan mesin templating (misalnya, Thymeleaf) untuk menghasilkan faktur secara dinamis. -- **Security hardening:** Validasi HTML input untuk menghindari markup berbahaya sebelum konversi. -- **Alternative libraries:** Bandingkan Aspose.HTML dengan OpenHTMLtoPDF atau wkhtmltopdf untuk kasus tepi tertentu. +**Q: Apakah ada batasan jumlah halaman?** +A: Aspose.HTML dapat membuat PDF dengan ribuan halaman; penggunaan memori tetap rendah karena ia men-stream halaman ke disk saat diperlukan. -Bereksperimenlah dengan berbagai ukuran halaman (`PdfPageSize.LETTER`), orientasi, atau bahkan dimensi khusus jika Anda menyiapkan booklet. API ini cukup fleksibel untuk menangani hampir semua skenario *html to pdf java* yang Anda temui. +**Q: Bisakah saya menambahkan bookmark atau tabel isi?** +A: Ya – gunakan `PdfSaveOptions.setCreateBookmarks(true)` dan sediakan outline hierarkis di HTML. + +**Q: Bagaimana cara menangani gambar besar secara efisien?** +A: Atur `pdfOptions.setResolution(150)` dan aktifkan down‑sampling gambar via `pdfOptions.setImageDownsampleThreshold(150)`. + +**Q: Apakah perpustakaan ini kompatibel dengan Java 17?** +A: Tentu – perpustakaan ini dikompilasi untuk Java 11 tetapi berjalan pada JDK mana pun yang lebih baru, termasuk Java 17 dan Java 21. --- -## Kesimpulan +**Terakhir Diperbarui:** 2026-09-03 +**Diuji dengan:** Aspose.HTML 23.10 untuk Java +**Penulis:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## Tutorial Terkait + +- [Cara Mengonversi HTML ke PDF Java - Atur Margin Halaman dengan Aspose.HTML](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [Sesuaikan Ukuran Halaman PDF dengan Aspose.HTML untuk Java](/html/java/advanced-usage/adjust-pdf-page-size/) +- [Cara Mengonversi HTML ke PDF Java – Menggunakan Aspose.HTML untuk Java](/html/java/conversion-html-to-other-formats/convert-html-to-pdf/) -Kami telah membahas semua yang Anda perlukan untuk **convert HTML to PDF** di Java sambil **set PDF page size**, **set PDF resolution**, dan **save HTML as PDF** menggunakan Aspose.HTML. Panduan langkah‑per‑langkah, kode lengkap, dan pemecahan masalah {{< /blocks/products/pf/tutorial-page-section >}} + {{< /blocks/products/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/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/italian/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index 082df89c6b..a51d83122b 100644 --- a/html/italian/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/italian/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,106 +1,101 @@ --- category: general -date: 2026-01-06 -description: Converti HTML in PDF in Java con dimensioni della pagina personalizzate, - margini e risoluzione. Scopri come impostare la dimensione della pagina PDF e salvare - l'HTML come PDF usando Aspose.HTML. +date: 2026-09-03 +description: Converti HTML in PDF in Java con page size personalizzato, margins e + resolution. Scopri come impostare pdf page size e salvare html come pdf usando Aspose.HTML. draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: it -og_description: Converti HTML in PDF in Java rapidamente. Questa guida mostra come - impostare le dimensioni della pagina PDF, regolare la risoluzione e salvare l'HTML - come PDF con Aspose.HTML. -og_title: Converti HTML in PDF in Java – Imposta dimensione e risoluzione della pagina - PDF +lastmod: 2026-09-03 +og_description: Imposta pdf page size e converti HTML in PDF in Java rapidamente con + Aspose.HTML. Scopri come personalizzare page size, margins e resolution. +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: Converti HTML in PDF in Java – imposta pdf page size e resolution +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: Converti HTML in PDF in Java – Imposta la dimensione della pagina PDF, la risoluzione - e salva HTML come PDF -url: /it/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: Converti HTML in PDF in Java – imposta pdf page size e resolution --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Convertire HTML in PDF in Java – Guida completa con opzioni personalizzate +# Converti HTML in PDF in Java – imposta dimensione pagina pdf e risoluzione -Ti sei mai chiesto come **convertire HTML in PDF** in Java senza dover combattere un labirinto di impostazioni? Non sei l'unico. Molti sviluppatori si trovano in difficoltà quando hanno bisogno di un controllo preciso su dimensione della pagina, margini o DPI di output mentre trasformano una pagina web in un documento stampabile. +Ti sei mai chiesto come **convertire HTML in PDF** in Java potendo anche **impostare la dimensione della pagina pdf** e controllare i DPI? Non sei solo. Molti sviluppatori si trovano in difficoltà quando hanno bisogno di dimensioni precise della pagina, margini o risoluzione delle immagini per PDF stampabili come fatture, report o e‑book. -La buona notizia? Con Aspose.HTML puoi **salvare HTML come PDF** in poche righe, e ottieni pieno accesso a opzioni come *set PDF page size* e *set PDF resolution*. Questo tutorial ti guida attraverso l'intero processo, spiega perché ogni impostazione è importante e ti mostra un esempio pronto all'uso. +La buona notizia? Con Aspose.HTML puoi **salvare HTML come PDF** in poche righe, e ottieni pieno accesso a opzioni come *impostare la dimensione della pagina pdf* e *impostare la risoluzione pdf*. Questo tutorial ti guida attraverso l’intero processo, spiega perché ogni impostazione è importante e ti mostra un esempio pronto all’uso. -Alla fine di questa guida sarai in grado di prendere qualsiasi file HTML locale o remoto e produrre un PDF di alta qualità che rispetta i requisiti di layout—perfetto per fatture, report o e‑book. +Alla fine di questa guida sarai in grado di prendere qualsiasi file HTML locale o remoto e produrre un PDF di alta qualità che rispetti i requisiti di layout — perfetto per scenari **java generate invoice pdf**. + +--- ![Converti HTML in PDF con opzioni personalizzate](image.png "esempio di conversione html in pdf") +[Converti HTML in PDF con opzioni personalizzate](image.png "esempio di conversione html in pdf") + +## Risposte rapide +- **Posso cambiare la dimensione della pagina?** Sì – usa `PdfSaveOptions.setPageSize()` con dimensioni predefinite o personalizzate. +- **Quali DPI devo usare per la stampa?** 300 dpi garantiscono una qualità di stampa nitida; 72 dpi sono sufficienti per PDF visualizzati su schermo. +- **Ho bisogno di font aggiuntivi?** No – Aspose.HTML incorpora automaticamente i font standard; i font personalizzati funzionano tramite `@font-face`. +- **È necessaria una licenza?** Una prova gratuita è sufficiente per lo sviluppo; per la produzione è necessaria una licenza commerciale. +- **Quale versione di Java è supportata?** JDK 8 o superiore (la libreria è compilata per Java 11 ma funziona su 8+). ## Cosa imparerai -- Come caricare un file HTML con un base URI corretto in modo che i link relativi vengano risolti. -- Come **set PDF page size** (A4, Letter, dimensioni personalizzate) e i margini. -- Come **set PDF resolution** (DPI) per immagini e testo nitidi. -- Il codice esatto necessario per **save HTML as PDF** usando la libreria Aspose.HTML per Java. -- Problemi comuni—come base URI mancanti o immagini troppo grandi—e come evitarli. +- Come caricare un file HTML con un URI base corretto affinché i collegamenti relativi vengano risolti. +- Come **impostare la dimensione della pagina pdf** (A4, Letter, dimensioni personalizzate) e i margini. +- Come **impostare la risoluzione pdf** (DPI) per immagini e testo nitidi. +- Il codice esatto necessario per **salvare html come pdf** usando la libreria Aspose.HTML per Java. +- Problemi comuni — come URI base mancanti o immagini troppo grandi — e come evitarli. ### Prerequisiti -- Java Development Kit (JDK) 8 o più recente. -- Maven o Gradle per includere `aspose-html` (l'ultima versione al momento della stesura è 23.10). -- Una conoscenza di base della sintassi Java. -- Un file HTML che desideri convertire (useremo `sample.html` negli esempi). +- Java Development Kit (JDK) 8 o superiore. +- Maven o Gradle per includere `aspose-html` (l’ultima versione al momento della scrittura è 23.10). +- Una conoscenza di base della sintassi Java. +- Un file HTML da convertire (useremo `sample.html` negli esempi). -## Convertire HTML in PDF con opzioni personalizzate +## Come impostare la dimensione della pagina pdf quando si converte HTML in PDF -Di seguito trovi il programma completo, eseguibile, che dimostra ogni passaggio. Sentiti libero di copiarlo‑incollarlo nel tuo IDE, modificare i percorsi e premere Run. +Carica il tuo HTML, configura `PdfSaveOptions` e chiama `save`. Il modello a due passaggi qui sotto gestisce tutto ciò di cui hai bisogno. -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; +Imposti la dimensione della pagina chiamando `pdfOptions.setPageSize(PdfPageSize.A4)` (o qualsiasi altra costante predefinita) oppure creando un’istanza personalizzata di `PdfPageSize` con larghezza e altezza in punti. Lo stesso oggetto opzioni ti permette anche di impostare la risoluzione con `pdfOptions.setResolution(300)`. Questo approccio garantisce che il PDF generato corrisponda esattamente alle dimensioni richieste. -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); +### Analisi passo‑passo - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); - - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) - - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); - - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` - -### Perché ogni passaggio è importante - -| Passo | Scopo | Suggerimenti e casi particolari | -|-------|-------|---------------------------------| -| **1. Base URI** | Garantisce che `<img src="images/pic.png">` e altri link relativi puntino alla cartella corretta. | Se lo ometti, le immagini potrebbero scomparire nel PDF di output. Usa `file:///` per file locali, o un URL HTTP per risorse remote. | -| **2. Load HTML** | Analizza l'HTML nel modello DOM di Aspose. | File HTML di grandi dimensioni (>10 MB) potrebbero richiedere più memoria; considera di aumentare l'heap JVM (`-Xmx2g`). | -| **3. PDF Options** | Controlla le dimensioni della pagina (`set pdf page size`), i margini e il DPI (`set pdf resolution`). | A4 è 210 × 297 mm; per Letter usa `PdfPageSize.LETTER`. Un DPI di 300 è ideale per la stampa; 72 è sufficiente per PDF destinati solo allo schermo. | -| **4. Save** | Scrive il PDF finale su disco (`save html as pdf`). | Il percorso di output deve essere scrivibile. È possibile aggiungere una protezione da sovrascrittura verificando l'esistenza del file. | -| **5. Confirmation** | Feedback semplice sulla console. | In applicazioni reali sostituisci `System.out` con un logger. | - -## Analisi passo‑a‑passo - -### 1. Configura il tuo progetto (HTML to PDF Java) +#### 1. Configura il tuo progetto (html to pdf java) Se usi Maven, aggiungi la dipendenza Aspose.HTML: @@ -118,9 +113,9 @@ Gli utenti Gradle possono aggiungere: implementation 'com.aspose:aspose-html:23.10' ``` -> **Consiglio:** La libreria è completamente autonoma; non hai bisogno di binari nativi o font aggiuntivi per le conversioni di base. +> **Suggerimento:** La libreria è completamente autonoma; non servono binari nativi o font extra per le conversioni di base. Aspose.HTML supporta la conversione da HTML a PDF in oltre 50 scenari e può elaborare file fino a 200 MB senza binari nativi esterni. -### 2. Definisci il Base URI +#### 2. Definisci l'URI base Gli URL relativi sono una fonte comune di immagini rotte. Puntando `loadOptions.setBaseUri` alla cartella che contiene il tuo HTML, permetti al convertitore di risolvere i percorsi esattamente come farebbe un browser. @@ -129,9 +124,9 @@ HtmlLoadOptions loadOptions = new HtmlLoadOptions(); loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); ``` -Se il tuo HTML fa riferimento a CSS o font esterni ospitati su un CDN, puoi omettere il base URI, ma tieni d'occhio la latenza di rete. +Se il tuo HTML fa riferimento a CSS o font esterni ospitati su un CDN, puoi omettere l'URI base, ma tieni d'occhio la latenza di rete. -### 3. Carica il documento HTML +#### 3. Carica il documento HTML ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); @@ -143,9 +138,9 @@ Puoi anche caricare da un URL: HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. Configura le opzioni PDF – **Set PDF Page Size** & **Set PDF Resolution** +#### 4. Configura le opzioni PDF – **set pdf page size** & **set pdf resolution** -La classe `PdfSaveOptions` ti offre un controllo fine. +`PdfSaveOptions` è l’oggetto di configurazione di Aspose.HTML che controlla le proprietà di output del PDF, come dimensione pagina, margini e risoluzione. ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -155,16 +150,16 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **Page Size:** Scegli tra `PdfPageSize.A4`, `LETTER`, `LEGAL`, o crea un `PdfPageSize` personalizzato con larghezza/altezza in punti. -- **Resolution:** Un DPI più alto produce immagini raster più nitide ma aumenta la dimensione del file. Per la maggior parte dei lavori di stampa 300 DPI è un buon compromesso. +- **Dimensione pagina:** Scegli tra `PdfPageSize.A4`, `LETTER`, `LEGAL`, o crea un `PdfPageSize` personalizzato con larghezza/altezza in punti. A4 misura 210 × 297 mm; Letter misura 8,5 × 11 in. +- **Risoluzione:** DPI più alti producono immagini raster più nitide ma aumentano anche la dimensione del file; passare da 72 dpi a 300 dpi tipicamente triplica la dimensione del PDF migliorando la nitidezza delle immagini fino a 4×. Per la maggior parte dei lavori di stampa 300 dpi è un buon compromesso. -### 5. Esegui la conversione – **Save HTML as PDF** +#### 5. Esegui la conversione – **save html as pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); ``` -Il metodo trasmette automaticamente il PDF nella posizione di destinazione. Se hai bisogno del PDF in memoria (ad esempio, per inviarlo come allegato email), usa la sovraccarico con `OutputStream`: +Il metodo trasmette automaticamente il PDF nella destinazione indicata. Se ti serve il PDF in memoria (ad esempio per inviarlo come allegato email), usa la sovraccarico con `OutputStream`: ```java try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { @@ -174,37 +169,37 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. Verifica il risultato +#### 6. Verifica il risultato Apri `sample_custom.pdf` in qualsiasi visualizzatore PDF. Dovresti vedere: -- Pagine di formato A4 con margini superiori/inferiori di 20 pt. -- Tutte le immagini renderizzate a 300 DPI (nota la nitidezza). -- Link e CSS applicati esattamente come nell'HTML originale. +- Pagine di dimensione A4 con margini superiori/inferiori di 20 pt. +- Tutte le immagini renderizzate a 300 dpi (nota la nitidezza). +- Collegamenti e CSS applicati esattamente come nell’HTML originale. -Se qualcosa sembra sbagliato, ricontrolla il base URI e assicurati che tutte le risorse esterne siano raggiungibili. +Se qualcosa sembra sbagliato, ricontrolla l'URI base e assicurati che tutte le risorse esterne siano raggiungibili. -## Domande frequenti e casi particolari +## Domande comuni & casi limite -**D: E se il mio HTML contiene JavaScript?** -R: Aspose.HTML *non* esegue JavaScript. Se la tua pagina dipende da contenuti generati da script, pre‑renderizza l'HTML (ad esempio, con un browser headless) prima di passarlo al convertitore. +**D: Cosa succede se il mio HTML contiene JavaScript?** +R: Aspose.HTML *non* esegue JavaScript. Se la tua pagina dipende da contenuti generati da script, pre‑renderizza l’HTML (ad esempio con un browser headless) prima di passarlo al convertitore. **D: Posso incorporare font personalizzati?** -R: Sì. Posiziona i file `.ttf` o `.otf` nella stessa cartella e riferiscili tramite `@font-face` nel tuo CSS. Il base URI renderà i font individuabili. +R: Sì. Metti i file `.ttf` o `.otf` nella stessa cartella e riferiscili tramite `@font-face` nel tuo CSS. L'URI base renderà i font individuabili. -**D: Come cambio l'orientamento in orizzontale?** +**D: Come cambio l’orientamento in orizzontale?** ```java saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` -**D: Il mio PDF è enorme—cosa posso fare?** -- Riduci il DPI (`setResolution(150)`). -- Comprimi le immagini con `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. -- Rimuovi le risorse ad alta risoluzione non necessarie dall'HTML di origine. +**D: Il mio PDF è enorme — cosa posso fare?** +- Riduci i DPI (`setResolution(150)`). +- Comprimi le immagini con `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. +- Rimuovi asset ad alta risoluzione non necessari dall’HTML di origine. -## Esempio completo (tutto in uno) +## Esempio completo (tutto‑in‑uno) -Ecco l'intera classe pronta per la compilazione. Sostituisci `YOUR_DIRECTORY` con un percorso assoluto sulla tua macchina. +Ecco l’intera classe pronta per la compilazione. Sostituisci `YOUR_DIRECTORY` con un percorso assoluto sulla tua macchina. ```java import com.aspose.html.converters.*; @@ -235,22 +230,81 @@ public class ConvertWithOptions { } ``` -Esegui il programma, apri il PDF generato e vedrai il layout esatto che hai definito. Questo è **convert HTML to PDF** in Java, completo di dimensioni e risoluzione personalizzate. +Esegui il programma, apri il PDF generato e vedrai il layout esattamente come definito. Questo è **convert html to pdf** in Java, completo di dimensioni e risoluzione personalizzate. + +## Prossimi passi & argomenti correlati + +- **Conversione batch:** Scorri una directory di file HTML e genera PDF in un’unica operazione. +- **Contenuto dinamico:** Combina Aspose.HTML con un motore di template (ad esempio Thymeleaf) per generare fatture al volo. +- **Rinforzo della sicurezza:** Convalida l’HTML in ingresso per evitare markup dannoso prima della conversione. +- **Librerie alternative:** Confronta Aspose.HTML con OpenHTMLtoPDF o wkhtmltopdf per casi limite specifici. + +Sperimenta con diverse dimensioni di pagina (`PdfPageSize.LETTER`), orientamenti o anche dimensioni personalizzate se stai preparando un opuscolo. L’API è sufficientemente flessibile da gestire la maggior parte degli scenari *html to pdf java* che incontrerai. + +## Domande frequenti -## Prossimi passi e argomenti correlati +**D: Aspose.HTML supporta altri formati di output?** +R: Sì — oltre al PDF può generare PNG, JPEG, SVG ed EPUB direttamente da HTML. -- **Conversione batch:** Scorri una directory di file HTML e genera PDF in un unico passaggio. -- **Contenuto dinamico:** Combina Aspose.HTML con un motore di templating (ad esempio, Thymeleaf) per generare fatture al volo. -- **Rinforzo della sicurezza:** Convalida l'HTML in ingresso per evitare markup dannoso prima della conversione. -- **Librerie alternative:** Confronta Aspose.HTML con OpenHTMLtoPDF o wkhtmltopdf per casi particolari specifici. +**D: C’è un limite al numero di pagine?** +R: Aspose.HTML può creare PDF con migliaia di pagine; l’utilizzo di memoria rimane basso perché le pagine vengono scritte su disco quando necessario. -Sperimenta con diverse dimensioni di pagina (`PdfPageSize.LETTER`), orientamenti o anche dimensioni personalizzate se stai preparando un opuscolo. L'API è sufficientemente flessibile da gestire la maggior parte degli scenari *html to pdf java* che incontrerai. +**D: Posso aggiungere segnalibri o indice?** +R: Sì — usa `PdfSaveOptions.setCreateBookmarks(true)` e fornisci una struttura gerarchica nell’HTML. -## Conclusione +**D: Come gestire immagini di grandi dimensioni in modo efficiente?** +R: Imposta `pdfOptions.setResolution(150)` e abilita il down‑sampling delle immagini con `pdfOptions.setImageDownsampleThreshold(150)`. + +**D: La libreria è compatibile con Java 17?** +R: Assolutamente — la libreria è compilata per Java 11 ma funziona su qualsiasi JDK successivo, inclusi Java 17 e Java 21. + +--- + +--- + +**Ultimo aggiornamento:** 2026-09-03 +**Testato con:** Aspose.HTML 23.10 per Java +**Autore:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## Tutorial correlati + +- [How to Convert HTML to PDF Java - Set Page Margins with Aspose.HTML](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [Adjust PDF Page Size with Aspose.HTML for Java](/html/java/advanced-usage/adjust-pdf-page-size/) +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/java/conversion-html-to-other-formats/convert-html-to-pdf/) -Abbiamo coperto tutto ciò di cui hai bisogno per **convertire HTML in PDF** in Java mentre **set PDF page size**, **set PDF resolution** e **save HTML as PDF** usando Aspose.HTML. La guida passo‑a‑passo, il codice completo e la risoluzione dei problemi {{< /blocks/products/pf/tutorial-page-section >}} + {{< /blocks/products/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/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/japanese/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index 978f22f11c..a3ab7a50c0 100644 --- a/html/japanese/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/japanese/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,108 +1,102 @@ --- category: general -date: 2026-01-06 -description: JavaでHTMLをPDFに変換し、カスタムページサイズ、余白、解像度を設定します。Aspose.HTMLを使用してPDFのページサイズを設定し、HTMLをPDFとして保存する方法を学びましょう。 +date: 2026-09-03 +description: JavaでHTMLをPDFに変換する際に、カスタムページサイズ、余白、解像度を設定できます。Aspose.HTML を使用して pdf ページサイズを設定し、HTML + を PDF として保存する方法を学びましょう。 draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: ja -og_description: JavaでHTMLをPDFに素早く変換します。このガイドでは、PDFのページサイズ設定、解像度調整、そしてAspose.HTMLを使用したHTMLのPDF保存方法を紹介します。 -og_title: JavaでHTMLをPDFに変換 – PDFページサイズと解像度を設定 +lastmod: 2026-09-03 +og_description: Aspose.HTML を使用して、JavaでHTMLをPDFに迅速に変換し、pdfページサイズを設定できます。ページサイズ、余白、解像度のカスタマイズ方法を学びましょう。 +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: JavaでHTMLをPDFに変換 – pdfページサイズと解像度を設定 +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: JavaでHTMLをPDFに変換 – PDFのページサイズ・解像度を設定し、HTMLをPDFとして保存 -url: /ja/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: JavaでHTMLをPDFに変換 – pdfページサイズと解像度を設定 --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# JavaでHTMLをPDFに変換する完全ガイド(カスタムオプション付き) +# HTML を PDF に変換(Java) – PDF ページサイズと解像度の設定 -HTML を **PDF に変換** したいけど、設定が多くて迷子になったことはありませんか? あなただけではありません。ページサイズ、余白、出力 DPI などを正確にコントロールしながら、ウェブページを印刷可能なドキュメントに変換しようとすると、多くの開発者が壁にぶつかります。 +Java で **HTML を PDF に変換** しながら **PDF ページサイズ** を設定し、DPI を制御する方法を考えたことはありませんか? あなたは一人ではありません。請求書、レポート、電子書籍など、印刷可能な PDF の正確なページサイズ、余白、画像解像度が必要になると、多くの開発者が壁にぶつかります。 -良いニュースです! Aspose.HTML を使えば、数行のコードで **HTML を PDF として保存** でき、*PDF ページサイズの設定* や *PDF 解像度の設定* といったオプションにフルアクセスできます。このチュートリアルでは、プロセス全体を解説し、各設定がなぜ重要かを説明し、すぐに実行できるサンプルを示します。 +良いニュースです。Aspose.HTML を使えば、数行のコードで **HTML を PDF として保存** でき、*set pdf page size* や *set pdf resolution* といったオプションにフルアクセスできます。このチュートリアルでは、全工程を順に解説し、各設定が重要な理由を説明し、すぐに実行できるサンプルを示します。 -このガイドを読み終えると、ローカルまたはリモートの HTML ファイルを任意のレイアウト要件に合わせた高品質 PDF に変換できるようになります。請求書、レポート、電子書籍に最適です。 +このガイドを終える頃には、ローカルまたはリモートの HTML ファイルを任意に取り込み、レイアウト要件を満たす高品質な PDF を生成できるようになります—**java generate invoice pdf** のシナリオに最適です。 --- ![カスタムオプションで HTML を PDF に変換](image.png "HTML を PDF に変換する例") +[カスタムオプションで HTML を PDF に変換](image.png "HTML を PDF に変換する例") -## 学べること - -- ベース URI を正しく設定して相対リンクを解決する方法 -- **PDF ページサイズ**(A4、Letter、カスタム寸法)と余白の設定方法 -- **PDF 解像度**(DPI)を設定して画像やテキストを鮮明に保つ方法 -- Aspose.HTML Java ライブラリを使用して **HTML を PDF として保存** するための正確なコード -- ベース URI の欠如や画像サイズ過大などの一般的な落とし穴と回避策 +## クイック回答 +- **ページサイズを変更できますか?** はい – 事前定義されたサイズまたはカスタム寸法で `PdfSaveOptions.setPageSize()` を使用します。 +- **印刷用の DPI はどれを使用すべきですか?** 300 dpi は鮮明な印刷品質を提供し、72 dpi は画面表示用 PDF には十分です。 +- **追加フォントは必要ですか?** いいえ – Aspose.HTML は標準フォントを自動的に埋め込みます。カスタムフォントは `@font-face` で利用可能です。 +- **ライセンスは必要ですか?** 開発目的なら無料トライアルで動作しますが、本番環境では商用ライセンスが必要です。 +- **サポートされている Java バージョンは?** JDK 8 以上(ライブラリは Java 11 用にコンパイルされていますが、8 以上で動作します)。 -### 前提条件 - -- Java Development Kit (JDK) 8 以上 -- `aspose-html`(執筆時点の最新バージョンは 23.10)を取得できる Maven または Gradle -- Java の基本的な構文に関する理解 -- 変換したい HTML ファイル(例では `sample.html` を使用) +## 学習内容 ---- - -## カスタムオプションで HTML を PDF に変換 - -以下は、すべての手順を示す完全な実行可能プログラムです。IDE に貼り付けてパスを調整し、実行してください。 - -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; - -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); - - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); +- 正しい base URI を使用して HTML ファイルをロードし、相対リンクが解決できるようにする方法。 +- **PDF ページサイズ**(A4、Letter、カスタム寸法)と余白を設定する方法。 +- 鮮明な画像とテキストのために **PDF 解像度**(DPI)を設定する方法。 +- Aspose.HTML Java ライブラリを使用して **HTML を PDF として保存** するために必要な正確なコード。 +- base URI が欠如している、画像が大きすぎるなどの一般的な落とし穴とその回避方法。 - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) - - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); +### 前提条件 - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` +- Java Development Kit (JDK) 8 以上。 +- Maven または Gradle を使用して `aspose-html` を取得(執筆時点の最新バージョンは 23.10)。 +- Java 構文の基本的な理解。 +- 変換したい HTML ファイル(例では `sample.html` を使用)。 -### 各ステップが重要な理由 +## HTML を PDF に変換する際の PDF ページサイズの設定方法 -| ステップ | 目的 | ヒント & エッジケース | -|------|---------|-------------------| -| **1. Base URI** | `<img src="images/pic.png">` などの相対リンクが正しいフォルダーを指すように保証する | これを省くと画像が PDF に表示されなくなることがあります。ローカルファイルは `file:///`、リモートリソースは HTTP URL を使用してください。 | -| **2. Load HTML** | HTML を Aspose の DOM モデルに解析させる | 10 MB 超の大きな HTML はメモリを多く消費します。JVM ヒープを増やす(例:`-Xmx2g`)ことを検討してください。 | -| **3. PDF Options** | ページ寸法(`set pdf page size`)、余白、DPI(`set pdf resolution`)を制御 | A4 は 210 × 297 mm。Letter は `PdfPageSize.LETTER` を使用。印刷向けは 300 DPI が理想的、画面表示のみなら 72 DPI でも可。 | -| **4. Save** | 最終的な PDF をディスクに書き出す(`save html as pdf`) | 出力パスは書き込み可能である必要があります。上書き防止はファイル存在チェックで実装可能です。 | -| **5. Confirmation** | コンソールへの簡易フィードバック | 実際のアプリでは `System.out` をロガーに置き換えてください。 | +HTML をロードし、`PdfSaveOptions` を設定して `save` を呼び出します。以下の 2 ステップパターンで必要なすべてを処理できます。 ---- +`pdfOptions.setPageSize(PdfPageSize.A4)`(または他の事前定義定数)を呼び出すか、幅と高さをポイントで指定したカスタム `PdfPageSize` インスタンスを作成してページサイズを設定します。同じオプションオブジェクトで `pdfOptions.setResolution(300)` により解像度も設定できます。このアプローチにより、生成された PDF が要求された正確な寸法と一致することが保証されます。 -## 手順ごとの詳細解説 +### 手順の詳細 -### 1. プロジェクトのセットアップ(HTML to PDF Java) +#### 1. プロジェクトのセットアップ(HTML から PDF Java) -Maven を使用している場合は、Aspose.HTML の依存関係を追加します。 +Maven を使用している場合は、Aspose.HTML の依存関係を追加します: ```xml <dependency> @@ -112,40 +106,40 @@ Maven を使用している場合は、Aspose.HTML の依存関係を追加し </dependency> ``` -Gradle ユーザーは次のように追加できます。 +Gradle ユーザーは次のように追加できます: ```gradle implementation 'com.aspose:aspose-html:23.10' ``` -> **プロのコツ:** ライブラリは完全に自己完結型です。基本的な変換に追加のネイティブバイナリやフォントは不要です。 +> **プロのコツ:** このライブラリは完全に自己完結型で、基本的な変換にネイティブバイナリや追加フォントは不要です。Aspose.HTML は 50 以上のシナリオで HTML から PDF への変換をサポートし、外部ネイティブバイナリなしで最大 200 MB のファイルを処理できます。 -### 2. Base URI を定義する +#### 2. base URI の定義 -相対 URL は画像が壊れる一般的な原因です。`loadOptions.setBaseUri` に HTML が格納されているフォルダーを指定することで、ブラウザと同様にパスを解決できます。 +相対 URL は画像が壊れる一般的な原因です。`loadOptions.setBaseUri` を HTML が格納されたフォルダーに設定することで、ブラウザーと同様にパスを解決させることができます。 ```java HtmlLoadOptions loadOptions = new HtmlLoadOptions(); loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); ``` -HTML が CDN 上の外部 CSS やフォントを参照している場合は Base URI を省略できますが、ネットワーク遅延に注意してください。 +HTML が CDN 上の外部 CSS やフォントを参照している場合は base URI を省略できますが、ネットワーク遅延に注意してください。 -### 3. HTML ドキュメントをロードする +#### 3. HTML ドキュメントのロード ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); ``` -URL から直接ロードすることも可能です。 +URL からロードすることもできます: ```java HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. PDF オプションの設定 – **Set PDF Page Size** と **Set PDF Resolution** +#### 4. PDF オプションの設定 – **set pdf page size** と **set pdf resolution** -`PdfSaveOptions` クラスで細かい制御ができます。 +`PdfSaveOptions` は Aspose.HTML の設定オブジェクトで、ページサイズ、余白、解像度などの PDF 出力プロパティを制御します。 ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -155,16 +149,16 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **ページサイズ:** `PdfPageSize.A4`、`LETTER`、`LEGAL` から選択するか、幅・高さ(ポイント単位)でカスタム `PdfPageSize` を作成します。 -- **解像度:** DPI が高いほどラスタ画像は鮮明になりますが、ファイルサイズも大きくなります。多くの印刷ジョブでは 300 DPI が最適です。 +- **ページサイズ:** `PdfPageSize.A4`、`LETTER`、`LEGAL` から選択するか、幅・高さをポイントで指定したカスタム `PdfPageSize` を作成します。A4 は 210 × 297 mm、Letter は 8.5 × 11 インチです。 +- **解像度:** DPI を上げるとラスタ画像が鮮明になりますが、ファイルサイズも増加します。72 dpi から 300 dpi に上げると PDF サイズは約 3 倍になり、画像の鮮明さは最大 4 倍向上します。多くの印刷ジョブでは 300 dpi が最適です。 -### 5. 変換を実行 – **Save HTML as PDF** +#### 5. 変換の実行 – **save html as pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); ``` -このメソッドは PDF を自動的に指定パスへストリームします。メール添付などでメモリ上の PDF が必要な場合は `OutputStream` オーバーロードを使用してください。 +このメソッドは PDF を自動的にターゲット場所へストリームします。PDF をメモリ上で取得したい場合(例:メール添付として送信する場合)は、`OutputStream` のオーバーロードを使用します: ```java try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { @@ -174,41 +168,37 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. 結果を検証する - -`sample_custom.pdf` を任意の PDF ビューアで開きます。以下が確認できるはずです。 +#### 6. 結果の検証 -- 余白 20 pt の A4 サイズページ -- 画像が 300 DPI でレンダリングされ、鮮明さが確認できる -- リンクと CSS が元の HTML と同様に適用されている +`sample_custom.pdf` を任意の PDF ビューアで開きます。以下が確認できるはずです: -問題がある場合は、Base URI と外部リソースの到達可能性を再確認してください。 +- 20 pt の上下余白を持つ A4 サイズのページ。 +- すべての画像が 300 dpi でレンダリングされている(鮮明さに注目)。 +- リンクと CSS が元の HTML と同様に適用されている。 ---- +何かが期待通りでない場合は、base URI を再確認し、すべての外部リソースが到達可能か確認してください。 ## よくある質問とエッジケース -**Q: HTML に JavaScript が含まれている場合は?** -A: Aspose.HTML は JavaScript を実行しません。スクリプトで生成されたコンテンツが必要な場合は、ヘッドレスブラウザ等で事前に HTML をレンダリングしてから変換してください。 +**Q: HTML に JavaScript が含まれている場合はどうなりますか?** +A: Aspose.HTML は JavaScript を実行しません。ページがスクリプト生成コンテンツに依存している場合は、コンバータに渡す前に HTML を事前にレンダリング(例:ヘッドレスブラウザ使用)してください。 **Q: カスタムフォントを埋め込めますか?** -A: 埋め込めます。`.ttf` または `.otf` ファイルを同じフォルダーに配置し、CSS の `@font-face` で参照してください。Base URI がフォントの検出を可能にします。 +A: はい。`.ttf` または `.otf` ファイルを同じフォルダーに配置し、CSS の `@font-face` で参照します。base URI によりフォントが検出可能になります。 -**Q: 向きを横長(ランドスケープ)に変更したい場合は?** +**Q: 向きを横向きに変更するには?** ```java saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` -**Q: PDF が巨大になってしまう—対策は?** -- DPI を下げる(例:`setResolution(150)`) -- `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)` で画像を圧縮 -- ソース HTML から不要な高解像度アセットを除去 - ---- +**Q: PDF が巨大です—どうすればよいですか?** +- DPI を下げる(`setResolution(150)`)。 +- `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)` で画像を圧縮。 +- ソース HTML から不要な高解像度アセットを削除。 ## 完全動作サンプル(オールインワン) -以下はコンパイル可能な全クラスです。`YOUR_DIRECTORY` を実際の絶対パスに置き換えてください。 +以下はコンパイル可能な完全なクラスです。`YOUR_DIRECTORY` をマシン上の絶対パスに置き換えてください。 ```java import com.aspose.html.converters.*; @@ -239,26 +229,79 @@ public class ConvertWithOptions { } ``` -プログラムを実行し、生成された PDF を開くと、定義したレイアウトがそのまま反映されています。これが **Java で HTML を PDF に変換** し、カスタムサイズと解像度を設定する方法です。 - ---- +プログラムを実行し、生成された PDF を開くと、定義した通りのレイアウトが確認できます。これが Java における **convert html to pdf** で、カスタムサイズと解像度が完全にサポートされています。 ## 次のステップと関連トピック -- **バッチ変換:** ディレクトリ内の複数 HTML を一括で PDF に変換 -- **動的コンテンツ:** Aspose.HTML とテンプレートエンジン(例:Thymeleaf)を組み合わせて請求書をリアルタイム生成 -- **セキュリティ強化:** 変換前に入力 HTML を検証し、悪意あるマークアップを排除 -- **代替ライブラリ:** 特定のケースで OpenHTMLtoPDF や wkhtmltopdf と比較検討 +- **バッチ変換:** ディレクトリー内の HTML ファイルをループし、一括で PDF を生成。 +- **動的コンテンツ:** Aspose.HTML とテンプレートエンジン(例:Thymeleaf)を組み合わせて、請求書をリアルタイムに生成。 +- **セキュリティ強化:** 変換前に入力 HTML を検証し、悪意あるマークアップを防止。 +- **代替ライブラリ:** 特定のエッジケースで OpenHTMLtoPDF や wkhtmltopdf と Aspose.HTML を比較。 + +さまざまなページサイズ(`PdfPageSize.LETTER`)や向き、さらにはブックレット用のカスタム寸法を試してみてください。API は柔軟で、遭遇するほとんどの *html to pdf java* シナリオに対応できます。 + +## よくある質問 + +**Q: Aspose.HTML は他の出力フォーマットをサポートしていますか?** +A: はい – PDF 以外にも、HTML から直接 PNG、JPEG、SVG、EPUB を生成できます。 + +**Q: ページ数に制限はありますか?** +A: Aspose.HTML は数千ページの PDF を作成可能です。必要に応じてページをディスクにストリームするため、メモリ使用量は低く抑えられます。 -ページサイズ(`PdfPageSize.LETTER`)や向き、カスタム寸法を変えてブックレット作成にも挑戦してみてください。API はほとんどの *html to pdf java* シナリオに対応できる柔軟性があります。 +**Q: ブックマークや目次を追加できますか?** +A: はい – `PdfSaveOptions.setCreateBookmarks(true)` を使用し、HTML に階層的なアウトラインを提供します。 + +**Q: 大きな画像を効率的に処理するには?** +A: `pdfOptions.setResolution(150)` を設定し、`pdfOptions.setImageDownsampleThreshold(150)` で画像のダウンサンプリングを有効にします。 + +**Q: ライブラリは Java 17 と互換性がありますか?** +A: 完全に対応しています – ライブラリは Java 11 用にコンパイルされていますが、Java 17 や Java 21 を含む以降の JDK でも動作します。 --- -## 結論 +**最終更新日:** 2026-09-03 +**テスト環境:** Aspose.HTML 23.10 for Java +**作者:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## 関連チュートリアル + +- [HTML を PDF に変換する Java - Aspose.HTML でページ余白を設定する方法](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [Aspose.HTML for Java で PDF ページサイズを調整する](/html/java/advanced-usage/adjust-pdf-page-size/) +- [HTML を PDF に変換する Java – Aspose.HTML for Java を使用する方法](/html/java/conversion-html-to-other-formats/convert-html-to-pdf/) -Java で **HTML を PDF に変換** し、**PDF ページサイズ**、**PDF 解像度** を設定し、Aspose.HTML を使って **HTML を 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/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/korean/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index ebba8ac15f..28562b8f70 100644 --- a/html/korean/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/korean/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,110 +1,103 @@ --- category: general -date: 2026-01-06 -description: 맞춤 페이지 크기, 여백 및 해상도로 Java에서 HTML을 PDF로 변환합니다. Aspose.HTML를 사용하여 PDF 페이지 - 크기를 설정하고 HTML을 PDF로 저장하는 방법을 배워보세요. +date: 2026-09-03 +description: Java에서 HTML을 PDF로 변환하면서 맞춤 page size, margins 및 resolution을 적용합니다. Aspose.HTML을 + 사용하여 pdf page size를 설정하고 html을 pdf로 저장하는 방법을 배워보세요. draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: ko -og_description: Java에서 HTML을 빠르게 PDF로 변환하세요. 이 가이드는 PDF 페이지 크기 설정, 해상도 조정 및 Aspose.HTML을 - 사용하여 HTML을 PDF로 저장하는 방법을 보여줍니다. -og_title: Java에서 HTML을 PDF로 변환 – PDF 페이지 크기 및 해상도 설정 +lastmod: 2026-09-03 +og_description: Aspose.HTML을 사용하여 Java에서 HTML을 PDF로 빠르게 변환하고 pdf page size를 설정합니다. + page size, margins 및 resolution을 맞춤 설정하는 방법을 배워보세요. +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: Java에서 HTML을 PDF로 변환 – pdf 페이지 크기 및 해상도 설정 +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: Java에서 HTML을 PDF로 변환 – PDF 페이지 크기, 해상도 설정 및 HTML을 PDF로 저장 -url: /ko/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: Java에서 HTML을 PDF로 변환 – pdf 페이지 크기 및 해상도 설정 --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Convert HTML to PDF in Java – Complete Guide with Custom Options - -HTML을 **PDF로 변환**할 때 복잡한 설정에 얽히지 않고 싶으셨나요? 여러분만 그런 것이 아닙니다. 페이지 크기, 여백, 출력 DPI 등을 정확히 제어해야 할 때 많은 개발자들이 난관에 봉착합니다. - -좋은 소식은? Aspose.HTML을 사용하면 몇 줄만으로 **HTML을 PDF로 저장**할 수 있으며, *PDF 페이지 크기 설정* 및 *PDF 해상도 설정*과 같은 옵션을 완전히 활용할 수 있습니다. 이 튜토리얼은 전체 과정을 단계별로 안내하고, 각 설정이 왜 중요한지 설명하며, 바로 실행 가능한 예제를 제공합니다. - -이 가이드를 마치면 로컬이든 원격이든 어떤 HTML 파일이든 레이아웃 요구사항을 충족하는 고품질 PDF로 변환할 수 있게 됩니다—인보이스, 보고서, 전자책 등에 최적입니다. +# Java에서 HTML을 PDF로 변환 – PDF 페이지 크기 및 해상도 설정 ---- - -![Convert HTML to PDF with custom options](image.png "convert html to pdf example") - -## What You'll Learn +Ever wondered how to **convert HTML to PDF** in Java while also being able to **set pdf page size** and control DPI? You’re not alone. Many developers hit a wall when they need precise page dimensions, margins, or image resolution for printable PDFs such as invoices, reports, or e‑books. -- 베이스 URI를 올바르게 지정하여 상대 링크가 정상적으로 해석되도록 HTML 파일을 로드하는 방법. -- **PDF 페이지 크기**(A4, Letter, 사용자 지정 치수)와 여백을 설정하는 방법. -- 선명한 이미지와 텍스트를 위한 **PDF 해상도**(DPI) 설정 방법. -- Aspose.HTML Java 라이브러리를 사용해 **HTML을 PDF로 저장**하는 정확한 코드. -- 베이스 URI 누락이나 이미지 과다 크기와 같은 흔한 함정과 이를 피하는 방법. +The good news? With Aspose.HTML you can **save HTML as PDF** in just a few lines, and you get full access to options like *set pdf page size* and *set pdf resolution*. This tutorial walks you through the entire process, explains why each setting matters, and shows you a ready‑to‑run example. -### Prerequisites - -- Java Development Kit (JDK) 8 이상. -- `aspose-html`을 가져오기 위한 Maven 또는 Gradle (작성 시점 최신 버전은 23.10). -- Java 문법에 대한 기본 이해. -- 변환하려는 HTML 파일(`sample.html`을 예제로 사용). +By the end of this guide you’ll be able to take any local or remote HTML file and produce a high‑quality PDF that respects your layout requirements—perfect for **java generate invoice pdf** scenarios. --- -## Convert HTML to PDF with Custom Options - -아래는 모든 단계를 시연하는 완전한 실행 가능한 프로그램입니다. IDE에 복사‑붙여넣기하고 경로만 수정한 뒤 실행해 보세요. +![맞춤 옵션으로 HTML을 PDF로 변환](image.png "HTML을 PDF로 변환 예시") +[맞춤 옵션으로 HTML을 PDF로 변환](image.png "HTML을 PDF로 변환 예시") -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; - -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); +## 빠른 답변 +- **Can I change the page size?** Yes – use `PdfSaveOptions.setPageSize()` with predefined sizes or custom dimensions. +- **What DPI should I use for print?** 300 dpi gives crisp print quality; 72 dpi is enough for on‑screen PDFs. +- **Do I need extra fonts?** No – Aspose.HTML embeds standard fonts automatically; custom fonts work via `@font-face`. +- **Is a license required?** A free trial works for development; a commercial license is needed for production. +- **Which Java version is supported?** JDK 8 or newer (the library is compiled for Java 11 but runs on 8+). - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); +## 배울 내용 - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) +- How to load an HTML file with a proper base URI so relative links resolve. +- How to **set pdf page size** (A4, Letter, custom dimensions) and margins. +- How to **set pdf resolution** (DPI) for crisp images and text. +- The exact code needed to **save html as pdf** using the Aspose.HTML Java library. +- Common pitfalls—like missing base URIs or oversized images—and how to avoid them. - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); +### 전제 조건 - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` +- Java Development Kit (JDK) 8 or newer. +- Maven or Gradle to pull in `aspose-html` (the latest version at the time of writing is 23.10). +- A basic understanding of Java syntax. +- An HTML file you want to convert (we’ll use `sample.html` in the examples). -### Why Each Step Matters +## HTML을 PDF로 변환할 때 pdf 페이지 크기 설정 방법 -| Step | Purpose | Tips & Edge Cases | -|------|---------|-------------------| -| **1. Base URI** | `<img src="images/pic.png">`와 같은 상대 링크가 올바른 폴더를 가리키도록 보장합니다. | 이 단계를 생략하면 이미지가 출력 PDF에 표시되지 않을 수 있습니다. 로컬 파일은 `file:///`를, 원격 리소스는 HTTP URL을 사용하세요. | -| **2. Load HTML** | HTML을 Aspose의 DOM 모델로 파싱합니다. | 10 MB 이상의 대용량 HTML은 메모리 요구량이 높아질 수 있습니다. JVM 힙(`-Xmx2g`)을 늘리는 것을 고려하세요. | -| **3. PDF Options** | 페이지 크기(`set pdf page size`), 여백, DPI(`set pdf resolution`)를 제어합니다. | A4는 210 × 297 mm이며, Letter는 `PdfPageSize.LETTER`를 사용합니다. 인쇄용은 300 DPI가 이상적이며, 화면 전용 PDF는 72 DPI면 충분합니다. | -| **4. Save** | 최종 PDF를 디스크에 기록합니다(`save html as pdf`). | 출력 경로에 쓰기 권한이 있어야 합니다. 파일 존재 여부를 확인해 덮어쓰기 방지를 구현할 수 있습니다. | -| **5. Confirmation** | 간단한 콘솔 피드백을 제공합니다. | 실제 애플리케이션에서는 `System.out` 대신 로거를 사용하는 것이 좋습니다. | +Load your HTML, configure `PdfSaveOptions`, and call `save`. The two‑step pattern below handles everything you need. ---- +You set the page size by calling `pdfOptions.setPageSize(PdfPageSize.A4)` (or any other predefined constant) or by creating a custom `PdfPageSize` instance with width and height in points. The same options object also lets you set resolution with `pdfOptions.setResolution(300)`. This approach guarantees that the generated PDF matches the exact dimensions you require. -## Step‑by‑Step Breakdown +### 단계별 분석 -### 1. Set Up Your Project (HTML to PDF Java) +#### 1. 프로젝트 설정 (html to pdf java) -Maven을 사용한다면 Aspose.HTML 의존성을 추가하세요: +If you’re using Maven, add the Aspose.HTML dependency: ```xml <dependency> @@ -114,40 +107,40 @@ Maven을 사용한다면 Aspose.HTML 의존성을 추가하세요: </dependency> ``` -Gradle 사용자는 다음을 추가합니다: +Gradle users can add: ```gradle implementation 'com.aspose:aspose-html:23.10' ``` -> **Pro tip:** 라이브러리는 완전하게 자체 포함되어 있어 기본 변환에 별도의 네이티브 바이너리나 추가 폰트가 필요 없습니다. +> **Pro tip:** The library is fully self‑contained; you don’t need any native binaries or extra fonts for basic conversions. Aspose.HTML supports conversion of HTML to PDF in over 50 scenarios and can process files up to 200 MB without external native binaries. -### 2. Define the Base URI +#### 2. 기본 URI 정의 -상대 URL은 이미지 깨짐의 흔한 원인입니다. `loadOptions.setBaseUri`를 HTML이 위치한 폴더로 지정하면 브라우저와 동일하게 경로를 해석합니다. +Relative URLs are a common source of broken images. By pointing `loadOptions.setBaseUri` to the folder containing your HTML, you let the converter resolve paths exactly as a browser would. ```java HtmlLoadOptions loadOptions = new HtmlLoadOptions(); loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); ``` -HTML이 CDN에 호스팅된 외부 CSS나 폰트를 참조한다면 베이스 URI를 생략할 수 있지만, 네트워크 지연에 유의하세요. +If your HTML references external CSS or fonts hosted on a CDN, you can skip the base URI, but keep an eye on network latency. -### 3. Load the HTML Document +#### 3. HTML 문서 로드 ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); ``` -URL에서 직접 로드할 수도 있습니다: +You can also load from a URL: ```java HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. Configure PDF Options – **Set PDF Page Size** & **Set PDF Resolution** +#### 4. PDF 옵션 구성 – **set pdf page size** & **set pdf resolution** -`PdfSaveOptions` 클래스를 사용하면 세밀한 제어가 가능합니다. +`PdfSaveOptions` is Aspose.HTML's configuration object that controls PDF output properties such as page size, margins, and resolution. ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -157,16 +150,16 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **Page Size:** `PdfPageSize.A4`, `LETTER`, `LEGAL` 중 선택하거나, 포인트 단위의 너비/높이로 사용자 지정 `PdfPageSize`를 만들 수 있습니다. -- **Resolution:** DPI가 높을수록 래스터 이미지가 선명해지지만 파일 크기가 커집니다. 대부분의 인쇄 작업에서는 300 DPI가 적당합니다. +- **Page size:** Choose from `PdfPageSize.A4`, `LETTER`, `LEGAL`, or create a custom `PdfPageSize` with width/height in points. A4 measures 210 × 297 mm; Letter measures 8.5 × 11 in. +- **Resolution:** Higher DPI yields sharper raster images but also increases file size; moving from 72 dpi to 300 dpi typically triples the PDF size while improving image sharpness by up to 4×. For most print jobs 300 dpi is a sweet spot. -### 5. Perform the Conversion – **Save HTML as PDF** +#### 5. 변환 수행 – **save html as pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); ``` -이 메서드는 PDF를 지정된 위치에 자동으로 스트리밍합니다. 메모리 내에서 PDF를 얻어야 할 경우(예: 이메일 첨부 파일) `OutputStream` 오버로드를 사용하세요: +The method automatically streams the PDF to the target location. If you need the PDF in memory (e.g., to send as an email attachment), use an `OutputStream` overload: ```java try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { @@ -176,25 +169,23 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. Verify the Result +#### 6. 결과 확인 -`sample_custom.pdf`를 PDF 뷰어에서 열어 보세요. 다음과 같은 내용이 표시되어야 합니다: +Open `sample_custom.pdf` in any PDF viewer. You should see: -- 20 pt 상하 여백이 적용된 A4 크기 페이지. -- 300 DPI로 렌더링된 모든 이미지(선명함 확인). -- 원본 HTML과 동일하게 적용된 링크와 CSS. +- A4‑sized pages with 20 pt top/bottom margins. +- All images rendered at 300 dpi (notice the crispness). +- Links and CSS applied exactly as in the original HTML. -문제가 있다면 베이스 URI를 다시 확인하고 모든 외부 리소스가 접근 가능한지 점검하세요. +If something looks off, double‑check the base URI and ensure all external resources are reachable. ---- - -## Common Questions & Edge Cases +## 일반 질문 및 엣지 케이스 **Q: What if my HTML contains JavaScript?** -A: Aspose.HTML은 JavaScript를 실행하지 않습니다. 페이지가 스크립트로 생성된 콘텐츠에 의존한다면, 변환 전에 헤드리스 브라우저 등으로 HTML을 미리 렌더링해야 합니다. +A: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated content, pre‑render the HTML (e.g., with a headless browser) before feeding it to the converter. **Q: Can I embed custom fonts?** -A: 가능합니다. `.ttf` 또는 `.otf` 파일을 동일 폴더에 두고 CSS에서 `@font-face`로 참조하면 베이스 URI가 폰트를 찾아줍니다. +A: Yes. Place the `.ttf` or `.otf` files in the same folder and reference them via `@font-face` in your CSS. The base URI will make the fonts discoverable. **Q: How do I change the orientation to landscape?** ```java @@ -202,15 +193,13 @@ saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` **Q: My PDF is huge—what can I do?** -- DPI를 낮춥니다(`setResolution(150)`). -- `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`로 이미지 압축. -- 원본 HTML에서 불필요한 고해상도 자산을 제거합니다. +- Reduce the DPI (`setResolution(150)`). +- Compress images with `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. +- Remove unnecessary high‑resolution assets from the source HTML. ---- +## 전체 작업 예제 (all‑in‑one) -## Full Working Example (All‑In‑One) - -아래는 바로 컴파일할 수 있는 전체 클래스입니다. `YOUR_DIRECTORY`를 실제 절대 경로로 교체하세요. +Here’s the entire class ready to compile. Replace `YOUR_DIRECTORY` with an absolute path on your machine. ```java import com.aspose.html.converters.*; @@ -241,26 +230,81 @@ public class ConvertWithOptions { } ``` -프로그램을 실행하고 생성된 PDF를 열면 정의한 레이아웃이 그대로 나타납니다. 이것이 **Java에서 HTML을 PDF로 변환**하고, 페이지 크기와 해상도를 사용자 지정하는 전체 과정입니다. +Run the program, open the generated PDF, and you’ll see the exact layout you defined. That’s **convert html to pdf** in Java, complete with custom sizing and resolution. ---- +## 다음 단계 및 관련 주제 -## Next Steps & Related Topics +- **Batch conversion:** Loop over a directory of HTML files and produce PDFs in one go. +- **Dynamic content:** Combine Aspose.HTML with a templating engine (e.g., Thymeleaf) to generate invoices on the fly. +- **Security hardening:** Validate input HTML to avoid malicious markup before conversion. +- **Alternative libraries:** Compare Aspose.HTML with OpenHTMLtoPDF or wkhtmltopdf for specific edge cases. -- **Batch conversion:** 디렉터리 내 여러 HTML 파일을 한 번에 PDF로 변환하는 루프 구현. -- **Dynamic content:** Aspose.HTML을 Thymeleaf 같은 템플릿 엔진과 결합해 실시간 인보이스 생성. -- **Security hardening:** 변환 전 입력 HTML을 검증해 악성 마크업을 차단. -- **Alternative libraries:** 특정 상황에 맞는 OpenHTMLtoPDF 또는 wkhtmltopdf와 비교. +Experiment with different page sizes (`PdfPageSize.LETTER`), orientations, or even custom dimensions if you’re preparing a booklet. The API is flexible enough to handle most *html to pdf java* scenarios you’ll encounter. -다양한 페이지 크기(`PdfPageSize.LETTER`), 방향, 혹은 맞춤 치수를 실험해 보세요. API는 대부분의 *html to pdf java* 시나리오를 유연하게 처리합니다. +## 자주 묻는 질문 + +**Q: Does Aspose.HTML support other output formats?** +A: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from HTML. + +**Q: Is there a limit on the number of pages?** +A: Aspose.HTML can create PDFs with thousands of pages; memory usage stays low because it streams pages to disk when needed. + +**Q: Can I add bookmarks or table of contents?** +A: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical outline in the HTML. + +**Q: How do I handle large images efficiently?** +A: Set `pdfOptions.setResolution(150)` and enable image down‑sampling via `pdfOptions.setImageDownsampleThreshold(150)`. + +**Q: Is the library compatible with Java 17?** +A: Absolutely – the library is compiled for Java 11 but runs on any later JDK, including Java 17 and Java 21. --- -## Conclusion +--- + +**마지막 업데이트:** 2026-09-03 +**테스트 환경:** Aspose.HTML 23.10 for Java +**작성자:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## 관련 튜토리얼 + +- [How to Convert HTML to PDF Java - Set Page Margins with Aspose.HTML](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [Adjust PDF Page Size with Aspose.HTML for Java](/html/java/advanced-usage/adjust-pdf-page-size/) +- [How to Convert HTML to PDF Java – Using Aspose.HTML for Java](/html/java/conversion-html-to-other-formats/convert-html-to-pdf/) -우리는 **Java에서 HTML을 PDF로 변환**하면서 **PDF 페이지 크기 설정**, **PDF 해상도 설정**, 그리고 Aspose.HTML을 사용한 **HTML을 PDF로 저장** 과정을 다루었습니다. 단계별 가이드, 완전한 코드, 그리고 트러블슈팅 정보를 통해 여러분은 이제 원하는 레이아웃과 품질을 갖춘 PDF를 손쉽게 생성할 수 있습니다. {{< /blocks/products/pf/tutorial-page-section >}} + {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} + {{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/html/polish/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/polish/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index ae645292f5..e1dec3d2bc 100644 --- a/html/polish/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/polish/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,111 +1,100 @@ --- category: general -date: 2026-01-06 -description: Konwertuj HTML na PDF w Javie z niestandardowym rozmiarem strony, marginesami - i rozdzielczością. Dowiedz się, jak ustawić rozmiar strony PDF i zapisać HTML jako - PDF przy użyciu Aspose.HTML. +date: 2026-09-03 +description: Konwertuj HTML do PDF w Javie z niestandardowym rozmiarem strony, marginesami + i rozdzielczością. Dowiedz się, jak ustawić rozmiar strony pdf i zapisać html jako + pdf przy użyciu Aspose.HTML. draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: pl -og_description: Szybko konwertuj HTML na PDF w Javie. Ten przewodnik pokazuje, jak - ustawić rozmiar strony PDF, dostosować rozdzielczość i zapisać HTML jako PDF przy - użyciu Aspose.HTML. -og_title: Konwertuj HTML na PDF w Javie – Ustaw rozmiar i rozdzielczość strony PDF +lastmod: 2026-09-03 +og_description: Ustaw rozmiar strony pdf i szybko konwertuj HTML do PDF w Javie przy + użyciu Aspose.HTML. Dowiedz się, jak dostosować rozmiar strony, marginesy i rozdzielczość. +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: Konwertuj HTML do PDF w Javie – ustaw rozmiar strony pdf i rozdzielczość +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: Konwertuj HTML do PDF w Javie – Ustaw rozmiar strony PDF, rozdzielczość i zapisz - HTML jako PDF -url: /pl/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: Konwertuj HTML do PDF w Javie – ustaw rozmiar strony pdf i rozdzielczość --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Konwersja HTML do PDF w Javie – Kompletny przewodnik z opcjami niestandardowymi +# Konwertuj HTML do PDF w Javie – ustaw rozmiar strony PDF i rozdzielczość -Zastanawiałeś się kiedyś, jak **przekształcić HTML do PDF** w Javie bez walki z labiryntem ustawień? Nie jesteś sam. Wielu programistów napotyka problemy, gdy potrzebują precyzyjnej kontroli nad rozmiarem strony, marginesami czy DPI wyjścia przy zamianie strony internetowej w dokument do druku. +Zastanawiałeś się kiedyś, jak **konwertować HTML do PDF** w Javie, jednocześnie będąc w stanie **ustawić rozmiar strony PDF** i kontrolować DPI? Nie jesteś sam. Wielu programistów napotyka trudności, gdy potrzebne są precyzyjne wymiary strony, marginesy lub rozdzielczość obrazu dla drukowanych PDF‑ów, takich jak faktury, raporty czy e‑booki. -Dobre wieści? Dzięki Aspose.HTML możesz **zapisać HTML jako PDF** w kilku linijkach kodu i uzyskać pełny dostęp do opcji takich jak *ustaw rozmiar strony PDF* i *ustaw rozdzielczość PDF*. Ten samouczek przeprowadzi Cię przez cały proces, wyjaśni, dlaczego każde ustawienie ma znaczenie, i pokaże gotowy przykład do uruchomienia. +Dobre wieści? Dzięki Aspose.HTML możesz **zapisować HTML jako PDF** w kilku linijkach i uzyskać pełny dostęp do opcji takich jak *ustaw rozmiar strony PDF* i *ustaw rozdzielczość PDF*. Ten samouczek przeprowadzi Cię przez cały proces, wyjaśni, dlaczego każde ustawienie ma znaczenie, i pokaże gotowy do uruchomienia przykład. -Po przeczytaniu tego przewodnika będziesz w stanie wziąć dowolny lokalny lub zdalny plik HTML i wyprodukować wysokiej jakości PDF, który zachowuje wymagania układu — idealny do faktur, raportów czy e‑booków. +Po zakończeniu tego przewodnika będziesz w stanie wziąć dowolny lokalny lub zdalny plik HTML i wygenerować wysokiej jakości PDF, który spełnia Twoje wymagania dotyczące układu — idealny dla scenariuszy **java generate invoice pdf**. ---- +![Konwertuj HTML do PDF z niestandardowymi opcjami](image.png "przykład konwersji html do pdf") +[Konwertuj HTML do PDF z niestandardowymi opcjami](image.png "przykład konwersji html do pdf") -![Konwersja HTML do PDF z opcjami niestandardowymi](image.png "przykład konwersji html do pdf") +## Szybkie odpowiedzi +- **Czy mogę zmienić rozmiar strony?** Tak – użyj `PdfSaveOptions.setPageSize()` z predefiniowanymi rozmiarami lub własnymi wymiarami. +- **Jakie DPI powinienem używać do druku?** 300 dpi zapewnia wyraźną jakość druku; 72 dpi wystarcza dla PDF‑ów wyświetlanych na ekranie. +- **Czy potrzebuję dodatkowych czcionek?** Nie – Aspose.HTML automatycznie osadza standardowe czcionki; niestandardowe czcionki działają poprzez `@font-face`. +- **Czy wymagana jest licencja?** Darmowa wersja próbna działa w środowisku deweloperskim; licencja komercyjna jest wymagana w produkcji. +- **Jaką wersję Javy obsługuje?** JDK 8 lub nowszy (biblioteka jest skompilowana dla Java 11, ale działa na 8+). ## Czego się nauczysz -- Jak załadować plik HTML z prawidłowym bazowym URI, aby względne odnośniki były prawidłowo rozwiązywane. -- Jak **ustawić rozmiar strony PDF** (A4, Letter, własne wymiary) oraz marginesy. +- Jak załadować plik HTML z odpowiednim bazowym URI, aby względne odnośniki były rozwiązywane. +- Jak **ustawić rozmiar strony PDF** (A4, Letter, własne wymiary) i marginesy. - Jak **ustawić rozdzielczość PDF** (DPI) dla wyraźnych obrazów i tekstu. - Dokładny kod potrzebny do **zapisania HTML jako PDF** przy użyciu biblioteki Aspose.HTML dla Javy. -- Typowe pułapki — takie jak brak bazowego URI czy zbyt duże obrazy — oraz jak ich unikać. +- Typowe pułapki — takie jak brak bazowego URI lub zbyt duże obrazy — i jak ich uniknąć. ### Wymagania wstępne - Java Development Kit (JDK) 8 lub nowszy. -- Maven lub Gradle, aby pobrać `aspose-html` (najświeższa wersja w momencie pisania to 23.10). +- Maven lub Gradle do pobrania `aspose-html` (najbardziej aktualna wersja w momencie pisania to 23.10). - Podstawowa znajomość składni Javy. -- Plik HTML, który chcesz skonwertować (w przykładach użyjemy `sample`). +- Plik HTML, który chcesz skonwertować (użyjemy `sample.html` w przykładach). ---- +## Jak ustawić rozmiar strony PDF przy konwersji HTML do PDF -## Konwersja HTML do PDF z opcjami niestandardowymi +Załaduj swój HTML, skonfiguruj `PdfSaveOptions` i wywołaj `save`. Poniższy dwustopniowy wzorzec obsługuje wszystko, czego potrzebujesz. -Poniżej znajduje się pełny, gotowy do uruchomienia program, który demonstruje każdy krok. Skopiuj‑wklej go do swojego IDE, dostosuj ścieżki i uruchom. +Ustawiasz rozmiar strony, wywołując `pdfOptions.setPageSize(PdfPageSize.A4)` (lub inną predefiniowaną stałą) lub tworząc własną instancję `PdfPageSize` z szerokością i wysokością w punktach. Ten sam obiekt opcji pozwala także ustawić rozdzielczość za pomocą `pdfOptions.setResolution(300)`. Takie podejście zapewnia, że wygenerowany PDF będzie dokładnie odpowiadał wymaganym wymiarom. -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; +### Szczegółowy podział krok po kroku -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); - - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); - - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) - - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); - - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` - -### Dlaczego każdy krok ma znaczenie - -| Krok | Cel | Wskazówki i przypadki brzegowe | -|------|-----|--------------------------------| -| **1. Base URI** | Gwarantuje, że `<img src="images/pic.png">` i inne względne odnośniki wskazują na właściwy folder. | Jeśli pominiesz ten krok, obrazy mogą zniknąć w wyjściowym PDF. Użyj `file:///` dla plików lokalnych lub adresu HTTP dla zasobów zdalnych. | -| **2. Load HTML | Parsuje HTML do modelu DOM Aspose. | Duże pliki HTML (>10 MB) mogą wymagać więcej pamięci; rozważ zwiększenie sterty JVM (`-Xmx2g`). | -| **3. PDF Options** | Kontroluje wymiary strony (`set pdf page size`), marginesy oraz DPI (`set pdf resolution`). | A4 to 210 × 297 mm; dla Letter użyj `PdfPageSize.LETTER`. DPI 300 jest idealne do druku; 72 wystarcza dla PDF‑ów wyświetlanych tylko na ekranie. | -| **4. Save** | Zapisuje finalny PDF na dysku (`save html as pdf`). | Ścieżka wyjściowa musi być zapisywalna. Ochronę przed nadpisaniem można dodać, sprawdzając istnienie pliku. | -| **5. Confirmation** | Prosta informacjarotna w konsoli. | W rzeczywistych aplikacjach zamień `System.out` na logger. | - ---- - -## Szczegółowy podział krok po kroku - -### 1. Konfiguracja projektu (HTML do PDF w Javie) +#### 1. Skonfiguruj projekt (html to pdf java) Jeśli używasz Maven, dodaj zależność Aspose.HTML: @@ -123,34 +112,34 @@ Użytkownicy Gradle mogą dodać: implementation 'com.aspose:aspose-html:23.10' ``` -> **Pro tip:** Biblioteka jest w pełni samodzielna; nie potrzebujesz żadnych natywnych binarek ani dodatkowych czcionek do podstawowych konwersji. +> **Pro tip:** Biblioteka jest w pełni samodzielna; nie potrzebujesz żadnych natywnych binarek ani dodatkowych czcionek do podstawowych konwersji. Aspose.HTML obsługuje konwersję HTML do PDF w ponad 50 scenariuszach i może przetwarzać pliki do 200 MB bez zewnętrznych natywnych binarek. -### 2. Definiowanie Base URI +#### 2. Zdefiniuj bazowy URI -Względne URL‑e są częstym źródłem zepsutych obrazów. Wskazując `loadOptions.setBaseUri` na folder zawierający Twój HTML, pozwalasz konwerterowi rozwiązywać ścieżki dokładnie,eglądarka. +Względne adresy URL są częstym źródłem zepsutych obrazów. Wskazując `loadOptions.setBaseUri` na folder zawierający Twój HTML, pozwalasz konwerterowi rozwiązywać ścieżki dokładnie tak, jak przeglądarka. ```java HtmlLoadOptions loadOptions = new HtmlLoadOptions(); loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); ``` -Jeśli Twój HTML odwołuje się do zewnętrznych CSS‑ów lub czcionek hostowanych w CDN, możesz pominąć Base URI, ale miej na uwadze opóźnienia sieciowe. +Jeśli Twój HTML odwołuje się do zewnętrznych CSS lub czcionek hostowanych na CDN, możesz pominąć bazowy URI, ale zwróć uwagę na opóźnienia sieciowe. -### 3. Ładowanie dokumentu HTML +#### 3. Załaduj dokument HTML ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); ``` -Możesz także ładować z URL: +Możesz także załadować z URL: ```java HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. Konfiguracja opcji PDF – **Set PDF Page Size** i **Set PDF Resolution** +#### 4. Skonfiguruj opcje PDF – **ustaw rozmiar strony PDF** & **ustaw rozdzielczość PDF** -Klasa `PdfSaveOptions` daje precyzyjną kontrolę. +`PdfSaveOptions` jest obiektem konfiguracyjnym Aspose.HTML, który kontroluje właściwości wyjściowe PDF, takie jak rozmiar strony, marginesy i rozdzielczość. ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -160,16 +149,16 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **Page Size:** Wybierz spośród `PdfPageSize4`, `LETTER`, `LEGAL` lub utwórz własny `PdfPageSize` z szerokością/wysokością w punktach. -- **Resolution:** Wyższe DPI daje ostrzejsze obrazy rastrowe, ale zwiększa rozmiar pliku. Dla większości zadań drukarskich 300 DPI to złoty środek. +- **Rozmiar strony:** Wybierz spośród `PdfPageSize.A4`, `LETTER`, `LEGAL` lub utwórz własny `PdfPageSize` z szerokością/wysokością w punktach. A4 ma wymiary 210 × 297 mm; Letter ma 8,5 × 11 in. +- **Rozdzielczość:** Wyższe DPI daje ostrzejsze obrazy rastrowe, ale zwiększa rozmiar pliku; przejście z 72 dpi do 300 dpi zazwyczaj potraja rozmiar PDF, jednocześnie poprawiając ostrość obrazu nawet 4‑krotnie. Dla większości zadań drukarskich 300 dpi jest optymalnym wyborem. -### 5. Wykonanie konwersji – **Save HTML as PDF** +#### 5. Wykonaj konwersję – **zapisz html jako pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); ``` -Metoda automatycznie strumieniuje PDF do docelowej lokalizacji. Jeśli potrzebujesz PDF w pamięci (np. aby wysłać jako załącznik e‑mail), użyj przeciążenia z `OutputStream`: +Metoda automatycznie przesyła PDF do docelowej lokalizacji. Jeśli potrzebujesz PDF w pamięci (np. aby wysłać jako załącznik e‑mail), użyj przeciążenia z `OutputStream`: ```java try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { @@ -179,25 +168,23 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. Weryfikacja wyniku - -Otwórz `sample_custom.pdf` w dowolnym przeglądarce PDF. Powinieneś zobaczyć: +#### 6. Zweryfikuj wynik -- Strony w formacie A4 z marginesami 20 pt u góry i u dołu. -- Wszystkie obrazy renderowane w 300 DPI (zwróć uwagę na wyrazistość). -- Linki i CSS zastosowane dokładnie tak, jak w oryginalnym HTML. +Otwórz `sample_custom.pdf` w dowolnej przeglądarce PDF. Powinieneś zobaczyć: -Jeśli coś wygląda nie tak, sprawdź ponownie Base URI i upewnij się, że wszystkie zasoby zewnętrzne są dostępne. +- Strony w formacie A4 z marginesami górnym/dolnym po 20 pt. +- Wszystkie obrazy renderowane w 300 dpi (zwróć uwagę na wyrazistość). +- Linki i CSS zastosowane dokładnie tak jak w oryginalnym HTML. ---- +Jeśli coś wygląda nieprawidłowo, sprawdź ponownie bazowy URI i upewnij się, że wszystkie zewnętrzne zasoby są dostępne. ## Częste pytania i przypadki brzegowe **Q: Co jeśli mój HTML zawiera JavaScript?** -A: Aspose.HTML *nie* wykonuje JavaScriptu. Jeśli strona zależy od treści generowanej skryptami, najpierw wyrenderuj HTML (np. przy pomocy przeglądarki headless), a dopiero potem przekaż go konwerterowi. +A: Aspose.HTML *nie* wykonuje JavaScript. Jeśli Twoja strona zależy od treści generowanej skryptem, wstępnie wyrenderuj HTML (np. przy użyciu przeglądarki headless) przed przekazaniem go konwerterowi. **Q: Czy mogę osadzić własne czcionki?** -A: Tak. Umieść pliki `.ttf` lub `.otf` w tym samym folderze i odwołuj się do nich poprzez `@font-face` w CSS. Base URI sprawi, że czcionki będą wykrywalne. +A: Tak. Umieść pliki `.ttf` lub `.otf` w tym samym folderze i odwołuj się do nich w CSS za pomocą `@font-face`. Bazowy URI umożliwi ich odnalezienie. **Q: Jak zmienić orientację na poziomą?** ```java @@ -206,12 +193,10 @@ saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); **Q: Mój PDF jest ogromny — co mogę zrobić?** - Zmniejsz DPI (`setResolution(150)`). -- Skorzystaj z kompresji obrazów: `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. +- Skompresuj obrazy przy użyciu `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. - Usuń niepotrzebne zasoby wysokiej rozdzielczości ze źródłowego HTML. ---- - -## Pełny działający przykład (All‑In‑One) +## Pełny działający przykład (wszystko w jednym) Oto cała klasa gotowa do kompilacji. Zamień `YOUR_DIRECTORY` na absolutną ścieżkę na swoim komputerze. @@ -244,26 +229,79 @@ public class ConvertWithOptions { } ``` -Uruchom program, otwórz wygenerowany PDF i zobaczysz dokładny układ, który zdefiniowałeś. To właśnie **konwersja HTML do PDF** w Javie, z pełnym wsparciem dla niestandardowych rozmiarów i rozdzielczości. +Uruchom program, otwórz wygenerowany PDF i zobaczysz dokładny układ, który zdefiniowałeś. To jest **convert html to pdf** w Javie, w pełni z niestandardowym rozmiarem i rozdzielczością. ---- - -## Kolejne kroki i tematy pokrewne +## Kolejne kroki i powiązane tematy -- **Batch conversion:** Przetwarzaj katalog plików HTML i twórz PDF‑y w jednej operacji. +- **Batch conversion:** Przetwarzaj w pętli katalog z plikami HTML i generuj PDF‑y jednorazowo. - **Dynamic content:** Połącz Aspose.HTML z silnikiem szablonów (np. Thymeleaf), aby generować faktury w locie. -- **Security hardening:** Waliduj wejściowy HTML, aby uniknąć złośliwego markup’u przed konwersją. -- **Alternative libraries:** Porównaj Aspose.HTML z OpenHTMLtoPDF lub wkhtmltopdf pod kątem specyficznych przypadków. +- **Security hardening:** Waliduj wejściowy HTML, aby uniknąć złośliwego kodu przed konwersją. +- **Alternative libraries:** Porównaj Aspose.HTML z OpenHTMLtoPDF lub wkhtmltopdf w konkretnych przypadkach brzegowych. + +Eksperymentuj z różnymi rozmiarami stron (`PdfPageSize.LETTER`), orientacjami lub nawet własnymi wymiarami, jeśli przygotowujesz broszurę. API jest wystarczająco elastyczne, aby obsłużyć większość scenariuszy *html to pdf java*, z którymi możesz się spotkać. + +## Najczęściej zadawane pytania + +**Q: Czy Aspose.HTML obsługuje inne formaty wyjściowe?** +A: Tak – oprócz PDF może generować PNG, JPEG, SVG i EPUB bezpośrednio z HTML. + +**Q: Czy istnieje limit liczby stron?** +A: Aspose.HTML może tworzyć PDF‑y z tysiącami stron; zużycie pamięci pozostaje niskie, ponieważ strona jest strumieniowana na dysk w razie potrzeby. -Eksperymentuj z różnymi rozmiarami stron (`PdfPageSize.LETTER`), orientacjami lub własnymi wymiarami, jeśli przygotowujesz broszurę. API jest na tyle elastyczne, że poradzi sobie z większością scenariuszy *html to pdf java*, które napotkasz. +**Q: Czy mogę dodać zakładki lub spis treści?** +A: Tak – użyj `PdfSaveOptions.setCreateBookmarks(true)` i dostarcz hierarchiczny zarys w HTML. + +**Q: Jak efektywnie obsługiwać duże obrazy?** +A: Ustaw `pdfOptions.setResolution(150)` i włącz down‑sampling obrazów poprzez `pdfOptions.setImageDownsampleThreshold(150)`. + +**Q: Czy biblioteka jest kompatybilna z Java 17?** +A: Absolutnie – biblioteka jest skompilowana dla Java 11, ale działa na każdym nowszym JDK, w tym Java 17 i Java 21. --- -## Zakończenie +**Ostatnia aktualizacja:** 2026-09-03 +**Testowano z:** Aspose.HTML 23.10 for Java +**Autor:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## Powiązane samouczki + +- [Jak konwertować HTML do PDF w Javie – Ustaw marginesy strony przy użyciu Aspose.HTML](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [Dostosuj rozmiar strony PDF przy użyciu Aspose.HTML dla Javy](/html/java/advanced-usage/adjust-pdf-page-size/) +- [Jak konwertować HTML do PDF w Javie – używając Aspose.HTML dla Javy](/html/java/conversion-html-to-other-formats/convert-html-to-pdf/) -Omówiliśmy wszystko, co potrzebne, aby **przekształcić HTML do PDF** w Javie, jednocześnie **ustawiając rozmiar strony PDF**, **ustawiając rozdzielczość PDF** i **zapisując HTML jako PDF** przy użyciu Aspose.HTML. Przewodnik krok po kroku, kompletny kod i wskazówki rozwiązywania problemów {{< /blocks/products/pf/tutorial-page-section >}} + {{< /blocks/products/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/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/portuguese/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index 8b49cdf1a7..274d2bf04f 100644 --- a/html/portuguese/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/portuguese/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,113 +1,104 @@ --- category: general -date: 2026-01-06 -description: Converter HTML para PDF em Java com tamanho de página personalizado, - margens e resolução. Aprenda como definir o tamanho da página PDF e salvar HTML - como PDF usando Aspose.HTML. +date: 2026-09-03 +description: Converter HTML para PDF em Java com tamanho de página, margens e resolução + personalizados. Aprenda como definir o tamanho da página pdf e salvar html como + pdf usando Aspose.HTML. draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: pt -og_description: Converta HTML em PDF em Java rapidamente. Este guia mostra como definir - o tamanho da página PDF, ajustar a resolução e salvar HTML como PDF com Aspose.HTML. -og_title: Converter HTML para PDF em Java – Definir tamanho e resolução da página - PDF +lastmod: 2026-09-03 +og_description: Defina o tamanho da página pdf e converta HTML para PDF em Java rapidamente + com Aspose.HTML. Aprenda como personalizar tamanho da página, margens e resolução. +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: Converter HTML para PDF em Java – definir tamanho da página pdf e resolução +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: Converter HTML para PDF em Java – Definir tamanho da página PDF, resolução - e salvar HTML como PDF -url: /pt/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: Converter HTML para PDF em Java – definir tamanho da página pdf e resolução --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Converter HTML para PDF em Java – Guia Completo com Opções Personalizadas +# Converter HTML para PDF em Java – definir tamanho da página PDF e resolução -Já se perguntou como **converter HTML para PDF** em Java sem lutar contra um labirinto de configurações? Você não está sozinho. Muitos desenvolvedores se deparam com um obstáculo quando precisam de controle preciso sobre o tamanho da página, margens ou DPI de saída ao transformar uma página da web em um documento imprimível. +Já se perguntou como **converter HTML para PDF** em Java e ainda poder **definir o tamanho da página PDF** e controlar DPI? Você não está sozinho. Muitos desenvolvedores se deparam com dificuldades quando precisam de dimensões precisas de página, margens ou resolução de imagem para PDFs imprimíveis, como faturas, relatórios ou e‑books. -A boa notícia? Com Aspose.HTML você pode **salvar HTML como PDF** em apenas algumas linhas, e tem acesso total a opções como *set PDF page size* e *set PDF resolution*. Este tutorial guia você por todo o processo, explica por que cada configuração é importante e mostra um exemplo pronto‑para‑executar. +A boa notícia? Com Aspose.HTML você pode **salvar HTML como PDF** em apenas algumas linhas, e tem acesso total a opções como *definir tamanho da página PDF* e *definir resolução PDF*. Este tutorial guia você por todo o processo, explica por que cada configuração é importante e mostra um exemplo pronto‑para‑executar. -Ao final deste guia, você será capaz de pegar qualquer arquivo HTML local ou remoto e produzir um PDF de alta qualidade que respeita seus requisitos de layout — perfeito para faturas, relatórios ou e‑books. +Ao final deste guia você será capaz de pegar qualquer arquivo HTML local ou remoto e produzir um PDF de alta qualidade que respeita seus requisitos de layout — perfeito para cenários de **java generate invoice pdf**. --- ![Convert HTML to PDF with custom options](image.png "convert html to pdf example") +[Convert HTML to PDF with custom options](image.png "convert html to pdf example") + +## Respostas rápidas +- **Posso mudar o tamanho da página?** Sim – use `PdfSaveOptions.setPageSize()` com tamanhos predefinidos ou dimensões personalizadas. +- **Qual DPI devo usar para impressão?** 300 dpi oferece qualidade de impressão nítida; 72 dpi é suficiente para PDFs exibidos na tela. +- **Preciso de fontes extras?** Não – Aspose.HTML incorpora fontes padrão automaticamente; fontes personalizadas funcionam via `@font-face`. +- **É necessária uma licença?** Um teste gratuito funciona para desenvolvimento; uma licença comercial é necessária para produção. +- **Qual versão do Java é suportada?** JDK 8 ou superior (a biblioteca é compilada para Java 11 mas funciona em 8+). ## O que você aprenderá -- Como carregar um arquivo HTML com um base URI adequado para que links relativos sejam resolvidos. -- Como **set PDF page size** (A4, Letter, dimensões personalizadas) e margens. -- Como **set PDF resolution** (DPI) para imagens e texto nítidos. -- O código exato necessário para **save HTML as PDF** usando a biblioteca Aspose.HTML Java. -- Armadilhas comuns — como base URIs ausentes ou imagens superdimensionadas — e como evitá‑las. +- Como carregar um arquivo HTML com um URI base adequado para que links relativos sejam resolvidos. +- Como **definir o tamanho da página PDF** (A4, Letter, dimensões personalizadas) e margens. +- Como **definir a resolução PDF** (DPI) para imagens e texto nítidos. +- O código exato necessário para **salvar html como pdf** usando a biblioteca Aspose.HTML para Java. +- Armadilhas comuns — como URIs base ausentes ou imagens muito grandes — e como evitá-las. ### Pré-requisitos -- Java Development Kit (JDK) 8 ou mais recente. -- Maven ou Gradle para incluir `aspose-html` (a versão mais recente no momento da escrita é 23.10). -- Um entendimento básico da sintaxe Java. +- Java Development Kit (JDK) 8 ou superior. +- Maven ou Gradle para obter `aspose-html` (a versão mais recente no momento da escrita é 23.10). +- Um entendimento básico da sintaxe Java. - Um arquivo HTML que você deseja converter (usaremos `sample.html` nos exemplos). ---- +## Como definir o tamanho da página PDF ao converter HTML para PDF -## Converter HTML para PDF com Opções Personalizadas +Carregue seu HTML, configure `PdfSaveOptions` e chame `save`. O padrão de duas etapas abaixo lida com tudo que você precisa. -A seguir está o programa completo e executável que demonstra cada passo. Sinta‑se à vontade para copiar‑colar no seu IDE, ajustar os caminhos e executar. +Você define o tamanho da página chamando `pdfOptions.setPageSize(PdfPageSize.A4)` (ou qualquer outra constante predefinida) ou criando uma instância personalizada de `PdfPageSize` com largura e altura em pontos. O mesmo objeto de opções também permite definir a resolução com `pdfOptions.setResolution(300)`. Essa abordagem garante que o PDF gerado corresponda exatamente às dimensões que você requer. -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; +### Divisão passo a passo -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); +#### 1. Configurar seu projeto (html para pdf java) - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); - - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) - - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); - - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` - -### Por que Cada Etapa Importa - -| Etapa | Propósito | Dicas & Casos Limite | -|------|-----------|----------------------| -| **1. Base URI** | Garante que `<img src="images/pic.png">` e outros links relativos apontem para a pasta correta. | Se você pular isso, as imagens podem desaparecer no PDF de saída. Use `file:///` para arquivos locais, ou uma URL HTTP para recursos remotos. | -| **2. Load HTML** | Analisa o HTML no modelo DOM da Aspose. | Arquivos HTML grandes (>10 MB) podem precisar de mais memória; considere aumentar o heap da JVM (`-Xmx2g`). | -| **3. PDF Options** | Controla as dimensões da página (`set pdf page size`), margens e DPI (`set pdf resolution`). | A4 tem 210 × 297 mm; para Letter use `PdfPageSize.LETTER`. DPI de 300 é ideal para impressão; 72 funciona para PDFs apenas de tela. | -| **4. Save** | Grava o PDF final no disco (`save html as pdf`). | O caminho de saída deve ser gravável. Proteção contra sobrescrita pode ser adicionada com uma verificação de existência de arquivo. | -| **5. Confirmation** | Feedback simples no console. | Em aplicações reais substitua `System.out` por um logger. | - ---- - -## Passo a Passo Detalhado - -### 1. Configurar Seu Projeto (HTML to PDF Java) - -Se você usa Maven, adicione a dependência Aspose.HTML: +If you’re using Maven, add the Aspose.HTML dependency: ```xml <dependency> @@ -117,15 +108,15 @@ Se você usa Maven, adicione a dependência Aspose.HTML: </dependency> ``` -Usuários de Gradle podem adicionar: +Gradle users can add: ```gradle implementation 'com.aspose:aspose-html:23.10' ``` -> **Dica profissional:** A biblioteca é totalmente autônoma; você não precisa de binários nativos ou fontes extras para conversões básicas. +> **Dica profissional:** A biblioteca é totalmente autônoma; você não precisa de binários nativos ou fontes extras para conversões básicas. Aspose.HTML suporta conversão de HTML para PDF em mais de 50 cenários e pode processar arquivos de até 200 MB sem binários nativos externos. -### 2. Definir o Base URI +#### 2. Definir o URI base URLs relativos são uma fonte comum de imagens quebradas. Ao apontar `loadOptions.setBaseUri` para a pasta que contém seu HTML, você permite que o conversor resolva os caminhos exatamente como um navegador faria. @@ -134,9 +125,9 @@ HtmlLoadOptions loadOptions = new HtmlLoadOptions(); loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); ``` -Se seu HTML referencia CSS ou fontes externas hospedadas em um CDN, você pode pular o base URI, mas fique atento à latência da rede. +Se seu HTML referencia CSS ou fontes externas hospedadas em um CDN, você pode pular o URI base, mas fique atento à latência da rede. -### 3. Carregar o Documento HTML +#### 3. Carregar o documento HTML ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); @@ -148,9 +139,9 @@ Você também pode carregar a partir de uma URL: HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. Configurar Opções PDF – **Set PDF Page Size** & **Set PDF Resolution** +#### 4. Configurar opções PDF – **definir tamanho da página PDF** & **definir resolução PDF** -A classe `PdfSaveOptions` oferece controle granular. +`PdfSaveOptions` é o objeto de configuração do Aspose.HTML que controla propriedades de saída PDF como tamanho da página, margens e resolução. ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -160,16 +151,16 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **Page Size:** Escolha entre `PdfPageSize.A4`, `LETTER`, `LEGAL` ou crie um `PdfPageSize` personalizado com largura/altura em pontos. -- **Resolution:** DPI mais alto gera imagens rasterizadas mais nítidas, mas aumenta o tamanho do arquivo. Para a maioria dos trabalhos de impressão, 300 DPI é um ponto ideal. +- **Tamanho da página:** Escolha entre `PdfPageSize.A4`, `LETTER`, `LEGAL`, ou crie um `PdfPageSize` personalizado com largura/altura em pontos. A4 mede 210 × 297 mm; Letter mede 8,5 × 11 pol. +- **Resolução:** DPI mais alto gera imagens raster mais nítidas, mas também aumenta o tamanho do arquivo; passar de 72 dpi para 300 dpi normalmente triplica o tamanho do PDF enquanto melhora a nitidez da imagem em até 4×. Para a maioria dos trabalhos de impressão, 300 dpi é um ponto ideal. -### 5. Executar a Conversão – **Save HTML as PDF** +#### 5. Executar a conversão – **salvar html como pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); ``` -O método transmite automaticamente o PDF para o local de destino. Se precisar do PDF na memória (por exemplo, para enviar como anexo de e‑mail), use a sobrecarga com `OutputStream`: +O método transmite automaticamente o PDF para o local de destino. Se precisar do PDF na memória (por exemplo, para enviar como anexo de e‑mail), use a sobrecarga `OutputStream`: ```java try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { @@ -179,41 +170,37 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. Verificar o Resultado +#### 6. Verificar o resultado Abra `sample_custom.pdf` em qualquer visualizador de PDF. Você deverá ver: -- Páginas no tamanho A4 com margens superior/inferior de 20 pt. -- Todas as imagens renderizadas a 300 DPI (note a nitidez). +- Páginas tamanho A4 com margens superior/inferior de 20 pt. +- Todas as imagens renderizadas a 300 dpi (note a nitidez). - Links e CSS aplicados exatamente como no HTML original. -Se algo parecer errado, verifique novamente o base URI e assegure que todos os recursos externos estejam acessíveis. - ---- +Se algo parecer errado, verifique novamente o URI base e assegure que todos os recursos externos estejam acessíveis. -## Perguntas Frequentes & Casos Limite +## Perguntas comuns & casos extremos **Q: E se meu HTML contiver JavaScript?** -A: Aspose.HTML *não* executa JavaScript. Se sua página depende de conteúdo gerado por script, pré‑renderize o HTML (por exemplo, com um navegador headless) antes de enviá‑lo ao conversor. +A: Aspose.HTML *não* executa JavaScript. Se sua página depende de conteúdo gerado por script, pré-renderize o HTML (por exemplo, com um navegador headless) antes de enviá-lo ao conversor. **Q: Posso incorporar fontes personalizadas?** -A: Sim. Coloque os arquivos `.ttf` ou `.otf` na mesma pasta e referencie‑os via `@font-face` no seu CSS. O base URI tornará as fontes descobríveis. +A: Sim. Coloque os arquivos `.ttf` ou `.otf` na mesma pasta e referencie-os via `@font-face` em seu CSS. O URI base tornará as fontes descobríveis. -**Q: Como altero a orientação para paisagem?** +**Q: Como mudar a orientação para paisagem?** ```java saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` -**Q: Meu PDF está enorme — o que fazer?** -- Reduza o DPI (`setResolution(150)`). -- Comprima as imagens com `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. -- Remova ativos de alta resolução desnecessários do HTML de origem. - ---- +**Q: Meu PDF está enorme — o que posso fazer?** +- Reduza o DPI (`setResolution(150)`). +- Comprima imagens com `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. +- Remova ativos de alta resolução desnecessários do HTML fonte. -## Exemplo Completo (Tudo‑em‑Um) +## Exemplo completo (tudo‑em‑um) -Aqui está a classe inteira pronta para compilar. Substitua `YOUR_DIRECTORY` por um caminho absoluto na sua máquina. +Aqui está a classe completa pronta para compilar. Substitua `YOUR_DIRECTORY` por um caminho absoluto na sua máquina. ```java import com.aspose.html.converters.*; @@ -244,26 +231,81 @@ public class ConvertWithOptions { } ``` -Execute o programa, abra o PDF gerado e você verá o layout exato que definiu. Isso é **convert HTML to PDF** em Java, completo com dimensionamento e resolução personalizados. +Execute o programa, abra o PDF gerado, e você verá o layout exato que definiu. Isso é **convert html to pdf** em Java, completo com dimensionamento e resolução personalizados. ---- +## Próximos passos & tópicos relacionados + +- **Conversão em lote:** Percorra um diretório de arquivos HTML e produza PDFs de uma só vez. +- **Conteúdo dinâmico:** Combine Aspose.HTML com um motor de templates (por exemplo, Thymeleaf) para gerar faturas em tempo real. +- **Reforço de segurança:** Valide o HTML de entrada para evitar marcações maliciosas antes da conversão. +- **Bibliotecas alternativas:** Compare Aspose.HTML com OpenHTMLtoPDF ou wkhtmltopdf para casos extremos específicos. + +Experimente diferentes tamanhos de página (`PdfPageSize.LETTER`), orientações ou até dimensões personalizadas se estiver preparando um livreto. A API é flexível o suficiente para lidar com a maioria dos cenários *html to pdf java* que você encontrará. + +## Perguntas frequentes + +**Q: O Aspose.HTML suporta outros formatos de saída?** +A: Sim – além de PDF pode gerar PNG, JPEG, SVG e EPUB diretamente a partir de HTML. + +**Q: Existe um limite no número de páginas?** +A: Aspose.HTML pode criar PDFs com milhares de páginas; o uso de memória permanece baixo porque ele transmite páginas para o disco quando necessário. -## Próximos Passos & Tópicos Relacionados +**Q: Posso adicionar marcadores ou índice?** +A: Sim – use `PdfSaveOptions.setCreateBookmarks(true)` e forneça um esboço hierárquico no HTML. -- **Batch conversion:** Percorra um diretório de arquivos HTML e produza PDFs de uma só vez. -- **Dynamic content:** Combine Aspose.HTML com um motor de templates (por exemplo, Thymeleaf) para gerar faturas dinamicamente. -- **Security hardening:** Valide o HTML de entrada para evitar marcações maliciosas antes da conversão. -- **Alternative libraries:** Compare Aspose.HTML com OpenHTMLtoPDF ou wkhtmltopdf para casos de uso específicos. +**Q: Como lidar com imagens grandes de forma eficiente?** +A: Defina `pdfOptions.setResolution(150)` e habilite a redução de amostra de imagens via `pdfOptions.setImageDownsampleThreshold(150)`. -Experimente diferentes tamanhos de página (`PdfPageSize.LETTER`), orientações ou até dimensões personalizadas se estiver preparando um folheto. A API é flexível o suficiente para lidar com a maioria dos cenários *html to pdf java* que você encontrar. +**Q: A biblioteca é compatível com Java 17?** +A: Absolutamente – a biblioteca é compilada para Java 11 mas funciona em qualquer JDK posterior, incluindo Java 17 e Java 21. --- -## Conclusão +--- + +**Last Updated:** 2026-09-03 +**Tested with:** Aspose.HTML 23.10 for Java +**Author:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## Tutoriais Relacionados + +- [Como Converter HTML para PDF Java - Definir Margens de Página com Aspose.HTML](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [Ajustar Tamanho da Página PDF com Aspose.HTML para Java](/html/java/advanced-usage/adjust-pdf-page-size/) +- [Como Converter HTML para PDF Java – Usando Aspose.HTML para Java](/html/java/conversion-html-to-other-formats/convert-html-to-pdf/) -Cobremos tudo o que você precisa para **convert HTML to PDF** em Java enquanto **set PDF page size**, **set PDF resolution** e **save HTML as PDF** usando Aspose.HTML. O guia passo a passo, o código completo e a solução de problemas {{< /blocks/products/pf/tutorial-page-section >}} + {{< /blocks/products/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/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/russian/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index e5e48309a1..c5d9d04251 100644 --- a/html/russian/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/russian/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,111 +1,102 @@ --- category: general -date: 2026-01-06 -description: Конвертировать HTML в PDF в Java с пользовательским размером страницы, - полями и разрешением. Узнайте, как установить размер страницы PDF и сохранить HTML - как PDF с помощью Aspose.HTML. +date: 2026-09-03 +description: Конвертировать HTML в PDF на Java с пользовательским page size, margins + и resolution. Узнайте, как установить pdf page size и сохранить html как pdf с помощью + Aspose.HTML. draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: ru -og_description: Быстро преобразуйте HTML в PDF на Java. Это руководство показывает, - как установить размер страницы PDF, настроить разрешение и сохранить HTML как PDF - с помощью Aspose.HTML. -og_title: Преобразовать HTML в PDF в Java – установить размер страницы PDF и разрешение +lastmod: 2026-09-03 +og_description: Установите pdf page size и конвертируйте HTML в PDF на Java быстро + с помощью Aspose.HTML. Узнайте, как настроить page size, margins и resolution. +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: Конвертировать HTML в PDF на Java – установить pdf page size и resolution +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: Конвертировать HTML в PDF на Java – установить размер страницы PDF, разрешение - и сохранить HTML как PDF -url: /ru/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: Конвертировать HTML в PDF на Java – установить pdf page size и resolution --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Конвертировать HTML в PDF на Java – Полное руководство с пользовательскими параметрами +# Преобразование HTML в PDF на Java – установка размера страницы PDF и разрешения -Вы когда‑нибудь задумывались, как **конвертировать HTML в PDF** на Java без борьбы с лабиринтом настроек? Вы не одиноки. Многие разработчики сталкиваются с проблемой, когда им нужен точный контроль над размером страницы, полями или разрешением DPI при преобразовании веб‑страницы в печатный документ. +Задумывались ли вы когда‑нибудь, как **преобразовать HTML в PDF** на Java, одновременно имея возможность **установить размер страницы PDF** и управлять DPI? Вы не одиноки. Многие разработчики сталкиваются с проблемой, когда нужны точные размеры страниц, поля или разрешение изображений для печатных PDF, таких как счета‑фактуры, отчёты или электронные книги. -Хорошие новости? С Aspose.HTML вы можете **сохранить HTML как PDF** всего в несколько строк и получить полный доступ к таким параметрам, как *set PDF page size* и *set PDF resolution*. Это руководство проведёт вас через весь процесс, объяснит, почему каждый параметр важен, и покажет готовый к запуску пример. +Хорошие новости? С Aspose.HTML вы можете **сохранить HTML как PDF** всего в несколько строк, получая полный доступ к параметрам, таким как *set pdf page size* и *set pdf resolution*. Этот учебник проведёт вас через весь процесс, объяснит, почему каждый параметр важен, и покажет готовый к запуску пример. -К концу этого руководства вы сможете взять любой локальный или удалённый HTML‑файл и создать PDF высокого качества, соответствующий вашим требованиям к макету — идеально для счетов‑фактур, отчетов или электронных книг. +К концу этого руководства вы сможете взять любой локальный или удалённый HTML‑файл и создать PDF высокого качества, соответствующий вашим требованиям к разметке — идеально для сценариев **java generate invoice pdf**. --- -![Конвертировать HTML в PDF с пользовательскими параметрами](image.png "пример конвертации html в pdf") +![Преобразование HTML в PDF с пользовательскими параметрами](image.png "пример преобразования html в pdf") +[Преобразование HTML в PDF с пользовательскими параметрами](image.png "пример преобразования html в pdf") + +## Быстрые ответы +- **Можно ли изменить размер страницы?** Да — используйте `PdfSaveOptions.setPageSize()` с предопределёнными размерами или пользовательскими измерениями. +- **Какое DPI использовать для печати?** 300 dpi обеспечивает чёткое качество печати; 72 dpi достаточно для PDF, просматриваемых на экране. +- **Нужны ли дополнительные шрифты?** Нет — Aspose.HTML автоматически встраивает стандартные шрифты; пользовательские шрифты работают через `@font-face`. +- **Требуется ли лицензия?** Бесплатная пробная версия подходит для разработки; для продакшна нужна коммерческая лицензия. +- **Какая версия Java поддерживается?** JDK 8 или новее (библиотека скомпилирована для Java 11, но работает на 8+). ## Что вы узнаете -- Как загрузить HTML‑файл с правильным base URI, чтобы относительные ссылки разрешались. -- Как **set PDF page size** (A4, Letter, пользовательские размеры) и поля. -- Как **set PDF resolution** (DPI) для чётких изображений и текста. -- Точный код, необходимый для **save HTML as PDF** с использованием библиотеки Aspose.HTML Java. -- Распространённые подводные камни — такие как отсутствие base URI или слишком большие изображения — и как их избежать. +- Как загрузить HTML‑файл с правильным базовым URI, чтобы относительные ссылки разрешались. +- Как **установить размер страницы PDF** (A4, Letter, пользовательские размеры) и поля. +- Как **установить разрешение PDF** (DPI) для чётких изображений и текста. +- Точный код, необходимый для **сохранения html как pdf** с использованием библиотеки Aspose.HTML для Java. +- Распространённые подводные камни — такие как отсутствие базового URI или слишком большие изображения — и как их избежать. ### Предварительные требования -- Java Development Kit (JDK) 8 или новее. -- Maven или Gradle для получения `aspose-html` (последняя версия на момент написания — 23.10). -- Базовое понимание синтаксиса Java. +- Java Development Kit (JDK) 8 или новее. +- Maven или Gradle для получения `aspose-html` (последняя версия на момент написания — 23.10). +- Базовое понимание синтаксиса Java. - HTML‑файл, который вы хотите конвертировать (в примерах будем использовать `sample.html`). ---- - -## Конвертировать HTML в PDF с пользовательскими параметрами - -Ниже представлен полный, исполняемый пример программы, демонстрирующий каждый шаг. Смело скопируйте‑вставьте его в свою IDE, скорректируйте пути и нажмите Run. - -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; - -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); - - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); - - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) - - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); +## Как установить размер страницы PDF при преобразовании HTML в PDF - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` - -### Почему каждый шаг важен +Загрузите ваш HTML, настройте `PdfSaveOptions` и вызовите `save`. Ниже представленный двухшаговый шаблон обрабатывает всё необходимое. -| Шаг | Назначение | Советы и особые случаи | -|------|---------|-------------------| -| **1. Base URI** | Гарантирует, что `<img src="images/pic.png">` и другие относительные ссылки указывают на правильную папку. | Если пропустить этот шаг, изображения могут исчезнуть в итоговом PDF. Используйте `file:///` для локальных файлов или HTTP‑URL для удалённых ресурсов. | -| **2. Load HTML** | Парсит HTML в DOM‑модель Aspose. | Большие HTML‑файлы (>10 МБ) могут требовать больше памяти; рассмотрите увеличение кучи JVM (`-Xmx2g`). | -| **3. PDF Options** | Управляет размерами страниц (`set pdf page size`), полями и DPI (`set pdf resolution`). | A4 — 210 × 297 mm; для Letter используйте `PdfPageSize.LETTER`. DPI 300 идеально для печати; 72 подходит для PDF только для экрана. | -| **4. Save** | Записывает окончательный PDF на диск (`save html as pdf`). | Путь вывода должен быть доступен для записи. Защиту от перезаписи можно добавить проверкой существования файла. | -| **5. Confirmation** | Простое сообщение в консоли. | В реальных приложениях замените `System.out` на логгер. | - ---- +Вы задаёте размер страницы вызовом `pdfOptions.setPageSize(PdfPageSize.A4)` (или любой другой предопределённой константой) либо созданием пользовательского экземпляра `PdfPageSize` с шириной и высотой в пунктах. Тот же объект параметров позволяет установить разрешение через `pdfOptions.setResolution(300)`. Такой подход гарантирует, что сгенерированный PDF будет точно соответствовать требуемым размерам. -## Пошаговый разбор +### Пошаговый разбор -### 1. Настройте ваш проект (HTML в PDF на Java) +#### 1. Настройте проект (html to pdf java) Если вы используете Maven, добавьте зависимость Aspose.HTML: @@ -117,26 +108,26 @@ public class ConvertWithOptions { </dependency> ``` -Gradle пользователи могут добавить: +Пользователи Gradle могут добавить: ```gradle implementation 'com.aspose:aspose-html:23.10' ``` -> **Pro tip:** Библиотека полностью автономна; вам не нужны нативные бинарные файлы или дополнительные шрифты для базовых конвертаций. +> **Pro tip:** Библиотека полностью автономна; вам не нужны нативные бинарные файлы или дополнительные шрифты для базовых конвертаций. Aspose.HTML поддерживает преобразование HTML в PDF более чем в 50 сценариях и может обрабатывать файлы до 200 МБ без внешних нативных бинарных файлов. -### 2. Определите Base URI +#### 2. Определите базовый URI -Относительные URL часто являются причиной сломанных изображений. Указывая `loadOptions.setBaseUri` на папку, содержащую ваш HTML, вы позволяете конвертеру разрешать пути точно так же, как браузер. +Относительные URL часто являются причиной сломанных изображений. Установив `loadOptions.setBaseUri` на папку, содержащую ваш HTML, вы позволяете конвертеру разрешать пути точно так же, как браузер. ```java HtmlLoadOptions loadOptions = new HtmlLoadOptions(); loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); ``` -Если ваш HTML ссылается на внешние CSS или шрифты, размещённые на CDN, вы можете пропустить Base URI, но следите за задержкой сети. +Если ваш HTML ссылается на внешние CSS или шрифты, размещённые на CDN, вы можете пропустить базовый URI, но следите за задержкой сети. -### 3. Загрузите HTML‑документ +#### 3. Загрузите HTML‑документ ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); @@ -148,9 +139,9 @@ HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loa HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. Настройте параметры PDF – **Set PDF Page Size** & **Set PDF Resolution** +#### 4. Настройте параметры PDF – **set pdf page size** & **set pdf resolution** -Класс `PdfSaveOptions` предоставляет вам тонкую настройку. +`PdfSaveOptions` — объект конфигурации Aspose.HTML, управляющий свойствами вывода PDF, такими как размер страницы, поля и разрешение. ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -160,10 +151,10 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **Page Size:** Выбирайте из `PdfPageSize.A4`, `LETTER`, `LEGAL` или создайте пользовательский `PdfPageSize` с шириной/высотой в пунктах. -- **Resolution:** Более высокое DPI дает более чёткие растровые изображения, но увеличивает размер файла. Для большинства печатных задач 300 DPI — оптимальный вариант. +- **Размер страницы:** Выберите из `PdfPageSize.A4`, `LETTER`, `LEGAL` или создайте пользовательский `PdfPageSize` с шириной/высотой в пунктах. A4 имеет размеры 210 × 297 мм; Letter — 8.5 × 11 дюймов. +- **Разрешение:** Более высокое DPI даёт более чёткие растровые изображения, но также увеличивает размер файла; переход от 72 dpi к 300 dpi обычно утроит размер PDF, улучшая чёткость изображений до 4‑кратного. Для большинства печатных задач 300 dpi — оптимальный вариант. -### 5. Выполните конвертацию – **Save HTML as PDF** +#### 5. Выполните конвертацию — **save html as pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); @@ -179,25 +170,23 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. Проверьте результат +#### 6. Проверьте результат Откройте `sample_custom.pdf` в любом PDF‑просмотрщике. Вы должны увидеть: -- Страницы формата A4 с полями сверху/снизу по 20 pt. -- Все изображения отрисованы с 300 DPI (обратите внимание на чёткость). +- Страницы формата A4 с полями по 20 pt сверху и снизу. +- Все изображения отрисованы с разрешением 300 dpi (обратите внимание на чёткость). - Ссылки и CSS применены точно так же, как в оригинальном HTML. -Если что‑то выглядит неправильно, дважды проверьте Base URI и убедитесь, что все внешние ресурсы доступны. +Если что‑то выглядит некорректно, дважды проверьте базовый URI и убедитесь, что все внешние ресурсы доступны. ---- - -## Часто задаваемые вопросы и особые случаи +## Часто задаваемые вопросы и крайние случаи **Q: Что если мой HTML содержит JavaScript?** -A: Aspose.HTML *не* выполняет JavaScript. Если ваша страница зависит от контента, генерируемого скриптом, предварительно отрендерите HTML (например, с помощью безголового браузера) перед передачей его конвертеру. +A: Aspose.HTML *не* выполняет JavaScript. Если ваша страница зависит от контента, генерируемого скриптами, предварительно отрендерите HTML (например, с помощью безголового браузера) перед передачей его конвертеру. -**Q: Можно ли встроить пользовательские шрифты?** -A: Да. Поместите файлы `.ttf` или `.otf` в ту же папку и укажите их через `@font-face` в вашем CSS. Base URI сделает шрифты доступными. +**Q: Можно ли встраивать пользовательские шрифты?** +A: Да. Поместите файлы `.ttf` или `.otf` в ту же папку и укажите их через `@font-face` в вашем CSS. Базовый URI сделает шрифты доступными. **Q: Как изменить ориентацию на альбомную?** ```java @@ -205,13 +194,11 @@ saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` **Q: Мой PDF огромный — что делать?** -- Уменьшить DPI (`setResolution(150)`). -- Сжать изображения с помощью `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. -- Удалить из исходного HTML ненужные ресурсы высокого разрешения. +- Уменьшите DPI (`setResolution(150)`). +- Сжмите изображения с помощью `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. +- Удалите ненужные ресурсы высокого разрешения из исходного HTML. ---- - -## Полный рабочий пример (все в одном) +## Полный рабочий пример (все‑в‑одном) Вот весь класс, готовый к компиляции. Замените `YOUR_DIRECTORY` на абсолютный путь на вашем компьютере. @@ -244,26 +231,81 @@ public class ConvertWithOptions { } ``` -Запустите программу, откройте сгенерированный PDF, и вы увидите точный макет, который вы задали. Это **конвертировать HTML в PDF** на Java, полностью с пользовательскими размерами и разрешением. - ---- +Запустите программу, откройте сгенерированный PDF, и вы увидите точный макет, который вы задали. Это **convert html to pdf** на Java, полностью с пользовательскими размерами и разрешением. ## Следующие шаги и связанные темы -- **Batch conversion:** Обходить каталог HTML‑файлов и генерировать PDF‑файлы за один проход. -- **Dynamic content:** Сочетать Aspose.HTML с шаблонизатором (например, Thymeleaf) для генерации счетов‑фактур «на лету». -- **Security hardening:** Валидировать входной HTML, чтобы избежать вредоносной разметки перед конвертацией. -- **Alternative libraries:** Сравнить Aspose.HTML с OpenHTMLtoPDF или wkhtmltopdf для конкретных особых случаев. +- **Пакетное преобразование:** Обход каталога HTML‑файлов и создание PDF за один проход. +- **Динамический контент:** Сочетайте Aspose.HTML с шаблонизатором (например, Thymeleaf) для генерации счетов‑фактур в реальном времени. +- **Усиление безопасности:** Валидируйте входной HTML, чтобы избежать вредоносной разметки перед конвертацией. +- **Альтернативные библиотеки:** Сравните Aspose.HTML с OpenHTMLtoPDF или wkhtmltopdf для конкретных крайних случаев. Экспериментируйте с различными размерами страниц (`PdfPageSize.LETTER`), ориентациями или даже пользовательскими размерами, если готовите брошюру. API достаточно гибок, чтобы справиться с большинством сценариев *html to pdf java*, с которыми вы столкнётесь. +## Часто задаваемые вопросы + +**Q: Поддерживает ли Aspose.HTML другие форматы вывода?** +A: Да — помимо PDF он может напрямую генерировать PNG, JPEG, SVG и EPUB из HTML. + +**Q: Есть ли ограничение на количество страниц?** +A: Aspose.HTML может создавать PDF с тысячами страниц; использование памяти остаётся низким, так как страницы записываются на диск по мере необходимости. + +**Q: Можно ли добавить закладки или оглавление?** +A: Да — используйте `PdfSaveOptions.setCreateBookmarks(true)` и предоставьте иерархический план в HTML. + +**Q: Как эффективно работать с большими изображениями?** +A: Установите `pdfOptions.setResolution(150)` и включите понижение разрешения изображений через `pdfOptions.setImageDownsampleThreshold(150)`. + +**Q: Совместима ли библиотека с Java 17?** +A: Абсолютно — библиотека скомпилирована для Java 11, но работает на любой более новой JDK, включая Java 17 и Java 21. + +--- + --- -## Заключение +**Последнее обновление:** 2026-09-03 +**Тестировано с:** Aspose.HTML 23.10 for Java +**Автор:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## Связанные учебники + +- [Как преобразовать HTML в PDF Java — установить поля страницы с Aspose.HTML](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [Настройка размера страницы PDF с Aspose.HTML для Java](/html/java/advanced-usage/adjust-pdf-page-size/) +- [Как преобразовать HTML в PDF Java — использование Aspose.HTML для Java](/html/java/conversion-html-to-other-formats/convert-html-to-pdf/) -Мы рассмотрели всё, что вам нужно для **конвертировать HTML в PDF** на Java, используя **set PDF page size**, **set PDF resolution** и **save HTML as PDF** с помощью Aspose.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/spanish/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/spanish/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index 484a929f0e..8c5e2d1c94 100644 --- a/html/spanish/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/spanish/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,109 +1,105 @@ --- category: general -date: 2026-01-06 -description: Convertir HTML a PDF en Java con tamaño de página, márgenes y resolución - personalizados. Aprende cómo establecer el tamaño de página del PDF y guardar HTML - como PDF usando Aspose.HTML. +date: 2026-09-03 +description: Convertir HTML a PDF en Java con tamaño de página personalizado, márgenes + y resolución. Aprende cómo establecer el tamaño de página pdf y guardar html como + pdf usando Aspose.HTML. draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: es -og_description: Convertir HTML a PDF en Java rápidamente. Esta guía muestra cómo establecer - el tamaño de página del PDF, ajustar la resolución y guardar HTML como PDF con Aspose.HTML. -og_title: Convertir HTML a PDF en Java – Establecer el tamaño de página y la resolución - del PDF +lastmod: 2026-09-03 +og_description: Establece el tamaño de página pdf y convierte HTML a PDF en Java rápidamente + con Aspose.HTML. Aprende cómo personalizar el tamaño de página, los márgenes y la + resolución. +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: Convertir HTML a PDF en Java – establecer el tamaño de página pdf y la resolución +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: Convertir HTML a PDF en Java – Establecer tamaño de página PDF, resolución - y guardar HTML como PDF -url: /es/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: Convertir HTML a PDF en Java – establecer el tamaño de página pdf y la resolución --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Convertir HTML a PDF en Java – Guía completa con opciones personalizadas +# Convertir HTML a PDF en Java – establecer tamaño de página pdf y resolución -¿Alguna vez te has preguntado cómo **convertir HTML a PDF** en Java sin luchar contra un laberinto de configuraciones? No eres el único. Muchos desarrolladores se topan con un obstáculo cuando necesitan un control preciso sobre el tamaño de página, los márgenes o la DPI de salida al convertir una página web en un documento imprimible. +¿Alguna vez te has preguntado cómo **convertir HTML a PDF** en Java y, además, poder **establecer el tamaño de página pdf** y controlar la DPI? No estás solo. Muchos desarrolladores se topan con un obstáculo cuando necesitan dimensiones de página precisas, márgenes o resolución de imagen para PDFs imprimibles como facturas, informes o libros electrónicos. -¿La buena noticia? Con Aspose.HTML puedes **guardar HTML como PDF** en solo unas pocas líneas, y tienes acceso completo a opciones como *set PDF page size* y *set PDF resolution*. Este tutorial te guía a través de todo el proceso, explica por qué cada configuración es importante y te muestra un ejemplo listo para ejecutar. +¿La buena noticia? Con Aspose.HTML puedes **guardar HTML como PDF** en solo unas pocas líneas, y obtienes acceso completo a opciones como *establecer tamaño de página pdf* y *establecer resolución pdf*. Este tutorial te guía a través de todo el proceso, explica por qué cada configuración es importante y te muestra un ejemplo listo para ejecutar. -Al final de esta guía podrás tomar cualquier archivo HTML local o remoto y producir un PDF de alta calidad que respete tus requisitos de diseño, perfecto para facturas, informes o libros electrónicos. +Al final de esta guía podrás tomar cualquier archivo HTML local o remoto y producir un PDF de alta calidad que respete tus requisitos de diseño, perfecto para escenarios de **java generate invoice pdf**. --- -![Convertir HTML a PDF con opciones personalizadas](image.png "ejemplo de conversión de html a pdf") +![Convertir HTML a PDF con opciones personalizadas](image.png "ejemplo de convertir html a pdf") +[Convertir HTML a PDF con opciones personalizadas](image.png "ejemplo de convertir html a pdf") + +## Respuestas rápidas +- **¿Puedo cambiar el tamaño de página?** Sí – usa `PdfSaveOptions.setPageSize()` con tamaños predefinidos o dimensiones personalizadas. +- **¿Qué DPI debo usar para impresión?** 300 dpi brinda una calidad de impresión nítida; 72 dpi es suficiente para PDFs en pantalla. +- **¿Necesito fuentes adicionales?** No – Aspose.HTML incrusta fuentes estándar automáticamente; las fuentes personalizadas funcionan mediante `@font-face`. +- **¿Se requiere una licencia?** Una prueba gratuita funciona para desarrollo; se necesita una licencia comercial para producción. +- **¿Qué versión de Java es compatible?** JDK 8 o superior (la biblioteca está compilada para Java 11 pero se ejecuta en 8+). ## Lo que aprenderás -- Cómo cargar un archivo HTML con una base URI adecuada para que los enlaces relativos se resuelvan. -- Cómo **set PDF page size** (A4, Letter, dimensiones personalizadas) y los márgenes. -- Cómo **set PDF resolution** (DPI) para obtener imágenes y texto nítidos. -- El código exacto necesario para **save HTML as PDF** usando la biblioteca Aspose.HTML para Java. +- Cómo cargar un archivo HTML con una URI base adecuada para que los enlaces relativos se resuelvan. +- Cómo **establecer el tamaño de página pdf** (A4, Letter, dimensiones personalizadas) y los márgenes. +- Cómo **establecer la resolución pdf** (DPI) para imágenes y texto nítidos. +- El código exacto necesario para **guardar html como pdf** usando la biblioteca Aspose.HTML para Java. - Problemas comunes —como URIs base ausentes o imágenes demasiado grandes— y cómo evitarlos. ### Requisitos previos -- Java Development Kit (JDK) 8 o superior. -- Maven o Gradle para obtener `aspose-html` (la última versión al momento de escribir es 23.10). -- Una comprensión básica de la sintaxis de Java. +- Java Development Kit (JDK) 8 o superior. +- Maven o Gradle para obtener `aspose-html` (la última versión al momento de escribir es 23.10). +- Una comprensión básica de la sintaxis de Java. - Un archivo HTML que deseas convertir (usaremos `sample.html` en los ejemplos). -## Convertir HTML a PDF con opciones personalizadas - -A continuación se muestra el programa completo y ejecutable que demuestra cada paso. Siéntete libre de copiar‑pegarlo en tu IDE, ajustar las rutas y ejecutar. - -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; - -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); - - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); - - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) - - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); +## Cómo establecer el tamaño de página pdf al convertir HTML a PDF - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` +Carga tu HTML, configura `PdfSaveOptions` y llama a `save`. El patrón de dos pasos a continuación maneja todo lo que necesitas. -### Por qué cada paso es importante +Estableces el tamaño de página llamando a `pdfOptions.setPageSize(PdfPageSize.A4)` (o cualquier otra constante predefinida) o creando una instancia personalizada de `PdfPageSize` con ancho y alto en puntos. El mismo objeto de opciones también te permite establecer la resolución con `pdfOptions.setResolution(300)`. Este enfoque garantiza que el PDF generado coincida con las dimensiones exactas que requieres. -| Paso | Propósito | Consejos y casos límite | -|------|-----------|--------------------------| -| **1. Base URI** | Garantiza que `<img src="images/pic.png">` y otros enlaces relativos apunten a la carpeta correcta. | Si omites esto, las imágenes pueden desaparecer en el PDF de salida. Usa `file:///` para archivos locales, o una URL HTTP para recursos remotos. | -| **2. Load HTML** | Analiza el HTML en el modelo DOM de Aspose. | Los archivos HTML grandes (>10 MB) pueden necesitar más memoria; considera aumentar el heap de la JVM (`-Xmx2g`). | -| **3. PDF Options** | Controla las dimensiones de la página (`set pdf page size`), los márgenes y la DPI (`set pdf resolution`). | A4 es 210 × 297 mm; para Letter usa `PdfPageSize.LETTER`. Una DPI de 300 es ideal para impresión; 72 funciona para PDFs solo de pantalla. | -| **4. Save** | Escribe el PDF final en disco (`save html as pdf`). | La ruta de salida debe ser escribible. Se puede añadir protección contra sobrescritura verificando la existencia del archivo. | -| **5. Confirmation** | Retroalimentación simple en la consola. | En aplicaciones reales reemplaza `System.out` por un logger. | +### Desglose paso a paso -## Desglose paso a paso +#### 1. Configura tu proyecto (html a pdf java) -### 1. Configura tu proyecto (HTML a PDF Java) - -Si utilizas Maven, agrega la dependencia de Aspose.HTML: +If you’re using Maven, add the Aspose.HTML dependency: ```xml <dependency> @@ -113,15 +109,15 @@ Si utilizas Maven, agrega la dependencia de Aspose.HTML: </dependency> ``` -Los usuarios de Gradle pueden agregar: +Gradle users can add: ```gradle implementation 'com.aspose:aspose-html:23.10' ``` -> **Consejo profesional:** La biblioteca es totalmente autónoma; no necesitas binarios nativos ni fuentes adicionales para conversiones básicas. +> **Consejo profesional:** La biblioteca es totalmente autocontenida; no necesitas binarios nativos ni fuentes adicionales para conversiones básicas. Aspose.HTML soporta la conversión de HTML a PDF en más de 50 escenarios y puede procesar archivos de hasta 200 MB sin binarios nativos externos. -### 2. Define la Base URI +#### 2. Define la URI base Las URLs relativas son una fuente común de imágenes rotas. Al apuntar `loadOptions.setBaseUri` a la carpeta que contiene tu HTML, permites que el conversor resuelva las rutas exactamente como lo haría un navegador. @@ -130,23 +126,23 @@ HtmlLoadOptions loadOptions = new HtmlLoadOptions(); loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); ``` -Si tu HTML referencia CSS o fuentes externas alojadas en un CDN, puedes omitir la base URI, pero mantén bajo control la latencia de la red. +Si tu HTML hace referencia a CSS o fuentes externas alojadas en un CDN, puedes omitir la URI base, pero mantén bajo control la latencia de la red. -### 3. Carga el documento HTML +#### 3. Carga el documento HTML ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); ``` -También puedes cargar desde una URL: +You can also load from a URL: ```java HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. Configura las opciones PDF – **Set PDF Page Size** & **Set PDF Resolution** +#### 4. Configura las opciones PDF – **establecer tamaño de página pdf** & **establecer resolución pdf** -La clase `PdfSaveOptions` te brinda un control granular. +`PdfSaveOptions` es el objeto de configuración de Aspose.HTML que controla las propiedades de salida del PDF, como el tamaño de página, los márgenes y la resolución. ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -156,16 +152,16 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **Page Size:** Elige entre `PdfPageSize.A4`, `LETTER`, `LEGAL`, o crea un `PdfPageSize` personalizado con ancho/alto en puntos. -- **Resolution:** Un DPI más alto produce imágenes rasterizadas más nítidas pero aumenta el tamaño del archivo. Para la mayoría de trabajos de impresión, 300 DPI es un punto óptimo. +- **Tamaño de página:** Elige entre `PdfPageSize.A4`, `LETTER`, `LEGAL`, o crea un `PdfPageSize` personalizado con ancho/alto en puntos. A4 mide 210 × 297 mm; Letter mide 8.5 × 11 in. +- **Resolución:** Un DPI más alto produce imágenes rasterizadas más nítidas pero también aumenta el tamaño del archivo; pasar de 72 dpi a 300 dpi típicamente triplica el tamaño del PDF mientras mejora la nitidez de la imagen hasta 4×. Para la mayoría de trabajos de impresión, 300 dpi es un punto óptimo. -### 5. Realiza la conversión – **Save HTML as PDF** +#### 5. Realiza la conversión – **guardar html como pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); ``` -El método envía automáticamente el PDF a la ubicación de destino. Si necesitas el PDF en memoria (p.ej., para enviarlo como adjunto de correo), usa la sobrecarga que acepta un `OutputStream`: +El método transmite automáticamente el PDF a la ubicación de destino. Si necesitas el PDF en memoria (p. ej., para enviarlo como adjunto de correo electrónico), usa una sobrecarga con `OutputStream`: ```java try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { @@ -175,23 +171,23 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. Verifica el resultado +#### 6. Verifica el resultado Abre `sample_custom.pdf` en cualquier visor de PDF. Deberías ver: - Páginas de tamaño A4 con márgenes superior/inferior de 20 pt. -- Todas las imágenes renderizadas a 300 DPI (observa la nitidez). +- Todas las imágenes renderizadas a 300 dpi (observa la nitidez). - Enlaces y CSS aplicados exactamente como en el HTML original. -Si algo parece incorrecto, verifica nuevamente la base URI y asegura que todos los recursos externos sean accesibles. +Si algo parece incorrecto, verifica nuevamente la URI base y asegura que todos los recursos externos sean accesibles. -## Preguntas frecuentes y casos límite +## Preguntas comunes y casos límite **P: ¿Qué pasa si mi HTML contiene JavaScript?** -R: Aspose.HTML *no* ejecuta JavaScript. Si tu página depende de contenido generado por scripts, pre‑renderiza el HTML (p.ej., con un navegador sin cabeza) antes de pasarlo al conversor. +R: Aspose.HTML *no* ejecuta JavaScript. Si tu página depende de contenido generado por scripts, pre‑renderiza el HTML (p. ej., con un navegador sin cabeza) antes de pasarlo al conversor. **P: ¿Puedo incrustar fuentes personalizadas?** -R: Sí. Coloca los archivos `.ttf` o `.otf` en la misma carpeta y haz referencia a ellos mediante `@font-face` en tu CSS. La base URI hará que las fuentes sean detectables. +R: Sí. Coloca los archivos `.ttf` o `.otf` en la misma carpeta y haz referencia a ellos mediante `@font-face` en tu CSS. La URI base hará que las fuentes sean detectables. **P: ¿Cómo cambio la orientación a horizontal?** ```java @@ -199,9 +195,9 @@ saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` **P: Mi PDF es enorme—¿qué puedo hacer?** -- Reduce la DPI (`setResolution(150)`). -- Comprime imágenes con `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. -- Elimina activos de alta resolución innecesarios del HTML fuente. +- Reduce el DPI (`setResolution(150)`). +- Comprime las imágenes con `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. +- Elimina los recursos de alta resolución innecesarios del HTML fuente. ## Ejemplo completo (todo en uno) @@ -236,22 +232,81 @@ public class ConvertWithOptions { } ``` -Ejecuta el programa, abre el PDF generado, y verás el diseño exacto que definiste. Eso es **convertir HTML a PDF** en Java, completo con tamaños y resolución personalizados. +Ejecuta el programa, abre el PDF generado y verás el diseño exacto que definiste. Eso es **convert html to pdf** en Java, completo con tamaño y resolución personalizados. ## Próximos pasos y temas relacionados - **Conversión por lotes:** Recorrer un directorio de archivos HTML y producir PDFs de una sola vez. -- **Contenido dinámico:** Combina Aspose.HTML con un motor de plantillas (p.ej., Thymeleaf) para generar facturas al vuelo. +- **Contenido dinámico:** Combina Aspose.HTML con un motor de plantillas (p. ej., Thymeleaf) para generar facturas al instante. - **Refuerzo de seguridad:** Valida el HTML de entrada para evitar marcado malicioso antes de la conversión. - **Bibliotecas alternativas:** Compara Aspose.HTML con OpenHTMLtoPDF o wkhtmltopdf para casos límite específicos. -Experimenta con diferentes tamaños de página (`PdfPageSize.LETTER`), orientaciones, o incluso dimensiones personalizadas si estás preparando un folleto. La API es lo suficientemente flexible para manejar la mayoría de los escenarios *html to pdf java* que encontrarás. +Experimenta con diferentes tamaños de página (`PdfPageSize.LETTER`), orientaciones o incluso dimensiones personalizadas si estás preparando un folleto. La API es lo suficientemente flexible para manejar la mayoría de los escenarios *html to pdf java* que encuentres. + +## Preguntas frecuentes + +**P: ¿Aspose.HTML admite otros formatos de salida?** +R: Sí – además de PDF puede generar PNG, JPEG, SVG y EPUB directamente desde HTML. + +**P: ¿Hay un límite en la cantidad de páginas?** +R: Aspose.HTML puede crear PDFs con miles de páginas; el uso de memoria se mantiene bajo porque transmite las páginas al disco cuando es necesario. + +**P: ¿Puedo añadir marcadores o tabla de contenido?** +R: Sí – usa `PdfSaveOptions.setCreateBookmarks(true)` y proporciona un esquema jerárquico en el HTML. + +**P: ¿Cómo manejo imágenes grandes de manera eficiente?** +R: Establece `pdfOptions.setResolution(150)` y habilita el muestreo descendente de imágenes mediante `pdfOptions.setImageDownsampleThreshold(150)`. -## Conclusión +**P: ¿La biblioteca es compatible con Java 17?** +R: Absolutamente – la biblioteca está compilada para Java 11 pero se ejecuta en cualquier JDK posterior, incluido Java 17 y Java 21. + +--- + +--- + +**Last Updated:** 2026-09-03 +**Tested with:** Aspose.HTML 23.10 for Java +**Author:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## Tutoriales relacionados + +- [Cómo convertir HTML a PDF Java - Establecer márgenes de página con Aspose.HTML](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [Ajustar tamaño de página PDF con Aspose.HTML para Java](/html/java/advanced-usage/adjust-pdf-page-size/) +- [Cómo convertir HTML a PDF Java – Usando Aspose.HTML para Java](/html/java/conversion-html-to-other-formats/convert-html-to-pdf/) -Hemos cubierto todo lo que necesitas para **convertir HTML a PDF** en Java mientras **set PDF page size**, **set PDF resolution**, y **save HTML as PDF** usando Aspose.HTML. La guía paso a paso, el código completo y la resolución de problemas {{< /blocks/products/pf/tutorial-page-section >}} + {{< /blocks/products/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/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/swedish/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index cfba178e2f..ee948c25fc 100644 --- a/html/swedish/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/swedish/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,110 +1,101 @@ --- category: general -date: 2026-01-06 +date: 2026-09-03 description: Konvertera HTML till PDF i Java med anpassad sidstorlek, marginaler och - upplösning. Lär dig hur du ställer in PDF‑sidstorlek och sparar HTML som PDF med - Aspose.HTML. + upplösning. Lär dig hur du anger pdf-sidstorlek och sparar html som pdf med Aspose.HTML. draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: sv -og_description: Konvertera HTML till PDF i Java snabbt. Den här guiden visar hur du - ställer in PDF‑sidstorlek, justerar upplösning och sparar HTML som PDF med Aspose.HTML. -og_title: Konvertera HTML till PDF i Java – Ställ in PDF‑sidstorlek och upplösning +lastmod: 2026-09-03 +og_description: Ange pdf-sidstorlek och konvertera HTML till PDF i Java snabbt med + Aspose.HTML. Lär dig hur du anpassar sidstorlek, marginaler och upplösning. +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: Konvertera HTML till PDF i Java – ange pdf-sidstorlek och upplösning +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: Konvertera HTML till PDF i Java – Ställ in PDF-sidstorlek, upplösning och spara - HTML som PDF -url: /sv/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: Konvertera HTML till PDF i Java – ange pdf-sidstorlek och upplösning --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Konvertera HTML till PDF i Java – Komplett guide med anpassade alternativ +# Konvertera HTML till PDF i Java – ange pdf sidstorlek och upplösning -Har du någonsin undrat hur man **convert HTML to PDF** i Java utan att kämpa med en labyrint av inställningar? Du är inte ensam. Många utvecklare stöter på problem när de behöver exakt kontroll över sidstorlek, marginaler eller utskrifts‑DPI när de omvandlar en webbsida till ett utskrivbart dokument. +Har du någonsin undrat hur man **convert HTML to PDF** i Java samtidigt som man kan **set pdf page size** och kontrollera DPI? Du är inte ensam. Många utvecklare stöter på problem när de behöver exakta sidmått, marginaler eller bildupplösning för utskrivbara PDF:er såsom fakturor, rapporter eller e‑böcker. -Den goda nyheten? Med Aspose.HTML kan du **save HTML as PDF** på bara några rader, och du får full åtkomst till alternativ som *set PDF page size* och *set PDF resolution*. Denna handledning går dig igenom hela processen, förklarar varför varje inställning är viktig, och visar ett färdigt exempel som kan köras. +Den goda nyheten? Med Aspose.HTML kan du **save HTML as PDF** på bara några rader, och du får full åtkomst till alternativ som *set pdf page size* och *set pdf resolution*. Denna handledning guidar dig genom hela processen, förklarar varför varje inställning är viktig, och visar ett färdigt exempel. -När du har gått igenom den här guiden kan du ta vilken lokal eller fjärr‑HTML‑fil som helst och producera en högkvalitativ PDF som respekterar dina layout‑krav – perfekt för fakturor, rapporter eller e‑böcker. +I slutet av den här guiden kommer du kunna ta vilken lokal eller fjärr-HTML-fil som helst och skapa en högkvalitativ PDF som respekterar dina layoutkrav—perfekt för **java generate invoice pdf**-scenarier. --- -![Convert HTML to PDF with custom options](image.png "convert html to pdf example") +![Konvertera HTML till PDF med anpassade alternativ](image.png "konvertera html till pdf exempel") +[Konvertera HTML till PDF med anpassade alternativ](image.png "konvertera html till pdf exempel") + +## Snabba svar +- **Kan jag ändra sidstorleken?** Yes – use `PdfSaveOptions.setPageSize()` with predefined sizes or custom dimensions. +- **Vilken DPI bör jag använda för utskrift?** 300 dpi ger skarp utskriftskvalitet; 72 dpi räcker för PDF:er på skärmen. +- **Behöver jag extra typsnitt?** Nej – Aspose.HTML bäddar in standardtypsnitt automatiskt; anpassade typsnitt fungerar via `@font-face`. +- **Krävs en licens?** En gratis provversion fungerar för utveckling; en kommersiell licens behövs för produktion. +- **Vilken Java-version stöds?** JDK 8 eller nyare (biblioteket är kompilerat för Java 11 men körs på 8+). ## Vad du kommer att lära dig -- Hur du laddar en HTML‑fil med en korrekt bas‑URI så att relativa länkar löses. -- Hur du **set PDF page size** (A4, Letter, egna dimensioner) och marginaler. -- Hur du **set PDF resolution** (DPI) för skarpa bilder och text. -- Den exakta koden som behövs för att **save HTML as PDF** med Aspose.HTML Java‑biblioteket. -- Vanliga fallgropar – som saknad bas‑URI eller för stora bilder – och hur du undviker dem. +- Hur man laddar en HTML-fil med en korrekt bas-URI så att relativa länkar löses. +- Hur man **set pdf page size** (A4, Letter, anpassade dimensioner) och marginaler. +- Hur man **set pdf resolution** (DPI) för skarpa bilder och text. +- Den exakta koden som behövs för att **save html as pdf** med Aspose.HTML Java-biblioteket. +- Vanliga fallgropar—som saknade bas-URI:er eller för stora bilder—och hur man undviker dem. ### Förutsättningar -- Java Development Kit (JDK) 8 eller nyare. -- Maven eller Gradle för att hämta `aspose-html` (senaste versionen vid skrivtillfället är 23.10). -- Grundläggande förståelse för Java‑syntax. -- En HTML‑fil du vill konvertera (vi använder `sample.html` i exemplen). - ---- +- Java Development Kit (JDK) 8 eller nyare. +- Maven eller Gradle för att hämta `aspose-html` (den senaste versionen vid skrivandet är 23.10). +- Grundläggande förståelse för Java-syntax. +- En HTML-fil du vill konvertera (vi använder `sample.html` i exemplen). -## Konvertera HTML till PDF med anpassade alternativ +## Hur man anger pdf sidstorlek när man konverterar HTML till PDF -Nedan är det fullständiga, körbara programmet som demonstrerar varje steg. Kopiera‑klistra gärna in det i din IDE, justera sökvägarna och kör. +Ladda din HTML, konfigurera `PdfSaveOptions` och anropa `save`. Mönstret i två steg nedan hanterar allt du behöver. -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; +Du anger sidstorleken genom att anropa `pdfOptions.setPageSize(PdfPageSize.A4)` (eller någon annan fördefinierad konstant) eller genom att skapa en anpassad `PdfPageSize`-instans med bredd och höjd i punkter. Samma alternativobjekt låter dig också ange upplösning med `pdfOptions.setResolution(300)`. Detta tillvägagångssätt garanterar att den genererade PDF:en matchar de exakta dimensionerna du kräver. -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); +### Steg‑för‑steg genomgång - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); - - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) - - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); - - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` - -### Varför varje steg är viktigt - -| Steg | Syfte | Tips & specialfall | -|------|-------|--------------------| -| **1. Base URI** | Säkerställer att `<img src="images/pic.png">` och andra relativa länkar pekar på rätt mapp. | Hoppar du över detta kan bilder försvinna i den genererade PDF‑en. Använd `file:///` för lokala filer, eller en HTTP‑URL för fjärrresurser. | -| **2. Load HTML** | Tolkar HTML‑en till Asposes DOM‑modell. | Stora HTML‑filer (>10 MB) kan behöva mer minne; överväg att öka JVM‑heapen (`-Xmx2g`). | -| **3. PDF Options** | Styr siddimensioner (`set pdf page size`), marginaler och DPI (`set pdf resolution`). | A4 är 210 × 297 mm; för Letter använd `PdfPageSize.LETTER`. DPI 300 är idealiskt för utskrift; 72 fungerar för skärm‑endast PDF‑er. | -| **4. Save** | Skriver den färdiga PDF‑en till disk (`save html as pdf`). | Utskrifts‑sökvägen måste vara skrivbar. Överskrivningsskydd kan läggas till med en fil‑existerande‑kontroll. | -| **5. Confirmation** | Enkel konsol‑feedback. | I riktiga applikationer ersätt `System.out` med en logger. | - ---- - -## Steg‑för‑steg‑genomgång - -### 1. Ställ in ditt projekt (HTML till PDF Java) +#### 1. Ställ in ditt projekt (html till pdf java) Om du använder Maven, lägg till Aspose.HTML‑beroendet: @@ -122,20 +113,20 @@ Gradle‑användare kan lägga till: implementation 'com.aspose:aspose-html:23.10' ``` -> **Pro tip:** Biblioteket är helt självständigt; du behöver inga inhemska binärer eller extra teckensnitt för grundläggande konverteringar. +> **Pro tip:** Biblioteket är helt självständigt; du behöver inga inhemska binärer eller extra typsnitt för grundläggande konverteringar. Aspose.HTML stödjer konvertering av HTML till PDF i över 50 scenarier och kan bearbeta filer upp till 200 MB utan externa inhemska binärer. -### 2. Definiera Base URI +#### 2. Definiera bas-URI:n -Relativa URL:er är en vanlig källa till trasiga bilder. Genom att peka `loadOptions.setBaseUri` på mappen som innehåller din HTML låter du konverteraren lösa sökvägar exakt som en webbläsare skulle göra. +Relativa URL:er är en vanlig källa till brutna bilder. Genom att peka `loadOptions.setBaseUri` till mappen som innehåller din HTML låter du konverteraren lösa sökvägar exakt som en webbläsare skulle. ```java HtmlLoadOptions loadOptions = new HtmlLoadOptions(); loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); ``` -Om din HTML refererar till extern CSS eller teckensnitt som hostas på ett CDN kan du hoppa över bas‑URI, men håll ett öga på nätverkslatens. +Om din HTML refererar till extern CSS eller typsnitt som hostas på ett CDN, kan du hoppa över bas-URI:n, men håll ett öga på nätverkslatens. -### 3. Ladda HTML‑dokumentet +#### 3. Ladda HTML-dokumentet ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); @@ -147,9 +138,9 @@ Du kan också ladda från en URL: HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. Konfigurera PDF‑alternativ – **Set PDF Page Size** & **Set PDF Resolution** +#### 4. Konfigurera PDF-alternativ – **set pdf page size** & **set pdf resolution** -Klassen `PdfSaveOptions` ger dig fin‑granulerad kontroll. +`PdfSaveOptions` är Aspose.HTML:s konfigurationsobjekt som styr PDF-utdataegenskaper såsom sidstorlek, marginaler och upplösning. ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -159,16 +150,16 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **Page Size:** Välj mellan `PdfPageSize.A4`, `LETTER`, `LEGAL`, eller skapa en egen `PdfPageSize` med bredd/höjd i punkter. -- **Resolution:** Högre DPI ger skarpare rasterbilder men ökar filstorleken. För de flesta utskriftsjobb är 300 DPI en bra balans. +- **Sidstorlek:** Välj mellan `PdfPageSize.A4`, `LETTER`, `LEGAL`, eller skapa en anpassad `PdfPageSize` med bredd/höjd i punkter. A4 mäter 210 × 297 mm; Letter mäter 8.5 × 11 in. +- **Upplösning:** Högre DPI ger skarpare rasterbilder men ökar också filstorleken; att gå från 72 dpi till 300 dpi tredubblar vanligtvis PDF‑storleken samtidigt som bildskärpan förbättras upp till 4×. För de flesta utskriftsjobb är 300 dpi en bra balans. -### 5. Utför konverteringen – **Save HTML as PDF** +#### 5. Utför konverteringen – **save html as pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); ``` -Metoden strömmar automatiskt PDF‑en till målplatsen. Om du behöver PDF‑en i minnet (t.ex. för att skicka som e‑postbilaga) kan du använda en `OutputStream`‑överladdning: +Metoden strömmar automatiskt PDF:en till målplatsen. Om du behöver PDF:en i minnet (t.ex. för att skicka som e‑postbilaga), använd en `OutputStream`‑överladdning: ```java try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { @@ -178,37 +169,37 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. Verifiera resultatet +#### 6. Verifiera resultatet Öppna `sample_custom.pdf` i någon PDF‑visare. Du bör se: -- Sidor i A4‑format med 20 pt marginaler överst och nederst. -- Alla bilder renderade med 300 DPI (lägg märke till skärpan). -- Länkar och CSS exakt som i den ursprungliga HTML‑en. +- Sidor i A4‑format med 20 pt topp-/bottenmarginaler. +- Alla bilder renderade med 300 dpi (observera skärpan). +- Länkar och CSS tillämpade exakt som i den ursprungliga HTML. -Om något ser felaktigt ut, dubbelkolla bas‑URI och säkerställ att alla externa resurser är åtkomliga. +Om något ser fel ut, dubbelkolla bas-URI:n och säkerställ att alla externa resurser är nåbara. -## Vanliga frågor & specialfall +## Vanliga frågor & kantfall **Q: Vad händer om min HTML innehåller JavaScript?** -A: Aspose.HTML **executerar inte** JavaScript. Om din sida förlitar sig på skript‑genererat innehåll, rendera HTML‑en först med en huvudlös webbläsare innan du matar in den i konverteraren. +A: Aspose.HTML kör *inte* JavaScript. Om din sida är beroende av skriptgenererat innehåll, förrendera HTML:en (t.ex. med en huvudlös webbläsare) innan du matar den till konverteraren. -**Q: Kan jag bädda in egna teckensnitt?** -A: Ja. Placera `.ttf`‑ eller `.otf`‑filerna i samma mapp och referera till dem via `@font-face` i din CSS. Bas‑URI gör teckensnitten upptäckbara. +**Q: Kan jag bädda in anpassade typsnitt?** +A: Ja. Placera `.ttf`- eller `.otf`‑filerna i samma mapp och referera dem via `@font-face` i din CSS. Bas‑URI:n gör typsnitten upptäckbara. **Q: Hur ändrar jag orienteringen till liggande?** ```java saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` -**Q: Min PDF är enorm – vad kan jag göra?** -- Minska DPI (`setResolution(150)`). +**Q: Min PDF är enorm—vad kan jag göra?** +- Minska DPI:n (`setResolution(150)`). - Komprimera bilder med `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. -- Ta bort onödiga högupplösta resurser från käll‑HTML‑en. +- Ta bort onödiga högupplösta resurser från käll‑HTML. -## Fullt fungerande exempel (allt i ett) +## Fullt fungerande exempel (allt‑i‑ett) -Här är hela klassen klar att kompileras. Ersätt `YOUR_DIRECTORY` med en absolut sökväg på din maskin. +Här är hela klassen klar för kompilering. Ersätt `YOUR_DIRECTORY` med en absolut sökväg på din maskin. ```java import com.aspose.html.converters.*; @@ -239,22 +230,79 @@ public class ConvertWithOptions { } ``` -Kör programmet, öppna den genererade PDF‑en, och du kommer att se exakt den layout du definierade. Det är **convert HTML to PDF** i Java, komplett med anpassad storlek och upplösning. +Kör programmet, öppna den genererade PDF:en, och du kommer se den exakta layouten du definierade. Det är **convert html to pdf** i Java, komplett med anpassad storlek och upplösning. ## Nästa steg & relaterade ämnen -- **Batch conversion:** Loopa igenom en katalog med HTML‑filer och producera PDF‑er i ett svep. -- **Dynamic content:** Kombinera Aspose.HTML med en mallmotor (t.ex. Thymeleaf) för att generera fakturor i realtid. -- **Security hardening:** Validera indata‑HTML för att undvika skadlig markup innan konvertering. -- **Alternative libraries:** Jämför Aspose.HTML med OpenHTMLtoPDF eller wkhtmltopdf för specifika specialfall. +- **Batchkonvertering:** Loopa över en katalog med HTML-filer och producera PDF:er på en gång. +- **Dynamiskt innehåll:** Kombinera Aspose.HTML med en mallmotor (t.ex. Thymeleaf) för att generera fakturor i realtid. +- **Säkerhetsförstärkning:** Validera inmatad HTML för att undvika skadlig markup innan konvertering. +- **Alternativa bibliotek:** Jämför Aspose.HTML med OpenHTMLtoPDF eller wkhtmltopdf för specifika kantfall. + +Experimentera med olika sidstorlekar (`PdfPageSize.LETTER`), orienteringar, eller till och med anpassade dimensioner om du förbereder en häfte. API:et är tillräckligt flexibelt för att hantera de flesta *html to pdf java*-scenarier du stöter på. + +## Vanliga frågor -Experimentera med olika sidstorlekar (`PdfPageSize.LETTER`), orienteringar eller egna dimensioner om du förbereder en häfte. API‑et är tillräckligt flexibelt för att hantera de flesta *html to pdf java*-scenarier du kan stöta på. +**Q: Stöder Aspose.HTML andra utdataformat?** +A: Ja – förutom PDF kan det generera PNG, JPEG, SVG och EPUB direkt från HTML. -## Slutsats +**Q: Finns det någon gräns för antalet sidor?** +A: Aspose.HTML kan skapa PDF:er med tusentals sidor; minnesanvändningen förblir låg eftersom den strömmar sidor till disk vid behov. + +**Q: Kan jag lägga till bokmärken eller innehållsförteckning?** +A: Ja – använd `PdfSaveOptions.setCreateBookmarks(true)` och tillhandahåll en hierarkisk struktur i HTML. + +**Q: Hur hanterar jag stora bilder effektivt?** +A: Ställ in `pdfOptions.setResolution(150)` och aktivera bild‑nedsampling via `pdfOptions.setImageDownsampleThreshold(150)`. + +**Q: Är biblioteket kompatibelt med Java 17?** +A: Absolut – biblioteket är kompilerat för Java 11 men körs på vilken senare JDK som helst, inklusive Java 17 och Java 21. + +--- + +**Senast uppdaterad:** 2026-09-03 +**Testat med:** Aspose.HTML 23.10 for Java +**Författare:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## Relaterade handledningar + +- [Hur man konverterar HTML till PDF Java - Ange sidmarginaler med Aspose.HTML](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [Justera PDF-sidstorlek med Aspose.HTML för Java](/html/java/advanced-usage/adjust-pdf-page-size/) +- [Hur man konverterar HTML till PDF Java – Använd Aspose.HTML för Java](/html/java/conversion-html-to-other-formats/convert-html-to-pdf/) -Vi har gått igenom allt du behöver för att **convert HTML to PDF** i Java samtidigt som du **set PDF page size**, **set PDF resolution** och **save HTML as PDF** med Aspose.HTML. Den steg‑för‑steg‑guide, komplett kod och felsökning {{< /blocks/products/pf/tutorial-page-section >}} + {{< /blocks/products/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/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/thai/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index f8b15f12e1..a81674183e 100644 --- a/html/thai/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/thai/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,111 +1,97 @@ --- category: general -date: 2026-01-06 -description: แปลง HTML เป็น PDF ใน Java ด้วยขนาดหน้ากระดาษที่กำหนดเอง, ระยะขอบ, และความละเอียด - เรียนรู้วิธีตั้งค่าขนาดหน้ากระดาษ PDF และบันทึก HTML เป็น PDF โดยใช้ Aspose.HTML. +date: 2026-09-03 +description: แปลง HTML เป็น PDF ใน Java ด้วยขนาดหน้าที่กำหนดเอง, ระยะขอบ, และความละเอียด. + เรียนรู้วิธีตั้งค่าขนาดหน้า pdf และบันทึก html เป็น pdf ด้วย Aspose.HTML. draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: th -og_description: แปลง HTML เป็น PDF ใน Java อย่างรวดเร็ว คู่มือนี้แสดงวิธีตั้งค่าขนาดหน้า - PDF ปรับความละเอียด และบันทึก HTML เป็น PDF ด้วย Aspose.HTML. -og_title: แปลง HTML เป็น PDF ใน Java – ตั้งค่าขนาดหน้าและความละเอียดของ PDF +lastmod: 2026-09-03 +og_description: ตั้งค่าขนาดหน้า pdf และแปลง HTML เป็น PDF ใน Java อย่างรวดเร็วด้วย + Aspose.HTML. เรียนรู้วิธีปรับแต่งขนาดหน้า, ระยะขอบ, และความละเอียด. +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: แปลง HTML เป็น PDF ใน Java – ตั้งค่าขนาดหน้า pdf และความละเอียด +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: แปลง HTML เป็น PDF ใน Java – ตั้งค่าขนาดหน้า PDF, ความละเอียด, และบันทึก HTML - เป็น PDF -url: /th/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: แปลง HTML เป็น PDF ใน Java – ตั้งค่าขนาดหน้า pdf และความละเอียด --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# แปลง HTML เป็น PDF ใน Java – คู่มือครบถ้วนพร้อมตัวเลือกกำหนดเอง +# แปลง HTML เป็น PDF ใน Java – ตั้งขนาดหน้า pdf และความละเอียด -เคยสงสัยไหมว่าจะ **แปลง HTML เป็น PDF** ใน Java อย่างไรโดยไม่ต้องต่อสู้กับการตั้งค่าที่ซับซ้อน? คุณไม่ได้เป็นคนเดียว นักพัฒนาหลายคนเจออุปสรรคเมื่อต้องการควบคุมขนาดหน้า, ระยะขอบ, หรือ DPI ของผลลัพธ์ขณะแปลงหน้าเว็บเป็นเอกสารที่พิมพ์ได้ +เคยสงสัยไหมว่าจะแปลง **HTML เป็น PDF** ใน Java อย่างไร พร้อมกับสามารถ **ตั้งขนาดหน้า pdf** และควบคุม DPI ได้? คุณไม่ได้เป็นคนเดียวที่มีคำถามนี้ นักพัฒนาจำนวนมากเจออุปสรรคเมื่อจำเป็นต้องกำหนดขนาดหน้าที่แม่นยำ, ระยะขอบ, หรือความละเอียดของภาพสำหรับ PDF ที่สามารถพิมพ์ได้ เช่น ใบแจ้งหนี้, รายงาน, หรือ e‑book. -ข่าวดีคือ? ด้วย Aspose.HTML คุณสามารถ **บันทึก HTML เป็น PDF** ได้เพียงไม่กี่บรรทัด พร้อมเข้าถึงตัวเลือกต่าง ๆ เช่น *ตั้งค่าขนาดหน้าของ PDF* และ *ตั้งค่าความละเอียดของ PDF* บทแนะนำนี้จะพาคุณผ่านกระบวนการทั้งหมด อธิบายว่าทำไมแต่ละการตั้งค่าถึงสำคัญ และแสดงตัวอย่างที่พร้อมรัน +ข่าวดีคืออะไร? ด้วย Aspose.HTML คุณสามารถ **บันทึก HTML เป็น PDF** เพียงไม่กี่บรรทัด และคุณจะได้เข้าถึงตัวเลือกต่าง ๆ เช่น *ตั้งขนาดหน้า pdf* และ *ตั้งความละเอียด pdf* อย่างเต็มที่ บทแนะนำนี้จะพาคุณผ่านกระบวนการทั้งหมด อธิบายว่าทำไมแต่ละการตั้งค่าถึงสำคัญ และแสดงตัวอย่างที่พร้อมใช้งาน. -เมื่อจบคู่มือนี้ คุณจะสามารถแปลงไฟล์ HTML ใด ๆ ไม่ว่าจะเป็นไฟล์ในเครื่องหรือไฟล์จากระยะไกลให้เป็น PDF คุณภาพสูงที่รักษาเลย์เอาต์ตามที่ต้องการ—เหมาะสำหรับใบแจ้งหนี้, รายงาน, หรืออีบุ๊ค +เมื่อคุณอ่านจบคู่มือนี้ คุณจะสามารถนำไฟล์ HTML ใด ๆ ไม่ว่าจะเป็นไฟล์ในเครื่องหรือจากระยะไกลมาสร้าง PDF คุณภาพสูงที่รักษาการจัดวางของคุณได้—เหมาะอย่างยิ่งสำหรับสถานการณ์ **java generate invoice pdf**. ---- +![แปลง HTML เป็น PDF ด้วยตัวเลือกที่กำหนดเอง](image.png "ตัวอย่างการแปลง html เป็น pdf") +[แปลง HTML เป็น PDF ด้วยตัวเลือกที่กำหนดเอง](image.png "ตัวอย่างการแปลง html เป็น pdf") -![แปลง HTML เป็น PDF พร้อมตัวเลือกกำหนดเอง](image.png "ตัวอย่างการแปลง html เป็น pdf") +## คำตอบสั้น +- **ฉันสามารถเปลี่ยนขนาดหน้าได้หรือไม่?** ได้ – ใช้ `PdfSaveOptions.setPageSize()` พร้อมขนาดที่กำหนดไว้ล่วงหน้าหรือขนาดที่กำหนดเอง. +- **ควรใช้ DPI เท่าใดสำหรับการพิมพ์?** 300 dpi ให้คุณภาพการพิมพ์ที่คมชัด; 72 dpi เพียงพอสำหรับ PDF บนหน้าจอ. +- **ฉันต้องการฟอนต์เพิ่มเติมหรือไม่?** ไม่ – Aspose.HTML ฝังฟอนต์มาตรฐานโดยอัตโนมัติ; ฟอนต์ที่กำหนดเองทำงานผ่าน `@font-face`. +- **ต้องการใบอนุญาตหรือไม่?** รุ่นทดลองฟรีใช้ได้สำหรับการพัฒนา; จำเป็นต้องมีใบอนุญาตเชิงพาณิชย์สำหรับการใช้งานจริง. +- **รองรับเวอร์ชัน Java ใด?** JDK 8 หรือใหม่กว่า (ไลบรารีคอมไพล์สำหรับ Java 11 แต่ทำงานบน 8+). ## สิ่งที่คุณจะได้เรียนรู้ - -- วิธีโหลดไฟล์ HTML พร้อม Base URI ที่ถูกต้องเพื่อให้ลิงก์แบบ relative ทำงานได้ -- วิธี **ตั้งค่าขนาดหน้าของ PDF** (A4, Letter, ขนาดกำหนดเอง) และระยะขอบ -- วิธี **ตั้งค่าความละเอียดของ PDF** (DPI) เพื่อให้ภาพและข้อความคมชัด -- โค้ดที่จำเป็นสำหรับ **บันทึก HTML เป็น PDF** ด้วยไลบรารี Aspose.HTML สำหรับ Java -- ปัญหาที่พบบ่อย—เช่น Base URI ที่หายไปหรือภาพขนาดใหญ่เกินไป—และวิธีหลีกเลี่ยง +- วิธีโหลดไฟล์ HTML พร้อม base URI ที่เหมาะสมเพื่อให้ลิงก์สัมพันธ์ทำงานได้. +- วิธี **ตั้งขนาดหน้า pdf** (A4, Letter, ขนาดกำหนดเอง) และระยะขอบ. +- วิธี **ตั้งความละเอียด pdf** (DPI) เพื่อให้ภาพและข้อความคมชัด. +- โค้ดที่แน่นอนที่จำเป็นเพื่อ **บันทึก html เป็น pdf** ด้วยไลบรารี Aspose.HTML สำหรับ Java. +- ข้อผิดพลาดทั่วไป—เช่น base URI ที่หายไปหรือภาพขนาดใหญ่เกินไป—และวิธีหลีกเลี่ยง. ### ข้อกำหนดเบื้องต้น +- Java Development Kit (JDK) 8 หรือใหม่กว่า. +- Maven หรือ Gradle เพื่อดึง `aspose-html` (เวอร์ชันล่าสุดในขณะเขียนคือ 23.10). +- ความเข้าใจพื้นฐานเกี่ยวกับไวยากรณ์ Java. +- ไฟล์ HTML ที่คุณต้องการแปลง (เราจะใช้ `sample.html` ในตัวอย่าง). -- Java Development Kit (JDK) 8 หรือใหม่กว่า -- Maven หรือ Gradle เพื่อดึง `aspose-html` (เวอร์ชันล่าสุดขณะเขียนคือ 23.10) -- ความเข้าใจพื้นฐานของไวยากรณ์ Java -- ไฟล์ HTML ที่ต้องการแปลง (เราจะใช้ `sample.html` ในตัวอย่าง) - ---- - -## แปลง HTML เป็น PDF พร้อมตัวเลือกกำหนดเอง - -ด้านล่างเป็นโปรแกรมเต็มที่สามารถรันได้ซึ่งสาธิตทุกขั้นตอน คัดลอก‑วางลงใน IDE ของคุณ ปรับเส้นทางไฟล์ แล้วกด Run - -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; - -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); - - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); - - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) - - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); +## วิธีตั้งขนาดหน้า pdf เมื่อแปลง HTML เป็น PDF +โหลด HTML ของคุณ, กำหนดค่า `PdfSaveOptions`, และเรียก `save`. รูปแบบสองขั้นตอนด้านล่างจะจัดการทุกอย่างที่คุณต้องการ. - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` - -### ทำไมแต่ละขั้นตอนจึงสำคัญ - -| ขั้นตอน | จุดประสงค์ | เคล็ดลับ & กรณีขอบ | -|------|---------|-------------------| -| **1. Base URI** | ทำให้ `<img src="images/pic.png">` และลิงก์แบบ relative อื่น ๆ ชี้ไปยังโฟลเดอร์ที่ถูกต้อง | หากข้ามขั้นตอนนี้ ภาพอาจหายไปใน PDF ใช้ `file:///` สำหรับไฟล์ในเครื่อง หรือ URL HTTP สำหรับทรัพยากรระยะไกล | -| **2. โหลด HTML** | แปลง HTML ให้เป็นโมเดล DOM ของ Aspose | ไฟล์ HTML ขนาดใหญ่ (>10 MB) อาจต้องการหน่วยความจำเพิ่ม; พิจารณาเพิ่ม heap ของ JVM (`-Xmx2g`) | -| **3. ตัวเลือก PDF** | ควบคุมขนาดหน้า (`set pdf page size`), ระยะขอบ, และ DPI (`set pdf resolution`) | A4 มีขนาด 210 × 297 mm; สำหรับ Letter ใช้ `PdfPageSize.LETTER` DPI 300 เหมาะสำหรับการพิมพ์; DPI 72 เหมาะสำหรับ PDF ที่ดูบนหน้าจอเท่านั้น | -| **4. บันทึก** | เขียน PDF สุดท้ายลงดิสก์ (`save html as pdf`) | เส้นทางไฟล์ต้องสามารถเขียนได้; สามารถเพิ่มการตรวจสอบไฟล์ที่มีอยู่เพื่อป้องกันการเขียนทับ | -| **5. ยืนยัน** | แสดงผลลัพธ์บนคอนโซล | ในแอปจริงควรใช้ logger แทน `System.out` | - ---- - -## การอธิบายทีละขั้นตอน +คุณตั้งขนาดหน้าโดยเรียก `pdfOptions.setPageSize(PdfPageSize.A4)` (หรือค่าสถิติกำหนดล่วงหน้าอื่น) หรือโดยสร้างอินสแตนซ์ `PdfPageSize` ที่กำหนดความกว้าง/สูงเป็นจุด. วัตถุตัวเลือกเดียวกันยังให้คุณตั้งความละเอียดด้วย `pdfOptions.setResolution(300)`. วิธีนี้รับประกันว่า PDF ที่สร้างขึ้นจะตรงกับขนาดที่คุณต้องการอย่างแม่นยำ. -### 1. ตั้งค่าโปรเจกต์ของคุณ (HTML to PDF Java) +### การแยกขั้นตอนทีละขั้นตอน -หากใช้ Maven ให้เพิ่ม dependency ของ Aspose.HTML: +#### 1. ตั้งค่าโปรเจกต์ของคุณ (html to pdf java) +หากคุณใช้ Maven ให้เพิ่ม dependency ของ Aspose.HTML: ```xml <dependency> @@ -115,40 +101,37 @@ public class ConvertWithOptions { </dependency> ``` -ผู้ใช้ Gradle สามารถเพิ่มได้ดังนี้: +ผู้ใช้ Gradle สามารถเพิ่ม: ```gradle implementation 'com.aspose:aspose-html:23.10' ``` -> **เคล็ดลับ:** ไลบรารีนี้เป็นแบบ self‑contained ไม่ต้องใช้ไบนารีเนทีฟหรือฟอนต์เพิ่มเติมสำหรับการแปลงพื้นฐาน +> **Pro tip:** ไลบรารีนี้เป็นอิสระอย่างเต็มรูปแบบ; คุณไม่จำเป็นต้องมีไบนารีเนทีฟหรือฟอนต์เพิ่มเติมสำหรับการแปลงพื้นฐาน Aspose.HTML รองรับการแปลง HTML เป็น PDF ในมากกว่า 50 สถานการณ์และสามารถประมวลผลไฟล์ขนาดถึง 200 MB โดยไม่ต้องใช้ไบนารีเนทีฟภายนอก. -### 2. กำหนด Base URI - -URL แบบ relative เป็นสาเหตุทั่วไปของภาพหาย โดยการตั้งค่า `loadOptions.setBaseUri` ให้ชี้ไปยังโฟลเดอร์ที่มีไฟล์ HTML คุณจะทำให้ตัวแปลงค้นหาเส้นทางได้เหมือนกับเบราว์เซอร์ +#### 2. กำหนด base URI +Relative URLs are a common source of broken images. By pointing `loadOptions.setBaseUri` to the folder containing your HTML, you let the converter resolve paths exactly as a browser would. ```java HtmlLoadOptions loadOptions = new HtmlLoadOptions(); loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); ``` -หาก HTML ของคุณอ้างอิง CSS หรือฟอนต์จาก CDN คุณอาจข้าม Base URI ได้ แต่ควรตรวจสอบความหน่วงของเครือข่าย - -### 3. โหลดเอกสาร HTML +If your HTML references external CSS or fonts hosted on a CDN, you can skip the base URI, but keep an eye on network latency. +#### 3. โหลดเอกสาร HTML ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); ``` -คุณยังสามารถโหลดจาก URL ได้เช่นกัน: +คุณยังสามารถโหลดจาก URL: ```java HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. ตั้งค่าตัวเลือก PDF – **Set PDF Page Size** & **Set PDF Resolution** - -คลาส `PdfSaveOptions` ให้การควบคุมระดับละเอียด +#### 4. กำหนดค่าตัวเลือก PDF – **ตั้งขนาดหน้า pdf** & **ตั้งความละเอียด pdf** +`PdfSaveOptions` is Aspose.HTML's configuration object that controls PDF output properties such as page size, margins, and resolution. ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -158,16 +141,15 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **ขนาดหน้า:** เลือกจาก `PdfPageSize.A4`, `LETTER`, `LEGAL` หรือสร้าง `PdfPageSize` กำหนดเองด้วยความกว้าง/สูงเป็น points -- **ความละเอียด:** DPI สูงทำให้ภาพเรสเตอร์คมชัดแต่ไฟล์ใหญ่ขึ้น สำหรับงานพิมพ์ส่วนใหญ่ 300 DPI เป็นค่าที่เหมาะสม - -### 5. ทำการแปลง – **Save HTML as PDF** +- **Page size:** Choose from `PdfPageSize.A4`, `LETTER`, `LEGAL`, or create a custom `PdfPageSize` with width/height in points. A4 measures 210 × 297 mm; Letter measures 8.5 × 11 in. +- **Resolution:** Higher DPI yields sharper raster images but also increases file size; moving from 72 dpi to 300 dpi typically triples the PDF size while improving image sharpness by up to 4×. For most print jobs 300 dpi is a sweet spot. +#### 5. ทำการแปลง – **บันทึก html เป็น pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); ``` -เมธอดนี้จะสตรีม PDF ไปยังตำแหน่งเป้าหมายโดยอัตโนมัติ หากต้องการ PDF ในหน่วยความจำ (เช่น ส่งเป็นไฟล์แนบอีเมล) ให้ใช้ overload ที่รับ `OutputStream`: +The method automatically streams the PDF to the target location. If you need the PDF in memory (e.g., to send as an email attachment), use an `OutputStream` overload: ```java try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { @@ -177,41 +159,34 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. ตรวจสอบผลลัพธ์ - -เปิด `sample_custom.pdf` ด้วยโปรแกรมอ่าน PDF ใดก็ได้ คุณควรเห็น: +#### 6. ตรวจสอบผลลัพธ์ +Open `sample_custom.pdf` in any PDF viewer. You should see: -- หน้า A4 พร้อมระยะขอบบน/ล่าง 20 pt -- ภาพทั้งหมดแสดงที่ 300 DPI (สังเกตความคมชัด) -- ลิงก์และ CSS ถูกนำไปใช้เหมือนใน HTML ดั้งเดิม +- หน้า A4 พร้อมระยะขอบบน/ล่าง 20 pt. +- ทุกภาพแสดงที่ 300 dpi (สังเกตความคมชัด). +- ลิงก์และ CSS ถูกนำไปใช้อย่างแม่นยำตาม HTML ดั้งเดิม. -หากมีอะไรไม่ตรง ให้ตรวจสอบ Base URI อีกครั้งและแน่ใจว่าแหล่งทรัพยากรภายนอกทั้งหมดเข้าถึงได้ - ---- +If something looks off, double‑check the base URI and ensure all external resources are reachable. ## คำถามทั่วไป & กรณีขอบ +**Q: What if my HTML contains JavaScript?** +A: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated content, pre‑render the HTML (e.g., with a headless browser) before feeding it to the converter. -**ถาม: HTML ของฉันมี JavaScript จะทำอย่างไร?** -ตอบ: Aspose.HTML **ไม่** รัน JavaScript หากหน้าเว็บของคุณพึ่งพาเนื้อหาที่สร้างโดยสคริปต์ ให้เรนเดอร์ HTML ล่วงหน้า (เช่น ด้วย headless browser) ก่อนส่งให้ตัวแปลง - -**ถาม: สามารถฝังฟอนต์กำหนดเองได้ไหม?** -ตอบ: ได้ ให้วางไฟล์ `.ttf` หรือ `.otf` ไว้ในโฟลเดอร์เดียวกันและอ้างอิงผ่าน `@font-face` ใน CSS Base URI จะทำให้ฟอนต์ถูกค้นพบ +**Q: Can I embed custom fonts?** +A: Yes. Place the `.ttf` or `.otf` files in the same folder and reference them via `@font-face` in your CSS. The base URI will make the fonts discoverable. -**ถาม: จะเปลี่ยนการวางแนวเป็นแนวนอน (landscape) อย่างไร?** +**Q: How do I change the orientation to landscape?** ```java saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` -**ถาม: PDF ของฉันใหญ่เกินไป—ทำอย่างไร?** -- ลด DPI (`setResolution(150)`) -- บีบอัดภาพด้วย `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)` -- ลบทรัพยากรความละเอียดสูงที่ไม่จำเป็นออกจาก HTML ต้นฉบับ - ---- - -## ตัวอย่างทำงานเต็มรูปแบบ (All‑In‑One) +**Q: My PDF is huge—what can I do?** +- Reduce the DPI (`setResolution(150)`). +- Compress images with `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. +- Remove unnecessary high‑resolution assets from the source HTML. -นี่คือคลาสทั้งหมดพร้อมคอมไพล์ แค่เปลี่ยน `YOUR_DIRECTORY` ให้เป็นเส้นทางเต็มบนเครื่องของคุณ +## ตัวอย่างทำงานเต็มรูปแบบ (all‑in‑one) +Here’s the entire class ready to compile. Replace `YOUR_DIRECTORY` with an absolute path on your machine. ```java import com.aspose.html.converters.*; @@ -242,26 +217,77 @@ public class ConvertWithOptions { } ``` -รันโปรแกรม เปิด PDF ที่สร้างขึ้น คุณจะเห็นเลย์เอาต์ที่กำหนดไว้ นั่นคือ **การแปลง HTML เป็น PDF** ใน Java พร้อมการกำหนดขนาดหน้าและความละเอียดแบบกำหนดเอง - ---- +Run the program, open the generated PDF, and you’ll see the exact layout you defined. That’s **convert html to pdf** in Java, complete with custom sizing and resolution. ## ขั้นตอนต่อไป & หัวข้อที่เกี่ยวข้อง +- **การแปลงแบบกลุ่ม:** วนลูปผ่านไดเรกทอรีของไฟล์ HTML และสร้าง PDF ทีเดียว. +- **เนื้อหาแบบไดนามิก:** ผสาน Aspose.HTML กับเครื่องมือเทมเพลต (เช่น Thymeleaf) เพื่อสร้างใบแจ้งหนี้แบบเรียลไทม์. +- **การเสริมความปลอดภัย:** ตรวจสอบ HTML อินพุตเพื่อหลีกเลี่ยงมาร์กอัปอันเป็นอันตรายก่อนการแปลง. +- **ไลบรารีทางเลือก:** เปรียบเทียบ Aspose.HTML กับ OpenHTMLtoPDF หรือ wkhtmltopdf สำหรับกรณีขอบเฉพาะ. + +Experiment with different page sizes (`PdfPageSize.LETTER`), orientations, or even custom dimensions if you’re preparing a booklet. The API is flexible enough to handle most *html to pdf java* scenarios you’ll encounter. + +## คำถามที่พบบ่อย +**Q: Does Aspose.HTML support other output formats?** +A: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from HTML. + +**Q: Is there a limit on the number of pages?** +A: Aspose.HTML can create PDFs with thousands of pages; memory usage stays low because it streams pages to disk when needed. + +**Q: Can I add bookmarks or table of contents?** +A: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical outline in the HTML. -- **การแปลงแบบกลุ่ม:** วนลูปไฟล์ HTML ในโฟลเดอร์และสร้าง PDF ทีเดียว -- **เนื้อหาแบบไดนามิก:** ผสาน Aspose.HTML กับเครื่องมือเทมเพลต (เช่น Thymeleaf) เพื่อสร้างใบแจ้งหนี้แบบเรียลไทม์ -- **การเสริมความปลอดภัย:** ตรวจสอบ HTML ก่อนแปลงเพื่อป้องกันมาร์คอัปอันตราย -- **ไลบรารีทางเลือก:** เปรียบเทียบ Aspose.HTML กับ OpenHTMLtoPDF หรือ wkhtmltopdf สำหรับกรณีขอบเฉพาะ +**Q: How do I handle large images efficiently?** +A: Set `pdfOptions.setResolution(150)` and enable image down‑sampling via `pdfOptions.setImageDownsampleThreshold(150)`. -ลองปรับขนาดหน้า (`PdfPageSize.LETTER`), การวางแนว, หรือขนาดกำหนดเอง หากคุณกำลังเตรียมบูคเล็ต API มีความยืดหยุ่นพอที่จะรองรับสถานการณ์ *html to pdf java* ส่วนใหญ่ที่คุณเจอ +**Q: Is the library compatible with Java 17?** +A: Absolutely – the library is compiled for Java 11 but runs on any later JDK, including Java 17 and Java 21. --- -## สรุป +--- + +**อัปเดตล่าสุด:** 2026-09-03 +**ทดสอบด้วย:** Aspose.HTML 23.10 for Java +**ผู้เขียน:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; -เราได้ครอบคลุมทุกอย่างที่คุณต้องการเพื่อ **แปลง HTML เป็น PDF** ใน Java พร้อม **ตั้งค่าขนาดหน้าของ PDF**, **ตั้งค่าความละเอียดของ PDF**, และ **บันทึก HTML เป็น PDF** ด้วย Aspose.HTML คู่มือแบบขั้นตอนพร้อมโค้ดเต็มและการแก้ปัญหา +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## บทแนะนำที่เกี่ยวข้อง +- [วิธีแปลง HTML เป็น PDF Java - ตั้งค่าขอบหน้าด้วย Aspose.HTML](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [ปรับขนาดหน้า PDF ด้วย Aspose.HTML สำหรับ Java](/html/java/advanced-usage/adjust-pdf-page-size/) +- [วิธีแปลง HTML เป็น PDF Java – ใช้ Aspose.HTML สำหรับ Java](/html/java/conversion-html-to-other-formats/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/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/turkish/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index 95c93eff97..2fb77a9ec2 100644 --- a/html/turkish/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/turkish/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,105 +1,102 @@ --- category: general -date: 2026-01-06 -description: Java'da özel sayfa boyutu, kenar boşlukları ve çözünürlük ile HTML'yi - PDF'ye dönüştürün. PDF sayfa boyutunu nasıl ayarlayacağınızı ve Aspose.HTML kullanarak - HTML'yi PDF olarak nasıl kaydedeceğinizi öğrenin. +date: 2026-09-03 +description: Java'da özel page size, margins ve resolution ile HTML'yi PDF'ye dönüştürün. + Aspose.HTML kullanarak pdf page size ayarlamayı ve html'yi pdf olarak kaydetmeyi + öğrenin. draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: tr -og_description: HTML'yi Java'da hızlıca PDF'ye dönüştürün. Bu kılavuz, PDF sayfa boyutunu - nasıl ayarlayacağınızı, çözünürlüğü nasıl düzenleyeceğinizi ve Aspose.HTML ile HTML'yi - PDF olarak nasıl kaydedeceğinizi gösterir. -og_title: Java'da HTML'yi PDF'ye Dönüştür – PDF Sayfa Boyutu ve Çözünürlüğünü Ayarla +lastmod: 2026-09-03 +og_description: Aspose.HTML ile Java'da pdf page size ayarlayın ve HTML'yi PDF'ye + hızlıca dönüştürün. page size, margins ve resolution özelleştirmeyi öğrenin. +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: Java’da HTML'yi PDF'ye Dönüştür – pdf page size ve resolution ayarlayın +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: HTML'yi Java'da PDF'ye Dönüştür – PDF Sayfa Boyutunu, Çözünürlüğünü Ayarla - ve HTML'yi PDF Olarak Kaydet -url: /tr/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: Java’da HTML'yi PDF'ye Dönüştür – pdf page size ve resolution ayarlayın --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Java'da HTML'yi PDF'ye Dönüştür – Özel Seçeneklerle Tam Kılavuz - -Java'da **HTML'yi PDF'ye dönüştürmek** için ayar labirentinde mücadele etmeyi hiç düşündünüz mü? Tek başınıza değilsiniz. Birçok geliştirici, bir web sayfasını yazdırılabilir bir belgeye dönüştürürken sayfa boyutu, kenar boşlukları veya çıktı DPI'sı üzerinde hassas kontrol gerektiğinde bir duvara çarpar. - -İyi haber? Aspose.HTML ile sadece birkaç satırda **HTML'yi PDF olarak kaydedebilir** ve *set PDF page size* ve *set PDF resolution* gibi seçeneklere tam erişim elde edersiniz. Bu öğretici, tüm süreci adım adım anlatıyor, her ayarın neden önemli olduğunu açıklıyor ve çalıştırmaya hazır bir örnek gösteriyor. - -Bu kılavuzun sonunda, herhangi bir yerel veya uzak HTML dosyasını alıp, düzen gereksinimlerinize uyan yüksek kaliteli bir PDF üretebileceksiniz—faturalar, raporlar veya e‑kitaplar için mükemmel. +# HTML'yi Java'da PDF'ye Dönüştür – pdf sayfa boyutunu ve çözünürlüğünü ayarlayın -![Özel seçeneklerle HTML'yi PDF'ye dönüştür](image.png "html to pdf örneği") +Java'da **HTML'yi PDF'ye dönüştürmeyi** ve aynı zamanda **pdf sayfa boyutunu** ayarlayıp DPI kontrol etmeyi hiç merak ettiniz mi? Yalnız değilsiniz. Faturalar, raporlar veya e‑kitaplar gibi yazdırılabilir PDF'ler için kesin sayfa boyutları, kenar boşlukları veya görüntü çözünürlüğü gerektiğinde birçok geliştirici bir engelle karşılaşıyor. -## Öğrenecekleriniz - -- HTML dosyasını, göreceli bağlantıların çözülebilmesi için uygun bir base URI ile nasıl yükleyeceğinizi. -- PDF sayfa boyutunu **set PDF page size** (A4, Letter, özel boyutlar) ve kenar boşluklarını nasıl ayarlayacağınızı. -- Görüntü ve metinlerin netliği için **set PDF resolution** (DPI) nasıl ayarlanacağını. -- Aspose.HTML Java kütüphanesini kullanarak **save HTML as PDF** için gereken tam kodu. -- Yaygın tuzaklar—örneğin eksik base URI'lar veya çok büyük görüntüler—ve bunlardan nasıl kaçınılacağını. +İyi haber? Aspose.HTML ile sadece birkaç satırda **HTML'yi PDF olarak kaydedebilir** ve *set pdf page size* ve *set pdf resolution* gibi seçeneklere tam erişim elde edersiniz. Bu öğretici sizi tüm süreçten geçirir, her ayarın neden önemli olduğunu açıklar ve çalıştırmaya hazır bir örnek gösterir. -### Ön Koşullar +Bu rehberin sonunda, herhangi bir yerel veya uzak HTML dosyasını alıp, düzen gereksinimlerinize uyan yüksek kaliteli bir PDF üretebileceksiniz—**java generate invoice pdf** senaryoları için mükemmel. -- Java Development Kit (JDK) 8 ve üzeri. -- `aspose-html` paketini çekmek için Maven veya Gradle (yazım anındaki en son sürüm 23.10). -- Java sözdizimi hakkında temel bir anlayış. -- Dönüştürmek istediğiniz bir HTML dosyası (`sample.html` örneklerde kullanılacak). +--- -## Özel Seçeneklerle HTML'yi PDF'ye Dönüştür +![Özel seçeneklerle HTML'yi PDF'ye Dönüştür](image.png "html to pdf örneği") +[Özel seçeneklerle HTML'yi PDF'ye Dönüştür](image.png "html to pdf örneği") -Aşağıda, her adımı gösteren tam, çalıştırılabilir program yer alıyor. IDE'nize kopyalayıp yapıştırabilir, yolları ayarlayabilir ve Çalıştırabilirsiniz. +## Hızlı cevaplar +- **Sayfa boyutunu değiştirebilir miyim?** Evet – önceden tanımlı boyutlar veya özel ölçülerle `PdfSaveOptions.setPageSize()` kullanın. +- **Yazdırma için hangi DPI'yi kullanmalıyım?** 300 dpi keskin baskı kalitesi sağlar; 72 dpi ekran PDF'leri için yeterlidir. +- **Ek fontlara ihtiyacım var mı?** Hayır – Aspose.HTML standart fontları otomatik olarak gömer; özel fontlar `@font-face` ile çalışır. +- **Lisans gerekli mi?** Geliştirme için ücretsiz deneme çalışır; üretim için ticari lisans gerekir. +- **Hangi Java sürümü destekleniyor?** JDK 8 ve üzeri (kütüphane Java 11 için derlenmiştir ancak 8+ üzerinde çalışır). -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; +## Öğrenecekleriniz -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); +- Uygun bir base URI ile HTML dosyasını nasıl yükleyeceğinizi ve göreceli bağlantıların çözümlenmesini. +- **pdf sayfa boyutunu** (A4, Letter, özel ölçüler) ve kenar boşluklarını nasıl ayarlayacağınızı. +- **pdf çözünürlüğünü** (DPI) keskin görüntüler ve metin için nasıl ayarlayacağınızı. +- Aspose.HTML Java kütüphanesini kullanarak **html'yi pdf olarak kaydetmek** için gereken tam kodu. +- Eksik base URI'lar veya çok büyük görüntüler gibi yaygın tuzaklar ve bunlardan nasıl kaçınılacağı. - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); +### Önkoşullar - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) +- Java Development Kit (JDK) 8 ve üzeri. +- Maven veya Gradle (`aspose-html` bağımlılığını çekmek için, yazım anındaki en son sürüm 23.10). +- Java sözdizimi hakkında temel bir anlayış. +- Dönüştürmek istediğiniz bir HTML dosyası (`sample.html` örneklerde kullanılacak). - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); +## HTML'yi PDF'ye Dönüştürürken pdf sayfa boyutunu nasıl ayarlarsınız - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` - -### Her Adımın Önemi +HTML'nizi yükleyin, `PdfSaveOptions`'ı yapılandırın ve `save`'i çağırın. Aşağıdaki iki adımlı desen ihtiyacınız olan her şeyi yönetir. -| Adım | Amaç | İpuçları & Özel Durumlar | -|------|------|--------------------------| -| **1. Base URI** | `<img src="images/pic.png">` ve diğer göreceli bağlantıların doğru klasöre işaret etmesini sağlar. | Bunu atlayarsanız, görüntüler çıktı PDF'de kaybolabilir. Yerel dosyalar için `file:///`, uzak kaynaklar için HTTP URL kullanın. | -| **2. Load HTML** | HTML'i Aspose'un DOM modeline ayrıştırır. | Büyük HTML dosyaları (>10 MB) daha fazla bellek gerektirebilir; JVM yığın boyutunu artırmayı (`-Xmx2g`) düşünün. | -| **3. PDF Options** | Sayfa boyutlarını (`set pdf page size`), kenar boşluklarını ve DPI'yi (`set pdf resolution`) kontrol eder. | A4, 210 × 297 mm'dir; Letter için `PdfPageSize.LETTER` kullanın. 300 DPI baskı için idealdir; 72 DPI sadece ekran PDF'leri için yeterlidir. | -| **4. Save** | Son PDF'i diske yazar (`save html as pdf`). | Çıktı yolu yazılabilir olmalıdır. Dosya var mı kontrolü ile üzerine yazma koruması eklenebilir. | -| **5. Confirmation** | Basit konsol geri bildirimi. | Gerçek uygulamalarda `System.out` yerine bir logger kullanılabilir. | +Sayfa boyutunu `pdfOptions.setPageSize(PdfPageSize.A4)` (veya başka bir önceden tanımlı sabit) çağırarak ya da genişlik ve yükseklik puan cinsinden bir özel `PdfPageSize` örneği oluşturarak ayarlarsınız. Aynı seçenek nesnesi `pdfOptions.setResolution(300)` ile çözünürlüğü ayarlamanıza da izin verir. Bu yaklaşım, oluşturulan PDF'nin tam olarak istediğiniz boyutlara uymasını garanti eder. -## Adım‑Adım Açıklama +### Adım adım açıklama -### 1. Projenizi Kurun (HTML to PDF Java) +#### 1. Projenizi kurun (html to pdf java) Maven kullanıyorsanız, Aspose.HTML bağımlılığını ekleyin: @@ -117,11 +114,11 @@ Gradle kullanıcıları ekleyebilir: implementation 'com.aspose:aspose-html:23.10' ``` -> **Pro ipucu:** Kütüphane tamamen bağımsızdır; temel dönüşümler için herhangi bir yerel ikili dosyaya veya ekstra fonta ihtiyacınız yoktur. +> **Pro tip:** Kütüphane tamamen bağımsızdır; temel dönüşümler için herhangi bir yerel ikili dosyaya veya ekstra fonta ihtiyacınız yoktur. Aspose.HTML, HTML'yi PDF'ye 50'den fazla senaryoda dönüştürmeyi destekler ve dış yerel ikili dosyalar olmadan 200 MB'a kadar dosyaları işleyebilir. -### 2. Base URI'yi Tanımlayın +#### 2. Base URI'yi tanımlayın -Göreceli URL'ler sık sık kırık görüntülere neden olur. `loadOptions.setBaseUri`'yi HTML dosyanızın bulunduğu klasöre işaret ettirerek, dönüştürücünün yolları bir tarayıcı gibi çözmesini sağlarsınız. +Göreceli URL'ler sık sık kırık görüntülere neden olur. `loadOptions.setBaseUri`'yi HTML dosyanızın bulunduğu klasöre yönlendirerek, dönüştürücünün yolları bir tarayıcı gibi tam olarak çözmesini sağlarsınız. ```java HtmlLoadOptions loadOptions = new HtmlLoadOptions(); @@ -130,7 +127,7 @@ loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); HTML'niz bir CDN'de barındırılan harici CSS veya fontlara referans veriyorsa, base URI'yi atlayabilirsiniz, ancak ağ gecikmesine dikkat edin. -### 3. HTML Belgesini Yükleyin +#### 3. HTML belgesini yükleyin ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); @@ -142,9 +139,9 @@ Ayrıca bir URL'den de yükleyebilirsiniz: HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. PDF Seçeneklerini Yapılandırın – **Set PDF Page Size** & **Set PDF Resolution** +#### 4. PDF seçeneklerini yapılandırın – **set pdf page size** & **set pdf resolution** -`PdfSaveOptions` sınıfı size ayrıntılı kontrol sağlar. +`PdfSaveOptions`, sayfa boyutu, kenar boşlukları ve çözünürlük gibi PDF çıktı özelliklerini kontrol eden Aspose.HTML yapılandırma nesnesidir. ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -154,16 +151,16 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- **Page Size:** `PdfPageSize.A4`, `LETTER`, `LEGAL` seçeneklerinden birini seçin veya genişlik/yükseklik değerlerini puan cinsinden belirterek özel bir `PdfPageSize` oluşturun. -- **Resolution:** Daha yüksek DPI daha keskin raster görüntüler sağlar ancak dosya boyutunu artırır. Çoğu baskı işi için 300 DPI ideal bir dengedir. +- **Sayfa boyutu:** `PdfPageSize.A4`, `LETTER`, `LEGAL` seçeneklerinden birini seçin veya genişlik/yükseklik puan cinsinden bir özel `PdfPageSize` oluşturun. A4 ölçüsü 210 × 297 mm; Letter ölçüsü 8.5 × 11 inç. +- **Çözünürlük:** Daha yüksek DPI daha keskin raster görüntüler sağlar ancak dosya boyutunu da artırır; 72 dpi'den 300 dpi'ye geçmek genellikle PDF boyutunu üç katına çıkarırken görüntü keskinliğini 4 katına kadar artırır. Çoğu baskı işi için 300 dpi ideal bir noktadır. -### 5. Dönüşümü Gerçekleştirin – **Save HTML as PDF** +#### 5. Dönüşümü gerçekleştirin – **save html as pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); ``` -Metot PDF'i otomatik olarak hedef konuma akıtır. PDF'i bellek içinde (ör. e‑posta eki olarak göndermek) ihtiyacınız varsa, `OutputStream` aşırı yüklemesini kullanın: +Metod PDF'yi otomatik olarak hedef konuma akıtır. PDF'yi bellek içinde (ör. e-posta eki olarak göndermek için) ihtiyacınız varsa, bir `OutputStream` aşırı yüklemesini kullanın: ```java try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { @@ -173,35 +170,35 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. Sonucu Doğrulayın +#### 6. Sonucu doğrulayın `sample_custom.pdf` dosyasını herhangi bir PDF görüntüleyicide açın. Şunları görmelisiniz: -- 20 pt üst/alt kenar boşluklu A4 boyutunda sayfalar. -- Tüm görüntüler 300 DPI'de işlenmiş (keskinliğe dikkat edin). -- Bağlantılar ve CSS, orijinal HTML'deki gibi uygulanmış. +- 20 pt üst/alt kenar boşluklu A4 boyutlu sayfalar. +- Tüm görüntüler 300 dpi'de render edilmiş (keskinliğe dikkat edin). +- Bağlantılar ve CSS, orijinal HTML'deki gibi tam olarak uygulanmış. Bir şey yanlış görünüyorsa, base URI'yi tekrar kontrol edin ve tüm harici kaynakların erişilebilir olduğundan emin olun. -## Yaygın Sorular & Özel Durumlar +## Yaygın sorular ve uç durumlar **S: HTML'm JavaScript içeriyorsa ne olur?** -C: Aspose.HTML JavaScript çalıştırmaz. Sayfanız script‑tarafından oluşturulan içeriğe dayanıyorsa, dönüştürücüye vermeden önce HTML'i (ör. başsız bir tarayıcıyla) önceden render edin. +C: Aspose.HTML JavaScript'i *çalıştırmaz*. Sayfanız script ile oluşturulan içeriğe dayanıyorsa, dönüştürücüye vermeden önce HTML'yi (ör. başsız bir tarayıcıyla) önceden render edin. -**S: Özel fontlar ekleyebilir miyim?** -C: Evet. `.ttf` veya `.otf` dosyalarını aynı klasöre koyun ve CSS içinde `@font-face` ile referans verin. Base URI fontların bulunmasını sağlar. +**S: Özel fontları gömebilir miyim?** +C: Evet. `.ttf` veya `.otf` dosyalarını aynı klasöre koyun ve CSS'nizde `@font-face` ile referans verin. Base URI fontların bulunmasını sağlar. -**S: Yönlendirmeyi landscape (yatay) olarak nasıl değiştiririm?** +**S: Yönlendirmeyi yatay (landscape) nasıl değiştiririm?** ```java saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` **S: PDF'im çok büyük—ne yapabilirim?** -- DPI'yi azaltın (`setResolution(150)`). -- Görüntüleri `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)` ile sıkıştırın. +- DPI'yi azaltın (`setResolution(150)`). +- Görüntüleri `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)` ile sıkıştırın. - Kaynak HTML'den gereksiz yüksek çözünürlüklü varlıkları kaldırın. -## Tam Çalışan Örnek (Hepsi‑Bir‑Arada) +## Tam çalışan örnek (tek dosyada) Derlemeye hazır tüm sınıf burada. `YOUR_DIRECTORY` ifadesini makinenizdeki mutlak bir yol ile değiştirin. @@ -234,22 +231,81 @@ public class ConvertWithOptions { } ``` -Programı çalıştırın, oluşturulan PDF'i açın ve tanımladığınız tam yerleşimi görün. Bu, Java'da **HTML'yi PDF'ye dönüştürme** işlemi, özel boyutlandırma ve çözünürlük ile tamamlanmış halidir. +Programı çalıştırın, oluşturulan PDF'yi açın ve tanımladığınız tam düzeni görün. Bu, Java'da **convert html to pdf** işlemi, özel boyutlandırma ve çözünürlük ile tamamlanmış halidir. + +## Sonraki adımlar ve ilgili konular + +- **Toplu dönüşüm:** Bir klasördeki HTML dosyaları üzerinde döngü yaparak tek seferde PDF'ler üretin. +- **Dinamik içerik:** Aspose.HTML'yi bir şablon motoru (ör. Thymeleaf) ile birleştirerek anında faturalar oluşturun. +- **Güvenlik güçlendirme:** Dönüştürmeden önce kötü amaçlı işaretlemeyi önlemek için giriş HTML'yi doğrulayın. +- **Alternatif kütüphaneler:** Belirli uç durumlar için Aspose.HTML'yi OpenHTMLtoPDF veya wkhtmltopdf ile karşılaştırın. + +Farklı sayfa boyutları (`PdfPageSize.LETTER`), yönlendirmeler veya bir kitapçık hazırlıyorsanız özel ölçülerle deney yapın. API, karşılaşacağınız çoğu *html to pdf java* senaryosunu yönetebilecek kadar esnektir. + +## Sıkça sorulan sorular -## Sonraki Adımlar & İlgili Konular +**S: Aspose.HTML diğer çıktı formatlarını destekliyor mu?** +C: Evet – PDF dışında HTML'den doğrudan PNG, JPEG, SVG ve EPUB üretebilir. -- **Toplu dönüşüm:** Bir klasördeki HTML dosyaları üzerinde döngü kurarak tek seferde PDF'ler üretin. -- **Dinamik içerik:** Aspose.HTML'i bir şablon motoru (ör. Thymeleaf) ile birleştirerek anlık fatura oluşturun. -- **Güvenlik güçlendirme:** Dönüştürmeden önce girdiyi doğrulayarak kötü amaçlı işaretlemeden kaçının. -- **Alternatif kütüphaneler:** Belirli özel durumlar için Aspose.HTML'i OpenHTMLtoPDF veya wkhtmltopdf ile karşılaştırın. +**S: Sayfa sayısı için bir limit var mı?** +C: Aspose.HTML binlerce sayfalı PDF'ler oluşturabilir; gerektiğinde sayfaları diske akıttığı için bellek kullanımı düşük kalır. -Farklı sayfa boyutları (`PdfPageSize.LETTER`), yönlendirmeler veya kitapçık hazırlıyorsanız özel boyutlarla deneyin. API, karşılaşacağınız çoğu *html to pdf java* senaryosunu karşılayacak kadar esnektir. +**S: Yer imleri veya içindekiler tablosu ekleyebilir miyim?** +C: Evet – `PdfSaveOptions.setCreateBookmarks(true)` kullanın ve HTML'de hiyerarşik bir taslak sağlayın. -## Sonuç +**S: Büyük görüntüleri verimli bir şekilde nasıl yönetirim?** +C: `pdfOptions.setResolution(150)` ayarlayın ve `pdfOptions.setImageDownsampleThreshold(150)` ile görüntü alt örneklemesini etkinleştirin. + +**S: Kütüphane Java 17 ile uyumlu mu?** +C: Kesinlikle – kütüphane Java 11 için derlenmiştir ancak Java 17 ve Java 21 dahil olmak üzere daha yeni JDK'larda çalışır. + +--- + +--- + +**Last Updated:** 2026-09-03 +**Tested with:** Aspose.HTML 23.10 for Java +**Author:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## İlgili Öğreticiler + +- [HTML'yi Java'da PDF'ye Dönüştür - Aspose.HTML ile Sayfa Kenar Boşluklarını Ayarlama](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [Aspose.HTML for Java ile PDF Sayfa Boyutunu Ayarlama](/html/java/advanced-usage/adjust-pdf-page-size/) +- [HTML'yi Java'da PDF'ye Dönüştür – Aspose.HTML for Java Kullanarak](/html/java/conversion-html-to-other-formats/convert-html-to-pdf/) -Java'da **HTML'yi PDF'ye dönüştürmek**, **set PDF page size**, **set PDF resolution** ve Aspose.HTML kullanarak **save HTML as PDF** işlemleri için ihtiyacınız olan her şeyi kapsadık. Adım‑adım kılavuz, tam kod ve sorun giderme {{< /blocks/products/pf/tutorial-page-section >}} + {{< /blocks/products/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/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md b/html/vietnamese/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md index 833816a5dd..bc56845133 100644 --- a/html/vietnamese/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md +++ b/html/vietnamese/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/_index.md @@ -1,112 +1,105 @@ --- category: general -date: 2026-01-06 -description: Chuyển đổi HTML sang PDF trong Java với kích thước trang tùy chỉnh, lề - và độ phân giải. Tìm hiểu cách đặt kích thước trang PDF và lưu HTML dưới dạng PDF - bằng Aspose.HTML. +date: 2026-09-03 +description: Chuyển đổi HTML sang PDF trong Java với kích thước trang, lề và độ phân + giải tùy chỉnh. Tìm hiểu cách thiết lập kích thước trang pdf và lưu html dưới dạng + pdf bằng Aspose.HTML. draft: false keywords: -- convert html to pdf - set pdf page size +- html to pdf java - save html as pdf +- custom pdf page size - set pdf resolution -- html to pdf java -language: vi -og_description: Chuyển đổi HTML sang PDF trong Java nhanh chóng. Hướng dẫn này chỉ - cách thiết lập kích thước trang PDF, điều chỉnh độ phân giải và lưu HTML dưới dạng - PDF bằng Aspose.HTML. -og_title: Chuyển đổi HTML sang PDF trong Java – Đặt kích thước trang và độ phân giải - PDF +lastmod: 2026-09-03 +og_description: Thiết lập kích thước trang pdf và chuyển đổi HTML sang PDF trong Java + nhanh chóng với Aspose.HTML. Tìm hiểu cách tùy chỉnh kích thước trang, lề và độ + phân giải. +og_image_alt: Developer guide showing HTML to PDF conversion with custom page size + using Aspose.HTML +og_title: Chuyển đổi HTML sang PDF trong Java – thiết lập kích thước trang pdf và + độ phân giải +schemas: +- author: Aspose + dateModified: '2026-09-03' + description: Convert HTML to PDF in Java with custom page size, margins, and resolution. + Learn how to set pdf page size and save html as pdf using Aspose.HTML. + headline: Convert HTML to PDF in Java – set pdf page size and resolution + type: TechArticle +- questions: + - answer: Aspose.HTML does *not* execute JavaScript. If your page relies on script‑generated + content, pre‑render the HTML (e.g., with a headless browser) before feeding + it to the converter. + question: What if my HTML contains JavaScript? + - answer: Yes. Place the `.ttf` or `.otf` files in the same folder and reference + them via `@font-face` in your CSS. The base URI will make the fonts discoverable. + question: Can I embed custom fonts? + - answer: Yes – besides PDF it can generate PNG, JPEG, SVG, and EPUB directly from + HTML. + question: Does Aspose.HTML support other output formats? + - answer: Aspose.HTML can create PDFs with thousands of pages; memory usage stays + low because it streams pages to disk when needed. + question: Is there a limit on the number of pages? + - answer: Yes – use `PdfSaveOptions.setCreateBookmarks(true)` and provide a hierarchical + outline in the HTML. + question: Can I add bookmarks or table of contents? + type: FAQPage tags: - Java - PDF - Aspose.HTML -title: Chuyển đổi HTML sang PDF trong Java – Đặt kích thước trang PDF, độ phân giải - và lưu HTML dưới dạng PDF -url: /vi/java/conversion-html-to-other-formats/convert-html-to-pdf-in-java-set-pdf-page-size-resolution-and/ +title: Chuyển đổi HTML sang PDF trong Java – thiết lập kích thước trang pdf và độ + phân giải --- {{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}} -# Chuyển đổi HTML sang PDF trong Java – Hướng dẫn đầy đủ với các tùy chọn tùy chỉnh +# Chuyển đổi HTML sang PDF trong Java – đặt kích thước trang pdf và độ phân giải -Bạn đã bao giờ tự hỏi làm thế nào để **convert HTML to PDF** trong Java mà không phải vật lộn với một mê cung các cài đặt? Bạn không phải là người duy nhất. Nhiều nhà phát triển gặp khó khăn khi họ cần kiểm soát chính xác kích thước trang, lề, hoặc DPI đầu ra khi chuyển một trang web thành tài liệu có thể in được. +Bạn đã bao giờ tự hỏi cách **convert HTML to PDF** trong Java đồng thời có thể **set pdf page size** và kiểm soát DPI? Bạn không phải là người duy nhất. Nhiều nhà phát triển gặp khó khăn khi cần kích thước trang chính xác, lề, hoặc độ phân giải hình ảnh cho các PDF có thể in như hoá đơn, báo cáo, hoặc sách điện tử. -Tin tốt? Với Aspose.HTML, bạn có thể **save HTML as PDF** chỉ trong vài dòng, và bạn sẽ có quyền truy cập đầy đủ vào các tùy chọn như *set PDF page size* và *set PDF resolution*. Bài hướng dẫn này sẽ dẫn bạn qua toàn bộ quá trình, giải thích lý do mỗi cài đặt quan trọng, và cho bạn một ví dụ sẵn sàng chạy. +Tin tốt? Với Aspose.HTML, bạn có thể **save HTML as PDF** chỉ trong vài dòng, và bạn sẽ có quyền truy cập đầy đủ vào các tùy chọn như *set pdf page size* và *set pdf resolution*. Hướng dẫn này sẽ đưa bạn qua toàn bộ quá trình, giải thích lý do mỗi thiết lập quan trọng, và cho bạn một ví dụ sẵn sàng chạy. -Khi kết thúc hướng dẫn này, bạn sẽ có thể chuyển bất kỳ tệp HTML cục bộ hoặc từ xa nào thành PDF chất lượng cao, đáp ứng các yêu cầu bố cục của bạn—hoàn hảo cho hoá đơn, báo cáo, hoặc sách điện tử. +Khi kết thúc hướng dẫn này, bạn sẽ có thể lấy bất kỳ tệp HTML cục bộ hoặc từ xa nào và tạo ra một PDF chất lượng cao đáp ứng yêu cầu bố cục của bạn—hoàn hảo cho các kịch bản **java generate invoice pdf**. --- -![Chuyển đổi HTML sang PDF với các tùy chọn tùy chỉnh](image.png "ví dụ chuyển đổi html sang pdf") +![Convert HTML to PDF with custom options](image.png "convert html to pdf example") +[Convert HTML to PDF with custom options](image.png "convert html to pdf example") + +## Câu trả lời nhanh +- **Tôi có thể thay đổi kích thước trang không?** Yes – use `PdfSaveOptions.setPageSize()` with predefined sizes or custom dimensions. +- **Tôi nên dùng DPI nào cho việc in?** 300 dpi cho chất lượng in sắc nét; 72 dpi là đủ cho PDF trên màn hình. +- **Tôi có cần phông chữ bổ sung không?** No – Aspose.HTML embeds standard fonts automatically; custom fonts work via `@font-face`. +- **Cần giấy phép không?** A free trial works for development; a commercial license is needed for production. +- **Phiên bản Java nào được hỗ trợ?** JDK 8 hoặc mới hơn (thư viện được biên dịch cho Java 11 nhưng chạy trên 8+). ## Những gì bạn sẽ học -- Cách tải tệp HTML với base URI thích hợp để các liên kết tương đối được giải quyết. -- Cách **set PDF page size** (A4, Letter, kích thước tùy chỉnh) và lề. -- Cách **set PDF resolution** (DPI) để có hình ảnh và văn bản sắc nét. -- Mã chính xác cần thiết để **save HTML as PDF** bằng thư viện Aspose.HTML Java. -- Các lỗi thường gặp—như thiếu base URI hoặc hình ảnh quá lớn—và cách tránh chúng. +- Cách tải tệp HTML với base URI thích hợp để các liên kết tương đối được giải quyết. +- Cách **set pdf page size** (A4, Letter, kích thước tùy chỉnh) và lề. +- Cách **set pdf resolution** (DPI) cho hình ảnh và văn bản sắc nét. +- Mã chính xác cần thiết để **save html as pdf** bằng thư viện Aspose.HTML cho Java. +- Những lỗi thường gặp—như thiếu base URI hoặc hình ảnh quá lớn—và cách tránh chúng. ### Yêu cầu trước -- Java Development Kit (JDK) 8 hoặc mới hơn. -- Maven hoặc Gradle để tải `aspose-html` (phiên bản mới nhất tại thời điểm viết là 23.10). -- Kiến thức cơ bản về cú pháp Java. -- Một tệp HTML bạn muốn chuyển đổi (chúng tôi sẽ sử dụng `sample.html` trong các ví dụ). - ---- - -## Chuyển đổi HTML sang PDF với các tùy chọn tùy chỉnh - -Dưới đây là chương trình đầy đủ, có thể chạy được, minh họa mọi bước. Bạn có thể sao chép‑dán nó vào IDE, điều chỉnh các đường dẫn, và nhấn Run. - -```java -import com.aspose.html.converters.*; -import com.aspose.html.rendering.*; - -public class ConvertWithOptions { - public static void main(String[] args) throws Exception { - // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly - HtmlLoadOptions loadOptions = new HtmlLoadOptions(); - loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); - - // Step 2: Load the source HTML document using the load options - HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); - - // Step 3: Set up PDF conversion options – page size, margins, and output resolution - PdfSaveOptions saveOptions = new PdfSaveOptions(); - saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size - saveOptions.setMarginTop(20); - saveOptions.setMarginBottom(20); - saveOptions.setResolution(300); // <-- set pdf resolution (DPI) +- Java Development Kit (JDK) 8 hoặc mới hơn. +- Maven hoặc Gradle để kéo `aspose-html` (phiên bản mới nhất tại thời điểm viết là 23.10). +- Kiến thức cơ bản về cú pháp Java. +- Một tệp HTML bạn muốn chuyển đổi (chúng tôi sẽ dùng `sample.html` trong các ví dụ). - // Step 4: Convert the HTML document to PDF with the configured options - document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); +## Cách đặt kích thước trang pdf khi chuyển đổi HTML sang PDF - // Step 5: Inform the user that the conversion succeeded - System.out.println("Custom PDF saved."); - } -} -``` - -### Tại sao mỗi bước lại quan trọng +Tải HTML của bạn, cấu hình `PdfSaveOptions`, và gọi `save`. Mẫu hai bước dưới đây xử lý mọi thứ bạn cần. -| Bước | Mục đích | Mẹo & Trường hợp đặc biệt | -|------|----------|----------------------------| -| **1. Base URI** | Đảm bảo rằng `<img src="images/pic.png">` và các liên kết tương đối khác trỏ tới thư mục đúng. | Nếu bỏ qua bước này, hình ảnh có thể biến mất trong PDF đầu ra. Sử dụng `file:///` cho tệp cục bộ, hoặc URL HTTP cho tài nguyên từ xa. | -| **2. Load HTML** | Phân tích HTML thành mô hình DOM của Aspose. | Các tệp HTML lớn (>10 MB) có thể cần nhiều bộ nhớ hơn; hãy cân nhắc tăng heap JVM (`-Xmx2g`). | -| **3. PDF Options** | Kiểm soát kích thước trang (`set pdf page size`), lề và DPI (`set pdf resolution`). | A4 là 210 × 297 mm; đối với Letter dùng `PdfPageSize.LETTER`. DPI 300 là lý tưởng cho in; 72 phù hợp cho PDF chỉ xem trên màn hình. | -| **4. Save** | Ghi PDF cuối cùng ra đĩa (`save html as pdf`). | Đường dẫn đầu ra phải có quyền ghi. Có thể thêm bảo vệ ghi đè bằng kiểm tra tồn tại tệp. | -| **5. Confirmation** | Phản hồi đơn giản trên console. | Trong các ứng dụng thực tế thay `System.out` bằng một logger. | - ---- +Bạn đặt kích thước trang bằng cách gọi `pdfOptions.setPageSize(PdfPageSize.A4)` (hoặc bất kỳ hằng số định sẵn nào khác) hoặc bằng cách tạo một đối tượng `PdfPageSize` tùy chỉnh với chiều rộng và chiều cao tính bằng point. Đối tượng tùy chọn này cũng cho phép bạn đặt độ phân giải bằng `pdfOptions.setResolution(300)`. Cách tiếp cận này đảm bảo PDF được tạo ra khớp chính xác với kích thước bạn yêu cầu. -## Phân tích từng bước +### Phân tích từng bước -### 1. Thiết lập dự án của bạn (HTML to PDF Java) +#### 1. Thiết lập dự án của bạn (html to pdf java) Nếu bạn đang sử dụng Maven, thêm phụ thuộc Aspose.HTML: @@ -124,11 +117,11 @@ Người dùng Gradle có thể thêm: implementation 'com.aspose:aspose-html:23.10' ``` -> **Mẹo chuyên nghiệp:** Thư viện hoàn toàn tự chứa; bạn không cần bất kỳ binary gốc nào hoặc phông chữ bổ sung cho các chuyển đổi cơ bản. +> **Pro tip:** Thư viện hoàn toàn tự chứa; bạn không cần bất kỳ binary gốc nào hoặc phông chữ bổ sung cho các chuyển đổi cơ bản. Aspose.HTML hỗ trợ chuyển đổi HTML sang PDF trong hơn 50 kịch bản và có thể xử lý các tệp lên tới 200 MB mà không cần binary gốc bên ngoài. -### 2. Định nghĩa Base URI +#### 2. Xác định base URI -Các URL tương đối thường là nguồn gây ra hình ảnh bị hỏng. Bằng cách chỉ định `loadOptions.setBaseUri` tới thư mục chứa HTML của bạn, bạn cho phép bộ chuyển đổi giải quyết các đường dẫn chính xác như trình duyệt. +Các URL tương đối thường là nguyên nhân gây ra hình ảnh bị hỏng. Bằng cách chỉ định `loadOptions.setBaseUri` tới thư mục chứa HTML của bạn, bạn cho phép bộ chuyển đổi giải quyết các đường dẫn chính xác như trình duyệt. ```java HtmlLoadOptions loadOptions = new HtmlLoadOptions(); @@ -137,7 +130,7 @@ loadOptions.setBaseUri("file:///C:/projects/pdf-demo/"); Nếu HTML của bạn tham chiếu tới CSS hoặc phông chữ bên ngoài được lưu trên CDN, bạn có thể bỏ qua base URI, nhưng hãy chú ý đến độ trễ mạng. -### 3. Tải tài liệu HTML +#### 3. Tải tài liệu HTML ```java HtmlDocument document = new HtmlDocument("C:/projects/pdf-demo/sample.html", loadOptions); @@ -149,9 +142,9 @@ Bạn cũng có thể tải từ một URL: HtmlDocument document = new HtmlDocument("https://example.com/report.html", loadOptions); ``` -### 4. Cấu hình tùy chọn PDF – **Set PDF Page Size** & **Set PDF Resolution** +#### 4. Cấu hình tùy chọn PDF – **set pdf page size** & **set pdf resolution** -Lớp `PdfSaveOptions` cung cấp cho bạn kiểm soát chi tiết. +`PdfSaveOptions` là đối tượng cấu hình của Aspose.HTML điều khiển các thuộc tính đầu ra PDF như kích thước trang, lề và độ phân giải. ```java PdfSaveOptions saveOptions = new PdfSaveOptions(); @@ -161,16 +154,16 @@ saveOptions.setMarginBottom(20); saveOptions.setResolution(300); // set pdf resolution (DPI) ``` -- "**Page Size:**" Chọn từ `PdfPageSize.A4`, `LETTER`, `LEGAL`, hoặc tạo một `PdfPageSize` tùy chỉnh với chiều rộng/chiều cao tính bằng point. -- "**Resolution:**" DPI cao hơn cho hình ảnh raster sắc nét hơn nhưng làm tăng kích thước tệp. Đối với hầu hết các công việc in, 300 DPI là mức lý tưởng. +- **Page size:** Chọn từ `PdfPageSize.A4`, `LETTER`, `LEGAL`, hoặc tạo một `PdfPageSize` tùy chỉnh với chiều rộng/chiều cao tính bằng point. A4 có kích thước 210 × 297 mm; Letter có kích thước 8.5 × 11 in. +- **Resolution:** DPI cao hơn cho hình ảnh raster sắc nét hơn nhưng cũng làm tăng kích thước tệp; chuyển từ 72 dpi lên 300 dpi thường làm ba lần kích thước PDF trong khi cải thiện độ sắc nét của hình ảnh lên tới 4×. Đối với hầu hết các công việc in, 300 dpi là mức lý tưởng. -### 5. Thực hiện chuyển đổi – **Save HTML as PDF** +#### 5. Thực hiện chuyển đổi – **save html as pdf** ```java document.save("C:/projects/pdf-demo/sample_custom.pdf", saveOptions); ``` -Phương thức này tự động truyền PDF tới vị trí đích. Nếu bạn cần PDF trong bộ nhớ (ví dụ, để gửi kèm email), hãy sử dụng overload `OutputStream`: +Phương thức tự động truyền PDF tới vị trí đích. Nếu bạn cần PDF trong bộ nhớ (ví dụ, để gửi kèm email), hãy sử dụng phiên bản overload `OutputStream`: ```java try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { @@ -180,41 +173,37 @@ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { } ``` -### 6. Xác minh kết quả +#### 6. Xác minh kết quả Mở `sample_custom.pdf` trong bất kỳ trình xem PDF nào. Bạn sẽ thấy: -- Các trang kích thước A4 với lề trên/dưới 20 pt. -- Tất cả hình ảnh được render ở 300 DPI (chú ý độ sắc nét). -- Liên kết và CSS được áp dụng chính xác như trong HTML gốc. +- Các trang kích thước A4 với lề trên/dưới 20 pt. +- Tất cả hình ảnh được render ở 300 dpi (lưu ý độ sắc nét). +- Các liên kết và CSS được áp dụng chính xác như trong HTML gốc. -Nếu có gì không đúng, hãy kiểm tra lại base URI và đảm bảo tất cả tài nguyên bên ngoài có thể truy cập được. +Nếu có gì không đúng, hãy kiểm tra lại base URI và đảm bảo mọi tài nguyên bên ngoài có thể truy cập được. ---- - -## Câu hỏi thường gặp & Trường hợp đặc biệt +## Câu hỏi thường gặp & trường hợp đặc biệt **Q: Nếu HTML của tôi chứa JavaScript thì sao?** -A: Aspose.HTML *không* thực thi JavaScript. Nếu trang của bạn phụ thuộc vào nội dung tạo bởi script, hãy render trước HTML (ví dụ, bằng trình duyệt không giao diện) trước khi đưa vào bộ chuyển đổi. +A: Aspose.HTML *không* thực thi JavaScript. Nếu trang của bạn phụ thuộc vào nội dung được tạo bởi script, hãy render trước HTML (ví dụ, bằng một trình duyệt headless) trước khi đưa vào bộ chuyển đổi. **Q: Tôi có thể nhúng phông chữ tùy chỉnh không?** -A: Có. Đặt các tệp `.ttf` hoặc `.otf` trong cùng thư mục và tham chiếu chúng qua `@font-face` trong CSS. Base URI sẽ giúp phông chữ được tìm thấy. +A: Có. Đặt các tệp `.ttf` hoặc `.otf` trong cùng thư mục và tham chiếu chúng qua `@font-face` trong CSS của bạn. Base URI sẽ giúp phông chữ được tìm thấy. -**Q: Làm sao để thay đổi hướng sang landscape?** +**Q: Làm sao để thay đổi hướng sang ngang?** ```java saveOptions.setPageOrientation(PdfPageOrientation.LANDSCAPE); ``` **Q: PDF của tôi quá lớn—tôi có thể làm gì?** -- Giảm DPI (`setResolution(150)`). -- Nén hình ảnh bằng `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. +- Giảm DPI (`setResolution(150)`). +- Nén hình ảnh với `saveOptions.setCompressionLevel(PdfCompressionLevel.HIGH)`. - Loại bỏ các tài nguyên độ phân giải cao không cần thiết khỏi HTML nguồn. ---- +## Ví dụ làm việc đầy đủ (tất cả trong một) -## Ví dụ đầy đủ hoạt động (Tất cả trong một) - -Đây là toàn bộ lớp sẵn sàng để biên dịch. Thay `YOUR_DIRECTORY` bằng đường dẫn tuyệt đối trên máy của bạn. +Đây là toàn bộ lớp sẵn sàng biên dịch. Thay thế `YOUR_DIRECTORY` bằng đường dẫn tuyệt đối trên máy của bạn. ```java import com.aspose.html.converters.*; @@ -245,26 +234,81 @@ public class ConvertWithOptions { } ``` -Chạy chương trình, mở PDF đã tạo, và bạn sẽ thấy bố cục chính xác mà bạn đã định nghĩa. Đó là **convert HTML to PDF** trong Java, hoàn chỉnh với kích thước và độ phân giải tùy chỉnh. - ---- +Chạy chương trình, mở PDF đã tạo, và bạn sẽ thấy bố cục chính xác mà bạn đã định nghĩa. Đó là **convert html to pdf** trong Java, đầy đủ với kích thước và độ phân giải tùy chỉnh. -## Các bước tiếp theo & Chủ đề liên quan +## Các bước tiếp theo & chủ đề liên quan -- **Batch conversion:** Lặp qua một thư mục các tệp HTML và tạo PDF đồng thời. -- **Dynamic content:** Kết hợp Aspose.HTML với engine mẫu (ví dụ, Thymeleaf) để tạo hoá đơn ngay lập tức. -- **Security hardening:** Xác thực HTML đầu vào để tránh markup độc hại trước khi chuyển đổi. +- **Batch conversion:** Lặp qua một thư mục các tệp HTML và tạo PDF đồng thời. +- **Dynamic content:** Kết hợp Aspose.HTML với engine mẫu (ví dụ, Thymeleaf) để tạo hoá đơn ngay lập tức. +- **Security hardening:** Xác thực HTML đầu vào để tránh mã độc trước khi chuyển đổi. - **Alternative libraries:** So sánh Aspose.HTML với OpenHTMLtoPDF hoặc wkhtmltopdf cho các trường hợp đặc biệt. Thử nghiệm với các kích thước trang khác nhau (`PdfPageSize.LETTER`), hướng, hoặc thậm chí kích thước tùy chỉnh nếu bạn đang chuẩn bị một cuốn sách nhỏ. API đủ linh hoạt để xử lý hầu hết các kịch bản *html to pdf java* mà bạn sẽ gặp. +## Câu hỏi thường gặp + +**Q: Aspose.HTML có hỗ trợ các định dạng đầu ra khác không?** +A: Có – ngoài PDF, nó có thể tạo PNG, JPEG, SVG và EPUB trực tiếp từ HTML. + +**Q: Có giới hạn về số trang không?** +A: Aspose.HTML có thể tạo PDF hàng nghìn trang; việc sử dụng bộ nhớ vẫn thấp vì nó stream các trang ra đĩa khi cần. + +**Q: Tôi có thể thêm bookmark hoặc mục lục không?** +A: Có – sử dụng `PdfSaveOptions.setCreateBookmarks(true)` và cung cấp một dàn cấu trúc phân cấp trong HTML. + +**Q: Làm sao để xử lý hình ảnh lớn một cách hiệu quả?** +A: Đặt `pdfOptions.setResolution(150)` và bật giảm mẫu hình ảnh qua `pdfOptions.setImageDownsampleThreshold(150)`. + +**Q: Thư viện có tương thích với Java 17 không?** +A: Hoàn toàn – thư viện được biên dịch cho Java 11 nhưng chạy trên bất kỳ JDK nào mới hơn, bao gồm Java 17 và Java 21. + +--- + --- -## Kết luận +**Last Updated:** 2026-09-03 +**Tested with:** Aspose.HTML 23.10 for Java +**Author:** Aspose + +```java +import com.aspose.html.converters.*; +import com.aspose.html.rendering.*; + +public class ConvertWithOptions { + public static void main(String[] args) throws Exception { + // Step 1: Define the base URI so that relative URLs in the HTML are resolved correctly + HtmlLoadOptions loadOptions = new HtmlLoadOptions(); + loadOptions.setBaseUri("file:///YOUR_DIRECTORY/"); + + // Step 2: Load the source HTML document using the load options + HtmlDocument document = new HtmlDocument("YOUR_DIRECTORY/sample.html", loadOptions); + + // Step 3: Set up PDF conversion options – page size, margins, and output resolution + PdfSaveOptions saveOptions = new PdfSaveOptions(); + saveOptions.setPageSize(PdfPageSize.A4); // <-- set pdf page size + saveOptions.setMarginTop(20); + saveOptions.setMarginBottom(20); + saveOptions.setResolution(300); // <-- set pdf resolution (DPI) + + // Step 4: Convert the HTML document to PDF with the configured options + document.save("YOUR_DIRECTORY/sample_custom.pdf", saveOptions); + + // Step 5: Inform the user that the conversion succeeded + System.out.println("Custom PDF saved."); + } +} +``` + +## Hướng dẫn liên quan + +- [Cách chuyển đổi HTML sang PDF Java - Đặt lề trang với Aspose.HTML](/html/java/advanced-usage/css-extensions-adding-title-page-number/) +- [Điều chỉnh kích thước trang PDF với Aspose.HTML cho Java](/html/java/advanced-usage/adjust-pdf-page-size/) +- [Cách chuyển đổi HTML sang PDF Java – Sử dụng Aspose.HTML cho Java](/html/java/conversion-html-to-other-formats/convert-html-to-pdf/) -Chúng tôi đã bao phủ mọi thứ bạn cần để **convert HTML to PDF** trong Java đồng thời **set PDF page size**, **set PDF resolution**, và **save HTML as PDF** bằng Aspose.HTML. Hướng dẫn từng bước, mã hoàn chỉnh, và phần khắc phục sự cố {{< /blocks/products/pf/tutorial-page-section >}} + {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} + {{< blocks/products/products-backtop-button >}} \ No newline at end of file