Есть ли обходной путь для динамического добавления сносок Microsoft Word в Python? - PullRequest
0 голосов
/ 28 марта 2019

В настоящее время я использую Python Flask для создания приложения для генерации форматированного документа из данных, хранящихся в базе данных sql. Моя идея заключалась в том, чтобы обнаружить метки сносок в тексте и визуализировать сноски на ходу:

text = ''' This is a sample text {{footnotes:Yes it is!}} It's just that. '''
footnote = text[text.find("{{footnotes:")+12:text.find("}}")]

Однако, похоже, что python-docx не предлагает манипулирования сносками в этот самый момент. Есть ли какие-либо другие пакеты в Python (или node.js, желательно не для того, чтобы приложение создавалось заново), чтобы добавить сноски к файлу .doc?

Является ли жизнеспособный способ сначала сделать документ Markdown, а затем каким-то образом преобразовать его в .docx со свойствами сносок?

1 Ответ

1 голос
/ 28 марта 2019

Из документации python-docx (https://python -docx.readthedocs.io / en / latest / user / documents.html ):

Набор функций все еще создается, поэтому вы не можете добавлять или изменять такие вещи, как заголовки или сноски

Однако вы можете найти их с помощью структуры xml, как описано в https://github.com/python-openxml/python-docx/issues/1

Или, может быть, лучшее решение показано на Python: Есть ли способ добавить сноску в текстовый документ?

Если я понимаю это решение, он предлагает создать шаблон с нужной вам сноской, а затем загрузить его в python. Это не будет «динамично», хотя, скорее всего, это не то, что вы ищете.

Похоже, в 2014 году один из разработчиков python-docx разговаривал по телефону https://groups.google.com/forum/#!topic/python-docx/4iQoFG2X03I, где он сказал, что не будет работать над проектом в течение нескольких месяцев. Возможно, вы могли бы попытаться связаться с ним там или через основной docx сайт и помочь ему собрать модуль (чтобы вам не приходилось самостоятельно заниматься всей обработкой xml). В противном случае вам придется найти другое решение (вы упомянули Node.js, но я не знаю об этом, поэтому не могу помочь). Желаем удачи!

...