QA@IT

C# プリンタでの印刷について

8191 PV

いつもお世話になります。

C#において、印刷中に用紙の向きやサイズを変更することは可能でしょうか?
例えば、1ページ目を縦向きで印刷、2ページ目を横向きで印刷、といった具合です。

よろしくお願い致します。

  • 印刷には何をお使いですか? -
  • System.Drawing.Printing.PrintDocumentクラスを使用しています。よろしくお願いします。 -
  • コメントを追加しました。 -

回答

ページ毎にQueryPageSettingsイベントが起こりますので、
そこで設定します。

e.PageSettings.Landscape = false; // 横

イベント内で現在のページを判断する方法は別途用意してください。


void PrintDoc_QueryPageSettings(object sender, QueryPageSettingsEventArgs e)
{
    // こちらは何かページを判断する手段を用意する必要があるかと思います。
    e.PageSettings.Landscape = false;

または

void PrintDoc_PrintPage(object sender, PrintPageEventArgs e)
{
    // こちらの場合はなにか出力してしまった後は無理かもしれません。
    e.PageSettings.Landscape = true;
編集 履歴 (2)
  • ご回答ありがとうございます。PrintDocument.PrintPageイベントに追加したイベント ハンドラー内で切り替える場合はどのようにしたらいいのでしょうか? -
  • 同様に切り替え可能だと思います。ただし、なにか出力してしまった場合途中で切り替えはできないかもしれません。 -
  • 試した結果、QueryPageSettingsイベントのタイミングで切り替えることで問題なかったです。flied_onionさん、いつもありがとうございます。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。