0

我已将 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);
        }
    }
4

0 回答 0