استخراج النص المتقدم من العروض التقديمية في جافا
نظرة عامة
استخراج النص من العروض التقديمية هو مهمة شائعة ولكنها أساسية للمطورين الذين يعملون مع محتوى الشرائح. سواء كنت تتعامل مع ملفات Microsoft PowerPoint بصيغة PPT أو PPTX، أو عروض OpenDocument (ODP)، فإن الوصول إلى البيانات النصية واسترجاعها يمكن أن يكون حيويًا للتحليل، أو الأتمتة، أو الفهرسة، أو أهداف ترحيل المحتوى.
توفر هذه المقالة دليلًا شاملاً حول كيفية استخراج النص بكفاءة من تنسيقات عروض مختلفة، بما في ذلك PPT وPPTX وODP، باستخدام Aspose.Slides for Java. ستتعلم كيفية التنقل عبر عناصر العرض بشكل منهجي لاسترداد محتوى النص الذي تحتاجه بدقة.
استخراج النص من شريحة
توفر Aspose.Slides for Java الفئة SlideUtil . تكشف هذه الفئة عن عدة طرق ثابتة محملة للوظيفة لاستخراج جميع النصوص من عرض تقديمي أو شريحة. لاستخراج النص من شريحة في عرض تقديمي، استخدم طريقة SlideUtil.getAllTextBoxes . تقبل هذه الطريقة كمعامل كائن من النوع IBaseSlide. عند تنفيذها، تقوم الطريقة بمسح الشريحة بالكامل للبحث عن النص وتعيد مصفوفة من الكائنات من النوع ITextFrame، مع الحفاظ على أي تنسيقات نصية.
المقتطف البرمجي التالي يستخرج كل النص من الشريحة الأولى في العرض التقديمي:
int slideIndex = 0;
Presentation presentation = new Presentation("demo.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(slideIndex);
ITextFrame[] textFrames = SlideUtil.getAllTextBoxes(slide);
for (ITextFrame textFrame : textFrames) {
for (IParagraph paragraph : textFrame.getParagraphs()) {
for (IPortion portion : paragraph.getPortions()) {
String portionText = portion.getText();
System.out.println(portionText);
IPortionFormat portionFormat = portion.getPortionFormat();
float fontHeight = portionFormat.getFontHeight();
System.out.println(fontHeight);
IFontData latinFont = portionFormat.getLatinFont();
if (latinFont != null) {
String fontName = latinFont.getFontName();
System.out.println(fontName);
}
}
}
}
} finally {
presentation.dispose();
}
استخراج النص من عرض تقديمي
للمسح النصي من العرض التقديمي بالكامل، استخدم الطريقة الثابتة SlideUtil.getAllTextFrames التي تكشفها فئة SlideUtil. تقبل هذه الطريقة معاملين:
- أولاً، كائن من النوع IPresentation يمثل عرض PowerPoint أو OpenDocument سيتم استخراج النص منه.
- ثانياً، قيمة
booleanتشير إلى ما إذا كان يجب تضمين الشرائح الرئيسية عند مسح النص من العرض التقديمي.
تُعيد الطريقة مصفوفة من الكائنات من النوع ITextFrame، تشمل معلومات تنسيق النص. يُظهر الكود أدناه كيفية مسح النص وتفاصيل التنسيق من عرض تقديمي، بما في ذلك الشرائح الرئيسية.
Presentation presentation = new Presentation("demo.pptx");
try {
boolean includeMasterSlides = true;
ITextFrame[] textFrames = SlideUtil.getAllTextFrames(presentation, includeMasterSlides);
for (ITextFrame textFrame : textFrames) {
for (IParagraph paragraph : textFrame.getParagraphs()) {
for (IPortion portion : paragraph.getPortions()) {
String portionText = portion.getText();
System.out.println(portionText);
IPortionFormat portionFormat = portion.getPortionFormat();
float fontHeight = portionFormat.getFontHeight();
System.out.println(fontHeight);
IFontData latinFont = portionFormat.getLatinFont();
if (latinFont != null) {
String fontName = latinFont.getFontName();
System.out.println(fontName);
}
}
}
}
} finally {
presentation.dispose();
}
استخراج النص المصنف والسريع
توفر الفئة PresentationFactory أيضًا طرقًا لاستخراج كل النص من العروض التقديمية:
IPresentationText getPresentationText(String file, int mode);
IPresentationText getPresentationText(InputStream stream, int mode);
IPresentationText getPresentationText(InputStream stream, int mode, ILoadOptions options);
حجة التعداد TextExtractionArrangingMode تحدد وضع تنظيم نتيجة استخراج النص ويمكن ضبطها على القيم التالية:
Unarranged- النص الخام دون مراعاة موقعه على الشريحة.Arranged- يتم ترتيب النص بنفس الترتيب الموجود على الشريحة.
يمكن استخدام وضع Unarranged عندما تكون السرعة أمرًا حاسمًا؛ فهو أسرع من وضع Arranged.
الفئة IPresentationText تمثل النص الخام المستخرج من العرض التقديمي. تُعيد طريقة getSlidesText مصفوفة من الكائنات من النوع ISlideText. يمثل كل كائن النص الموجود على الشريحة المقابلة. يحتوي كائن النوع ISlideText على الطرق التالية:
getText- النص داخل أشكال الشريحة.getMasterText- النص داخل أشكال الشريحة الرئيسية المرتبطة بهذه الشريحة.getLayoutText- النص داخل أشكال شريحة التخطيط المرتبطة بهذه الشريحة.getNotesText- النص داخل أشكال شريحة الملاحظات المرتبطة بهذه الشريحة.getCommentsText- النص داخل التعليقات المرتبطة بهذه الشريحة.
String presentationPath = "presentation.ppt";
int arrangingMode = TextExtractionArrangingMode.Unarranged;
IPresentationText presentationText = PresentationFactory.getInstance().getPresentationText(presentationPath, arrangingMode);
ISlideText firstSlideText = presentationText.getSlidesText()[0];
System.out.println(firstSlideText.getText());
System.out.println(firstSlideText.getLayoutText());
System.out.println(firstSlideText.getMasterText());
System.out.println(firstSlideText.getNotesText());
System.out.println(firstSlideText.getCommentsText());
الأسئلة المتكررة
ما هي سرعة معالجة Aspose.Slides للعروض التقديمية الكبيرة أثناء استخراج النص؟
تم تحسين Aspose.Slides للأداء العالي ويمكنه معالجة حتى العروض التقديمية الكبيرة، مما يجعله مناسبًا لسيناريوهات المعالجة الفورية أو الضخمة.
هل يمكن لـ Aspose.Slides استخراج النص من الجداول والرسوم البيانية داخل العروض التقديمية؟
نعم. يمكن لـ Aspose.Slides استخراج النص من العديد من عناصر الشريحة، بما في ذلك الجداول والكائنات المرتبطة بالرسوم البيانية، بحيث يمكنك الوصول إلى المحتوى النصي وتحليله في هياكل العرض الشائعة.
هل أحتاج إلى ترخيص خاص لـ Aspose.Slides لاستخراج النص من العروض التقديمية؟
يمكنك استخراج النص باستخدام نسخة التجربة المجانية من Aspose.Slides، رغم أنها ستحتوي على قيود معينة، مثل معالجة عدد محدود من الشرائح فقط. للحصول على استخدام غير مقيد ومعالجة عروض تقديمية أكبر، يوصى بشراء ترخيص كامل.