shell脚本将PDF文件合并到一个文件夹中并使用pdf文件名作为书签

shell脚本将PDF文件合并到一个文件夹中并使用pdf文件名作为书签

我有一系列文件夹,其中包含员工姓名及其 pdf 格式的文档。我想合并并创建一个 PDF 文件,其中 pdf 文档在 pdf 文件中索引为书签。

我尝试使用 PDFTK 合并文件夹中的 pdf,但是输出没有添加书签。

答案1

我为此目的创建了一个脚本。您可以.pdf通过修改heredoc选择保留扩展。

#!/usr/bin/env zsh

pages=1
bookmarks="bookmarks.txt"
tmp_pdf="tmp.pdf"

if [ -f $bookmarks ]; then
    read -p "Do you want to overwrite the bookmarks file? [y/N] " -n 1 -r
    if [[ $REPLY =~ ^[Yy]$ ]]; then
        rm $bookmarks
    else
        echo "Aborting..."
        exit 1
    fi
fi

for pdf in *.pdf; do
    cat <<- EOF >> $bookmarks
    BookmarkBegin
    BookmarkTitle: ${pdf%.pdf}
    BookmarkLevel: 1
    BookmarkPageNumber: $pages
    EOF
    page_number=$(pdftk $pdf dump_data | rg 'NumberOfPages: ' | awk '{print $2}')
    pages=$(($pages + $page_number))
done

pdftk *.pdf cat output $tmp_pdf
pdftk $tmp_pdf update_info $bookmarks output final.pdf

rm -f $tmp_pdf
rm -f $bookmarks

这个想法是:

  • 创建一个包含书签的 pdftk 信息文件
  • 调用 pdftk cat 将它们连接起来
  • 调用updateinfo添加书签
  • 删除临时文件,完成。

相关内容