한 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

(모두 같은 폴더에 있다고 가정합니다.)

추신: 이 질문은 이미 알고 있는 북마크 복사보다 스크립팅에 관한 것입니다. 제목을 바꿔볼까?

관련 정보