¿Cómo puedo determinar el recuento de páginas de odt, doc, docx y otros documentos de oficina de la CLI?

13

Es fácil encontrar el recuento de páginas de un documento PDF desde la línea de comandos:

pdfinfo sample.pdf | grep ^Pages:

... pero no he podido encontrar un método similar para odtarchivos y otros documentos de Office.

¿Hay alguna manera de determinar mediante programación el recuento de páginas de estos documentos?

Glutanimato
fuente

Respuestas:

10

Gracias por todas las respuestas, a todos. Con su ayuda pude compilar una lista de comandos que pueden extraer el recuento de páginas de casi todos los documentos de Office relevantes:

DOCX / PPTX

unzip -p 'sample.docx' docProps/app.xml | grep -oP '(?<=\<Pages\>).*(?=\</Pages\>)'

unzip -p 'sample.pptx' docProps/app.xml | grep -oP '(?<=\<Slides\>).*(?=\</Slides\>)'

Nota : unzipse puede instalar con 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]*'

Nota : wvSummary(distingue entre mayúsculas y minúsculas) es parte del wvpaquete. Instalarlo con sudo apt-get install wv.

ODT

unzip -p sample.odt meta.xml | grep -oP '(?<=page-count=")[ A-Za-z0-9]*'

PDF

pdfinfo sample.pdf | grep -oP '(?<=Pages:          )[ A-Za-z0-9]*'

Nota: pdfinfoes parte de poppler-utilsy debe venir preinstalado en Ubuntu.

DJVU

djvused -e "n" sample.djvu

Nota: djvusedes parte del djvulibre-binpaquete y se puede instalar con sudo apt-get install djvulibre-bin.

Glutanimato
fuente
6
unzip -p document.odt meta.xml | grep -o 'page-count="[0-9]*"'

Ver aquí para más referencia .

Nykakin
fuente
¡Gracias por el enlace! Esa fue una lectura muy interesante. Hubiera aceptado su respuesta, pero encontré algunos otros comandos ingeniosos para otros documentos de oficina y los compilé en una respuesta propia. Espero que no te moleste.
Glutanimate
5

No encontré una manera de extraer odtla información del archivo como lo pdfinfohace, pero puede crear un script rápido para usar pdfinfocon los odtarchivos, convirtiendo cada archivo impar a PDF y luego eliminando el archivo convertido si no lo va a usar:

libreoffice --headless --invisible --convert-to pdf sample.odt
pdfinfo sample.pdf | grep ^Pages:
rm sample.pdf

Espero que esto te haya ayudado.

León
fuente