c# PrintDocument 设置自定义纸张大小的示例
.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",,);
//将缺省的纸张设置为新建的自定义纸张
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 * );
}
} /*纸张高度 单位定义为毫米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 * );
}
} /*页面打印*/
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设置纸张的情况下使用。如果需要提供界面给用户选择或设置纸张则需要改造
c# PrintDocument 设置自定义纸张大小的示例的更多相关文章
- [Q]自定义纸张大小
问:当打印机纸张列表里没有符合要求的纸张大小,例如如何打印加长图?答:当打印非标准图框时,你可能在图纸列表里找不到想要纸幅.你需要自己新建你需要的纸幅,以pdfFactory虚拟打印机为例(其它打印机 ...
- 在C#中设置打印机纸张大小
using System.Drawing.Printing.PrintDocument using System.Drawing.Printing.PrinterSettings.PaperSizeC ...
- 水晶报表自定义纸张大小打印 (Crystal Report Print with custom paper size)
System.Drawing.Printing.PrintDocument doc = new PrintDocument(); doc.PrinterSettings.PrinterName = & ...
- C# 将Excel转为PDF时自定义表格纸张大小
通过后端程序将Excel表格转为PDF格式时,直接转换后的PDF效果可能出现表格页面过小或者过大,导致页面内容分布不均.要改善转换后的文档效果,只需在转换前自定义表格纸张大小,即可调整转换后的PDF页 ...
- 利用ActiveX实现web页面设置本地默认打印机、纸张大小
通常web技术无法设置本地计算机的默认打印机,包括用代码设置纸张大小,如果业务系统中真遇到这种需求,只能通过其它辅助手段(比如ActiveX)实现.下面这段代码,出自网上被广泛使用的"泥人张 ...
- C#控制条码打印机 纸张大小,间距,绘制内容(所有条码打印机通用)
其他条码知识 请访问:http://www.ybtiaoma.com ,本文仅供参考,请勿转载,谢谢 using System; using System.Drawing; using System. ...
- c#实现打印功能,可以设置纸张大小,字体和颜色等
/// <summary> /// 打印的按钮 /// </summary> /// <param name="sender"></par ...
- C#中使用自定义的纸张大小
using System.Drawing.Printing; using System.Drawing; private void Test() { PrintDocument m_pdoc = ne ...
- C#调用windows api控制打印机 状态获取 打印 自定义纸张 完整版
using System; using System.Text; using System.Runtime.InteropServices; using System.Security; using ...
随机推荐
- Apache服务
Apache服务的安装: Apache服务程序的软件包名称是:httpd 安装方法: rpm软件包安装.源码编译安装.yum安装 yum install httpd 安装完成后启动: revice h ...
- https证书申请
因为要为海外组的aws设置https证书,由于使用的是新的域名,所以要先申请购买证书,然后设置上去.由于是第一次做这件事.所以过程有些坎坷. 先购买https证书.看了几家,感觉GoDad ...
- jQuery入门[1]-构造函数【转载】
最近看了一些jquery的进阶教程,感觉很不错,与大家分享下! jQuery——构造函数 ◦体积小(v1.2.3 15kb)◦丰富的DOM选择器(CSS1-3 + XPath) ◦跨浏览器(IE6,F ...
- Java Web开发之Servlet、JSP基础
有好多年不搞Java Web开发了,这几天正好国庆放假,放松之余也有兴趣回头看看Java Web开发技术的基础. 我们都知道,Servlet是Java Web开发的重要基础,但是由于Servlet开发 ...
- CSS学习_属性选择器
CSS选择器参考 [attribute]——选取带有指定属性的元素: [attribute=value]——选取带有指定属性和值的元素: [attribute~=value]——选取属性值中包含指定词 ...
- 2016032101 - eclipse3.7+jdk1.6+maven3.0.5
公司使用jdk1.6做开发环境,那么使用的eclipse需要下载3.7版本,因为eclipse4以上必须使用jdk1.7及其以上版本. 1.资源下载 jdk1.6需要去oracle官网去下载,可能需要 ...
- 制作按钮(Button)
按钮的核心作用 1.按钮能接收单击并触发响应事件. 2.按钮被单击时能同时触发多个响应事件. 3.按钮可以有普通.悬停.单击.禁用等多个状态的不同表现. 4.广泛的说,按钮的核心在于接收事件,任何可以 ...
- jQuery name checked 模糊查找匹配ID
("div[name='jobTitle']") $("#aDiv").find("input[type='checkbox']:checked&qu ...
- quicksort+binarySearch
描述 数轴上有n个点,对于任一闭区间 [a, b],试计算落在其内的点数. 输入 第一行包括两个整数:点的总数n,查询的次数m. 第二行包含n个数,为各个点的坐标. 以下m行,各包含两个整数:查询区间 ...
- Python 学习日志(一)
第一天: (一)安装Python3.3: (二)试运行: 1.在IDLE中输入:print("Hello,world"); //回车查看结果 2.使用"File" ...