Converter Slides de Apresentação em Imagens no PHP

Introdução

O Aspose.Slides for PHP via Java permite converter facilmente slides de apresentações PowerPoint e OpenDocument em vários formatos de imagem, incluindo BMP, PNG, JPG (JPEG), GIF e outros.

Para converter um slide em uma imagem, siga estas etapas:

  1. Defina as configurações de conversão desejadas e selecione os slides que deseja exportar usando:
  2. Gere a imagem do slide chamando o método getImage.

No Aspose.Slides for PHP via Java, um IImage é uma classe que permite trabalhar com imagens definidas por dados de pixels. Você pode usar essa classe para salvar imagens em uma ampla variedade de formatos (BMP, JPG, PNG, etc.).

Converter Slides em Bitmaps e Salvar as Imagens em PNG

Você pode converter um slide em um objeto bitmap e usá‑lo diretamente em sua aplicação. Alternativamente, pode converter um slide em um bitmap e então salvar a imagem em JPEG ou qualquer outro formato preferido.

Este código demonstra como converter o primeiro slide de uma apresentação em um objeto bitmap e, em seguida, salvar a imagem no formato PNG:

$presentation = new Presentation("Presentation.pptx");
try {
    // Converte o primeiro slide da apresentação em um bitmap.
    $image = $presentation->getSlides()->get_Item(0)->getImage();
    try {
        // Salva a imagem no formato PNG.
        $image->save("Slide_0.png", ImageFormat::Png);
    } finally {
        $image->dispose();
    }
} finally {
    $presentation->dispose();
}

Converter Slides em Imagens com Tamanhos Personalizados

Pode ser necessário obter uma imagem de um determinado tamanho. Usando uma sobrecarga do getImage, você pode converter um slide em uma imagem com dimensões específicas (largura e altura).

Este exemplo de código demonstra como fazer isso:

$imageSize = new Java("java.awt.Dimension", 1820, 1040);

$presentation = new Presentation("Presentation.pptx");
try {
    // Converte o primeiro slide da apresentação em um bitmap com o tamanho especificado.
    $image = $presentation->getSlides()->get_Item(0)->getImage($imageSize);
    try {
        // Salva a imagem no formato JPEG.
        $image->save("Slide_0.jpg", ImageFormat::Jpeg);
    } finally {
        $image->dispose();
    }
} finally {
    $presentation->dispose();
}

Converter Slides com Anotações e Comentários em Imagens

Alguns slides podem conter anotações e comentários.

O Aspose.Slides fornece duas classesTiffOptions e RenderingOptions — que permitem controlar a renderização de slides de apresentação em imagens. Ambas as classes incluem o método setSlidesLayoutOptions, que permite configurar a renderização de anotações e comentários em um slide ao convertê‑lo em uma imagem.

Com a classe NotesCommentsLayoutingOptions você pode especificar a posição preferida para anotações e comentários na imagem resultante.

Este código demonstra como converter um slide com anotações e comentários:

$scaleX = 2;
$scaleY = $scaleX;

$presentation = new Presentation("Presentation_with_notes_and_comments.pptx");
try {
    $notesCommentsOptions = new NotesCommentsLayoutingOptions();
    $notesCommentsOptions->setNotesPosition(NotesPositions::BottomTruncated);         // Define a posição das notas.
    $notesCommentsOptions->setCommentsPosition(CommentsPositions::Right);             // Define a posição dos comentários.
    $notesCommentsOptions->setCommentsAreaWidth(500);                                 // Define a largura da área de comentários.
    $notesCommentsOptions->setCommentsAreaColor(java("java.awt.Color")->LIGHT_GRAY);  // Define a cor da área de comentários.

    // Cria as opções de renderização.
    $options = new RenderingOptions();
    $options->setSlidesLayoutOptions($notesCommentsOptions);

    // Converte o primeiro slide da apresentação em uma imagem.
    $image = $presentation->getSlides()->get_Item(0)->getImage($options, $scaleX, $scaleY);
    try {
        // Salva a imagem no formato GIF.
        $image->save("Image_with_notes_and_comments_0.gif", ImageFormat::Gif);
    } finally {
        $image->dispose();
    }
} finally {
    $presentation->dispose();
}

Converter Slides em Imagens Usando Opções TIFF

A classe TiffOptions oferece maior controle sobre a imagem TIFF resultante, permitindo especificar parâmetros como tamanho, resolução, paleta de cores e muito mais.

Este código demonstra um processo de conversão onde as opções TIFF são usadas para gerar uma imagem em preto e branco com resolução de 300 DPI e tamanho de 2160 × 2800:

// Carrega um arquivo de apresentação.
$presentation = new Presentation("sample.pptx");
try {
    // Obtém o primeiro slide da apresentação.
    $slide = $presentation->getSlides()->get_Item(0);

    // Configura as definições da imagem TIFF de saída.
    $options = new TiffOptions();
    $options->setImageSize(new Java("java.awt.Dimension", 2160, 2880));  // Define o tamanho da imagem.
    $options->setPixelFormat(ImagePixelFormat::Format1bppIndexed);       // Define o formato de pixel (preto e branco).
    $options->setDpiX(300);                                              // Define a resolução horizontal.
    $options->setDpiY(300);                                              // Define a resolução vertical.
    
    // Converte o slide em uma imagem com as opções especificadas.
    $image = $slide->getImage($options);
    try {
        // Salva a imagem no formato TIFF.
        $image->save("output.tiff", ImageFormat::Tiff);
    } finally {
        $image->dispose();
    }
} finally {
    $presentation->dispose();
}

Converter Todos os Slides em Imagens

O Aspose.Slides permite converter todos os slides de uma apresentação em imagens, transformando efetivamente toda a apresentação em uma série de imagens.

Este exemplo de código demonstra como converter todos os slides de uma apresentação em imagens em PHP:

$scaleX = 2;
$scaleY = $scaleX;

$presentation = new Presentation("Presentation.pptx");
try {
    // Renderiza a apresentação em imagens slide por slide.
    for($i = 0; $i < java_values($presentation->getSlides()->size()) ; $i++) {
        // Controla slides ocultos (não renderiza slides ocultos).
        if (java_values($presentation->getSlides()->get_Item($i)->getHidden())) {
            continue;
        }

        // Converte o slide em uma imagem.
        $image = $presentation->getSlides()->get_Item($i)->getImage($scaleX, $scaleY);
        try {
            // Salva a imagem no formato JPEG.
            $image->save("Slide_" . $i . ".jpg", ImageFormat::Jpeg);
        } finally {
            $image->dispose();
        }
    }
} finally {
    $presentation->dispose();
}

FAQ

O Aspose.Slides suporta a renderização de slides com animações?

Não, o método getImage salva apenas uma imagem estática do slide, sem animações.

Os slides ocultos podem ser exportados como imagens?

Sim, os slides ocultos podem ser processados como os normais. Apenas certifique‑se de que eles estejam incluídos no loop de processamento.

As imagens podem ser salvas com sombras e efeitos?

Sim, o Aspose.Slides suporta a renderização de sombras, transparência e outros efeitos gráficos ao salvar slides como imagens.