基于WPF实现打印机连接与打印功能

news/2025/10/23 17:43:47/文章来源:https://www.cnblogs.com/theissky/p/19161244

一、项目配置

  1. 创建WPF项目

    dotnet new wpf -n WpfPrinterDemo
    cd WpfPrinterDemo
    
  2. 添加必要引用

    • System.Printing(用于打印机管理)
    • System.Windows.Controls(界面控件)

二、界面设计 (MainWindow.xaml)

<Window x:Class="WpfPrinterDemo.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="打印机Demo" Height="450" Width="800"><Grid><!-- 打印预览区域 --><ScrollViewer VerticalScrollBarVisibility="Auto" Margin="10"><FlowDocument x:Name="PrintDocument" PagePadding="20"FontFamily="Arial"FontSize="14"><Paragraph><Run Text="WPF打印机测试文档"/><LineBreak/><Bold>当前时间:</Bold><TextBlock Text="{Binding Source={x:Static sys:DateTime.Now}, StringFormat='yyyy-MM-dd HH:mm:ss'}"/></Paragraph></FlowDocument></ScrollViewer><!-- 控制按钮 --><StackPanel VerticalAlignment="Bottom" HorizontalAlignment="Center" Orientation="Horizontal" Margin="10"><Button Content="打印预览" Width="120" Margin="5" Click="PreviewPrint"/><Button Content="直接打印" Width="120" Margin="5" Click="DirectPrint"/><Button Content="选择打印机" Width="120" Margin="5" Click="SelectPrinter"/></StackPanel></Grid>
</Window>

三、核心代码实现 (MainWindow.xaml.cs)

using System;
using System.Printing;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;namespace WpfPrinterDemo
{public partial class MainWindow : Window{private PrintDialog _printDialog;private PrintQueue _selectedPrinter;public MainWindow(){InitializeComponent();InitializePrinter();}// 初始化打印机连接private void InitializePrinter(){_printDialog = new PrintDialog();_printDialog.PrintTicket.PageOrientation = PageOrientation.Portrait;_printDialog.PrintTicket.PageMediaSize = PageMediaSize.A4;}// 打印预览private void PreviewPrint(object sender, RoutedEventArgs e){if (_printDialog.ShowDialog() == true){_printDialog.PrintDocument(PrintDocument.DocumentPaginator, "WPF打印预览");}}// 直接打印private void DirectPrint(object sender, RoutedEventArgs e){try{if (_selectedPrinter == null)throw new Exception("请先选择打印机");var writer = PrintQueue.CreateXpsDocumentWriter(_selectedPrinter);writer.Write(PrintDocument);MessageBox.Show("打印任务已发送");}catch (Exception ex){MessageBox.Show($"打印失败: {ex.Message}");}}// 选择打印机private void SelectPrinter(object sender, RoutedEventArgs e){var printServer = new PrintServer();var printers = printServer.GetPrintQueues();var dialog = new PrintDialog();dialog.PrintQueue = printers.FirstOrDefault(p => p.Name.Contains("HP LaserJet")); // 示例选择HP打印机_selectedPrinter = dialog.PrintQueue;}}
}

四、关键功能说明

1. 打印设置配置

// 设置打印参数
_printDialog.PrintTicket.PageOrientation = PageOrientation.Landscape; // 横向打印
_printDialog.PrintTicket.PageMediaSize = PageMediaSize.A5; // 纸张尺寸
_printDialog.PrintTicket.CopyCount = 2; // 打印份数

2. 打印内容生成

// 动态添加内容
var paragraph = new Paragraph();
paragraph.Inlines.Add(new Run("动态添加的文本内容"));
PrintDocument.Blocks.Add(paragraph);

3. 打印机管理

// 获取所有打印机
var printers = new PrintServer().GetPrintQueues();// 筛选特定打印机
var targetPrinter = printers.FirstOrDefault(p => p.Name.Contains("Zebra"));

参考代码 wpf连接打印机实例demo www.youwenfan.com/contentcnj/59183.html

五、高级功能扩展

1. 打印预览增强

// 添加页眉页脚
PrintDocument.Header = new HeaderFooter {HeaderTemplate = (DataTemplate)XamlReader.Load(@"<DataTemplate><TextBlock Text='机密文档' FontSize='16' HorizontalAlignment='Center'/></DataTemplate>")
};

2. 图像打印支持

// 添加图片到打印内容
var image = new Image {Source = new BitmapImage(new Uri("logo.png", UriKind.Relative)),Width = 200,Height = 100
};
PrintDocument.Blocks.Add(new Paragraph(image));

3. 打印队列监控

// 监听打印状态
var printJob = _selectedPrinter.AddJob("TestJob");
printJob.Start();
printJob.End();

六、部署注意事项

  1. 权限配置

    • 需要System.Printing程序集引用

    • App.manifest中添加:

      <requestedExecutionLevel level="asInvoker" uiAccess="false" />
      
  2. 打印机驱动

    • 确保目标打印机已安装正确驱动
    • 测试环境推荐使用HP LaserJet系列
  3. 异常处理

    try
    {// 打印操作
    }
    catch (PrintSystemException ex)
    {Debug.WriteLine($"打印系统错误: {ex.Message}");
    }
    catch (IOException ex)
    {Debug.WriteLine($"I/O错误: {ex.Message}");
    }
    

七、测试用例

测试场景 预期结果
点击"打印预览" 弹出预览窗口显示正确内容
选择不存在打印机 弹出错误提示
连续打印10份 生成10个独立打印任务
打印特殊字符 正确显示Unicode字符

八、扩展应用场景

  1. 标签打印系统

    // Zebra打印机ZPL指令
    string zplCode = "^XA^FO50,50^A0N,25,25^FDHello World^FS^XZ";
    using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(zplCode)))
    {_selectedPrinter.AddJob("LabelJob", stream, true);
    }
    
  2. 多联单据打印

    // 设置多份副本
    _printDialog.PrintTicket.CopyCount = 3;
    _printDialog.PrintTicket.Duplexing = Duplexing.OneSided;
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/944532.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 命令行查看COM口

