.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()