Как экспортировать файл Inkscape SVG в PDF и сохранить целостность изображения?

Возникли проблемы с получением Inkscape для чистого экспорта PDF-файлов, и, похоже, не так много полезных ресурсов. В частности, прозрачные материалы сложны - иногда прозрачность исчезает, а иногда она превращается в сплошной блок.

Я возился с настройками сохранения в формате PDF в Inkscape и безуспешно печатал в PDF с помощью CutePDF. Есть ли способ экспорта или создания файла, чтобы я мог получить предсказуемые результаты?

Надеюсь, @DA01 вмешается. Он хорошо знаком с Inkscape.
Я бы не сказал глубоко ... но я его поклонник. Я не знаю ответа, но я предполагаю, что SVG и PDF - это просто разные форматы файлов и поддерживают разные части каждой спецификации. Вы можете многое сделать с SVG с точки зрения прозрачности, размытия, смешивания и тому подобного, и я предполагаю, что PDF просто еще не поддерживает это. Возможно, вам придется сначала запустить SVG через Adobe Illustrator в надежде, что AI преобразует его в формат, который удовлетворит PDF.
Inkscape претерпел несколько обновлений с тех пор, как был задан этот вопрос. Мне было бы любопытно узнать, как обстоят дела с этой ситуацией сейчас, и есть ли определенные части преобразования SVG в PDF, которые все еще проблематичны.

Ответы (22)

Inkscape (v1.0) поддерживает параметры командной строки , и я предпочитаю делать это так:

inkscape mySVGinputFile.svg --export-area-drawing --batch-process --export-type=pdf --export-filename=output.pdf

До версии 1.0 параметры командной строки были другими. Что касается Inkscape (v0.91), это было эквивалентно:

inkscape --file=mySVGinputFile.svg --export-area-drawing --without-gui --export-pdf=output.pdf

На самом деле это команда, которую LyX использует для подготовки изображений SVG для использования в LaTeX. Я использовал PlantUML для создания SVG, который затем переходит в PDF.

Вот скриншот SVG в inkscape, который имеет чисто векторное представление (включая шрифты).

SVG в Inkscape

Вот скриншот увеличенного PDF-файла с выделенным текстом «oo» из цикла слов, показывающим, что это все еще текст в PDF-файле:

PDF в Акробате

Это сработало хорошо. К вашему сведению, инструмент командной строки Mac OS находится по адресу: - после этого /Applications/Inkscape.app/Contents/Resources/bin/inkscapeвставьте свой и т. д.--file=/My/File.svg
Я протестировал его с помощью пользовательского шрифта base64, но Inkscape (0.92), по-видимому, его не поддерживает.
@xamid, если вы используете Windows 10, это может быть так: reddit.com/r/Inkscape/comments/bg0rkm/…

На самом деле это было задано и ответило здесь для пользователей Linux.

Вам нужно установить librsvg2-bin. Я просто добавлю, что вам нужно будет подогнать страницу под ваш svg, иначе она будет усечена. В Inkscape: Файл -> Свойства документа -> Выберите объекты svg -> подогнать страницу под выбор.

Затем просто запустите:

rsvg-convert -f pdf in.svg > out.pdf
Это, безусловно, лучший ответ: единственный, который сработал!
Этот инструмент даже не сохраняет правильный размер шрифта, не говоря уже о правильном начертании шрифта.

В главном меню выберите:

Файл → Печать... → Печать в файл

Здесь вы можете сохранить файл в формате PDF, PostScript или SVG.

Вы пытаетесь экспортировать в .PDF, чтобы сохранить возможности редактирования? В противном случае, если вы пытаетесь поделиться изображением с кем-то из Inkscape, сохраните его в формате .JPG или .PNG (если требуется полупрозрачный фон).

В прошлом попытка сохранения в формате PNG/jpeg значительно уменьшала физический размер и разрешение изображения. Возможно, я просто делаю это неправильно?
У вас загружена последняя версия Inkscape?
@Zelbinian, SVG не имеет собственного размера или разрешения. Только когда вы хотите экспортировать в формате PNG, Inkscape запросит размер. Укажите, что это должно быть настолько большим, насколько вы хотите.
Изменение векторного изображения на растровое определенно не сохранит (другие аспекты) целостность изображения.

В операционной системе Linux я экспортирую в PNG, а затем использую инструмент преобразования, чтобы преобразовать его в PDF.

