5 votes

Commande shell pour compter les pages dans un PDF (autre que pdftk) ?

J'ai utilisé ceci pour obtenir le nombre de pages des PDF dans des scripts shell sur OS X :

pdftk "$i" dump_data | grep NumberOfPages | awk '{print $2}' | tr -dc '[0-9]'

(où $i est le nom du fichier PDF)

Cependant, il arrive parfois que cela ne fonctionne pas, donc j'aimerais trouver une autre façon de le faire.

6voto

Michael Zhou Points 167

Encore une autre solution exiftool :

cd /chemin/vers/le/dossier/pdf
exiftool -T -filename -PageCount -s3 -ext pdf .

5voto

jordanmerrick Points 51

Vous devriez pouvoir utiliser mdls pour afficher les attributs de métadonnées d'un PDF :

mdls -n kMDItemNumberOfPages "$i" | cut -c24-

4voto

Geek Points 141

Vous pouvez utiliser qpdf utilitaire en ligne de commande pour compter le nombre de pages dans un document PDF. qpdf peut être installé via Homebrew en exécutant la commande suivante :

brew install qpdf

Une fois installé, pour compter le nombre de pages, exécutez :

qpdf --show-npages file.pdf

1voto

user3439894 Points 52496

Que le fichier soit indexé ou non, cela fonctionne cependant si le fichier cible ne réside pas sur un volume ou un emplacement qui est indexé, voici une alternative à l'excellente solution présentée par jordanmerrick.

J'ai juste essayé cela en utilisant exiftool et si vous voulez juste le nombre de pages en tant que nombre, cela fonctionne :

exiftool "$i" | awk -F": " '/Page Count/{print $2}'

0voto

B H Points 139

Mdls n'a pas fonctionné pour moi non plus. J'ai fait cela sur un Mac, mais je m'attends à ce que cela fonctionne de la même manière sur n'importe quel shell bash ou similaire. Avec le Mac, j'ai déjà installé homebrew donc j'ai simplement tapé la commande "homebrew install exiftool" en premier.

Voici le script que j'ai exécuté, vous pouvez le configurer pour vos besoins. J'avais un dossier entier de fichiers PDF et je voulais le nombre de pages de chacun d'eux donc je l'ai fait parcourir les fichiers et imprimer le nom du fichier et le nombre de pages avec une virgule entre les deux

#!/bin/sh

FILES=/chemin/vers/les/fichiers/*
for f in $FILES
do
    fn=$(basename "$f")
    printf "$fn"
    pg=$(exiftool "$f" | grep 'Page Count' | cut -c35-)
    printf ",$pg\n"
done

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X