כיצד לטעון מצגות ב-Java

כיצד לטעון מצגות ב-Java

אספוז.Slides FOSS for Java מאפשר לך לפתוח כל קובץ .pptx, לבדוק את תוכנו, ולשמור אותו חזרה ל‑PPTX או לחלץ ממנו נתונים. מדריך זה מכסה פתיחת קובץ, איטרציה על השקופיות, קריאת טקסט של צורה, והחזרה של השמירה.

מדריך שלב אחר שלב

שלב 1: הוסף את תלות Maven

<dependency>
  <groupId>org.aspose.slides.foss</groupId>
  <artifactId>aspose-slides-foss</artifactId>
  <version>1.0.0</version>
</dependency>

שלב 2: פתח מצגת קיימת

העבר את נתיב הקובץ לבנאי Presentation. השתמש ב‑try-with-resources כדי להבטיח ניקוי.

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IShape;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IDocumentProperties;
import org.aspose.slides.foss.export.SaveFormat;

try (Presentation prs = new Presentation("input.pptx")) {
    System.out.println("Slide count: " + prs.getSlides().size());
    prs.save("output.pptx", SaveFormat.PPTX);
}

חלקי XML לא ידועים בקובץ המקור נשמרים במדויק: הספרייה לעולם אינה מסירה תוכן שהיא עדיין לא מבינה.


שלב 3: בדיקת השקופיות

חזור על כל השקופיות והדפס את מספר הצורות שלהן:

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IShape;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IDocumentProperties;
import org.aspose.slides.foss.export.SaveFormat;

try (Presentation prs = new Presentation("deck.pptx")) {
    for (int i = 0; i < prs.getSlides().size(); i++) {
        ISlide slide = prs.getSlides().get(i);
        int shapeCount = slide.getShapes().size();
        System.out.println("Slide " + i + ": " + shapeCount + " shapes");
    }
}

שלב 4: קריאת טקסט הצורה

חזור על הצורות וקרא טקסט מצורות שיש להן TextFrame:

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IShape;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IDocumentProperties;
import org.aspose.slides.foss.export.SaveFormat;

try (Presentation prs = new Presentation("deck.pptx")) {
    for (ISlide slide : prs.getSlides()) {
        for (IShape shape : slide.getShapes()) {
            if (shape instanceof IAutoShape) {
                IAutoShape autoShape = (IAutoShape) shape;
                ITextFrame tf = autoShape.getTextFrame();
                if (tf != null && !tf.getText().isEmpty()) {
                    System.out.println("  Shape text: " + tf.getText());
                }
            }
        }
    }
}

שלב 5: קריאת מאפייני המסמך

גישה למאפייני המסמך הליבתיים מ prs.getDocumentProperties():

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IShape;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IDocumentProperties;
import org.aspose.slides.foss.export.SaveFormat;

try (Presentation prs = new Presentation("deck.pptx")) {
    IDocumentProperties props = prs.getDocumentProperties();
    System.out.println("Title:   " + props.getTitle());
    System.out.println("Author:  " + props.getAuthor());
    System.out.println("Subject: " + props.getSubject());
}

שלב 6: שמירה במעגל

לאחר בדיקה או שינוי של המצגת, שמור אותה חזרה ל‑PPTX:

prs.save("output.pptx", SaveFormat.PPTX);

שמירה בנתיב שונה יוצרת קובץ חדש. שמירה באותו נתיב מחליפה את המקורי.


בעיות נפוצות ותיקונים

java.io.FileNotFoundException

בדוק שהנתיב לקובץ .pptx נכון ביחס לתיקיית העבודה. השתמש ב-java.nio.file.Paths לבנייה חזקה של נתיב:

import java.nio.file.Path;
import java.nio.file.Paths;

Path path = Paths.get("assets", "deck.pptx");
try (Presentation prs = new Presentation(path.toString())) {
    // ...
}

Exception: File format is not supported

הספרייה תומכת רק ב-.pptx (Office Open XML). קבצים ישנים מסוג .ppt (binary PowerPoint 97-2003) אינם נתמכים.

לצורות אין שיטת getTextFrame()

לחלק מהצורות (Connectors, PictureFrames, GroupShapes) אין מסגרת טקסט. יש לבדוק עם instanceof IAutoShape לפני ההמרה והגישה לטקסט.


שאלות נפוצות

האם הטעינה משמרת את כל התוכן המקורי?

כן. חלקי XML לא ידועים נשמרים במדויק בעת שמירת סיבוב. הספרייה רק מבצעת serialize לחלקי מודל המסמך שהיא מבינה, ועוברת דרך כל XML שהיא אינה מזהה.

האם ניתן לטעון קובץ PPTX המוגן בסיסמה?

מצגות המוגנות בסיסמה (מוצפנות) אינן נתמכות בגרסה זו.

האם טעינה מ-InputStream נתמכת?

כן. הקונסטרקטור Presentation מקבל InputStream:

import java.io.FileInputStream;

try (FileInputStream fis = new FileInputStream("deck.pptx");
     Presentation prs = new Presentation(fis)) {
    System.out.println("Slides: " + prs.getSlides().size());
}

ראה גם

 עברית