سؤال كيف أقوم بتحويل SVG إلى PDF على Linux


كيف يمكنني التحويل و SVG (التي تحتوي على بضع كلمات من النص اللاتيني وبعض رسومات المتجهات البسيطة) إلى PDF على Linux؟

لقد حاولت استخدام Inkscape 0.47 على Ubuntu Lucid ، ولكنها تنقل بعض الرسومات الفرعية بشكل عشوائي ، وهي تجعل بعض الخطوط أقصر في ملف PDF الناتج. لذا ، فإن الإخراج غير مفيد ، لأن الرسومات تبدو مختلفة تمامًا.

لقد حاولت فتح SVG في Google Chrome 16 وطباعته إلى PDF ، ولكنه يشوه كل الألوان ، كما أنه يزيل بعض العناصر. (يبدو SVG جيدًا على الشاشة ، ولكنه سيئ بالفعل في معاينة الطباعة ، كما أن ملف PDF الذي تم إنشاؤه سيء.)

لا أريد تنقيط أو عرض SVG. الحل الذي يحول SVG إلى صورة نقطية ثم ينشئ PDF مع الصورة المدمجة ليس إجابة لسؤالي. (FYI Inscape 0.47 يعرض النص بطريقة بشعة للغاية ، دون الحواف ، عند تقديمه إلى PNG.)

ما هي الخيارات الأخرى المتاحة لدي؟


108
2018-01-22 12:17


الأصل


إذا كان لديك بعض الصور للتحويل ، فقد تجد أنه من الأسهل استخدام بعض المحولات عبر الإنترنت. حاولت CloudConvert وقد قامت بعمل جيد جدًا بنصف حجم ملف SVG. - Frank Breitling


الأجوبة:


rsvg-تحويل فعلت خدعة SVG التي أردت تحويلها:

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

rsvg-convert -f pdf لا يقوم بتنقيط SVG ، كما أنه يقوم بتضمين خطوط الخطوط الفرعية (على الأقل يكون قد تم تضمين الأحرف المستخدمة في الخط Arial). يفشل أحيانًا تضمين الخط (على سبيل المثال ، بخط LMRoman17) ، ويتم نسخ ملف الخط بأكمله إلى ملف PDF الذي تم إنشاؤه.

التبعيات على Ubuntu Lucid:

  • 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 بشكل جزئي ، مما قد يؤدي إلى تضليلك.


118
2018-01-22 12:28



هذا كثير من التبعيات أراها هنا: القاهرة ، libgphoto ، gtk3 ، libsane ... حسنا ، إذا كان يقوم بهذه المهمة ... - ShiDoiSi
هل سيتم تحويل هذا إلى مساحة ألوان cmyk؟ - justingordon
@ AyberkÖzgür هذا خطأ انكسكيب - عند حفظ المشروع إنكسكيب، سيكون افتراضيا حفظه باعتباره SVG، ولكن SVG أنه يوفر يتضمن مجموعة من البيانات غير قياسي انكسكيب المحددة التي يمكن في كثير من الأحيان لخبط البرامج الأخرى. أنت بحاجه إلى تصدير باعتبارها SVG بدلا من مجرد إنقاذ باعتباره SVG. - AJMansfield
قد يوفر بعض الوقت في البحث: في Suse-Systems الحزمة التي تحتوي على rsvg-convert يسمى rsvg-view. - Trendfischer
عملت بالنسبة لي وجودة قوات الدفاع الشعبي هو نفس svg. قبل هذا كان يستخدم imagemagick لتحويل إلى قوات الدفاع الشعبي ونوعية سيئة خاصة بالنسبة svg. - Pratik Soni


هذا يعمل على Ubuntu Lucid:

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

يعمل استدعاء Inkscape سطر الأوامر أعلاه حتى في وضع مقطوعة الرأس ، بدون واجهة مستخدم رسومية (DISPLAY=). ومع ذلك ، فإن تثبيت Inscape يثبت الكثير من التبعيات ، بما في ذلك X11.

يرجى ملاحظة أن حالة الخروج من Inskscape هي دائما 0 ، حتى لو حدث خطأ - لذلك احترس من stderr.

يوجد ايضا inkscape --shell، مناسبة لتحويل العديد من الوثائق في دفعة واحدة. هذا يتجنب وقت بدء التشغيل Inkscape البطيء لكل ملف:

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

إن Inkscape مفيد أيضًا لتبسيط SVG:

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

66
2017-11-16 20:23



