2011-09-28 16 views
6

convert sürümünü kullanıyorum ImageMagick 6.6.2-6 2011-03-16 ve görüntüden ölçeklenmemiş ve ortalanmış bir görüntüden bir A4 pdf oluşturmak için kullanmak istiyorum.Imagemagick'i kullanarak PDF'de bir .jpg resmi mi ortalıyorsunuz?

koşuyorum aşağıdaki (Overlaying Images with ImageMagick bir değişiklik gibi):

# generate a 100x100 JPG with just red color 
convert -size 100x100 xc:red red.jpg 

# generate PDF from JPG 
convert -page A4 xc:white red.jpg -gravity center -composite -format pdf out.pdf 

... ama temelde hiçbir şey gösterir? Aynı şey

Not

  • Sadece 'convert -page A4 red.jpg out.pdf' çalıştığını ... bir png görüntü için olur - ancak resim merkezli değildir;

... ancak, JPEG stream içeriğini gömmek convert istiyorum gerçekten ince işliyor, 'convert -page A4 -gravity center red.png out.pdf' görüntü png ise

  • (-gravity center görüntü göstermemeye neden olur) doğrudan - dolayısıyla, önce JPG'yi PNG'ye dönüştürmek istemem.

    Yani, doğrudan bir A4 PDF sayfasında bir JPG resmi ortalamak için convert kullanmak mümkün olurdu? herhangi bir cevap için şimdiden

    Çok teşekkürler,
    Şerefe!

     

    EDIT2: @John Keyes cevabı yukarıdaki örnekte için çalışır; görüntü PDF boyutundan daha "küçük" olduğu - Görüntü .:,

    $ convert -size 1228x1706 -background \#f44 -rotate 45 gradient:\#f00-\#fff red.jpg 
    $ identify red.jpg 
    red.jpg JPEG 2075x2075 2075x2075+0+0 8-bit DirectClass 120KB 0.000u 0:00.000 
    

    örn büyüktür ancak eğer ... o zaman başarısız olur. Ancak, "if you change -extent to 50x50, then play with -gravity, you'll see changes" - çıkıyor, soru şu: hangi derecesini değiştirirsiniz, görüntününki - veya son PDF'ninki?

    Eh, çıkıyor - nihai PDF kapsamı ... convert gördüğü gibi sayfasını kontrol, bu boyutu bulmak için ise: Magick::Geometry - not Ancak bu "A4+43+43> gibi "Postscript sayfa boyutu özellikleri" "Ne yazık ki, bu bağlamda çökmesine neden convert neden ... Ama en azından boyutu için ilgili numaraları (595x842) sayfadan kopyalanabilir; ...

    convert -page A4 -gravity center -resize 595x842 -extent 595x842 red.jpg out.pdf 
    

    ve aslında -extent parçası gerçekten gerekli değildir - -resize kısım büyük resim gösterisi olması önemli biridir .. burada Ancak

    , sorun: ve nihayet bu işleri görüntü dahil yeniden örneklenmiş gibi görünüyor - ancak, ben sadece sayfayı uydurmak için ölçeklendirilmiş göstermek istiyorum, ama orijinal JPG akışı dosyanın içine eklenmiş gibi olurdu ..Bu yüzden soru hala kısmen :) açık

    DÜZENLEME olduğunu tahmin: İlgili:

  • cevap

    4

    aşağıdaki işleri :

    Eğer "dosya" sırasını değiştirirseniz
    convert -page A4 red.jpg -gravity center -format pdf out.pdf 
    

    ve çok çalışır:

    convert -page A4 red.jpg xc:white -gravity center -composite -format pdf out.pdf 
    

    Ben red.jpg merkezlidir ancak beyaz bunun üstüne çizilir düşünüyorum.

    +0

    Awesome - thanks, @John Keyes! Ben yemin edebilirdim, zaten bir şeyle çalışmıştım -format pdf ile başarısız oldum; ama ilk komut satırını deniyorum ve harika çalışıyor! :) Tekrar teşekkürler - şerefe! – sdaau

    +0

    Rica ederim. ImageMagick seçeneklerinin tavşan deliğine birçok kez gittim. –

    +1

    Bu, büyük resimler için çalışmıyor (Sürüm 6.9.2), durumda benim durumumda 5 MByte JPEG. Sadece boş bir sayfa oluşturur. "Yerçekimi merkezi" seçeneği olmadan çalışır, ancak elbette, ortalanmış değildir. Açık bir konu gibi görünüyor: https://www.imagemagick.org/discourse-server/viewtopic.php?t=22759 – mischka

    0

    Eh, bu imagemagic'den dışında, ama burada güvenilir bir sayfadaki görüntüleri yerleştirmek gibi görünüyor tikz paketini (How to define a figure size so that it consumes the rest of a page? #14514 kullanarak) kullanarak, Lateks bir çözümdür ve bunları tam olarak korumak:

    % note: need to run pdflatex twice!! First time generates blank pages! 
    % convert -size 1228x1706 -background \#f44 -rotate 45 gradient:\#f00-\#fff red.jpg 
    % convert -size 595x1400 xc:red redlong.jpg 
    
    \documentclass[a4paper]{letter} 
    
    \usepackage{graphicx} 
    \usepackage[hmargin=0.5cm,vmargin=0.5cm]{geometry} % sets page margins 
    
    \usepackage{tikz} 
    \usetikzlibrary{calc} 
    
    \newcommand{\imagepage}[1]{ 
    \tikz[overlay,remember picture]\coordinate (image-start); \par 
    \vfill 
    \null\hfill 
    \begin{tikzpicture}[overlay,remember picture] 
        \path let \p0 = (0,0), \p1 = (image-start) in 
        node [inner sep=0pt,outer sep=0pt,anchor=center] at (current page.center) {% 
         \pgfmathsetmacro\imgheight{\y1-\y0}% 
         \includegraphics[height=\imgheight pt,width=\textwidth,keepaspectratio]{#1}% 
        }; 
    \end{tikzpicture}% 
    } 
    
    
    
    \begin{document} 
    
    
    % there must be a \n\n after {letter!} 
    \begin{letter} 
    
        \imagepage{red.jpg} 
    \end{letter} 
    
    
    \begin{letter} 
    
        \imagepage{redlong.jpg} 
    \end{letter} 
    
    % see also \resizebox{\textwidth}{!}{\includegraphics{red.jpg}} 
    \end{document} 
    

    Not letter documentclass, her görüntünün ayrı bir sayfada bölünmesine izin vermek için kullanılır ..

    İlgili konular