Bash:搜索关键字PDF文件并返回页面

Bash:搜索关键字PDF文件并返回页面

希望有人能帮我解决这个问题

我正在寻找一个小脚本,它在 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"

它确实返回了大部分命中,但 Adob​​e Acrobat Reader 和 Mac Preview 中的搜索功能确实返回了更多的匹配项。任何人都知道可能存在什么问题吗?

我的猜测是它在搜索关键字之前和/或之后的字符上失败,但这只是一个猜测。

如果它包括每页的匹配数,那就真的完美了!

答案1

我会用pdfgrep:

pdfgrep -p "your search string" src/*.pdf

将输出匹配的页码,以及每页的计数。

这可能无法处理丢失的匹配项;其原因取决于 PDF 的构建方式(特别是文本的组合方式)。

相关内容