私のプロジェクトでGhostscript.NETを使用して、ネットワーク経由でPdfファイルを印刷しています。 Windows 10、バージョン64-Bit、Ghostscript Driverを使って、https://www.ghostscript.com/download/gsdnld.htmlからダウンロードした32-bit(Ghostscript 9.22 for Windows 32-bit)を使って、ローカルでうまく動作します。 32ビット版をインストールするための動機は例外で、Windows Server 2012 R2でGhostscript.Netが動作しない
Ghostscript.NET.GhostscriptLibraryNotInstalledException:この管理ライブラリは、32ビットプロセスの下で実行されていると、このマシンでの32ビットGhostscriptのネイティブライブラリのインストールを必要としています!適切なGhostscriptのネイティブライブラリをダウンロードするにはご覧ください。http://www.ghostscript.com/download/gsdnld.html
を、Ghostscriptの64ビットドライバを使用するときに自分のアプリケーションログに発生します。
私が自分のアプリケーションを公開した対象オペレーションシステムは、Windows Server 2012 R2です。同じGhostscriptドライバ(Ghostscript 9.22 for Windows 32-bit)を使用すると、アプリケーションに応答せずにprintコマンドループが無期限にループします。
この目的のために、私はファイアウォールとウイルス対策を無効にしてループの原因となる可能性を排除しました。
私のアプリケーションは、ディスクからpdfファイルを読み取り、Ghostscriptを使用してネットワークプリンタに送信します。プロセスをシミュレートするため、TeamViewerを使用してクライアントマシンにリモート接続します。したがって、このマシンからファイルをディスクに保存し、Ghostscriptを使用してネットワークプリンタで文書を印刷するREST Webサービスを呼び出します。
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を使用しています。
誰かが私を助けることができますか?