C#打印图片

打印的原理是:生成mdi文件,系统碰到mdi的时候会自动以打印的方式处理。所以,不管用什么模板,什么方式;能在PrintPage事件处理中,生成一张要打印内容的图片就OK了!

C#实现打印源码如下:

#region 打印
        private void btnPrint_Click(object sender, EventArgs e)
        {
            //打印预览
            //PrintPreviewDialog ppd = new PrintPreviewDialog();
            PrintDocument pd = new PrintDocument();
            //设置边距
            Margins margin = new Margins(20, 20, 20, 20);
            pd.DefaultPageSettings.Margins = margin;
            纸张设置默认
            //PaperSize pageSize = new PaperSize("First custom size", 800, 600);
            //pd.DefaultPageSettings.PaperSize = pageSize;
            //打印事件设置
            pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
            //ppd.Document = pd;
            //ppd.ShowDialog();
            try
            {
                pd.Print();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "打印出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
                pd.PrintController.OnEndPrint(pd, new PrintEventArgs());
            }
        }
        //打印事件处理
        private void pd_PrintPage(object sender, PrintPageEventArgs e)
        {
            string date = lblDate.Text; //当前日期
            string flowId = lblFlowId.Text; //流水号
            string payDate = PayDate.Year.ToString() + "年" + PayDate.Month.ToString() + "月"; //应收年月
            string adminId = lblAdminId.Text; //操作员编号
            string baseExpense = lblBaseExpense.Text; //应交基本费用
            string fine = lblFine.Text; //罚款数目
            string upExpense = lblUpExpense.Text; //上月上余
            string actualExpense = txtActualExpense.Text; //实际应交费用
            string chineseExpense = DecimalToChinese.ConvertSum(actualExpense); //实际应交费用的中文大写

   //读取图片模板
            Image temp = Image.FromFile(@"Receipts.jpg");
            GetResultIntoImage(ref temp, UserId, flowId, date, baseExpense, fine, upExpense, actualExpense, chineseExpense, payDate, adminId);
            int x = e.MarginBounds.X;
            int y = e.MarginBounds.Y;
            int width = temp.Width;
            int height = temp.Height;
            Rectangle destRect = new Rectangle(x, y, width, height);
            e.Graphics.DrawImage(temp, destRect, 0, 0, temp.Width, temp.Height, System.Drawing.GraphicsUnit.Pixel);
        }

        /// <summary>
        /// 将收费结果填充到图片模板
        /// </summary>
        private void GetResultIntoImage(
            ref Image temp,
            string userId,
            string flowId,
            string currentDate,
            string baseExpense,
            string fine,
            string upExpense,
            string actualExpense,
            string chineseExpense,
            string payDate,
            string adminName)
        {
            //读取图片模板
            Graphics g = Graphics.FromImage(temp);

            Font f = new Font("宋体", 12);
            Brush b = new SolidBrush(Color.Black);
            
   //填充数据到图片模板(位置要在制作图片模板的时候度量好)
            g.DrawImage(temp, 0, 0, temp.Width, temp.Height);
            g.DrawString(userId, f, b, 168, 105);
            g.DrawString(UserName, f, b, 166, 134);
            g.DrawString(flowId, f, b, 535, 105);
            g.DrawString(currentDate, f, b, 535, 134);
            g.DrawString(baseExpense, f, b, 219, 202);
            g.DrawString(fine, f, b, 372, 202);
            g.DrawString(upExpense, f, b, 486, 202);
            g.DrawString(actualExpense, f, b, 596, 202);
            g.DrawString(chineseExpense, f, b, 196, 238);
            g.DrawString(payDate, f, b, 176, 269);
            g.DrawString(adminName, f, b, 497, 298);

            g.Dispose();
        }
        #endregion 

转自:http://hi.baidu.com/zhaogaoyan8/blog/item/d50fbf9a3f66c0bdc9eaf4c7.html

 

 

本文转自左正博客园博客,原文链接:http://www.cnblogs.com/justinw/,如需转载请自行联系原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 里面不等于符号_mysql 不等于 符号写法

经过测试发现mysql中用<>与!都是可以的&#xff0c;但sqlserver中不识别!,所以建议用<>selece * from jb51 where id<>45sql 里 符号<> 于 ! 的区别<> 与!都是不等于的意思&#xff0c;但是一般都是用<>来代码不等于因为<>在任何SQL…

Delphi通过ICMP检测与远程主机连接

{ ping IP 地址&#xff08;返回false or true&#xff09; 2015-03-23} function PingHost(HostIP: String): Boolean; typePIPOptionInformation ^TIPOptionInformation;TIPOptionInformation packed recordTTL:Byte;TOS:Byte;Flags:Byte;OptionsSize:Byte;OptionsData:PC…

安装SQL2012出现[HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)设置为 1

本人安装SQL2012出现这个错误&#xff0c;找了三天三夜&#xff0c;终于把问题找出来&#xff0c;共享给有需要的人们&#xff0c;不用重新换系统 错误如下: 1&#xff0c;此问题是系统.net Framework版本冲突&#xff0c;首先下载.net Framework清理工具&#xff08;如:cleanu…

Java学习笔记之equals和Objects.equals

equals 相信大家就知道&#xff0c;就是比较&#xff0c;我们平时也会在自己定义的类中加入自己重写的equals用来比较两个类是否相同&#xff0c;例如这样 public class Person {private String name; //姓名private int age; //年龄private String nickName; //昵称public Per…

java限制发送短信次数_使用java发送短信验证码码,出现流量限制怎么办?急急急...

注册登录后需要企业认证,直接在某度上找一张清晰有红章的企业营业执照,注意要细心点,要看看有没有水印。我第一次就没注意上传了一张有水印的营业执照&#xff0c;从此这个账号再也没有审核通过了&#xff0c;后面只能换个账号。都是后台人工审核的&#xff0c;比较严格。如果时…

GDKOI2015 Day2

P1 题目描述&#xff1a; 给出一个二分图&#xff0c;选择互不相交的边&#xff0c;使得边覆盖的点权和最大。 solution&#xff1a; 简单DP&#xff0c;用树状数组维护最大值。 时间复杂度&#xff1a;$O(n \log n) $ P2 题目描述&#xff1a; 给出N个或黑或白的元素&#xff…

写在SDOI2016Round1前的To Do List

理性的整理了一下自己的不足。 计算几何啥都不会&#xff0c;字符串类DP毫无练习&#xff0c;数据结构写的不熟&#xff0c;数论推不出式子&#xff0c;网络流建模常建残&#xff1b; 需要达成的任务&#xff1a; 一、网络流&#xff1a; 熟练网络流的板子&#xff08;之前一…

XMind入门教程

最近在总结一些框架知识的时候&#xff0c;总找不到一款好的软件来画流程图&#xff0c;后来在网上查找这方面的东西&#xff0c;找到了 XMind,发现用来画思维导图还挺好的&#xff0c;看起来思路清晰&#xff0c;美观。那么便将使用的一些经验分享给大家。 1、什么是思维导图&…

标签与表格

bgcolor 页面背景色 text 文字颜色 topmargain 上页边距 leftmargain 左页边距 rightmargain 右页边距 bottomargain 下页边距 background 背景壁纸 &nbsp 空…

java word转图片tiff_不怕复制内容 Word转存TIFF文件这么玩

辛辛苦苦把Word文件敲好&#xff0c;为了不让别人复制走内容&#xff0c;只能看文稿&#xff0c;有些人就选择转存成PDF文件——但是PDF文件依然可以被编辑&#xff0c;还有什么方法能防范呢&#xff1f;其实在Word 2003之前&#xff0c;用户可以通过Microsoft Office Document…

item-设置可见性

如果我们想要设置menu中item的可见行&#xff0c;有两种方式&#xff1a; 1.直接在menu的xml代码中设置 <menu> <item android:id"id/action_hotknot"android:showAsAction"always"android:icon"drawable/action_mode_hotknot"android:…

IDC:聚焦6+6,抓住数字化转型商机

今天&#xff0c;IDC中国2015年中国ICT市场趋势论坛巡回系列的第二站在北京举行。论坛的主题为“加速创新实现数字化转型”。 这是最坏的时代&#xff1a;经济增长乏力、实体经济不振、传统行业在被颠覆与重构、IT市场总体增长进入个位数区间、IT第二平台的领导厂商仍在困境中。…

编写EL函数

1.建立java类的静态函数 package chapter4;public class ELFun {public static String processStr(String s){s s.replaceAll("<", "&lt");s s.replaceAll(">", "&gt");s s.replaceAll(" ", " "…

2016.3.22(关系型数据库简介,管理数据库和表)

数据库的集中式控制有什么优点&#xff1f; 1&#xff1a;降低存储数据的冗余度 2&#xff1a;更高的数据一致性 3&#xff1a;存储数据的可以共享 4&#xff1a;可以建立数据库所遵循的标准 5&#xff1a;便于维护数据完整性 6&#xff1a;能够实现数据的安全性 存储数据有哪些…

java前端ajax提交数据_Java 前端使用Ajax通过FormData传递文件和表单数据到后台

提交1&#xff0c;当仅仅想上传文件到后台function tijiao(){var file $("#image")[0].files[0];//打印file 为对象console.log(file);var formObj new FormData();formObj.set(image, file);$.ajax({url:test/test3,data:formObj,type: POST,dataType:json,proces…

IBM收购以色列应用发现公司EZSource

6月1日晚消息&#xff0c;IBM宣布对以色列公司EZSource进行收购&#xff0c;交易的具体条款没有被披露。 EZSource成立于2003年&#xff0c;以自有视觉面板产品闻名&#xff0c;该公司的产品能够帮助开发人员将重要的大型机应用程序现代化。该公司在以色列、英国、美国、瑞士、…

oracle存储过程+游标处理select数据

create or replace PROCEDURE UPDATE_RECORDCODE iscursor location_data is select * from location where remark in(952701,9527008,952705);--申明游标serviceCode NUMBER:1; BEGINfor l in location_data loop --遍历游标BEGIN--业务处理UPDATE SERIAL_CODE SET CUR_NUMB…

POJ 3617 Best Cow Line(最佳奶牛队伍)

POJ 3617 Best Cow Line Time Limit: 1000MS  Memory Limit: 65536K 【Description】 【题目描述】 FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual "Farmer of the Year" competition. In this contest every farmer arranges his cows in a …

js blob php_js发送blob数据, php端接收blob数据

服务器环境CentOs7.4 php7print_r($_FILES)blob结构如下Array([blob] > Array([name] > blob[type] > image/jpeg[tmp_name] > /tmp/phpu37qnN[error] > 0[size] > 1175745))很纳闷这个结构为什么没有图片数据流&#xff0c;只有图片的信息闷了几个小时胡…

eclipse环境配置、快捷键及基本操作

Eclipse与MyEclipse的区别 Elipse是一种可扩展的开放源代码的集成开发环境&#xff0c;具有免费、纯java语言编写、免安装、扩展性强等特点。 MyElipse在Elipse基础上追加的功能性插件&#xff0c;对插件收费&#xff0c;在WEB开发中提供强大的系统架构平台。 工作空间的基本配…