일련의 압축되지 않은 파일에서 압축된 복사본으로 북마크를 전송하고 싶습니다 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
(모두 같은 폴더에 있다고 가정합니다.)
추신: 이 질문은 이미 알고 있는 북마크 복사보다 스크립팅에 관한 것입니다. 제목을 바꿔볼까?