C# 仅在VisualStudio的调试模式下,使用图像将PS重影脚本转换为PDF才有效

C# 仅在VisualStudio的调试模式下,使用图像将PS重影脚本转换为PDF才有效,c#,pdf,ghostscript,postscript,C#,Pdf,Ghostscript,Postscript,我正在尝试使用Ghostscript将ps文件(带图像的word文件)转换为pdf 当我调试代码并单步执行时,一切都正常,它生成包含文本、图像等内容的pdf。但是,当我使用Visual Studio安装项目部署应用程序时,它不起作用,并给出以下错误:“调用'gsapi_new_instance'时出错:-100。” 以下是我的命令行参数 var args=string.Format(“-q-dNOPAUSE-dBATCH-sDEVICE=pdfwrite-sOutputFile=\“{1}\”-

我正在尝试使用Ghostscript将ps文件(带图像的word文件)转换为pdf

当我调试代码并单步执行时,一切都正常,它生成包含文本、图像等内容的pdf。但是,当我使用Visual Studio安装项目部署应用程序时,它不起作用,并给出以下错误:“调用'gsapi_new_instance'时出错:-100。”

以下是我的命令行参数

var args=string.Format(“-q-dNOPAUSE-dBATCH-sDEVICE=pdfwrite-sOutputFile=\“{1}\”-c save pop-f\“{0}\”,inputFile,@“c:\MedirefPrinter\converted\out.pdf”)

你知道为什么这样不行吗?谢谢

实际代码:


请原谅我的无知:)

移动到答案以允许更多文本

错误可能有三个原因:

1) “实例”指针为空。我看不出,如果我们的可执行文件是一个全局定义的变量,并且可执行文件传递它的地址,这怎么可能。这是一个针对针对Ghostscript API编写代码的人员的健全性检查

2) 应用程序无法为某些内部结构分配足够的内存。同样,这似乎不太可能,因为您的系统必须不合理地缺少内存

3) DLL实例计数已为1或更大。如果DLL在多个进程之间共享,则可能发生这种情况。除非使用GS_THREADSAFE构建库,否则它不是线程安全的,因此不能有多个进程使用同一个DLL实例。我想这是您的问题,但显然您没有提供完整的代码集,所以我不知道。如果您试图从同一目录同时运行多个Ghostscript副本,则会出现此错误

错误-100的意思是“很早就发生了非常糟糕的事情,我甚至不能告诉你这是什么”


我非常怀疑PostScript中出现的图像是否有任何实际影响,除非它可能会减慢解释速度,导致您尝试启动两个过程。

移动到一个答案以允许更多文本

错误可能有三个原因:

1) “实例”指针为空。我看不出,如果我们的可执行文件是一个全局定义的变量,并且可执行文件传递它的地址,这怎么可能。这是一个针对针对Ghostscript API编写代码的人员的健全性检查

2) 应用程序无法为某些内部结构分配足够的内存。同样,这似乎不太可能,因为您的系统必须不合理地缺少内存

3) DLL实例计数已为1或更大。如果DLL在多个进程之间共享,则可能发生这种情况。除非使用GS_THREADSAFE构建库,否则它不是线程安全的,因此不能有多个进程使用同一个DLL实例。我想这是您的问题,但显然您没有提供完整的代码集,所以我不知道。如果您试图从同一目录同时运行多个Ghostscript副本,则会出现此错误

错误-100的意思是“很早就发生了非常糟糕的事情,我甚至不能告诉你这是什么”


我非常怀疑PostScript中图像的存在是否有任何实际影响,除非它可能会减慢解释速度,导致您尝试启动两个进程。

您将此部署到哪里?计算机是否安装了ghostscript?Windows工作站。是的,我安装了32位和64位的ghostscript。这将有助于查看实际的命令行,而不仅仅是参数。您使用的是32位还是64位重影脚本?如何调用Ghostscript可执行文件?如果您使用的是C#或类似的东西,那么您就没有使用Ghostscript。您可能正在使用Ghostscript.NET。在这种情况下,您可能应该知道许可。Ghostscript是根据AGPL获得许可的,如果您计划“部署”使用它的软件,您需要确保遵守该许可的条款。您好@KenS,是的,我知道许可。我们只是在实际“购买”产品之前对其进行测试。但我认为这不是重点。关键是,带有图像的PostScript仅在调试模式下被正确解释。当我提到“已部署”时,我只是用我所做的示例应用创建了一个安装程序,并对其进行了测试。而且,我也尝试使用32位和64位的Ghostscript。更新了原始帖子并附加了一些图片。你要将其部署到哪里?计算机是否安装了ghostscript?Windows工作站。是的,我安装了32位和64位的ghostscript。这将有助于查看实际的命令行,而不仅仅是参数。您使用的是32位还是64位重影脚本?如何调用Ghostscript可执行文件?如果您使用的是C#或类似的东西,那么您就没有使用Ghostscript。您可能正在使用Ghostscript.NET。在这种情况下,您可能应该知道许可。Ghostscript是根据AGPL获得许可的,如果您计划“部署”使用它的软件,您需要确保遵守该许可的条款。您好@KenS,是的,我知道许可。我们只是在实际“购买”产品之前对其进行测试。但我认为这不是重点。关键是,带有图像的PostScript仅在调试模式下被正确解释。当我提到“已部署”时,我只是用我所做的示例应用创建了一个安装程序,并对其进行了测试。而且,我也尝试使用32位和64位的Ghostscript。更新了原始帖子并附上了一些图片。很好!这对我帮助很大。谢谢,很好!这对我帮助很大。谢谢