自定義紙張 未驗證
阿新 • • 發佈:2017-06-22
開始 使用 復制 names 字符串 就會 設置 rsize 一個
在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;
}
}
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方法輸出字符串時,坐標的單位就變成了毫米,然後進行精確位置的文本輸出就會很容易。
-----------------------------------------------------------------------------------------
自定義紙張 未驗證