每台打印机都有不同的缩放转换

本文关键字:缩放 转换 打印机 | 更新日期: 2023-09-27 18:30:59

我使用常规 GDI+/.NET 方法在具有 7.5X8 厘米标签的标签打印机上打印,它工作正常

void pdPrintLabel(object sender, PrintPageEventArgs ev)
{
  Graphics g = ev.Graphics;  
  using (Font smallFont = new Font(FontFamily.GenericSansSerif, 6),
              mediumFont = new Font(FontFamily.GenericSansSerif, 8),
              bigFont = new Font(FontFamily.GenericSansSerif, 10, FontStyle.Bold))
  {
    SizeF smallSize = g.MeasureString("XXX", smallFont);
    SizeF mediumSize = g.MeasureString("XXX", mediumFont);
    SizeF bigSize = g.MeasureString("XXX", bigFont);
    Brush blackBrush = Brushes.Black;
    g.DrawString((bagNumber / 50 + 1) + bagNumber, bigFont, blackBrush, pos);
    // etc
  }
}

现在打印机换了,同样的型号只是不同的打印机。相同的代码现在只填充一半的标签。我猜有些设置是不同的。我可以解决这个问题

ev.Graphics.ScaleTransform(1.3f, 1.4f);

但只有在微调/重新编译/测试参数之后。当然,我不想每次使用新打印机时都更改该代码。那么,有没有一种算法可以用来计算正确的 ScaleTransform 参数呢?

编辑:

最重要的是,从一台打印机导入设置并将其导出到另一台打印机不会改变任何内容

每台打印机都有不同的缩放转换

打印机

的默认缩放模式是GraphicsUnit.Display,代码中的一个像素在纸上是0.01英寸。 这是一种与分辨率无关的缩放模式,无论打印机分辨率如何,输出在纸上始终具有相同的大小。 因此,您永远不需要使用 Graphics.ScaleTransform 来自己调整缩放比例。

此打印机的打印机驱动程序有问题,它似乎错误地报告了打印机分辨率。 这种情况非常罕见,尤其是当您使用完全相同的打印机型号时。 确保它不是打印机的内置功能,用于缩放恰好在第二台打印机上具有不同设置的输出。 对于标签打印机来说并不完全罕见,它们喜欢容纳不是为处理各种标签尺寸而设计的软件。 如果您无法从手册中整理出来,则需要制造商的帮助。