2011-09-28 9 views
6

मैं convert संस्करण छविमैजिक 6.6.2-6 2011-03-16 का उपयोग कर रहा हूं, और मैं इसे एक छवि से ए 4 पीडीएफ उत्पन्न करने के लिए उपयोग करना चाहता हूं, जहां छवि गैर-स्केल और केंद्रित होगी।Imagemagick का उपयोग कर पीडीएफ में एक .jpg छवि को केंद्रित करना?

मैं चल रहा हूँ निम्नलिखित (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' काम करता है - लेकिन छवि केंद्रित नहीं है;
  • छवि png है (-gravity center छवि को दिखाने के लिए नहीं का कारण बनता है), 'convert -page A4 -gravity center red.png out.pdf' वास्तव में अच्छा काम करता है

... हालांकि, मैं convert चाहें जेपीईजी धारा की सामग्री को एम्बेड करने के लिए सीधे - इसलिए, मैं जेपीजी को पहले पीएनजी में परिवर्तित नहीं करना चाहता हूं।

तो, क्या ए 4 पीडीएफ पेज में सीधे जेपीजी छवि को केंद्र में रखने के लिए convert का उपयोग करना संभव होगा?

किसी भी उत्तर के लिए अग्रिम में बहुत धन्यवाद,
चीयर्स!

 

EDIT2: @ जॉन केयस जवाब ऊपर के उदाहरण के लिए काम करता है; जहां छवि पीडीएफ आकार की तुलना में "छोटी" है - हालांकि अगर छवि बड़ी है, उदाहरण के लिए:

$ 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 की हद तक ... कि आकार के रूप में convert इसे देखता है पृष्ठ की जाँच ढूंढने के लिए, है: Magick::Geometry - हालांकि, ध्यान दें कि "पोस्टस्क्रिप्ट पृष्ठ आकार विनिर्देशों" "A4+43+43> की तरह दुर्भाग्य से, इस संदर्भ में क्रैश होने के लिए convert का कारण बनता है ... लेकिन कम से कम आकार के लिए संबंधित संख्या (5 9 5x842) पृष्ठ से कॉपी की जा सकती है; और अंत में यह काम करता है:

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

... और वास्तव में, -extent हिस्सा वास्तव में जरूरत नहीं है - -resize हिस्सा बड़ी छवि दिखाने के लिए महत्वपूर्ण है ..

हालांकि, समस्या यहाँ यह है कि इसमें शामिल छवि को दोबारा दिखाना प्रतीत होता है - हालांकि, मैं इसे स्केल करना चाहता हूं, इसलिए यह पृष्ठ को फिट करता है, लेकिन अन्यथा मूल जेपीजी स्ट्रीम को फ़ाइल में डालने की इच्छा होगी ..तो मुझे लगता है कि सवाल अब भी आंशिक रूप से खुला :)

संपादित है: संबंधित:

उत्तर

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

बहुत बढ़िया - @ जॉन कीज! मैंने शपथ ली थी कि मैंने पहले ही '-फॉर्मेट पीडीएफ' के साथ कुछ कोशिश की थी और मैं असफल रहा; लेकिन मैं पहले कमांड लाइन की कोशिश कर रहा हूं और यह बहुत अच्छा काम करता है! :) फिर से धन्यवाद - चीयर्स! – sdaau

+0

आपका स्वागत है। मैं कई बार ImageMagick विकल्पों के खरगोश छेद नीचे चला गया है। –

+1

यह मेरे मामले में 5 MByte JPEG को परिवर्तित करने में बड़ी छवियों (संस्करण 6.9.2) के लिए काम नहीं करता है। यह सिर्फ एक खाली पृष्ठ पैदा करता है। "गुरुत्वाकर्षण केंद्र" विकल्प के बिना यह काम करता है, लेकिन निश्चित रूप से केंद्रित नहीं है। एक खुला मुद्दा लगता है: 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 दस्तावेज़ क्लास का उपयोग यह अनुमति देने के लिए किया जाता है कि प्रत्येक छवि अलग पृष्ठ पर विभाजित हो ..

संबंधित मुद्दे