C# WPF发票打印

内容目录

  1. 实现效果

  2. 业务场景

  3. 编码实现

  4. 本文参考

  5. 源码下载

1.实现效果

发票界面

PDF打印结果

2.业务场景

界面作为发票预览,按客户需求可打印成发票纸张给客户。

3.编码实现

3.1 添加Nuget库

站长使用 .Net Core 3.1 创建的WPF工程,创建“Invoice”解决方案后,需要添加两个Nuget库:MaterialDesignThemes和MaterialDesignColors,上图的效果是使用该控件库实现的,非常强大。

3.2 工程结构

不需要截图,只修改了两个文件,App.xaml添加MD控件样式,MainWindow主窗口实现效果。

3.3 App.xaml引入MD控件样式

<Application x:Class="Invoice.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:Invoice"StartupUri="MainWindow.xaml"><Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Light.xaml" /><ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" /></ResourceDictionary.MergedDictionaries><!--PRIMARY--><SolidColorBrush x:Key="PrimaryHueLightBrush" Color="#349fda"/><SolidColorBrush x:Key="PrimaryHueLightForegroundBrush" Color="#333333"/><SolidColorBrush x:Key="PrimaryHueMidBrush" Color="#FF62013C"/><SolidColorBrush x:Key="PrimaryHueMidForegroundBrush" Color="#FFFFFF"/><SolidColorBrush x:Key="PrimaryHueDarkBrush" Color="#FF46052C"/><SolidColorBrush x:Key="PrimaryHueDarkForegroundBrush" Color="#FFFFFF"/><!--ACCENT--><SolidColorBrush x:Key="SecondaryAccentBrush" Color="#FFFBE188"/><SolidColorBrush x:Key="SecondaryAccentForegroundBrush" Color="#FFFFFF"/></ResourceDictionary></Application.Resources>
</Application>

3.4 主窗体 MainWindow.xaml

整体布局,看上图加上下面的界面代码,本文基本就是布局 + 打印操作,全在这个界面,直接看代码吧,不细说了:

