Najczęściej zadawane pytania
Najczęściej zadawane pytania
Jak zainstalować Aspose.Slides FOSS?
Dodaj zależność Maven do swojego pom.xml. Wymagana jest Java 21 lub nowsza.
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Sprawdź instalację:
import org.aspose.slides.foss.Presentation;
Presentation prs = new Presentation();
try {
System.out.println("Slides: " + prs.getSlides().size());
} finally {
prs.dispose();
}Nie wymaga Microsoft Office ani innych środowisk uruchomieniowych systemu.
Dlaczego muszę wywołać dispose() na Presentation?
Klasa Presentation zarządza wewnętrznymi zasobami pakietu OPC. Bez wywołania dispose() te zasoby nie są zwalniane, co może powodować wycieki pamięci lub blokady plików. Zawsze używaj try-finally:
Presentation prs = new Presentation("input.pptx");
try {
// work here
prs.save("output.pptx", SaveFormat.PPTX);
} finally {
prs.dispose();
}Alternatywnie, użyj try-with-resources, ponieważ Presentation implementuje AutoCloseable:
try (Presentation prs = new Presentation("input.pptx")) {
prs.save("output.pptx", SaveFormat.PPTX);
}Do jakich formatów plików mogę zapisać?
Enum SaveFormat definiuje stałe dla wielu formatów — PPTX, PDF, HTML, SVG, JPEG, PNG i inne — w celu zapewnienia zgodności API z edycją komercyjną. W czasie wykonywania w tej edycji FOSS wszystkie przeciążenia save() ignorują argument formatu i zawsze zapisują wyjście w formacie PPTX. Przekazanie SaveFormat.PDF kompiluje się poprawnie, ale generuje plik .pptx, a nie .pdf.
import org.aspose.slides.foss.export.SaveFormat;
prs.save("output.pptx", SaveFormat.PPTX);Eksport do formatów innych niż PPTX nie jest dostępny funkcjonalnie w tej edycji. Użyj SaveFormat.PPTX do wszystkich operacji zapisu.
Czy mogę otworzyć .ppt (stare PowerPoint 97-2003) pliki?
Nie. Tylko pliki .pptx (Office Open XML) są obsługiwane. Starszy format binarny .ppt nie jest obsługiwany przez tę bibliotekę.
Jak mogę uzyskać dostęp do slajdów?
Slajdy są kolekcją zerowo‑indeksowaną dostępną poprzez prs.getSlides():
ISlide firstSlide = prs.getSlides().get(0);
int slideCount = prs.getSlides().size();Jak dodać drugi slajd?
Użyj prs.getSlides().addEmptySlide() z układem:
try (Presentation prs = new Presentation()) {
ILayoutSlide layout = prs.getLayoutSlides().get(0);
prs.getSlides().addEmptySlide(layout);
ISlide slide2 = prs.getSlides().get(1);
prs.save("two-slides.pptx", SaveFormat.PPTX);
}Jak ustawić kolor tła slajdu?
Kolor tła slajdu nie jest obsługiwany w tej edycji Aspose.Slides FOSS. Nie ma metody getBackground() w ISlide ani w żadnej innej klasie w tej bibliotece. Tło slajdu jest ustalone, gdy prezentacja jest tworzona z szablonu. Przyszła edycja może dodać kontrolę tła.
Jak używać NullableBool?
NullableBool jest wyliczeniem trójstanowym używanym do właściwości formatowania. Użyj NullableBool.TRUE (nie Java’owego true) do pogrubienia, kursywy i podobnych właściwości:
import org.aspose.slides.foss.NullableBool;
fmt.setFontBold(NullableBool.TRUE);
fmt.setFontItalic(NullableBool.FALSE);Dlaczego ustawienie koloru tekstu nie ma żadnego efektu?
Musisz także ustawić fillType na FillType.SOLID przed przypisaniem koloru:
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.drawing.Color;
fmt.getFillFormat().setFillType(FillType.SOLID);
fmt.getFillFormat().getSolidFillColor().setColor(Color.fromArgb(255, 200, 0, 0));Czy mogę używać wykresów lub SmartArt?
Nie. Wykresy, SmartArt, obiekty OLE, animacje, przejścia, hiperłącza, makra VBA i podpisy cyfrowe nie są zaimplementowane w tej edycji i powodują UnsupportedOperationException.
Czy biblioteka jest bezpieczna wątkowo?
Każdy obiekt Presentation jest niezależny. Tworzenie i używanie oddzielnych instancji Presentation z różnych wątków jest bezpieczne, pod warunkiem że nie udostępniasz jednego obiektu Presentation pomiędzy wątkami bez zewnętrznej synchronizacji.
Jak osadzić obraz?
Odczytaj bajty obrazu i dodaj je do prs.getImages(), a następnie utwórz PictureFrame:
import org.aspose.slides.foss.ShapeType;
byte[] imageData = java.nio.file.Files.readAllBytes(
java.nio.file.Paths.get("logo.png")
);
IPPImage image = prs.getImages().addImage(imageData);
slide.getShapes().addPictureFrame(ShapeType.RECTANGLE, 50, 50, 200, 150, image);