Perbaiki dokumen RPS hasil unduh yang rusak/berantakan

Sel "Peta CPL-CPMK" pada template resmi UNTAN memuat tabel kecil bersarang
(contoh isian bawaan SN-Dikti). _set_text() cuma membuang paragraf tambahan
saat menimpa sel dengan teks generate, tak tahu ada tabel bersarang di
dalamnya -- hasilnya sel berakhir dengan w:tbl tanpa w:p setelahnya, yang
melanggar skema OOXML. Word membaca file itu sebagai "rusak" dan otomatis
memperbaikinya sendiri saat dibuka, dan perbaikan-otomatis itulah yang
mengacak tata letak dokumen.

- _set_text() sekarang membuang tabel bersarang tersisa sebelum menulis
  teks baru ke sel manapun (berlaku umum, bukan cuma sel yang saat ini
  kena masalah)
- Ganti templates/rps_untan.docx dengan versi yang sudah dirapikan
  formatnya (font/spacing) -- struktur baris & kolom identik (39x18),
  jadi tetap kompatibel dengan pemetaan baris di rps_untan.py
- Diverifikasi: tak ada lagi sel yang berakhir dengan tabel bersarang
  tanpa paragraf penutup di seluruh dokumen hasil generate

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Power BI Dev
2026-08-09 16:38:13 +07:00
parent b9d5c22f33
commit 71858d974c
2 changed files with 11 additions and 1 deletions
+11 -1
View File
@@ -39,7 +39,17 @@ PRODI = os.environ.get("PRODI", "PROGRAM STUDI INFORMATIKA")
def _set_text(cell, text, align=None, bold=None): def _set_text(cell, text, align=None, bold=None):
"""Ganti isi sel; gaya paragraf/tabel template dipertahankan.""" """Ganti isi sel; gaya paragraf/tabel template dipertahankan.
Beberapa sel template resmi (mis. contoh isian "peta CPL-CPMK") memuat
tabel kecil bersarang di antara paragraf petunjuknya. w:tc yang berakhir
dengan w:tbl tanpa w:p setelahnya melanggar skema OOXML — Word
menganggap dokumennya rusak dan mem-"perbaiki" (merapikan ulang) sendiri
saat dibuka, yang justru merusak tata letak. Buang tabel bersarang itu
sekalian saat sel ditimpa teks baru.
"""
for tbl in cell._tc.findall(qn("w:tbl")):
tbl.getparent().remove(tbl)
for p in cell.paragraphs[1:]: for p in cell.paragraphs[1:]:
p._p.getparent().remove(p._p) p._p.getparent().remove(p._p)
p = cell.paragraphs[0] p = cell.paragraphs[0]
Binary file not shown.