5分钟掌握c#文件打印流程 及代码示例
以下是一个基于C#的打印框架示例代码,包含打印预览和实际打印功能:
using System.Drawing.Printing;
using System.Windows.Forms;
public class PrintExample
{
private PrintDocument printDocument = new PrintDocument();
private PrintPreviewDialog previewDialog = new PrintPreviewDialog();
public void InitializePrinting()
{
// 设置打印文档属性
printDocument.PrintPage += PrintPageHandler;
printDocument.DefaultPageSettings.Landscape = false; // 纵向打印
// 初始化预览对话框
previewDialog.Document = printDocument;
previewDialog.ClientSize = new System.Drawing.Size(800, 600);
}
public void ShowPrintPreview()
{
previewDialog.ShowDialog();
}
public void PrintDocument()
{
using (PrintDialog printDialog = new PrintDialog())
{
printDialog.Document = printDocument;
if (printDialog.ShowDialog() == DialogResult.OK)
{
printDocument.Print();
}
}
}
private void PrintPageHandler(object sender, PrintPageEventArgs e)
{
// 打印内容绘制区域
float leftMargin = e.MarginBounds.Left;
float topMargin = e.MarginBounds.Top;
// 示例:打印多行文本
string[] lines = new string[]
{
"打印示例",
"--",
"这是第一行打印内容",
"这是第二行打印内容",
"日期:" +
System.DateTime.Now.ToString()
};
using (Font font = new Font("宋体", 12))
{
for (int i = 0; i < lines.Length; i++)
{
e.Graphics.DrawString(lines[i], font, Brushes.Black,
leftMargin, topMargin + i * 20);
}
}
// 标记是否还有更多页面(多页打印时使用)
e.HasMorePages = false;
}
}
使用说明:
1. 初始化打印功能:
PrintExample printer = new PrintExample();
printer.InitializePrinting();
2. 显示打印预览:
printer.ShowPrintPreview();
3. 执行实际打印:
printer.PrintDocument();
扩展功能建议:
1. 图像打印:在PrintPageHandler中使用e.Graphics.DrawImage()方法
2. 分页处理:通过e.HasMorePages和PrintDocument.Print()实现多页打印
3. 自定义页面设置:使用PageSettings类调整纸张大小、方向等
4. 打印进度反馈:订阅
PrintDocument.PrintingEvent事件
注意事项:
- 需要添加对System.Drawing和System.Windows.Forms的引用
- 实际打印前建议先进行预览验证
- 处理大尺寸内容时注意内存管理
- 跨平台应用建议使用WPF的PrintDialog替代
如需更复杂的报表打印功能,可考虑使用第三方库如DevExpress或Telerik的打印组件。