Python aracılığıyla Java ile Sunumları Açma

Giriş

Aspose.Slides for Python via Java dosyalar 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 parolası belirleyebilir, büyük ikili nesneleri Java yığını dışına tutabilir, harici kaynakları kontrol edebilir ya da gömülü ikili verileri atlayabilirsiniz.

Sunumları Aç

Mevcut bir sunumu açmak için dosya yolunu Presentation yapıcısına geçirin. Dosya tutamaçları, geçici veriler ve diğer kaynakların hızlıca serbest bırakılması için sunumu kullanım sonrası serbest bırakın.

Aşağıdaki Python örneği bir sunumu nasıl açıp slayt sayısını alabileceğinizi 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()

Şifre Koruması Olan Sunumları Aç

Açma parolası sunum içeriğini şifreler. Tam sunumu yüklemek için doğru parolayı LoadOptions.setPassword metoduna geçirip seçenekleri Presentation yapıcısına sağlayın. Parola 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()

Parola algılama, doğrulama ve şifreleme iş akışları için Password-Protect Presentations sayfasına bakın. Şifreli bir sunum, kasıtlı olarak herkese açık belge özellikleriyle kaydedildiyse, bu özellikler parola olmadan okunabilir; bunun için Manage Presentation Properties bölümüne bakın.

Büyük Sunumları Aç

LoadOptions.getBlobManagementOptions yöntemi, Aspose.Slides’ın görüntüler, ses ve video gibi büyük ikili nesneleri nasıl ele aldığını kontrol eden seçenekleri döndürür. Kaynak dosyayı kilitli tutabilir, geçici dosyalara izin verebilir ve bellekte tutulan BLOB veri 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()

Harici Kaynakları Kontrol Et

LoadOptions.setResourceLoadingCallback metodu, Java kaynak yükleme geri arama arayüzünü uygulayan bir JPype vekilini kabul eder. Geri arama, yerine koyma verisi sağlayabilir, bir kaynağı yönlendirebilir, varsayılan yükleyiciyi kullanabilir veya kaynağı atlayabilir. Bu, sunumların uygulamaya özgü güvenlik veya depolama kurallarına göre çözülmesi gereken harici görseller içerdiği durumlarda 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ü İkili Nesneler Olmadan Sunumları Yükle

Bir sunum, uygulamanın ihtiyaç duymadığı veya tutmak istemediği gömülü ikili veri içerebilir. Örnekler:

LoadOptions.setDeleteEmbeddedBinaryObjects özelliğini True olarak ayarlayarak bu ikili verileri yükleme sırasında kaldırın. Temizlenmiş sonucu kalıcı kılmak 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 tespiti 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 anlayabilirim?

Aspose.Slides, yükleme sırasında bir ayrıştırma veya format istisnası fırlatır. Bu hatayı hatalı parola hatasından ayrı şekilde ele alın ki uygulama nedeni doğru raporlayabilsin.

Gerekli yazı tipleri eksik olduğunda ne olur?

Sunum hâlâ yüklenebilir, ancak yürütme ve dışa aktarım yazı tiplerini değiştirebilir. Çıktının daha öngörülebilir olması için yazı tipi ikamesi yapılandırmasını veya özel yazı tipleri sağlamayı kullanabilirsiniz.

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

Gömülü ses ve video, sunum nesne modeli aracılığıyla kullanılabilir hale gelir. Harici kaynaklar, yapılandırılmış kaynak yükleme davranışına göre çözülür ve konumlarına erişilemezse kullanılamaz olabilir.