PDFを動的に生成しています。シェル スクリプトを使用して PDF のページ数を確認するにはどうすればよいですか?
18917 次
10 に答える
60
追加パッケージなし:
strings < file.pdf | sed -n 's|.*/Count -\{0,1\}\([0-9]\{1,\}\).*|\1|p' \
| sort -rn | head -n 1
pdfinfo の使用:
pdfinfo file.pdf | awk '/^Pages:/ {print $2}'
pdftk の使用:
pdftk file.pdf dump_data | grep NumberOfPages | awk '{print $2}'
次のように、pdfinfo を使用して、すべての PDF の合計ページ数を再帰的に合計することもできます。
find . -xdev -type f -name "*.pdf" -exec pdfinfo "{}" ";" | \
awk '/^Pages:/ {n += $2} END {print n}'
于 2013-02-06T18:53:23.740 に答える
10
imagemagick ライブラリは、identify と呼ばれるツールを提供します。これは、出力の行数をカウントすることと組み合わせて、目的の結果を得ることができます...imagemagick は、brew を使用して osx に簡単にインストールできます。
これは、シェル変数にキャプチャして画面にダンプする機能的なbashスクリプトです...
#/bin/bash
pdfFile=$1
echo "Processing $pdfFile"
numberOfPages=$(/usr/local/bin/identify "$pdfFile" 2>/dev/null | wc -l | tr -d ' ')
#Identify gets info for each page, dump stderr to dev null
#count the lines of output
#trim the whitespace from the wc -l outout
echo "The number of pages is: $numberOfPages"
そして、それを実行した結果...
$ ./countPages.sh aSampleFile.pdf
Processing aSampleFile.pdf
The number of pages is: 2
$
于 2013-02-06T14:16:28.357 に答える
8
これは、コマンドラインを直接使用するためのバージョンです (pdfinfo に基づく):
for f in *.pdf; do pdfinfo "$f" | grep Pages | awk '{print $2}'; done
于 2019-01-20T17:50:44.953 に答える
2
私が見つけた古いスクリプト(kshで)を掘り出しました:
#!/usr/bin/env ksh
# Usage: pdfcount.sh file.pdf
#
# Optimally, this would be a mere:
# pdfinfo file.pdf | grep Pages | sed 's/[^0-9]*//'
[[ "$#" != "1" ]] && {
printf "ERROR: No file specified\n"
exit 1
}
numpages=0
while read line; do
num=${line/*([[:print:]])+(Count )?(-)+({1,4}(\d))*([[:print:]])/\4}
(( num > numpages)) && numpages=$num
done < <(strings "$@" | grep "/Count")
print $numpages
于 2015-05-06T13:55:03.643 に答える