【问题标题】:C# POS receipt printing issueC# POS 收据打印问题
【发布时间】:2016-10-21 09:14:00
【问题描述】:

我在 C# 中编写了一个代码,使用图形对象在 POS 打印机上打印收据(EPSON TM-T82 - 纸卷:80 X 297 毫米)。

示例代码如下

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 打印机收据中,它没有采用全宽(请参阅从剪切字符到右侧边框的空白)

如果有人可以在这里帮助我,我到底做错了什么。

提前致谢。

【问题讨论】:

  • 尝试将您的常规字体大小更改为小一点,看看它会产生什么效果。发布结果
  • 我减小了常规字体大小 (4),现在它打印收据时不会丢失任何行文本,但字体非常小,甚至无法在打印的收据上正确读取。我不想在这里减小字体大小。您还有其他建议或解决方案吗?
  • 如果现在在更改字体大小后适合,那么问题是设计问题。两种解决方案:更小尺寸或简化数据。例如,您可以将 1@225.00 放在两行中。
  • 嗨,胡安,我已经修改了我的原始查询,请再次查看新截图后添加的评论(带有黑色边框)。
  • 使用 POS 打印机的打印机驱动程序在 98% 的情况下都是错误的。最大的问题是它太慢了,客户必须等待太久才能收到收据。还有一些小东西,比如一卷纸没有有意义的页面大小。你用的那个不够宽。正确执行此操作需要绕过驱动程序将打印命令直接写入打印机。 support.microsoft.com/en-us/kb/322091

标签: c# printing


【解决方案1】:

请使用列宽属性
FlowDocument doc = new FlowDocument(); doc.ColumnWidth = 700; doc.PagePadding = new Thickness(20, 0, 0, 0);

我希望这对其他人有所帮助

【讨论】:

    猜你喜欢
    • 2012-05-12
    • 1970-01-01
    • 2022-10-20
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 2012-07-12
    • 2020-08-27
    • 2015-01-04
    相关资源
    最近更新 更多