在 C# 中,PrintDocument 和 PrintDialog 中的 PrinterSettings 有啥区别?

Posted

技术标签:

【中文标题】在 C# 中,PrintDocument 和 PrintDialog 中的 PrinterSettings 有啥区别?【英文标题】:In C#, what's the difference of PrinterSettings from a PrintDocument and PrintDialog?在 C# 中,PrintDocument 和 PrintDialog 中的 PrinterSettings 有什么区别? 【发布时间】:2015-03-20 09:56:11 【问题描述】:

嗯,这是一个很奇怪的问题,我已经找到了一个黑色的魔法解决方案。我很好奇原因。

我正在编写一个程序,它使用 Brother QL-700 标签打印机来打印标签。我需要在不显示打印机对话框的情况下打印标签。 标签打印机支持不同尺寸的标签卷,标签卷的默认尺寸是29mm,而我需要的是62mm。我发现我可以通过

设置页面大小
PrintDocument doc = new PrintDocument();
PaperSize size = new PaperSize() ;
size.Width = 244;//2.44 inch = 62mm
size.Height = 244;
size.RawKind = 256;//RawKind=0 does not work, I don't know why
doc.PrinterSettings.DefaultPageSettings.PaperSize = size;

但是,这不起作用,打印机的驱动程序会显示一条消息,说宽度不适合。

但是如果我从PrintDialog() 更改了PrinterSettings 的副本,而不显示它,

PrintDialog dlg = new PrintDialog();

doc.PrinterSettings = dlg.PrinterSettings;

然后就可以了。

总之,我不明白的是为什么

size.RawKind = 256;

PrintDialog dlg = new PrintDialog();
doc.PrinterSettings = dlg.PrinterSettings;

可以让打印机工作吗?

【问题讨论】:

【参考方案1】:

RawKind 的文档没有说明 0 是有效值。它还指出,任何高于 118 的值都表示自定义纸张尺寸。由于您要指定自定义纸张尺寸,因此值 256 表示该尺寸是自定义的,这就是它起作用的原因。

【讨论】:

哦,我明白了。你知道PrintDialog和PrintDocument的默认PrinterSettings的区别吗?

以上是关于在 C# 中,PrintDocument 和 PrintDialog 中的 PrinterSettings 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

C# PrintDocument 和打印机状态

C# printdocument 分页打印

C# printDocument 直接打印Word文档

C# - 如何使用 PrintDocument 以编程方式打印现有 PDF 文件

使用 PrintDocument 打印图像。如何调整图像以适合纸张尺寸

c#打印