Cách tải bản trình chiếu trong .NET
Aspose.Slides FOSS for .NET lets you open any .pptx tệp, kiểm tra nội dung của nó, và hoặc lưu lại thành PPTX hoặc trích xuất dữ liệu từ nó. Hướng dẫn này bao gồm cách mở tệp, duyệt các slide, đọc văn bản của shape, và lưu lại (round‑tripping).
Hướng Dẫn Từng Bước
Bước 1: Cài Đặt Gói
dotnet add package Aspose.Slides.FossBước 2: Mở một bản trình chiếu hiện có
Truyền đường dẫn tệp tới new Presentation(). Sử dụng một using câu lệnh để đảm bảo dọn dẹp.
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation("input.pptx");
Console.WriteLine($"Slide count: {prs.Slides.Count}");
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: 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
Duyệt qua tất cả các slide và in ra chỉ mục của chúng:
using Aspose.Slides.Foss;
using var prs = new Presentation("deck.pptx");
for (int i = 0; i < prs.Slides.Count; i++)
{
var slide = prs.Slides[i];
int shapeCount = slide.Shapes.Count;
Console.WriteLine($"Slide {i}: {shapeCount} shapes");
}Bước 4: Đọc văn bản của hình dạng
Duyệt qua các shape và đọc văn bản từ các shape có một TextFrame:
using Aspose.Slides.Foss;
using var prs = new Presentation("deck.pptx");
foreach (var slide in prs.Slides)
{
foreach (var shape in slide.Shapes)
{
if (shape is IAutoShape autoShape && autoShape.TextFrame != null)
{
string text = autoShape.TextFrame.Text;
if (!string.IsNullOrWhiteSpace(text))
Console.WriteLine($" Shape text: {text}");
}
}
}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.DocumentProperties:
using Aspose.Slides.Foss;
using var prs = new Presentation("deck.pptx");
var props = prs.DocumentProperties;
Console.WriteLine($"Title: {props.Title}");
Console.WriteLine($"Author: {props.Author}");
Console.WriteLine($"Subject: {props.Subject}");Bước 6: Lưu theo vòng lặp (Round‑Trip)
Sau khi kiểm tra hoặc chỉnh sửa bản trình chiếu, lưu lại dưới dạng PPTX:
prs.Save("output.pptx", SaveFormat.Pptx);Lưu vào một đường dẫn khác sẽ tạo 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
FileNotFoundException
Kiểm tra rằng đường dẫn tới .pptx tệp là đúng so với thư mục làm việc. Sử dụng Path.Combine để xây dựng đường dẫn một cách chắc chắn:
string path = Path.Combine(AppContext.BaseDirectory, "assets", "deck.pptx");
using var prs = new Presentation(path);Exception: File format is not supported
Thư viện hỗ trợ .pptx (Office Open XML) chỉ. Các tệp Legacy .ppt (binary PowerPoint 97-2003) không được hỗ trợ.
Các hình không có thuộc tính TextFrame
Một số shape (Connector, PictureFrame) không có một TextFrame. Ép kiểu sang IAutoShape và kiểm tra null trước khi 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?
Có. Các phần XML không xác định được giữ nguyên nguyên văn khi lưu qua lại. Thư viện sẽ không xóa bất kỳ nội dung XML nào mà nó chưa nhận ra.
Tôi có thể tải 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ã hóa) không được hỗ trợ trong phiên bản này.
Tôi có thể trích xuất các hình ảnh nhúng không?
Truy cập bộ sưu tập hình ảnh: prs.Images trả về ImageCollection. Mỗi hình ảnh có các thuộc tính để đọc dữ liệu hình ảnh thô.
Việc tải từ MemoryStream có được hỗ trợ không?
Có. Presentation constructor chấp nhận một Stream:
using var stream = new MemoryStream(pptxBytes);
using var prs = new Presentation(stream);
Console.WriteLine($"Slides: {prs.Slides.Count}");