IIS 8上的GhostScript.NET GSPrint权限

时间:2017-02-23 17:51:23

标签: asp.net iis ghostscript.net

我已经在我的应用程序中添加了GhostScript.NET,并且能够在我的本地计算机上使用GSPrint成功打印PDF。不幸的是,在将更新的应用程序部署到服务器以及安装GSView(包括GSPrint)之后,打印功能只会挂起而没有任何错误。

我的第一个猜测是,因为我正在写文件系统以便GSPrint打印文件,所以它与访问安全权限有关。我在Windows Server 2012上使用IIS 8.如果有任何人有部署GSPrint的经验或如何解决这个问题,我会很感激。

以下是代码:

 public static void PrintingQueue(Queue<byte[]> printQueue, string printer, int copies)
    {
        Parallel.ForEach(printQueue, (currentFile) =>
        {
            PrintWithGSPrint(currentFile, printer, copies);
        });
        printQueue.Clear();
    }

    private static void PrintWithGSPrint(byte[] pdfFormBytes, string printer, int copies)
    {
        try
        {
            var fileName = Path.GetTempFileName();
            using (var file = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite))
            {
                file.Write(pdfFormBytes, 0, pdfFormBytes.Length);
                //this uses GSPrint, which console commands are different from vanilla ghostscript.
                var gsArguments = $"-noquery -portrait -printer\"{printer}\" \"{fileName}\"";
                var gsLocation = @"C:\Program Files\Ghostgum\gsview\gsprint.exe";

                var gsProcessInfo = new ProcessStartInfo
                {
                    WindowStyle = ProcessWindowStyle.Hidden,
                    FileName = gsLocation,
                    Arguments = gsArguments
                };

                var gsProcess = Process.Start(gsProcessInfo);
                gsProcess.WaitForExit();
                file.Close();
            }
            File.Delete(fileName);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }

0 个答案:

没有答案