Я пытаюсь преобразовать изображение 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()
Файл генерируется, и когда он открывается, большая часть его выглядит, как и ожидалось.Проблема в том, что часть текста не будет отображаться (см. Скриншот ниже).Вместо этого есть странные прямоугольные символы.Большая часть отсутствующего текста не имеет специальных символов.Я действительно понятия не имею, что может вызвать эту проблему.
Это ошибка, которую я вижу при печати переменной ошибки:
(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:
Я некоторое время искал в интернете, чтобы найти решение, но пока не смог найти.
Я работаю с сервером Ubuntu 16.04.У меня установлен Inkscape 0.91.
Кто-нибудь знает, как правильно получить текст?И почему текст преобразуется в эти символы (первый скриншот)?Надеюсь, что кто-то может помочь!