Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];

Вниз

Печать на матричном принтере из Delphi   Найти похожие ветки 

 
maddognt   (2004-11-27 14:19) [0]

Здравствуйте Уважаемые мастера
Я печатаю на матричном принтере (Epson LX 300) из Delphi следующим способом:

  with Printer do
  begin
     BeginDoc;
     Canvas.TextRect(Rect(20,20,PageWidth-10,PageHeight-10),
     20, 20, "Some text");
     EndDoc;
  end;

Проблема в том, что принтер печатает текст в два прохода каретки.
А я хочу в один. Если на принтере принудительно выставить шрифт Draft, то при посылке на печать он все равно переходит в режим Roman.
Как заставить принтер печатать текст в один проход каретки?
Пробовал способ из FAQ, но он тоже не помог.

Заранее благодарен.


 
programania ©   (2004-11-27 23:17) [1]

Матричный принтер таким способом
печатает в графическом режиме т.е. по точкам, очень медленно
и за 1 проход, если у него хватит иголок на высоту шрифта,
а шрифт берется из printer.canvas.font и
выставлять что-то на принтере бесполезно,
можно попробовать уменьшить font.size или
поставить черновое качество.
Но быстрее всего печать будет, если писать
символы в LPT как в DOS.
Если NT,XP то смотрите http://www.specosoft.com


 
maddognt   (2004-11-28 11:20) [2]

font.size я менял, это не помогло.
А как поставить черновое качество?
В драйвере для lx 300 под winxp я нашел какие то дополнительные возможности печати и добился чтобы принтер печатал в один проход, а в драйвере под win98 ничего подобного нет. Сделал минимальное качество печати, но он все равно печатает в несколько проходов.


 
KSergey ©   (2004-11-28 14:15) [3]

Хоть что с нимделай - все равно будет печатать в графическом режиме. Т.е. медленно и не в один проход. Вы же, думаю, хотите в текстовом, родными шрифтами принтера.

Посмотрите PReport, там это есть. (ручками - ф-ции, увы, не помню. есть желание - шлите мыло, отпишу краткий примерчик)


 
KSergey ©   (2004-11-29 06:58) [4]

Особо чистить было лень

var
   DocInfo : DOC_INFO_1;
   h : Cardinal;
   PrinterOpened,DocStarted,PageStarted : boolean;

   // вывести строку
   procedure OutStr (AStr: String);
   var
     BytesWritten : cardinal;
   begin
     AStr := AStr + #13#10;
     WritePrinter (h, PChar(AStr), Length(AStr), BytesWritten);
   end;

   // выкинуть страницу
   procedure EjectPage;
   const
     EJECT_PAGE_CODE: String = #12;
   var
     BytesWritten : cardinal;
   begin
     WritePrinter (h, PChar(EJECT_PAGE_CODE), Length(EJECT_PAGE_CODE), BytesWritten);
   end;

   procedure InitPrinter;
   begin
     // подготовка
     PrinterOpened:=false;
     DocStarted   :=false;
     PageStarted  :=false;

     if not OpenPrinter(PChar(PrName),h,nil) then
       raise Exception.Create (SysErrorMessage(GetLastError ));
     PrinterOpened := TRUE;
     DocInfo.pDocName   := PChar(Application.MainForm.Caption);
     DocInfo.pOutputFile:=nil;
     DocInfo.pDatatype  :="RAW";
     if StartDocPrinter(h,1,@DocInfo)=0 then
       raise Exception.Create (SysErrorMessage(GetLastError ));
     DocStarted := TRUE;
     PageStarted := StartPagePrinter(h);
     if not PageStarted then
       raise Exception.Create (SysErrorMessage(GetLastError ));
   end;

-------- собственно пример печати ----------

 try
   InitPrinter;

 // здесь пошла печать по строкам
 OutStr("Текст");
 OutStr("Текст 2");
 OutStr("Текст 3");
//  EjectPage;  // если надо выкинуть страницу
 finally
   // завершающие действия
   if PageStarted then EndPagePrinter(h);
   if DocStarted then EndDocPrinter(h);
   if PrinterOpened then ClosePrinter(h);
 end;



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.038 c
14-1103872673
Чеширский_Кот
2004-12-24 10:17
2005.01.16
Good day


1-1104408402
denis24
2004-12-30 15:06
2005.01.16
RichEdit


1-1104332772
redlord
2004-12-29 18:06
2005.01.16
настройка delphi 7


3-1102591130
Guitar
2004-12-09 14:18
2005.01.16
Ошибка при создании файла UDL


6-1098795882
Chris
2004-10-26 17:04
2005.01.16
Авторизация на сайте





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский