C# 多頁列印簡單實現
必要的類:
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));
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);是沒有任何效果的,最多隻能重新整理當前頁,不能產生新頁。