在 POS 打印机上打印条码字体
Printing a barcode font on a POS printer
我正在尝试使用 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 或者我是否遗漏了其他问题?
您为 fdwCharSet 指定了 0,它对应于 ANSI_CHARSET,因此字体映射器正在寻找支持当前代码页的内容。尝试对这些特殊字体使用 SYMBOL_CHARSET。
我正在尝试使用 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 或者我是否遗漏了其他问题?
您为 fdwCharSet 指定了 0,它对应于 ANSI_CHARSET,因此字体映射器正在寻找支持当前代码页的内容。尝试对这些特殊字体使用 SYMBOL_CHARSET。