如何使 Zebra ZXP 系列 3 卡上打印的标签文本居中?

2024-01-02

我正在打印卡片Zebra ZXP 系列 3 证卡打印机 https://www.zebra.com/us/en/support-downloads/printers/card/zxp-series-3.html.

我正在使用他们提供的 SDK.

该卡是86 毫米 x 54 毫米

最大分辨率:300 dpi

我生成要打印在卡片上的文本的代码有点像这样:

// text to draw details
DrawConfiguration firstnameConfiguration = new DrawConfiguration();

firstnameConfiguration.StringLabelText = "Johnny Appleseed";
firstnameConfiguration.LabelLocation = new Point(1, 350);

// zebra graphics thing
ZBRGraphics graphics = null;
graphics = new ZBRGraphics();

// font style
int fontStyle = FONT_BOLD;


// Draw First Name Text
if (graphics.DrawText(fn.LabelLocation.X, fn.LabelLocation.Y, graphics.AsciiEncoder.GetBytes(fn.StringLabelText), graphics.AsciiEncoder.GetBytes("Arial"), 12, fontStyle, 0x000000, out errorValue) == 0)
{
    errorMessages += "\nPrinting DrawText [First Name] Error: " + errorValue.ToString();
    noErrors = false;
}

然后,DrawText 看起来像这样:

public int DrawText(int x, int y, byte[] text, byte[] font, int fontSize, int fontStyle, int textColor, out int errValue)
{
    return ZBRGDIDrawText(x, y, text, font, fontSize, fontStyle, textColor, out errValue);
}

[DllImport("ZBRGraphics.dll", EntryPoint = "ZBRGDIDrawText", CharSet = CharSet.Auto, SetLastError = true)]
private static extern int ZBRGDIDrawText(int x, int y, byte[] text, byte[] font, int fontSize, int fontStyle, int color, out int err);

如何使用他们的 SDK 将文本置于卡片上?

我现在能弄清楚如何做到这一点的唯一方法是用空格“填充”文本。例如," Johnny Appleseed "填充后看起来像这样,可能看起来居中,但实际上并非如此。是否有一个通用公式可以计算如何根据卡片尺寸/dpi 将此文本在卡片上居中?


经过几个小时的文本对齐斗争后,我终于得到了 Zebra 的回复。你必须使用DrawTextEx()方法并将其传递到对齐参数中。 (请注意,SDK 中未提供此方法,但 DLL 中确实存在此方法!您需要将其添加到您的应用程序中才能使其正常工作)

3 = 左对齐

4 = 中心对齐

5 = 右对齐

将此代码添加到ZBRGraphics.cs file

[DllImport("ZBRGraphics.dll", EntryPoint = "ZBRGDIDrawTextEx", CharSet = CharSet.Auto,

    SetLastError = true)]

static extern int ZBRGDIDrawTextEx(int x, int y, int angle, int alignment, byte[] text, byte[] font, int fontSize, int fontStyle, int color, out int err);



public int DrawTextEx(int x, int y, int angle, int alignment, byte[] text, byte[] font, int fontSize, int fontStyle, int color, out int err)

{

    return ZBRGDIDrawTextEx(x, y, angle, alignment, text, font, fontSize, fontStyle, color, out err);

}

以下是如何在您的应用程序中使用它。

使用方法(摘自《SDK手册》):

int x = 0;

int y = 0;

int angle = 0; //0 degrees rotation (no rotation)

int alignment = 4; //center justified

string TextToPrint = "Printed Text";

byte[] text = null;

string FontToUse = "Arial";

byte[] font = null;

int fontSise = 12;

int fontStyle = 1; //bold

int color = 0x0FF0000; //black

int err = 0;

int result = 0;



//use the function:

System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding();

text = ascii.GetBytes(TextToPrint);

font = ascii.GetBytes(FontToUse);

result = ZBRGDIDrawTextEx(x, y, angle, alignment, text, font, fontSize,fontStyle, color, out err);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 Zebra ZXP 系列 3 卡上打印的标签文本居中? 的相关文章

