博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 多页打印简单实现
阅读量:4302 次
发布时间:2019-05-27

本文共 1021 字,大约阅读时间需要 3 分钟。

必要的类:

using System.Drawing.Printing;

我的打印代码放在一个Button里:

private void button1_Click(object sender, EventArgs e)

        {                
            PrintDocument pdDocument = new PrintDocument();            
            pdDocument.PrintPage += new PrintPageEventHandler(PrintDocument_PrintPage);   
            //pdDocument.DefaultPageSettings.Landscape = true;           //此处更改页面为横向打印 
            pdDocument.Print();
        }

private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e)

        {             
            e.HasMorePages = true; //此处打开多页打印属性

            il++;             //il是一个计数器,即页数

                Bitmap bmp = new Bitmap(this.Width, this.Height); //生成一个BMP对象
                this.DrawToBitmap(bmp, new Rectangle(Point.Empty, this.Size)); //将当前界面转成BMP图片                
                Image PrintImage = (Image)bmp.Clone();                  //将BMP转换成Image对象
                e.Graphics.DrawImage(PrintImage, 0, 0); //在左上角0,0的位置打印图像
            if(il>9) //共打印10张
            e.HasMorePages = false; //关掉多页打印属性
        }

多页打印必须把HasMorePages 设为true,达到需要的页数后关掉此属性。否则无穷添加新页面!

经我测试发现,当HasMorePages 设为true后,PrintDocument_PrintPage重复自我运行,直到HasMorePages 设为false。

那么更新每一页页面就成了红色代码部分的任务。

在PrintDocument_PrintPage函数内部,多次运行e.Graphics.DrawImage(PrintImage, 0, 0);是没有任何效果的,最多只能刷新当前页,不能产生新页。

 

转载地址:http://vgows.baihongyu.com/

你可能感兴趣的文章
使用nginx配置多个php-fastcgi负载均衡
查看>>
CURL抓取网页内容并用正则提取。
查看>>
Ngin的配置文件nginx.conf完整配置说明(包括fastcgi和负载均衡设置)
查看>>
浏览器显示网页的机制
查看>>
CSS基础知识
查看>>
Nginx+PHP-FPM优化技巧总结
查看>>
Ubuntu安装Torque教程
查看>>
CentOS下使用tcpdump网络抓包用
查看>>
nginx中php-fpm使用sock方式配置的例子
查看>>
nginx下设置php-fpm使用socket文件的方法分享
查看>>
深入理解php-fpm.conf中的两个重要参数---max_children和request_timeout
查看>>
nginx响应与处理请求的方法详解
查看>>
shell中第一行#!/bin/bash的作用
查看>>
前后台切换命令(ctrl+z jobs bg fg &)
查看>>
shell中exec和system解析
查看>>
如何用js获取表单中的值
查看>>
每天一个linux命令(8):ls命令
查看>>
每天一个linux命令(9):cd命令
查看>>
每天一个linux命令(10):pwd命令
查看>>
每天一个linux命令(11):ping命令
查看>>