Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PHP, Perl, Python Новый топик    Ответить
 Сохранить форматирование файла .docx  [new]
арт2010
Member

Откуда:
Сообщений: 188
Задача - заменить некоторые куски текста в файле .docx. Заменяться будет только текст, в том числе текст может быть в таблице. Соответственно должно полностью сохраниться исходное форматирование - к примеру, разметка страницы, шрифт и размер текста,
положение рисунков и таблиц в тексте
При этом выходной файл может быть получен 2 путями:
1. Редактированием исходного файла с последующим сохранением
2. Созданием нового файла и копированием в него результата
Сейчас использую 2-й вариант при помощи python-docx
document = Document()
doc = docx.Document(source)
for paragraph in doc.paragraphs:
     # Обработка текста попараграфно
     par = paragraph.text
     document.add_paragraph(par)
document.save(result)  

Как можно догадаться, форматирование не сохраняется, картинки и таблицы вообще не переносятся
Подскажите, как решить задачу?
16 авг 17, 16:30    [20728800]     Ответить | Цитировать Сообщить модератору
 Re: Сохранить форматирование файла .docx  [new]
арт2010
Member

Откуда:
Сообщений: 188
Блин, неужели никто не может помочь? Может кто подскажет тогда, как пойти по первому пути с редактированием исходного файла:
1. Считываем параграф в исходном файле (картинки и таблицы пропускаем)
2. Производим манипуляции над текстом
3. Пишем исправленный параграф на место исходного в тот же файл
И самый главный вопрос - если пойти этим путем, то форматирование и стили текста (шрифт и его размер, отступы, выравнивание итд итп) сохранятся автоматически или их опять таки придется переносить принудительно?
18 авг 17, 15:34    [20734576]     Ответить | Цитировать Сообщить модератору
 Re: Сохранить форматирование файла .docx  [new]
vkle
Member

Откуда: Самара
Сообщений: 13474
Как вариант, конечно. Не самый простейший и быстрый, но вполне рабочий.

1. Распаковываем исходный docx как зип-архив. Получится кучка файлов.
2. Разбираемся, куда-что там понапихали, находим желаемые тексты.
3. В нужных местах вносим нужные изменения.
4. Упаковываем файлы обратно в архив.
18 авг 17, 18:48    [20735106]     Ответить | Цитировать Сообщить модератору
Все форумы / PHP, Perl, Python Ответить