Как определить количество страниц в документах odt, doc, docx и других офисных из CLI?
Найти количество страниц документа PDF легко из командной строки:
pdfinfo sample.pdf | grep ^Pages:
... но я не смог найти аналогичный метод для odt
файлы и другие офисные документы.
Есть ли способ программно определить количество страниц этих документов?
3 ответа
Спасибо за все ответы, всем. С вашей помощью мне удалось составить список команд, которые могут извлечь количество страниц практически из всех соответствующих офисных документов:
DOCX / PPTX
unzip -p 'sample.docx' docProps/app.xml | grep -oP '(?<=\<Pages\>).*(?=\</Pages\>)'
unzip -p 'sample.pptx' docProps/app.xml | grep -oP '(?<=\<Slides\>).*(?=\</Slides\>)'
Примечание: unzip
может быть установлен с sudo apt-get install unzip
,
DOC/PPT
wvSummary sample.doc | grep -oP '(?<=of Pages = )[ A-Za-z0-9]*'
wvSummary sample.ppt | grep -oP '(?<=of Slides = )[ A-Za-z0-9]*'
Примечание: wvSummary
(с учетом регистра!) является частью wv
пакет. Установите его с sudo apt-get install wv
,
ODT
unzip -p sample.odt meta.xml | grep -oP '(?<=page-count=")[ A-Za-z0-9]*'
pdfinfo sample.pdf | grep -oP '(?<=Pages: )[ A-Za-z0-9]*'
Замечания: pdfinfo
это часть poppler-utils
и должен прийти предустановленным на Ubuntu.
DJVU
djvused -e "n" sample.djvu
Замечания: djvused
является частью djvulibre-bin
пакет и может быть установлен с sudo apt-get install djvulibre-bin
,
unzip -p document.odt meta.xml | grep -o 'page-count="[0-9]*"'
Я не нашел способ извлечь odt
информация о файле как pdfinfo
делает, но вы можете создать быстрый скрипт для использования pdfinfo
с odt
файлы, конвертируя каждый файл odt в PDF, а затем удаляя конвертированный файл, если вы не собираетесь его использовать:
libreoffice --headless --invisible --convert-to pdf sample.odt
pdfinfo sample.pdf | grep ^Pages:
rm sample.pdf
Надеюсь, что это помогло вам.