将书签从一个 pdf 复制到另一个 pdf 的脚本

将书签从一个 pdf 复制到另一个 pdf 的脚本

我想将书签从一系列未压缩pdf文件传输到其压缩副本(这些副本没有原始书签)。

我知道如何使用 来一​​一做到这一点pdftk。首先我必须提取书签:

pdftk file.pdf dump_data output file.txt

然后我必须将它们传输到压缩副本:

pdftk file_mrc.pdf update_info file.txt output file_mrc_updated.pdf

(我的压缩pdf文件有该mrc后缀)。

在这种情况下,我有数百个pdf文件,以及相应的压缩pdf副本,因此我想使该过程自动化。

我找到了一种从所有文件中提取书签的方法find,但我不知道如何使用此命令将书签转储到副本上:

find . -type f ! -name "*mrc*" -exec pdftk '{}' dump_data output {}.txt ';'

答案1

假设你的文件名中没有像换行符这样的奇怪的东西,这样的东西可能会起作用:

find -type f ! -name "*mrc*" | while read file ; do pdftk "$file" dump_data output "${file%.pdf}.txt" && pdftk "${file%.pdf}_mrc.pdf" update_info "${file%.pdf}.txt" output "${file%.pdf}_mrc_updated.pdf" ; done

不过,如果您愿意,还有更易读的方法可以使用传统脚本来完成此操作。

#!/bin/bash
for file in *.pdf ; do
    if [[ "$file" =~ "mrc" ]] ; then
        continue
    fi
    commonname="${file%.pdf}"
    pdftk "$file" dump_data output "${commonname}.txt"
    pdftk "${commonname}_mrc.pdf" update_info "${commonname}.txt" output "${commonname}_mrc_updated.pdf" 
done

(假设它们都在同一个文件夹中。)

PS 这个问题实际上更多的是关于脚本编写而不是复制书签;你已经弄清楚了那部分。或许可以改一下标题?

相关内容