我用c#写了一个代码,用图形对象在POS机上打印收据(爱普生TM-T82 -纸卷:80X297毫米)。
示例代码如下
Graphics graphic = e.Graphics;
Font regularFont = new Font("Courier New", 8);
Font titleFont = new Font("Courier New", 14);
SolidBrush drawBrush = new SolidBrush(Color.Black);
float fontHeight = regularFont.GetHeight();
float startX = 10.0F;
float startY = 5.0F;
int offset = 40;
graphic.DrawString("----------------------------------------", regularFont, drawBrush, new PointF(startX, startY+offset), StringFormat.GenericTypographic);
offset = offset + (int)fontHeight + 5;
string header = "Item Name".PadRight(30) + "Price";
graphic.DrawString(header, regularFont, drawBrush, , new PointF(startX, startY+offset), StringFormat.GenericTypographic);
offset = offset + (int)fontHeight;
graphic.DrawString("----------------------------------------", regularFont, drawBrush, new PointF(startX, startY+offset), StringFormat.GenericTypographic);
以此类推...
现在的问题是,当导出到".XPS“时,它显示得很完美。但在POS打印机收据上打印时,它会剪切列。这意味着它没有打印整行字符串。我试图通过在graphic.DrawString
中传递RectangleF
来解决这个问题,根据在互联网上找到的建议,但也存在同样的问题。
请看附件中的.XPS和POS机收据截图
在这里,在屏幕截图中,收据边框标记为黑色。在.XPS中,该行打印完成(采用全页宽度),但在POS机收据中,该行未采用全宽(请参阅从剪切字符到右侧边框的空格)
如果有人能在这里帮助我,我到底做错了什么。
提前谢谢。
发布于 2016-06-26 00:06:54
请使用列宽属性
FlowDocument doc = new FlowDocument(); doc.ColumnWidth = 700; doc.PagePadding = new Thickness(20, 0, 0, 0);
我希望这能帮助到其他人。
https://stackoverflow.com/questions/37917026
复制相似问题