C# PrintDocument设置自定义纸张类型:PaperKind只读问题如何解决?
解决PrintDocument设置自定义纸张类型的问题
你遇到的核心问题是:DefaultPageSettings.PaperSize 的 Kind 属性为只读,无法直接修改为 Custom。正确的做法是创建一个全新的自定义PaperSize实例,替换掉原有的PaperSize对象。
具体实现步骤
单位转换:.NET打印系统以「百分之一英寸」为单位,先把你的英寸数值转换为对应单位:
- 固定宽度3.3英寸 = 330(3.3 × 100)
- 高度根据计算结果转换,比如0.8英寸=80,100英寸=10000
创建自定义PaperSize:
直接实例化PaperSize类,指定PaperKind.Custom并设置宽高参数,最后将其赋值给DefaultPageSettings.PaperSize。
完整代码示例
// 替换为你计算得到的实际纸张高度 int customHeight = 500; int fixedWidth = 330; // 3.3英寸对应的百分之一英寸单位值 // 创建自定义纸张尺寸实例 PaperSize customPaperSize = new PaperSize("CustomLabel", fixedWidth, customHeight); customPaperSize.Kind = PaperKind.Custom; // 替换PrintDocument的默认纸张设置 doc.DefaultPageSettings.PaperSize = customPaperSize; // 可选:标签打印通常无需边距,可设置为0 doc.DefaultPageSettings.Margins = new Margins(0, 0, 0, 0);
注意事项
- 确认打印机硬件支持自定义尺寸,部分低端打印机可能存在最大高度限制。
- 若需保留打印机其他默认设置,仅替换PaperSize即可,无需改动其他参数。
内容的提问来源于stack exchange,提问作者S2G
相关产品推荐
相关产品推荐

