Convertir les diapositives de présentation en images dans Node.js via .NET
Vue d’ensemble
Aspose.Slides for Node.js via .NET rend les diapositives des présentations PowerPoint et OpenDocument sous forme d’images, par exemple pour afficher des aperçus de diapositives sur une page Web. Cet article montre deux méthodes pour choisir la taille de l’image : un facteur d’échelle relatif à la taille de la diapositive, et une taille exacte en pixels. Les deux exemples enregistrent des fichiers PNG.
Les exemples supposent une présentation nommée sample.pptx dans le dossier du projet que vous avez configuré dans Installation. Toute présentation PowerPoint convient. Enregistrez chaque exemple sous forme de fichier .js dans le dossier du projet et exécutez‑le depuis ce dossier avec node.
Note
Aspose.Slides for Node.js via .NET n’a pas de référence d’API propre. Elle reflète l’API Aspose.Slides for .NET avec des noms camelCase, de sorte que les liens API de cet article mènent aux classes et membres correspondants dans la référence d’API Aspose.Slides for .NET.Pour convertir une diapositive en image, suivez ces étapes :
- Ouvrez la présentation avec le constructeur Presentation.
- Récupérez une diapositive depuis la collection slides avec
get(index). Les index commencent à 0. - Rendu de la diapositive avec
getImageWithScaleougetImageWithImageSize. Dans la référence d’API .NET, les deux sont des surcharges de Slide.GetImage. Elles renvoient un objet image qui correspond à IImage. - Enregistrez l’image avec sa méthode save et une valeur ImageFormat, puis appelez sa méthode
dispose.
Convertir chaque diapositive en image PNG
getImageWithScale prend un facteur d’échelle horizontal et vertical. À une échelle de 1, un point de la diapositive devient un pixel de l’image. L’exemple suivant rend chaque diapositive à une échelle de 2 :
const { Presentation, ImageFormat } = require("aspose.slides.via.net");
// Une échelle de 1 rend un pixel par point ; 2 double la largeur et la hauteur.
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();
}
Le script écrit un fichier par diapositive, slide_1.png, slide_2.png, etc., numérotés à partir de 1. Pour une présentation 16 : 9 dont les diapositives mesurent 960 × 540 points, chaque image fait 1920 × 1080 pixels. Les diapositives masquées sont également rendues ; pour les ignorer, vérifiez la propriété hidden de la diapositive. Chaque image est libérée dans son propre bloc finally, ce qui la libère avant que la diapositive suivante ne soit rendue. Sans licence, les images affichent également un filigrane d’évaluation ; voir Licensing.
Convertir une diapositive en image d’une taille donnée
getImageWithImageSize prend un objet avec width et height en pixels. L’exemple suivant rend la première diapositive avec une largeur de 1280 pixels et calcule la hauteur à partir de la taille de la diapositive, de façon à conserver le rapport d’aspect :
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();
}
La propriété slideSize.size renvoie la largeur et la hauteur de la diapositive en points. Pour une présentation 16 : 9, le script affiche Saved a 1280 x 720 image et écrit slide_1_1280px.png ; pour une présentation 4 : 3, l’image fait 1280 × 960 pixels.
FAQ
Pourquoi l’image provenant de getImage sans arguments est‑elle si petite ?
Sans arguments, getImage rend la diapositive à 20 % de sa taille en points, de sorte qu’une diapositive de 960 × 540 points devient une image de 192 × 108 pixels. Utilisez getImageWithScale ou getImageWithImageSize pour choisir la taille.
Comment enregistrer au format JPEG ou d’autres formats d’image ?
Passez une autre valeur ImageFormat à la méthode save de l’image, par exemple image.save("slide_1.jpg", ImageFormat.Jpeg). Le format provient de la valeur ImageFormat, pas de l’extension du fichier, donc gardez les deux cohérents.
Pourquoi le texte dans les images apparaît‑il différemment sous Linux ?
Aspose.Slides ne peut utiliser que les polices installées sur la machine qui rend les diapositives. Lorsqu’une présentation utilise une police manquante, comme Calibri sur un serveur Linux typique, Aspose.Slides remplace cette police par une police installée, ce qui peut modifier l’apparence du texte et le point de césure des lignes. Installez les polices utilisées par vos présentations pour obtenir les mêmes images qu sous Windows.
Pourquoi getThumbnailWithImageSize échoue avec une TypeError ?
Le README du package utilise getThumbnailWithImageSize, mais le package ne propose aucune méthode getThumbnail. Utilisez getImageWithImageSize à la place ; elle accepte le même argument { width, height }.