Просмотрщик презентаций

Генерация SVG изображения из слайда

Aspose.Slides для C++ используется для создания файлов презентаций, содержащих слайды. Эти слайды можно просмотреть, открыв презентации с помощью Microsoft PowerPoint. Но иногда разработчикам может потребоваться просмотреть слайды в виде изображений SVG в любимом просмотрщике изображений. В таких случаях Aspose.Slides для C++ позволяет экспортировать отдельный слайд в изображение SVG. Эта статья описывает, как использовать эту функцию. Чтобы сгенерировать изображение SVG из любого желаемого слайда с помощью Aspose.Slides.Pptx для C++, выполните следующие шаги:

  • Создайте экземпляр класса Presentation.
  • Получите ссылку на желаемый слайд, используя его ID или индекс.
  • Получите изображение SVG в потоке памяти.
  • Сохраните поток памяти в файл.
For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// The path to the documents directory.
const String templatePath = u"../templates/TestDeck_050.pptx";
const String outPath = u"../out/Aspose_out.svg";
// Instantiate Presentation class
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Access the first slide
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// Create a memory stream object
SharedPtr<System::IO::MemoryStream> SvgStream = MakeObject<System::IO::MemoryStream>();
// Generate SVG image of slide and save in memory stream
slide->WriteAsSvg(SvgStream);
SvgStream->set_Position(0);
// Save memory stream to file
try
{
System::SharedPtr<System::IO::Stream> fileStream = System::IO::File::OpenWrite(outPath);
System::ArrayPtr<uint8_t> buffer = System::MakeObject<System::Array<uint8_t>>(8 * 1024, 0);
int32_t len;
while ((len = SvgStream->Read(buffer, 0, buffer->get_Length())) > 0)
{
fileStream->Write(buffer, 0, len);
}
}
catch (Exception e)
{
}
SvgStream->Close();

Генерация SVG с пользовательскими идентификаторами форм

Теперь Aspose.Slides для C++ можно использовать для генерации SVG из слайда с пользовательскими идентификаторами форм. Эти слайды можно просмотреть, открыв презентации с помощью Microsoft PowerPoint. Но иногда разработчикам может потребоваться просмотреть слайды в виде изображений SVG в любимом просмотрщике изображений. В таких случаях Aspose.Slides для C++ позволяет экспортировать отдельный слайд в изображение SVG. Для этой цели свойство ID было добавлено в ISvgShape для поддержки пользовательских идентификаторов форм в сгенерированном SVG. Для реализации этой функции был представлен CustomSvgShapeFormattingController, который вы можете использовать для установки идентификатора формы.

For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
/*class CustomSvgShapeFormattingController::ISvgShapeFormattingController
{
void CustomSvgShapeFormattingController()
{
public:
int m_shapeIndex;
CustomSvgShapeFormattingController(int shapeStartIndex = 0)
{
m_shapeIndex = shapeStartIndex;
}
public void FormatShape(ISvgShape svgShape, IShape shape)
{
svgShape.Id = string.Format("shape-{0}", m_shapeIndex++);
}
};
};
*/
void GeneratingSVGWithCustomShapeIDS()
{
// The path to the documents directory.
const String templatePath = L"../templates/TestDeck_050.pptx";
const String outPath = L"../out/GeneratingSVGWithCustomShapeIDS_out.svg";
// Instantiate Presentation class
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
SharedPtr<SVGOptions> svgOptions = MakeObject< SVGOptions>();
SharedPtr<CustomSvgShapeFormattingController>customSvgShapeFormattingController = MakeSharedPtr<CustomSvgShapeFormattingController>(0);
svgOptions->set_ShapeFormattingController(customSvgShapeFormattingController);
// Access the first slide
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// Create a memory stream object
SharedPtr<System::IO::MemoryStream> SvgStream = MakeObject<System::IO::MemoryStream>();
// Generate SVG image of slide and save in memory stream
slide->WriteAsSvg(SvgStream);
SvgStream->set_Position(0);
// Save memory stream to file
try
{
System::SharedPtr<System::IO::Stream> fileStream = System::IO::File::OpenWrite(outPath);
// Clearing resources under 'using' statement
System::Details::DisposeGuard __dispose_guard_1{ fileStream, ASPOSE_CURRENT_FUNCTION };
// ------------------------------------------
System::ArrayPtr<uint8_t> buffer = System::MakeObject<System::Array<uint8_t>>(8 * 1024, 0);
int32_t len;
while ((len = SvgStream->Read(buffer, 0, buffer->get_Length())) > 0)
{
fileStream->Write(buffer, 0, len);
}
}
catch (Exception e)
{
}
SvgStream->Close();
}
For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
/*class CustomSvgShapeFormattingController: public ISvgShapeFormattingController
{
int m_shapeIndex;
CustomSvgShapeFormattingController(int shapeStartIndex = 0)
{
m_shapeIndex = shapeStartIndex;
}
public:
void FormatShape(SvgShape svgShape, Shape shape)
{
svgShape.set_Id(String::Format(L"Shape-{0}", m_shapeIndex++));
}
};*/
/*void CustomSvgShapeFormattingController::FormatShape(SvgShape svgShape, Shape shape)
{
svgShape.set_Id(String::Format(L"Shape-{0}", m_shapeIndex++));
}*/

