Программное обеспечение подсчета страниц в документах Microsoft Word в Linux

Мне нужно получить количество страниц из текстовых документов. Я протестировал множество библиотек и сценариев (apache poi, сценарии perl, некоторые приложения для Linux и некоторые другие), и единственным рабочим решением было установить Microsoft Office с Wine и получить доступ к OLE с помощью perl. Мне удалось это сделать, но, похоже, я не могу использовать его на сервере из-за проблем с лицензированием ...

Проблема с apachepoi и другими решениями, обеспечивающими доступ к информации о текстовых документах, связана с неполнотой некоторых документов. Свойство pageCount в сводке документа иногда отсутствует (это часто бывает с документами odt, сохраненными как doc и более ранними документами).

Есть ли способ на самом деле подсчитывать страницы (а не только получать информацию из сводки) без установки Microsoft Office на сервере?


person Community    schedule 28.04.2009    source источник


Ответы (2)


Я собирался сказать wvSummary, но я думаю, что здесь используются метаданные, о которых вы говорите. Я не уверен, что есть способ получить количество страниц без фактического размещения документа. Поэтому вам, возможно, придется прибегнуть к использованию API-интерфейсов для работы с настоящим Office-совместимым приложением, таким как OpenOffice или AbiWord.

person Matthew Flaschen    schedule 28.04.2009
comment
Я пробовал vwSummary, и да, он использует сводку документа. Я забыл упомянуть OpenOffice, есть Python и Java API, и получить фактическое количество страниц довольно просто. Единственная проблема с этим подходом - открытие файлов doc в OpenOffice - иногда он может отличаться от того же файла, открытого в MS Office. - person ; 28.04.2009
comment
Да, OpenOffice иногда отличается. Помните, что для .doc нет стандарта. Так что на самом деле ответа нет. Не существует стандартного способа подсчета страниц, потому что нет стандартного способа визуализации файла документа. Если вам необходимо получить такое же количество страниц, как Word, то вам, очевидно, придется использовать Word. - person Matthew Flaschen; 28.04.2009

Если вы доверяете сводке документа, вместо использования wvSummary вы можете просто открыть файл и выполнить поиск в Regex по запросу «nofpages (\ d +)». Группы [1] будут содержать количество страниц.

Поскольку Word всегда сохраняет сводку при сохранении, я думаю, что это довольно безопасно, если вы знаете, что документ последний раз сохранялся в Word, что, по моему опыту, происходит в 99% случаев.

person PRMan    schedule 09.12.2009
comment
За исключением глючных версий Word; см. stackoverflow.com/a/28596596/3588161 - person Fizz; 19.02.2015