Toplu olarak bir görüntüyü PDF'ye nasıl dönüştürebilirim?


10

Görüntüleri (jpg, png, vb.) PDF'ye toplu olarak dönüştürmek istiyorum. Bunları doğrudan PDF'ye dönüştürmek kolaydır:

convert in.jpg out.pdf

Ancak, çıktı sayfası boyutunu, kenar boşluklarını ve yatay ve dikey biçim arasındaki döndürmeyi ayarlamak gibi daha fazla seçeneğe ihtiyacım var. Biraz deneme yanılma işleminden sonra:

convert -rotate "90>" -page A4+0+0  -gravity center in.jpg  out.pdf

Bu, görüntüyü A4 sayfasında ortalar ve otomatik olarak yatay ve dikey arasında döner, ancak yalnızca 595x842'nin altındaki küçük görüntülerle çalışır. 595x842, bir A4 sayfasına atanan piksel cinsinden çözünürlük gibi göründüğü için daha büyük resimler bozulur. İnternette okumak, -densityseçenek bir A4 sayfasındaki piksel sayısını artırmak için potansiyel bir çözüm olabilir, ancak çalıştıramadım.

Imagemagick dışındaki çözümler de elbette hoş karşılanır.

Yanıtlar:


8

Çözümlerden biri, görüntü oluşturma ve PDF dönüştürme işlemlerini ayırmaktır. Önce görüntüleri convertA4 @ 300dpi'ye (yani 3508x2479) dönüştürün, daha sonra PDF'ye dönüştürmek için sam2p kullanın ve ardından A4'e dönüştürmek için sam2p_pdf_scale kullanın.

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

Düzenleme: Daha eksiksiz bir komut dosyası:

#!/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

Diğer cevaptan biraz daha temiz :

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 adresinde iş başında görün .


Bu güzel çalışıyor! Teşekkürler! Ayrıca "geçici", birleştirilmiş olmayan pdf'leri kaldırmayı da mümkün mü?
Rasmus
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.