我想将书签从一系列未压缩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 这个问题实际上更多的是关于脚本编写而不是复制书签;你已经弄清楚了那部分。或许可以改一下标题?