Converter slides de apresentação em imagens no Node.js via .NET

Visão geral

Aspose.Slides for Node.js via .NET renderiza slides de apresentações PowerPoint e OpenDocument como imagens, por exemplo para exibir pré‑visualizações de slides em uma página web. Este artigo mostra duas maneiras de escolher o tamanho da imagem: um fator de escala relativo ao tamanho do slide e um tamanho exato em pixels. Ambos os exemplos salvam arquivos PNG.

Os exemplos esperam uma apresentação chamada sample.pptx na pasta do projeto que você configurou em Installation. Qualquer apresentação PowerPoint serve. Salve cada exemplo como um arquivo .js na pasta do projeto e execute‑o a partir dessa pasta com node.

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

  1. Abra a apresentação com o construtor Presentation.
  2. Obtenha um slide da coleção slides com get(index). Os índices começam em 0.
  3. Renderize o slide com getImageWithScale ou getImageWithImageSize. Na referência da API .NET, ambos são sobrecargas de Slide.GetImage. Eles retornam um objeto de imagem que corresponde a IImage.
  4. Salve a imagem com seu método save e um valor ImageFormat, e então chame seu método dispose.

Converter Cada Slide em uma Imagem PNG

getImageWithScale recebe um fator de escala horizontal e vertical. Em uma escala de 1, um ponto do slide se torna um pixel da imagem. O exemplo a seguir renderiza cada slide em uma escala de 2:

const { Presentation, ImageFormat } = require("aspose.slides.via.net");

// Uma escala de 1 renderiza um pixel por ponto; 2 dobra a largura e a altura.
const scaleX = 2;
const scaleY = scaleX;

const presentation = new Presentation("sample.pptx");
try {
    const slideCount = presentation.slides.count;
    for (let index = 0; index < slideCount; index++) {
        const slide = presentation.slides.get(index);
        const image = slide.getImageWithScale(scaleX, scaleY);
        try {
            image.save(`slide_${index + 1}.png`, ImageFormat.Png);
        } finally {
            image.dispose();
        }
    }
    console.log(`Saved ${slideCount} images`);
} finally {
    presentation.dispose();
}

O script grava um arquivo por slide, slide_1.png, slide_2.png e assim por diante, numerados a partir de 1. Para uma apresentação 16:9 com slides de 960 × 540 pontos, cada imagem tem 1920 × 1080 pixels. Slides ocultos também são renderizados; para ignorá‑los, verifique a propriedade hidden do slide. Cada imagem é descartada em seu próprio bloco finally, que a libera antes que o próximo slide seja renderizado. Sem licença, as imagens também exibem uma marca d’água de avaliação; veja Licensing.

Converter um Slide em uma Imagem com um Tamanho Específico

getImageWithImageSize recebe um objeto com width e height em pixels. O exemplo a seguir renderiza o primeiro slide com 1280 pixels de largura e calcula a altura a partir do tamanho do slide, de modo que a imagem mantém a proporção do slide:

const { Presentation, ImageFormat } = require("aspose.slides.via.net");

const imageWidth = 1280;

const presentation = new Presentation("sample.pptx");
try {
    const slideSize = presentation.slideSize.size;
    const imageHeight = Math.round(imageWidth * slideSize.height / slideSize.width);

    const slide = presentation.slides.get(0);
    const image = slide.getImageWithImageSize({ width: imageWidth, height: imageHeight });
    try {
        image.save("slide_1_1280px.png", ImageFormat.Png);
    } finally {
        image.dispose();
    }
    console.log(`Saved a ${imageWidth} x ${imageHeight} image`);
} finally {
    presentation.dispose();
}

A propriedade slideSize.size retorna a largura e a altura do slide em pontos. Para uma apresentação 16:9, o script exibe Saved a 1280 x 720 image e grava slide_1_1280px.png; para uma apresentação 4:3, a imagem tem 1280 × 960 pixels.

FAQ

Por que a imagem de getImage sem argumentos é tão pequena?

Sem argumentos, getImage renderiza o slide em 20% do seu tamanho em pontos, de modo que um slide de 960 × 540 pontos se torna uma imagem de 192 × 108 pixels. Use getImageWithScale ou getImageWithImageSize para escolher o tamanho.

Como salvo JPEG ou outros formatos de imagem?

Passe outro valor ImageFormat para o método save da imagem, por exemplo image.save("slide_1.jpg", ImageFormat.Jpeg). O formato vem do valor ImageFormat, não da extensão do arquivo, portanto mantenha os dois consistentes.

Por que o texto nas imagens parece diferente no Linux?

Aspose.Slides só pode usar fontes que estejam instaladas na máquina que renderiza os slides. Quando uma apresentação utiliza uma fonte que está ausente, como a Calibri em um servidor Linux típico, o Aspose.Slides usa uma fonte instalada em seu lugar, o que pode alterar a aparência do texto e a quebra de linhas. Instale as fontes que suas apresentações utilizam para obter as mesmas imagens que no Windows.

Por que getThumbnailWithImageSize falha com um TypeError?

O README do pacote usa getThumbnailWithImageSize, mas o pacote não possui métodos getThumbnail. Use getImageWithImageSize em vez disso; ele aceita o mesmo argumento { width, height }.