画像(jpg、pngなど)をPDFにバッチ変換したい。それらを直接PDFに変換するのは簡単です:
convert in.jpg out.pdf
ただし、出力ページサイズ、余白、横向きと縦向きの間の回転の設定など、いくつかのオプションが必要です。試行錯誤の後、私は思いついた:
convert -rotate "90>" -page A4+0+0 -gravity center in.jpg out.pdf
これにより、画像はA4ページの中央に配置され、横向きと縦向きの間で自動的に回転しますが、595x842未満の小さな画像でのみ機能します。 595x842はA4ページに割り当てられたピクセル単位の解像度であるため、大きな画像は壊れます。ネット上で読んで、-density
オプションはA4ページのピクセル数を増やすための潜在的なソリューションかもしれませんが、私はそれを機能させることができませんでした。
Imagemagick以外のソリューションももちろん歓迎します。
1つの回避策は、画像生成とPDF変換を分割することです。最初にconvert
を介して画像をA4 @ 300dpi(3508x2479など)に変換し、sam2pを使用してそれらをPDFに変換し、次にsam2p_pdf_scaleを使用してA4に変換します。
convert -rotate "90>" -scale 3508x2479 -border 64x64 -bordercolor white in.png out.png
sam2p out.png out.pdf
sam2p_pdf_scale 595 842 out.pdf
編集:より完全なスクリプト:
#!/bin/sh
A4_WIDTH=2479
A4_HEIGHT=3508
H_MARGIN=64
V_MARGIN=64
WIDTH=$((${A4_WIDTH} - ${H_MARGIN} * 2))
HEIGHT=$((${A4_HEIGHT} - ${V_MARGIN} * 2))
for i in "$@"; do
TMP="/tmp/$(uuidgen).png"
echo "$i"
convert \
-rotate "90>" \
-scale "${WIDTH}x${HEIGHT}" \
-border "${H_MARGIN}x${V_MARGIN}" -bordercolor white \
-gravity center \
-extent "${A4_WIDTH}x${A4_HEIGHT}" \
-gravity center \
-font helvetica -pointsize 80 \
-fill white -draw \
"Push graphic-context
translate $((${A4_WIDTH}/2 - 160)), 0
rotate 90
text -2,-2 '$i'
text -2,2 '$i'
text 2,-2 '$i'
text 2,2 '$i'
pop graphic-context
" \
-fill black -draw \
"Push graphic-context
translate $((${A4_WIDTH}/2 - 160)), 0
rotate 90
text 0,0 '$i'
pop graphic-context
" \
"$i" "$TMP"
sam2p "$TMP" "${i}.pdf"
sam2p_pdf_scale 595 842 "${i}.pdf"
done
# EOF #
その他の回答 :
ls *.jpg | sed -r 's/(.*)\.(\w{3,4})/\1.\2 \1.pdf/' | xargs -n2 sam2p 2>&1 | grep OutputFile | Perl -pe 's/.*: //' | xargs pdfjoin --outfile out.pdf
http://convertjpgpdf.net で実際にご覧ください。