从哪里获得线程安全的 Ghostscript 编译?

Posted

技术标签:

【中文标题】从哪里获得线程安全的 Ghostscript 编译?【英文标题】:Where to get a thread-safe Ghostscript compilation? 【发布时间】:2013-02-26 00:53:19 【问题描述】:

新版本的 Ghostscript (9.07) 支持线程(可以是线程安全的),但它说必须使用特殊标志编译代码才能启用此功能。

我该怎么做?或者我在哪里可以获得已经构建的线程安全版本?

我尝试下载源代码,在 VS 中打开,但构建失败。所以也许有人已经这样做了并且可以共享 DLL。

【问题讨论】:

【参考方案1】:

您是否对 Ghostscript 的线程安全版本或多渲染线程感兴趣?

只有在生成高分辨率输出时才使用多个渲染线程,因为代码必须首先解释 PostScript 程序(或 PDF 文件)并创建一个显示列表供渲染线程操作。除非您渲染到相当高的分辨率,否则这实际上会比使用页面模式(在内存中渲染整个页面)慢

您可以使用 -dNumRenderingThreads 开关在 Ghostscript 的预构建版本中创建多个渲染线程。

如果您想要一个线程安全的 Ghostscript 版本,那么您需要能够自己编译 Ghostscript。您使用的是什么版本的 Visual Studio?我正在使用 Visual Studio 2005 和 2008,并且提供的解决方案适用于我(经过适当的转换)。

【讨论】:

我需要一个 VS 2012 的线程安全编译,这样我就可以同时从多个线程初始化多个 Ghostscript 实例。我相信编译后的 DLL 将从 VS 2005/2008 开始工作,所以如果你能分享它,那将非常有帮助,因为我不知道如何使用自定义标志正确编译 C 代码。 我没有带有标志集的预构建 DLL,您必须自己制作。您可以获得 VS 2010 express 的副本,它将构建提供的项目。要设置标志,只需在解决方案资源管理器中右键单击解决方案名称,从下拉菜单中选择“属性”。然后从属性页中选择 C/C++,单击小箭头,出现选项,选择“预处理器”,然后在显示“预处理器定义”的右侧窗格中添加 THREADSAFE 标志。 不幸的是,它也未能在 VS 2010 中构建。 你可以在bugs.ghostscript.com打开一个错误报告,请记住描述失败,'fails to build'没有多大帮助。【参考方案2】:

我也在寻找这个问题的解决方案,最终我在 Linux 中解决了它。也许它会帮助来这里寻找解决方案的人。 在源目录中打开终端并输入以下命令:

./configure --enable-threadsafe

之后,您可以为 lib 执行 makemake so。 以下是从源代码构建 ghostscript 的文档链接:https://www.ghostscript.com/doc/9.23/Make.htm#Makefile_overview。

【讨论】:

【参考方案3】:

查看Ghostscript.NET 托管的 Ghostscript 包装器,如果您需要同时处理多个 pdf,它允许您同时运行多个 Ghostscript 库实例。

【讨论】:

以上是关于从哪里获得线程安全的 Ghostscript 编译?的主要内容,如果未能解决你的问题,请参考以下文章

如何获得有效的 x64 THREADSAFE Ghostscript DLL

Ghostscript:获取用于从 PDF 渲染的 CMYK 值

从哪里获得静态构建形式的 OpenAL?

我在哪里可以获得 comdef.h?

从安全分析中获得警告“删除编译器选项 -rpath 以删除 @rpath”

Ghostscript.net 多线程问题