Cách tải bản trình chiếu trong Java

Cách tải bản trình chiếu trong Java

Aspose.Slides FOSS for Java cho phép bạn mở bất kỳ tệp .pptx nào, kiểm tra nội dung của nó và hoặc lưu lại dưới dạng PPTX hoặc trích xuất dữ liệu từ nó. Hướng dẫn này bao gồm việc mở tệp, lặp qua các slide, đọc văn bản hình dạng và round-tripping việc lưu.

Hướng Dẫn Từng Bước

Bước 1: Thêm phụ thuộc Maven

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

Bước 2: Mở một Bài thuyết trình hiện có

Truyền đường dẫn tệp tới hàm khởi tạo Presentation. Sử dụng try-with-resources để đảm bảo dọn dẹp.

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);
}

Các phần XML không xác định trong tệp nguồn được giữ nguyên nguyên văn: thư viện không bao giờ xóa nội dung mà nó chưa hiểu.


Bước 3: Kiểm tra các slide

Lặp qua tất cả các slide và in số lượng hình dạng của chúng:

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");
    }
}

Bước 4: Đọc văn bản hình dạng

Lặp lại các hình dạng và đọc văn bản từ các hình dạng có 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());
                }
            }
        }
    }
}

Bước 5: Đọc thuộc tính tài liệu

Truy cập các thuộc tính tài liệu cốt lõi từ 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());
}

Bước 6: Lưu vòng tròn

Sau khi kiểm tra hoặc chỉnh sửa bản trình bày, lưu lại thành định dạng PPTX:

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

Lưu vào một đường dẫn khác sẽ tạo một tệp mới. Lưu vào cùng một đường dẫn sẽ ghi đè lên tệp gốc.


Các vấn đề thường gặp và cách khắc phục

java.io.FileNotFoundException

Kiểm tra xem đường dẫn tới tệp .pptx có đúng so với thư mục làm việc hay không. Sử dụng java.nio.file.Paths để xây dựng đường dẫn một cách chắc chắn:

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

Thư viện chỉ hỗ trợ .pptx (Office Open XML). Các tệp .ppt (PowerPoint nhị phân 97-2003) cũ không được hỗ trợ.

Shapes không có phương thức getTextFrame()

Một số hình dạng (Connectors, PictureFrames, GroupShapes) không có khung văn bản. Kiểm tra với instanceof IAutoShape trước khi chuyển đổi kiểu và truy cập văn bản.


Câu hỏi thường gặp

Việc tải có giữ nguyên toàn bộ nội dung gốc không?

Đúng. Các phần XML không xác định được giữ nguyên nguyên văn khi lưu vòng tròn. Thư viện chỉ tuần tự hoá các phần của mô hình tài liệu mà nó hiểu, và truyền qua bất kỳ XML nào mà nó không nhận ra.

Tôi có thể tải một PPTX được bảo vệ bằng mật khẩu không?

Các bản trình chiếu được bảo vệ bằng mật khẩu (được mã hoá) không được hỗ trợ trong phiên bản này.

Có hỗ trợ tải từ InputStream không?

Có. Trình khởi tạo Presentation chấp nhận một InputStream:

import java.io.FileInputStream;

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

Xem thêm

 Tiếng Việt