2016-04-17 6 views
0

У меня есть папка с файлами в формате pdf. Я хочу распечатать имя файла вместе с количеством страниц, которые имеет файл pdf. Я использую macbook.Количество страниц в PDF - Mac

Я могу легко распечатать имя файла, отбросив конкретную папку на значок принтера, но получение количества страниц вместе с ним очень сложно.

Как я уже исследовал, у прожектора есть выбор количества страниц во время поиска, и то же самое было передано многими людьми на форумах, которые требуют использования программ applescript или terminal.

Есть ли простой способ получить количество страниц вместе с именем pdf-файла или же мы можем манипулировать указателем индекса, чтобы просмотреть количество страниц в качестве опции в «представлении списка».

+0

Вы против использования команд оболочки или applescript?Либо можно использовать для решения вашего запроса. – fd0

+1

Совет «много людей в форумах» является хорошим. Это самый простой способ получить эту информацию. –

ответ

3

раствор оболочки с помощью инструментов, поставляемых в OS X:

mdls -name kMDItemFSName -name kMDItemNumberOfPages ./*.pdf | cut -d= -f 2 | paste - - 
+0

Это отличное решение - попробуйте мой голос. Кстати, вам не нужно './*. Pdf' как' * .pdf'. –

0

Если вы не возражаете, используя маленький скрипт, то вы можете попробовать это:

Во-первых, установить и установить PDF Tools здесь: http://www.foolabs.com/xpdf/download.html Это даст вам очень удобный pdfinfo.

Вы можете получить информацию о файле PDF, открыв терминал и набрав:

pdfinfo "/path/to/your/file.pdf" 

... или записать результаты в файл на рабочем столе:

pdfinfo "/path/to/your/file.pdf" | egrep "^(Pages:|Title:)" > ~/Desktop/info.txt 

.. .Или сканировать папку, согласно первоначальному вопросу:

find "/path/to/your/folder" -name "*.pdf" | while read thePDFFile; do pdfinfo "$thePDFFile" | egrep "^(Pages:|Title:)" >> ~/Desktop/info.txt ; echo --- >> ~/Desktop/info.txt; done 

... очевидно, заменяющей «/ путь/к/файл/папку» ш и путь к вашей папке.

Надеюсь, что это поможет!

0

Вот еще одно решение сценарий оболочки, использует pdftk вместо pdfinfo, использует for петлю вместо того, чтобы find|while (так только найти PDF-файлы в текущей папке) и производит вкладку разделенных вывода имен и количество страниц:

for f in *.pdf ; do echo -e -n $f '\t' ; (pdftk $f dump_data|grep ^NumberOfPages) ; done 

Типичный выход:

0033-0124%2E00250.pdf NumberOfPages: 19 
hooky.pdf NumberOfPages: 1 
hunt100.pdf  NumberOfPages: 1 
huntmap.pdf  NumberOfPages: 1 
hunt.pdf NumberOfPages: 1 
map1.pdf NumberOfPages: 1 
msoas.pdf NumberOfPages: 1 
RelativeRisk.pdf NumberOfPages: 16 
0

Спасибо людям за помощь, я попробовал все вышеперечисленные решения. Pdfinfo и pdftk требовали первоначальных установок, таких как xpdf, xquartz и т. Д. И pdfinfo, и pdftk выдавали предупреждения & сообщения об ошибках, хотя оба они выдавали вывод, но пропустили имя некоторых файлов PDF. Другое дело, что pdftk не отсканировал подпапки.

Из всех команд msdl работал отлично, давал все имена файлов с количеством страниц. Он также включал файлы в подпапки.

Теперь вот еще одно решение, которое я скопировал с here. Его очень аккуратный и совершенный. На этой веб-странице есть дополнительные вложенные папки w.r.t. Вот сценарий оболочки:

#!/bin/bash 

saveIFS=$IFS 
IFS=$(echo -en "\n\b") 

myFiles=($(find . -maxdepth 1 -name "*.pdf")) 
myFileCount=${#myFiles[*]} 
totalPages=0 
i=0 

while [ $i -lt $myFileCount ] 
do 
    prettyName=$(echo ${myFiles[i]}|cut -c 3-999) 
    pageCount=$(mdls ${myFiles[i]} | grep kMDItemNumberOfPages | awk -F'= ' '{print $2}') 
    size=${#pageCount} 
    if [ $size -eq 0 ] 
    then 
     echo $prettyName : \*\* Skipped - no page count \*\* 
    else 
    # Pad the results for nice alignment of page counts 
    digitCount=${#pageCount} 
    case $digitCount in 
     1) 
      padding=" ";; 
     2) 
      padding=" ";; 
     3) 
      padding=" ";; 
     4) 
      padding=" ";; 
     *) ;; 
    esac 
    echo "$padding$pageCount: $prettyName" 

    totalPages=$(($totalPages + $pageCount)) 
    fi 

    i=$(($i + 1)) 

done 

# Pad the results for nice alignment of grand total 
digitCount=${#totalPages} 
case $digitCount in 
    1) 
     padding=" ";; 
    2) 
     padding=" ";; 
    3) 
     padding=" ";; 
    4) 
     padding=" ";; 
    *) ;; 
esac 

echo "-----------------------------------------------------------------" 
echo "$padding$totalPages: Total PDF pages in this folder" 

IFS=$saveIFS 
Смежные вопросы