Hapus Bentuk Teks dari slide Powerpoint yang bentuknya kosong

Kode md2pptx saya membuat slide menggunakan python-pptx. Terkadang mengabaikan bentuk pada halaman yang tidak diperlukan.

Dalam Peragaan Slide Powerpoint, bentuk kosong ini tidak muncul. Di LibreOffice sepertinya begitu.

Saya cukup mahir memanipulasi XML yang mendasari sebuah slide.

Apakah mungkin untuk menghapus bentuk kosong - mungkin dengan menghapus elemen XML-nya? Atau apakah python-pptx sendiri menawarkan kemampuan untuk menghapus suatu bentuk? (Saya pikir tidak.)

Asumsikan saya dapat menavigasi ke bentuk dan mencari tahu mana yang kosong.

Catatan: Saya tidak bermaksud menghapus seluruh slide, hanya bentuk kosong.


person Martin Packer    schedule 12.02.2021    source sumber


Jawaban (1)


Menghapus bentuk yang berdiri sendiri dapat diandalkan dan cukup mudah, seperti:

sp = shape._element
sp.getparent().remove(sp)

Masalahnya muncul ketika bentuknya memiliki hubungan dengan beberapa bagian paket lainnya. Misalnya, bentuk Picture memiliki hubungan (diidentifikasi dengan rId) dengan bagian gambar (file) dalam paket (arsip zip .pptx). Dalam kasus tersebut, jika Anda tidak menangani hubungan dengan benar, Anda mungkin mendapatkan kesalahan perbaikan saat mencoba membuka file yang dihasilkan di PowerPoint.

Bentuk biasa (disebut bentuk otomatis) seperti persegi panjang, kotak teks, garis, atau bentuk geometris lainnya tidak memiliki hubungan dan dapat dihapus dengan metode ini dengan andal. Sebuah tabel mungkin juga aman, tapi bukan grafik. Bentuk grup mungkin juga oke, tapi hanya jika tidak berisi gambar atau bagan. Baik gambar maupun bagan mungkin menjadi masalah jika Anda tidak menghapus hubungannya.

Apakah kesalahan perbaikan dipicu atau tidak adalah perilaku yang mungkin berbeda antara PowerPoint dan LibreOffice (atau klien PPTX lainnya). Anda dapat mencoba menghapus gambar atau bentuk bagan saja tanpa berurusan dengan hubungannya dan melihat apa yang terjadi, namun agar dapat diandalkan, Anda perlu mengujinya dengan semua kemungkinan klien.

Menghapus suatu hubungan sedikit lebih rumit dan tercakup dalam pertanyaan python-pptx lain di sini di SO atau akan menjadi pertanyaan baru yang bagus.

person scanny    schedule 12.02.2021