Я пытаюсь преобразовать изображение SVG в файл EPS с помощью командной строки Inkscape.Это команда, которую я запускаю (из скрипта Python), чтобы выполнить преобразование:
bashCommand = "inkscape " + file + " -D --without-gui --export-eps=exports/" + type + ".eps"
process = subprocess.Popen(bashCommand.split(), stdout=subprocess.PIPE)
output, error = process.communicate()
Файл генерируется, и когда он открывается, большая часть его выглядит, как и ожидалось.Проблема в том, что часть текста не будет отображаться (см. Скриншот ниже).Вместо этого есть странные прямоугольные символы.Большая часть отсутствующего текста не имеет специальных символов.Я действительно понятия не имею, что может вызвать эту проблему.
![enter image description here](https://i.stack.imgur.com/FhrMM.png)
Это ошибка, которую я вижу при печати переменной ошибки:
(process:1855): Gtk-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.
Fontconfig warning: ignoring UTF-8: not a valid region tag
В /etc/default/locale
Я попытался добавить следующее (я наткнулся на это возможное исправление, пока искал решение):
LANG="en_US.UTF-8"
LANGUAGE="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
Затем я перенастроил локали, используя sudo dpkg-reconfigure locales
Это вывод, который я получаю при использовании команды locale
:
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
Я использую Open Sans в качестве шрифта и также установил шрифт на сервере.После добавления шрифтов к /usr/local/share/fonts
я перестраиваю кэш шрифтов с помощью команды fc-cache -f -v
.
При преобразовании SVG в PDF с кодом ниже все работает как положено.Весь текст видим, и используется шрифт Open Sans.
bashCommand = "inkscape " + file + " -D -d 300 --without-gui --export-pdf=exports/" + type + ".pdf"
process = subprocess.Popen(bashCommand.split(), stdout=subprocess.PIPE)
output, error = process.communicate()
Вот как выглядит PDF:
![enter image description here](https://i.stack.imgur.com/J4HFt.png)
Я некоторое время искал в интернете, чтобы найти решение, но пока не смог найти.
Я работаю с сервером Ubuntu 16.04.У меня установлен Inkscape 0.91.
Кто-нибудь знает, как правильно получить текст?И почему текст преобразуется в эти символы (первый скриншот)?Надеюсь, что кто-то может помочь!