Python üzerinden Java ile Sunumları Kaydet
Genel Bakış
Bir sunum oluşturduktan veya var olan bir sunumu açtıktan, sonucu yazmak için Presentation.save metodunu kullanın. Aspose.Slides for Python via Java, bir sunumu PowerPoint, OpenDocument, PDF ve diğer formatlarda bir dosyaya veya akışa 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 bir dosyaya kaydetmek için, çıktı yolunu ve bir SaveFormat değerini Presentation.save metoduna geçirin. Format değeri, Aspose.Slides’in oluşturduğu dosya türünü belirler.
Aşağıdaki örnek bir sunum oluşturur ve 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 buraya ekleyin veya değiştirin.
presentation.save("Output.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Sunumları Orijinal Formatlarında Kaydet
Toplu işleme uygulamasında, giriş formatı önceden bilinmeyebilir. Bir dosya yüklendikten sonra, orijinal formatını Presentation.getSourceFormat metodundan okuyun. Elde edilen SourceFormat değerini SlideUtil.toSaveFormat metoduna geçirerek karşılık gelen SaveFormat değerini alın ve ardından Presentation.save metodunu kullanarak değiştirilmiş sunumu yazın.
Aşağıdaki tam örnek, giriş klasöründeki her dosyayı işler, başlığını günceller ve yüklendiği formatta bir çıkış klasörüne 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örseller gibi dışa aktarma formatlarını seçmek amacıyla değildir. Desteklenmeyen veya geçersiz bir SourceFormat değeri geçirmek, bir IllegalArgumentException hatasına neden olur.
Eski PPT, PPS ve POT dosyaları aynı ikili konteyneri kullanır. Böyle bir sunum uzantısız bir akıştan yüklendiğinde, PPS veya POT dosyası PPT olarak tanımlanabilir. Bu eski alt tipleri korumak gerekiyorsa, orijinal dosya adını veya format meta verilerini ayrı tutun ve çıktının dosya adı ve formatını seçerken kullanın.
Sunumları Akışlara Kaydet
Final bir dosya yoluna bağlı kalmadan bir sunumu yazmak için, yazılabilir bir akış ve bir SaveFormat değerini Presentation.save metoduna geçirin. Bu yöntem, çıktının bir web hizmetinden döndürülmesi, bir veritabanında depolanması veya bellek içinde işlenmesi gerektiğinde kullanışlı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üyle Sunumları Kaydet
PowerPoint’in kaydedilen bir sunumu ilk açtığı görünümü belirtebilirsiniz. Kaydetmeden önce bir ViewType değeriyle ViewProperties.setLastView metodunu 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 Katı profiline uygun bir PPTX dosyası oluşturmak için bir PptxOptions örneği oluşturun ve Conformance.Iso29500_2008_Strict ile setConformance metodunu kullanın. Ardından seçenekleri Presentation.save metoduna 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 girdinin 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 sınırları aşabilir. ZIP64 uzantıları, geçerli boyut ve giriş sayısı sınırlarını yükseltir.
PptxOptions.setZip64Mode metodunu, Aspose.Slides’in ZIP64 uzantılarını yazıp yazmayacağını kontrol etmek için kullanın:
- IfNecessary yalnızca sunum standart ZIP sınırlarını aştığında ZIP64 kullanır. Bu, varsayılan moddur.
- Never ZIP64 uzantılarını devre dışı bırakır.
- Always her zaman ZIP64 uzantılarını 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()
Warning
If Zip64Mode.Never kullanılır ve sunum standart ZIP sınırlarına sığmazsa, kaydetme işlemi bir PptxException hatası fırlatır.Sunumları Office Open XML Formatında Sıkıştırma Seviyeleriyle Kaydet
PPTX çıktısı için, PptxOptions.setCompressionLevel metodunu kullanarak kaydetme hızı ile dosya boyutu arasında denge kurabilirsiniz. CompressionLevel sınıfı şu değerleri sunar:
- 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 ile Level5 arasında, kaydetme hızından ziyade daha küçük çıktıyı tercih eder.
- Level6 kaydetme hızı ve dosya boyutunu dengeler. Bu, varsayılan seviyedir.
- Level7 ve Level8 daha da küçük çıktıyı kaydetme hızına tercih eder.
- Level9 en güçlü sıkıştırmayı sağlar ve en fazla 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()
Küçük Resmi Yenilemeden Sunumları Kaydet
Bir sunum PPTX olarak kaydedildiğinde, PptxOptions.setRefreshThumbnail metodu belge küçük resmini kontrol eder:
Truekaydetme sırasında küçük resmi yeniden oluşturur. Bu, varsayılan değerdir.Falsemevcut 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()
Note
Küçük resim yenilemeyi devre dışı bırakmak, bir PPTX dosyasını kaydetme süresini azaltabilir.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 metoduna geçirin. Aspose.Slides, dışa aktarım sırasında işleyicinin reporting metodunu ilerleme değerleriyle ç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():
jpype.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()
Note
Aspose, Aspose.Slides API’si ile oluşturulmuş ücretsiz bir PowerPoint Splitter sağlar. Seçilen slaytları bir sunumdan ayrı PPT veya PPTX dosyaları olarak kaydeder.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.
Birden fazla iş parçacığı aynı Presentation örneğini kaydedebilir mi?
Hayır. Bir Presentation örneği thread-safe değildir. Her örüntüye aynı anda yalnızca bir iş parçacığından erişin ve kaydedin.
Bir sunumu kaydettiğimde hiperlinkler ve dışarıdan bağlanan dosyalar ne olur?
Hyperlinks sunumda kalır. Aspose.Slides dışarıdan bağlanan dosyaları kopyalamaz, bu yüzden kaydedilen sunum hala 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, Aspose.Slides bunları çıktı dosyasına yazar.