การสกัดข้อความขั้นสูงจากงานนำเสนอใน PHP

ภาพรวม

การดึงข้อความจากงานนำเสนอเป็นงานที่พบทั่วไปแต่ก็สำคัญสำหรับนักพัฒนาที่ทำงานกับเนื้อหาสไลด์ ไม่ว่าคุณจะทำงานกับไฟล์ Microsoft PowerPoint ในรูปแบบ PPT หรือ PPTX หรือการนำเสนอรูปแบบ OpenDocument (ODP) การเข้าถึงและดึงข้อมูลข้อความสามารถเป็นสิ่งสำคัญสำหรับการวิเคราะห์, การทำอัตโนมัติ, การทำดัชนี, หรือการย้ายเนื้อหา

บทความนี้ให้คำแนะนำอย่างครบถ้วนเกี่ยวกับวิธีการดึงข้อความจากรูปแบบงานนำเสนอหลายประเภทอย่างมีประสิทธิภาพ รวมถึง PPT, PPTX, และ ODP โดยใช้ Aspose.Slides for PHP via Java คุณจะได้เรียนรู้วิธีการวนลูปผ่านองค์ประกอบของงานนำเสนออย่างเป็นระบบเพื่อดึงข้อความที่ต้องการอย่างแม่นยำ

ดึงข้อความจากสไลด์

Aspose.Slides for PHP via Java มีคลาส SlideUtil ซึ่งคลาสนี้เปิดเผยเมธอดสแตติกที่มีการโอเวอร์โหลดหลายตัวสำหรับการดึงข้อความทั้งหมดจากงานนำเสนอหรือสไลด์

เพื่อดึงข้อความจากสไลด์ในงานนำเสนอ ให้ใช้เมธอด getAllTextBoxes เมธอดนี้รับออบเจกต์ประเภท BaseSlide เป็นพารามิเตอร์ เมื่อทำงาน เมธอดจะสแกนสไลด์ทั้งหมดเพื่อค้นหาข้อความและคืนค่าเป็นอาร์เรย์ของออบเจกต์ประเภท TextFrame, คงรูปแบบข้อความไว้

โค้ดตัวอย่างต่อไปนี้ดึงข้อความทั้งหมดจากสไลด์แรกของงานนำเสนอ:

$slideIndex = 0;

$presentation = new Presentation("demo.pptx");
$arrayClass = new java_class("java.lang.reflect.Array");

try {
    $slide = $presentation->getSlides()->get_Item($slideIndex);

    $textFrames = SlideUtil::getAllTextBoxes($slide);
    $textFrameCount = java_values($arrayClass->getLength($textFrames));

    for ($textFrameIndex = 0; $textFrameIndex < $textFrameCount; $textFrameIndex++) {
        foreach ($textFrames[$textFrameIndex]->getParagraphs() as $paragraph) {
            foreach ($paragraph->getPortions() as $portion) {
                $portionText = $portion->getText();
                echo($portionText);

                $portionFormat = $portion->getPortionFormat();
                $fontHeight = $portionFormat->getFontHeight();
                echo($fontHeight);

                $latinFont = $portionFormat->getLatinFont();
                if (!java_is_null($latinFont)) {
                    $fontName = $latinFont->getFontName();
                    echo($fontName);
                }
            }
        }
    }
} finally {
    $presentation->dispose();
}

ดึงข้อความจากงานนำเสนอ

เพื่อสแกนข้อความจากงานนำเสนอทั้งหมด ให้ใช้เมธอดสแตติก getAllTextFrames ที่เปิดเผยโดยคลาส SlideUtil เมธอดนี้รับพารามิเตอร์สองค่า:

  1. แรก คือออบเจกต์ Presentation ที่แทนงานนำเสนอ PowerPoint หรือ OpenDocument ซึ่งจะดึงข้อความจากมัน
  2. สอง คือค่าชนิด boolean ที่ระบุว่าควรรวมสไลด์แม่ไว้เมื่อสแกนข้อความจากงานนำเสนอหรือไม่

เมธอดจะคืนค่าเป็นอาร์เรย์ของออบเจกต์ประเภท TextFrame, รวมถึงข้อมูลการจัดรูปแบบข้อความ โค้ดด้านล่างสแกนข้อความและรายละเอียดการจัดรูปแบบจากงานนำเสนอรวมถึงสไลด์แม่ด้วย

$presentation = new Presentation("demo.pptx");
$arrayClass = new java_class("java.lang.reflect.Array");

