我正在尝试创建一种收据。发生的事情是我的打印机没有驱动程序(我的操作系统也没有)。所以我安装了通用打印机文本。我的打印机是POS打印机之一。
这是我的配置:
int _x = 10;
int _y = 5;
int _width = 270; // max width I found through trial and error
int _height = 0;
StringFormat _center = new StringFormat();
StringFormat _left = new StringFormat();
StringFormat _right = new StringFormat();
_center.Alignment = StringAlignment.Center;
_left.Alignment = StringAlignment.Near;
_right.Alignment = StringAlignment.Far;
PrintDocument _print = new PrintDocument();
PrintPreviewDialog _printPrev = new PrintPreviewDialog();
_print.DefaultPageSettings.PaperSize = new PaperSize("My Custom Receipt", _width, 600);
_print.DefaultPageSettings.PaperSize.RawKind = (int)PaperKind.Custom;
_print.DefaultPageSettings.Landscape = false;
_print.DefaultPageSettings.Margins = new Margins(0, 0, 0, 0);
_print.OriginAtMargins = true;
_printPrev.Document = _print;
_printPrev.PrintPreviewControl.AutoZoom = false;
_printPrev.PrintPreviewControl.Zoom = 1;
要写入我使用的论文:
_print.PrintPage += (Object sender, PrintPageEventArgs e) => {
// Header information
e.Graphics.DrawString("Number:", small, Brushes.DarkGray, new Rectangle(_x, _y, _width, _height), _left);
e.Graphics.DrawString(number.ToString(), medium, Brushes.Black, new Rectangle(_x, _y, _width, _height), _center);
_y += (int)e.Graphics.MeasureString(number.ToString(), medium).Height;
e.Graphics.DrawString("BARCODE:", small, Brushes.DarkGray, new Rectangle(_x, _y, _width, _height), _left);
e.Graphics.DrawString(barcode.ToString(), medium, Brushes.Black, new Rectangle(_x, _y, _width, _height), _center);
_y += (int)e.Graphics.MeasureString(barcode.ToString(), medium).Height;
// And so on..
}
如果我只写两行(例如),那么所有这些行都会保持+/-粘在标题中,否则,它们会开始被推入底部。以下图片说明了问题:
答案 0 :(得分:0)
解决。
我所要做的就是将以下变量复制到_print.PrintPage()
内。
int _x = 10;
int _y = 5;
int _width = 270; // max width I found through trial and error
int _height = 0;