Возникли проблемы при добавлении флажка в .docx с помощью модуля docx - PullRequest
0 голосов
/ 08 февраля 2020

Я пытаюсь добавить флажок, такой как «[X]», но все, что я получаю в конце моего документа, это « Абзац с флажком ». Я использовал решение из другого поста, но я не уверен, почему оно не работает. Может кто-нибудь, пожалуйста, помогите мне найти решение? Ссылка на то, где я получил решение python -docx: добавление флажка в .docx не работает

document = Document(file_path)
box_id = random.randint(16*1024, 32*1024)

para = document.add_paragraph('A paragraph with a checkbox ')
#para = table.cell(2, 0).text
name = 'naimulwashere'

run = para.add_run()
tag = run._r
fld = docx.oxml.shared.OxmlElement('w:fldChar')
fld.set(docx.oxml.ns.qn('w:fldCharType'), 'begin')

ffData = docx.oxml.shared.OxmlElement('w:ffData')
e = docx.oxml.shared.OxmlElement('w:name')
e.set(docx.oxml.ns.qn('w:val'), 'Check1')
ffData.append(e)
ffData.append(docx.oxml.shared.OxmlElement('w:enabled'))
e = docx.oxml.shared.OxmlElement('w:calcOnExit')
e.set(docx.oxml.ns.qn('w:val'), '0')
ffData.append(e)
e = docx.oxml.shared.OxmlElement('w:checkBox')
e.append(docx.oxml.shared.OxmlElement('w:sizeAuto'))
ee = docx.oxml.shared.OxmlElement('w:default')
ee.set(docx.oxml.ns.qn('w:val'), '0')
e.append(ee)
ffData.append(e)

fld.append(ffData)
tag.append(fld)

run2 = para.add_run()
tag2 = run2._r
start = docx.oxml.shared.OxmlElement('w:bookmarkStart')
start.set(docx.oxml.ns.qn('w:id'), str(box_id))
start.set(docx.oxml.ns.qn('w:name'), name)
tag2.append(start)

run3 = para.add_run()
tag3 = run3._r
instr = docx.oxml.OxmlElement('w:instrText')
instr.text = 'FORMCHECKBOX'
tag3.append(instr)

run4 = para.add_run()
tag4 = run4._r
fld2 = docx.oxml.shared.OxmlElement('w:fldChar')
fld2.set(docx.oxml.ns.qn('w:fldCharType'), 'end')
tag4.append(fld2)

run5 = para.add_run()
tag5 = run5._r
end = docx.oxml.shared.OxmlElement('w:bookmarkEnd')
end.set(docx.oxml.ns.qn('w:id'), str(box_id))
end.set(docx.oxml.ns.qn('w:name'), name)
tag5.append(end)


document.save(file_path)
...