我在JAVA中发现了this的实现,但是我想知道是否可以在ppt文件中获取幻灯片数量?如果是这样,是否类似于在pptx文件中执行相同的操作?
-浏览脚本文件所在的目录 -检测并计算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文件一起使用吗?
谢谢!
答案 0 :(得分:0)
让我回答您一半的问题。
关于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文件。您可以在<Slides>n</Slides>
形式的docProps / app.xml文件中找到幻灯片计数。
上面的代码用于将docProps / app.xml解压缩为stdout,然后将其解析为Slides
属性。
关于ppt
文件,文件格式与pptx
完全不同,您可能需要引入一些外部工具(wvWare
或类似工具)来处理它。