Страницы

Поиск по вопросам

воскресенье, 2 февраля 2020 г.

Добавление изображения в файл .docx с помощью python

#python #файлы #изображения


Обычными средствами не получается добавить изображение в конец файла.
Код

old_image = open('Pupils.png', 'r').read()
new_image = open('new_pro.docx', 'a')
new_image.write(old_image)
new_image.close()


Какие есть способы решить эту задачу? 
    


Ответы

Ответ 1



Python хорош тем что на каждый случай есть библиотека. В данном случае это либа docx. Сначала установим её (на Linux нужны права root) pip install python-docx А затем просто добавим изображение. from docx import Document document = Document("./foo.docx") document.add_picture('./image-filename.png') document.save("./foo.docx")

Ответ 2



К библиотеке python-docx предлагаю добавить docxtpl. Работает очень просто. Нужно сделать шаблон и в нем разметить место куда чего вставлять. На гите можно посмотреть примеры разметки. Примеры

Ответ 3



*.docx - это Zip-архив со служебными файлами, описывающими документ. Служебные файлы в формате XML, поэтому вы не можете добавить в документ изображение приведенным способом (просто дописав байты в архив). Для решения вам необходимо использовать специальные библиотеки, которые берут парсинг XML на себя и гарантируют корректность получившегося документа согласно стандарту. Пример такой библиотеки: python-docx (pip install python-docx). Пример из официальной документации: from docx import Document doc = Document("") doc.add_picture('image-filename.png') Вместо полного пути к изображению вы можете использовать file-like объект (например, BytesIO): with open("yo.png", "rb") as img: doc.add_picture(img) При необходимости вы можете изменять размер изображения. В этом деле главное помнить, что в документе все размеры - это сантиметры, дюймы и производные, а не пиксели.

Комментариев нет:

Отправить комментарий