การสกัดข้อความขั้นสูงจากงานนำเสนอใน .NET
ภาพรวม
การสกัดข้อความจากงานนำเสนอเป็นงานที่พบบ่อยแต่จำเป็นสำหรับนักพัฒนาที่ทำงานกับเนื้อหาในสไลด์ ไม่ว่าจะเป็นไฟล์ Microsoft PowerPoint ในรูปแบบ PPT หรือ PPTX หรือการนำเสนอ OpenDocument (ODP) การเข้าถึงและดึงข้อมูลข้อความสามารถมีความสำคัญต่อการวิเคราะห์ การทำอัตโนมัติ การจัดทำดัชนี หรือการย้ายเนื้อหา
บทความนี้ให้คำแนะนำอย่างครบถ้วนเกี่ยวกับวิธีการสกัดข้อความอย่างมีประสิทธิภาพจากรูปแบบงานนำเสนอหลายประเภท รวมถึง PPT, PPTX และ ODP โดยใช้ Aspose.Slides สำหรับ .NET คุณจะได้เรียนรู้วิธีการวนซ้ำผ่านองค์ประกอบของงานนำเสนออย่างเป็นระบบเพื่อดึงข้อมูลข้อความที่คุณต้องการได้อย่างแม่นยำ
สกัดข้อความจากสไลด์
Aspose.Slides for .NET มีเนมสเปซ Aspose.Slides.Util ซึ่งรวมคลาส SlideUtil คลาสนี้เปิดให้ใช้เมธอดสถิติดิจิทัลหลายเวอร์ชันสำหรับการสกัดข้อความทั้งหมดจากงานนำเสนอหรือสไลด์ เพื่อสกัดข้อความจากสไลด์ในงานนำเสนอ ให้ใช้เมธอด GetAllTextBoxes เมธอดนี้รับอ็อบเจ็กต์ชนิด IBaseSlide เป็นพารามิเตอร์ เมื่อทำงาน เมธอดจะสแกนสไลด์ทั้งหมดเพื่อค้นหาข้อความและคืนค่าอาร์เรย์ของอ็อบเจ็กต์ชนิด ITextFrame โดยรักษาการจัดรูปแบบข้อความไว้
โค้ดตัวอย่างต่อไปนี้สกัดข้อความทั้งหมดจากสไลด์แรกของงานนำเสนอ:
int slideIndex = 0;
using var presentation = new Presentation("demo.pptx");
var slide = presentation.Slides[slideIndex];
var textFrames = Aspose.Slides.Util.SlideUtil.GetAllTextBoxes(slide);
foreach (var textFrame in textFrames)
{
foreach (var paragraph in textFrame.Paragraphs)
{
foreach (var portion in paragraph.Portions)
{
var portionText = portion.Text;
Console.WriteLine(portionText);
var portionFormat = portion.PortionFormat;
var fontHeight = portionFormat.FontHeight;
Console.WriteLine(fontHeight);
var latinFont = portionFormat.LatinFont;
if (latinFont != null)
{
var fontName = latinFont.FontName;
Console.WriteLine(fontName);
}
}
}
}
สกัดข้อความจากงานนำเสนอ
เพื่อสแกนข้อความจากงานนำเสนอทั้งหมด ให้ใช้เมธอดสถิต GetAllTextFrames ที่เปิดโดยคลาส SlideUtil เมธอดนี้รับพารามิเตอร์สองค่า:
- อย่างแรก เป็นอ็อบเจ็กต์ IPresentation ที่แทนงานนำเสนอ PowerPoint หรือ OpenDocument ที่ต้องสกัดข้อความออก
- อย่างสอง เป็นค่า
Booleanที่ระบุว่าควรรวมสไลด์มาสเตอร์ในการสแกนข้อความจากงานนำเสนอหรือไม่
เมธอดจะคืนค่าอาร์เรย์ของอ็อบเจ็กต์ชนิด ITextFrame พร้อมข้อมูลการจัดรูปแบบข้อความ โค้ดด้านล่างสแกนข้อความและรายละเอียดการจัดรูปแบบจากงานนำเสนอ รวมถึงสไลด์มาสเตอร์
using var presentation = new Presentation("demo.pptx");
var includeMasterSlides = true;
var textFrames = Aspose.Slides.Util.SlideUtil.GetAllTextFrames(presentation, includeMasterSlides);
foreach (var textFrame in textFrames)
{
foreach (var paragraph in textFrame.Paragraphs)
{
foreach (var portion in paragraph.Portions)
{
var portionText = portion.Text;
Console.WriteLine(portionText);
var portionFormat = portion.PortionFormat;
var fontHeight = portionFormat.FontHeight;
Console.WriteLine(fontHeight);
var latinFont = portionFormat.LatinFont;
if (latinFont != null)
{
var fontName = latinFont.FontName;
Console.WriteLine(fontName);
}
}
}
}
การสกัดข้อความแบบจัดหมวดหมู่และเร็ว
คลาส PresentationFactory ยังมีเมธอดสำหรับสกัดข้อความทั้งหมดจากงานนำเสนอ:
IPresentationText GetPresentationText(string file, TextExtractionArrangingMode mode);
IPresentationText GetPresentationText(Stream stream, TextExtractionArrangingMode mode);
IPresentationText GetPresentationText(Stream stream, TextExtractionArrangingMode mode, ILoadOptions options);
อาร์กิวเมนต์ enum TextExtractionArrangingMode ระบุโหมดการจัดระเบียบผลการสกัดข้อความและสามารถตั้งค่าเป็นค่าต่อไปนี้:
Unarranged- ข้อความดิบโดยไม่พิจารณาตำแหน่งบนสไลด์Arranged- ข้อความจัดเรียงตามลำดับเดียวกับบนสไลด์
โหมด Unarranged สามารถใช้เมื่อความเร็วเป็นสิ่งสำคัญ; มันเร็วกว่าโหมด Arranged
IPresentationText แสดงถึงข้อความดิบที่สกัดจากงานนำเสนอ property SlidesText จะคืนค่าอาร์เรย์ของอ็อบเจ็กต์ชนิด ISlideText แต่ละอ็อบเจ็กต์แทนข้อความบนสไลด์ที่สอดคล้องกัน อ็อบเจ็กต์ชนิด ISlideText มีคุณสมบัติดังต่อไปนี้:
Text- ข้อความภายในรูปร่างของสไลด์MasterText- ข้อความภายในรูปร่างของสไลด์มาสเตอร์ที่เชื่อมโยงกับสไลด์นี้LayoutText- ข้อความภายในรูปร่างของสไลด์เลเอาต์ที่เชื่อมโยงกับสไลด์นี้NotesText- ข้อความภายในรูปร่างของสไลด์โน้ตที่เชื่อมโยงกับสไลด์นี้CommentsText- ข้อความภายในคอมเมนต์ที่เชื่อมโยงกับสไลด์นี้
var presentationPath = "presentation.ppt";
var arrangingMode = TextExtractionArrangingMode.Unarranged;
var presentationText = PresentationFactory.Instance.GetPresentationText(presentationPath, arrangingMode);
var firstSlideText = presentationText.SlidesText[0];
Console.WriteLine(firstSlideText.Text);
Console.WriteLine(firstSlideText.LayoutText);
Console.WriteLine(firstSlideText.MasterText);
Console.WriteLine(firstSlideText.NotesText);
Console.WriteLine(firstSlideText.CommentsText);
คำถามที่พบบ่อย
Aspose.Slides ประมวลผลงานนำเสนอขนาดใหญ่ในการสกัดข้อความเร็วแค่ไหน?
Aspose.Slides ถูกทำให้ทำงานได้อย่างเร็วและสามารถประมวลผลแม้ งานนำเสนอขนาดใหญ่ ทำให้เหมาะสำหรับสถานการณ์การประมวลผลแบบเรียลไทม์หรือแบบกลุ่ม
Aspose.Slides สามารถสกัดข้อความจากตารางและแผนภูมิภายในงานนำเสนอได้หรือไม่?
ใช่ Aspose.Slides สามารถสกัดข้อความจากองค์ประกอบหลายอย่างของสไลด์ รวมถึงตารางและวัตถุที่เกี่ยวกับแผนภูมิ ทำให้คุณสามารถเข้าถึงและวิเคราะห์เนื้อหาข้อความในโครงสร้างงานนำเสนอทั่วไปได้
ฉันต้องการไลเซนส์พิเศษของ Aspose.Slides เพื่อสกัดข้อความจากงานนำเสนอหรือไม่?
คุณสามารถสกัดข้อความโดยใช้เวอร์ชันทดลองฟรีของ Aspose.Slides แม้ว่าจะมี ข้อจำกัดบางประการ เช่น การประมวลผลได้เพียงจำนวนสไลด์ที่จำกัด สำหรับการใช้งานโดยไม่มีข้อจำกัดและเพื่อจัดการกับงานนำเสนอขนาดใหญ่ การซื้อไลเซนส์เต็มรุ่นเป็นที่แนะนำ.