現在のディレクトリにあるすべての.pdf
ファイルを.png
ファイルに変換するbash
スクリプトを記述したいと思います。例えば:
$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
really奇妙な名前、改行やバックスラッシュなどを含む名前がある場合は、次のようにすることができます。
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
に結果をnull文字で区切って出力させます。改行を扱いましょう。IFS=
:空白を処理するために必要なWord分割を無効にします。read -r
:バックスラッシュを含むファイルを処理するために、バックスラッシュエスケープ文字の解釈を無効にします。read -d ''
:レコード区切り文字をヌル文字に設定して、findの出力を処理し、改行文字を含むファイル名を正しく処理します。${file%.*}.png
:シェルに組み込まれている 文字列操作能力 を使用して、拡張機能を削除します。次のようにbash for
ループを使用できます。
#!/bin/bash
for pdfile in *.pdf ; do
convert -verbose -density 500 -resize '800' "${pdfile}" "${pdfile%.*}".png
done
mogrify
を使用して、すべてのバッチ変換とサイズ変更を行うことができます.pdf
s、現在のディレクトリ:
mogrify -verbose -density 500 -resize 800 -format png ./*.pdf
別のformat
を使用する場合(この場合は-format png
) オリジナル .pdf
sはそのままにされ、出力ファイルはformat
で指定された拡張子に変更される拡張子を除いて同じ名前になります。
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()