Tworzenie miniatur kształtów prezentacji w Javie
Wprowadzenie
Aspose.Slides for Java można używać do tworzenia plików prezentacji, w których każda strona odpowiada slajdowi. Slajdy można przeglądać, otwierając pliki prezentacji w programie Microsoft PowerPoint. Jednak deweloperzy czasami potrzebują wyświetlić obrazy kształtów osobno w przeglądarce obrazów. W takich sytuacjach Aspose.Slides for Java pomaga im generować miniatury obrazów kształtów slajdu.
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 o wymiarach zdefiniowanych przez użytkownika.
- Generowanie miniatury kształtu w granicach wyglądu kształtu.
Generowanie miniatury kształtu ze slajdu
Aby wygenerować miniaturę kształtu z dowolnego slajdu przy użyciu Aspose.Slides for Java, wykonaj następujące kroki:
- Utwórz instancję klasy Presentation.
- Uzyskaj odwołanie do dowolnego slajdu używając jego identyfikatora lub indeksu.
- Pobierz miniaturę obrazu kształtu odwołanego slajdu w domyślnej skali.
- Zapisz obraz miniatury w preferowanym formacie obrazu.
Poniższy przykład kodu pokazuje, jak wygenerować miniaturę kształtu ze slajdu:
// Utwórz instancję klasy Presentation, która reprezentuje plik prezentacji
Presentation pres = new Presentation("Thumbnail.pptx");
try {
// Utwórz obraz w pełnej skali
IImage slideImage = pres.getSlides().get_Item(0).getShapes().get_Item(0).getImage();
// Zapisz obraz na dysku w formacie PNG
try {
slideImage.save("output.png", ImageFormat.Png);
} finally {
if (slideImage != null) slideImage.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
Generowanie miniatury z czynnikiem skalowania określonym przez użytkownika
Aby wygenerować miniaturę kształtu slajdu przy użyciu Aspose.Slides for Java, wykonaj następujące kroki:
- Utwórz instancję klasy Presentation.
- Uzyskaj odwołanie do dowolnego slajdu używając jego identyfikatora lub indeksu.
- Pobierz miniaturę obrazu kształtu odwołanego slajdu z wymiarami określonymi przez użytkownika.
- Zapisz obraz miniatury w preferowanym formacie obrazu.
Poniższy przykład kodu pokazuje, jak wygenerować miniaturę kształtu na podstawie zdefiniowanego czynnika skalowania:
// Utwórz instancję klasy Presentation, która reprezentuje plik prezentacji
Presentation pres = new Presentation("Thumbnail.pptx");
try {
// Utwórz obraz w pełnej skali
IImage slideImage = pres.getSlides().get_Item(0).getShapes().get_Item(0).getImage(ShapeThumbnailBounds.Shape, 1, 1);
// Zapisz obraz na dysku w formacie PNG
try {
slideImage.save("output.png", ImageFormat.Png);
} finally {
if (slideImage != null) slideImage.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
Utworzenie miniatury wyglądu kształtu opartej na granicach
Ta metoda tworzenia miniatur kształtów pozwala programistom wygenerować miniaturę w granicach wyglądu kształtu. Uwzględnia wszystkie efekty kształtu. Wygenerowana miniatura kształtu jest ograniczona przez granice slajdu. Aby wygenerować miniaturę kształtu slajdu w granicach jego wyglądu, wykonaj następujące kroki:
- Utwórz instancję klasy Presentation.
- Uzyskaj odwołanie do dowolnego slajdu używając jego identyfikatora lub indeksu.
- Pobierz obraz miniatury odwołanego slajdu, używając granic kształtu jako wyglądu.
- Zapisz obraz miniatury w preferowanym formacie obrazu.
Poniższy przykład kodu opiera się na powyższych krokach:
// Utwórz instancję klasy Presentation, która reprezentuje plik prezentacji
Presentation pres = new Presentation("Thumbnail.pptx");
try {
// Utwórz obraz w pełnej skali
IImage slideImage = pres.getSlides().get_Item(0).getShapes().get_Item(0).getImage(ShapeThumbnailBounds.Appearance, 1, 1);
// Zapisz obraz na dysku w formacie PNG
try {
slideImage.save("output.png", ImageFormat.Png);
} finally {
if (slideImage != null) slideImage.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
Uzyskanie rzeczywistych granic wizualnych kształtu
Właściwości ramki interfejsu IShape — metody getX(), getY(), getWidth() i getHeight() — opisują prostokąt przechowywany w modelu prezentacji. Rzeczywista renderowana zawartość może wykraczać poza tę ramkę lub zajmować inny prostokąt wyrównany do osi. Obrót, kontury, grotki 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 układzie współrzędnych slajdu. Zwrócony prostokąt nie jest przycinany do slajdu, więc jego współrzędne mogą być ujemne, gdy zawartość wykracza poza początek slajdu.
Shape.getVisualBounds nie jest obecnie zadeklarowane w interfejsie IShape. Dlatego zachowaj kształt pobrany z kolekcji kształtów slajdu jako wartość interfejsu i dokonuj rzutowania tylko przy wywoływaniu tej metody.
Poniższy przykład pobiera i porównuje ramkę oraz granice wizualne:
Presentation presentation = new Presentation("example.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IShape shape = slide.getShapes().get_Item(0);
Rectangle2D.Float visualBounds = ((Shape) shape).getVisualBounds();
Rectangle2D.Float frameBounds = new Rectangle2D.Float(
shape.getX(), shape.getY(), shape.getWidth(), shape.getHeight());
System.out.println("Frame bounds: " + frameBounds);
System.out.println("Visual bounds: " + visualBounds);
} finally {
presentation.dispose();
}
Ten sam Rectangle2D.Float może być użyty do wyrównywania pobliskich kształtów do jego lewej, prawej, górnej lub dolnej krawędzi; rezerwowania wystarczającej przestrzeni w generowanym układzie; lub wykrywania zawartości poza dozwolonym obszarem. 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 wyniku renderowania.
Użyj Shape.getVisualBounds gdy potrzebujesz współrzędnych do układu lub walidacji i nie potrzebujesz bitmapy. Użyj IShape.getImage gdy musisz wyrenderować kształt. Z ShapeThumbnailBounds, ShapeThumbnailBounds.Shape określa rozmiar obrazu na podstawie granic kształtu, łącznie z ustawieniami konturu, 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 mogą być również eksportowane jako wektorowy SVG poprzez zapisanie ich zawartości jako SVG.
Jaka jest różnica między granicami Shape a Appearance przy renderowaniu miniatury?
Shape wykorzystuje geometrię kształtu; Appearance uwzględnia efekty wizualne (cienie, poświaty itp.).
Co się stanie, jeśli kształt jest oznaczony jako ukryty? Czy wciąż 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 fonty zainstalowane w systemie wpływają na jakość miniatur tekstowych kształtów?
Tak. Należy dostarczyć wymagane czcionki (lub skonfigurować podstawienia czcionek), aby uniknąć niepożądanych zamienników i przeskładowania tekstu.