+1 Это неплохой ответ ... и, по сути, это метод, который я использовал, чтобы обойти недостатки Inkscape в маскировании фигур (которые «взрываются» при преобразовании непосредственно в PDF). Для сложных SVG, которые Inkscape не может полностью преобразовать в PDF, растеризация иногда является жизнеспособным обходным путем.
Это полностью потеряет любое сходство качества и векторности, которое у вас есть, и поэтому не подходит.

Мне нравится использовать Inkscape для рисования — он гораздо более интуитивно понятен, чем Illustrator, и дает очень профессиональные результаты.

Однако я использовал Inkscape для подготовки рисунков к публикации и столкнулся со значительными трудностями при экспорте рисунков с настройками качества публикации. При сохранении файлов в формате .eps мои шрифты не встраивались должным образом, а в формате .pdf мне не удавалось сохранить качество печати. (Я использую Windows XP и Inkscape версии 0.48.4.)

Чтобы обойти это, я следовал инструкциям по получению показателей качества прессы, которые можно найти по этой ссылке .

В этих пошаговых инструкциях показано, как печатать в формате PDF со встроенным текстом и настройками качества печати.

У меня были трудности с печатью в pdf для некоторых из моих больших фигур (только случайные части моей фигуры попадали в pdf, что очень расстраивало!). Чтобы обойти эту проблему, я сгруппировал все аспекты моей фигуры Inkscape и уменьшил общий размер. По какой-то причине это сработало очень хорошо, и я получил красивые PDF-файлы для этих рисунков.

