程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

5分钟掌握c#文件打印流程 及代码示例

balukai 2025-07-17 17:12:38 文章精选 1 ℃

以下是一个基于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的打印组件。

Tags:

最近发表
标签列表