Scripting

將書籤從一個 pdf 複製到另一個的腳本

  • April 18, 2022

我想將書籤從一系列未壓縮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 ';'

假設您的文件名中沒有奇怪的東西,例如換行符,這樣的事情可能會起作用:

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 這個問題實際上更多是關於腳本而不是關於復製書簽;你已經弄清楚了那部分。或許換個標題?

引用自:https://unix.stackexchange.com/questions/699359