最近工作的内容是有关于WPF的,整体开发没有什么难度,主要是在打印上因为没有任何经验,犯了一些难,不过还好,解决起来也不是很费劲。
WPF打印票据或者是打印普通纸张区别不大,只是说打印票据要把需要打的内容摆放好位置,搞定缩放比例,就可以放入票据直接打印了。
那么关键点就是3个:
1、使用WPF提供的什么类、什么方法来执行打印
2、如何摆放位置
3、如何搞定缩放比例
1、使用WPF提供的什么类、什么方法来执行打印
这个问题很容易解决,搜索下WPF打印或WPF Print,就能找到示例代码。
那么我用的是PrintDialog的PrintVisual方法。PrintDialog从名字中可以看出是个对话框,让用户手动选择打印机。如果不想弹出对话框和选择打印机,则可以读取默认打印机或者在配置文件里配置打印机名称,然后找到它。这就需要用到另外的两个类:PrintQueue和LocalPrintServer。
使用PrintDialog打印:
var printDialog = new PrintDialog();
printDialog.PrintQueue = GetPrinter();
printDialog.PrintVisual(visual, visual.Name);
获取打印机任务队列:
public static PrintQueue GetPrinter(string printerName = null)
{
try
{
PrintQueue selectedPrinter = null;
if (!string.IsNullOrEmpty(printerName))
{
var printers = new LocalPrintServer().GetPrintQueues();
selectedPrinter = printers.FirstOrDefault(p => p.Name == printerName);
}
else
{
selectedPrinter = LocalPr