Avancerad textextraktion från presentationer i JavaScript
Översikt
Att extrahera text från presentationer är en vanlig men ändå viktig uppgift för utvecklare som arbetar med bildspelsinnehåll. Oavsett om du hanterar Microsoft PowerPoint‑filer i PPT‑ eller PPTX‑format, eller OpenDocument‑presentationer (ODP), kan åtkomst till och hämtning av textdata vara avgörande för analys, automatisering, indexering eller innehållsmigrering.
Denna artikel ger en heltäckande guide för hur du effektivt extraherar text från olika presentationsformat, inklusive PPT, PPTX och ODP, med Aspose.Slides för Node.js via Java. Du lär dig hur du systematiskt itererar genom presentationsobjekt för att exakt hämta den text du behöver.
Extrahera text från en bild
Aspose.Slides för Node.js via Java tillhandahåller klassen SlideUtil. Denna klass exponerar flera överlagrade statiska metoder för att extrahera all text från en presentation eller bild. För att extrahera text från en bild i en presentation, använd metoden getAllTextBoxes. Denna metod accepterar ett bildobjekt som parameter. När den körs skannar metoden hela bilden efter text och returnerar en array av TextFrame-objekt, med bibehållen formatering.
Följande kodsnutt extraherar all text från presentationens första bild:
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();
}
Extrahera text från en presentation
För att skanna text från hela presentationen, använd den statiska metoden getAllTextFrames som exponeras av klassen SlideUtil. Den accepterar två parametrar:
- Först ett Presentation-objekt som representerar en PowerPoint‑ eller OpenDocument‑presentation från vilken text ska extraheras.
- Ett
boolean‑värde som anger om masterbilder ska inkluderas när text skannas från presentationen.
Metoden returnerar en array av TextFrame-objekt, inklusive information om textformatering. Koden nedan skannar texten och formateringsdetaljerna från en presentation, inklusive masterbilder.
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();
}
Kategoriserad och snabb textextraktion
Klassen PresentationFactory tillhandahåller också metoder för att extrahera all text från presentationer:
PresentationText getPresentationText(String file, int mode);
PresentationText getPresentationText(InputStream stream, int mode);
PresentationText getPresentationText(InputStream stream, int mode, LoadOptions options);
Argumentet TextExtractionArrangingMode i enum anger läget för att organisera resultatet av textextraktionen och kan sättas till följande värden:
Unarranged– Råtext utan hänsyn till dess position på bilden.Arranged– Texten är ordnad i samma ordning som på bilden.
Det oordnade läget kan användas när hastighet är kritisk; det är snabbare än det ordnade läget.
PresentationText representerar den råa texten som extraherats från presentationen. Dess getSlidesText‑metod returnerar en array av objekt, där varje objekt representerar texten på motsvarande bild. Varje bildtextobjekt har följande metoder:
- Dess
getText‑metod returnerar texten i bildens former. - Dess
getMasterText‑metod returnerar texten i masterbildens former som är kopplade till denna bild. - Dess
getLayoutText‑metod returnerar texten i layoutbildens former som är kopplade till denna bild. - Dess
getNotesText‑metod returnerar texten i noteringsbildens former som är kopplade till denna bild. - Dess
getCommentsText‑metod returnerar texten i kommentarer som är kopplade till denna bild.
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());
Vanliga frågor
Hur snabbt bearbetar Aspose.Slides stora presentationer under textextraktion?
Aspose.Slides är optimerat för hög prestanda och kan bearbeta även stora presentationer, vilket gör det lämpligt för realtids- eller massbearbetningsscenarier.
Kan Aspose.Slides extrahera text från tabeller och diagram i presentationer?
Ja. Aspose.Slides kan extrahera text från många bildelement, inklusive tabeller och diagramrelaterade objekt, så att du kan komma åt och analysera textinnehåll i vanliga presentationsstrukturer.
Behöver jag en speciell Aspose.Slides‑licens för att extrahera text från presentationer?
Du kan extrahera text med den kostnadsfria provversionen av Aspose.Slides, men den har vissa begränsningar, såsom att endast bearbeta ett begränsat antal bilder. För obegränsad användning och för att hantera större presentationer rekommenderas att köpa en full licens.