Miniaturansichten von Präsentationsformen in Java erstellen
Einleitung
Aspose.Slides for Java kann verwendet werden, um Präsentationsdateien zu erstellen, bei denen jede Seite einer Folie entspricht. Die Folien können angezeigt werden, indem die Präsentationsdateien mit Microsoft PowerPoint geöffnet werden. Entwickler müssen jedoch manchmal die Bilder der Formen separat in einem Bildbetrachter anzeigen. In solchen Fällen hilft Aspose.Slides for Java ihnen, Miniaturbilder der Folienformen zu erzeugen.
Dieser Artikel erklärt, wie Folien‑Miniaturbilder auf verschiedene Arten erzeugt werden können:
- Erzeugen einer Form‑Miniatur innerhalb einer Folie.
- Erzeugen einer Form‑Miniatur für eine Folienform mit benutzerdefinierten Abmessungen.
- Erzeugen einer Form‑Miniatur innerhalb der Grenzen des Aussehens einer Form.
Eine Form‑Miniatur aus einer Folie erzeugen
Um mit Aspose.Slides for Java eine Form‑Miniatur aus einer beliebigen Folie zu erzeugen, gehen Sie wie folgt vor:
- Erstellen Sie eine Instanz der Presentation‑Klasse.
- Holen Sie die Referenz einer beliebigen Folie über deren ID oder Index.
- Abrufen des Form‑Miniatur‑Bildes der referenzierten Folie in der Standardskala.
- Speichern Sie das Miniaturbild im gewünschten Bildformat.
Dieses Beispielcode zeigt, wie Sie eine Form‑Miniatur aus einer Folie erzeugen:
// Instanziiere eine Presentation-Klasse, die die Präsentationsdatei darstellt
Presentation pres = new Presentation("Thumbnail.pptx");
try {
// Erstelle ein vollskaliertes Bild
IImage slideImage = pres.getSlides().get_Item(0).getShapes().get_Item(0).getImage();
// Speichere das Bild im PNG-Format auf die Festplatte
try {
slideImage.save("output.png", ImageFormat.Png);
} finally {
if (slideImage != null) slideImage.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
Miniatur mit benutzerdefiniertem Skalierungsfaktor erzeugen
Um mit Aspose.Slides for Java die Form‑Miniatur einer Folie zu erzeugen, gehen Sie wie folgt vor:
- Erstellen Sie eine Instanz der Presentation‑Klasse.
- Holen Sie die Referenz einer beliebigen Folie über deren ID oder Index.
- Abrufen des Form‑Miniatur‑Bildes der referenzierten Folie mit benutzerdefinierten Abmessungen.
- Speichern Sie das Miniaturbild im gewünschten Bildformat.
Dieses Beispielcode zeigt, wie Sie eine Form‑Miniatur basierend auf einem definierten Skalierungsfaktor erzeugen:
// Instanziiere eine Presentation-Klasse, die die Präsentationsdatei darstellt
Presentation pres = new Presentation("Thumbnail.pptx");
try {
// Erstelle ein vollskaliertes Bild
IImage slideImage = pres.getSlides().get_Item(0).getShapes().get_Item(0).getImage(ShapeThumbnailBounds.Shape, 1, 1);
// Speichere das Bild im PNG-Format auf die Festplatte
try {
slideImage.save("output.png", ImageFormat.Png);
} finally {
if (slideImage != null) slideImage.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
Miniatur basierend auf den Grenzen des Form‑Aussehens erstellen
Diese Methode zum Erstellen von Miniaturbildern von Formen ermöglicht es Entwicklern, eine Miniatur innerhalb der Grenzen des Aussehens der Form zu erzeugen. Sie berücksichtigt alle Formeffekte. Das erzeugte Form‑Miniaturbild ist durch die Folienbegrenzungen eingeschränkt. Um eine Miniatur einer Folienform innerhalb ihrer Erscheinungsgrenze zu erzeugen, gehen Sie wie folgt vor:
- Erstellen Sie eine Instanz der Presentation‑Klasse.
- Holen Sie die Referenz einer beliebigen Folie über deren ID oder Index.
- Abrufen des Miniaturbildes der referenzierten Folie mit Form‑Grenzen als Erscheinungsbild.
- Speichern Sie das Miniaturbild im gewünschten Bildformat.
Dieser Beispielcode basiert auf den oben genannten Schritten:
// Instanziiere eine Presentation-Klasse, die die Präsentationsdatei darstellt
Presentation pres = new Presentation("Thumbnail.pptx");
try {
// Erstelle ein vollskaliertes Bild
IImage slideImage = pres.getSlides().get_Item(0).getShapes().get_Item(0).getImage(ShapeThumbnailBounds.Appearance, 1, 1);
// Speichere das Bild im PNG-Format auf die Festplatte
try {
slideImage.save("output.png", ImageFormat.Png);
} finally {
if (slideImage != null) slideImage.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
Ermitteln der tatsächlichen visuellen Grenzen einer Form
Die Rahmen‑Eigenschaften von IShape—ihre Methoden getX(), getY(), getWidth() und getHeight()—beschreiben das im Präsentationsmodell gespeicherte Rechteck. Der tatsächlich gerenderte Inhalt kann über diesen Rahmen hinausgehen oder ein anders ausgerichtetes Rechteck einnehmen. Drehungen, Konturen, Pfeilspitzen, Textlayout und Überlauf, generierte SmartArt‑Geometrie und andere Rendering‑Effekte können den belegten Bereich verändern.
Verwenden Sie Shape.getVisualBounds , um diesen belegten Bereich ohne Erzeugung eines Bildes zu berechnen. Die Methode liefert ein Rectangle2D.Float in Folienkoordinaten. Das zurückgegebene Rechteck ist nicht auf die Folie beschränkt, sodass seine Koordinaten negativ sein können, wenn der Inhalt über den Folienursprung hinausgeht.
Shape.getVisualBounds ist derzeit nicht im IShape-Interface deklariert. Daher sollten Sie die aus der Folien‑Form‑Sammlung erhaltene Form als Interface‑Wert beibehalten und erst beim Aufruf der Methode casten.
Das folgende Beispiel ermittelt und vergleicht den Rahmen und die visuellen Grenzen:
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();
}
Das gleiche Rectangle2D.Float kann verwendet werden, um benachbarte Formen an seiner linken, rechten, oberen oder unteren Kante auszurichten; in einem generierten Layout ausreichend Platz zu reservieren; oder Inhalte außerhalb eines erlaubten Bereichs zu erkennen. Visuelle Grenzen sind besonders nützlich für SmartArt, Textfelder, Pfeile, Bilder, gedrehte Formen und Gruppenformen, bei denen der gespeicherte Rahmen nicht das vollständig gerenderte Ergebnis repräsentiert.
Verwenden Sie Shape.getVisualBounds, wenn Sie Koordinaten für Layout oder Validierung benötigen und kein Bitmap benötigen. Verwenden Sie IShape.getImage wenn Sie die Form rendern müssen. Mit ShapeThumbnailBounds gibt ShapeThumbnailBounds.Shape die Bildgröße anhand der Form‑Grenzen, einschließlich Kontureinstellungen, während ShapeThumbnailBounds.Appearance die Größe anhand des Aussehens der Form bestimmt und das Ergebnis auf die Folienbegrenzungen beschränkt. Im Gegensatz dazu liefert Shape.getVisualBounds nur das berechnete Rechteck und schneidet es nicht an die Folie zu.
FAQ
Welche Bildformate können beim Speichern von Form‑Miniaturbildern verwendet werden?
PNG, JPEG, BMP, GIF, TIFF, und weitere. Formen können auch als Vektor‑SVG exportiert werden, indem der Inhalt der Form als SVG gespeichert wird.
Was ist der Unterschied zwischen Shape‑ und Appearance‑Grenzen beim Rendern einer Miniatur?
Shape verwendet die Geometrie der Form; Appearance berücksichtigt die visuellen Effekte (Schatten, Leuchten usw.).
Was passiert, wenn eine Form als versteckt markiert ist? Wird sie trotzdem als Miniatur gerendert?
Eine versteckte Form bleibt Teil des Modells und kann gerendert werden; die versteckte Markierung beeinflusst die Slideshow‑Anzeige, verhindert jedoch nicht die Erzeugung des Bildes der Form.
Werden Gruppenformen, Diagramme, SmartArt und andere komplexe Objekte unterstützt?
Ja. Jedes Objekt, das als Shape (einschließlich GroupShape, Chart, und SmartArt) dargestellt wird, kann als Miniaturbild oder als SVG gespeichert werden.
Beeinflussen systemweit installierte Schriftarten die Qualität von Miniaturbildern für Textformen?
Ja. Sie sollten die erforderlichen Schriftarten bereitstellen (oder die Schriftart‑Ersetzungen konfigurieren), um unerwünschte Fallbacks und Textumlauf zu vermeiden.