للأسف ، يبدو أن هذا لا يعمل على نظام التشغيل OS X. ومع ذلك ، فإن الإجابة لطيفة. - Konrad Rudolph
حدد البروتوكول الاختياري أن Inkscape قد عرض الخلل ؛ هذا يطابق تجربتي. - Dylan Thurston
في OSX باستخدام Homebrew ، يمكنك تثبيت Inkscape باستخدام brew install inkscape هذه الأيام. النتيجة /usr/local/bin/inkscape عملت لي دون الحاجة لتشغيل X11.app. - Alex Schröder
يمكن تركيب Inkscape على OS X من dmg توزيعها على موقع الويب الخاص بها ، ثم استدعائها من سطر الأوامر بعد إنشاء رابطين رمزيين: ln -s ~/Applications/Inkscape.app/Contents/Resources/bin/inkscape ~/bin/inkscape وعلى نحو مماثل ل inkscape-bin (على افتراض ~/bin في حياتك $PATH). - Ioannis Filippidis
يمكنك استعمال ال -z (أو --without-gui) العلم باستخدام Inkscape لتشغيله في الوضع الدفعي فقط (لن تفتح أي نافذة على الإطلاق). - Artefact2


أحصل على نتائج جيدة من الطباعة من Inkscape (0.47 أيضًا) إلى PDF ، وحفظها بتنسيق PDF (ولكن مختلف قليلاً) ، ولكن هذا قد يعتمد على الرسم الموجود في متناول اليد.

هو بديل مع دقة أقل (لم أحاول أي مفاتيح لتحسينه)

 convert file.svgz file.pdf 

convert جزء من ImageMagick صفقة. برنامج Rasterizer هو برنامج آخر:

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

لمعرفة أي البرامج التي تتعامل مع svgs مثبتة على النظام الخاص بك ، حاول فقط

 apropos -s 1 svg

يجب أن تشرح الصفحة الرئيسية لهذه البرامج ، إذا كان البرنامج مفيدًا لتحويل svg إلى pdf.


7
2018-01-22 12:40



شكرا لاقتراحاتكم. لمعلوماتك convert ليس إجابة على السؤال الأصلي ، لأن convert بتنقيط SVG لصورة نقطية ، وكان السؤال الأصلي يبحث عن حل لا يفعل ذلك. - pts


https://superuser.com/a/79064/19956 يذكر gsvgجزء من GhostPDL.

لقد جربت gsvg ghostpdl-9.06 على Ubuntu Lucid ، ولكنها فشلت ل SVGs اثنين ولدت بواسطة Inkscape. كان SVG واحد نص فيه ، والآخر كان فقط الرسومات المتجهة. فشل أيضا للرسومات البسيطة دون ملحقات Inkscape أو مسار القصاصة. لذلك لا أعتبر gsvg محول SVG-to-PDF قابل للاستخدام.


5
2017-11-16 20:18





لقد استخدمت CairoSVG بنجاح على OSX و Ubuntu.

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

وثائق CairoSVG


5
2017-12-21 06:04



هناك حتى ربط python يمكنك استخدامها. للأسف ، وجدت أن هذه الطريقة محدودة نوعًا ما ، أي أنه لا يتم دعم الكثير من ميزات svg. - bodo


على نظام التشغيل Mac OS (مع الأخذ في الاعتبار أنك قد قمت بالفعل بتثبيت المشروب) أقوم بما يلي:

$ brew install cairo libffi python3
$ pip3 install cairosvg

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

يجب أن يعمل نفس الشيء على Linux ، ولكن مع apt-get بدلاً من ذلك.


1
2017-07-27 18:56



هذا يعمل مع الإخراج الشعبي كذلك. أضع ثقتي في svg2pdf و rsvg-convert، هذا يحافظ على الخطوط. - oarfish
شكرا ، أضع التمديد الخطأ. لقد قمت بتحديث المثال. - Adriel Jr


افتح ملف svg باستخدام Image Viewer (يسمى أيضًا عين غنوم eog) وطباعته إلى ملف PDF (على سبيل المثال image.pdf) وتحويل هذا PDF إلى eps باستخدام pdf2ps أمر. بسيط!

خطوات تفصيلية:

  1. التثبت Image Viewer إذا لم يتم بعد (خطوة مستبعدة للغاية إذا كنت تستخدم gnome)

    sudo apt-get install eog
    
  2. فتح ملف svg مع eog وطباعته image.pdf ملف.

  3. (اختياري) قم بإزالة المسافات البيضاء المحيطة من ملف pdf:

    pdfcrop image.pdf
    

    هذا سوف يولد image-crop.pdf مع إزالة المسافة البيضاء المحيطة.

  4. تحويل ملف pdf إلى eps (استخدام image.pdf مباشرة إذا لم تحصد ملف pdf)

    pdf2ps image-crop.pdf image.eps
    

هذا هو!


0
2017-11-05 08:23