C# 打印自定义纸张设置
.Net 提供的打印类PrintDocument 非常简洁易用,不过在实际应用开发中往往需要对纸张进行自定义,尤其是需要进行票据打印时。这个问题也困扰了我许久,经过查阅相关的资料和多次尝试,发现其实也很简单。下面的示例就是我在.Net2.0已经验证可行的办法:
using System; using System.Collections.Generic; using System.Text; using System.Drawing; using System.Drawing.Printing;namespace PrintService {class AFCSPrinter : {/*页面打印委托*/public delegate void DoPrintDelegate(Graphics g, ref bool HasMorePage);PrintDocument iSPriner = null;bool m_bUseDefaultPaperSetting = false;DoPrintDelegate DoPrint = null;public AFCSPrinter(){iSPriner = new PrintDocument();iSPriner.PrintPage += new PrintPageEventHandler(this.OnPrintPage);}public void Dispose(){if (iSPriner != null) iSPriner.Dispose();iSPriner = null;}/*设置打印机名*/public string PrinterName{get { return iSPriner.PrinterSettings.PrinterName; }set { iSPriner.PrinterSettings.PrinterName = value; }}/*设置打印文档名*/public string DocumentName{get { return iSPriner.DocumentName; }set { iSPriner.DocumentName = value; }}/*设置是否使用缺省纸张*/public bool UseDefaultPaper{get { return m_bUseDefaultPaperSetting; }set { m_bUseDefaultPaperSetting = value;if (!m_bUseDefaultPaperSetting){//如果不适用缺省纸张则创建一个自定义纸张,注意,必须使用这个版本的构造函数才是自定义的纸张PaperSize ps=new PaperSize("Custom Size 1",827,1169);//将缺省的纸张设置为新建的自定义纸张iSPriner.DefaultPageSettings.PaperSize = ps;}}}/*纸张宽度 单位定义为毫米mm*/public float PaperWidth {get { return iSPriner.DefaultPageSettings.PaperSize.Width / 100f * 25.4f; }set{//注意,只有自定义纸张才能修改该属性,否则将导致异常if(iSPriner.DefaultPageSettings.PaperSize.Kind==PaperKind.Custom)iSPriner.DefaultPageSettings.PaperSize.Width = (int)(value / 25.4 * 100); }}/*纸张高度 单位定义为毫米mm*/public float PaperHeight{get { return (int)iSPriner.PrinterSettings.DefaultPageSettings.PaperSize.Height / 100f * 25.4f; }set {//注意,只有自定义纸张才能修改该属性,否则将导致异常if (iSPriner.DefaultPageSettings.PaperSize.Kind == PaperKind.Custom)iSPriner.DefaultPageSettings.PaperSize.Height = (int)(value / 25.4 * 100); }}/*页面打印*/private void OnPrintPage(object sender, PrintPageEventArgs ev){//调用委托绘制打印内容if (DoPrint != null){bool bHadMore = false;DoPrint(ev.Graphics, ref bHadMore);ev.HasMorePages = bHadMore;}}/* 开始打印*/public void Print(DoPrintDelegate doPrint){DoPrint = doPrint; this.iSPriner.Print();}} }
这个示例是在不要需要用户通过UI设置纸张的情况下使用。如果需要提供界面给用户选择或设置纸张则需要改造。
转载自:http://www.cnblogs.com/doonewei/archive/2012/02/27/2370262.html
C# 打印自定义纸张设置相关推荐
- 弄了一整天,终于把打印自定义纸张大小搞定了(上)--IT man
Csdn-Blog <script language="javascript" src="http://www.023rcsc.com/count/count2.a ...
- pb11 打印 自定义纸张_pb自定义纸张(连续走纸)
Pb中定制打印页长实现连续打印 pb与打印机的通讯使用ASCII码进行,其中标准ASCII码包括可打印字符及非打印字符(控制码), 打印机使用控制码来定制打印机.大多数打印机指令使用控制码escape ...
- 弄了一整天,终于把打印自定义纸张大小搞定了
长江支流说的办法保留太多了,结果不行,很多类都是他在程序集里自定义的,源码又没公开 不过还是要感谢他的提示 今天和小陈搞了一天,他在国外的论坛上看到了一篇文章得到了启示,最后我们在凌晨3点终于把自定义 ...
- Java调用PDFBox打印自定义纸张PDF
打印对象 一份设置为A3纸张, 页面边距为(10, 10, 10, 10)mm的PDF文件. PageFormat 默认PDFPrintable无法设置页面大小. 1 PDFPrintable pri ...
- XtraReport报表打印自定义纸张问题
当在打印 机设置完自定义纸张后 设置User Paper为YES后,指定打印机,页面就采用了打印机的默认纸张了. 可在属性中设置需指向的打印机 Printer Name来设置打印机,Paper Kin ...
- .NET 横向打印,自定义纸张的横向打印
最近做项目打印模块时,遇到了一个让人很头疼的问题.微软提供的打印中的landscape属性设置了没效果. 于是在网上查了一番资料,有些人人说微软的这个System.Drawing.Printing里面 ...
- pb11 打印 自定义纸张_如何设置datawindow的打印纸张大小为指定的长、宽
Pb中定制打印页长 ---- 在使用连续纸打印数据窗口的情况下,需要定制打印的页长,以保证打印机 走纸正确,不用人工干预,实现连续打印.在PB中须调用外部函数来自定义纸张 长度,比较繁琐.本文介绍一种 ...
- 菜鸟打印自定义区域设置
选择商家自定义区域建一个物流模板 2. 2.设置固定打印区域和动态打印区域,然后保存,发布 3.复制模板url 地址 4.然后调用 5.测试效果
- java 计算打印纸大小_java – 如何打印自定义纸张尺寸(检查8“x 4”)?
打印设计为每英寸像素.基本打印API使用DPI为72. 您需要相应地转换测量值- double paperWidth = 8 * 72d; double paperHeight = 4 * 72d; ...
- Excel自定义纸张打印设置碰到无法对上尺寸的问题
作者:iamlaosong 据操作人员反映,自定义纸张设置不管用,打印时每页表头都会下移,很快就跑偏到下涨纸了. 打印机是针打,齿轮进纸,应该很精确的,初步怀疑纸张尺寸量的有问题,建议其多量几页纸的长 ...
最新文章
- 【终于等到你】7种策略解除云风险警报
- es管理kabina_ES和Kibana在Linux上的安装
- impacket安装 python_安装impacket
- LeetCode——N-Queens II
- 视频的传输方式【转】
- iOS终于能微信双开了!原理竟然是这样…
- 美团网2015秋季校园招聘面试题(上)
- 头条都在用的边下边播方案
- 如果你对未来还有点迷茫不妨来看一下,必看的软件测试指引!!!
- 水晶高跟鞋(测试版)
- PDF Converter OCR for Mac(PDF转换器和OCR识别工具)
- 根据运单号查询快递物流详情
- 爬虫-Python编程入门
- geoserver(xml和json带属性互转,获取工作区-图层-样式-更新样式(解决乱码问题))
- 网络需求分析课堂作业
- 使用datapump 导出导入同义词
- 那些年啊,那些事——一个程序员的奋斗史 ——82
- android 电池监控软件,电池监控器 Battery Monitor Widget Pro for Android
- 9月全球披露区块链应用项目70个,中国市场降温
- 半波振子空间方向图matlab,关于半波振子的辐射方向图,下列说法中正确的是:【】。...
热门文章
- Win10 LTSC 2019进入桌面时假死的拆中处理方法
- L9110H电机驱动模块-FPGA
- Google Office 战略 途经:收购JotSpot
- 中国5G频谱即将公布,5G牌照或发放四张,中国广电强势入局
- 英特尔第二代神经计算棒(Intel Neural Compute Stick 2)相关测试
- 12月21诛仙服务器维护,【12月31日】全服停机更新维护公告
- 【转1】 OpenWrt Chaos Calmer 15.05使用mwan3单线多拨教程
- C盘哪些文件可以删除?windows7瘦身攻略
- 苹果手机左上角的数字怎么弄_手把手教你把抖音视频音乐设置为手机铃声。
- 命令行 笔记本键盘禁用_Panasonic(松下)笔记本 使用技巧资料整理