Python ile Java üzerinden Sunumları Kaydet

Genel Bakış

Sunum oluşturduktan veya var olan bir sunumu açtıktan sonra, sonucu yazmak için Presentation.save yöntemini kullanın. Aspose.Slides for Python via Java, bir sunumu PowerPoint, OpenDocument, PDF ve diğer formatlarda dosya ya da akış olarak kaydedebilir. Aşağıdaki bölümler, standart kaydetme işlemlerini ve PPTX çıktısı için mevcut seçenekleri kapsar.

Sunumları Dosyalara Kaydet

Bir sunumu dosyaya kaydetmek için, çıkış yolunu ve bir SaveFormat değerini Presentation.save yöntemine geçirin. Format değeri, Aspose.Slides’in oluşturacağı dosya türünü belirler.

Aşağıdaki örnek, bir sunum oluşturur ve bunu PPTX dosyası olarak kaydeder:

import jpype
import asposeslides

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

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation()
try:
    # Sunum içeriğini burada ekleyin veya değiştirin.

    presentation.save("Output.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Sunumları Orijinal Formatlarında Kaydet

Dosya ve akış algılama örnekleri, yeni oluşturulan sunumların davranışı ve kaynak ile çıktı formatları arasındaki ayrım için Determine the Original Presentation Format bölümüne bakın.

Yığın işleme uygulamasında giriş formatı önceden bilinmeyebilir. Bir dosya yüklendikten sonra, orijinal formatını Presentation.getSourceFormat yönteminden okuyun. Elde edilen SourceFormat değerini SlideUtil.toSaveFormat yöntemine geçirerek karşılık gelen SaveFormat değerini alın ve ardından Presentation.save yöntemiyle değiştirilmiş sunumu yazın.

Aşağıdaki tam örnek, giriş dizinindeki her dosyayı işler, başlığını günceller ve yüklendiği formatta çıktı dizinine kaydeder:

import jpype
import asposeslides

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

from asposeslides.api import Presentation, SlideUtil
from pathlib import Path

IllegalArgumentException = jpype.JClass("java.lang.IllegalArgumentException")
input_directory = Path("Input")
output_directory = Path("Output")

try:
    output_directory.mkdir(parents=True, exist_ok=True)
except OSError:
    print("Cannot create the output directory.")

if input_directory.is_dir() and output_directory.is_dir():
    for input_file in input_directory.iterdir():
        if input_file.is_file():
            try:
                presentation = Presentation(str(input_file))
                try:
                    save_format = SlideUtil.toSaveFormat(presentation.getSourceFormat())
                    presentation.getDocumentProperties().setTitle("Processed by the batch application")

                    output_file = output_directory / input_file.name
                    presentation.save(str(output_file), save_format)
                finally:
                    presentation.dispose()
            except IllegalArgumentException as exception:
                print(f"Cannot map the source format of '{input_file}': {exception}")
            except Exception as exception:
                print(f"Cannot process '{input_file}': {exception}")

SlideUtil.toSaveFormat PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP ve PowerPoint XML’i ilgili sunum kaydetme formatlarına eşler. Yalnızca sunum kaynak formatlarını eşler; PDF, HTML, TIFF veya görüntüler gibi dışa aktarma formatlarını seçmek amacıyla kullanılmaz. Desteklenmeyen veya geçersiz bir SourceFormat değeri geçirilmesi, bir IllegalArgumentException ile sonuçlanır.

Eski PPT, PPS ve POT dosyaları aynı ikili konteyneri kullanır. Böyle bir sunum, dosya uzantısı olmadan bir akıştan yüklendiğinde, bir PPS veya POT dosyası PPT olarak tanımlanabilir. Bu eski alt tiplerin korunması gerekiyorsa, orijinal dosya adını veya format meta verilerini ayrı tutun ve çıktı dosya adı ve formatı seçilirken kullanın.

Sunumları Akışlara Kaydet

Sunumu nihai bir dosya yoluna bağlı olmadan yazmak için, yazılabilir bir akış ve bir SaveFormat değerini Presentation.save yöntemine geçirin. Bu yöntem, çıktının bir web hizmetinden döndürülmesi, bir veritabanında saklanması veya bellekte işlenmesi gerektiğinde faydalıdır.

Aşağıdaki örnek, yeni bir sunumu dosya akışına kaydeder:

import jpype
import asposeslides

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

from asposeslides.api import Presentation, SaveFormat

FileOutputStream = jpype.JClass("java.io.FileOutputStream")

presentation = Presentation()
try:
    output_stream = FileOutputStream("Output.pptx")
    try:
        presentation.save(output_stream, SaveFormat.Pptx)
    finally:
        output_stream.close()
finally:
    presentation.dispose()

Önceden Tanımlı Görünüm Türü ile Sunumları Kaydet

PowerPoint’in kaydedilen bir sunumu ilk açtığı görünümü belirleyebilirsiniz. Kaydetmeden önce bir ViewType değeriyle birlikte ViewProperties.setLastView yöntemini kullanın.

Aşağıdaki örnek, Slide Master görünümünü başlangıç görünümü olarak yapılandırır:

import jpype
import asposeslides

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

from asposeslides.api import Presentation, SaveFormat, ViewType

presentation = Presentation()
try:
    presentation.getViewProperties().setLastView(ViewType.SlideMasterView)
    presentation.save("SlideMasterView.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Sunumları Katı Office Open XML Formatında Kaydet

Office Open XML’in Strict profiline uygun bir PPTX dosyası oluşturmak için bir PptxOptions örneği oluşturun ve Conformance.Iso29500_2008_Strict ile birlikte setConformance yöntemini kullanın. Ardından seçenekleri Presentation.save yöntemine geçirin.

import jpype
import asposeslides

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

from asposeslides.api import Conformance, PptxOptions, Presentation, SaveFormat

options = PptxOptions()
options.setConformance(Conformance.Iso29500_2008_Strict)

presentation = Presentation()
try:
    presentation.save("StrictOfficeOpenXml.pptx", SaveFormat.Pptx, options)
finally:
    presentation.dispose()

Sunumları Office Open XML Formatında Zip64 Modunda Kaydet

Standart bir ZIP arşivi, her girişin sıkıştırılmış ve sıkıştırılmamış boyutunu, toplam arşiv boyutunu ve giriş sayısını sınırlar. PPTX dosyası bir ZIP arşivi olduğundan, çok büyük bir sunum bu limitleri aşabilir. ZIP64 uzantıları, ilgili boyut ve giriş sayısı limitlerini artırır.

PptxOptions.setZip64Mode yöntemini kullanarak Aspose.Slides’in ZIP64 uzantılarını yazıp yazmayacağını kontrol edin:

  • IfNecessary sadece sunum standart ZIP limitlerini aştığında ZIP64 kullanır. Bu varsayılan moddur.
  • Never ZIP64 uzantılarını devre dışı bırakır.
  • Always ZIP64 uzantılarını her zaman yazar.

Aşağıdaki örnek, çıktı sunumu için ZIP64 uzantılarını her zaman etkinleştirir:

import jpype
import asposeslides

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

from asposeslides.api import PptxOptions, Presentation, SaveFormat, Zip64Mode

presentation = Presentation("Sample.pptx")
try:
    options = PptxOptions()
    options.setZip64Mode(Zip64Mode.Always)

    presentation.save("OutputZip64.pptx", SaveFormat.Pptx, options)
finally:
    presentation.dispose()

Sunumları Office Open XML Formatında Sıkıştırma Düzeyleriyle Kaydet

PPTX çıktısı için, PptxOptions.setCompressionLevel yöntemini kullanarak kaydetme hızını dosya boyutuyla dengeleyebilirsiniz. CompressionLevel sınıfı şu değerleri sağlar:

  • None verileri sıkıştırma olmadan depolar.
  • Level1 en hızlı sıkıştırmayı ve en büyük sıkıştırılmış çıktıyı sağlar.
  • Level2 üzerinden Level5 daha küçük çıktıyı kaydetme hızına tercih eder.
  • Level6 kaydetme hızı ve dosya boyutunu dengeler. Bu varsayılan düzeydir.
  • Level7 ve Level8 daha küçük çıktıyı kaydetme hızına daha fazla tercih eder.
  • Level9 en güçlü sıkıştırmayı sağlar ve en çok işlem süresi gerektirir.

Aşağıdaki örnek, bir sunumu sıkıştırma olmadan kaydeder:

import jpype
import asposeslides

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

from asposeslides.api import CompressionLevel, PptxOptions, Presentation, SaveFormat

presentation = Presentation("Sample.pptx")
try:
    options = PptxOptions()
    options.setCompressionLevel(CompressionLevel.None_)

    presentation.save("OutputNoCompression.pptx", SaveFormat.Pptx, options)
finally:
    presentation.dispose()

Aşağıdaki örnek, maksimum sıkıştırma seviyesini kullanır:

import jpype
import asposeslides

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

from asposeslides.api import CompressionLevel, PptxOptions, Presentation, SaveFormat

presentation = Presentation("Sample.pptx")
try:
    options = PptxOptions()
    options.setCompressionLevel(CompressionLevel.Level9)

    presentation.save("OutputMaximumCompression.pptx", SaveFormat.Pptx, options)
finally:
    presentation.dispose()

Sunumları Küçük Resmi Yenilemeden Kaydet

Bir sunum PPTX olarak kaydedildiğinde, PptxOptions.setRefreshThumbnail yöntemi belge küçük resmini kontrol eder:

  • True kaydetme işlemi sırasında küçük resmi yeniden oluşturur. Bu varsayılan değerdir.
  • False mevcut küçük resmi korur. Sunumda küçük resim yoksa, Aspose.Slides bir tane oluşturmaz.

Aşağıdaki örnek, bir sunumu küçük resmini yenilemeden kaydeder:

import jpype
import asposeslides

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

from asposeslides.api import PptxOptions, Presentation, SaveFormat

presentation = Presentation("Sample.pptx")
try:
    options = PptxOptions()
    options.setRefreshThumbnail(False)

    presentation.save("Output.pptx", SaveFormat.Pptx, options)
finally:
    presentation.dispose()

Kaydetme İlerlemesini Yüzde Olarak Raporla

Bir kaydetme işlemini izlemek için, jpype.JProxy aracılığıyla bir Python ilerleme işleyicisi kaydedin ve bunu SaveOptions.setProgressCallback yöntemine geçirin. Aspose.Slides daha sonra dışa aktarma sırasında ilerleme değerleriyle işleyicinin reporting yöntemini çağırır.

Aşağıdaki örnek, PDF dışa aktarımının ilerlemesini konsola raporlar:

import jpype
import asposeslides

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

from asposeslides.api import PdfOptions, Presentation, SaveFormat


class ExportProgressHandler:
    def reporting(self, progress_value):
        progress = int(progress_value)
        print(f"{progress}% of the file has been converted.")


handler = ExportProgressHandler()
callback = jpype.JProxy("com.aspose.slides.IProgressCallback", inst=handler)
options = PdfOptions()
options.setProgressCallback(callback)

presentation = Presentation("Sample.pptx")
try:
    presentation.save("Output.pdf", SaveFormat.Pdf, options)
finally:
    presentation.dispose()

SSS

Aspose.Slides artımlı veya “hızlı kaydetme” destekliyor mu?

Hayır. Her kaydetme işlemi, yalnızca değişen bölümleri güncellemek yerine tam bir çıktı dosyası yazar.

Aynı Presentation örneği birden fazla iş parçacığı tarafından kaydedilebilir mi?

Hayır. Bir Presentation örneği thread‑safe değildir. Her örneğe aynı anda yalnızca bir iş parçacığından erişin ve kaydedin.

Bir sunumu kaydettiğimde hiperlinkler ve dışa bağlı dosyalar ne olur?

Hyperlinks sunumda kalır. Aspose.Slides dışa bağlı dosyaları kopyalamaz, bu yüzden kaydedilen sunum hâlâ bu dosyaların konumlarına erişebilmelidir.

Yazar, başlık, şirket ve oluşturulma tarihi gibi belge meta verilerini kaydedebilir miyim?

Evet. Kaydetmeden önce uygun document properties ayarlayın ve Aspose.Slides bunları çıktı dosyasına yazar.