Wie zähle ich Seiten in mehreren PDF-Dateien?

12

Ich habe gerade ein PDF-Lehrbuch erhalten, das aus 20 separaten PDFs (nach Kapiteln) mit quasi regulären Namen besteht. Gibt es eine Möglichkeit, die Seiten im Buch zu zählen, ohne jede Datei zu öffnen (oder die Eigenschaften durchzugehen)?

[Lösung kann für Windows oder Ubuntu sein]

ysap
quelle
Haben Sie Adobe Acrobat?
Wizlog
Möchten Sie die Seitenzahl für jede PDF-Datei und / oder das gesamte Buch?
Franck Dernoncourt
@FranckDernoncourt - danke. Die Frage wurde vor etwa 7 Jahren gestellt. Wenn Sie eine Lösung für beide von Ihnen genannten Methoden haben, warum fügen Sie hier nicht einfach eine Antwort hinzu, damit sich zukünftige Benutzer, die dieses Problem untersuchen, darauf beziehen können?
Ysap

Antworten:

19

Mit pdfinfodieser ist das Beste , was ich tun konnte: Um die Anzahl der Seiten pro Datei zu drucken:

for i in *.pdf; do echo $i && pdfinfo "$i" | grep "^Pages:"; done

So drucken Sie die Summe aller Seiten in allen Dateien:

for i in *.pdf; do pdfinfo "$i" | grep "^Pages:"; done | awk '{s+=$2} END {print s}'

Unter Ubuntu pdfinfoist im Paket enthalten poppler-utils. Verwenden Sie zum Installieren Folgendes:

sudo apt-get install poppler-utils

Unter Windows können Sie cygwin verwenden. pdfinfoist im Paket enthalten poppler.

Der Hochstapler
quelle
+1 pdfinfo ist genau das, wonach ich gesucht habe. Ich benötige es für die Seitenanzahl in meinem Duplexdruck-Emulationspaket.
Joe
Ich musste dem Befehl grep das Flag --text hinzufügen, da pdfinfo aus irgendeinem Grund etwas zurückgab, das grep als Binärdatei interpretierte. Also grep --text "^ Pages:", nur für den Fall, dass jemand anderes das gleiche Problem hat.
KIAaze
4

Ich weiß, dass es zu spät ist, aber ich habe gerade eine bessere und einfachere Lösung dafür gefunden.

Herunterladen und Installieren von sourceforge "pdf split and merge"

Legen Sie alle Ihre Dateien darauf ab, und auf dem Bildschirm wird ein Tabellenkalkulationsbericht über die Anzahl der Seiten und Informationen der einzelnen Dateien erstellt.

Wählen Sie das aus, kopieren Sie es, fügen Sie es in Excel oder Opencalc ein.

user339697
quelle
4

Ich habe eine Anwendung nur dafür gemacht. Sie ist in Java geschrieben und funktioniert auf allen Betriebssystemen. Schau es dir hier an:

https://github.com/hamiltino/multiple-pdf-counter/releases

Führen Sie die Anwendung am besten über terminal ( java -jar) aus, um sicherzustellen, dass sie ordnungsgemäß funktioniert.

Legen Sie die JAR-Datei in das Verzeichnis, in dem Sie die Seitenzahl aller PDFs abrufen möchten. Sie durchläuft auch die Unterordner. Sie müssen nicht alle PDFs dort platzieren, wo sich die JAR-Datei befindet, da sie die Unterordner durchlaufen, in denen Sie die JAR-Datei ablegen JAR-Datei. Doppelklicken Sie auf das JAR. Wenn viele PDFs vorhanden sind, kann es einige Zeit dauern. Schließlich wird eine TXT-Datei im selben Verzeichnis wie die JAR-Datei ausgegeben und die Seitenzahl wird angezeigt.

HashTables
quelle
Gute Idee. Gute Verbesserungen wären: 1) Öffnen, das nur über die Befehlszeile erfolgt (keine Benutzeroberfläche), und 2)
Ausgeben
1

Gehen Sie in Adobe Acrobat Pro zu Datei > PDF erstellen > Dateien zu einer einzigen PDF zusammenführen . Fügen Sie dann Dateien hinzu und wählen Sie die gewünschten Dateien aus. Klicken Sie auf Kombinieren und sehen Sie, wie viele Seiten das endgültige PDF enthält.

Wizlog
quelle
Vielen Dank an @wizlog - dies erfordert wirklich die voll funktionsfähige (und teure) Software, nicht wahr?
Ysap
Ich habe gerade Ihren Kommentar zu der Frage bemerkt. Nein, ich habe es nicht.
Ysap
1

Hallo, ich weiß nicht, wie man es unter Windows machen kann, aber unter Linux Bash sollte es damit funktionieren

PDFS = `ls * .pdf`
Zähler = 0
für i in $ PDFS
tun
   ((counter + = `pdfinfo internship_report.pdf | sed -ns | Seiten: [^ 0-9] * \ ([0-9] * \). * | \ 1 | p'`))
erledigt
echo $ counter

Beste Grüße Kenny

phschoen
quelle
Danke, Kenny. Dies kann funktionieren, wenn der Dateiname die Dateien durchsuchen würde. Trotzdem upvoted.
Ysap
0

Ein anderer Ansatz mit parallelund expr(sollte auf Multiprozessor-Maschinen etwas schneller sein):

expr $( echo -n 0; parallel "pdfinfo {} |sed -n 's/Pages: */ + /p'" ::: *pdf|tr '\n' ' ')
Matteo Gamboz
quelle