Создание миниатюры слайда

Aspose.Slides для C++ используется для создания файлов презентаций, содержащих слайды. Эти слайды можно просмотреть, открыв файлы презентаций с помощью Microsoft PowerPoint. Но иногда разработчикам может потребоваться просмотреть слайды в виде изображений с помощью любимого просмотрщика изображений. В таких случаях Aspose.Slides для C++ помогает вам сгенерировать миниатюры слайдов. Чтобы сгенерировать миниатюру любого желаемого слайда с помощью Aspose.Slides для C++:

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на любой желаемый слайд, используя его ID или индекс.
  3. Получите изображение миниатюры ссылочного слайда на заданном масштабе.
  4. Сохраните изображение миниатюры в любом желаемом формате изображения.
For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// The path to the documents directory.
const String templatePath = L"../templates/TestDeck_050.pptx";
const String outPath = L"../out/Aspose_out.png";
// Instantiate Presentation class
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Access the first slide
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
auto bitmap = slide->GetThumbnail(1, 1);
bitmap->Save(outPath, ImageFormat::get_Png());

Создание миниатюры с пользовательскими размерностями

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на любой желаемый слайд, используя его ID или индекс.
  3. Получите изображение миниатюры ссылочного слайда на заданном масштабе.
  4. Сохраните изображение миниатюры в любом желаемом формате изображения.
// The path to the documents directory.
const String templatePath = u"../templates/TestDeck_050.pptx";
const String outPath = u"../out/Aspose_UserDefinedDimension_Slide_out.png";
// Instantiate Presentation class
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Access the first slide
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// User defined dimension
int desiredX = 1200;
int desiredY = 800;
// Getting scaled value of X and Y
float ScaleX = (float)(1.0 / pres->get_SlideSize()->get_Size().get_Width()) * desiredX;
float ScaleY = (float)(1.0 / pres->get_SlideSize()->get_Size().get_Height()) * desiredY;
// Create a custom scale image
auto bitmap = slide->GetThumbnail(ScaleX, ScaleY);
bitmap->Save(outPath, ImageFormat::get_Png());

Создание миниатюры из слайда в режиме заметок

Чтобы сгенерировать миниатюру любого желаемого слайда в режиме заметок с помощью Aspose.Slides для C++:

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на любой желаемый слайд, используя его ID или индекс.
  3. Получите изображение миниатюры ссылочного слайда на заданном масштабе в режиме заметок.
  4. Сохраните изображение миниатюры в любом желаемом формате изображения.

Ниже приведен фрагмент кода, который создает миниатюру первого слайда презентации в режиме заметок.

// The path to the documents directory.
const String templatePath = u"../templates/TestDeck_050.pptx";
const String outPath = u"../out/Aspose_NotesSlide_out.png";
// Instantiate Presentation class
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Access the first slide
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// User defined dimension
int desiredX = 1200;
int desiredY = 800;
// Create a full scale image
auto bitmap = slide->GetThumbnail(2, 2);
bitmap->Save(outPath, ImageFormat::get_Png());