2017-05-25 6 views
8

ユーザーは、既に定義済みのプリンタプロファイルを選択できるPrintDialogを表示する印刷オプションを選択できます。選択したプリンタプロファイル/ページサイズのファイルを印刷

このプリンタのデフォルト用紙サイズはA4ですが、このプロファイルを選択するとA5に変更されます。

私は以下のコードを使用してプリンタを修正しますが、常にA4で印刷されるので、正しい用紙サイズを選択しません。私はここで何かを逃しているのですか、これを達成する別の方法がありますか?

using (var pd = new PrintDialog()) 
{ 
    if (pd.ShowDialog() == DialogResult.OK) 
     { 
     var info = new ProcessStartInfo(filepath) 
        { 
         Arguments = "\"" + pd.PrinterSettings + "\"", 
         CreateNoWindow = true, 
         WindowStyle = ProcessWindowStyle.Hidden, 
         UseShellExecute = true, 
         Verb = "Print" 
        }; 
     Process.Start(info); 
     } 
    } 
+3

*どんなプログラムが*ファイルパスに関連付けられていることを過度にそうであるあなたが合格これらの引数を鑑賞しようとしています。一般に、印刷動詞を実装するプログラムは、使用する用紙を自分で決めるだけです。ほとんどの場合、デフォルトの選択はコントロールパネルで設定されています。 –

+0

これは、プリンタドライバのデフォルトの設定オプションダイアログのように見えますが、別のプロセスとして開くようです。あなたは、デフォルトのプリンタ設定を変更するプログラムを作ろうとしていますか? 言い換えれば、私はあなたが何をしようとしているかについて非常に混乱しています。 S. Hooleyさんの答えは、アプリ内から実際にページを印刷する通常の方法を示しています。私は、PrintDialogと組み合わせて使用​​して、ユーザーが印刷設定を調整できるようにすると信じています。 TLDR:正確に何をしようとしているのかを詳しく教えてください。 – ashbygeek

答えて

0

あなたはSystem.Drawing.PrintingからのPrintDocumentに依存している以下のようなpage settings使用してコードを指定することができるはずです。必要であれば、あなたもPrintDocumentクラスを使用してPrintPageイベントのイベントハンドラを定義することができます。

PrintDocument pd = new PrintDocument(); 
//pd.PrintPage += new PrintPageEventHandler(handlePagePrint); 
pd.PrinterSettings.PrinterName = "Printer name goes here"; 
// select the appropriate item from the PaperSizes collection 
pd.DefaultPageSettings.PaperSize = pd.PrinterSettings.PaperSizes[0]; 

if (pd.PrinterSettings.IsValid) 
{ 
    pd.Print(); 
} 
+0

これはプリンタ設定ダイアログでもどのように結びついているかを示すのが良いでしょう。 – ashbygeek

関連する問題