首页 > 代码库 > 自定义纸张 未验证
自定义纸张 未验证
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设置纸张
----------------------------------------------------------------------------------------------
NT,2000,XP,2003....下不能用DefaultPageSettings.PaperSize = new PaperSize("Custom", 826, 492)这种方式定义纸张大小,Win98可以。
你需要在服务器属性中添加自定义表单,然后用
- C# code
- foreach (PaperSize paperSize in printDoc.PrinterSettings.PaperSizes){if (paperSize.PaperName =="自定义表单名称"&& paperSize.Height == width && paperSize.Height == height) {printDoc.DefaultPageSettings.PaperSize = paperSize; break;}}
这种方式来设置自定义纸张
--------------------------------------------------------------------------------------------------------------
在c#的gdi+中,graphics对象的PageUnit 属性 设置为 GraphicsUnit.Millimeter,这样使用drawstring方法输出字符串时,坐标的单位就变成了毫米,然后进行精确位置的文本输出就会很容易。
-----------------------------------------------------------------------------------------
在Window 98下使用
PrintDocument Document = new PrintDocument();
Document.DefaultPageSettings.PaperSize = new PaperSize("A5", 827, 583);
在Win2000,XP以上的版本中使用
PaperSize ps = new PaperSize("自定", 627, 583);
foreach (PaperSize ps2 in Document.PrinterSettings.PaperSizes)
{
if (ps2.PaperName == "A5")
{
printDocument1.DefaultPageSettings.PaperSize = ps2;//打印A5尺寸
}
//如果是自定尺寸,则用下面的语句
if (ps2.PaperName == "自定")
{
printDocument1.DefaultPageSettings.PaperSize = ps;
}
}
自定义纸张 未验证
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。