2016-12-22 15 views
0

私はGoogleを検索し、いくつかの解決策を発見しました。私は次のコードを使用しました。 IIS ExpressでVisual Studioを使用してアプリケーションを実行しているときにネットワークプリンタに印刷できますが、ローカルホストにアプリケーションをホストすると、次のコードは印刷されません。asp.netアプリケーションから静かにPDFファイルを印刷

ProcessStartInfo psi = new ProcessStartInfo(pdfFileName) { Verb = "Print" }; 
      psi.CreateNoWindow = true; 
      psi.WindowStyle = ProcessWindowStyle.Hidden; 
      Process p = new Process(); 
      p.StartInfo = psi; 
      Process.Start(psi); 
      System.Threading.Thread.Sleep(5000); 
      if (false == p.CloseMainWindow()) 
      { 
       p.Kill(); 
      } 
      else 
      { 
       p.WaitForInputIdle(); 
      } 

私は完全に固執しています。私に提案をしたり、サンプルコードやリンクを教えてください。

答えて

0

これを正しく理解していれば、PDFのファイル名で新しいプロセスを開始し、動詞をプロセスに渡そうとしているので、(PDFを印刷するために)何をすべきか分かっています。

「CreateNoWindow」の部分をコメントアウトして何が起こるかを確認します。あなたは、PDFファイルを開いて表示することができる何かをサーバー上に持っていますか? PDFは、Edge、Adobe Reader、Readerアプリケーション(8.1)、IrfanViewなどで処理することができ、それらのアプリケーションは "印刷"動詞を異なる方法で扱うことは間違いありません。

スリープ機能は、特定の時間待機するため、結果が矛盾することもあります。 AutoItXツールキットのWinWaitActive(UIオートメーションをやっているようなもの)の方がいいかもしれません。代わりに

if (false == p.CloseMainWindow()) 

を行うのあなたは

if (!p.CloseMainWindow()) 

を行うことができます。これは、コードの可読性を改善することができます

はまた、(!は、本質的に「ない」と同じであるので、そのチェックそれが値を返した場合真実ではない)。

EDIT:IIS Expressはローカルアカウントで実行されるため、プリンタがインストールされている可能性があります。完全なIISサーバーは、プリンタがインストールされていないネットワークサービスアカウントとして実行される可能性があります。

wiserあなたのPDFがフォルダに生成されていることを意思決定することを決定した後、このファイルにすべてのファイルを印刷するサービスとして別のC#アプリケーションをサーバー上で実行するそれらのプリンタがインストールされているユーザーとしてそのサービスを実行することができます。 FileSystemWatcherを実装すると、新しいファイルがそのディレクトリに置かれたときにのみトリガし、印刷ジョブを処理してからPDFを削除することができます。どのようにすべての作品(そのファイルを見てビット):ここで参照してください:Using FileSystemWatcher to monitor a directory

+0

ありがとうルイスあなたのコメントのために。私はあなたのコメントから何かを明確にしていない。あなたは、PDFファイルを開いて表示することができる何かをサーバー上に持っていますか? – Morshed

+0

コメントありがとうございました。私は "CreateNoWindow"をコメントアウトしましたが、アプリケーションはサーバー側から印刷できません。私はあなたのコメントから何かを明確にしていない。 1.サーバー上にPDFファイルを開いて表示できるものはありますか? 2.別のC#アプリケーションがサーバ上でサービスとして実行され、このフォルダ内のすべてのファイルを印刷します.2番目のコメントでは、どのようなサービスですか?ここでも、サーバー側からサービスが印刷コマンドを送信する方法は同じですか?私はフォルダにPDFファイルを生成し、そのフォルダから印刷しようとしました。 – Morshed

+0

私は別のコードを見つけましたが、依然としてpdfファイルを印刷できません。次のようにコードします。 (\ "C:\\ Programs \ Adob​​e \ Reader 9.0 \ Reader \ AcroRd32.exe"、@ "/ t C:\ test.pdf \\ Server \ Printer"); 。このコードでは、指定されたAcrobat Reader、PDFファイル、およびプリンタ名がPDFファイルを印刷することはできません。別のリンクhttps://support.microsoft.com/en-us/kb/322091が見つかりました。 IIS ExpressまたはローカルIISから印刷できません。すぐに解決策が必要です。任意の提案、アイデア、またはサンプルコード? – Morshed

関連する問題