Другой вариант — разрезать фигуру пополам (если возможно) и распечатать два PDF-файла. Их можно комбинировать в Adobe Acrobat Professional (старые версии доступны для скачивания по этой ссылке .

Нажмите «Создать PDF», выберите «Из нескольких файлов» и выберите PDF-файлы, которые вы хотите объединить. Они будут отображаться как отдельные страницы в документе PDF. Чтобы объединить их на одной странице, перейдите в File --> Printраздел « Page HandlingИзменить Page Scalingна Multiple pages per sheet.

Затем вы можете настроить количество страниц на листе. Нажмите OK, и теперь ваши 2 PDF-файла будут объединены в одну страницу.

Я надеюсь, что эта информация поможет тем из вас, кто предъявляет строгие требования к показателям качества публикации.

Прошли годы с тех пор, как у меня не было проблем с прозрачностью PDF-файлов, сгенерированных Inkscape, и если бы они у меня были, это оказалось проблемой средства просмотра PDF (или, в одном случае: эзотерического принтера), а не Inkscape. Таким образом, я бы сказал, что использование новой версии Inkscape должно исправить такие проблемы.

При этом, начиная с Inkscape 0.47 (от 2009 г.), существует опция « Растрировать эффекты фильтра» для экспорта в PDF, которая должна растрировать все те фильтры (например, размытие), которые не поддерживаются форматом PDF, и сохранять все остальное векторизованным.

Я использую Inkscape и регулярно сохраняю SVG в PDF. Держитесь подальше от фильтров и непрозрачных настроек, поскольку PDF-файлы (или я должен сказать, экспорт InkScapes в PDF) не очень хорошо справляются с этой функцией.

Вместо этого я использую цветовые шкалы вместо уровней непрозрачности, чтобы смягчить цвета непосредственно на палитре и полностью избежать фильтров. Я знаю, что это громоздко и ограничивает ваши возможности в том, что вы можете сделать. Но экспорт выглядит нормально, если я следую этим правилам.

Начиная с Inkscape 1.0beta2, некоторые аргументы командной строки изменились. Таким образом, использование бета-версии 1.0:

inkscape {svgPath} --export-area-drawing --without-gui --export-file={destPath}

где я использовал скобки здесь, чтобы указать части, которые вы хотите изменить для вашего использования. Например, если бы у меня был файл SVG, pizza.svgи я хотел бы преобразовать его в PDF pizza.pdf, я бы использовал следующее:

inkscape pizza.svg --export-area-drawing --without-gui --export-file=pizza.pdf

Я не смог найти эти изменения в документах, поэтому я предполагаю (в то время, когда я пишу это), что документы еще не наверстали упущенное.

FWIW: Похоже, этот новый подход призван немного упростить командную строку. Вместо явного указания типа файла для чтения и экспорта Inkscape использует суффикс файла для неявного указания типов файлов.

Еще один FWIW: если вы используете Mac, есть большая вероятность, что inkscape не находится на вашем пути, поэтому вы не можете запустить inkscape из командной строки без дополнительной работы. Самый простой способ обойти это препятствие — заменить inkscapeв приведенных выше примерах командной строки на /Applications/Inkscape.app/Contents/MacOS/inkscape.

  1. Распечатать
  2. Выберите Bitmap на вкладке Rendering и выберите нужное разрешение.
  3. Выберите принтер PDF на вкладке « Общие ».
  4. Распечатать.

вкладка рендеринга

растровое изображение dpi и печать

Если у вас установлен FoxIt Reader, вы можете просто

  1. Файл -> Печать ( Ctrl+ P)
  2. Выберите «FoxIt Reader PDF Printer», чтобы экспортировать файл в формате PDF.

Если вы уже установили размер страницы в свойствах документа (убедитесь, что ваши элементы вписываются в страницу)> перейдите к предварительному просмотру печати. Здесь вы можете сохранить его в формате pdf, а также распечатать в нужном размере без потери разрешения.

У меня тоже была эта проблема, и ни один из существующих ответов не помог мне. Я нашел свое решение здесь: https://bugs.launchpad.net/inkscape/+bug/1004887 .

Добавьте фильтр к каждому изображению, а затем сохраните в формате pdf. Обязательно отметьте «растрировать эффекты фильтра». Я имел дело с изображениями в оттенках серого, поэтому применил фильтр оттенков серого, чтобы изображения не были заметно изменены.

у меня была проблема incskape 0.92.4 с сохранением в формате pdf "*.pdf файл не может быть сохранен" просто оставьте поле "ограничить экспорт с идентификатором" пустым (facepalm) введите описание ссылки здесь

Ссылка на ваше изображение не работает, и ваш ответ не очень ясен ... кроме того, это очень старый вопрос, вы уверены, что добавляете полезную информацию? Проверьте , как ответить, а затем отредактируйте свой ответ, чтобы добавить больше деталей / исправить неработающую ссылку на изображение.

1- Выберите «Печать» (из файла)

2- Нажмите на вкладку « Визуализация»: выберите (измените на) «Вектор» .

4- Нажмите на вкладку «Общие» вверху в «Выбрать принтер»: выберите принтер для PDF, например, в Windows у меня есть Foxit PDF Printer (поскольку у меня есть Foxit Reader на моей машине).

5- Печать.

Сердечно рекомендую: cairosvg , конвертер svg для Python.

cairosvg mySVGinputFile.svg -o outputfile.pdf

Преимущества:

  • Файлы .pdf имеют меньший размер по сравнению с преобразованием в inkscape.
  • более простая командная строка.

Если вы хотите выполнить пакетное преобразование, т. е. преобразовать сразу много файлов, см. этот ответ .

Попробуйте использовать инструмент Snipping, поставляемый с Windows 7. Если он еще не закреплен на панели задач, вы найдете его в разделе «Все программы» «Стандартные». Похоже на ножницы. Это сохранит его как jpeg, затем откроет jpeg и распечатает симпатичный PDF.

Вероятно, это не то решение, которое ищет Зельбиниан; экспорт в PDF подразумевает сохранение векторных объектов. Как указывалось в другом ответе, вы все равно можете просто экспортировать файл в формате JPG, в этом случае создание снимка экрана будет неполноценным методом.

Это очень просто. Сохраните файл/выбор в формате pdf.

Какая версия? Изменилось ли оно? См. ответ пользователя 14047 и комментарий DA01...
Этот ответ не касается вопроса. Проблема пользователя не в том, что он не знает, как экспортировать PDF из Inkscape, а в том, что результаты неудовлетворительны.

Я сохранил свой документ (включая градиентный слой поверх изображения и изображение с прозрачностью) в формате PDF, заархивированном JessyInk. Установите DPI и сохраните. В Zip-файле вы найдете PDF-файл, как и предполагалось.

Если вы конвертируете его для совместного использования, экспортируйте его как png. Во вкладке файлы есть отдельная опция для экспорта в формате png. Это убережет вас от многих неприятностей.

Можете уточнить, от каких неприятностей это избавит и почему?

Меня давно раздражает этот вопрос. По состоянию на 2019 год лучший подход, который я смог найти, — это поставить промежуточный постскриптум. Используя Makeсинтаксис:

rsvg-convert -f ps $^ | gs -sDEVICE=pdfwrite -sOutputFile=$@ -f -

где $^исходный файл и $@целевой файл.

Он выводит PDF 1.7 по умолчанию с ghostscript 9.27. Это решает все проблемы, которые я обнаружил с pdfмеханизмом сохранения inkscape (версия 1.0 alpha).

Используй GIMP, друг мой!

Откройте на нем файл SVG и экспортируйте в PDF.

Это довольно старый вопрос с кучей вариантов работы с самим inkscape ... GIMP не является векторным редактором, насколько мне известно, действительно ли он экспортирует SVG в виде векторного PDF?