我使用常规 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 参数?
编辑:
最重要的是,从一台打印机导入设置并将它们导出到另一台打印机并没有改变任何东西