Java'da Sunumları Kaydetme
Aspose.Slides FOSS for Java, sunumları yalnızca .pptx formatında prs.save(path, SaveFormat.PPTX) kullanarak kaydeder. Bu kılavuz, doğru kaydetme desenini, farklı bir yola kaydetmeyi ve yaygın kaydetme ile ilgili hataları kapsar.
Adım Adım Kılavuz
Adım 1: Maven Bağımlılığını Ekleyin
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Adım 2: Sunumu Aç veya Oluştur
Her zaman try-with-resources kullanın. Kaydetme çağrısı try bloğu içinde gerçekleşmelidir.
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
// Create new
try (Presentation prs = new Presentation()) {
prs.save("new.pptx", SaveFormat.PPTX);
}
// Open existing
try (Presentation prs = new Presentation("input.pptx")) {
prs.save("output.pptx", SaveFormat.PPTX);
}Adım 3: Tüm Değişikliklerden Sonra Kaydet
save() çağrısını, tüm değişiklikler tamamlandıktan sonra, try bloğu içinde son ifade olarak yerleştirin.
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
IAutoShape shape = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 50, 300, 100
);
shape.addTextFrame("Hello, World!");
prs.save("output.pptx", SaveFormat.PPTX);
}Adım 4: Farklı Bir Yola Kaydet
Orijinali değiştirmeden yeni bir dosya oluşturmak için farklı bir çıktı yolu belirtin:
try (Presentation prs = new Presentation("template.pptx")) {
// modify ...
prs.save("customized.pptx", SaveFormat.PPTX);
}template.pptx dosyası değiştirilmez; customized.pptx oluşturulur (veya zaten varsa üzerine yazılır).
Adım 5: Çıktıyı Doğrula
try bloğu çıktığında, dosya tamamlanır ve kapanır. Var olup olmadığını kontrol edin:
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
Path output = Paths.get("output.pptx");
System.out.println("Saved: " + Files.exists(output)
+ ", size: " + Files.size(output) + " bytes");Desteklenen Kaydetme Formatı
| Biçim | Enum Değeri | Destekleniyor |
|---|---|---|
| PPTX (Office Open XML) | SaveFormat.PPTX | Evet |
| N/A | Hayır | |
| HTML | N/A | Hayır |
| SVG | N/A | Hayır |
| PNG / JPEG | N/A | Hayır |
| ODP (OpenDocument) | N/A | Hayır |
Sadece PPTX tam olarak desteklenir. Başka herhangi bir SaveFormat değerini prs.save(path, format)‘ye geçirirseniz sessizce PPTX olarak kaydedilir — istisna atılmaz ve format argümanı yok sayılır. UnsupportedOperationException yalnızca prs.save(ISaveOptions options) tarafından atılır, format temelli aşırı yüklemeler tarafından değil.
Yaygın Sorunlar ve Çözümler
java.io.IOException: Permission denied
Çıktı dosyası başka bir uygulamada açık (ör. PowerPoint dosyayı açmış). Kaydetmeden önce dosyayı diğer uygulamalarda kapatın.
Dosya oluşturuldu ancak boş veya bozuk görünüyor
prs.save()‘nin try bloğu içinde çağrıldığından emin olun, sonrasında değil. try-with-resources bloğu sona erdiğinde, Presentation nesnesi serbest bırakılır ve sonraki çağrılar başarısız olur.
UnsupportedOperationException kaydederken
Bu, prs.save(ISaveOptions options) kullanıldığında meydana gelir — ISaveOptions tabanlı aşırı yükleme uygulanmamıştır. Not: bir non-PPTX SaveFormat‘yi prs.save(path, format)‘ye geçirmek fırlatmaz bu istisna; sessizce PPTX olarak kaydeder.
Sıkça Sorulan Sorular
Açtığım aynı dosyaya kaydedebilir miyim?
Evet. Aynı yola kaydetmek, orijinal dosyanın üzerine yazar:
try (Presentation prs = new Presentation("deck.pptx")) {
// modify ...
prs.save("deck.pptx", SaveFormat.PPTX); // overwrites original
}Bir OutputStream’e kaydedebilir miyim?
Evet. save() yöntemi bir OutputStream kabul eder:
import java.io.FileOutputStream;
try (Presentation prs = new Presentation();
FileOutputStream fos = new FileOutputStream("output.pptx")) {
prs.save(fos, SaveFormat.PPTX);
}Kaydetmek, değiştirmediğim içeriği korur mu?
Evet. Orijinal dosyadan gelen bilinmeyen XML bölümleri kelimesi kelimesine korunur. Kütüphane yalnızca anladığı belge modelinin bölümlerini serileştirir ve tanımadığı XML’leri olduğu gibi geçirir.