我在我的项目中使用 Ghostscript.NET 跨网络打印 Pdf 文件。本地工作正常,使用从https://www.ghostscript.com/download/gsdnld.html下载的 Windows 10 版本 64 位和 Ghostscript 驱动程序到 32 位(Windows 32 位的 Ghostscript 9.22)。安装 32 位版本的动机是例外,
Ghostscript.NET.GhostscriptLibraryNotInstalledException:此托管库在 32 位进程下运行,需要在此机器上安装 32 位 Ghostscript 本机库!要下载适当的 Ghostscript 本机库,请访问:http ://www.ghostscript.com/download/gsdnld.html
,在使用 Ghostscript 64 位驱动程序时出现在我的应用程序日志中。
我发布应用程序的目标操作系统是 Windows Server 2012 R2。使用相同的 Ghostscript 驱动程序(适用于 Windows 32 位的 Ghostscript 9.22),打印命令无限循环,而不响应我的应用程序。
为此,我禁用了防火墙和防病毒软件,以消除它们成为循环原因的可能性。
我的应用程序从磁盘读取 pdf 文件并使用 Ghostscript 将其发送到网络打印机。为了模拟我使用 TeamViewer 远程连接到客户端计算机的过程。因此,我从这台机器调用 REST Web 服务,它将文件保存到磁盘并使用 Ghostscript 在网络打印机中打印文档。
try
{
var task = Task.Run(() =>
{
using (GhostscriptProcessor processor = new GhostscriptProcessor(GhostscriptVersionInfo.GetLastInstalledVersion(), true))
{
List<string> switches = new List<string>();
switches.Add("-empty");
switches.Add("-dPrinted");
switches.Add("-dBATCH");
switches.Add("-dNOPAUSE");
switches.Add("-dNOSAFER");
switches.Add("-dPDFFitPage");
switches.Add("-dNumCopies=" + numCopias);
switches.Add("-sDEVICE=mswinpr2");
switches.Add("-sOutputFile=%printer%" + "\\\\" + printerIP + "\\" + printerNAME);
switches.Add("-f");
switches.Add(inputFile);
processor.StartProcessing(switches.ToArray(), null);
}
});
if (!task.Wait(TimeSpan.FromSeconds(Int32.Parse(ConfigurationManager.AppSettings["MAX_PRINTER_DELAY"]))))
{
Log.Info(String.Format("A impressão do arquivo ({0}) ({1}) foi encerrada porque ultrapassou MAX_PRINTER_DELAY = {2}!", inputFile, printerNAME, ConfigurationManager.AppSettings["MAX_PRINTER_DELAY"]));
}
}
catch (GhostscriptLibraryNotInstalledException e)
{
Log.Info("O GhostScript não está instalado.");
Log.Error(e);
}
catch (GhostscriptException e)
{
Log.Info("O GhostScript apresentou erro.");
Log.Error(e);
}
catch (Exception exception)
{
Log.Error(exception);
}
我正在使用 Ghostscript.NET 1.2.1.0 版。
有人能帮我吗?