using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Text;
using
System.Windows.Forms;
using
System.Drawing.Printing;
namespace
demo
{
public
partial
class
PrintOther : Form
{
public
PrintOther()
{
InitializeComponent();
}
//
PrintDocument类是实现打印功能的核心,它封装了打印有关的属性、事件、和方法
PrintDocument printDocument
=
new
PrintDocument();
private
void
btnPrint_Click(
object
sender, EventArgs e)
{
//
printDocument.PrinterSettings可以获取或设置计算机默认打印相关属性或参数,如:printDocument.PrinterSettings.PrinterName获得默认打印机打印机名称
//
printDocument.DefaultPageSettings
//
可以获取或设置打印页面参数信息、如是纸张大小,是否横向打印等
//
设置文档名
printDocument.DocumentName
=
"
处方笺
"
;
//
设置完后可在打印对话框及队列中显示(默认显示document)
//
设置纸张大小(可以不设置取,取默认设置)
PaperSize ps
=
new
PaperSize(
"
Your Paper Name
"
,
100
,
70
);
ps.RawKind
=
150
;
//
如果是自定义纸张,就要大于118,(A4值为9,详细纸张类型与值的对照请看http:
//
msdn.microsoft.com/zh-tw/library/system.drawing.printing.papersize.rawkind(v=vs.85).aspx)
printDocument.DefaultPageSettings.PaperSize
=
ps;
//
打印开始前
printDocument.BeginPrint
+=
new
PrintEventHandler(printDocument_BeginPrint);
//
打印输出(过程)
printDocument.PrintPage
+=
new
PrintPageEventHandler(printDocument_PrintPage);
//
打印结束
printDocument.EndPrint
+=
new
PrintEventHandler(printDocument_EndPrint);
//
跳出打印对话框,提供打印参数可视化设置,如选择哪个打印机打印此文档等
PrintDialog pd
=
new
PrintDialog();
pd.Document
=
printDocument;
if
(DialogResult.OK
==
pd.ShowDialog())
//
如果确认,将会覆盖所有的打印参数设置
{
//
页面设置对话框(可以不使用,其实PrintDialog对话框已提供页面设置)
PageSetupDialog psd
=
new
PageSetupDialog();
psd.Document
=
printDocument;
if
(DialogResult.OK
==
psd.ShowDialog())
{
//
打印预览
PrintPreviewDialog ppd
=
new
PrintPreviewDialog();
ppd.Document
=
printDocument;
if
(DialogResult.OK
==
ppd.ShowDialog())
printDocument.Print();
//
打印
}
}
}
void
printDocument_BeginPrint(
object
sender, PrintEventArgs e)
{
//
也可以把一些打印的参数放在此处设置
}
void
printDocument_PrintPage(
object
sender, PrintPageEventArgs e)
{
//
打印啥东东就在这写了
Graphics g
=
e.Graphics;
Brush b
=
new
SolidBrush(Color.Black);
Font titleFont
=
new
Font(
"
宋体
"
,
16
);
string
title
=
"
五凤街道梅峰社区卫生服务站 处方笺
"
;
g.DrawString(title, titleFont, b,
new
PointF((e.PageBounds.Width
-
g.MeasureString(title, titleFont).Width)
/
2
,
20
));
//
e.Cancel
//
获取或设置是否取消打印
//
e.HasMorePages
//
为true时,该函数执行完毕后还会重新执行一遍(可用于动态分页)
}
void
printDocument_EndPrint(
object
sender, PrintEventArgs e)
{
//
打印结束后相关操作
}
}
}