Menerapkan atau Mengubah Tata Letak Slide dalam Python via Java
Ikhtisar
Tata letak slide mendefinisikan posisi dan format placeholder seperti judul, teks, gambar, bagan, dan tabel. Menerapkan tata letak memberi slide struktur yang konsisten sekaligus memungkinkan setiap slide berisi konten masing‑masing.
Tata letak yang paling umum meliputi:
- Slide Judul: Memuat placeholder judul dan subjudul.
- Judul dan Konten: Memuat placeholder judul dan placeholder konten umum.
- Kosong: Tidak memuat placeholder konten dan berguna ketika setiap bentuk akan diposisikan secara manual.
Memahami Pewarisan Tata Letak
Presentasi memiliki tiga level terkait:
- Sebuah master slide mendefinisikan tema, format bersama, latar belakang, dan objek umum.
- Sebuah layout slide milik master dan mendefinisikan susunan placeholder tertentu.
- Sebuah normal slide menggunakan satu tata letak dan menyimpan konten yang dimasukkan untuk slide tersebut.
Sebuah normal slide mewarisi tema dan format dari tata letaknya, dan tata letak mewarisi dari masternya. Nilai yang ditetapkan langsung pada normal slide akan menggantikan nilai yang diwariskan pada level itu. Ketika sebuah normal slide dibuat, bentuk placeholder‑nya dihasilkan dari tata letak yang dipilih, sementara konten yang dimasukkan ke dalam placeholder tersebut menjadi milik normal slide.
Tambahkan placeholder yang diperlukan ke tata letak sebelum membuat slide darinya. Menambahkan placeholder lain ke tata letak nanti tidak secara otomatis menambah bentuk placeholder yang bersesuaian ke normal slide yang sudah ada.
Hubungan ini memiliki dua konsekuensi penting:
- Mengubah format yang diwariskan atau geometri placeholder yang ada pada tata letak dapat memperbarui setiap slide yang bergantung padanya. Sebelum menyunting tata letak yang sudah dipakai, periksa slide‑slide yang bergantung dan tinjau hasil presentasinya.
- Tata letak yang masih digunakan oleh sebuah slide tidak dapat dihapus. Alihkan dulu slide‑slide yang bergantung ke tata letak lain, atau hapus hanya tata letak yang tidak terpakai.
Untuk informasi lebih lanjut tentang level teratas hierarki ini, lihat Slide Master.
Untuk menyembunyikan logo atau bentuk master dekoratif yang diwariskan pada satu slide atau melalui tata letak bersama, lihat Control the Visibility of Master Graphics. Contoh ini membandingkan dua slide yang menggunakan master yang sama.
Pilih dan Terapkan Tata Letak Slide
Gunakan tipe tata letak ketika presentasi mengikuti definisi tata letak PowerPoint standar. Nama tata letak dapat diedit oleh pengguna dan dapat dilokalisasi, sehingga pemilihan berbasis nama kurang dapat diandalkan kecuali Anda mengontrol templat sumber.
Contoh berikut mencari Judul dan Konten pada master pertama. Jika tata letak itu tidak tersedia, secara sengaja beralih ke Kosong. Pemeriksaan kedua untuk None diperlukan karena sebuah presentasi dapat berisi hanya tata letak khusus. Tata letak yang dipilih kemudian diterapkan ke slide normal pertama melalui metode Slide.setLayoutSlide.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SlideLayoutType
presentation = Presentation("input.pptx")
try:
layout_slides = presentation.getMasters().get_Item(0).getLayoutSlides()
target_layout = layout_slides.getByType(SlideLayoutType.TitleAndObject)
if target_layout is None:
target_layout = layout_slides.getByType(SlideLayoutType.Blank)
if target_layout is None:
print("The first master does not contain a suitable layout slide.")
else:
presentation.getSlides().get_Item(0).setLayoutSlide(target_layout)
presentation.save("output-with-new-layout.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Mengubah tata letak sebuah slide tidak menghapus bentuk biasa yang ditambahkan langsung ke slide. Namun, posisi placeholder, format yang diwariskan, dan korespondensi antara placeholder yang ada dengan tata letak baru dapat berubah, sehingga periksa hasilnya saat beralih antara tata letak yang secara substansial berbeda.
Tambahkan Layout Slide
Pemilihan dan pembuatan adalah operasi terpisah. Contoh sebelumnya memilih tata letak yang sudah ada; tidak membuat yang baru. Untuk membuat tata letak, panggil metode MasterLayoutSlideCollection.add pada koleksi tata letak master target.
Contoh berikut selalu menambahkan tata letak Judul dan Konten baru bernama Report Title and Content, lalu menambahkan slide normal berdasarkan tata letak tersebut. Nama tata letak harus unik dalam koleksi.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SlideLayoutType
presentation = Presentation("input.pptx")
try:
master_slide = presentation.getMasters().get_Item(0)
report_layout = master_slide.getLayoutSlides().add(SlideLayoutType.TitleAndObject, "Report Title and Content")
presentation.getSlides().addEmptySlide(report_layout)
presentation.save("output-with-report-layout.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Tambahkan tata letak hanya ketika templat memang memerlukan struktur dapat pakai lain. Jika tata letak yang cocok sudah ada, pilih dan gunakan kembali alih‑alih membuat duplikat.
Tambahkan Placeholder ke Layout Slide
Metode LayoutSlide.getPlaceholderManager menyediakan sebuah LayoutPlaceholderManager untuk menambahkan bentuk placeholder ke tata letak.
Contoh berikut memverifikasi bahwa tata letak Kosong ada, menambahkan empat placeholder ke dalamnya, lalu membuat slide normal yang menggunakan tata letak yang telah diubah. Urutan ini disengaja: placeholder ditambahkan sebelum slide normal dibuat, sehingga Aspose.Slides dapat menghasilkan bentuk placeholder yang bersesuaian pada slide tersebut.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SlideLayoutType
presentation = Presentation()
try:
blank_layout = presentation.getLayoutSlides().getByType(SlideLayoutType.Blank)
if blank_layout is None:
print("The presentation does not contain a Blank layout slide.")
else:
placeholder_manager = blank_layout.getPlaceholderManager()
placeholder_manager.addContentPlaceholder(20, 20, 310, 270)
placeholder_manager.addVerticalTextPlaceholder(350, 20, 350, 270)
placeholder_manager.addChartPlaceholder(20, 310, 310, 180)
placeholder_manager.addTablePlaceholder(350, 310, 350, 180)
presentation.getSlides().addEmptySlide(blank_layout)
presentation.save("output-with-placeholders.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Hasilnya:

Warning
Mengubah format yang diwariskan atau geometri placeholder tata letak yang ada dapat memengaruhi slide‑slide yang bergantung. Placeholder tata letak yang baru ditambahkan tidak secara otomatis ditambahkan ke slide normal yang sudah ada. Uji perubahan tata letak pada salinan presentasi dan periksa setiap slide yang bergantung.Hapus Layout Slide yang Tidak Digunakan
Gunakan metode Compress.removeUnusedLayoutSlides untuk menghapus tata letak yang tidak direferensikan oleh slide normal mana pun. Metode ini membiarkan tata letak yang masih dipakai tetap utuh.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Compress, Presentation, SaveFormat
presentation = Presentation("input.pptx")
try:
Compress.removeUnusedLayoutSlides(presentation)
presentation.save("output-without-unused-layouts.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Untuk menghapus satu tata letak tertentu, pertama gunakan metode hasDependingSlides atau getDependingSlides. Alihkan dulu slide‑slide yang bergantung sebelum memanggil LayoutSlide.remove. Mencoba menghapus tata letak yang sedang dipakai akan menyebabkan PptxEditException.
Kontrol Visibilitas Footer pada Layout Slide
Sebuah tata letak memiliki placeholder footer, nomor slide, dan tanggal‑waktu sendiri. Gunakan metode LayoutSlide.getHeaderFooterManager untuk mengontrol placeholder‑placeholder tersebut pada satu tata letak. Ini berguna ketika, misalnya, tata letak konten harus menampilkan footer tetapi tata letak judul tidak.
Contoh berikut memilih tata letak secara aman dan membuat elemen footernya terlihat:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SlideLayoutType
presentation = Presentation("input.pptx")
try:
layout_slide = presentation.getLayoutSlides().getByType(SlideLayoutType.TitleAndObject)
if layout_slide is None:
layout_slide = presentation.getLayoutSlides().getByType(SlideLayoutType.Blank)
if layout_slide is None:
print("The presentation does not contain a suitable layout slide.")
else:
header_footer_manager = layout_slide.getHeaderFooterManager()
header_footer_manager.setFooterVisibility(True)
header_footer_manager.setSlideNumberVisibility(True)
header_footer_manager.setDateTimeVisibility(True)
header_footer_manager.setFooterText("Footer text")
header_footer_manager.setDateTimeText("Date and time text")
presentation.save("output-with-layout-footers.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Kontrol Visibilitas Footer pada Master dan Layout‑nya
Untuk menerapkan pengaturan footer yang konsisten di seluruh hierarki master, gunakan metode MasterSlide.getHeaderFooterManager. Metode propagasi pada MasterSlideHeaderFooterManager bekerja pada master serta tata letak dan slide normal yang bergantung; mereka tidak menargetkan hanya satu slide normal.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation("input.pptx")
try:
header_footer_manager = presentation.getMasters().get_Item(0).getHeaderFooterManager()
header_footer_manager.setFooterAndChildFootersVisibility(True)
header_footer_manager.setSlideNumberAndChildSlideNumbersVisibility(True)
header_footer_manager.setDateTimeAndChildDateTimesVisibility(True)
header_footer_manager.setFooterAndChildFootersText("Footer text")
header_footer_manager.setDateTimeAndChildDateTimesText("Date and time text")
presentation.save("output-with-master-footers.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
FAQ
Apa Perbedaan Antara Master Slide dan Layout Slide?
Master slide mendefinisikan tema presentasi dan format bersama. Layout slide milik master dan mendefinisikan satu susunan placeholder yang dapat dipakai ulang. Slide normal menggunakan tata letak tersebut dan menyimpan konten spesifik slide.
Bisakah Saya Menyalin Layout Slide dari Satu Presentasi ke Presentasi Lain?
Ya. Tambahkan salinan ke koleksi tujuan dengan metode addClone. Saat menyalin antar presentasi, pastikan juga font, tema, gambar, dan sumber daya lain yang dipakai oleh layout sumber.
Apa yang Terjadi Jika Saya Memodifikasi Layout yang Sudah Digunakan?
Slide yang bergantung mewarisi perubahan layout kecuali mereka menimpa format atau objek yang terpengaruh secara lokal. Geometri placeholder dan styling yang diwariskan dapat berubah pada banyak slide secara bersamaan. Gunakan getDependingSlides untuk mengidentifikasi slide yang terpengaruh sebelum menyunting layout.
Apa yang Terjadi Jika Saya Menghapus Layout yang Masih Digunakan?
Aspose.Slides akan melempar PptxEditException. Alihkan dulu slide yang bergantung, atau gunakan removeUnusedLayoutSlides untuk menghapus hanya layout yang tidak direferensikan.









