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

VB.NET使用Zen Barcode打印条码与标签尺寸不符问题排查

条码打印尺寸不匹配的排查与解决

核心问题分析

条码打印尺寸不符通常和打印缩放、图形绘制单位转换、打印机DPI适配这几个核心点相关,结合Zen Barcode的使用场景,可从以下维度逐一排查修复:

代码层面的常见问题及修复方案

1. 未适配打印机实际DPI

默认GDI+绘制采用屏幕DPI(通常96),但条码打印机DPI多为203、300等,直接按屏幕尺寸绘制会导致缩放偏差。修复示例:

Private Sub PrintDocument1_PrintPage(sender As Object, e As PrintPageEventArgs) Handles PrintDocument1.PrintPage
    ' 获取当前打印机的DPI参数
    Dim printerDpiX As Integer = e.Graphics.DpiX
    Dim printerDpiY As Integer = e.Graphics.DpiY

    ' 定义条码物理尺寸(单位:英寸),示例为宽2英寸、高1英寸
    Dim barcodeWidthInInch As Single = 2.0F
    Dim barcodeHeightInInch As Single = 1.0F

    ' 转换为打印机对应的像素值
    Dim barcodeWidth As Integer = CInt(barcodeWidthInInch * printerDpiX)
    Dim barcodeHeight As Integer = CInt(barcodeHeightInInch * printerDpiY)

    ' 配置条码生成参数
    Dim barcodeWriter As New BarcodeWriter
    barcodeWriter.Format = BarcodeFormat.Code128
    barcodeWriter.Options = New ZXing.Common.EncodingOptions With {
        .Width = barcodeWidth,
        .Height = barcodeHeight,
        .Margin = 0 ' 关闭默认边距,避免额外缩放
    }
    Dim barcodeBitmap As Bitmap = barcodeWriter.Write("123456789")

    ' 按原始像素尺寸绘制条码,避免自动缩放
    e.Graphics.DrawImage(barcodeBitmap, New Point(0, 0))
    barcodeBitmap.Dispose()
End Sub

2. 打印文档默认缩放干扰

检查PrintDocument的默认设置,禁用自动缩放与冗余边距:

' 初始化打印文档时配置
PrintDocument1.DefaultPageSettings.Margins = New Margins(0, 0, 0, 0) ' 设置无边距
PrintDocument1.DefaultPageSettings.Landscape = False ' 根据标签实际方向调整
PrintDocument1.OriginAtMargins = False ' 禁止以边距为原点的自动缩放

3. Zen Barcode默认边距导致尺寸偏差

Zen Barcode默认会添加边距,需手动关闭:
在EncodingOptions中设置.Margin = 0,如上述代码示例所示。

打印前的验证步骤

  • 通过PrintPreviewDialog预览时,确认预览尺寸与标签物理尺寸是否一致,若预览即存在偏差,说明代码绘制逻辑存在问题。
  • 检查打印机属性中的纸张尺寸,确保与条码尺寸匹配,自定义标签需在打印机驱动中提前正确配置。

额外注意事项

  • 避免使用DrawImage的缩放重载方法(如指定目标矩形),如需调整位置,直接使用原始像素坐标绘制。
  • 若使用自定义纸张,需在代码中指定对应配置:
' 匹配打印机中已创建的自定义纸张(示例名称为"CustomLabel")
For Each paperSize As PaperSize In PrintDocument1.PrinterSettings.PaperSizes
    If paperSize.PaperName = "CustomLabel" Then
        PrintDocument1.DefaultPageSettings.PaperSize = paperSize
        Exit For
    End If
Next

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 07:15:04