Zaawansowane wyodrębnianie tekstu z prezentacji w JavaScript
Przegląd
Wyodrębnianie tekstu z prezentacji to powszechne, a jednocześnie kluczowe zadanie dla programistów pracujących z zawartością slajdów. Niezależnie od tego, czy masz do czynienia z plikami Microsoft PowerPoint w formacie PPT lub PPTX, czy z prezentacjami OpenDocument (ODP), dostęp i pobieranie danych tekstowych może być istotny dla analizy, automatyzacji, indeksowania lub migracji treści.
Ten artykuł zawiera kompleksowy przewodnik, jak efektywnie wyodrębnić tekst z różnych formatów prezentacji, w tym PPT, PPTX i ODP, przy użyciu Aspose.Slides for Node.js via Java. Dowiesz się, jak systematycznie iterować po elementach prezentacji, aby dokładnie uzyskać potrzebną treść tekstową.
Pobieranie tekstu ze slajdu
Aspose.Slides for Node.js via Java udostępnia klasę SlideUtil. Klasa ta posiada kilka przeciążonych metod statycznych służących do wyodrębniania całego tekstu z prezentacji lub slajdu. Aby pobrać tekst ze slajdu w prezentacji, użyj metody getAllTextBoxes . Metoda ta przyjmuje obiekt slajdu jako parametr. Po uruchomieniu metoda skanuje cały slajd w poszukiwaniu tekstu i zwraca tablicę obiektów TextFrame, zachowując formatowanie tekstu.
Poniższy fragment kodu wyodrębnia cały tekst z pierwszego slajdu prezentacji:
const slideIndex = 0;
const presentation = new aspose.slides.Presentation("demo.pptx");
try {
const slide = presentation.getSlides().get_Item(slideIndex);
const textFrames = aspose.slides.SlideUtil.getAllTextBoxes(slide);
for (let textFrameIndex = 0; textFrameIndex < textFrames.length; textFrameIndex++) {
const textFrame = textFrames[textFrameIndex];
const paragraphs = textFrame.getParagraphs();
const paragraphCount = paragraphs.getCount();
for (let paragraphIndex = 0; paragraphIndex < paragraphCount; paragraphIndex++) {
const paragraph = paragraphs.get_Item(paragraphIndex);
const portions = paragraph.getPortions();
const portionCount = portions.getCount();
for (let portionIndex = 0; portionIndex < portionCount; portionIndex++) {
const portion = portions.get_Item(portionIndex);
const portionText = portion.getText();
console.log(portionText);
const portionFormat = portion.getPortionFormat();
const fontHeight = portionFormat.getFontHeight();
console.log(fontHeight);
const latinFont = portionFormat.getLatinFont();
if (latinFont !== null) {
const fontName = latinFont.getFontName();
console.log(fontName);
}
}
}
}
} finally {
presentation.dispose();
}
Pobieranie tekstu z prezentacji
Aby zeskanować tekst z całej prezentacji, użyj statycznej metody getAllTextFrames udostępnionej przez klasę SlideUtil. Przyjmuje ona dwa parametry:
- Pierwszy, obiekt Presentation, reprezentujący prezentację PowerPoint lub OpenDocument, z której ma zostać wyodrębniony tekst.
- Drugi, wartość typu
booleanokreślająca, czy slajdy-matryce mają być uwzględnione przy skanowaniu tekstu w prezentacji.
Metoda zwraca tablicę obiektów TextFrame, zawierających informacje o formatowaniu tekstu. Poniższy kod skanuje tekst i szczegóły formatowania w prezentacji, włączając slajdy-matryce.
const presentation = new aspose.slides.Presentation("demo.pptx");
try {
const includeMasterSlides = true;
const textFrames = aspose.slides.SlideUtil.getAllTextFrames(presentation, includeMasterSlides);
for (let textFrameIndex = 0; textFrameIndex < textFrames.length; textFrameIndex++) {
const textFrame = textFrames[textFrameIndex];
const paragraphs = textFrame.getParagraphs();
const paragraphCount = paragraphs.getCount();
for (let paragraphIndex = 0; paragraphIndex < paragraphCount; paragraphIndex++) {
const paragraph = paragraphs.get_Item(paragraphIndex);
const portions = paragraph.getPortions();
const portionCount = portions.getCount();
for (let portionIndex = 0; portionIndex < portionCount; portionIndex++) {
const portion = portions.get_Item(portionIndex);
const portionText = portion.getText();
console.log(portionText);
const portionFormat = portion.getPortionFormat();
const fontHeight = portionFormat.getFontHeight();
console.log(fontHeight);
const latinFont = portionFormat.getLatinFont();
if (latinFont !== null) {
const fontName = latinFont.getFontName();
console.log(fontName);
}
}
}
}
} finally {
presentation.dispose();
}
Kategoryzowane i szybkie pobieranie tekstu
Klasa PresentationFactory również udostępnia metody do wyodrębniania całego tekstu z prezentacji:
PresentationText getPresentationText(String file, int mode);
PresentationText getPresentationText(InputStream stream, int mode);
PresentationText getPresentationText(InputStream stream, int mode, LoadOptions options);
Argument wyliczenia TextExtractionArrangingMode określa tryb organizacji wyniku wyodrębniania tekstu i może przyjmować następujące wartości:
Unarranged– surowy tekst bez uwzględniania jego położenia na slajdzie.Arranged– tekst ułożony w takiej samej kolejności, w jakiej występuje na slajdzie.
Tryb nieuporządkowany może być używany, gdy istotna jest szybkość; jest szybszy niż tryb uporządkowany.
PresentationText reprezentuje surowy tekst wyodrębniony z prezentacji. Jego metoda getSlidesText zwraca tablicę obiektów, z których każdy reprezentuje tekst na odpowiednim slajdzie. Obiekt tekstu slajdu posiada następujące metody:
- Metoda
getTextzwraca tekst znajdujący się w kształtach slajdu. - Metoda
getMasterTextzwraca tekst znajdujący się w kształtach slajdu‑matrycy powiązanej z tym slajdem. - Metoda
getLayoutTextzwraca tekst znajdujący się w kształtach slajdu‑układu powiązanego z tym slajdem. - Metoda
getNotesTextzwraca tekst znajdujący się w kształtach notatek powiązanych z tym slajdem. - Metoda
getCommentsTextzwraca tekst znajdujący się w komentarzach powiązanych z tym slajdem.
const presentationPath = "presentation.ppt";
const arrangingMode = aspose.slides.TextExtractionArrangingMode.Unarranged;
const presentationText = aspose.slides.PresentationFactory.getInstance().getPresentationText(presentationPath, arrangingMode);
const firstSlideText = presentationText.getSlidesText()[0];
console.log(firstSlideText.getText());
console.log(firstSlideText.getLayoutText());
console.log(firstSlideText.getMasterText());
console.log(firstSlideText.getNotesText());
console.log(firstSlideText.getCommentsText());
Najczęściej zadawane pytania
Jak szybko Aspose.Slides przetwarza duże prezentacje podczas pobierania tekstu?
Aspose.Slides jest zoptymalizowane pod kątem wysokiej wydajności i potrafi przetwarzać nawet duże prezentacje, co czyni je odpowiednim do scenariuszy przetwarzania w czasie rzeczywistym lub hurtowego.
Czy Aspose.Slides może wyodrębnić tekst z tabel i wykresów w prezentacjach?
Tak. Aspose.Slides może wyodrębniać tekst z wielu elementów slajdu, w tym z tabel i obiektów związanych z wykresami, dzięki czemu możesz uzyskać dostęp i analizować treść tekstową w typowych strukturach prezentacji.
Czy potrzebuję specjalnej licencji Aspose.Slides, aby wyodrębniać tekst z prezentacji?
Możesz wyodrębniać tekst przy użyciu bezpłatnej wersji próbnej Aspose.Slides, choć będzie ona miała pewne ograniczenia, takie jak przetwarzanie ograniczonej liczby slajdów. Dla nieograniczonego użycia i obsługi większych prezentacji zaleca się zakup pełnej licencji.