मैं एसवीजी को लिनक्स पर पीडीएफ में कैसे परिवर्तित कर सकता हूं


126

मैं लिनक्स पर पीडीएफ में एसवीजी (लैटिन पाठ के कुछ शब्द और कुछ सरल वेक्टर ग्राफिक्स वाले) को कैसे परिवर्तित करूं?

मैंने Ubuntu ल्यूसिड पर इंकस्केप 0.47 की कोशिश की, लेकिन यह कुछ उप-ग्राफिक्स को बेतरतीब ढंग से आगे बढ़ाता है, और यह आउटपुट पीडीएफ में कुछ पंक्तियों को छोटा बनाता है। तो यह आउटपुट बेकार है, क्योंकि ग्राफिक्स पूरी तरह से अलग दिखता है।

मैंने Google क्रोम 16 में एसवीजी खोलने और इसे पीडीएफ में प्रिंट करने की कोशिश की, लेकिन यह सभी रंगों को विकृत करता है, और यह कुछ तत्वों को भी हटा देता है। (एसवीजी स्क्रीन पर ठीक दिखाई देता है, लेकिन प्रिंट पूर्वावलोकन में यह पहले से ही खराब है और उत्पन्न पीडीएफ भी खराब है।)

मैं एसवीजी को रोकना या प्रस्तुत करना नहीं चाहता। एक समाधान जो एसवीजी को बिटमैप छवि में परिवर्तित करता है और फिर एम्बेडेड छवि के साथ एक पीडीएफ बनाता है, मेरे प्रश्न का उत्तर नहीं है। (FYI Inscape 0.47 रेंडर करता है कि टेक्स्ट बहुत ही बदसूरत तरीका है, एंटीएलियासिंग के बिना, जब PNG को रेंडर किया जाता है।)

मेरे पास अन्य विकल्प क्या हैं?


1
यदि आपके पास बदलने के लिए बस कुछ छवियां हैं, तो आपको कुछ ऑनलाइन कन्वर्टर्स का उपयोग करना आसान हो सकता है। मैंने CloudConvert की कोशिश की और इसने SVG के आधे फ़ाइल साइज़ के साथ बहुत अच्छा काम किया।
फ्रैंक

जवाबों:


134

rsvg-convert ने SVG के लिए वह चाल चली जिसे मैं परिवर्तित करना चाहता था:

$ sudo apt-get install librsvg2-bin
$ rsvg-convert -f pdf -o t.pdf t.svg

rsvg-convert -f pdfSVG को व्यवस्थित नहीं करता है, और यह फोंट एम्बेड करता है और कम हो जाता है (कम से कम यह एरियल फ़ॉन्ट के उपयोग किए गए वर्णों को एम्बेड करता है)। कभी-कभी फ़ॉन्ट एम्बेडिंग विफल हो जाता है (उदाहरण के लिए LMRoman17 फ़ॉन्ट), और पूरी फ़ॉन्ट फ़ाइल जनरेट की गई पीडीएफ में कॉपी हो जाती है।

उबंटू ल्यूसिड पर निर्भरता:

  • libcairo.so.2
  • libgobject-2.0.so.0
  • libgthread-2.0.so.0
  • libglib-2.0.so.0
  • librsvg-2.so.2
  • libpthread.so.0
  • libc.so.6

डिफ़ॉल्ट रूप से, libcairo को libX11 की आवश्यकता होती है, इसलिए rsvg-convert को हेडलेस सिस्टम में इंस्टॉल करना मुश्किल हो सकता है।

नोट: आदमी का पेज rsvg-convertबताता है कि टूल हमेशा रैस्टोर करता है, लेकिन यह सच नहीं है। मैनुअल बस अप्रचलित है। कभी-कभी आपका svg जनरेट करने वाला टूल आंशिक रूप से svg इमेज को तेज कर सकता है, जो आपको गुमराह भी कर सकता है।


4
यह बहुत सारी निर्भरताएँ हैं जो मैं यहाँ देख रहा हूँ: cairo, libgphoto, gtk3, libsane ... ओह, ठीक है, अगर यह काम करता है ...
ShiDoiSi

4
@ Ayberk faultzgür यह इंकस्केप की गलती है - जब आप एक इंकस्केप प्रोजेक्ट को सेव करते हैं, तो यह डिफ़ॉल्ट रूप से इसे एसवीजी के रूप में सेव करेगा, लेकिन एसवीजी इसे सेव करता है जिसमें नॉनस्टीक इंक्सपैक-विशिष्ट डेटा का एक गुच्छा शामिल होता है जो अक्सर अन्य प्रोग्राम को गड़बड़ कर सकता है। आपको केवल एसवीजी के रूप में बचत करने के बजाय एक एसवीजी के रूप में निर्यात करने की आवश्यकता है ।
AJMansfield

2
खोज करने में कुछ समय बच सकता है: Suse-Systems पर युक्त पैकेज rsvg-convertको कहा जाता है rsvg-view
ट्रेंडफिशर