<Window x:Class="Invoice.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:Invoice"mc:Ignorable="d"xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"Title="发票" Height="600" Width="535.5"WindowStartupLocation="CenterScreen" ResizeMode="NoResize"WindowStyle="None"FontFamily="Roboto"><ScrollViewer><Grid><Button HorizontalAlignment="Right" VerticalAlignment="Top" Margin="20" Click="Button_Click"><materialDesign:PackIcon Kind="Printer"/></Button><Grid x:Name="print"><Grid.RowDefinitions><RowDefinition Height="120"/><RowDefinition Height="400"/><RowDefinition Height="200"/></Grid.RowDefinitions><StackPanel Orientation="Horizontal" Margin="30" Grid.Row="0"><Image Source="https://img.dotnet9.com/logo.png" Width="100" Height="100" VerticalAlignment="Center"/><TextBlock Text="发票" VerticalAlignment="Center" FontSize="35" Foreground="{StaticResource SecondaryAccentBrush}" FontWeight="Bold"/></StackPanel><StackPanel Grid.Row="1" HorizontalAlignment="Stretch" Margin="20"><Grid HorizontalAlignment="Stretch"><Grid.ColumnDefinitions><ColumnDefinition Width="1*"/><ColumnDefinition Width="1*"/></Grid.ColumnDefinitions><StackPanel Grid.Column="0" Margin="10"><TextBlock Text="客户名称" FontSize="20" Margin="5"/><StackPanel Orientation="Horizontal"><TextBlock Text="签发日期:" FontSize="12" Margin="5"/><TextBlock Text="7月19号" FontSize="12" Margin="5" FontWeight="DemiBold"/></StackPanel><StackPanel Orientation="Horizontal"><TextBlock Text="发票编号:" FontSize="12" Margin="5"/><TextBlock Text="0001" FontSize="12" Margin="5" FontWeight="DemiBold"/></StackPanel></StackPanel><StackPanel Grid.Column="1" Margin="10"><TextBlock Text="你的名称" FontSize="12" Margin="5" HorizontalAlignment="Right"/><TextBlock Text="你的地址" FontSize="12" Margin="5" HorizontalAlignment="Right"/><TextBlock Text="镇,城市" FontSize="12" Margin="5" HorizontalAlignment="Right"/><TextBlock Text="邮编" FontSize="12" Margin="5" HorizontalAlignment="Right"/></StackPanel></Grid><Grid Margin="10 30 10 0"><Grid.ColumnDefinitions><ColumnDefinition Width="3*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><TextBlock Grid.Column="0" Text="描述" FontSize="12" FontWeight="ExtraLight"/><TextBlock Grid.Column="1" Text="费用" FontSize="12" FontWeight="ExtraLight" HorizontalAlignment="Center"/><TextBlock Grid.Column="2" Text="小时" FontSize="12" FontWeight="ExtraLight" HorizontalAlignment="Center"/><TextBlock Grid.Column="3" Text="小计" FontSize="12" FontWeight="ExtraLight" HorizontalAlignment="Right"/></Grid><Rectangle Fill="Black" Height="1" Margin="5 2" Opacity="0.5"/><ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled"><ListViewItem><Grid Width="460"><Grid.ColumnDefinitions><ColumnDefinition Width="3*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><TextBlock Grid.Column="0" Text="网站设计"/><TextBlock Grid.Column="1" Text="¥ 45.00" HorizontalAlignment="Center"/><TextBlock Grid.Column="2" Text="10" HorizontalAlignment="Center"/><TextBlock Grid.Column="3" Text="¥ 450.00" Foreground="{StaticResource PrimaryHueMidBrush}"/></Grid></ListViewItem><ListViewItem><Grid Width="460"><Grid.ColumnDefinitions><ColumnDefinition Width="3*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><TextBlock Grid.Column="0" Text="Logo设计"/><TextBlock Grid.Column="1" Text="¥ 30.00" HorizontalAlignment="Center"/><TextBlock Grid.Column="2" Text="20" HorizontalAlignment="Center"/><TextBlock Grid.Column="3" Text="¥ 600.00" Foreground="{StaticResource PrimaryHueMidBrush}"/></Grid></ListViewItem><ListViewItem><Grid Width="460"><Grid.ColumnDefinitions><ColumnDefinition Width="3*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><TextBlock Grid.Column="0" Text="背景设计"/><TextBlock Grid.Column="1" Text="¥ 40.00" HorizontalAlignment="Center"/><TextBlock Grid.Column="2" Text="12" HorizontalAlignment="Center"/><TextBlock Grid.Column="3" Text="¥ 480.00" Foreground="{StaticResource PrimaryHueMidBrush}"/></Grid></ListViewItem></ListView></StackPanel><StackPanel Grid.Row="2" Margin="20"><Grid Margin="10 20 10 0"><Grid.ColumnDefinitions><ColumnDefinition Width="1*"/><ColumnDefinition Width="1*"/><ColumnDefinition Width="1*"/></Grid.ColumnDefinitions><TextBlock Grid.Column="0" Text="银行信息" FontSize="12" FontWeight="ExtraLight"/><TextBlock Grid.Column="1" Text="应缴款" FontSize="12" FontWeight="ExtraLight"/><TextBlock Grid.Column="2" Text="总应缴款" FontSize="12" FontWeight="ExtraLight" HorizontalAlignment="Right"/></Grid><Rectangle Fill="Black" Height="1" Margin="5 2" Opacity="0.5"/><Grid Margin="10 20 10 0"><Grid.ColumnDefinitions><ColumnDefinition Width="1*"/><ColumnDefinition Width="1*"/><ColumnDefinition Width="1*"/></Grid.ColumnDefinitions><StackPanel Grid.Column="0"><StackPanel Orientation="Horizontal"><TextBlock Text="账号编号:" FontSize="10" Margin="5"/><TextBlock Text="123 456 789" FontSize="10" Margin="5" FontWeight="DemiBold"/></StackPanel><StackPanel Orientation="Horizontal"><TextBlock Text="排序编号:" FontSize="10" Margin="5"/><TextBlock Text="01 23 45" FontSize="10" Margin="5" FontWeight="DemiBold"/></StackPanel></StackPanel><TextBlock Text="7月19号" Grid.Column="1" FontSize="25" Margin="5"/><TextBlock Grid.Column="2" Text="¥ 1,590.00" FontSize="25" Margin="5" HorizontalAlignment="Right" Foreground="{StaticResource PrimaryHueMidBrush}" FontWeight="Bold"/></Grid><Rectangle Fill="Black" Height="1" Margin="5 2" Opacity="0.5"/><Grid Margin="0 20" HorizontalAlignment="Stretch"><StackPanel><materialDesign:PackIcon Margin="5" VerticalAlignment="Center" Kind="Heart" Foreground="{StaticResource PrimaryHueMidBrush}" Width="20" Height="20"/><TextBlock Text="谢谢!" VerticalAlignment="Center" Margin="5" FontSize="20" FontWeight="ExtraBold"/></StackPanel><StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Bottom"><TextBlock Text="632871194@qq.com" FontSize="8" Margin="5" FontWeight="Light"/><TextBlock Text="99 999999-9999999" FontSize="8" Margin="5" FontWeight="Light"/><TextBlock Text="https://dotnet9.com" FontSize="8" Margin="5" FontWeight="Light"/></StackPanel></Grid></StackPanel></Grid></Grid></ScrollViewer>
</Window>

后台发票打印操作

private void Button_Click(object sender, RoutedEventArgs e)
{try{this.IsEnabled = false;PrintDialog printDialog = new PrintDialog();if (printDialog.ShowDialog() == true){printDialog.PrintVisual(print, "发票");}}finally{this.IsEnabled = true;}
}

4.本文参考

Design com WPF大神的学习视频::Invoice Screen and Print to PDF
开源控件库:MaterialDesignInXamlToolkit
本站对MD开源控件库的介绍:控件介绍

5.代码下载</>

文章中代码已经全部贴出,添加Nuget包,复制文中代码就可以运行了。

