我已经在我的应用程序中添加了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);
}
}