gpt4 book ai didi

c# - 以编程方式打印到虚拟打印机 (XPS)

转载 作者:太空狗 更新时间:2023-10-29 23:15:50 30 4
gpt4 key购买 nike

我将使用 PrintDocument 显示我的 C# WinForms 应用程序的一部分,这几乎完成了,但是我的打印机出现了问题。我使用以下代码捕获表单图像,然后打印该图像,最后我使用 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(虚拟打印机文件?)或任何其他不执行实际打印的方法吗?

最佳答案

我无法添加评论,因此无法回答。Peter Ritchie 的建议是正确的,如果您想确定打印输出不会在(虚拟)打印机中结束。

我已经检查了 PrintPreviewDialog,这就是我的工作:

PrintDocument doc = new PrintDocument();
doc.PrinterSettings.PrinterName = this.m_printingParameters.SelectedPrinterName;
doc.PrinterSettings.PrintFileName = Path.Combine(Path.GetTempPath(), "Temporary_result.xps");
doc.PrinterSettings.PrintToFile = true;
doc.PrintPage += doc_PrintPage;

PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog();
printPreviewDialog1.Document = doc;
printPreviewDialog1.ShowDialog();

如果用户点击打印图标,结果将打印到临时文件夹中的文件中。只是为了确保您之后可以删除该文件。

不过,如果您想创建一个没有打印按钮的打印预览对话框,请查看此主题 Disabling "print" button in .net print preview dialog

这是你要找的吗?

关于c# - 以编程方式打印到虚拟打印机 (XPS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16386703/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com