除非注明,文章均由 Dotnet9 整理发布,欢迎转载。

转载请注明本文地址:https://dotnet9.com/6798.html

欢迎扫描下方二维码关注 Dotnet9 的微信公众号,本站会及时推送最新技术文章(微信公众号“dotnet9_com”):

C# WPF发票打印相关推荐

  1. 70打印位置调整_闵行公司做账发票打印不全该如何调整?

    发票是指一切单位和个人在购销商品.提供或接受服务以及从事其他经营活动中,所开具和收取的业务凭证,是会计核算的原始依据,也是审计机关.税务机关执法检查的重要依据.收据才是收付款凭证,发票只能证明业务发生 ...

  2. etc通行费发票怎么打印?通行费发票打印步骤

    问题:etc通行费发票怎么打印?通行费发票属于增值税电子普通发票的一种,现在开出来的都是电子发票了,但是很多人还是不知道去哪里打印?小编在此分享一个通行费发票打印步骤. etc电子发票开具方法如下: ...

  3. java发票打印_java的发票打印CommPortIdentifier

    嘿, 我需要在热发票打印机 打印发票我写了这个程序来做到这一点(见下文) 但是,我需要向打印机发送字符定位的原因值范围为0x80 - 0x102,但我发现它是不可能的,因为我不能发送一个字节这个值(这 ...

  4. 电子发票多页打印技巧(将四张不同发票打印在一页纸上)

    随着电子发票的普及度越来越高,越来越多的商家开始提供电子发票开票服务.开票是简单了,但一般的企业报销时要是要求员工进行贴票报销,这样免不了要将发票打印出来.由于我目前工作的特殊性,在兼职这另外一家公司 ...

  5. 电子发票打印工具 v2023.02.27 免费的PDF发票打印软件

    电子发票打印工具一款PDF发票打印辅助软件,因为单位有很多电子发票需要打印,每次打印都要用reader阅读器打开,选打印,选份数,选纸张,选纸盒,当然,有些发票有清单页的,以上步骤请再重复一遍.多张发 ...

  6. 一点通发票打印软件 v1.2 下载

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

  7. 关于增值税开票系统发票打印不成功解决办法

    关于增值税开票系统发票打印不成功解决办法(虽说遇到的人很少) 昨晚加班开发票时,发票开好了.但点打印就是打不出来. 错误提示:本张发票打印不成功!如发票数据录入错误或票面损毁,请在发票作废功能中作废本 ...

  8. 发票打印不全不完整的解决方案(Win10)

    发票不管怎么设置,不是二维码缺少一点,就是金额小数点后边的数字显示不全 具体原因是打印机默认纸张上A4,实际发票纸张要比A4宽度宽一点点 原来写过一篇程序方便的打印票据的控制<终于部分解决了.N ...

  9. WPF中打印问题的探讨[转]

    转自:http://blog.sina.com.cn/s/blog_624dc0120100ld6m.html 最近在做一个WPF方面的项目,在打印功能实现上费了很大劲.因为我原来是在做Winform ...

最新文章

  1. 优化算法之手推遗传算法(Genetic Algorithm)的详细步骤图解
  2. Android中RecyclerView嵌套RecyclerView或嵌套ListView
  3. 使用B::Deparse模块对perl代码反汇编
  4. Builder Design模式和Factory Design模式之间有什么区别?
  5. DDoS攻击可能损害企业品牌的四种方式
  6. SQL Server 2008 R2 开启数据库远程连接
  7. 第13章 集成学习和随机森林
  8. 余承东 鸿蒙不是手机,鸿蒙手机,来了!余承东:没有人会是一座孤岛
  9. boost::function用法的测试程序
  10. c++单链表【构造函数、运算符重载、析构函数、增删查改等】
  11. react css多个变量_如何使用CSS变量和React上下文创建主题引擎
  12. Apache Common-cli简单使用
  13. UI设计师必定需要了解的sketch素材
  14. 阿里推迟招聘;大疆因腐败损失 10 亿;ofo 两创始人消失? | 极客头条
  15. latex 中表格怎么指定编号_在医学论文中,应用表格怎么用才是正确的?
  16. ue4 点击启动_4399游戏2020届校招启动
  17. Html5变量游戏,第三章语法、关键保留字及变量
  18. python3.5------用户的三次验证
  19. 2.Windows 界面技术发展现状
  20. Altova XMLspy安装简易步骤

热门文章

  1. Teams Tab的Single Sign-On
  2. html标签属性和标签事件,HTML参考手册( 标签、属性和事件)
  3. canpro脚本_AE/PR脚本-创建编辑导入导出专业字幕脚本 Subtitle Pro 2.8.0 + 使用教程...
  4. 城市智慧停车系统方案的产品设计体系介绍
  5. hdoj1045 Fire Net(二分图最大匹配)
  6. Nodejs Guides(四)
  7. Codevs2157 配对
  8. 【Unity3D基础】让物体动起来②--UGUI鼠标点击逐帧移动
  9. Hibernate简单例子以及笔记
  10. ArcGISServer10安装与地图发布