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

时间:2017-03-31 15:05:13

标签: c++ barcode gdi

我正在尝试使用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 );
}

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

我的问题是,是否有人知道为什么CreateFont没有加载Code 128或者我是否还有其他问题?

1 个答案:

答案 0 :(得分:1)

你为fdwCharSet指定了0,它对应于ANSI_CHARSET,因此字体映射器正在寻找支持当前代码页的东西。尝试将SYMBOL_CHARSET用于这些专业字体。