1

プログラムでプリンタから PDF ファイルを印刷するにはどうすればよいですか? printout コマンドは、追加のダイアログが表示されることなく実行されます。

コンソール アプリケーションを使用しており、サード パーティのライブラリやツールを使用せずにこれを行う必要がある

4

2 に答える 2

3

@Freelancerが書いた行に沿って、Adobeのレジストリ設定を使用してAcrobatリーダー実行可能ファイルへのパスを見つけるため、次の方法を使用しますが、デフォルトのプリンターにサイレントに印刷します。

private void PrintPdf(string fileName)
{
    var hkeyLocalMachine = Registry.LocalMachine.OpenSubKey(@"Software\Classes\Software\Adobe\Acrobat");
    if (hkeyLocalMachine != null)
    {
        var exe = hkeyLocalMachine.OpenSubKey("Exe");
        if (exe != null)
        {
            var acrobatPath = exe.GetValue(null).ToString();

            if (!string.IsNullOrEmpty(acrobatPath))
            {
                var process = new Process
                {
                    StartInfo =
                    {
                        UseShellExecute = false,
                        FileName = acrobatPath,
                        Arguments = string.Format(CultureInfo.CurrentCulture, "/T {0}", fileName)
                    }
                };

                process.Start();
            }
        }
    }
}
于 2013-04-09T06:28:46.163 に答える
0

.NET Framework は、外部プロセスを開始するために使用できる System.Diagnostics 名前空間にクラスを提供します。いくつかのプロジェクトで次のコードを使用して、さまざまな実行可能ファイルを起動しました。これを使用して、Adobe Acrobat Reader も起動できます。

using System.Diagnostics;
using System.IO;
using System.Text;
using System.Threading;
private static void RunExecutable(string executable, string arguments) 
  {
   ProcessStartInfo starter = new ProcessStartInfo(executable, arguments);
   starter.CreateNoWindow = true;
   starter.RedirectStandardOutput = true;
   starter.UseShellExecute = false;
   Process process = new Process();
   process.StartInfo = starter;
   process.Start();
   StringBuilder buffer = new StringBuilder();
   using (StreamReader reader = process.StandardOutput) 
   {
    string line = reader.ReadLine();
    while (line != null) 
    {
     buffer.Append(line);
     buffer.Append(Environment.NewLine);
     line = reader.ReadLine();
     Thread.Sleep(100);
    }
   }
   if (process.ExitCode != 0) 
   {
    throw new Exception(string.Format(@"""{0}"" exited with ExitCode {1}. Output: {2}", 
executable, process.ExitCode, buffer.ToString());  
   }
  }

上記のコードをプロジェクトに組み込み、次のように使用することで、PDF を印刷できます。

string pathToExecutable = "c:\...\acrord32.exe";
RunExecutable(pathToExecutable, @"/t ""mytest.pdf"" ""My Windows PrinterName""");

注:このコードはhttp://aspalliance.com/514_CodeSnip_Printing_PDF_from_NET.allに属します。

このリンクで、このコードに関するすべての議論に従うことができます。

お役に立てば幸いです。

于 2013-04-09T05:52:36.620 に答える