1. ホーム
  2. c#

[解決済み] ファイルドキュメントをプリンターに送って印刷するにはどうしたらよいですか?

2023-05-30 03:52:41

質問内容

大前提はこうだ。

私のユーザーがいくつかのギズモをクリックすると、PDF ファイルがデスクトップに出力されます。このファイルをプリンター キューに送り、ローカルに接続されたプリンターに印刷させる方法はないでしょうか。

string filePath = "filepathisalreadysethere";
SendToPrinter(filePath); //Something like this?

彼はこの作業を何度も行います。教室の各生徒について、彼は小さなレポートカードを印刷する必要があります。そこで、生徒ごとに PDF を生成していますが、ユーザーが生成した pdf、印刷、pdf の生成、印刷、pdf の生成、印刷の代わりに、印刷処理を自動化したいと思います。

これにアプローチする方法について、何か提案はありますか。私は Windows XP で Windows Forms .NET 4 を使用しています。

私はこれを見つけました スタックオーバーフロー の質問で、受け入れられた回答が示唆するところです。

ファイルを作成したら コマンドラインから印刷することができます。 にある Command クラスを使用することができます。 を使用できます。 を使用できます)。

どのようにしてこれを達成するのでしょうか?

どのように解決するのですか?

Acrobat Reader にファイルを印刷するように指示するには、(ここですでに誰かが述べているように)「print」動詞を使用します。その後、プログラム的に Acrobat Reader を終了する必要があります。

private void SendToPrinter()
{
   ProcessStartInfo info = new ProcessStartInfo();
   info.Verb = "print";
   info.FileName = @"c:\output.pdf";
   info.CreateNoWindow = true;
   info.WindowStyle = ProcessWindowStyle.Hidden;

   Process p = new Process();
   p.StartInfo = info;
   p.Start();

   p.WaitForInputIdle();
   System.Threading.Thread.Sleep(3000);
   if (false == p.CloseMainWindow())
      p.Kill();
}

これは、Acrobat Readerを開き、PDFをデフォルトのプリンタに送るように指示し、3秒後にAcrobatをシャットダウンします。

もし、自分のアプリケーションに他の製品を同梱する気があるなら、GhostScript (無料) や、以下のようなコマンドライン PDF プリンタを使用することができます。 http://www.commandlinepdf.com/ (商用) などのコマンドライン PDF プリンターを使用できます。

注意 サンプルコードでは、PDFを でPDFを開きます。 でPDFを開きますが、これはほとんどの人のマシンではAdobe Acrobat Readerです。しかし、Foxit などの別の PDF ビューアーを使用している可能性もあります ( http://www.foxitsoftware.com/pdf/reader/ ). しかし、サンプル コードはまだ動作するはずです。