Главная / FAQ по Builder'у / 113 Как организовать в Win98 печать...

113 Как организовать в Win98 печать в текстовом режиме?


Вариант 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
Copyright © 2003 JTSOFT
Сайт управляется системой uCoz