Perintah Shell untuk menghitung halaman dalam PDF (selain pdftk)?

4

Saya telah menggunakan ini untuk mendapatkan hitungan halaman PDF dalam skrip shell di OS X:

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

(dimana $i adalah nama file PDF)

Namun, ada saat-saat ketika itu tampaknya tidak berhasil, jadi saya ingin mencari cara lain untuk melakukannya.

TJ Luoma
sumber

Jawaban:

5

Anda harus bisa menggunakannya mdls untuk melihat atribut metadata untuk PDF:

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

jordanmerrick
sumber
Catatan: Solusi ini hanya berfungsi jika file target berada pada volume / lokasi yang diindeks. Secara pribadi, saya memiliki beberapa lokasi yang dikecualikan sehingga bagi saya ini tidak akan berfungsi dalam beberapa kasus. Yang mengatakan, itu adalah cara yang lebih baik daripada harus menyalurkannya berkali-kali seperti yang ditunjukkan dalam OP. Ini bernilai +1 sekalipun! :)
user3439894
1
Lebih mudah lagi: mdls -raw -name kMDItemNumberOfPages Saya tidak menyadari ada atribut untuk ini. Semua file saya ada di perangkat HFS + yang diindeks, sehingga akan berfungsi dengan baik.
TJ Luoma
4

Lagi exiftool larutan:

cd /path/to/pdf/directory
exiftool -T -filename -PageCount -s3 -ext pdf .
fd0
sumber
Ini IMHO yang sangat bagus. Ini (1) sederhana (2) menghasilkan output bersih: nama file [spasi] jumlah halaman (3) dapat memproses semua file pdf dalam sebuah dir bahkan jika ada file lain (4) mungkin akan bekerja pada komputer dengan lokasi yang berbeda ( 5) portabel untuk sistem lain (menggunakannya di Linux).
Stéphane Gourichon
Solusi hebat! Menggunakan ini sekarang untuk menghitung halaman dalam ribuan file secara rekursif dan menyalurkan output ke file. Perintahnya seperti ini: exiftool -T -r -filename -PageCount -s3 -ext pdf . > pages.txt
flomei
0

Apakah file diindeks atau tidak, namun jika file target tidak berada pada volume / lokasi yang diindeks maka di sini adalah alternatif untuk solusi yang sangat baik yang disajikan oleh jordanmerrick.

Saya baru saja mencoba menggunakan ini exiftool dan jika hanya jumlah halaman yang Anda inginkan sebagai angka maka ini berfungsi:

exiftool "$i" | grep 'Page Count' | cut -c35-
user3439894
sumber
0

MDL juga tidak bekerja untuk saya. Saya melakukan ini pada Mac, tapi saya berharap itu akan sama pada bash atau shell yang sama. Dengan Mac saya sudah menginstal homebrew jadi saya cukup mengetik perintah "homebrew install exiftool" terlebih dahulu.

Ini skrip yang saya jalankan, Anda bisa mengaturnya untuk keperluan Anda. Saya memiliki seluruh folder file PDF dan saya ingin menghitung jumlah halaman pada masing-masing dari mereka sehingga saya melihatnya melalui file dan mencetak nama file dan halaman dengan, di antaranya

#!/bin/sh

FILES=/path/to/files/*
for f in $FILES
do
    fn=$(basename "$f")
    printf "$fn"
    pg=$(exiftool "$f" | grep 'Page Count' | cut -c35-)
    printf ",$pg\n"
done
RKaneKnight
sumber
0

Kamu bisa memakai qpdf utilitas baris perintah untuk menghitung jumlah halaman dalam dokumen PDF. qpdf dapat diinstal melalui Homebrew melalui menjalankan perintah berikut:

brew install qpdf

Setelah diinstal, untuk menghitung jumlah halaman yang dieksekusi:

qpdf --show-npages file.pdf

Geek
sumber