によって返される文字列コレクションに項目が設定されたコンボボックスを含む小さなダイアログを表示しますPrinterSettings.InstalledPrinters
。
マシンにGSViewをインストールすることを必須にすることができれば、PDF をサイレントに印刷できます。少し遅くて回りくどいですが、少なくとも Acrobat をポップアップする必要はありません。
UPS Web サービスから返された PDF を印刷するために使用するコードを次に示します。
private void PrintFormPdfData(byte[] formPdfData)
{
string tempFile;
tempFile = Path.GetTempFileName();
using (FileStream fs = new FileStream(tempFile, FileMode.Create))
{
fs.Write(formPdfData, 0, formPdfData.Length);
fs.Flush();
}
try
{
string gsArguments;
string gsLocation;
ProcessStartInfo gsProcessInfo;
Process gsProcess;
gsArguments = string.Format("-grey -noquery -printer \"HP LaserJet 5M\" \"{0}\"", tempFile);
gsLocation = @"C:\Program Files\Ghostgum\gsview\gsprint.exe";
gsProcessInfo = new ProcessStartInfo();
gsProcessInfo.WindowStyle = ProcessWindowStyle.Hidden;
gsProcessInfo.FileName = gsLocation;
gsProcessInfo.Arguments = gsArguments;
gsProcess = Process.Start(gsProcessInfo);
gsProcess.WaitForExit();
}
finally
{
File.Delete(tempFile);
}
}
ご覧のとおり、PDF データをバイト配列として取得し、それを一時ファイルに書き込み、gsprint.exe を起動して、指定されたプリンター ("HP Laserjet 5M") にサイレント モードでファイルを印刷します。プリンター名を、ユーザーがダイアログ ボックスで選択したものに置き換えることができます。
PNG または GIF を印刷する方がはるかに簡単です。PrintDocument クラスを拡張し、Windows フォームが提供する通常の印刷ダイアログを使用するだけです。
幸運を!