using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Drawing.Printing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace A4打印{ public partial class Form1 : Form { DB db = new DB(); string successMsg = ""; string errMsg = ""; string sql = ""; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { List<String> list = LocalPrinter.GetLocalPrinters(); //获得系统中的打印机列表 foreach (String s in list) { comboBox1.Items.Add(s); //将打印机名称添加到下拉框中 } comboBox1.SelectedIndex = 0; this.Width = 1250; this.Height = 750; } private void button1_Click(object sender, EventArgs e) { string fontName = "隶书"; Bitmap bmp = new Bitmap(1200, 700); Graphics g = Graphics.FromImage((Image)bmp); g.Clear(Color.White); int h = 50; int w = 1100; int s = 150; string[] dres = { " 宇宙人酒楼预订菜单", " ", " 预订餐台:牡丹,桂花,玫瑰,月季", " 预订日期:二〇二〇年九月三十日 午餐", " ", "凉菜", " 凉拌土鸡|壹贰份", " 凉拌牛肉|壹份", " 凉拌耳片|壹份", "热菜" , " 宫保鸡丁|壹份", " 鱼香肉丝|壹份", " 木瓜官燕|壹份", " 红烧带鱼|壹份", " 清蒸甲鱼|壹份", " 水煮牛肉|壹份", " 蒜蓉大虾|壹份", " 干锅排骨|壹份", " 爆炒猪肝|壹份", " 鸿运当头|壹份", " 蚂蚁上树|壹份", "汤品", " 青菜圆子汤|壹份", " 鱼头豆腐汤|拾贰例", "小吃", " 南瓜饼|壹份", " 绿豆糕|壹份", "酒水", " 五粮液|壹瓶", " 王老吉|拾贰瓶", " ", " 合计金额:伍佰伍拾元整" }; for (int j = 0; j < 80; j ) { for (int i = 0; i <= dres.Length - 1; i ) { w -= 30; string str = dres[i]; string[] arr = str.Split('|'); //上部 if (arr[0].Length > j) { str = arr[0][j].ToString(); } else { str = " "; }; if (dres[i].Length > j) { g.DrawString(str, new Font(fontName, 18, FontStyle.Bold), Brushes.Black, w, h); } else { g.DrawString(" ", new Font(fontName, 18, FontStyle.Bold), Brushes.Black, w, h); }; //下部 if (dres[i].Contains('|')) { if (arr[1].Length > j) { str = arr[1][j].ToString(); } else { str = " "; }; if (dres[i].Length > j) { g.DrawString(str, new Font(fontName, 18, FontStyle.Bold), Brushes.Black, w, 750 - s); } else { g.DrawString(" ", new Font(fontName, 18, FontStyle.Bold), Brushes.Black, w, 750 - s); }; }; }; s -= 24; h = 24; w = 1100; }; pictureBox1.Image = bmp; } private void button2_Click(object sender, EventArgs e) { PrintDocument pd = new PrintDocument(); pd.PrintPage = new PrintPageEventHandler(printDocument_Print); pd.DefaultPageSettings.PrinterSettings.PrinterName = comboBox1.Text; //打印机名称 pd.DefaultPageSettings.Landscape = true; //设置横向打印,不设置默认是纵向的 pd.PrintController = new System.Drawing.Printing.StandardPrintController(); pd.Print(); } int newRow_s = 0; int newRow_e = 36; DataTable dt = null; private void printDocument_Print(object sender, PrintPageEventArgs e) { string fontName = "隶书"; PrintDocument tmp = (PrintDocument)sender; Graphics g = e.Graphics; g.Clear(Color.White); string[] dres = { " 宇宙人酒楼预订菜单", " ", " 预订餐台:牡丹,桂花,玫瑰,月季", " 预订日期:二〇二〇年九月三十日|午餐", " ", "凉菜", " 凉拌土鸡|壹贰份", " 凉拌牛肉|壹份", " 凉拌耳片|壹份", "热菜" , " 宫保鸡丁|壹份", " 鱼香肉丝|壹份", " 木瓜官燕|壹份", " 红烧带鱼|壹份", " 清蒸甲鱼|壹份", " 水煮牛肉|壹份", " 蒜蓉大虾|壹份", " 干锅排骨|壹份", " 爆炒猪肝|壹份", " 鸿运当头|壹份", " 蚂蚁上树|壹份", " 干锅排骨|壹份", " 爆炒猪肝|壹份", " 鸿运当头|壹份", " 蚂蚁上树|壹份", " 干锅排骨|壹份", " 爆炒猪肝|壹份", " 鸿运当头|壹份", " 蚂蚁上树|壹份", " 干锅排骨|壹份", " 爆炒猪肝|壹份", " 鸿运当头|壹份", " 蚂蚁上树|壹份", "汤品", " 青菜圆子汤|壹份", " 鱼头豆腐汤|拾贰例", "小吃", " 南瓜饼|壹份", " 绿豆糕|壹份", "酒水", " 五粮液|壹瓶", " 王老吉|拾贰瓶", " ", " 合计金额:伍佰伍拾元整" }; int len = dres.Length; int sLen = newRow_s; int eLen = newRow_e; if (len < 36) { sLen = 0; eLen = len; }; int h = 50; int w = 1100; int s = 150; int zh = 700; for (int j = 0; j < 30; j ) { for (int i = sLen; i <= eLen - 1; i ) { w -= 30; string str = dres[i]; string[] arr = str.Split('|'); //上部 if (arr[0].Length > j) { str = arr[0][j].ToString(); } else { str = " "; }; if (dres[i].Length > j) { g.DrawString(str, new Font(fontName, 18, FontStyle.Bold), Brushes.Black, w, h); } else { g.DrawString(" ", new Font(fontName, 18, FontStyle.Bold), Brushes.Black, w, h); }; //下部 if (dres[i].Contains('|')) { if (arr[1].Length > j) { str = arr[1][j].ToString(); } else { str = " "; }; if (dres[i].Length > j) { g.DrawString(str, new Font(fontName, 18, FontStyle.Bold), Brushes.Black, w, zh - s); } else { g.DrawString(" ", new Font(fontName, 18, FontStyle.Bold), Brushes.Black, w, zh - s); }; }; }; s -= 24; h = 24; w = 1100; }; if (newRow_e< len) { e.HasMorePages = true; newRow_s = 36; if (newRow_e 36 <= len) { newRow_e = 36; } else { newRow_e = len; }; } else { e.HasMorePages = false; newRow_s = 0; newRow_e = 36; }; } private void button3_Click(object sender, EventArgs e) { PrintDocument pd = new PrintDocument(); pd.PrintPage = new PrintPageEventHandler(printDocument_Print1); pd.DefaultPageSettings.PrinterSettings.PrinterName = comboBox1.Text; //打印机名称 pd.DefaultPageSettings.Landscape = true; //设置横向打印,不设置默认是纵向的 pd.PrintController = new System.Drawing.Printing.StandardPrintController(); pd.Print(); } private void printDocument_Print1(object sender, PrintPageEventArgs e) { string fontName = "隶书"; PrintDocument tmp = (PrintDocument)sender; Graphics g = e.Graphics; g.Clear(Color.White); Pen myPen = new Pen(Color.FromArgb(255, Color.Black), 1.0F); //原点坐标 int o_w = 0; int o_h = 0; //g.DrawLine(myPen, new Point(0, 0), new Point(10, 0)); //g.DrawLine(myPen, new Point(10, 0), new Point(10, 10)); //g.DrawLine(myPen, new Point(0, 0), new Point(0, 10)); //g.DrawLine(myPen, new Point(0, 10), new Point(10, 10)); //标题 string title = "宇宙人酒楼" "宴席单"; //预订桌台 string ths = "预订桌台:" "201(国色天香),202(难忘今宵),203(梅兰竹菊),204(满天星),205(锦水湖畔),206(小鸟依人),207(王者至尊)"; int len = GetByteLength(ths); int blen = ths.Length; if (len > 86) { int xlen = blen * 86 / len; ths = ths.Substring(0, xlen) "…"; }; //预定人姓名 string ydName = "预订人姓名:" "张三"; string ydZs = "预订桌数:" "2桌"; string ydDate = "预订日期:" "2020年12月01日"; string ydBc = "预订餐次:" "晚餐"; g.DrawString(title, new Font(fontName, 24, FontStyle.Bold), Brushes.Black, 340, o_h); g.DrawString(ths, new Font(fontName, 14, FontStyle.Bold), Brushes.Black, o_w, 50); g.DrawString(ydName, new Font(fontName, 14, FontStyle.Bold), Brushes.Black, o_w, 80); g.DrawString(ydZs, new Font(fontName, 14, FontStyle.Bold), Brushes.Black, 240, 80); g.DrawString(ydDate, new Font(fontName, 14, FontStyle.Bold), Brushes.Black, 420, 80); g.DrawString(ydBc, new Font(fontName, 14, FontStyle.Bold), Brushes.Black, 720, 80); //边框 g.DrawLine(myPen, new Point(o_w, 110), new Point(900, 110)); g.DrawLine(myPen, new Point(900, 110), new Point(900, 650)); g.DrawLine(myPen, new Point(o_w, 110), new Point(o_w, 650)); g.DrawLine(myPen, new Point(o_w, 650), new Point(900, 650)); g.DrawLine(myPen, new Point(o_w, 560), new Point(900, 560)); //g.DrawLine(myPen, new Point(890, 640), new Point(900, 640)); //g.DrawLine(myPen, new Point(900, 640), new Point(900, 650)); //g.DrawLine(myPen, new Point(890, 650), new Point(900, 650)); //g.DrawLine(myPen, new Point(890, 640), new Point(890, 650)); } /// <summary> /// 获取字符所占半角宽度个数 /// </summary> /// <param name="str"></param> /// <returns></returns> public int GetByteLength(string str) { int j = 0; for (int i = 0; i < str.Length; i ) { if ((int)str[i] > 127) { j ; j ; } else { j ; } } return j; } private void button4_Click(object sender, EventArgs e) { int s1 = GetByteLength("(长)"); int s2 = GetByteLength("(长)"); MessageBox.Show(s1.ToString()); MessageBox.Show(s2.ToString()); } private void button5_Click(object sender, EventArgs e) { string fontName = "隶书"; Bitmap bmp = new Bitmap(1200, 700); Graphics g = Graphics.FromImage((Image)bmp); g.Clear(Color.White); Pen myPen = new Pen(Color.FromArgb(255, Color.Black), 1.0F); //原点坐标 int o_w = 0; int o_h = 0; //标题 string title = "玉金香酒楼" "宴席单"; //预订桌台 string ths = "预订桌台:" "201(国色天香),202(难忘今宵),203(梅兰竹菊),204(满天星),205(锦水湖畔),206(小鸟依人),207(王者至尊)"; int len = GetByteLength(ths); int blen = ths.Length; if (len > 86) { int xlen = blen * 86 / len; ths = ths.Substring(0, xlen) "…"; }; //预定人姓名 string ydName = "预订人姓名:" "张三"; //预订桌数 string ydZs = "预订桌数:" "2桌"; //预订日期 string ydDate = "预订日期:" "2020年12月01日"; //预订餐次 string ydBc = "预订餐次:" "晚餐"; //预订菜品 DataTable cp_dt = null; errMsg = ""; dt = null; sql = "" "SELECT " "rtrim(c.cpmc) cpmc, " "y.sl, " "rtrim(c.unit) unit, " "y.price, " "y.je, " "isnull(y.remark,'') cpsm, " "isnull(x.mc,'未知') cplx,c.no cpbm " "FROM " "yy_dzcd y " "left outer join cpdb c on y.cpbh=c.no " "left outer join cpxsl x on x.no=c.cpxsl " "WHERE " "y.no=" "217" " " "ORDER BY x.mc ASC; " ""; if (db.getDataTable(sql, out dt, out errMsg)) { cp_dt = dt; } else { MessageBox.Show("错误,获取预订菜品失败!"); return; }; //获取台面备注 string o_tmbz = ""; successMsg = ""; errMsg = ""; dt = null; sql = "" "SELECT " "rtrim(remark) result " "FROM " "yydc " "WHERE " "no=" "217" " " ""; if (db.getTheData(sql, out successMsg, out errMsg)) { o_tmbz = successMsg; } else { MessageBox.Show("错误,获取台面备注失败!"); return; }; int h = 0; int h_h = 0; int w_w = 0; //打印头部 g.DrawString(title, new Font(fontName, 24, FontStyle.Bold), Brushes.Black, 340, o_h h); h = 50; g.DrawString(ths, new Font(fontName, 14, FontStyle.Regular), Brushes.Black, o_w, h); h = 30; g.DrawString(ydName, new Font(fontName, 14, FontStyle.Regular), Brushes.Black, o_w, h); g.DrawString(ydZs, new Font(fontName, 14, FontStyle.Regular), Brushes.Black, 240, h); g.DrawString(ydDate, new Font(fontName, 14, FontStyle.Regular), Brushes.Black, 420, h); g.DrawString(ydBc, new Font(fontName, 14, FontStyle.Regular), Brushes.Black, 720, h); //打印边框 g.DrawLine(myPen, new Point(o_w, 110), new Point(900, 110)); g.DrawLine(myPen, new Point(900, 110), new Point(900, 650)); g.DrawLine(myPen, new Point(o_w, 110), new Point(o_w, 650)); g.DrawLine(myPen, new Point(o_w, 650), new Point(900, 650)); g.DrawLine(myPen, new Point(o_w, 560), new Point(900, 560)); g.DrawLine(myPen, new Point(290, 110), new Point(290, 560)); g.DrawLine(myPen, new Point(580, 110), new Point(580, 560)); //打印菜品 h = 45; h_h = h; if (cp_dt.Rows.Count > 0) { string old_cplx = ""; foreach (DataRow dr in cp_dt.Rows) { string o_cplx = Convert.ToString(dr["cplx"]); string o_cpmc = Convert.ToString(dr["cpmc"]); string o_sl = Convert.ToString(dr["sl"]); string o_unit = Convert.ToString(dr["unit"]); if (h > 510) { h = h_h; w_w = 290; }; if (old_cplx != o_cplx) { old_cplx = o_cplx; g.DrawString(old_cplx, new Font(fontName, 15, FontStyle.Bold), Brushes.Black, o_w w_w 15, h); h = 20; g.DrawString(" " o_cpmc, new Font(fontName, 13, FontStyle.Regular), Brushes.Black, o_w w_w 15, h); g.DrawString(o_sl o_unit, new Font(fontName, 13, FontStyle.Regular), Brushes.Black, o_w w_w 230, h); h = 20; } else { g.DrawString(" " o_cpmc, new Font(fontName, 13, FontStyle.Regular), Brushes.Black, o_w w_w 15, h); g.DrawString(o_sl o_unit, new Font(fontName, 13, FontStyle.Regular), Brushes.Black, o_w w_w 230, h); h = 20; }; }; }; //打印备注 g.DrawString("备注:", new Font(fontName, 15, FontStyle.Bold), Brushes.Black, o_w 15, 575); g.DrawString(" " o_tmbz, new Font(fontName, 13, FontStyle.Regular), Brushes.Black, o_w 15, 600); pictureBox1.Image = bmp; } }}
下载A4打印(winform源码)用户还喜欢
- 18480 文章数
- 500万+ 热度
作者专栏
编辑推荐
- 淡抹u2引擎,修复内容较多,物有所值
- 界域传说·经典巨作=传世单机(一键安装)
- 丸子版本(175个传世版本大集合)
- GS版本:神话公益服务端+客户端
- 图片放大工具(放大图片不模糊)
- 剪映无限制VIP版
- 传奇世界客户端下载器,史上最全传世客户端
- 传世GS20220920商业引擎注册+登录配置器 解压密码是1
- U2官方排行榜游戏网关 支持元神,支持传家宝
- GS开战传世客户端+服务端
- (淡漠夕阳)u2引擎合区工具
- 传世GS引擎消除“你的游戏客户端版本号过旧,请及时更新”提示
- 传世一机多区双线路配置器--免密码版本
- 传世凤凰登陆器劫持修复软件
- SQLite3 for Navicat
- 传奇世界npc对话框编辑工具
- 传世GS落霞铭文服务器端
- gs_20210409引擎包+注册机(无限制)
- 传奇世界NPC对话封包查看器[支持时长版和极速版]
- 彩虹引擎传世脚本编辑工具1.7版来了,支持函数脚本翻译
评论