Как мне конвертировать и SVG (содержащий несколько слов латинского текста и простую векторную графику) в PDF на Linux?
Я попробовал Inkscape 0.47 на Ubuntu Lucid, но он перемещает некоторую субграфику случайным образом и делает несколько строк короче в выходном PDF. Таким образом, его вывод бесполезен, потому что графика выглядит совершенно иначе.
Я попытался открыть SVG в Google Chrome 16 и распечатать его в PDF, но он искажает все цвета, а также удаляет некоторые элементы. (SVG выглядит нормально на экране, но он уже плох в предварительном просмотре и сгенерированный PDF тоже плох.)
Я не хочу растеризовать или визуализировать SVG. Решение, которое преобразует SVG в растровое изображение, а затем создает PDF-файл со встроенным изображением, не является ответом на мой вопрос. (FYI Inscape 0.47 отображает текст очень безобразно, без сглаживания при рендеринге в PNG.)
Какие еще варианты у меня есть?
источник
Ответы:
rsvg-convert добился цели для SVG, которую я хотел конвертировать:
rsvg-convert -f pdf
не растеризует SVG, а встраивает и поднастраивает шрифты (по крайней мере, в него встроены используемые символы шрифта Arial). Иногда встраивание шрифта завершается неудачно (например, для шрифта LMRoman17), и весь файл шрифта копируется в сгенерированный PDF.Зависимости от Ubuntu Lucid:
По умолчанию для libcairo требуется libX11, поэтому rsvg-convert может быть сложно установить в автономную систему.
Примечание: на странице руководства
rsvg-convert
говорится, что инструмент всегда растеризуется, но это не так. Руководство просто устарело. Иногда ваш инструмент создания SVG может частично растеризовать изображение SVG, что также может ввести вас в заблуждение.источник
rsvg-convert
вызывается пакет, содержащийrsvg-view
.Это работает на Ubuntu Lucid:
Вышеуказанный вызов Inkscape из командной строки работает даже в автономном режиме, без графического интерфейса пользователя (
DISPLAY=
). Однако установка Inscape устанавливает множество зависимостей, включая X11.Обратите внимание, что статус выхода Inskscape всегда равен 0, даже если возникает ошибка - так что следите за его stderr.
Существует также
inkscape --shell
, подходит для преобразования многих документов в пакете. Это позволяет избежать медленного запуска Inkscape для каждого файла:Inkscape также полезен для упрощения SVG:
источник
brew install inkscape
эти дни. Получившийся/usr/local/bin/inkscape
у меня работал без необходимости запускать X11.app.dmg
распространяемого на его собственном веб-сайте, а затем вызывать из командной строки после создания двух символических ссылок:ln -s ~/Applications/Inkscape.app/Contents/Resources/bin/inkscape ~/bin/inkscape
и аналогично дляinkscape-bin
(при условии, что~/bin
оно у вас$PATH
).-z
(или--without-gui
) с Inkscape, чтобы запускать его только в пакетном режиме (окно вообще не откроется).Я успешно использовал CairoSVG на OSX и Ubuntu.
CairoSVG Документация
источник
Я получаю хорошие результаты при печати из Inkscape (тоже 0.47) в PDF и при сохранении в формате PDF (но немного по-другому), но это может зависеть от имеющейся графики.
Альтернатива с более низким разрешением (я не пробовал переключатели для его улучшения)
convert
является частьюImageMagick
пакета. Растеризатор это еще одна программа:Чтобы узнать, какие программы, которые обрабатывают svgs, установлены в вашей системе, просто попробуйте
Страница руководства для этих программ должна объяснить, является ли программа полезной для преобразования SVG в PDF.
источник
convert
это не ответ на первоначальный вопрос, потому чтоconvert
растеризация SVG в растровое изображение, и исходный вопрос искал решение, которое не делает этого.https://superuser.com/a/79064/19956 упоминает gsvg , часть GhostPDL.
Я пробовал gsvg ghostpdl-9.06 на Ubuntu Lucid, но он не удался для двух SVG, сгенерированных Inkscape. У одного SVG был текст, у другого была только векторная графика. Это также не удалось для простой графики без расширений Inkscape или пути к клипам. Поэтому я не считаю gsvg пригодным для использования конвертером SVG в PDF.
источник
На Mac OS (учитывая, что вы уже установили brew) я делаю:
То же самое должно работать в Linux, но вместо этого с apt-get.
источник
svg2pdf
иrsvg-convert
, это сохраняет шрифты.Мне интересно, почему это не было упомянуто ранее, но я протестировал несколько различных конвертеров svg-> pdf и обнаружил, что лучшим из них является Headless Chrome . Это дает самые точные результаты для меня. До перехода на Chrome я пытался бороться с ошибками Inkscape, но многие из них слишком серьезны, и я ничего не могу с этим поделать (ошибки прозрачности, неправильные шрифты и т. Д.).
Требуются некоторые настройки для использования нестандартного размера PDF (A4 по умолчанию), но я смог установить нестандартный размер после некоторого поиска в Google и игры с атрибутами CSS и SVG (посмотрите этот ответ на stackoverflow )
источник
chromium --no-sandbox --disable-setuid-sandbox --headless --disable-gpu --print-to-pdf=output.pdf input.svg
Откройте файл svg с помощью
Image Viewer
(также называемый Eye of Gnomeeog
) и распечатайте его в файл PDF (скажемimage.pdf
) и преобразуйте этот pdf в eps с помощьюpdf2ps
команды. Просто!Разработанные шаги:
Установите,
Image Viewer
если еще не сделано (очень маловероятно, если вы используетеgnome
)Откройте файл SVG
eog
и распечатайте его вimage.pdf
файл.(Необязательно) Удалите окружающие пробелы из PDF-файла:
Это будет генерироваться
image-crop.pdf
с удалением окружающих пробелов.Преобразовать обрезанный PDF в EPS (используйте
image.pdf
напрямую, если вы не обрезали PDF)Это оно!
источник