1
यह मेरे लिए काम करता है और pdf की गुणवत्ता svg के समान है। इससे पहले यह पीडीएफ में बदलने के लिए इमेजमैजिक का उपयोग कर रहा था और गुणवत्ता विशेष रूप से एसवीजी के लिए खराब थी।
प्रतीक सोनी

1
दुर्भाग्य से, यह macOS पर फोंट एम्बेड नहीं करता है।
ओरफिश

79

यह Ubuntu Lucid पर काम करता है:

$ sudo apt-get install inkscape
$ inkscape t.svg --export-pdf=t.pdf

बिना GUI ( DISPLAY=) के , बिना हेड-मोड के भी कमांड-लाइन इनक्सस्केप इनवोकेशन काम करता है । हालाँकि, इंस्पेक्टर स्थापित करने से X11 सहित बहुत सारी निर्भरताएँ स्थापित हो जाती हैं।

कृपया ध्यान दें कि यदि कोई त्रुटि होती है, तो भी इंक्सस्केप की निकास स्थिति हमेशा 0 होती है, इसलिए इसके स्टाडर के लिए देखें।

inkscape --shellएक बैच में कई दस्तावेजों को परिवर्तित करने के लिए भी उपयुक्त है। यह प्रत्येक फ़ाइल के लिए धीमे Inkscape स्टार्टअप समय से बचा जाता है:

$ (echo t.svg --export-pdf=t.pdf;
   echo u.svg --export-pdf=u.pdf) |
  DISPLAY= inkscape --shell

एसवीजी को सरल बनाने के लिए इंकस्केप भी उपयोगी है:

$ DISPLAY= inkscape t.svg --export-plain-svg=t.plain.svg

2
दुर्भाग्य से यह ओएस एक्स पर काम नहीं करता है। फिर भी, अच्छा जवाब।
कोनराड रुडोल्फ

3
ओपी ने निर्दिष्ट किया कि इंकस्केप में बग्स का प्रतिपादन था; यह मेरे अनुभव से मेल खाता है।
डायलन थर्स्टन

3
HomeXw का उपयोग करके OSX पर, आप brew install inkscapeइन दिनों का उपयोग करके इंक्सस्केप स्थापित कर सकते हैं । परिणामस्वरूप /usr/local/bin/inkscapeमेरे लिए X11.app चलाने के बिना काम किया।
एलेक्स श्रोडर

2
Inkscape ओएस एक्स dmgपर अपनी वेबसाइट पर वितरित से स्थापित किया जा सकता है , और फिर दो प्रतीकात्मक लिंक बनाने के बाद कमांड लाइन से कॉल किया जा सकता है: ln -s ~/Applications/Inkscape.app/Contents/Resources/bin/inkscape ~/bin/inkscapeऔर इसी तरह inkscape-bin( ~/binआपके में है $PATH) के लिए।
Ioannis फिलिपिपिडिस

2
आप इसे -zया --without-guiतो बैच मोड में चलाने के लिए Inkscape के साथ (या ) ध्वज का उपयोग कर सकते हैं (कोई विंडो नहीं खुलेगी)।
अर्टिफैक्ट 2

8

मैंने OSX और उबंटू पर सफलतापूर्वक काहिराएसवीजी का उपयोग किया है।

pip install cairosvg
cairosvg in.svg -o out.pdf

काह्रोएसवीजी प्रलेखन


यहां तक ​​कि अजगर-बाइंडिंग भी हैं जिनका आप उपयोग कर सकते हैं। दुर्भाग्य से मैंने पाया कि यह विधि बल्कि सीमित है, अर्थात बहुत सारी svg विशेषताएँ समर्थित नहीं हैं।
बोडो

7

मुझे Inkscape (0.47 भी) से पीडीएफ तक प्रिंट करने और पीडीएफ (लेकिन थोड़ा अलग) के रूप में सहेजने से अच्छे परिणाम मिलते हैं, लेकिन यह हाथ पर ग्राफिक पर निर्भर हो सकता है।

कम रिज़ॉल्यूशन वाला एक विकल्प (मैंने इसे सुधारने के लिए किसी भी स्विच की कोशिश नहीं की है)

 convert file.svgz file.pdf 

convertImageMagickपैकेज का हिस्सा है । Rasterizer एक और कार्यक्रम है:

 rasterizer -m application/pdf file.svgz -d file.pdf 

यह जानने के लिए कि आपके सिस्टम में कौन से प्रोग्राम svgs को हैंडल करते हैं, बस कोशिश करें

 apropos -s 1 svg

इन कार्यक्रमों के लिए मेनपेज को स्पष्ट करना चाहिए, svg को pdf में परिवर्तित करने के लिए कार्यक्रम उपयोगी है।


18
आपके सुझावों के लिए धन्यवाद। FYI convertमूल प्रश्न का उत्तर नहीं है, क्योंकि convertSVG को बिटमैप छवि में बदल देता है, और मूल प्रश्न एक समाधान की तलाश में था जो ऐसा नहीं करता है।
पीटी

