做应用特别是企业应用和网站一般都少不了打印功能,打印也是项特别麻烦的事情,要实现打印功能根据不能的技术也有不同的实现方案。
- 在MFC中手动实现打印功能很麻烦,如果不需要打印预览功能,可以直接用office文件作为打印模板,在程序中直接打印文件,这样实现简单方便,这种方案对于经常需要更改模板内容的话,还是一个不错的选择。
- 在Winform中实现打印功能一般都是用水晶报表,现在微软不再带报表功能需要自己单独安装 CrystalReport组件包,具体实现和布局页面类似,先在报表设计器中把页眉页脚和内容字段添加好,然后根据自己的需求更新字段,实现打印,带有打印预览和数据导出。
- 在WPF中实现简单的打印功能要比上面的两种方式方便了不少。wpf中只要是继承了Visual的都可以直接打印出来,另外就是用流文档方式打印。
1.直接打印
<Grid>
<Canvas x:Name="printArea">
<Ellipse Canvas.Left="137" Canvas.Top="92" Height="100"
Stroke="Black" Width="200">
<Ellipse.Fill>
<LinearGradientBrush>
<GradientStop Color="#FFAD0FC7" Offset="0" />
<GradientStop Color="#FF3359AD" Offset="1" />
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>
</Canvas>
<Button Content="Print" Click="Button_Click" Height="23"
Margin="195,268,190,20" />
</Grid>
在按钮事件中
private void Button_Click(object sender, RoutedEventArgs e)
{
PrintDialog dialog = new PrintDialog();
if (dialog.ShowDialog() == true)
{
dialog.PrintVisual(printArea, "Print Test");
}
}
2.自定义打印
实现流程为
Flow D