Использование сценария оболочки для извлечения количества слайдов в файле .ppt - PullRequest
0 голосов
/ 17 октября 2018

Я нашел эту реализацию в JAVA, но мне было интересно, можно ли получить количество слайдов в ppt-файле?Если это так, будет ли это похоже на выполнение той же операции в файлах pptx?

-Просмотреть каталог, в котором находится файл сценария -Detect, и подсчитать количество слайдов в файле ppt. -Нажмите это число и добавьте его в файл CSV.

Я нашел bashскрипт, который будет делать что-то похожее, но для файлов PDF

#!/bin/bash 
saveIFS=$IFS
IFS=$(echo -en "\n\b")

myFiles=($(find . -name "*.pdf"))
totalPages=0

echo "file path, number of pages" > log_3.csv
for eachFile in ${myFiles[*]}; do
  pageCount=$(mdls $eachFile | grep kMDItemNumberOfPages | awk -F'= ' '{print $2}')
  size=${#pageCount}

  if [ $size -eq 0 ]
  then
    # these files had no entry for kMDItemNumberOfPages
    # comment out the next line to not list these files
    echo $eachFile : \*\* Skipped - no page count \*\*
  else
    # comment out the next line if you don't want to see a count for each file
    echo $eachFile, $pageCount >> log_3.csv
    totalPages=$(($totalPages + $pageCount))

  fi
done

echo "Total number of pages, ${totalPages}" >> log_3.csv
echo Total pages: $totalPages

IFS=$saveIFS

Можем ли мы изменить этот код, чтобы он работал с файлами ppt?

Спасибо!

1 Ответ

0 голосов
/ 18 октября 2018

Позвольте мне ответить на половину вашего вопроса.
Что касается файлов pptx, вы можете получить количество слайдов с помощью:

#!/bin/bash

function pagecount() {
    local pptx=$1
    local pagecount line
    while read -r line || [[ -n "$line" ]]; do
        if [[ "$line" =~ \<Slides\>([0-9]+)\</Slides\> ]]; then
            pagecount="${BASH_REMATCH[1]}"
        fi
    done < <(unzip -j -p "$pptx" "docProps/app.xml")
    echo "$pagecount"
}

for file in *.pptx; do
    count=$(pagecount "$file")
    echo "${file} : ${count} pages"
done

Как и в случае других файлов MS Office 2007+ (docx), xlsx, ...), pptx формат файла - это просто сжатые zip XML-файлы.Вы можете найти количество слайдов в файле docProps / app.xml в виде <Slides>n</Slides>.
Приведенный выше код работает, чтобы распаковать docProps / app.xml в стандартный вывод и затем проанализировать его для свойства Slides.

Что касается файлов ppt, формат файла полностью отличается от формата pptx, и вам может потребоваться ввести какой-либо внешний инструмент (ы) (wvWare или что-то подобное) для его обработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...