5

を使用して C# WinForms アプリの一部を表示しPrintDocumentます。ほぼ完了ですが、プリンターに問題があります。次のコードを使用してフォームの画像をキャプチャし、この画像を印刷し、最後に a を使用しPrintPreviewDialogて印刷プレビューを表示します。

PrintDocument doc = new PrintDocument();
doc.PrintPage += doc_PrintPage;
doc.Print();
printPreviewDialog1.Document = doc;
printPreviewDialog1.ShowDialog();

そしてこれはdoc_PrintPage機能です:

Bitmap bmp = new Bitmap(tabControl1.Width, tabControl1.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
tabControl1.DrawToBitmap(bmp, new Rectangle(0, 0, tabControl1.Width, tabControl1.Height));
e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
e.Graphics.DrawImage((Image)bmp, 0, 0);

doc.print()関数が呼び出されると、Microsoft OneNote プログラムが開かれ、印刷されたフォームが表示され、コントロールPrintPreviewDialogによってプレビューを含む新しいフォームが開かれます。

プリンター プログラム (既定のプリンターとして設定されている OneNote など) または物理プリンターが開かれないように、サイレント プリントを行います (ユーザーが物理プリンターを接続している場合、ページは実際に印刷されると思います)。 ! これはまさに私が望むものではありません)。印刷せずに印刷プレビューを表示したいのですが、XPS (仮想プリンター ファイル) に印刷する方法や、実際の印刷を行わない他の方法はありますか?

4

2 に答える 2

2

特定のプリンターを設定するには、を設定/変更する必要があります。PrintDocument.PrinterSettingsそうしないPrintと、特定のプリンターが必要であることを認識できず、ユーザーにデフォルトのプリンターを確認するか、別のプリンターを選択するように求められます。

アップデート:

私の頭の上から、次のようなものがうまくいくかもしれません:

PrinterSettings printerSettings = new PrinterSettings();
printerSettings.PrinterName = "Microsoft XPS Document Writer";
doc.PrinterSettings = printerSettings;

必要な設定を正確に取得するには、さまざまな設定を試してみる必要があります。

于 2013-05-05T23:04:23.130 に答える