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


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

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

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

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

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


108
2018-01-22 12:17


मूल


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


जवाब:


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

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

rsvg-convert -f pdf एसवीजी को रास्टराइज नहीं करता है, और यह फ़ॉन्ट्स को एम्बेड और सबसेट करता है (कम से कम इसने एरियल फ़ॉन्ट के प्रयुक्त वर्णों को एम्बेड किया है)। कभी-कभी फ़ॉन्ट एम्बेडिंग विफल हो जाती है (उदा। 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 कहता है कि उपकरण हमेशा rasterizes, लेकिन यह सच नहीं है। मैनुअल बस अप्रचलित है। कभी-कभी आपका svg जनरेटिंग टूल आंशिक रूप से svg छवि को रास्टराइज कर सकता है, जो आपको भी गुमराह कर सकता है।


118
2018-01-22 12:28



यह बहुत सारी निर्भरता है जो मैं यहां देख रहा हूं: कैरो, libgphoto, gtk3, libsane ... ओह ठीक है, अगर यह नौकरी करता है ... - ShiDoiSi
क्या यह एक cmyk रंग अंतरिक्ष में परिवर्तित हो जाएगा? - justingordon
@ AyberkÖzgür यह इंकस्केप की गलती है - जब आप एक इंकस्केप प्रोजेक्ट को सहेजते हैं, तो यह डिफ़ॉल्ट रूप से इसे एक एसवीजी के रूप में सहेज लेगा, लेकिन एसवीजी में यह सहेजता है जिसमें गैर मानक मानक इंकस्केप-विशिष्ट डेटा का एक समूह शामिल होता है जो अक्सर अन्य प्रोग्रामों को गड़बड़ कर सकता है। आपको निर्यात बस के बजाय एक एसवीजी के रूप में बचत एक एसवीजी के रूप में। - AJMansfield
कुछ समय खोज कर सकते हैं: सॉस-सिस्टम्स पर पैकेज जिसमें rsvg-convert कहा जाता है rsvg-view। - Trendfischer
यह मेरे लिए काम करता है और पीडीएफ की गुणवत्ता svg के समान है। इससे पहले यह पीडीएफ में कनवर्ट करने के लिए छविमैजिक का उपयोग कर रहा था और गुणवत्ता विशेष रूप से svg के लिए खराब थी। - Pratik Soni


यह उबंटू ल्यूसिड पर काम करता है:

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

उपरोक्त कमांड लाइन इंकस्केप आमंत्रण एक जीयूआई के बिना, हेडलेस मोड में भी काम करता है (DISPLAY=)। हालांकि, इंस्केप स्थापित करना X11 सहित कई निर्भरताओं को स्थापित करता है।

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

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

$ (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

66
2017-11-16 20:23



दुर्भाग्यवश यह ओएस एक्स पर काम नहीं कर रहा है। फिर भी, अच्छा जवाब। - Konrad Rudolph
ओपी ने निर्दिष्ट किया कि इंकस्केप ने बग प्रतिपादन किया था; यह मेरे अनुभव से मेल खाता है। - Dylan Thurston
होमब्री का उपयोग कर ओएसएक्स पर, आप इनकेस्केप का उपयोग कर इंस्टॉल कर सकते हैं brew install inkscape इन दिनों। जिसके परिणामस्वरूप /usr/local/bin/inkscape X11.app चलाने के बिना मेरे लिए काम किया। - Alex Schröder
ओएस एक्स पर इंकस्केप स्थापित किया जा सकता है dmg अपनी वेबसाइट पर वितरित किया गया, और फिर दो प्रतीकात्मक लिंक बनाने के बाद कमांड लाइन से बुलाया गया: ln -s ~/Applications/Inkscape.app/Contents/Resources/bin/inkscape ~/bin/inkscape और इसी तरह के लिए inkscape-bin (यह मानते हुए ~/bin आपके अंदर है $PATH)। - Ioannis Filippidis
आप इसका उपयोग कर सकते हैं -z (या --without-gui) इंकस्केप के साथ ध्वज केवल बैच मोड में चलाने के लिए (कोई विंडो बिल्कुल खुल जाएगी)। - Artefact2


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

निचले संकल्प के साथ एक विकल्प (मैंने इसे सुधारने के लिए किसी भी स्विच का प्रयास नहीं किया) है

 convert file.svgz file.pdf 

convert का हिस्सा है ImageMagick पैकेज। रास्टरराइज़र एक और कार्यक्रम है:

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

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

 apropos -s 1 svg

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


7
2018-01-22 12:40



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


https://superuser.com/a/79064/19956 उल्लेख है gsvgGhostPDL का हिस्सा है।

मैंने उबंटू ल्यूसिड पर gsvg ghostpdl-9.06 को आजमाया है, लेकिन यह इंकस्केप द्वारा उत्पन्न दो एसवीजी के लिए विफल रहा है। एक एसवीजी में टेक्स्ट था, दूसरे में केवल वेक्टर ग्राफिक्स थे। यह इंकस्केप एक्सटेंशन या क्लिप-पथ के बिना सरल ग्राफिक्स के लिए भी असफल रहा। तो मैं जीएसवीजी को एक प्रयोग योग्य एसवीजी-टू-पीडीएफ कनवर्टर पर विचार नहीं करता हूं।


5
2017-11-16 20:18





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

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

काहिरा एसवीजी दस्तावेज़ीकरण


5
2017-12-21 06:04



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


मैक ओएस पर (इस बात पर विचार करते हुए कि आपने पहले से ही ब्रू स्थापित किया है) मैं करता हूं:

$ brew install cairo libffi python3
$ pip3 install cairosvg

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

लिनक्स पर भी काम करना चाहिए, लेकिन इसके बजाय उपयुक्त हो।


1
2017-07-27 18:56



यह पीडीएफ आउटपुट के साथ भी काम करता है। के विपरीत svg2pdf तथा rsvg-convert, यह फ़ॉन्ट्स को संरक्षित करता है। - oarfish
धन्यवाद, मैंने गलत विस्तार किया है। मैंने उदाहरण अपडेट किया। - Adriel Jr


के साथ 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
    

बस!


0
2017-11-05 08:23