【发布时间】:2019-03-04 09:14:44
【问题描述】:
我正在尝试使用 Inkscape 命令行将 SVG 图像转换为 EPS 文件。这是我运行(从 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。
有谁知道如何正确输入文本?为什么将文本转换为这些符号(第一个屏幕截图)?希望有人能帮忙!
【问题讨论】:
-
我已经看到与这些参数一起使用的命令(--export-ignore-filters --export-ps-level=3)。让我知道这对你有什么作用。
-
感谢您的回复,我添加了参数,但我得到了与没有它们时相同的输出@HassanVoyeau
-
看看这是否有帮助 thomas-krenn.com/en/wiki/Configure_Locales_in_Ubuntu - 注意它说在哪里重新启动。
-
您是否可能使用较旧的 Inkscape 版本(当前为 0.92)? v0.47 使用 cairo 实现 (E)PS 导出,release notes 明确提到“更好地支持...非 ASCII 字符”。我似乎记得对于某些版本,GUI 导出对话框中可以在 cairo 和旧导出方法之间进行选择,但现在它已经消失了,而且我不知道 CLI 是否支持它。
标签: python svg export inkscape eps