Tworzenie miniatur kształtów prezentacji w JavaScript

Wprowadzenie

Aspose.Slides jest używany do tworzenia plików prezentacji, w których każda strona jest slajdem. Te slajdy można oglądać, otwierając pliki prezentacji w programie Microsoft PowerPoint. Czasami jednak deweloperzy mogą potrzebować wyświetlić obrazy kształtów osobno w przeglądarce obrazów. W takich przypadkach Aspose.Slides pomaga wygenerować miniatury obrazów kształtów slajdu. Sposób użycia tej funkcji opisano w tym artykule. Ten artykuł wyjaśnia, jak generować miniatury slajdów na różne sposoby:

  • Generowanie miniatury kształtu wewnątrz slajdu.
  • Generowanie miniatury kształtu slajdu z wymiarami zdefiniowanymi przez użytkownika.
  • Generowanie miniatury kształtu w granicach wyglądu kształtu.

Generowanie miniatur kształtów ze slajdów

Aby wygenerować miniaturę kształtu z dowolnego slajdu przy użyciu Aspose.Slides for Node.js via Java, wykonaj następujące kroki:

  1. Utwórz instancję klasy Presentation.
  2. Uzyskaj odniesienie do dowolnego slajdu, używając jego ID lub indeksu.
  3. Pobierz obraz miniatury kształtu z odwołanego slajdu w domyślnej skali.
  4. Zapisz obraz miniatury w wybranym formacie obrazu.

Poniższy przykładowy kod pokazuje, jak wygenerować miniaturę kształtu ze slajdu:

