Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
2 / 2 / 0
Регистрация: 07.05.2014
Сообщений: 32

Не был произведен вызов CoInitialize. Или конвертация docx -> pdf в Python(Django)

22.05.2018, 13:06. Показов 4177. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, уважаемые форумчане.

Делаю проект на Django, если вкратце - по заполненной пользователем форме формируется файл .docx. Но мне необходимо его переконвертировать в pdf для более удобной работы. Наиболее популярный вариант - с использованием comtypes.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import sys
import os
import comtypes.client
 
wdFormatPDF = 17
 
in_file = os.path.abspath(sys.argv[1])
out_file = os.path.abspath(sys.argv[2])
 
word = comtypes.client.CreateObject('Word.Application')
doc = word.Documents.Open(in_file)
doc.SaveAs(out_file, FileFormat=wdFormatPDF)
doc.Close()
word.Quit()
Но вся загвоздка в объявлении переменной(создание объекта) "word = comtypes.client.CreateObject('Word.Appli cation')". При запуске сервера, она создаётся. Но все последующие запросы он обращает в ошибку. "[WinError -2147221008] Не был произведен вызов CoInitialize".
На некоторых форумах писали, что помогает объявление pythoncom.CoInitialize(), но это очень старые записи. Да и сам модуль pythoncom отсутствует в библиотеках.

Буду благодарен за помощь.
Либо какой-то ещё способ преобразования docx - pdf
Миниатюры
Не был произведен вызов CoInitialize. Или конвертация docx -> pdf в Python(Django)  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.05.2018, 13:06
Ответы с готовыми решениями:

Не был произведен вызов CoInitialize при использовании CppWebBrowser
В программе 2 формы: 1 - основная программа 2 - заставка, пока проводится подготовка к работе программы соответственно 1ая...

Не произведен вызов CoInitialize
Приветствую Использую постороннюю библиотеку, которая через свою функцию возвращает строку XML. Дело в том, что она может вернуть одну...

Небыл произведён вызов CoInitialize
При оброщение к функции внешней DLL, каторая открывает окно, получаю ошибку: Небыл произведён вызов CoInitialize Что это значит?

4
Эксперт Python
 Аватар для dondublon
4648 / 2068 / 366
Регистрация: 17.03.2012
Сообщений: 10,168
Записей в блоге: 6
22.05.2018, 15:50
А сразу генерить pdf можно? Это куда проще.

Цитата Сообщение от zllo Посмотреть сообщение
Да и сам модуль pythoncom
Ну если сервак у вас на никсах - то неудивительно.

Цитата Сообщение от zllo Посмотреть сообщение
Либо какой-то ещё способ преобразования docx - pdf
Последние версии ворда, не помню, с какой именно, умеют сохранять pdf штатным образом. Если нормально заведёте доступ к приложению-ворду, то вызвать это сохранение не составит проблемы.

Добавлено через 2 минуты
А, посмотрел на картинку, видно, что на винде крутится.

Тогда для образца советую найти книжку, что-то типа "Python programming for Win32", она есть в сети, там рабоота с com\ole, разумеется, освещается.
0
2 / 2 / 0
Регистрация: 07.05.2014
Сообщений: 32
22.05.2018, 16:04  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
А сразу генерить pdf можно?
файл генерится через docx-mailmerge. Ворд и именно эта библиотеке были использованы по причине наличия требований к стилями. Поищу тогда как можно сразу pdf генерировать. Может и лучше будет.
0
Эксперт Python
 Аватар для dondublon
4648 / 2068 / 366
Регистрация: 17.03.2012
Сообщений: 10,168
Записей в блоге: 6
22.05.2018, 16:45
zllo, чёта я не понял, почему именно docx-mailmerge, обычно, чтобы просто сгенерить документ, используют python-docx.
Так-то да, если первый шаг генерации вам подконтролен, то word лучше исключить, как ненужную сложность. Наверняка в pdf стили тоже есть.
0
2 / 2 / 0
Регистрация: 07.05.2014
Сообщений: 32
22.05.2018, 16:56  [ТС]
dondublon, я когда только сел с этим разбираться, пытался использовать как раз python-docx, но наткнулся на какое-то сильное противоречие, может сейчас смогу уже избежать его) да и со стилями надо там возиться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.05.2018, 16:56
Помогаю со студенческими работами здесь

Python 3.7 Конвертация PDF в DOCX
Приветствую, друзья и коллеги! Нужна помощь. Возникла необходимость замены некоторых элементов текста в PDF документах. Знаю про...

Конвертация Docx в PDF
День добрый, Суть такая, что с помощью формы я создаю docx документ, с колонтитулами, картинками, разными стилями. Времени убил на...

Конвертация PDF в DOCX
Ребята, нужна помощь. Задача: Имеется множество PDF файлов. Необходимо в них сделать некоторые корректировки в тексте, в заголовках...

Как получить адрес сервера, откуда был произведен вызов?
кто знает, подскажите, как получить адрес сервера, откуда был произведен вызов. комбинация redirect + http_referer не прокатывает, на моем...

Конвертация .docx в .pdf через PHPWord
Как конвертнуть файл .docx в .pdf а затем вывести его на страницу? Если есть другие варианты вывода .docx файла на страницу,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru