You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF应用中自定义Zebra标签打印机打印参数的实现方法

解决方案

要在不修改打印机默认参数的前提下,自定义打印的Darkness、旋转角度和纸张尺寸,你需要基于打印机的默认PrintTicket创建副本,修改所需参数后再传入打印对话框。以下是修改后的完整代码及说明:

修改后的代码

private async void DirectPrint()
{
    await Task.Delay(250);

    string printerName = "ZDesigner GC420d";
    PrintDialog printDialog = new PrintDialog();

    PrintServer printServer = new PrintServer();
    PrintQueueCollection printQueues = printServer.GetPrintQueues();
    PrintQueue printQueue = printQueues.FirstOrDefault(pq => pq.Name.Contains(printerName));           

    if (printQueue != null)
    {
        DrawingVisual visual = new DrawingVisual();
        using (DrawingContext dc = visual.RenderOpen())
        {
            System.Windows.Size size = new System.Windows.Size(PrintLayout.ActualWidth, PrintLayout.ActualHeight);
            PrintLayout.Measure(size);
            PrintLayout.Arrange(new Rect(new System.Windows.Point(0, 0), size));

            VisualBrush brush = new VisualBrush(PrintLayout);
            dc.DrawRectangle(brush, null, new Rect(new System.Windows.Point(0, 0), size));
        }

        // 克隆默认打印票证,避免修改打印机全局默认设置
        PrintTicket printTicket = printQueue.DefaultPrintTicket.Clone();

        // 1. 设置打印内容旋转180度
        printTicket.PageOrientation = PageOrientation.Rotate180;

        // 2. 设置纸张尺寸为3×1英寸(单位:百分之一英寸)
        // 若旋转后尺寸适配异常,可交换Width和Height值(改为100, 300)
        printTicket.PageMediaSize = new PageMediaSize(PageMediaSizeName.Custom, 300, 100);

        // 3. 设置Zebra打印机的Darkness浓度为15
        XmlNamespaceManager namespaceManager = new XmlNamespaceManager(new NameTable());
        namespaceManager.AddNamespace("zebra", "http://schemas.zebra.com/ecosystem/printing/2011/02/printticket");
        PrintTicketParameterDefinition darknessParamDef = printTicket.GetParameterDefinition("Darkness", "zebra");
        if (darknessParamDef != null)
        {
            printTicket.SetParameter("Darkness", "zebra", "15");
        }

        // 应用自定义参数并执行打印
        printDialog.PrintTicket = printTicket;
        printDialog.PrintQueue = printQueue;
        printDialog.PrintVisual(visual, "Label");
    }
}

关键修改说明

  • 克隆PrintTicket:使用Clone()方法创建默认票证的独立副本,确保修改仅作用于当前打印任务,不会影响打印机的全局默认设置。
  • 旋转180度:直接设置PageOrientation为Rotate180,这是WPF打印系统的标准枚举值,兼容多数支持旋转的打印机。
  • 自定义纸张尺寸:通过PageMediaSize指定自定义尺寸,单位为百分之一英寸,3×1英寸对应数值300和100。若打印后尺寸不符,可交换两个数值适配旋转后的方向。
  • 设置Darkness浓度:Zebra打印机的浓度参数属于厂商自定义扩展,需通过指定Zebra的命名空间来获取和设置参数值。如果此方式不生效,可尝试直接修改PrintTicket的XML内容,或使用Zebra官方SDK进行更精准的参数控制。

内容的提问来源于stack exchange,提问作者jjansen315

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 19:54:54