5

https://superuser.com/a/79064/19956 में gsvg , GhostPDL का हिस्सा बताया गया है।

मैंने Ubuntu Lucid पर gsvg ghostpdl-9.06 की कोशिश की है, लेकिन यह Inkscape द्वारा उत्पन्न दो SVGs के लिए असफल रहा। एक एसवीजी में पाठ था, दूसरे में केवल वेक्टर ग्राफिक्स थे। यह Inkscape एक्सटेंशन या क्लिप-पथ के बिना सरल ग्राफिक्स के लिए भी विफल रहा। इसलिए मैं gsvg को प्रयोग करने योग्य SVG-to-PDF कन्वर्टर नहीं मानता।


3

मैक ओएस पर (यह देखते हुए कि आपके पास पहले से ही काढ़ा स्थापित है) मैं करता हूं:

$ brew install cairo libffi python3
$ pip3 install cairosvg

$ cairosvg -o blah.pdf ./blah.svg 

समान लिनक्स पर काम करना चाहिए, लेकिन इसके बजाय apt-get के साथ।


1
यह पीडीएफ आउटपुट के साथ भी काम करता है। इसके विपरीत , svg2pdfऔर rsvg-convertयह फोंट को संरक्षित रखता है।
ओरफिश

धन्यवाद, मैंने गलत एक्सटेंशन डाल दिया। मैंने उदाहरण को अद्यतन किया।
एड्रिएल जूनियर

एक जादू की तरह काम किया!
मेयरोप

1

मैं सोच रहा हूं कि इसका उल्लेख पहले क्यों नहीं किया गया, लेकिन मैंने अलग-अलग svg-> पीडीएफ कन्वर्टर्स का एक गुच्छा परीक्षण किया और पाया कि सबसे अच्छा एक हेडलेस क्रोम है । यह मेरे लिए सबसे सटीक परिणाम पैदा करता है। क्रोम पर स्विच करने से पहले, मैं इंकस्केप बग के साथ लड़ने की कोशिश कर रहा था, लेकिन उनमें से कई बहुत गंभीर हैं और मैं इसके बारे में बहुत कुछ नहीं कर सकता (पारदर्शिता बग, गलत फोंट, आदि)।

 chrome --headless --disable-gpu --print-to-pdf="output.pdf" "input.svg"

कस्टम पीडीएफ साइज (A4 डिफॉल्ट) का उपयोग करने के लिए इसे कुछ ट्वीक्स की आवश्यकता होती है, लेकिन मैं सीएसएस और एसवीजी विशेषताओं के साथ कुछ गॉगलिंग और खेलने के बाद कस्टम आकार सेट करने में सक्षम था (स्टैकओवरफ्लो पर इस उत्तर की जांच करें )


सुपर उपयोगकर्ता में आपका स्वागत है! बाहरी लिंक टूट या अनुपलब्ध हो सकते हैं, जिस स्थिति में आपका उत्तर सिर्फ एक टीज़र होगा। यहां तक ​​कि लिंक अभी भी काम करते हैं, लोगों को समाधान खोजने में मदद करने के लिए सामग्री को अनुक्रमित नहीं किया जा सकता है। कृपया अपने उत्तर के भीतर आवश्यक जानकारी शामिल करें और एट्रिब्यूशन और आगे पढ़ने के लिए लिंक का उपयोग करें। धन्यवाद।
फिक्सर 1234

डब्लूएसएल से, आपको कुछ अतिरिक्त झंडों की आवश्यकता हैchromium --no-sandbox --disable-setuid-sandbox --headless --disable-gpu --print-to-pdf=output.pdf input.svg
टिक्कॉपर्स

0

Svg फ़ाइल को Image Viewer(इसके अलावा आईज ऑफ गनोम eog) खोलें और इसे पीडीएफ फाइल में प्रिंट करें (कहें image.pdf) और pdf2psकमांड का उपयोग करके उस पीडीएफ को एप्स में बदलें । सरल!

विस्तृत कदम:

  1. स्थापित करें Image Viewer(यदि आप का उपयोग अत्यधिक संभावना नहीं कदम नहीं करता है, तो अभी तक किया gnome)

    sudo apt-get install eog
    
  2. Svg फाइल को खोलें eogऔर इसे image.pdfफाइल में प्रिंट करें ।

  3. (वैकल्पिक) पीडीएफ फाइल से आसपास के व्हाट्सएप को निकालें:

    pdfcrop image.pdf
    

    इससे image-crop.pdfआसपास के व्हाट्सएप हट जाएंगे ।

  4. फसली पीडीएफ को ईपीएस में परिवर्तित करें ( image.pdfयदि आप पीडीएफ फसल नहीं करते हैं तो सीधे उपयोग करें )

    pdf2ps image-crop.pdf image.eps
    

बस!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.