Найти - Пользователи
Полная версия: Как из питона определить количество символов в файле .doc word 2003?
Начало » Python для экспертов » Как из питона определить количество символов в файле .doc word 2003?
1
beliy_shum
Проблема в том чтобы посчитать количество символов с пробелами, так чтобы оно совпадало с тем что word показывает.

Подскажите любой вариант.
Антиворд не подошел мне, т.к. он меняет делает преобразование форматирования и изменяет количество пробелов.

А если у кого завалялся готовый кусочек кода то буду беспредельно благодарен!

П.С. даже скрипт http://mainspy.ru/kolichestvo_simvolov правильно считает, а у меня не получается. Если бы можно было какой-то функцией достать из ворда текст с таким же преобразованием, которое совершается при копировании из ворда в обычный текстовый редактор, то это меня бы спасло.
ZAN
А задача позволяет воспользоваться win api?
f_evgeny
beliy_shum
Проблема в том чтобы посчитать количество символов с пробелами, так чтобы оно совпадало с тем что word показывает.
Уточняю задачу топик стартера
Работаем через UNO
Вот такой код работает.

    import uno
local = uno.getComponentContext()
resolver = local.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", local)
context = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
desktop = context.ServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop", context)
url = "file:////home/asuperevod/asuperevod/lib/python/asulib/primer/001_ru_3338_3893.doc"
url = "file:///" + fname
document = desktop.loadComponentFromURL(url,"_blank", 0, ())
document.dispose()
Не можем добраться до числа символов документа. Вроде по интроспекции добрались от ‘document’ до структуры, где должна быть информация, но она пустая. Может метод какой нужно выполнить перед чтением, а может вообще не то.

Следующая строка печатает пустую tuple:
print document.DocumentInfo.DocumentStatistic
()
А может это совсем не то?
f_evgeny
ZAN
А задача позволяет воспользоваться win api?
Не хочется еще и wine тащить в задачу.
beliy_shum
ZAN
А задача позволяет воспользоваться win api?
К сожалению нет.
f_evgeny
Решение найдено. Подсказали на
http://user.services.openoffice.org/en/forum/

import uno
local = uno.getComponentContext()
resolver = local.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", local)
context = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
desktop = context.ServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop", context)
url = "file:////home/asuperevod/asuperevod/lib/python/asulib/primer/001_ru_3338_3893.doc"
document = desktop.loadComponentFromURL(url,"_blank", 0, ())

print document.CharacterCount

document.dispose()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB