c# - 在 C# Web API Web 服务中使用 Process() 调用 GhostScript

标签 c# asp.net web-services pdf ghostscript

我正在尝试通过使用 Process() 调用 GhostScript 从 WebAPI Web 服务打印 pdf 文件

这在我的本地计算机上“调试”ASP.NET 应用程序时非常有效,但是当我使用完全相同的代码尝试通过 Web 服务打印时——也在我的本地计算机上——它不起作用。

我在 VS 中没有遇到任何类型的异常 - 就应用程序而言,应用程序运行良好。

这是我用来调用 GhostScript 打印机的代码:

Process process = new Process();

process.StartInfo.Arguments = @" -dPrinted -dBATCH -dNOPROMPT -dNOPAUSE -dNOSAFER -q -dNumCopies=1 -sDEVICE=mswinpr2 -dNoCancel -sPAPERSIZE=a4 -sOutputFile=\\spool\\\printserver\printer c:\\test\test.pdf";


process.StartInfo.FileName = @"C:\Program Files (x86)\GPLGS\gswin32c.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.RedirectStandardOutput = true;

StringBuilder output = new StringBuilder();
StringBuilder error = new StringBuilder();

using (AutoResetEvent outputWaitHandle = new AutoResetEvent(false))
using (AutoResetEvent errorWaitHandle = new AutoResetEvent(false))
{
    process.OutputDataReceived += (sender, e) => {
        if (e.Data == null)
        {
            outputWaitHandle.Set();
        }
        else
        {
            Console.Write(e.Data);
            output.AppendLine(e.Data);
        }
    };
    process.ErrorDataReceived += (sender, e) =>
    {
        if (e.Data == null)
        {
                errorWaitHandle.Set();
            }
            else
            {
                Console.Write(e.Data);
                error.AppendLine(e.Data);
            }
        };

    process.Start();

    process.BeginOutputReadLine();
    process.BeginErrorReadLine();
    process.WaitForExit();
    if (process.HasExited == false) process.Kill();
    return process.ExitCode == 0;

我认为这可能与未为所有用户安装打印机有关,因此为所有用户添加了它们。我能看到的唯一另一件事是权限 - 但无法找到解决方案。

有没有人有什么想法?

在此先感谢您的帮助。 :)

最佳答案

正如所怀疑的那样,这原来是一个权限问题。将 Web 服务发布到 IIS 后,我将默认应用程序池更改为使用用户身份,打印突然开始正常工作。

我将设置一个专门用于打印的用户帐户 - 没有写入权限 - 并暂时使用它。

关于c# - 在 C# Web API Web 服务中使用 Process() 调用 GhostScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20684986/

相关文章:

c# - 调用负载平衡的 Web 服务的偶发异常

eclipse - 无法访问部署在本地的远程JSP webservice

c# - ASP.NET 自定义 MembershipProvider

c# - 无法使用 iText7 合并内存中的 PDF 文件

c# - Aspx页面中的foreach循环如何添加复选框和标签

asp.net - 如何在 webapi 中为 [Authorize] 过滤器添加未经授权访问的日志记录

c# - 如何在 Visual Studio 中启用实时可视化树和实时属性资源管理器

c# - 如何在 Ninject 3 中解除具体的自绑定(bind)单例绑定(bind)?

asp.net - 将MVC5项目升级到MVC6

java - JAX-WS:有状态 WS 在独立进程中失败