Python-docx устанавливает направление текста RTL

Я пытаюсь создать документ с направлением текста RTL (справа налево)

def printExam():

  #get the exam questions 

  rows = db(db.exam_questions.exam == request.vars.exam).select()

  # create the documnet
  document = Document()
  document.add_heading(u"أختبار", 0)

  #for row in rows:
  row = rows[0] 
  run = document.add_paragraph().add_run(str(row.question.questionText).decode( "utf-8" ))
  font = run.font
  font.rtl = True

Я получил следующее исключение:

Traceback (most recent call last):
  File "C:\Users\web2py-src\gluon\restricted.py", line 227, in restricted
    exec ccode in environment
  File "C:/Users/web2py-src/applications/draft/controllers/question.py", line 96, in <module>
  File "C:\Users\web2py-src\gluon\globals.py", line 417, in <lambda>
    self._caller = lambda f: f()
  File "C:/Users/web2py-src/applications/draft/controllers/question.py", line 68, in printExam
    font.rtl = True
AttributeError: 'Font' object attribute 'rtl' is read-only

1 ответ

Решение

В вашем абзаце не определено никакого пользовательского стиля, поэтому применяется скрытый стиль по умолчанию, и этот тип стиля доступен только для чтения, потому что он не имеет реального определения в документе.

Примените собственный стиль к своему бегу или вашему абзацу, и вы сможете настроить его. Для пробежки вы должны создать стиль персонажа (WD_STYLE_TYPE.CHARACTER).

# create the document and the custom style
document = Document()
mystyle = document.styles.add_style('mystyle', WD_STYLE_TYPE.CHARACTER)
...
...
# apply the custom on the run
run.style = mystyle
font = run.font
font.rtl = True
Другие вопросы по тегам