img2pdf:ページを正しい順序でインポートする

img2pdf:ページを正しい順序でインポートする

img2pdf何百もの画像を非常に迅速に処理し、次のコマンドを使用してPDFにすることができます。

img2pdf *.tif -o out.pdf

しかし、私の場合、ページの順序は間違っています。konsoleKubuntu 20.04でこのコマンドを実行しました。

イメージファイルは次の形式で名前が付けられます(ドルフィンファイルマネージャで名前が変更されます)。

Vol_1.tif
Vol_2.tif
Vol_3.tif
...
Vol_430.tif

生成されたPDFは、呼び出されるファイル/ページから始まります。Vol_100.tifこれは意味があります(1または11の前に100が表示されます)。その後、呼び出しの後ろにいる人Vol_119.tifVol_11.tifVol_129.tif後ろにいる人はVol_12.tif...Vol_189.tif後ろにいる人はですVol_18.tif

どうやって進めますか?

ベストアンサー1

最善の方法は、Perlユーティリティを使用してファイル名を変更し、すべてが同じ数のゼロで埋められた数字(、、、renameなどを含むディストリビューションごとに異なる名前)を持つようにすることです。たとえば、perl-renameprenamefile-rename

rename -n 's/^(Vol_)(\d+)/sprintf "%s%03i", $1, $2/e' Vol_*.tif

3桁のゼロパディングが不十分な場合、または%03iに変更します%04i%05i

この-nオプションを使用すると、名前が変更された項目のみが表示されます。必要に応じて動作すると確信している場合は、削除して-nファイル名を自動的に変更するか(エラー以外には出力しない)、-v詳細な操作に変更してください。

を使用すると、-v次の出力が表示されます。

$ rename -v 's/^(Vol_)(\d+)/sprintf "%s%03i", $1, $2/e' Vol_*.tif
Vol_1.tif renamed as Vol_001.tif
Vol_2.tif renamed as Vol_002.tif
Vol_50.tif renamed as Vol_050.tif
Vol_60.tif renamed as Vol_060.tif

find別のオプションは、ファイル名を自然にソートすることです。したがって、GNUおよび(またはNUL区切り文字をサポートする他のバージョン)をsort使用する必要があります。xargs

例えば

find . -name 'Vol_*.tif' -print0 | sort -z -V | xargs -0r img2pdf -o out.pdf

GNUソート-Vオプションは「バージョン」ソートです。これは自然ソートの名前です。

おすすめ記事