习惯了在Linux中直接通过命令查看串口,但是Windows一般都是去 “设备管理器 --> 端口” 查询,那么有没有一种可以通过命令行的方式查询呢? 有的,我问了一下DeepSeek,它给出了详细的命令,就是有点长。 PS D:\9…

【IEEE出版】第六届计算机通信与网络安全国际学术会议(CCNS 2025)

由江苏第二师范学院主办的第六届计算机通信与网络安全国际学术会议(CCNS 2025)(线上会议)将于10月31日至11月2日在中国南京召开。【本会议已签约IEEE,授权征稿,发文靠谱!】 【本会议被江苏第二师范学院认可、推…

2025 年最新推荐编织袋源头厂家排行榜:聚焦全自动智能节能设备,助力企业选对优质厂商工业 / 数控 / 重型 / 多功能 / 自动编织袋设备推荐

引言 当前编织袋生产行业飞速发展,企业对设备的需求日益多元化,然而市场上设备厂家良莠不齐,给企业选型带来极大困扰。部分厂家设备性能不稳定,导致生产效率低下、成本攀升;有些厂家缺乏完善售后,设备故障时企业…

C程序设计语言_1.1_开篇入门

C程序设计语言_1.1_开篇入门绝大多数C/C++初学者的第一个程序是打印以下字符串:Hello world!对于入门者而言,个人认为下列部分可能成为障碍:(1) 程序文本编写,了解基本程序结构,亦或者说那些不可或缺的要素;(2) …

playwright自动化测试应用-Day1

# 1. 安装# pip install playwright ## Playwright要求Python 3.7及以上。python --version 或 python3 --version查看# playwright install# python -m pip install --upgrade pip -i https://pypi.…

2025 年货架源头厂家最新推荐排行榜:仓储 / 重型 / 阁楼 / 穿梭式等各类货架优质企业甄选

引言 当前物流仓储行业高速发展,企业对货架的需求持续攀升,但市场上货架源头厂家数量繁杂,产品质量、技术实力与服务水平差异显著。部分厂家存在原材料不达标、生产工艺落后等问题,导致货架承载力不足,埋下安全隐…

2025年10月广州办公室设备搬运公司全景解析报告,基于专业测评的技术、性能及市场优势深度分析

在现代商业环境中,办公室设备搬运是一项高度专业化的服务,涉及精密仪器、档案文档和大型办公家具的安全转移。广州作为华南经济中心,企业对设备搬运的需求日益增长,要求服务商具备强大的运营能力、专业技术和可靠保…

2025年专业的上海Micro-LED显示屏推荐TOP生产厂家

2025年专业的上海Micro-LED显示屏推荐TOP生产厂家 引言 随着显示技术的飞速发展,Micro-LED显示屏凭借其高亮度、高对比度、长寿命和低功耗等优势,正逐渐成为高端商业显示、会议室、舞台演出、广告传媒等领域的首选…

