Cách Tạo Bản Trình Chiếu trong Java
Aspose.Slides FOSS for Java cho phép bạn tạo các bài thuyết trình PowerPoint hoàn toàn bằng Java mà không phụ thuộc vào Microsoft Office. Hướng dẫn này cho thấy cách tạo một bài thuyết trình mới, thêm các slide và hình dạng, định dạng văn bản và lưu kết quả.
Hướng Dẫn Từng Bước
Bước 1: Thêm phụ thuộc Maven
Thêm Aspose.Slides FOSS vào pom.xml của bạn. Yêu cầu Java 21 trở lên.
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Xác minh việc cài đặt:
import org.aspose.slides.foss.Presentation;
Presentation prs = new Presentation();
prs.dispose();
System.out.println("Aspose.Slides FOSS ready");Bước 2: Nhập các lớp cần thiết
Nhập lớp Presentation và enum SaveFormat cần thiết để lưu.
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;Tất cả các hằng số kiểu hình dạng nằm trong org.aspose.slides.foss.ShapeType. Các enum định dạng (FillType, NullableBool) cũng nằm trong org.aspose.slides.foss.
Bước 3: Tạo bản trình chiếu
Sử dụng new Presentation() và bao bọc nó trong try-with-resources. Một bản trình bày mới bắt đầu với một slide trống.
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.export.SaveFormat;
try (Presentation prs = new Presentation()) {
System.out.println("Slides in new presentation: " + prs.getSlides().size());
prs.save("output.pptx", SaveFormat.PPTX);
}Quan trọng: Luôn sử dụng try-with-resources hoặc gọi prs.dispose() trong khối finally. Nếu không, tài nguyên sẽ không được giải phóng đúng cách.
Bước 4: Truy cập một Slide
Slide đầu tiên có chỉ mục 0. Một bản trình bày trống có đúng một slide.
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0); // zero-based index
System.out.println("Slide at index 0: " + slide);
prs.save("output.pptx", SaveFormat.PPTX);
}Bước 5: Thêm một Hình
Sử dụng slide.getShapes().addAutoShape() để thêm một AutoShape. Các tham số là (shapeType, x, y, width, height), tất cả tính bằng điểm (1 điểm = 1/72 inch; slide tiêu chuẩn là 720 x 540 pt).
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
// Rectangle at (50, 50) with 400 wide and 120 tall
IAutoShape shape = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 50, 400, 120
);
// Attach a text frame
shape.addTextFrame("Hello from Aspose.Slides FOSS!");
prs.save("with-shape.pptx", SaveFormat.PPTX);
}Bước 6: Lưu bản trình chiếu
Gọi prs.save(path, SaveFormat.PPTX) trước khi khối try kết thúc. PPTX là định dạng đầu ra duy nhất được hỗ trợ.
prs.save("result.pptx", SaveFormat.PPTX);Tệp được ghi một cách nguyên tử; nếu có lỗi xảy ra trước cuộc gọi này, sẽ không tạo ra tệp đầu ra.
Ví dụ Hoạt động Đầy đủ
Chương trình sau tạo một bản trình bày gồm hai slide, với một hình dạng tiêu đề trên slide đầu tiên và một bảng trên slide thứ hai.
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;
public class CreatePresentation {
public static void main(String[] args) {
try (Presentation prs = new Presentation()) {
// --- Slide 1: title shape ---
ISlide slide1 = prs.getSlides().get(0);
IAutoShape title = slide1.getShapes().addAutoShape(
ShapeType.RECTANGLE, 40, 40, 640, 80
);
ITextFrame tf = title.addTextFrame("Q1 Results: Executive Summary");
IPortionFormat fmt = tf.getParagraphs().get(0)
.getPortions().get(0).getPortionFormat();
fmt.setFontHeight(32);
fmt.setFontBold(NullableBool.TRUE);
fmt.getFillFormat().setFillType(FillType.SOLID);
fmt.getFillFormat().getSolidFillColor().setColor(
Color.fromArgb(255, 0, 70, 127)
);
// --- Slide 2: table ---
prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0));
ISlide slide2 = prs.getSlides().get(1);
ITable table = slide2.getShapes().addTable(
40, 40,
new double[]{200.0, 120.0, 120.0},
new double[]{40.0, 40.0, 40.0}
);
String[] headers = {"Region", "Revenue", "Growth"};
String[][] data = {
{"North", "$1.2M", "+8%"},
{"South", "$0.9M", "+4%"},
};
for (int col = 0; col < headers.length; col++) {
table.getRows().get(0).get(col).getTextFrame().setText(headers[col]);
}
for (int row = 0; row < data.length; row++) {
for (int col = 0; col < data[row].length; col++) {
table.getRows().get(row + 1).get(col)
.getTextFrame().setText(data[row][col]);
}
}
prs.save("q1-results.pptx", SaveFormat.PPTX);
}
System.out.println("Saved q1-results.pptx");
}
}Các vấn đề thường gặp và cách khắc phục
IllegalStateException: Presentation already disposed
Bạn đang gọi các phương thức trên một đối tượng Presentation sau khi khối try-with-resources đã kết thúc. Luôn giữ mọi công việc bên trong khối try.
UnsupportedOperationException khi lưu
Điều này xảy ra khi cố gắng lưu ở định dạng khác PPTX, hoặc khi sử dụng tính năng không được hỗ trợ (chẳng hạn như biểu đồ hoặc hoạt ảnh).
Hình dạng xuất hiện ngoài khu vực slide có thể nhìn thấy
Các slide có kích thước mặc định là 720 x 540 điểm. Giữ x + width <= 720 và y + height <= 540.
Câu hỏi thường gặp
Kích thước slide mặc định là gì?
Một Presentation() mới tạo các slide với kích thước tiêu chuẩn 10 x 7,5 inch (720 x 540 điểm). Việc thay đổi kích thước slide chưa được hỗ trợ trong phiên bản này.
Tôi có thể thêm hơn một slide không?
Có. Gọi prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0)) để thêm một slide trống và truy cập nó theo chỉ mục:
prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0));
ISlide slide2 = prs.getSlides().get(1);Tôi có thể mở một tệp hiện có và thêm các slide không?
Có:
try (Presentation prs = new Presentation("existing.pptx")) {
prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0));
prs.save("existing.pptx", SaveFormat.PPTX);
}Tôi có thể lưu thành những định dạng nào?
Chỉ hỗ trợ SaveFormat.PPTX. Xuất ra PDF, HTML, SVG hoặc hình ảnh không khả dụng trong phiên bản này.