سوالات متداول
سوالات متداول
چگونه Aspose.Slides FOSS را نصب کنم؟
وابستگی Maven را به pom.xml خود اضافه کنید. جاوا ۲۱ یا بالاتر مورد نیاز است.
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>نصب را تأیید کنید:
import org.aspose.slides.foss.Presentation;
Presentation prs = new Presentation();
try {
System.out.println("Slides: " + prs.getSlides().size());
} finally {
prs.dispose();
}نیازی به Microsoft Office یا سایر زمانهای اجرای سیستم نیست.
چرا باید dispose() را بر روی Presentation فراخوانی کنم؟
کلاس Presentation منابع داخلی بسته OPC را مدیریت میکند. بدون فراخوانی dispose()، این منابع آزاد نمیشوند که میتواند منجر به نشت حافظه یا قفل شدن فایلها شود. همیشه از try-finally استفاده کنید:
Presentation prs = new Presentation("input.pptx");
try {
// work here
prs.save("output.pptx", SaveFormat.PPTX);
} finally {
prs.dispose();
}بهجای آن، از try-with-resources استفاده کنید زیرا Presentation رابط AutoCloseable را پیادهسازی میکند:
try (Presentation prs = new Presentation("input.pptx")) {
prs.save("output.pptx", SaveFormat.PPTX);
}به چه فرمتهای فایلی میتوانم ذخیره کنم؟
enum SaveFormat ثابتهایی برای بسیاری از فرمتها — PPTX، PDF، HTML، SVG، JPEG، PNG و دیگران — تعریف میکند تا با نسخه تجاری سازگاری API داشته باشد. در زمان اجرا در این نسخه FOSS، تمام overloadهای save() آرگومان فرمت را نادیده میگیرند و همیشه خروجی PPTX مینویسند. ارسال SaveFormat.PDF به درستی کامپایل میشود اما فایلی از نوع .pptx تولید میکند، نه .pdf.
import org.aspose.slides.foss.export.SaveFormat;
prs.save("output.pptx", SaveFormat.PPTX);صادرات به فرمتهای غیر‑PPTX بهصورت عملکردی در این نسخه موجود نیست. از SaveFormat.PPTX برای تمام عملیات ذخیرهسازی استفاده کنید.
آیا میتوانم فایلهای .ppt (PowerPoint قدیمی 97-2003) را باز کنم؟
نه. فقط فایلهای .pptx (Office Open XML) پشتیبانی میشوند. قالب باینری .ppt قدیمی توسط این کتابخانه پردازش نمیشود.
چگونه به اسلایدها دسترسی پیدا کنم؟
اسلایدها یک مجموعه صفر‑پایه هستند که از طریق prs.getSlides() قابل دسترسی هستند:
ISlide firstSlide = prs.getSlides().get(0);
int slideCount = prs.getSlides().size();چگونه یک اسلاید دوم اضافه کنم؟
از prs.getSlides().addEmptySlide() با یک طرح استفاده کنید:
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);
}چگونه رنگ پسزمینه اسلاید را تنظیم کنم؟
رنگ پسزمینه اسلاید پشتیبانی نمیشود در این نسخه از Aspose.Slides FOSS. هیچ متد getBackground() روی ISlide یا هر کلاس دیگری در این کتابخانه وجود ندارد. پسزمینه اسلاید هنگام ایجاد ارائه از قالب آن ثابت میشود. ممکن است نسخهٔ آینده کنترل پسزمینه را اضافه کند.
چگونه از NullableBool استفاده کنم؟
NullableBool یک enum سهحالی است که برای ویژگیهای قالببندی استفاده میشود. برای ویژگیهای بولد، ایتالیک و مشابه از NullableBool.TRUE (نه true جاوا) استفاده کنید:
import org.aspose.slides.foss.NullableBool;
fmt.setFontBold(NullableBool.TRUE);
fmt.setFontItalic(NullableBool.FALSE);چرا تنظیم رنگ متن هیچ تأثیری ندارد؟
شما باید قبل از اختصاص رنگ، fillType را به FillType.SOLID تنظیم کنید:
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));آیا میتوانم از نمودارها یا SmartArt استفاده کنم؟
خیر. نمودارها، SmartArt، اشیای OLE، انیمیشنها، انتقالها، پیوندهای فراگیر، ماکروهای VBA و امضاهای دیجیتال در این نسخه پیادهسازی نشدهاند و خطای UnsupportedOperationException را ایجاد میکنند.
آیا کتابخانه ایمن برای استفاده در چند رشته است؟
هر شیء Presentation مستقل است. ایجاد و استفاده از نمونههای جداگانه Presentation از رشتههای جداگانه ایمن است به شرطی که یک شیء Presentation را بدون همگامسازی خارجی بین رشتهها به اشتراک نگذارید.
چگونه یک تصویر را جاسازی کنم؟
بایتهای تصویر را بخوانید و به prs.getImages() اضافه کنید، سپس یک 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);