2025年质量好的工业不锈钢链轮最新TOP厂家推荐

2025年质量好的工业不锈钢链轮最新TOP厂家推荐工业不锈钢链轮市场概述工业不锈钢链轮作为机械传动系统中的核心部件,广泛应用于食品加工、制药、化工、海洋工程等对耐腐蚀性要求高的领域。随着工业4.0和智能制造的发展…

2025年正规的广州智能洗碗机,广州洗碗机设备厂家最新推荐榜

2025年正规的广州智能洗碗机,广州洗碗机设备厂家最新推荐榜开篇介绍随着餐饮行业的蓬勃发展和家庭生活品质的提升,智能洗碗机设备已成为现代厨房不可或缺的一部分。广州作为中国南方的经济中心和制造业重镇,汇聚了众…

改进的(μ+λ)约束差分进化算法设计与实现

一、算法框架与核心改进点 改进的(μ+λ)-约束差分进化算法((μ+λ)-CDE)通过多策略变异机制、自适应约束处理模型和动态种群管理提升约束优化性能。其核心改进包括:混合变异策略:结合rand/1、current-to-best/1和…

2025年10月旋转接头厂家全景解析报告,基于专业测评的技术、性能及市场优势深度分析

随着工业自动化水平的持续提升,旋转接头作为流体传输系统的关键部件,其市场需求呈现稳定增长态势。据行业统计数据显示,2024年中国旋转接头市场规模达到42亿元,同比增长12.3%,其中高端产品在冶金、数控机床等领域…

实用指南:Java 高效实现 PowerPoint 转 PDF:不依赖Office

实用指南:Java 高效实现 PowerPoint 转 PDF:不依赖Officepre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consol…

2025年可靠的立式明装风机盘管直销制造

2025年可靠的立式明装风机盘管直销制造推荐指南立式明装风机盘管行业概述立式明装风机盘管作为中央空调系统的末端设备,在商业和民用建筑中扮演着重要角色。2025年,随着建筑节能标准的提高和智能化需求的增长,市场对…

2025年靠谱的FCC催化剂拟薄水铝石厂家推荐及采购指南

2025年靠谱的FCC催化剂拟薄水铝石厂家推荐及采购指南 引言 FCC(流化催化裂化)催化剂是石油炼制过程中的关键材料,而拟薄水铝石(Pseudoboehmite)作为FCC催化剂的重要载体,其质量直接影响催化剂的活性和稳定性。…

2025年10月江苏机械设备EAC认证公司全景解析报告,基于专业测评的技术、性能及市场优势深度分析

随着"一带一路"合作的深入推进,我国机械设备出口欧亚经济联盟地区规模持续扩大。据海关总署最新数据显示,2025年上半年江苏省对俄语区国家机械设备出口额同比增长23.8%,EAC认证作为产品准入的强制性要求,…

2025年热门的镁制硅晶防火风管,漂珠硅晶防火风管实力源头

2025年热门的镁制硅晶防火风管,漂珠硅晶防火风管实力源头行业概述随着建筑安全标准的不断提高和绿色建筑理念的深入推广,防火风管作为建筑通风系统的关键部件,其市场需求持续增长。2025年,镁制硅晶防火风管和漂珠硅…

2025连接器厂家推荐皓富电子,专注USB/电池/TYPE-C/防水接口专业制造

2025连接器厂家推荐皓富电子,专注USB/电池/TYPE-C/防水接口专业制造 在电子设备日益普及的今天,连接器作为各类电子产品中不可或缺的组成部分,其性能与可靠性直接影响用户体验和设备寿命。随着技术的不断演进,USB、…

2025耳机/DC/防水耳机插座厂家推荐皓富电子,专业品质保障

2025耳机/DC/防水耳机插座厂家推荐皓富电子,专业品质保障 随着消费电子行业的高速发展,耳机插座、DC插座及防水耳机插座作为各类电子设备中不可或缺的接口组件,其技术性能与可靠性日益受到行业重视。2025年,市场对…

2025年知名的四川岩棉板,A级防火岩棉板推荐TOP品牌厂家

2025年知名的四川岩棉板,A级防火岩棉板推荐TOP品牌厂家 引言 在建筑行业中,防火安全与节能环保日益受到重视,A级防火岩棉板因其优异的防火性能、保温隔热效果及环保特性,成为外墙保温系统的首选材料。四川作为西南…