현재 디렉토리의 모든 PDF를 PNG로 변환

현재 디렉토리의 모든 PDF를 PNG로 변환

.pdf현재 디렉터리의 모든 파일을 파일로 변환 하는 Bash 스크립트를 작성하고 싶습니다 .png.

예를 들어:

$ls .
a.pdf b.pdf

$./pdf2png.sh
Converting pdfs to pngs
a.pdf -> a.png
b.pdf -> b.png

최선의 시도는 다음과 같습니다.

#!/bin/bash
convert -verbose -density 500 -resize '800' a.pdf a.png
convert -verbose -density 500 -resize '800' b.pdf b.png

답변1

당신이 가지고 있다면진짜이상한 이름, 줄 바꿈이나 백슬래시 등이 포함된 이름은 다음과 같이 할 수 있습니다.

find . -type f -name '*.pdf' -print0 |
  while IFS= read -r -d '' file
    do convert -verbose -density 500 -resize 800 "${file}" "${file%.*}.png"
  done

당신이 던지는 모든 것을 처리할 수 있어야 합니다.

사용 팁:

  • find ... -print0: find결과가 널 문자로 구분되어 인쇄되므로 개행 문자를 처리할 수 있습니다.
  • IFS=: 공백을 처리하기 위해 단어 분할을 비활성화합니다.
  • read -r: 백슬래시가 포함된 파일을 처리할 때 백슬래시 이스케이프 문자의 해석을 비활성화합니다.
  • read -d '': find의 출력을 처리하고 개행 문자가 있는 파일 이름을 올바르게 처리하려면 레코드 구분 기호를 널 문자로 설정하십시오.
  • ${file%.*}.png: 쉘에 내장된 기능을 사용합니다.문자열 조작 기능확장 프로그램을 제거하세요.

답변2

for다음과 같이 bash 루프를 사용할 수 있습니다 .

#!/bin/bash
for pdfile in *.pdf ; do
  convert -verbose -density 500 -resize '800' "${pdfile}" "${pdfile%.*}".png
done

답변3

mogrify일괄 변환을 사용하고 .pdf현재 디렉토리의 모든 크기를 조정할 수 있습니다 .

mogrify -verbose -density 500 -resize 800 -format png ./*.pdf

다른 format(이 경우 -format png)을 사용하는 경우 원본 .pdf파일은 변경되지 않고 출력 파일의 이름은 동일하지만 확장자는 지정된 확장자로 변경됩니다 format.

답변4

Bash 사용에만 국한되지 않는 경우 Python 스크립트를 사용하여 .pdf현재 디렉터리의 모든 파일을 고해상도 .png이미지로 변환할 수 있습니다. 다른 입력/출력 이미지 유형 또는 convert.

#! /usr/bin/env python

import os

def main():
    dir_list = os.listdir('.')
    for full_file_name in dir_list:
        base_name, extension = os.path.splitext(full_file_name)
        if extension == '.pdf': # then .pdf file --> convert to image!
            cmd_str = ' '.join(['convert',
                                '-density 400',
                                full_file_name,
                                base_name + '.png'])
            print(cmd_str)  # echo command to terminal
            os.system(cmd_str)  # execute command

if __name__ == '__main__':
    main()

관련 정보