ลบรูปร่างข้อความออกจากสไลด์ Powerpoint ที่รูปร่างว่างเปล่า

รหัส md2pptx ของฉันสร้างสไลด์โดยใช้ python-pptx บางครั้งอาจละเว้นรูปร่างบนหน้าที่ไม่ต้องการ

ในการนำเสนอภาพนิ่ง Powerpoint รูปร่างว่างเหล่านี้จะไม่ปรากฏขึ้น ใน LibreOffice ดูเหมือนว่าพวกเขาจะ

ฉันค่อนข้างเชี่ยวชาญในการจัดการ XML พื้นฐานสำหรับสไลด์

เป็นไปได้ไหมที่จะลบรูปร่างว่าง - อาจโดยการลบองค์ประกอบ XML ของมัน หรือ python-pptx นั้นมีความสามารถในการลบรูปร่างหรือไม่? (ผมคิดว่าไม่.)

สมมติว่าฉันสามารถนำทางไปยังรูปร่างต่างๆ และหาว่ารูปร่างใดว่างเปล่า

หมายเหตุ: ฉันไม่ได้ตั้งใจที่จะลบทั้งสไลด์ เพียงแค่ลบรูปร่างที่ว่างเปล่าเท่านั้น


person Martin Packer    schedule 12.02.2021    source แหล่งที่มา


คำตอบ (1)


การลบรูปร่างแบบสแตนด์อโลนนั้นเชื่อถือได้และค่อนข้างง่าย เช่น:

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

ปัญหาเกิดขึ้นเมื่อรูปร่างมีความสัมพันธ์กับส่วนบรรจุภัณฑ์อื่นๆ ตัวอย่างเช่น รูปร่าง Picture มีความสัมพันธ์ (ระบุด้วย rId) กับส่วนของรูปภาพ (ไฟล์) ในแพ็คเกจ (ไฟล์ zip ของ pptx) ในกรณีเหล่านั้น ถ้าคุณไม่จัดการกับความสัมพันธ์อย่างเหมาะสม คุณอาจได้รับข้อผิดพลาดในการซ่อมแซมเมื่อคุณพยายามเปิดไฟล์ผลลัพธ์ใน PowerPoint

รูปร่างปกติ (ที่เรียกว่ารูปร่างอัตโนมัติ) เช่น สี่เหลี่ยมผืนผ้า กล่องข้อความ เส้น หรือรูปทรงเรขาคณิตอื่นๆ ไม่มีความสัมพันธ์และสามารถลบออกได้อย่างน่าเชื่อถือด้วยวิธีนี้ ตารางก็อาจจะปลอดภัยเช่นกัน แต่ไม่ใช่แผนภูมิ รูปร่างกลุ่มก็อาจจะใช้ได้เช่นกัน แต่เฉพาะในกรณีที่ไม่มีรูปภาพหรือแผนภูมิเท่านั้น ทั้งรูปภาพและแผนภูมิอาจเป็นปัญหาถ้าคุณไม่ลบความสัมพันธ์ทั้งสองออกไป

การทริกเกอร์ข้อผิดพลาดในการซ่อมแซมหรือไม่นั้นเป็นลักษณะการทำงานที่อาจแตกต่างกันระหว่าง PowerPoint และ LibreOffice (หรือไคลเอนต์ PPTX อื่นๆ) คุณสามารถลองลบรูปภาพหรือรูปร่างแผนภูมิโดยไม่ต้องจัดการกับความสัมพันธ์และดูว่าเกิดอะไรขึ้น แต่เพื่อให้เชื่อถือได้ คุณจะต้องทดสอบกับไคลเอนต์ที่เป็นไปได้ทั้งหมด

การลบความสัมพันธ์ออกจะยุ่งยากกว่าเล็กน้อยและจะกล่าวถึงใน python-pptx คำถามอื่นที่นี่ใน SO หรือจะสร้างคำถามใหม่ที่ดี

person scanny    schedule 12.02.2021