Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将Windows打印机驱动程序与";本地的;关于打印机条码渲染?_C#_Zebra Printers_Zpl_Xtrareport_Epl - Fatal编程技术网

C# 将Windows打印机驱动程序与";本地的;关于打印机条码渲染?

C# 将Windows打印机驱动程序与";本地的;关于打印机条码渲染?,c#,zebra-printers,zpl,xtrareport,epl,C#,Zebra Printers,Zpl,Xtrareport,Epl,我需要从.NET Windows应用程序打印带有条形码(通常为代码128)的标签。由于客户有不同的打印机-不同的Eltron/Zebra型号和不同的制造商(如GoDEX、Sato等)-我希望看到我的应用程序完全(或至少大部分)与实际的打印机型号无关 因此,我尝试使用打印机的Windows驱动程序打印带有条形码的标签。在这种方法中,条形码显然在PC上呈现为图像,打印机仅将其作为像素图像输出。也许整个标签被渲染为一个图像,我不确定这一点。 作为旁注:我实际上是在使用XtraReports打印标签,但

我需要从.NET Windows应用程序打印带有条形码(通常为代码128)的标签。由于客户有不同的打印机-不同的Eltron/Zebra型号和不同的制造商(如GoDEX、Sato等)-我希望看到我的应用程序完全(或至少大部分)与实际的打印机型号无关

因此,我尝试使用打印机的Windows驱动程序打印带有条形码的标签。在这种方法中,条形码显然在PC上呈现为图像,打印机仅将其作为像素图像输出。也许整个标签被渲染为一个图像,我不确定这一点。 作为旁注:我实际上是在使用XtraReports打印标签,但这本身不应该导致下面的问题

然而,这种方法产生的条形码质量很差。我曾多次通过调整打印机驱动程序设置(如温度、速度等)对输出进行故障排除,但仍有部分条形码未被后续系统接受

我知道我可以将“原始”EPL/ZPL命令发送到Zebra打印机,它将呈现条形码本身,从而获得更好的质量

然而,这种方法有两个缺点:

  • 首先,raw命令在不同的打印机型号之间可能有所不同,而且很可能在不同的制造商之间有所不同。不确定EPL/ZPL是否是如此广泛支持的“通用语”
  • 其次,如果客户希望更改/重新安排标签内容,那么这将是一项非常不直观的工作——特别是与在XtraReports中重新设计标签相比。我知道有Z-Designer,但它并没有集成到我的应用程序中,并且(大概)是针对Zepra打印机的
是否有一种方法可以基本上将两个世界的优点结合起来。基本上使用Windows驱动程序绘制/打印整个标签,但让打印机以最佳质量呈现条形码


我模糊地意识到使用条形码字体可以从打印机加载或加载到打印机上,但不确定质量有多好,PC需要多少设置,以及打印机型号和制造商对其的支持程度如何。对我来说似乎又是一个蠕虫。我在MS ACCESS中构建了一个仓库调度应用程序,使用VBA将条形码标签打印到Zebra打印机上。这里没有简单的答案。3种常见路线:最差选项:使用第三方软件(如调酒师),但通常无法集成并有效地执行两步流程,从而造成打印错误文件、重印重复标签和欺诈的问题更好的选项:使用ZPL直接将原始打印(通过windows通用文本驱动程序)打印到打印机上,这比您预期的(或EPL或CPCL或其他兔子洞)更常见,最好的标签效果,但问题是它的技术性很强,标签布局更改是一个难题(您似乎已经熟悉这些问题),大量的支持电话最佳选项(对于我):让打印机的供应商打印驱动程序完成工作(需要配置),在MS ACCESS(或.NET应用程序)中以报告的形式进行布局,将条形码文本格式化为用户定义的字体,在zebra打印机驱动程序中将该字体映射为所需的条形码(驱动程序中的配置类型、大小、方向、可选文本等),在速度等方面调整驱动程序设置。直到标签的质量与raw/zpl类似,保存/导出驱动程序配置设置到一个文件(最常见的支持调用我只是重新加载此文件,节省时间)。缺点是,需要一些前期规划来协调布局,特别是条形码与通过用户字体映射到所需条形码的驱动程序。多年来,MS ACCESS&printer的多个版本都对我起到了作用。

EPL/ZPL更适合热敏打印机,而不是尝试以本机方式打印到驱动程序。但是,您必须学习浏览1000页的zpl规范。因此,我不确定你会找到一个很好的解决方案。在我以前的工作中,我们只使用了39码的字体,效果很好。问题可能是您需要先放大条形码图像,然后再缩小它?这是我能想到的唯一一件可能会导致我头脑中出现错误读数的事情。关于超刻度:我目前正在使用生成barode的XtraReports,并直接进行了一些测试打印。据我所知,bardcode是以矢量图像的形式绘制在虚拟打印机页面上的,因此质量损失肯定发生在其他地方。此功能的名称是。@GSerg“命令字体”(传递)选项实际上是原始打印的一种变体,我总是觉得,如果要学习原始编码,最好通过应用程序中的代码将其直接提供给通用文本打印驱动程序(顺便说一句,它可以通过RDP会话工作),我的选项3是在驱动程序中使用“条形码字体”(这在RDP会话中不起作用)。如果是测试ZPL代码的问题,那么这是一个很好的选择