Python üzerinden Java ile Sunumları Açma

Giriş

Aspose.Slides for Python via Java dosyalardan ve akışlardan PowerPoint ve OpenDocument sunumlarını yükleyebilir. Bir sunum yüklendikten sonra yapısını inceleyebilir, slaytları düzenleyebilir, kaynakları yönetebilir ve orijinal ya da başka bir desteklenen formatta kaydedebilirsiniz.

Yükleme davranışı, LoadOptions sınıfı aracılığıyla özelleştirilebilir. Örneğin, bir açma şifresi sağlayabilir, büyük ikili nesneleri Java yığını dışına tutabilir, dış kaynakları kontrol edebilir veya gömülü ikili verileri atlayabilirsiniz.

Sunumları Açma

Bir dosya veya akış yüklendikten sonra, uygulamanızın nasıl işlem yapacağını belirlemek için orijinal sunum formatını belirleyebilirsiniz.

Mevcut bir sunumu açmak için dosya yolunu Presentation yapıcı metoduna geçirin. Sunumu kullandıktan sonra, dosya tutamaçları, geçici veriler ve diğer kaynakların hızlıca serbest bırakılması için sunumu kapatın.

Aşağıdaki Python örneği, bir sunumu nasıl açıp slayt sayısını alacağınızı gösterir:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation

presentation = Presentation("sample.pptx")
try:
    print("Slide count:", presentation.getSlides().size())
finally:
    presentation.dispose()

Şifreli Sunumları Açma

Açma şifresi, sunum içeriğini şifreler. Tam sunumu yüklemek için doğru şifreyi LoadOptions.setPassword metoduna geçirip bu seçenekleri Presentation yapıcı metoduna verin. Şifre eksik ya da hatalı olduğunda yükleme başarısız olur.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import LoadOptions, Presentation

load_options = LoadOptions()
load_options.setPassword("open_password")

presentation = Presentation("encrypted-presentation.pptx", load_options)
try:
    print("Slide count:", presentation.getSlides().size())
finally:
    presentation.dispose()

Şifre algılama, doğrulama ve şifreleme iş akışları için Şifreli Sunumlar bölümüne bakın. Şifreli bir sunum, kasıtlı olarak genel belge özellikleriyle kaydedildiyse, bu özellikler şifresiz okunabilir; bununla ilgili bilgiye Sunum Özelliklerini Yönetme bölümünden ulaşabilirsiniz.

Büyük Sunumları Açma

LoadOptions.getBlobManagementOptions yöntemi, Aspose.Slides’in resimler, ses ve video gibi büyük ikili nesneleri nasıl ele alacağını kontrol eden seçenekleri döndürür. Kaynak dosyayı kilitli tutabilir, geçici dosyalara izin verebilir ve bellek içinde tutulan BLOB verisinin miktarını sınırlayabilirsiniz.

Aşağıdaki Python kodu, büyük bir sunumu (örneğin 2 GB) yüklemeyi gösterir:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import LoadOptions, Presentation, PresentationLockingBehavior, SaveFormat

file_path = "large-presentation.pptx"

load_options = LoadOptions()
load_options.getBlobManagementOptions().setPresentationLockingBehavior(PresentationLockingBehavior.KeepLocked)
load_options.getBlobManagementOptions().setTemporaryFilesAllowed(True)
load_options.getBlobManagementOptions().setMaxBlobsBytesInMemory(10 * 1024 * 1024)

presentation = Presentation(file_path, load_options)
try:
    presentation.getSlides().get_Item(0).setName("Large presentation")
    presentation.save("large-presentation-copy.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Dış Kaynakları Kontrol Etme

LoadOptions.setResourceLoadingCallback metodu, Java kaynak yükleme geri arama arabirimini uygulayan bir JPype vekilini kabul eder. Geri arama, yerine geçecek veri sağlayabilir, bir kaynağı yönlendirebilir, varsayılan yükleyiciyi kullanabilir ya da kaynağı atlayabilir. Bu, sunumların dış resimler içermesi ve bu resimlerin uygulama‑spesifik güvenlik veya depolama kurallarına göre çözülmesi gerektiğinde faydalıdır.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from pathlib import Path
from asposeslides.api import LoadOptions, Presentation, ResourceLoadingAction

class ImageLoadingHandler:
    def resourceLoading(self, resource_loading_arguments):
        is_jpeg = str(resource_loading_arguments.getOriginalUri()).lower().endswith(".jpg")
        approved_image_path = Path("approved-image.jpg")
        if not is_jpeg or not approved_image_path.exists():
            return ResourceLoadingAction.Skip

        try:
            image_data = approved_image_path.read_bytes()
            java_image_data = jpype.JArray(jpype.JByte)(image_data)
            resource_loading_arguments.setData(java_image_data)
            return ResourceLoadingAction.UserProvided
        except OSError:
            print("The approved replacement image could not be read.")
            return ResourceLoadingAction.Skip

load_options = LoadOptions()
image_loading_handler = ImageLoadingHandler()
callback = jpype.JProxy("com.aspose.slides.IResourceLoadingCallback", inst=image_loading_handler)
load_options.setResourceLoadingCallback(callback)

presentation = Presentation("presentation-with-external-images.pptx", load_options)
try:
    print("Slide count:", presentation.getSlides().size())
finally:
    presentation.dispose()

Gömülü Ikili Nesneler Olmadan Sunumları Yükleme

Bir sunum, uygulamanın gerekmeyen veya saklamak istemediği gömülü ikili veriler içerebilir. Örnekler:

Yükleme sırasında bu ikili verileri kaldırmak için LoadOptions.setDeleteEmbeddedBinaryObjects seçeneğini True yapın. Temizlenmiş sonucu saklamak için yüklü sunumu kaydedin.

Bu seçenek, istenmeyen gömülü yükleri azaltır, ancak tam bir kötü amaçlı yazılım algılama veya içerik temizleme sistemi değildir.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import LoadOptions, Presentation, SaveFormat

load_options = LoadOptions()
load_options.setDeleteEmbeddedBinaryObjects(True)

presentation = Presentation("presentation-with-embedded-data.pptx", load_options)
try:
    presentation.save("presentation-without-embedded-data.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

SSS

Bir dosyanın bozuk olduğunu ve açılamadığını nasıl anlarım?

Aspose.Slides, yükleme sırasında bir ayrıştırma veya format istisnası fırlatır. Bu hatayı yanlış şifre hatasından ayrı olarak yakalayın ki uygulama nedeni doğru raporlayabilsin.

Gerekli yazı tipleri eksik olursa ne olur?

Sunum hâlâ yüklenebilir, ancak oluşturma ve dışa aktarma işlemleri yazı tiplerini değiştirebilir. Çıktının daha öngörülebilir olması için yazı tipi ikamesini yapılandırabilir ya da özel yazı tipleri sağlayabilirsiniz.

Bir sunumu yüklemek gömülü medyasını da yükler mi?

Gömülü ses ve video, sunum nesne modelinde erişilebilir hâle gelir. Dış kaynaklar, yapılandırılmış kaynak‑yükleme davranışına göre çözülür ve konumlarına erişilemezse kullanılabilir olmaz.