随机推荐

  • 在 Mozilla Firefox 上启用 Web Speech API

    我一直在 Chrome 上使用语音 语音合成 然后我意识到 Firefox 默认情况下不允许这样做 必须授予特殊权限 通过阅读这篇文章 我可以使测试工作 https developer mozilla org en US docs Web
  • jstree delete_node() 没有删除

    我一直在拼凑一个函数 为不同的节点组合一个自定义上下文菜单 好吧 到目前为止 在点击文件夹或文件时显示不同的标签方面做得很好 但在实际删除它们方面却没有那么多 看一看 我不得不 做一些 hacky 解决方法 因为我无法让 node hasC
  • 时间管理技巧、工具和技巧[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 共享 AssemblyInfo 以实现整个解决方案的统一版本控制

    我读过有关此技术的内容 VS 项目中共享程序集信息 JJameson 的博客 http www technologytoolbox com blog jjameson archive 2009 04 03 shared assembly i
  • 如何创建一个数据框,其中日期范围作为列中的值?

    我有三个变量 CSITI 23454 整数 单位 11 22 33 44 55 66 77 始终具有特定长度 n 的整数列表 开始日期 2019 10 16 字符串 如何从这些数据创建数据框 例如 csiti units forecast
  • R - dplyr - ifelse 和过滤器

    我正在 Shiny 上构建一个小部件 我希望有 全部 选项来选择所有可用的数据 并且不执行过滤 基本上 我想要以下代码 使用 dplyr filt lt sample c All unique mtcars carb 1 data1 lt
  • 如何在java中打印数字三角形

    我需要生成一个三角形 如图所示 1 22 333 4444 55555 我的代码是 int i j for i 1 i lt 5 i for j 1 j lt i j System out print i System out print
  • 如果我不想加载主窗体,如何处理 Winforms 中的命令行参数?

    我想创建一个行为如下的应用程序 没有参数时它显示主窗体 对于参数 a 它可以完成工作 但主窗体未加载 在参数 b 上 表单使用传递的参数加载 加载该文档 对于 1 和 3 我可以按如下方式处理表单构造函数中的参数 public Config
  • 考虑在您的配置中定义一个名为“entityManagerFactory”的 bean。升级到 spring boot 2 后的 mssqlserver

    我正在尝试将spring boot 1 5 9升级到2 0 3 服务无法启动 出现以下错误 APPLICATION FAILED TO START Description Method mvcConversionService in org
  • 如何在我的网络应用程序中添加 exe 作为参考

    我创建了一个 exe 其中包含一些方法 参考下面的示例 exe using System using System Collections Generic using System Text namespace SampleRef publ
  • 淡入图像视图中的图像边框

    我需要添加淡入淡出效果ImageView 在我的情况下 我有一个RelativeLayout 相对背景为黄色 在该背景的中心有一个ImageView 现在我需要在边缘应用淡入淡出效果ImageView 这可能吗 Android api 11
  • .Net 内存转储中存在大量死线程

    在分析 Net4 5 WCF w3wp 进程的内存转储期间 我遇到了许多被标识为死亡的线程 threads 显示 107 个线程中有 68 个已死亡 这似乎相当高 我想知道这些线程是否可以容纳大量内存 因为进程最终会高达 20GB 并且似乎
  • 如何将 y=1/x 绘制为单个图[重复]

    这个问题在这里已经有答案了 有没有一种简单的方法可以将正负趋于无穷大的函数绘制为单个图 而无需将正负两端连接起来 例如 使用此代码绘制 y 1 x 会得到结果图 import numpy as np import matplotlib py
  • 无法解决 Django 设置中的 mod_wsgi 异常

    我正在与我的托管提供商合作来启动并运行 Django 应用程序 但我们俩都不是很有经验 而且我们基本上已经陷入了完全的死胡同 我无法直接访问该 conf 文件 但以下是向我描述其内容的方式
  • NSMenuItem KeyEquivalent“”(空格)错误

    我想为 NSMenuItem 在应用程序主菜单中 设置等效键 空格 而无需任何修饰符 根据文档如下 例如 在播放媒体的应用程序中 播放命令可能仅映射到 空格 而没有命令键 您可以使用以下代码来执行此操作 menuItem setKeyEqu
  • 哪个用户启动了 EC2 实例?

    我有一些 EC2 实例 我真的不知道是谁启动了它们 有没有办法知道谁启动了特定实例 不幸的是 此信息无法通过 API 调用直接获得 您当前有两个选择 depending on your needs you could approximate
  • 如何从 Swift 中的字符串中删除“\U0000fffc”?

    我已将图像添加到文本字段 并希望再次将其删除 我尝试了以下两行但没有效果 string string stringByReplacingOccurrencesOfString U0000fffc withString options NSS
  • 我没有让 Keycloak 在 Traefik 后面的 docker 中工作

    我有一个域 example org 我有 docker 在那里运行 Traefik 作为代理 现在我想设置Keycloak 我想访问 auth example org 上的 Keycloak 这是我的配置 docker compose ke
  • Gulp.js 任务名称约定

    是否有编写 Gulpfiles 命名任务 构建配置文件等的约定 也许有一些基本的常识可以从 Grunt 的世界中得到 您如何处理构建 Gulpfile 的问题 就好像您要辞掉工作 下一个 JS 开发人员会来并直观地了解如何构建项目一样 因此
  • 如何使 Zebra ZXP 系列 3 卡上打印的标签文本居中?

    我正在打印卡片Zebra ZXP 系列 3 证卡打印机 https www zebra com us en support downloads printers card zxp series 3 html 我正在使用他们提供的 SDK 该