画像をPDFにバッチ変換する方法は?


10

画像(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以外のソリューションも歓迎します。

回答:


8

回避策の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 #

2

他の答えよりも少しきれい:

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で実際の動作を確認してください


これは美しく機能します!ありがとう!「一時的な」非連結PDFを削除することもできますか?
Rasmus 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.