فهرست منبع

fix: export numbering — use unique numId to avoid conflict with python-docx defaults

nonvioce 3 ماه پیش
والد
کامیت
72d9a9fe75
1فایلهای تغییر یافته به همراه9 افزوده شده و 5 حذف شده
  1. 9 5
      tiku-server/app/services/docx_builder.py

+ 9 - 5
tiku-server/app/services/docx_builder.py

@@ -176,7 +176,7 @@ def _apply_numbering(para_element):
     numPr.append(ilvl)
 
     numId = OxmlElement('w:numId')
-    numId.set(qn('w:val'), '1')
+    numId.set(qn('w:val'), '99')
     numPr.append(numId)
 
     pPr.append(numPr)
@@ -187,11 +187,15 @@ def _setup_auto_numbering(doc: Document):
     numbering_part = doc.part.numbering_part
     numbering_xml = numbering_part._element
 
+    # 用不会被 python-docx 默认编号冲突的唯一 ID
+    OUR_ABSTRACT_NUM_ID = '99'
+    OUR_NUM_ID = '99'
+
     # 抽象编号
     abstract_num = OxmlElement('w:abstractNum')
-    abstract_num.set(qn('w:abstractNumId'), '0')
+    abstract_num.set(qn('w:abstractNumId'), OUR_ABSTRACT_NUM_ID)
     nsid = OxmlElement('w:nsid')
-    nsid.set(qn('w:val'), '0A1B2C3D')
+    nsid.set(qn('w:val'), '7A1B2C3D')
     abstract_num.append(nsid)
     mlt = OxmlElement('w:multiLevelType')
     mlt.set(qn('w:val'), 'singleLevel')
@@ -233,9 +237,9 @@ def _setup_auto_numbering(doc: Document):
 
     # 编号实例
     num = OxmlElement('w:num')
-    num.set(qn('w:numId'), '1')
+    num.set(qn('w:numId'), OUR_NUM_ID)
     num_ref = OxmlElement('w:abstractNumId')
-    num_ref.set(qn('w:val'), '0')
+    num_ref.set(qn('w:val'), OUR_ABSTRACT_NUM_ID)
     num.append(num_ref)
     numbering_xml.append(num)