Java'da Sunumlardan Gelişmiş Metin Çıkarma

Genel Bakış

Sunumlardan metin çıkarma, slayt içeriğiyle çalışan geliştiriciler için yaygın ama önemli bir görevdir. Microsoft PowerPoint dosyaları PPT veya PPTX formatında ya da OpenDocument sunumları (ODP) ile çalışıyorsanız, metinsel verilere erişmek ve bunları almak analiz, otomasyon, indeksleme veya içerik taşıma amaçları için kritik olabilir.

Bu makale, Aspose.Slides for Java kullanarak PPT, PPTX ve ODP dahil çeşitli sunum formatlarından metni verimli bir şekilde çıkarmak için kapsamlı bir rehber sunar. Sunum öğeleri üzerinden sistematik olarak dolaşarak ihtiyacınız olan metin içeriğini doğru şekilde elde etmeyi öğreneceksiniz.

Bir Slayttan Metin Çıkarma

Aspose.Slides for Java, SlideUtil sınıfını sağlar. Bu sınıf, bir sunum ya da slayttan tüm metni çıkarmak için birkaç aşırı yüklenmiş statik yöntem sunar. Bir sunumdaki bir slayttan metin çıkarmak için SlideUtil.getAllTextBoxes yöntemini kullanın. Bu yöntem, parametre olarak IBaseSlide türünde bir nesne alır. Çalıştırıldığında, yöntem tüm slaytı metin için tarar ve ITextFrame türünde nesneler dizisini, metin biçimlendirmesini koruyarak döndürür.

Aşağıdaki kod parçacığı, sunumun ilk slaytındaki tüm metni çıkarır:

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();
}

Bir Sunumdan Metin Çıkarma

Tüm sunumun metnini taramak için, SlideUtil.getAllTextFrames statik yöntemini kullanın. Bu yöntem iki parametre alır:

  1. İlk olarak, metni çıkarılacak bir PowerPoint ya da OpenDocument sunumunu temsil eden bir IPresentation nesnesi.
  2. İkinci olarak, sunumdan metin taranırken ana slaytların (master slides) dahil edilip edilmeyeceğini belirten bir boolean değeri.

Yöntem, ITextFrame türünde nesneler dizisini, metin biçimlendirme bilgisiyle birlikte döndürür. Aşağıdaki kod, sunumun metnini ve biçimlendirme ayrıntılarını, ana slaytları da dahil ederek tarar:

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();
}

Kategorize ve Hızlı Metin Çıkarma

PresentationFactory sınıfı da sunumlardan tüm metni çıkarmak için yöntemler sunar:

IPresentationText getPresentationText(String file, int mode);
IPresentationText getPresentationText(InputStream stream, int mode);
IPresentationText getPresentationText(InputStream stream, int mode, ILoadOptions options);

TextExtractionArrangingMode enum argümanı, metin çıkarma sonucunun düzenleme modunu belirler ve şu değerlerden birine ayarlanabilir:

  • Unarranged - Slayttaki konumuna bakılmaksızın ham metin.
  • Arranged - Metin, slayttaki aynı sırada düzenlenir.

Düzenlenmemiş (Unarranged) mod, hız kritik olduğunda kullanılabilir; düzenli (Arranged) moddan daha hızlıdır.

IPresentationText sunumdan çıkarılan ham metni temsil eder. getSlidesText yöntemi, ISlideText türünde nesneler dizisini döndürür. Her nesne ilgili slaydın metnini temsil eder. ISlideText türündeki nesnenin aşağıdaki yöntemleri vardır:

  • getText - Slayt şekilleri içindeki metin.
  • getMasterText - Bu slaytla ilişkili ana slayt şekilleri içindeki metin.
  • getLayoutText - Bu slaytla ilişkili yerleşim slaytı şekilleri içindeki metin.
  • getNotesText - Bu slaytla ilişkili not slaytı şekilleri içindeki metin.
  • getCommentsText - Bu slaytla ilişkili yorumlarda bulunan metin.
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());

SSS

Aspose.Slides büyük sunumları metin çıkarma sırasında ne kadar hızlı işler?

Aspose.Slides yüksek performans için optimize edilmiştir ve büyük sunumları işleyebilir, bu da gerçek zamanlı veya toplu işleme senaryoları için uygundur.

Aspose.Slides sunumlardaki tablolar ve grafiklerden metin çıkarabilir mi?

Evet. Aspose.Slides, tablolar ve grafikle ilgili nesneler dahil olmak üzere birçok slayt öğesinden metin çıkarabilir, böylece yaygın sunum yapılarına ait metin içeriğine erişebilir ve analiz edebilirsiniz.

Sunumlardan metin çıkarmak için özel bir Aspose.Slides lisansına ihtiyacım var mı?

Metin çıkarma işlemini ücretsiz deneme sürümüyle yapabilirsiniz, ancak belirli sınırlamalar bulunur; örneğin yalnızca sınırlı sayıda slayt işlenebilir. Sınırsız kullanım ve daha büyük sunumları işlemek için tam lisans satın almanız önerilir.