try {
    $includeMasterSlides = true;
    $textFrames = SlideUtil::getAllTextFrames($presentation, $includeMasterSlides);
    $textFrameCount = java_values($arrayClass->getLength($textFrames));

    for ($textFrameIndex = 0; $textFrameIndex < $textFrameCount; $textFrameIndex++) {
        foreach ($textFrames[$textFrameIndex]->getParagraphs() as $paragraph) {
            foreach ($paragraph->getPortions() as $portion) {
                $portionText = $portion->getText();
                echo($portionText);

                $portionFormat = $portion->getPortionFormat();
                $fontHeight = $portionFormat->getFontHeight();
                echo($fontHeight);

                $latinFont = $portionFormat->getLatinFont();
                if (!java_is_null($latinFont)) {
                    $fontName = $latinFont->getFontName();
                    echo($fontName);
                }
            }
        }
    }
} finally {
    $presentation->dispose();
}

การดึงข้อความแบบจัดหมวดหมู่และรวดเร็ว

คลาส PresentationFactory ยังมีเมธอดสำหรับดึงข้อความทั้งหมดจากงานนำเสนอ:

PresentationText getPresentationText(String, int);
PresentationText getPresentationText(InputStream, int);
PresentationText getPresentationText(InputStream, int, LoadOptions);

อาร์กิวเมนต์ enum TextExtractionArrangingMode ระบุโหมดการจัดผลลัพธ์การดึงข้อความและสามารถตั้งค่าเป็นค่าเหล่านี้ได้:

  • Unarranged - ข้อความดิบโดยไม่คำนึงถึงตำแหน่งบนสไลด์
  • Arranged - ข้อความจะถูกจัดเรียงตามลำดับเดียวกับบนสไลด์

โหมด Unarranged สามารถใช้ได้เมื่อความเร็วเป็นสิ่งสำคัญ; มันเร็วกว่าโหมด Arranged

PresentationText แทนข้อความดิบที่ดึงจากงานนำเสนอ เมธอด getSlidesText ของมันคืนค่าเป็นอาร์เรย์ของออบเจกต์ที่แต่ละออบเจกต์แทนข้อความบนสไลด์ที่สอดคล้องแต่ละสไลด์ ออบเจกต์ที่คืนมามีเมธอดต่อไปนี้:

  • getText - ข้อความภายในรูปร่างของสไลด์
  • getMasterText - ข้อความภายในรูปร่างของสไลด์แม่ที่เชื่อมโยงกับสไลด์นี้
  • getLayoutText - ข้อความภายในรูปร่างของสไลด์เลย์เอาต์ที่เชื่อมโยงกับสไลด์นี้
  • getNotesText - ข้อความภายในรูปร่างของสไลด์บันทึกย่อที่เชื่อมโยงกับสไลด์นี้
  • getCommentsText - ข้อความภายในความคิดเห็นที่เชื่อมโยงกับสไลด์นี้
$presentationPath = "presentation.ppt";
$arrangingMode = TextExtractionArrangingMode::Unarranged;
$presentationText = PresentationFactory::getInstance()->getPresentationText($presentationPath, $arrangingMode);
$slidesText = $presentationText->getSlidesText();
$firstSlideText = $slidesText[0];

echo($firstSlideText->getText());
echo($firstSlideText->getLayoutText());
echo($firstSlideText->getMasterText());
echo($firstSlideText->getNotesText());
echo($firstSlideText->getCommentsText());

คำถามที่พบบ่อย

Aspose.Slides ประมวลผลงานนำเสนอขนาดใหญ่ในการดึงข้อความเร็วแค่ไหน?

Aspose.Slides ได้รับการปรับให้ทำงานด้วยประสิทธิภาพสูงและสามารถประมวลผลแม้ งานนำเสนอขนาดใหญ่ ทำให้เหมาะสำหรับสถานการณ์การประมวลผลแบบเรียลไทม์หรือแบบเป็นกลุ่ม

Aspose.Slides สามารถดึงข้อความจากตารางและแผนภูมิภายในงานนำเสนอได้หรือไม่?

ได้ Aspose.Slides สามารถดึงข้อความจากหลายองค์ประกอบของสไลด์ รวมถึงตารางและวัตถุที่เกี่ยวข้องกับแผนภูมิ ทำให้คุณสามารถเข้าถึงและวิเคราะห์เนื้อหาข้อความในโครงสร้างการนำเสนอทั่วไปได้

ฉันต้องมีไลเซนซ์ Aspose.Slides พิเศษเพื่อดึงข้อความจากงานนำเสนอหรือไม่?

คุณสามารถดึงข้อความโดยใช้เวอร์ชันทดลองฟรีของ Aspose.Slides แม้ว่าจะมี ข้อจำกัดบางประการ, เช่น การประมวลผลจำนวนสไลด์ที่จำกัด สำหรับการใช้งานโดยไม่มีข้อจำกัดและเพื่อจัดการงานนำเสนอขนาดใหญ่ การซื้อไลเซนซ์เต็มรุ่นจึงเป็นที่แนะนำ