비슷한 이름의 PDF 파일 병합

비슷한 이름의 PDF 파일 병합

다음 형식의 PDF 파일로 채워진 폴더가 있습니다.

SI-T-xxxxxx.pdf
SI-T-xxxxxx-sol.pdf
SI-T-yyyyyy.pdf
SI-T-yyyyyy-sol.pdf
등, 중간 부분은 숫자입니다.

-sol 없이 각 파일 쌍을 하나의 PDF로 병합하는 방법을 원합니다.

터미널에서 어떻게 해야 하나요? 감사해요

답변1

pdfunite유틸리티는 필요한 작업을 수행하는 것 같습니다(Debian과 같은 Linux 배포판에서는 패키지의 일부입니다 poppler-utils.

$ pdfunite a.pdf b.pdf c.pdf combined.pdf

또 다른 옵션은 GhostScript입니다:

$ gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite =sOutputFile=combined.pdf a.pdf b.pdf c.pdf

ImageMagick은 GhostScript도 지원하므로 이미 익숙하다면 다음을 수행하세요.

$ convert a.pdf b.pdf c.pdf combined.pdf

Python은 PDF 라이브러리도 제공합니다 pdftools.

$ python3 pdftools/pdfmerge.py -o combined.pdf -d a.pdf b.pdf c.pdf

어떤 도구를 사용하든 설명하는 기준에 따라 파일을 쌍으로 묶는 방법이 필요합니다. 중괄호로 확장된 이 glob은 각 쌍의 첫 번째 항목을 가져와야 합니다.

SI-T-*{0..9}.pdf

그래서 우리는 그것을 반복할 수 있습니다:

for pdf in SI-T-*{0..9}.pdf; do
    stuff
done

첫 번째 파일 이름을 기반으로 두 번째 파일 이름을 프로그래밍 방식으로 결정할 수 있습니다.

$ pdf1='SI-T-xxxxxx.pdf'
$ pdf2="$(basename "$pdf1" .pdf)-sol.pdf"
$ printf "%s %s" "$pdf1" "$pdf2"
$ SI-T-xxxxxx.pdf SI-T-xxxxxx-sol.pdf

이제 이것을 루프에 통합해 보겠습니다.

for pdf1 in SI-T-*{0..9}.pdf; do
    pdf2="$(basename "$pdf1" .pdf)-sol.pdf"
    pdf3="$(basename "$pdf1" .pdf)-combined.pdf"
    if ! [[ -r "$pdf2" ]]; then
        printf "%s not found to merge with %s; skipping" "$pdf2" "$pdf1" >&2        
    else
        convert "$pdf1" "$pdf2" "$pdf3"
    fi
done

답변2

당신은 볼 수 있습니다이 긴 기사좀 더 자세한 논의를 원하지만 간략하게 설명하자면 다음과 같습니다.

pdftk SI-T-xxxxxx.pdf SI-T-xxxxxx-sol.pdf cat output SI-T-xxxxxx-combined.pdf

SI-T-xxxxxx.pdf 및 SI-T-xxxxxx-sol.pdf를 SI-T-xxxxxx-combined.pdf라는 파일로 결합합니다.하이퍼링크도 유지하세요.

pdftk오픈 소스이며데비안 배포판의 일부.

관련 정보