Вариант 1 - используя специально предназначенные для этого генераторы
отчетов. Hапример, ZYZ Report или текстовая версия PReport.
Вариант 2 - руками. Вот код, который печатает стринглист Bill на матричник
через спулер, как принято в виндах. Проверялось на Epson LX-300.
HANDLE hprn;
// Получаем название принтера по умолчанию
unsigned DevMode;
TPrinter *prt = Printer ();
prt->PrinterIndex = -1;
char buf1 [80], buf2 [80], buf3 [80];
prt->GetPrinter (buf1, buf2, buf3, DevMode);
// Открываем принтер
if (!OpenPrinter (buf1, &hprn, NULL))
throw Exception ("Hе удалось открыть принтер по умолчанию");
try
{
DOC_INFO_1 DocInfo;
DocInfo.pDocName = "Электронные весы - накладная";
DocInfo.pOutputFile = NULL;
DocInfo.pDatatype = "RAW";
DWORD JobID = StartDocPrinter (hprn, 1, (LPBYTE) &DocInfo);
if (!JobID)
throw Exception ("Hе удалось поставить задание в очередь на печать");
// Печатаем !
DWORD resb;
for (int i = 0; i < Bill->Count; i++)
{
char buf [80];
CharToOem (Bill->Strings [i].c_str (), buf);
WritePrinter (hprn, buf, strlen (buf), &resb);
WritePrinter (hprn, "\x0D\x0A", 2, &resb);// Конец строки
}
WritePrinter (hprn, "\x0C", 1, &resb); // Конец страницы (выплевываем лист)
EndDocPrinter (hprn);
}
__finally
{
ClosePrinter (hprn);
}
Vladimir Polyakov
Предыдущий вопрос
|
|
Следующий вопрос
источник
by jenyok
|