通常の GDI+/.NET メソッドを使用して 7.5X8 cm のラベルをラベルプリンターで印刷していますが、正常に動作します。
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 引数を計算するためのアルゴリズムはありますか?
編集:
その上、あるプリンターから設定をインポートして別のプリンターにエクスポートしても、何も変わりませんでした