Экспорт SVG в Illustrator не работает (префикс пространства имен inkscape не определен)

Я новичок в мире векторного редактирования. Я пытаюсь экспортировать файл.SVG из файла.AI. Однако при экспорте я получаю следующую ошибку в сгенерированном файле:

Error on line 57 at column 354: Namespace prefix inkscape for cy on namedview is not defined 

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

3 ответа

Попробуйте открыть файл SVG в текстовом редакторе: вы увидите некоторые атрибуты XML с пространством имен inkscape, как, например,

inkscape:label="Some label"

Эти атрибуты, вероятно, взяты из оригинального файла SVG (я полагаю, вы взяли его из Википедии?). Вы можете безопасно удалить их все - возможно, с помощью grep найти и заменить в вашем текстовом редакторе, например:

find inkscape:label="[^"]*" replace with ""

Я очень надеюсь, что они в конце концов это исправят. К чести Adobe, причина этой проблемы заключается в том, что Illustrator пытается сохранить информацию, которую он не использует, для приятного воспроизведения с другими программами.

Есть несколько обходных путей.

  1. Используйте InkScape, чтобы сохранить как обычный SVG. Это хорошо работает, если вы заранее знаете о проблеме и можете просто сохранить обычную копию из InkScape перед тем, как импортировать ее в AI. Или, если вы НЕ знали заранее, но не возражаете начать и заново настраивать "плохие" элементы, которые вы изменили после импорта из InkScape, вы можете сохранить как обычный файл из InkScape, а затем извлечь и заново настроить только те, проблемные элементы. Однако, если вы хотите выполнить постобработку, а не исправлять AI-файл (см. Ответ Чипа), самый быстрый и наименее разрушительный вариант, вероятно, заключается в использовании регулярного выражения (регулярное выражение, см. Ниже), а не в использовании InkScape.

  2. Экспорт в SVG. Новейшая версия Illustrator теперь позволяет экспортировать в SVG в качестве альтернативы сохранению копии / сохранению как. Даже когда есть элементы, которые изначально были из InkScape, это создает файл, который могут открыть как Chrome, так и InkScape, в то время как ни один из них не может открыть недействительный файл, созданный мной с помощью Save A Copy. ПРЕДУПРЕЖДЕНИЕ. В моих очень маленьких масштабах (значки высотой 16 пикселей) этот "оптимизированный для сети" экспорт заметно потерял информацию / точность - даже с точностью до 5 десятичных знаков - хотя и избавился от критической ошибки.

  3. [ОБНОВЛЕНИЕ: Сохранить копию / Сохранить как SVG теперь возможно. Я только что обновил обе программы, и кажется, что InkScape теперь может открывать недействительные файлы, созданные Illustrator, хотя Chrome и Illustrator по-прежнему не могут. Я ожидаю, что это означает, что выполнение "Сохранить как из Illustrator", а затем "Сохранить как обычный" из InkScape - теперь самый быстрый способ получить чистый SVG, который также точен (хотя InkScape предупреждает, что Plain может потерять некоторые виды данных). ]

  4. Исправьте код SVG. Решение Филиппа кажется лучшим способом действительно исправить то, что в настоящее время повреждено в последнем файле, без потери (много?) Точности / информации. В Notepad ++ мне удалось заменить это регулярное выражение ничем: inkscape:[^"]+"[^"]+" или, более безопасно, inkscape:(export-|connector-curvature)[^"]+"[^"]+", После того, как вы сохранили копию в формате SVG, вручную определили и исправили проблемы, Illustrator может открыть файл SVG, чтобы затем можно было скопировать / вставить только нарушающие элементы обратно в файл AI и устранить проблему. Уф.

Примечание. Ручной способ идентифицировать "плохие" элементы, не обращая внимания на какой-либо код SVG, состоит в том, чтобы разбить элементы на монтажные области, сохранить их в формате SVG и посмотреть, какие из них нельзя открыть. Как только вы это узнаете, вы можете использовать один из описанных выше обходных путей, чтобы заменить только эти кусочки (поскольку вы все равно будете терять точность).

Inkscape позволяет сохранять файлы как обычные. Это избавит от ссылок Inkscape. Существует также метод командной строки (bash) для пакетной работы.

for i in *.svg; do inkscape -z -f $i -l $i; done

Это можно сделать для SVG-файлов "Сохранено как", созданных в Illustrator (Illustrator не экспортирует SVG на данный момент). Я еще не понял, как получить ссылки из файлов Illustrator, как только они появятся там. Прямо сейчас я застрял в пост-обработке всех файлов SVG, созданных Illustrator.

Другие вопросы по тегам