希望有人能帮我解决这个问题
我正在寻找一个小脚本,它在 PDF 文件(实际上是 PDF 文件的文件夹)中进行关键字搜索,它需要返回所有页面,包括找到关键字的文件名。
我找到了以下脚本(在这里https://ubuntuforums.org/showthread.php?t=1368062):
#!/bin/bash
[ "$*" ] || { echo "You forgot a search string!" ; exit 1 ; }
found=1
for file in ./src/*.pdf ; do
[ "$file" = '*.pdf' ] && echo "No PDF files found!" && exit 1
pages=$(pdfinfo "$file" | awk '/Pages:/ { print $NF }')
for ((i=1 ; i<=$pages ; i++)) ; do
match=$(pdftotext -q -f $i -l $i "$file" - | grep -m 1 "$*")
[ "$match" ] && echo "Page $i in $file" && found=0
done
done
[ "$found" -ne 0 ] && echo "No search string matches found"
它确实返回了大部分命中,但 Adobe Acrobat Reader 和 Mac Preview 中的搜索功能确实返回了更多的匹配项。任何人都知道可能存在什么问题吗?
我的猜测是它在搜索关键字之前和/或之后的字符上失败,但这只是一个猜测。
如果它包括每页的匹配数,那就真的完美了!
答案1
我会用pdfgrep
:
pdfgrep -p "your search string" src/*.pdf
将输出匹配的页码,以及每页的计数。
这可能无法处理丢失的匹配项;其原因取决于 PDF 的构建方式(特别是文本的组合方式)。