程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> c# PrintDocument 設置自定義紙張大小的示例

c# PrintDocument 設置自定義紙張大小的示例

編輯: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設置紙張的情況下使用。如果需要提供界面給用戶選擇或設置紙張則需要改造。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved