2011-09-28 40 views
6

我正在使用convert版本ImageMagick 6.6.2-6 2011-03-16,我想用它從圖像生成一張A4 pdf,圖像將以非縮放和居中方式生成。使用Imagemagick將.jpg圖像居中放置在PDF中?

我跑以下(作爲Overlaying Images with ImageMagick修改):

# 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 

...但是,基本上沒有什麼表示?同樣的事情發生了PNG圖像...

注意

  • 只是「convert -page A4 red.jpg out.pdf」作品 - 但圖像不居中; (-gravity center使圖像不顯示
  • 如果圖像是png,「convert -page A4 -gravity center red.png out.pdf」確實做工精細

...但是,我想convert嵌入JPEG流的內容直接 - 因此,我不想先將JPG轉換爲PNG。

那麼,是否可以使用convert將JPG圖像直接放在A4 PDF頁面中央?

非常感謝任何答案,
乾杯!

 

EDIT2:@約翰凱斯答案適用於上面的例子;其中圖像比PDF大小「小」 - 但是,如果圖像較大,例如:

$ 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 

...然後它將失敗。然而,事實證明:「if you change -extent to 50x50, then play with -gravity, you'll see changes」 - 除了問題是:其中你會改變的程度,圖像 - 還是最終的PDF?

嗯,事實證明 - 這是最終的PDF的程度......要找到大小convert看到它,檢查頁面:Magick::Geometry - 但是,請注意,「PostScript頁面大小規格的」喜歡「A4+43+43> 「不幸的是,導致convert在這種情況下崩潰......但至少可以從頁面複製大小(595x842)的相應數字;最後這個作品:

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

...實際上,是不是真的需要-extent部分 - -resize部分有大形象展示的重要的..

然而,這裏的問題是包含的圖像似乎重新採樣 - 但是,我只是想顯示它縮放,以便它適合頁面,但否則會喜歡原始JPG流插入文件..所以我想這個問題還是部分開放:)

編輯:相關閱讀:

回答

4

以下作品完美的我:

convert -page A4 red.jpg -gravity center -format pdf out.pdf 

,如果你改變了「文件」的順序它也能工作:

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

我覺得red.jpg是中心,但白色的畫在它上面。

+0

太棒了 - 非常感謝,@John Keyes!我可以發誓我已經用'-format pdf'嘗試了一些東西,但是我失敗了;但我正在嘗試你的第一個命令行,它效果很好! :)再次感謝 - 歡呼! – sdaau

+0

不客氣。我已經多次下載了ImageMagick選項的兔子洞。 –

+1

這不適用於大圖像(版本6.9.2),在我的情況下轉換5 MByte JPEG。它只是產生一個空白頁面。如果沒有「重心」選項,它當然可以工作,但不會居中。似乎是一個公開的問題:https://www.imagemagick.org/discourse-server/viewtopic.php?t = 22759 – mischka

0

那麼,這是ImageMagick的以外,但這裏是乳膠的解決方案,使用tikz包(使用How to define a figure size so that it consumes the rest of a page? #14514),這似乎可靠地將頁面上的圖像,並充分保護他們:

% 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} 

注,letter文檔類用於允許每個圖像分離在單獨的頁面上。

相關問題