process - 在没有 X 服务器的情况下运行 inkscape

标签 process xserver inkscape

我正在 *nix 类系统(OS X 10.6.8、各种风格的 Linux)上从 Gearman PHP 进程运行 inkscape,将 SVG 图像转换为 PNG 或 PDF。我使用这样的东西(为了清楚起见,在此处添加换行符):

/full/path/to/inkscape -z \
    --export-png=/path/to/output.png \
    --export-width=100 --export-height=100 \
    /path/to/input.svg

它可以工作,但是尽管有 -z 标志(“不要使用 X 服务器”),我在控制台输出中得到了这个(在 OS X 上):

Setting Language: .UTF-8

(process:44699): Gtk-WARNING **: Locale not supported by C library.
    Using the fallback 'C' locale.
Xlib:  extension "RANDR" missing on display "/tmp/launch-WvcqRh/org.x:0".

这对我来说表明 inkscape 加载的库比它需要的多,并且如果它不尝试连接到 X 服务器,它可能会更快。但是,除了使用 -z/--without-gui 标志之外,我不知道该尝试什么。我的开发机器上的性能仍然是亚秒级(至少对于简单的 SVG 文件而言),但如果可以的话,我想清理它。即使最好的答案只是“抑制错误输出”!

也许我关闭或重置 bash DISPLAY 环境变量?我对X一点也不熟悉。

最佳答案

是的,如果您想让程序根本找不到 X,您可以在启动进程之前取消设置 DISPLAY

您还可以使用 Xvfb 来“伪造”X 服务器:http://en.wikipedia.org/wiki/Xvfb

您可能还想看看这些工具:

他们的源代码非常很小。

关于process - 在没有 X 服务器的情况下运行 inkscape,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9963862/

相关文章:

compiler-construction - 系统调用如何工作?

linux - 绕过 Xserver 显示管理

X11 转发的 Eclipse 右键单击​​问题

linux - 如何将 xinit 和 xsetroot 串在一行中?

python - 使用 python+cairo+rsvg 从 svg 转换为 png 后,沿曲线的文本缺失

python - SVG 中嵌入的 SVG 质量很差(python、svgwrite)

C: 需要暂停一个进程直到 sigalrm

C# 以编程方式取消 Windows 关机

linux - 在 Linux 中杀死僵尸进程

svg - 是否可以通过命令行将 Inkscape 自动跟踪 PNG 转换为 SVG?