Utwórz przeglądarkę prezentacji w C++
Wprowadzenie
Aspose.Slides dla C++ służy do tworzenia plików prezentacji z slajdami. Slajdy te można wyświetlać, otwierając prezentacje w programie Microsoft PowerPoint, na przykład. Czasami programiści mogą potrzebować wyświetlić slajdy jako obrazy w preferowanym przeglądarce obrazów lub stworzyć własny podgląd prezentacji. W takich przypadkach Aspose.Slides umożliwia wyeksportowanie pojedynczego slajdu jako obrazu. Ten artykuł opisuje, jak to zrobić.
Generowanie obrazu SVG ze slajdu
Aby wygenerować obraz SVG ze slajdu prezentacji przy użyciu Aspose.Slides, postępuj zgodnie z poniższymi krokami:
- Utwórz instancję klasy Presentation .
- Pobierz referencję do slajdu według jego indeksu.
- Otwórz strumień pliku.
- Zapisz slajd jako obraz SVG do strumienia pliku.
auto slideIndex = 0;
auto presentation = MakeObject<Presentation>(u"sample.pptx");
auto slide = presentation->get_Slide(slideIndex);
auto svgStream = File::Create(u"output.svg");
slide->WriteAsSvg(svgStream);
svgStream->Dispose();
presentation->Dispose();
Generowanie SVG z niestandardowym identyfikatorem kształtu
Aspose.Slides może być używany do generowania SVG ze slajdu z niestandardowym identyfikatorem kształtu. Aby to zrobić, użyj metody set_Id z ISvgShape . CustomSvgShapeFormattingController można wykorzystać do ustawienia identyfikatora kształtu.
auto slideIndex = 0;
auto presentation = MakeObject<Presentation>(u"sample.pptx");
auto slide = presentation->get_Slide(slideIndex);
auto svgOptions = MakeObject<SVGOptions>();
svgOptions->set_ShapeFormattingController(MakeObject<CustomSvgShapeFormattingController>());
auto svgStream = File::Create(u"output.svg");
slide->WriteAsSvg(svgStream, svgOptions);
svgStream->Dispose();
presentation->Dispose();
class CustomSvgShapeFormattingController : public ISvgShapeFormattingController
{
private:
int m_shapeIndex;
public:
CustomSvgShapeFormattingController(int shapeStartIndex = 0)
{
m_shapeIndex = shapeStartIndex;
}
void FormatShape(SharedPtr<ISvgShape> svgShape, SharedPtr<IShape> shape)
{
svgShape->set_Id(String::Format(u"shape-{0}", m_shapeIndex++));
}
};
Tworzenie miniatury slajdu
Aspose.Slides pomaga generować miniatury slajdów. Aby wygenerować miniaturę slajdu przy użyciu Aspose.Slides, postępuj zgodnie z poniższymi krokami:
- Utwórz instancję klasy Presentation .
- Pobierz referencję do slajdu według jego indeksu.
- Pobierz obraz miniatury referowanego slajdu w określonej skali.
- Zapisz obraz miniatury w dowolnym żądanym formacie obrazu.
auto slideIndex = 0;
auto scaleX = 1;
auto scaleY = scaleX;
auto presentation = MakeObject<Presentation>(u"sample.pptx");
auto slide = presentation->get_Slide(slideIndex);
auto image = slide->GetImage(scaleX, scaleY);
image->Save(u"output.jpg", ImageFormat::Png);
image->Dispose();
presentation->Dispose();
Tworzenie miniatury slajdu o wymiarach określonych przez użytkownika
Aby utworzyć obraz miniatury slajdu o wymiarach określonych przez użytkownika, postępuj zgodnie z poniższymi krokami:
- Utwórz instancję klasy Presentation .
- Pobierz referencję do slajdu według jego indeksu.
- Pobierz obraz miniatury referowanego slajdu z określonymi wymiarami.
- Zapisz obraz miniatury w dowolnym żądanym formacie obrazu.
auto slideIndex = 0;
auto slideSize = Size(1200, 800);
auto presentation = MakeObject<Presentation>(u"sample.pptx");
auto slide = presentation->get_Slide(slideIndex);
auto image = slide->GetImage(slideSize);
image->Save(u"output.jpg", ImageFormat::Png);
image->Dispose();
presentation->Dispose();
Tworzenie miniatury slajdu z notatkami prelegenta
Aby wygenerować miniaturę slajdu z notatkami prelegenta przy użyciu Aspose.Slides, postępuj zgodnie z poniższymi krokami:
- Utwórz instancję klasy RenderingOptions .
- Użyj metody
RenderingOptions.set_SlidesLayoutOptions, aby ustawić pozycję notatek prelegenta. - Utwórz instancję klasy Presentation .
- Pobierz referencję do slajdu według jego indeksu.
- Pobierz obraz miniatury referowanego slajdu z opcjami renderowania.
- Zapisz obraz miniatury w dowolnym żądanym formacie obrazu.
auto slideIndex = 0;
auto layoutingOptions = MakeObject<NotesCommentsLayoutingOptions>();
layoutingOptions->set_NotesPosition(NotesPositions::BottomTruncated);
auto renderingOptions = MakeObject<RenderingOptions>();
renderingOptions->set_SlidesLayoutOptions(layoutingOptions);
auto presentation = MakeObject<Presentation>(u"sample.pptx");
auto slide = presentation->get_Slide(slideIndex);
auto image = slide->GetImage(renderingOptions);
image->Save(u"output.png", ImageFormat::Png);
image->Dispose();
presentation->Dispose();
Przykład na żywo
Możesz wypróbować darmową aplikację Aspose.Slides Viewer i zobaczyć, co możesz zaimplementować przy użyciu API Aspose.Slides:

FAQ
Czy mogę osadzić przeglądarkę prezentacji w aplikacji internetowej?
Tak. Możesz używać Aspose.Slides po stronie serwera, aby renderować slajdy jako obrazy lub HTML i wyświetlać je w przeglądarce. Funkcje nawigacji i powiększania można zaimplementować w JavaScript, aby uzyskać interaktywne wrażenia.
Jaki jest najlepszy sposób wyświetlania slajdów w niestandardowej przeglądarce?
Zalecane podejście to renderowanie każdego slajdu jako obrazu (np. PNG lub SVG) lub konwersja do HTML przy użyciu Aspose.Slides, a następnie wyświetlenie wyniku w kontrolce obrazu (w aplikacji desktop) lub w kontenerze HTML (w aplikacji webowej).
Jak radzić sobie z dużymi prezentacjami zawierającymi wiele slajdów?
W przypadku dużych zestawów rozważ ładowanie leniwe lub renderowanie slajdów na żądanie. Oznacza to generowanie zawartości slajdu tylko wtedy, gdy użytkownik przechodzi do niego, co zmniejsza zużycie pamięci i czas ładowania.