在 POS 打印机上打印条形码字体

Printing a barcode font on a POS printer

本文关键字:条形码 字体 打印 POS 打印机      更新时间:2023-10-16

我正在尝试使用 CreateFont 加载 Code 128 字体,以便我可以在单据上输出条形码。CreateFont 没有返回 NULL,但似乎无法找到正确的字体,并且在我将代码打印为纯文本时正在加载其他内容。

这是条形码功能。

void EpicSlipPrinter::addBarcode ( const QString& text )
{
  HFONT tempFont = CreateFont ( 60 , 0 , 0 , 0 , 0 ,0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , L"Code 128" );
  oFont = (HFONT)SelectObject ( mPrinterHandle , tempFont );
  INT ixPosition = iPaperWidth / 2;
  SIZE sz = getTextDimensions ( text , 3 , 3 , 600 , 0 , 0 );
  SetTextAlign ( mPrinterHandle , TA_CENTER );
  TextOut ( mPrinterHandle , ixPosition , iyPosition , text , text.length () );
  SelectObject ( mPrinterHandle , oFont );
  DeleteObject( tempFont );
}

文本参数绝对是正确的,所以我认为正在发生的事情是 CreateFont 找不到指定的字体并且默认为其他字体。字体已正确加载,可以从Windows应用程序中选择,如果我在Word中键入代码,那么我会得到一个可以从扫描仪读取的条形码。

我的问题是有谁知道为什么 CreateFont 没有加载代码 128 或者我是否缺少另一个问题?

您已为 fdwCharSet 指定了 0,它对应于 ANSI_CHARSET,因此字体映射器正在查找支持当前代码页的内容。 尝试对这些类型的特殊字体使用 SYMBOL_CHARSET。