// Utwórz klasę Presentation, która reprezentuje plik prezentacji
var pres = new aspose.slides.Presentation("Thumbnail.pptx");
try {
    // Utwórz obraz w pełnej skali
    var slideImage = pres.getSlides().get_Item(0).getShapes().get_Item(0).getImage();
    // Zapisz obraz na dysku w formacie PNG
    try {
        slideImage.save("output.png", aspose.slides.ImageFormat.Png);
    } finally {
        if (slideImage != null) {
            slideImage.dispose();
        }
    }
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Generowanie miniatur kształtów z określonym współczynnikiem skalowania

Aby wygenerować miniaturę kształtu slajdu przy użyciu Aspose.Slides for Node.js via Java, wykonaj następujące kroki:

  1. Utwórz instancję klasy Presentation.
  2. Uzyskaj odniesienie do dowolnego slajdu, używając jego ID lub indeksu.
  3. Pobierz obraz miniatury kształtu z odwołanego slajdu z wymiarami określonymi przez użytkownika.
  4. Zapisz obraz miniatury w wybranym formacie obrazu.

Poniższy przykładowy kod pokazuje, jak wygenerować miniaturę kształtu na podstawie określonego współczynnika skalowania:

// Utwórz instancję klasy Presentation, która reprezentuje plik prezentacji
var pres = new aspose.slides.Presentation("Thumbnail.pptx");
try {
    // Utwórz obraz w pełnej skali
    var slideImage = pres.getSlides().get_Item(0).getShapes().get_Item(0).getImage(aspose.slides.ShapeThumbnailBounds.Shape, 1, 1);
    // Zapisz obraz na dysku w formacie PNG
    try {
        slideImage.save("output.png", aspose.slides.ImageFormat.Png);
    } finally {
        if (slideImage != null) {
            slideImage.dispose();
        }
    }
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Generowanie miniatury kształtu w granicach

Ta metoda tworzenia miniatur kształtów umożliwia deweloperom generowanie miniatury w granicach wyglądu kształtu. Uwzględnia wszystkie efekty kształtu. Wygenerowana miniatura kształtu jest ograniczona granicami slajdu. Aby wygenerować miniaturę kształtu slajdu w granicach jego wyglądu, wykonaj następujące kroki:

  1. Utwórz instancję klasy Presentation.
  2. Uzyskaj odniesienie do dowolnego slajdu, używając jego ID lub indeksu.
  3. Pobierz obraz miniatury odwołanego slajdu z granicami kształtu jako wygląd.
  4. Zapisz obraz miniatury w wybranym formacie obrazu.

Poniższy przykładowy kod opiera się na powyższych krokach:

// Utwórz instancję klasy Presentation, która reprezentuje plik prezentacji
var pres = new aspose.slides.Presentation("Thumbnail.pptx");
try {
    // Utwórz obraz w pełnej skali
    var slideImage = pres.getSlides().get_Item(0).getShapes().get_Item(0).getImage(aspose.slides.ShapeThumbnailBounds.Appearance, 1, 1);
    // Zapisz obraz na dysku w formacie PNG
    try {
        slideImage.save("output.png", aspose.slides.ImageFormat.Png);
    } finally {
        if (slideImage != null) {
            slideImage.dispose();
        }
    }
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Uzyskaj rzeczywiste granice wizualne kształtu

Parametry ramki Shape — metody getX(), getY(), getWidth() i getHeight() — opisują prostokąt przechowywany w modelu prezentacji. Zawartość faktycznie renderowana może wykraczać poza tę ramkę lub zajmować inny prostokąt wyrównany do osi. Obrót, obrysy, groty strzałek, układ i przepełnienie tekstu, generowana geometria SmartArt oraz inne efekty renderowania mogą zmienić zajmowany obszar.

Użyj Shape.getVisualBounds aby obliczyć ten zajęty obszar bez tworzenia obrazu. Metoda zwraca obiekt Rectangle2D.Float w współrzędnych slajdu. Zwrócony prostokąt nie jest przycięty do slajdu, więc jego współrzędne mogą być ujemne, gdy zawartość wykracza poza początek slajdu.

Poniższy przykład pobiera i porównuje ramkę oraz granice wizualne:

const presentation = new aspose.slides.Presentation("example.pptx");
try {
    const slide = presentation.getSlides().get_Item(0);
    const shape = slide.getShapes().get_Item(0);

    const visualBounds = shape.getVisualBounds();

    const frameBounds = {
        x: shape.getX(),
        y: shape.getY(),
        width: shape.getWidth(),
        height: shape.getHeight()
    };
    const visualBoundsValues = {
        x: visualBounds.getX(),
        y: visualBounds.getY(),
        width: visualBounds.getWidth(),
        height: visualBounds.getHeight()
    };

    console.log(
        `Frame bounds (x, y, width, height): ${frameBounds.x}, ${frameBounds.y}, ${frameBounds.width}, ${frameBounds.height}`
    );
    console.log(
        `Visual bounds (x, y, width, height): ${visualBoundsValues.x}, ${visualBoundsValues.y}, ${visualBoundsValues.width}, ${visualBoundsValues.height}`
    );
} finally {
    presentation.dispose();
}

Następny prostokąt może być użyty do wyrównania pobliskich kształtów do jego lewej, prawej, górnej lub dolnej krawędzi; rezerwowania wystarczającej przestrzeni w generowanym układzie; lub wykrywania treści poza dozwolonym regionem. Granice wizualne są szczególnie przydatne dla SmartArt, pól tekstowych, strzałek, obrazów, obróconych kształtów i grup kształtów, gdzie przechowywana ramka może nie odzwierciedlać pełnego efektu renderowania.

Używaj Shape.getVisualBounds gdy potrzebujesz współrzędnych do układu lub walidacji i nie potrzebujesz bitmapy. Używaj Shape.getImage gdy musisz renderować kształt. Z ShapeThumbnailBounds, ShapeThumbnailBounds.Shape określa rozmiar obrazu na podstawie granic kształtu, w tym ustawień obrysu, podczas gdy ShapeThumbnailBounds.Appearance określa rozmiar na podstawie wyglądu kształtu i ogranicza wynik do granic slajdu. Natomiast Shape.getVisualBounds zwraca tylko obliczony prostokąt i nie przycina go do slajdu.

FAQ

Jakie formaty obrazu można używać przy zapisywaniu miniatur kształtów?

PNG, JPEG, BMP, GIF, TIFF, i inne. Kształty można także wyeksportować jako wektorowy SVG zapisując ich zawartość jako SVG.

Jaka jest różnica między granicami Shape a Appearance podczas renderowania miniatury?

Shape używa geometrii kształtu; Appearance uwzględnia efekty wizualne (cienie, poświaty itp.).

Co się stanie, jeśli kształt jest oznaczony jako ukryty? Czy nadal zostanie wyrenderowany jako miniatura?

Ukryty kształt pozostaje częścią modelu i może być renderowany; flaga ukrycia wpływa na wyświetlanie pokazu slajdów, ale nie uniemożliwia generowania obrazu kształtu.

Czy grupowe kształty, wykresy, SmartArt i inne złożone obiekty są obsługiwane?

Tak. Każdy obiekt reprezentowany jako Shape (w tym GroupShape, Chart, i SmartArt) może być zapisany jako miniatura lub jako SVG.

Czy czcionki zainstalowane w systemie wpływają na jakość miniatur kształtów tekstowych?

Tak. Należy dostarczyć wymagane czcionki (lub skonfigurować podstawienia czcionek), aby uniknąć niepożądanych zamienników i przeskładania tekstu.